Script que tenga el click izquierdo y tecla presionada Topic is solved

Esta sección es para preguntas sobre programación/scripting usando AutoHotkey.

Moderator: Flipeador

Eustaquio446
Posts: 3
Joined: 31 Aug 2022, 11:35

Script que tenga el click izquierdo y tecla presionada

31 Aug 2022, 11:57

Hola, soy nuevo en esto y es mi primera vez con AutoHotkey, he visto otros tickets de ayuda, pero no logro hacer lo que quiero. Lo que tengo echo de manera muy básica es esto:

Code: Select all

z::Send % "{Click " . ( GetKeyState("LButton") ? "Up}" : "Down}" ) ; click izquierdo presionado

c::
	Send {w Down}
	Sleep 9999999
	Send {w Up}
return ; tecla w presionada

F9:: Pause
[Mod edit: [code][/code] tags added. 3rd time already.]

Lo que quiero hacer es que tenga el click izquierdo presionado y a la misma vez la tecla w presionada, cosa de que avance continuamente y tenga el click izquierdo presionado (hablando de la ignorancia, creo que se podría hacer con un loop).
El programa me funciona, pero no como quiero, porque mi problema es con el "Sleep", porque si inicio primero la tecla "c" y luego la "z", no me responde la "z", y creo que es por el "Sleep", quisiera que al apretar una tecla me haga las dos cosas simultáneamente. Y con un botón poder poner pausa como tengo con el "F9", pero no funciona por el "Sleep" que mencioné.
Les agradezco todo tipo de ayuda, desde ya muchas gracias ♥
User avatar
ositoMalvado
Posts: 183
Joined: 24 Dec 2019, 12:02
Contact:

Re: Script que tenga el click izquierdo y tecla presionada

01 Sep 2022, 19:59

HOLA AMIGO VI TU CONSULTA Y QUISE SOLUCIONARLA, ESPERO QUE TE AYUDE MI CODIGO

Code: Select all

;OPTIMIZACION DE SCRIPT INICIA
#NoEnv
#MaxHotkeysPerInterval 99000000
#HotkeyInterval 99000000
#KeyHistory 0
#SingleInstance, Force
ListLines Off
Process, Priority, , A
SetBatchLines, -1
SetKeyDelay, -1, -1
SetMouseDelay, -1
SetDefaultMouseSpeed, 0
SetWinDelay, -1
SetControlDelay, -1
SendMode Input
;OPTIMIZACION DE SCRIPT TERMINA

class mantenerTecla{
    ;CREAMOS UN OBJETO PARA FACILITAR EL USO DEL SCRIPT
    encendido:=false ;ESTADO DEL SCRIPT
    tecla:="" ;TECLA A ENVIAR
    espera:=0 ;TIEMPO DE ESPERA

    repetir(){
        ;METODO repetir, MANTIENE PRESIONADA LA TECLA DEFINIDA CADA CIERTO TIEMPO
        this.encendido:=true ;SCRIPT ENCENDIDO
        while(this.encendido){
            ;MIENTRAS ESTÉ ENCENDIDO
            if !IsObject(this.tecla) ;SI NO ES UN ARRAY
                SendInput, % "{blind}{" this.tecla " DownR}" ;MANTENER Y ENVIAR TECLA 
            else ;SI ES UN ARRAY
                Loop, % this.tecla.MaxIndex(){ ;POR CADA INDICE
                    SendInput, % "{blind}{" this.tecla[A_Index] " DownR}" ;MANTENER Y ENVIAR TECLA 
                    sleep, % this.espera ;ESPERAR CIERTO TIEMPO
                } ;REPITE
            sleep, % this.espera ;ESPERAR CIERTO TIEMPO
        } ;REPITE
    }

    cancelar(){
        ;METODO cancelar, SOLO APAGA EL SCRIPT
        this.encendido:=false ;ESTADO DE SCRIPT APAGADO
        if !IsObject(this.tecla) ;SI NO ES ARRAY
            while GetKeyState(this.tecla[A_Index],"p") ;MIENTRAS ESTE PRESIONADA LA TECLA
                SendInput, % "{" this.tecla " up}" ;SOLTAR TECLA
        else ;SI ES UN ARRAY
            Loop, % this.tecla.MaxIndex(){ ;POR CADA TECLA
                while GetKeyState(this.tecla[A_Index],"p") ;MIENTRAS ESTE PRESIONADA
                    SendInput, % "{" this.tecla[A_Index] " up}" ;SOLTARLA 
            } ;REPETIR
    }

    __New(t,d:=1){
        ;AL CREAR EL OBJETO RECIBE TECLA "t" Y TIEMPO DE ESPERA "d"
        this.tecla:=t ;ASIGNAMOS LA ENTREADA DE TECLA
        this.espera:=d ;ASIGNAMOS LA ENTREADA DE ESPERA
    }
} ;TERMINA DEFINICIÓN DE OBJETO

clickIzq_w:=new mantenerTecla(["lbutton", "w"])
    ;CREAMOS "CLICK IZQUIERDO W"
hola_ejemplo:=new mantenerTecla(["h","o","l","a"], 220)
    ;CREAMOS "hola" COMO EJEMPLO
letraZsola:=new mantenerTecla("z", 11)
    ;CREAMOS LETRA Z COMO EJEMPLO

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;
;RECORDAR QUE LOS PARAMETROS SON UNA TECLA O UN ARRAY
;DE TECLAS Y EL TIEMPO SI ES QUE SE QUIERE MODIFICAR
;DEL PREDETERMINADO QUE ES "1"
;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

F1:: ;CON F1 REPETIREMOS CLICK IZQ Y W
    clickIzq_w.repetir()
Return
F2:: ;CON F2 SOLTAERMOS CLICK IZQ Y W
    clickIzq_w.cancelar()
Return

1:: ;CON 1 REPETIREMOS "hola"
    hola_ejemplo.repetir()
Return
2:: ;CON F2 SOLTAERMOS "hola"
    hola_ejemplo.cancelar()
Return
q:: ;CON q REPETIREMOS Z
    letraZsola.repetir()
Return
w:: ;CON w SOLTAERMOS Z
    letraZsola.cancelar()
Return

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;IMPORTANTE !!!! PARA LOS HOTKEYS NO USES MODIFICADORES
;, PARA EVITAR ERRORES, ES UNA SOLUCIÓN BÁSICA PERO
;FUNCIONAL QUE PUEDE AYUDARTE. NO CREES OBJETOS CON
;LAS MISMAS TECLAS QUE LAS ACTIVARAS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
My WEB some useful stuff
Eustaquio446
Posts: 3
Joined: 31 Aug 2022, 11:35

Re: Script que tenga el click izquierdo y tecla presionada

02 Sep 2022, 01:10

@ositoMalvado
Hola crack, entendí todo lo que me pusiste pero solo hay una cosa que intenté hacerlo yo para no molestarte, pero no lo logré... :'c
El juego es el "Minecraft" (capaz ayude a explicarme mejor lo que busco), la cosa es que al ejecutar el script, me mantiene el click presionado pero no a la velocidad que requiero (e.g: cosechar un cultivo, porque al hacerlo, rompe 1 por 1 en vez de toda una línea como si tuviéramos el click presionado manualmente) y al ejecutarlo, tampoco avanza "hacia delante" (w) y queda solo sostenido el click. ¿Cómo podría lograr esto que mencioné anteriormente?
User avatar
ositoMalvado
Posts: 183
Joined: 24 Dec 2019, 12:02
Contact:

Re: Script que tenga el click izquierdo y tecla presionada

02 Sep 2022, 11:41

Descargare minecraft e intentaré hacer lo que dices
My WEB some useful stuff
User avatar
ositoMalvado
Posts: 183
Joined: 24 Dec 2019, 12:02
Contact:

Re: Script que tenga el click izquierdo y tecla presionada  Topic is solved

02 Sep 2022, 12:14

Eustaquio446 wrote:
02 Sep 2022, 01:10
@ositoMalvado
Hola crack, entendí todo lo que me pusiste pero solo hay una cosa que intenté hacerlo yo para no molestarte, pero no lo logré... :'c
El juego es el "Minecraft" (capaz ayude a explicarme mejor lo que busco), la cosa es que al ejecutar el script, me mantiene el click presionado pero no a la velocidad que requiero (e.g: cosechar un cultivo, porque al hacerlo, rompe 1 por 1 en vez de toda una línea como si tuviéramos el click presionado manualmente) y al ejecutarlo, tampoco avanza "hacia delante" (w) y queda solo sostenido el click. ¿Cómo podría lograr esto que mencioné anteriormente?
TAL COMO DIJE ANTERIORMENTE DESCARGUE MINECRAFT DESDE TLAUNCHER, PROBADO CON OPTIFINE 1.19.2, FUNCIONA EL SIGUIENTE CÓDIGO

Code: Select all

c:: ;podras activar y desactviar con la C
    mantenerTelca("w") ;mantener W 
    mantenerTelca("lbutton") ;mantener LBUTTON
Return

mantenerTelca(tecla,encender:=true){
    ;FUNCION PARA MANTENER TECLA
    if !getkeystate(tecla)&&encender ;SI LA TECLA NO ESTÁ PRESIONADA Y SE QUIERE PRESIONAR
        send, {%tecla% downr} ;ENTONCES MANTIENE LA TECLA, SE USA "DOWNR"
    Else
        send, {%tecla% up} ;SINO, SE SUELTA LA TECLA
}
My WEB some useful stuff
Eustaquio446
Posts: 3
Joined: 31 Aug 2022, 11:35

Re: Script que tenga el click izquierdo y tecla presionada

02 Sep 2022, 12:42

@ositoMalvado
Probé este código "distinto" que pusiste y me funcionó perfectamente ahora!!
Te agradezco por tu tiempo y ayuda, saludos ♥

Return to “Pedir Ayuda”

Who is online

Users browsing this forum: No registered users and 13 guests