在特定时间释放一个键会重置序列?

Releasing a key under a specific time reset the sequence?

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

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

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

我想我有你需要的东西:

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