From 368ce066b39a34dbc7395e49da024260e9cd8ea1 Mon Sep 17 00:00:00 2001 From: savagex Date: Fri, 1 Dec 2006 18:09:41 +0000 Subject: [PATCH] add a nice patch from esteel to fix the rapid weapon switching "NexMG" exploit git-svn-id: svn://svn.icculus.org/nexuiz/trunk@1959 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/qcsrc/server/cl_weaponsystem.qc | 5 +++-- data/qcsrc/server/defs.qh | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/data/qcsrc/server/cl_weaponsystem.qc b/data/qcsrc/server/cl_weaponsystem.qc index 37e824423..3eda3a2a6 100644 --- a/data/qcsrc/server/cl_weaponsystem.qc +++ b/data/qcsrc/server/cl_weaponsystem.qc @@ -325,8 +325,8 @@ void(float windex, string wname, float hudammo) weapon_setup = self.weapon = windex; self.weaponname = wname; - // can fire immediately - self.attack_finished = time; + // might fire faster after switch + self.attack_finished = min(max(time, self.attack_finished_old + 1), self.attack_finished); }; // perform weapon to attack (weaponstate and attack_finished check is here) @@ -346,6 +346,7 @@ float(float secondary, float attacktime) weapon_prepareattack = if (self.weaponentity.state != WS_READY) return FALSE; self.weaponentity.state = WS_INUSE; + self.attack_finished_old = self.attack_finished; self.attack_finished = max(time, self.attack_finished + attacktime); return TRUE; }; diff --git a/data/qcsrc/server/defs.qh b/data/qcsrc/server/defs.qh index cc7308b73..c91b4aa4f 100644 --- a/data/qcsrc/server/defs.qh +++ b/data/qcsrc/server/defs.qh @@ -41,6 +41,7 @@ string newlines = "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"; .vector mangle; .float attack_finished; +.float attack_finished_old; .float pain_finished; //Added by Supajoe .float pain_frame; //" .float statdraintime; // record the one-second intervals between draining health and armour when they're over 100 -- 2.39.2