Leader2: add sm_forceleader
This commit is contained in:
parent
a3ec778ff7
commit
37eb0e301b
@ -5,6 +5,8 @@
|
||||
#include <cstrike>
|
||||
#include <zombiereloaded>
|
||||
#include <leader>
|
||||
#include <voice>
|
||||
#include <basecomm>
|
||||
|
||||
#define PLUGIN_VERSION "3.0"
|
||||
#define MAXLEADERS 64
|
||||
@ -36,6 +38,9 @@ int greyColor[4] = {128, 128, 128, 255};
|
||||
int g_BeaconSerial[MAXPLAYERS+1] = { 0, ... };
|
||||
int g_Serial_Gen = 0;
|
||||
|
||||
bool g_bForceLeader;
|
||||
bool g_bForceMute[MAXPLAYERS + 1] = { false, ...};
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
@ -68,6 +73,9 @@ public void OnPluginStart()
|
||||
RegConsoleCmd("sm_voteleader", VoteLeader);
|
||||
RegAdminCmd("sm_removeleader", RemoveTheLeader, ADMFLAG_GENERIC);
|
||||
RegAdminCmd("sm_reloadleaders", ReloadLeaders, ADMFLAG_GENERIC);
|
||||
RegAdminCmd("sm_forceleader", OnToggleForceLeader, ADMFLAG_GENERIC);
|
||||
|
||||
CreateTimer(0.5, CheckLeaderVoice, _, TIMER_REPEAT);
|
||||
|
||||
g_cVDefendVMT = CreateConVar("sm_leader_defend_vmt", "materials/nide/defend.vmt", "The defend here .vmt file");
|
||||
g_cVDefendVTF = CreateConVar("sm_leader_defend_vtf", "materials/nide/defend.vtf", "The defend here .vtf file");
|
||||
@ -121,7 +129,6 @@ public void OnPluginStart()
|
||||
AddMultiTargetFilter("@!leaders", Filter_NotLeaders, "Everyone but Possible Leaders", false);
|
||||
AddMultiTargetFilter("@leader", Filter_Leader, "Current Leader", false);
|
||||
AddMultiTargetFilter("@!leader", Filter_NotLeader, "Every one but the Current Leader", false);
|
||||
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
@ -356,6 +363,80 @@ public void RemoveMarker(int client)
|
||||
markerEntities[client] = -1;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
public Action OnToggleForceLeader(int client, int args)
|
||||
{
|
||||
if(leaderClient == -1)
|
||||
{
|
||||
ReplyToCommand(client, "[SM] Cannot use this when there is no leader at the moment");
|
||||
return Plugin_Handled;
|
||||
}
|
||||
|
||||
ToggleForceLeader(client);
|
||||
return Plugin_Handled;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
public void ToggleForceLeader(int client)
|
||||
{
|
||||
g_bForceLeader = !g_bForceLeader;
|
||||
|
||||
if(!g_bForceLeader)
|
||||
{
|
||||
ReplyToCommand(client, "[SM] Deactivated force mute when the Leader is speaking.");
|
||||
PrintToChatAll("[SM] %N deactivated force mute when the Leader is speaking!", client);
|
||||
}
|
||||
else
|
||||
{
|
||||
ReplyToCommand(client, "[SM] Activated force mute when the Leader is speaking.");
|
||||
PrintToChatAll("[SM] %N Activated force mute when the Leader is speaking!", client);
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
|
||||
public Action CheckLeaderVoice(Handle timer)
|
||||
{
|
||||
if(!g_bForceLeader)
|
||||
return Plugin_Continue;
|
||||
|
||||
if(IsClientTalking(leaderClient))
|
||||
{
|
||||
for(int i = 1; i <= MaxClients; i++)
|
||||
{
|
||||
if(IsClientInGame(i) && !BaseComm_IsClientMuted(i) && i != leaderClient)
|
||||
{
|
||||
BaseComm_SetClientMute(i, true);
|
||||
g_bForceMute[i] = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for(int i = 1; i <= MaxClients; i++)
|
||||
{
|
||||
if(g_bForceMute[i])
|
||||
{
|
||||
BaseComm_SetClientMute(i, false);
|
||||
g_bForceMute[i] = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for(int i = 1; i <= MaxClients; i++)
|
||||
{
|
||||
if(IsClientTalking(i) && g_bForceMute[i])
|
||||
PrintToChat(i, "[SM] You are muted right now cause the Leader is currently talking!");
|
||||
}
|
||||
|
||||
return Plugin_Continue;
|
||||
}
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
@ -405,6 +486,15 @@ public void RemoveLeader(int client)
|
||||
leaderClient = -1;
|
||||
markerActive = false;
|
||||
beaconActive = false;
|
||||
|
||||
for(int i = 1; i < MaxClients; i++)
|
||||
{
|
||||
if(g_bForceMute[i])
|
||||
{
|
||||
BaseComm_SetClientMute(i, false);
|
||||
g_bForceMute[i] = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
@ -511,7 +601,7 @@ 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;
|
||||
return Plugin_Handled;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -538,7 +628,7 @@ 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;
|
||||
return Plugin_Handled;
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -1019,6 +1109,9 @@ public void OnClientDisconnect(int client)
|
||||
RemoveLeader(client);
|
||||
}
|
||||
voteCount[client] = 0;
|
||||
|
||||
if(g_bForceMute[client])
|
||||
BaseComm_SetClientMute(client, false);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
@ -1082,6 +1175,9 @@ public Action Event_RoundEnd(Handle event, char[] name, bool dontBroadcast)
|
||||
RemoveLeader(leaderClient);
|
||||
}
|
||||
|
||||
if(g_bForceLeader)
|
||||
g_bForceLeader = false;
|
||||
|
||||
KillAllBeacons();
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user