Autoit [AutoIt] Le nouveau systeme de récolte ( Shift+Click )

Inscrit
15 Avril 2011
Messages
457
Reactions
1
#21
kangogoo a dit:
Sinon deuxième chose, est-il possible d'augmenter la zone de recherche après le premier spot car quand je récolte ma ressource il a toujours une plante au sol ( non recoltable bien sur ) mais qui a des pixel identique a ceux de la plante récoltable. En gros si la ressource se trouve en [X,Y] chercher le prochain pixel pas avant un périmètre de [X+20,Y+20] par exemple.

Savez-vous comment je peux arriver a faire cela ? Est-il possible d'exclure un zone temporairement ( pendant 5 secondes par exemple ) ?
FFAddExcludedArea(...)
Sleep(5000)
FFResetExcludedAreas()
 
Inscrit
5 Decembre 2010
Messages
114
Reactions
0
#22
J'ai effectivement penser a ce système mais bon si je met ce bout de code dans la fonction cueillette après mon sleep(3000) cela ferait une pause de 8secondes sans activité.
Code:
Func _Ceuillette()
   global $MyWindowHandle = WinGetHandle("Oxydess")
   FFSetWnd($MyWindowHandle, True)
   for $FFCat = 0 to 0
	  Switch $FFCat
		 Case 0 
			local $SearchResult = FFStart($gFFChanvreColors)
	  EndSwitch

	  while (@Error = 0)
		 MouseClick("left",$SearchResult[0],$SearchResult[1]); Do here what you want once you find a good Spot. // On click sur la ressource	
		 sleep(3000); Position (center of spot) is in (x:$SearchResult[0], y:$SearchResult[1]) // On attends la récolte
		 _Combat(); $SearchResult[2] gives the number of good pixels found in 10x10 spot (1 min, or closest spot with at least 20) // On verifie si on entre pas en cbt
		 _FullPods()
		 $SearchResult = FFFindNext() ; Looks for the next spot
	  Wend

   Next
EndFunc
Sauf si je fais cela mais je ne suis pas sur que cela marche ( je peux pas tester, c'est pour cela que je demande ) :
Code:
...
...
...
while (@Error = 0)
		 MouseClick("left",$SearchResult[0],$SearchResult[1]); Do here what you want once you find a good Spot. // On click sur la ressource	
		 sleep(3000); Position (center of spot) is in (x:$SearchResult[0], y:$SearchResult[1]) // On attends la récolte
                 FFAddExcludedArea(...)
                 $compteur_areas += 1
                 If $compteur_areas = 2 ; soit environ 6secondes
                       FFResetExcludedAreas() 
                       $compteur_areas = 0 ; on remet a zéro
                 Else
                       sleep(50) ; histoire de faire qqchose
                 EndIf
		 _Combat(); $SearchResult[2] gives the number of good pixels found in 10x10 spot (1 min, or closest spot with at least 20) // On verifie si on entre pas en cbt
		 _FullPods()
		 $SearchResult = FFFindNext() ; Looks for the next spot
	  Wend

   Next
EndFunc
Mais si je fais cela alors toute mes zones d'exclusion seront remise a zéro ( voir screen plus haut avec les carrés bleu ). Qu'en penses-tu ?
 
Inscrit
15 Avril 2011
Messages
457
Reactions
1
#23
Je te propose un algorithme pour ton bot, car le tien a l'air un peu flou :

- Chercher un pixel de céréale
- Si pixel trouvé ---> Alors faire bouger la souris sur le pixel.
- Si le pixel change de couleur (passage en surbrillance de la céréale).
---> Si oui, on clique sur le pixel et on attend que le nombre de ressources fauchées apparaisse (fin du fauchage).
---> Si non, on exclue le pixel.
- Test pour savoir si on est en combat ---> Si oui, on lance la fonction combat.
- Test pour savoir si l'inventaire est plein ---> Si oui, on lance la fonction inventaire_plein.
- On relance la boucle.


Le seul petit bémol, c'est que s'il trouve un pixel sur une céréale déjà fauché, la céréale passe quand même en surbrillance, et il va cliquer dessus. C'est à tester, voir s'il en trouve dedans ou pas.
 
Inscrit
5 Decembre 2010
Messages
114
Reactions
0
#24
Comment faire pour savoir qu'en la ressource passe en surbrillance ou non quand la souris passe dessus, parce qu'il va changer de couleur et vu que j'ai 21 pixels différents il faudrait les 21 pixels de surbrillance correspondant ou il y a un autre moyen ?
 
Inscrit
15 Avril 2011
Messages
457
Reactions
1
#25
Code:
If PixelGetColor(x,y)<>0xXXXXXX Then
          MouseClick(...)
Else
          FFAddExcludedArea(...)
EndIf
C'est basique ça...
 
Inscrit
5 Decembre 2010
Messages
114
Reactions
0
#26
Oui ca je sais faire mais il faudrait détecter un pixel précis parce que si il passe la souris au moment où un autre joueur passe ( joueur ou bot pvm c'est pareil ) et bien il va quand même croire a une ressource récoltable et la récolter. Sa peut ne pas causer de problème sauf si il clique sur le personnage et par dans un délire HS. A voir donc ....
Mais pourrais-tu nous montrer ton code histoire de voir ton architecture et ton algo stp ?
 
Inscrit
15 Avril 2011
Messages
457
Reactions
1
#27
Le pixel utilisé est celui que tu viens de trouver grâce à PixelSearch.

Je n'ai pas de bot récolte.
 
Inscrit
5 Decembre 2010
Messages
114
Reactions
0
#28
J'ai fais comme tu ma dis et j'obtiens ceci :
Code:
while (@Error = 0)
		 MouseMove($SearchResult[0],$SearchResult[1]) ; si trouvé on bouge la souris dessus
		 If PixelGetColor($SearchResult[0],$SearchResult[1]) <> $gFFChanvreColors Then ; si la couleur change ( surbrillance )
			MouseClick("left",$SearchResult[0],$SearchResult[1])
		 Else
			FFAddExcludedArea($SearchResult[0]-1,$SearchResult[1]-1,$SearchResult[0]+1,$SearchResult[1]+1)
		 EndIf
		 _Combat(); $SearchResult[2] gives the number of good pixels found in 10x10 spot (1 min, or closest spot with at least 20) // On verifie si on entre pas en cbt
		 _FullPods()
		 $SearchResult = FFFindNext() ; Looks for the next spot
	  Wend
Mais mon problème persiste puisque la ressource une fois récolter tombe au sol sauf que une fois au sol elle passe aussi en surbrillance quand on passe la souris dessus.
 
Inscrit
5 Decembre 2010
Messages
114
Reactions
0
#29
J'ai résolue mon problème en supprimant le pixel qui était sur les plante sur le sol et j'ai modifier la structure de mon code et cela donne ceci ( une partie n'est pas encore coder c'est normal, et une autre est en commentaire c'est aussi normal ;) ) :
Code:
while (@Error = 0)
		 $perso = PixelSearch(0,0,800,600,0xF1EDC9) ; on cherche pixel de coiffe
		 if not @error Then ; si trouver alors
			; on exclue la zone avec le personnage
		 ElseIf @error Then ; si pas trouver
			$creature = PixelSearch(0,0,800,600,0xFFFFFF) ; on cherche pixel créature
			if not @error Then ; si trouvé alors
			   ; on exclu la zone avec la créature
			Else ; sinon
			   sleep(50) ; on se tourne les pouce xD
			EndIf
		 EndIf
		 FFAddExcludedArea(171,207,385,242)
		 FFAddExcludedArea(177,240,324,277)
		 FFAddExcludedArea(172,274,267,304)
		 FFAddExcludedArea(172,307,217,344)
		 FFAddExcludedArea(204,291,236,323)
		 FFAddExcludedArea(267,274,300,290)
		 FFAddExcludedArea(321,231,353,268)
		 FFAddExcludedArea(381,211,415,235)
		 FFAddExcludedArea(172,444,210,563)
		 FFAddExcludedArea(172,467,260,561)
		 FFAddExcludedArea(259,480,293,561)
		 FFAddExcludedArea(292,512,355,562)
		 FFAddExcludedArea(356,533,403,564)
		 FFAddExcludedArea(512,540,552,563)
		 FFAddExcludedArea(550,524,612,563)
		 FFAddExcludedArea(602,500,691,563)
		 FFAddExcludedArea(640,469,688,499)
		 FFAddExcludedArea(687,452,785,563)
		 FFAddExcludedArea(724,426,785,453)
		 FFAddExcludedArea(755,335,785,432)
		 FFAddExcludedArea(728,308,785,353)
		 FFAddExcludedArea(661,280,785,312)
		 FFAddExcludedArea(596,253,785,285)
		 FFAddExcludedArea(540,211,785,252)
		 FFAddExcludedArea(571,235,611,278)
		 FFAddExcludedArea(505,209,549,232)
		 FFAddExcludedArea(402,208,519,223)
;~ 		 MouseMove($SearchResult[0],$SearchResult[1]) ; si trouvé on bouge la souris dessus
;~ 		 If PixelGetColor($SearchResult[0],$SearchResult[1]) <> $gFFChanvreColors Then ; si la couleur change ( surbrillance )
;~ 			MouseClick("left",$SearchResult[0],$SearchResult[1]) ; on click dessus
;~ 		 Else
;~ 			FFAddExcludedArea($SearchResult[0]-1,$SearchResult[1]-1,$SearchResult[0]+1,$SearchResult[1]+1) ; sinon on exclue la zone
;~ 		 EndIf
		 MouseClick("left",$SearchResult[0],$SearchResult[1]); Do here what you want once you find a good Spot. // On click sur la ressource	
		 sleep(3000); Position (center of spot) is in (x:$SearchResult[0], y:$SearchResult[1]) // On attends la récolte
		 FFAddExcludedArea($SearchResult[0]-20,$SearchResult[1]-20,$SearchResult[0]+20,$SearchResult[1]+20)
		 $compteur_areas += 1
		 TrayTip("",$compteur_areas, 100)
		 If $compteur_areas = 10 Then
			FFResetExcludedAreas()
			$compteur_areas = 0
		 EndIf
		 _Combat(); $SearchResult[2] gives the number of good pixels found in 10x10 spot (1 min, or closest spot with at least 20) // On verifie si on entre pas en cbt
		 _FullPods() ; on vérifie si on est pas full pods
		 $SearchResult = FFFindNext() ; Looks for the next spot
	  Wend
Bien que je pense que cette partie est inutile puisqu'il ne detecte plus le pixel au sol mais bon, a voir :
Code:
 FFAddExcludedArea($SearchResult[0]-20,$SearchResult[1]-20,$SearchResult[0]+20,$SearchResult[1]+20)
		 $compteur_areas += 1
		 TrayTip("",$compteur_areas, 100)
		 If $compteur_areas = 10 Then
			FFResetExcludedAreas()
			$compteur_areas = 0
		 EndIf
Voila j’espère que tout mes problème seront résolu, si jamais d'autres surviennent je vous en ferait part.
Sur ce, bonne nuit à tous.
 
Inscrit
15 Avril 2011
Messages
457
Reactions
1
#30
Mais si tu supprimes toutes ces zones de pixels, tu va avoir des trous partout dans ton champ de céréales non ?
 
Inscrit
5 Decembre 2010
Messages
114
Reactions
0
#31
Oui mais pour finir je l'ai laisser parce que ça fait pas de mal ;)
 
Inscrit
5 Decembre 2010
Messages
114
Reactions
0
#33
Ceci :
Code:
 FFAddExcludedArea($SearchResult[0]-30,$SearchResult[1]-30,$SearchResult[0]+30,$SearchResult[1]+30)
		 $compteur_areas += 1
		 TrayTip("",$compteur_areas, 100)
		 If $compteur_areas = 20 Then
			FFResetExcludedAreas()
			$compteur_areas = 0
		 EndIf
 
Inscrit
5 Decembre 2010
Messages
114
Reactions
0
#35
Oui, mais c'est quand même moins rapide que de le faire à la main.
 
Inscrit
5 Decembre 2010
Messages
114
Reactions
0
#37
Recolter les ressource a la main, avec la souris quoi.
 
Inscrit
15 Avril 2011
Messages
457
Reactions
1
#38
Bah oui c'est sûr ! Mais ton bot, il a jamais faim, il est jamais fatigué, il a pas besoin d'aller aux toilettes,... ^^
Et puis, avec la VM, tu peux faire autre chose en même temps :p
 
A

Anonymous

Invité
#39
NicoMasterChief a dit:
Bah oui c'est sûr ! Mais ton bot, il a jamais faim, il est jamais fatigué, il a pas besoin d'aller aux toilettes,... ^^
Et puis, avec la VM, tu peux faire autre chose en même temps :p
Je vais peut-être demander quelque chose de totalement noob et débile mais : es-tu sûr que si tu réduis la fenêtre de la VM le bot fonctionne toujours ?
 
Inscrit
5 Decembre 2010
Messages
114
Reactions
0
#40
J'ai tester et oui le bot continue bien ces actions mais il faut un pc assez puissant/récent pour faire tourner correctement D. sur une VM
 
Haut Bas