Page 1 sur 1
[R] Faire une boucle pendant un certain temps
Posté : dim. 26 déc. 2010 16:58
par Xtroyer
Salut à tous
Voilà, je me suis lancé dans un code, qui consiste à faire une action durant un temps donné par l'utilisateur ($time, qui par défaut prend la valeur 60) , mais cela ne fonctionne pas, et le fait à l'infini :/ pourtant je ne vois pas d'erreur
► Afficher le texte
Code : Tout sélectionner
Global $MAX_COLOR = 4
Global $COLORS = 0
Global $COLORpixel1[$MAX_COLOR] = [0xF9CD2A, 0xF7BC27, 0xCDA931, 0xC6941F]
Global $time = 60
Global $frequence = 15000
Func paysan()
[color=#BF0000]$begin = TimerInit()[/color]
[color=#BF0000]Do[/color]
demarrage()
Global $pixel1 = pixelsearch(243,34,1109,630, $COLORpixel1[$COLORS], 1, 1) ; Recherche d'une certaines couleur en fonction de la valeur de $COLORS
If Not @error Then
MouseClick("left", $pixel1[0], $pixel1[1], 1, 1)
MouseClick("left", $pixel1[0] + 10, $pixel1[1] + 20,1,1)
Sleep($frequence)
Else
changec()
EndIf
[color=#BF0000]$dif = TimerDiff($begin)[/color]
[color=#BF0000]Until $dif = (($time * 60) / 1000)[/color]
MsgBox(0,"Fin", "Les " & $time / 60 & " sont terminées.")
EndFunc
J'ai mis en rouge ce qui est censé gérer le temps, vous avez une idée de comment résoudre ce problème ?
Merci

Re: [..] Faire une boucle pendant un certain temps
Posté : dim. 26 déc. 2010 17:40
par Colin117
Je pense que tu trouvera ton bonheur ici, j'avais traiter ce sujet avec lokomass.
http://autoitscript.fr/forum/viewtopic.php?f=3&t=6471
Re: [..] Faire une boucle pendant un certain temps
Posté : dim. 26 déc. 2010 18:53
par Xtroyer
J'ai rajouté cela à la place du Until, sachant que $temps est égal en minutes au temps donné par l'utilisateur
$temps = $temps - ($dif / 1000)
Until $temps <= 0
$dif étant égal à la durée d'une boucle en milisecondes, je test.
EDIT : fonctionne pas :/
Nouveau code :
► Afficher le texte
Code : Tout sélectionner
Do
$begin = TimerInit()
Global $pixel1 = pixelsearch(243,34,1109,630, $COLORpixel1[$COLORS], 1, 1) ; Recherche d'une certaines couleur en fonction de la valeur de $COLORS
If Not @error Then
MouseClick("left", $pixel1[0], $pixel1[1], 1, 1)
MouseClick("left", $pixel1[0] + 10, $pixel1[1] + 20,1,1)
Sleep($frequence)
Else
changec()
EndIf
EndIf
$dif = TimerDiff($begin)
$temps = $temps - ($dif / 1000)
Until $temps <= 0
MsgBox(0,"Fin", "Les " & $time & " minutes sont terminées.")
EDIT 2 : Fonctionne, j'ai tout simplement oublié que la valeur de $dif était en milisecondes, je faisais bien /1000 pour avoir des secondes, mais fallait aussi /60 pour avoir des minutes, et si j'avais voulu avoir des heures, rediviser par 60, ou directement par 3600.
Code fonctionnel :
► Afficher le texte
Code : Tout sélectionner
Do
$begin = TimerInit()
Global $pixel1 = pixelsearch(243,34,1109,630, $COLORpixel1[$COLORS], 1, 1) ; Recherche d'une certaines couleur en fonction de la valeur de $COLORS
If Not @error Then
MouseClick("left", $pixel1[0], $pixel1[1], 1, 1)
MouseClick("left", $pixel1[0] + 10, $pixel1[1] + 20,1,1)
Sleep($frequence)
Else
changec()
EndIf
EndIf
$dif = TimerDiff($begin)
$temps = $temps - (($dif / 60) / 1000) ; ou directement $temps = $temps - ($dif / 60000)
Until $temps <= 0
MsgBox(0,"Fin", "Les " & $time & " minutes sont terminées.")
Re: [..] Faire une boucle pendant un certain temps
Posté : dim. 26 déc. 2010 19:09
par Colin117
Si tu ne veux pas avoir de problème retire le mot "bot" (du poste sur le forum pas de ton script, ce que tu fait avec ton script on s'en fou

).
Sinon c'est bien bonne chance pour la suite !
Ps: Si c'est bon met la balise [R] devant ton titre en éditant le premier message
Cordialement
Colin117
Re: [..] Faire une boucle pendant un certain temps
Posté : dim. 26 déc. 2010 19:17
par Xtroyer
Ok dac, je pensais pas que c'était interdit, de toute manière, c'était une fonction à part, ça aurait pu être pour un bot comme pour n'importe quoi, donc laissez le topic ça peut aider les autres
