Página 1 de 1

Funcion y loop "Do ... Until" no me funciona

Publicado: 08 May 2012, 10:36
por ziknos
Global $exitcolor = pixelgetcolor(425, 249)

Func _GAME()
Local $exitcolor = pixelgetcolor(425, 249)
If _WAIT(564, 49, 2847010, 150) = False Then Return False
sleep(100)
Do
Mouseclick("right", 1008, 711, 2)
Sleep(5000)
Until $exitcolor = 18539231 (número inventado, el correcto no lo tengo ahora :P)

Return False

EndFunc


He probado declarando la variable en Global y en Local a ver si la coje pero no hay manera, en cambio, haciendo una página nueva, fuera de ese script y de esa función y poniendo lo siguiente :

Local $exitcolor = pixelgetcolor(425, 249)
Do
Mouseclick("right", 1008, 711, 2)
Sleep(5000)
Until $exitcolor = 18539231 (número inventado, el correcto no lo tengo ahora :P)


Esta sí que funciona por separado pero la misma dentro de la función y de mi script no lo detecta.

Cuál puede ser el motivo ??


Gracias

Re: Funcion y loop "Do ... Until" no me funciona

Publicado: 08 May 2012, 11:34
por BasicOs
Tienes que hacer que $exitcolor cambio dentro del LOOP y no fuera para cuando mueves el ratón y va actualizandose el valor de la variable según cambian los pixeles de la posición del ratón cambiada. (Mousegetpos())
$pos = MouseGetPos()
MsgBox(0, "Mouse x,y:", $pos[0] & "," & $pos[1])
Puedes hacer un msgbox o un display en el Tray para que cada tiempo (eg un sleep) te muestre el valor de $exitcolor.
Salu22:)

Re: Funcion y loop "Do ... Until" no me funciona

Publicado: 08 May 2012, 11:42
por ziknos
Hola, disculpa pero no entendí muy bien, la función lo que quiero que haga es

Primero el _Wait es una función para un "pause" hasta que salga el color que pone, entonces sigue en ejecución, si después de los 150 segundos que pone no ha salido el color, devuelve "False" y se reinicia todo el script.

Después una vez ha encontrado ese primero "wait" tiene que hacer clicks en un mismo punto hasta que el $exitcolor sea el indicado, entonces hará click en otro punto de la pantalla para finalizar.

No entiendo el motivo por el cual no me funciona de una forma y sí de la otra, si es prácticamente lo mismo.

Gracias :)

si añado : $exitcolor = pixelgetcolor(425, 249) dentro del "Do" .... Until me funcionará? necesito que no salga ningún msgbox ni nada así por que podría molestar en el medio de la pantalla.

gracias :smt002

Re: Funcion y loop "Do ... Until" no me funciona

Publicado: 08 May 2012, 18:58
por arkcrew
Hola,

La estructura del Do-Until es algo asi como, "hacer hasta que".

Lo que veo que tienes mal, la funcion que pausa, al estar fuera del bucle solo se ejecuta una vez por lo tanto si al principio esta el pixel bien contunuará mientras que si está erróneo, tirará error pero NO se volverá a ejecutar ya que habrás entrado de lleno en el bucle.

Debes tener muy claro que para que una función se ejecute o compruebe debe estar dentro de un bucle, asi pues, lo que yo haría sería meter en un while todo ello con algo como while "el color del pixel es el bueno" bucle wend y dentro del bucle ejecutar las acciones, asi está todo el rato comprobando el pixel y de ser válido ejecuta el código.

Espero que te sea de ayuda.

Saludos!