1

Мне действительно нужна твоя помощь. Я пытаюсь запрограммировать скрипт AutoHotkey, но у меня не получается получить рабочее решение.

Мой текущий скрипт AutoHotkey:

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

Поэтому, когда я нахожусь в Guild Wars и держу Shift и нажимаю 1, это сделает мой макрос. Так что я могу спамить 1 (удерживая Shift), и он будет делать это снова и снова. Проблема в том, что мне всегда нужно держать Shift. Мое желание, когда я нажимаю Shift ONE раз, он будет делать макрос всегда, когда я спам 1. Но он должен делать макрос только до тех пор, пока я не нажму другую клавишу (Ctrl, F1 ,, F2). Так что, если я играю другую клавишу, она должна делать обычно 1 (поэтому не макрос).

  • С нажатием Shift один раз и спамом 1 = мой макрос
  • После нажатия клавиши, такой как Ctrl, F1 ,, F2, она должна сделать нормальный 1 (без макроса).

1 ответ1

0

Это сделает свое дело:

#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

В качестве альтернативы, если вы хотите, чтобы переключатель Shift изменял сочетания клавиш X от 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .