Logitech Lua объединяет Rapid Fire со спреем

В общем, вот как выглядит мой сценарий на данный момент: это макрос быстрого огня и уменьшает отдачу оружия, однако я никогда не могу распылять с помощью этого сценария по какой-то причине, так как он очень медленный, потому что я предполагаю, что он уменьшает отдачу. Мне было интересно, могу ли я стрелять как 4, 5 пули без какой-либо отдачи (только автоматическая стрельба, удерживая мышь 3, а не при нажатии.) И продолжать распылять, как обычный спрей, без каких-либо задержек, уже удерживая mouse3. Таким образом, 4 пули не имеют отдачи и используют обычный распылитель в одном цикле. Если в этом есть смысл. Любая помощь будет принята с благодарностью.

EnablePrimaryMouseButtonEvents(true);

function OnEvent(event, arg) 
    if IsKeyLockOn("scrolllock")then
        if IsMouseButtonPressed(3) then
            repeat  
                if IsMouseButtonPressed(3) then
                    repeat
                        PressMouseButton(1)
                        Sleep(15)
                        ReleaseMouseButton(1)
                    until not IsMouseButtonPressed(3)
                end             
            until not IsMouseButtonPressed(3)
        end   
    end
end


person Vatzepack    schedule 23.06.2020    source источник
comment
код из этого вопроса кажется очень похожим, помогает ли вам ответ? stackoverflow.com/questions/58121181/   -  person Nifim    schedule 23.06.2020
comment
Нет, сэр, я думаю, что делает другой скрипт. Быстрый огонь активируется только при нажатии клавиши ctrl. То, что я пытаюсь сделать, это когда я держу mouse2, она автоматически стреляет 4,5 пулями, только когда УДЕРЖИВАюсь, а не при нажатии, а затем обычное распыление после быстрого огня.   -  person Vatzepack    schedule 23.06.2020
comment
it’s a rapid fire macro and reduces the recoil of the guns - Нет. Ваш сценарий - это чистая скорострельная стрельба. Не снижает отдачу. Вы говорите о каком-то другом сценарии, а не о том, который вы разместили?   -  person Egor Skriptunoff    schedule 30.06.2020
comment
Да, это сценарий быстрой стрельбы, но когда вы стреляете по сценарию быстрой стрельбы, очереди получаются чертовски точными, при этом пули 3,4 летят прямо, в зависимости от того, какое оружие вы используете, поэтому я называю это сценарием без отдачи, даже если это сценарий быстрого огня. В чем мне нужна помощь, так это заставить скрипт быстро стрелять 4 пулями, а затем регулярно распылять после того, как сценарий готов, стреляя четырьмя пулями, в основном этот скрипт только с 4 пулями, а затем обычным спреем .... (Думаю, это невозможно с lua, но каким-то образом мне удается заставить его работать для макроса Оскара, чертова мышь.)   -  person Vatzepack    schedule 03.07.2020
comment
Итак, вы нажимаете правую кнопку мыши, чтобы включить быстрый огонь. И все, что вам нужно сейчас, это просто отпустить ПКМ после 4 выстрелов, несмотря на то, что вы все еще удерживаете ПКМ в нажатом состоянии?   -  person Egor Skriptunoff    schedule 04.07.2020
comment
Это верно, сэр, однако после того, как 4 щелчка выполнены, rmb должна работать как обычный щелчок левой кнопкой мыши в том же цикле. Буквально обычный спрей сразу после того, как сделаны 4 щелчка ... без каких-либо задержек между макросом и обычным спреем левой кнопкой (поэтому я называю это объединением 4 импульсов и обычным спреем, если это возможно). Только быстрый огонь, удерживая RMB, подумал, что я смогу тапнуть, а не просто спамить 4 пули одновременно.   -  person Vatzepack    schedule 04.07.2020
comment
Literally a regular spray right after the 4 clicks are done - Как именно скрипт должен имитировать обычный спрей? Означает ли это: длинное нажатие ПКМ = 4 очереди, короткое нажатие ПКМ = одиночная пуля? rmb should just function as a normal left click on the same cycle - что значит на том же цикле?   -  person Egor Skriptunoff    schedule 05.07.2020
comment
скрипт останавливается сразу после выстрела 4 пуль, как показано в этом видео streamable.com/wiy876, он должен просто работать как обычный щелчок левой кнопкой мыши после этого, например, streamable.com/lqgyn3. Я могу это сделать, потому что нажимаю левую кнопку мыши сразу после того, как скрипт спамит 4 маркера. в том же цикле я имел в виду, скажем, для этого скрипта есть 20 пуль, только 4 пули стреляют, тогда он прекращает стрельбу, если вы снова не нажмете левую клавишу, скрипт останавливается сразу после того, как выстрелят 4 правые пули, он должен просто функционировать как обычный левый нажмите после этого.   -  person Vatzepack    schedule 05.07.2020
comment
Мне было интересно, можно ли объединить 4 пули, быстрые стрельбы, объединенные с помощью щелчка левой кнопкой мыши сразу после того, как 4 пули выпущены, как это в потоковом режиме. com / vhk6v8, но БЕЗ каких-либо задержек, как показано в этом видео, при удерживании только правой кнопки мыши, я смог это сделать, потому что я нажал левую кнопку мыши сразу после того, как скрипт спамил свои 4 маркера.   -  person Vatzepack    schedule 05.07.2020
comment
Итак, regular spray означает нажатие и удерживание ЛКМ. Ответ обновлен.   -  person Egor Skriptunoff    schedule 05.07.2020
comment
Да, сэр, можно ли также удалить паузы между спамом из 4 пунктов. Вы стреляете первой пулей, и после того, как вторая пуля стреляет, остается пауза в полсекунды или миллисекунды. streamable.com/wiy876 может быть всего 4 маркера без пауз между ними. Еще раз спасибо за то, что уделили время, чтобы разобраться в этом ...   -  person Vatzepack    schedule 05.07.2020
comment
Убедитесь, что вы запускаете именно мой сценарий. Просто сотри свой старый сценарий и скопируй мой как есть.   -  person Egor Skriptunoff    schedule 05.07.2020
comment
Большое спасибо, что вы легенда, это то, что я хотел, и как бы я мог объединить этот сценарий кролика со сценарием, который вы сделали, чтобы оба работали одновременно '' function OnEvent (event, arg) if event == MOUSE_BUTTON_PRESSED и arg == 5 затем повторите Sleep (15) PressKey (SPACEBAR) Sleep (15) ReleaseKey (SPACEBAR), пока не будет IsMouseButtonPressed (5) end end, скрипт стреляет 3 пулями, удерживая правую кнопку, поэтому, чтобы изменить его на 4 пули, мне просто нужно изменить задержку огня 2 * на 4? я предполагаю, потому что это сработало. –Не понимаю эти числа: P еще раз большое спасибо   -  person Vatzepack    schedule 05.07.2020
comment
Ответ обновлен.   -  person Egor Skriptunoff    schedule 06.07.2020
comment
эй, если бы я использовал мышь 1, как при щелчке левой кнопкой мыши для этого скрипта вместо щелчка правой кнопкой, как бы я это сделал, я попытался изменить его на 1, он стреляет только 1 пулей   -  person Vatzepack    schedule 10.07.2020
comment
Вы должны использовать @e в своем комментарии, чтобы позвонить мне (я получу уведомление).   -  person Egor Skriptunoff    schedule 15.07.2020
comment
Можно вести быстрый огонь с помощью ЛКМ, но вы должны назначить другую кнопку для стрельбы в игре. Можете ли вы назначить, например, клавишу P на клавиатуре как единственный способ стрелять? ЛКМ нельзя рассматривать как огонь.   -  person Egor Skriptunoff    schedule 15.07.2020
comment
@EgorSkriptunoff, не могли бы вы показать мне, какие кнопки мыши мне нужно изменить в скрипте, это не работает для меня, когда я меняю все в скрипте на mouse1, lmb перестает работать. и возможно ли добавить этот сценарий после щелчка мыши по умолчанию без каких-либо задержек, например, обычного щелчка мыши 2 без каких-либо задержек или сценария после этого автоматически выполнить этот сценарий после 2 обычных щелчков мыши.   -  person Vatzepack    schedule 07.09.2020
comment
Невозможно одновременно имитировать нажатие / отпускание кнопки мыши №1 (для быстрого огня) и контролировать состояние (нажатие / верхнее) физической кнопки мыши №1. Обходной путь состоит в том, чтобы ввести в игру еще одну клавишу для стрельбы (например, клавишу клавиатуры P) и имитировать P нажатие / отпускание в сценарии, отслеживая состояние физической кнопки мыши №1.   -  person Egor Skriptunoff    schedule 07.09.2020
comment
for example normal mouse click 2 without any delays Я не понимаю, о какой задержке вы говорите. Текущая версия скрипта имитирует скорострельную стрельбу после нажатия ПКМ без задержки.   -  person Egor Skriptunoff    schedule 07.09.2020
comment
ах, вот как я использовал сценарий, imgur.com/a/flBR4YO я использовал свой Кнопка мыши g8 для стрельбы, которая находится рядом с моим lmb, это было немного странно, почему я думал, что это возможно с lmb, тоже не думаю прочтите это как кнопку мыши 1, когда я нажимаю g8   -  person Vatzepack    schedule 07.09.2020
comment
в основном сценарий выполняется мгновенно, когда я нажимаю ЛКМ, я щелкаю мышью 1, затем второй раз, когда я щелкаю мышью 1, затем выполняется сценарий.   -  person Vatzepack    schedule 07.09.2020
comment
imgur у меня не работает. Я не вижу изображения.   -  person Egor Skriptunoff    schedule 07.09.2020
comment
pasteboard.co/Jq9H4cuC.png pasteboard.co/Jq9Hc7A.png   -  person Vatzepack    schedule 08.09.2020
comment
Хорошо, теперь я вижу ваши фотографии - вы используете кнопку №8 вместо ПКМ. Да, запустить скрипт можно только после двойного щелчка ЛКМ. Обычный медленный щелчок ЛКМ был бы простой стрельбой без быстрой стрельбы. Я добавил к своему ответу новый код.   -  person Egor Skriptunoff    schedule 11.09.2020


Ответы (1)


local rapid_fire_delay = 15   -- delay between simulation of LMB press/release
local LMB_Pressed
do  -- initializing PRNG
   local dt = 0
   for c in GetDate():gmatch"." do
      dt = (dt % 65537 * 23456 + c:byte())
   end
   math.randomseed(dt)
end

function OnEvent(event, arg)
   if event == "MOUSE_BUTTON_PRESSED" and arg == 2 and IsKeyLockOn("scrolllock") then   -- RMB press
      for j = 1, math.random(4, 5) do  -- first 4-5 bullets as rapid-fire
         PressMouseButton(1)
         Sleep(math.random(rapid_fire_delay, 2*rapid_fire_delay))
         ReleaseMouseButton(1)
         Sleep(math.random(rapid_fire_delay, 2*rapid_fire_delay))
         if not IsMouseButtonPressed(3) then return end  -- is RMB pressed?
      end
      PressMouseButton(1)
      LMB_Pressed = true
   elseif event == "MOUSE_BUTTON_RELEASED" and arg == 2 and LMB_Pressed then   -- RMB release
      ReleaseMouseButton(1)
      LMB_Pressed = false
   elseif event == "MOUSE_BUTTON_PRESSED" and arg == 5 then 
      repeat 
         Sleep(15) 
         PressKey("SPACEBAR") 
         Sleep(15) 
         ReleaseKey("SPACEBAR") 
      until not IsMouseButtonPressed(5) 
   end 
end

Строка for j = 1, math.random(4, 5) do означает случайное количество от 4 до 5 пуль.
Если вы хотите ровно 3 маркера, измените эту строку на for j = 1, 3 do


РЕДАКТИРОВАТЬ:

Это инструкция о том, как включить быстрое зажигание только после двойного щелчка ЛКМ.
Обычное медленное нажатие ЛКМ не вызовет быстрого огня.

local Prev_LMB_Time, LMB_Pressed = 0
function OnEvent(event, arg)
   if event == "MOUSE_BUTTON_PRESSED" and arg == 1 then
      if IsKeyLockOn("scrolllock") then
         local tm = GetRunningTime()
         tm, Prev_LMB_Time = tm - Prev_LMB_Time, tm
         if tm < 200 then  -- LMB double-click
            for j = 1, 100 do
               PressMouseButton(1)
               Sleep(1)
               ReleaseMouseButton(1)
               Sleep(1)
               if not IsMouseButtonPressed(4) then return end
            end
         end
      end
      PressMouseButton(1)
      LMB_Pressed = true
   elseif event == "MOUSE_BUTTON_RELEASED" and arg == 1 and LMB_Pressed then
      ReleaseMouseButton(1)
      LMB_Pressed = false
   elseif event == "MOUSE_BUTTON_PRESSED" and arg == 5 then
      repeat
         Sleep(15)
         PressKey("SPACEBAR")
         Sleep(15)
         ReleaseKey("SPACEBAR")
      until not IsMouseButtonPressed(5)
   end
end

В настоящее время у вас в GHUB:

Primary Click = G1
Back          = G4 G8

Что делать в GHUB (в таком порядке):

  1. Привязать основной щелчок к G8 (с этого момента используйте кнопку №8 вместо ЛКМ)
  2. Привязать к G1
  3. Установите сценарий
Now you should have the following:
Primary Click = G8
Back          = G1 G4

Кнопка мыши №8 теперь является запасной ЛКМ на случай, если ЛКМ работает некорректно.

person Egor Skriptunoff    schedule 05.07.2020