1 (изменено: hohmuch, 2011-09-07 00:16:22)

Тема: AHK: Проблема засыла клавиши в игре

Скрипт должен посылать Space, пока Space нажат

$space::
while GetKeyState("Space","P")
{
SendPlay {Space}
   sleep 250
}

SendPlay не помог. Не понимаю, как изменить код с помощью метода 2 из хелпа SendMode Play. Помогите плиз.

2 (изменено: YMP, 2011-09-07 17:52:11)

Re: AHK: Проблема засыла клавиши в игре

Что за метод 2? По ссылке не нашёл его. В играх иногда помогает вставка паузы между нажатием и отпусканием.

$space::
while GetKeyState("Space","P")
{
Send, {Space Down}
Sleep, 50
Send, {Space Up}
Sleep 250
}
Return

Но первым делом всегда нужно проверять, видит ли вообще скрипт Ваше нажатие. К примеру, звуковым сигналом.

$space::
    SoundBeep, 800, 500
Return

3 (изменено: alexii, 2011-09-08 12:59:23)

Re: AHK: Проблема засыла клавиши в игре

Да, гениально, спасибо большое. Метод 2 из этой ссылки: Why don't Hotstrings, Send, and MouseClick work in certain games?.

4

Re: AHK: Проблема засыла клавиши в игре

Да, можно и через SetKeyDelay — поставить его в начало скрипта.
Я, кстати, в своём примере Return по рассеянности в цикл всунул. Сейчас поправил код.

5

Re: AHK: Проблема засыла клавиши в игре

А почему оно работало и с Return внутри цикла?

6

Re: AHK: Проблема засыла клавиши в игре

Потому что при удерживании пробела, клавиатура его повторяет. При каждом таком повторе срабатывает Ваша горячая клавиша. Так что в итоге, хотя цикл (из-за Return внутри) выполнялся только один раз, всё равно имеем повтор его кода до тех пор, пока удерживается пробел.