Помогите с плагином

Temlik

Участник
Сообщения
668
Реакции
174
Я хочу сделать так, чтобы в консоль можно было ввести команду "!restart <seconds>", после чего у всех на сервере в центре экрана с надписью "Внимание" пошёл отсчёт до рестарта.
 

Вложения

  • Restart.sp
    587 байт · Просмотры: 14

Сергей68

Неуместный юмор
Сообщения
420
Реакции
377
C-подобный:
int
    g_iSecs;

public void OnPluginStart()
{
    RegConsoleCmd("sm_restart", Restart_CMD);
}

public Action Restart_CMD(int iClient, int iArgs)
{
    char sTime[256];
    GetCmdArg(1, sTime, sizeof(sTime));

    if((g_iSecs = StringToInt(sTime)))
        CreateTimer(1.0, Timer_Restart, _, TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE);
}

public Action Timer_Restart(Handle hTimer)
{
    if (--g_iSecs > 0)
    {
        PrintCenterTextAll("Рестарт через: %i сек.", g_iSecs);
        return Plugin_Continue;
    }

  
for(int i = 1; i <= MaxClients; i++) if(IsClientInGame(i))
        ClientCommand(i, "retry");

    ServerCommand("_restart");
    return Plugin_Stop;
}

Но данный метод производит "краш" сервера, если нет перезапуска после падения - то сервер не встанет.
Так-же на счет retry, если стоит TAU то игроков может не пустить с причиной "Лоби чето-там", если перезайдут то пустит.
Других методов вызвать рестарт не знаю.

Есть еще, но смысл один и тот же
C-подобный:
ServerCommand("quit");
ServerCommand("crash");
 
Сверху Снизу