You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现鼠标光标连续移动?Logitech G系列Lua脚本问题求助

问题描述

1. 子弹发射逻辑提前终止

编写了30发子弹的执行逻辑,但实际仅能运行前两三发就停止。核心原因是在子弹发射流程未完成时就调用了ReleaseMouseButton(3),尝试通过Sleep(50)增加延迟的效果微弱,且不符合实际子弹发射的间隔需求。

2. 鼠标偏移操作互相干扰

连续调用MoveMouseRelative时,后续偏移会叠加干扰之前的操作,例如:

MoveMouseRelative(0, 0)
Sleep(10)
MoveMouseRelative(0, 15)
Sleep(10)
MoveMouseRelative(0, 5)

第三个调用会影响第二个的实际效果,第二个又干扰第一个,导致新增偏移时必须调整所有原有偏移,操作繁琐且不符合预期逻辑。


解决方案

针对问题1:修正鼠标按键释放时机

  • 移除代码中提前调用的ReleaseMouseButton(3),将终止逻辑的控制权交给repeat-until循环的条件(until not IsMouseButtonPressed(3)),确保只有用户主动松开鼠标按键3时才停止流程,而非代码强制中断。
  • 保留每一组子弹逻辑后的if not IsMouseButtonPressed(3) then break end,这样用户中途松开按键可立即终止,同时保证30发逻辑能完整执行。

针对问题2:优化鼠标偏移计算

  • 避免依赖连续MoveMouseRelative的叠加效果实现目标偏移,改为直接计算每一步的相对增量,单次调用函数到达目标位置;或者维护一个累计偏移变量,每次计算相对于初始位置的总偏移后再调用函数。
  • 示例优化:若要实现总偏移(0,20),无需分三次调用,直接使用MoveMouseRelative(0,20)即可;若需分步移动,确保每一步的偏移是相对于当前位置的正确增量。

修正后的完整代码

function OnEvent(event, arg)
    EnablePrimaryMouseButtonEvents(true)
    if IsMouseButtonPressed(3) then
        repeat
            -- 第1-5发逻辑
            MoveMouseRelative(0, 15)
            Sleep(50)
            MoveMouseRelative(0, 40)
            Sleep(50)
            MoveMouseRelative(0, 30)
            Sleep(90)
            Sleep(100)
            Sleep(10)
            
            if not IsMouseButtonPressed(3) then break end

            -- 第6-10发逻辑
            MoveMouseRelative(0, 6)
            Sleep(10)
            MoveMouseRelative(0, 6)
            Sleep(10)
            MoveMouseRelative(0, 6)
            Sleep(10)
            MoveMouseRelative(0, 6)
            Sleep(10)
            MoveMouseRelative(0, 6)
            Sleep(10)
            
            if not IsMouseButtonPressed(3) then break end

            -- 第11-15发逻辑
            MoveMouseRelative(0, 6)
            Sleep(10)
            MoveMouseRelative(0, 7)
            Sleep(10)
            MoveMouseRelative(0, 7)
            Sleep(15)
            MoveMouseRelative(0, 7)
            Sleep(15)
            MoveMouseRelative(0, 7)
            Sleep(15)
            
            if not IsMouseButtonPressed(3) then break end

            -- 第16-20发逻辑
            MoveMouseRelative(0, 7)
            Sleep(15)
            MoveMouseRelative(0, 7)
            Sleep(15)
            MoveMouseRelative(0, 7)
            Sleep(15)
            MoveMouseRelative(0, 7)
            Sleep(15)
            MoveMouseRelative(0, 7)
            Sleep(15)
            
            if not IsMouseButtonPressed(3) then break end

            -- 第21-25发逻辑
            MoveMouseRelative(0, 7)
            Sleep(15)
            MoveMouseRelative(0, 7)
            Sleep(15)
            MoveMouseRelative(0, 7)
            Sleep(15)
            MoveMouseRelative(0, 7)
            Sleep(15)
            MoveMouseRelative(0, 7)
            Sleep(15)
            
            if not IsMouseButtonPressed(3) then break end

            -- 第26-30发逻辑
            MoveMouseRelative(0, 7)
            Sleep(15)
            MoveMouseRelative(0, 7)
            Sleep(15)
            MoveMouseRelative(0, 7)
            Sleep(15)
            MoveMouseRelative(0, 7)
            Sleep(15)
            MoveMouseRelative(0, 7)
            Sleep(15)

        until not IsMouseButtonPressed(3)
    end
end

注:原代码中存在MoveMouseRelative(0.15)这类参数缺失的错误调用,已修正为符合Logitech Lua API要求的双参数格式。


内容的提问来源于stack exchange,提问作者John House

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 15:35:26