diff --git a/engine/server/server.h b/engine/server/server.h index 68bb5cb8..674cffd9 100644 --- a/engine/server/server.h +++ b/engine/server/server.h @@ -43,10 +43,9 @@ extern int SV_UPDATE_BACKUP; #define SVF_MERGE_VISIBILITY BIT( 1 ) // we are do portal pass // mapvalid flags -#define MAP_IS_EXIST BIT( 0 ) -#define MAP_HAS_SPAWNPOINT BIT( 1 ) -#define MAP_HAS_LANDMARK BIT( 2 ) -#define MAP_INVALID_VERSION BIT( 3 ) +#define MAP_IS_EXIST BIT( 0 ) +#define MAP_HAS_LANDMARK BIT( 2 ) +#define MAP_INVALID_VERSION BIT( 3 ) #define SV_SPAWN_TIME 0.1 @@ -615,7 +614,7 @@ void SV_SetStringArrayMode( qboolean dynamic ); void SV_EmptyStringPool( void ); void SV_PrintStr64Stats_f( void ); sv_client_t *SV_ClientFromEdict( const edict_t *pEdict, qboolean spawned_only ); -uint SV_MapIsValid( const char *filename, const char *spawn_entity, const char *landmark_name ); +uint SV_MapIsValid( const char *filename, const char *landmark_name ); void SV_StartSound( edict_t *ent, int chan, const char *sample, float vol, float attn, int flags, int pitch ); edict_t *SV_FindGlobalEntity( string_t classname, string_t globalname ); qboolean SV_CreateStaticEntity( struct sizebuf_s *msg, int index ); diff --git a/engine/server/sv_cmds.c b/engine/server/sv_cmds.c index 323e9276..47be5c26 100644 --- a/engine/server/sv_cmds.c +++ b/engine/server/sv_cmds.c @@ -169,17 +169,11 @@ SV_ValidateMap check map for typically errors ================== */ -static qboolean SV_ValidateMap( const char *pMapName, qboolean check_spawn ) +static qboolean SV_ValidateMap( const char *pMapName ) { - char *spawn_entity; int flags; - // determine spawn entity classname - if( !check_spawn || (int)sv_maxclients.value <= 1 ) - spawn_entity = GI->sp_entity; - else spawn_entity = GI->mp_entity; - - flags = SV_MapIsValid( pMapName, spawn_entity, NULL ); + flags = SV_MapIsValid( pMapName, NULL ); if( FBitSet( flags, MAP_INVALID_VERSION )) { @@ -193,12 +187,6 @@ static qboolean SV_ValidateMap( const char *pMapName, qboolean check_spawn ) return false; } - if( check_spawn && !FBitSet( flags, MAP_HAS_SPAWNPOINT )) - { - Con_Printf( S_ERROR "map %s doesn't have a valid spawnpoint\n", pMapName ); - return false; - } - return true; } @@ -224,7 +212,7 @@ static void SV_Map_f( void ) Q_strncpy( mapname, Cmd_Argv( 1 ), sizeof( mapname )); COM_StripExtension( mapname ); - if( !SV_ValidateMap( mapname, true )) + if( !SV_ValidateMap( mapname )) return; Cvar_DirectSet( &sv_hostmap, mapname ); @@ -296,7 +284,7 @@ static void SV_MapBackground_f( void ) Q_strncpy( mapname, Cmd_Argv( 1 ), sizeof( mapname )); COM_StripExtension( mapname ); - if( !SV_ValidateMap( mapname, false )) + if( !SV_ValidateMap( mapname )) return; // background map is always run as singleplayer @@ -346,7 +334,7 @@ static void SV_NextMap_f( void ) Cvar_DirectSet( &sv_hostmap, nextmap ); // found current point, check for valid - if( SV_ValidateMap( nextmap, true )) + if( SV_ValidateMap( nextmap )) { // found and valid COM_LoadLevel( nextmap, false ); diff --git a/engine/server/sv_game.c b/engine/server/sv_game.c index 13e170de..4187ad01 100644 --- a/engine/server/sv_game.c +++ b/engine/server/sv_game.c @@ -777,7 +777,6 @@ void SV_QueueChangeLevel( const char *level, const char *landname ) { uint flags, smooth = false; char mapname[MAX_QPATH]; - char *spawn_entity; // hold mapname to other place Q_strncpy( mapname, level, sizeof( mapname )); @@ -786,12 +785,7 @@ void SV_QueueChangeLevel( const char *level, const char *landname ) if( COM_CheckString( landname )) smooth = true; - // determine spawn entity classname - if( svs.maxclients == 1 ) - spawn_entity = GI->sp_entity; - else spawn_entity = GI->mp_entity; - - flags = SV_MapIsValid( mapname, spawn_entity, landname ); + flags = SV_MapIsValid( mapname, landname ); if( FBitSet( flags, MAP_INVALID_VERSION )) { @@ -825,15 +819,6 @@ void SV_QueueChangeLevel( const char *level, const char *landname ) return; } - if( !smooth && !FBitSet( flags, MAP_HAS_SPAWNPOINT )) - { - if( sv_validate_changelevel.value ) - { - Con_Printf( S_ERROR "changelevel: %s doesn't have a valid spawnpoint. Ignored.\n", mapname ); - return; - } - } - // bad changelevel position invoke enables in one-way transition if( sv.framecount < 15 ) { @@ -972,7 +957,7 @@ SV_MapIsValid Validate map ============== */ -uint SV_MapIsValid( const char *filename, const char *spawn_entity, const char *landmark_name ) +uint SV_MapIsValid( const char *filename, const char *landmark_name ) { uint flags = 0; char *pfile; @@ -988,45 +973,27 @@ uint SV_MapIsValid( const char *filename, const char *spawn_entity, const char * need_landmark = COM_CheckString( landmark_name ); - // g-cont. in-dev mode we can entering on map even without "info_player_start" - if( !need_landmark && host_developer.value ) + if( !need_landmark ) { - // not transition Mem_Free( ents ); - // skip spawnpoint checks in devmode - return (flags|MAP_HAS_SPAWNPOINT); + return flags; } pfile = ents; while(( pfile = COM_ParseFile( pfile, token, sizeof( token ))) != NULL ) { - if( !Q_strcmp( token, "classname" )) - { - // check classname for spawn entity - pfile = COM_ParseFile( pfile, check_name, sizeof( check_name )); - if( !Q_strcmp( spawn_entity, check_name )) - { - SetBits( flags, MAP_HAS_SPAWNPOINT ); - - // we already find landmark, stop the parsing - if( need_landmark && FBitSet( flags, MAP_HAS_LANDMARK )) - break; - } - } - else if( need_landmark && !Q_strcmp( token, "targetname" )) + if( !Q_strcmp( token, "targetname" )) { // check targetname for landmark entity pfile = COM_ParseFile( pfile, check_name, sizeof( check_name )); if( !Q_strcmp( landmark_name, check_name )) { + // we found landmark, stop the parsing SetBits( flags, MAP_HAS_LANDMARK ); - - // we already find spawnpoint, stop the parsing - if( FBitSet( flags, MAP_HAS_SPAWNPOINT )) - break; + break; } } } @@ -3740,9 +3707,9 @@ vaild map must contain one info_player_deatchmatch */ int GAME_EXPORT pfnIsMapValid( char *filename ) { - uint flags = SV_MapIsValid( filename, GI->mp_entity, NULL ); + uint flags = SV_MapIsValid( filename, NULL ); - if( FBitSet( flags, MAP_IS_EXIST ) && FBitSet( flags, MAP_HAS_SPAWNPOINT )) + if( FBitSet( flags, MAP_IS_EXIST )) return true; return false; } diff --git a/engine/server/sv_save.c b/engine/server/sv_save.c index a766d186..63ffe4d8 100644 --- a/engine/server/sv_save.c +++ b/engine/server/sv_save.c @@ -2110,7 +2110,7 @@ qboolean SV_LoadGame( const char *pPath ) if( validload ) { // now check for map problems - flags = SV_MapIsValid( gameHeader.mapName, GI->sp_entity, NULL ); + flags = SV_MapIsValid( gameHeader.mapName, NULL ); if( FBitSet( flags, MAP_INVALID_VERSION )) { @@ -2386,7 +2386,7 @@ int GAME_EXPORT SV_GetSaveComment( const char *savename, char *comment ) uint flags; // now check for map problems - flags = SV_MapIsValid( mapName, GI->sp_entity, NULL ); + flags = SV_MapIsValid( mapName, NULL ); if( FBitSet( flags, MAP_INVALID_VERSION )) {