From 0c2e796a9ca69e0044dadcf5707cc623a7fdb6c5 Mon Sep 17 00:00:00 2001 From: greenmarine Date: Sun, 10 May 2009 10:19:30 +0000 Subject: [PATCH] fix issue 19 git-svn-id: svn://svn.icculus.org/nexuiz/trunk@6698 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/qcsrc/server/cl_player.qc | 11 ++++++----- data/qcsrc/server/clientcommands.qc | 3 +++ data/qcsrc/server/defs.qh | 6 ++++++ data/qcsrc/server/g_world.qc | 4 ++++ 4 files changed, 19 insertions(+), 5 deletions(-) diff --git a/data/qcsrc/server/cl_player.qc b/data/qcsrc/server/cl_player.qc index 0207f9056..f63fceec1 100644 --- a/data/qcsrc/server/cl_player.qc +++ b/data/qcsrc/server/cl_player.qc @@ -665,9 +665,6 @@ void UpdateSelectedPlayer() self.last_selected_player = self.selected_player; } -.float floodcontrol_chat; -.float floodcontrol_chatteam; -.float floodcontrol_chattell; void Say(entity source, float teamsay, entity privatesay, string msgin, float floodcontrol) { string msgstr, colorstr, cmsgstr, namestr, fullmsgstr, sourcemsgstr, fullcmsgstr, sourcecmsgstr, privatemsgprefix; @@ -798,6 +795,9 @@ void Say(entity source, float teamsay, entity privatesay, string msgin, float fl msgstr = fullmsgstr; } } + + if (timeoutStatus == 2) //when game is paused, no flood protection + source.flood_field = flood = 0; if(flood == 2) { @@ -1100,8 +1100,6 @@ void PlayerSound(.string samplefield, float chan, float voicetype) GlobalSound(sample, chan, voicetype); } -.float floodcontrol_voice; -.float floodcontrol_voiceteam; void VoiceMessage(string type, string msg) { var .string sample; @@ -1137,6 +1135,9 @@ void VoiceMessage(string type, string msg) self.flood_field = max(time, self.flood_field) + flood_spv; else flood = 1; + + if (timeoutStatus == 2) //when game is paused, no flood protection + self.flood_field = flood = 0; if (msg != "") Say(self, ownteam, world, msg, 0); diff --git a/data/qcsrc/server/clientcommands.qc b/data/qcsrc/server/clientcommands.qc index 047ce40c7..88660ad2d 100644 --- a/data/qcsrc/server/clientcommands.qc +++ b/data/qcsrc/server/clientcommands.qc @@ -388,6 +388,9 @@ void SV_ParseClientCommand(string s) { else self.nickspamcount += 1; self.nickspamtime = time + cvar("g_nick_flood_penalty"); + + if (timeoutStatus == 2) //when game is paused, no flood protection + self.nickspamcount = self.nickspamtime = 0; } clientcommand(self,s); diff --git a/data/qcsrc/server/defs.qh b/data/qcsrc/server/defs.qh index a56158624..275ec7b0b 100644 --- a/data/qcsrc/server/defs.qh +++ b/data/qcsrc/server/defs.qh @@ -567,7 +567,13 @@ void Drag_MoveDrag(entity from, entity to); .vector prevorigin; +//flood fields .float nickspamtime; // time of last nick change .float nickspamcount; +.float floodcontrol_chat; +.float floodcontrol_chatteam; +.float floodcontrol_chattell; +.float floodcontrol_voice; +.float floodcontrol_voiceteam; .float stat_shotorg; // networked stat for trueaim HUD diff --git a/data/qcsrc/server/g_world.qc b/data/qcsrc/server/g_world.qc index 53d5049a1..783f75198 100644 --- a/data/qcsrc/server/g_world.qc +++ b/data/qcsrc/server/g_world.qc @@ -79,6 +79,10 @@ void timeoutHandler_Think() { else { //now pause the game: timeoutStatus = 2; + //reset all the flood variables + FOR_EACH_CLIENT(plr) { + plr.nickspamcount = plr.nickspamtime = plr.floodcontrol_chat = plr.floodcontrol_chatteam = plr.floodcontrol_chattell = plr.floodcontrol_voice = plr.floodcontrol_voiceteam = 0; + } cvar_set("slowmo", ftos(TIMEOUT_SLOWMO_VALUE)); //copy .v_angle to .lastV_angle for every player in order to fix their view during pause (see PlayerPreThink) FOR_EACH_REALPLAYER(plr) { -- 2.39.2