Lua проверяет переменную во время цикла for - PullRequest
0 голосов
/ 19 декабря 2018

Я заранее извиняюсь, так как уверен, что на этот вопрос уже дан ответ, но без какого-либо опыта программирования мне сложно перевести решение из других постов в мой собственный код.У меня есть цикл for, который я хочу проверять глобальную переменную в течение каждого интервала.Код ниже не работает, так как он думает, что continue_loop является локальной переменной.Есть предложения?

if (event == "MOUSE_BUTTON_PRESSED" and arg == 1) then
continue_loop = 1
Click()
end

if (event == "M_RELEASED" and arg == 3) then
Click()
end

if (event == "MOUSE_BUTTON_RELEASED" and arg == 1) then
Stopclick()
end

function Stopclick()
continue_loop = 0
end

function Click()
    PressMouseButton(1)
    Sleep (10)
    ReleaseMouseButton(1)
  for i=1,10 do
    if (continue_loop == 1) then
        MoveMouseRelative(0,5)
        Sleep (30)
    else return
    end
    end
  if (continue_loop == 0) then
    Stopclick()
  elseif (continue_loop == 1) then SetMKeyState(3)
  else Stopclick()
  end
end

Ответы [ 2 ]

0 голосов
/ 20 декабря 2018

lua имеет только один поток, что означает, что во время цикла for переменная continue_loop не изменится, потому что ни один код не пытается изменить его внутри цикла.

Вам нужно будет вызвать функцию, которая проверяет мышьсостояние и затем обновите переменную continue_loop.

for i=1,10 do
    CheckMouseState() -- sets global value of continue_loop based on mouse state.
    if (continue_loop == 1) then
        MoveMouseRelative(0,5)
        Sleep (30)
    else return
    end
end
0 голосов
/ 19 декабря 2018

Вы можете просто написать local continue_loop в начале вашей программы.Я бы посоветовал вам узнать кое-что о области видимости и времени жизни переменных , чтобы лучше понять это решение!

...