Как остановить функцию при одиночном снимке, но включить при аэрозольной / автоматической съемке
Я сделал небольшой сценарий против отдачи для игровой мыши LUA logitech, и кажется, что он выполняет функцию, но когда я делаю одиночный выстрел, он делает все это и не останавливается, когда кнопка мыши не нажата:
function OnEvent(event, arg)
OutputLogMessage("event = %s, arg = %d\n", event, arg)
if (event == "PROFILE_ACTIVATED") then
EnablePrimaryMouseButtonEvents(true)
elseif event == "PROFILE_DEACTIVATED" then
ReleaseMouseButton(2)
end
if (event == "MOUSE_BUTTON_PRESSED" and arg == 5) then
kaki = not kaki
kus = not kus
end
if (event == "MOUSE_BUTTON_PRESSED" and arg == 1 and kaki) then
if kaki then
repeat
Sleep(50)
MoveMouseRelative(0, 1)
Sleep(100)
MoveMouseRelative(0, 16)
Sleep(100)
MoveMouseRelative(0, 26)
Sleep(100)
MoveMouseRelative(-2, 25)
Sleep(100)
MoveMouseRelative(10, 28)
Sleep(100)
MoveMouseRelative(8, 25)
Sleep(100)
MoveMouseRelative(10, 15)
Sleep(100)
MoveMouseRelative(-14, 15)
Sleep(100)
MoveMouseRelative(-34, -1)
Sleep(100)
MoveMouseRelative(-18, 0)
Sleep(100)
MoveMouseRelative(10, 10)
Sleep(100)
MoveMouseRelative(-13, 5)
Sleep(100)
MoveMouseRelative(-20, -5)
Sleep(100)
MoveMouseRelative(-5, 0)
Sleep(100)
MoveMouseRelative(33, 3)
Sleep(100)
MoveMouseRelative(15, 6)
Sleep(100)
MoveMouseRelative(15, 5)
Sleep(100)
MoveMouseRelative(20, 0)
Sleep(100)
MoveMouseRelative(28, -10)
Sleep(100)
MoveMouseRelative(-15, 4)
Sleep(100)
MoveMouseRelative(5, 0)
Sleep(100)
MoveMouseRelative(-8, 8)
Sleep(100)
MoveMouseRelative(-6, 4)
Sleep(100)
MoveMouseRelative(3, -2)
MoveMouseRelative(13, 0)
Sleep(100)
MoveMouseRelative(5, 0)
Sleep(100)
MoveMouseRelative(-15, 0)
Sleep(100)
MoveMouseRelative(-30, 0)
Sleep(100)
MoveMouseRelative(-35, -13)
Sleep(100)
MoveMouseRelative(-13, -4)
Sleep(100)
until not IsMouseButtonPressed(1)
end
end
end
Любые предложения о том, как отменить функцию на полпути или когда кнопка мыши не нажата, и цикл не завершится и не закончится там, где был сделан последний выстрел.
(В игре, когда я стреляю одиночным выстрелом - мышка перемещает всю процедуру отдачи)
1 ответ
Попробуйте использовать сопрограмму.
if kaki then
local cor = coroutine.create(function()
MoveMouseRelative(0, 1)
coroutine.yield()
MoveMouseRelative(0, 16)
coroutine.yield()
MoveMouseRelative(0, 26)
coroutine.yield()
MoveMouseRelative(-2, 25)
coroutine.yield()
MoveMouseRelative(10, 28)
coroutine.yield()
MoveMouseRelative(8, 25)
coroutine.yield()
MoveMouseRelative(10, 15)
coroutine.yield()
MoveMouseRelative(-14, 15)
coroutine.yield()
MoveMouseRelative(-34, -1)
coroutine.yield()
MoveMouseRelative(-18, 0)
coroutine.yield()
MoveMouseRelative(10, 10)
coroutine.yield()
MoveMouseRelative(-13, 5)
coroutine.yield()
MoveMouseRelative(-20, -5)
coroutine.yield()
MoveMouseRelative(-5, 0)
coroutine.yield()
MoveMouseRelative(33, 3)
coroutine.yield()
MoveMouseRelative(15, 6)
coroutine.yield()
MoveMouseRelative(15, 5)
coroutine.yield()
MoveMouseRelative(20, 0)
coroutine.yield()
MoveMouseRelative(28, -10)
coroutine.yield()
MoveMouseRelative(-15, 4)
coroutine.yield()
MoveMouseRelative(5, 0)
coroutine.yield()
MoveMouseRelative(-8, 8)
coroutine.yield()
MoveMouseRelative(-6, 4)
coroutine.yield()
MoveMouseRelative(3, -2)
MoveMouseRelative(13, 0)
coroutine.yield()
MoveMouseRelative(5, 0)
coroutine.yield()
MoveMouseRelative(-15, 0)
coroutine.yield()
MoveMouseRelative(-30, 0)
coroutine.yield()
MoveMouseRelative(-35, -13)
coroutine.yield()
MoveMouseRelative(-13, -4)
end)
coroutine.resume(cor)
repeat
Sleep(100)
coroutine.resume(cor)
until not IsMouseButtonPressed(1)
end