sequence - 在特定时间释放一个键会重置序列吗?
问题描述
所以我得到了这段代码,它工作正常。它是一款剑斗游戏。
如果我按住鼠标左键(LMB),它将发送键 5(斜线攻击),如果我释放 LMB,它将发送键 7(假动作)。密钥 6(开销攻击)也是如此,如果我释放 LMB,它会发送密钥 7(假动作)。
所以这个序列就像这个 5,6,5,6 等等。就像一个魅力。
如果我不按 LMB 1.5 秒,序列会自行重置。所以它总是像 5,5,5,5 等。它的工作也很好。
这是此的工作代码:
*lbutton::
send % Seqkeys("5","6")
KeyWait, lbutton
Send, 7
return
Seqkeys(params*){
static s:=0, c:=0, t:=1500
max := params.MaxIndex()
(A_TickCount-s<=t && (c+=1)<=max) ? c : c:=1, s:=A_TickCount
return params[c]
}
现在我想要实现的是,如果我在 0.3 秒内释放 LMB,它应该始终重置序列并发送 5、5、5、5 等。如果释放时间超过 0.3 秒,则序列应该按默认 5,6 工作, 5,6 等
抱歉英语不好希望你能理解。谢谢 :)
解决方案
我想我有你需要的:
global s:=0, c:=0, t:=1500, t2:=1000/3
*lbutton::
send % Seqkeys("5","6")
KeyWait, lbutton
If (A_TickCount-s < t2)
c := 0
Send, 7
return
Seqkeys(params*) {
global s, c, t
max := params.MaxIndex()
(A_TickCount-s<=t && (c+=1)<=max) ? c : c:=1
s := A_TickCount
return params[c]
}
例子:
Button down: 5
Button up (down for 0.5s): 7
Button down: 6
Button up (down for 0.5s): 7
Button down: 5
Button up (down for 0.2s): 7
Button down: 5
Button up (down for 0.2s): 7
Button down: 5
Button up (down for 0.5s): 7
Button down: 6
Button up (down for 0.5s): 7
推荐阅读
- javascript - 我想在 MVC Core 控制器中使用 ajax 调用将字节的图像大小从 javascript 发送到 byte[] 中的控制器
- css - 如何在投影仪等低分辨率屏幕上强制使用桌面版本
- java - 如何检查数据是否已经存在以通过ID检查
- json - 从 AWS Lambda 函数解析 JSON 答案
- c++ - 如果 Y 值为 1,则 sf::Vector2i 作为 std::map 中的键显示为 (1, 1),即使 X 值为 0
- c - 尝试实现任务调度程序 COM 处理程序
- apache - 404 错误不适用于 /dir/file.php
- r - 以正确的顺序组合两个向量
- regex - 以@开头的正则表达式匹配字符串
- oracle - 我是否需要在运行 Oracle SQL Developer 的客户端上安装任何 Oracle 服务?