首页 > 解决方案 > 在特定时间释放一个键会重置序列吗?

问题描述

所以我得到了这段代码,它工作正常。它是一款剑斗游戏。

如果我按住鼠标左键(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 等

抱歉英语不好希望你能理解。谢谢 :)

标签: sequenceautohotkeyrelease

解决方案


我想我有你需要的:

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

推荐阅读