This is an automated email from the git hooks/post-receive script. smcv pushed a commit to annotated tag 1.42d in repository iortcw.
commit 90b7055f066136ff9f61d45109d446d499d282bd Author: Zack Middleton <zturtle...@gmail.com> Date: Sun Jul 26 20:07:38 2015 -0500 SP: Fix server time when loading or quick-loading save game This fixes being unable to jump and NPCs non-functional until sv.time catches up with save game's server time. I think (only) sv.time should be set to the server time from the save game. sv.time is used for snapshot and frame time. svs.time is used for network stuff and is not reset on map change. --- SP/code/server/sv_ccmds.c | 8 +++++--- SP/code/server/sv_init.c | 27 +++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/SP/code/server/sv_ccmds.c b/SP/code/server/sv_ccmds.c index 4030229..ab67154 100644 --- a/SP/code/server/sv_ccmds.c +++ b/SP/code/server/sv_ccmds.c @@ -164,7 +164,6 @@ static void SV_Map_f( void ) { char mapname[MAX_QPATH]; qboolean killBots, cheat, buildScript; char expanded[MAX_QPATH]; - int savegameTime = -1; map = Cmd_Argv( 1 ); if ( !map ) { @@ -183,6 +182,7 @@ static void SV_Map_f( void ) { char savemap[MAX_QPATH]; byte *buffer; int size, csize; + //int savegameTime; if ( !( strstr( map, "save/" ) == map ) ) { Com_sprintf( savemap, sizeof( savemap ), "save/%s", map ); @@ -227,11 +227,13 @@ static void SV_Map_f( void ) { Q_strncpyz( smapname, savemap, sizeof( smapname ) ); map = smapname; +#if 0 // cannot set before SV_SpawnServer clears sv.time savegameTime = *( int * )( buffer + sizeof( int ) + MAX_QPATH ); if ( savegameTime >= 0 ) { - svs.time = savegameTime; + sv.time = savegameTime; } +#endif Hunk_FreeTempMemory( buffer ); } else { @@ -386,7 +388,7 @@ static void SV_MapRestart_f( void ) { savegameTime = *( int * )( buffer + sizeof( int ) + MAX_QPATH ); if ( savegameTime >= 0 ) { - svs.time = savegameTime; + sv.time = savegameTime; } Hunk_FreeTempMemory( buffer ); diff --git a/SP/code/server/sv_init.c b/SP/code/server/sv_init.c index cddcb8f..2caf953 100644 --- a/SP/code/server/sv_init.c +++ b/SP/code/server/sv_init.c @@ -782,6 +782,33 @@ void SV_SpawnServer( char *server, qboolean killBots ) { // wipe the entire per-level structure SV_ClearServer(); + // Ridah, check for loading a saved game + if ( Cvar_VariableIntegerValue( "savegame_loading" ) ) { + // open the current savegame, and find out what the time is, everything else we can ignore + char *savemap = "save/current.svg"; + byte *buffer; + int size, savegameTime; + + size = FS_ReadFile( savemap, NULL ); + if ( size < 0 ) { + Com_Printf( "Can't find savegame %s\n", savemap ); + return; + } + + //buffer = Hunk_AllocateTempMemory(size); + FS_ReadFile( savemap, (void **)&buffer ); + + // the mapname is at the very start of the savegame file + savegameTime = *( int * )( buffer + sizeof( int ) + MAX_QPATH ); + + if ( savegameTime >= 0 ) { + sv.time = savegameTime; + } + + Hunk_FreeTempMemory( buffer ); + } + // done. + // allocate empty config strings for ( i = 0 ; i < MAX_CONFIGSTRINGS ; i++ ) { sv.configstrings[i] = CopyString( "" ); -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/iortcw.git _______________________________________________ Pkg-games-commits mailing list Pkg-games-commits@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-games-commits