我正在尝试为游戏制作一个Keybind。基本上它所做的就是将1和2保持1000ms,然后停止1200ms,然后重复。 Numpad0切换它。
但是,我希望它是异步的。所以我尝试在计时器之间添加一个睡眠。但它只能工作一次,然后开始同时执行两个循环。
我希望有人可以提供帮助! :)
Numpad0::
autofire := !autofire
if autofire
{
SetTimer, gun1, 1200
sleep 600
SetTimer, gun2, 1200
}
else
{
settimer, gun1, off
settimer, gun2, off
}
Return
gun1:
sendinput {1 down}
sleep 1000
sendinput {1 up}
return
gun2:
sendinput {2 down}
sleep 1000
sendinput {2 up}
return
答案 0 :(得分:0)
每个计时器中的睡眠语句阻止另一个计时器按计划启动。
Autohotkey Threads的文档:
虽然AutoHotkey实际上并不使用多个线程,但它 模拟一些行为:如果第二个线程启动 - 这样 通过在前一个仍在运行时按另一个热键 - 当前线程将被中断(暂时停止)以允许 新线程成为当前的。如果第三个线程启动的话 第二个仍在运行,第二个和第一个将在一个 休眠状态,等等。
这是您的代码,其他计时器取代了睡眠:
Numpad0::
autofire := !autofire
if (autofire)
SetTimer gun1down, -1200
else
{
SetTimer gun1down, off
SetTimer gun1up, off
SetTimer gun2down, off
SetTimer gun2up, off
}
return
gun1down:
sendinput {1 down}
SetTimer gun2up, -400
return
gun1up:
sendinput {1 up}
SetTimer gun1down, -200
return
gun2down:
sendinput {2 down}
SetTimer gun1up, -400
return
gun2up:
sendinput {2 up}
SetTimer gun2down, -200
return