Raised This Month: $ Target: $400
 0% 

[ANY] SourceComms (0.9.266 - 22/11/2014)


  
 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
wtfaatp
Senior Member
Join Date: Jul 2010
Old 05-16-2014 , 20:56   Re: [ANY] SourceComms (0.9.260 - 02/11/2013)
Reply With Quote #11

Quote:
Originally Posted by 2NASTY4U View Post
If sourcemods own mute / gag system is used to mute / gag a player, it shows that the victim was muted / gaged by console. You have to use the right option in admin menu. Not mute / gag in player commands.

To get around this I edited the basecomm.sp and recompiled.. I didnt post what I did for a while cause I didnt know the exact rules on it but either way here is my edit... From my understanding I'm not aloud to post the .sp/.smx so no on accidentally overwrites the original......

Code:
#include <sourcemod>
#include <sdktools>
#undef REQUIRE_PLUGIN
#include <adminmenu>

#pragma semicolon 1

public Plugin:myinfo =
{
	name = "Basic Comm Control",
	author = "AlliedModders LLC, wtfaatp",
	description = "Provides methods of controlling communication.",
	version = "no menu 0.1",
	url = "http://www.sourcemod.net/"
};

new bool:g_Muted[MAXPLAYERS+1];		// Is the player muted?
new bool:g_Gagged[MAXPLAYERS+1];	// Is the player gagged?

new Handle:g_Cvar_Deadtalk = INVALID_HANDLE;	// Holds the handle for sm_deadtalk
new Handle:g_Cvar_Alltalk = INVALID_HANDLE;	// Holds the handle for sv_alltalk
new bool:g_Hooked = false;			// Tracks if we've hooked events for deadtalk

new Handle:hTopMenu = INVALID_HANDLE;

new g_GagTarget[MAXPLAYERS+1];

#include "basecomm/gag.sp"
#include "basecomm/natives.sp"
#include "basecomm/forwards.sp"

public APLRes:AskPluginLoad2(Handle:myself, bool:late, String:error[], err_max)
{
	CreateNative("BaseComm_IsClientGagged", Native_IsClientGagged);
	CreateNative("BaseComm_IsClientMuted",  Native_IsClientMuted);
	CreateNative("BaseComm_SetClientGag",   Native_SetClientGag);
	CreateNative("BaseComm_SetClientMute",  Native_SetClientMute);
	RegPluginLibrary("basecomm");
	
	return APLRes_Success;
}

public OnPluginStart()
{
	LoadTranslations("common.phrases");
	LoadTranslations("basecomm.phrases");
	
	g_Cvar_Deadtalk = CreateConVar("sm_deadtalk", "0", "Controls how dead communicate. 0 - Off. 1 - Dead players ignore teams. 2 - Dead players talk to living teammates.", 0, true, 0.0, true, 2.0);
	g_Cvar_Alltalk = FindConVar("sv_alltalk");
	
	RegAdminCmd("sm_mute", Command_Mute, ADMFLAG_CHAT, "sm_mute <player> - Removes a player's ability to use voice.");
	RegAdminCmd("sm_gag", Command_Gag, ADMFLAG_CHAT, "sm_gag <player> - Removes a player's ability to use chat.");
	RegAdminCmd("sm_silence", Command_Silence, ADMFLAG_CHAT, "sm_silence <player> - Removes a player's ability to use voice or chat.");
	
	RegAdminCmd("sm_unmute", Command_Unmute, ADMFLAG_CHAT, "sm_unmute <player> - Restores a player's ability to use voice.");
	RegAdminCmd("sm_ungag", Command_Ungag, ADMFLAG_CHAT, "sm_ungag <player> - Restores a player's ability to use chat.");
	RegAdminCmd("sm_unsilence", Command_Unsilence, ADMFLAG_CHAT, "sm_unsilence <player> - Restores a player's ability to use voice and chat.");	
	
	HookConVarChange(g_Cvar_Deadtalk, ConVarChange_Deadtalk);
	HookConVarChange(g_Cvar_Alltalk, ConVarChange_Alltalk);
	
	/* Account for late loading 
	new Handle:topmenu;
	if (LibraryExists("adminmenu") && ((topmenu = GetAdminTopMenu()) != INVALID_HANDLE))
	{
		OnAdminMenuReady(topmenu);
	}
	*/
	// Normally, OnClientSayCommand would be aqequate and more appropirate here, but it does
	// not catch attempted chat triggers, which we also want to be blocked if a player is gagged.
	AddCommandListener(Command_Say, "say");
	AddCommandListener(Command_Say, "say_team");
	
	new String:gameDir[64];
	GetGameFolderName(gameDir, sizeof(gameDir));
	if (StrEqual(gameDir, "insurgency", false))
	{
		AddCommandListener(Command_Say, "say2");
	}
	else if (StrEqual(gameDir, "nucleardawn", false))
	{
		AddCommandListener(Command_Say, "say_squad");
	}
}

public ConVarChange_Deadtalk(Handle:convar, const String:oldValue[], const String:newValue[])
{
	if (GetConVarInt(g_Cvar_Deadtalk))
	{
		HookEvent("player_spawn", Event_PlayerSpawn, EventHookMode_Post);
		HookEvent("player_death", Event_PlayerDeath, EventHookMode_Post);
		g_Hooked = true;
	}
	else if (g_Hooked)
	{
		UnhookEvent("player_spawn", Event_PlayerSpawn);
		UnhookEvent("player_death", Event_PlayerDeath);		
		g_Hooked = false;
	}
}


public bool:OnClientConnect(client, String:rejectmsg[], maxlen)
{
	g_Gagged[client] = false;
	g_Muted[client] = false;
	
	return true;
}

public Action:Command_Say(client, const String:command[], argc)
{
	if (client)
	{
		if (g_Gagged[client])
		{
			return Plugin_Stop;		
		}
	}
	
	return Plugin_Continue;
}

public ConVarChange_Alltalk(Handle:convar, const String:oldValue[], const String:newValue[])
{
	new mode = GetConVarInt(g_Cvar_Deadtalk);
	
	for (new i = 1; i <= MaxClients; i++)
	{
		if (!IsClientInGame(i))
		{
			continue;
		}
		
		if (g_Muted[i])
		{
			SetClientListeningFlags(i, VOICE_MUTED);
		}
		else if (GetConVarBool(g_Cvar_Alltalk))
		{
			SetClientListeningFlags(i, VOICE_NORMAL);
		}
		else if (!IsPlayerAlive(i))
		{
			if (mode == 1)
			{
				SetClientListeningFlags(i, VOICE_LISTENALL);
			}
			else if (mode == 2)
			{
				SetClientListeningFlags(i, VOICE_TEAM);
			}
		}
	}
}

public Event_PlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast)
{
	new client = GetClientOfUserId(GetEventInt(event, "userid"));
	
	if (!client)
	{
		return;	
	}
	
	if (g_Muted[client])
	{
		SetClientListeningFlags(client, VOICE_MUTED);
	}
	else
	{
		SetClientListeningFlags(client, VOICE_NORMAL);
	}
}

public Event_PlayerDeath(Handle:event, const String:name[], bool:dontBroadcast)
{
	new client = GetClientOfUserId(GetEventInt(event, "userid"));
	
	if (!client)
	{
		return;	
	}
	
	if (g_Muted[client])
	{
		SetClientListeningFlags(client, VOICE_MUTED);
		return;
	}
	
	if (GetConVarBool(g_Cvar_Alltalk))
	{
		SetClientListeningFlags(client, VOICE_NORMAL);
		return;
	}
	
	new mode = GetConVarInt(g_Cvar_Deadtalk);
	if (mode == 1)
	{
		SetClientListeningFlags(client, VOICE_LISTENALL);
	}
	else if (mode == 2)
	{
		SetClientListeningFlags(client, VOICE_TEAM);
	}
}

Just recompile locally.. No menu and no more having to tell admin not to use the basecomm commands..
__________________
SourceMod : 1.10.0 (Official) | MetaMod : 1.10.7 (Official)
Server : NFOservers - Windows
wtfaatp is offline
 



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 14:05.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode