Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Dota 2 Bot.cpp : Defines the entry point for the console application.
- //
- #include "stdafx.h";
- #include <windows.h>;
- #include <stdio.h>;
- #include <iostream>;
- using namespace std;
- enum status {
- status_unknown,
- status_mainmenu,
- status_confirmregions,
- status_matchfound,
- status_picking,
- status_pregame,
- status_game,
- status_trophyupgraded,
- status_conductsummary,
- status_partyinvite,
- status_partyrescind,
- status_cannotqueue,
- status_banimminent,
- status_itemreceived
- };
- POINT mousePos;
- HWND dota2 = FindWindow(0, L"Dota 2"); // (LPCWSTR)"Dota 2" -> L"Dota 2"
- enum faction { faction_unknown, faction_radiant, faction_dire };
- faction bot_faction = faction_unknown;
- enum mode { mode_healthy, mode_low };
- mode bot_mode = mode_healthy;
- void SendKey(DWORD vkey) {
- WORD wScan = MapVirtualKey(vkey, MAPVK_VK_TO_VSC);
- PostMessage(dota2, WM_KEYDOWN, vkey, 1 | (wScan << 16));
- PostMessage(dota2, WM_KEYUP, vkey, 1 | (wScan << 16) | (3 << 30));
- Sleep(10);
- } // Usage: SendKey(VK_CAPITAL);
- void HoldKey(DWORD vkey) {
- WORD wScan = MapVirtualKey(vkey, MAPVK_VK_TO_VSC);
- PostMessage(dota2, WM_KEYDOWN, vkey, 1 | (wScan << 16));
- Sleep(10);
- }
- void ReleaseKey(DWORD vkey) {
- WORD wScan = MapVirtualKey(vkey, MAPVK_VK_TO_VSC);
- PostMessage(dota2, WM_KEYUP, vkey, 1 | (wScan << 16) | (3 << 30));
- Sleep(10);
- }
- void lClick(int x, int y, int wt = 0) {
- SetCursorPos(x, y);
- Sleep(wt);
- mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
- mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
- }
- void rClick(int x, int y, int wt = 0) {
- SetCursorPos(x, y);
- Sleep(wt);
- mouse_event(MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0);
- mouse_event(MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0);
- }
- int getPixelColor(int x, int y) {
- HDC dc = GetDC(NULL);
- COLORREF pixel = GetPixel(dc, x, y);
- int _r = GetRValue(pixel);
- int _g = GetGValue(pixel);
- int _b = GetBValue(pixel);
- int _i = _r * pow(256, 2) + _g * 256 + _b;
- return _i;
- }
- void dCursorPos() {
- GetCursorPos(&mousePos);
- cout << mousePos.x << ", " << mousePos.y << endl;
- }
- int loops = 0;
- int gameloops = 0;
- bool buyitems = true;
- bool buyback = true;
- bool spamcourier = false;
- int main() {
- HWND dota2 = FindWindow(0, L"Dota 2"); // (LPCWSTR)"Dota 2" -> L"Dota 2"
- SetForegroundWindow(dota2);
- //cout << dota2 << endl;
- status bot_status = status_unknown;
- Sleep(3000);
- while (true) {
- //dCursorPos();
- //cout << getPixelColor(710, 444) << endl;
- //Sleep(5000000);
- // Determine bot_status
- if ((getPixelColor(1322, 856) == 5792096) || (getPixelColor(1322, 856) == 5791840) || (getPixelColor(1322, 856) == 5726304) || (getPixelColor(1322, 856) == 5726305)) {
- bot_status = status_mainmenu;
- }
- else if (getPixelColor(756, 737) == 5070181) {
- bot_status = status_confirmregions;
- }
- else if (getPixelColor(710, 444) == 3626569) {
- bot_status = status_matchfound;
- }
- else if (getPixelColor(1422, 648) == 3687513) {
- bot_status = status_picking;
- }
- else if (getPixelColor(973, 571) == 132103) {
- bot_status = status_pregame;
- }
- else if (getPixelColor(1385, 855) == 3356731) {
- bot_status = status_game;
- }
- else if ((getPixelColor(844, 664) == 5202023) || (getPixelColor(844, 664) == 9349560)) {
- bot_status = status_trophyupgraded;
- }
- else if ((getPixelColor(396, 283) == 0) || (getPixelColor(396, 283) == 2370091)) {
- bot_status = status_conductsummary;
- }
- else if (getPixelColor(842, 604) == 5201767) {
- bot_status = status_partyinvite;
- }
- else if (getPixelColor(850, 569) == 5135974) {
- bot_status = status_partyrescind;
- }
- else if (getPixelColor(847, 510) == 5070181) {
- bot_status = status_cannotqueue;
- }
- else if (getPixelColor(843, 556) == 4806752) {
- bot_status = status_banimminent;
- }
- else if (getPixelColor(870, 645) == 5070181) {
- bot_status = status_itemreceived;
- }
- //cout << bot_status << endl;
- //Sleep(10000000);
- // Use bot_status to execute actions accordingly
- if (bot_status == status_mainmenu) {
- lClick(811, 30);
- Sleep(1000);
- lClick(1400, 850);
- Sleep(500);
- lClick(1400, 850);
- }
- else if (bot_status == status_confirmregions) {
- lClick(756, 737);
- }
- else if (bot_status == status_matchfound) {
- lClick(763, 447, 500);
- Sleep(500);
- SendKey(VK_RETURN);
- }
- else if (bot_status == status_picking) {
- lClick(780, 258); // wk
- Sleep(500);
- lClick(1325, 652);
- Sleep(500);
- lClick(251, 197); // axe
- Sleep(500);
- lClick(1325, 652);
- Sleep(500);
- lClick(981, 190); // lycan
- Sleep(500);
- lClick(1325, 652);
- Sleep(500);
- lClick(894, 185); // lc
- Sleep(500);
- lClick(1325, 652);
- Sleep(500);
- lClick(582, 192); // dk
- Sleep(500);
- lClick(1325, 652);
- Sleep(500);
- lClick(1387, 652, 500); // random
- }
- else if (bot_status == status_pregame) {
- gameloops = 0;
- bot_faction = faction_unknown;
- lClick(830, 356);
- Sleep(500);
- rClick(1121, 609, 500); // stout
- Sleep(500);
- rClick(1140, 609, 500); // quelling
- Sleep(500);
- rClick(998, 607, 500); // circlet
- Sleep(500);
- SetCursorPos(874, 639); // tp
- Sleep(500);
- mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
- SetCursorPos(853, 675); // bp 3rd slot
- Sleep(500);
- mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
- Sleep(500);
- SetCursorPos(820, 633); // mango
- Sleep(500);
- mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
- SetCursorPos(816, 672); // bp 2nd slot
- Sleep(500);
- mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
- Sleep(500);
- SetCursorPos(768, 633); // faerie
- Sleep(500);
- mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
- SetCursorPos(779, 673); // bp 1st slot
- Sleep(500);
- mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
- }
- else if (bot_status == status_game) {
- SendKey(VkKeyScan('f')); // select hero
- Sleep(250);
- SendKey(VkKeyScan('f')); // select hero
- Sleep(250);
- SendKey(VK_OEM_6); // ]} laugh
- // skill abilities
- HoldKey(VK_CONTROL);
- SendKey(VkKeyScan('3'));
- SendKey(VkKeyScan('2'));
- SendKey(VkKeyScan('4'));
- SendKey(VkKeyScan('1'));
- ReleaseKey(VK_CONTROL);
- Sleep(500);
- // buy bracer drum
- if ((buyitems == true) && (loops % 5 == 0)) {
- lClick(1436, 874); // shop open
- Sleep(500);
- lClick(1515, 97); // upgrades
- Sleep(500);
- if ((getPixelColor(1059, 845) == 13389366) || (getPixelColor(1075, 842) == 8524550) || (getPixelColor(1096, 844) == 11941408)) {
- rClick(1403, 355); // drum
- Sleep(500);
- }
- else {
- rClick(1360, 214); // bracer
- Sleep(500);
- }
- lClick(1436, 874); // shop close
- Sleep(1000);
- if (spamcourier == true) {
- for (int i = 1; i < 100; i++) {
- SendKey(VK_CAPITAL);
- Sleep(90);
- }
- }
- else {
- SendKey(VK_CAPITAL);
- }
- }
- Sleep(1000);
- if (gameloops == 0) { // implies faction_unknown // do this in strategy phase
- HoldKey(VK_OEM_3); // `~ scoreboard
- Sleep(500);
- lClick(550, 598); // shared unit control
- Sleep(500);
- if (getPixelColor(728, 52) == 4146512) {
- bot_faction = faction_radiant;
- // disable help
- lClick(730, 96);
- Sleep(250);
- lClick(730, 142);
- Sleep(250);
- lClick(730, 193);
- Sleep(250);
- lClick(730, 243);
- Sleep(250);
- lClick(730, 293);
- Sleep(250);
- }
- else if (getPixelColor(728, 311) == 2698549) {
- bot_faction = faction_dire;
- // disable help
- lClick(730, 360);
- Sleep(250);
- lClick(730, 410);
- Sleep(250);
- lClick(730, 460);
- Sleep(250);
- lClick(730, 510);
- Sleep(250);
- lClick(730, 555);
- Sleep(250);
- }
- Sleep(250);
- ReleaseKey(VK_OEM_3); // `~ scoreboard
- //cout << bot_faction << endl;
- }
- Sleep(1000);
- // Walk to base if low health
- if (getPixelColor(717, 857) == 1976593) {
- bot_mode = mode_low;
- switch (bot_faction) {
- case faction_radiant:
- rClick(15, 887, 250);
- break;
- case faction_dire:
- rClick(232, 681, 250);
- break;
- default:
- break;
- }
- }
- else {
- bot_mode = mode_healthy;
- }
- // Buyback if dead
- if (getPixelColor(618, 885) == 5795936) {
- if (buyback == true) {
- SendKey(VK_F9);
- Sleep(2700);
- lClick(618, 885, 200);
- SendKey(VK_OEM_6); // ]} laugh
- }
- }
- // Jungle
- if (bot_mode == mode_healthy) {
- switch (bot_faction) {
- case faction_radiant:
- switch (loops % 5) {
- case 0:
- lClick(159, 853, 250); // ez
- SendKey(VK_SPACE);
- Sleep(15000);
- break;
- case 1:
- lClick(123, 853, 250); // med
- SendKey(VK_SPACE);
- Sleep(15000);
- break;
- case 2:
- lClick(110, 834, 250); // med
- SendKey(VK_SPACE);
- Sleep(15000);
- break;
- case 3:
- lClick(92, 849, 250); // hard
- SendKey(VK_SPACE);
- Sleep(15000);
- break;
- case 4:
- lClick(107, 793, 250); // mid
- SendKey(VK_SPACE);
- Sleep(15000);
- break;
- }
- break;
- case faction_dire:
- switch (loops % 5) {
- case 0:
- lClick(77, 715, 250); // ez
- SendKey(VK_SPACE);
- Sleep(20000);
- break;
- case 1:
- lClick(90, 718, 250); // med
- SendKey(VK_SPACE);
- Sleep(15000);
- break;
- case 2:
- lClick(113, 733, 250); // med
- SendKey(VK_SPACE);
- Sleep(15000);
- break;
- case 3:
- lClick(137, 735, 250); // hard
- SendKey(VK_SPACE);
- Sleep(15000);
- break;
- case 4:
- lClick(107, 793, 250); // mid
- SendKey(VK_SPACE);
- Sleep(15000);
- break;
- }
- break;
- default:
- break;
- }
- }
- gameloops += 1;
- }
- else if (bot_status == status_trophyupgraded) {
- lClick(844, 664);
- }
- else if (bot_status == status_conductsummary) {
- lClick(1156, 690);
- }
- else if (bot_status == status_partyinvite) {
- lClick(847, 590);
- }
- else if (bot_status == status_partyrescind) {
- lClick(850, 569);
- }
- else if (bot_status == status_cannotqueue) {
- lClick(847, 510);
- }
- else if (bot_status == status_banimminent) {
- lClick(843, 556);
- }
- else if (bot_status == status_itemreceived) {
- lClick(870, 645);
- }
- //cout << bot_status << endl;
- //cin.get(); // See Output
- loops += 1;
- Sleep(5000);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement