From 1a060151d3b4b3aa7fd866a001a37a414dccc26c Mon Sep 17 00:00:00 2001 From: FruitieX Date: Thu, 26 May 2011 03:52:53 +0300 Subject: [PATCH] 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! :) --- defaultXonotic.cfg | 1 + qcsrc/server/autocvars.qh | 1 + qcsrc/server/cl_player.qc | 19 ++++++++++++++++--- 3 files changed, 18 insertions(+), 3 deletions(-) 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) { -- 2.39.2