Как использовать os.clock() вместо wait?

shawtyglock.

Активный
Автор темы
188
58
Видел около 5 примеров и больше, но так и не догнал, что, как и зачем.
Мне нужно, что бы между действиями скрипт ждал 60 секунд.
 
Решение
1665414651842.png

Lua:
local Timer = { -- тут параметры нашего таймера
    State = false, -- статус (вкл/выкл)
    Start = -1, -- время начала
    Time = 15 -- длительность
}

function main()
    while not isSampAvailable() do wait(0) end
    sampRegisterChatCommand('start', function(arg)
        Timer.State = not Timer.State -- переключаем статус таймера
        if Timer.State then -- если таймер включен, то...
            Timer.Start = os.clock() --... устанавливаем время запуска на текущее время
            sampAddChatMessage('Таймер запущен на '..Timer.Time..' сек.', -1)
        else
            sampAddChatMessage('Таймер выключен', -1)
        end
    end)
    while true do
        wait(0)
        if Timer.State then -- если таймер...

chapo

🫡 В армии с 17.10.2023. В ЛС НЕ ОТВЕЧАЮ
Друг
8,776
11,226
1665414651842.png

Lua:
local Timer = { -- тут параметры нашего таймера
    State = false, -- статус (вкл/выкл)
    Start = -1, -- время начала
    Time = 15 -- длительность
}

function main()
    while not isSampAvailable() do wait(0) end
    sampRegisterChatCommand('start', function(arg)
        Timer.State = not Timer.State -- переключаем статус таймера
        if Timer.State then -- если таймер включен, то...
            Timer.Start = os.clock() --... устанавливаем время запуска на текущее время
            sampAddChatMessage('Таймер запущен на '..Timer.Time..' сек.', -1)
        else
            sampAddChatMessage('Таймер выключен', -1)
        end
    end)
    while true do
        wait(0)
        if Timer.State then -- если таймер активен, то:
            local TimeLeft = math.floor(Timer.Start + Timer.Time - os.clock()) -- получаем время до конца таймера (math.floor тут не обязателен, но так время отображается без мс (для лучшего вывода на экран))
            printStyledString('TIME LEFT: ~y~'..TimeLeft..'~w~ sec.', 25, 7) -- выводим время на экран
            if TimeLeft <= 0 then -- если время таймера меньше или == 0, то... (он выключился)
                Timer.State = false -- выключаем таймер
                sampAddChatMessage('Время прошло!', -1)
            end
        end
    end
end