在特定时间释放一个键会重置序列吗?
Posted
技术标签:
【中文标题】在特定时间释放一个键会重置序列吗?【英文标题】:Releasing a key under a specific time reset the sequence? 【发布时间】:2020-04-05 16:34:31 【问题描述】:所以我得到了这段代码,它工作正常。这是一款剑斗游戏。
如果我按住鼠标左键 (LMB),它将发送键 5(斜线攻击),如果我释放 LMB,它将发送键 7(假动作)。密钥 6(开销攻击)也是如此,如果我释放 LMB,它会发送密钥 7(假动作)。
所以这个序列就像 5,6,5,6 等等。就像一个魅力。
如果我在 1.5 秒内不按 LMB,则序列会自行重置。所以它总是像 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 等工作。
抱歉英语不好希望你能理解。谢谢 :)
【问题讨论】:
如果我理解正确,请尝试将 t:=1500 替换为 t:=300。 嘿!在游戏中,挥剑的释放时间是 1.2 秒,所以我将其设置为 1.5 秒,因为如果我想使用连击攻击,它总是会是 5、6、5、6 等。如果我将其设置为 300,比我的组合总是重置为 5,5,5,5 等,它不好。如果我在 0,3 秒内释放 lmb,我只想要 5,5,5,5。 因为当我按住 lmb 时角色会挥剑,如果我松开 lmb 角色会停止摆动。天哪,我总有一天要学英语:D 【参考方案1】:我想我有你需要的东西:
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
【讨论】:
嘿 D. Pardal!我试图寻求帮助以进一步调整此代码你能再帮我一次吗?这是问题的链接-> ***.com/questions/64796721/…以上是关于在特定时间释放一个键会重置序列吗?的主要内容,如果未能解决你的问题,请参考以下文章