og-r1delta-core/scripts/vscripts/_stats_shared.nut
2025-04-01 01:41:39 -04:00

393 lines
No EOL
23 KiB
Text

playerStatCategories <- []
level.playerStatVars <- {}
level.itemsListForStats <- {}
function main()
{
Globalize( InitStatsTables )
Globalize( IsValidStat )
Globalize( StatToInt )
Globalize( StatToFloat )
Globalize( StatToIntAllCompetitiveModesAndMaps )
Globalize( GetPersistentStatVar )
}
function AddItemsToStatsList( array )
{
foreach( item in array )
level.itemsListForStats[ item.ref ] <- true
}
function InitStatsTables()
{
AddItemsToStatsList( GetAllItemsOfType( itemType.PILOT_PRIMARY ) )
AddItemsToStatsList( GetAllItemsOfType( itemType.PILOT_SECONDARY ) )
AddItemsToStatsList( GetAllItemsOfType( itemType.PILOT_SIDEARM ) )
AddItemsToStatsList( GetAllItemsOfType( itemType.PILOT_SPECIAL ) )
AddItemsToStatsList( GetAllItemsOfType( itemType.PILOT_ORDNANCE ) )
AddItemsToStatsList( GetAllItemsOfType( itemType.TITAN_PRIMARY ) )
AddItemsToStatsList( GetAllItemsOfType( itemType.TITAN_ORDNANCE ) )
AddItemsToStatsList( GetAllItemsOfType( itemType.TITAN_SPECIAL ) )
//##############################################
// GAMES STATS
//##############################################
AddPersistentStatCategory( "game_stats" )
AddPersistentStat( "game_stats", "game_joined", null, "mapStats[%mapname%].gamesJoined[%gamemode%]" )
AddPersistentStat( "game_stats", "game_completed", null, "mapStats[%mapname%].gamesCompleted[%gamemode%]" )
AddPersistentStat( "game_stats", "game_won", null, "mapStats[%mapname%].gamesWon[%gamemode%]" )
AddPersistentStat( "game_stats", "game_lost", null, "mapStats[%mapname%].gamesLost[%gamemode%]" )
AddPersistentStat( "game_stats", "mvp", null, "mapStats[%mapname%].topPlayerOnTeam[%gamemode%]" )
AddPersistentStat( "game_stats", "top3OnTeam", null, "mapStats[%mapname%].top3OnTeam[%gamemode%]" )
AddPersistentStat( "game_stats", "hoursPlayed", null, "mapStats[%mapname%].hoursPlayed[%gamemode%]" )
AddPersistentStat( "game_stats", "timesScored100AttritionPoints", null, "mapStats[%mapname%].timesScored100AttritionPoints_byMap" )
AddPersistentStat( "game_stats", "timesScored100AttritionPoints_total", null, "gameStats.timesScored100AttritionPoints_total" )
AddPersistentStat( "game_stats", "mode_played", null, "gameStats.modesPlayed[%gamemode%]" )
AddPersistentStat( "game_stats", "mode_played_at", null, "gameStats.mode_played_at" )
AddPersistentStat( "game_stats", "mode_played_ctf", null, "gameStats.mode_played_ctf" )
AddPersistentStat( "game_stats", "mode_played_lts", null, "gameStats.mode_played_lts" )
AddPersistentStat( "game_stats", "mode_played_cp", null, "gameStats.mode_played_cp" )
AddPersistentStat( "game_stats", "mode_played_tdm", null, "gameStats.mode_played_tdm" )
AddPersistentStat( "game_stats", "mode_played_wlts", null, "gameStats.mode_played_wlts" )
AddPersistentStat( "game_stats", "mode_played_mfd", null, "gameStats.mode_played_mfd" )
AddPersistentStat( "game_stats", "mode_played_coop", null, "gameStats.mode_played_coop" )
AddPersistentStat( "game_stats", "mode_won_at", null, "gameStats.mode_won_at" )
AddPersistentStat( "game_stats", "mode_won_ctf", null, "gameStats.mode_won_ctf" )
AddPersistentStat( "game_stats", "mode_won_lts", null, "gameStats.mode_won_lts" )
AddPersistentStat( "game_stats", "mode_won_cp", null, "gameStats.mode_won_cp" )
AddPersistentStat( "game_stats", "mode_won_tdm", null, "gameStats.mode_won_tdm" )
AddPersistentStat( "game_stats", "mode_won_wlts", null, "gameStats.mode_won_wlts" )
AddPersistentStat( "game_stats", "mode_won_mfd", null, "gameStats.mode_won_mfd" )
AddPersistentStat( "game_stats", "mode_won_coop", null, "gameStats.mode_won_coop" )
AddPersistentStat( "game_stats", "mode_won", null, "gameStats.modesWon[%gamemode%]" )
AddPersistentStat( "game_stats", "mvp_total", null, "gameStats.mvp_total" )
AddPersistentStat( "game_stats", "game_completed_total", null, "gameStats.gamesCompletedTotal" )
AddPersistentStat( "game_stats", "game_completed_total_campaign", null, "gameStats.gamesCompletedTotalCampaign" )
AddPersistentStat( "game_stats", "games_won_as_imc", null, "gameStats.gamesWonAsIMC" )
AddPersistentStat( "game_stats", "games_won_as_militia", null, "gameStats.gamesWonAsMilitia" )
AddPersistentStat( "game_stats", "games_completed_as_imc", null, "gameStats.gamesCompletedAsIMC" )
AddPersistentStat( "game_stats", "games_completed_as_militia", null, "gameStats.gamesCompletedAsMilitia" )
AddPersistentStat( "game_stats", "pvp_kills_by_mode", null, "gameStats.pvpKills[%gamemode%]" )
AddPersistentStat( "game_stats", "times_kd_2_to_1_by_mode", null, "gameStats.timesKillDeathRatio2to1[%gamemode%]" )
AddPersistentStat( "game_stats", "times_kd_2_to_1_pvp_by_mode", null, "gameStats.timesKillDeathRatio2to1_pvp[%gamemode%]" )
AddPersistentStat( "game_stats", "coop_perfect_waves", null, "gameStats.coop_perfect_waves" )
//##############################################
// TIME STATS
//##############################################
AddPersistentStatCategory( "time_stats" )
AddPersistentStat( "time_stats", "hours_total", null, "timeStats.total" )
AddPersistentStat( "time_stats", "hours_as_pilot", null, "timeStats.asPilot" )
AddPersistentStat( "time_stats", "hours_dead", null, "timeStats.dead" )
AddPersistentStat( "time_stats", "hours_wallhanging", null, "timeStats.wallhanging" )
AddPersistentStat( "time_stats", "hours_wallrunning", null, "timeStats.wallrunning" )
AddPersistentStat( "time_stats", "hours_inAir", null, "timeStats.inAir" )
AddPersistentStat( "time_stats", "hours_as_titan", null, "timeStats.asTitanTotal" )
AddPersistentStat( "time_stats", "hours_as_titan_stryder", null, "timeStats.asTitan[titan_stryder]" )
AddPersistentStat( "time_stats", "hours_as_titan_atlas", null, "timeStats.asTitan[titan_atlas]" )
AddPersistentStat( "time_stats", "hours_as_titan_ogre", null, "timeStats.asTitan[titan_ogre]" )
//##############################################
// DISTANCE STATS
//##############################################
AddPersistentStatCategory( "distance_stats" )
AddPersistentStat( "distance_stats", "total", null, "distanceStats.total" )
AddPersistentStat( "distance_stats", "asPilot", null, "distanceStats.asPilot" )
AddPersistentStat( "distance_stats", "wallrunning", null, "distanceStats.wallrunning" )
AddPersistentStat( "distance_stats", "inAir", null, "distanceStats.inAir" )
AddPersistentStat( "distance_stats", "ziplining", null, "distanceStats.ziplining" )
AddPersistentStat( "distance_stats", "onFriendlyTitan", null, "distanceStats.onFriendlyTitan" )
AddPersistentStat( "distance_stats", "onEnemyTitan", null, "distanceStats.onEnemyTitan" )
AddPersistentStat( "distance_stats", "asTitan", null, "distanceStats.asTitanTotal" )
AddPersistentStat( "distance_stats", "asTitan_stryder", null, "distanceStats.asTitan[titan_stryder]" )
AddPersistentStat( "distance_stats", "asTitan_atlas", null, "distanceStats.asTitan[titan_atlas]" )
AddPersistentStat( "distance_stats", "asTitan_ogre", null, "distanceStats.asTitan[titan_ogre]" )
//##############################################
// WEAPON STATS
//##############################################
AddPersistentStatCategory( "weapon_stats" )
foreach( ref, val in level.itemsListForStats )
{
AddPersistentStat( "weapon_stats", "hoursUsed", ref, "weaponStats[" + ref + "].hoursUsed" )
AddPersistentStat( "weapon_stats", "hoursEquipped", ref, "weaponStats[" + ref + "].hoursEquipped" )
AddPersistentStat( "weapon_stats", "shotsFired", ref, "weaponStats[" + ref + "].shotsFired" )
AddPersistentStat( "weapon_stats", "shotsHit", ref, "weaponStats[" + ref + "].shotsHit" )
AddPersistentStat( "weapon_stats", "headshots", ref, "weaponStats[" + ref + "].headshots" )
AddPersistentStat( "weapon_stats", "critHits", ref, "weaponStats[" + ref + "].critHits" )
}
//##############################################
// KILLS STATS FOR WEAPON
//##############################################
AddPersistentStatCategory( "weapon_kill_stats" )
foreach( ref, val in level.itemsListForStats )
{
AddPersistentStat( "weapon_kill_stats", "total", ref, "weaponKillStats[" + ref + "].total" )
AddPersistentStat( "weapon_kill_stats", "pilots", ref, "weaponKillStats[" + ref + "].pilots" )
AddPersistentStat( "weapon_kill_stats", "ejecting_pilots", ref, "weaponKillStats[" + ref + "].ejecting_pilots" )
AddPersistentStat( "weapon_kill_stats", "titansTotal", ref, "weaponKillStats[" + ref + "].titansTotal" )
AddPersistentStat( "weapon_kill_stats", "spectres", ref, "weaponKillStats[" + ref + "].spectres" )
AddPersistentStat( "weapon_kill_stats", "marvins", ref, "weaponKillStats[" + ref + "].marvins" )
AddPersistentStat( "weapon_kill_stats", "grunts", ref, "weaponKillStats[" + ref + "].grunts" )
AddPersistentStat( "weapon_kill_stats", "titans_stryder", ref, "weaponKillStats[" + ref + "].titans[titan_stryder]" )
AddPersistentStat( "weapon_kill_stats", "titans_atlas", ref, "weaponKillStats[" + ref + "].titans[titan_atlas]" )
AddPersistentStat( "weapon_kill_stats", "titans_ogre", ref, "weaponKillStats[" + ref + "].titans[titan_ogre]" )
AddPersistentStat( "weapon_kill_stats", "npcTitans_stryder", ref, "weaponKillStats[" + ref + "].npcTitans[titan_stryder]" )
AddPersistentStat( "weapon_kill_stats", "npcTitans_atlas", ref, "weaponKillStats[" + ref + "].npcTitans[titan_atlas]" )
AddPersistentStat( "weapon_kill_stats", "npcTitans_ogre", ref, "weaponKillStats[" + ref + "].npcTitans[titan_ogre]" )
}
//##############################################
// GENERAL KILLS STATS
//##############################################
AddPersistentStatCategory( "kills_stats" )
AddPersistentStat( "kills_stats", "total", null, "killStats.total" )
AddPersistentStat( "kills_stats", "totalWhileUsingBurnCard", null, "killStats.totalWhileUsingBurnCard" )
AddPersistentStat( "kills_stats", "titansWhileTitanBCActive", null, "killStats.titansWhileTitanBCActive" )
AddPersistentStat( "kills_stats", "totalPVP", null, "killStats.totalPVP" )
AddPersistentStat( "kills_stats", "pilots", null, "killStats.pilots" )
AddPersistentStat( "kills_stats", "spectres", null, "killStats.spectres" )
AddPersistentStat( "kills_stats", "marvins", null, "killStats.marvins" )
AddPersistentStat( "kills_stats", "grunts", null, "killStats.grunts" )
AddPersistentStat( "kills_stats", "totalTitans", null, "killStats.totalTitans" )
AddPersistentStat( "kills_stats", "totalPilots", null, "killStats.totalPilots" )
AddPersistentStat( "kills_stats", "totalNPC", null, "killStats.totalNPC" )
AddPersistentStat( "kills_stats", "totalTitansWhileDoomed", null, "killStats.totalTitansWhileDoomed" )
AddPersistentStat( "kills_stats", "asPilot", null, "killStats.asPilot" )
AddPersistentStat( "kills_stats", "asTitan_stryder", null, "killStats.asTitan[titan_stryder]" )
AddPersistentStat( "kills_stats", "asTitan_atlas", null, "killStats.asTitan[titan_atlas]" )
AddPersistentStat( "kills_stats", "asTitan_ogre", null, "killStats.asTitan[titan_ogre]" )
AddPersistentStat( "kills_stats", "firstStrikes", null, "killStats.firstStrikes" )
AddPersistentStat( "kills_stats", "ejectingPilots", null, "killStats.ejectingPilots" )
AddPersistentStat( "kills_stats", "whileEjecting", null, "killStats.whileEjecting" )
AddPersistentStat( "kills_stats", "cloakedPilots", null, "killStats.cloakedPilots" )
AddPersistentStat( "kills_stats", "whileCloaked", null, "killStats.whileCloaked" )
AddPersistentStat( "kills_stats", "wallrunningPilots", null, "killStats.wallrunningPilots" )
AddPersistentStat( "kills_stats", "whileWallrunning", null, "killStats.whileWallrunning" )
AddPersistentStat( "kills_stats", "wallhangingPilots", null, "killStats.wallhangingPilots" )
AddPersistentStat( "kills_stats", "whileWallhanging", null, "killStats.whileWallhanging" )
AddPersistentStat( "kills_stats", "pilotExecution", null, "killStats.pilotExecution" )
AddPersistentStat( "kills_stats", "pilotExecutePilot", null, "killStats.pilotExecutePilot" )
AddPersistentStat( "kills_stats", "pilotKickMelee", null, "killStats.pilotKickMelee" )
AddPersistentStat( "kills_stats", "pilotKickMeleePilot", null, "killStats.pilotKickMeleePilot" )
AddPersistentStat( "kills_stats", "titanMelee", null, "killStats.titanMelee" )
AddPersistentStat( "kills_stats", "titanMeleePilot", null, "killStats.titanMeleePilot" )
AddPersistentStat( "kills_stats", "titanStepCrush", null, "killStats.titanStepCrush" )
AddPersistentStat( "kills_stats", "titanStepCrushPilot", null, "killStats.titanStepCrushPilot" )
AddPersistentStat( "kills_stats", "titanExocutionStryder", null, "killStats.titanExocutionStryder" )
AddPersistentStat( "kills_stats", "titanExocutionAtlas", null, "killStats.titanExocutionAtlas" )
AddPersistentStat( "kills_stats", "titanExocutionOgre", null, "killStats.titanExocutionOgre" )
AddPersistentStat( "kills_stats", "titanFallKill", null, "killStats.titanFallKill" )
AddPersistentStat( "kills_stats", "petTitanKillsFollowMode", null, "killStats.petTitanKillsFollowMode" )
AddPersistentStat( "kills_stats", "petTitanKillsGuardMode", null, "killStats.petTitanKillsGuardMode" )
AddPersistentStat( "kills_stats", "rodeo_total", null, "killStats.rodeo_total" )
AddPersistentStat( "kills_stats", "pilot_headshots_total", null, "killStats.pilot_headshots_total" )
AddPersistentStat( "kills_stats", "evacShips", null, "killStats.evacShips" )
AddPersistentStat( "kills_stats", "flyers", null, "killStats.flyers" )
AddPersistentStat( "kills_stats", "nuclearCore", null, "killStats.nuclearCore" )
AddPersistentStat( "kills_stats", "evacuatingEnemies", null, "killStats.evacuatingEnemies" )
AddPersistentStat( "kills_stats", "exportTrapKills", null, "killStats.exportTrapKills" )
AddPersistentStat( "kills_stats", "coopChallenge_NukeTitan_Kills", null, "killStats.coopChallenge_NukeTitan_Kills" )
AddPersistentStat( "kills_stats", "coopChallenge_MortarTitan_Kills", null, "killStats.coopChallenge_MortarTitan_Kills" )
AddPersistentStat( "kills_stats", "coopChallenge_EmpTitan_Kills", null, "killStats.coopChallenge_EmpTitan_Kills" )
AddPersistentStat( "kills_stats", "coopChallenge_SuicideSpectre_Kills", null, "killStats.coopChallenge_SuicideSpectre_Kills" )
AddPersistentStat( "kills_stats", "coopChallenge_Turret_Kills", null, "killStats.coopChallenge_Turret_Kills" )
AddPersistentStat( "kills_stats", "coopChallenge_CloakDrone_Kills", null, "killStats.coopChallenge_CloakDrone_Kills" )
AddPersistentStat( "kills_stats", "coopChallenge_BubbleShieldGrunt_Kills", null, "killStats.coopChallenge_BubbleShieldGrunt_Kills" )
AddPersistentStat( "kills_stats", "coopChallenge_Dropship_Kills", null, "killStats.coopChallenge_Dropship_Kills" )
AddPersistentStat( "kills_stats", "coopChallenge_Sniper_Kills", null, "killStats.coopChallenge_Sniper_Kills" )
AddPersistentStat( "kills_stats", "ampedVortexKills", null, "killStats.ampedVortexKills" )
AddPersistentStat( "kills_stats", "meleeWhileCloaked", null, "killStats.meleeWhileCloaked" )
AddPersistentStat( "kills_stats", "pilotKillsWhileUsingActiveRadarPulse", null, "killStats.pilotKillsWhileUsingActiveRadarPulse" )
AddPersistentStat( "kills_stats", "titanKillsAsPilot", null, "killStats.titanKillsAsPilot" )
AddPersistentStat( "kills_stats", "pilotKillsWhileStimActive", null, "killStats.pilotKillsWhileStimActive" )
AddPersistentStat( "kills_stats", "pilotKillsAsTitan", null, "killStats.pilotKillsAsTitan" )
//##############################################
// GENERAL DEATHS STATS
//##############################################
AddPersistentStatCategory( "deaths_stats" )
AddPersistentStat( "deaths_stats", "total", null, "deathStats.total" )
AddPersistentStat( "deaths_stats", "totalPVP", null, "deathStats.totalPVP" )
AddPersistentStat( "deaths_stats", "asPilot", null, "deathStats.asPilot" )
AddPersistentStat( "deaths_stats", "asTitan_stryder", null, "deathStats.asTitan[titan_stryder]" )
AddPersistentStat( "deaths_stats", "asTitan_atlas", null, "deathStats.asTitan[titan_atlas]" )
AddPersistentStat( "deaths_stats", "asTitan_ogre", null, "deathStats.asTitan[titan_ogre]" )
AddPersistentStat( "deaths_stats", "byPilots", null, "deathStats.byPilots" )
AddPersistentStat( "deaths_stats", "byTitans_stryder", null, "deathStats.byTitans[titan_stryder]" )
AddPersistentStat( "deaths_stats", "byTitans_atlas", null, "deathStats.byTitans[titan_atlas]" )
AddPersistentStat( "deaths_stats", "byTitans_ogre", null, "deathStats.byTitans[titan_ogre]" )
AddPersistentStat( "deaths_stats", "bySpectres", null, "deathStats.bySpectres" )
AddPersistentStat( "deaths_stats", "byGrunts", null, "deathStats.byGrunts" )
AddPersistentStat( "deaths_stats", "byNPCTitans_stryder", null, "deathStats.byNPCTitans[titan_stryder]" )
AddPersistentStat( "deaths_stats", "byNPCTitans_atlas", null, "deathStats.byNPCTitans[titan_atlas]" )
AddPersistentStat( "deaths_stats", "byNPCTitans_ogre", null, "deathStats.byNPCTitans[titan_ogre]" )
AddPersistentStat( "deaths_stats", "suicides", null, "deathStats.suicides" )
AddPersistentStat( "deaths_stats", "whileEjecting", null, "deathStats.whileEjecting" )
//##############################################
// MISC STATS
//##############################################
AddPersistentStatCategory( "misc_stats" )
AddPersistentStat( "misc_stats", "titanFalls", null, "miscStats.titanFalls" )
AddPersistentStat( "misc_stats", "titanFallsFirst", null, "miscStats.titanFallsFirst" )
AddPersistentStat( "misc_stats", "titanEmbarks", null, "miscStats.titanEmbarks" )
AddPersistentStat( "misc_stats", "rodeos", null, "miscStats.rodeos" )
AddPersistentStat( "misc_stats", "rodeosFromEject", null, "miscStats.rodeosFromEject" )
AddPersistentStat( "misc_stats", "timesEjected", null, "miscStats.timesEjected" )
AddPersistentStat( "misc_stats", "timesEjectedNuclear", null, "miscStats.timesEjectedNuclear" )
AddPersistentStat( "misc_stats", "burnCardsEarned", null, "miscStats.burnCardsEarned" )
AddPersistentStat( "misc_stats", "burnCardsSpent", null, "miscStats.burnCardsSpent" )
AddPersistentStat( "misc_stats", "spectreLeeches", null, "miscStats.spectreLeeches" )
AddPersistentStat( "misc_stats", "spectreLeechesByMap", null, "miscStats.spectreLeechesByMap[%mapname%]" )
AddPersistentStat( "misc_stats", "evacsAttempted", null, "miscStats.evacsAttempted" )
AddPersistentStat( "misc_stats", "evacsSurvived", null, "miscStats.evacsSurvived" )
AddPersistentStat( "misc_stats", "flagsCaptured", null, "miscStats.flagsCaptured" )
AddPersistentStat( "misc_stats", "flagsReturned", null, "miscStats.flagsReturned" )
AddPersistentStat( "misc_stats", "arcCannonMultiKills", null, "miscStats.arcCannonMultiKills" )
AddPersistentStat( "misc_stats", "gruntsConscripted", null, "miscStats.gruntsConscripted" )
AddPersistentStat( "misc_stats", "hardpointsCaptured", null, "miscStats.hardpointsCaptured" )
AddPersistentStat( "misc_stats", "challengeTiersCompleted", null, "miscStats.challengeTiersCompleted" )
AddPersistentStat( "misc_stats", "challengesCompleted", null, "miscStats.challengesCompleted" )
AddPersistentStat( "misc_stats", "dailyChallengesCompleted", null, "miscStats.dailyChallengesCompleted" )
AddPersistentStat( "misc_stats", "timesLastTitanRemaining", null, "miscStats.timesLastTitanRemaining" )
AddPersistentStat( "misc_stats", "killingSprees", null, "miscStats.killingSprees" )
AddPersistentStat( "misc_stats", "coopChallengesCompleted", null, "miscStats.coopChallengesCompleted" )
}
function AddPersistentStatCategory( category )
{
playerStatCategories.append( category )
level.playerStatVars[ category ] <- {}
}
function AddPersistentStat( category, alias, weapon, var )
{
if ( weapon == null )
{
Assert( !( alias in level.playerStatVars[ category ] ), "Duplicate stat alias " + alias + " in category " + category )
level.playerStatVars[ category ][ alias ] <- var
}
else
{
if ( !( alias in level.playerStatVars[ category ] ) )
level.playerStatVars[ category ][ alias ] <- {}
Assert( !( var in level.playerStatVars[ category ][ alias ] ) )
level.playerStatVars[ category ][ alias ][ weapon ] <- var
}
}
function IsValidStat( category, alias, weapon )
{
if ( category == null || alias == null )
return false
if ( !( category in level.playerStatVars ) )
return false
level.playerStatVars[ category ]
if ( !( alias in level.playerStatVars[ category ] ) )
return false
if ( weapon == null )
return IsString( level.playerStatVars[ category ][ alias ] )
return ( weapon in level.playerStatVars[ category ][ alias ] )
}
function GetPersistentStatVar( category, alias, weapon = null )
{
Assert( category in level.playerStatVars, "Invalid stat category " + category )
Assert( alias in level.playerStatVars[ category ], "No stat alias " + alias + " in category " + category )
if ( weapon == null )
{
return level.playerStatVars[ category ][ alias ]
}
else
{
Assert( weapon in level.playerStatVars[ category ][ alias ] )
return level.playerStatVars[ category ][ alias ][ weapon ]
}
}
function StatToInt( category, alias, weapon = null, player = null )
{
if ( !IsUI() )
Assert( IsValid( player ) )
local statString = GetPersistentStatVar( category, alias, weapon )
local value
if ( IsUI() )
value = GetPersistentVar( statString )
else
value = player.GetPersistentVar( statString )
return value.tointeger()
}
function StatToFloat( category, alias, weapon = null, player = null )
{
if ( !IsUI() )
Assert( IsValid( player ) )
local statString = GetPersistentStatVar( category, alias, weapon )
local value
if ( IsUI() )
value = GetPersistentVar( statString )
else
value = player.GetPersistentVar( statString )
return value.tofloat()
}
function StatToIntAllCompetitiveModesAndMaps( category, alias, weapon = null, player = null )
{
if ( !IsUI() )
Assert( IsValid( player ) )
local count = 0
local numMaps = PersistenceGetEnumCount( "maps" )
local numModes = PersistenceGetEnumCount( "gameModes" )
local statVarName = GetPersistentStatVar( category, alias, weapon )
local fixedSaveVar
for( local mode = 0 ; mode < numModes ; mode++ )
{
if ( mode == eGameModes.COOPERATIVE_ID )
continue
for( local map = 0 ; map < numMaps ; map++ )
{
fixedSaveVar = statVarName
fixedSaveVar = StatStringReplace( fixedSaveVar, "%mapname%", map )
fixedSaveVar = StatStringReplace( fixedSaveVar, "%gamemode%", mode )
count += IsUI() ? GetPersistentVar( fixedSaveVar ) : player.GetPersistentVar( fixedSaveVar )
}
}
return count
}