#pragma semicolon 1
#include <sourcemod>
#include <vip_core>
#include <sdktools>
public Plugin:myinfo =
{
name = "[VIP] FreeSwapTeam",
author = "R1KO",
version = "1.0.1"
};
new bool:g_bAccess[MAXPLAYERS+1],
g_CVAR_iAdminFlag;
public OnPluginStart()
{
decl Handle:hCvar, String:sBuffer[32];
HookConVarChange((hCvar = CreateConVar("sm_vip_fst_admin_flag", "z", "Флаг админа, необходимый чтобы иметь свободную смену команды. (\"\" - Отключено)", FCVAR_PLUGIN)), OnAdminFlagChange);
GetConVarString(hCvar, sBuffer, sizeof(sBuffer));
g_CVAR_iAdminFlag = ReadFlagString(sBuffer);
AutoExecConfig(true, "vip_fst", "vip");
CloseHandle(hCvar);
AddCommandListener(Command_JoinTeam, "jointeam");
HookEvent("player_say", Event_PlayerSay);
}
public OnAdminFlagChange(Handle:hCvar, const String:oldValue[], const String:newValue[])
{
decl i, String:sBuffer[32];
GetConVarString(hCvar, sBuffer, sizeof(sBuffer));
g_CVAR_iAdminFlag = ReadFlagString(sBuffer);
for (new i = 1; i <= MaxClients; ++i)
{
if (IsClientInGame(i)) OnClientPostAdminCheck(iClient);
}
}
public OnClientPostAdminCheck(iClient)
{
if(g_CVAR_iAdminFlag > 0)
{
g_bAccess[iClient] = bool:(GetUserFlagBits(iClient) & g_CVAR_iAdminFlag;
return;
}
g_bAccess[iClient] = false;
}
public VIP_OnVIPClientLoaded(iClient) g_bAccess[iClient] = true;
public VIP_OnVIPClientExpired(iClient) g_bAccess[iClient] = false;
public Action:Command_JoinTeam(iClient, const String:sCommand[], args)
{
if(g_bAccess[iClient] && IsClientInGame(iClient))
{
decl String:sTeam[2];
GetCmdArg(1, sTeam, sizeof(sTeam));
ChangeClientTeam(iClient, StringToInt(sTeam));
return Plugin_Stop;
}
return Plugin_Continue;
}
public Event_PlayerSay(Handle:hEvent, const String:sEvName[], bool:bDontBroadcast)
{
decl iClient;
if(g_bAccess[(iClient = GetClientOfUserId(GetEventInt(hEvent, "userid")))])
{
decl String:sText[192], iTeam, index;
GetEventString(hEvent, "text", sText, sizeof(sText));
index = sText[0] == '!' || sText[0] == '/' 1:0;
if(strcmp(sText[index], "ct", false) == 0 || strcmp(sText[index], "кт", false) == 0)
{
iTeam = 3;
}
else if(strcmp(sText[index], "t", false) == 0 || strcmp(sText[index], "т", false) == 0)
{
iTeam = 2;
}
else if(strcmp(sText[index], "spec", false) == 0 || strcmp(sText[index], "спек", false) == 0)
{
iTeam = 1;
}
else
{
return;
}
if(iTeam != GetClientTeam(iClient))
{
ChangeClientTeam(iClient, iTeam);
}
else
{
PrintToChat(iClient,"[VIP] Вы уже в этой команде!");
}
}
}