1

Тема: AHK: Эмуляция нажатия кнопки ENTER

Доброго времени суток. Пишу скрипт для игры GTA. Необходимо сделать нажатие кнопки ENTER (для того что бы он сел в авто) и выполнить следующий код (с которым все отлично). Вот сам код


numpad1::
Send, {ENTER} ;не хочет работать, не садится в авто
Sleep 2000
Send, {down}{down}{down}{down}{down}{down}{enter} ;тут все работает, выпадает список, курсор опускается, выбирается нужная строка
Sleep, 700
Send, {f6}/выйти{enter} ;и тут все работает, пишется в чат /выйти

Если делаю так


numpad1::ENTER

numpad0::
Send, {down}{down}{down}{down}{down}{down}{enter}
Sleep, 700
Send, {f6}/выйти{enter}

То все отлично работает, он садиться в авто. Но проблема, не могу при таком варианте соединить код вместе. Помогите пожалуйста.

2

Re: AHK: Эмуляция нажатия кнопки ENTER

Почему строки автозамены, команды Send и MouseClick не работают в некоторых играх?

Некоторые игры используют в своей работе только механизм DirectInput. Как следствие, такое приложение может игнорировать все эмуляции нажатий клавиш и кнопок мыши. Несмотря на то, что серьёзной работы по этому вопросу ещё не проводилось, было обнаружено, что для большинства игр увеличение параметра SetKeyDelay явилось эффективным для включения в работу команды Send.

numpad1::
    SetKeyDelay,, 20
    Send, {ENTER} ; будет отправлено сообщение о нажатии клавиши, сделана пауза 20мс, отправлено сообщение об отпускании клавиши.
    Sleep 2000
    Send, {down}{down}{down}{down}{down}{down}{enter} ;тут все работает, выпадает список, курсор опускается, выбирается нужная строка
    Sleep, 700
    Send, {f6}/выйти{enter} ;и тут все работает, пишется в чат /выйти
    return

3

Re: AHK: Эмуляция нажатия кнопки ENTER

Спасибо. Проблема с входом в авто решилась, но теперь не работает вот этот код


Send, {down}{down}{down}{down}{down}{down}{enter}

4 (изменено: creature.ws, 2012-10-10 11:03:13)

Re: AHK: Эмуляция нажатия кнопки ENTER

Удивительно. Добавьте перед этой строкой SetKeyDelay,, 0

Шесть раз дублировать слово {down} нет необходимости, используйте {down 6}

5 (изменено: scAr3d, 2012-10-10 14:20:25)

Re: AHK: Эмуляция нажатия кнопки ENTER

Поставил перед строкой SetKeyDelay,, 100 Все заработало. Спасибо огромное за помощь. Можно закрывать тему.


UPD: А нет, опять проблема Не могу реализовать это все в лупе. Вот код, при нажатии на кнопку вообще ничего не происходит, без лупа - все окей.


numpad1::loop, 10
{
    SetKeyDelay,, 50
    Send, {ENTER} ; будет отправлено сообщение о нажатии клавиши, сделана пауза 20мс, отправлено сообщение об отпускании клавиши.
    Sleep 4000
    SetKeyDelay,, 100
    Send, {DOWN 6}{ENTER} ;тут все работает, выпадает список, курсор опускается, выбирается нужная строка
    Sleep, 300
    Send, {F6}/выйти{ENTER} ;и тут все работает, пишется в чат /выйти
    Sleep, 2000
    return
}

6

Re: AHK: Эмуляция нажатия кнопки ENTER

numpad1::
loop, 10

7

Re: AHK: Эмуляция нажатия кнопки ENTER

У языка программы autohotkey «очень гибкая концепция», со свежими непродуманными надстройками и со старыми непродуманными и неисправленными конструкциями. Потому, выход — запоминать исключения — в одну строку с меткой горячей клавиши может быть записана лишь однострочная команда*.
Loop подразумевает наличие однострочного (или большего объема) тела цикла, записываемого на второй строке.

При любом возникшем затруднении, правильнее всего — поискать решение в подходящих статьях справки. Возможно, в процессе поиска ответа удастся запомнить еще пару «особенностей».

*имеются исключения не относящиеся к теме.

8

Re: AHK: Эмуляция нажатия кнопки ENTER

Спасибо все работает. Теперь точно можно закрывать тему