【发布时间】:2021-07-05 01:58:32
【问题描述】:
我有一个脚本,它执行左键单击,然后向右移动约 1 厘米,然后再次单击并返回到左侧。
我希望这个脚本不断重复,直到我按下一个按钮,它使用哪个按钮并不重要(MB 1、2 和 3 除外。
我已经尝试了一段时间,重复和循环,我唯一实现的是一个非常复杂的脚本,每次运行后都会使软件崩溃,这有点烦人。
我认为我不正确理解重复功能。 谁能告诉我如何让它工作?
问候
编辑:我已经将代码更新为现在的样子,原始代码在它下面。
local mb4_status, exit_flag
local function Move(dx, dy, time, is_interruptable)
local t0 = GetRunningTime()
local prev_dx, prev_dy = 0, 0
repeat
Sleep(15)
local part = math.min(time, GetRunningTime() - t0) / time
local current_dx = math.floor(part * dx)
local current_dy = math.floor(part * dy)
local x, y = current_dx - prev_dx, current_dy - prev_dy
if x ~= 0 or y ~= 0 then
MoveMouseRelative(x, y)
end
prev_dx, prev_dy = current_dx, current_dy
local prev_mb4_status = mb4_status
mb4_status = IsMouseButtonPressed(4)
exit_flag = exit_flag or mb4_status and not prev_mb4_status
until part == 1 or is_interruptable and exit_flag
end
function OnEvent(event, arg)
if event == "MOUSE_BUTTON_PRESSED" and arg == 4 then
if exit_flag then
exit_flag = false
else
mb4_status = true
local x = 44
repeat
PressMouseButton(1)
Move(0, 0, 200, false) -- equivalent to Sleep(200)
ReleaseMouseButton(1)
Move(x, 0, 1000, true) -- mixture of MoveMouseRelative(44,0) + Sleep(1000)
x = -x
until exit_flag
end
end
end
function OnEvent(event, arg)
if (event == "MOUSE_BUTTON_PRESSED" and arg == 8) then
for i = 1, 1 do
PressMouseButton(1)
Sleep(200)
ReleaseMouseButton(1)
end
Sleep(500)
for i = 5, 15 do
MoveMouseRelative(4,0)
Sleep(1)
end
Sleep(500)
for i = 1, 1 do
PressMouseButton(1)
Sleep(200)
ReleaseMouseButton(1)
end
Sleep(500)
for i = 5, 15 do
MoveMouseRelative(-4,0)
Sleep(1)
end
Sleep(500)
end
end
【问题讨论】:
-
所以,您需要以下内容:1)您按下 Btn#8,2)LGS 模拟鼠标点击并连续左右移动,3)您再次按下 Btn#8,4)LGS 停止模拟鼠标点击和移动。是你想要的吗?
-
是的!我已经尝试了这么多小时,“重复”直到没有,有一次我让它工作了,有点,但它不会再停止了。如果我添加了睡眠,它会在保存时崩溃。
标签: lua toggle repeat logitech logitech-gaming-software