如何在函数的每次迭代中填充 random.math int?

问题描述

我正在创建我的第一个编码项目,使用 Lua 为我的 Logitech 鼠标创建一个宏,我有一个重复功能自动点击),我想在点击之间生成随机延迟。

我希望它是:

  • 可通过“滚动锁定”进行切换
  • 动态可调延迟
  • 只需点击并按住左键即可使用

我的代码如下:

    --Button used to turn rapid fire on/off
rfLock="scrolllock"


--Rapid fire values used in randomization/realism,in ms (milleseconds).
rfLo=45
rfHi=75

EnablePrimaryMouseButtonEvents(true);

function RapidFire()
    if (rfLock==true) then
    if (IsMouseButtonpressed(1)==true)then
    repeat
    ReleaseMouseButton(1)
    sleep (math.random(rfLo,rfHi))
    PressMouseButton(1)
    until not IsMouseButtonpressed(1)

function OnEvent(event,arg)    

if IsKeyLockOn(rfLock)then
        rFire=true
    else
        rFire=false
    end
    
end

还有其他方法可以解决这个问题吗?它目前没有做任何事情。我显然仍在努力弄清楚,只是想我可以从你们这里获得知识。提前致谢。

解决方法

我假设您使用的是 GHUB(但在 LGS 中也可以这样做)。

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

您可能不想将鼠标按钮用于“备用 LMB”,因为所有鼠标按钮都用于重要的事情。
如果您有 Logitech 键盘,您可以将其 G 按钮之一用作“备用 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 中取消绑定“返回”(单击并从下拉菜单中选择“禁用”)。
禁用的 MB#4 看起来像一个白色的圆圈,里面是黑色的。


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


第 5 步。
转到 GHUB(鼠标设备,“作业”屏幕,系统选项卡)。
将“返回”绑定到您的物理 LMB。
您将看到有关潜在危险操作的警告。
允许此操作,因为您有“备用 LMB”。

--Button used to turn rapid fire on/off
local rfLock = "scrolllock"

--Rapid fire values used in randomization/realism,in ms (milleseconds).
local rfLo = 45
local rfHi = 75

function OnEvent(event,arg)
   if event == "PROFILE_ACTIVATED" then
      EnablePrimaryMouseButtonEvents(true)
   elseif event == "MOUSE_BUTTON_PRESSED" and arg == 1 then
      PressMouseButton(1)
      if IsKeyLockOn(rfLock) then
         repeat
            Sleep(math.random(rfLo,rfHi))
            if not IsMouseButtonPressed(4) then break end
            ReleaseMouseButton(1)
            Sleep(math.random(rfLo,rfHi))
            PressMouseButton(1)
         until not IsMouseButtonPressed(4)  -- 4 = "Back"
      end
   elseif event == "MOUSE_BUTTON_RELEASED" and arg == 1 then
      ReleaseMouseButton(1)
   end
end