Files
IL-GSC/IW/PC/ALL/scripts/cp/cp_analytics.gsc
2023-10-27 03:49:01 -04:00

673 lines
15 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\cp\cp_analytics.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 44
* Decompile Time: 2093 ms
* Timestamp: 10/27/2023 12:09:16 AM
*******************************************************************/
//Function Number: 1
func_10C5A(param_00,param_01,param_02)
{
init(param_02);
func_9679(param_00,param_01);
}
//Function Number: 2
func_9679(param_00,param_01)
{
setmatchdatadef(param_00);
function_01A9(param_01);
setmatchdata("commonMatchData","map",level.script);
setmatchdata("commonMatchData","gametype",getdvar("ui_gametype"));
setmatchdata("commonMatchData","buildVersion",function_007F());
setmatchdata("commonMatchData","buildNumber",function_007E());
setmatchdata("commonMatchData","utcStartTimeSeconds",function_00D2());
setmatchdata("commonMatchData","isPrivateMatch",getdvarint("xblive_privatematch"));
setmatchdata("commonMatchData","isRankedMatch",1);
setmatchdataid();
level thread func_13663();
}
//Function Number: 3
init(param_00)
{
var_01 = spawnstruct();
var_02 = [];
var_01.var_1020C = var_02;
var_03 = [];
var_01.var_3C1F = var_03;
level.var_13F0B = var_01;
func_94FA(param_00);
level.player_count = 0;
level.player_count_left = 0;
}
//Function Number: 4
func_13663()
{
level endon("gameEnded");
level waittill("prematch_done");
setmatchdata("commonMatchData","playerCountStart",func_13134(level.players.size));
}
//Function Number: 5
func_C4B8()
{
func_D0F6();
set_player_count();
func_F5AC();
func_F443();
setmatchdata("players",self.var_41F0,"playerID","xuid",scripts\cp\_utility::func_81EC());
setmatchdata("players",self.var_41F0,"gamertag",self.name);
setmatchdata("players",self.var_41F0,"waveStart",level.wave_num);
setmatchdata("players",self.var_41F0,"quit",0);
level.player_count = level.player_count + 1;
}
//Function Number: 6
on_player_disconnect(param_00)
{
setmatchdata("players",self.var_41F0,"disconnectReason",param_00);
setmatchdata("players",self.var_41F0,"quit",param_00 == "EXE_DISCONNECTED");
set_custom_stats();
level.player_count_left = level.player_count_left + 1;
}
//Function Number: 7
func_D0F6()
{
var_00 = spawnstruct();
var_01 = [];
var_01["cashSpentOnWeapon"] = func_7C6B(0,"int");
var_01["cashSpentOnAbility"] = func_7C6B(0,"int");
var_01["cashSpentOnTrap"] = func_7C6B(0,"int");
var_00.var_1020C = var_01;
var_02 = [];
var_02["timesDowned"] = [];
var_02["timesRevived"] = [];
var_02["timesBledOut"] = [];
var_00.var_AA03 = var_02;
self.var_13F0B = var_00;
}
//Function Number: 8
set_player_count()
{
if(!isdefined(level.max_concurrent_player_count))
{
level.max_concurrent_player_count = 0;
}
if(level.players.size >= level.max_concurrent_player_count)
{
level.max_concurrent_player_count = level.players.size + 1;
}
}
//Function Number: 9
func_F5AC()
{
setmatchdata("players",self.var_41F0,"isSplitscreen",self issplitscreenplayer());
}
//Function Number: 10
func_F443()
{
if(func_D84A())
{
setmatchdata("players",self.var_41F0,"joinInProgress",1);
}
}
//Function Number: 11
func_D84A()
{
if(scripts\common\utility::func_6E34("introscreen_over") && scripts\common\utility::flag("introscreen_over"))
{
return 1;
}
return 0;
}
//Function Number: 12
func_12D9F(param_00,param_01)
{
if(level.var_13F0B.var_3C1F.size > 25)
{
return;
}
var_02 = spawnstruct();
var_02.var_3C1B = param_00;
var_02.var_264 = param_01;
level.var_13F0B.var_3C1F[level.var_13F0B.var_3C1F.size] = var_02;
}
//Function Number: 13
func_93C1()
{
func_93C4("timesDowned");
}
//Function Number: 14
func_93C7()
{
func_93C4("timesRevived");
}
//Function Number: 15
func_93BE()
{
func_93C4("timesBledOut");
}
//Function Number: 16
func_93C4(param_00)
{
if(!isdefined(self.var_13F0B.var_AA03[param_00][level.wave_num]))
{
self.var_13F0B.var_AA03[param_00][level.wave_num] = 0;
}
self.var_13F0B.var_AA03[param_00][level.wave_num]++;
}
//Function Number: 17
func_12E2E(param_00,param_01)
{
switch(param_01)
{
case "weapon":
self.var_13F0B.var_1020C["cashSpentOnWeapon"].var_13153 = self.var_13F0B.var_1020C["cashSpentOnWeapon"].var_13153 + param_00;
break;
case "ability":
self.var_13F0B.var_1020C["cashSpentOnAbility"].var_13153 = self.var_13F0B.var_1020C["cashSpentOnAbility"].var_13153 + param_00;
break;
case "trap":
self.var_13F0B.var_1020C["cashSpentOnTrap"].var_13153 = self.var_13F0B.var_1020C["cashSpentOnTrap"].var_13153 + param_00;
break;
default:
break;
}
}
//Function Number: 18
endgame(param_00,param_01)
{
func_F3C5(param_00,param_01);
func_13DFF();
log_matchdata_at_game_end();
foreach(var_04, var_03 in level.players)
{
scripts\cp\_persistence::increment_player_career_total_waves(var_03);
scripts\cp\_persistence::increment_player_career_total_score(var_03);
var_03 set_player_data(param_01);
var_03 func_F52B();
var_03 func_13DFD(var_03,var_04);
}
if(isdefined(level.var_1E5F))
{
[[ level.var_1E5F ]]();
}
sendmatchdata();
function_01A3();
}
//Function Number: 19
set_player_data(param_00)
{
var_01 = self getplayerdata("cp","coopCareerStats","totalGameplayTime");
var_02 = self getplayerdata("cp","coopCareerStats","gamesPlayed");
if(!isdefined(var_01))
{
var_01 = 0;
}
if(!isdefined(var_02))
{
var_02 = 0;
}
var_01 = var_01 + param_00 / 1000;
var_02 = var_02 + 1;
self setplayerdata("cp","coopCareerStats","totalGameplayTime",int(var_01));
self setplayerdata("cp","coopCareerStats","gamesPlayed",int(var_02));
}
//Function Number: 20
func_F3C5(param_00,param_01)
{
var_02 = "challengesCompleted";
var_03 = level.var_13F0B;
foreach(var_05 in var_03.var_1020C)
{
var_06 = func_13137(var_05.var_13153,var_05.var_13155);
}
foreach(var_09 in var_03.var_3C1F)
{
}
setmatchdata("commonMatchData","playerCountEnd",level.players.size);
setmatchdata("commonMatchData","utcEndTimeSeconds",function_00D2());
setmatchdata("commonMatchData","playerCount",func_13134(level.player_count));
setmatchdata("commonMatchData","playerCountLeft",func_13134(level.player_count_left));
setmatchdata("playerCountMaxConcurrent",func_13134(level.max_concurrent_player_count));
}
//Function Number: 21
func_F52B()
{
func_4642();
func_F44C();
func_F59E();
set_custom_stats();
}
//Function Number: 22
get_player_matchdata(param_00,param_01)
{
if(isdefined(level.var_B3DF["player"][self.var_41F0]) && isdefined(level.var_B3DF["player"][self.var_41F0][param_00]))
{
return level.var_B3DF["player"][self.var_41F0][param_00];
}
return param_01;
}
//Function Number: 23
set_custom_stats()
{
var_00 = self getplayerdata("cp","coopCareerStats","totalGameplayTime");
var_01 = self getplayerdata("cp","coopCareerStats","gamesPlayed");
var_02 = self getplayerdata("cp","progression","playerLevel","rank");
var_03 = self getplayerdata("cp","progression","playerLevel","prestige");
if(isdefined(self.wave_num_when_joined))
{
setmatchdata("players",self.var_41F0,"waveEnd",level.wave_num - self.wave_num_when_joined);
}
else
{
setmatchdata("players",self.var_41F0,"waveEnd",level.wave_num);
}
setmatchdata("players",self.var_41F0,"doorsOpened",get_player_matchdata("opening_the_doors",0));
setmatchdata("players",self.var_41F0,"moneyEarned",int(get_player_matchdata("currency_earned",0)));
setmatchdata("players",self.var_41F0,"kills",get_player_matchdata("zombie_death",0));
setmatchdata("players",self.var_41F0,"downs",get_player_matchdata("dropped_to_last_stand",0));
setmatchdata("players",self.var_41F0,"revives",get_player_matchdata("revived_another_player",0));
setmatchdata("players",self.var_41F0,"headShots",self.var_11A25);
setmatchdata("players",self.var_41F0,"shots",self.accuracy_shots_fired);
setmatchdata("players",self.var_41F0,"hits",self.var_154B);
setmatchdata("players",self.var_41F0,"rank",func_13134(var_02));
setmatchdata("players",self.var_41F0,"prestige",func_13134(var_03));
setmatchdata("players",self.var_41F0,"totalGameplayTime",func_13135(var_00));
setmatchdata("players",self.var_41F0,"gamesPlayed",func_13135(var_01));
}
//Function Number: 24
func_4642()
{
}
//Function Number: 25
func_F44C()
{
}
//Function Number: 26
func_F59E()
{
}
//Function Number: 27
func_13137(param_00,param_01)
{
switch(param_01)
{
case "byte":
return func_13134(param_00);
case "short":
return func_13136(param_00);
case "int":
return func_13135(param_00);
default:
break;
}
}
//Function Number: 28
func_13134(param_00)
{
return int(min(param_00,127));
}
//Function Number: 29
func_13136(param_00)
{
return int(min(param_00,32767));
}
//Function Number: 30
func_13135(param_00)
{
return int(min(param_00,2147483647));
}
//Function Number: 31
func_7C6B(param_00,param_01)
{
var_02 = spawnstruct();
var_02.var_13153 = param_00;
var_02.var_13155 = param_01;
return var_02;
}
//Function Number: 32
func_94FA(param_00)
{
var_01 = 0;
var_02 = 1;
var_03 = 2;
var_04 = 1;
var_05 = 2;
var_06 = 3;
var_07 = 4;
var_08 = 5;
var_09 = 6;
var_0A = 1;
var_0B = 100;
var_0C = 101;
var_0D = 300;
level.var_2B23 = [];
level.var_B3E2 = [];
level.var_B3E0 = [];
level.var_B3DF = [];
level.var_41F3 = [];
level.var_41F2 = [];
level.var_41F1 = [];
for(var_0E = var_0C;var_0E <= var_0D;var_0E++)
{
var_0F = tablelookup(param_00,var_01,var_0E,var_04);
if(var_0F == "")
{
continue;
}
var_10 = tablelookup(param_00,var_01,var_0E,var_05);
if(var_10 != "")
{
level.var_2B23[var_0F] = var_10;
}
var_11 = tablelookup(param_00,var_01,var_0E,var_06);
if(var_11 != "")
{
level.var_B3E0[var_0F] = var_11;
}
var_12 = tablelookup(param_00,var_01,var_0E,var_07);
if(var_12 != "")
{
level.var_B3E2[var_0F] = [];
level.var_B3DF[var_0F] = [];
}
var_13 = tablelookup(param_00,var_01,var_0E,var_08);
if(var_13 != "")
{
level.var_41F2[var_0F] = var_13;
}
var_14 = tablelookup(param_00,var_01,var_0E,var_09);
if(var_14 != "")
{
level.var_41F3[var_0F] = [];
level.var_41F1[var_0F] = [];
}
}
level.var_1E5C = [];
for(var_0E = var_0A;var_0E <= var_0B;var_0E++)
{
var_15 = tablelookup(param_00,var_01,var_0E,var_02);
if(var_15 == "")
{
break;
}
var_16 = tablelookup(param_00,var_01,var_0E,var_03);
level.var_1E5C[var_15] = var_16;
var_17 = strtok(var_16," ");
foreach(var_19 in var_17)
{
if(isdefined(level.var_B3E2[var_19]))
{
level.var_B3E2[var_19][var_15] = 0;
}
if(isdefined(level.var_41F3[var_19]) && isdefined(level.var_41F2[var_15]))
{
level.var_41F3[var_19][var_15] = 0;
}
}
}
}
//Function Number: 33
func_AF6A(param_00,param_01,param_02,param_03,param_04)
{
var_05 = func_7925(param_00);
func_AF7A(param_00,var_05,param_01,param_03);
func_AF65(param_00,var_05,param_01,param_04);
}
//Function Number: 34
log_matchdata_at_game_end()
{
foreach(var_08, var_01 in level.var_B3DF)
{
foreach(var_07, var_03 in var_01)
{
foreach(var_06, var_05 in var_03)
{
if(var_08 == "match")
{
setmatchdata("matchData",var_06,int(var_05));
continue;
}
setmatchdata("players",int(var_07),var_06,int(var_05));
}
}
}
}
//Function Number: 35
func_AF60(param_00,param_01,param_02)
{
var_03 = func_785B(param_01);
var_04 = "analytics_cp_";
switch(param_02.size)
{
case 1:
bbprint(var_04 + param_00,var_03,param_02[0]);
break;
case 2:
bbprint(var_04 + param_00,var_03,param_02[0],param_02[1]);
break;
case 3:
bbprint(var_04 + param_00,var_03,param_02[0],param_02[1],param_02[2]);
break;
case 4:
bbprint(var_04 + param_00,var_03,param_02[0],param_02[1],param_02[2],param_02[3]);
break;
case 5:
bbprint(var_04 + param_00,var_03,param_02[0],param_02[1],param_02[2],param_02[3],param_02[4]);
break;
case 6:
bbprint(var_04 + param_00,var_03,param_02[0],param_02[1],param_02[2],param_02[3],param_02[4],param_02[5]);
break;
case 7:
bbprint(var_04 + param_00,var_03,param_02[0],param_02[1],param_02[2],param_02[3],param_02[4],param_02[5],param_02[6]);
break;
case 8:
bbprint(var_04 + param_00,var_03,param_02[0],param_02[1],param_02[2],param_02[3],param_02[4],param_02[5],param_02[6],param_02[7]);
break;
case 9:
bbprint(var_04 + param_00,var_03,param_02[0],param_02[1],param_02[2],param_02[3],param_02[4],param_02[5],param_02[6],param_02[7],param_02[8]);
break;
case 10:
bbprint(var_04 + param_00,var_03,param_02[0],param_02[1],param_02[2],param_02[3],param_02[4],param_02[5],param_02[6],param_02[7],param_02[8],param_02[9]);
break;
}
}
//Function Number: 36
func_785B(param_00)
{
var_01 = "";
foreach(var_04, var_03 in param_00)
{
var_01 = var_01 + var_03 + " " + level.var_2B23[var_03];
if(var_04 != param_00.size - 1)
{
var_01 = var_01 + " ";
}
}
return var_01;
}
//Function Number: 37
func_7925(param_00)
{
var_01 = level.var_1E5C[param_00];
return strtok(var_01," ");
}
//Function Number: 38
func_AF7A(param_00,param_01,param_02,param_03)
{
var_04 = 0;
foreach(var_06 in param_01)
{
if(func_9C41(var_06))
{
var_07 = param_03[var_04];
if(!isdefined(level.var_B3DF[var_06][var_07]))
{
level.var_B3DF[var_06][var_07] = level.var_B3E2[var_06];
}
level.var_B3DF[var_06][var_07][param_00] = level.var_B3DF[var_06][var_07][param_00] + param_02;
var_04++;
}
}
}
//Function Number: 39
func_AF65(param_00,param_01,param_02,param_03)
{
if(!isdefined(param_03))
{
return;
}
var_04 = 0;
if(func_9B8E(param_00))
{
foreach(var_06 in param_01)
{
if(func_9B8F(var_06))
{
var_07 = param_03[var_04];
if(!isdefined(level.var_41F1[var_06][var_07]))
{
level.var_41F1[var_06][var_07] = level.var_41F3[var_06];
}
level.var_41F1[var_06][var_07][param_00] = level.var_41F1[var_06][var_07][param_00] + param_02;
var_04++;
}
}
}
}
//Function Number: 40
func_9C41(param_00)
{
return isdefined(level.var_B3E2[param_00]);
}
//Function Number: 41
func_9B8F(param_00)
{
return isdefined(level.var_41F3[param_00]);
}
//Function Number: 42
func_9B8E(param_00)
{
return isdefined(level.var_41F2[param_00]);
}
//Function Number: 43
func_13DFF()
{
setclientmatchdata("waves_survived",level.wave_num);
setclientmatchdata("time_survived",level.var_118DB);
setclientmatchdata("scoreboardPlayerCount",level.players.size);
setclientmatchdata("map",level.script);
if(isdefined(level.write_global_clientmatchdata_func))
{
[[ level.write_global_clientmatchdata_func ]]();
}
}
//Function Number: 44
func_13DFD(param_00,param_01)
{
setclientmatchdata("player",param_01,"username",param_00.name);
setclientmatchdata("player",param_01,"rank",param_00 scripts\cp\_persistence::func_7BAA());
if(!isdefined(param_00.var_CFC3))
{
return;
}
setclientmatchdata("player",param_01,"characterIndex",param_00.var_CFC3);
var_02 = level.var_41F1["player"][param_00.var_41F0];
if(isdefined(var_02))
{
foreach(var_05, var_04 in var_02)
{
setclientmatchdata("player",param_01,var_05,int(var_04));
}
}
if(isdefined(level.var_6324))
{
[[ level.var_6324 ]](param_00,param_01);
}
}