From 1d3c6e34c9c1a9b527e85ec5aea7409a6c0a8241 Mon Sep 17 00:00:00 2001 From: Diavolo Date: Fri, 9 Sep 2022 21:26:58 +0200 Subject: [PATCH] feature(chat): sv_disablechat dvar --- src/client/component/chat.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/client/component/chat.cpp b/src/client/component/chat.cpp index 55c2b06..40733c5 100644 --- a/src/client/component/chat.cpp +++ b/src/client/component/chat.cpp @@ -14,6 +14,8 @@ utils::hook::detour client_command_hook; using client_list = std::unordered_set; utils::concurrency::container mute_list; +const game::dvar_t* sv_disableChat; + void mute_player(const game::client_s* client) { const auto xuid = client->xuid; mute_list.access([&](client_list& clients) { clients.insert(xuid); }); @@ -40,6 +42,13 @@ void client_command_stub(const int client_number) { game::SV_Cmd_ArgvBuffer(0, buf, sizeof(buf)); if (utils::string::starts_with(buf, "say")) { + if (sv_disableChat->current.enabled) { + game::SV_GameSendServerCommand( + client_number, game::SV_CMD_CAN_IGNORE, + utils::string::va("%c \"Chat is disabled\"", 0x65)); + return; + } + const auto is_muted = mute_list.access([&](const client_list& clients) { return clients.contains(game::svs_clients[client_number].xuid); @@ -62,8 +71,10 @@ public: void post_unpack() override { client_command_hook.create(SELECT_VALUE(0x63DB70, 0x4AF770), client_command_stub); - add_chat_commands(); + + sv_disableChat = game::Dvar_RegisterBool( + "sv_disableChat", false, 0, "Disable chat messages from clients"); } private: