]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Add an option to disable player chatting completely Mario/no_chat
authorMario <mario.mario@y7mail.com>
Tue, 21 Jun 2022 04:56:19 +0000 (14:56 +1000)
committerMario <mario.mario@y7mail.com>
Tue, 21 Jun 2022 04:56:19 +0000 (14:56 +1000)
notifications.cfg
qcsrc/common/notifications/all.inc
qcsrc/server/chat.qc
qcsrc/server/chat.qh
xonotic-server.cfg

index afae1593f61610c61d4e0e4d3a6eb04249854cb1..62b8aacef6dc3bc70371947fa120abf2b970bbcc 100644 (file)
@@ -93,9 +93,10 @@ seta notification_ANNCE_VOTE_ACCEPT "2" "0 = disabled, 1 = enabled if gentle mod
 seta notification_ANNCE_VOTE_CALL "2" "0 = disabled, 1 = enabled if gentle mode is off, 2 = always enabled"
 seta notification_ANNCE_VOTE_FAIL "2" "0 = disabled, 1 = enabled if gentle mode is off, 2 = always enabled"
 
-// MSG_INFO notifications (count = 334):
+// MSG_INFO notifications (count = 335):
 seta notification_INFO_CA_JOIN_LATE "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_CA_LEAVE "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
+seta notification_INFO_CHAT_DISABLED "2" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_CHAT_NOSPECTATORS "2" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_COINTOSS "2" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_CONNECTING "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
@@ -746,4 +747,4 @@ seta notification_show_sprees_info "3" "Show spree information in MSG_INFO messa
 seta notification_show_sprees_info_newline "1" "Show attacker spree information for MSG_INFO messages on a separate line than the death notification itself"
 seta notification_show_sprees_info_specialonly "1" "Don't show attacker spree information in MSG_INFO messages if it isn't an achievement"
 
-// Notification counts (total = 839): MSG_ANNCE = 80, MSG_INFO = 334, MSG_CENTER = 241, MSG_MULTI = 156, MSG_CHOICE = 28
+// Notification counts (total = 840): MSG_ANNCE = 80, MSG_INFO = 335, MSG_CENTER = 241, MSG_MULTI = 156, MSG_CHOICE = 28
index 87398b11d222367c1aeafa752eecab84b02e3f0d..ca03509c6fff798c2a3fd842f6780ebe3f02d2db 100644 (file)
@@ -223,6 +223,7 @@ string multiteam_info_sprintf(string input, string teamname) { return ((input !=
     MSG_INFO_NOTIF_TEAM(NUM_TEAM_4, prefix##_PINK, prefix, defaultvalue, strnum, flnum, args, hudargs, multiteam_info_sprintf(icon, strtolower(STATIC_NAME_TEAM_4)), TCR(normal, type, 4), TCR(gentle, type, 4))
 
 // MSG_INFO_NOTIFICATIONS
+    MSG_INFO_NOTIF(CHAT_DISABLED,                           N_CHATCON,  0, 0, "", "",       "",     _("^F4NOTE: ^BGChat is currently disabled on this server"), "")
     MSG_INFO_NOTIF(CHAT_NOSPECTATORS,                       N_CHATCON,  0, 0, "", "",       "",     _("^F4NOTE: ^BGSpectator chat is not sent to players during the match"), "")
 
     MULTITEAM_INFO(CTF_CAPTURE,                             N_CONSOLE,  1, 0, "s1", "s1",                       "notify_%s_captured",       _("^BG%s^BG captured the ^TC^TT^BG flag"), "", FLAG)
index a73de2a1f6c58f2ed97e4303ae5179a7354b07db..1d52dd8ae210ba3721c58dad0b8748ce85c0c02f 100644 (file)
@@ -3,6 +3,7 @@
 #include <common/gamemodes/_mod.qh>
 #include <common/mapobjects/target/location.qh>
 #include <common/mapobjects/triggers.qh>
+#include <common/notifications/all.qh>
 #include <common/teams.qh>
 #include <common/util.qh>
 #include <common/weapons/weapon.qh>
  */
 int Say(entity source, int teamsay, entity privatesay, string msgin, bool floodcontrol)
 {
+       if(!autocvar_g_chat_allowed)
+       {
+               if(IS_REAL_CLIENT(source))
+                       Send_Notification(NOTIF_ONE_ONLY, source, MSG_INFO, INFO_CHAT_DISABLED);
+               return 0; // force a rejection (TODO: support magic ear map objects?)
+       }
+
        if (!teamsay && !privatesay && substring(msgin, 0, 1) == " ")
                msgin = substring(msgin, 1, -1); // work around DP say bug (say_team does not have this!)
 
index 500d757c02c0a80d82f07b1de0d7f08c35d015df..0d764a4248b91f91312350aaf3deb6832f8e726f 100644 (file)
@@ -1,5 +1,6 @@
 #pragma once
 
+bool autocvar_g_chat_allowed = true;
 float autocvar_g_chat_flood_burst;
 float autocvar_g_chat_flood_burst_team;
 float autocvar_g_chat_flood_burst_tell;
index 8593149805835749a9dc9848804a7113836a6f5b..52364f7d2c4f60e4b7eeab700363057d5436dbe1 100644 (file)
@@ -367,6 +367,7 @@ set sv_vote_gametype_options "dm tdm ca ctf" "identifiers of gamemodes on the vo
 set sv_vote_gametype_timeout 20 "how long the gametype vote screen lasts"
 set sv_vote_gametype_default_current 1 "Keep the current gametype if no one votes"
 
+set g_chat_allowed 1 "allow players to communicate via in-game chat"
 set g_chat_flood_spl 3 "normal chat: seconds between lines to not count as flooding"
 set g_chat_flood_lmax 2 "normal chat: maximum number of lines per chat message at once"
 set g_chat_flood_burst 2 "normal chat: allow bursts of so many chat lines"