Advertisement
killerbng

Custom D2 Account Refresher

Jun 10th, 2015
314
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
AutoIt 5.77 KB | None | 0 0
  1. ;*******************************************************
  2. ;My Custom version of Account Refresher.AU3 for diablo 2
  3. ;*******************************************************
  4. ; Added ToolBox line to reference current account
  5. ; Added ToolBox line to reference current char slot
  6. ; Expanded error Messages, so they are more specific
  7. ;```````
  8. ; Not supported any more by Blizzard :/
  9. ;```````
  10. ; Allow MPQ files, make each account choose a different
  11. ; CD key every time it switches accounts.
  12. ;*******************************************************
  13. Opt("PixelCoordMode", 2)
  14. Opt("MouseCoordMode", 2)
  15. Opt("SendKeyDelay", 175)
  16. Opt("WinTitleMatchMode", 3)
  17. Global $Xclix = 0, $Yclix = 0, $A, $P, $K, $UseMPQFiles, $UsingKey
  18. HotKeySet("{ESC}", "_Exit")
  19.  
  20. Global $TitleScreen[5]                  ;Declare the value
  21. $TitleScreen[0] = 3319931069            ;The resulting checksum
  22. $TitleScreen[1] = 80                    ;Upper left X
  23. $TitleScreen[2] = 400                   ;Upper left Y
  24. $TitleScreen[3] = 85                    ;Lower right X
  25. $TitleScreen[4] = 405                   ;Lower right Y
  26.  
  27. Global $LoginScreen[5]
  28. $LoginScreen[0] = 1831881397
  29. $LoginScreen[1] = 360
  30. $LoginScreen[2] = 250
  31. $LoginScreen[3] = 370
  32. $LoginScreen[4] = 255
  33.  
  34. Global $CharacterSelect[5]
  35. $CharacterSelect[0] = 2362581377
  36. $CharacterSelect[1] = 107
  37. $CharacterSelect[2] = 177
  38. $CharacterSelect[3] = 117
  39. $CharacterSelect[4] = 178
  40.  
  41. Global $Lobby[5]
  42. $Lobby[0] = 1292465505
  43. $Lobby[1] = 400
  44. $Lobby[2] = 450
  45. $Lobby[3] = 410
  46. $Lobby[4] = 460
  47.  
  48. $UseMPQFiles = IniRead(@ScriptDir & "\Config.ini", "Settings", "UseMPQFiles", "")
  49. $D2PathName = IniRead(@ScriptDir & "\Config.ini", "Settings", "D2PathName", "")
  50. $D2WinName = IniRead(@ScriptDir & "\Config.ini", "Settings", "D2WinName", "")
  51. $NumberofAccounts = IniRead(@ScriptDir & "\Config.ini", "Settings", "NumberofAccounts", 1)
  52. $NumberofCDKeys = IniRead(@ScriptDir & "\Config.ini", "Settings", "NumberofKeys", 1)
  53.  
  54. ;Delays
  55. $MenuMouseSpeed = 20
  56. $WaitDelayinSeconds = IniRead(@ScriptDir & "\Config.ini", "Delays", "WaitDelayinSeconds", "30") * 1000
  57.  
  58. ToolTip("Nate's Account Refresher" & @CRLF & "Press ESC to Exit", 5, 5)
  59.  
  60. For $i = 1 To $NumberofAccounts
  61.     $A = IniRead(@ScriptDir & "\Config.ini", "Accounts", "Account" & $i, "")
  62.     $P = IniRead(@ScriptDir & "\Config.ini", "Accounts", "Password" & $i, "")
  63.     If $A = "" or $P = "" Then
  64.         MsgBox(0, "Error", "Account or Password is empty")
  65.         Exit
  66.     EndIf
  67.     If Load($A, $P) = 0 Then
  68.         MsgBox(0, "Error", "An unknown error occurred well executing Load($A, $P).")
  69.         Exit
  70.     EndIf
  71. Next
  72.  
  73. MsgBox(0, "Complete", "Accounts have been Refreshed!")
  74.  
  75. Func Load($A, $P)
  76.     If $UseMPQFiles = 1 Then
  77.         $RandomKeySet = GetRandomKey()
  78.         $UsingKey = IniRead(@ScriptDir & "\Config.ini", "Keys", "Set" & $RandomKeySet, "")
  79.         $Flags = " -w -skiptobnet -ns -mpq=" & $UsingKey
  80.     Else
  81.         $UsingKey = "default"
  82.         $Flags = " -w -skiptobnet -ns"
  83.     EndIf
  84.     $Flags = " -w -skiptobnet -ns "
  85.     Run($D2PathName & $Flags)
  86.     WinActivate($D2WinName)
  87.     WinWaitActive($D2WinName)
  88.     Sleep(1000)
  89.     WinMove($D2WinName, "", 0, -70)
  90.     MouseClick("Left", 100, 100, 1, $MenuMouseSpeed)
  91.     If ScreenWait("TitleScreen", 15000) = 0 Then Return 0
  92.     MouseClick("Left", 394, 353, 1, $MenuMouseSpeed)
  93.     If ScreenWait("LoginScreen", 20000) = 0 Then Return 0
  94.     MouseClickDrag("Left", 477, 336, 300, 336, $MenuMouseSpeed)
  95.     Sleep(700)
  96.     Send($A)
  97.     Sleep(700)
  98.     Send("{TAB}")
  99.     Sleep(700)
  100.     Send($P)
  101.     Sleep(700)
  102.     MouseClick("Left", 395, 470, 1, $MenuMouseSpeed)
  103.     If ScreenWait("CharacterSelect", 20000) = 0 Then Return 0
  104.     If AccountLoop() = 0 Then Return 0
  105.     Opt("MouseCoordMode", 1)
  106.     MouseClick("Left", 98, 513, 1, $MenuMouseSpeed) ;Exit to Main Menu
  107.     Sleep(700)
  108.     MouseClick("Left", 400, 510, 1, $MenuMouseSpeed) ;Exit D2
  109.     Opt("MouseCoordMode", 2)
  110.     Sleep(2000)
  111.     Return 1
  112. EndFunc
  113.    
  114. Func ScreenWait($ScreenName, $Timeout)
  115.     Local $Checksum[5]
  116.     Local $Sum
  117.     $Checksum = Eval($ScreenName)
  118.     $Time = TimerInit()
  119.     Do
  120.         Sleep(200)
  121.         $Sum = PixelChecksum($Checksum[1], $Checksum[2], $Checksum[3], $Checksum[4])
  122.         If $Sum = $Checksum[0] Then Return 1
  123.    Until TimerDiff($Time) > $Timeout
  124.    Return 0
  125. EndFunc
  126.  
  127. Func GetRandomKey()
  128.     $KeyNumber = Random(1, $NumberofCDKeys, 1)
  129.     return $KeyNumber
  130. EndFunc
  131.  
  132. Func AccountLoop()
  133.     For $o = 1 To 8
  134.         CharactorSelect($o)
  135.         MouseClick("Left", $Xclix, $Yclix, 1, $MenuMouseSpeed) ;Charactor Select
  136.         Sleep(700)
  137.         MouseClick("Left", 692, 557, 1, $MenuMouseSpeed) ;OK button on Charactor Select Menu
  138.         If ScreenWait("Lobby", 20000) = 0 Then Return 0
  139.         Sleep(1000)
  140.         WinSetState($D2WinName, "", @SW_MINIMIZE)
  141.         ToolTip("")
  142.         For $time = ($WaitDelayinSeconds/1000) To 1 Step -1
  143.             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)
  144.             Sleep(1000)
  145.         Next
  146.         ToolTip("")
  147.         ToolTip("Nate's Account Refresher" & @CRLF & "Press ESC to Exit", 5, 5)
  148.         WinSetState($D2WinName, "", @SW_RESTORE)
  149.         Sleep(1000)
  150.         Opt("MouseCoordMode", 1)
  151.         MouseClick("Left", 737, 438, 1, $MenuMouseSpeed) ;Ouit back to Charactor Select
  152.         Opt("MouseCoordMode", 2)
  153.         If ScreenWait("CharacterSelect", 20000) = 0 Then Return 0
  154.     Next
  155.     Return 1
  156. EndFunc
  157.  
  158. Func CharactorSelect($CharSlot)
  159.     $Xclix = 0
  160.     $Yclix = 0
  161.     If $CharSlot = 1 Then
  162.         $Xclix = 180
  163.         $Yclix = 130
  164.     ElseIf $CharSlot = 2 Then
  165.         $Xclix = 450
  166.         $Yclix = 130
  167.     ElseIf $CharSlot = 3 Then
  168.         $Xclix = 180
  169.         $Yclix = 225
  170.     ElseIf $CharSlot = 4 Then
  171.         $Xclix = 450
  172.         $Yclix = 225
  173.     ElseIf $CharSlot = 5 Then
  174.         $Xclix = 171
  175.         $Yclix = 318
  176.     ElseIf $CharSlot = 6 Then
  177.         $Xclix = 447
  178.         $Yclix = 315
  179.     ElseIf $CharSlot = 7 Then
  180.         $Xclix = 180
  181.         $Yclix = 410
  182.     ElseIf $CharSlot = 8 Then
  183.         $Xclix = 458
  184.         $Yclix = 406
  185.     Else
  186.         Exit(0)
  187.     EndIf
  188. EndFunc
  189.  
  190. Func _Exit()
  191.     Exit
  192. EndFunc
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement