#lua #logitech #logitech-gaming-software
Вопрос:
я изучал lua, чтобы закодировать автоматический кликер для моего g903, который работает при удержании правой кнопки мыши и может переключаться с помощью клавиши capslock. любая помощь или понимание будут оценены по достоинству
EnablePrimaryMouseButtonEvents(true);
function OnEvent(event,arg)=true
if IsKeyLockOn("capslock"=true then
if IsMouseButtonPressed(3)=true then
repeat
if IsMouseButtonPressed(1)=true then
repeat
PressAndReleaseMouseButton(1)
Sleep(math.random(20,80))
until IsMouseButtonPressed(1)=false
end
until IsMouseButtonPressed(3)=false
end
end
end
Комментарии:
1. Не могли бы вы также опубликовать сообщение об ошибке?
2. Как ты думаешь
function OnEvent(event,arg)=true
, что это значит?3. Кроме того, знаете ли вы разницу между
=
и==
?4. Вы не можете одновременно моделировать виртуальный ЛМБ
PressAndReleaseMouseButton(1)
и отслеживать физическое состояние ЛМБIsMouseButtonPressed(1)
Ответ №1:
function OnEvent(event,arg)
это начало определения функции. Вы не можете утверждать здесь истину, как это было сделано в function OnEvent(event,arg)=true
. Это приведет к ошибке для неожиданного символа рядом с»=». Луа не может понять этого.
В if IsKeyLockOn("capslock"=true then
тебе не хватает круглой скобки. После добавления, что это все еще неверно, как и для всех следующих строк:
if IsKeyLockOn("capslock")=true then
if IsMouseButtonPressed(3)=true then
if IsMouseButtonPressed(1)=true then
вы получаете сообщение об ошибке», затем «исключено рядом»=»
until IsMouseButtonPressed(1)=false
until IsMouseButtonPressed(3)=false
вы получаете сообщение об ошибке «ожидается около «до»
Вы путаете оператор присваивания =
с оператором равенства ==
.
Видеть Операторы отношений и Назначение
В качестве дополнительного примечания, эти функции уже возвращают значение true или false.
Вам не нужно явно проверять, равно ли возвращаемое значение истине. Есть только два возможных исхода. true == true -> true
или false == true -> false
. Таким образом, вы можете использовать возвращаемое значение напрямую и просто написать if IsMouseButtonPressed(1) then
.
Если вы хотите что-то сделать в этом false
случае, обычной практикой является просто отрицать возвращаемое значение. not false -> true
В этом случае вы просто пишете, если нет if not IsMouseButtonPressed(1) then
, вместо if IsMouseButtonPressed(1) == false then
.
Комментарии:
1. Кроме того,
IsMouseButtonPressed
etc возвращает логическое значение. Сравнение логического значения сtrue
эффективно ничего не дает, поэтому вы можете удалить все== true
. Аналогично== false
, вместо этого его чаще используютnot
.2. я исправил код, как вы предложили, и теперь он не показывает ошибок и, похоже, «работает» в соответствии с ghub, но скрипт все еще не регистрирует клики.
3. ТЕКУЩИЙ КОД ВЫГЛЯДИТ СЛЕДУЮЩИМ ОБРАЗОМ;
EnablePrimaryMouseButtonEvents(true); function OnEvent(event,arg) if IsKeyLockOn("capslock") then if IsMouseButtonPressed(3) then repeat if IsMouseButtonPressed(1) then repeat PressAndReleaseMouseButton(1) Sleep(math.random(20,80)) until not IsMouseButtonPressed(1) end until not IsMouseButtonPressed(3) end end end
4. пожалуйста, задайте новый вопрос