From ed243910be23f14b194ac47e916a7993b5b2fd94 Mon Sep 17 00:00:00 2001 From: AJ Martinez Date: Sun, 31 Mar 2024 18:28:32 -0700 Subject: [PATCH 1/4] Add "gamestochat" cvar to Server Options --- src/cvars.cpp | 2 +- src/menus/options-server-1.c | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/cvars.cpp b/src/cvars.cpp index 4519bfe8e..f55dcd02b 100644 --- a/src/cvars.cpp +++ b/src/cvars.cpp @@ -1331,7 +1331,7 @@ consvar_t cv_chatwidth = Player("chatwidth", "150").min_max(64, 150); // old shit console chat. (mostly exists for stuff like terminal, not because I cared if anyone liked the old chat.) consvar_t cv_consolechat = Player("chatmode", "Yes").values({{0, "Yes"}, {2, "No"}}); -consvar_t cv_gamestochat = Player("gamestochat", "0").values(CV_Unsigned); +consvar_t cv_gamestochat = Player("gamestochat", "0").min_max(0, 99); void Mute_OnChange(void); consvar_t cv_mute = UnsavedNetVar("mute", "Off").on_off().onchange(Mute_OnChange); diff --git a/src/menus/options-server-1.c b/src/menus/options-server-1.c index 288fa3a47..2ed23cc20 100644 --- a/src/menus/options-server-1.c +++ b/src/menus/options-server-1.c @@ -71,6 +71,9 @@ menuitem_t OPTIONS_Server[] = {IT_STRING | IT_CVAR, "Pause Permissions", "Who is allowed to pause the game?", NULL, {.cvar = &cv_pause}, 0, 0}, + {IT_STRING | IT_CVAR, "Rounds Needed To Chat", "How many rounds players must complete before they can chat. Good vs. ban evaders.", + NULL, {.cvar = &cv_gamestochat}, 0, 0}, + {IT_HEADER, "Chat...", NULL, NULL, {NULL}, 0, 0}, From 1e2d9a6b97b0484289b07f30dbb6da0715e62245 Mon Sep 17 00:00:00 2001 From: AJ Martinez Date: Sun, 31 Mar 2024 18:29:54 -0700 Subject: [PATCH 2/4] Hey, wait, we literally have a Chat category --- src/menus/options-server-1.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/menus/options-server-1.c b/src/menus/options-server-1.c index 2ed23cc20..e489045c8 100644 --- a/src/menus/options-server-1.c +++ b/src/menus/options-server-1.c @@ -71,9 +71,6 @@ menuitem_t OPTIONS_Server[] = {IT_STRING | IT_CVAR, "Pause Permissions", "Who is allowed to pause the game?", NULL, {.cvar = &cv_pause}, 0, 0}, - {IT_STRING | IT_CVAR, "Rounds Needed To Chat", "How many rounds players must complete before they can chat. Good vs. ban evaders.", - NULL, {.cvar = &cv_gamestochat}, 0, 0}, - {IT_HEADER, "Chat...", NULL, NULL, {NULL}, 0, 0}, @@ -84,6 +81,9 @@ menuitem_t OPTIONS_Server[] = {IT_STRING | IT_CVAR, "Chat Spam Protection", "Prevent too many messages from a single player.", NULL, {.cvar = &cv_chatspamprotection}, 0, 0}, + {IT_STRING | IT_CVAR, "Rounds Needed To Chat", "How many rounds players must complete before they can chat. Good vs. ban evaders.", + NULL, {.cvar = &cv_gamestochat}, 0, 0}, + {IT_SPACE | IT_DYBIGSPACE, NULL, NULL, NULL, {NULL}, 0, 0}, From 44a0b5a00ddb647ac57821b77fdab1b9c7363981 Mon Sep 17 00:00:00 2001 From: AJ Martinez Date: Sun, 31 Mar 2024 21:42:32 -0700 Subject: [PATCH 3/4] Change participation criteria to count rounds --- src/k_serverstats.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/k_serverstats.c b/src/k_serverstats.c index 7ac610b0d..30b8fb640 100644 --- a/src/k_serverstats.c +++ b/src/k_serverstats.c @@ -282,7 +282,24 @@ void SV_BumpMatchStats(void) serverplayer_t *stat = SV_GetStatsByPlayerIndex(i); - if (!(players[i].pflags & PF_NOCONTEST)) + // It should never be advantageous to idle, only count rounds where the player accomplishes something. + // If you NO CONTESTed, assume no participation... + boolean participated = !(players[i].pflags & PF_NOCONTEST); + + if (gametyperules & GTR_CIRCUIT) + { + // ...unless you completed at least one lap... + if (players[i].laps > 1) + participated = true; + } + else if (gametyperules & GTR_BUMPERS) + { + // ...or scored at least 2 points. + if (players[i].roundscore > 1) + participated = true; + } + + if (participated) stat->finishedrounds++; } } \ No newline at end of file From 9768666ac501bdbd7ee73daf0fffab15aa0a1f86 Mon Sep 17 00:00:00 2001 From: AJ Martinez Date: Sun, 31 Mar 2024 21:59:10 -0700 Subject: [PATCH 4/4] Use GTR_POINTLIMIT for round-completion check --- src/k_serverstats.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/k_serverstats.c b/src/k_serverstats.c index 30b8fb640..4e5177d32 100644 --- a/src/k_serverstats.c +++ b/src/k_serverstats.c @@ -292,7 +292,7 @@ void SV_BumpMatchStats(void) if (players[i].laps > 1) participated = true; } - else if (gametyperules & GTR_BUMPERS) + else if (gametyperules & GTR_POINTLIMIT) { // ...or scored at least 2 points. if (players[i].roundscore > 1)