почему я получаю синтаксическую ошибку в своем сценарии logitech g lua?

#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. пожалуйста, задайте новый вопрос