Сценарий Ghub: Перетащите мышь вниз и выполните автоклик, нажав левую кнопку мыши (LUA)

#lua #logitech #logitech-gaming-software

Вопрос:

Поэтому в основном я пытался сделать то, что описано в названии, используя механику сценариев Ghub Lua, опубликовав код ниже того, что у меня есть.:

 EnablePrimaryMouseButtonEvents(true);
function OnEvent(event, arg)
if IsKeyLockOn("capslock")then
if  IsMouseButtonPressed(1)then
   repeat
   MoveMouseRelative(0,4)
   PressMouseButton(1)
   Sleep(1,2)
   ReleaseMouseButton(1)
   until not IsMouseButtonPressed(1)
end
end
end
 

Проблема в том, что иногда он просто останавливается на полпути вниз, иногда он просто не щелкает вообще. Я перепробовал несколько способов обойти это, включая изменение того, какая кнопка нажимается на мыши, на данный момент она нажата кнопкой мыши(5), что отлично работает, но моя цель-заставить ее работать при нажатии кнопки мыши(1). Если бы это было возможно, я бы попросил вас о любой помощи, ребята, заранее спасибо, надеюсь, я дал вам всю необходимую информацию.

Ответ №1:

Проблема заключается в том, что невозможно одновременно имитировать пресс-релиз LMB и отслеживать его состояние.
Обходной путь приведен ниже:

Шаг 0.
Вы собираетесь изменить поведение левой кнопки мыши.
Это является потенциально опасной операцией: вы можете делать практически ничего на вашем компьютере без ЛКМ.
Поэтому необходимо создать «запасной ЛКМ».
Например, если вы не используете кнопку мыши 8, вы можете сделать это вести себя как клон на ЛКМ.
Перейти к GHUB-устройства (мышь, «задания вкладку» Экран, система).
Назначьте «Основной щелчок» вашему физическому MB#8.
Теперь, если что-то пойдет не так и ваш LMB перестанет работать, вы можете нажать MB#8 вместо LMB.


Шаг 1.
Используете ли вы в игре кнопку мыши 4 («назад»)?

  • Если ДА (для некоторых действий в игре установлено значение MB#4), перейдите к «Шагу 2».
  • Если НЕТ (игра игнорирует нажатие MB#4), пропустите «Шаг 2» и перейдите к «Шагу 3».

Шаг 2.
Вы должны переназначить игровое действие с MB#4 на какой-то другой ключ.
Сделайте следующее:

  • выберите клавишу клавиатуры, которую вы в данный момент не используете в игре
    (предположим, что эта F12 клавиша в данный момент не используется).
  • перейдите в GHUB (устройство мыши, экран «Назначения», вкладка «КЛАВИШИ»);
    назначьте F12 свой физический МБ#4
  • перейдите в настройки игры;
    установите игровое действие F12 вместо MB#4

Теперь, когда вы нажимаете физический MB#4, игра получает F12 и активирует игровое действие.
Пропустите «Шаг 3» и перейдите к «Шагу 4».


Шаг 3.
Перейдите в GHUB (устройство мыши, экран «Назначения»).
Отмените назначение стандартной команды «Назад» с физического МБ № 4 (нажмите и выберите ОТКЛЮЧИТЬ в раскрывающемся меню).
Отключенный МБ № 4 будет выглядеть как белый круг с черным внутри.


Шаг 4.
Установите сценарий (см. Ниже).


Шаг 5.
Перейдите в GHUB (устройство мыши, экран «Назначения», вкладка «СИСТЕМА»).
Назначьте «Назад» своему физическому LMB.
Вы увидите предупреждение о потенциально опасной операции.
Разрешите эту операцию, потому что у вас есть «запасной LMB», если что-то пойдет не так.

 function OnEvent(event, arg)
   if event == "PROFILE_ACTIVATED" then
      EnablePrimaryMouseButtonEvents(true)
   elseif event == "MOUSE_BUTTON_PRESSED" and arg == 1 then
      PressMouseButton(1)
      if IsKeyLockOn("capslock") then
         repeat
            MoveMouseRelative(0,4)
            Sleep(10)
            if not IsMouseButtonPressed(4) then break end
            ReleaseMouseButton(1)
            MoveMouseRelative(0,4)
            Sleep(10)
            PressMouseButton(1)
         until not IsMouseButtonPressed(4)  -- 4 = "Back"
      end
   elseif event == "MOUSE_BUTTON_RELEASED" and arg == 1 then
      ReleaseMouseButton(1)
   elseif event == "PROFILE_DEACTIVATED" then
      ReleaseMouseButton(1)
   end
end
 

Комментарии:

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

2. Метод переназначения кнопки огня в игре обычно не работает: если вы назначаете две разные кнопки для огня, эти две кнопки не работают независимо (игра не позволяет вам нажимать 2-ю кнопку огня, пока нажата 1-я кнопка огня).

3. Я думаю, что ваша душа-лучшее, что я когда-либо мог получить, на самом деле, но мне каким-то образом удалось создать только два отдельных профиля для игры, один из которых-автоклик и нажатие мыши вниз, другой-просто имитация нажатия кнопки fire ket и просто нажатие мыши вниз, работает просто путем прокрутки их с помощью кнопки DPI. Я думаю, что ваше решение немного слишком сложное, но если у меня возникнут какие-либо проблемы с моей «установкой», я просто воспользуюсь вашим вместо этого. При всей признательности, я рад, что кто-то действительно откликнулся на работоспособное решение не спустя 3 года или около того для такой конкретной проблемы, еще раз спасибо, приятель )

4. @Dainzh — one being autoclicking — Интересно. Как именно работает ваш профиль? Как отображаются кнопки огня в игре? Какие аргументы вы передаете в PressMouseButton и IsMouseButtonPressed?

5. Это для автоматического клика и перетаскивания вниз: EnablePrimaryMouseButtonEvents(true); function OnEvent(event, arg) if IsKeyLockOn("capslock")then if IsMouseButtonPressed(1)then repeat Sleep(1,2) PressKey("v") MoveMouseRelative(0,3) Sleep(1,2) ReleaseKey("v") until not IsMouseButtonPressed(1) end end end