Advertisement
Guest User

Simple KanColle AHK Bot

a guest
Nov 11th, 2013
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2. Simple KanColle AutoHotKey Expedition and Leveling script.
  3. Constantly runs and repairs a solo ship in fleet 3 through 2-3
  4. repeatedly.
  5. Also runs Expedition 2 (Steel and buckets) on Fleet 2,
  6. and Expedition 5 (Fuel) on Fleet 4.
  7. Ctrl+Alt+t then Ctrl+Alt+o to start script
  8. If you don't want to run expeditions, just hit Ctrl+Alt+o.
  9.  
  10. This script relies on mouse coordinates. Therefore you MUST be running this in 1366 x 768 resolution through the api-link (so the frame resizes with window size) and on firefox with only the Menu Bar and Navigation Toolbars On (View -> toolbars)
  11. */
  12.  
  13. !^p:: pause
  14. !^s:: suspend
  15.  
  16. global expedition_1_timer_complete
  17. global expedition_2_timer_complete
  18. global expedition_1_fuel_pending
  19. global expedition_2_fuel_pending
  20. global expedition_1_dispatch_pending
  21. global expedition_2_dispatch_pending
  22. global expedition_trigger
  23.  
  24. home_screen_check() ; Checks if the current screen is the home screen
  25. {
  26. MouseMove 30, 430, 1 ; Moves mouse out of the way
  27. PixelSearch shutsugeki_x, shutsugeki_y, 430, 428, 442, 442, 0x209BFB, 2, fast
  28. if (shutsugeki_y < 441) { ; Check if shutsugeki button is present
  29. shutsugeki_ok := 1
  30. }
  31. PixelSearch steel_x, steel_y, 1160, 163, 1198, 177, 0xF2F6FF, 15, fast
  32. if (steel_y < 176) { ; Check if steel stats are present
  33. steel_ok := 1
  34. }
  35. PixelSearch config_x, config_y, 1166, 688, 1186, 710, 0xF2F6FF, 2, fast
  36. if (config_y < 709) { ; Check if config button is present
  37. config_ok := 1
  38. }
  39. condition_check := shutsugeki_ok + steel_ok + config_ok
  40. if (condition_check = 3) {
  41. return 1
  42. } else {
  43. return 0
  44. }
  45. }
  46.  
  47. compass_check() ; Checks if the current screen is the compass
  48. {
  49. MouseMove 30, 430, 1 ; Moves mouse out of the way
  50. PixelSearch center_compass_x, center_compass_y, 691, 396, 698, 407, 0x08088F, 15, fast
  51. if (shutsugeki_y < 406) { ; Check if shutsugeki button is present
  52. center_compass_ok := 1
  53. }
  54. PixelSearch corner_compass_x, corner_compass_y, 238, 669, 249, 675, 0x05073F, 15, fast
  55. if (steel_y < 674) { ; Check if steel stats are present
  56. corner_compass_ok := 1
  57. }
  58. condition_check := center_compass_ok + corner_compass_ok
  59. if (condition_check = 2) {
  60. return 1
  61. } else {
  62. return 0
  63. }
  64. }
  65.  
  66. retreat_decision() ; Checks if the current screen is the retreat decision screen
  67. {
  68. MouseMove 30, 430, 1 ; Moves mouse out of the way
  69. PixelSearch retreat_x, retreat_y, 530, 406, 556, 418, 0xFFFFFF, 5, fast
  70. if (retreat_y < 417) { ; Check if left button is present
  71. retreat_button_ok := 1
  72. }
  73. PixelSearch retreat_x, retreat_y, 807, 402, 834, 425, 0xFFFFFF, 5, fast
  74. if (retreat_y < 424) { ; Check if right button is present
  75. night_battle_ok := 1
  76. }
  77. condition_check := retreat_button_ok + night_battle_ok
  78. if (condition_check = 2) {
  79. return 1
  80. } else {
  81. return 0
  82. }
  83.  
  84. }
  85.  
  86. expedition_1:
  87. expedition_1_timer_complete := 1
  88. return
  89.  
  90. expedition_2:
  91. expedition_2_timer_complete := 1
  92. return
  93.  
  94. expedition_complete_check() ; Check if expeditions are done and deal with the pop ups
  95. {
  96. if (expedition_1_timer_complete = 1) { ; expedition 1 end check
  97. Click 232, 696, 1 ; Click somewhere to get expedition results
  98. is_expedition_1_results_over_yet := 0 ; Flag to check if it's really over yet
  99. While (is_expedition_1_results_over_yet = 0) {
  100. loop 12 { ; Keep clicking in the corner till it's done
  101. Sleep 3000
  102. Click 232, 696, 1
  103. }
  104. if (home_screen_check() = 1) { ; Is it REALLY done yet?
  105. is_expedition_1_results_over_yet := 1
  106. }
  107. }
  108. expedition_1_fuel_pending := 1
  109. expedition_1_timer_complete := 0
  110. }
  111.  
  112. if (expedition_2_timer_complete = 1) { ; expedition 2 end check
  113. Click 232, 696, 1 ; Click somewhere to get expedition results
  114. is_expedition_2_results_over_yet := 0 ; Flag to check if it's really over yet
  115. While (is_expedition_2_results_over_yet = 0) {
  116. loop 12 { ; Keep clicking in the corner till it's done
  117. Sleep 3000
  118. Click 232, 696, 1
  119. }
  120. if (home_screen_check() = 1) { ; Is it REALLY done yet?
  121. is_expedition_2_results_over_yet := 1
  122. }
  123. }
  124. expedition_2_fuel_pending := 1
  125. expedition_2_timer_complete := 0
  126. }
  127. }
  128.  
  129. expedition_refuel() ; Refuel expedition fleets
  130. {
  131. if (expedition_1_fuel_pending = 1 OR expedition_2_fuel_pending = 1) { ; Check if fleets are ready to be sent to an expedition
  132. Click 275, 401, 1 ; Click Resupply
  133. Sleep 8000
  134. if (expedition_1_fuel_pending = 1) {
  135. Click 406, 270, 1 ; Click 2nd fleet
  136. Sleep 5000
  137. Click 330, 272, 1 ; Click select all ships for resupply
  138. Sleep 3500
  139. Click 1075, 685, 1 ; Resupply fleet 2 ships
  140. Sleep 10000
  141. expedition_1_dispatch_pending := 1
  142. expedition_1_fuel_pending := 0
  143. }
  144. if (expedition_2_fuel_pending = 1) {
  145. Click 483, 270, 1 ; Click 4th fleet
  146. Sleep 5000
  147. Click 330, 272, 1 ; Click select all ships for resupply
  148. Sleep 3500
  149. Click 1075, 685, 1 ; Resupply fleet 4 ships
  150. Sleep 10000
  151. expedition_2_dispatch_pending := 1
  152. expedition_2_fuel_pending := 0
  153. }
  154. Click 267, 448, 1 ; Return to home
  155. Sleep 8000
  156. }
  157. }
  158.  
  159. expedition_send() ; and send them out to expeditions 2 (Fleet 2) and 5 (Fleet 4)
  160. {
  161. if (expedition_1_dispatch_pending = 1 OR expedition_2_dispatch_pending = 1) {
  162. Click 428, 449, 1 ; Click on Shutsugeki button in home
  163. Sleep 6000
  164. Click 1049, 395, 1 ; Click on Expedition button
  165. Sleep 7000
  166. if (expedition_1_dispatch_pending = 1) {
  167. Click 508, 378, 1 ; Select Expedition 2
  168. Sleep 5000
  169. Click 1050, 690, 1 ; Confirm Expedition 2
  170. Sleep 5000
  171. Click 686, 287, 1 ; Select Fleet 2
  172. Sleep 6000
  173. Click 984, 692, 1 ; Send out Fleet 2
  174. Sleep 2000
  175. SetTimer, expedition_1, -1800000
  176. expedition_1_dispatch_pending := 0
  177. Sleep 8000
  178. }
  179. Sleep 2000
  180. if (expedition_2_dispatch_pending = 1) {
  181. Click 508, 497, 1 ; Select Expedition 5
  182. Sleep 5000
  183. Click 1050, 690, 1 ; Confirm Expedition 5
  184. Sleep 5000
  185. Click 763, 285, 1 ; Select Fleet 4
  186. Sleep 6000
  187. Click 984, 692, 1 ; Send out Fleet 4
  188. Sleep 2000
  189. SetTimer, expedition_2, -5400000
  190. expedition_2_dispatch_pending := 0
  191. Sleep 8000
  192. }
  193. Click 267, 448, 1 ; Return to home
  194. Sleep 8000
  195. }
  196. }
  197.  
  198. !^t::
  199. expedition_trigger := 1 ; Trigger to also run expeditions with fleets 2 and 4
  200. return
  201.  
  202. !^o::
  203.  
  204. if (expedition_trigger = 1) { ; Expedition trigger. Hit Ctrl + Alt + t before Ctrl + Alt + o to include expeditions
  205. InputBox, expedition_1_remaining, Expedition 1 Remaining Time, Please input the remaining time until Fleet 2's expedition time is over. Input 0 if Fleet 2 is already home and ready for expedition 2; Input remaining time for 1st expedition in ms.
  206. SetTimer, expedition_1, -%expedition_1_remaining%
  207. InputBox, expedition_2_remaining, Expedition 2 Remaining time, Please input the remaining time until Fleet 4's expedition time is over. Input 0 if Fleet 4 is already home and ready for expedition 5 ; Input remaining time for 2nd expedition in ms
  208. SetTimer, expedition_2, -%expedition_2_remaining%
  209. }
  210.  
  211. While (1>0) { ; Run this forever~
  212.  
  213.  
  214. While (home_screen_check() = 0) {
  215. Sleep 1000
  216. }
  217. Click 428, 449, 1 ; Click on Shutsugeki button in home
  218. Sleep 3000
  219. Click 470, 393, 1 ; Shutsugeki~
  220. Sleep 3000
  221. ; Click 573, 677, 1 Select Stage 3
  222. Click 478, 686 ; Select Stage 2
  223. Sleep 3000
  224. ; Click 828, 166, 1 Select 3-2
  225. Click 540, 560 ; Selects 2-3
  226. Sleep 3000
  227. Click 1048, 690, 1 ; Confirm Stage Select
  228. Sleep 3000
  229. Click 722, 270, 1 ; Select Fleet 3
  230. Sleep 3000
  231. Click 983, 694 ; Begin Sortie-
  232. Sleep 3000
  233.  
  234. While (compass_check() = 0) { ; Wait till compass is out
  235. Sleep 1000
  236. }
  237. Sleep 1500
  238. Click 232, 696, 1 ; Spin the compass (click on bottom left corner)
  239.  
  240. shutsugeki_chuu := 1 ; Currently in sortie. Keep clicking/checking till out of sortie.
  241. While (shutsugeki_chuu = 1) {
  242. Sleep 3000
  243. Click 232, 696, 1 ; Click in the corner
  244. if retreat_decision() {
  245. Click 540, 412, 1 ; Click left button to skip night battle / continue sortie
  246. Sleep 3000
  247. } else if home_screen_check() {
  248. shutsugeki_chuu := 0
  249. }
  250. }
  251.  
  252. if (expedition_trigger = 1) {
  253. expedition_complete_check() ; Check if expeditions are done. Deal with popups if they are
  254. expedition_complete_check() ; One more check just in case another expedition completed during the first one
  255. expedition_refuel() ; Refuel expedition fleets
  256. expedition_complete_check() ; One more check in case another expedition completed dring refuel
  257. expedition_refuel() ; Another refuel attempt for the check one line above
  258. expedition_send() ; Send out fleets to expedition
  259. expedition_complete_check() ; Anoother check just in case expedition completes during prior send
  260. expedition_refuel() ; Another refuel attempt for the check one line above
  261. expedition_send() ; Another send out attempt for the check two lines above
  262. }
  263.  
  264. Click 275, 401, 1 ; Click Resupply
  265. Sleep 3000
  266. Click 445, 271, 1 ; Click 3rd fleet
  267. Sleep 3000
  268. Click 330, 271, 1 ; Click select all ships for resupply
  269. Sleep 2500
  270. Click 1075, 685, 1 ; Resupply ships
  271. Sleep 11000
  272. Click 197, 526, 1 ; Click on Dock
  273. Sleep 6000
  274. Click 501, 328 ; Click on First Dock
  275. Sleep 5000
  276.  
  277. ; Check if ship is in green health or not
  278. ship_is_healthy := 0
  279. MouseMove 30, 430, 1 ; Moves mouse out of the way
  280. PixelSearch first_slot_x, first_slot_y, 974, 287, 989, 300, 0x00FF00, 0, fast
  281. if (first_slot_y < 299) { ; Check if shutsugeki button is present
  282. ship_is_healthy := 1
  283. }
  284. if (ship_is_healthy = 0) {
  285. Click 838, 296, 1 ; Click the first ship
  286. Sleep 3000
  287. Click 1060, 680 ; Begin docking
  288. Sleep 3000
  289. Click 823, 631 ; Confirm Docking
  290. Sleep 15000
  291. While (ship_is_healthy = 0) {
  292. MouseMove 30, 430, 1 ; Moves mouse out of the way
  293. Sleep 5000
  294. PixelSearch repairing_x, repairing_y, 1135, 291, 1159, 313, 0x36D1B3, 10, fast
  295. if (repairing_y < 312) { ; Check if ship is being repaired
  296. ship_is_repairing := 1
  297. } else {
  298. ship_is_repairing := 0
  299. }
  300. if (ship_is_repairing = 0) {
  301. PixelSearch healthy_x, healthy_y, 1137, 307, 1146, 313, 0xD4C3A9, 8, fast
  302. if (healthy_y < 312) { ; Check if ship is no longer in dock and is done being repaired
  303. ship_is_healthy := 1
  304. }
  305. }
  306. }
  307. }
  308.  
  309. Click 267, 448, 1 ; Click back to home
  310. Sleep 6000
  311.  
  312. if (expedition_trigger = 1) {
  313. expedition_complete_check() ; Check if expeditions are done. Deal with popups if they are
  314. expedition_complete_check() ; One more check just in case another expedition completed during the first one
  315. expedition_refuel() ; Refuel expedition fleets
  316. expedition_complete_check() ; One more check in case another expedition completed dring refuel
  317. expedition_refuel() ; Another refuel attempt for the check one line above
  318. expedition_send() ; Send out fleets to expedition
  319. expedition_complete_check() ; Anoother check just in case expedition completes during prior send
  320. expedition_refuel() ; Another refuel attempt for the check one line above
  321. expedition_send() ; Another send out attempt for the check two lines above
  322. }
  323.  
  324. }
  325.  
  326. return
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement