【发布时间】:2023-01-05 20:41:20
【问题描述】:
所以我一直在努力让我在 LogitechGHUB 中的 Lua 脚本变得更好,这样它们就不会跳过几个镜头或突然停止工作几秒钟,最初我制作了这段代码但无论我做了什么仍然随机失败
EnablePrimaryMouseButtonEvents(true);
function OnEvent(event,arg)
if IsKeyLockOn(LockKey)then
if IsMouseButtonPressed(RC) then
repeat
if IsMouseButtonPressed(LC) then
repeat
MoveMouseRelative(0,11)
if (coun2<2 and IsMouseButtonPressed(LC))
then
MoveMouseRelative(3,13)
end
if (coun2>10 and coun2<25 and IsMouseButtonPressed(LC))
then
MoveMouseRelative(0,1)
end
if (coun2>35 and coun2<55 and IsMouseButtonPressed(LC))
then
MoveMouseRelative(1,0)
end
if (coun2>65 and coun2<75 and IsMouseButtonPressed(LC))
then
MoveMouseRelative(1,1)
end
if (coun2>85 and IsMouseButtonPressed(LC))
then
MoveMouseRelative(1,1)
end
Sleep(1)
coun2 = coun2+1
until not IsMouseButtonPressed(LC)
coun2=0
end
until not IsMouseButtonPressed(RC)
end
end
end
LockKey="numlock"
coun2 = 0
LC=1
RC=3
我改变了使用计数器的想法,使其更可定制,对于这样的循环
EnablePrimaryMouseButtonEvents(true)
function OnEvent(event, arg)
if event == "MOUSE_BUTTON_PRESSED" and arg == 1 and IsMouseButtonPressed(3) and IsKeyLockOn("numlock") then
for i = 1, 2 do
MoveMouseRelative(3,20)
Sleep(1)
if not IsMouseButtonPressed(1) then return end
end
for i = 1, 135 do
MoveMouseRelative(1,12)
Sleep(1)
if not IsMouseButtonPressed(1) then return end
end
end
end
只要我没有使用太多 for 循环,这实际上确实使它更加一致,但它仍然偶尔会在随机时间段内停止移动鼠标。我尝试更改我看到另一个用户推荐的 FastSleep() 的 Sleep() 函数,但它保持不变只是更快。有没有一种方法可以使脚本更少地失败或像我不理解的东西那样弄乱代码?或者我应该简单地尝试一种不同的编码语言?
【问题讨论】:
-
您可能希望将睡眠时间增加到一个合理的值。 1ms 是废话。您的鼠标按钮应该如何在一毫秒内切换状态?想一想 1/1000 秒对于人类运动意味着什么。特别是在非实时环境中。您还应该解释您的脚本应该做什么以及究竟是什么让您认为它失败了。我的意思是我们在这里谈论几毫秒内发生的事情。
-
我会尝试改变它,最初我使用了更长的睡眠时间,但我认为这是它失败的原因。在这里失败我指的是在按下左键单击时没有拉下鼠标,就像有时它没有达到预期目的一样。