From: FruitieX Date: Thu, 26 May 2011 00:52:53 +0000 (+0300) Subject: require a distance of 48 qu above ground before jump anim plays by itself (ie. not... X-Git-Tag: xonotic-v0.6.0~40^2~76^2~20 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=1a060151d3b4b3aa7fd866a001a37a414dccc26c;p=xonotic%2Fxonotic-data.pk3dir.git require a distance of 48 qu above ground before jump anim plays by itself (ie. not by +jump). This fixes the horrible jittering glitch when walking down stairs/ramps! :) --- diff --git a/defaultXonotic.cfg b/defaultXonotic.cfg index 0781bfddb..59c2af75e 100644 --- a/defaultXonotic.cfg +++ b/defaultXonotic.cfg @@ -386,6 +386,7 @@ set sv_doublejump 0 "allow Quake 2-style double jumps" set sv_jumpspeedcap_min "" "lower bound on the baseline velocity of a jump; final velocity will be >= (jumpheight * min + jumpheight)" set sv_jumpspeedcap_max "" "upper bound on the baseline velocity of a jump; final velocity will be <= (jumpheight * max + jumpheight)" set sv_jumpspeedcap_max_disable_on_ramps 0 "disable upper baseline velocity bound on ramps to preserve the old rampjump style" +set sv_player_jumpanim_minfall 48 "minimum distance player has to have below their feet before the jump animation will be activated (only when falling, +jump will play anim instantly)" seta sv_precacheplayermodels 1 seta sv_precacheweapons 0 diff --git a/qcsrc/server/autocvars.qh b/qcsrc/server/autocvars.qh index 36b41896c..50e46f337 100644 --- a/qcsrc/server/autocvars.qh +++ b/qcsrc/server/autocvars.qh @@ -1185,6 +1185,7 @@ string autocvar_sv_player_headsize; string autocvar_sv_player_maxs; string autocvar_sv_player_mins; string autocvar_sv_player_viewoffset; +float autocvar_sv_player_jumpanim_minfall; float autocvar_sv_precacheplayermodels; float autocvar_sv_precacheweapons; float autocvar_sv_q3acompat_machineshotgunswap; diff --git a/qcsrc/server/cl_player.qc b/qcsrc/server/cl_player.qc index 4de169221..2f46fc1a2 100644 --- a/qcsrc/server/cl_player.qc +++ b/qcsrc/server/cl_player.qc @@ -260,10 +260,23 @@ void player_anim (void) if (!(self.flags & FL_ONGROUND)) { if (self.crouch) - setanim(self, self.anim_duckjump, FALSE, TRUE, self.restart_jump); + { + traceline(self.origin + '0 0 1' * PL_CROUCH_MIN_z, self.origin + '0 0 1' * (PL_CROUCH_MIN_z - autocvar_sv_player_jumpanim_minfall), TRUE, self); + if(!trace_startsolid && trace_fraction == 1) + { + setanim(self, self.anim_duckjump, FALSE, TRUE, self.restart_jump); + self.restart_jump = FALSE; + } + } else - setanim(self, self.anim_jump, FALSE, TRUE, self.restart_jump); - self.restart_jump = FALSE; + { + traceline(self.origin + '0 0 1' * PL_MIN_z, self.origin + '0 0 1' * (PL_MIN_z - autocvar_sv_player_jumpanim_minfall), TRUE, self); + if(!trace_startsolid && trace_fraction == 1) + { + setanim(self, self.anim_jump, FALSE, TRUE, self.restart_jump); + self.restart_jump = FALSE; + } + } } else if (self.crouch) {