Code:
#include <ImageSearch.au3>
#include <Logging1024x768.au3>
;HotKeySet("{PAUSE}", "Terminate")
;HotKeySet("n", "TogglePause")
$Title = 'Diablo III' ; The Name Of The Game...
$Full = WinGetTitle ($Title) ; Get The Full Title..
$HWnD = WinGetHandle ($Full) ; Get The Handle
$mLeft="left"
$mRight="right"
$repair=0
$haveRare=0
$checkMonsters=IniRead("Options.ini","monster","CheckMonsters","GTFO")
$killMonsters=IniRead("Options.ini","monster","KillMonsters","GTFO")
$attackDelay=IniRead("Options.ini","monster","DelayBetweenAttack","")
$attackButton=IniRead("Options.ini","monster","AttackButton","")
$numberOfAttacks=IniRead("Options.ini","monster","NumberOfAttacksIfMonsterFound","")
$defButton=IniRead("Options.ini","monster","DefensiveSkillButton","")
While 1
$log=logging()
If $log=1 Then
Sleep(1000)
leaveChat()
ExitLoop
EndIf
WEnd
While 1
enterGame()
$repair=checkRepair()
If $repair=1 Then
repair()
ElseIf $repair=0 Then
;turnOffQuest()
startGold()
quitGame()
EndIf
WEnd
Func leaveChat()
ControlClick ($HWnD, '','', "left", 1, 37, 614)
Sleep(100)
ControlClick ($HWnD, '','', "left", 1, 103,672)
Sleep(100)
EndFunc
Func logging()
While 1
$logged=login()
If $logged=1 Then
return 1
ElseIf $logged=0 Then
Sleep(30000)
EndIf
WEnd
EndFunc
Func checkMonster()
$coord= PixelSearch(67,0,1024,644,0xF90000,15)
If IsArray($coord)=True Then
If $killMonsters=1 Then
$a=0
ControlSend($HWnD, '','',$defButton)
Sleep(200)
Do
ControlClick ($HWnD, '','', $attackButton, 1, $coord[0], $coord[1])
Sleep($attackDelay)
$a=$a+1
Until $a=$numberOfAttacks
ElseIf $killMonsters=0 Then
ControlSend($HWnD, '','',$defButton)
Sleep(200)
EndIf
EndIf
EndFunc
Func checkRepair()
$repairYellowColor= PixelGetColor(736,24)
if $repairYellowColor=0xFFEF00 OR $repairYellowColor=0xE10000 Then
return 1
Else
return 0
EndIf
EndFunc
Func checkItems()
WinActivate("Diablo III")
Sleep(100)
checkItemsSet()
checkItemsLegs()
checkItemsRare()
EndFunc
Func checkAndTakeItem($coordX, $coordY)
ControlClick ($HWnD, '','', "left", 1, $coordX, $coordY)
EndFunc
Func checkItemsRare()
$coord= PixelSearch(55,0,1024,690,0xFFFF00,5)
If IsArray($coord)=True Then
$i=0
Do
$coords2=PixelGetColor($coord[0]+10+$i,$coord[1]+5)
If $coords2=0xFFFF00 Then
checkAndTakeItem($coord[0], $coord[1])
$haveRare=1
Sleep(4500) ; Time to run
ExitLoop
Else
$haveRare=0
EndIf
$i=$i+1
Until $i=20
EndIf
EndFunc
Func checkItemsLegs()
$coord= PixelSearch(55,0,1920,640,0x9D5327,4)
If IsArray($coord)=True Then
checkAndTakeItem($coord[0], $coord[1])
Sleep(4500)
EndIf
EndFunc
Func checkItemsSet()
$coord= PixelSearch(0,0,1920,900,0x00FF00,5)
If IsArray($coord)=True Then
checkAndTakeItem($coord[0], $coord[1])
Sleep(4500)
EndIf
EndFunc
Func turnOffQuest()
ControlClick ($HWnD, '','', "left", 1, 1877, 377)
Sleep(100)
EndFunc
Func enterGame()
$succ=0
$x=0
$y=0
WinActivate("Diablo III")
Sleep(200)
$a=0
Do
$res= _ImageSearch("D3Images\ResumeGame1024x768.JPG",0,$x,$y,110)
Sleep(50)
If $res = 1 Then
ControlClick ($HWnD, '','', "left", 1, $x, $y)
Sleep(100)
$succ=1
ExitLoop
Else
ControlSend($HWnD, '','',"{ESC}")
Sleep(1000)
EndIf
$a=$a+1
Until $a=30
If $succ=0 Then
KillProc("Diablo III.exe")
Sleep(100)
Exit 0
EndIf
$x=0
$y=0
$a=0
$succ=0
Sleep(500)
Do
$res=_ImageSearch("D3Images\Tristam1024x768.JPG",0,$x,$y,100)
Sleep(50)
If $res = 1 Then
$succ=1
ExitLoop
Else
Sleep(200)
EndIf
$a=$a+1
Until $a=50
If $succ=0 Then
KillProc("Diablo III.exe")
Sleep(100)
Exit 0
EndIf
Sleep(3000)
EndFunc
Func repair()
WinActivate("Diablo III")
Sleep(200)
$x=(1400/1920)*1024
$y=(80/1080)*768
ControlClick ($HWnD, '','', "left", 1, $x, $y)
Sleep(3500)
$x=(950/1920)*1024
$y=(390/1080)*768
MouseMove($x,$y,0)
Sleep(100)
MouseClick("left")
Sleep(1500)
$x=(512/1920)*1024
$y=(450/1080)*768
ControlClick ($HWnD, '','', "left", 1, 363,339)
Sleep(100)
$x=(261/1920)*1024
$y=(589/1080)*768
ControlClick ($HWnD, '','', "left", 1, 190,422)
Sleep(500)
ControlSend($HWnD, '','',"{ESC}")
Sleep(300)
ControlSend($HWnD, '','',"{ESC}")
Sleep(300)
Sleep(200)
$x=(951/1920)*1024
$y=(579/1080)*768
ControlClick ($HWnD, '','', "left", 1, $x, $y)
Sleep(6000)
EndFunc
Func preBuff()
$preBuffSkill1=IniRead("Options.ini","TownPreBuff","PrebuffSkill1","")
$preBuffSkill2=IniRead("Options.ini","TownPreBuff","PrebuffSkill2","")
$preBuffSkill3=IniRead("Options.ini","TownPreBuff","PrebuffSkill3","")
$preBuffDelay=IniRead("Options.ini","TownPreBuff","DelayBetweenPrebuffs","")
If $preBuffSkill1 <> 0 Then
ControlSend($HWnD, '','',$preBuffSkill1)
Sleep($preBuffDelay)
EndIf
If $preBuffSkill2 <> 0 Then
ControlSend($HWnD, '','',$preBuffSkill2)
Sleep($preBuffDelay)
EndIf
If $preBuffSkill3 <> 0 Then
ControlSend($HWnD, '','',$preBuffSkill3)
Sleep($preBuffDelay)
EndIf
EndFunc
Func goWP()
$x=0
$y=0
$a=0
preBuff()
Sleep(200)
ControlClick ($HWnD, '','', "left", 1, 531,509)
Sleep(2000)
Do
$res=_ImageSearch("D3Images\WP1024x768.JPG",0,$x,$y,100)
If $res=1 Then
WinActivate("Diablo III")
Sleep(200)
MouseMove($x,$y,0)
Sleep(100)
MouseClick("left")
Sleep(2000)
MouseMove(691,767,0)
Sleep(100)
ControlClick ($HWnD, '','', "left", 1, 170,350)
Sleep(3000)
return 1
Else
ControlClick ($HWnD, '','', "left", 1, 508,463)
Sleep(1500)
EndIf
Until $a=5
return 0
EndFunc
Func areWeInRoyalCrypts()
$a=0
$x=0
$y=0
Do
$res=_ImageSearch("D3Images\RoyalCryptsWP1024x768.JPG",0,$x,$y,120)
If $res=1 Then
return 1
EndIf
$a=$a+1
Until $a=20
return 0
EndFunc
Func move($x,$y)
MouseMove($x,$y,0)
Sleep(20)
Send("n")
Sleep(20)
EndFunc
Func startGold()
$WPSucc=0
$WPSucc=goWP()
If $WPSucc=0 Then
quitGame()
return
EndIf
$RCSucc=0
$RCSucc=areWeInRoyalCrypts()
If $RCSucc=0 Then
quitGame()
return
EndIf
Sleep(1000)
move(83,53)
Sleep(10)
Send("n")
Sleep(10)
MouseMove(673,767,0)
Sleep(4500)
ControlClick($HWnD, '','', "right", 1, 309,332)
Sleep(500)
ControlClick($HWnD, '','', "right", 1, 534,245)
Sleep(500)
ControlClick($HWnD, '','', "right", 1, 736,622)
Sleep(500)
move(992,665)
MouseMove(673,767,0)
Sleep(2300)
If $checkMonsters=1 Then
checkMonster()
EndIf
Sleep(100)
ControlClick($HWnD, '','', "right", 1, 682,310)
Sleep(750)
checkItems()
Sleep(500)
move(946,419)
MouseMove(673,767,0)
Sleep(2100)
ControlClick($HWnD, '','', "right", 1, 538,293)
Sleep(700)
checkItems()
Sleep(100)
move(833,260)
MouseMove(673,767,0)
Sleep(2400)
move(738,117)
MouseMove(673,767,0)
Sleep(3000)
ControlClick($HWnD, '','', "right", 1, 311,461)
Sleep(700)
If $checkMonsters=1 Then
checkMonster()
EndIf
Sleep(700)
checkItems()
Sleep(100)
openDoor() ; Opens the door
Sleep(400)
If $checkMonsters=1 Then
checkMonster()
EndIf
Sleep(100)
ControlClick($HWnD, '','', "right", 1, 608,241)
Sleep(500)
MouseClick("left", 625,278, 1,0)
Sleep(10)
MouseMove(673,767,0)
Sleep(2300)
ControlClick($HWnD, '','', "right", 1, 779,87)
Sleep(500)
ControlClick($HWnD, '','', "right", 1, 937,165)
Sleep(900)
checkItems()
Sleep(100)
move(990,40)
MouseMove(673,767,0)
Sleep(3800)
checkItems()
Sleep(100)
move(441,198)
MouseMove(673,767,0)
Sleep(1400)
ControlClick ($HWnD, '','', "right", 1, 231,231)
Sleep(500)
ControlClick ($HWnD, '','', "right", 1, 598,201)
Sleep(500)
ControlClick ($HWnD, '','', "right", 1, 401,135)
Sleep(1100)
checkItems()
Sleep(100)
move(518,142)
MouseMove(673,767,0)
Sleep(2200)
move(245,14)
MouseMove(673,767,0)
Sleep(4800)
ControlClick ($HWnD, '','', "right", 1, 287,343)
Sleep(500)
ControlClick ($HWnD, '','', "right", 1, 504,237)
Sleep(500)
ControlClick ($HWnD, '','', "right", 1, 755,551)
Sleep(1000)
checkItems()
Sleep(100)
move(755,551)
MouseMove(673,767,0)
Sleep(2300)
If $checkMonsters=1 Then
checkMonster()
EndIf
Sleep(300)
ControlClick ($HWnD, '','', "right", 1, 859,507)
Sleep(1300)
checkItems()
Sleep(200)
move(992,559)
MouseMove(673,767,0)
Sleep(2300)
ControlClick ($HWnD, '','', "right", 1, 750,208)
Sleep(500)
move(906,180)
MouseMove(673,767,0)
Sleep(2300)
ControlClick ($HWnD, '','', "right", 1, 651,316)
Sleep(500)
ControlClick ($HWnD, '','', "right", 1, 340,583)
Sleep(500)
ControlClick ($HWnD, '','', "right", 1, 670,651)
Sleep(1400)
checkItems()
Sleep(100)
move(983,513)
MouseMove(673,767,0)
Sleep(2800)
move(678,255)
MouseMove(673,767,0)
Sleep(2300)
ControlClick ($HWnD, '','', "right", 1, 561,165)
Sleep(500)
ControlClick ($HWnD, '','', "right", 1, 703,431)
Sleep(500)
ControlClick ($HWnD, '','', "right", 1, 904,249)
Sleep(2000)
checkItems()
Sleep(300)
move(356,663)
MouseMove(673,767,0)
Sleep(2300)
ControlClick ($HWnD, '','', "right", 1, 840,492)
Sleep(500)
ControlClick ($HWnD, '','', "right", 1, 464,612)
Sleep(500)
move(657,671)
MouseMove(673,767,0)
Sleep(2300)
ControlClick ($HWnD, '','', "right", 1, 595,500)
Sleep(500)
checkItems()
Sleep(200)
move(296,661)
MouseMove(673,767,0)
Sleep(2300)
ControlClick ($HWnD, '','', "right", 1, 308,417)
Sleep(500)
move(48,676)
MouseMove(673,767,0)
Sleep(2800)
ControlClick ($HWnD, '','', "right", 1, 329,252)
Sleep(500)
ControlClick ($HWnD, '','', "right", 1, 308,462)
Sleep(1000)
checkItems()
Sleep(100)
move(879,277)
MouseMove(673,767,0)
Sleep(2300)
ControlClick ($HWnD, '','', "right", 1, 519,584)
Sleep(500)
ControlClick ($HWnD, '','', "right", 1, 820,438)
Sleep(500)
If $checkMonsters=1 Then
checkMonster()
EndIf
Sleep(700)
checkItems()
Sleep(100)
move(912,665)
MouseMove(673,767,0)
Sleep(2800)
ControlClick ($HWnD, '','', "right", 1, 569,579)
Sleep(700)
If $checkMonsters=1 Then
checkMonster()
EndIf
Sleep(200)
checkItems()
Sleep(100)
move(938,618)
MouseMove(673,767,0)
Sleep(2300)
move(678,509)
MouseMove(673,767,0)
Sleep(2000)
If $checkMonsters=1 Then
checkMonster()
EndIf
Sleep(100)
ControlClick ($HWnD, '','', "right", 1, 392,434)
Sleep(500)
ControlClick ($HWnD, '','', "right", 1, 624,257)
Sleep(1200)
If $checkMonsters=1 Then
checkMonster()
EndIf
Sleep(200)
checkItems()
Sleep(100)
ControlSend($HWnD, '','',"{ESC}")
EndFunc
Func openDoor()
WinActivate("Diablo III")
Sleep(200)
MouseMove(530,325,0)
Sleep(100)
MouseClick("left")
Sleep(300)
MouseMove(673,767,0)
EndFunc
Func checkChest()
$a=0
$x=0
$y=0
Do
$res= _ImageSearch("D3Images\ChestLow.JPG",0,$x,$y,95)
If $res = 1 Then
WinActivate("Diablo III")
Sleep(200)
MouseMove($x,$y,0)
Sleep(100)
MouseClick("left")
Sleep(3000)
ExitLoop
EndIf
$a=$a+1
Until $a=25
checkItems()
EndFunc
Func quitGame()
$x=0
$y=0
$succ=0
$a=0
WinActivate("Diablo III")
Sleep(300)
Do
$res= _ImageSearch("D3Images\LeaveGame1024x768.JPG",0,$x,$y,100)
Sleep(50)
If $res = 1 Then
ControlClick ($HWnD, '','', "left", 1, $x, $y)
Sleep(100)
$succ=1
ExitLoop
Else
ControlSend($HWnD, '','',"{ESC}")
Sleep(1000)
EndIf
$a=$a+1
Until $a=10
If $succ=0 Then
KillProc("Diablo III.exe")
Sleep(100)
Exit 0
EndIf
Sleep(15000)
EndFunc
Func converCoords($x,$y)
$a=1920
$b=1080
$ret=_ConvertCoords( $x, $y, $a, $b, $c = @DesktopWidth, $d = @DesktopHeight )
return $ret
EndFunc
; converts coords (x,y) in (a,b ) screen resolution to (c,d) screen resolution
Func _ConvertCoords( $x, $y, $a, $b, $c = @DesktopWidth, $d = @DesktopHeight )
Local $ret[2] = [( $c * $x ) / $a, ( $d * $y ) / $b]
Return $ret
EndFunc
Func TogglePause()
$Paused = NOT $Paused
While $Paused
sleep(100)
WEnd
EndFunc
Func KillProc($name)
$sPID=$name
$sPID = ProcessExists($sPID)
;If Not $sPID Then Return SetError(1, 0, 0)
Run(@ComSpec & " /c taskkill /F /PID " & $sPID & " /T", @SystemDir, @SW_HIDE)
EndFunc
Func Terminate()
Exit 0
EndFunc ;==>Terminate