fix a glitch and add sm_randomvip for admins
This commit is contained in:
parent
9ed4c43ced
commit
5d458538ba
@ -7,6 +7,7 @@
|
||||
#include <zombiereloaded>
|
||||
|
||||
int g_iVIPClient = -1;
|
||||
int g_islay = 1;
|
||||
bool g_bmotherInfect = false;
|
||||
|
||||
public Plugin myinfo =
|
||||
@ -26,6 +27,7 @@ public void OnPluginStart()
|
||||
HookEvent("player_team", OnPlayerTeam);
|
||||
|
||||
RegConsoleCmd("sm_currentvip", WhoIsVIP);
|
||||
RegAdminCmd("sm_randomvip", PerformAdminVIPSelection, ADMFLAG_GENERIC, "Randomly chooses another alive humans as VIP");
|
||||
}
|
||||
|
||||
public Action WhoIsVIP(int client, int args)
|
||||
@ -70,7 +72,7 @@ public Action SelectVIP(Handle timer)
|
||||
|
||||
public Action SlayHumans(Handle timer)
|
||||
{
|
||||
PerformCTSlay();
|
||||
PerformCTSlay(g_islay);
|
||||
}
|
||||
|
||||
public void PerformVIPSelection(bool reselect)
|
||||
@ -99,6 +101,38 @@ public void PerformVIPSelection(bool reselect)
|
||||
}
|
||||
}
|
||||
|
||||
public Action PerformAdminVIPSelection(int client, int args)
|
||||
{
|
||||
if(g_iVIPClient == -1)
|
||||
{
|
||||
CReplyToCommand(client, "{purple}VIP Mode:{red} You can't choose a VIP yet.");
|
||||
return Plugin_Handled;
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
g_iVIPClient = -1;
|
||||
|
||||
int PotentialVIPCount;
|
||||
int PotentialVIPClient[64];
|
||||
|
||||
for (int player = 1; player <= MaxClients; player++)
|
||||
{
|
||||
if (IsClientInGame(player) && IsPlayerAlive(player) && ZR_IsClientHuman(player))
|
||||
{
|
||||
PotentialVIPClient[PotentialVIPCount] = player;
|
||||
PotentialVIPCount++;
|
||||
}
|
||||
}
|
||||
g_iVIPClient = PotentialVIPClient[GetRandomInt(0, PotentialVIPCount - 1)];
|
||||
|
||||
CPrintToChatAll("{purple}VIP Mode:{red} %N is the new VIP! Protect him.", g_iVIPClient);
|
||||
|
||||
CReplyToCommand(client, "{purple}VIP Mode:{red} You have randomly chosen another VIP.");
|
||||
return Plugin_Handled;
|
||||
}
|
||||
}
|
||||
|
||||
public Action OnPlayerDeath(Event event, const char[] name, bool dontBroadcast)
|
||||
{
|
||||
int client = GetClientOfUserId(GetEventInt(event, "userid"));
|
||||
@ -110,9 +144,9 @@ public Action OnPlayerDeath(Event event, const char[] name, bool dontBroadcast)
|
||||
CPrintToChatAll("{purple}VIP Mode:{red} The VIP died! It's over.");
|
||||
CPrintToChatAll("{purple}VIP Mode:{red} The VIP died! It's over.");
|
||||
CPrintToChatAll("{purple}VIP Mode:{red} The VIP died! It's over.");
|
||||
}
|
||||
|
||||
CreateTimer(2.0, SlayHumans, _, TIMER_FLAG_NO_MAPCHANGE);
|
||||
CreateTimer(2.0, SlayHumans, _, TIMER_FLAG_NO_MAPCHANGE);
|
||||
}
|
||||
}
|
||||
|
||||
public void OnClientDisconnect(int client)
|
||||
@ -149,13 +183,13 @@ public void RequestFrame_Callback(int iPacked)
|
||||
PerformVIPSelection(true);
|
||||
}
|
||||
|
||||
public void PerformCTSlay()
|
||||
public void PerformCTSlay(int slay)
|
||||
{
|
||||
for (int player = 1; player <= MaxClients; player++)
|
||||
for (g_islay = 1; g_islay <= MaxClients; g_islay++)
|
||||
{
|
||||
if (IsClientInGame(player) && IsPlayerAlive(player) && ZR_IsClientHuman(player))
|
||||
if (IsClientInGame(g_islay) && IsPlayerAlive(g_islay) && ZR_IsClientHuman(g_islay))
|
||||
{
|
||||
ForcePlayerSuicide(player);
|
||||
ForcePlayerSuicide(g_islay);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user