From f084e4157006593aef344f7d423c7af0fe29d55d Mon Sep 17 00:00:00 2001 From: z411 Date: Thu, 8 Oct 2020 22:42:01 -0300 Subject: [PATCH] Make chat sounds disableable --- qcsrc/client/main.qc | 3 +++ qcsrc/common/replicate.qh | 3 +++ qcsrc/server/autocvars.qh | 12 ++++++------ qcsrc/server/client.qc | 13 ++++++------- qcsrc/server/client.qh | 3 ++- qcsrc/server/command/cmd.qc | 2 +- qcsrc/server/world.qc | 9 +++++---- 7 files changed, 26 insertions(+), 19 deletions(-) diff --git a/qcsrc/client/main.qc b/qcsrc/client/main.qc index 74bb88ca9..f10cf8fcf 100644 --- a/qcsrc/client/main.qc +++ b/qcsrc/client/main.qc @@ -95,6 +95,9 @@ void CSQC_Init() registercvar("cl_weapon_switch_fallback_to_impulse", "1"); registercvar("cl_allow_uidranking", "1"); + + // z411 + registercvar("cl_chat_sounds", "1"); if(autocvar_cl_lockview) cvar_set("cl_lockview", "0"); diff --git a/qcsrc/common/replicate.qh b/qcsrc/common/replicate.qh index 304cf389e..17e01ca57 100644 --- a/qcsrc/common/replicate.qh +++ b/qcsrc/common/replicate.qh @@ -10,6 +10,7 @@ float cvar_cl_autotaunt; float cvar_cl_clippedspectating; int cvar_cl_gunalign; + bool cvar_cl_chat_sounds; float cvar_cl_handicap; float cvar_cl_jetpack_jump; float cvar_cl_movement_track_canjump; @@ -28,6 +29,7 @@ #elif defined(SVQC) .float cvar_cl_handicap; .int cvar_cl_gunalign; + .bool cvar_cl_chat_sounds; .float cvar_cl_clippedspectating; .float cvar_cl_autoscreenshot; .float cvar_cl_jetpack_jump; @@ -66,6 +68,7 @@ REPLICATE(cvar_cl_autoscreenshot, int, "cl_autoscreenshot"); REPLICATE(cvar_cl_autotaunt, float, "cl_autotaunt"); REPLICATE(cvar_cl_clippedspectating, bool, "cl_clippedspectating"); REPLICATE(cvar_cl_gunalign, int, "cl_gunalign"); +REPLICATE(cvar_cl_chat_sounds, bool, "cl_chat_sounds"); REPLICATE(cvar_cl_handicap, float, "cl_handicap"); REPLICATE(cvar_cl_jetpack_jump, bool, "cl_jetpack_jump"); REPLICATE(cvar_cl_movement_track_canjump, bool, "cl_movement_track_canjump"); diff --git a/qcsrc/server/autocvars.qh b/qcsrc/server/autocvars.qh index f2482b9db..87aae71e3 100644 --- a/qcsrc/server/autocvars.qh +++ b/qcsrc/server/autocvars.qh @@ -125,12 +125,12 @@ bool autocvar_g_chat_tellprivacy; bool autocvar_g_forced_respawn; string autocvar_g_forced_team_otherwise; // TODO: Move to teamplay.qc -bool autocvar_g_chat_sounds; // z411 -string autocvar_g_chat_sounds_list; // z411 -float autocvar_g_chat_sounds_flood; // z411 -bool autocvar_g_jingle_end; // z411 -string autocvar_g_jingle_end_list; // z411 -float autocvar_g_jingle_end_volume; // z411 +bool autocvar_sv_chat_sounds; // z411 +string autocvar_sv_chat_sounds_list; // z411 +float autocvar_sv_chat_sounds_flood; // z411 +bool autocvar_sv_jingle_end; // z411 +string autocvar_sv_jingle_end_list; // z411 +float autocvar_sv_jingle_end_volume; // z411 #define autocvar_g_friendlyfire cvar("g_friendlyfire") #define autocvar_g_friendlyfire_virtual cvar("g_friendlyfire_virtual") diff --git a/qcsrc/server/client.qc b/qcsrc/server/client.qc index 80c0a7ea3..f04023547 100644 --- a/qcsrc/server/client.qc +++ b/qcsrc/server/client.qc @@ -3204,18 +3204,17 @@ int Say(entity source, int teamsay, entity privatesay, string msgin, bool floodc bool play_chatsound(entity source, string msgin) { - if(autocvar_g_chat_sounds) { + if(autocvar_sv_chat_sounds && CS(source).cvar_cl_chat_sounds) { var .float flood_sound = floodcontrol_chatsound; - //bprintf("%d < %d", source.(flood_sound), time - autocvar_g_chat_sounds_flood); - - if (source.(flood_sound) < time - autocvar_g_chat_sounds_flood) { + if (source.(flood_sound) < time - autocvar_sv_chat_sounds_flood) { string rawmsg; rawmsg = strreplace("\n", " ", msgin); - //bprintf("msg is %s and list is %s\n", rawmsg, autocvar_g_chat_sounds_list); - if (findinlist_abbrev(rawmsg, autocvar_g_chat_sounds_list)) { - play2all(strcat("sound/chat/", rawmsg, ".ogg")); + if (findinlist_abbrev(rawmsg, autocvar_sv_chat_sounds_list)) { + string sndname = strcat("sound/chat/", rawmsg, ".ogg"); + + FOREACH_CLIENT(IS_REAL_CLIENT(it) && CS(it).cvar_cl_chat_sounds, play2(it, sndname)); source.(flood_sound) = time; return true; diff --git a/qcsrc/server/client.qh b/qcsrc/server/client.qh index b7b346e68..c6c69380c 100644 --- a/qcsrc/server/client.qh +++ b/qcsrc/server/client.qh @@ -29,7 +29,7 @@ .string playerskin; void ClientState_attach(entity this); -void play_chatsound(entity source, string msgin); +bool play_chatsound(entity source, string msgin); IntrusiveList g_players; STATIC_INIT(g_players) { g_players = IL_NEW(); } @@ -155,6 +155,7 @@ CLASS(Client, Object) ATTRIB(Client, cvar_cl_pokenade_type, string, this.cvar_cl_pokenade_type); ATTRIB(Client, cvar_cl_spawn_near_teammate, bool, this.cvar_cl_spawn_near_teammate); ATTRIB(Client, cvar_cl_gunalign, int, this.cvar_cl_gunalign); + ATTRIB(Client, cvar_cl_chat_sounds, bool, this.cvar_cl_chat_sounds); ATTRIB(Client, cvar_cl_handicap, float, this.cvar_cl_handicap); ATTRIB(Client, cvar_cl_clippedspectating, bool, this.cvar_cl_clippedspectating); ATTRIB(Client, cvar_cl_autoscreenshot, int, this.cvar_cl_autoscreenshot); diff --git a/qcsrc/server/command/cmd.qc b/qcsrc/server/command/cmd.qc index cb838a433..b1d568ba1 100644 --- a/qcsrc/server/command/cmd.qc +++ b/qcsrc/server/command/cmd.qc @@ -683,7 +683,7 @@ void ClientCommand_sounds(entity caller, int request) { case CMD_REQUEST_COMMAND: { - sprint(caller, strcat("Available sounds: \n\n", autocvar_g_chat_sounds_list, "\n")); + sprint(caller, strcat("Available sounds: \n\n", autocvar_sv_chat_sounds_list, "\n")); return; // never fall through to usage } diff --git a/qcsrc/server/world.qc b/qcsrc/server/world.qc index 9f3409558..e0181c92c 100644 --- a/qcsrc/server/world.qc +++ b/qcsrc/server/world.qc @@ -414,7 +414,8 @@ void cvar_changes_init() BADPREFIX("sv_timeout_"); BADPREFIX("sv_vote_"); BADPREFIX("timelimit_"); - BADPREFIX("g_jingle_"); + BADPREFIX("sv_chat_"); + BADPREFIX("sv_jingle_"); // allowed changes to server admins (please sync this to server.cfg) // vi commands: @@ -1628,12 +1629,12 @@ void NextLevel() target_music_kill(); // z411 - if(autocvar_g_jingle_end) { + if(autocvar_sv_jingle_end) { int jingles_len = 0; string jingles[32]; jingles[0] = ""; - FOREACH_WORD(autocvar_g_jingle_end_list, it, + FOREACH_WORD(autocvar_sv_jingle_end_list, it, { jingles[jingles_len] = it; jingles_len++; @@ -1645,7 +1646,7 @@ void NextLevel() FOREACH_CLIENT(IS_REAL_CLIENT(it), { stuffcmd(it, "cd stop\n"); - _sound(it, CH_INFO, strcat("jingle/", jingles[song_to_play], ".ogg"), VOL_BASE * autocvar_g_jingle_end_volume, ATTEN_NORM); + _sound(it, CH_INFO, strcat("jingle/", jingles[song_to_play], ".ogg"), VOL_BASE * autocvar_sv_jingle_end_volume, ATTEN_NORM); }); } } -- 2.39.2