Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;*******************************************************
- ;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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement