From 62cb9ae89b5e93168e16ffaa729defd3ae97d89c Mon Sep 17 00:00:00 2001 From: Oscar Linderholm Date: Thu, 20 Feb 2025 19:08:33 +0100 Subject: [PATCH 1/4] Restrict play in ruleset smack{down,drive} --- src/rulesets.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/rulesets.c b/src/rulesets.c index b5214f487..1b8c3fd0d 100644 --- a/src/rulesets.c +++ b/src/rulesets.c @@ -314,6 +314,7 @@ static void Rulesets_Smackdown(qbool enable) rulesetDef.restrictSetCalc = true; rulesetDef.restrictSetEval = true; rulesetDef.restrictSetEx = true; + rulesetDef.restrictSound = true; } else { for (i = 0; i < (sizeof(disabled_cvars) / sizeof(disabled_cvars[0])); i++) Cvar_SetFlags(disabled_cvars[i].var, Cvar_GetFlags(disabled_cvars[i].var) & ~CVAR_ROM); @@ -333,6 +334,7 @@ static void Rulesets_Smackdown(qbool enable) rulesetDef.restrictSetCalc = false; rulesetDef.restrictSetEval = false; rulesetDef.restrictSetEx = false; + rulesetDef.restrictSound = false; } } @@ -572,6 +574,7 @@ static void Rulesets_Smackdrive(qbool enable) rulesetDef.restrictSetCalc = true; rulesetDef.restrictSetEval = true; rulesetDef.restrictSetEx = true; + rulesetDef.restrictSound = true; } else { for (i = 0; i < (sizeof(disabled_cvars) / sizeof(disabled_cvars[0])); i++) Cvar_SetFlags(disabled_cvars[i].var, Cvar_GetFlags(disabled_cvars[i].var) & ~CVAR_ROM); @@ -591,6 +594,7 @@ static void Rulesets_Smackdrive(qbool enable) rulesetDef.restrictSetCalc = false; rulesetDef.restrictSetEval = false; rulesetDef.restrictSetEx = false; + rulesetDef.restrictSound = false; } } From adcf86d27defec6e93fe9bc70f2bb4bf26bac46f Mon Sep 17 00:00:00 2001 From: Oscar Linderholm Date: Thu, 20 Feb 2025 19:36:37 +0100 Subject: [PATCH 2/4] Rename RestrictSound to RestrictPlay --- src/rulesets.c | 18 +++++++++--------- src/rulesets.h | 2 +- src/snd_main.c | 3 ++- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/rulesets.c b/src/rulesets.c index 1b8c3fd0d..e572790a9 100644 --- a/src/rulesets.c +++ b/src/rulesets.c @@ -33,7 +33,7 @@ typedef struct rulesetDef_s { qbool restrictTriggers; qbool restrictPacket; qbool restrictParticles; - qbool restrictSound; + qbool restrictPlay; qbool restrictLogging; qbool restrictRollAngle; qbool restrictIPC; @@ -186,9 +186,9 @@ qbool Rulesets_RestrictTriggers(void) return rulesetDef.restrictTriggers; } -qbool Rulesets_RestrictSound(const char* name) +qbool Rulesets_RestrictPlay(const char* name) { - if (!rulesetDef.restrictSound) { + if (!rulesetDef.restrictPlay) { return false; } @@ -314,7 +314,7 @@ static void Rulesets_Smackdown(qbool enable) rulesetDef.restrictSetCalc = true; rulesetDef.restrictSetEval = true; rulesetDef.restrictSetEx = true; - rulesetDef.restrictSound = true; + rulesetDef.restrictPlay = true; } else { for (i = 0; i < (sizeof(disabled_cvars) / sizeof(disabled_cvars[0])); i++) Cvar_SetFlags(disabled_cvars[i].var, Cvar_GetFlags(disabled_cvars[i].var) & ~CVAR_ROM); @@ -334,7 +334,7 @@ static void Rulesets_Smackdown(qbool enable) rulesetDef.restrictSetCalc = false; rulesetDef.restrictSetEval = false; rulesetDef.restrictSetEx = false; - rulesetDef.restrictSound = false; + rulesetDef.restrictPlay = false; } } @@ -372,7 +372,7 @@ static void Rulesets_Qcon(qbool enable) rulesetDef.restrictTriggers = true; rulesetDef.restrictPacket = true; // packet command could have been exploited for external timers rulesetDef.restrictParticles = true; - rulesetDef.restrictSound = true; + rulesetDef.restrictPlay = true; rulesetDef.restrictLogging = true; rulesetDef.restrictRollAngle = true; rulesetDef.ruleset = rs_qcon; @@ -392,7 +392,7 @@ static void Rulesets_Qcon(qbool enable) rulesetDef.restrictTriggers = false; rulesetDef.restrictPacket = false; rulesetDef.restrictParticles = false; - rulesetDef.restrictSound = false; + rulesetDef.restrictPlay = false; rulesetDef.restrictLogging = false; rulesetDef.restrictRollAngle = false; rulesetDef.ruleset = rs_default; @@ -574,7 +574,7 @@ static void Rulesets_Smackdrive(qbool enable) rulesetDef.restrictSetCalc = true; rulesetDef.restrictSetEval = true; rulesetDef.restrictSetEx = true; - rulesetDef.restrictSound = true; + rulesetDef.restrictPlay = true; } else { for (i = 0; i < (sizeof(disabled_cvars) / sizeof(disabled_cvars[0])); i++) Cvar_SetFlags(disabled_cvars[i].var, Cvar_GetFlags(disabled_cvars[i].var) & ~CVAR_ROM); @@ -594,7 +594,7 @@ static void Rulesets_Smackdrive(qbool enable) rulesetDef.restrictSetCalc = false; rulesetDef.restrictSetEval = false; rulesetDef.restrictSetEx = false; - rulesetDef.restrictSound = false; + rulesetDef.restrictPlay = false; } } diff --git a/src/rulesets.h b/src/rulesets.h index 85743d816..f4608732c 100644 --- a/src/rulesets.h +++ b/src/rulesets.h @@ -61,7 +61,7 @@ qbool Rulesets_RestrictSetEval(void); qbool Rulesets_RestrictSetEx(void); qbool Rulesets_AllowNoShadows(void); qbool Rulesets_RestrictTCL(void); -qbool Rulesets_RestrictSound(const char* name); +qbool Rulesets_RestrictPlay(const char* name); int Rulesets_MaxSequentialWaitCommands(void); qbool Ruleset_BlockHudPicChange(void); qbool Ruleset_AllowPolygonOffset(entity_t* ent); diff --git a/src/snd_main.c b/src/snd_main.c index a9025b002..6a01851ab 100644 --- a/src/snd_main.c +++ b/src/snd_main.c @@ -996,7 +996,8 @@ static void S_Play_f (void) int entity = SELF_SOUND_ENTITY; // ezhfan: pnum+1 changed to SELF_SOUND to make sound not to disappear strlcpy (name, Cmd_Argv(i), sizeof(name)); - if (Rulesets_RestrictSound(name)) { + if (Rulesets_RestrictPlay(name)) { + Com_Printf("The use of play is not allowed during matches\n"); continue; } From 2cba1f236ed5c67c9080e91e10ce0c5ad86078fa Mon Sep 17 00:00:00 2001 From: Oscar Linderholm Date: Thu, 20 Feb 2025 19:38:04 +0100 Subject: [PATCH 3/4] Align RestrictPlay with the other Restrict functions --- src/rulesets.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/rulesets.c b/src/rulesets.c index e572790a9..aa1c027b5 100644 --- a/src/rulesets.c +++ b/src/rulesets.c @@ -192,6 +192,10 @@ qbool Rulesets_RestrictPlay(const char* name) return false; } + if (cls.state == ca_active && (cl.spectator || cls.demoplayback || cl.standby)) { + return false; + } + if (name == NULL || cbuf_current != &cbuf_svc) { return true; } From 68257b98c3d8e6cbfb203b6a35f3c248446e08c9 Mon Sep 17 00:00:00 2001 From: Oscar Linderholm Date: Sun, 23 Feb 2025 12:32:25 +0100 Subject: [PATCH 4/4] Restrict play in ruleset thunderdome --- src/rulesets.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/rulesets.c b/src/rulesets.c index aa1c027b5..7bbc47522 100644 --- a/src/rulesets.c +++ b/src/rulesets.c @@ -447,6 +447,7 @@ static void Rulesets_Thunderdome(qbool enable) rulesetDef.restrictSetCalc = true; rulesetDef.restrictSetEval = true; rulesetDef.restrictSetEx = true; + rulesetDef.restrictPlay = true; } else { for (i = 0; i < (sizeof(disabled_cvars) / sizeof(disabled_cvars[0])); i++) Cvar_SetFlags(disabled_cvars[i].var, Cvar_GetFlags(disabled_cvars[i].var) & ~CVAR_ROM); @@ -466,6 +467,7 @@ static void Rulesets_Thunderdome(qbool enable) rulesetDef.restrictSetCalc = false; rulesetDef.restrictSetEval = false; rulesetDef.restrictSetEx = false; + rulesetDef.restrictPlay = false; } } static void Rulesets_MTFL(qbool enable)