[DarkRP] Рестарт система, как на дбг

Привет, нужен скрипт. Чтоб можно біло писать через консоль и через саму игру. Пишеш было на пример: /restartserver , чтоб можно было ставить разное время через сколько рестарт. И так же, появлялась гуишка с текстом про рестарт. Буду благодарен!

Ну раз хочешь с гуишкой то надо платить. И какая должна быть гуишка

Просто текст. Тип, Рестарт через 5 секунд.

SV-часть.

один раз начнёт отсчёт до рестарта, второй отменит.

local command = 'restart' -- пишим с маленькой.
-- время для рестарта в секундах, я мог сделать и автоматом (одно число), но так будет удобнее для уведомлений.
local time = {300,60,30,10,5,4,3,2,1}
local id = 3 -- 3- чат , 4- центр экрана

--Буфер
local c = 1
local t1 = 'Рестарт через: '
local t2 = ' минут.'
local t3 = ' секунд.'
local find = string.find
local lower = string.lower
local IsValid = IsValid
local timer_Simple = timer.Simple
local timer_Create = timer.Create
local timer_Exists = timer.Exists
local RunConsoleCommand = RunConsoleCommand
local PrintMessage = PrintMessage
local game_GetMap = game.GetMap
--
hook.Add('PlayerSay','RestartSay',function(pl, str)
if not pl:IsSuperAdmin() or not find(lower(str), '/' .. command) then return end
        -- можно заменить на pl:ConCommand(command)
        RunConsoleCommand(command)
        return ''
end)

local player_GetAll = player.GetAll
local function RestartRemove()
    timer_Remove("Restart_cmd")
    PrintMessage(id, 'Рестарт отменён!')
end

local function Restart()
    local T = time[c]
    local pla = player_GetAll()
    if not T then
        c = 1
        PrintMessage(id, 'Рестарт!')
        timer_Simple(1, function() RunConsoleCommand('changelevel', game_GetMap()) end)
        return
    end
    c = c + 1
    local mT = T / 60
    local text
    if mT >= 1 then
        text = mT .. t2
    else
        text = T .. t3
    end

    SendMsg(t1, text)
    PrintMessage(id, t1 .. text)
    timer_Create("Restart_cmd", T - (time[c + 1] or 0), 1, function() Restart() end)
end

concommand.Add(command,function(pl)
        if IsValid(pl) then if not pl:IsSuperAdmin() then return end end
        if not timer_Exists("Restart_cmd") then
            Restart()
        else
            RestartRemove()
        end
end)

lua/autorun/server/restart.lua:22: attempt to call global ‘findstr’ (a nil value)

ой случайно повторно str написал, сейчас изменю, скопируй заново.

OKey /

Ошибок нет, но не работает. Пишу /restart 60. И ничего не пишет… В чем проблема?

И не будет, это консольная команда, а ты её в чате пишешь

Проблему понял, если команда будет ровно restart то она не будет работать, по этому просто поменяйте название команды пример на Srestart.
Так же убрал функции которые не относились к коду.

и время настраивается в Lua не в команде!

Далее не работает, сделал команду restarts, и не робит!

не то отправил.
restart.lua (2,0 КБ)

:clock3:

Еще пару траблов. Пишу /restarts 1 (вроде 1 секунда), но рестарт автоматически ставится 5 минут!

это настраиваться в lua, я не делал поддержку своего времени, ради простого кода и уведомлений.
image
ставишь своё статичное время и всё.

Я как раз пишу /restarts 1, и все равно 5 минут. Или я тупой немного?

ясно.

Так что делать?

Он тебе написал, что не делал поддержку времени, чел, и ты, наверное, не настроил время в луа.
А вообще лучше ставь 5 секунд для теста хотя бы, а не 1 секунду. Так как за 1 секунду менюшка рестарта просто пропадает, и ты не успеваешь ее увидеть. А что бы время было 5 минут, то ставь 300 секунд

Я понял, но проблема в том, что оно читает время только первое значения. И автоматически берет из списка его.

{300,60,30,10,5,4,3,2,1}
Берёт первое значение 300
пишем игроку что рестарт через 300 секунд (5 минут)
отнимаем от 300 следущее значение 60, получаем 240
таймер будет идти 240 секунд
по окончания 240секунд пишем что рестарт через 60 секунд и повторяем до последнего значения.

Хочешь быстрый рестарт?
ставь меньше времени в таблице:
{60,30,10,5,3,2,1}

или ещё меньше:
{10,5,3,2,1}

Хочешь моментальный?
ставь
{}
таймер нужен для уведомление игроков.