Advertisement
Guest User

bot

a guest
Sep 24th, 2018
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.34 KB | None | 0 0
  1. // Dota 2 Bot.cpp : Defines the entry point for the console application.
  2. //
  3.  
  4. #include "stdafx.h";
  5. #include <windows.h>;
  6. #include <stdio.h>;
  7. #include <iostream>;
  8. using namespace std;
  9.  
  10. enum status {
  11. status_unknown,
  12. status_mainmenu,
  13. status_confirmregions,
  14. status_matchfound,
  15. status_picking,
  16. status_pregame,
  17. status_game,
  18. status_trophyupgraded,
  19. status_conductsummary,
  20. status_partyinvite,
  21. status_partyrescind,
  22. status_cannotqueue,
  23. status_banimminent,
  24. status_itemreceived
  25. };
  26.  
  27. POINT mousePos;
  28.  
  29. HWND dota2 = FindWindow(0, L"Dota 2"); // (LPCWSTR)"Dota 2" -> L"Dota 2"
  30.  
  31.  
  32. enum faction { faction_unknown, faction_radiant, faction_dire };
  33. faction bot_faction = faction_unknown;
  34.  
  35. enum mode { mode_healthy, mode_low };
  36. mode bot_mode = mode_healthy;
  37.  
  38.  
  39. void SendKey(DWORD vkey) {
  40. WORD wScan = MapVirtualKey(vkey, MAPVK_VK_TO_VSC);
  41. PostMessage(dota2, WM_KEYDOWN, vkey, 1 | (wScan << 16));
  42. PostMessage(dota2, WM_KEYUP, vkey, 1 | (wScan << 16) | (3 << 30));
  43. Sleep(10);
  44. } // Usage: SendKey(VK_CAPITAL);
  45. void HoldKey(DWORD vkey) {
  46. WORD wScan = MapVirtualKey(vkey, MAPVK_VK_TO_VSC);
  47. PostMessage(dota2, WM_KEYDOWN, vkey, 1 | (wScan << 16));
  48. Sleep(10);
  49. }
  50. void ReleaseKey(DWORD vkey) {
  51. WORD wScan = MapVirtualKey(vkey, MAPVK_VK_TO_VSC);
  52. PostMessage(dota2, WM_KEYUP, vkey, 1 | (wScan << 16) | (3 << 30));
  53. Sleep(10);
  54. }
  55.  
  56. void lClick(int x, int y, int wt = 0) {
  57. SetCursorPos(x, y);
  58. Sleep(wt);
  59. mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
  60. mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
  61. }
  62. void rClick(int x, int y, int wt = 0) {
  63. SetCursorPos(x, y);
  64. Sleep(wt);
  65. mouse_event(MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0);
  66. mouse_event(MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0);
  67. }
  68.  
  69. int getPixelColor(int x, int y) {
  70. HDC dc = GetDC(NULL);
  71. COLORREF pixel = GetPixel(dc, x, y);
  72. int _r = GetRValue(pixel);
  73. int _g = GetGValue(pixel);
  74. int _b = GetBValue(pixel);
  75. int _i = _r * pow(256, 2) + _g * 256 + _b;
  76. return _i;
  77. }
  78.  
  79. void dCursorPos() {
  80. GetCursorPos(&mousePos);
  81. cout << mousePos.x << ", " << mousePos.y << endl;
  82. }
  83.  
  84.  
  85.  
  86. int loops = 0;
  87. int gameloops = 0;
  88.  
  89. bool buyitems = true;
  90. bool buyback = true;
  91. bool spamcourier = false;
  92.  
  93. int main() {
  94. HWND dota2 = FindWindow(0, L"Dota 2"); // (LPCWSTR)"Dota 2" -> L"Dota 2"
  95. SetForegroundWindow(dota2);
  96. //cout << dota2 << endl;
  97.  
  98. status bot_status = status_unknown;
  99. Sleep(3000);
  100.  
  101. while (true) {
  102. //dCursorPos();
  103. //cout << getPixelColor(710, 444) << endl;
  104. //Sleep(5000000);
  105.  
  106. // Determine bot_status
  107. if ((getPixelColor(1322, 856) == 5792096) || (getPixelColor(1322, 856) == 5791840) || (getPixelColor(1322, 856) == 5726304) || (getPixelColor(1322, 856) == 5726305)) {
  108. bot_status = status_mainmenu;
  109. }
  110. else if (getPixelColor(756, 737) == 5070181) {
  111. bot_status = status_confirmregions;
  112. }
  113. else if (getPixelColor(710, 444) == 3626569) {
  114. bot_status = status_matchfound;
  115. }
  116. else if (getPixelColor(1422, 648) == 3687513) {
  117. bot_status = status_picking;
  118. }
  119. else if (getPixelColor(973, 571) == 132103) {
  120. bot_status = status_pregame;
  121. }
  122. else if (getPixelColor(1385, 855) == 3356731) {
  123. bot_status = status_game;
  124. }
  125. else if ((getPixelColor(844, 664) == 5202023) || (getPixelColor(844, 664) == 9349560)) {
  126. bot_status = status_trophyupgraded;
  127. }
  128. else if ((getPixelColor(396, 283) == 0) || (getPixelColor(396, 283) == 2370091)) {
  129. bot_status = status_conductsummary;
  130. }
  131. else if (getPixelColor(842, 604) == 5201767) {
  132. bot_status = status_partyinvite;
  133. }
  134. else if (getPixelColor(850, 569) == 5135974) {
  135. bot_status = status_partyrescind;
  136. }
  137. else if (getPixelColor(847, 510) == 5070181) {
  138. bot_status = status_cannotqueue;
  139. }
  140. else if (getPixelColor(843, 556) == 4806752) {
  141. bot_status = status_banimminent;
  142. }
  143. else if (getPixelColor(870, 645) == 5070181) {
  144. bot_status = status_itemreceived;
  145. }
  146. //cout << bot_status << endl;
  147. //Sleep(10000000);
  148.  
  149. // Use bot_status to execute actions accordingly
  150. if (bot_status == status_mainmenu) {
  151. lClick(811, 30);
  152. Sleep(1000);
  153. lClick(1400, 850);
  154. Sleep(500);
  155. lClick(1400, 850);
  156. }
  157. else if (bot_status == status_confirmregions) {
  158. lClick(756, 737);
  159. }
  160. else if (bot_status == status_matchfound) {
  161. lClick(763, 447, 500);
  162. Sleep(500);
  163. SendKey(VK_RETURN);
  164. }
  165. else if (bot_status == status_picking) {
  166. lClick(780, 258); // wk
  167. Sleep(500);
  168. lClick(1325, 652);
  169. Sleep(500);
  170. lClick(251, 197); // axe
  171. Sleep(500);
  172. lClick(1325, 652);
  173. Sleep(500);
  174. lClick(981, 190); // lycan
  175. Sleep(500);
  176. lClick(1325, 652);
  177. Sleep(500);
  178. lClick(894, 185); // lc
  179. Sleep(500);
  180. lClick(1325, 652);
  181. Sleep(500);
  182. lClick(582, 192); // dk
  183. Sleep(500);
  184. lClick(1325, 652);
  185. Sleep(500);
  186. lClick(1387, 652, 500); // random
  187. }
  188. else if (bot_status == status_pregame) {
  189. gameloops = 0;
  190. bot_faction = faction_unknown;
  191.  
  192. lClick(830, 356);
  193. Sleep(500);
  194. rClick(1121, 609, 500); // stout
  195. Sleep(500);
  196. rClick(1140, 609, 500); // quelling
  197. Sleep(500);
  198. rClick(998, 607, 500); // circlet
  199.  
  200. Sleep(500);
  201. SetCursorPos(874, 639); // tp
  202. Sleep(500);
  203. mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
  204. SetCursorPos(853, 675); // bp 3rd slot
  205. Sleep(500);
  206. mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
  207.  
  208. Sleep(500);
  209. SetCursorPos(820, 633); // mango
  210. Sleep(500);
  211. mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
  212. SetCursorPos(816, 672); // bp 2nd slot
  213. Sleep(500);
  214. mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
  215.  
  216. Sleep(500);
  217. SetCursorPos(768, 633); // faerie
  218. Sleep(500);
  219. mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
  220. SetCursorPos(779, 673); // bp 1st slot
  221. Sleep(500);
  222. mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
  223. }
  224. else if (bot_status == status_game) {
  225. SendKey(VkKeyScan('f')); // select hero
  226. Sleep(250);
  227. SendKey(VkKeyScan('f')); // select hero
  228. Sleep(250);
  229. SendKey(VK_OEM_6); // ]} laugh
  230. // skill abilities
  231. HoldKey(VK_CONTROL);
  232. SendKey(VkKeyScan('3'));
  233. SendKey(VkKeyScan('2'));
  234. SendKey(VkKeyScan('4'));
  235. SendKey(VkKeyScan('1'));
  236. ReleaseKey(VK_CONTROL);
  237. Sleep(500);
  238.  
  239. // buy bracer drum
  240. if ((buyitems == true) && (loops % 5 == 0)) {
  241. lClick(1436, 874); // shop open
  242. Sleep(500);
  243. lClick(1515, 97); // upgrades
  244. Sleep(500);
  245. if ((getPixelColor(1059, 845) == 13389366) || (getPixelColor(1075, 842) == 8524550) || (getPixelColor(1096, 844) == 11941408)) {
  246. rClick(1403, 355); // drum
  247. Sleep(500);
  248. }
  249. else {
  250. rClick(1360, 214); // bracer
  251. Sleep(500);
  252. }
  253. lClick(1436, 874); // shop close
  254. Sleep(1000);
  255. if (spamcourier == true) {
  256. for (int i = 1; i < 100; i++) {
  257. SendKey(VK_CAPITAL);
  258. Sleep(90);
  259. }
  260. }
  261. else {
  262. SendKey(VK_CAPITAL);
  263. }
  264. }
  265.  
  266. Sleep(1000);
  267.  
  268. if (gameloops == 0) { // implies faction_unknown // do this in strategy phase
  269. HoldKey(VK_OEM_3); // `~ scoreboard
  270. Sleep(500);
  271. lClick(550, 598); // shared unit control
  272. Sleep(500);
  273. if (getPixelColor(728, 52) == 4146512) {
  274. bot_faction = faction_radiant;
  275.  
  276. // disable help
  277. lClick(730, 96);
  278. Sleep(250);
  279.  
  280. lClick(730, 142);
  281. Sleep(250);
  282.  
  283. lClick(730, 193);
  284. Sleep(250);
  285.  
  286. lClick(730, 243);
  287. Sleep(250);
  288.  
  289. lClick(730, 293);
  290. Sleep(250);
  291. }
  292. else if (getPixelColor(728, 311) == 2698549) {
  293. bot_faction = faction_dire;
  294.  
  295. // disable help
  296. lClick(730, 360);
  297. Sleep(250);
  298.  
  299. lClick(730, 410);
  300. Sleep(250);
  301.  
  302. lClick(730, 460);
  303. Sleep(250);
  304.  
  305. lClick(730, 510);
  306. Sleep(250);
  307.  
  308. lClick(730, 555);
  309. Sleep(250);
  310. }
  311. Sleep(250);
  312. ReleaseKey(VK_OEM_3); // `~ scoreboard
  313. //cout << bot_faction << endl;
  314. }
  315. Sleep(1000);
  316.  
  317. // Walk to base if low health
  318. if (getPixelColor(717, 857) == 1976593) {
  319. bot_mode = mode_low;
  320. switch (bot_faction) {
  321. case faction_radiant:
  322. rClick(15, 887, 250);
  323. break;
  324. case faction_dire:
  325. rClick(232, 681, 250);
  326. break;
  327. default:
  328. break;
  329. }
  330. }
  331. else {
  332. bot_mode = mode_healthy;
  333. }
  334.  
  335. // Buyback if dead
  336. if (getPixelColor(618, 885) == 5795936) {
  337. if (buyback == true) {
  338. SendKey(VK_F9);
  339. Sleep(2700);
  340. lClick(618, 885, 200);
  341. SendKey(VK_OEM_6); // ]} laugh
  342. }
  343. }
  344.  
  345. // Jungle
  346. if (bot_mode == mode_healthy) {
  347. switch (bot_faction) {
  348. case faction_radiant:
  349. switch (loops % 5) {
  350. case 0:
  351. lClick(159, 853, 250); // ez
  352. SendKey(VK_SPACE);
  353. Sleep(15000);
  354. break;
  355. case 1:
  356. lClick(123, 853, 250); // med
  357. SendKey(VK_SPACE);
  358. Sleep(15000);
  359. break;
  360. case 2:
  361. lClick(110, 834, 250); // med
  362. SendKey(VK_SPACE);
  363. Sleep(15000);
  364. break;
  365. case 3:
  366. lClick(92, 849, 250); // hard
  367. SendKey(VK_SPACE);
  368. Sleep(15000);
  369. break;
  370. case 4:
  371. lClick(107, 793, 250); // mid
  372. SendKey(VK_SPACE);
  373. Sleep(15000);
  374. break;
  375. }
  376. break;
  377. case faction_dire:
  378. switch (loops % 5) {
  379. case 0:
  380. lClick(77, 715, 250); // ez
  381. SendKey(VK_SPACE);
  382. Sleep(20000);
  383. break;
  384. case 1:
  385. lClick(90, 718, 250); // med
  386. SendKey(VK_SPACE);
  387. Sleep(15000);
  388. break;
  389. case 2:
  390. lClick(113, 733, 250); // med
  391. SendKey(VK_SPACE);
  392. Sleep(15000);
  393. break;
  394. case 3:
  395. lClick(137, 735, 250); // hard
  396. SendKey(VK_SPACE);
  397. Sleep(15000);
  398. break;
  399. case 4:
  400. lClick(107, 793, 250); // mid
  401. SendKey(VK_SPACE);
  402. Sleep(15000);
  403. break;
  404. }
  405. break;
  406. default:
  407. break;
  408. }
  409. }
  410.  
  411. gameloops += 1;
  412. }
  413. else if (bot_status == status_trophyupgraded) {
  414. lClick(844, 664);
  415. }
  416. else if (bot_status == status_conductsummary) {
  417. lClick(1156, 690);
  418. }
  419. else if (bot_status == status_partyinvite) {
  420. lClick(847, 590);
  421. }
  422. else if (bot_status == status_partyrescind) {
  423. lClick(850, 569);
  424. }
  425. else if (bot_status == status_cannotqueue) {
  426. lClick(847, 510);
  427. }
  428. else if (bot_status == status_banimminent) {
  429. lClick(843, 556);
  430. }
  431. else if (bot_status == status_itemreceived) {
  432. lClick(870, 645);
  433. }
  434.  
  435. //cout << bot_status << endl;
  436. //cin.get(); // See Output
  437. loops += 1;
  438. Sleep(5000);
  439. }
  440. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement