Lua | Таймер

user337567

Участник
Автор темы
91
10
Версия MoonLoader
Другое
Как сделать адекватный таймер, чтоб он не тормозил поток?
 
Решение
Lua:
  function FormatTime(time)
    local timezone_offset = 86400 - os.date('%H', 0) * 3600
    local time = time + timezone_offset
    return os.date((os.date("%H",time) == "00" and '%M:%S' or '%H:%M:%S'), time)
    end
    

function setTimer()
    sampShowDialog(5572,'Таймер',"Введите кол-во минут для таймера","Ок","Закрыть",1)
    while sampIsDialogActive() do
       wait(0)
    end
    while true do
        local res, btnDialog, _, inputDialog = sampHasDialogRespond(5572)
        if res and btnDialog == 1 then
            if inputDialog:len() > 0 then
                inputDialog = tonumber(inputDialog)
                if inputDialog then
                    timerStart = os.time()
                    timerEndTime = inputDialog...

Double Tap Inside

Известный
Проверенный
1,915
1,260
Таймер с обратным отчетом, после которого запуститься какое то действие?

Вариант 1: создай отдельный поток под таймер.

Вариант 2: используй арифметику. Замеряй начало старт таймера через os.clock() итд..

Ответь на вопрос. И дай код куда ты хош вставить таймер.
 

user337567

Участник
Автор темы
91
10
Таймер с обратным отчетом, после которого запуститься какое то действие?

Вариант 1: создай отдельный поток под таймер.

Вариант 2: используй арифметику. Замеряй начало старт таймера через os.clock() итд..

Ответь на вопрос. И дай код куда ты хош вставить таймер.
мне надо чтоб рендерило линию в промежуток времени
 

_ex$tanOr_

Участник
125
19
Lua:
  function FormatTime(time)
    local timezone_offset = 86400 - os.date('%H', 0) * 3600
    local time = time + timezone_offset
    return os.date((os.date("%H",time) == "00" and '%M:%S' or '%H:%M:%S'), time)
    end
    

function setTimer()
    sampShowDialog(5572,'Таймер',"Введите кол-во минут для таймера","Ок","Закрыть",1)
    while sampIsDialogActive() do
       wait(0)
    end
    while true do
        local res, btnDialog, _, inputDialog = sampHasDialogRespond(5572)
        if res and btnDialog == 1 then
            if inputDialog:len() > 0 then
                inputDialog = tonumber(inputDialog)
                if inputDialog then
                    timerStart = os.time()
                    timerEndTime = inputDialog
                    timerState = true
                    break
                else
                    sampShowDialog(5572,'Таймер',"Введите кол-во минут для таймера","Ок","Закрыть",1)
                end
            else
                sampShowDialog(5572,'Таймер',"Введите кол-во минут для таймера","Ок","Закрыть",1)
            end
        elseif res and btnDialog == 0 then
            break
        end
    end
end
В бесконечном цикле main
Lua:
        if timerState then
          if timerStart and timerEndTime then
          local timerEndTimeSec = timerEndTime * 60
          local showtime = timerEndTimeSec - (os.time() - timerStart)
          if showtime > 0 then
            renderFontDrawText(font,'{FF0000}Таймер: {0000FF}'..FormatTime(showtime),700,650,-1)
                    end
          end
          end