diff --git a/engine/server/server.h b/engine/server/server.h index 0ca8ee4e..1f0ba150 100644 --- a/engine/server/server.h +++ b/engine/server/server.h @@ -660,7 +660,7 @@ void SV_SetLogAddress_f( void ); // // sv_save.c // -void SV_SaveGame( const char *pName ); +qboolean SV_SaveGame( const char *pName ); qboolean SV_LoadGame( const char *pName ); int SV_LoadGameState( char const *level ); void SV_ChangeLevel( qboolean loadfromsavedgame, const char *mapname, const char *start, qboolean background ); diff --git a/engine/server/sv_cmds.c b/engine/server/sv_cmds.c index b622d766..d4b733f2 100644 --- a/engine/server/sv_cmds.c +++ b/engine/server/sv_cmds.c @@ -439,18 +439,23 @@ SV_Save_f */ void SV_Save_f( void ) { + qboolean ret = false; + switch( Cmd_Argc( )) { case 1: - SV_SaveGame( "new" ); + ret = SV_SaveGame( "new" ); break; case 2: - SV_SaveGame( Cmd_Argv( 1 )); + ret = SV_SaveGame( Cmd_Argv( 1 )); break; default: Con_Printf( S_USAGE "save \n" ); break; } + + if( ret && CL_Active() && !FBitSet( host.features, ENGINE_QUAKE_COMPATIBLE )) + CL_HudMessage( "GAMESAVED" ); // defined in titles.txt } /* diff --git a/engine/server/sv_save.c b/engine/server/sv_save.c index 08645645..2c9da0cf 100644 --- a/engine/server/sv_save.c +++ b/engine/server/sv_save.c @@ -1693,7 +1693,7 @@ SaveGameSlot do a save game ============= */ -static int SaveGameSlot( const char *pSaveName, const char *pSaveComment ) +static qboolean SaveGameSlot( const char *pSaveName, const char *pSaveComment ) { char hlPath[MAX_QPATH]; char name[MAX_QPATH]; @@ -1704,7 +1704,7 @@ static int SaveGameSlot( const char *pSaveName, const char *pSaveComment ) file_t *pFile; pSaveData = SaveGameState( false ); - if( !pSaveData ) return 0; + if( !pSaveData ) return false; SaveFinish( pSaveData ); pSaveData = SaveInit( SAVE_HEAPSIZE, SAVE_HASHSTRINGS ); // re-init the buffer @@ -1735,7 +1735,7 @@ static int SaveGameSlot( const char *pSaveName, const char *pSaveComment ) { // something bad is happens SaveFinish( pSaveData ); - return 0; + return false; } // pending the preview image for savegame @@ -1759,7 +1759,7 @@ static int SaveGameSlot( const char *pSaveName, const char *pSaveComment ) SaveFinish( pSaveData ); FS_Close( pFile ); - return 1; + return true; } /* @@ -2169,17 +2169,17 @@ qboolean SV_LoadGame( const char *pPath ) SV_SaveGame ================== */ -void SV_SaveGame( const char *pName ) +qboolean SV_SaveGame( const char *pName ) { char comment[80]; - int result; string savename; if( !COM_CheckString( pName )) - return; + return false; // can we save at this point? - if( !IsValidSave( )) return; + if( !IsValidSave( )) + return false; if( !Q_stricmp( pName, "new" )) { @@ -2197,7 +2197,7 @@ void SV_SaveGame( const char *pName ) if( n == 1000 ) { Con_Printf( S_ERROR "no free slots for savegame\n" ); - return; + return false; } } else Q_strncpy( savename, pName, sizeof( savename )); @@ -2208,12 +2208,7 @@ void SV_SaveGame( const char *pName ) #endif // XASH_DEDICATED SaveBuildComment( comment, sizeof( comment )); - result = SaveGameSlot( savename, comment ); - -#if !XASH_DEDICATED - if( result && !FBitSet( host.features, ENGINE_QUAKE_COMPATIBLE )) - CL_HudMessage( "GAMESAVED" ); // defined in titles.txt -#endif // XASH_DEDICATED + return SaveGameSlot( savename, comment ); } /*