From c0fa84804457348de3da4c864921e363da4e47b9 Mon Sep 17 00:00:00 2001 From: Rudolf Polzer Date: Sat, 11 Dec 2010 20:37:43 +0100 Subject: [PATCH] g_balance_kill_antispam --- defaultXonotic.cfg | 3 ++- qcsrc/server/autocvars.qh | 1 + qcsrc/server/cl_client.qc | 15 ++++++++++++--- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/defaultXonotic.cfg b/defaultXonotic.cfg index f591fe31f9..bd41d3ffd1 100644 --- a/defaultXonotic.cfg +++ b/defaultXonotic.cfg @@ -1538,7 +1538,8 @@ sv_gameplayfix_q2airaccelerate 1 sv_gameplayfix_stepmultipletimes 1 // delay for "kill" to prevent abuse -set g_balance_kill_delay 5 +set g_balance_kill_delay 0 +set g_balance_kill_antispam 5 // this feature is currently buggy in the engine (it appears to PREVENT any dropping in lots of maps, leading to weirdly aligned entities, and in some cases even CAUSES them to drop through solid, like in facing worlds nex) sv_gameplayfix_droptofloorstartsolid 0 diff --git a/qcsrc/server/autocvars.qh b/qcsrc/server/autocvars.qh index eb344da93c..e5ca676065 100644 --- a/qcsrc/server/autocvars.qh +++ b/qcsrc/server/autocvars.qh @@ -382,6 +382,7 @@ float autocvar_g_balance_keyhunt_score_destroyed_ownfactor; float autocvar_g_balance_keyhunt_score_push; float autocvar_g_balance_keyhunt_throwvelocity; float autocvar_g_balance_kill_delay; +float autocvar_g_balance_kill_antispam; float autocvar_g_balance_laser_primary_animtime; float autocvar_g_balance_laser_primary_damage; float autocvar_g_balance_laser_primary_delay; diff --git a/qcsrc/server/cl_client.qc b/qcsrc/server/cl_client.qc index 0de9785d3a..84e7a310a6 100644 --- a/qcsrc/server/cl_client.qc +++ b/qcsrc/server/cl_client.qc @@ -1222,6 +1222,7 @@ Called when a client types 'kill' in the console ============= */ +.float clientkill_nexttime; void ClientKill_Now_TeamChange() { if(self.killindicator_teamchange == -1) @@ -1299,6 +1300,10 @@ void ClientKill_TeamChange (float targetteam) // 0 = don't change, -1 = auto, -2 if(g_race_qualifying) killtime = 0; + // flood control it + killtime = max(killtime, self.clientkill_nexttime - time); + self.clientkill_nexttime = time + killtime + autocvar_g_balance_kill_antispam; + self.killindicator_teamchange = targetteam; if(!self.killindicator) @@ -1338,10 +1343,14 @@ void ClientKill_TeamChange (float targetteam) // 0 = don't change, -1 = auto, -2 } if(self.killindicator) { - if(targetteam) - self.killindicator.colormod = TeamColor(targetteam); - else + if(targetteam == 0) // just die self.killindicator.colormod = '0 0 0'; + else if(targetteam == -1) // auto + self.killindicator.colormod = '0 1 0'; + else if(targetteam == -2) // spectate + self.killindicator.colormod = '0.5 0.5 0.5'; + else + self.killindicator.colormod = TeamColor(targetteam); } } -- 2.39.2