Guest User

farming_sarkoth_dank_cellar_wd_1.3e_Tweaked_by_MisterBob

a guest
Jul 4th, 2012
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
AutoIt 79.75 KB | None | 0 0
  1. #include <WindowsConstants.au3>
  2. #include <Misc.au3>
  3. #include <WinAPI.au3>
  4. #include <StaticConstants.au3>
  5. #include <GuiListBox.au3>
  6. #include <ScrollBarConstants.au3>
  7. #include <Array.au3>
  8. #include <GUIConstantsEx.au3>
  9. #include <File.au3>
  10. #include <ScreenCapture.au3>
  11. #include <String.au3>
  12.  
  13. Initialize()
  14.  
  15. #cs
  16.  
  17.    [Gold/Itemfarming] [AutoIt] Sarkoth Act I Dank Cellar [WD] [Stash, Sell, Repair, +++]
  18.                                     by zEEneXx - Tweaked by MisterBob
  19.                                  
  20.                                   Version: 1.3e +
  21.                                
  22.                                 www.ownedcore.com
  23.                  
  24. #ce
  25.  
  26. ;///////////////////////////////////////--CONFIG--////////////////////////////////////////////////////////////////////////////////////
  27. ;                                                                                                                                   //
  28. ;                                       More Config Under: Randomize()
  29. ;                                       Important                                                                                   //
  30.     ;                                        Delays                                                                                 //
  31.  
  32.     $ComputerLag            = Random(0, 200, 1)                             ;Increases time (ms) before and after casting spells    //
  33.     $MoveDelay              = Random(0, 45, 1)                              ;Increases time (ms) between movements                  //
  34.     $LootDelay              = Random(0, 45, 1)                              ;Increases time (ms) between looting                    //
  35.     $SellDelay              = Random(0, 45, 1)                              ;Increases time (ms) between selling                    //
  36.     $SalvageDelay           = Random(0, 45, 1)                              ;Increases time (ms) between salvaging                  //
  37.     $StashDelay             = Random(0, 45, 1)                              ;Increases time (ms) between stashing                   //
  38.     ;                                        Looting Area                                                                           //
  39.     $LootingArea[0]         = Random(550, 590, 1)                           ;Left   (lower -> bigger)                               //
  40.     $LootingArea[1]         = Random(175, 195, 1)                           ;Top    (lower -> bigger)                               //
  41.     $LootingArea[2]         = Random(1365, 1385, 1)                         ;Right  (higher -> bigger)                              //
  42.     $LootingArea[3]         = Random(710, 730, 1)                           ;Bot    (higher -> bigger)                              //
  43.     ;                                        TimeOuts                                                                               //
  44.     $GameLobbyTimeOut       = Random(23, 26, 1)                             ;Time (s) to wait for entering the gamelobby            //
  45.     $GameplayScreenTimeOut  = Random(12, 15, 1)                             ;Time (s) to wait for entering the gameplay screen      //
  46.     $CellarTimeOut          = Random(7, 10, 1)                              ;Time (s) to wait for entering the cellar               //
  47.     $TownTimeOut            = Random(7, 10, 1)                              ;Time (s) to wait for entering the town                 //
  48.     $MerchantTimeOut        = Random(7, 10, 1)                              ;Time (s) to wait for reaching the merchant             //
  49.     $ArtisanTimeOut         = Random(7, 10, 1)                              ;Time (s) to wait for reaching the artisan              //
  50.     $StashTimeOut           = Random(7, 10, 1)                              ;Time (s) to wait for reaching the stash                //
  51.  
  52. $ReqFiles               = "C:\Users\Bob\Desktop\D3\required files\" ;Location of the required files folder                  //
  53. ;                                                                                                                                   //
  54. ;                                       Functions                                                                                   //
  55. $Repair                 = True                                              ;Orders the bot to repair                               //
  56. $Sell                   = True                                              ;Orders the bot to sell magic items                     //
  57. $Salvage                = False                                             ;Orders the bot to salvage magic items                  //
  58. $KeepHighLevel          = False                                             ;Orders the bot to keep items above $KeepLevel          //
  59. $KeepLevel              = 63                                                ;Possible values: 60, 61, 62, 63                        //
  60. $UseStash               = True                                              ;Orders the bot to stash items                          //
  61. $HighGoldRadius         = False                                             ;Orders the bot to use a shorter gold loot route        //
  62. ;                                                                                                                                   //
  63. ;                                     Miscellaneous                                                                                 //
  64. $Sounds                 = False                                             ;Enable pickup sounds                                   //
  65. $ShowLootArea           = True                                              ;Shows lootarea                                         //
  66. $ShowLog                = True                                              ;Shows log window                                       //
  67. $SaveStats              = True                                              ;Saves statistics per run to a text file                //
  68. $SaveLogsPath           = "C:\Users\Bob\Desktop\D3\required files\"         ;Folder to save the logs and statistics in              //
  69. $InstantLeave           = False                                             ;Leaves the game instead of teleporting to town         //
  70. ;                                                                                                                                   //
  71. ;                                       Relogging                                                                                   //                                 
  72. $UseRelogging           = True                                              ;Orders the bot to relog on disconnect                  //
  73. $Password               = "Fuckyou1337"                                     ;Your password                                          //
  74. ;                                                                                                                                   //
  75. ;                                        Looting                                                                                    //
  76. $LootSets               = True                                              ;Orders the bot to loot set items                       //
  77. $LootLegendaries        = True                                              ;Orders the bot to loot legendary items                 //
  78. $LootRares              = True                                              ;Orders the bot to loot rare items                      //
  79. $LootMagics             = True                                              ;Orders the bot to loot magic items (includes tomes)    //
  80. $LootTomes              = True                                              ;Orders the bot to loot tomes                           //
  81. $LootGems               = True                                              ;Orders the bot to loot gems                            //
  82. $FlawlessOnly           = False                                             ;Orders the bot to loot only flawless gems              //
  83. ;                                                                                                                                   //
  84. $SetLootAmount          = 1                                                 ;Amount of set items to loot                            //
  85. $LegendaryLootAmount    = 1                                                 ;Amount of legendary items to loot                      //
  86. $RareLootAmount         = 2                                                 ;Amount of rare items to loot                           //
  87. $MagicLootAmount        = 4                                                 ;Amount of magic items to loot (including tomes)        //
  88. $TomeLootAmount         = 1                                                 ;Amount of tomes to loot (if $LootMagics = False)       //
  89. $GemLootAmount          = 2                                                 ;Amount of gems to loot                                 //
  90. ;                                                                                                                                   //
  91. ;/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  92.  
  93. ScriptStarted()
  94.  
  95. While 1
  96.    While WinActive('Diablo III')
  97.       Randomize()
  98.  
  99.       Switch ResumeGame()
  100.          Case "LeftGame"
  101.             ExitLoop
  102.          Case "Network connection lost"
  103.             ExitLoop
  104.          Case "Relogged"
  105.             ExitLoop
  106.       EndSwitch
  107.        
  108.       MoveToCellar()
  109.        
  110.       Switch EnterCellar()
  111.          Case "LeftGame"
  112.             ExitLoop
  113.          Case "Network connection lost"
  114.             ExitLoop
  115.          Case "Relogged"
  116.             ExitLoop
  117.       EndSwitch
  118.        
  119.       MoveInCellar()
  120.       UseSkills()
  121.       KillSarkoth()
  122.       LootGold()
  123.        
  124.       Switch LootItems()
  125.          Case "LeftGame"
  126.             ExitLoop
  127.          Case "Network connection lost"
  128.             ExitLoop
  129.          Case "Relogged"
  130.             ExitLoop
  131.       EndSwitch
  132.        
  133.       If $InstantLeave = False Then
  134.          Switch TeleportToTown()
  135.             Case "LeftGame"
  136.                ExitLoop
  137.             Case "Network connection lost"
  138.                ExitLoop
  139.             Case "Relogged"
  140.                ExitLoop
  141.          EndSwitch
  142.       EndIf
  143.        
  144.       LeaveGame()
  145.     WEnd
  146. WEnd
  147.  
  148.  
  149. ;Routine
  150. Func ResumeGame()
  151.    If $UseRelogging = True Then
  152.       $Array = StringSplit($ImageFiles[7][4], "|")
  153.       $File = $Array[1]
  154.       $Accuracy = $Array[2]
  155.  
  156.       $Target = _ImageSearchArea($ReqFiles & "\pics\" & $File, 1, $LoginButtonSearchArea[0], $LoginButtonSearchArea[1], $LoginButtonSearchArea[2], $LoginButtonSearchArea[3], $ISx, $ISy, $Accuracy)
  157.       If $Target = 1 Then
  158.          Relog()
  159.          Return "Relogged"
  160.       EndIf
  161.    EndIf
  162.    
  163.    Switch InGameLobby()
  164.       Case "InGameLobby"
  165.          ToLog("Resuming game...")
  166.          MouseClick('LEFT', $ResumeButton[0], $ResumeButton[1], 1, 2)
  167.       Case "LeftGame"
  168.          Return "LeftGame"
  169.       Case "Relogged"
  170.          Return "Relogged"
  171.    EndSwitch
  172.  
  173.    Switch InGameplayScreen()
  174.       Case "LeftGame"
  175.          Return "LeftGame"
  176.       Case "InGamePlayScreen"
  177.          Return "InGamePlayScreen"
  178.       Case "Network connection lost"
  179.          Return "Network connection lost"
  180.       Case "Relogged"
  181.          Return "Relogged"
  182.    EndSwitch
  183. EndFunc
  184.  
  185. Func MoveToCellar()
  186.    If $StartGold = 0 Then
  187.       Sleep(Random(255, 495, 1))
  188.  
  189.       GetGold()
  190.    EndIf
  191.    
  192.    $Sek = Floor(TimerDiff($RunTimer) / 1000)
  193.    If $Runs > 0 Then
  194.       ToLog("Last run took: " & $Sek & "s")
  195.    EndIf
  196.      
  197.    $RunTimer = TimerInit()
  198.  
  199.    ToLog("Starting run...")
  200.    $Runs += 1
  201.    RefreshStats()
  202.  
  203.    Sleep(Random(255, 295, 1) + $ComputerLag)
  204.  
  205.    ToLog("Moving to cellar - 1")
  206.    Move($MoveToCellar1[0], $MoveToCellar1[1])
  207.    Sleep(Random(1155, 1195, 1) + $MoveDelay)
  208.  
  209.    Send("{4}")
  210.    Sleep(Random(25, 35, 1) + ($ComputerLag / 2))
  211.    
  212.    ToLog("Moving to cellar - 2")
  213.    Move($MoveToCellar2[0], $MoveToCellar2[1])
  214.    Sleep(Random(2035, 2100, 1) + $MoveDelay)
  215.  
  216.    ToLog("Moving to cellar - 3")
  217.    Move($MoveToCellar3[0], $MoveToCellar3[1])
  218.    Sleep(Random(1335, 1565, 1) + $MoveDelay)
  219.  
  220.    Send("{2}")
  221.    Sleep(Random(185, 225, 1) + $ComputerLag)
  222. EndFunc
  223.  
  224. Func EnterCellar()
  225.    MouseMove($CellarLocation[0], $CellarLocation[1], 2)
  226.    Sleep(Random(85, 125, 1) + ($ComputerLag / 2))
  227.  
  228.    For $i = 0 To 2
  229.       $CellarPixel = PixelSearch($CellarSearchArea[0], $CellarSearchArea[1], $CellarSearchArea[2], $CellarSearchArea[3], 0x334FB7, 8)
  230.       If @error Then
  231.          ToLog("Cellar is closed")
  232.          $Closed += 1
  233.          RefreshStats()
  234.          If $InstantLeave = False Then
  235.             Switch TeleportToTown()
  236.                Case "LeftGame"
  237.                   Return "LeftGame"
  238.                Case "Network connection lost"
  239.                   Return "Network connection lost"
  240.                Case "Relogged"
  241.                   Return "Relogged"
  242.             EndSwitch
  243.          EndIf
  244.          LeaveGame()
  245.          Return "LeftGame"
  246.       Else
  247.          ToLog("Entering cellar...")
  248.          MouseClick('LEFT', $CellarLocation[0], $CellarLocation[1], 1, 2)
  249.          Switch InCellar()
  250.             Case "InCellar"
  251.                Return "InCellar"
  252.             Case "LeftGame"
  253.                Return "LeftGame"
  254.             Case "Network connection lost"
  255.                Return "Network connection lost"
  256.             Case "Relogged"
  257.                Return "Relogged"
  258.          EndSwitch
  259.       EndIf
  260.       Sleep(Random(20, 30, 1))
  261.    Next
  262. EndFunc
  263.  
  264. Func MoveInCellar()
  265.    
  266.    ToLog("Moving in cellar - 1")
  267.    Move($MoveInCellar1[0], $MoveInCellar1[1])
  268.    Sleep(Random(1935, 2065, 1) + $MoveDelay)
  269.  
  270.    ToLog("Moving in cellar - 2")
  271.    Move($MoveInCellar2[0], $MoveInCellar2[1])
  272.    Sleep(Random(935, 1065, 1) + $MoveDelay)
  273.  
  274.    MouseMove($MonsterLocation[0], $MonsterLocation[1], 2)
  275.    Sleep(Random(45, 55, 1) + ($ComputerLag / 2))
  276. EndFunc
  277.  
  278. Func UseSkills()
  279.    ToLog("Using skills...")
  280.    Send("{1}")
  281.    Sleep(Random(285, 335, 1) + $ComputerLag)
  282.  
  283.    Send("{3}")
  284.    Sleep(Random(355, 435, 1) + $ComputerLag)
  285.  
  286.    MouseClick('RIGHT')
  287.    Sleep(Random(135, 165, 1) + $ComputerLag)
  288. EndFunc
  289.  
  290. Func KillSarkoth()
  291.    ToLog("Killing Sarkoth...")
  292.    While 1
  293.       $MonsterBar = PixelSearch($MonsterSearchArea[0], $MonsterSearchArea[1], $MonsterSearchArea[2], $MonsterSearchArea[3], 0xEE0000, 10)
  294.       If @error Then
  295.          Attack($MonsterLocation[0], $MonsterLocation[1])
  296.          Sleep(Random(485, 535, 1))
  297.  
  298.            
  299.          $MonsterBar = PixelSearch($MonsterSearchArea[0], $MonsterSearchArea[1], $MonsterSearchArea[2], $MonsterSearchArea[3], 0xEE0000, 10)
  300.          If @error Then
  301.             ExitLoop
  302.          EndIf
  303.       EndIf
  304.        
  305.       Attack($MonsterBar[0], $MonsterBar[1])
  306.       Sleep(Random(85, 125, 1))
  307.  
  308.    WEnd
  309.    ToLog("All monsters are dead")
  310.  
  311.    Send("{4}")
  312.    Sleep(Random(25, 35, 1) + ($ComputerLag / 2))
  313. EndFunc
  314.  
  315. Func LootGold()
  316.    If $ShowLootArea = True Then
  317.       DrawLootArea()
  318.    EndIf
  319.  
  320.    ToLog("Looting gold...")
  321.    If $HighGoldRadius = False Then
  322.       Move($MoveToGoldLoot1a[0], $MoveToGoldLoot1a[1])
  323.       Sleep(Random(730, 885, 1) + $MoveDelay)
  324.       AttackNearbyMonsters()
  325.        
  326.       Move($MoveToGoldLoot2[0], $MoveToGoldLoot2[1])
  327.       Sleep(Random(325, 500, 1) + $MoveDelay)
  328.       AttackNearbyMonsters()
  329.        
  330.       Move($MoveToGoldLoot3[0], $MoveToGoldLoot3[1])
  331.       Sleep(Random(355, 435, 1) + $MoveDelay)
  332.       AttackNearbyMonsters()
  333.    Else
  334.       Move($MoveToGoldLoot1b[0], $MoveToGoldLoot1b[1])
  335.       Sleep(Random(725, 805, 1) + $MoveDelay)
  336.       AttackNearbyMonsters()
  337.    EndIf
  338.  
  339.    MouseMove(Random(100, 140, 1), Random(100, 140, 1), 2)
  340.    Sleep(Random(45, 55, 1))
  341.  
  342. EndFunc
  343.  
  344. Func LootItems()
  345.    If $LootSets Then
  346.       Send("{ALT}")
  347.       Switch LootSets()
  348.          Case "LeftGame"
  349.             Return "LeftGame"
  350.          Case "Network connection lost"
  351.             Return "Network connection lost"
  352.          Case "Relogged"
  353.             Return "Relogged"
  354.       EndSwitch
  355.    EndIf
  356.  
  357.    If $LootLegendaries Then
  358.       Send("{ALT}")
  359.       Switch LootLegendaries()
  360.          Case "LeftGame"
  361.             Return "LeftGame"
  362.          Case "Network connection lost"
  363.             Return "Network connection lost"
  364.          Case "Relogged"
  365.             Return "Relogged"
  366.       EndSwitch
  367.    EndIf
  368.  
  369.    If $LootRares Then
  370.       Send("{ALT}")
  371.       Switch LootRares()
  372.          Case "LeftGame"
  373.             Return "LeftGame"
  374.          Case "Network connection lost"
  375.             Return "Network connection lost"
  376.          Case "Relogged"
  377.             Return "Relogged"
  378.       EndSwitch
  379.       $RareLootAttempts = 0
  380.    EndIf
  381.  
  382.    If $LootMagics Then
  383.       Send("{ALT}")
  384.       Switch LootMagics()
  385.          Case "LeftGame"
  386.             Return "LeftGame"
  387.          Case "Network connection lost"
  388.             Return "Network connection lost"
  389.          Case "Relogged"
  390.             Return "Relogged"
  391.       EndSwitch
  392.       $MagicLootAttempts = 0
  393.    Else
  394.       If $LootTomes Then
  395.          Send("{ALT}")
  396.          Switch LootTomes()
  397.             Case "LeftGame"
  398.                Return "LeftGame"
  399.             Case "Network connection lost"
  400.                Return "Network connection lost"
  401.             Case "Relogged"
  402.                Return "Relogged"
  403.          EndSwitch
  404.          $TomeLootAttempts = 0
  405.       EndIf
  406.    EndIf
  407.  
  408.    If $LootGems Then
  409.       Send("{ALT}")
  410.       Switch LootGems()
  411.          Case "LeftGame"
  412.             Return "LeftGame"
  413.          Case "Network connection lost"
  414.             Return "Network connection lost"
  415.          Case "Relogged"
  416.             Return "Relogged"
  417.       EndSwitch
  418.       $GemLootAttempts = 0
  419.    EndIf
  420.  
  421.    If $ShowLootArea = True Then
  422.       GUIDelete($LootAreaGUI)
  423.    EndIf
  424.  
  425.    Return "Looted"
  426. EndFunc
  427.  
  428. Func TeleportToTown()
  429.    ToLog("Teleporting to town...")
  430.    Sleep(Random(45, 55, 1) + ($ComputerLag / 3))
  431.    Send("{t}")
  432.    
  433.    If $FullBag = False Then
  434.       If $CellarPixel = 0 Then
  435.          If $GoldDifference = 0 Then
  436.             GUICtrlSetData($DifferenceGoldLabel, "0")
  437.          EndIf
  438.          $Sek = Floor(TimerDiff($RuntimeTimer) / 1000)
  439.          $GPH = Floor(($CurrentGold - $StartGold) / ($Sek / 3600))
  440.          GUICtrlSetData($GPHLabel, _StringAddThousandsSep($GPH))
  441.          GUICtrlSetData($LastDifferenceGoldLabel, "0")
  442.       Else
  443.          GetGold()
  444.       EndIf
  445.    EndIf
  446.    
  447.    Switch InTown()
  448.       Case "InTown"
  449.          Return "InTown"
  450.       Case "LeftGame"
  451.          Return "LeftGame"
  452.       Case "Network connection lost"
  453.          Return "Network connection lost"
  454.       Case "Relogged"
  455.          Return "Relogged"
  456.    EndSwitch
  457. EndFunc
  458.  
  459.  
  460. ;Loot
  461. Func LootSets()
  462.    While $SetLootAttempts < $SetLootAmount
  463.       ToLog("Searching for sets... " & $SetLootAttempts + 1)
  464.       For $gI = 0 To 4
  465.          $Array = StringSplit($ImageFiles[1][$gI], "|")
  466.          $File = $Array[1]
  467.          $Accuracy = $Array[2]
  468.            
  469.          $Target = _ImageSearchArea($ReqFiles & "\pics\" & $File, 1, $LootingArea[0], $LootingArea[1], $LootingArea[2], $LootingArea[3], $ISx, $ISy, $Accuracy)
  470.          If $Target = 1 Then
  471.             ToLog("Set found")
  472.                
  473.             If $Sounds = True Then
  474.                SoundPlay($ReqFiles & "\sounds\" & $SoundFiles[1], 0)
  475.             EndIf
  476.                
  477.             MouseClick("LEFT", $ISx, $ISy, 1, 2)
  478.             Sleep(Random(205, 255, 1) +  + $LootDelay)
  479.                
  480.             MouseMove(Random(100, 140, 1), Random(100, 140, 1), 2)
  481.             Sleep(Random(45, 55, 1))
  482.  
  483.                
  484.             If $Salvage = True Or $Sell = True Or $UseStash = True Then
  485.                Switch CheckBagFull()
  486.                   Case "LeftGame"
  487.                      Return "LeftGame"
  488.                   Case "Network connection lost"
  489.                      Return "Network connection lost"
  490.                   Case "Relogged"
  491.                      Return "Relogged"
  492.                EndSwitch
  493.                If $FullBag = True Then
  494.                   $FullBag = False
  495.                Else
  496.                   $SetLootAttempts += 1
  497.                   $Sets += 1
  498.                   RefreshStats()
  499.                EndIf
  500.             EndIf
  501.             ExitLoop
  502.          EndIf
  503.       Next
  504.       If $Target = 0 Then ExitLoop
  505.    WEnd
  506.    Return "Looted"
  507. EndFunc
  508.  
  509. Func LootLegendaries()
  510.    While $LegendaryLootAttempts < $LegendaryLootAmount
  511.       ToLog("Searching for legendaries... " & $LegendaryLootAttempts + 1)
  512.       For $gI = 0 To 4
  513.          $Array = StringSplit($ImageFiles[0][$gI], "|")
  514.          $File = $Array[1]
  515.          $Accuracy = $Array[2]
  516.            
  517.          $Target = _ImageSearchArea($ReqFiles & "\pics\" & $File, 1, $LootingArea[0], $LootingArea[1], $LootingArea[2], $LootingArea[3], $ISx, $ISy, $Accuracy)
  518.          If $Target = 1 Then
  519.             ToLog("Legendary found")
  520.                
  521.             If $Sounds = True Then
  522.                SoundPlay($ReqFiles & "\sounds\" & $SoundFiles[0], 0)
  523.             EndIf
  524.                
  525.             MouseClick("LEFT", $ISx, $ISy, 1, 2)
  526.             Sleep(Random(205, 255, 1) +  + $LootDelay)
  527.                
  528.             MouseMove(Random(100, 140, 1), Random(100, 140, 1), 2)
  529.             Sleep(Random(45, 55, 1))
  530.  
  531.                
  532.             If $Salvage = True Or $Sell = True Or $UseStash = True Then
  533.                Switch CheckBagFull()
  534.                   Case "LeftGame"
  535.                      Return "LeftGame"
  536.                   Case "Network connection lost"
  537.                      Return "Network connection lost"
  538.                   Case "Relogged"
  539.                      Return "Relogged"
  540.                EndSwitch
  541.                If $FullBag = True Then
  542.                   $FullBag = False
  543.                Else
  544.                   $LegendaryLootAttempts += 1
  545.                   $Legendaries += 1
  546.                   RefreshStats()
  547.                EndIf
  548.             EndIf
  549.             ExitLoop
  550.          EndIf
  551.       Next
  552.       If $Target = 0 Then ExitLoop
  553.    WEnd
  554.    Return "Looted"
  555. EndFunc
  556.  
  557. Func LootRares()
  558.    While $RareLootAttempts < $RareLootAmount
  559.       ToLog("Searching for rares... " & $RareLootAttempts + 1)
  560.       For $gI = 0 To 4
  561.          $Array = StringSplit($ImageFiles[2][$gI], "|")
  562.          $File = $Array[1]
  563.          $Accuracy = $Array[2]
  564.            
  565.          $Target = _ImageSearchArea($ReqFiles & "\pics\" & $File, 1, $LootingArea[0], $LootingArea[1], $LootingArea[2], $LootingArea[3], $ISx, $ISy, $Accuracy)
  566.          If $Target = 1 Then
  567.             ToLog("Rare found")
  568.                
  569.             If $Sounds = True Then
  570.                SoundPlay($ReqFiles & "\sounds\" & $SoundFiles[2], 0)
  571.             EndIf
  572.                
  573.             MouseClick("LEFT", $ISx, $ISy, 1, 2)
  574.             Sleep(Random(205, 255, 1) +  + $LootDelay)
  575.                
  576.             MouseMove(Random(100, 140, 1), Random(100, 140, 1), 2)
  577.             Sleep(Random(45, 55, 1))
  578.  
  579.                
  580.             If $Salvage = True Or $Sell = True Or $UseStash = True Then
  581.                Switch CheckBagFull()
  582.                   Case "LeftGame"
  583.                      Return "LeftGame"
  584.                   Case "Network connection lost"
  585.                      Return "Network connection lost"
  586.                   Case "Relogged"
  587.                      Return "Relogged"
  588.                EndSwitch
  589.                If $FullBag = True Then
  590.                   $FullBag = False
  591.                Else
  592.                   $RareLootAttempts += 1
  593.                   $Rares += 1
  594.                   RefreshStats()
  595.                EndIf
  596.             EndIf
  597.             ExitLoop
  598.          EndIf
  599.       Next
  600.       If $Target = 0 Then ExitLoop
  601.    WEnd
  602.    Return "Looted"
  603. EndFunc
  604.  
  605. Func LootMagics()
  606.    While $MagicLootAttempts < $MagicLootAmount
  607.       ToLog("Searching for magics... " & $MagicLootAttempts + 1)
  608.       For $gI = 0 To 4
  609.          $Array = StringSplit($ImageFiles[3][$gI], "|")
  610.          $File = $Array[1]
  611.          $Accuracy = $Array[2]
  612.            
  613.          $Target = _ImageSearchArea($ReqFiles & "\pics\" & $File, 1, $LootingArea[0], $LootingArea[1], $LootingArea[2], $LootingArea[3], $ISx, $ISy, $Accuracy)
  614.          If $Target = 1 Then
  615.             ToLog("Magic found")
  616.                
  617.             If $Sounds = True Then
  618.                SoundPlay($ReqFiles & "\sounds\" & $SoundFiles[3], 0)
  619.             EndIf
  620.                
  621.             MouseClick("LEFT", $ISx, $ISy, 1, 2)
  622.             Sleep(Random(205, 255, 1) +  + $LootDelay)
  623.                
  624.             MouseMove(Random(100, 140, 1), Random(100, 140, 1), 2)
  625.             Sleep(Random(45, 55, 1))
  626.  
  627.                
  628.             If $Salvage = True Or $Sell = True Or $UseStash = True Then
  629.                Switch CheckBagFull()
  630.                   Case "LeftGame"
  631.                      Return "LeftGame"
  632.                   Case "Network connection lost"
  633.                      Return "Network connection lost"
  634.                   Case "Relogged"
  635.                      Return "Relogged"
  636.                EndSwitch
  637.                If $FullBag = True Then
  638.                   $FullBag = False
  639.                Else
  640.                   $MagicLootAttempts += 1
  641.                   $Magics += 1
  642.                   RefreshStats()
  643.                EndIf
  644.             EndIf
  645.             ExitLoop
  646.          EndIf
  647.       Next
  648.       If $Target = 0 Then ExitLoop
  649.    WEnd
  650.    Return "Looted"
  651. EndFunc
  652.  
  653. Func LootTomes()
  654.    While $TomeLootAttempts < $TomeLootAmount
  655.       ToLog("Searching for Tomes of Secrets... " & $TomeLootAttempts + 1)
  656.       $Array = StringSplit($ImageFiles[4][0], "|")
  657.       $File = $Array[1]
  658.       $Accuracy = $Array[2]
  659.        
  660.       $Target = _ImageSearchArea($ReqFiles & "\pics\" & $File, 1, $LootingArea[0], $LootingArea[1], $LootingArea[2], $LootingArea[3], $ISx, $ISy, $Accuracy)
  661.       If $Target = 1 Then
  662.          ToLog("Tome of Secrets found")
  663.            
  664.          If $Sounds = True Then
  665.             SoundPlay($ReqFiles & "\sounds\" & $SoundFiles[4], 0)
  666.          EndIf
  667.            
  668.          MouseClick("LEFT", $ISx, $ISy, 1, 2)
  669.          Sleep(Random(205, 255, 1) +  + $LootDelay)
  670.            
  671.          MouseMove(Random(100, 140, 1), Random(100, 140, 1), 2)
  672.          Sleep(Random(45, 55, 1))
  673.  
  674.            
  675.          If $Salvage = True Or $Sell = True Or $UseStash = True Then
  676.             Switch CheckBagFull()
  677.                Case "LeftGame"
  678.                   Return "LeftGame"
  679.                Case "Network connection lost"
  680.                   Return "Network connection lost"
  681.                Case "Relogged"
  682.                   Return "Relogged"
  683.             EndSwitch
  684.             If $FullBag = True Then
  685.                $FullBag = False
  686.             Else
  687.                $TomeLootAttempts += 1
  688.                $Tomes += 1
  689.                RefreshStats()
  690.             EndIf
  691.          EndIf
  692.       EndIf
  693.       If $Target = 0 Then ExitLoop
  694.    WEnd
  695.    Return "Looted"
  696. EndFunc
  697.  
  698. Func LootGems()
  699.    While $GemLootAttempts < $GemLootAmount
  700.       ToLog("Searching for Gems... " & $GemLootAttempts + 1)
  701.        
  702.       If $FlawlessOnly = True Then
  703.          $Array = StringSplit($ImageFiles[4][6], "|")
  704.       Else
  705.          $Array = StringSplit($ImageFiles[4][5], "|")
  706.       EndIf
  707.      
  708.       $File = $Array[1]
  709.       $Accuracy = $Array[2]
  710.          
  711.       $Target = _ImageSearchArea($ReqFiles & "\pics\" & $File, 1, $LootingArea[0], $LootingArea[1], $LootingArea[2], $LootingArea[3], $ISx, $ISy, $Accuracy)
  712.       If $Target = 1 Then
  713.          ToLog("Gem found")
  714.            
  715.          If $Sounds = True Then
  716.             SoundPlay($ReqFiles & "\sounds\" & $SoundFiles[5], 0)
  717.          EndIf
  718.            
  719.          MouseClick("LEFT", $ISx, $ISy, 1, 2)
  720.          Sleep(Random(205, 255, 1) +  + $LootDelay)
  721.            
  722.          MouseMove(Random(100, 140, 1), Random(100, 140, 1), 2)
  723.          Sleep(Random(45, 55, 1))
  724.  
  725.            
  726.          If $Salvage = True Or $Sell = True Or $UseStash = True Then
  727.             Switch CheckBagFull()
  728.                Case "LeftGame"
  729.                   Return "LeftGame"
  730.                Case "Network connection lost"
  731.                   Return "Network connection lost"
  732.                Case "Relogged"
  733.                   Return "Relogged"
  734.             EndSwitch
  735.             If $FullBag = True Then
  736.                $FullBag = False
  737.             Else
  738.                $GemLootAttempts += 1
  739.                $Gems += 1
  740.                RefreshStats()
  741.             EndIf
  742.          EndIf
  743.       EndIf
  744.       If $Target = 0 Then ExitLoop
  745.    WEnd
  746.    Return "Looted"
  747. EndFunc
  748.  
  749.  
  750. ;Sell, salvage, store and repair
  751. Func CheckBagFull()
  752.    $Array = StringSplit($ImageFiles[6][4], "|")
  753.    $File = $Array[1]
  754.    $Accuracy = $Array[2]
  755.  
  756.    $Target = _ImageSearchArea($ReqFiles & "\pics\" & $File, 1, $FullBagSearchArea[0], $FullBagSearchArea[1], $FullBagSearchArea[2], $FullBagSearchArea[3], $ISx, $ISy, $Accuracy)
  757.    If $Target = 1 Then
  758.       ToLog("Our bag is full")
  759.       $FullBag = True
  760.       Switch SellItems()
  761.          Case "LeftGame"
  762.             Return "LeftGame"
  763.          Case "Network connection lost"
  764.             Return "Network connection lost"
  765.          Case "Relogged"
  766.             Return "Relogged"
  767.       EndSwitch
  768.    EndIf
  769.    Return "BagNotFull"
  770. EndFunc
  771.  
  772. Func SellItems()
  773.    If $Salvage = True Then
  774.       If $KeepLevel >= 62 Then
  775.          $SellCheck = 61
  776.       Else
  777.          $SellCheck = $KeepLevel
  778.       EndIf
  779.    Else
  780.       $SellCheck = $KeepLevel
  781.    EndIf
  782.  
  783.    If $ShowLootArea = True Then
  784.       GUIDelete($LootAreaGUI)
  785.    EndIf
  786.  
  787.    Switch TeleportToTown()
  788.       Case "LeftGame"
  789.          Return "LeftGame"
  790.       Case "Network connection lost"
  791.          Return "Network connection lost"
  792.       Case "Relogged"
  793.          Return "Relogged"
  794.    EndSwitch
  795.  
  796.    If $Sell = True Then
  797.       Switch MoveToMerchant()
  798.          Case "LeftGame"
  799.             Return "LeftGame"
  800.          Case "Network connection lost"
  801.             Return "Network connection lost"
  802.          Case "Relogged"
  803.             Return "Relogged"
  804.       EndSwitch
  805.  
  806.       ToLog("Selling...")
  807.  
  808.       $Count = 0
  809.  
  810.       RandomizeInventory()
  811.  
  812.       While UBound($Stash) > 0
  813.          $r = Random(0, UBound($Stash) - 1, 1)
  814.            
  815.          $Array = StringSplit($ImageFiles[5][0], "|")
  816.          $File = $Array[1]
  817.          $Accuracy = $Array[2]
  818.          $Target = _ImageSearchArea($ReqFiles & "\pics\" & $File, 1, $Stash[$r][0] - 35, $Stash[$r][1] - 35, $Stash[$r][0] + 35, $Stash[$r][1] + 35, 0, 0, $Accuracy)
  819.          If Not $Target = 1 Then
  820.             MouseMove($Stash[$r][0], $Stash[$r][1], 0)
  821.             Sleep(Random(145, 155, 1) + $SellDelay)
  822.             $Array = StringSplit($ImageFiles[5][1], "|")
  823.             $File = $Array[1]
  824.             $Accuracy = $Array[2]
  825.                
  826.             $Target = _ImageSearchArea($ReqFiles & "\pics\" & $File, 0, $SellItemsArea[0], $SellItemsArea[1], $SellItemsArea[2], $SellItemsArea[3], $ISx, $ISy, $Accuracy)
  827.             If $Target = 1 Then
  828.                For $gI = 2 To 6
  829.                   $Array = StringSplit($ImageFiles[5][$gI], "|")
  830.                   $File = $Array[1]
  831.                   $Accuracy = $Array[2]
  832.                        
  833.                   $Target = _ImageSearchArea($ReqFiles & "\pics\" & $File, 1, $ISx, $ISy, $ISx + 450, $ISy + 90, 0, 0, $Accuracy)
  834.                        
  835.                   If $Target = 1 Then
  836.                      If $KeepHighLevel = True Then
  837.                         Switch $SellCheck
  838.                            Case 60
  839.                               For $gI = 1 To 4
  840.                                  $Array = StringSplit($ImageFiles[4][$gI], "|")
  841.                                  $File = $Array[1]
  842.                                  $Accuracy = $Array[2]
  843.                                            
  844.                                  $Target = _ImageSearchArea($ReqFiles & "\pics\" & $File, 1, $ISx, $ISy + 210, $ISx + 140, $ISy + 420, 0, 0, $Accuracy)
  845.                                            
  846.                                  If $Target = 1 Then
  847.                                     ExitLoop 2
  848.                                  EndIf
  849.                               Next
  850.                                        
  851.                            Case 61
  852.                               For $gI = 2 To 4
  853.                                  $Array = StringSplit($ImageFiles[4][$gI], "|")
  854.                                  $File = $Array[1]
  855.                                  $Accuracy = $Array[2]
  856.                                            
  857.                                  $Target = _ImageSearchArea($ReqFiles & "\pics\" & $File, 1, $ISx, $ISy + 210, $ISx + 140, $ISy + 420, 0, 0, $Accuracy)
  858.                                            
  859.                                  If $Target = 1 Then
  860.                                     ExitLoop 2
  861.                                  EndIf
  862.                               Next
  863.                                        
  864.                            Case 62
  865.                               For $gI = 3 To 4
  866.                                  $Array = StringSplit($ImageFiles[4][$gI], "|")
  867.                                  $File = $Array[1]
  868.                                  $Accuracy = $Array[2]
  869.                                            
  870.                                  $Target = _ImageSearchArea($ReqFiles & "\pics\" & $File, 1, $ISx, $ISy + 210, $ISx + 140, $ISy + 420, 0, 0, $Accuracy)
  871.                                            
  872.                                  If $Target = 1 Then
  873.                                     ExitLoop 2
  874.                                  EndIf
  875.                               Next
  876.                                        
  877.                            Case 63
  878.                               $Array = StringSplit($ImageFiles[4][4], "|")
  879.                               $File = $Array[1]
  880.                               $Accuracy = $Array[2]
  881.                                        
  882.                               $Target = _ImageSearchArea($ReqFiles & "\pics\" & $File, 1, $ISx, $ISy + 210, $ISx + 140, $ISy + 420, 0, 0, $Accuracy)
  883.                                        
  884.                               If $Target = 1 Then
  885.                                  ExitLoop
  886.                               EndIf
  887.                         EndSwitch
  888.                         MouseClick("RIGHT")
  889.                         $Count += 1
  890.                         $Sold += 1
  891.                         ExitLoop
  892.                      Else
  893.                         If $Salvage = True Then
  894.                            For $gI = 2 To 4
  895.                               $Array = StringSplit($ImageFiles[4][$gI], "|")
  896.                               $File = $Array[1]
  897.                               $Accuracy = $Array[2]
  898.                                        
  899.                               $Target = _ImageSearchArea($ReqFiles & "\pics\" & $File, 1, $ISx, $ISy + 210, $ISx + 140, $ISy + 420, 0, 0, $Accuracy)
  900.                                        
  901.                               If $Target = 1 Then
  902.                                  ExitLoop 2
  903.                               EndIf
  904.                            Next
  905.                         EndIf
  906.                         MouseClick("RIGHT")
  907.                         $Count += 1
  908.                         $Sold += 1
  909.                         ExitLoop
  910.                      EndIf
  911.                   EndIf
  912.                Next
  913.                MouseMove(Random(1710, 1770, 1), Random(970, 1030, 1), 0)
  914.                Sleep(Random(145, 155, 1) + $SellDelay)
  915.             EndIf
  916.          EndIf
  917.          _ArrayDelete($Stash, $r)
  918.       WEnd
  919.  
  920.       ToLog("Selling... done - Sold " & $Count & " items")
  921.    EndIf
  922.    
  923.    Sleep(Random(85, 125, 1) + ($ComputerLag / 2))
  924.    Send("{ESC}")
  925.  
  926.    $RareLootAttempts = 0
  927.    $MagicLootAttempts = 0
  928.    $TomeLootAttempts = 0
  929.    $GemLootAttempts = 0
  930.  
  931.    If $Salvage = True Then
  932.       Switch MoveToSalvage()
  933.          Case "LeftGame"
  934.             Return "LeftGame"
  935.          Case "Network connection lost"
  936.             Return "Network connection lost"
  937.          Case "Relogged"
  938.             Return "Relogged"
  939.       EndSwitch
  940.    EndIf
  941.  
  942.    Switch MoveToStash()
  943.       Case "LeftGame"
  944.          Return "LeftGame"
  945.       Case "Network connection lost"
  946.          Return "Network connection lost"
  947.       Case "Relogged"
  948.          Return "Relogged"
  949.    EndSwitch
  950.  
  951.    Sleep(Random(145, 155, 1) + $ComputerLag)
  952.  
  953.    MouseClick("LEFT", $PortalLocation[0], $PortalLocation[1], 1, 2)
  954.  
  955.    Switch InCellar()
  956.       Case "InCellar"
  957.          If $ShowLootArea = True Then
  958.             DrawLootArea()
  959.          EndIf
  960.          Sleep(Random(345, 455, 1) + ($ComputerLag / 2))
  961.          Return "InCellar"
  962.       Case "LeftGame"
  963.          Return "LeftGame"
  964.       Case "Network connection lost"
  965.          Return "Network connection lost"
  966.       Case "Relogged"
  967.          Return "Relogged"
  968.    EndSwitch
  969. EndFunc
  970.  
  971. Func SalvageItems()
  972.    ToLog("Salvaging...")
  973.  
  974.    $Count = 0
  975.  
  976. MouseClick("LEFT", $SalvageButton[0], $SalvageButton[1], 1, 2)
  977.    RandomizeInventory()
  978.    While UBound($Stash) > 0
  979.       $r = Random(0, UBound($Stash) - 1, 1)
  980.        
  981.       $Array = StringSplit($ImageFiles[5][0], "|")
  982.       $File = $Array[1]
  983.       $Accuracy = $Array[2]
  984.        
  985.       $Target = _ImageSearchArea($ReqFiles & "\pics\" & $File, 1, $Stash[$r][0] - 25, $Stash[$r][1] - 25, $Stash[$r][0] + 25, $Stash[$r][1] + 25, 0, 0, $Accuracy)
  986.       If Not $Target = 1 Then
  987.          MouseMove($Stash[$r][0], $Stash[$r][1], 1)
  988.          Sleep(Random(145, 155, 1) + $SalvageDelay)
  989.          $Array = StringSplit($ImageFiles[5][1], "|")
  990.          $File = $Array[1]
  991.          $Accuracy = $Array[2]
  992.            
  993.          $Target = _ImageSearchArea($ReqFiles & "\pics\" & $File, 0, $SellItemsArea[0], $SellItemsArea[1], $SellItemsArea[2], $SellItemsArea[3], $ISx, $ISy, $Accuracy)
  994.          If $Target = 1 Then
  995.             For $gI = 2 To 6
  996.                $Array = StringSplit($ImageFiles[5][$gI], "|")
  997.                $File = $Array[1]
  998.                $Accuracy = $Array[2]
  999.                    
  1000.                $Target = _ImageSearchArea($ReqFiles & "\pics\" & $File, 1, $ISx, $ISy, $ISx + 420, $ISy + 75, 0, 0, $Accuracy)
  1001.                    
  1002.                If $Target = 1 Then
  1003.                   If $Sell = True Then
  1004.                      If $KeepHighLevel = True Then
  1005.                         Switch $KeepLevel
  1006.                            Case 60
  1007.                               ExitLoop
  1008.                              
  1009.                            Case 61
  1010.                             ExitLoop
  1011.                                        
  1012.                            Case 62
  1013.                               $Array = StringSplit($ImageFiles[4][2], "|")
  1014.                               $File = $Array[1]
  1015.                               $Accuracy = $Array[2]
  1016.                                        
  1017.                               $Target = _ImageSearchArea($ReqFiles & "\pics\" & $File, 1, $ISx, $ISy + 210, $ISx + 140, $ISy + 420, 0, 0, $Accuracy)
  1018.                                        
  1019.                               If $Target = 1 Then
  1020.                                  MouseClick("LEFT")
  1021.  
  1022.                                  $Count += 1
  1023.                                  $Salvaged += 1
  1024.                                  Sleep(Random(30, 55, 1) + $SalvageDelay)
  1025.                                  ExitLoop
  1026.                               EndIf
  1027.                            
  1028.  
  1029.  
  1030.                            Case 63
  1031.                               For $gI = 2 To 3
  1032.                                  $Array = StringSplit($ImageFiles[4][$gI], "|")
  1033.                                  $File = $Array[1]
  1034.                                  $Accuracy = $Array[2]
  1035.                                            
  1036.                                  $Target = _ImageSearchArea($ReqFiles & "\pics\" & $File, 1, $ISx, $ISy + 210, $ISx + 140, $ISy + 420, 0, 0, $Accuracy)
  1037.                                            
  1038.                                  If $Target = 1 Then
  1039.                                     MouseClick("LEFT")
  1040.  
  1041.                                     $Count += 1
  1042.                                     $Salvaged += 1
  1043.  
  1044.                                     Sleep(Random(30, 55, 1) + $SalvageDelay)
  1045.                                     ExitLoop 2
  1046.                                  EndIf
  1047.                               Next
  1048.                         EndSwitch
  1049.                         ExitLoop
  1050.                      Else
  1051.                         MouseClick("LEFT")
  1052.                         $Count += 1
  1053.                         $Salvaged += 1
  1054.                         Sleep(Random(30, 55, 1) + $SalvageDelay)
  1055.                         ExitLoop
  1056.                      EndIf
  1057.                   Else
  1058.                      If $KeepHighLevel = True Then
  1059.                         Switch $KeepLevel
  1060.                            Case 60
  1061.                               For $gI = 1 To 4
  1062.                                  $Array = StringSplit($ImageFiles[4][$gI], "|")
  1063.                                  $File = $Array[1]
  1064.                                  $Accuracy = $Array[2]
  1065.                                            
  1066.                                  $Target = _ImageSearchArea($ReqFiles & "\pics\" & $File, 1, $ISx, $ISy + 210, $ISx + 140, $ISy + 420, 0, 0, $Accuracy)
  1067.                                            
  1068.                                  If $Target = 1 Then
  1069.                                     ExitLoop 2
  1070.                                  EndIf
  1071.                               Next
  1072.                              
  1073.  
  1074.                            Case 61
  1075.                               For $gI = 2 To 4
  1076.                                  $Array = StringSplit($ImageFiles[4][$gI], "|")
  1077.                                  $File = $Array[1]
  1078.                                  $Accuracy = $Array[2]
  1079.                                            
  1080.                                  $Target = _ImageSearchArea($ReqFiles & "\pics\" & $File, 1, $ISx, $ISy + 210, $ISx + 140, $ISy + 420, 0, 0, $Accuracy)
  1081.                                            
  1082.                                  If $Target = 1 Then
  1083.                                     MouseClick("LEFT")
  1084.  
  1085.                                     $Count += 1
  1086.                                     $Salvaged += 1
  1087.                                     Sleep(Random(30, 55, 1) + $SalvageDelay)
  1088.                                     ExitLoop 2
  1089.                                  EndIf
  1090.                               Next
  1091.  
  1092.  
  1093.  
  1094.  
  1095.                                        
  1096.                            Case 62
  1097.                               For $gI = 3 To 4
  1098.                                  $Array = StringSplit($ImageFiles[4][$gI], "|")
  1099.                                  $File = $Array[1]
  1100.                                  $Accuracy = $Array[2]
  1101.                                            
  1102.                                  $Target = _ImageSearchArea($ReqFiles & "\pics\" & $File, 1, $ISx, $ISy + 210, $ISx + 140, $ISy + 420, 0, 0, $Accuracy)
  1103.                                            
  1104.                                  If $Target = 1 Then
  1105.                                     MouseClick("LEFT")
  1106.  
  1107.                                     $Count += 1
  1108.                                     $Salvaged += 1
  1109.                                     Sleep(Random(30, 55, 1) + $SalvageDelay)
  1110.                                     ExitLoop 2
  1111.                                  EndIf
  1112.                               Next
  1113.                                        
  1114.                            Case 63
  1115.                                  $Array = StringSplit($ImageFiles[4][4], "|")
  1116.                                  $File = $Array[1]
  1117.                                  $Accuracy = $Array[2]
  1118.                                            
  1119.                                  $Target = _ImageSearchArea($ReqFiles & "\pics\" & $File, 1, $ISx, $ISy + 210, $ISx + 140, $ISy + 420, 0, 0, $Accuracy)
  1120.                                            
  1121.                                  If $Target = 1 Then
  1122.                                     MouseClick("LEFT")
  1123.                                     $Count += 1
  1124.                                     $Salvaged += 1
  1125.                                     Sleep(Random(30, 55, 1) + $SalvageDelay)
  1126.                                     ExitLoop
  1127.                                  EndIf
  1128.                         EndSwitch
  1129.                         MouseClick("LEFT")
  1130.                         $Count += 1
  1131.                         $Salvaged += 1
  1132.                         Sleep(Random(30, 55, 1) + $SalvageDelay)
  1133.                         ExitLoop
  1134.                      Else
  1135.                         MouseClick("LEFT")
  1136.  
  1137.                         $Count += 1
  1138.                         $Salvaged += 1
  1139.                         Sleep(Random(30, 55, 1) + $SalvageDelay)
  1140.                         ExitLoop
  1141.                      EndIf
  1142.                   EndIf
  1143.                EndIf
  1144.             Next
  1145.             MouseMove(Random(1710, 1770, 1), Random(970, 1030, 1), 2)
  1146.             Sleep(Random(145, 155, 1) + $SalvageDelay)
  1147.          EndIf
  1148.       EndIf
  1149.       _ArrayDelete($Stash, $r)
  1150.    WEnd
  1151.  
  1152.    ToLog("Salvaging... done - Salvaged " & $Count & " items")
  1153. EndFunc
  1154.  
  1155. Func PutInStash()
  1156.    ToLog("Storing items in the stash...")
  1157.  
  1158.    RandomizeInventory()
  1159.  
  1160.    While UBound($Stash) > 0
  1161.       $r = Random(0, UBound($Stash) - 1, 1)
  1162.       $Array = StringSplit($ImageFiles[5][0], "|")
  1163.       $File = $Array[1]
  1164.       $Accuracy = $Array[2]
  1165.        
  1166.       $Target = _ImageSearchArea($ReqFiles & "\pics\" & $File, 1, $Stash[$r][0] - 25, $Stash[$r][1] - 25, $Stash[$r][0] + 25, $Stash[$r][1] + 25, $ISx, $ISy, $Accuracy)
  1167.       If Not $Target = 1 Then
  1168.          MouseClick("RIGHT", $Stash[$r][0], $Stash[$r][1], 1, 0)
  1169.          Sleep(Random(45, 55, 1) + $StashDelay)
  1170.          If Not CheckStashFull() = 1 Then
  1171.             _ArrayDelete($Stash, $r)
  1172.          EndIf
  1173.       Else
  1174.          _ArrayDelete($Stash, $r)
  1175.       EndIf
  1176.       If $UseStash = False Then
  1177.          ExitLoop
  1178.       EndIf
  1179.    WEnd
  1180.  
  1181.    ToLog("Storing items in the stash... done")
  1182. EndFunc
  1183.  
  1184. Func CheckStashFull()
  1185.    $Array = StringSplit($ImageFiles[6][3], "|")
  1186.    $File = $Array[1]
  1187.    $Accuracy = $Array[2]
  1188.  
  1189.    $Target = _ImageSearchArea($ReqFiles & "\pics\" & $File, 1, $FullStashSearchArea[0], $FullStashSearchArea[1], $FullStashSearchArea[2], $FullStashSearchArea[3], $ISx, $ISy, $Accuracy)
  1190.    If $Target = 1 Then
  1191.       Switch $StashBag
  1192.          Case 1
  1193.             ToLog("First stashbag is full - changing...")
  1194.             Sleep(Random(85, 125, 1) + ($ComputerLag / 2))
  1195.             MouseClick("LEFT", $StashBag2[0], $StashBag2[1], 1, 2)
  1196.             $StashBag = 2
  1197.             Sleep(Random(4950, 5050, 1))
  1198.  
  1199.          Case 2
  1200.             ToLog("Second stashbag is full - changing...")
  1201.             Sleep(Random(85, 125, 1) + ($ComputerLag / 2))
  1202.             MouseClick("LEFT", $StashBag3[0], $StashBag3[1], 1, 2)
  1203.             $StashBag = 3
  1204.             Sleep(Random(4950, 5050, 1))
  1205.  
  1206.          Case 3
  1207.             ToLog("Third stashbag is full - aborting...")
  1208.             $UseStash = False
  1209.       EndSwitch
  1210.       Return 1
  1211.    EndIf
  1212.    Return 0
  1213. EndFunc
  1214.  
  1215. Func RepairItems()
  1216.    If Not CheckForRepair() Then
  1217.       Return "NotDamaged"
  1218.    EndIf
  1219.  
  1220.    Switch MoveToMerchant()
  1221.       Case "LeftGame"
  1222.          Return "LeftGame"
  1223.       Case "Network connection lost"
  1224.          Return "Network connection lost"
  1225.       Case "Relogged"
  1226.          Return "Relogged"
  1227.    EndSwitch
  1228.  
  1229.    ToLog("Repairing...")
  1230.    MouseClick('LEFT', $RepairButton[0], $RepairButton[1], 1, 2)
  1231.    Sleep(Random(85, 125, 1) + ($ComputerLag / 2))
  1232.  
  1233.    MouseClick('LEFT', $AllItemsButton[0], $AllItemsButton[1], 1, 2)
  1234.    Sleep(Random(85, 125, 1) + ($ComputerLag / 2))
  1235.  
  1236.    Send("{ESC}")
  1237.    ToLog("Repairing... done")
  1238.    Return "Repaired"
  1239. EndFunc
  1240.  
  1241. Func CheckForRepair()
  1242.    $RepairNeeded = PixelSearch($RepairSearchArea[0], $RepairSearchArea[1], $RepairSearchArea[2], $RepairSearchArea[3], 0xFFE801, 10)
  1243.    If Not @error Then
  1244.       ToLog("We need to repair")
  1245.       Return True
  1246.    Else
  1247.       $RepairNeeded = PixelSearch($RepairSearchArea[0], $RepairSearchArea[1], $RepairSearchArea[2], $RepairSearchArea[3], 0xDE0000, 10)
  1248.       If Not @error Then
  1249.          ToLog("We need to repair")
  1250.          Return True
  1251.       Else
  1252.          Return False
  1253.       EndIf
  1254.    EndIf
  1255. EndFunc
  1256.  
  1257. Func MoveToSalvage()
  1258.    Sleep(Random(335, 375, 1) + $ComputerLag)
  1259.    ToLog("Waiting to get to the salvage... (TimeOut " & $ArtisanTimeOut & "s)")
  1260.  
  1261.    ToLog("Moving to salvage - 1")
  1262.    Move($MoveToSalvage1[0], $MoveToSalvage1[1])
  1263.    Sleep($SleepToSalvage + $MoveDelay)
  1264.  
  1265.    ToLog("Moving to salvage - 2")
  1266.    Move($MoveToSalvage2[0], $MoveToSalvage2[1])
  1267.    Sleep($SleepToSalvage + $MoveDelay)
  1268.  
  1269.    ToLog("Moving to salvage - 3")
  1270.    MouseClick('LEFT', $SalvageLocation[0], $SalvageLocation[1], 1, 2)
  1271.  
  1272.    Switch AtSalvage()
  1273.       Case "LeftGame"
  1274.          Return "LeftGame"
  1275.       Case "Network connection lost"
  1276.          Return "Network connection lost"
  1277.       Case "Relogged"
  1278.          Return "Relogged"
  1279.    EndSwitch
  1280.  
  1281.    SalvageItems()
  1282.    Sleep(Random(85, 125, 1) + ($ComputerLag / 2))
  1283.    Send("{ESC}")
  1284.    Return "Salvaged"
  1285. EndFunc
  1286.  
  1287. Func MoveToMerchant()
  1288.  
  1289.  
  1290.    Sleep(Random(235, 275, 1) + $ComputerLag)
  1291.    ToLog("Waiting to get to the merchant... (TimeOut " & $MerchantTimeOut & "s)")
  1292.  
  1293.    ToLog("Moving to merchant - 1")
  1294.    Move($MoveToMerchant[0], $MoveToMerchant[1])
  1295.    Sleep(Random(3485, 3525, 1) + $MoveDelay)
  1296.  
  1297.    ToLog("Moving to merchant - 2")
  1298.    MouseClick('LEFT', $MerchantLocation[0], $MerchantLocation[1], 1, 2)
  1299.  
  1300.    Switch AtMerchant()
  1301.       Case "AtMerchant"
  1302.          Return "AtMerchant"
  1303.       Case "LeftGame"
  1304.          Return "LeftGame"
  1305.       Case "Network connection lost"
  1306.          Return "Network connection lost"
  1307.       Case "Relogged"
  1308.          Return "Relogged"
  1309.    EndSwitch
  1310. EndFunc
  1311.  
  1312. Func MoveToStash()
  1313.    ToLog("Waiting to get to the stash... (TimeOut " & $StashTimeOut & "s)")
  1314.  
  1315.    Send("{4}")
  1316.    Sleep(Random(45, 55, 1) + ($ComputerLag / 3))
  1317.    
  1318.    If $Salvage = True Or $Sell = True Then
  1319.       ToLog("Moving to stash - 1")
  1320.       Move($MoveToStash1[0], $MoveToStash1[1])
  1321.       Sleep($SleepToStash*0.65 + $MoveDelay)
  1322.  
  1323.       ToLog("Moving to stash - 2")
  1324.       Move($MoveToStash2[0], $MoveToStash2[1])
  1325.       Sleep($SleepToStash*0.65 + $MoveDelay)
  1326.    EndIf
  1327.  
  1328.    If $UseStash = True Then
  1329.       $StashBag = 1
  1330.       MouseClick("LEFT", $StashLocation[0], $StashLocation[1], 1, 2)
  1331.       Switch AtStash()
  1332.          Case "LeftGame"
  1333.             Return "LeftGame"
  1334.          Case "Network connection lost"
  1335.             Return "Network connection lost"
  1336.          Case "Relogged"
  1337.             Return "Relogged"
  1338.       EndSwitch
  1339.       PutInStash()
  1340.       Sleep(Random(85, 125, 1) + ($ComputerLag / 2))
  1341.       Send("{ESC}")
  1342.    EndIf
  1343.    Return "AtStash"
  1344. EndFunc
  1345.  
  1346.  
  1347. ;Check state, disconnect and death
  1348. Func InLoginScreen()
  1349.    ToLog("Waiting to get into the login screen...")
  1350.  
  1351.    While 1
  1352.       $Array = StringSplit($ImageFiles[7][4], "|")
  1353.       $File = $Array[1]
  1354.       $Accuracy = $Array[2]
  1355.  
  1356.       $Target = _ImageSearchArea($ReqFiles & "\pics\" & $File, 1, $LoginButtonSearchArea[0], $LoginButtonSearchArea[1], $LoginButtonSearchArea[2], $LoginButtonSearchArea[3], $ISx, $ISy, $Accuracy)
  1357.       If $Target = 1 Then
  1358.          Return True
  1359.       Else
  1360.          Sleep(Random(185, 225, 1))
  1361.  
  1362.       EndIf
  1363.    WEnd
  1364. EndFunc
  1365.  
  1366. Func InGameLobby()
  1367.    ToLog("Waiting to get into the game lobby... (TimeOut " & $GameLobbyTimeOut & "s)")
  1368.    $TimeOutTimer = TimerInit()
  1369.  
  1370.    While 1
  1371.       $Array = StringSplit($ImageFiles[7][2], "|")
  1372.       $File = $Array[1]
  1373.       $Accuracy = $Array[2]
  1374.  
  1375.       $Target = _ImageSearchArea($ReqFiles & "\pics\" & $File, 1, $ResumeButtonSearchArea[0], $ResumeButtonSearchArea[1], $ResumeButtonSearchArea[2], $ResumeButtonSearchArea[3], $ISx, $ISy, $Accuracy)
  1376.       If $Target = 1 Then
  1377.          $DisconnectState = 0
  1378.          Return "InGameLobby"
  1379.       Else
  1380.          If Floor(TimerDiff($TimeOutTimer) / 1000) >= $GameLobbyTimeOut Then
  1381.             ToLog("GameLobby TimeOut - Trying again")
  1382.                
  1383.             If $Relogged = True Then
  1384.                Send("{ESC}")
  1385.                MouseClick("LEFT", $PasswordField[0] + 250, $PasswordField[1], 1, 2)
  1386.                For $i = 0 To StringLen($Password) - 1
  1387.                   Send("{BACKSPACE}")
  1388.                Next
  1389.                $Relogged = False
  1390.             Else
  1391.                MouseMove($ResumeButton[0], $ResumeButton[1] - 100, 0)
  1392.                LeaveGame()
  1393.             EndIf
  1394.                
  1395.             Return "LeftGame"
  1396.          EndIf
  1397.          Switch CheckForDisconnect()
  1398.             Case "Network connection lost"
  1399.                Return "Network connection lost"
  1400.             Case "Relogged"
  1401.                Return "Relogged"
  1402.          EndSwitch
  1403.          Sleep(Random(185, 225, 1))
  1404.  
  1405.       EndIf
  1406.    WEnd
  1407. EndFunc
  1408.  
  1409. Func InGameplayScreen()
  1410.    ToLog("Waiting to get into the game... (TimeOut " & $GameplayScreenTimeOut & "s)")
  1411.    $TimeOutTimer = TimerInit()
  1412.  
  1413.    While 1
  1414.       $Array = StringSplit($ImageFiles[7][3], "|")
  1415.       $File = $Array[1]
  1416.       $Accuracy = $Array[2]
  1417.  
  1418.       $Target = _ImageSearchArea($ReqFiles & "\pics\" & $File, 1, $PortalIconSearchArea[0], $PortalIconSearchArea[1], $PortalIconSearchArea[2], $PortalIconSearchArea[3], $ISx, $ISy, $Accuracy)
  1419.       If $Target = 1 Then
  1420.          $Alive = True
  1421.          $DisconnectState = 0
  1422.          Return "InGamePlayScreen"
  1423.       Else
  1424.          If Floor(TimerDiff($TimeOutTimer) / 1000) >= $GameplayScreenTimeOut Then
  1425.             $TimeOutTimer = TimerInit()
  1426.             ToLog("GameplayScreen TimeOut - Leaving")
  1427.             Return "LeftGame"
  1428.          EndIf
  1429.          If CheckForDeath() = "LeftGame" Then
  1430.             Return "LeftGame"
  1431.          EndIf
  1432.          Sleep(Random(85, 125, 1))
  1433.  
  1434.          Switch CheckForDisconnect()
  1435.             Case "Network connection lost"
  1436.                Return "Network connection lost"
  1437.             Case "Relogged"
  1438.                Return "Relogged"
  1439.          EndSwitch
  1440.          Sleep(Random(85, 125, 1))
  1441.  
  1442.       EndIf
  1443.    WEnd
  1444. EndFunc
  1445.  
  1446. Func InCellar()
  1447.    ToLog("Waiting to get into the cellar... (TimeOut " & $CellarTimeOut & "s)")
  1448.    $TimeOutTimer = TimerInit()
  1449.  
  1450.    While 1
  1451.       $Array = StringSplit($ImageFiles[7][0], "|")
  1452.       $File = $Array[1]
  1453.       $Accuracy = $Array[2]
  1454.  
  1455.       $Target = _ImageSearchArea($ReqFiles & "\pics\" & $File, 1, $CellarNameSearchArea[0], $CellarNameSearchArea[1], $CellarNameSearchArea[2], $CellarNameSearchArea[3], $ISx, $ISy, $Accuracy)
  1456.       If $Target = 1 Then
  1457.          Return "InCellar"
  1458.       Else
  1459.          If Floor(TimerDiff($TimeOutTimer) / 1000) >= $CellarTimeOut Then
  1460.             ToLog("Cellar TimeOut - Leaving")
  1461.             LeaveGame()
  1462.             Return "LeftGame"
  1463.          EndIf
  1464.          If CheckForDeath() = "LeftGame" Then
  1465.             Return "LeftGame"
  1466.          EndIf
  1467.          Sleep(Random(85, 125, 1))
  1468.  
  1469.          Switch CheckForDisconnect()
  1470.             Case "Network connection lost"
  1471.                Return "Network connection lost"
  1472.             Case "Relogged"
  1473.                Return "Relogged"
  1474.          EndSwitch
  1475.          Sleep(Random(85, 125, 1))
  1476.  
  1477.       EndIf
  1478.    WEnd
  1479. EndFunc
  1480.  
  1481. Func InTown()
  1482.    ToLog("Waiting to get into the town... (TimeOut " & $TownTimeOut & "s)")
  1483.    $TimeOutTimer = TimerInit()
  1484.  
  1485.    While 1
  1486.       $Array = StringSplit($ImageFiles[7][1], "|")
  1487.       $File = $Array[1]
  1488.       $Accuracy = $Array[2]
  1489.  
  1490.       $Target = _ImageSearchArea($ReqFiles & "\pics\" & $File, 1, $TownNameSearchArea[0], $TownNameSearchArea[1], $TownNameSearchArea[2], $TownNameSearchArea[3], $ISx, $ISy, $Accuracy)
  1491.       If $Target = 1 Then
  1492.          If $Repair And Not $FullBag Then
  1493.             Switch RepairItems()
  1494.                Case "LeftGame"
  1495.                   Return "LeftGame"
  1496.                Case "Network connection lost"
  1497.                   Return "Network connection lost"
  1498.                Case "Relogged"
  1499.                   Return "Relogged"
  1500.                EndSwitch
  1501.          EndIf
  1502.          Return "InTown"
  1503.       Else
  1504.          If Floor(TimerDiff($TimeOutTimer) / 1000) >= $TownTimeOut Then
  1505.             $TimeOutCount += 1
  1506.             If $TimeOutCount = 3 Then
  1507.                ToLog("Teleport TimeOut - Leaving")
  1508.                $TimeOutCount = 0
  1509.                LeaveGame()
  1510.                Return "LeftGame"
  1511.             EndIf
  1512.                $TimeOutTimer = TimerInit()
  1513.                ToLog("Teleport TimeOut - Trying to teleport again")
  1514.                ToLog("Teleporting to town...")
  1515.                Sleep(Random(45, 55, 1) + ($ComputerLag / 2))
  1516.                Send("{t}")
  1517.          EndIf
  1518.          If CheckForDeath() = "LeftGame" Then
  1519.             Return "LeftGame"
  1520.          EndIf
  1521.          Sleep(Random(85, 125, 1))
  1522.  
  1523.          Switch CheckForDisconnect()
  1524.             Case "Network connection lost"
  1525.                Return "Network connection lost"
  1526.             Case "Relogged"
  1527.                Return "Relogged"
  1528.          EndSwitch
  1529.          Sleep(Random(85, 125, 1))
  1530.  
  1531.       EndIf
  1532.    WEnd
  1533. EndFunc
  1534.  
  1535. Func AtSalvage()
  1536.    $TimeOutTimer = TimerInit()
  1537.  
  1538.    While 1
  1539.       $Array = StringSplit($ImageFiles[7][5], "|")
  1540.       $File = $Array[1]
  1541.       $Accuracy = $Array[2]
  1542.  
  1543.       $Target = _ImageSearchArea($ReqFiles & "\pics\" & $File, 1, $MerchStashSearchArea[0], $MerchStashSearchArea[1], $MerchStashSearchArea[2], $MerchStashSearchArea[3], $ISx, $ISy, $Accuracy)
  1544.       If $Target = 1 Then
  1545.          Return "AtSalvage"
  1546.       Else
  1547.          If Floor(TimerDiff($TimeOutTimer) / 1000) >= $ArtisanTimeOut Then
  1548.             ToLog("Salvage TimeOut - Leaving")
  1549.             LeaveGame()
  1550.             Return "LeftGame"
  1551.          EndIf
  1552.          If CheckForDeath() = "LeftGame" Then
  1553.             Return "LeftGame"
  1554.          EndIf
  1555.          Sleep(Random(85, 125, 1))
  1556.  
  1557.          Switch CheckForDisconnect()
  1558.             Case "Network connection lost"
  1559.                     Return "Network connection lost"
  1560.             Case "Relogged"
  1561.                     Return "Relogged"
  1562.          EndSwitch
  1563.          Sleep(Random(85, 125, 1))
  1564.  
  1565.       EndIf
  1566.    WEnd
  1567. EndFunc
  1568.  
  1569. Func AtMerchant()
  1570.    $TimeOutTimer = TimerInit()
  1571.  
  1572.    While 1
  1573.       $Array = StringSplit($ImageFiles[7][5], "|")
  1574.       $File = $Array[1]
  1575.       $Accuracy = $Array[2]
  1576.  
  1577.       $Target = _ImageSearchArea($ReqFiles & "\pics\" & $File, 1, $MerchStashSearchArea[0], $MerchStashSearchArea[1], $MerchStashSearchArea[2], $MerchStashSearchArea[3], $ISx, $ISy, $Accuracy)
  1578.       If $Target = 1 Then
  1579.          Return "AtMerchant"
  1580.       Else
  1581.          If Floor(TimerDiff($TimeOutTimer) / 1000) >= $MerchantTimeOut Then
  1582.             ToLog("Merchant TimeOut - Leaving")
  1583.             LeaveGame()
  1584.             Return "LeftGame"
  1585.          EndIf
  1586.          If CheckForDeath() = "LeftGame" Then
  1587.             Return "LeftGame"
  1588.          EndIf
  1589.          Sleep(Random(85, 125, 1))
  1590.  
  1591.          Switch CheckForDisconnect()
  1592.             Case "Network connection lost"
  1593.                Return "Network connection lost"
  1594.             Case "Relogged"
  1595.                Return "Relogged"
  1596.          EndSwitch
  1597.          Sleep(Random(85, 125, 1))
  1598.  
  1599.       EndIf
  1600.    WEnd
  1601. EndFunc
  1602.  
  1603. Func AtStash()
  1604.    $TimeOutTimer = TimerInit()
  1605.  
  1606.    While 1
  1607.       $Array = StringSplit($ImageFiles[7][6], "|")
  1608.       $File = $Array[1]
  1609.       $Accuracy = $Array[2]
  1610.  
  1611.       $Target = _ImageSearchArea($ReqFiles & "\pics\" & $File, 1, $MerchStashSearchArea[0], $MerchStashSearchArea[1], $MerchStashSearchArea[2], $MerchStashSearchArea[3], $ISx, $ISy, $Accuracy)
  1612.       If $Target = 1 Then
  1613.          Return "AtStash"
  1614.       Else
  1615.          If Floor(TimerDiff($TimeOutTimer) / 1000) >= $StashTimeOut Then
  1616.             ToLog("Stash TimeOut - Leaving")
  1617.             LeaveGame()
  1618.             Return "LeftGame"
  1619.          EndIf
  1620.          If CheckForDeath() = "LeftGame" Then
  1621.             Return "LeftGame"
  1622.          EndIf
  1623.          Sleep(Random(85, 125, 1))
  1624.  
  1625.          Switch CheckForDisconnect()
  1626.             Case "Network connection lost"
  1627.                Return "Network connection lost"
  1628.             Case "Relogged"
  1629.                Return "Relogged"
  1630.          EndSwitch
  1631.          Sleep(Random(85, 125, 1))
  1632.  
  1633.       EndIf
  1634.    WEnd
  1635. EndFunc
  1636.  
  1637. Func CheckForDisconnect()
  1638.    $Array = StringSplit($ImageFiles[6][0], "|")
  1639.    $File = $Array[1]
  1640.    $Accuracy = $Array[2]
  1641.  
  1642.    $Target = _ImageSearchArea($ReqFiles & "\pics\" & $File, 1, $DisconnectSearchArea[0], $DisconnectSearchArea[1], $DisconnectSearchArea[2], $DisconnectSearchArea[3], $ISx, $ISy, $Accuracy)
  1643.    If $Target = 1 And $DisconnectState = 0 Then
  1644.       ToLog("We got disconnected")
  1645.       $Disconnects += 1
  1646.       RefreshStats()
  1647.       $DisconnectState = 1
  1648.        
  1649.       MouseClick("LEFT", $DisconnectButton[0], $DisconnectButton[1], 1, 2)
  1650.       Return "Network connection lost"
  1651.    EndIf
  1652.  
  1653.    $Array = StringSplit($ImageFiles[6][1], "|")
  1654.    $File = $Array[1]
  1655.    $Accuracy = $Array[2]
  1656.  
  1657.    $Target = _ImageSearchArea($ReqFiles & "\pics\" & $File, 1, $DisconnectSearchArea[0], $DisconnectSearchArea[1], $DisconnectSearchArea[2], $DisconnectSearchArea[3], $ISx, $ISy, 10)
  1658.    If $Target = 1 Then
  1659.       ToLog("We got totally disconnected")
  1660.       If $DisconnectState = 0 Then
  1661.          $Disconnects += 1
  1662.          RefreshStats()
  1663.       EndIf
  1664.       $DisconnectState = 2
  1665.        
  1666.       MouseClick("LEFT", $DisconnectButton[0], $DisconnectButton[1], 1, 2)
  1667.       InLoginScreen()
  1668.        
  1669.       If $UseRelogging = True Then
  1670.          Relog()
  1671.          Return "Relogged"
  1672.       Else
  1673.          Terminate()
  1674.       EndIf
  1675.    EndIf
  1676.    Return "Connected"
  1677. EndFunc
  1678.  
  1679. Func CheckForDeath()
  1680.    If $Alive = True Then
  1681.       $Death = PixelSearch($DeathSearchArea[0], $DeathSearchArea[1], $DeathSearchArea[2], $DeathSearchArea[3], 0xFFFFFF)
  1682.       If Not @error Then
  1683.          $Alive = False
  1684.          ToLog("We are dead... :(")
  1685.          $Deaths += 1
  1686.          RefreshStats()
  1687.          LeaveGame()
  1688.          Return "LeftGame"
  1689.       EndIf
  1690.    EndIf
  1691.    Return "Alive"
  1692. EndFunc
  1693.  
  1694.  
  1695. ;Miscellaneous
  1696. Func Initialize()
  1697.    OnAutoItExitRegister('OnAutoItExit')
  1698.    Opt('MouseCoordMode', 2)
  1699.    Opt('PixelCoordMode', 2)
  1700.  
  1701.    HotKeySet('{PAUSE}', 'Pause')
  1702.    HotKeySet('{INS}', 'HideLog')
  1703.    HotKeySet('{END}', 'Terminate')
  1704.  
  1705.    Global $LootAreaGUI
  1706.    Global $LogGUI
  1707.    Global $ImageFiles[8][7]
  1708.    Global $SoundFiles[6]
  1709.    Global $PasswordField[2]
  1710.    Global $ResumeButton[2]
  1711.    Global $LeaveButton[2]
  1712.    Global $DisconnectButton[2]
  1713.    Global $SalvageButton[2]
  1714.    Global $MoveToCellar1[2]
  1715.    Global $MoveToCellar2[2]
  1716.    Global $MoveToCellar3[2]
  1717.    Global $MoveInCellar1[2]
  1718.    Global $MoveInCellar2[2]
  1719.    Global $MoveToGoldLoot1a[2]
  1720.    Global $MoveToGoldLoot1b[2]
  1721.    Global $MoveToGoldLoot2[2]
  1722.    Global $MoveToGoldLoot3[2]
  1723.    Global $MoveToSalvage1[2]
  1724.    Global $MoveToSalvage2[2]
  1725.    Global $MoveToMerchant[2]
  1726.    Global $MoveToStash1[2]
  1727.    Global $MoveToStash2[2]
  1728.    Global $CellarLocation[2]
  1729.    Global $MonsterLocation[2]
  1730.    Global $SalvageLocation[2]
  1731.    Global $MerchantLocation[2]
  1732.    Global $StashLocation[2]
  1733.    Global $PortalLocation[2]
  1734.    Global $CharHitBox[4]
  1735.    Global $LoginButtonSearchArea[4]
  1736.    Global $ResumeButtonSearchArea[4]
  1737.    Global $PortalIconSearchArea[4]
  1738.    Global $CellarSearchArea[4]
  1739.    Global $CellarNameSearchArea[4]
  1740.    Global $TownNameSearchArea[4]
  1741.    Global $MerchStashSearchArea[4]
  1742.    Global $MonsterSearchArea[4]
  1743.    Global $LootingArea[4]
  1744.    Global $FullBagSearchArea[4]
  1745.    Global $SellItemsArea[4]
  1746.    Global $FullStashSearchArea[4]
  1747.    Global $RepairSearchArea[4]
  1748.    Global $DeathSearchArea[4]
  1749.    Global $DisconnectSearchArea[4]
  1750.    Global $StashBag2[2]
  1751.    Global $StashBag3[2]
  1752.    Global $RepairButton[2]
  1753.    Global $AllItemsButton[2]
  1754.    Global $CellarPixel
  1755.    Global $Log
  1756.    Global $StatsLabel
  1757.    Global $StartGoldLabel
  1758.    Global $CurrentGoldLabel
  1759.    Global $DifferenceGoldLabel
  1760.    Global $GPHLabel
  1761.    Global $LogList
  1762.    Global $RuntimeTimer
  1763.    Global $TimeOutTimer
  1764.    Global $RunTimer
  1765.    Global $Paused
  1766.    Global $Show
  1767.    Global $LegendaryLootAttempts = 0
  1768.    Global $SetLootAttempts = 0
  1769.    Global $RareLootAttempts = 0
  1770.    Global $MagicLootAttempts = 0
  1771.    Global $TomeLootAttempts = 0
  1772.    Global $GemLootAttempts = 0
  1773.    Global $StartTime = @HOUR & ":" & @MIN
  1774.    Global $Runs = 0
  1775.    Global $Closed = 0
  1776.    Global $Runtime = "0h 0m 0s"
  1777.    Global $Disconnects = 0
  1778.    Global $Deaths = 0
  1779.    Global $ISx = 0
  1780.    Global $ISy = 0
  1781.    Global $StashBag = 1
  1782.    Global $Alive = True
  1783.    Global $DisconnectState = 0
  1784.    Global $FullBag = False
  1785.    Global $TimeOutCount = 0
  1786.    Global $Relogged = False
  1787.    Global $SellCheck
  1788.    Global $SleepToSalvage
  1789.    Global $SleepToStash
  1790.    Global $StartGold = 0
  1791.    Global $CurrentGold = 0
  1792.    Global $LastGold = 0
  1793.    Global $GoldDifference = 0
  1794.    Global $LastDifferenceGoldLabel = 0
  1795.    Global $GPH = 0
  1796.  
  1797.    $ImageFiles[0][0] = "legendaryA.png|66"
  1798.    $ImageFiles[0][1] = "legendaryE.png|66"
  1799.    $ImageFiles[0][2] = "legendaryI.png|66"
  1800.    $ImageFiles[0][3] = "legendaryO.png|66"
  1801.    $ImageFiles[0][4] = "legendaryU.png|66"
  1802.  
  1803.    $ImageFiles[1][0] = "setA.png|90"
  1804.    $ImageFiles[1][1] = "setE.png|90"
  1805.    $ImageFiles[1][2] = "setU.png|90"
  1806.    $ImageFiles[1][3] = "setO.png|90"
  1807.    $ImageFiles[1][4] = "setI.png|90"
  1808.  
  1809.    $ImageFiles[2][0] = "rareA.png|104"
  1810.    $ImageFiles[2][1] = "rareE.png|104"
  1811.    $ImageFiles[2][2] = "rareI.png|104"
  1812.    $ImageFiles[2][3] = "rareO.png|104"
  1813.    $ImageFiles[2][4] = "rareU.png|104"
  1814.  
  1815.    $ImageFiles[3][0] = "blueA.png|70"
  1816.    $ImageFiles[3][1] = "blueE.png|70"
  1817.    $ImageFiles[3][2] = "blueI.png|70"
  1818.    $ImageFiles[3][3] = "blueO.png|70"
  1819.    $ImageFiles[3][4] = "blueU.png|70"
  1820.  
  1821.    $ImageFiles[4][0] = "tome.png|140"
  1822.    $ImageFiles[4][1] = "iLVL60.png|30"
  1823.    $ImageFiles[4][2] = "iLVL61.png|30"
  1824.    $ImageFiles[4][3] = "iLVL62.png|30"
  1825.    $ImageFiles[4][4] = "iLVL63.png|30"
  1826.    $ImageFiles[4][5] = "square.png|110"
  1827.    $ImageFiles[4][6] = "flawless.png|110"
  1828.  
  1829.    $ImageFiles[5][0] = "empty.png|75"
  1830.    $ImageFiles[5][1] = "corner.png|20"
  1831.    $ImageFiles[5][2] = "sellblueA.png|65"
  1832.    $ImageFiles[5][3] = "sellblueE.png|65"
  1833.    $ImageFiles[5][4] = "sellblueI.png|65"
  1834.    $ImageFiles[5][5] = "sellblueO.png|65"
  1835.    $ImageFiles[5][6] = "sellblueU.png|65"
  1836.    
  1837.    $ImageFiles[6][0] = "network.png|10"
  1838.    $ImageFiles[6][1] = "lost.png|10"
  1839.    $ImageFiles[6][2] = "bg.jpg|5"
  1840.    $ImageFiles[6][3] = "not.png|120"
  1841.    $ImageFiles[6][4] = "you.png|100"
  1842.    
  1843.    $ImageFiles[7][0] = "dank.png|120"
  1844.    $ImageFiles[7][1] = "new.png|120"
  1845.    $ImageFiles[7][2] = "game.png|20"
  1846.    $ImageFiles[7][3] = "portal.png|120"
  1847.    $ImageFiles[7][4] = "login.png|10"
  1848.    $ImageFiles[7][5] = "merchant.png|20"
  1849.    $ImageFiles[7][6] = "stash.png|20"
  1850.  
  1851.    $SoundFiles[0] = "legendary.wav"
  1852.    $SoundFiles[1] = "set.wav"
  1853.    $SoundFiles[2] = "rare.wav"
  1854.    $SoundFiles[3] = "magic.wav"
  1855.    $SoundFiles[4] = "tome.wav"
  1856.    $SoundFiles[5] = "gem.wav"
  1857.    
  1858.    $CharHitBox[0] = 790
  1859.    $CharHitBox[1] = 315
  1860.    $CharHitBox[2] = 1200
  1861.    $CharHitBox[3] = 730
  1862.  
  1863.    $LoginButtonSearchArea[0] = 930
  1864.    $LoginButtonSearchArea[1] = 845
  1865.    $LoginButtonSearchArea[2] = 985
  1866.    $LoginButtonSearchArea[3] = 860
  1867.  
  1868.    $ResumeButtonSearchArea[0] = 250
  1869.    $ResumeButtonSearchArea[1] = 410
  1870.    $ResumeButtonSearchArea[2] = 310
  1871.    $ResumeButtonSearchArea[3] = 425
  1872.  
  1873.    $PortalIconSearchArea[0] = 1095
  1874.    $PortalIconSearchArea[1] = 1000
  1875.    $PortalIconSearchArea[2] = 1140
  1876.    $PortalIconSearchArea[3] = 1060
  1877.  
  1878.    $CellarSearchArea[0] = 163
  1879.    $CellarSearchArea[1] = 0
  1880.    $CellarSearchArea[2] = 372
  1881.    $CellarSearchArea[3] = 107
  1882.  
  1883.    $CellarNameSearchArea[0] = 1760
  1884.    $CellarNameSearchArea[1] = 10
  1885.    $CellarNameSearchArea[2] = 1820
  1886.    $CellarNameSearchArea[3] = 30
  1887.  
  1888.    $TownNameSearchArea[0] = 1745
  1889.    $TownNameSearchArea[1] = 10
  1890.    $TownNameSearchArea[2] = 1795
  1891.    $TownNameSearchArea[3] = 30
  1892.  
  1893.    $MerchStashSearchArea[0] = 225
  1894.    $MerchStashSearchArea[1] = 30
  1895.    $MerchStashSearchArea[2] = 300
  1896.    $MerchStashSearchArea[3] = 115
  1897.  
  1898.    $MonsterSearchArea[0] = 170
  1899.    $MonsterSearchArea[1] = 75
  1900.    $MonsterSearchArea[2] = 1270
  1901.    $MonsterSearchArea[3] = 470
  1902.  
  1903.    $FullBagSearchArea[0] = 795
  1904.    $FullBagSearchArea[1] = 125
  1905.    $FullBagSearchArea[2] = 830
  1906.    $FullBagSearchArea[3] = 160
  1907.  
  1908.    $SellItemsArea[0] = 960
  1909.    $SellItemsArea[1] = 510
  1910.    $SellItemsArea[2] = 1680
  1911.    $SellItemsArea[3] = 910
  1912.    
  1913.    $FullStashSearchArea[0] = 700
  1914.    $FullStashSearchArea[1] = 135
  1915.    $FullStashSearchArea[2] = 730
  1916.    $FullStashSearchArea[3] = 155
  1917.  
  1918.    $RepairSearchArea[0] = 1507
  1919.    $RepairSearchArea[1] = 36
  1920.    $RepairSearchArea[2] = 1512
  1921.    $RepairSearchArea[3] = 41
  1922.  
  1923.    $DeathSearchArea[0] = 538
  1924.    $DeathSearchArea[1] = 335
  1925.    $DeathSearchArea[2] = 542
  1926.    $DeathSearchArea[3] = 339
  1927.  
  1928.    $DisconnectSearchArea[0] = 840
  1929.    $DisconnectSearchArea[1] = 410
  1930.    $DisconnectSearchArea[2] = 950
  1931.    $DisconnectSearchArea[3] = 440
  1932. EndFunc
  1933.  
  1934. Func Randomize()
  1935.     ToLog("Randomizing Values...")
  1936. ;////////////////////////////////////////////Customize-Start////////////////////////////////////////////////////////////////////////// 
  1937.     ;                                        Delays                                                                                 //
  1938.  
  1939.     $ComputerLag            = Random(0, 200, 1)                                                 ;Increases time (ms) before and after casting spells    //
  1940.     $MoveDelay              = Random(0, 45, 1)                                                  ;Increases time (ms) between movements                  //
  1941.     $LootDelay              = Random(0, 45, 1)                                                  ;Increases time (ms) between looting                    //
  1942.     $SellDelay              = Random(0, 45, 1)                                                  ;Increases time (ms) between selling                    //
  1943.     $SalvageDelay           = Random(0, 45, 1)                                                  ;Increases time (ms) between salvaging                  //
  1944.     $StashDelay             = Random(0, 45, 1)                                                  ;Increases time (ms) between stashing                   //
  1945.     ;                                        Looting Area                                                                                   //
  1946.     $LootingArea[0]         = Random(550, 590, 1)                                               ;Left   (lower -> bigger)                               //
  1947.     $LootingArea[1]         = Random(175, 195, 1)                                               ;Top    (lower -> bigger)                               //
  1948.     $LootingArea[2]         = Random(1365, 1385, 1)                                             ;Right  (higher -> bigger)                              //
  1949.     $LootingArea[3]         = Random(710, 730, 1)                                               ;Bot    (higher -> bigger)                              //
  1950.     ;                                        TimeOuts                                                                                   //
  1951.     $GameLobbyTimeOut       = Random(23, 26, 1)                                             ;Time (s) to wait for entering the gamelobby            //
  1952.     $GameplayScreenTimeOut  = Random(12, 15, 1)                                             ;Time (s) to wait for entering the gameplay screen      //
  1953.     $CellarTimeOut          = Random(7, 10, 1)                                                  ;Time (s) to wait for entering the cellar               //
  1954.     $TownTimeOut            = Random(7, 10, 1)                                                  ;Time (s) to wait for entering the town                 //
  1955.     $MerchantTimeOut        = Random(7, 10, 1)                                                  ;Time (s) to wait for reaching the merchant             //
  1956.     $ArtisanTimeOut         = Random(7, 10, 1)                                                  ;Time (s) to wait for reaching the artisan              //
  1957.     $StashTimeOut           = Random(7, 10, 1)                                                  ;Time (s) to wait for reaching the stash                //
  1958.     ;
  1959. ;////////////////////////////////////////////Customize-End//////////////////////////////////////////////////////////////////////////// 
  1960.  
  1961.    $MoveToCellar1[0] = Random(498, 503, 1)
  1962.    $MoveToCellar1[1] = Random(248, 253, 1)
  1963.    $MoveToCellar2[0] = Random(1, 4, 1)
  1964.    $MoveToCellar2[1] = Random(368, 373, 1)
  1965.    $MoveToCellar3[0] = Random(398, 403, 1)
  1966.    $MoveToCellar3[1] = Random(598, 603, 1)
  1967.  
  1968.    $MoveInCellar1[0] = Random(114, 119, 1)
  1969.    $MoveInCellar1[1] = Random(984, 989, 1)
  1970.    $MoveInCellar2[0] = Random(774, 779, 1)
  1971.    $MoveInCellar2[1] = Random(326, 331, 1)
  1972.    
  1973.    $MoveToGoldLoot1a[0] = Random(385, 425, 1)
  1974.    $MoveToGoldLoot1a[1] = Random(284, 329, 1)
  1975.    $MoveToGoldLoot1b[0] = Random(540, 575, 1)
  1976.    $MoveToGoldLoot1b[1] = Random(280, 305, 1)
  1977.    $MoveToGoldLoot2[0] = Random(1238, 1263, 1)
  1978.    $MoveToGoldLoot2[1] = Random(339, 354, 1)
  1979.    $MoveToGoldLoot3[0] = Random(899, 914, 1)
  1980.    $MoveToGoldLoot3[1] = Random(672, 697, 1)
  1981.  
  1982.    $MoveToMerchant[0] = Random(1688, 1693, 1)
  1983.    $MoveToMerchant[1] = Random(100, 105, 1)
  1984.    $MerchantLocation[0] = Random(928, 933, 1)
  1985.    $MerchantLocation[1] = Random(134, 139, 1)
  1986.  
  1987.    If $Salvage = False Then
  1988.       If $Sell = True Then
  1989.          $MoveToStash1[0] = Random(778, 783, 1)
  1990.          $MoveToStash1[1] = Random(948, 953, 1)
  1991.          $MoveToStash2[0] = Random(268, 273, 1)
  1992.          $MoveToStash2[1] = Random(928, 933, 1)
  1993.          $StashLocation[0] = Random(803, 808, 1)
  1994.          $StashLocation[1] = Random(428, 433, 1)
  1995.          $PortalLocation[0] = Random(648, 653, 1)
  1996.          $PortalLocation[1] = Random(498, 503, 1)
  1997.          $SleepToStash = 1675
  1998.       Else
  1999.          $StashLocation[0] = Random(1047, 1052, 1)
  2000.          $StashLocation[1] = Random(257, 262, 1)
  2001.          $PortalLocation[0] = Random(877, 882, 1)
  2002.          $PortalLocation[1] = Random(427, 432, 1)
  2003.       EndIf
  2004.    Else
  2005.       If $Sell = False Then
  2006.          $MoveToSalvage1[0] = Random(1397, 1402, 1)
  2007.          $MoveToSalvage1[1] = Random(497, 502, 1)
  2008.          $MoveToSalvage2[0] = Random(1497, 1502, 1)
  2009.          $MoveToSalvage2[1] = Random(497, 502, 1)
  2010.          $SalvageLocation[0] = Random(1280, 1285, 1)
  2011.          $SalvageLocation[1] = Random(397, 402, 1)
  2012.          $MoveToStash1[0] = Random(397, 402, 1)
  2013.          $MoveToStash1[1] = Random(482, 487, 1)
  2014.          $MoveToStash2[0] = Random(597, 602, 1)
  2015.          $MoveToStash2[1] = Random(447, 452, 1)
  2016.          $StashLocation[0] = Random(852, 857, 1)
  2017.          $StashLocation[1] = Random(347, 352, 1)
  2018.          $PortalLocation[0] = Random(782, 787, 1)
  2019.          $PortalLocation[1] = Random(427, 432, 1)
  2020.          $SleepToSalvage = 1250
  2021.          $SleepToStash = 1325
  2022.       Else
  2023.          $MoveToSalvage1[0] = Random(802, 807, 1)
  2024.          $MoveToSalvage1[1] = Random(957, 962, 1)
  2025.          $MoveToSalvage2[0] = Random(927, 932, 1)
  2026.          $MoveToSalvage2[1] = Random(942, 947, 1)
  2027.          $SalvageLocation[0] = Random(1557, 1562, 1)
  2028.          $SalvageLocation[1] = Random(587, 592, 1)
  2029.          $MoveToStash1[0] = Random(397, 402, 1)
  2030.          $MoveToStash1[1] = Random(482, 487, 1)
  2031.          $MoveToStash2[0] = Random(597, 602, 1)
  2032.          $MoveToStash2[1] = Random(447, 452, 1)
  2033.          $StashLocation[0] = Random(850, 855, 1)
  2034.          $StashLocation[1] = Random(382, 387, 1)
  2035.          $PortalLocation[0] = Random(747, 752, 1)
  2036.          $PortalLocation[1] = Random(447, 452, 1)
  2037.          $SleepToSalvage = 1550
  2038.          $SleepToStash = 1550
  2039.       EndIf
  2040.    EndIf
  2041.  
  2042.    $CellarLocation[0] = Random(305, 309, 1)
  2043.    $CellarLocation[1] = Random(72, 76, 1)
  2044.  
  2045.    $MonsterLocation[0] = Random(575, 580, 1)
  2046.    $MonsterLocation[1] = Random(181, 186, 1)
  2047.  
  2048.    $StashBag2[0] = Random(508, 513, 1)
  2049.    $StashBag2[1] = Random(358, 363, 1)
  2050.  
  2051.    $StashBag3[0] = Random(508, 513, 1)
  2052.    $StashBag3[1] = Random(488, 493, 1)
  2053.  
  2054.    $RepairButton[0] = Random(515, 520, 1)
  2055.    $RepairButton[1] = Random(481, 486, 1)
  2056.  
  2057.    $AllItemsButton[0] = Random(221, 226, 1)
  2058.    $AllItemsButton[1] = Random(590, 595, 1)
  2059.  
  2060.    $PasswordField[0] = Random(818, 823, 1)
  2061.    $PasswordField[1] = Random(703, 708, 1)
  2062.  
  2063.    $ResumeButton[0] = Random(317, 322, 1)
  2064.    $ResumeButton[1] = Random(414, 419, 1)
  2065.  
  2066.    $LeaveButton[0] = Random(967, 972, 1)
  2067.    $LeaveButton[1] = Random(580, 584, 1)
  2068.  
  2069.    $DisconnectButton[0] = Random(958, 963, 1)
  2070.    $DisconnectButton[1] = Random(628, 633, 1)
  2071.  
  2072.    $SalvageButton[0] = Random(262, 267, 1)
  2073.    $SalvageButton[1] = Random(292, 297, 1)
  2074. EndFunc
  2075.  
  2076. Func ScriptStarted()
  2077.    CheckRequiredFiles()
  2078.  
  2079.    If $LootLegendaries Then
  2080.       Global $Legendaries = 0
  2081.    Else
  2082.       Global $Legendaries = "-"
  2083.    EndIf
  2084.  
  2085.    If $LootSets Then
  2086.       Global $Sets = 0
  2087.    Else
  2088.       Global $Sets = "-"
  2089.    EndIf
  2090.  
  2091.    If $LootRares Then
  2092.       Global $Rares = 0
  2093.    Else
  2094.       Global $Rares = "-"
  2095.    EndIf
  2096.  
  2097.    If $LootMagics Then
  2098.       Global $Magics = 0
  2099.       Global $Tomes = "-"
  2100.    Else
  2101.       Global $Magics = "-"
  2102.       If $LootTomes Then
  2103.          Global $Tomes = "0"
  2104.       Else
  2105.          Global $Tomes = "-"
  2106.       EndIf
  2107.    EndIf
  2108.  
  2109.    If $LootGems Then
  2110.       Global $Gems = 0
  2111.    Else
  2112.       Global $Gems = "-"
  2113.    EndIf
  2114.  
  2115.    If $Sell Then
  2116.       Global $Sold = 0
  2117.    Else
  2118.       Global $Sold = "-"
  2119.    EndIf
  2120.  
  2121.    If $Salvage Then
  2122.       Global $Salvaged = 0
  2123.    Else
  2124.       Global $Salvaged = "-"
  2125.    EndIf
  2126.  
  2127.    Pause()
  2128.  
  2129.    $RuntimeTimer = TimerInit()
  2130.  
  2131.    If $ShowLog = True Then
  2132.       DrawLog()
  2133.    EndIf
  2134.  
  2135.    If $ShowLog = True Or $SaveStats = True Then
  2136.       DirGetSize($SaveLogsPath)
  2137.       If @error = 1 Then
  2138.          DirCreate($SaveLogsPath)
  2139.       EndIf
  2140.    EndIf
  2141.  
  2142.    ToLog("Bot started")
  2143.  
  2144.    WinActivate('Diablo III')
  2145. EndFunc
  2146.  
  2147. Func CheckRequiredFiles()
  2148.    If (@OSArch = "X64" Or @OSArch = "IA64") And Not @AutoItX64 Then
  2149.       MsgBox(4096, "Error", "You are running a 64bit system. You need to start the script" & @LF & "with 'Run Script (x64)' or 'Compile Script (x64)'" & @LF & "Exiting...")
  2150.       Exit 0
  2151.    EndIf
  2152.  
  2153.    Local $Files[4]
  2154.    $Files[0] = "msvcr110.dll"
  2155.    $Files[1] = "msvcr110d.dll"
  2156.  
  2157.    If @AutoItX64 Then
  2158.       $Files[2] = "ImageSearchDLL_x64.dll"
  2159.    Else
  2160.       $Files[2] = "ImageSearchDLL.dll"
  2161.    EndIf
  2162.      
  2163.    $Files[3] = "tesseract.exe"
  2164.  
  2165.    For $i = 0 To 2
  2166.       If Not FileExists(@WindowsDir & "\System32\" & $Files[$i]) Then
  2167.          If Not FileExists($Files[$i]) Then
  2168.             MsgBox(4096, "Error", "Couldn't find '" & $Files[$i] & "'." & @LF & "Make sure you have put that file into '" & @WindowsDir & "\System32\' or into the script folder." & @LF & "Exiting...")
  2169.             Exit 0
  2170.          EndIf
  2171.       EndIf
  2172.    Next
  2173.  
  2174.    If Not FileExists($ReqFiles & "tesseract\" & $Files[3]) Then
  2175.       MsgBox(4096, "Error", "Couldn't find '" & $Files[3] & "'." & @LF & "Make sure you are using the latest required files." & @LF & "Exiting...")
  2176.       Exit 0
  2177.    EndIf
  2178.  
  2179.    For $i = 0 To UBound($ImageFiles, 1) - 1
  2180.       For $x = 0 To UBound($ImageFiles, 2) - 1
  2181.          If Not $ImageFiles[$i][$x] = "" Then
  2182.             $Array = StringSplit($ImageFiles[$i][$x], "|")
  2183.             $File = $Array[1]
  2184.             If Not FileExists($ReqFiles & "pics\" & $File) Then
  2185.                MsgBox(4096, "Error", "Couldn't find '" & $File & "'." & @LF & "Either you have set the path to the required files folder wrong or you aren't using latest required files." & @LF & "Exiting...")
  2186.                Exit 0
  2187.             EndIf
  2188.          EndIf
  2189.       Next
  2190.    Next
  2191. EndFunc
  2192.  
  2193. Func Pause()
  2194.    $Paused = Not $Paused
  2195.    If $Paused Then ToLog("Paused...")
  2196.    
  2197.    While $Paused
  2198.       Sleep(250)
  2199.       ToolTip('Paused... Press {PAUSE} to continue...', 850, 0)
  2200.    WEnd
  2201.  
  2202.    ToolTip('Running... Press {PAUSE} to pause...', 850, 0)
  2203. EndFunc
  2204.  
  2205. Func RandomizeInventory()
  2206.    Global $Stash[60][2]
  2207.    $c = 0
  2208.    $d = -2
  2209.    For $a = 0 To 59
  2210.       $d += 1
  2211.       If $a = 10 Or $a = 20 Or $a = 30 Or $a = 40 Or $a = 50 Then
  2212.          $c += 1
  2213.          $d = -1
  2214.       EndIf
  2215.       For $b = 0 To 1
  2216.          If $a = 0 Then
  2217.             If $b = 0 Then
  2218.                $Stash[$a][$b] = 1430
  2219.             Else
  2220.                $Stash[$a][$b] = 560
  2221.             EndIf
  2222.          Else
  2223.             If $b = 0 Then
  2224.                $Stash[$a][$b] = Random(1473, 1483, 1) + (49 * $d)
  2225.             Else
  2226.                $Stash[$a][$b] = Random(606, 614, 1) + (49 * $c)
  2227.             EndIf
  2228.          EndIf
  2229.       Next
  2230.    Next
  2231. EndFunc
  2232.  
  2233. Func DrawLootArea()
  2234.    $LootingAreaWidth = $LootingArea[2] - $LootingArea[0]
  2235.    $LootingAreaHeight = $LootingArea[3] - $LootingArea[1]
  2236.    $LootAreaGUI = GUICreate("", $LootingAreaWidth + 2, $LootingAreaHeight + 2, $LootingArea[0], $LootingArea[1], $WS_POPUP, BitOR($WS_EX_LAYERED, BitOR($WS_EX_TOOLWINDOW, $WS_EX_TRANSPARENT)))
  2237.    GUISetBkColor(0xABCDEF)
  2238.    _WinAPI_SetLayeredWindowAttributes($LootAreaGUI, 0xABCDEF, 0xA0)
  2239.    WinSetOnTop($LootAreaGUI, "", 1)
  2240.    GUISetState(@SW_SHOWNOACTIVATE, $LootAreaGUI)
  2241.    $hDC = _WinAPI_GetWindowDC($LootAreaGUI)
  2242.    $hPen = _WinAPI_CreatePen($PS_SOLID, 2, 0x0000FF)
  2243.    $obj_orig = _WinAPI_SelectObject($hDC, $hPen)
  2244.    $user32_dll = DllOpen("user32.dll")
  2245.    _WinAPI_DrawLine($hDC, 0, 1, $LootingAreaWidth, 0)
  2246.    _WinAPI_DrawLine($hDC, 1, 0, 0, $LootingAreaHeight)
  2247.    _WinAPI_DrawLine($hDC, $LootingAreaWidth, $LootingAreaHeight, $LootingAreaWidth, 0)
  2248.    _WinAPI_DrawLine($hDC, $LootingAreaWidth, $LootingAreaHeight, 0, $LootingAreaHeight)
  2249.  
  2250.    _WinAPI_SetTextColor($hDC, 0x0000FF)
  2251.    _WinAPI_SetBkMode($hDC, $TRANSPARENT)
  2252.  
  2253.    $tRECT = DllStructCreate($tagRect)
  2254.    DllStructSetData($tRECT, "Left", 5)
  2255.    DllStructSetData($tRECT, "Top", 5)
  2256.    DllStructSetData($tRECT, "Right", 250)
  2257.    DllStructSetData($tRECT, "Bottom", 50)
  2258.  
  2259.    _WinAPI_DrawText($hDC, "Loot Area", $tRECT, 0)
  2260. EndFunc
  2261.  
  2262. Func DrawLog()
  2263.    $Width = 475
  2264.    $Height = 225
  2265.    $LogGUI = GUICreate("", $Width, $Height, 900 - $Width, 1080 - $Height - 2, $WS_POPUPWINDOW, BitOR($WS_EX_LAYERED, BitOR($WS_EX_TOOLWINDOW, $WS_EX_TRANSPARENT)))
  2266.    GUISetBkColor(0x424242)
  2267.    GUICtrlCreatePic($ReqFiles & "\pics\" & StringTrimRight($ImageFiles[6][2], 2), 0, 0, 0, 0)
  2268.    _WinAPI_SetLayeredWindowAttributes($LogGUI, 0xEEEEEF, 0xEE)
  2269.    WinSetOnTop($LogGUI, "", 1)
  2270.    GUISetState(@SW_SHOWNOACTIVATE, $LogGUI)
  2271.  
  2272.    $StatsLabel = GUICtrlCreateLabel("", 0, 10, $Width, 45, $SS_CENTER)
  2273.    GUICtrlSetFont($StatsLabel, 8, 500, 0, "")
  2274.    GUICtrlSetColor($StatsLabel, 0xFFFFFF)
  2275.    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
  2276.    
  2277.    $CurrentGoldLabel = GUICtrlCreateLabel("", 0, $Height - 23, 88, 15, $SS_RIGHT)
  2278.    GUICtrlSetFont($CurrentGoldLabel, 9, 2000, 0, "Arial")
  2279.    GUICtrlSetColor($CurrentGoldLabel, 0xFFFFFF)
  2280.    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
  2281.    GUICtrlSetData($CurrentGoldLabel, "Current Gold")
  2282.    
  2283.    $DifferenceGoldLabel = GUICtrlCreateLabel("", 115, $Height - 23, 88, 15, $SS_RIGHT)
  2284.    GUICtrlSetFont($DifferenceGoldLabel, 9, 2000, 0, "Arial")
  2285.    GUICtrlSetColor($DifferenceGoldLabel, 0xFFFFFF)
  2286.    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
  2287.    GUICtrlSetData($DifferenceGoldLabel, "Total gold gain")
  2288.    
  2289.    $LastDifferenceGoldLabel = GUICtrlCreateLabel("", 231, $Height - 23, 88, 15, $SS_RIGHT)
  2290.    GUICtrlSetFont($LastDifferenceGoldLabel, 9, 2000, 0, "Arial")
  2291.    GUICtrlSetColor($LastDifferenceGoldLabel, 0xFFFFFF)
  2292.    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
  2293.    GUICtrlSetData($LastDifferenceGoldLabel, "Last gold gain")
  2294.    
  2295.    $GPHLabel = GUICtrlCreateLabel("", 347, $Height - 23, 88, 15, $SS_RIGHT)
  2296.    GUICtrlSetFont($GPHLabel, 9, 2000, 0, "Arial")
  2297.    GUICtrlSetColor($GPHLabel, 0xFFFFFF)
  2298.    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
  2299.    GUICtrlSetData($GPHLabel, "Gold per hour")
  2300.        
  2301.    $Version = GUICtrlCreateLabel("", 5, 2, 100, 20, $SS_LEFT)
  2302.    GUICtrlSetFont($Version, 7, 500, 0, "")
  2303.    GUICtrlSetColor($Version, 0x000000)
  2304.    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
  2305.    GUICtrlSetData($Version, "v1.3e +")
  2306.  
  2307.    $Copyright = GUICtrlCreateLabel("", $Width - 55, 2, 50, 20, $SS_RIGHT)
  2308.    GUICtrlSetFont($Copyright, 7, 500, 0, "")
  2309.    GUICtrlSetColor($Copyright, 0x000000)
  2310.    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
  2311.    GUICtrlSetData($Copyright, "©zEEneXx - MisterBob")
  2312.  
  2313.    $LogList = GUICtrlCreateList("", 5, 60, $Width - 10, $Height - 85, $LBS_NOSEL)
  2314.    GUICtrlSetColor($LogList, 0x000000)
  2315.    GUICtrlSetFont($LogList, 8)
  2316.    
  2317.    RefreshStats()
  2318. EndFunc
  2319.  
  2320. Func HideLog()
  2321.    If Not $Show Then
  2322.       GUISetState(@SW_HIDE, $LogGUI)
  2323.    Else
  2324.       GUISetState(@SW_SHOWNOACTIVATE, $LogGUI)
  2325.    EndIf
  2326.    $Show = Not $Show
  2327. EndFunc
  2328.  
  2329. Func GetGold()
  2330.    $Sek = Floor(TimerDiff($RuntimeTimer) / 1000)
  2331.    
  2332.    Send("{c}")
  2333.    Sleep(Random(355, 435, 1) + ($ComputerLag/2))
  2334.    $CurrentGold = _TesseractScreenCapture(0, "", 1, 1, 6000, 905, 1435, 1000, 0)
  2335.    Sleep(Random(85, 125, 1) + ($ComputerLag/2))
  2336.    $CurrentGold = StringReplace($CurrentGold,",","")
  2337.    $CurrentGold = StringReplace($CurrentGold,"'","")
  2338.    $CurrentGold = StringReplace($CurrentGold,"´","")
  2339.    $CurrentGold = StringReplace($CurrentGold,"`","")
  2340.    $CurrentGold = StringReplace($CurrentGold,"‘","")
  2341.    $CurrentGold = StringReplace($CurrentGold," ","")
  2342.    $CurrentGold = StringReplace($CurrentGold,"i","1")
  2343.    $CurrentGold = StringReplace($CurrentGold,"l","1")
  2344.    $CurrentGold = StringReplace($CurrentGold,"o","0")
  2345.    $CurrentGold = StringReplace($CurrentGold,"s","5")
  2346.    $CurrentGold = StringReplace($CurrentGold,@LF,"")
  2347.    Send("{c}")
  2348.    
  2349.    If $StartGold = 0 Then
  2350.       $StartGold = $CurrentGold
  2351.       $LastGold = $StartGold
  2352.       GUICtrlSetData($CurrentGoldLabel, _StringAddThousandsSep($CurrentGold))
  2353.    Else
  2354.       $GoldDifference = $CurrentGold - $StartGold
  2355.       $LastGoldDifference = $CurrentGold - $LastGold
  2356.       $LastGold = $CurrentGold
  2357.       $Sek = Floor(TimerDiff($RuntimeTimer) / 1000)
  2358.       $GPH = Floor(($CurrentGold - $StartGold) / ($Sek / 3600))
  2359.       GUICtrlSetData($CurrentGoldLabel, _StringAddThousandsSep($CurrentGold))
  2360.       GUICtrlSetData($DifferenceGoldLabel, _StringAddThousandsSep($GoldDifference))
  2361.       GUICtrlSetData($LastDifferenceGoldLabel, _StringAddThousandsSep($LastGoldDifference))
  2362.       GUICtrlSetData($GPHLabel, _StringAddThousandsSep($GPH))
  2363.    EndIf
  2364. EndFunc
  2365.  
  2366. Func RefreshStats()
  2367.    If $ShowLog = True Then
  2368.       GUICtrlSetData($StatsLabel, "Start: " & $StartTime & "  |  Runs: " & $Runs & "  |  Closed:  " & $Closed & "  |  Deaths: " & $Deaths & "  |  Disconnects: " & $Disconnects & @LF & @LF & "Sets: " & $Sets & "  |  Legendaries: " & $Legendaries & "  |  Rares: " & $Rares & "  |  Magics: " & $Magics & "  |  Tomes: " & $Tomes & "  |  Gems: " & $Gems & "  |  Sold: " & $Sold & "  |  Salvaged: " & $Salvaged)
  2369.    EndIf
  2370. EndFunc
  2371.  
  2372. Func ToLog($Text)
  2373.    If $ShowLog = True Then
  2374.       GUICtrlSetData($LogList, "<" & @HOUR & ":" & @MIN & ":" & @SEC & "> " & $Text)
  2375.       GUICtrlSendMsg($LogList, $WM_VSCROLL, $SB_LINEDOWN, 0)
  2376.  
  2377.       $Log = FileOpen($SaveLogsPath & "log.txt", 1)
  2378.       FileWriteLine($Log, "<" & @HOUR & ":" & @MIN & ":" & @SEC & "> " & $Text)
  2379.       If $Text = "Bot closed" Then
  2380.          FileWriteLine($Log, @LF)
  2381.       EndIf
  2382.       FileClose($Log)
  2383.    EndIf
  2384. EndFunc
  2385.  
  2386. Func Relog()
  2387.    ToLog("Relogging...")
  2388.    MouseClick("LEFT", $PasswordField[0], $PasswordField[1], 1, 2)
  2389.    Send($Password)
  2390.  
  2391.    Sleep(Random(855, 1095, 1) + $ComputerLag)
  2392.    Send("{ENTER}")
  2393.  
  2394.    $Relogged = True
  2395.    $DisconnectState = 0
  2396. EndFunc
  2397.  
  2398. Func SaveStats()
  2399.    $File = FileOpen($SaveLogsPath & "statistics.txt", 1)
  2400.    FileWriteLine($File, "=========" & @HOUR & ":" & @MIN & ":" & @SEC & "=========")
  2401.    FileWriteLine($File, "Startime: " & @TAB & @TAB & $StartTime & @LF & "Runs: " & @TAB & @TAB & $Runs & @LF & "Closed: " & @TAB & @TAB & $Closed & @LF & "Deaths: " & @TAB & @TAB & $Deaths & @LF & "Disconnects: " & @TAB & $Disconnects & @LF & "Runtime: " & @TAB & @TAB & $Runtime & @LF & @LF & "Sets: " & @TAB & @TAB & $Sets & @LF & "Legendaries: " & @TAB & $Legendaries & @LF & "Rares: " & @TAB & @TAB & $Rares & @LF & "Magics: " & @TAB & @TAB & $Magics & @LF & "Tomes: " & @TAB & @TAB & $Tomes & @LF & "Gems: " & @TAB & @TAB & $Gems & @LF & "Sold: " & @TAB & @TAB & $Sold & @LF & "Salvaged: " & @TAB & @TAB & $Salvaged & @LF & @LF & "Startgold: " & @TAB & _StringAddThousandsSep($StartGold) & @LF & "Current gold: " & @TAB & _StringAddThousandsSep($CurrentGold) & @LF & "Gold gain: " & @TAB & _StringAddThousandsSep($GoldDifference) & @LF & "Gold per hour: " & @TAB & _StringAddThousandsSep($GPH))
  2402.    FileWriteLine($File, @LF)
  2403.    FileClose($File)
  2404. EndFunc
  2405.  
  2406. Func Move($x, $y)
  2407.    MouseClick('MIDDLE', $x, $y, 1, 2)
  2408. EndFunc
  2409.  
  2410. Func Attack($x, $y)
  2411.    Send("{SHIFTDOWN}")
  2412.    MouseClick('LEFT', $x, $y, 1, 2)
  2413.    Send("{SHIFTUP}")
  2414. EndFunc
  2415.  
  2416. Func AttackNearbyMonsters()
  2417.    $Logged = False
  2418.    While 1
  2419.       $MonsterData = PixelSearch($CharHitBox[0], $CharHitBox[1], $CharHitBox[2], $CharHitBox[3], 0xEE0000, 10)
  2420.       If @error Then
  2421.          ExitLoop
  2422.       EndIf
  2423.        
  2424.       If $Logged = False Then
  2425.          ToLog("Monster found...")
  2426.       EndIf
  2427.        
  2428.       Attack($MonsterData[0], $MonsterData[1])
  2429.       Sleep(Random(85, 125, 1))
  2430.  
  2431.        
  2432.       $Logged = True
  2433.    WEnd
  2434. EndFunc
  2435.  
  2436. Func LeaveGame()
  2437.    $Sek = Floor(TimerDiff($RuntimeTimer) / 1000)
  2438.    $Min = Floor($Sek / 60)
  2439.    $Hour = Floor($Min / 60)
  2440.    $Runtime = $Hour & "h " & ($Min - $Hour * 60) & "m " & ($Sek - $Min * 60) & "s"
  2441.    If $SaveStats = True Then
  2442.       SaveStats()
  2443.    EndIf
  2444.    
  2445.    If $InstantLeave = True Then GetGold()
  2446.  
  2447.    ToLog("Leaving the game")
  2448.  
  2449.    Sleep(Random(185, 225, 1) + ($ComputerLag / 2))
  2450.  
  2451.    Send("{ESC}")
  2452.    Sleep(Random(85, 125, 1) + ($ComputerLag / 2))
  2453.  
  2454.    MouseClick('LEFT', $LeaveButton[0], $LeaveButton[1], 1, 2)
  2455.    Return "LeftGame"
  2456. EndFunc
  2457.  
  2458. Func Terminate()
  2459.    ToLog("Terminating... Good bye :)")
  2460.    Exit 0
  2461. EndFunc
  2462.  
  2463. Func _ImageSearchArea($FindImage, $ResultPosition, $x1, $y1, $right, $bottom, ByRef $x, ByRef $y, $Tolerance)
  2464.    If $Tolerance > 0 Then $FindImage = "*" & $Tolerance & " " & $FindImage
  2465.    
  2466.    If @AutoItX64 Then
  2467.       $Result = DllCall("ImageSearchDLL_x64.dll", "str", "ImageSearch", "int", $x1, "int", $y1, "int", $right, "int", $bottom, "str", $FindImage)
  2468.    Else
  2469.       $Result = DllCall("ImageSearchDLL.dll", "str", "ImageSearch", "int", $x1, "int", $y1, "int", $right, "int", $bottom, "str", $FindImage)
  2470.    EndIf
  2471.    
  2472.    If $Result = "0" Then Return 0
  2473.    
  2474.    $Array = StringSplit($Result[0], "|")
  2475.  
  2476.    If (UBound($Array) >= 4) Then
  2477.       $x = Int(Number($Array[2]))
  2478.       $y = Int(Number($Array[3]))
  2479.        
  2480.       If $ResultPosition = 1 Then
  2481.          $x = $x + Int(Number($Array[4]) / 2)
  2482.          $y = $y + Int(Number($Array[5]) / 2)
  2483.       EndIf
  2484.       Return 1
  2485.    EndIf
  2486.  EndFunc
  2487.  
  2488. Func _TesseractScreenCapture($get_last_capture = 0, $delimiter = "", $cleanup = 1, $scale = 2, $left_indent = 0, $top_indent = 0, $right_indent = 0, $bottom_indent = 0, $show_capture = 0)
  2489.    Global $last_capture
  2490.    Global $tesseract_temp_path = "C:\"
  2491.    Local $tInfo
  2492.    Local $tSCROLLINFO = DllStructCreate($tagSCROLLINFO)
  2493.    Dim $aArray, $final_ocr[1], $xyPos_old = -1, $capture_scale = 3
  2494.    
  2495.    DllStructSetData($tSCROLLINFO, "cbSize", DllStructGetSize($tSCROLLINFO))
  2496.    DllStructSetData($tSCROLLINFO, "fMask", $SIF_ALL)
  2497.    
  2498.    If $last_capture = "" Then
  2499.       $last_capture = ObjCreate("Scripting.Dictionary")
  2500.    EndIf
  2501.  
  2502.    If $get_last_capture = 1 and $last_capture.item(0) <> "" Then
  2503.       Return $last_capture.item(0)
  2504.    EndIf
  2505.    
  2506.    $capture_filename = _TempFile($tesseract_temp_path, "~", ".tif")
  2507.    $ocr_filename = StringLeft($capture_filename, StringLen($capture_filename) - 4)
  2508.    $ocr_filename_and_ext = $ocr_filename & ".txt"
  2509.    
  2510.    CaptureToTIFF("", "", "", $capture_filename, $scale, $left_indent, $top_indent, $right_indent, $bottom_indent)
  2511.    ShellExecuteWait($ReqFiles & "\tesseract\tesseract.exe", $capture_filename & " " & $ocr_filename, "", "", @SW_HIDE)
  2512.    
  2513.    If StringCompare($delimiter, "") = 0 Then
  2514.       $final_ocr = FileRead($ocr_filename_and_ext)
  2515.    Else
  2516.       _FileReadToArray($ocr_filename_and_ext, $aArray)
  2517.       _ArrayDelete($aArray, 0)
  2518.       _ArrayConcatenate($final_ocr, $aArray)
  2519.    EndIf
  2520.    
  2521.    If $show_capture = 1 Then
  2522.       GUICreate("Tesseract Screen Capture.  Note: image displayed is not to scale", 640, 480, 0, 0, $WS_SIZEBOX + $WS_SYSMENU)
  2523.       GUISetBkColor(0xE0FFFF)
  2524.       $Obj1 = ObjCreate("Preview.Preview.1")  
  2525.       $Obj1_ctrl = GUICtrlCreateObj($Obj1, 0, 0, 640, 480)
  2526.       $Obj1.ShowFile ($capture_filename, 1)
  2527.       GUISetState()
  2528.       If IsArray($final_ocr) Then
  2529.          _ArrayDisplay($aArray, "Tesseract Text Capture")
  2530.       Else
  2531.          MsgBox(0, "Tesseract Text Capture", $final_ocr)
  2532.       EndIf
  2533.       GUIDelete()
  2534.    EndIf
  2535.    
  2536.    FileDelete($ocr_filename & ".*")
  2537.    
  2538.    If IsArray($final_ocr) And $cleanup = 1 Then
  2539.       For $final_ocr_num = 1 To (UBound($final_ocr)-1)
  2540.          $final_ocr[$final_ocr_num] = StringReplace($final_ocr[$final_ocr_num], ".", "")
  2541.          $final_ocr[$final_ocr_num] = StringReplace($final_ocr[$final_ocr_num], "'", "")
  2542.          $final_ocr[$final_ocr_num] = StringReplace($final_ocr[$final_ocr_num], ",", "")
  2543.          $final_ocr[$final_ocr_num] = StringStripWS($final_ocr[$final_ocr_num], 3)
  2544.       Next
  2545.      
  2546.       For $each in $final_ocr
  2547.          $found_item = _ArrayFindAll($final_ocr, $each)
  2548.          If IsArray($found_item) Then
  2549.             If StringCompare($final_ocr[$found_item[0]], "") = 0 Then
  2550.                _ArrayDelete($final_ocr, $found_item[0])
  2551.             EndIf
  2552.          EndIf
  2553.          For $found_item_num = 2 To UBound($found_item)
  2554.             _ArrayDelete($final_ocr, $found_item[$found_item_num-1])
  2555.          Next
  2556.       Next
  2557.    EndIf
  2558.    
  2559.    If $last_capture.item(0) = "" Then  
  2560.       $last_capture.item(0) = $final_ocr
  2561.    EndIf
  2562.    $tSCROLLINFO = 0
  2563.    Return $final_ocr
  2564. EndFunc
  2565.  
  2566. Func CaptureToTIFF($win_title = "", $win_text = "", $ctrl_id = "", $sOutImage = "", $scale = 1, $left_indent = 0, $top_indent = 0, $right_indent = 0, $bottom_indent = 0)
  2567.    Local $hWnd, $hwnd2, $hDC, $hBMP, $hImage1, $hGraphic, $CLSID, $tParams, $pParams, $tData, $i = 0, $hImage2, $pos[4]
  2568.    Local $Ext = StringUpper(StringMid($sOutImage, StringInStr($sOutImage, ".", 0, -1) + 1))
  2569.    Local $giTIFColorDepth = 24
  2570.    Local $giTIFCompression = $GDIP_EVTCOMPRESSIONNONE
  2571.    
  2572.    If StringCompare($ctrl_id, "") <> 0 Then
  2573.       $hwnd2 = ControlGetHandle($win_title, $win_text, $ctrl_id)
  2574.       $pos = ControlGetPos($win_title, $win_text, $ctrl_id)
  2575.    Else
  2576.       If StringCompare($win_title, "") <> 0 Then
  2577.          $hwnd2 = WinGetHandle($win_title, $win_text)
  2578.          $pos = WinGetPos($win_title, $win_text)
  2579.       Else 
  2580.          $hwnd2 = ""
  2581.          $pos[0] = 0
  2582.          $pos[1] = 0
  2583.          $pos[2] = @DesktopWidth
  2584.          $pos[3] = @DesktopHeight
  2585.       EndIf
  2586.    EndIf
  2587.    
  2588.    If IsHWnd($hwnd2) Then
  2589.       WinActivate($win_title, $win_text)
  2590.       $hBitmap2 = _ScreenCapture_CaptureWnd("", $hwnd2, 0, 0, -1, -1, False)
  2591.    Else
  2592.       $hBitmap2 = _ScreenCapture_Capture("", 0, 0, -1, -1, False)
  2593.    EndIf
  2594.    
  2595.    _GDIPlus_Startup ()
  2596.    $hImage2 = _GDIPlus_BitmapCreateFromHBITMAP ($hBitmap2)
  2597.    $hWnd = _WinAPI_GetDesktopWindow()
  2598.    $hDC = _WinAPI_GetDC($hWnd)
  2599.    $hBMP = _WinAPI_CreateCompatibleBitmap($hDC, ($pos[2] * $scale) - ($right_indent * $scale), ($pos[3] * $scale) - ($bottom_indent * $scale))
  2600.    _WinAPI_ReleaseDC($hWnd, $hDC)
  2601.    $hImage1 = _GDIPlus_BitmapCreateFromHBITMAP ($hBMP)
  2602.    $hGraphic = _GDIPlus_ImageGetGraphicsContext($hImage1)
  2603.    _GDIPLus_GraphicsDrawImageRect($hGraphic, $hImage2, 0 - ($left_indent * $scale), 0 - ($top_indent * $scale), ($pos[2] * $scale) + $left_indent, ($pos[3] * $scale) + $top_indent)
  2604.    $CLSID = _GDIPlus_EncodersGetCLSID($Ext)
  2605.    $tParams = _GDIPlus_ParamInit(2)
  2606.    $tData = DllStructCreate("int ColorDepth;int Compression")
  2607.    DllStructSetData($tData, "ColorDepth", $giTIFColorDepth)
  2608.    DllStructSetData($tData, "Compression", $giTIFCompression)
  2609.    _GDIPlus_ParamAdd($tParams, $GDIP_EPGCOLORDEPTH, 1, $GDIP_EPTLONG, DllStructGetPtr($tData, "ColorDepth"))
  2610.    _GDIPlus_ParamAdd($tParams, $GDIP_EPGCOMPRESSION, 1, $GDIP_EPTLONG, DllStructGetPtr($tData, "Compression"))
  2611.  
  2612.    If IsDllStruct($tParams) Then $pParams = DllStructGetPtr($tParams)
  2613.      
  2614.    _GDIPlus_ImageSaveToFileEx($hImage1, $sOutImage, $CLSID, $pParams)
  2615.    _GDIPlus_ImageDispose($hImage1)
  2616.    _GDIPlus_ImageDispose($hImage2)
  2617.    _GDIPlus_GraphicsDispose ($hGraphic)
  2618.    _WinAPI_DeleteObject($hBitmap2)
  2619.    _WinAPI_DeleteObject($hBMP)
  2620.    _GDIPlus_Shutdown()
  2621. EndFunc
  2622.  
  2623. Func _StringAddThousandsSep($number)
  2624.    $number = String($number)
  2625.    
  2626.    Switch StringLen($number)
  2627.       Case 1
  2628.          $number = $number
  2629.       Case 2
  2630.          $number = $number
  2631.       Case 3
  2632.          $number = $number
  2633.       Case 4
  2634.          $number = _StringInsert($number, ".", -3)
  2635.       Case 5
  2636.          $number = _StringInsert($number, ".", -3)
  2637.       Case 6
  2638.          $number = _StringInsert($number, ".", -3)
  2639.       Case 7
  2640.          $number = _StringInsert($number, ".", -3)
  2641.          $number = _StringInsert($number, ".", -7)
  2642.       Case 8
  2643.          $number = _StringInsert($number, ".", -3)
  2644.          $number = _StringInsert($number, ".", -7)
  2645.       Case 9
  2646.          $number = _StringInsert($number, ".", -3)
  2647.          $number = _StringInsert($number, ".", -7)
  2648.       Case 10
  2649.          $number = _StringInsert($number, ".", -3)
  2650.          $number = _StringInsert($number, ".", -7)
  2651.          $number = _StringInsert($number, ".", -11)
  2652.       Case 11
  2653.          $number = _StringInsert($number, ".", -3)
  2654.          $number = _StringInsert($number, ".", -7)
  2655.          $number = _StringInsert($number, ".", -11)
  2656.       Case 12
  2657.          $number = _StringInsert($number, ".", -3)
  2658.          $number = _StringInsert($number, ".", -7)
  2659.          $number = _StringInsert($number, ".", -11)
  2660.    EndSwitch
  2661.    Return $number
  2662. EndFunc
  2663.  
  2664. Func OnAutoItExit()
  2665.    ToLog("Bot closed")
  2666. EndFunc
Advertisement
Add Comment
Please, Sign In to add comment