#include <sourcemod>
#undef REQUIRE_PLUGIN
#include <adminmenu>
new Handle:hTopMenu;
public OnPluginStart()
{
RegAdminCmd("sm_restart", Cmd_Restart, ADMFLAG_ROOT);
new Handle:topmenu;
if(LibraryExists("adminmenu") && ((topmenu = GetAdminTopMenu()) != INVALID_HANDLE)) OnAdminMenuReady(topmenu);
}
public OnLibraryRemoved(const String:name[])
{
if(StrEqual(name, "adminmenu")) hTopMenu = INVALID_HANDLE;
}
public OnAdminMenuReady(Handle:topmenu)
{
if(topmenu == hTopMenu) return;
hTopMenu = topmenu;
new TopMenuObject:server_cmds = FindTopMenuCategory(hTopMenu, ADMINMENU_SERVERCOMMANDS);
if(server_cmds != INVALID_TOPMENUOBJECT) AddToTopMenu(hTopMenu, "sm_restart", TopMenuObject_Item, AdminMenu_Restart, server_cmds, "sm_restart", ADMFLAG_ROOT);
}
public AdminMenu_Restart(Handle:topmenu, TopMenuAction:action, TopMenuObject:object_id, param, String:buffer[], maxlength)
{
switch(action)
{
case TopMenuAction_DisplayOption: Format(buffer, maxlength, "Перезагрузить сервер", param);
case TopMenuAction_SelectOption: Restart(param);
}
}
public Action:Cmd_Restart(client, args)
{
Restart(client);
return Plugin_Handled;
}
stock Restart(client)
{
CreateTimer(1.0, Timer_Restart, _, TIMER_REPEAT);
}
public Action:Timer_Restart(Handle:timer)
{
static iTimer = 10;
if(--iTimer == 0)
{
PrintCenterTextAll("Перезагрука сервера.");
PrintToChatAll("\x04[SM] \x01Перезагрука сервера.");
ServerCommand("_restart");
return Plugin_Stop;
}
PrintCenterTextAll("Перезагрука сервера через %d секунд.", iTimer);
return Plugin_Continue;
}