diff --git a/StopSound/scripting/StopSound.sp b/StopSound/scripting/StopSound.sp index 8fca4e7f..a133aa50 100644 --- a/StopSound/scripting/StopSound.sp +++ b/StopSound/scripting/StopSound.sp @@ -7,8 +7,9 @@ #include <cstrike> #include <clientprefs> #include <multicolors> +#include <CSSFixes> -#define PLUGIN_VERSION "2.1.0" +#define PLUGIN_VERSION "3.0" #define MAX_MAPMUSIC_ENTITIES 2048 bool g_bStopWeaponSounds[MAXPLAYERS+1] = { false, ... }; @@ -53,17 +54,15 @@ public void OnPluginStart() // Detect game and hook appropriate tempent. AddTempEntHook("Shotgun Shot", CSS_Hook_ShotgunShot); - // Ambient sounds - //AddAmbientSoundHook(Hook_AmbientSound); - // Map music will be caught here HookEvent("round_end", Event_RoundEnd); HookEvent("player_spawn", Event_PlayerSpawn); CreateConVar("sm_stopsound_version", PLUGIN_VERSION, "Toggle Weapon Sounds", FCVAR_NOTIFY|FCVAR_DONTRECORD|FCVAR_REPLICATED); RegConsoleCmd("sm_stopsound", Command_StopSound, "Toggle hearing weapon sounds"); - //RegConsoleCmd("sm_stopmusic", Command_StopMusic, "Toggle hearing map music"); - //RegConsoleCmd("sm_music", Command_StopMusic, "Toggle hearing map music"); + RegConsoleCmd("sm_sound", Command_StopSound, "Toggle hearing weapon sounds"); + RegConsoleCmd("sm_stopmusic", Command_StopMusic, "Toggle hearing map music"); + RegConsoleCmd("sm_music", Command_StopMusic, "Toggle hearing map music"); // Cookies g_hCookieStopSound = RegClientCookie("weaponsound_blocked", "Are weapon sounds enabled", CookieAccess_Protected); @@ -119,9 +118,6 @@ public void OnPluginEnd() // Remove tempent hook RemoveTempEntHook("Shotgun Shot", CSS_Hook_ShotgunShot); - // Remove ambient sound hook - //RemoveAmbientSoundHook(Hook_AmbientSound); - // Find ReloadEffect UserMsg ReloadEffect = GetUserMessageId("ReloadEffect"); @@ -235,7 +231,7 @@ public void OnClientCookiesCached(int client) // Map Music cookie GetClientCookie(client, g_hCookieStopMapMusic, sBuffer, sizeof(sBuffer)); - if(sBuffer[0] != '\0' && false) + if(sBuffer[0] != '\0') { g_bStopMapMusic[client] = true; g_bStopMapMusicHooked = true; @@ -643,11 +639,8 @@ public void OnReloadEffect(DataPack pack) EndMessage(); } -public Action Hook_AmbientSound(char sample[PLATFORM_MAX_PATH], int &entity, float &volume, int &level, int &pitch, float pos[3], int &flags, float &delay) +public Action OnBroadcastSound(int entity, char sample[PLATFORM_MAX_PATH], int clients[MAXPLAYERS], int &numClients) { - if(!g_bStopMapMusicHooked) - return Plugin_Continue; - // Music if(sample[0] != '#') return Plugin_Continue; @@ -657,26 +650,25 @@ public Action Hook_AmbientSound(char sample[PLATFORM_MAX_PATH], int &entity, flo g_MapMusic.SetString(sEntity, sample, true); + if(!g_bStopMapMusicHooked) + return Plugin_Continue; + // Check which clients need to be excluded. - int[] newClients = new int[MaxClients]; - int newTotal = 0; - bool bEmitNew = false; - - for(int i = 1; i <= MaxClients; i++) + int newClients = 0; + for(int i = 0; i < numClients; i++) { - if(!IsClientInGame(i)) - continue; - - if(!g_bStopMapMusic[i]) - newClients[newTotal++] = i; - else - bEmitNew = true; + int client = clients[i]; + if(!g_bStopMapMusic[client]) + { + clients[numClients] = clients[i]; + newClients++; + } } - if(bEmitNew && newTotal) + if(newClients != numClients) { - EmitSound(newClients, newTotal, sample, entity, SNDCHAN_STATIC, level, flags, volume, pitch); - return Plugin_Handled; + numClients = newClients; + return Plugin_Changed; } return Plugin_Continue; diff --git a/includes/CSSFixes.inc b/includes/CSSFixes.inc index 6fbe4714..be4c8ad6 100644 --- a/includes/CSSFixes.inc +++ b/includes/CSSFixes.inc @@ -5,6 +5,7 @@ forward void OnRunThinkFunctions(bool simulating); forward void OnRunThinkFunctionsPost(bool simulating); +forward Action OnBroadcastSound(int entity, char sample[PLATFORM_MAX_PATH], int clients[MAXPLAYERS], int &numClients); public Extension __ext_CSSFixes = {