AutoHotkey, não obtém a solução

1

Eu realmente preciso da sua ajuda. Estou tentando programar um script AutoHotkey, mas não consigo obter uma solução de trabalho.

Meu script atual do AutoHotkey é:

#IfWinActive Guild Wars 2
shift & 1::
Send, 1
sleep 500
Send, y
return

Então, quando eu estiver em Guild Wars e segure Shift e pressione 1 , ele fará minha macro. Então eu posso spam 1 (enquanto segurando Shift ) e ele fará isso de novo e de novo. O problema é que eu sempre preciso segurar Shift . Meu desejo é, quando eu pressionar Shift uma vez, ele fará a macro sempre quando eu spam 1 . Mas ele deve fazer a macro somente até eu tocar outra tecla ( Ctrl , F1, , F2 ). Então, se eu tocar outra tecla, ela deve estar fazendo normalmente o 1 (então nenhuma macro).

  • Pressionando Shift uma vez e enviando spam 1 = minha macro
  • Depois de pressionar uma tecla como Ctrl , F1, , F2 deve fazer o normal 1 (não macro).
por Marco 25.08.2014 / 22:47

1 resposta

0

Isso fará o truque:

#ifWinActive Guild Wars 2

shift::  ; Shift to toggle auto-spammer
    hotkey, ifWinActive, Guild Wars 2
    hotkey, $1, shift_1, on
    loop {
        input, keystroke, l1 v, {LControl}{RControl}{LAlt}{RAlt}{LShift}{RShift}{LWin}{RWin}{AppsKey}{F1}{F2}{F3}{F4}{F5}{F6}{F7}{F8}{F9}{F10}{F11}{F12}{Left}{Right}{Up}{Down}{Home}{End}{PgUp}{PgDn}{Del}{Ins}{BS}{Capslock}{Numlock}{PrintScreen}{Pause}
        if keystroke not contains 1
            break
    }
    hotkey, $1, off
return

shift_1:
    send 1
    sleep 500
    send y
return

Alternativamente, se você quer que o comando Shift altere X teclas de atalho de 1 - 9 :

#ifWinActive Guild Wars 2

X = 9  ; Set this to the number of keys you want to be auto-spammable

loop %X% {  ; Create hotkeys 0-X
    hotkey, ifWinActive, Guild Wars 2
    hotkey, $%a_index%, autoSpammer
}

shift::  ; Shift to toggle auto-spammer
    autoSpam = on
    loop {
        input, keystroke, l1 v, {LControl}{RControl}{LAlt}{RAlt}{LShift}{RShift}{LWin}{RWin}{AppsKey}{F1}{F2}{F3}{F4}{F5}{F6}{F7}{F8}{F9}{F10}{F11}{F12}{Left}{Right}{Up}{Down}{Home}{End}{PgUp}{PgDn}{Del}{Ins}{BS}{Capslock}{Numlock}{PrintScreen}{Pause}
        if regExMatch(keystroke, "[^0-9]")
            break 
    }
    autoSpam = off
return

autoSpammer:
    thisHotkey := regExReplace(a_thisHotkey, "[^0-9]")
    if autoSpam = on
    {
        sendInput %thisHotkey%
        sleep 500
        sendInput y
    }
    else
        send %thisHotkey%
return
    
por 23.09.2014 / 18:07