Попытка сократить код Lua - PullRequest
0 голосов
/ 19 мая 2018

Есть ли способ сократить этот код?

if (event == "MOUSE_BUTTON_PRESSED" and arg == 1) then
PressKey ("a")
Sleep (50)
if not IsMouseButtonPressed(1) then
ReleaseKey ("a")
return
end
PressKey ("a")
Sleep (200)
if not IsMouseButtonPressed(1) then
ReleaseKey ("a")
return
end
...
next all the same with sleep values only changing

Я хочу использовать повторение до, но я не могу этого сделать, так как значение для сна меняется.Есть ли способ сохранить значения спящего режима в таблице (т. Е. 50, 200, 100, 75, 25, 200), чтобы я мог использовать в коде повторение до?Я пытался искать, но я новичок в Lua.Любая помощь приветствуется, спасибо

1 Ответ

0 голосов
/ 19 мая 2018

Поскольку вы хотите зациклить диапазон тайм-аутов, я бы не использовал repeat until, а скорее цикл for.Самое главное, вы должны уведомить вызывающего абонента о том, что все таймауты не были выполнены после завершения списка.

if (event == "MOUSE_BUTTON_PRESSED" and arg == 1) then
    for _,duration in ipairs{50, 200, 100, 75, 25, 200} do
        PressKey ("a")
        Sleep (duration)
        if not IsMouseButtonPressed(1) then
            ReleaseKey ("a")
            return
        end
    end
    return "ERROR" -- You should somehow indicate timeout to the caller
end
...