【问题标题】:Ghub Script: Drag mouse down and autocliking by pressing left mouse button (LUA)Ghub 脚本:通过按下鼠标左键 (LUA) 向下拖动鼠标并自动单击
【发布时间】:2021-10-12 16:13:05
【问题描述】:

所以基本上我是在尝试使用 Ghub Lua 脚本机制来制作标题中解释的内容,并在下面发布我所拥有的代码:

EnablePrimaryMouseButtonEvents(true);
function OnEvent(event, arg)
if IsKeyLockOn("capslock")then
if  IsMouseButtonPressed(1)then
   repeat
   MoveMouseRelative(0,4)
   PressMouseButton(1)
   Sleep(1,2)
   ReleaseMouseButton(1)
   until not IsMouseButtonPressed(1)
end
end
end

问题是,有时它只是中途停止下降,有时它根本不点击。尝试了多种解决方法,包括更改鼠标上按下的按钮,现在它是 IsMouseButtonPressed(5),它工作正常,但我的目标是在按下 MouseButton(1) 时让它工作。如果可能的话,我会向你们提供任何帮助,在此先感谢,希望我给了你所有必要的信息。

【问题讨论】:

    标签: lua logitech logitech-gaming-software


    【解决方案1】:

    问题是因为不可能同时模拟 LMB 按下/释放并监控其状态。
    解决方法如下:

    第 0 步。
    您即将修改鼠标左键的行为。
    这是一个潜在的危险操作:如果没有 LMB,您几乎无法在计算机上执行任何操作。
    所以你必须创建一个“备用 LMB”。
    例如,如果您不使用 Mouse Button 8,您可以让它在 LMB 上像克隆一样。
    转到 GHUB(鼠标设备、“分配”屏幕、系统选项卡)。
    将“主要点击”分配给您的物理 MB#8。
    现在,如果出现问题并且您的 LMB 停止工作,您可以按 MB#8 而不是 LMB。


    第 1 步。
    你在游戏中使用鼠标键 4(“返回”)吗?

    • 如果是(游戏中某些动作设置为 MB#4),请继续执行“步骤 2”。
    • 如果否(游戏忽略 MB#4 按下),请跳过“步骤 2”并继续执行“步骤 3”。

    第 2 步。
    您必须将游戏动作从 MB#4 重新映射到其他键。
    执行以下操作:

    • 选择您当前未在游戏中使用的键盘键
      (假设当前未使用 F12 键)
    • 转到 GHUB(鼠标设备、“作业”屏幕、KEYS 选项卡);
      F12 分配给您的物理 MB#4
    • 进入游戏设置;
      将游戏动作设置为 F12 而不是 MB#4

    现在,当您按下物理 MB#4 时,游戏会收到 F12 并激活游戏动作。
    跳过“第 3 步”并继续“第 4 步”。


    第 3 步。
    转到 GHUB(鼠标设备,“作业”屏幕)。
    从物理 MB#4 取消分配标准命令“Back”(单击并从下拉菜单中选择 DISABLE)。
    禁用的 MB#4 看起来像一个里面有黑色的白色圆圈。


    第 4 步。
    设置脚本(见下文)。


    第 5 步。
    转到 GHUB(鼠标设备、“分配”屏幕、系统选项卡)。
    将“返回”分配给您的物理 LMB。
    您将看到有关潜在危险操作的警告。
    允许此操作,因为如果出现问题,您有“备用 LMB”。

    function OnEvent(event, arg)
       if event == "PROFILE_ACTIVATED" then
          EnablePrimaryMouseButtonEvents(true)
       elseif event == "MOUSE_BUTTON_PRESSED" and arg == 1 then
          PressMouseButton(1)
          if IsKeyLockOn("capslock") then
             repeat
                MoveMouseRelative(0,4)
                Sleep(10)
                if not IsMouseButtonPressed(4) then break end
                ReleaseMouseButton(1)
                MoveMouseRelative(0,4)
                Sleep(10)
                PressMouseButton(1)
             until not IsMouseButtonPressed(4)  -- 4 = "Back"
          end
       elseif event == "MOUSE_BUTTON_RELEASED" and arg == 1 then
          ReleaseMouseButton(1)
       elseif event == "PROFILE_DEACTIVATED" then
          ReleaseMouseButton(1)
       end
    end
    

    【讨论】:

    • 好主意,但是如果我尝试模拟按键然后将游戏中的开火按钮重新映射到按键并且它可以工作,但在大多数情况下切换武器非常不方便。或者,我可以创建第二个配置文件,它模拟一个键的按下,只需按下鼠标 1 按钮按下一个键,但这将是相当多的配置文件必须说 ))
    • 游戏中重新映射开火按钮的方法通常不起作用:如果你为开火分配了两个不同的按钮,这两个按钮不能独立工作(游戏不允许你按第二个开火按钮按下第一个火时)。
    • 我认为你的解决方案是我能得到的最好的,真的,但我设法只为游戏制作了两个单独的配置文件,一个是自动点击和拉下鼠标,另一个只是模拟按下灭火器并向下拉鼠标,只需使用 DPI 按钮循环浏览它们即可。我认为您的解决方案有点太复杂了,但是如果我的“装备”遇到任何问题,我将简单地使用您的解决方案。非常感谢,我很高兴有人在 3 年左右的时间里对这样一个具体问题做出了切实可行的解决方案,再次感谢你,伙计)
    • @Dainzh - one being autoclicking - 很有趣。您的个人资料如何运作?游戏中的开火按钮是如何映射的?你传递给 PressMouseButton 和 IsMouseButtonPressed 的参数是什么?
    • 这是一个自动点击并向下拖动:EnablePrimaryMouseButtonEvents(true); function OnEvent(event, arg) if IsKeyLockOn("capslock")then if IsMouseButtonPressed(1)then repeat Sleep(1,2) PressKey("v") MoveMouseRelative(0,3) Sleep(1,2) ReleaseKey("v") until not IsMouseButtonPressed(1) end end end
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-10
    • 1970-01-01
    • 2022-10-20
    • 1970-01-01
    • 2011-02-28
    相关资源
    最近更新 更多