killerbng icon

Custom D2 Account Refresher

killerbng | PRO | 06/10/15 05:25:16 PM UTC | 0 ⭐ | 12958 👁️ | Never ⏰ | []
AutoIt |

5.77 KB

|

None

|

0 👍

/

0 👎

;*******************************************************
;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

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎