1

Тема: При зажатой кнопки "Е" отправлять нажатие "Е" каждые 300 миллисекунд.

Как сделать чтобы при зажатой кнопки "Е" игра получала нажатие на кнопку "Е" каждые 300 миллисекунд. А при зажатии комбинации shift+e игре отправлялось просто зажатие кнопки "Е".

Первую часть хотел реализовать с помощью вот такой конструкции


#UseHook On
e::
    while GetKeyState("e")
    {
        Send {e}
        Sleep, 300
    }
Return

Буду очень благодарен тому кто сможет помочь и объяснит что я делаю не так.

2

Re: При зажатой кнопки "Е" отправлять нажатие "Е" каждые 300 миллисекунд.

TrueLemmus пишет:

объяснит что я делаю не так.

  • e:: Клавиши правильней будет указывать через Скан-код этой клавиши.Будет выглядеть вот так: SC012::

  • GetKeyState("e") не указан доп. параметр который определяет состояние клавиши. GetKeyState("SC012","p")

Вот:

!SC012::send {SC012} 
SC012::
T:="" 
while GetKeyState("SC012","p")    
    if (A_TickCount > T) and (T := A_TickCount + 300)
        send {SC012}
return

На 5й строчке это аналог sleep, только в отличии от него при отжатии клавиши поток мгновенно прервется, то есть не будет ожидать заданное время и сразу остановится.

3

Re: При зажатой кнопки "Е" отправлять нажатие "Е" каждые 300 миллисекунд.

На 5й строчке это аналог sleep

Идея интересная, но посмотрите как грузит процессор.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

4 (изменено: yalanne, 2015-07-06 22:47:58)

Re: При зажатой кнопки "Е" отправлять нажатие "Е" каждые 300 миллисекунд.

Ого! Не замечал. но можно подставить в конец еще sleep 1, вроде как фиксит.
p.s идея кстати ваша а я просто сжал.

+SC012::send {SC012} 
SC012::
T:="" 
while GetKeyState("SC012","p")
{
    if (A_TickCount > T) and (T := A_TickCount + 300)
        send {SC012}
    sleep 1
}
return

5

Re: При зажатой кнопки "Е" отправлять нажатие "Е" каждые 300 миллисекунд.

TrueLemmus пишет:

при зажатии комбинации shift+e

Тогда нужно не

!SC012::send {SC012}

а

+SC012::send {SC012}
serzh82saratov пишет:

посмотрите как грузит процессор

Нужно добавить Sleep, 10 в цикл.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

6

Re: При зажатой кнопки "Е" отправлять нажатие "Е" каждые 300 миллисекунд.

Огромное спасибо за помощь. Не понял только одного где брать скан-коды кнопок в приведённой по ссылке таблице клавише "е" соответствует другой код или его ещё как то на до рассчитывать?

7

Re: При зажатой кнопки "Е" отправлять нажатие "Е" каждые 300 миллисекунд.

AHK: Определение виртуальных и скан-кодов клавиатуры

8 (изменено: serzh82saratov, 2015-07-07 21:03:10)

Re: При зажатой кнопки "Е" отправлять нажатие "Е" каждые 300 миллисекунд.

p.s идея кстати ваша  а я просто сжал.

Грузить процессор за секунду миллионом проверок состояния клавиши, не моя идея.
Ну а так, да, это лучше:

(A_TickCount > T) && (T := A_TickCount + 6000)

чем было:

(A_TickCount - T > 6000) && (T := A_TickCount)
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui