Таймер

Neil_

Активный
Автор темы
201
29
Версия MoonLoader
Другое
Как сделать чтобы каждую секунду в таблице уменьшалось значение, способ который я пробовал ломает рендер

Lua:
function main()
    repeat wait(0) until isSampAvailable()

    while true do
        wait(0)
        for i = 1, #list_wood do
            local x,y = convert3DCoordsToScreen(list_wood[i].coord.x, list_wood[i].coord.y, list_wood[i].coord.z)
            renderFontDrawText(font, string.format('Можно улучшить через: %s секунд.', list_wood[i].time), x, y, -1)
        end
    end
end

function ev.onCreateObject(id, data)
    local x, y, z = getCharCoordinates(PLAYER_PED)
    if getDistanceBetweenCoords3d(x, y, z, data.position.x, data.position.y, data.position.z) <= 3 then
        if id == 765 then
            list_wood[#list_wood+1] = {time = 60, coord = {x = data.position.x, y = data.position.y, z = data.position.z}}
        end
    end
end

time должно уменьшатся каждую секунду
 
Последнее редактирование:
Решение
Так?
Lua:
local timer = 0

function main()
    repeat wait(0) until isSampAvailable()

    while true do
        wait(0)
        for i = 1, #list_wood do
            local x,y = convert3DCoordsToScreen(list_wood[i].coord.x, list_wood[i].coord.y, list_wood[i].coord.z)
            renderFontDrawText(font, string.format('Можно улучшить через: %s секунд.', list_wood[i].time), x, y, -1)
            if timer < os.time() then
                list_wood[i].time = list_wood[i].time-1
                timer = os.time()+1
            end
        end
    end
end

function ev.onCreateObject(id, data)
    local x, y, z = getCharCoordinates(PLAYER_PED)
    if getDistanceBetweenCoords3d(x, y, z, data.position.x, data.position.y, data.position.z) <= 3 then...

qdIbp

Автор темы
Проверенный
1,388
1,146
Так?
Lua:
local timer = 0

function main()
    repeat wait(0) until isSampAvailable()

    while true do
        wait(0)
        for i = 1, #list_wood do
            local x,y = convert3DCoordsToScreen(list_wood[i].coord.x, list_wood[i].coord.y, list_wood[i].coord.z)
            renderFontDrawText(font, string.format('Можно улучшить через: %s секунд.', list_wood[i].time), x, y, -1)
            if timer < os.time() then
                list_wood[i].time = list_wood[i].time-1
                timer = os.time()+1
            end
        end
    end
end

function ev.onCreateObject(id, data)
    local x, y, z = getCharCoordinates(PLAYER_PED)
    if getDistanceBetweenCoords3d(x, y, z, data.position.x, data.position.y, data.position.z) <= 3 then
        if id == 765 then
            list_wood[#list_wood+1] = {time = 60, coord = {x = data.position.x, y = data.position.y, z = data.position.z}}
        end
    end
end
 

XRLM

Известный
2,570
887
Как сделать чтобы каждую секунду в таблице уменьшалось значение, способ который я пробовал ломает рендер

Lua:
function main()
    repeat wait(0) until isSampAvailable()

    while true do
        wait(0)
        for i = 1, #list_wood do
            local x,y = convert3DCoordsToScreen(list_wood[i].coord.x, list_wood[i].coord.y, list_wood[i].coord.z)
            renderFontDrawText(font, string.format('Можно улучшить через: %s секунд.', list_wood[i].time), x, y, -1)
        end
    end
end

function ev.onCreateObject(id, data)
    local x, y, z = getCharCoordinates(PLAYER_PED)
    if getDistanceBetweenCoords3d(x, y, z, data.position.x, data.position.y, data.position.z) <= 3 then
        if id == 765 then
            list_wood[#list_wood+1] = {time = 60, coord = {x = data.position.x, y = data.position.y, z = data.position.z}}
        end
    end
end

time должно уменьшатся каждую секунду
примеры есть в драг таймерах или тп скриптах, где есть таймер.
 
  • Клоун
Реакции: Air_Official