Página 1 de 1
Macro AutoHockey´s
Publicado: 21 Jun 2011, 03:24
por Winer1
Hola a Todos
Mira quisiera hacer una consulta.
Quiero Hacer una Macro de AutoHockey´s en apariencia sencillo es decir lo que quiero que haga es lo Siguiente:
* Que sea para un cliente(No se si es asi el caso es que aunque no este la ventana frente ami(que yo ande por otra ventanas y el macro siga su trabajo).
* Que cada x tiempo mande un Hockey(Ejemplo F1).
* Que cada x tiempo Envie otro Hockey(Ejemplo F2).
* Que cada x tiempo active un sonido para que vaya a revisar que todo ande viento en popá.
Bueno yo lo veo muy dificil de hacer almenos para mi que no he hecho jamas algo asi y que se muy poco sobre dicho lenguaje quisiera saver que tanto me podrian ayudar o enseñar de ante mano Gracias.
PD1: Soy ultra nuevo en esto y encontre esta pagina y me parecio que serviria de mucho.
PD2: Anduve viendo lo de la macro y pues ya hice que funciona pero el codigo es muy grande y leiendo otros temas encontre que la puedo reducir pero nose como el codigo es el siguiente:
Código: Seleccionar todo
WinWait, Tibia,
IfWinNotActive, Tibia, , WinActivate, Tibia,
WinWaitActive, Tibia,
Sleep, 3000
Send, {ENTER}
Sleep, 3000
Send, {CTRLDOWN}{UP}{CTRLUP}
Sleep, 3000
Send, {F1}
Sleep, 3000
Send, {F1}
Sleep, 3000
Send, {F1}
Sleep, 168000
Send, {F1}
Sleep, 3000
Send, {F1}
Sleep, 3000
Send, {F1}
Sleep, 168000
Send, {F1}
Sleep, 3000
Send, {F1}
Sleep, 3000
Send, {F1}
Sleep, 168000
Send, {F1}
Sleep, 3000
Send, {F1}
Sleep, 3000
Send, {F1}
Sleep, 3000
Send, {F3}
Sleep, 3000
Send, {F3}
Sleep, 3000
Send, {F3}
Sleep, 3000
Send, {F3}
Sleep, 3000
Send, {F3}
Sleep, 168000
El Codigo tiene 74 lineas pero yo lo deje hasta ahi porque hasta mas o menos es lo que quiero que haga y luego que se vuelva a repetir como un ciclo.
Saludos
Re: Macro AutoHockey´s
Publicado: 21 Jun 2011, 04:30
por ms999
hola y bienvenido al foro de AutoIt lo que queres hacer es muy posible.
lo primero que veo en tu script es que debes tener una version vieja de SciTe, la syntaxis ha cambiado bastante y es mas comoda
lo segundo que te diria seria que trates de encontrar una logica para poder resumir el script, podes poner todo dentro de un bucle con temporizadores y dentro del bucle con una condicion if checkee si el temporizador llego a tal tiempo entonces mande la tecla y luego resetee el contador, eso te puede resumir el script a mucho menos de un cuarto de lo que tenes ahora.
tercero, no entiendo si la ventana que reciba la tecla debe estar activada o no al momento de recivir la tecla, se podria llamar al momento justo para recibir la tecla y luego minimizarce.
Yo te recomendaria empezar por bajarte la ultima version de SciTE, por aca en este foro podras encontrar una version en español de SciTe sino la version en ingles del foro oficial de AutoIt
Luego fijate si puedes explicar mejor cuanto tiempo hay que esperar para mandar cada tecla.
Si me aclaras esas cosas te podra ayudar
Re: Macro AutoHockey´s
Publicado: 21 Jun 2011, 04:42
por Winer1
Bueno.
Primero
Si es posible que la ventana no este activa al momento de hacerlo.(si no es posible entonces lo que dices que la ative aga la accion y la desactive asi para que pueda continuar navegando.)
Segundo.
Quiero mas o menos estos tiempos.
Cuando entre y active el Macro que espere unos 3 segundos y accione F1 y asi repetido 3 veses ejemplo:
Sleep, 3000 (3.00)
Send, {F1}
Sleep, 3000 (3.00)
Send, {F1}
Sleep, 3000 (3.00)
Send, {F1}
luego que espere 28 segundos y se repita el siclo asi durante 10 minutos y entonces entre la siguiente hockey asi
Sleep, 3000 (3.00)
Send, {F3}
Sleep, 3000 (3.00)
Send, {F3}
Sleep, 3000 (3.00)
Send, {F3}
Sleep, 3000 (3.00)
Send, {F3}
Sleep, 3000 (3.00)
Send, {F3}
y luego que se repita el ciclo sucesivamente hasta que yo decida pararlo espero me entiendas.
Re: Macro AutoHockey´s
Publicado: 21 Jun 2011, 06:38
por ms999
Si vos ves funcion por funcion, paso a paso lo que vas necesitando y haciendo vas a aprender y vas a poder hacerlo como vos quieras y editarlo o modificarlo a tu gusto... Esta es mi version quiza te ayude a ver una manera de hacerlo, y algunas funciones que te sirvan y algunos trucos... quiza te convenga la version de 70 y pico de lineas o quiza prefieras algo como esto que hice, eso ya es cosa de gustos. ;) bienvenido denuevo y decime si algo no va...
PD bajate la ultima version de AutoIt y el editor SciTe
Código: Seleccionar todo
HotKeySet("^s", "_Pausa") ; Aca Configuras la HotKey para activar la
; Funcion _StartPause() con "Ctrl+S"
HotKeySet("^r", "_Reiniciar") ; HotKey para Funcion Reiniciar "Ctrl+r"
HotKeySet("{ESC}", "_Exit") ; HotKey para terminar "Escape"
Global $Pausado = False ; Esto lo usaremos para pausar la funcion
Global $Check = 0 ; Esto lo usaremos para controlar las tre primeras veces
; que tiene que mandas F1
_start()
Func _Start()
$Timer = TimerInit()
While Not $Pausado; And WinExists("Tibia") ; Esto esta comentado con ; porque yo no tengo el programa
;~ consolewrite(TimerDiff($Timer)&@CRLF)
Sleep(100)
If TimerDiff($Timer) >= 3000 And $Check < 3 Then
Send("{F1}")
;~ consolewrite("A" &TimerDiff($Timer)&@CRLF) ; Esto esta comentado porque fue una prueba mia
$Timer = TimerInit()
$Check += 1
EndIf
If $Check = 3 Then ; si ya hizo los tres primeros F1
;~ Sleep(28000) ; Espera 28 segundos
$Timer = TimerInit() ; ponemos el contador
$Timer2 = TimerInit() ; Ponemos otro contador para los 10 minutos
While TimerDiff($Timer2) <= 600000 And Not $Pausado ; mientras hayan pasado menos de 10 minutos y no este pausado
If TimerDiff($Timer) >= 3000 Then
Send("{F3}")
;~ consolewrite("B" &TimerDiff($Timer)&@CRLF) ; Esto esta comentado porque fue una prueba mia
$Timer = TimerInit()
If $check = 0 then exitloop
EndIf
WEnd
$check = 0 ; Resetea Check para que vuelva a hacer el primer ciclo
EndIf
WEnd
EndFunc ;==>_Start
Func _Pausa() ; Sacado de aca http://www.emesn.com/autoitforum/viewtopic.php?f=12&t=2557&p=10349&hilit=pausar#p10349
If $Pausado Then
$Pausado = False
Else
$Pausado = True
While $Pausado ; Mientras este pausado solo hace sleep
Sleep(1000)
WEnd
EndIf
EndFunc ;==>_Pausa
Func _Reiniciar()
$Timer = TimerInit()
$check = 0
EndFunc ;==>_Reiniciar
Func _Exit()
Exit
EndFunc ;==>_Exit
Re: Macro AutoHockey´s
Publicado: 21 Jun 2011, 07:07
por Winer1
He probado el macro pero no logro hacer que funcione en el programa solo funciona fuera del el cuando esta el programa se pone como pausado como puedo solucionar eso? por cierto en la funcion star te falto te equivocaste creo xD es asi no:
Código: Seleccionar todo
HotKeySet("^a", "_start") ; Aca Configuras la HotKey para activar la
HotKeySet("^s", "_Pausa") ; Funcion _StartPause() con "Ctrl+S"
Re: Macro AutoHockey´s
Publicado: 21 Jun 2011, 09:05
por ms999
Yo lo probe haciendo que me escriba en la consola en vez de mandar F1 o F2(porque no tengo el programa) y funcionaba, quiza tengas que hacer eso de traer al frente la ventana...
puede ser que haya otra manera con controlsend() pero como no se cual es la funcion del programa o que es lo que haces cuando le mandas F1 no se si eso servira
EDIT: Traer la ventana cada tres segundos puede ser algo molesto, fijate si podes explicarme mas sobre el programa
Re: Macro AutoHockey´s
Publicado: 21 Jun 2011, 09:44
por Ximorro
Winer1, creo que puede haber una confusión. No es que tengas un Scite viejo, ¡es que eso no es
AutoIt!
Tú estás hablando de
AutoHotkey, que es otra cosa:
http://www.autohotkey.com/
Este foro es de
AutoIt:
http://www.autoitscript.com/site/autoit/
Lo que quieres se puede hacer en
AutoIt. Ahora bien, no sé si tu consulta es de
AutoHotkey, y entonces estás en el foro equivocado, o es que quieres pasar ese código de
AutoHoykey a
Autoit, en ese caso pues sí podemos ayudarte, tal como amablemente está haciendo
ms999, pero lógicamente él habla AutoIt, por eso si intentas ejecutarlo en AutoHoutkey te dará errores...
Re: Macro AutoHockey´s
Publicado: 21 Jun 2011, 10:16
por Winer1
Si quiero hacerlo mas simple ya que el autoHockey tengo que hacer lenguaje mas largo ademas el AutoIt me ayudara mas para otro tipo de trabajos que espero hacer a futuro.
En cuanto al codigo creo que me di a entender mal.
Lo que queria es que F1 hiciera esto:
Me conecto al Juego y activo el Macro entonces a los 3 segundos empiese la acción la cual ara 3 veces con un intervalo de 3 segundos entre cada una despues descansara 28 segundos y volvera a repetir el proseso durante 10 minutos. hasta ahí es sin nesesida de comida.
Y con F3 esto:
Despues de 10 minutos el macro, deveria de hacer un intervalo de 3 segundos y activar F3, 5 veces con un intervalo de 3 segundos y luego de terminar el proceso espera 28 segundos y empesarlo desde el principio como un ciclo. Resumido seria asi.
Me conecto, me acomo, consigo lo que ocupo etc. y activo el macro.
Pasan 3 seg. y empiesa F1 y pasan 3 seg. y otra vez F1 y y pasan 3 seg. y otra vez F1 y pasan 3 seg. y luego un intervalo de 28 segundos y se repite el proceso y ya que se repite el proceso otro intervalo de 28 segundos y asi durante 10 minutos. hazta aqui van los F1 trate de intentar modificar y reacomodar el Macro pero no logre mucho.
En cuanto a F3 seria algo asi despues de los 10 minutos de F1 hace un intervalo de 3 segundos y Activa F3 * 5 veces con un intervalo de 3 segundos(estre proceso lo lei en algun tema) y hace un intervalo de 28 segundos para volver al inicio que serian los F1 y asi hasta que pause o cancele el proceso. espero esto sirva para acomodarlo si supiera mas podria simplemente usar el F1 modificandolo yo solo pero como nose no pude hacer que simplemente el F1 continuara su curso durante 10 min y yo fuera a alimentar al PJ asi que nesesito su ayuda. Bueno Gracias por leer esto espero que no sea una molestia.
Gracias por la Bienvenida ms999
Re: Macro AutoHockey´s
Publicado: 21 Jun 2011, 11:01
por Ximorro
Ah, entonces lo quieres pasar a Autoit. Entonces estás en el foro correcto. ¡Bienvenido!
No es molestia, hombre, al contrario, así explicadito es más fácil de seguir.
Como puedes ver las claves están en usar
HotKeySet() para controlar los atajos de teclado,
Sleep() para pausar el script un tiempo, y
TimerInit-TimerDiff para saber cuándo ha pasado cierto tiempo, pero sin paralizar el script (por ejemplo como hace
ms999 para comprobar si la ventana sigue existiendo y que no salta a pausa, mientras espera los 3 segundos después de enviar F1).
Y luego claro, las estructuras de control y organización de código,
IF,
WHILE,
FUNC, etc...
Si nunca has visto antes AutoIt puedes empezar echando un vistazo a esta guía, que indica dónde está la información que habría que mirar para empezar y cómo sacar el máximo partido al foro:
http://www.emesn.com/autoitforum/viewto ... f=2&t=2593
Saludosss
Re: Macro AutoHockey´s
Publicado: 21 Jun 2011, 18:10
por ms999
igual te lo repito, esa es una tarea para AutoIt
.
Te diria que si queres aprender podes primero hacer una version mas simple, pero larga como la de autohockey para aprenderte la sintaxis y a medida que ves como se usa una de la funciones que te dijo Ximorro, vayas viendo como aplicarlas.. quiza cometi un error al tratar de hacerlo tan resumido y especifico el primer script, ya que si es mas simple es mas facil de ver donde se modifica.
Re: Macro AutoHockey´s
Publicado: 21 Jun 2011, 20:13
por Winer1
Encens ya tengo una idea hare un simple ciclo de F1 y cuando lo tenga te lo presneto aver quetal me quedo ok..
Re: Macro AutoHockey´s
Publicado: 21 Jun 2011, 21:28
por Winer1
Código: Seleccionar todo
HotKeySet("^a", "_start") ; Aca Configuras la HotKey para activar la
HotKeySet("^s", "_Pausa") ; Funcion _StartPause() con "Ctrl+S"
HotKeySet("^r", "_Reiniciar") ; HotKey para Funcion Reiniciar "Ctrl+r"
HotKeySet("{ESC}", "_Exit") ; HotKey para terminar "Escape"
Global $Pausado = False ; Esto lo usaremos para pausar la funcion
Global $Check = 0 ; Esto lo usaremos para controlar las tre primeras veces
; que tiene que mandas F1
_start()
Func _Start()
$Timer = TimerInit()
While Not $Pausado; And WinExists("Tibia") ; Esto esta comentado con ; porque yo no tengo el programa
;~ consolewrite(TimerDiff($Timer)&@CRLF)
Sleep(3000)
If TimerDiff($Timer) >= 3000 And $Check < 3 Then
Send("{F1}")
;~ consolewrite("A" &TimerDiff($Timer)&@CRLF) ; Esto esta comentado porque fue una prueba mia
$Timer = TimerInit()
$Check += 1
EndIf
If $Check = 3 Then ; si ya hizo los tres primeros F1
Sleep(26000) ; 26 segundos porque al reiniciar el ciclo toma 3 asi que le he reducido 2 porque solo sera F1
While
$check = 0 ExitLoop ; Resetea Check para que vuelva a hacer el primer ciclo
WEnd
Nose que es lo que tengo mal es todo lo que logre trate de varias formac hacer que el ciclo se repita sin embargo no pude decarge la ayuda pero no encontre una respuesta logica a porque no resetea el ciclo es pero me puedan decir que hehecho mal para aprender o que no he visto bueno gracias.