【问题标题】:Timer for a delayed macro on a Logitech G110 keyboard with Lua带有 Lua 的 Logitech G110 键盘上延迟宏的计时器
【发布时间】:2013-01-01 12:49:50
【问题描述】:

所以我有了我的第一个支持宏的键盘 (Logitech G110),并希望将它用于我的游戏。然而,我的编程教育在 C 编程中途结束了。 我正在寻找一个非常简单的脚本的帮助,它为延迟的宏设置计时器,即我按下一个按钮,N 秒后它播放一个宏。这是我得到的:

function OnEvent(event, arg)

    if(event == "G_PRESSED" and arg == 6) then
        Sleep(360000);
        PlayMacro("Dragon");
    end

    if(event == "G_PRESSED" and arg == 5) then
       Sleep(300000);
       PlayMacro("Buff");
    end

    if(event == "G_PRESSED" and arg == 12) then
       Sleep(420000);
       PlayMacro(Nashor);
    end

    if(event == "G_PRESSED" and arg == 10) then
       Sleep(300000);
       PlayMacro(FlashHeal);
    end

    if(event == "G_PRESSED" and arg == 4) then
       Sleep(210000);
       PlayMacro(IgniteExhaust);
    end

end

问题在于它似乎没有在所需的时间内休眠,并且似乎在随机触发。如果我启动多个计时器,脚本会完全崩溃并随机触发,直到我重新启动计算机。

【问题讨论】:

  • 我想知道它是否可以支持多个计时器,或者设计用于如此大的延迟,文档是否提供了最大等待的详细信息? sleep 是键盘的自定义功能,而不是标准的 lua 功能,因此您可能还想在专家论坛上提问,因为那里有几个帖子表明 sleep 功能的准确性存在问题。
  • 不幸的是,Lalarm 一次只允许一个计时器,我需要能够有几个。我很遗憾无法理解其他人的指示,但我想我会尝试教育自己。很抱歉这次碰上。
  • 我可以建议研究有一个 C 应用程序来监视 G 键被按下,然后启动一个计时器功能。我唯一不确定的是他们提到“应用程序必须具有焦点才能使轮询工作”。这可能意味着如果您的单独应用程序在全屏游戏之外运行,则它不会运行。我还没有编写任何代码,但我稍后会使用 C# 进行研究。

标签: macros timer lua delay


【解决方案1】:

所以这根本行不通,因为 LUA 不能同时进行多个操作。它将逐行运行代码。如果按下按钮,脚本将等待 N 秒,然后运行宏。然而,在这 N 秒内,它对任何其他输入完全没有响应。如果您按下更多按钮,它们将只是一个接一个地排队。因此,如果您紧接着按下两个按钮,脚本将等待 N 秒,然后执行宏,然后等待 N 秒,然后执行宏。没有(简单的)方法可以在 LUA 本身中获得您想要的东西,但是由于您使用 Logitech 游戏软件(我想),您可能只想在 lua 之外的宏本身中添加暂停。这确实有效。

【讨论】:

    猜你喜欢
    • 2012-05-17
    • 2011-07-06
    • 2018-05-25
    • 2023-04-02
    • 1970-01-01
    • 2021-04-19
    • 2020-05-05
    • 1970-01-01
    • 2017-12-24
    相关资源
    最近更新 更多