diff options
Diffstat (limited to 'src/game')
-rw-r--r-- | src/game/g_cmds.c | 30 | ||||
-rw-r--r-- | src/game/g_local.h | 1 | ||||
-rw-r--r-- | src/game/g_main.c | 11 | ||||
-rw-r--r-- | src/game/g_maprotation.c | 2 |
4 files changed, 34 insertions, 10 deletions
diff --git a/src/game/g_cmds.c b/src/game/g_cmds.c index 77c6f82..21962ca 100644 --- a/src/game/g_cmds.c +++ b/src/game/g_cmds.c @@ -1476,8 +1476,8 @@ void Cmd_CallVote_f( gentity_t *ent ) if( G_MapExists( g_nextMap.string ) ) { trap_SendServerCommand( ent-g_entities, - va( "print \"%s: the next map is already set to '%s'\n\"", - cmd, g_nextMap.string ) ); + va( "print \"%s: the next map is already set to '%s' layout '%s'\n\"", + cmd, g_nextMap.string, g_nextLayout.string ) ); return; } @@ -1489,11 +1489,27 @@ void Cmd_CallVote_f( gentity_t *ent ) return; } - Com_sprintf( level.voteString[ team ], sizeof( level.voteString[ team ] ), - "set g_nextMap \"%s\"", arg ); - Com_sprintf( level.voteDisplayString[ team ], - sizeof( level.voteDisplayString[ team ] ), - "Set the ^1next^5 map to '%s'", arg ); + if( reason[0] ) + { + if( !G_LayoutExists( arg, reason ) ) + { + trap_SendServerCommand( ent-g_entities, + va( "print \"%s: 'layouts/%s/%s.dat' could not be found on the server\n\"", + cmd, arg, reason ) ); + return; + } + Com_sprintf( level.voteString[ team ], sizeof( level.voteString[ team ] ), + "set g_nextMap \"%s\"; set g_nextLayout \"%s\"", arg, reason ); + Com_sprintf( level.voteDisplayString[ team ], + sizeof( level.voteDisplayString[ team ] ), + "Set the ^1next^5 map to '%s' layout '%s'", arg, reason ); + } else { + Com_sprintf( level.voteString[ team ], sizeof( level.voteString[ team ] ), + "set g_nextMap \"%s\"", arg ); + Com_sprintf( level.voteDisplayString[ team ], + sizeof( level.voteDisplayString[ team ] ), + "Set the ^1next^5 map to '%s'", arg ); + } } else if( !Q_stricmp( vote, "draw" ) ) { diff --git a/src/game/g_local.h b/src/game/g_local.h index 2683ac5..7052fe4 100644 --- a/src/game/g_local.h +++ b/src/game/g_local.h @@ -1244,6 +1244,7 @@ extern vmCvar_t g_mapRotationNodes; extern vmCvar_t g_mapRotationStack; extern vmCvar_t g_mapLog; extern vmCvar_t g_nextMap; +extern vmCvar_t g_nextLayout; extern vmCvar_t g_initialMapRotation; extern vmCvar_t g_sayAreaRange; extern vmCvar_t g_debugVoices; diff --git a/src/game/g_main.c b/src/game/g_main.c index c644bdd..1899f2d 100644 --- a/src/game/g_main.c +++ b/src/game/g_main.c @@ -152,6 +152,7 @@ vmCvar_t g_mapRotationNodes; vmCvar_t g_mapRotationStack; vmCvar_t g_mapLog; vmCvar_t g_nextMap; +vmCvar_t g_nextLayout; vmCvar_t g_initialMapRotation; vmCvar_t g_debugVoices; vmCvar_t g_voiceChats; @@ -320,6 +321,7 @@ static cvarTable_t gameCvarTable[ ] = { &g_mapRotationStack, "g_mapRotationStack", "", CVAR_ROM, 0, qfalse }, { &g_mapLog, "g_mapLog", "", CVAR_ROM, 0, qfalse }, { &g_nextMap, "g_nextMap", "", 0 , 0, qtrue }, + { &g_nextLayout, "g_nextLayout", "", 0, 0, qtrue }, { &g_initialMapRotation, "g_initialMapRotation", "", CVAR_ARCHIVE, 0, qfalse }, { &g_debugVoices, "g_debugVoices", "0", 0, 0, qfalse }, { &g_voiceChats, "g_voiceChats", "1", CVAR_ARCHIVE, 0, qfalse }, @@ -1808,14 +1810,17 @@ void ExitLevel( void ) int i; gclient_t *cl; - if ( G_MapExists( g_nextMap.string ) ) - trap_SendConsoleCommand( EXEC_APPEND, va("map \"%s\"\n", g_nextMap.string ) ); - else if( G_MapRotationActive( ) ) + if ( G_MapExists( g_nextMap.string ) ) { + if ( G_LayoutExists( g_nextMap.string, g_nextLayout.string ) ) { + trap_SendConsoleCommand( EXEC_APPEND, va("map \"%s\" \"%s\"\n", g_nextMap.string, g_nextLayout.string ) ); + } else trap_SendConsoleCommand( EXEC_APPEND, va("map \"%s\"\n", g_nextMap.string ) ); + } else if( G_MapRotationActive( ) ) G_AdvanceMapRotation( 0 ); else trap_SendConsoleCommand( EXEC_APPEND, "map_restart\n" ); trap_Cvar_Set( "g_nextMap", "" ); + trap_Cvar_Set( "g_nextLayout", "" ); level.restarted = qtrue; level.changemap = NULL; diff --git a/src/game/g_maprotation.c b/src/game/g_maprotation.c index 05b9969..2de77f0 100644 --- a/src/game/g_maprotation.c +++ b/src/game/g_maprotation.c @@ -762,6 +762,8 @@ void G_PrintCurrentRotation( gentity_t *ent, const char *command ) if( g_nextMap.string[ 0 ] ) ADMBP( va( "^3the next map has been set to %s\n", g_nextMap.string ) ); + if( g_nextLayout.string[ 0 ] ) + ADMBP( va( "^3the next layout has been set to %s\n", g_nextLayout.string ) ); ADMBP_end( ); } |