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

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/…

以上是关于在特定时间释放一个键会重置序列吗?的主要内容,如果未能解决你的问题,请参考以下文章

外键会自动创建索引吗?

外键会自动创建索引吗?

主键会导致mysql死锁吗?

不同步时如何重置postgres的主键序列?

不同步时如何重置postgres的主键序列?

向索引列添加外键会提高性能吗?