问题描述
我正在创建我的第一个编码项目,使用 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