SHOW:
|
|
- or go back to the newest paste.
| 1 | ;IF YOU PLAN TO USE IMAGESEARCH FUNCTIONS: | |
| 2 | - | ;Download: http://www.mediafire.com/?vtx9l1woj61h8r6 (1.4a new link) |
| 2 | + | ;Download: http://www.mediafire.com/?vtx9l1woj61h8r6 |
| 3 | ;If your Windows installation is x64, use the 64-bit native AutoIt and the x64 directory in the archive | |
| 4 | ;Extract and copy AutoIt3 folder to Program Files directory | |
| 5 | ;Extract and copy all dlls to C:\Windows\ directory (optionally copy the MSVCR dlls to System32 as well) | |
| 6 | ;Extract pics directory anywhere and update the $directory var - INCLUDE TRAILING BACKSLASH: C:\pics\ | |
| 7 | ;If you are running anything but fullscreen mode, the size of letters will mismatch and not loot anything. Resize or make your own pngs. | |
| 8 | ;IF YOU COMPILE THE SCRIPT TO EXE AND YOU USE X64: | |
| 9 | ;Run "Compile script to .exe (x64)" | |
| 10 | ;Check "Lowest" under the Compression menu option | |
| 11 | ;Leave x64 checkbox checked | |
| 12 | ;;;;; | |
| 13 | ;WONT WORK UNLESS MOVE IS BOUND TO MIDDLE MOUSE (Mouse 3) -- NOT MOVE/INTERACT | |
| 14 | ;Required build: http://us.battle.net/d3/en/calculator/barbarian#WTXYQg!ZVg!abcZaY | |
| 15 | ;Required display mode for cellar detection: "FULLSCREEN WINDOWED" | |
| 16 | ;Official supported resolution: 1920x1080 | |
| 17 | ;;;;; | |
| 18 | ;Original: [Goldfarming] AFK 150k-200k Gold Per Hour by mackus101 @ ownedcore | |
| 19 | ;ImageSearch contributions by rvbfreak, goofinator, and asuRob | |
| 20 | ||
| 21 | #include <ImageSearch.au3> ;comment this if you are not using the new looting system | |
| 22 | Global $Paused | |
| 23 | Opt('MouseCoordMode', 2)
| |
| 24 | Opt('PixelCoordMode', 2)
| |
| 25 | HotKeySet("=","Leave") ;script started by pressing =
| |
| 26 | HotKeySet("-", "Pause") ;script paused by pressing -
| |
| 27 | HotKeySet("x", "Stop") ;script stopped by pressing x
| |
| 28 | ||
| 29 | ;ImageSearch Looting Variables | |
| 30 | $ImgLoot = True ; set this to true if you want to use ImageSearch looting system. False will revert to old PixelSearch method | |
| 31 | $directory = "C:\Program Files (x86)\AutoIt3\pics\" ; CHANGE THIS! Point it to the directory with the imagesearch pngs | |
| 32 | - | $totalItems = 19; This needs to match the number of pngs you are loading |
| 32 | + | $totalItems = 17; This needs to match the number of pngs you are loading |
| 33 | Global $pick[$totalItems], $size = WinGetClientSize("[TITLE:Diablo III; CLASS:D3 Main Window Class]"), $go = True, $Leave = False, $Dead = False, $Logout = False, $Window = False, $i = 0, $currentArrayItem = 0, $gX = 0, $gY = 0
| |
| 34 | If ($size[0]/$size[1]) <> 16/9 Then $size[1]-=30 ; adjusts ratio for titlebar if not 16:9 | |
| 35 | $pick[0] = "legendaryA.png|30" | |
| 36 | $pick[1] = "legendaryE.png|30" | |
| 37 | $pick[2] = "legendaryI.png|10" | |
| 38 | $pick[3] = "legendaryO.png|30" | |
| 39 | $pick[4] = "legendaryU.png|30" | |
| 40 | $pick[5] = "setA.png|30" | |
| 41 | $pick[6] = "setE.png|30" | |
| 42 | $pick[7] = "setU.png|30" | |
| 43 | $pick[8] = "setO.png|30" | |
| 44 | $pick[9] = "setI.png|30" | |
| 45 | $pick[10] = "rareA.png|30" | |
| 46 | $pick[11] = "rareE.png|30" | |
| 47 | $pick[12] = "rareI.png|30" | |
| 48 | $pick[13] = "rareO.png|30" | |
| 49 | $pick[14] = "rareU.png|30" | |
| 50 | - | $pick[15] = "ros.png|30" |
| 50 | + | $pick[15] = "uare.png|40" |
| 51 | - | $pick[16] = "ans.png|30" |
| 51 | + | $pick[16] = "tome.png|30" |
| 52 | - | $pick[17] = "uare.png|40" |
| 52 | + | |
| 53 | - | $pick[18] = "tome.png|30" |
| 53 | + | |
| 54 | $Timer = False ; set this to true and the bot will randomly wait (5% chance) in town for 30-60 seconds before starting over | |
| 55 | $walktime = 2600 ; time in ms the script waits for you to enter and load the cellar. Slow this down for slower move speeds and loading times | |
| 56 | $loadtime = 3200 ; time in ms the script waits for the game to load before it starts pathfinding. Slow this down for slower hard drives | |
| 57 | $tptime = 6900 ; time in ms the script waits for teleport before exiting the game | |
| 58 | $x_ratio = $size[0] / 1920 | |
| 59 | $y_ratio = $size[1] / 1080 | |
| 60 | $yellow = 0xFFF000 ; yellow color code (repair icon) | |
| 61 | $red = 0xD90000 ; red color code (repair icon) | |
| 62 | ||
| 63 | Call("RestartRun")
| |
| 64 | Func RestartRun() | |
| 65 | While $go | |
| 66 | if($Leave) Then | |
| 67 | $i = 0 | |
| 68 | Call("CheckExit")
| |
| 69 | Sleep(850) ;had to add this since the icon doesn't show up RIGHT away in game | |
| 70 | Call("CheckDead")
| |
| 71 | Call("CheckRepair")
| |
| 72 | If $Window Then | |
| 73 | MouseClick("left", Round(140*$x_ratio),Round(420*$y_ratio)) ;button to resume game from main menu
| |
| 74 | Sleep($loadtime) | |
| 75 | $Window = False | |
| 76 | ExitLoop | |
| 77 | ElseIf $Dead or $Logout Then | |
| 78 | ExitLoop | |
| 79 | EndIf | |
| 80 | MouseClick("middle", Round(587 * $x_ratio),Round(333 * $y_ratio)) ;starts the main run
| |
| 81 | Sleep(1090) | |
| 82 | MouseMove(Round(96*$x_ratio),Round(383*$y_ratio),1) | |
| 83 | Sleep(10) | |
| 84 | Send("1")
| |
| 85 | Sleep(800) | |
| 86 | MouseClick("middle", Round(56 * $x_ratio),Round(290 * $y_ratio))
| |
| 87 | Sleep(2900) | |
| 88 | MouseMove(Round(320*$x_ratio),Round(205*$y_ratio),1) ;moves cursor over to the cellar so the proper blue pixel becomes highlighted | |
| 89 | Sleep(600) | |
| 90 | Call("CheckDead")
| |
| 91 | If $Window Then | |
| 92 | MouseClick("left", Round(230*$x_ratio),Round(416*$y_ratio)) ;button to resume game from main menu
| |
| 93 | Sleep($loadtime) | |
| 94 | $Window = False | |
| 95 | ExitLoop | |
| 96 | ElseIf $Dead or $Logout Then | |
| 97 | ExitLoop | |
| 98 | EndIf | |
| 99 | $Pixel2 = PixelSearch(0,0, Round(600*$x_ratio), Round(600*$y_ratio),0x334FB7,3) ;checks for open cellar (in a 600x400 box from the top left - where it should always be) | |
| 100 | If Not @error Then | |
| 101 | MouseClick("left",Round(320*$x_ratio),Round(205*$y_ratio)) ;Entrance to cellar
| |
| 102 | Sleep(1400) | |
| 103 | Sleep($walktime) | |
| 104 | MouseClick("middle",Round(80*$x_ratio),Round(830*$y_ratio)) ;moves to doorway leading to rare inside cellar
| |
| 105 | Sleep(2500) | |
| 106 | MouseMove(Round(350*$x_ratio),Round(60*$y_ratio),1) ;hovers over the rare Sarkoth | |
| 107 | Sleep(5) | |
| 108 | Send("1")
| |
| 109 | Sleep(10) | |
| 110 | MouseClick("right",Round(0*$x_ratio),Round(0*$y_ratio))
| |
| 111 | Sleep(140) | |
| 112 | MouseClick("right",Round(0*$x_ratio),Round(0*$y_ratio))
| |
| 113 | Sleep(140) | |
| 114 | MouseClick("right",Round(0*$x_ratio),Round(0*$y_ratio))
| |
| 115 | Sleep(1000) | |
| 116 | Send("2")
| |
| 117 | Sleep(120) | |
| 118 | Send("2")
| |
| 119 | Sleep(120) | |
| 120 | Send("2")
| |
| 121 | Sleep(120) | |
| 122 | Send("2")
| |
| 123 | Sleep(120) | |
| 124 | Send("3")
| |
| 125 | Sleep(120) | |
| 126 | Send("3")
| |
| 127 | Sleep(120) | |
| 128 | Send("3")
| |
| 129 | Sleep(120) | |
| 130 | Send("3")
| |
| 131 | Sleep(140) | |
| 132 | Send("4")
| |
| 133 | Sleep(140) | |
| 134 | Send("4")
| |
| 135 | Sleep(140) | |
| 136 | Send("4")
| |
| 137 | Sleep(1550) | |
| 138 | MouseClick("middle",Round(750*$x_ratio),Round(555*$y_ratio)) ;move to left top corner for gold
| |
| 139 | Sleep(1000) | |
| 140 | MouseClick("middle",Round(1175*$x_ratio),Round(350*$y_ratio)) ;move to right top corner for gold
| |
| 141 | Sleep(1000) | |
| 142 | MouseClick("middle",Round(1020*$x_ratio),Round(773*$y_ratio)) ;move to middle before looting
| |
| 143 | Sleep(1000) | |
| 144 | MouseClick("middle",Round(900*$x_ratio),Round(400*$y_ratio)) ;move to chest middle
| |
| 145 | Call("CheckLoot")
| |
| 146 | Send("t")
| |
| 147 | Sleep($tptime) | |
| 148 | Call("RandomSleep")
| |
| 149 | Call("CheckDead")
| |
| 150 | If Not $Logout And Not $Dead And Not $Window Then | |
| 151 | Sleep(300) | |
| 152 | Send("{ESCAPE}") ;menu
| |
| 153 | Sleep(200) | |
| 154 | MouseClick("left", Round(960*$x_ratio),Round(580*$y_ratio)) ;button to leave game
| |
| 155 | Sleep($loadtime) | |
| 156 | Call("CheckDead")
| |
| 157 | If Not $Logout Then | |
| 158 | MouseClick("left", Round(140*$x_ratio),Round(420*$y_ratio)) ;button to resume game from main menu
| |
| 159 | Sleep($loadtime) | |
| 160 | EndIf | |
| 161 | Else | |
| 162 | MouseClick("left", Round(140*$x_ratio),Round(420*$y_ratio)) ;button to resume game from main menu
| |
| 163 | Sleep($loadtime) | |
| 164 | $Window = False ; reset the flag so it doesn't think a window is always up | |
| 165 | EndIf | |
| 166 | Else | |
| 167 | Sleep(40) | |
| 168 | Send("t")
| |
| 169 | Sleep($tptime) | |
| 170 | Call("RandomSleep")
| |
| 171 | Call("CheckDead")
| |
| 172 | If Not $Logout And Not $Dead And Not $Window Then | |
| 173 | Sleep(300) | |
| 174 | Send("{ESCAPE}") ;menu
| |
| 175 | Sleep(200) | |
| 176 | MouseClick("left", Round(960*$x_ratio),Round(580*$y_ratio)) ;button to leave game
| |
| 177 | Sleep($loadtime) | |
| 178 | Call("CheckDead")
| |
| 179 | If Not $Logout Then | |
| 180 | MouseClick("left", Round(140*$x_ratio),Round(420*$y_ratio)) ;button to resume game from main menu
| |
| 181 | Sleep($loadtime) | |
| 182 | EndIf | |
| 183 | Else | |
| 184 | MouseClick("left", Round(140*$x_ratio),Round(420*$y_ratio)) ;button to resume game from main menu
| |
| 185 | Sleep($loadtime) | |
| 186 | $Window = False ; reset the flag so it doesn't think a window is always up | |
| 187 | EndIf | |
| 188 | EndIf | |
| 189 | EndIf | |
| 190 | WEnd | |
| 191 | Call("RestartRun")
| |
| 192 | EndFunc | |
| 193 | ||
| 194 | Func CheckDead() | |
| 195 | Call("CheckWindow")
| |
| 196 | $YouHaveDied = PixelSearch(Round(620*$x_ratio), Round(325*$y_ratio), Round(625*$x_ratio), Round(330*$y_ratio), 0xFFFFFF) ; checks for white text "YOU HAVE DIED" | |
| 197 | If Not @error Then | |
| 198 | If Not $Window Then | |
| 199 | $Dead = True | |
| 200 | Sleep(100) | |
| 201 | Send("{Escape}")
| |
| 202 | Sleep(10) | |
| 203 | MouseClick("left", Round(960*$x_ratio),Round(580*$y_ratio)) ;button to leave game
| |
| 204 | Sleep(11000) | |
| 205 | Sleep($loadtime) | |
| 206 | MouseClick("left", Round(140*$x_ratio),Round(420*$y_ratio)) ;button to resume game from main menu
| |
| 207 | Sleep($loadtime) | |
| 208 | Else | |
| 209 | MouseClick("left", Round(140*$x_ratio),Round(420*$y_ratio)) ;button to resume game from main menu
| |
| 210 | Sleep($loadtime) | |
| 211 | $Dead = False | |
| 212 | EndIf | |
| 213 | Else | |
| 214 | $Dead = False | |
| 215 | EndIf | |
| 216 | $LogoutTimerCancel = PixelSearch(Round(900*$x_ratio), Round(240*$y_ratio), Round(1010*$x_ratio), Round(290*$y_ratio), 0x993827) ; checks for cancel button on logout timer | |
| 217 | If Not @error Then | |
| 218 | Sleep(11000) | |
| 219 | Sleep($loadtime) | |
| 220 | If Not $Window Then | |
| 221 | $Dead = True | |
| 222 | $Logout = True | |
| 223 | Sleep($loadtime) | |
| 224 | MouseClick("left", Round(140*$x_ratio),Round(420*$y_ratio)) ;button to resume game from main menu
| |
| 225 | Sleep($loadtime) | |
| 226 | Else | |
| 227 | MouseClick("left", Round(140*$x_ratio),Round(420*$y_ratio)) ;button to resume game from main menu
| |
| 228 | Sleep($loadtime) | |
| 229 | $Logout = False | |
| 230 | EndIf | |
| 231 | Else | |
| 232 | $Logout = False | |
| 233 | EndIf | |
| 234 | EndFunc | |
| 235 | ||
| 236 | Func CheckWindow() | |
| 237 | $CloseButton = PixelSearch(Round(1570*$x_ratio), Round(110*$y_ratio), Round(1590*$x_ratio), Round(120*$y_ratio), 0x8C2300) ; checks for the red color of the "X" on an open window | |
| 238 | If Not @error Then | |
| 239 | Sleep(200) | |
| 240 | Send("{SPACE}") ;close any open windows
| |
| 241 | $Window = True | |
| 242 | Else | |
| 243 | $Window = False | |
| 244 | EndIf | |
| 245 | EndFunc | |
| 246 | ||
| 247 | Func CheckExit() | |
| 248 | $ExitButton = PixelSearch(Round(1190*$x_ratio), Round(400*$y_ratio), Round(1200*$x_ratio), Round(440*$y_ratio), 0x14100E) ; checks for the grey border of the exit prompt | |
| 249 | If Not @error Then | |
| 250 | Send("{ESCAPE}")
| |
| 251 | Sleep(100) | |
| 252 | Send("{SPACE}") ;close any open windows
| |
| 253 | Sleep(200) | |
| 254 | MouseMove(1,1) ; reset cursor position before checking for button | |
| 255 | $Resume = Hex(PixelGetColor(Round(140*$x_ratio), Round(420*$y_ratio)), 6) ; checks if resume button can be pressed | |
| 256 | If $Resume == "400900" Or $Resume == "380900" Then | |
| 257 | Sleep(200) | |
| 258 | MouseClick("left", Round(140*$x_ratio),Round(420*$y_ratio)) ;button to resume game from main menu
| |
| 259 | Sleep($loadtime) | |
| 260 | EndIf | |
| 261 | EndIf | |
| 262 | EndFunc | |
| 263 | ||
| 264 | Func CheckRepair() | |
| 265 | $RepairArea = PixelSearch(Round(1480*$x_ratio), 0, Round(1570*$x_ratio), Round(100*$y_ratio), $yellow) | |
| 266 | If Not @error Then | |
| 267 | Call("DoRepair")
| |
| 268 | EndIf | |
| 269 | $RepairAreaRed = PixelSearch(Round(1480*$x_ratio), 0, Round(1570*$x_ratio), Round(100*$y_ratio), $red) | |
| 270 | If Not @error Then | |
| 271 | Call("DoRepair")
| |
| 272 | EndIf | |
| 273 | EndFunc | |
| 274 | ||
| 275 | Func DoRepair() | |
| 276 | Sleep(100) | |
| 277 | Send("t")
| |
| 278 | Sleep($tptime) | |
| 279 | MouseClick("left", Round(1480*$x_ratio),Round(281*$y_ratio)) ;begin movement towards merchant
| |
| 280 | Sleep(1500) | |
| 281 | MouseClick("left", Round(1316*$x_ratio),Round(206*$y_ratio)) ;moves to get merchant in screen
| |
| 282 | Sleep(1500) | |
| 283 | MouseClick("left", Round(845*$x_ratio),Round(225*$y_ratio)) ;NPC Merchant to the right of cain's home
| |
| 284 | Sleep(1200) | |
| 285 | MouseClick("left", Round(521*$x_ratio),Round(506*$y_ratio)) ;button to open up repair menu
| |
| 286 | Sleep(400) | |
| 287 | MouseClick("left", Round(260*$x_ratio),Round(595*$y_ratio)) ;button to pay for repairs
| |
| 288 | Sleep(200) | |
| 289 | Call("CheckDead")
| |
| 290 | If Not $Dead and Not $Logout Then | |
| 291 | Send("{ESCAPE}") ;closes repair tab
| |
| 292 | Sleep(100) | |
| 293 | Send("{ESCAPE}") ;menu
| |
| 294 | Sleep(10) | |
| 295 | MouseClick("left", Round(960*$x_ratio),Round(580*$y_ratio)) ;button to leave game
| |
| 296 | Sleep($loadtime) | |
| 297 | MouseClick("left", Round(140*$x_ratio),Round(420*$y_ratio)) ;button to resume game from main menu
| |
| 298 | Sleep($loadtime) | |
| 299 | EndIf | |
| 300 | EndFunc | |
| 301 | ||
| 302 | Func CheckLoot() | |
| 303 | MouseMove(14,14,0) | |
| 304 | Sleep(Random(500,2000)) | |
| 305 | If Not $ImgLoot Then | |
| 306 | $SetLoot = PixelSearch(Round(400*$x_ratio), 0, Round(1900*$x_ratio), Round(900*$y_ratio), 0x02CE01, 2) ; set loot | |
| 307 | If Not @error Then | |
| 308 | MouseClick ('left', $SetLoot[0], $SetLoot[1], 1, 0)
| |
| 309 | Sleep(Random(1000,1200)) | |
| 310 | MouseMove(14,14,0) ;Reset cursor position, it doesn't need to hover | |
| 311 | $i+= 1 | |
| 312 | If $i <= 6 Then | |
| 313 | Call("CheckLoot")
| |
| 314 | EndIf | |
| 315 | EndIf | |
| 316 | $LegendaryLoot= PixelSearch(Round(400*$x_ratio), 0, Round(1900*$x_ratio), Round(900*$y_ratio), 0xBF642F, 2) ; legendary loot | |
| 317 | If Not @error Then | |
| 318 | MouseClick ('left', $LegendaryLoot[0], $LegendaryLoot[1], 1, 0)
| |
| 319 | Sleep(Random(1000,1200)) | |
| 320 | MouseMove(14,14,0) ;Reset cursor position, it doesn't need to hover | |
| 321 | $i+= 1 | |
| 322 | If $i <= 6 Then | |
| 323 | Call("CheckLoot")
| |
| 324 | EndIf | |
| 325 | EndIf | |
| 326 | If $LootRares Then | |
| 327 | $RareLoot = PixelSearch(Round(400*$x_ratio), 0, Round(1900*$x_ratio), Round(900*$y_ratio), 0xBBBB00, 2) ; rare loot (darker for compatibility) | |
| 328 | If Not @error Then | |
| 329 | MouseClick ('left', $RareLoot[0], $RareLoot[1], 1, 0)
| |
| 330 | Sleep(Random(1000,1200)) | |
| 331 | MouseMove(14,14,0) ;Reset cursor position, it doesn't need to hover | |
| 332 | $i+= 1 | |
| 333 | If $i <= 6 Then | |
| 334 | Call("CheckLoot")
| |
| 335 | EndIf | |
| 336 | EndIf | |
| 337 | EndIf | |
| 338 | Else | |
| 339 | Call("pickItems")
| |
| 340 | EndIf | |
| 341 | EndFunc | |
| 342 | ||
| 343 | Func pickItems() | |
| 344 | $currentArrayItem = 0 | |
| 345 | For $gI = 0 to ($totalItems - 1) | |
| 346 | $array = StringSplit($pick[$gI],"|") | |
| 347 | $file = $array[1] | |
| 348 | $accuracy = $array[2] | |
| 349 | $urlString = $directory & $file | |
| 350 | $Target = _ImageSearchArea($urlString,1,0,0,Round(1920*$x_ratio),Round(1080*$y_ratio),$gX,$gY,$accuracy) | |
| 351 | While $i <= 12 ; max: 13 gems and pieces of gear to loot | |
| 352 | If $Target And ($gX > 15) And ($gY > 15) Then | |
| 353 | ;MsgBox(4096,"Debug",$urlString & " " & $gX & "-" & $gY) | |
| 354 | MouseClick("left", $gX, $gY, 1, 0)
| |
| 355 | Sleep(Random(1200,1400)) | |
| 356 | MouseMove(14,14,0) ;Reset cursor position, it doesn't need to hover | |
| 357 | Sleep(5) | |
| 358 | $Target = _ImageSearchArea($urlString,1,0,0,Round(1920*$x_ratio),Round(1080*$y_ratio),$gX,$gY,$accuracy) | |
| 359 | $i+= 1 | |
| 360 | Else | |
| 361 | ExitLoop | |
| 362 | EndIf | |
| 363 | WEnd | |
| 364 | Next | |
| 365 | EndFunc | |
| 366 | ||
| 367 | Func RandomSleep() | |
| 368 | If $Timer And Random(1,20) = 20 Then | |
| 369 | Sleep(Random(30000,60000) | |
| 370 | EndIf | |
| 371 | EndFunc | |
| 372 | ||
| 373 | Func Pause() | |
| 374 | $Leave = False | |
| 375 | EndFunc | |
| 376 | ||
| 377 | Func Stop() ;to allow the script to stop | |
| 378 | Exit | |
| 379 | EndFunc | |
| 380 | ||
| 381 | Func Leave() | |
| 382 | $Leave = True | |
| 383 | EndFunc |