#include <sourcemod>
#include <adminmenu>
#include <cstrike>
new UseMenu[MAXPLAYERS+1];
new ct, t;
new Handle:g_hTopMenu = INVALID_HANDLE;
public OnPluginStart()
{
new Handle:_hTemp = INVALID_HANDLE;
if(LibraryExists("adminmenu") && ((_hTemp = GetAdminTopMenu()) != INVALID_HANDLE))
{
OnAdminMenuReady(_hTemp);
}
HookEvent("round_end", Event_OnRoundEnd);
}
public OnLibraryRemoved(const String:name[])
{
if(StrEqual(name, "adminmenu"))
{
g_hTopMenu = INVALID_HANDLE;
}
}
public OnAdminMenuReady(Handle:topmenu)
{
if(topmenu == g_hTopMenu)
{
return;
}
g_hTopMenu = topmenu;
new TopMenuObject:server_commands = FindTopMenuCategory(g_hTopMenu, ADMINMENU_SERVERCOMMANDS);
if(server_commands != INVALID_TOPMENUOBJECT)
{
AddToTopMenu(g_hTopMenu,
"switch",
TopMenuObject_Item,
swithmenu,
server_commands,
"switch",
ADMFLAG_CHAT);
}
}
public swithmenu(Handle:topmenu,
TopMenuAction:action,
TopMenuObject:object_id,
param,
String:buffer[],
maxlength)
{
if ((action == TopMenuAction_DisplayOption) || (action == TopMenuAction_DisplayTitle))
{
Format(buffer, maxlength, "Перемешать игроков", param);
}
else if (action == TopMenuAction_SelectOption)
{
UseMenu[param] = 1;
PrintToChatAll("\x01\x05[SM] \x03Смешивание игроков произойдет в конце раунда");
votdlyamenu();
}
}
votdlyamenu()
{
ct = 0, t = 0;
for (new i = 1; i <= MaxClients; i++)
{
if(IsClientInGame(i))
{
new team = GetClientTeam(i);
if(team == 2) t++;
if(team == 3) ct++;
}
}
}
public Event_OnRoundEnd(Handle:event, const String:name[], bool:dontBroadcast)
{
new k, tp = 0, ctp = 0;
ct = 0, t = 0;
for(new j = 1; j <= MaxClients; j++)
{
if (GetClientTeam(j) != 1 && IsClientInGame(j) && UseMenu[j] == 1)
{
k = GetRandomInt(2, 3);
if(k == 2)
{
if(tp < t)
{
CS_SwitchTeam(j, 2);
tp++;
}
else
{
CS_SwitchTeam(j, 3);
ctp++;
}
}
else
{
if (ctp < ct)
{
CS_SwitchTeam(j, 3);
ctp++;
}
else
{
CS_SwitchTeam(j, 2);
tp++;
}
}
UseMenu[j] = 0;
}
}
PrintToChatAll("[SM] Игроки перемешаны");
}