diff --git a/Source/Client/Player.c b/Source/Client/Player.c index 877a628a..608a091e 100755 --- a/Source/Client/Player.c +++ b/Source/Client/Player.c @@ -144,10 +144,16 @@ void Player_Predict(void) { self.movetype = MOVETYPE_NOCLIP; } - for ( int i = self.pmove_frame + 1; i <= clientcommandframe; i++ ) { + if (self.pmove_flags & 0x80000) + self.flags |= FL_ONGROUND; + else + self.flags &~= FL_ONGROUND; + for ( int i = self.pmove_frame; i <= clientcommandframe; i++ ) { getinputstate( i ); runplayerphysics(); } + if (self.flags & FL_ONGROUND) + self.pmove_flags |= 0x80000; } pSeat->vPlayerOriginOld = pSeat->vPlayerOrigin; @@ -200,10 +206,20 @@ void Player_PreUpdate(void) { self.movetype = MOVETYPE_NOCLIP; } - for ( ; self.pmove_frame < servercommandframe; ) { - if ( getinputstate( ++self.pmove_frame )) + if (self.pmove_flags & 0x80000) + self.flags |= FL_ONGROUND; + else + self.flags &~= FL_ONGROUND; + //we want to predict an exact copy of the data in the new packet + for ( ; self.pmove_frame <= servercommandframe; self.pmove_frame++) { + if ( getinputstate( self.pmove_frame )) runplayerphysics(); } + + if (self.flags & FL_ONGROUND) + self.pmove_flags |= 0x80000; + + //we now have self.pmove_flags set properly... self.movetype = MOVETYPE_NONE; } @@ -212,5 +228,5 @@ void Player_PostUpdate(void) { self.netangles = self.angles; self.netvelocity = self.velocity; self.netpmove_flags = self.pmove_flags; - self.pmove_frame = servercommandframe; + self.pmove_frame = servercommandframe+1; }; \ No newline at end of file diff --git a/Source/Math.h b/Source/Math.h index 4b9f397b..f0f07387 100755 --- a/Source/Math.h +++ b/Source/Math.h @@ -68,12 +68,11 @@ float Math_CRandom( void ) { #ifdef SSQC void Damage_Apply( entity eTarget, entity eAttacker, int iDamage, vector vHitPos, int iSkipArmor ); #endif -.float health; void runplayerphysics(void) { //operates on self float fallvel = ( self.flags & FL_ONGROUND )?0:-self.velocity_z; runstandardplayerphysics(self); - if ( ( self.flags & FL_ONGROUND ) && ( self.health > 0 ) && ( fallvel > 100 )) { + if ( ( self.flags & FL_ONGROUND ) && self.movetype == MOVETYPE_WALK && ( fallvel > 100 )) { #ifdef SSQC if ( fallvel > 580 ) { float fFallDamage = (fallvel-580) * ( 200 / ( 1024 - 580 ) ); diff --git a/Source/Server/Footsteps.c b/Source/Server/Footsteps.c index 64f228fd..5efc48db 100755 --- a/Source/Server/Footsteps.c +++ b/Source/Server/Footsteps.c @@ -36,7 +36,7 @@ void Footsteps_Update( void ) { return; } - if ( vlen( self.movement ) < 150 || self.flags & FL_CROUCHING ) { + if ( vlen( self.velocity ) < 150 ) { return; } diff --git a/Source/Server/Main.c b/Source/Server/Main.c index 1d3beca3..785965ac 100755 --- a/Source/Server/Main.c +++ b/Source/Server/Main.c @@ -216,9 +216,6 @@ void worldspawn( void ) { // Let's make our version information clear localcmd( sprintf( "serverinfo fcs_ver %s\n", __DATE__ ) ); - // Tell em the next map in the list we should load. - localcmd( sprintf( "serverinfo maplist %s\n", iMapCycleCount ) ); - // All the important precaches for ( int i = 1; i < CS_WEAPON_COUNT; i++ ) { precache_model( sWeaponModels[ i ] ); diff --git a/freecs/csprogs.dat b/freecs/csprogs.dat index 71ccd6a2..7f26765b 100644 Binary files a/freecs/csprogs.dat and b/freecs/csprogs.dat differ diff --git a/freecs/ftesrv.cfg b/freecs/ftesrv.cfg index 9a4ee445..6ea7cf10 100755 --- a/freecs/ftesrv.cfg +++ b/freecs/ftesrv.cfg @@ -22,4 +22,6 @@ seta com_nogamedirnativecode "0" // for now, because people don't seem to be able to install things properly seta allow_download_maps "0" seta allow_download_models "0" -seta allow_download_sounds "0" \ No newline at end of file +seta allow_download_sounds "0" + +alias startmap_dm "map cs_assault" \ No newline at end of file diff --git a/freecs/menu.dat b/freecs/menu.dat index e7a0b648..ee8ec31b 100755 Binary files a/freecs/menu.dat and b/freecs/menu.dat differ diff --git a/freecs/progs.dat b/freecs/progs.dat index 86831470..54a8edf5 100644 Binary files a/freecs/progs.dat and b/freecs/progs.dat differ