Leader2: add sm_forceleader
This commit is contained in:
		
							parent
							
								
									d4509b9a44
								
							
						
					
					
						commit
						1d5d014855
					
				@ -5,6 +5,8 @@
 | 
				
			|||||||
#include <cstrike>
 | 
					#include <cstrike>
 | 
				
			||||||
#include <zombiereloaded>
 | 
					#include <zombiereloaded>
 | 
				
			||||||
#include <leader>
 | 
					#include <leader>
 | 
				
			||||||
 | 
					#include <voice>
 | 
				
			||||||
 | 
					#include <basecomm>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define PLUGIN_VERSION "3.0"
 | 
					#define PLUGIN_VERSION "3.0"
 | 
				
			||||||
#define MAXLEADERS 64
 | 
					#define MAXLEADERS 64
 | 
				
			||||||
@ -36,6 +38,9 @@ int greyColor[4] = {128, 128, 128, 255};
 | 
				
			|||||||
int g_BeaconSerial[MAXPLAYERS+1] = { 0, ... };
 | 
					int g_BeaconSerial[MAXPLAYERS+1] = { 0, ... };
 | 
				
			||||||
int g_Serial_Gen = 0;
 | 
					int g_Serial_Gen = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool g_bForceLeader;
 | 
				
			||||||
 | 
					bool g_bForceMute[MAXPLAYERS + 1] = { false, ...};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//----------------------------------------------------------------------------------------------------
 | 
					//----------------------------------------------------------------------------------------------------
 | 
				
			||||||
// Purpose:
 | 
					// Purpose:
 | 
				
			||||||
//----------------------------------------------------------------------------------------------------
 | 
					//----------------------------------------------------------------------------------------------------
 | 
				
			||||||
@ -68,6 +73,9 @@ public void OnPluginStart()
 | 
				
			|||||||
	RegConsoleCmd("sm_voteleader", VoteLeader);
 | 
						RegConsoleCmd("sm_voteleader", VoteLeader);
 | 
				
			||||||
	RegAdminCmd("sm_removeleader", RemoveTheLeader, ADMFLAG_GENERIC);
 | 
						RegAdminCmd("sm_removeleader", RemoveTheLeader, ADMFLAG_GENERIC);
 | 
				
			||||||
	RegAdminCmd("sm_reloadleaders", ReloadLeaders, 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_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");
 | 
						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("@!leaders", Filter_NotLeaders, "Everyone but Possible Leaders", false);
 | 
				
			||||||
	AddMultiTargetFilter("@leader", Filter_Leader, "Current Leader", false);
 | 
						AddMultiTargetFilter("@leader", Filter_Leader, "Current Leader", false);
 | 
				
			||||||
	AddMultiTargetFilter("@!leader", Filter_NotLeader, "Every one but the 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;
 | 
						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:
 | 
					// Purpose:
 | 
				
			||||||
//----------------------------------------------------------------------------------------------------
 | 
					//----------------------------------------------------------------------------------------------------
 | 
				
			||||||
@ -405,6 +486,15 @@ public void RemoveLeader(int client)
 | 
				
			|||||||
	leaderClient = -1;
 | 
						leaderClient = -1;
 | 
				
			||||||
	markerActive = false;
 | 
						markerActive = false;
 | 
				
			||||||
	beaconActive = false;
 | 
						beaconActive = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for(int i = 1; i < MaxClients; i++)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							if(g_bForceMute[i])
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								BaseComm_SetClientMute(i, false);
 | 
				
			||||||
 | 
								g_bForceMute[i] = false;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//----------------------------------------------------------------------------------------------------
 | 
					//----------------------------------------------------------------------------------------------------
 | 
				
			||||||
@ -1019,6 +1109,9 @@ public void OnClientDisconnect(int client)
 | 
				
			|||||||
		RemoveLeader(client);
 | 
							RemoveLeader(client);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	voteCount[client] = 0;
 | 
						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);
 | 
							RemoveLeader(leaderClient);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if(g_bForceLeader)
 | 
				
			||||||
 | 
							g_bForceLeader = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	KillAllBeacons();
 | 
						KillAllBeacons();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user