Lua Logitech Как сделать так, чтобы скрипт НЕ повторялся при нажатии кнопки? - PullRequest
0 голосов
/ 04 марта 2020

Я пытаюсь, чтобы приведенный ниже код выполнял функцию MoveMouseRelative только один раз, когда кнопка мыши 1 нажата или удерживается. Я пытался удалить строку «повторить», но это нарушает код. В настоящее время при активации и удерживании мыши 1 курсор постоянно перемещается вниз.

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)  -- to prevent it from being stuck on
    end
    if (event == "MOUSE_BUTTON_PRESSED" and arg == 5) then
        recoilx2 = not recoilx2
        spot = not spot
    end
   if (event == "MOUSE_BUTTON_PRESSED" and arg == 1 and recoilx2) then
        if recoilx2 then
            repeat
                --Sleep(35)
                Sleep(5)
                MoveMouseRelative(0, 3)
            until not IsMouseButtonPressed(1)
        end
    end

1 Ответ

0 голосов
/ 04 марта 2020

Цель: Lua скрипт для мыши Logitech, выполняющий следующие задачи:
Когда кнопка мыши 5 была «активирована»:
- Левый щелчок один раз каждые 1000 миллисекунд (время между кадрами) ,
- и также нажимает кнопку мыши один раз каждые 1000 миллисекунд.
Поэтому, если я удерживаю левую кнопку мыши, она непрерывно стреляет, но нажимает только вниз, когда она действительно стреляет

Выберите кнопку клавиатуры Вы никогда не используете его в игре и устанавливаете его как единственный способ стрельбы из пистолета, этот ключ будет использоваться для стрельбы программным способом.
Я предполагаю, что ключ P , но вы можете выбрать любую другую кнопку : "f12", "backspace", "num9", ...
Игра не должна делать ничего при нажатии левой кнопки мыши.

local fire_button = "P"

function OnEvent(event, arg)
   OutputLogMessage("event = %s, arg = %d\n", event, arg)
   if event == "PROFILE_ACTIVATED" then
      EnablePrimaryMouseButtonEvents(true)
   elseif event == "PROFILE_DEACTIVATED" then
      -- to prevent mouse buttons from being stuck on
      for j = 1, 5 do ReleaseMouseButton(j) end
   end
   if event == "MOUSE_BUTTON_PRESSED" and arg == 5 then
      recoilx2 = not recoilx2
   end
   if event == "MOUSE_BUTTON_PRESSED" and arg == 1 then
      PressKey(fire_button)
      Sleep(50)
      ReleaseKey(fire_button)
      if recoilx2 then
         while IsMouseButtonPressed(1) do
            MoveMouseRelative(0, 25)
            local next_shot_time = GetRunningTime() + 1000
            local LMB
            repeat
               Sleep(50)
               LMB = IsMouseButtonPressed(1)
            until not LMB or GetRunningTime() >= next_shot_time
            if LMB then
               PressKey(fire_button)
               Sleep(50)
               ReleaseKey(fire_button)
            end
         end
      end
   end
end
...