Aller au contenu


Photo

Detection Des Item Bleu Lvl 63 Et Mise Au Coffre


  • Ce sujet est fermé Ce sujet est fermé
53 réponses à ce sujet

#21 Nico64000

Nico64000

    Newbie lvl 3

  • Membres
  • 21 messages

Posté 07 July 2012 - 09:33

Désolé pour le retard, mais voici un screenshot comme convenu!
Merci bcp!


http://hpics.li/a684fb8

#22 Speedy02

Speedy02

    Débutant lvl 2

  • Membres
  • 46 messages

Posté 08 July 2012 - 15:53

Yop, beau travail !

J'ai modifié le code pour qu'il ne prenne que les rares 60 et + mais je n'arrive pas à mettre la bonne couleur de pixel...

Je reprends la couleur de détection de base ( du Sark0th original ) mais il ne détecte pas les objets...

Je ne sais pas quoi mettre :

$array= PixelSearch(1457 + $tj, 632 + $ti, 1459 + $tj, 634+$ti, [COULEUR 1] , 5)
			If Not @error Then
				$StashPixel = PixelSearch(1448 + $tj, 626 + $ti, 1458 + $tj, 631+$ti, [COULEUR 2], 20)
			If Not @error Then
				MouseMove( $StashPixel[0] - random (5,30),$StashPixel[1] - random (5,30), 3)
				Sleep(random(50,80))
			If _ImageSearchArea($pngLoc & "lvl63.png", 1, 1448 + $tj - 475, 430, 1448 + $tj, 1050, $gX, $gY, 140) Then
				MouseClick("right",$StashPixel[0] - random (5,30),$StashPixel[1] - random (5,30), 1, 3)
			EndIf

			EndIf

				$StashPixel = PixelSearch(1448 + $tj, 626 + $ti, 1458 + $tj, 631+$ti, [COULEUR 3], 20)
			If Not @error Then

Je vois dans ton code que "Couleur 1", "Couleur 2" et "Couleur 3" sont différents, ils correspondent à quoi dans l'image/à quel pixel ?

#23 Speedy02

Speedy02

    Débutant lvl 2

  • Membres
  • 46 messages

Posté 08 July 2012 - 19:25

Merci ton code fonctionne super bien !! Je les un peut modifier et j'utilise aussi une version pour les rare pour qu'il me garde juste les 62 et 63 après les avoir identifier a chaque 10 a 12 run accomplie

Merci encore !


Tu pourrais m'aider et me dire quel code de couleur as-tu utilisé ? Merci ;)

#24 Speedy02

Speedy02

    Débutant lvl 2

  • Membres
  • 46 messages

Posté 08 July 2012 - 20:11

J'ai résolu mon problème, en tombant sur le bon pixel qu'il me fallait :)

Alors voilà pour ceux qui voudraient intégrer le rangement des Gold de Level >= 60

Manipulations :

- Mettre les .PNG dans votre dossier de pics

- Editer le code :

[code]Func StashLoot()
            GUICtrlSetData($lblStatus, "Status: Putting Items in Stash")
            MouseClick("left", 1064 * $x_ratio, 256 * $y_ratio)
            Moving(1600)
     
            ;Tomes
            While $StashTomes == True
                    Sleep(Random(100, 300))
                    If _ImageSearchArea($pngLoc & "TomeIcon.png", 1, 1400 * $x_ratio, 580 * $y_ratio, 1914 * $x_ratio, 888 * $y_ratio, $gX, $gY, 140) Then
                            GUICtrlSetData($lblStatus, "Status: Stashing Tomes")
                            MouseClick("left", 500 * $x_ratio, 360 * $y_ratio, 1, 4)
                            MouseClick("right", $gX, $gY, 1, 4)
                            Sleep(80)
                            MouseClick("left", 500 * $x_ratio, 200 * $y_ratio, 1, 4)
                    Else
                            ExitLoop
                    EndIf
            WEnd
     
            If $StashLegendary == True Then
                    StashItems(0xFF7F00, 0)
                    StashItems(0x8F5C25, 1)
            EndIf
     
            If $StashRare == True Then
					call ("StashRareItems") ; 
            EndIf
     
            If $StashMagic == True Then
					call ("StashMagicItems") ; Fonction StashMagicItem = rangement d'objets magiques lvl 63
            EndIf
     
     
            ;Gems (DOESN'T STASH BOTTOM ROW!)
            If $StashGems == True Then
                    GUICtrlSetData($lblStatus, "Status: Stashing Gems")
                    MouseClick("left", 500 * $x_ratio, 200 * $y_ratio, 1, 4)
                    Sleep(Random(20, 100))
                    For $i = 0 To 7
                            If _ImageSearchArea($pngLoc & $gems[$i], 1, 1400 * $x_ratio, 580 * $y_ratio, 1914 * $x_ratio, 820 * $y_ratio, $gX, $gY, 140) Then
                                    MouseClick("right", $gX, $gY, 1, 3)
                            EndIf
                    Next
            EndIf
            Sleep(Random(1000, 1500))
            Send("{SPACE}")
    EndFunc   ;==>StashLoot[/code]


Remplacer :             [code]If $StashRare == True Then
                    StashItems(0x4A3C0B, 1)[/code]

Par :             [code]If $StashRare == True Then
					call ("StashRareItems")[/code] 


Ajouter dans le code ( entre deux fonctions donc pas insérer la fonction dans une autre ! ) :



[code]Func StashRareItems()

				$i = 0
				MouseClick("left", random (490,520) * $x_ratio, random (165,270) * $y_ratio)
			While $i<=5
				$ti=48*$i
				$j=0
			While $j<=9
				$tj=48*$j


			If Not @error Then
				$StashPixel = PixelSearch(1448 + $tj, 626 + $ti, 1458 + $tj, 631+$ti, 0x948820, 3)
				
			If Not @error Then
				MouseMove( $StashPixel[0] - random (5,30),$StashPixel[1] - random (5,30), 3)
				Sleep(random(50,80))
									
			If _ImageSearchArea($pngLoc & "lvl60.png", 1, 1448 + $tj - 475, 430, 1448 + $tj, 1050, $gX, $gY, 140) Then
				MouseClick("right",$StashPixel[0] - random (5,30),$StashPixel[1] - random (5,30), 1, 3)
						
			If _ImageSearchArea($pngLoc & "lvl61.png", 1, 1448 + $tj - 475, 430, 1448 + $tj, 1050, $gX, $gY, 140) Then
				MouseClick("right",$StashPixel[0] - random (5,30),$StashPixel[1] - random (5,30), 1, 3)
			
			If _ImageSearchArea($pngLoc & "lvl62.png", 1, 1448 + $tj - 475, 430, 1448 + $tj, 1050, $gX, $gY, 140) Then
				MouseClick("right",$StashPixel[0] - random (5,30),$StashPixel[1] - random (5,30), 1, 3)
			
			If _ImageSearchArea($pngLoc & "lvl63.png", 1, 1448 + $tj - 475, 430, 1448 + $tj, 1050, $gX, $gY, 140) Then
				MouseClick("right",$StashPixel[0] - random (5,30),$StashPixel[1] - random (5,30), 1, 3)
			
			EndIf
			EndIf
			EndIf
			EndIf
			EndIf
			EndIf
			
			$j+=1
			WEnd
				MouseMove(Round(Random(600, 1200) * $x_ratio), Round(Random(700, 1080) * $y_ratio), 3)
				$i+=1
			WEnd
			
	EndFunc


#25 Toupacko

Toupacko

    Newbie lvl 3

  • Membres
  • 13 messages

Posté 08 July 2012 - 21:10

quelqu'un peut m'aider a l'installer ? skype toupackoo merci

#26 Anakha

Anakha

    Khon

  • Admin Gms
  • 3286 messages
  • Location :Grenoble
  • Trade : Mediator

Posté 09 July 2012 - 09:26

au passage,
call ("StashRareItems")
a remplacer par
<br class="Apple-interchange-newline">
StashRareItems()
c'est plus propre, et ça permet de passer des arguments beaucoup plus facilement (et plus proprement :P) (même si ça fait la même chose au final)

Aucun support ne sera fait en privé. Si vous avez un problème, faites un post.

 Ne pas hésiter à mettre un petit (+) si mon post vous plait ou vous a servi !

#27 Speedy02

Speedy02

    Débutant lvl 2

  • Membres
  • 46 messages

Posté 09 July 2012 - 12:54

J'ai hésité entre les deux commandes ^^ Merci du conseil ;)

#28 ornys

ornys

    Newbie lvl 3

  • Membres
  • 14 messages

Posté 09 July 2012 - 15:08

Est-ce possible de livrer tout le script avec cette fonction inclue dans le code de notares (derniere version) ?
Par contre je ne désire pas garder les items de lvl <63, est-ce que ça les prend aussi ?

Merci d'avance, Ornys ;)

#29 Speedy02

Speedy02

    Débutant lvl 2

  • Membres
  • 46 messages

Posté 09 July 2012 - 17:12

Dis ce que tu veux, je pourrai te le donner en entier... ( Code pour DH seulement )

#30 ornys

ornys

    Newbie lvl 3

  • Membres
  • 14 messages

Posté 09 July 2012 - 19:41

Ben le code pour garder aussi les items magiques niveau 63, je ne sais pas comment l'insérer, du coup si on peut me le filer en entier ;)

#31 Rayariime

Rayariime

    Débutant lvl 2

  • Membres
  • 64 messages

Posté 09 July 2012 - 20:37

J'ai trouvé ça sur un forum US, apparemment ça permettrait de prendre du jaune/vert/orange pour du 800x600, comme je n'arrive à faire tourner aucun bot et que j'y connais rien en script, je demande une confirmation?

Global $Paused

HotKeySet("=","Leave")
HotKeySet("-", "Pause")
HotKeySet("x", "Stop")

$default_resolutionX = 800
$default_resolutionY = 600

$Amethyst = 0xA56DF1
$Ruby = 0xFA8078
$Emerald = 0x51965B
$Topaz = 0xFFFF59
$Left = 150
$Top = 175
$Right = 750
$Bottom = 550
$Color = 0xFFFF00 ;rare color code
$Color2 = 0x6969FF ;blue color code
$Color3 = 0xBF642F ;legendary color code
$Color4 = 0x00FF00 ;SET color

$go = True
$Leave = False

While $go
if($Leave) Then
$Pixel1 = PixelSearch(562,38,593,83,0xFFF000) ;searches top right screen for yellow of broken armor
If Not @error Then
Send("t")
Sleep(8000)
MouseClick("left", 700, 147) ;begin movement towards merchant
Sleep(Random(2500, 2750))
MouseClick("left", 531, 51) ;moves to get merchant in screen
Sleep(Random(3000, 3250))
MouseClick("left", 294, 296) ;button to open up repair menu
Sleep(Random(1000, 1250))
MouseClick("left", 186, 326) ;button to pay for repairs
Sleep(Random(1000, 1250))
MouseClick("left", 291,39)
Sleep(Random(1000, 1500))
MouseClick("left",333,480)
Sleep(Random(2500, 2750))
MouseClick("left",261,439)
Sleep(Random(2500, 2750))
Send("{ESCAPE}") ;menu
MouseClick("left",406,354) ;button to leave game
Sleep(13000)
MouseClick("left",141,260) ;button to resume game from main menu
Sleep(8000)
Else
MouseClick("left",225,224) ;starts the main run
Sleep(3000)
MouseClick("left",17,242)
Sleep(3700)
MouseClick("left",13,276) ;middle of area outside of cellar
Sleep(3000)
MouseClick("left",28,309) ;don't ask
Sleep(2000)
MouseMove(258,135,1) ;moves cursor over to the cellar so the proper blue pixel becomes highlighted
Sleep(2000)
$Pixel2 = PixelSearch(320,151,0,0,0x3B62E3,7) ;searches for the specific blue pixel that only occurs when mouse hovers over open cellar
$Pixel2 = PixelSearch(320,151,0,0,0x425EAA,7)
If Not @error Then
MouseClick("left",258,135) ;Entrance to cellar
Sleep(3700)
Send("4")
Sleep(1000)
MouseClick("left",25,552)
Sleep(4000)
MouseClick("middle",186,184)
Sleep(1700)
MouseClick("right",291,182)
Sleep(500)
MouseClick("left",286,230)
Sleep(50)
Send("2")
Send("{SHIFTDOWN}")
Sleep(100)
MouseClick("left",170,92)
Sleep(200)
MouseClick("left",170,92)
Sleep(200)
MouseClick("left",170,92)
Sleep(200)
MouseClick("left",170,92)
Sleep(200)
MouseClick("left",170,92)
Sleep(200)
MouseClick("left",170,92)
Sleep(200)
MouseClick("left",170,92)
Sleep(200)
MouseClick("left",170,92)
Sleep(200)
MouseClick("left",170,92)
Sleep(200)
MouseClick("left",170,92)
Sleep(200)
Send("{SHIFTUP}")
Sleep(3000)
Sleep(7000)
MouseClick("left",268,195) ;location of sarkoth after death
Sleep(3500)
MouseClick("left",679,217) ;moves to right top corner for gold
Sleep(2000)
MouseClick("left",477,418) ;moves to bottom middle for gold
Sleep(2000)
MouseClick("left",41,537) ;moves to left top corner for gold
Sleep(2500)
MouseClick("left",232,199) ;moves to shut the fuck up
Sleep(1500)
MouseClick("left",781,472) ;whoopie
Sleep(1500)
FindItem()
Sleep(Random(250, 400))
Send("t")
Sleep(6200)
Send("{Escape}") ;menu
MouseClick("left",406,354) ;button to leave game
Sleep(8000)
MouseClick("left",141,260) ;button to resume game from main menu
Sleep(7000)
Else
Send("3")
Send("t")
Sleep(8200)
Send("{ESCAPE}") ;menu
MouseClick("left",406,354) ;button to leave game
Sleep(13000)
MouseClick("left",141,260) ;button to resume game from main menu
Sleep(8000)
EndIf
EndIf
EndIf
WEnd

Func Pause()
$Leave = False
EndFunc

Func Stop() ;to allow the script to stop
Exit
EndFunc

Func Leave()
$Leave = True
EndFunc

Func FindItem()
Sleep(Random(200, 300))
Send("{ALTDOWN}")
$SearchResult = PixelSearch(150, 175, $Right, $Bottom, $Color) ;Searches for Rares.
If Not @error Then
MouseClick("left", $SearchResult[0], $SearchResult[1], 1, 10) ;Pickup
Sleep(Random(300, 500))
EndIf

$SearchResult = PixelSearch(150, 175, $Right, $Bottom, $Color3 ) ;Searches for Legendarys
If Not @error Then
MouseClick("left", $SearchResult[0], $SearchResult[1], 1, 10) ;Pickup
Sleep(Random(300, 500))
EndIf

$SearchResult = PixelSearch(150, 175, $Right, $Bottom, $Color4) ;Searches for Sets
If Not @error Then
MouseClick("left", $SearchResult[0], $SearchResult[1], 1, 10) ;Pickup
Sleep(Random(300, 500))
EndIf

$SearchResult = PixelSearch(150, 200, 700, 400, 0x05E204, 8) ;Set loot
If Not @error Then
MouseClick("left", $SearchResult[0], $SearchResult[1], 1, 10)
Sleep(Random(300, 500))
EndIf

$SearchResult = PixelSearch(150, 200, 700, 400, 0xBF642F, 3) ;Legendary loot
If Not @error Then
MouseClick("left", $SearchResult[0], $SearchResult[1], 1, 10) ;Pickup
Sleep(Random(300, 500))
EndIf

$SearchResult = PixelSearch(150, 200, 700, 400, 0xFFFF00, 3) ;Rare loot (darker for compatibility)
If Not @error Then
MouseClick("left", $SearchResult[0], $SearchResult[1], 1, 10) ;Pickup
Sleep(Random(300, 500))
EndIf

$SearchResult = PixelSearch(700, 400, 150, 200, 0x05E204, 8) ;Set loot
If Not @error Then
MouseClick("left", $SearchResult[0], $SearchResult[1], 1, 10) ;Pickup
Sleep(Random(300, 500))
EndIf

$SearchResult = PixelSearch(150, 200, 700, 400, 0x05E204, 8) ;Set loot
If Not @error Then
MouseClick("left", $SearchResult[0], $SearchResult[1], 1, 10) ;Pickup
Sleep(Random(300, 500))
EndIf

$SearchResult = PixelSearch(700, 400, 150, 200, 0xBF642F, 3) ;Legendary loot
If Not @error Then
MouseClick("left", $SearchResult[0], $SearchResult[1], 1, 10) ;Pickup
Sleep(Random(300, 500))
EndIf

$SearchResult = PixelSearch(150, 200, 700, 400, 0xBF642F, 3) ;Legendary loot
If Not @error Then
MouseClick("left", $SearchResult[0], $SearchResult[1], 1, 10) ;Pickup
Sleep(Random(300, 500))
EndIf

$SearchResult = PixelSearch(700, 400, 150, 200, 0xFFFF00, 3) ; Rare loot (darker for compatibility)
If Not @error Then
MouseClick("left", $SearchResult[0], $SearchResult[1], 1, 10) ;Pickup
Sleep(Random(300, 500))
EndIf

$SearchResult = PixelSearch(150, 200, 700, 400, 0xFFFF00, 2) ; Rare loot (darker for compatibility)
If Not @error Then
MouseClick("left", $SearchResult[0], $SearchResult[1], 1, 10) ;Pickup
Sleep(Random(300, 500))
EndIf
Send("{ALTUP}")
EndFunc



#32 Speedy02

Speedy02

    Débutant lvl 2

  • Membres
  • 46 messages

Posté 09 July 2012 - 22:52

Quelqun aurait plusieurs couleurs pour les objets Rares ?

Des fois, le bot ne détecte pas qu'il y a des rares et ne les analyse pas...

Bidoche/Wave, quels codes de couleurs as-tu utilisé ?

Vous pouvez m'aider ? :)

#33 Bidoche

Bidoche

    Newbie lvl 4

  • Membres
  • 31 messages

Posté 10 July 2012 - 07:16

Quelqun aurait plusieurs couleurs pour les objets Rares ?

Des fois, le bot ne détecte pas qu'il y a des rares et ne les analyse pas...

Bidoche/Wave, quels codes de couleurs as-tu utilisé ?

Vous pouvez m'aider ? :)



$array= PixelSearch(1457 + $tj, 632 + $ti, 1459 + $tj, 634+$ti, 0x241913,5)
           If Not @error Then
               $StashPixel = PixelSearch(1448 + $tj, 626 + $ti, 1458 + $tj, 631+$ti, 0x4A3C0B, 20)


Sinon le script au complet pour barbare

;tofuartist, LATM & BlackSack's Barbarian Script

;notAres' Sarkoth Gold Script - 6/16/2012
;YOU MUST START THE BOT AT THE RESUME GAME SCREEN!
;Thread: http://www.ownedcore.com/forums/diablo-3/diablo-3-bots-programs/d3-gold-profiles/355316-goldfarming-barbarian-sarkoth-goldfarming-script-autoit-script-1920x1080.html
;;;;;
;WONT WORK UNLESS MOVE IS BOUND TO MIDDLE MOUSE (Mouse 3) -- NOT MOVE/INTERACT
;Required build: http://us.battle.net/d3/en/calculator/barbarian#TUXgkj!ghV!bYabZa
;Required display mode for cellar detection: "FULLSCREEN WINDOWED"
;Official supported resolution: 1920x1080
;;;;;
;Original by mackus101 @ ownedcore
;ImageSearch contributions by rvbfreak, goofinator, and asuRob
;Refactoring and additional functions by Shimizoki

;=========== DO NOT TOUCH ===========;
#RequireAdmin
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
Opt('MouseCoordMode', 2)
Opt('PixelCoordMode', 2)
Global $size = WinGetClientSize("[CLASS:D3 Main Window Class]"), $ver = "1.9", $ini = "tf-Barbarian.ini", $hFont = 0, $title, $Paused, $Go = False, $i = 0, $gX = 0, $gY = 0, $LegendaryCount = 0, $SetCount = 0, $RareCount = 0, $MagicCount = 0, $GemCount = 0, $TomeCount = 0, $t = TimerInit(), $rt = 0, $run = 0, $yellow = 0xFFF000, $red = 0xD90000, $lblRun, $lblLocation, $lblStatus, $lblLast, $lblRuntime, $lblGear, $lblItems
For $i = 0 To Random(3, 6, 1)
	$title &= Chr(Random(97, 122, 1))
Next
For $i = 0 To Random(4, 8, 1)
	$title &= Chr(Random(65, 90, 1))
Next
$title &= " "
Global $gems[8] = ["Ru1.png", "Ru2.png", "Em1.png", "Em2.png", "To1.png", "To2.png", "Am1.png", "Am2.png"]
If @OSArch = "X64" Then DllCall("kernel32.dll", "int", "Wow64DisableWow64FsRedirection", "int", 1)
If @OSArch = "X64" And Not @AutoItX64 Then MsgBox(16, "ERROR", "Why aren't you running the 64-bit AutoIt??? Expect bugs!")
If $size = 0 Then
	MsgBox(16, "Error", "Diablo III is not running, cannot grab resolution!" & @CRLF & "Exiting...")
	Exit
EndIf
;====================================;

;============= SETTINGS =============;
HotKeySet("=", "Begin") ;script toggled on/off by pressing =
HotKeySet("{PAUSE}", "TogglePause") ;script toggle pause by pressing Pause/Break key
HotKeySet("x", "Stop") ;script stopped by pressing x

$movementSpeed = 0 ;This is the % increase movement speed you have. 25 = 25%, 0 = 0%, 50 = 50%

;Custom Loot
$pngLoc = "C:\Program Files (x86)\AutoIt3\pics\" ;Location of the .PNGs (NO SUBFOLDERS - ALL PNGS GO HERE)
$totalItems = 1 ;Number of items in the pick array
Global $pick[$totalItems] ;DONT CHANGE THIS

;Array of items to loot (GEMS AND TOMES ALREADY INCLUDED)
$pick[0] = "mythic.png|40" ;png|Tolerance
;$pick[1] = "item2.png|0"
;$pick[2] = "item3.png|0"

;Looting
$LootSets = "True" ;True if you want to pick up Sets
$LootLegendaries = "True"	;True if you want to pick up Legendaries
$LootRares = "True" ;True if you want to pick up Rares
$LootMagic = "True" ;True if you want to pick up Magic
$LootGems = "True" ;True if you want to pick up Gems
$LootTomes = "True" ;True if you want to pick up Tome of Secrets
$LootCustom = "False" ;True if you want to pick up Custom Items (The items in the $pick array above)

;Manage Loot
$mLoot = 5 ;Nuber of successful runs until Stash and Vendor
$mLootOff = 2 ;Stash and Vendor after mLoot +- X number of runs (Variability)

;Stashing
$StashLoot = "True" ;True if you want to store Items in the stash
$IdentifyItems = "True" ;True if you want to identify Items before stashing
;---
$StashLegendary = "True";True if you want to store Legendary items in the stash
$StashRare = "True" ;True if you want to store Rare items in the stash
$StashMagic = "False" ;True if you want to store Magic items in the stash
$StashTomes = "True" ;True if you want to store Tomes items in the stash
$StashGems = "True" ;True if you want to store Gems items in the stash

$GemTab = 2 ;Tab to put gems and tombs in
$ItemTab = 1 ;Tab to put any items in
$NextItemTab = 3 ;Next Tab to put any items in when first one is full

;Vendoring ==NEW SETTINGS==
$VendorLoot = "True" ;True if you want to vendor anything
;---
$VendorRare = "False" ;True if you want to vendor Rares
$VendorMagic = "True" ;True if you want to vendor Magic
$vendorAll = "False" ;True if you want to right click all items when talking to vendor
$vendorRows = 6 ;# of rows to vendor, starting from the top (default = 5: bottom row is safe)
$vendorCols = 10 ;# of columns to vendor, starting from left

;Variability ==NEW SETTINGS==
$Timer = "True" ;True and the bot will add random sleep intervals
;---
$walktime = 2400 ;Time (in ms) the script waits for you to enter and load the cellar. Slow this down for slower move speeds and loading times
$loadtime = 3400 ;Time (in ms) the script waits for the game to load before it starts pathfinding. Slow this down for slower hard drives
$tptime = 6900 ;Time (in ms) the script waits for teleport before exiting the game
;====================================;

$x_ratio = $size[0] / 1920
$y_ratio = $size[1] / 1080
If FileExists($ini) Then
	Call("ReadINI")
	Call("CreateINI")
Else
	Call("CreateINI")
EndIf

$mLootIn = $mLoot ;DO NOT CHANGE, how many more runs till next manage
$movementSpeed = 1 + ($movementSpeed / 100)
$VersionsInfo = "http://dl.dropbox.com/u/9955791/version.ini"
$oldVersion = IniRead("updater.ini", "Version", "Version", $ver)
$newVersion = "0.0"

If Not FileExists($pngLoc & "MainMenu.png") Then
	MsgBox(16, "Fatal Error", "FATAL ERROR: Cannot find: " & $pngLoc & "MainMenu.png" & @CRLF & "Make sure your directory is set properly in the script")
	Exit
EndIf

Call("SetupGUI")

While 1
        Call("RestartRun")
WEnd
 
Func RestartRun()
        If ($Go) Then
                $i = 0
				Send("{SPACE}")
			    Sleep(100)
                WinSetTitle($title, "", $title & $ver & " - Running")
				RandMove(Round(Random(10, 230) * $x_ratio), Round(Random(11, 286) * $y_ratio), 120, 20);Moves mouse out of the way
                ;Checks if the player is Dead/Logout/Window, then in Old Ruins, then if in Main Menu, etc.
                If CheckDead() Then
                        Return
                ElseIf CheckFor("OldRuins", "", 1500 * $x_ratio, 0 * $y_ratio, 1920 * $x_ratio, 80 * $y_ratio, 1, 140) Then
                        Call("TownPortal")
                        Call("LeaveGame")
                        Return
                ElseIf CheckFor("MainMenu", "", Round(40 * $x_ratio), Round(300 * $y_ratio), Round(400 * $x_ratio), Round(450 * $y_ratio), 7, 140) Then
                        GUICtrlSetData($lblRun, "Run Number: " & $run & " - Runs till vendor: " & $mLootIn)
                        GUICtrlSetData($lblLocation, "Location: Main Menu")
                        GUICtrlSetData($lblStatus, "Status: Starting Game")
						Send("{SPACE}")
						Sleep(100)
                        RandClick("left", Round(230 * $x_ratio), Round(416 * $y_ratio), 120, 20, 1, 6) ;Random Click on the resume button
                        $rt = TimerInit()
                        $run += 1
                ElseIf CheckFor("ExitGame", "", Round(700 * $x_ratio), Round(340 * $y_ratio), Round(1200 * $x_ratio), Round(420 * $y_ratio), 1, 140) Then
                        GUICtrlSetData($lblStatus, "Status: Exit window up")
                        MouseClick("left", Round(1064 * $x_ratio), Round(632 * $y_ratio))
                        Sleep(100)
                        Send("{SPACE}")
                        Return
                ElseIf CheckFor("LimitError", "", Round(700 * $x_ratio), Round(340 * $y_ratio), Round(1200 * $x_ratio), Round(600 * $y_ratio), 1, 140) Then
                        MouseClick("left", Round(960 * $y_ratio), Round(635 * $x_ratio))
                        $rand = Random(40000, 80000)
                        GUICtrlSetData($lblStatus, "Status: Input Limit - Waiting " & Round($rand / 1000) & " seconds.")
                        Sleep($rand)
                        Send("{SPACE}")
                        Return
                ElseIf CheckFor("Disconnect", "", Round(700 * $x_ratio), Round(340 * $y_ratio), Round(1200 * $x_ratio), Round(600 * $y_ratio), 1, 140) Then
                        GUICtrlSetData($lblStatus, "Status: Network Disconnect window up")
                        MouseClick("left", Round(960 * $x_ratio), Round(632 * $y_ratio))
                        Sleep(100)
                        Send("{SPACE}")
                        Return
                Else
                        GUICtrlSetData($lblStatus, "ERROR: Cannot find Resume button")
                        Return
                EndIf
                ;Make sure we are in the right area before beginning run
		If CheckFor("OldRuins", "Area", 1500 * $x_ratio, 0 * $y_ratio, 1920 * $x_ratio, 80 * $y_ratio, 6, 180) Then
			GUICtrlSetData($lblLocation, "Location: Old Ruins")
			;Check if player needs to repair
			Call("CheckRepair")
			;Start Run
			RandClick("middle", Round(587 * $x_ratio),Round(333 * $y_ratio), 2, 2) ;starts the main run
			Sleep(Random(990,1140))
			RandMove(Round(96*$x_ratio),Round(383*$y_ratio), 2, 2)
			Sleep(Random(5, 10))
			Send("1")
			Sleep(300)
			Send("3")
			Sleep(360)
			RandClick("right",Round(210*$x_ratio),Round(12*$y_ratio), 10, 10)
			RandClick("middle", Round(56 * $x_ratio),Round(360 * $y_ratio), 1, 1)
			Sleep(Random(2300, 2500))
			;RandMove(Round(348*$x_ratio),Round(179*$y_ratio), 2, 2) ;moves cursor over to the cellar so the proper blue pixel becomes highlighted
			
			$celx = 348
			$cely = 179
			MouseMove(Round($celx*$x_ratio),Round($cely*$y_ratio), 1) ;moves cursor over to the cellar
			Sleep(200)              
			$Pixel2 = PixelSearch(0,0, Round(600*$x_ratio), Round(600*$y_ratio),0x334FB7,3) ;checks for open cellar (in a 600x400 box from the top left - where it should always be)
			If @error Then
				  $celx = 309
				  $cely = 224
				  MouseMove(Round($celx*$x_ratio),Round($cely*$y_ratio),1) ;moves cursor over to the cellar
				  Sleep(200)
				  $Pixel2 = PixelSearch(0,0, Round(600*$x_ratio), Round(600*$y_ratio),0x334FB7,3) ;checks for open cellar (in a 600x400 box from the top left - where it should always be)
			EndIf
			$celerr = @error 
			
			Sleep(10)
			If Call("CheckDead") Then
				Return
			EndIf

			;Checks if Dank Cellar is Open
			;$Pixel2 = PixelSearch(0, 0, Round(600 * $x_ratio), Round(600 * $y_ratio), 0x334FB7, 3)
			If Not $celerr Then
				GUICtrlSetData($lblStatus, "Status: Cellar - Found")
				Sleep(10)
			    RandClick("right",Round(15*$x_ratio),Round(1055*$y_ratio), 10, 10)
			    RandClick("left",Round($celx*$x_ratio),Round($cely*$y_ratio), 1) ;Entrance to cellar
			    Sleep(Random(1400, 1600))
				Moving($walktime)
			Else ;ABORT RUN
				GUICtrlSetData($lblStatus, "Status: Cellar - Not Found" & @CRLF)
				Sleep(10)
			    Send("{SHIFTDOWN}")
			    RandClick("left", Round(900*$x_ratio), Round(600*$y_ratio), 100, 100) ;earthquake
				Send("{SHIFTUP}")
			    Sleep(620)
				Call("TownPortal")
				If Not Call("CheckDead") Then
					Call("LeaveGame")
				EndIf
				Return
			EndIf
		Else
			Call("TownPortal")
			If Not Call("CheckDead") Then
				Call("LeaveGame")
			EndIf
			Return
		EndIf

		;Checks that the player is in the Dank Cellar
		If CheckFor("DankCellar", "Area", 1500 * $x_ratio, 0 * $y_ratio, 1920 * $x_ratio, 80 * $y_ratio, 6, 180) Then
			GUICtrlSetData($lblLocation, "Location: Dank Cellar")
			Call("CheckDead")
			RandClick("middle",Round(80*$x_ratio),Round(830*$y_ratio), 1, 1) ;moves to doorway leading to rare inside cellar
			Sleep(Random(2000, 2400))
			GUICtrlSetData($lblStatus, "Status: Attacking Sarkoth")
			RandMove(Round(350*$x_ratio),Round(60*$y_ratio),1) ;hovers over the rare Sarkoth
			Send("1")
			Sleep(200)
			Send("{SHIFTDOWN}")
			RandClick("left", Round(11*$x_ratio), Round(1037*$y_ratio), 10, 10) ;earthquake
			Send("{SHIFTUP}")
			Sleep(200)
			Send("{SHIFTDOWN}")
			RandClick("left", Round(11*$x_ratio), Round(1037*$y_ratio), 10, 10) ;earthquake
			Send("{SHIFTUP}")
			Sleep(1300)
			Send("4")
			Sleep(140)
			Send("4")
			Sleep(140)
			Send("4")
			Sleep(140)
			Send("4")
			Sleep(140)
			Send("4")
			Sleep(100)
			Send("2")
			Sleep(100)
			Send("2")
			Sleep(100)
			Send("2")
			Sleep(Random(1000, 1400))
			RandClick("middle",Round(730*$x_ratio),Round(585*$y_ratio), 1, 1) ;move to left top corner for gold
			Sleep(Random(425, 675))
			RandClick("middle",Round(1205*$x_ratio),Round(380*$y_ratio), 1, 1) ;move to right top corner for gold
			Sleep(Random(450, 700))
			RandClick("middle",Round(1121*$x_ratio),Round(805*$y_ratio), 1, 1) ;move to middle before looting
			Sleep(Random(1000, 1160))
			Call("CheckDead")
			GUICtrlSetData($lblStatus, "Status: Looting")
			Call("Loot")
			RandSleep(0, 5, 25)
			Call("CheckDead")
			Call("TownPortal")
		Else
			Sleep(10)
			Send("{SHIFTDOWN}")
			RandClick("left", Round(900*$x_ratio), Round(600*$y_ratio), 100, 100) ;earthquake
			Send("{SHIFTUP}")
			Sleep(620)
			Call("TownPortal")
			If Not Call("CheckDead") Then
				Call("LeaveGame")
			EndIf
			Return
		EndIf
		;After successful run
		If Not Call("CheckDead") Then
			Sleep(600)
			If $mLootIn = 1 And CheckFor("NewTristram", "Area", 1500 * $x_ratio, 0 * $y_ratio, 1920 * $x_ratio, 80 * $y_ratio, 4, 200) Then ;If its time to manage loot and we are in town
			    If $IdentifyItems == "True" Then
				   Call("Identify")
				EndIf
				If $StashLoot == "True" Then
					Call("StashLoot")
				EndIf
				If $VendorLoot == "True" Then
					Call("VendorLoot")
				EndIf
				$mLootIn = Round(Random($mLoot - $mLootOff, $mLoot + $mLootOff)) ;Reset Counter
			ElseIf Not CheckFor("NewTristram", "Area", 1500 * $x_ratio, 0 * $y_ratio, 1920 * $x_ratio, 80 * $y_ratio, 1, 200) Then
				GUICtrlSetData($lblStatus, "Status: Skipping vendor, not in New Tristram")
				Sleep(3000)
			Else
				$mLootIn -= 1
			EndIf
			If Not Call("CheckDead") Then
				Call("LeaveGame")
			EndIf
			Return
		Else
			Return
		EndIf
	EndIf
EndFunc   ;==>RestartRun

;Helper Functions

Func SetupGUI()
	$frmBot = GUICreate($title & $ver & " - Updating", 280, 121, Round(1540 * $x_ratio), Round(920 * $y_ratio), -1, BitOR($WS_EX_TOPMOST, $WS_EX_TOOLWINDOW), 0)
	GUISetBkColor(0xC0C0C0)
	$lblRun = GUICtrlCreateLabel("Run Number: 0 - Runs till vendor: 0", 4, 0, 280, 24)
	GUICtrlSetFont(-1, 10, 600, 0, "Segoe UI")
	GUICtrlSetColor(-1, 0xFF0000)
	$lblLocation = GUICtrlCreateLabel("Location: Main Menu", 12, 20, 240, 17)
	$lblStatus = GUICtrlCreateLabel("Status: ", 12, 35, 240, 17)
	$lblLast = GUICtrlCreateLabel("Last Runtime: 0 seconds", 12, 50, 240, 17)
	$lblRuntime = GUICtrlCreateLabel("Total Runtime: 0 hours, 0 minutes", 12, 65, 240, 17)
	$lblGear = GUICtrlCreateLabel("Legendary: 0 - Set: 0 - Rare: 0", 12, 80, 240, 17)
	$lblItems = GUICtrlCreateLabel("Magic: 0 - Gems: 0 - Tomes: 0", 12, 95, 240, 17)
	GUISetState(@SW_SHOW)
EndFunc   ;==>SetupGUI

Func CheckDead()
	$LogoutTimerCancel = PixelSearch(Round(900 * $x_ratio), Round(240 * $y_ratio), Round(1010 * $x_ratio), Round(290 * $y_ratio), 0x993827) ; checks for cancel button on logout timer
	If Not @error Then
		GUICtrlSetData($lblStatus, "Status: Logging out")
		Sleep(11000)
		Sleep($loadtime)
		Return 1
	EndIf

	$YouHaveDied = PixelSearch(Round(620 * $x_ratio), Round(325 * $y_ratio), Round(625 * $x_ratio), Round(330 * $y_ratio), 0xFFFFFF) ; checks for white text "YOU HAVE DIED"
	If Not @error Then
		GUICtrlSetData($lblStatus, "Status: Dead")
		Call("LeaveGame")
		Sleep(11000)
		Sleep($loadtime)
		Return 1
	Else
		Return 0
	EndIf
EndFunc   ;==>CheckDead

Func CheckRepair()
	$RepairArea = PixelSearch(Round(1480 * $x_ratio), 0, Round(1570 * $x_ratio), Round(100 * $y_ratio), $yellow)
	If Not @error Then
		Call("DoRepair")
	EndIf
	$RepairAreaRed = PixelSearch(Round(1480 * $x_ratio), 0, Round(1570 * $x_ratio), Round(100 * $y_ratio), $red)
	If Not @error Then
		Call("DoRepair")
	EndIf
EndFunc   ;==>CheckRepair

Func DoRepair()
	Sleep(Random(75, 150))
	Call("TownPortal")
	If Call("CheckDead") Then
		Return
	EndIf
	If CheckFor("NewTristram", "Area", 1500 * $x_ratio, 0 * $y_ratio, 1920 * $x_ratio, 80 * $y_ratio, 6, 180) Then
		RandClick("left", Round(1480 * $x_ratio), Round(281 * $y_ratio), 1, 1) ;begin movement towards merchant
		Moving(1875)
		RandClick("left", Round(1316 * $x_ratio), Round(206 * $y_ratio), 1, 1) ;moves to get merchant in screen
		Moving(1875)
		RandClick("left", Round(845 * $x_ratio), Round(225 * $y_ratio), 1, 1) ;NPC Merchant to the right of cain's home
		Sleep(1200)
		RandClick("left", Round(521 * $x_ratio), Round(506 * $y_ratio), 1, 1) ;button to open up repair menu
		Sleep(400)
		RandClick("left", Round(260 * $x_ratio), Round(595 * $y_ratio), 1, 1) ;button to pay for repairs
		Sleep(Random(1000, 2000)
		Send("{Escape}")
		If Not Call("CheckDead") Then
			Call("LeaveGame")
		EndIf
	EndIf
EndFunc   ;==>DoRepair

Func CalcTime()
	$srt = TimerDiff($rt)
	GUICtrlSetData($lblLast, "Last Runtime: " & Round($srt / 1000, 2) & " seconds.")
	$trt = TimerDiff($t)
	$total = Round((($trt / 1000) / 60) / 60, 4)

	;Total runtime calculation.
	$hours = Floor((($trt / 1000) / 60) / 60)
	$minutes = (($trt / 1000) / 60)
	;trim minutes if runtime is more then 1 hour.
	If $minutes > 60 Then
		While $minutes > 60
			$minutes -= 60
		WEnd
	EndIf
	GUICtrlSetData($lblRuntime, "Total Runtime: " & $hours & " hours, " & Ceiling($minutes) & " minutes")
EndFunc   ;==>CalcTime

Func CheckFor($img, $type = "", $startX = 0, $startY = 0, $endX = @DesktopWidth, $endY = @DesktopHeight, $seconds = 5, $tolerance = 130)
	$c = 0
	$string = $pngLoc & $img & ".png"
	Do
		$c += 1
		Sleep(100)
		If $c > ($seconds * 10) Then ;Make sure we never get stuck here for infinity.
			If $type = "Area" Then
				GUICtrlSetData($lblStatus, "Status: Area not found - " & $img)
			EndIf
			Return False
		EndIf
	Until _ImageSearchArea($string, 1, $startX, $startY, $endX, $endY, $gX, $gY, $tolerance)
	Return True
EndFunc   ;==>CheckFor

Func Loot()
    MouseMove(Round(Random(0, 400) * $x_ratio), Round(Random(700, 1080) * $y_ratio), 3) ;Moves mouse out of the way
    If $LootCustom == "True" Then
		Call("LootCustom")
	EndIf
	If $LootTomes == "True" Then
		Call("LootTomes")
	EndIf
	If $LootSets == "True" Then
		$SetCount += LootGear(0x02CE01, 2)
	EndIf
	If $LootLegendaries == "True" Then
		$LegendaryCount += LootGear(0xBF642F, 0)
	EndIf
	If $LootRares == "True" Then
		$RareCount += LootGear(0xBBBB00, 2)
	EndIf
	If $LootGems == "True" Then
		Call("LootGems")
	EndIf
	If $LootMagic == "True" Then
		$MagicCount += LootGear(0x6969FF, 2)
	EndIf
	Call("ShowLoot")
EndFunc   ;==>Loot

Func LootGear($color, $tolerance = 2)
	$count = 0
	$Loot = PixelSearch(Round(400 * $x_ratio), 0, Round(1690 * $x_ratio), Round(900 * $y_ratio), $color, $tolerance)
	If Not @error Then
		While Not @error
			$count += 1
			MouseClick('left', $Loot[0], $Loot[1], 1, 3)
			Sleep(Random(400,600))
			;Run at max 10 times per quality
			If $count >= 10 Then
				ExitLoop
			EndIf
			$Loot = PixelSearch(Round(400 * $x_ratio), 0, Round(1690 * $x_ratio), Round(900 * $y_ratio), $color, $tolerance)
		WEnd
	EndIf
	Return $count
EndFunc   ;==>LootGear

Func LootCustom()
	$count = 0
	$gX = 0
	$gY = 0
	For $i = 0 To ($totalItems - 1)
		$array = StringSplit($pick[$i], "|")
		$file = $array[1]
		$accuracy = $array[2]
		$urlString = $pngLoc & $file
		While _ImageSearchArea($pngLoc & $file, 1, 0, 0, @DesktopWidth, @DesktopHeight, $gX, $gY, $accuracy)
			$count += 1
			Sleep(Random(75, 150))
			MouseClick("left", $gX, $gY, 1, 1)
			Sleep(Random(800, 1200))
			MouseMove(Round(Random(0, 400) * $x_ratio), Round(Random(700, 1080) * $y_ratio), 3) ;Moves mouse out of the way
			If $count >= 10 Then
				ExitLoop
			EndIf
		WEnd
	Next
EndFunc   ;==>LootCustom

Func LootGems()
	$count = 0
	$gX = 0
	$gY = 0
	While _ImageSearchArea($pngLoc & "square.png", 1, 0, 0, @DesktopWidth, @DesktopHeight, $gX, $gY, 90)
		$count += 1
		Sleep(Random(75, 150))
		MouseClick("left", $gX, $gY - 3, 1, 3)
		$GemCount += 1
		Sleep(Random(400, 600))
		If $count >= 10 Then
			ExitLoop
		EndIf
	WEnd
EndFunc   ;==>LootGems

Func LootTomes()
	$count = 0
	$gX = 0
	$gY = 0
	While _ImageSearchArea($pngLoc & "tome.png", 1, 0, 0, @DesktopWidth, @DesktopHeight, $gX, $gY, 90)
		$count += 1
		Sleep(Random(75, 150))
		MouseClick("left", $gX, $gY - 3, 1, 3)
		$TomeCount += 1
		Sleep(Random(400, 600))
		If $count >= 10 Then
			ExitLoop
		EndIf
	WEnd
EndFunc   ;==>LootTomes

Func Identify()
	Send("i")
	Sleep(1300)
	While _ImageSearchArea($pngLoc & "unidentified.png", 1, 1400 * $x_ratio, 580 * $y_ratio, 1914 * $x_ratio, 888 * $y_ratio, $gX, $gY, 120)
		GUICtrlSetData($lblStatus, "Status: Identifying")
		Sleep(Random(200, 300))
		MouseClick("right", $gX, $gY, 1)
		MouseMove(Round(Random(0, 400) * $x_ratio), Round(Random(700, 1080) * $y_ratio), 3) ;Moves mouse out of the way
		Sleep(Random(3000, 3500))
	WEnd
	Send("i")
	Sleep(600)
EndFunc   ;==>Identify

Func ClickTab($Tabno)
        if $Tabno = 1 then RandClick("left", Round(517 * $x_ratio), Round(229 * $y_ratio), 3, 4)
        if $Tabno = 2 then RandClick("left", Round(517 * $x_ratio), Round(361 * $y_ratio), 3, 4)
        if $Tabno = 3 then RandClick("left", Round(517 * $x_ratio), Round(486 * $y_ratio), 3, 4)
        Sleep(Random(100, 200))
 
EndFunc   ;==>ClickTab
 
Func UseNextTab()
        if $ItemTab = $NextItemTab then
                $StashLegendary = "False"
                $StashRare = "False"
                $StashMagic = "False"
        Else
                $ItemTab = $NextItemTab
        EndIf
EndFunc   ;==>UseNextTab

Func StashLoot()
        
	    GUICtrlSetData($lblStatus, "Status: Putting Items in Stash")
        Sleep(Random(1000, 1500))
        MouseClick("left", 1064 * $x_ratio, 256 * $y_ratio)
        Sleep(Random(1500, 2000))
$c = 0
$i = 0
While $i<=5
$ti=48*$i
$j=0
While $j<=9
$tj=48*$j
MouseMove(1448 + $tj - random (5,30), 626 + $ti - random (5,30), 3)
Sleep(random(5,15))
$j+=1
WEnd
$i+=2
WEnd
		
        ;Legendaries
        If $StashLegendary == "True" then
                ClickTab($ItemTab)
                $sc = 0
                While $sc < 5
                        Sleep(Random(200, 300))
                        $LegendPixel = PixelSearch(1400 * $x_ratio, 580 * $y_ratio, 1914 * $x_ratio, 888 * $y_ratio, 0x4D2C0D, 1)
                        If Not @error Then
                                GUICtrlSetData($lblStatus, "Status: Stashing Legendaries")
                                MouseClick("right", $LegendPixel[0], $LegendPixel[1], 1, 4)
                        Else
                                ExitLoop
                        EndIf
                        $sc += 1
                WEnd
                if $sc = 5 then
                        Call("UseNextTab")
				endif
        EndIf
		
		;Magic
        if $StashMagic == "True" then
                ClickTab($ItemTab)
                $c = 0
                $i = 0
                While $i<=5
                $ti=48*$i
                $j=0
                While $j<=9
                $tj=48*$j

				$array= PixelSearch(1457 + $tj, 632 + $ti, 1459 + $tj, 634+$ti, 0x241913,5)
           If Not @error Then
               $StashPixel = PixelSearch(1448 + $tj, 626 + $ti, 1458 + $tj, 631+$ti, 0x3C576C,20)
           If Not @error Then
            MouseMove( $StashPixel[0] - random (5,30),$StashPixel[1] - random (5,30), 3)
            Sleep(random(50,80))
           If _ImageSearchArea($pngLoc & "lvl63.png", 1, 1448 + $tj - 475, 430, 1448 + $tj, 1050, $gX, $gY, 140) Then
            MouseClick("right",$StashPixel[0] - random (5,30),$StashPixel[1] - random (5,30), 1, 3)
           EndIf
		    
           EndIf

               $StashPixel = PixelSearch(1448 + $tj, 626 + $ti, 1458 + $tj, 631+$ti, 0x3A4670,20)
           If Not @error Then
            MouseMove( $StashPixel[0] - random (5,30),$StashPixel[1] - random (5,30), 3)
            Sleep(random(50,80))
           If _ImageSearchArea($pngLoc & "lvl63.png", 1, 1448 + $tj - 475, 430, 1448 + $tj, 1050, $gX, $gY, 140) Then
            MouseClick("right",$StashPixel[0] - random (5,30),$StashPixel[1] - random (5,30), 1, 3)
           EndIf
		   EndIf 
           EndIf
               $j+=1
           WEnd
		   MouseMove(Round(Random(0, 400) * $x_ratio), Round(Random(700, 1080) * $y_ratio), 3) ;Moves mouse out of the way
               $i+=1
                WEnd
                if $sc = 20 then
                        Call("UseNextTab")
                endif
        EndIf
		
        ;Rares
        if $StashRare == "True" then
             ClickTab($ItemTab)
                $c = 0
                $i = 0
             MouseClick("left", random (508,520) * $x_ratio, random (460,520) * $y_ratio)
                While $i<=5
                $ti=48*$i
                $j=0
                While $j<=9
                $tj=48*$j

               $array= PixelSearch(1457 + $tj, 632 + $ti, 1459 + $tj, 634+$ti, 0x241913,5)
           If Not @error Then
               $StashPixel = PixelSearch(1448 + $tj, 626 + $ti, 1458 + $tj, 631+$ti, 0x4A3C0B, 20)
           If Not @error Then
            MouseMove( $StashPixel[0] - random (5,30),$StashPixel[1] - random (5,30), 3)
            Sleep(random(50,80))
           If _ImageSearchArea($pngLoc & "lvl63.png", 1, 1448 + $tj - 475, 430, 1448 + $tj, 1050, $gX, $gY, 140) Then
            MouseClick("right",$StashPixel[0] - random (5,30),$StashPixel[1] - random (5,30), 1, 3)
           EndIf

           EndIf

               $StashPixel = PixelSearch(1448 + $tj, 626 + $ti, 1458 + $tj, 631+$ti, 0x4A3C0B, 20)
           If Not @error Then
            MouseMove( $StashPixel[0] - random (5,30),$StashPixel[1] - random (5,30), 3)
            Sleep(random(50,80))
           If _ImageSearchArea($pngLoc & "lvl62.png", 1, 1448 + $tj - 475, 430, 1448 + $tj, 1050, $gX, $gY, 140) Then
            MouseClick("right",$StashPixel[0] - random (5,30),$StashPixel[1] - random (5,30), 1, 3)
           EndIf
           EndIf
           EndIf
               $j+=1
           WEnd
		   MouseMove(Round(Random(0, 400) * $x_ratio), Round(Random(700, 1080) * $y_ratio), 3) ;Moves mouse out of the way
               $i+=1
                WEnd
                if $sc = 10 then
                        Call("UseNextTab")
                endif
        EndIf
		
		;Tomes
        If $StashTomes == "True" Then
                If _ImageSearchArea($pngLoc & "TomeIcon.png", 1, 1400 * $x_ratio, 580 * $y_ratio, 1914 * $x_ratio, 888 * $y_ratio, $gX, $gY, 140) Then
                        GUICtrlSetData($lblStatus, "Status: Stashing Tomes")
						ClickTab($GemTab)
                        MouseClick("right", $gX, $gY, 1, 4)
                        Sleep(80)
                EndIf
        EndIf
 
        ;Gems (DOESN'T STASH BOTTOM ROW!)
        if $StashGems == "True" Then
                ClickTab($GemTab)
                GUICtrlSetData($lblStatus, "Status: Stashing Gems")
                For $i = 0 To 7
                        If _ImageSearchArea($pngLoc & $gems[$i], 1, 1400 * $x_ratio, 580 * $y_ratio, 1914 * $x_ratio, 820 * $y_ratio, $gX, $gY, 140) Then

                                MouseClick("right", $gX, $gY, 1, 4)
                                Sleep(Random(400, 600))
 
                        EndIf  
                Next 
        EndIf
        Sleep(Random(1000, 3000))
        Send("{SPACE}")
EndFunc   ;==>StashLoot

Func VendorLoot()
	GUICtrlSetData($lblStatus, "Status: Vendoring Items")
	If Not $StashLoot == "True" Then ;Move from TP towards vendor
		Sleep(Random(300, 500))
		MouseClick("middle", 1565 * $x_ratio, 50 * $y_ratio)
	Else ;Move from Stash towards vendor
		Sleep(Random(300, 500))
		MouseClick("middle", 1560 * $x_ratio, 120 * $y_ratio)
	EndIf
	Sleep(3000)
	MouseClick("left", 1030 * $x_ratio, 210 * $y_ratio) ;Talk to vendor
	Sleep(3000)

	;All
	If $vendorAll == "True" Then
		For $c = 1 To $vendorCols
			For $r = 1 To $vendorRows
				RandClick("right", (((($c - 1) * 50) + 32 + 1400) * $x_ratio), (((($r - 1) * 51) + 32 + 580) * $y_ratio), 2, 2, 1, 2.5)
			Next
		Next
	EndIf

	;Rares
	If $VendorRare == "True" Then
		$c = 0
		While $c <= 10
			Sleep(Random(100, 300))
			$RarePixel = PixelSearch(1400 * $x_ratio, 580 * $y_ratio, 1914 * $x_ratio, 888 * $y_ratio, 0x4A3C0B, 1)
			If Not @error Then
				MouseClick("right", $RarePixel[0], $RarePixel[1], 1, 4)
				Sleep(Random(400, 600))
				$c += 1
			Else
				ExitLoop
			EndIf
		WEnd
	EndIf

	;Magic
	If $VendorMagic == "True" Then
		$c = 0
		While $c <= 25
			Sleep(Random(100, 300))
			$MagicPixel = PixelSearch(1400 * $x_ratio, 580 * $y_ratio, 1914 * $x_ratio, 888 * $y_ratio, 0x182037, 1)
			If Not @error Then
				MouseClick("right", $MagicPixel[0], $MagicPixel[1], 1, 4)
				Sleep(Random(400, 600))
				$c += 1
			Else
				ExitLoop
			EndIf
		WEnd
	EndIf

	Sleep(200)
	RandClick("left", Round(521 * $x_ratio), Round(506 * $y_ratio), 1, 1) ;button to open up repair menu
	Sleep(300)
	RandClick("left", Round(260 * $x_ratio), Round(595 * $y_ratio), 1, 1) ;button to pay for repairs
	Sleep(200)
	Sleep(Random(1000, 2000))
	GUICtrlSetData($lblStatus, "Status: Done With Vendor")
	Send("{ESCAPE}")
EndFunc   ;==>VendorLoot

Func DoUpdate()
	$ini = InetGet($VersionsInfo, @ScriptDir & "\version.ini") ;download version.ini
	If $ini = 0 Then ;was the download of version.ini successful?
		MsgBox(16, "Fatal Error", "The server seems to be offline. No update will be done.")
	Else
		$newVersion = IniRead(@ScriptDir & "\version.ini", "Version", "Version", "") ;reads the new version out of version.ini
		If $newVersion = $oldVersion Then ;compare old and new
			;MsgBox (0,"No update","There is no update available!")
			FileDelete(@ScriptDir & "\version.ini")
		Else
			$msg = MsgBox(68, "Update", "A new version is available: " & $newVersion & "! Current version: " & $oldVersion & @CRLF & "Do you want to download the new version?")
			If $msg = 7 Then ;No was pressed
				FileDelete(@ScriptDir & "\version.ini")
			ElseIf $msg = 6 Then ;OK was pressed
				$downloadLink = IniRead(@ScriptDir & "\version.ini", "Version", "download", "NotFound")
				$dlhandle = InetGet($downloadLink, @ScriptDir & "\Update_" & $newVersion & ".zip", 1, 1)
				ProgressOn("Update", "Downloading Updates", "", -1, -1, 16) ;creates a progressbar

				$size = InetGetSize($downloadLink, 1) ;get the size of the update
				While Not InetGetInfo($dlhandle, 2)
					$Percent = Round((InetGetInfo($dlhandle, 0) / $size) * 100)
					ProgressSet($Percent, $Percent & "%") ;update progressbar
					Sleep(1)
				WEnd
				ProgressSet(100, "Done", "Complete") ;show complete progressbar
				Sleep(500)
				ProgressOff() ;close progress window
				IniWrite("updater.ini", "version", "version", $newVersion)
				InetClose($dlhandle)
				$iniMsg = IniRead(@ScriptDir & "\version.ini", "Version", "message", "Exiting...")
				MsgBox(64, "Success", "Download Complete!" & @CRLF & "Please restart the bot by extracting the Au3 from Update_" & $newVersion & ".zip" & @CRLF & $iniMsg)
				FileDelete(@ScriptDir & "\version.ini")
				Exit
			EndIf
		EndIf
	EndIf
	WinSetTitle($title, "", $title & $ver & " - Waiting")
EndFunc   ;==>DoUpdate
Func ReadINI()
	$pngLoc = IniRead($ini, "Custom Loot", "PNG Location", $pngLoc)
	$totalItems = IniRead($ini, "Custom Loot", "Total Items", $totalItems)
	$movementSpeed = IniRead($ini, "Additional", "Movement Speed", $movementSpeed)
	$walktime = IniRead($ini, "Additional", "Walk Time", $walktime)
	$loadtime = IniRead($ini, "Additional", "Load Time", $loadtime)
	$tptime = IniRead($ini, "Additional", "Teleport Time", $tptime)
	$LootSets = IniRead($ini, "Looting", "Sets", $LootSets)
	$LootLegendaries = IniRead($ini, "Looting", "Legendaries", $LootLegendaries)
	$LootRares = IniRead($ini, "Looting", "Rares", $LootRares)
	$LootMagic = IniRead($ini, "Looting", "Magic", $LootMagic)
	$LootGems = IniRead($ini, "Looting", "Gems", $LootGems)
	$LootTomes = IniRead($ini, "Looting", "Tomes", $LootTomes)
	$LootCustom = IniRead($ini, "Looting", "Custom", $LootCustom)
	$mLoot = IniRead($ini, "ManageLoot", "Every", $mLoot)
	$StashLoot = IniRead($ini, "Stashing", "Loot", $StashLoot)
	$StashLegendary = IniRead($ini, "Stashing", "Legendaries", $StashLegendary)
	$StashRare = IniRead($ini, "Stashing", "Rares", $StashRare)
	$StashMagic = IniRead($ini, "Stashing", "Magic", $StashMagic)
	$StashTomes = IniRead($ini, "Stashing", "Tomes", $StashTomes)
	$StashGems = IniRead($ini, "Stashing", "Gems", $StashGems)
	$VendorLoot = IniRead($ini, "Vendoring", "Loot", $VendorLoot)
	$VendorRare = IniRead($ini, "Vendoring", "Rares", $VendorRare)
	$VendorMagic = IniRead($ini, "Vendoring", "Magic", $VendorMagic)
	$vendorAll = IniRead($ini, "Vendoring", "All", $vendorAll)
	$vendorRows = IniRead($ini, "Vendoring", "All-Rows", $vendorRows)
	$vendorCols = IniRead($ini, "Vendoring", "All-Cols", $vendorCols)
	$Timer = IniRead($ini, "Variability", "Timer", $Timer)
	$mLootOff = IniRead($ini, "Variability", "Manage Off By", $mLootOff)
EndFunc   ;==>ReadINI
Func CreateINI()
	IniWrite($ini, "Custom Loot", "PNG Location", $pngLoc)
	IniWrite($ini, "Custom Loot", "Total Items", $totalItems)
	IniWrite($ini, "Additional", "Movement Speed", $movementSpeed)
	IniWrite($ini, "Additional", "Walk Time", $walktime)
	IniWrite($ini, "Additional", "Load Time", $loadtime)
	IniWrite($ini, "Additional", "Teleport Time", $tptime)
	IniWrite($ini, "Looting", "Sets", $LootSets)
	IniWrite($ini, "Looting", "Legendaries", $LootLegendaries)
	IniWrite($ini, "Looting", "Rares", $LootRares)
	IniWrite($ini, "Looting", "Magic", $LootMagic)
	IniWrite($ini, "Looting", "Gems", $LootGems)
	IniWrite($ini, "Looting", "Tomes", $LootTomes)
	IniWrite($ini, "Looting", "Custom", $LootCustom)
	IniWrite($ini, "ManageLoot", "Every", $mLoot)
	IniWrite($ini, "Stashing", "Loot", $StashLoot)
	IniWrite($ini, "Stashing", "Legendaries", $StashLegendary)
	IniWrite($ini, "Stashing", "Rares", $StashRare)
	IniWrite($ini, "Stashing", "Magic", $StashMagic)
	IniWrite($ini, "Stashing", "Tomes", $StashTomes)
	IniWrite($ini, "Stashing", "Gems", $StashGems)
	IniWrite($ini, "Vendoring", "Loot", $VendorLoot)
	IniWrite($ini, "Vendoring", "Rares", $VendorRare)
	IniWrite($ini, "Vendoring", "Magic", $VendorMagic)
	IniWrite($ini, "Vendoring", "All", $vendorAll)
	IniWrite($ini, "Vendoring", "All-Rows", $vendorRows)
	IniWrite($ini, "Vendoring", "All-Cols", $vendorCols)
	IniWrite($ini, "Variability", "Timer", $Timer)
	IniWrite($ini, "Variability", "Manage Off By", $mLootOff)
EndFunc   ;==>CreateINI

Func _ImageSearchArea($findImage, $resultPosition, $x1, $y1, $right, $bottom, ByRef $x, ByRef $y, $tolerance)
	If $tolerance > 0 Then $findImage = "*" & $tolerance & " " & $findImage
	$findImage = "*TRANSBLACK " & $findImage
	If @AutoItX64 Then
		$result = DllCall("ImageSearchDLL_x64.dll", "str", "ImageSearch", "int", $x1, "int", $y1, "int", $right, "int", $bottom, "str", $findImage)
	Else
		$result = DllCall("ImageSearchDLL.dll", "str", "ImageSearch", "int", $x1, "int", $y1, "int", $right, "int", $bottom, "str", $findImage)
	EndIf
	If $result = "0" Then
		Return 0
	EndIf

	; Otherwise get the x,y location of the match and the size of the image to
	; compute the centre of search
	$array = StringSplit($result[0], "|")
	If (UBound($array) >= 4) Then
		$x = Int(Number($array[2]))
		$y = Int(Number($array[3]))
		If $resultPosition = 1 Then
			$x = $x + Int(Number($array[4]) / 2)
			$y = $y + Int(Number($array[5]) / 2)
		EndIf
		Return 1
	EndIf
EndFunc   ;==>_ImageSearchArea

Func LeaveGame()
	Call("RandSleep")
	GUICtrlSetData($lblStatus, "Status: Leaving Game")
	Sleep(120)
	Send("{Escape}")
	Sleep(Random(200, 500))
	RandClick("left", Round(956 * $x_ratio), Round(579 * $y_ratio), 120, 20) ;Random Click on the leave button
	RandMove(Round(Random(10, 230) * $x_ratio), Round(Random(11, 286) * $y_ratio), 120, 20)
	Call("CalcTime")
EndFunc   ;==>LeaveGame

Func TownPortal()
	GUICtrlSetData($lblStatus, "Status: Returning to Town")
	Send("t")
	Sleep(Random($tptime, $tptime + 500))
EndFunc   ;==>TownPortal

Func Moving($time)
	Sleep($time / $movementSpeed)
EndFunc   ;==>Moving

Func RandClick($clickType, $xPos, $yPos, $xOff = 10, $yOff = 10, $clicks = 1, $speed = 4)
	If $xOff < 1 Then $xOff = 1
	If $yOff < 1 Then $yOff = 1
	$randX = Round(Random($xPos - ($xOff * $x_ratio), $xPos + ($xOff * $x_ratio)))
	$randY = Round(Random($yPos - ($yOff * $y_ratio), $yPos + ($yOff * $y_ratio)))
	MouseClick($clickType, $randX, $randY, $clicks, $speed)
EndFunc   ;==>RandClick

Func RandMove($xPos, $yPos, $xOff = 20, $yOff = 10)
	$randX = Round(Random($xPos - ($xOff * $x_ratio), $xPos + ($xOff * $x_ratio)))
	$randY = Round(Random($yPos - ($yOff * $y_ratio), $yPos + ($yOff * $y_ratio)))
	MouseMove($randX, $randY)
EndFunc   ;==>RandMove

Func RandSleep($min = 15, $max = 30, $chance = 3)
	$randNum = Round(Random(1, 100))
	If $Timer == "True" And $randNum <= $chance Then
		$sleepTime = Random($min * 1000, $max * 1000)
		GUICtrlSetData($lblStatus, "Status: Random Sleep - " & Round($sleepTime / 1000) & " secs")

		For $c = 0 To 10
			Sleep($sleepTime / 10)
		Next
	EndIf
EndFunc   ;==>RandSleep

;Hotkey Functions

Func Begin()
	$Go = Not $Go
	If Not $Go Then WinSetTitle($title, "", $title & $ver & " - Halted")
EndFunc   ;==>Begin

Func TogglePause()
	$Paused = Not $Paused
	While $Paused
		Sleep(100)
		WinSetTitle($title, "", $title & $ver & " - Paused")
		ToolTip('Script is "Paused"', 0, 0)
	WEnd
	WinSetTitle($title, "", $title & $ver & " - Running")
	ToolTip("")
EndFunc   ;==>TogglePause

Func ShowLoot()
	GUICtrlSetData($lblGear, "Legendary: " & $LegendaryCount & " - Set: " & $SetCount & " - Rare: " & $RareCount)
	GUICtrlSetData($lblItems, "Magic: " & $MagicCount & " - Gems: " & $GemCount & " - Tomes: " & $TomeCount)
EndFunc   ;==>ShowLoot

Func Stop() ;to allow the script to stop
	Exit
EndFunc   ;==>Stop



#34 Wave

Wave

    Newbie lvl 4

  • Membres
  • 25 messages

Posté 10 July 2012 - 08:01

Desole je n'ai pas eu le temps de passer ce we ;) je bossai sur un script pour farm le "repos du guerrier". Le taux de drop de rare, legend, set et tout simplement enorme avec un bon stuff mf ;) par contre il faut bien régler le run pour eviter de rip _ne foi sur 2 :) mais avec un soso avec un bon burst les premier resultat son "encourageant" :).
M enfin revenons a nos moutons :) , j'essairais de repondre au questions non repondu ce soir. Merci aux autres contributeur qui on pris le relais ;)

#35 Toupacko

Toupacko

    Newbie lvl 3

  • Membres
  • 13 messages

Posté 13 July 2012 - 02:12

comment l'ajouter a un bot ? pour ceux qui si connaisse pas trop ^^

#36 gms-mat

gms-mat

    Collectionneur

  • Bannis
  • 2819 messages
  • Hobbies :Énigmes, Gudei

Posté 13 July 2012 - 03:20

comment l'ajouter a un bot ? pour ceux qui si connaisse pas trop ^^


Salut,

Ca depend de ton bot.
Pour faire des modifs a la main, tout seul, faut commencer a s'y connaitre.

Donc, pour repondre a ta question, tu peux pas, si tu n'y connais rien

Mat
Clavier qwerty, mes excuses pour le manque d'accents

Image IPB


#37 Speedy02

Speedy02

    Débutant lvl 2

  • Membres
  • 46 messages

Posté 13 July 2012 - 12:33

Moi je n'y connaissais, et je n'y connais rien... Si tu es un peu futé, tu comprendras vite le fonctionnement du code/script et tu pourras modifier celui-ci...

Si t'es motivé, installe NotePad++ et analyse le code ;)
  • Skd aime ceci

#38 Skd

Skd

    Hard Gamer

  • Membres
  • 398 messages
  • Location :Inferno

Posté 13 July 2012 - 13:12

Moi je n'y connaissais, et je n'y connais rien... Si tu es un peu futé, tu comprendras vite le fonctionnement du code/script et tu pourras modifier celui-ci...Si t'es motivé, installe NotePad++ et analyse le code ;)

Je confirme :)
+1 pour la motivation de notre Speedy :D
Image IPBDeux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...

#39 iiyama94

iiyama94

    Newbie lvl 1

  • Membres
  • 2 messages

Posté 13 July 2012 - 22:54

Salut, mais vous dites mettres les .png dans le dossier, mais ou sont les png lvl 60 a 63 ?

#40 Speedy02

Speedy02

    Débutant lvl 2

  • Membres
  • 46 messages

Posté 14 July 2012 - 18:42

Tu dois les créer ;)

=> Capture d'écran
=> Modifier avec Paint si besoin
=> Enregistrer en .png
=> Glisser dans le dossier des pngs (pics)