diff options
Diffstat (limited to 'Northstar.CustomServers/mod/scripts/vscripts/mp/_changemap.nut')
-rw-r--r-- | Northstar.CustomServers/mod/scripts/vscripts/mp/_changemap.nut | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/Northstar.CustomServers/mod/scripts/vscripts/mp/_changemap.nut b/Northstar.CustomServers/mod/scripts/vscripts/mp/_changemap.nut index 95d7492ed..94fda4d70 100644 --- a/Northstar.CustomServers/mod/scripts/vscripts/mp/_changemap.nut +++ b/Northstar.CustomServers/mod/scripts/vscripts/mp/_changemap.nut @@ -7,6 +7,9 @@ void function CodeCallback_MatchIsOver() else SetUIVar( level, "putPlayerInMatchmakingAfterDelay", false ) + AddCreditsForXPGained() + PopulatePostgameData() + if ( ShouldReturnToLobby() ) { SetCurrentPlaylist( "private_match" ) // needed for private lobby to load @@ -22,3 +25,73 @@ void function CodeCallback_MatchIsOver() GameRules_ChangeMap( "mp_lobby", GAMETYPE ) #endif // #if DEV } + +void function PopulatePostgameData() +{ + // something's busted here because this isn't showing automatically on match end, ag + foreach ( entity player in GetPlayerArray() ) + { + int teams = GetCurrentPlaylistVarInt( "max_teams", 2 ) + bool standardTeams = teams != 2 + + int enumModeIndex = 0 + int enumMapIndex = 0 + + try + { + enumModeIndex = PersistenceGetEnumIndexForItemName( "gamemodes", GAMETYPE ) + enumMapIndex = PersistenceGetEnumIndexForItemName( "maps", GetMapName() ) + } + catch( ex ) {} + + player.SetPersistentVar( "postGameData.myTeam", player.GetTeam() ) + player.SetPersistentVar( "postGameData.myXuid", player.GetUID() ) + player.SetPersistentVar( "postGameData.gameMode", PersistenceGetEnumIndexForItemName( "gamemodes", GAMETYPE ) ) + player.SetPersistentVar( "postGameData.map", PersistenceGetEnumIndexForItemName( "maps", GetMapName() ) ) + player.SetPersistentVar( "postGameData.teams", standardTeams ) + player.SetPersistentVar( "postGameData.maxTeamSize", teams ) + player.SetPersistentVar( "postGameData.privateMatch", true ) + player.SetPersistentVar( "postGameData.ranked", true ) + player.SetPersistentVar( "postGameData.hadMatchLossProtection", false ) + + player.SetPersistentVar( "isFDPostGameScoreboardValid", GAMETYPE == FD ) + + if ( standardTeams ) + { + if ( player.GetTeam() == TEAM_MILITIA ) + { + player.SetPersistentVar( "postGameData.factionMCOR", GetFactionChoice( player ) ) + player.SetPersistentVar( "postGameData.factionIMC", GetEnemyFaction( player ) ) + } + else + { + player.SetPersistentVar( "postGameData.factionIMC", GetFactionChoice( player ) ) + player.SetPersistentVar( "postGameData.factionMCOR", GetEnemyFaction( player ) ) + } + + player.SetPersistentVar( "postGameData.scoreMCOR", GameRules_GetTeamScore( TEAM_MILITIA ) ) + player.SetPersistentVar( "postGameData.scoreIMC", GameRules_GetTeamScore( TEAM_IMC ) ) + } + else + { + player.SetPersistentVar( "postGameData.factionMCOR", GetFactionChoice( player ) ) + player.SetPersistentVar( "postGameData.scoreMCOR", GameRules_GetTeamScore( player.GetTeam() ) ) + } + + array<entity> otherPlayers = GetPlayerArray() + array<int> scoreTypes = GameMode_GetScoreboardColumnScoreTypes( GAMETYPE ) + int persistenceArrayCount = PersistenceGetArrayCount( "postGameData.players" ) + for ( int i = 0; i < min( otherPlayers.len(), persistenceArrayCount ); i++ ) + { + player.SetPersistentVar( "postGameData.players[" + i + "].team", otherPlayers[ i ].GetTeam() ) + player.SetPersistentVar( "postGameData.players[" + i + "].name", otherPlayers[ i ].GetPlayerName() ) + player.SetPersistentVar( "postGameData.players[" + i + "].xuid", otherPlayers[ i ].GetUID() ) + player.SetPersistentVar( "postGameData.players[" + i + "].callsignIconIndex", otherPlayers[ i ].GetPersistentVarAsInt( "activeCallsignIconIndex" ) ) + + for ( int j = 0; j < scoreTypes.len(); j++ ) + player.SetPersistentVar( "postGameData.players[" + i + "].scores[" + j + "]", otherPlayers[ i ].GetPlayerGameStat( scoreTypes[ j ] ) ) + } + + player.SetPersistentVar( "isPostGameScoreboardValid", true ) + } +}
\ No newline at end of file |