Тема: Реализация отлова нажатия клавиши и вариативность последующих действий
Всех приветствую. Возникла надобность в скрипте, сначала опишу принцип в игре, чтобы было проще понимать, что хочу от скрипта.
Клавиша пробел - отвечает за вход в снайперский режим, а повторное ее нажатие за выход из него.
ЛКМ - выстрел.
Я пытаюсь сделать скрипт, чтобы после выстрела в снайперском режиме, осуществлялся выход из него. В чем вся сложность: если я вошел в снайперский режим, но не стал стрелять и нажал пробел снова, чтобы выйти из снайперского режима. После 2х дней мучений, я дошел до такой реализации (она выполняет поставленную задачу):
*~$Space::
++count
if count = 1
{
SetTimer, LBchek, 50
}
else if count = 2
{
Reload
}
return
LBchek:
GetKeyState, state, LButton
if state = D
Gosub, Res
return
Res:
SetTimer, LBchek, Off
Send {Space}
count := 0
return
Так в чем же мой вопрос: мне кажется, что я пошел идиотским путем и сделал быдло код из-за незнания языка. Предложите пожалуйста более грамотную реализацию. Мне таковой кажется что-то в духе:
*~$Space::
Loop {
GetKeyState, state, LButton
if state = D
break
Gosub, 1
else
GetKeyState, state, Space
if state = D
break
Gosub, 2
}
return
1:
Send {Space}
return
2:
reload
return
*~$Space::
Loop {
GetKeyState, state, LButton
if state = D
Send {Space}
else
GetKeyState, state, Space
if state = D
break
Reload
}
return
На самом деле я перевертел наверное сотню вариантов издевательств над теми примерами под спойлером, но ни один не оказался работоспособным.