name = "AFK Spectate Plugin",
description = "Плагин для перевода игроков в наблюдатели",
url = "https://discord.gg/8Bk7BmA5ky"
g_AFKSpectateMenu = new Menu(MenuHandler);
SetMenuTitle(g_AFKSpectateMenu, "Выберите игрока для перевода в наблюдатели:");
SetMenuExitButton(g_AFKSpectateMenu, true);
int maxClients = MaxClients;
for (int i = 1; i <= maxClients; i++)
if (IsClientInGame(i) && !IsFakeClient(i))
char name[MAX_NAME_LENGTH];
GetClientName(i, name, sizeof(name));
IntToString(i, clientIndex, sizeof(clientIndex));
AddMenuItem(g_AFKSpectateMenu, clientIndex, name, ITEMDRAW_DEFAULT);
public int MenuHandler(Menu menu, MenuAction action, int clientIndex, int menuItem)
if (action == MenuAction_Select)
GetMenuItem(menu, menuItem, buffer, sizeof(buffer));
int targetIndex = StringToInt(buffer);
if (IsClientInGame(targetIndex))
ChangeClientTeam(targetIndex, 1);
char targetName[MAX_NAME_LENGTH];
GetClientName(targetIndex, targetName, sizeof(targetName));
char adminName[MAX_NAME_LENGTH];
GetClientName(clientIndex, adminName, sizeof(adminName));
PrintToChatAll("[Admin] %s перевел игрока %s в наблюдатели.", adminName, targetName);
else if (action == MenuAction_End)
public Action Command_OpenAFKMenu(int client, int args)
if (!CheckCommandAccess(client, "sm_afkspec", ADMFLAG_GENERIC))
if (!IsClientInGame(client))
DisplayMenu(g_AFKSpectateMenu, client, 0);
public Action Command_AFK(int client, int args)
if (!IsClientInGame(client))
ChangeClientTeam(client, 1);
char clientName[MAX_NAME_LENGTH];
GetClientName(client, clientName, sizeof(clientName));
PrintToChatAll("[AFK] Игрок %s перешел в наблюдатели.", clientName);
public void OnPluginStart()
RegAdminCmd("sm_afkspec", Command_OpenAFKMenu, ADMIN_FLAG);
RegConsoleCmd("sm_afk", Command_AFK);
public void OnPluginEnd()
if (g_AFKSpectateMenu != null)
delete g_AFKSpectateMenu;