;*******************************************************
;My Custom version of Account Refresher.AU3 for diablo 2
;*******************************************************
; Added ToolBox line to reference current account
; Added ToolBox line to reference current char slot
; Expanded error Messages, so they are more specific
;```````
; Not supported any more by Blizzard :/
;```````
; Allow MPQ files, make each account choose a different
; CD key every time it switches accounts.
;*******************************************************
Opt("PixelCoordMode", 2)
Opt("MouseCoordMode", 2)
Opt("SendKeyDelay", 175)
Opt("WinTitleMatchMode", 3)
Global $Xclix = 0, $Yclix = 0, $A, $P, $K, $UseMPQFiles, $UsingKey
HotKeySet("{ESC}", "_Exit")
Global $TitleScreen[5] ;Declare the value
$TitleScreen[0] = 3319931069 ;The resulting checksum
$TitleScreen[1] = 80 ;Upper left X
$TitleScreen[2] = 400 ;Upper left Y
$TitleScreen[3] = 85 ;Lower right X
$TitleScreen[4] = 405 ;Lower right Y
Global $LoginScreen[5]
$LoginScreen[0] = 1831881397
$LoginScreen[1] = 360
$LoginScreen[2] = 250
$LoginScreen[3] = 370
$LoginScreen[4] = 255
Global $CharacterSelect[5]
$CharacterSelect[0] = 2362581377
$CharacterSelect[1] = 107
$CharacterSelect[2] = 177
$CharacterSelect[3] = 117
$CharacterSelect[4] = 178
Global $Lobby[5]
$Lobby[0] = 1292465505
$Lobby[1] = 400
$Lobby[2] = 450
$Lobby[3] = 410
$Lobby[4] = 460
$UseMPQFiles = IniRead(@ScriptDir & "\Config.ini", "Settings", "UseMPQFiles", "")
$D2PathName = IniRead(@ScriptDir & "\Config.ini", "Settings", "D2PathName", "")
$D2WinName = IniRead(@ScriptDir & "\Config.ini", "Settings", "D2WinName", "")
$NumberofAccounts = IniRead(@ScriptDir & "\Config.ini", "Settings", "NumberofAccounts", 1)
$NumberofCDKeys = IniRead(@ScriptDir & "\Config.ini", "Settings", "NumberofKeys", 1)
;Delays
$MenuMouseSpeed = 20
$WaitDelayinSeconds = IniRead(@ScriptDir & "\Config.ini", "Delays", "WaitDelayinSeconds", "30") * 1000
ToolTip("Nate's Account Refresher" & @CRLF & "Press ESC to Exit", 5, 5)
For $i = 1 To $NumberofAccounts
$A = IniRead(@ScriptDir & "\Config.ini", "Accounts", "Account" & $i, "")
$P = IniRead(@ScriptDir & "\Config.ini", "Accounts", "Password" & $i, "")
If $A = "" or $P = "" Then
MsgBox(0, "Error", "Account or Password is empty")
Exit
EndIf
If Load($A, $P) = 0 Then
MsgBox(0, "Error", "An unknown error occurred well executing Load($A, $P).")
Exit
EndIf
Next
MsgBox(0, "Complete", "Accounts have been Refreshed!")
Func Load($A, $P)
If $UseMPQFiles = 1 Then
$RandomKeySet = GetRandomKey()
$UsingKey = IniRead(@ScriptDir & "\Config.ini", "Keys", "Set" & $RandomKeySet, "")
$Flags = " -w -skiptobnet -ns -mpq=" & $UsingKey
Else
$UsingKey = "default"
$Flags = " -w -skiptobnet -ns"
EndIf
$Flags = " -w -skiptobnet -ns "
Run($D2PathName & $Flags)
WinActivate($D2WinName)
WinWaitActive($D2WinName)
Sleep(1000)
WinMove($D2WinName, "", 0, -70)
MouseClick("Left", 100, 100, 1, $MenuMouseSpeed)
If ScreenWait("TitleScreen", 15000) = 0 Then Return 0
MouseClick("Left", 394, 353, 1, $MenuMouseSpeed)
If ScreenWait("LoginScreen", 20000) = 0 Then Return 0
MouseClickDrag("Left", 477, 336, 300, 336, $MenuMouseSpeed)
Sleep(700)
Send($A)
Sleep(700)
Send("{TAB}")
Sleep(700)
Send($P)
Sleep(700)
MouseClick("Left", 395, 470, 1, $MenuMouseSpeed)
If ScreenWait("CharacterSelect", 20000) = 0 Then Return 0
If AccountLoop() = 0 Then Return 0
Opt("MouseCoordMode", 1)
MouseClick("Left", 98, 513, 1, $MenuMouseSpeed) ;Exit to Main Menu
Sleep(700)
MouseClick("Left", 400, 510, 1, $MenuMouseSpeed) ;Exit D2
Opt("MouseCoordMode", 2)
Sleep(2000)
Return 1
EndFunc
Func ScreenWait($ScreenName, $Timeout)
Local $Checksum[5]
Local $Sum
$Checksum = Eval($ScreenName)
$Time = TimerInit()
Do
Sleep(200)
$Sum = PixelChecksum($Checksum[1], $Checksum[2], $Checksum[3], $Checksum[4])
If $Sum = $Checksum[0] Then Return 1
Until TimerDiff($Time) > $Timeout
Return 0
EndFunc
Func GetRandomKey()
$KeyNumber = Random(1, $NumberofCDKeys, 1)
return $KeyNumber
EndFunc
Func AccountLoop()
For $o = 1 To 8
CharactorSelect($o)
MouseClick("Left", $Xclix, $Yclix, 1, $MenuMouseSpeed) ;Charactor Select
Sleep(700)
MouseClick("Left", 692, 557, 1, $MenuMouseSpeed) ;OK button on Charactor Select Menu
If ScreenWait("Lobby", 20000) = 0 Then Return 0
Sleep(1000)
WinSetState($D2WinName, "", @SW_MINIMIZE)
ToolTip("")
For $time = ($WaitDelayinSeconds/1000) To 1 Step -1
ToolTip("Nate's Account Refresher" & @CRLF & "CDKey Set: " & $UsingKey & @CRLF & "Account: " & $A & @CRLF & "Character #" & $o & @CRLF & "Waiting " & $time & " seconds" & @CRLF & "Press ESC to Exit", 5, 5)
Sleep(1000)
Next
ToolTip("")
ToolTip("Nate's Account Refresher" & @CRLF & "Press ESC to Exit", 5, 5)
WinSetState($D2WinName, "", @SW_RESTORE)
Sleep(1000)
Opt("MouseCoordMode", 1)
MouseClick("Left", 737, 438, 1, $MenuMouseSpeed) ;Ouit back to Charactor Select
Opt("MouseCoordMode", 2)
If ScreenWait("CharacterSelect", 20000) = 0 Then Return 0
Next
Return 1
EndFunc
Func CharactorSelect($CharSlot)
$Xclix = 0
$Yclix = 0
If $CharSlot = 1 Then
$Xclix = 180
$Yclix = 130
ElseIf $CharSlot = 2 Then
$Xclix = 450
$Yclix = 130
ElseIf $CharSlot = 3 Then
$Xclix = 180
$Yclix = 225
ElseIf $CharSlot = 4 Then
$Xclix = 450
$Yclix = 225
ElseIf $CharSlot = 5 Then
$Xclix = 171
$Yclix = 318
ElseIf $CharSlot = 6 Then
$Xclix = 447
$Yclix = 315
ElseIf $CharSlot = 7 Then
$Xclix = 180
$Yclix = 410
ElseIf $CharSlot = 8 Then
$Xclix = 458
$Yclix = 406
Else
Exit(0)
EndIf
EndFunc
Func _Exit()
Exit
EndFunc
Comments
0 B
|👍
/👎
0 B
|👍
/👎