added a whitelist
This commit is contained in:
parent
9342356b8b
commit
77c7cc0b04
3
leader2/configs/leader/leaders.ini
Normal file
3
leader2/configs/leader/leaders.ini
Normal file
@ -0,0 +1,3 @@
|
||||
"STEAM_0:0:22286324" // rogan
|
||||
"STEAM_0:1:32247009" // neon
|
||||
"STEAM_0:1:39773416" // omar
|
@ -6,7 +6,8 @@
|
||||
#include <zombiereloaded>
|
||||
#include <leader>
|
||||
|
||||
#define PLUGIN_VERSION "2.9"
|
||||
#define PLUGIN_VERSION "3.0"
|
||||
#define MAXLEADERS 64
|
||||
#pragma newdecls required
|
||||
|
||||
int leaderMVP, leaderScore, currentSprite = -1, spriteEntities[MAXPLAYERS+1], markerEntities[MAXPLAYERS+1], leaderClient = -1;
|
||||
@ -26,6 +27,8 @@ char DefendVTF[PLATFORM_MAX_PATH];
|
||||
char FollowVMT[PLATFORM_MAX_PATH];
|
||||
char FollowVTF[PLATFORM_MAX_PATH];
|
||||
char leaderTag[64];
|
||||
char g_sDataFile[128];
|
||||
char g_sLeaderAuth[MAXLEADERS][64];
|
||||
|
||||
int g_BeamSprite = -1;
|
||||
int g_HaloSprite = -1;
|
||||
@ -33,16 +36,24 @@ int greyColor[4] = {128, 128, 128, 255};
|
||||
int g_BeaconSerial[MAXPLAYERS+1] = { 0, ... };
|
||||
int g_Serial_Gen = 0;
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
public Plugin myinfo = {
|
||||
name = "Leader",
|
||||
author = "AntiTeal",
|
||||
author = "AntiTeal + Neon",
|
||||
description = "Allows for a human to be a leader, and give them special functions with it.",
|
||||
version = PLUGIN_VERSION,
|
||||
url = "https://antiteal.com"
|
||||
};
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
public void OnPluginStart()
|
||||
{
|
||||
BuildPath(Path_SM, g_sDataFile, sizeof(g_sDataFile), "configs/leader/leaders.ini");
|
||||
|
||||
CreateConVar("sm_leader_version", PLUGIN_VERSION, "Leader Version", FCVAR_SPONLY|FCVAR_REPLICATED|FCVAR_NOTIFY);
|
||||
LoadTranslations("common.phrases");
|
||||
LoadTranslations("core.phrases");
|
||||
@ -53,8 +64,10 @@ public void OnPluginStart()
|
||||
|
||||
RegConsoleCmd("sm_leader", Leader);
|
||||
RegConsoleCmd("sm_currentleader", CurrentLeader);
|
||||
RegConsoleCmd("sm_leaders", Leaders);
|
||||
RegConsoleCmd("sm_voteleader", VoteLeader);
|
||||
RegAdminCmd("sm_removeleader", RemoveTheLeader, ADMFLAG_GENERIC);
|
||||
RegAdminCmd("sm_reloadleaders", ReloadLeaders, ADMFLAG_GENERIC);
|
||||
|
||||
g_cVDefendVMT = CreateConVar("sm_leader_defend_vmt", "materials/sg/sgdefend.vmt", "The defend here .vmt file");
|
||||
g_cVDefendVTF = CreateConVar("sm_leader_defend_vtf", "materials/sg/sgdefend.vtf", "The defend here .vtf file");
|
||||
@ -113,8 +126,24 @@ public void OnPluginStart()
|
||||
AddCommandListener(Radio, "getout");
|
||||
AddCommandListener(Radio, "negative");
|
||||
AddCommandListener(Radio, "enemydown");
|
||||
|
||||
AddMultiTargetFilter("@leaders", Filter_Leaders, "Possible Leaders", false);
|
||||
AddMultiTargetFilter("@leader", Filter_Leader, "Current Leader", false);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
public void OnPluginEnd()
|
||||
{
|
||||
RemoveMultiTargetFilter("@leaders", Filter_Leaders);
|
||||
RemoveMultiTargetFilter("@leader", Filter_Leader);
|
||||
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
public void ConVarChange(ConVar CVar, const char[] oldVal, const char[] newVal)
|
||||
{
|
||||
g_cVDefendVTF.GetString(DefendVTF, sizeof(DefendVTF));
|
||||
@ -135,6 +164,9 @@ public void ConVarChange(ConVar CVar, const char[] oldVal, const char[] newVal)
|
||||
allowVoting = g_cVAllowVoting.BoolValue;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
public void OnMapStart()
|
||||
{
|
||||
AddFileToDownloadsTable(DefendVTF);
|
||||
@ -163,14 +195,22 @@ public void OnMapStart()
|
||||
{
|
||||
g_HaloSprite = PrecacheModel(buffer);
|
||||
}
|
||||
|
||||
UpdateLeaders();
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
public void CreateBeacon(int client)
|
||||
{
|
||||
g_BeaconSerial[client] = ++g_Serial_Gen;
|
||||
CreateTimer(1.0, Timer_Beacon, client | (g_Serial_Gen << 7), TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
public void KillBeacon(int client)
|
||||
{
|
||||
g_BeaconSerial[client] = 0;
|
||||
@ -181,6 +221,9 @@ public void KillBeacon(int client)
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
public void KillAllBeacons()
|
||||
{
|
||||
for (int i = 1; i <= MaxClients; i++)
|
||||
@ -189,6 +232,9 @@ public void KillAllBeacons()
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
public void PerformBeacon(int client)
|
||||
{
|
||||
if (g_BeaconSerial[client] == 0)
|
||||
@ -203,6 +249,9 @@ public void PerformBeacon(int client)
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
public Action Timer_Beacon(Handle timer, any value)
|
||||
{
|
||||
int client = value & 0x7f;
|
||||
@ -238,6 +287,9 @@ public Action Timer_Beacon(Handle timer, any value)
|
||||
return Plugin_Continue;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
public int AttachSprite(int client, char[] sprite) //https://forums.alliedmods.net/showpost.php?p=1880207&postcount=5
|
||||
{
|
||||
if(!IsPlayerAlive(client))
|
||||
@ -274,6 +326,9 @@ public int AttachSprite(int client, char[] sprite) //https://forums.alliedmods.n
|
||||
return Ent;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
public void RemoveSprite(int client)
|
||||
{
|
||||
if (spriteEntities[client] != -1 && IsValidEdict(spriteEntities[client]))
|
||||
@ -286,6 +341,9 @@ public void RemoveSprite(int client)
|
||||
spriteEntities[client] = -1;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
public void RemoveMarker(int client)
|
||||
{
|
||||
if (markerEntities[client] != -1 && IsValidEdict(markerEntities[client]))
|
||||
@ -298,6 +356,9 @@ public void RemoveMarker(int client)
|
||||
markerEntities[client] = -1;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
public void SetLeader(int client)
|
||||
{
|
||||
if(IsValidClient(leaderClient))
|
||||
@ -323,6 +384,9 @@ public void SetLeader(int client)
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
public void RemoveLeader(int client)
|
||||
{
|
||||
//CS_SetClientClanTag(client, leaderTag);
|
||||
@ -343,6 +407,9 @@ public void RemoveLeader(int client)
|
||||
beaconActive = false;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
public int SpawnMarker(int client, char[] sprite)
|
||||
{
|
||||
if(!IsPlayerAlive(client))
|
||||
@ -369,6 +436,9 @@ public int SpawnMarker(int client, char[] sprite)
|
||||
return Ent;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
public Action CurrentLeader(int client, int args)
|
||||
{
|
||||
if(IsValidClient(leaderClient))
|
||||
@ -383,6 +453,9 @@ public Action CurrentLeader(int client, int args)
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
public Action RemoveTheLeader(int client, int args)
|
||||
{
|
||||
if(IsValidClient(leaderClient))
|
||||
@ -398,6 +471,9 @@ public Action RemoveTheLeader(int client, int args)
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
public Action Leader(int client, int args)
|
||||
{
|
||||
if(CheckCommandAccess(client, "sm_admin", ADMFLAG_GENERIC, false))
|
||||
@ -415,6 +491,7 @@ public Action Leader(int client, int args)
|
||||
if(target == leaderClient)
|
||||
{
|
||||
LeaderMenu(target);
|
||||
return Plugin_Handled;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -424,10 +501,12 @@ public Action Leader(int client, int args)
|
||||
PrintToChatAll("[SM] %N is the new leader!", target);
|
||||
PrintToChat(target, "[SM] You are now the leader! Type !leader to open up the leader menu.");
|
||||
LeaderMenu(target);
|
||||
return Plugin_Handled;
|
||||
}
|
||||
else
|
||||
{
|
||||
ReplyToCommand(client, "[SM] The target has to be alive!");
|
||||
return Plugin_Handled;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -444,24 +523,201 @@ public Action Leader(int client, int args)
|
||||
PrintToChatAll("[SM] %N is the new leader!", client);
|
||||
PrintToChat(client, "[SM] You are now the leader! Type !leader to open up the leader menu.");
|
||||
LeaderMenu(client);
|
||||
return Plugin_Handled;
|
||||
}
|
||||
else
|
||||
{
|
||||
ReplyToCommand(client, "[SM] The target has to be alive!");
|
||||
return Plugin_Handled;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ReplyToCommand(client, "[SM] Usage: sm_leader <optional: client|#userid>");
|
||||
return Plugin_Handled;
|
||||
}
|
||||
}
|
||||
|
||||
if (IsPossibleLeader(client))
|
||||
{
|
||||
if(client == leaderClient)
|
||||
{
|
||||
LeaderMenu(client);
|
||||
return Plugin_Handled;
|
||||
}
|
||||
if(IsPlayerAlive(client))
|
||||
{
|
||||
SetLeader(client);
|
||||
PrintToChatAll("[SM] %N is the new leader!", client);
|
||||
PrintToChat(client, "[SM] You are now the leader! Type !leader to open up the leader menu.");
|
||||
LeaderMenu(client);
|
||||
return Plugin_Handled;
|
||||
}
|
||||
else
|
||||
{
|
||||
ReplyToCommand(client, "[SM] The target has to be alive!");
|
||||
return Plugin_Handled;
|
||||
}
|
||||
}
|
||||
if(client == leaderClient)
|
||||
{
|
||||
LeaderMenu(client);
|
||||
return Plugin_Handled;
|
||||
}
|
||||
return Plugin_Handled;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
public Action Leaders(int client, int args)
|
||||
{
|
||||
char aBuf[1024];
|
||||
char aBuf2[MAX_NAME_LENGTH];
|
||||
for(int i = 1; i <= MaxClients; i++)
|
||||
{
|
||||
if(IsClientInGame(i) && !IsFakeClient(i) && IsPossibleLeader(i))
|
||||
{
|
||||
GetClientName(i, aBuf2, sizeof(aBuf2));
|
||||
StrCat(aBuf, sizeof(aBuf), aBuf2);
|
||||
StrCat(aBuf, sizeof(aBuf), ", ");
|
||||
}
|
||||
}
|
||||
|
||||
if(strlen(aBuf))
|
||||
{
|
||||
aBuf[strlen(aBuf) - 2] = 0;
|
||||
ReplyToCommand(client, "[SM] Possible Leaders currently online: %s", aBuf);
|
||||
}
|
||||
else
|
||||
ReplyToCommand(client, "[SM] Possible Leaders currently online: none");
|
||||
|
||||
return Plugin_Handled;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
public Action ReloadLeaders(int client, int args)
|
||||
{
|
||||
UpdateLeaders();
|
||||
ReplyToCommand(client, "[SM] Reloaded Leader File");
|
||||
return Plugin_Handled;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
public bool Filter_Leaders(const char[] sPattern, Handle hClients)
|
||||
{
|
||||
for(int i = 1; i <= MaxClients; i++)
|
||||
{
|
||||
if(IsClientInGame(i) && !IsFakeClient(i) && IsPossibleLeader(i))
|
||||
{
|
||||
PushArrayCell(hClients, i);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
public bool Filter_Leader(const char[] sPattern, Handle hClients)
|
||||
{
|
||||
if(IsValidClient(leaderClient))
|
||||
{
|
||||
PushArrayCell(hClients, leaderClient);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
public bool IsPossibleLeader(int client)
|
||||
{
|
||||
char sAuth[64];
|
||||
GetClientAuthId(client, AuthId_Steam2, sAuth, sizeof(sAuth));
|
||||
|
||||
for (int i = 0; i <= (MAXLEADERS - 1); i++)
|
||||
{
|
||||
if (StrEqual(sAuth, g_sLeaderAuth[i]))
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
public void UpdateLeaders()
|
||||
{
|
||||
for (int i = 0; i <= (MAXLEADERS - 1); i++)
|
||||
g_sLeaderAuth[i] = "";
|
||||
|
||||
File fFile = OpenFile(g_sDataFile, "rt");
|
||||
if (!fFile)
|
||||
{
|
||||
SetFailState("Could not read from: %s", g_sDataFile);
|
||||
return;
|
||||
}
|
||||
|
||||
char sAuth[64];
|
||||
int iIndex = 0;
|
||||
|
||||
while (!fFile.EndOfFile())
|
||||
{
|
||||
char line[255];
|
||||
if (!fFile.ReadLine(line, sizeof(line)))
|
||||
break;
|
||||
|
||||
/* Trim comments */
|
||||
int len = strlen(line);
|
||||
bool ignoring = false;
|
||||
for (int i=0; i<len; i++)
|
||||
{
|
||||
if (ignoring)
|
||||
{
|
||||
if (line[i] == '"')
|
||||
ignoring = false;
|
||||
} else {
|
||||
if (line[i] == '"')
|
||||
{
|
||||
ignoring = true;
|
||||
} else if (line[i] == ';') {
|
||||
line[i] = '\0';
|
||||
break;
|
||||
} else if (line[i] == '/'
|
||||
&& i != len - 1
|
||||
&& line[i+1] == '/')
|
||||
{
|
||||
line[i] = '\0';
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
TrimString(line);
|
||||
|
||||
if ((line[0] == '/' && line[1] == '/')
|
||||
|| (line[0] == ';' || line[0] == '\0'))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
sAuth = "";
|
||||
BreakString(line, sAuth, sizeof(sAuth));
|
||||
g_sLeaderAuth[iIndex] = sAuth;
|
||||
iIndex ++;
|
||||
}
|
||||
fFile.Close();
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
public void LeaderMenu(int client)
|
||||
{
|
||||
Handle menu = CreateMenu(LeaderMenu_Handler);
|
||||
@ -498,6 +754,9 @@ public void LeaderMenu(int client)
|
||||
DisplayMenu(menu, client, MENU_TIME_FOREVER);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
public int LeaderMenu_Handler(Handle menu, MenuAction action, int client, int position)
|
||||
{
|
||||
if(leaderClient == client && IsValidClient(client))
|
||||
@ -534,6 +793,9 @@ public int LeaderMenu_Handler(Handle menu, MenuAction action, int client, int po
|
||||
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
public void ToggleBeacon(int client)
|
||||
{
|
||||
if(beaconActive)
|
||||
@ -544,6 +806,9 @@ public void ToggleBeacon(int client)
|
||||
PerformBeacon(client);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
public void SpriteMenu(int client)
|
||||
{
|
||||
Handle menu = CreateMenu(SpriteMenu_Handler);
|
||||
@ -580,6 +845,9 @@ public void SpriteMenu(int client)
|
||||
DisplayMenu(menu, client, MENU_TIME_FOREVER);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
public int SpriteMenu_Handler(Handle menu, MenuAction action, int client, int position)
|
||||
{
|
||||
if(leaderClient == client && IsValidClient(client))
|
||||
@ -624,6 +892,9 @@ public int SpriteMenu_Handler(Handle menu, MenuAction action, int client, int po
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
public void MarkerMenu(int client)
|
||||
{
|
||||
Handle menu = CreateMenu(MarkerMenu_Handler);
|
||||
@ -659,6 +930,9 @@ public void MarkerMenu(int client)
|
||||
DisplayMenu(menu, client, MENU_TIME_FOREVER);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
public int MarkerMenu_Handler(Handle menu, MenuAction action, int client, int position)
|
||||
{
|
||||
if(leaderClient == client && IsValidClient(client))
|
||||
@ -694,6 +968,10 @@ public int MarkerMenu_Handler(Handle menu, MenuAction action, int client, int po
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
public void OnClientDisconnect(int client)
|
||||
{
|
||||
if(client == leaderClient)
|
||||
@ -704,6 +982,9 @@ public void OnClientDisconnect(int client)
|
||||
voteCount[client] = 0;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
public Action Event_PlayerDeath(Handle event, char[] name, bool dontBroadcast)
|
||||
{
|
||||
int client = GetClientOfUserId(GetEventInt(event, "userid"));
|
||||
@ -715,6 +996,9 @@ public Action Event_PlayerDeath(Handle event, char[] name, bool dontBroadcast)
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
public void ZR_OnClientInfected(int client, int attacker, bool motherInfect, bool respawnOverride, bool respawn)
|
||||
{
|
||||
if(client == leaderClient)
|
||||
@ -724,6 +1008,9 @@ public void ZR_OnClientInfected(int client, int attacker, bool motherInfect, boo
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
public void OnMapEnd()
|
||||
{
|
||||
if(IsValidClient(leaderClient))
|
||||
@ -734,6 +1021,9 @@ public void OnMapEnd()
|
||||
KillAllBeacons();
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
bool IsValidClient(int client, bool nobots = true)
|
||||
{
|
||||
if (client <= 0 || client > MaxClients || !IsClientConnected(client) || (nobots && IsFakeClient(client)))
|
||||
@ -743,6 +1033,9 @@ bool IsValidClient(int client, bool nobots = true)
|
||||
return IsClientInGame(client);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
public Action Event_RoundEnd(Handle event, char[] name, bool dontBroadcast)
|
||||
{
|
||||
if(IsValidClient(leaderClient))
|
||||
@ -753,6 +1046,9 @@ public Action Event_RoundEnd(Handle event, char[] name, bool dontBroadcast)
|
||||
KillAllBeacons();
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
public Action HookPlayerChat(int client, char[] command, int args)
|
||||
{
|
||||
if(IsValidClient(client) && leaderClient == client)
|
||||
@ -773,6 +1069,9 @@ public Action HookPlayerChat(int client, char[] command, int args)
|
||||
return Plugin_Continue;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
public APLRes AskPluginLoad2(Handle myself, bool late, char[] error, int err_max)
|
||||
{
|
||||
CreateNative("Leader_CurrentLeader", Native_CurrentLeader);
|
||||
@ -780,16 +1079,25 @@ public APLRes AskPluginLoad2(Handle myself, bool late, char[] error, int err_max
|
||||
return APLRes_Success;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
public int Native_CurrentLeader(Handle plugin, int numParams)
|
||||
{
|
||||
return leaderClient;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
public int Native_SetLeader(Handle plugin, int numParams)
|
||||
{
|
||||
SetLeader(GetNativeCell(1));
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
public Action Radio(int client, const char[] command, int argc)
|
||||
{
|
||||
if(client == leaderClient)
|
||||
@ -821,6 +1129,9 @@ public Action Radio(int client, const char[] command, int argc)
|
||||
return Plugin_Continue;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
public void PrintRadio(int client, char[] text)
|
||||
{
|
||||
char szClantag[32], szMessage[64];
|
||||
@ -830,6 +1141,9 @@ public void PrintRadio(int client, char[] text)
|
||||
PrintToChatAll(szMessage);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
public Action VoteLeader(int client, int argc)
|
||||
{
|
||||
if(!allowVoting)
|
||||
@ -886,4 +1200,4 @@ public Action VoteLeader(int client, int argc)
|
||||
}
|
||||
|
||||
return Plugin_Handled;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user