Well, I see someone beat me to the punch on some AutoIt code, but here's what I got working for my setup. I use two separate computers so it's a little different. If nothing else, it's something for others to work off!
Booster (Run Windowed/Fullscreen @1920x1200):
Code:
Global $Paused
HotKeySet("{PAUSE}", "TogglePause")
HotKeySet("+{END}", "Terminate")
WinActivate("Diablo III")
Sleep(20)
While (True)
$_waiting = True
While ($_waiting) ;Wait for Party Request box
$_inviteCoords = PixelSearch(1695, 1015, 1725, 1045, 3798272)
If @error <> 1 Then
$_waiting = False
EndIf
WEnd
MouseClick("left", 1706, 1033, 1, 0) ;Click Accept on Party Request
Sleep(5000) ;Wait 5 seconds
Send("{ESC}") ;Open Game Menu
Sleep(500)
MouseClick("Left", 965, 645, 1, 0) ;Click Leave Game
Sleep(100)
MouseClick("Left", 840, 700, 1, 0) ;Click Accept dialog for leaving party/game
Sleep(5000)
MouseClick("Left", 260, 460, 1, 5) ;Resume Game
WEnd
Func TogglePause()
$Paused = Not $Paused
While $Paused
Sleep(100)
WEnd
EndFunc ;==>TogglePause
Func Terminate()
Exit 0
EndFunc ;==>Terminate
Leecher (Run Windowed/Fullscreen @1600x900):
Code:
Global $Paused
HotKeySet("{PAUSE}", "TogglePause")
HotKeySet("+{END}", "Terminate")
WinActivate("Diablo III") ;Bring Diablo to foreground
Sleep(20) ;Slight delay to allow Diablo to maximize
While (True)
$GameTest = PixelGetColor(376, 853) ;Check to see if currently in game (Checks for 'Gargoyle' graphic near health bubble)
If $GameTest = "7761251" Then
$_errorWait = True
While ($_errorWait) ;Wait for Party Error dialog to appear
For $i = 1 To 40 Step 1
$_errorCoords = PixelSearch(725, 500, 870, 540, 1048832)
If @error <> 1 Then
MouseClick("left", $_errorCoords[0], $_errorCoords[1], 1, 5) ;Click OK on Party Error dialog
$_errorWait = False
ElseIf $i = 40 Then ;If dialog does not appear in 20 seconds, continue
$_errorWait = False
Else
Sleep(500)
EndIf
Next
WEnd
Sleep(100) ;Slight pause for Party Error dialog to disappear
$_adriaCoords = PixelSearch(240, 50, 400, 100, 3810590, 15) ;Find Adria by pixel color match
MouseClick("left", $_adriaCoords[0], $_adriaCoords[1], 2, 5) ;Click Adria
Sleep(5000) ;Wait for character to finish walking to Adria
Send("{SPACE}") ;Cancel Dialog 1
Sleep(100) ;Slight pause for next dialog to load
Send("{SPACE}") ;Cancel Dialog 2
Sleep(100) ;Slight pause for next dialog to load
Send("{SPACE}") ;Cancel Dialog 3
Sleep(100) ;Slight pause for next dialog to load
Send("{SPACE}") ;Extra Dialog cancel
Sleep(1000) ;Wait 1 second to confirm XP has been awarded and allow Game Creator to finish loading game
Send("O") ;Open Friends window
Sleep(500) ;Slight pause for Friends window to open
MouseClick("right", 1300, 300, 1, 5) ;Right click top Friend
Sleep(500) ;Slight pause for context dialog to load
MouseClick("left", 1350, 420, 1, 5) ;Click Join
Sleep(500) ;Slight pause for Join to process
Send("O") ;Close Friends Window
$_waiting = True
While ($_waiting) ;Wait for Invite to appear
$_inviteCoords = PixelSearch(1400, 750, 1460, 790, 2930176)
If @error <> 1 Then
$_waiting = False
EndIf
WEnd
MouseClick("left", $_inviteCoords[0], $_inviteCoords[1], 1, 5) ;Click invite "Yes"
Sleep(100)
MouseClick("Left", 710, 528, 1, 5) ;Click Accept dialog for leaving current party
Sleep(1000)
Send("{ESC}") ;Open Game Menu
Sleep(2000)
MouseClick("Left", 799, 483, 1, 0) ;Click Leave Game
Sleep(500)
MouseClick("Left", 710, 528, 1, 0) ;Click Accept dialog for leaving game/party
Sleep(3000)
$_checksum = PixelChecksum(132, 334, 274, 365)
While $_checksum = PixelChecksum(132, 334, 274, 365) ;Compare Resume Game button to wait until it is available to be clicked
Sleep(100)
WEnd
MouseClick("Left", 204, 362, 1, 5) ;Click Resume Game
Sleep(5000) ;Wait for game to load
Else
Sleep(1000) ;If not in game, wait 1 second
EndIf ;End GameTest
WEnd
Func TogglePause()
$Paused = Not $Paused
While $Paused
Sleep(100)
WEnd
EndFunc ;==>TogglePause
Func Terminate()
Exit 0
EndFunc ;==>Terminate