Autoit Les Conditions ?

  • Auteur de la discussion Anonymous
  • Date de début
A

Anonymous

Invité
#1
Bonsoir.

J'ai commencer à apprendre l'Autoit et je suis un peu bloqué, donc j'ai commencé a crée un Bot qui Mine.

Si le Bot détecte le "Fer 1", il le mine ensuite il passe au "Fer 2"
Si le Bot ne détecte pas le "Fer 1", il tente de détecter le "Fer 2" ainsi de suite.

Voici le Code :
;Fer 1
If ($pixel
$pixel = PixelSearch(0, 0, 1279, 1023, 0xA8A88E) ;Cherche le Pixel
If IsArray($pixel) = True Then
MouseMove($pixel [0], $pixel [1], 1)
MouseClick("left", 252,323, 1, 5) ;Clique sur le minerais de Fer
EndIf

$pixel = PixelSearch(0, 0, 1279, 1023, 0xD5CFAA) ;Cherche le Pixel
If IsArray($pixel) = True Then
MouseMove($pixel [0], $pixel [1], 1)
MouseClick("left", 291,368, 1, 5) ;Clique sur "Collecter le Fer"
Sleep(10000)
EndIf

;Fer 2
If ($pixel
$pixel = PixelSearch(0, 0, 1279, 1023, 0xA7A591) ;Cherche le Pixel
If IsArray($pixel) = True Then
MouseMove($pixel [0], $pixel [1], 1)
MouseClick("left", 308,320, 1, 5) ;Clique sur le minerais de Fer
EndIf

$pixel = PixelSearch(0, 0, 1279, 1023, 0xB4AD8E) ;Cherche le Pixel
If IsArray($pixel) = True Then
MouseMove($pixel [0], $pixel [1], 1)
MouseClick("left", 353,373, 1, 5) ;Clique sur "Collecter le Fer"
Sleep(10000)
EndIf

J'aimerais savoir comment m'y prendre pour y mettre une Condition?
 
A

Anonymous

Invité
#3
Moonlight-Angel a dit:
Ce serait pas un problème de syntaxe tout basique ?
Un problème réglé en une recherche Google ?
http://www.autoitscript.fr/forum/viewto ... f=11&t=375
J'ai déjà vu ce topic mais j'aimerais savoir comment intégré :

Code:
If (proposition-à-verifier est vraie) Then
    ;actions à effectuer
 
Else
    ;actions à effectuer
 
EndIf
Voici mon code .. mais ça ne fonctionne pas

Code:
WinActivate("Dofus")

$pixel = PixelSearch(0,0, 1279, 1023,0)

If ($pixel) Then
    ;Fer 1
 $pixel = PixelSearch(0, 0, 1279, 1023, 0xA8A88E)
	If IsArray($pixel) = True Then
	   MouseMove($pixel [0], $pixel [1], 1)
	   MouseClick("left", 252,323, 1, 5)
	EndIf

 $pixel = PixelSearch(0, 0, 1279, 1023, 0xD5CFAA)
	If IsArray($pixel) = True Then
	   MouseMove($pixel [0], $pixel [1], 1)
	   MouseClick("left", 291,368, 1, 5)
	   Sleep(10000)
	EndIf
Else
   ;Fer 2
 $pixel = PixelSearch(0, 0, 1279, 1023, 0xA7A591)
	If IsArray($pixel) = True Then
	   MouseMove($pixel [0], $pixel [1], 1)
	   MouseClick("left", 308,320, 1, 5)
	EndIf

 $pixel = PixelSearch(0, 0, 1279, 1023, 0xB4AD8E)
	If IsArray($pixel) = True Then
	   MouseMove($pixel [0], $pixel [1], 1)
	   MouseClick("left", 353,373, 1, 5)
	   Sleep(10000)
	EndIf
 
Inscrit
27 Aout 2012
Messages
264
Reactions
0
#4
Tu entends quoi par "ça ne fonctionne toujours pas" ?
Un peu plus de précisions ne seraient pas de refus.
 
A

Anonymous

Invité
#5
Comment je pourrais expliquer ce que j'aimerais faire.. hmmm
Je vais essayé d'être plus claire dans ce que je demande !

- Si le Pixel est détecter, il le mine ensuite il passe au suivant
- Si le Pixel n'est pas détecter, il passe au suivant

Voici le code que j'ai crée & il fonctionne le seul soucis c'est que je n'est pas réussi à rajouter de Conditions.

- Si le PixelSearch du "Fer 1" est détecter, il va le miner et ensuite j'aimerais qu'il passe au "Fer 2".
- Si le PixelSearch du "Fer 1" n'est pas détecter, il passe au "Fer 2" ainsi de suite.

Du coup, j'aimerais qu'ont m'apprenne à rajouter des Conditions dans mon bout de Code car je n'y arrive pas.
J'ai beau essayé, cela ne fonctionne pas comme je le souhaite.

Code:
WinActivate("Dofus")

;Fer 1
While (1)
 $pixel = PixelSearch(0, 0, 1279, 1023, 0xA8A88E)
	If IsArray($pixel) = True Then
	   MouseMove($pixel [0], $pixel [1], 1)
	   MouseClick("left", 252,323, 1, 5)
	EndIf

 $pixel = PixelSearch(0, 0, 1279, 1023, 0xD5CFAA)
	If IsArray($pixel) = True Then
	   MouseMove($pixel [0], $pixel [1], 1)
	   MouseClick("left", 291,368, 1, 5)
	   Sleep(10000)
	EndIf

   ;Fer 2

 $pixel = PixelSearch(0, 0, 1279, 1023, 0xA7A591)
	If IsArray($pixel) = True Then
	   MouseMove($pixel [0], $pixel [1], 1)
	   MouseClick("left", 308,320, 1, 5)
	EndIf

 $pixel = PixelSearch(0, 0, 1279, 1023, 0xB4AD8E)
	If IsArray($pixel) = True Then
	   MouseMove($pixel [0], $pixel [1], 1)
	   MouseClick("left", 353,373, 1, 5)
	   Sleep(10000)
	EndIf

	;Fer 3

 $pixel = PixelSearch(0, 0, 1279, 1023, 0xA9A992)
	If IsArray($pixel) = True Then
	   MouseMove($pixel [0], $pixel [1], 1)
	   MouseClick("left", 352,345, 1, 5)
	EndIf

 $pixel = PixelSearch(0, 0, 1279, 1023, 0xD5CFAA)
	If IsArray($pixel) = True Then
	   MouseMove($pixel [0], $pixel [1], 1)
	   MouseClick("left", 398,392, 1, 5)
	   Sleep(10000)
	EndIf

	;Fer 4

 $pixel = PixelSearch(0, 0, 1279, 1023, 0xA9A792)
	If IsArray($pixel) = True Then
	   MouseMove($pixel [0], $pixel [1], 1)
	   MouseClick("left", 701,275, 1, 5)
	EndIf

 $pixel = PixelSearch(0, 0, 1279, 1023, 0xD5CFAA)
	If IsArray($pixel) = True Then
	   MouseMove($pixel [0], $pixel [1], 1)
	   MouseClick("left", 748,317, 1, 5)
	   Sleep(10000)
	EndIf

	;Fer 5

 $pixel = PixelSearch(0, 0, 1279, 1023, 0xA4A48C)
	If IsArray($pixel) = True Then
	   MouseMove($pixel [0], $pixel [1], 1)
	   MouseClick("left", 836,208, 1, 5)
	EndIf

 $pixel = PixelSearch(0, 0, 1279, 1023, 0xD5CFAA)
	If IsArray($pixel) = True Then
	   MouseMove($pixel [0], $pixel [1], 1)
	   MouseClick("left", 878,250, 1, 5)
	   Sleep(10000)
	EndIf

	;Fer 6

 $pixel = PixelSearch(0, 0, 1279, 1023, 0xA3A38C)
	If IsArray($pixel) = True Then
	   MouseMove($pixel [0], $pixel [1], 1)
	   MouseClick("left", 927,163, 1, 5)
	EndIf

 $pixel = PixelSearch(0, 0, 1279, 1023, 0xD5CFAA)
	If IsArray($pixel) = True Then
	   MouseMove($pixel [0], $pixel [1], 1)
	   MouseClick("left", 978,205, 1, 5)
	   Sleep(10000)
	EndIf

	;Fer 7

 $pixel = PixelSearch(0, 0, 1279, 1023, 0xA7A590)
	If IsArray($pixel) = True Then
	   MouseMove($pixel [0], $pixel [1], 1)
	   MouseClick("left", 983,161, 1, 5)
	EndIf

 $pixel = PixelSearch(0, 0, 1279, 1023, 0xD5CFAA)
	If IsArray($pixel) = True Then
	   MouseMove($pixel [0], $pixel [1], 1)
	   MouseClick("left", 1026,203, 1, 5)
	   Sleep(10000)
	EndIf

	;Fer 8

 $pixel = PixelSearch(0, 0, 1279, 1023, 0xABAB92)
	If IsArray($pixel) = True Then
	   MouseMove($pixel [0], $pixel [1], 1)
	   MouseClick("left", 1027,187, 1, 5)
	EndIf

 $pixel = PixelSearch(0, 0, 1279, 1023, 0xD5CFAA)
	If IsArray($pixel) = True Then
	   MouseMove($pixel [0], $pixel [1], 1)
	   MouseClick("left", 1080,228, 1, 5)
	   Sleep(10000)
	EndIf

	WEnd
Voici en image ce que je souhaite faire :

Dans la première image vous pouvez voir qu'il y a Fer 1, Fer 2 & Fer 3.



et dans la deuxième image il y a toujours le Fer 1 & Fer 3 mais pas le Fer 2.



Et quand mon personnage mine même si le minerais de Fer 2 n'est pas là, il essais de le miné alors qu'il devrait passé au Fer 3
vu qu'il y est donc détectable.

J'espère avoir été assez claire cette fois-ci.
 
Inscrit
27 Aout 2012
Messages
264
Reactions
0
#6
Le fait qu'il mine un fer qui n'est pas disponible peut venir de deux choses :
- Soit ta couleur est mauvaise et l'endroit où il check le pixel color la couleur est la même avec ou sans fer
- Soit ta condition est effectivement fausse

De toute façon quelque chose ne va pas du tout dans ton code, outre sa redondance.
Tu fais un pixel search sur, à première vue, tout ton écran, pour une certaine couleur.
Si tu réfléchis deux secondes, cette fonction te dit si au moins 1 pixel a cette couleur sur TOUT ton écran. Tu imagines bien que plus d'un pixel aura la couleur recherchée, donc ta condition est tout le temps vrai.
De nouveau deux solutions :
- Soit tu check un pixel en particulier (à un certain endroit précis, de préférence un pixel qui change si le fer est dispo ou non)
- Soit tu check dans un carré pré-défini qui entoure tout le fer voulu à la recherche d'une couleur qui est unique dans ce carré et qui est présente uniquement si le fer est dispo ou inversement.
 
A

Anonymous

Invité
#7
Comment puis-je faire pour qu'il détecte la Couleur de Pixel uniquement dans cette zone la ?

 

Geraff

Administrateur
Membre du personnel
Inscrit
13 Mars 2008
Messages
564
Reactions
0
#8
Avec ton pixelsearch au lieu de le faire dans tous l'écran tu choisis les bonne zones de recherche.
 
Haut Bas