【问题标题】:Lua error in simple code for logitech mouse罗技鼠标简单代码中的 Lua 错误
【发布时间】:2019-08-30 15:09:13
【问题描述】:

我正在尝试为罗技鼠标制作一个脚本: 当我瞄准游戏鼠标 3 并按下火键时,鼠标会快速下降约 0.5 秒,其余时间直到我释放火键 1 时它才会慢下来。 代码:

第 8 行错误(sleep(1))

function OnEvent(event, arg)
    if IsMouseButtonPressed(3)then
        repeat  
            if IsMouseButtonPressed(1) then
                i=1
                repeat
                    i= i + 1 
                    MoveMouseRelative(0,1)
                    Sleep(1)
                until i=1000000000 or (not IsMouseButtonPressed(1))
                if IsMouseButtonPressed(3)then
                    repeat
                        MoveMouseRelative(0,1)
                        Sleep(33)
                    until not IsMouseButtonPressed(1)
                end
            end             
        until not IsMouseButtonPressed(3)
    end
end




这可行,但在开始时响应速度提高了 0.5 秒

function OnEvent(event, arg)

    if IsMouseButtonPressed(3)then
        repeat  
            if IsMouseButtonPressed(1) then
                repeat
                    MoveMouseRelative(0,1)
                    Sleep(33)
                until not IsMouseButtonPressed(1)
            end             
        until not IsMouseButtonPressed(3)
    end
end

【问题讨论】:

  • 好吧,这不是普通的 Lua。因此,您需要提供更多信息。而且还不清楚您到底想做什么以及遇到什么样的错误。
  • 熟悉一下while语句。
  • 只需一步一步地检查您的代码并检查发生了什么。我不知道罗技鼠标到底是如何工作的,但我怀疑它们是否可以延迟 1 纳秒,或者如果一个脚本已经处于活动状态,它们如何处理事件。据我所知,只要您按住 MB3,您的脚本就可以正常工作并慢慢向下移动鼠标。一旦你按下 MB1,它就会开始以 34 倍的速度移动它,似乎是 1 000 000 000(毫秒?~ 300 小时),或者直到它被释放。
  • @IcedLance 你在哪里看到纳秒延迟?
  • 我假设直到 i=1000000000 代表 0.5 秒延迟,这意味着 Sleep(1) 应该持续半纳秒。

标签: lua logitech-gaming-software


【解决方案1】:

第 8 行错误(sleep(1))

不,错误在第 9 行。 这是 LGS 中的一个错误:例如,第一行中的错误会显示为“line #0”等。

i=1000000000

这是您的实际错误。
将其替换为i==1000000000

在 Lua 中,单 = 用于赋值,双 == 用于相等测试。

【讨论】:

  • thx 新手错误,我正在学习如何编码,但有一个问题,它不会切换到较慢的设置,我坚持第一次重复。
  • ok 发现我应该少放 i ,因为 sleep() 使函数运行时间更长
  • @nektarios - 顺便说一句,Sleep(1) 在循环中使用时与Sleep(15) 相同。 Windows 时间片约为 15 毫秒。
【解决方案2】:

只是补充一些额外的信息:

代替

if IsMouseButtonPressed(1) then
  repeat
    MoveMouseRelative(0,1)
    Sleep(33)
  until not IsMouseButtonPressed(1)
end

你可以简单地写

while IsMouseButtonPressed(1) do
  MoveMouseRelative(0,1)
  Sleep(33)
end

【讨论】:

    猜你喜欢
    • 2020-03-10
    • 2020-05-02
    • 2021-08-14
    • 2021-12-04
    • 2020-08-31
    • 2021-05-15
    • 2021-03-29
    • 2020-09-17
    • 2018-04-19
    相关资源
    最近更新 更多