diff --git a/Source/Client/VGUI.c b/Source/Client/VGUI.c index d872f9fd..d8f3c87f 100755 --- a/Source/Client/VGUI.c +++ b/Source/Client/VGUI.c @@ -76,30 +76,28 @@ Initialize all there is */ void CSQC_VGUI_Init( void ) { string sTemp; + int iMOTDLength; + filestream fmMapDescr; // First load the MESSAGE OF THE DAY // TODO: Move this to the server and put strings into infokeys - filestream fmMOTD = fopen( "motd.txt", FILE_READ ); - for ( int i = 0; i < 25; i++ ) { - sTemp = fgets( fmMOTD ); - if not ( sTemp ) { - break; - } - sMOTDString[ i ] = sTemp; + + iMOTDLength = stof( serverkey( "motdlength" ) ); + for ( int i = 0; i < iMOTDLength; i++ ) { + sMOTDString[ i ] = serverkey( sprintf( "motdline%i", i ) ); } - fclose( fmMOTD ); // Now load the MAP DESCRIPTION - fmMOTD = fopen( sprintf( "maps/%s.txt", mapname ), FILE_READ ); - if ( fmMOTD != -1 ) { + fmMapDescr = fopen( sprintf( "maps/%s.txt", mapname ), FILE_READ ); + if ( fmMapDescr != -1 ) { for ( int i = 0; i < 35; i++ ) { - sTemp = fgets( fmMOTD ); + sTemp = fgets( fmMapDescr ); if not ( sTemp ) { break; } sMapString[ i ] = sTemp; } - fclose( fmMOTD ); + fclose( fmMapDescr ); } // We start on the MOTD, always diff --git a/Source/FreeCS-CE.prj b/Source/FreeCS-CE.prj index b8ccffcd..73b8c46a 100644 --- a/Source/FreeCS-CE.prj +++ b/Source/FreeCS-CE.prj @@ -60,7 +60,7 @@ - + @@ -72,7 +72,7 @@ - + @@ -114,18 +114,19 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + + diff --git a/Source/Server/Footsteps.c b/Source/Server/Footsteps.c index aadf5afc..8f689284 100755 --- a/Source/Server/Footsteps.c +++ b/Source/Server/Footsteps.c @@ -36,11 +36,15 @@ void Footsteps_Update( void ) { return; } + if ( self.movement_x < 200 || self.flags & FL_CROUCHING ) { + return; + } + vStep_x = fabs( self.velocity_x ); vStep_y = fabs( self.velocity_y ); fForce = ( vStep_x + vStep_y ); - fDelay = clamp( 0.1, 1 / ( fForce / 100 ), 1 ); + fDelay = clamp( 0.1, 1 / ( fForce / 90 ), 1 ); traceline( self.origin + self.view_ofs, self.origin + '0 0 -48', FALSE, self ); diff --git a/Source/Server/Main.c b/Source/Server/Main.c index f6348006..b14209ba 100755 --- a/Source/Server/Main.c +++ b/Source/Server/Main.c @@ -52,7 +52,7 @@ void SV_ParseClientCommand( string sCommand ) { } return; } else if ( argv( 0 ) == "say_team" ) { - localcmd( sprintf( "echo %s: %s\n", self.netname, argv( 1 ) ) ); + localcmd( sprintf( "echo [TEAM %d] %s: %s\n", self.team, self.netname, argv( 1 ) ) ); for ( entity eFind = world; ( eFind = find( eFind, classname, "player" ) ); ) { if ( eFind.team == self.team ) { SV_SendChat( self, argv( 1 ), eFind, 1 ); @@ -125,6 +125,7 @@ It's the map entity, literally ================= */ void worldspawn( void ) { + int iMOTDLines = 0; // Let's load materials.txt because someone thought this was the best idea string sTemp; filestream fileMaterial = fopen( "sound/materials.txt", FILE_READ ); @@ -140,6 +141,19 @@ void worldspawn( void ) { fclose( fileMaterial ); } + // The message of the day. + filestream fmMOTD = fopen( "motd.txt", FILE_READ ); + for ( int i = 0; i < 25; i++ ) { + sTemp = fgets( fmMOTD ); + if not ( sTemp ) { + break; + } + localcmd( sprintf( "serverinfo motdline%i %s\n", iMOTDLines, sTemp ) ); + iMOTDLines++; + } + localcmd( sprintf( "serverinfo motdlength %i\n", iMOTDLines ) ); + fclose( fmMOTD ); + for ( int i = 1; i < CS_WEAPON_COUNT; i++ ) { precache_model( sWeaponModels[ i ] ); } diff --git a/Source/Server/Player.c b/Source/Server/Player.c index 21c4da66..d0527468 100755 --- a/Source/Server/Player.c +++ b/Source/Server/Player.c @@ -324,7 +324,7 @@ void PlayerPostThink( void ) { } if ( self.fFallVelocity > 200 ) { - self.velocity = '0 0 0'; + self.velocity *= 0.25; } self.fFallVelocity = 0; } diff --git a/freecs/csprogs.dat b/freecs/csprogs.dat index c2a4941a..13bad44a 100644 Binary files a/freecs/csprogs.dat and b/freecs/csprogs.dat differ diff --git a/freecs/progs.dat b/freecs/progs.dat index 31deecf4..f6f8d562 100644 Binary files a/freecs/progs.dat and b/freecs/progs.dat differ