From 5a4db34608dd6c65aa50dd18527672e3c6823775 Mon Sep 17 00:00:00 2001 From: div0 Date: Mon, 27 Mar 2006 23:37:09 +0000 Subject: [PATCH] Sorry, but this time the bunnyhopping issue should really be solved... applying some fixed amount of friction on LANDING. Please try test_bunny_vs_aircon (undo: test_bunny_vs_aircon_undo). The old attempt did not work because the time on the floor depends on sys_ticrate. Applying a modified friction when jumping does NOT work (works well for the timing, but causes strange movement for low ticrates), so an additional field was added. git-svn-id: svn://svn.icculus.org/nexuiz/trunk@1197 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/default.cfg | 7 +++---- data/qcsrc/server/gamec/cl_physics.c | 16 +++++++++------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/data/default.cfg b/data/default.cfg index 94f9034a7..49b6106c1 100644 --- a/data/default.cfg +++ b/data/default.cfg @@ -104,7 +104,7 @@ sv_accelerate 5.5 sv_friction 5 sv_maxspeed 400 sv_stepheight 34 -set sv_friction_factor_bunnyhopping 0 +set sv_friction_on_land 0 // factor of the speed which gets lost on landing seta sv_spectate 1 seta sv_defaultcharacter 0 seta sv_defaultplayermodel models/player/nexus.zym @@ -114,9 +114,8 @@ set net_messagetimeout 60 sv_jumpstep 1 // step up stairs while jumping, makes it easier to reach ledges // TODO accept or reject? Please test -- div0 -alias test_bunny_vs_aircon "sv_friction_factor_bunnyhopping 0.4; sv_maxairspeed 50" -alias test_bunny_vs_aircon_like15 "sv_friction_factor_bunnyhopping 1; sv_maxairspeed 50" -alias test_bunny_vs_aircon_undo "sv_friction_factor_bunnyhopping 0; sv_maxairspeed 25" +alias test_bunny_vs_aircon "sv_friction_on_land 0.2; sv_maxairspeed 50" +alias test_bunny_vs_aircon_undo "sv_friction_on_land 0; sv_maxairspeed 25" set g_navnodeedit 0 diff --git a/data/qcsrc/server/gamec/cl_physics.c b/data/qcsrc/server/gamec/cl_physics.c index 839f24559..7d5bb5e01 100644 --- a/data/qcsrc/server/gamec/cl_physics.c +++ b/data/qcsrc/server/gamec/cl_physics.c @@ -8,6 +8,7 @@ float sv_gravity; .entity ladder_entity; .float gravity; .float swamp_slowdown; +.float lastflags; void Nixnex_GiveCurrentWeapon(); void SV_PlayerPhysics() @@ -206,25 +207,25 @@ void SV_PlayerPhysics() } else if (self.flags & FL_ONGROUND) { - float friction; // walking makevectors(self.v_angle_y * '0 1 0'); wishvel = v_forward * self.movement_x + v_right * self.movement_y; - // friction - friction = sv_friction; - if ((self.flags & FL_JUMPRELEASED) && self.button2) - friction = friction * cvar("sv_friction_factor_bunnyhopping");//0.4 + if(!(self.lastflags & FL_ONGROUND)) + { + self.velocity = self.velocity * (1 - cvar("sv_friction_on_land")); + } if (self.velocity_x || self.velocity_y) + if (!(self.flags & FL_JUMPRELEASED) || !self.button2) { v = self.velocity; v_z = 0; f = vlen(v); if (f < sv_stopspeed) - f = 1 - frametime * (sv_stopspeed / f) * friction; + f = 1 - frametime * (sv_stopspeed / f) * sv_friction; else - f = 1 - frametime * friction; + f = 1 - frametime * sv_friction; if (f > 0) self.velocity = self.velocity * f; else @@ -273,4 +274,5 @@ void SV_PlayerPhysics() self.velocity = self.velocity + wishdir * min(f, airaccel * frametime * wishspeed); } } + self.lastflags = self.flags; }; -- 2.39.2