IL-GSC/AW/PC/MP/maps/mp/_matchdata.gsc
2023-10-27 03:49:01 -04:00

1663 lines
52 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps/mp/_matchdata.gsc
* Game: Call of Duty: Advanced Warfare
* Platform: PC
* Function Count: 38
* Decompile Time: 641 ms
* Timestamp: 10/27/2023 1:49:05 AM
*******************************************************************/
//Function Number: 1
init()
{
if(!isdefined(game["gamestarted"]))
{
setmatchdatadef("mp/matchdata.def");
setmatchdata("map",level.script);
if(level.hardcoremode)
{
var_00 = level.gametype + " hc";
setmatchdata("gametype",var_00);
}
else
{
setmatchdata("gametype",level.gametype);
}
setmatchdata("buildVersion",getbuildversion());
setmatchdata("buildNumber",getbuildnumber());
setmatchdataid();
}
level.maxlives = 490;
level.maxevents = 150;
level.maxkillstreaks = 64;
level.maxlogclients = 30;
level.maxnumchallengesperplayer = 5;
level.maxnumawardsperplayer = 10;
level.maxloadouts = 10;
level thread gameendlistener();
if(getdvar("virtualLobbyActive") != "1")
{
level thread reconlogplayerinfo();
}
}
//Function Number: 2
matchstarted()
{
if(getdvar("virtualLobbyActive") == "1")
{
return;
}
if(getdvar("mapname") == getdvar("virtualLobbyMap"))
{
return;
}
sysprint("MatchStarted: Completed");
var_00 = getplaylistname();
setmatchdata("playlistName",var_00);
var_01 = getlocaltimestring();
setmatchdata("localTimeStringAtMatchStart",var_01);
if(getmatchstarttimeutc() == 0)
{
setmatchdata("startTimeUTC",getsystemtime());
}
setmatchdata("iseSports",maps\mp\_utility::ismlgmatch());
if(maps\mp\_utility::privatematch())
{
setmatchdata("privateMatch",1);
}
if(maps\mp\_utility::practiceroundgame())
{
setmatchdata("practiceRound",1);
}
if(!maps\mp\_utility::isaugmentedgamemode())
{
setmatchdata("classicMode",1);
}
if(maps\mp\_utility::isdivisionmode())
{
setmatchdata("divisionMode",1);
}
var_02 = 0;
if(isdefined(level.iszombiegame) && level.iszombiegame && isdefined(game["start_in_zmb_hard_mode"]) && game["start_in_zmb_hard_mode"])
{
var_02 = 1;
}
setmatchdata("isHardMode",var_02);
thread logbreadcrumbdata();
thread accumulateplayerpingdata();
}
//Function Number: 3
logbreadcrumbdata()
{
level endon("game_ended");
for(;;)
{
var_00 = maps\mp\_utility::getgametimepassedseconds();
foreach(var_02 in level.players)
{
if(isbot(var_02) || istestclient(var_02))
{
continue;
}
if(maps\mp\_utility::isreallyalive(var_02) && isdefined(var_02.lifeid) && canloglife(var_02.lifeid))
{
var_03 = 31;
if(isdefined(var_02.lastshotby))
{
var_03 = var_02.lastshotby;
}
recordbreadcrumbdataforplayer(var_02,var_02.lifeid,var_00,var_03);
var_02.lastshotby = undefined;
}
}
if(isdefined(level.iszombiegame) && level.iszombiegame)
{
wait(5);
continue;
}
wait(2);
}
}
//Function Number: 4
accumulateplayerpingdata()
{
level endon("game_ended");
for(;;)
{
foreach(var_01 in level.players)
{
if(isbot(var_01) || istestclient(var_01))
{
continue;
}
if(!isdefined(var_01.pers["pingAccumulation"]) || !isdefined(var_01.pers["minPing"]) || !isdefined(var_01.pers["maxPing"]) || !isdefined(var_01.pers["pingSampleCount"]))
{
continue;
}
var_02 = var_01 getcurrentping();
var_01.pers["pingAccumulation"] = var_01.pers["pingAccumulation"] + var_02;
var_01.pers["pingSampleCount"]++;
if(var_01.pers["pingSampleCount"] > 5 && var_02 > 0)
{
if(var_02 > var_01.pers["maxPing"])
{
var_01.pers["maxPing"] = var_02;
}
if(var_02 < var_01.pers["minPing"])
{
var_01.pers["minPing"] = var_02;
}
}
}
wait(2);
}
}
//Function Number: 5
getmatchstarttimeutc()
{
return getmatchdata("startTimeUTC");
}
//Function Number: 6
logkillstreakevent(param_00,param_01)
{
if(!canlogclient(self) || !canlogkillstreak())
{
return;
}
var_02 = getmatchdata("killstreakCount");
setmatchdata("killstreakCount",var_02 + 1);
setmatchdata("killstreaks",var_02,"eventType",param_00);
setmatchdata("killstreaks",var_02,"player",self.clientid);
setmatchdata("killstreaks",var_02,"eventStartTimeDeciSecondsFromMatchStart",maps\mp\_utility::gettimepasseddeciseconds());
setmatchdata("killstreaks",var_02,"eventPos",0,int(param_01[0]));
setmatchdata("killstreaks",var_02,"eventPos",1,int(param_01[1]));
setmatchdata("killstreaks",var_02,"eventPos",2,int(param_01[2]));
setmatchdata("killstreaks",var_02,"index",var_02);
setmatchdata("killstreaks",var_02,"coopPlayerIndex",255);
self.currentkillstreakindex = var_02;
reconspatialevent(param_01,"script_mp_killstreak: eventType %s, player_name %s, player %d, gameTime %d",param_00,self.name,self.clientid,gettime());
}
//Function Number: 7
loggameevent(param_00,param_01)
{
if(!canlogclient(self) || !canlogevent())
{
return;
}
var_02 = getmatchdata("eventCount");
setmatchdata("eventCount",var_02 + 1);
setmatchdata("events",var_02,"eventType",param_00);
setmatchdata("events",var_02,"player",self.clientid);
setmatchdata("events",var_02,"eventTimeDeciSecondsFromMatchStart",maps\mp\_utility::gettimepasseddeciseconds());
setmatchdata("events",var_02,"eventPos",0,int(param_01[0]));
setmatchdata("events",var_02,"eventPos",1,int(param_01[1]));
setmatchdata("events",var_02,"eventPos",2,int(param_01[2]));
reconspatialevent(param_01,"script_mp_event: event_type %s, player_name %s, player %d, gameTime %d",param_00,self.name,self.clientid,gettime());
}
//Function Number: 8
logkillevent(param_00,param_01)
{
if(!canloglife(param_00))
{
return;
}
setmatchdata("lives",param_00,"modifiers",param_01,1);
}
//Function Number: 9
logmultikill(param_00,param_01)
{
if(!canloglife(param_00))
{
return;
}
setmatchdata("lives",param_00,"multikill",param_01);
}
//Function Number: 10
logplayerlife(param_00)
{
if(!canlogclient(self) || !canloglife(self.lifeid))
{
return;
}
var_01 = gettime() - self.spawntime;
self.totallifetime = self.totallifetime + var_01;
var_02 = maps\mp\_utility::convertmillisecondstodecisecondsandclamptoshort(var_01);
setmatchdata("lives",self.lifeid,"player",self.clientid);
setmatchdata("lives",self.lifeid,"spawnPos",0,int(self.spawnpos[0]));
setmatchdata("lives",self.lifeid,"spawnPos",1,int(self.spawnpos[1]));
setmatchdata("lives",self.lifeid,"spawnPos",2,int(self.spawnpos[2]));
setmatchdata("lives",self.lifeid,"wasTacticalInsertion",self.wasti);
setmatchdata("lives",self.lifeid,"team",self.team);
if(isdefined(self.spawntimedecisecondsfrommatchstart))
{
setmatchdata("lives",self.lifeid,"spawnTimeDeciSecondsFromMatchStart",self.spawntimedecisecondsfrommatchstart);
}
else
{
setmatchdata("lives",self.lifeid,"spawnTimeDeciSecondsFromMatchStart",-1);
}
setmatchdata("lives",self.lifeid,"durationDeciSeconds",var_02);
var_03 = logloadout();
setmatchdata("lives",self.lifeid,"loadoutIndex",var_03);
var_04 = maps\mp\_utility::clamptoshort(self.pers["score"] - self.scoreatlifestart);
setmatchdata("lives",self.lifeid,"scoreEarnedDuringThisLife",var_04);
if(isdefined(self.pers["summary"]) && isdefined(self.pers["summary"]["xp"]))
{
if(isdefined(self.xpatlifestart))
{
var_05 = maps\mp\_utility::clamptoshort(self.pers["summary"]["xp"] - self.xpatlifestart);
setmatchdata("lives",self.lifeid,"xpEarnedDuringThisLife",var_05);
}
}
}
//Function Number: 11
logplayerxp(param_00,param_01)
{
if(!canlogclient(self))
{
return;
}
setmatchdata("players",self.clientid,param_01,param_00);
}
//Function Number: 12
logcompletedchallenge(param_00)
{
if(!isplayer(self) || !canlogclient(self) || isbot(self))
{
return;
}
var_01 = getmatchdata("players",self.clientid,"challengeCount");
if(var_01 < level.maxnumchallengesperplayer)
{
setmatchdata("players",self.clientid,"challenges",var_01,param_00);
setmatchdata("players",self.clientid,"challengeCount",var_01 + 1);
}
}
//Function Number: 13
logloadout()
{
var_00 = 255;
if(!canlogclient(self) || !canloglife(self.lifeid) || self.curclass == "gamemode")
{
return var_00;
}
var_01 = self.curclass;
var_02 = 0;
for(var_02 = 0;var_02 < level.maxloadouts;var_02++)
{
var_03 = getmatchdata("players",self.clientid,"loadouts",var_02,"slotUsed");
if(!var_03)
{
break;
}
else
{
var_04 = getmatchdata("players",self.clientid,"loadouts",var_02,"className");
if(var_01 == var_04)
{
return var_02;
}
}
}
if(var_02 == level.maxloadouts)
{
return var_00;
}
setmatchdata("players",self.clientid,"loadouts",var_02,"slotUsed",1);
setmatchdata("players",self.clientid,"loadouts",var_02,"className",var_01);
var_05 = "";
var_06 = "";
var_07 = "";
var_08 = "";
var_09 = [];
var_0A = [];
var_0B = "";
var_0C = 0;
var_0D = "";
var_0E = "";
var_0F = 0;
if(var_01 == "copycat")
{
var_10 = self.pers["copyCatLoadout"];
var_11 = var_10["loadoutPrimary"];
var_12 = var_10["loadoutPrimaryAttachment"];
var_13 = var_10["loadoutPrimaryAttachment2"];
var_14 = var_10["loadoutPrimaryAttachment3"];
var_15 = var_10["loadoutPrimaryCamo"];
var_16 = var_10["loadoutPrimaryReticle"];
var_17 = var_10["loadoutSecondary"];
var_18 = var_10["loadoutSecondaryAttachment"];
var_19 = var_10["loadoutSecondaryAttachment2"];
var_1A = var_10["loadoutSecondaryCamo"];
var_1B = var_10["loadoutSecondaryReticle"];
var_0B = var_10["loadoutEquipment"];
var_0C = var_10["loadoutEquipmentExtra"];
var_0D = var_10["loadoutOffhand"];
var_0F = var_10["loadoutOffhandExtra"];
for(var_1C = 0;var_1C < 6;var_1C++)
{
var_09[var_1C] = var_10["loadoutPerks"][var_1C];
}
for(var_1C = 0;var_1C < 3;var_1C++)
{
var_0A[var_1C] = var_10["loadoutWildcards"][var_1C];
}
var_05 = var_10["loadoutKillstreaks"][0];
var_1D = var_10["loadoutKillstreakModules"][0][0];
var_1E = var_10["loadoutKillstreakModules"][0][1];
var_1F = var_10["loadoutKillstreakModules"][0][2];
var_06 = var_10["loadoutKillstreaks"][1];
var_20 = var_10["loadoutKillstreakModules"][1][0];
var_21 = var_10["loadoutKillstreakModules"][1][1];
var_22 = var_10["loadoutKillstreakModules"][1][2];
var_07 = var_10["loadoutKillstreaks"][2];
var_23 = var_10["loadoutKillstreakModules"][2][0];
var_24 = var_10["loadoutKillstreakModules"][2][1];
var_25 = var_10["loadoutKillstreakModules"][2][2];
var_08 = var_10["loadoutKillstreaks"][3];
var_26 = var_10["loadoutKillstreakModules"][3][0];
var_27 = var_10["loadoutKillstreakModules"][3][1];
var_28 = var_10["loadoutKillstreakModules"][3][2];
}
else if(issubstr(var_19,"custom"))
{
var_29 = maps\mp\_utility::getclassindex(var_19);
var_11 = maps\mp\gametypes\_class::cac_getweapon(var_29,0);
var_12 = maps\mp\gametypes\_class::cac_getweaponattachment(var_29,0);
var_13 = maps\mp\gametypes\_class::cac_getweaponattachmenttwo(var_29,0);
var_14 = maps\mp\gametypes\_class::cac_getweaponattachmentthree(var_29,0);
var_15 = maps\mp\gametypes\_class::cac_getweaponcamo(var_29,0);
for(var_1C = 0;var_1C < 6;var_1C++)
{
var_09[var_1C] = maps\mp\gametypes\_class::cac_getperk(var_29,var_1C);
}
for(var_1C = 0;var_1C < 3;var_1C++)
{
var_0A[var_1C] = maps\mp\gametypes\_class::cac_getwildcard(var_29,var_1C);
}
var_17 = maps\mp\gametypes\_class::cac_getweapon(var_29,1);
var_18 = maps\mp\gametypes\_class::cac_getweaponattachment(var_29,1);
var_19 = maps\mp\gametypes\_class::cac_getweaponattachmenttwo(var_29,1);
var_1A = maps\mp\gametypes\_class::cac_getweaponcamo(var_29,1);
var_0B = maps\mp\gametypes\_class::cac_getequipment(var_29,0);
var_0C = maps\mp\gametypes\_class::cac_getequipmentextra(var_29,0);
var_0D = maps\mp\gametypes\_class::cac_getoffhand(var_29);
var_05 = maps\mp\gametypes\_class::cac_getkillstreak(var_29,0);
var_1D = maps\mp\gametypes\_class::cac_getkillstreakmodule(var_29,0,0);
var_1E = maps\mp\gametypes\_class::cac_getkillstreakmodule(var_29,0,1);
var_1F = maps\mp\gametypes\_class::cac_getkillstreakmodule(var_29,0,2);
var_06 = maps\mp\gametypes\_class::cac_getkillstreak(var_29,1);
var_20 = maps\mp\gametypes\_class::cac_getkillstreakmodule(var_29,1,0);
var_21 = maps\mp\gametypes\_class::cac_getkillstreakmodule(var_29,1,1);
var_22 = maps\mp\gametypes\_class::cac_getkillstreakmodule(var_29,1,2);
var_07 = maps\mp\gametypes\_class::cac_getkillstreak(var_29,2);
var_23 = maps\mp\gametypes\_class::cac_getkillstreakmodule(var_29,2,0);
var_24 = maps\mp\gametypes\_class::cac_getkillstreakmodule(var_29,2,1);
var_25 = maps\mp\gametypes\_class::cac_getkillstreakmodule(var_29,2,2);
var_08 = maps\mp\gametypes\_class::cac_getkillstreak(var_29,3);
var_26 = maps\mp\gametypes\_class::cac_getkillstreakmodule(var_29,3,0);
var_27 = maps\mp\gametypes\_class::cac_getkillstreakmodule(var_29,3,1);
var_28 = maps\mp\gametypes\_class::cac_getkillstreakmodule(var_29,3,2);
}
else if(issubstr(var_1A,"practice"))
{
var_29 = maps\mp\_utility::getclassindex(var_1A);
var_29 = self.pers["practiceRoundClasses"][var_29];
var_11 = maps\mp\gametypes\_class::table_getweapon(level.practiceroundclasstablename,var_29,0);
var_12 = maps\mp\gametypes\_class::table_getweaponattachment(level.practiceroundclasstablename,var_29,0,0);
var_13 = maps\mp\gametypes\_class::table_getweaponattachment(level.practiceroundclasstablename,var_29,0,1);
var_14 = maps\mp\gametypes\_class::table_getweaponattachment(level.practiceroundclasstablename,var_29,0,2);
var_15 = maps\mp\gametypes\_class::table_getweaponcamo(level.practiceroundclasstablename,var_29,0);
var_17 = maps\mp\gametypes\_class::table_getweapon(level.practiceroundclasstablename,var_29,1);
var_18 = maps\mp\gametypes\_class::table_getweaponattachment(level.practiceroundclasstablename,var_29,1,0);
var_19 = maps\mp\gametypes\_class::table_getweaponattachment(level.practiceroundclasstablename,var_29,1,1);
var_1A = maps\mp\gametypes\_class::table_getweaponcamo(level.practiceroundclasstablename,var_29,1);
var_0B = maps\mp\gametypes\_class::table_getequipment(level.practiceroundclasstablename,var_29);
var_0C = maps\mp\gametypes\_class::table_getequipmentextra(level.practiceroundclasstablename,var_29);
var_0D = maps\mp\gametypes\_class::table_getoffhand(level.practiceroundclasstablename,var_29);
for(var_1C = 0;var_1C < 6;var_1C++)
{
var_09[var_1C] = maps\mp\gametypes\_class::table_getperk(level.practiceroundclasstablename,var_29,var_1C);
}
for(var_1C = 0;var_1C < 3;var_1C++)
{
var_0A[var_1C] = maps\mp\gametypes\_class::table_getwildcard(level.practiceroundclasstablename,var_29,var_1C);
}
var_05 = maps\mp\gametypes\_class::table_getkillstreak(level.practiceroundclasstablename,var_29,0);
var_1D = maps\mp\gametypes\_class::table_getkillstreakmodule(level.practiceroundclasstablename,var_29,0,0);
var_1E = maps\mp\gametypes\_class::table_getkillstreakmodule(level.practiceroundclasstablename,var_29,0,1);
var_1F = maps\mp\gametypes\_class::table_getkillstreakmodule(level.practiceroundclasstablename,var_29,0,2);
var_06 = maps\mp\gametypes\_class::table_getkillstreak(level.practiceroundclasstablename,var_29,1);
var_20 = maps\mp\gametypes\_class::table_getkillstreakmodule(level.practiceroundclasstablename,var_29,1,0);
var_21 = maps\mp\gametypes\_class::table_getkillstreakmodule(level.practiceroundclasstablename,var_29,1,1);
var_22 = maps\mp\gametypes\_class::table_getkillstreakmodule(level.practiceroundclasstablename,var_29,1,2);
var_07 = maps\mp\gametypes\_class::table_getkillstreak(level.practiceroundclasstablename,var_29,2);
var_23 = maps\mp\gametypes\_class::table_getkillstreakmodule(level.practiceroundclasstablename,var_29,2,0);
var_24 = maps\mp\gametypes\_class::table_getkillstreakmodule(level.practiceroundclasstablename,var_29,2,1);
var_25 = maps\mp\gametypes\_class::table_getkillstreakmodule(level.practiceroundclasstablename,var_29,2,2);
var_08 = maps\mp\gametypes\_class::table_getkillstreak(level.practiceroundclasstablename,var_29,3);
var_26 = maps\mp\gametypes\_class::table_getkillstreakmodule(level.practiceroundclasstablename,var_29,3,0);
var_27 = maps\mp\gametypes\_class::table_getkillstreakmodule(level.practiceroundclasstablename,var_29,3,1);
var_28 = maps\mp\gametypes\_class::table_getkillstreakmodule(level.practiceroundclasstablename,var_29,3,2);
}
else
{
var_29 = maps\mp\_utility::getclassindex(var_1A);
var_11 = maps\mp\gametypes\_class::table_getweapon(level.classtablename,var_29,0);
var_12 = maps\mp\gametypes\_class::table_getweaponattachment(level.classtablename,var_29,0,0);
var_13 = maps\mp\gametypes\_class::table_getweaponattachment(level.classtablename,var_29,0,1);
var_14 = maps\mp\gametypes\_class::table_getweaponattachment(level.classtablename,var_29,0,2);
var_15 = maps\mp\gametypes\_class::table_getweaponcamo(level.classtablename,var_29,0);
for(var_1C = 0;var_1C < 6;var_1C++)
{
var_09[var_1C] = maps\mp\gametypes\_class::table_getperk(level.classtablename,var_29,var_1C);
}
for(var_1C = 0;var_1C < 3;var_1C++)
{
var_0A[var_1C] = maps\mp\gametypes\_class::table_getwildcard(level.classtablename,var_29,var_1C);
}
var_17 = maps\mp\gametypes\_class::table_getweapon(level.classtablename,var_29,1);
var_18 = maps\mp\gametypes\_class::table_getweaponattachment(level.classtablename,var_29,1,0);
var_19 = maps\mp\gametypes\_class::table_getweaponattachment(level.classtablename,var_29,1,1);
var_1A = maps\mp\gametypes\_class::table_getweaponcamo(level.classtablename,var_29,1);
var_0B = maps\mp\gametypes\_class::table_getequipment(level.classtablename,var_29);
var_0C = maps\mp\gametypes\_class::table_getequipmentextra(level.classtablename,var_29);
var_0D = maps\mp\gametypes\_class::table_getoffhand(level.classtablename,var_29);
var_05 = maps\mp\gametypes\_class::table_getkillstreak(level.classtablename,var_29,0);
var_1D = maps\mp\gametypes\_class::table_getkillstreakmodule(level.classtablename,var_29,0,0);
var_1E = maps\mp\gametypes\_class::table_getkillstreakmodule(level.classtablename,var_29,0,1);
var_1F = maps\mp\gametypes\_class::table_getkillstreakmodule(level.classtablename,var_29,0,2);
var_06 = maps\mp\gametypes\_class::table_getkillstreak(level.classtablename,var_29,1);
var_20 = maps\mp\gametypes\_class::table_getkillstreakmodule(level.classtablename,var_29,1,0);
var_21 = maps\mp\gametypes\_class::table_getkillstreakmodule(level.classtablename,var_29,1,1);
var_22 = maps\mp\gametypes\_class::table_getkillstreakmodule(level.classtablename,var_29,1,2);
var_07 = maps\mp\gametypes\_class::table_getkillstreak(level.classtablename,var_29,2);
var_23 = maps\mp\gametypes\_class::table_getkillstreakmodule(level.classtablename,var_29,2,0);
var_24 = maps\mp\gametypes\_class::table_getkillstreakmodule(level.classtablename,var_29,2,1);
var_25 = maps\mp\gametypes\_class::table_getkillstreakmodule(level.classtablename,var_29,2,2);
var_08 = maps\mp\gametypes\_class::table_getkillstreak(level.classtablename,var_29,3);
var_26 = maps\mp\gametypes\_class::table_getkillstreakmodule(level.classtablename,var_29,3,0);
var_27 = maps\mp\gametypes\_class::table_getkillstreakmodule(level.classtablename,var_29,3,1);
var_28 = maps\mp\gametypes\_class::table_getkillstreakmodule(level.classtablename,var_29,3,2);
}
var_12 = maps\mp\_utility::attachmentmap_tobase(var_12);
var_13 = maps\mp\_utility::attachmentmap_tobase(var_13);
var_14 = maps\mp\_utility::attachmentmap_tobase(var_14);
var_18 = maps\mp\_utility::attachmentmap_tobase(var_18);
var_19 = maps\mp\_utility::attachmentmap_tobase(var_19);
setmatchdata("players",self.clientid,"loadouts",var_02,"primaryWeapon",var_11);
setmatchdata("players",self.clientid,"loadouts",var_02,"primaryAttachments",0,var_12);
setmatchdata("players",self.clientid,"loadouts",var_02,"primaryAttachments",1,var_13);
setmatchdata("players",self.clientid,"loadouts",var_02,"primaryAttachments",2,var_14);
for(var_1C = 0;var_1C < 6;var_1C++)
{
setmatchdata("players",self.clientid,"loadouts",var_02,"perkSlots",var_1C,var_09[var_1C]);
}
for(var_1C = 0;var_1C < 3;var_1C++)
{
setmatchdata("players",self.clientid,"loadouts",var_02,"wildcardSlots",var_1C,var_0A[var_1C]);
}
setmatchdata("players",self.clientid,"loadouts",var_02,"secondaryWeapon",var_17);
setmatchdata("players",self.clientid,"loadouts",var_02,"secondaryAttachments",0,var_18);
setmatchdata("players",self.clientid,"loadouts",var_02,"secondaryAttachments",1,var_19);
setmatchdata("players",self.clientid,"loadouts",var_02,"offhandWeapon",var_0D);
setmatchdata("players",self.clientid,"loadouts",var_02,"equipment",var_0B);
setmatchdata("players",self.clientid,"loadouts",var_02,"equipmentWeaponExtra",var_0C);
setmatchdata("players",self.clientid,"loadouts",var_02,"assaultStreaks",0,"streak",var_05);
setmatchdata("players",self.clientid,"loadouts",var_02,"assaultStreaks",0,"modules",0,var_1D);
setmatchdata("players",self.clientid,"loadouts",var_02,"assaultStreaks",0,"modules",1,var_1E);
setmatchdata("players",self.clientid,"loadouts",var_02,"assaultStreaks",0,"modules",2,var_1F);
setmatchdata("players",self.clientid,"loadouts",var_02,"assaultStreaks",1,"streak",var_06);
setmatchdata("players",self.clientid,"loadouts",var_02,"assaultStreaks",1,"modules",0,var_20);
setmatchdata("players",self.clientid,"loadouts",var_02,"assaultStreaks",1,"modules",1,var_21);
setmatchdata("players",self.clientid,"loadouts",var_02,"assaultStreaks",1,"modules",2,var_22);
setmatchdata("players",self.clientid,"loadouts",var_02,"assaultStreaks",2,"streak",var_07);
setmatchdata("players",self.clientid,"loadouts",var_02,"assaultStreaks",2,"modules",0,var_23);
setmatchdata("players",self.clientid,"loadouts",var_02,"assaultStreaks",2,"modules",1,var_24);
setmatchdata("players",self.clientid,"loadouts",var_02,"assaultStreaks",2,"modules",2,var_25);
setmatchdata("players",self.clientid,"loadouts",var_02,"assaultStreaks",3,"streak",var_08);
setmatchdata("players",self.clientid,"loadouts",var_02,"assaultStreaks",3,"modules",0,var_26);
setmatchdata("players",self.clientid,"loadouts",var_02,"assaultStreaks",3,"modules",1,var_27);
setmatchdata("players",self.clientid,"loadouts",var_02,"assaultStreaks",3,"modules",2,var_28);
thread recon_log_loadout(self,var_11,var_12,var_13,var_14,var_15,var_17,var_18,var_19,var_1A,var_0B,var_0C,var_0D,var_09[0],var_09[1],var_09[2],var_09[3],var_09[4],var_09[5],var_0A[0],var_0A[1],var_0A[2],var_05,var_1D,var_1E,var_1F,var_06,var_20,var_21,var_22,var_07,var_23,var_24,var_25,var_08,var_26,var_27,var_28);
return var_02;
}
//Function Number: 14
recon_log_loadout(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B,param_0C,param_0D,param_0E,param_0F,param_10,param_11,param_12,param_13,param_14,param_15,param_16,param_17,param_18,param_19,param_1A,param_1B,param_1C,param_1D,param_1E,param_1F,param_20,param_21,param_22,param_23,param_24,param_25)
{
var_26 = isbot(param_00) || istestclient(param_00);
var_27 = "_matchdata.gsc";
var_28 = param_00.spawntime;
var_29 = param_00.curclass;
var_2A = param_00.name;
reconevent("@"script_mp_loadout_gear: script_file %s, gameTime %d, player_name %s, is_bot %b, class %s, primary_weapon %s, primary_attach_1 %s, primary_attach_2 %s, primary_attach_3 %s, primary_camo %s, secondary_weapon %s, secondary_attach_1 %s, secondary_attach_2 %s, secondary_camo %s, equipment %s, equipment_extra %b, exo_ability %s",var_27,var_28,var_2A,var_26,var_29,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B,param_0C);
reconevent("script_mp_loadout_perks: script_file %s, gameTime %d, player_name %s, perk_1 %s, perk_2 %s, perk_3 %s, perk_4 %s, perk_5 %s, perk_6 %s, wildcard_1 %s, wildcard_2 %s, wildcard_3 %s",var_27,var_28,var_2A,param_0D,param_0E,param_0F,param_10,param_11,param_12,param_13,param_14,param_15);
reconevent("@"script_mp_loadout_killstreaks: script_file %s, gameTime %d, player_name %s, killstreak_1 %s, killstreak_1_module_a %s, killstreak_1_module_b %s, killstreak_1_module_c %s, killstreak_2 %s, killstreak_2_module_a %s, killstreak_2_module_b %s, killstreak_2_module_c %s, killstreak_3 %s, killstreak_3_module_a %s, killstreak_3_module_b %s, killstreak_3_module_c %s, killstreak_4 %s, killstreak_4_module_a %s, killstreak_4_module_b %s, killstreak_4_module_c %s",var_27,var_28,var_2A,param_16,param_17,param_18,param_19,param_1A,param_1B,param_1C,param_1D,param_1E,param_1F,param_20,param_21,param_22,param_23,param_24,param_25);
}
//Function Number: 15
logplayerandkillerexomovedata(param_00,param_01)
{
if(!canlogclient(self) || isplayer(param_01) && !canlogclient(param_01) || !canloglife(param_00))
{
return;
}
if(param_00 >= level.maxlives)
{
return;
}
var_02 = maps\mp\_utility::gettimepasseddecisecondsincludingrounds();
if(isdefined(self.exocount["exo_boost"]) && isdefined(self.exomostrecenttimedeciseconds["exo_boost"]))
{
var_03 = maps\mp\_utility::clamptobyte(self.exocount["exo_boost"]);
setmatchdata("lives",param_00,"numberOfBoosts",var_03);
var_04 = maps\mp\_utility::clamptobyte(var_02 - self.exomostrecenttimedeciseconds["exo_boost"]);
setmatchdata("lives",param_00,"victimDeciSecondsSinceLastBoost",var_04);
}
if(isdefined(self.exocount["ground_slam"]) && isdefined(self.exomostrecenttimedeciseconds["ground_slam"]))
{
var_03 = maps\mp\_utility::clamptobyte(self.exocount["ground_slam"]);
setmatchdata("lives",param_00,"numberOfBoostsSlams",var_03);
var_04 = maps\mp\_utility::clamptobyte(var_02 - self.exomostrecenttimedeciseconds["ground_slam"]);
setmatchdata("lives",param_00,"victimDeciSecondsSinceLastBoostSlam",var_04);
}
if(isdefined(self.exocount["exo_dodge"]) && isdefined(self.exomostrecenttimedeciseconds["exo_dodge"]))
{
var_03 = maps\mp\_utility::clamptobyte(self.exocount["exo_dodge"]);
setmatchdata("lives",param_00,"numberOfDodges",var_03);
var_04 = maps\mp\_utility::clamptobyte(var_02 - self.exomostrecenttimedeciseconds["exo_dodge"]);
setmatchdata("lives",param_00,"victimDeciSecondsSinceLastDodge",var_04);
}
if(isdefined(self.exocount["exo_slide"]))
{
var_03 = maps\mp\_utility::clamptobyte(self.exocount["exo_slide"]);
setmatchdata("lives",param_00,"numberOfKneeSlides",var_03);
}
if(isplayer(param_01))
{
if(!isdefined(param_01.exomostrecenttimedeciseconds))
{
return;
}
if(isdefined(param_01.exomostrecenttimedeciseconds["exo_boost"]))
{
var_04 = maps\mp\_utility::clamptobyte(var_02 - param_01.exomostrecenttimedeciseconds["exo_boost"]);
setmatchdata("lives",param_00,"killerDeciSecondsSinceLastBoost",var_04);
}
if(isdefined(param_01.exomostrecenttimedeciseconds["ground_slam"]))
{
var_04 = maps\mp\_utility::clamptobyte(var_02 - param_01.exomostrecenttimedeciseconds["ground_slam"]);
setmatchdata("lives",param_00,"killerDeciSecondsSinceLastBoostSlam",var_04);
}
if(isdefined(param_01.exomostrecenttimedeciseconds["exo_dodge"]))
{
var_04 = maps\mp\_utility::clamptobyte(var_02 - param_01.exomostrecenttimedeciseconds["exo_dodge"]);
setmatchdata("lives",param_00,"killerDeciSecondsSinceLastDodge",var_04);
}
}
}
//Function Number: 16
logplayerandkilleradsandfov(param_00,param_01)
{
if(!canlogclient(self) || isplayer(param_01) && !canlogclient(param_01) || !canloglife(param_00))
{
return;
}
if(param_00 >= level.maxlives)
{
return;
}
if(isplayer(param_01))
{
if(param_01 playerads() > 0.5)
{
setmatchdata("lives",param_00,"killerWasADS",1);
}
var_02 = param_01 geteye();
if(common_scripts\utility::within_fov(var_02,param_01.angles,self.origin,cos(getdvarfloat("cg_fov"))))
{
setmatchdata("lives",param_00,"victimWasInKillersFOV",1);
}
var_03 = self geteye();
if(common_scripts\utility::within_fov(var_03,self.angles,param_01.origin,cos(getdvarfloat("cg_fov"))))
{
setmatchdata("lives",param_00,"killerWasInVictimsFOV",1);
}
}
if(self playerads() > 0.5)
{
setmatchdata("lives",param_00,"victimWasADS",1);
}
}
//Function Number: 17
logplayerandkillershieldcloakhoveractive(param_00,param_01)
{
if(!canlogclient(self) || isplayer(param_01) && !canlogclient(param_01) || !canloglife(param_00))
{
return;
}
if(param_00 >= level.maxlives)
{
return;
}
if(isdefined(self.exo_shield_on) && self.exo_shield_on)
{
setmatchdata("lives",param_00,"victimShieldActive",1);
}
if(isdefined(self.exo_hover_on) && self.exo_hover_on)
{
setmatchdata("lives",param_00,"victimHoverActive",1);
}
if(self iscloaked())
{
setmatchdata("lives",param_00,"victimCloakingActive",1);
}
if(isplayer(param_01))
{
if(isdefined(param_01.exo_shield_on) && param_01.exo_shield_on)
{
setmatchdata("lives",param_00,"killerShieldActive",1);
}
if(isdefined(param_01.exo_hover_on) && param_01.exo_hover_on)
{
setmatchdata("lives",param_00,"killerHoverActive",1);
}
if(param_01 iscloaked())
{
setmatchdata("lives",param_00,"killerCloakingActive",1);
}
}
}
//Function Number: 18
determineweaponnameandattachments(param_00,param_01)
{
var_02 = undefined;
var_03 = undefined;
if(param_00 == "none")
{
var_02 = "none";
var_03 = "none";
}
else
{
var_02 = weaponinventorytype(param_00);
var_03 = weaponclass(param_00);
}
if(issubstr(param_00,"destructible"))
{
param_00 = "destructible";
}
var_04 = [];
var_04[0] = "None";
var_04[1] = "None";
var_04[2] = "None";
var_05 = "";
if(isdefined(var_02) && var_02 == "primary" || var_02 == "altmode" && var_03 == "pistol" || var_03 == "smg" || var_03 == "rifle" || var_03 == "spread" || var_03 == "mg" || var_03 == "grenade" || var_03 == "rocketlauncher" || var_03 == "sniper" || var_03 == "cone" || var_03 == "beam" || var_03 == "shield")
{
if(var_02 == "altmode")
{
if(isdefined(param_01))
{
param_00 = param_01;
}
}
var_06 = maps\mp\_utility::getweaponnametokens(param_00);
var_05 = maps\mp\_utility::getbaseweaponname(param_00);
if(var_06[0] == "iw5" || var_06[0] == "iw6")
{
var_07 = getweaponattachments(param_00);
var_08 = 0;
foreach(var_0A in var_07)
{
if(!maps\mp\_utility::isattachment(var_0A))
{
continue;
}
var_0B = maps\mp\_utility::attachmentmap_tobase(var_0A);
if(var_08 <= 2)
{
var_04[var_08] = var_0B;
var_08++;
continue;
}
break;
}
}
else if(var_06[0] == "alt")
{
var_0D = var_06[1] + "_" + var_06[2];
var_05 = var_0D;
if(isdefined(var_06[4]) && maps\mp\_utility::isattachment(var_06[4]))
{
var_0B = maps\mp\_utility::attachmentmap_tobase(var_06[4]);
var_04[0] = var_0B;
}
if(isdefined(var_06[5]) && maps\mp\_utility::isattachment(var_06[5]))
{
var_0B = maps\mp\_utility::attachmentmap_tobase(var_06[5]);
var_04[1] = var_0B;
}
}
else
{
var_06[var_06.size - 1] = undefined;
if(isdefined(var_06[1]) && var_02 != "altmode")
{
var_0B = maps\mp\_utility::attachmentmap_tobase(var_06[1]);
var_04[0] = var_0B;
}
if(isdefined(var_06[2]) && var_02 != "altmode")
{
var_0B = maps\mp\_utility::attachmentmap_tobase(var_06[2]);
var_04[1] = var_0B;
}
}
}
else if(var_02 == "item" || var_02 == "offhand")
{
var_05 = maps\mp\_utility::strip_suffix(param_00,"_lefthand");
var_05 = maps\mp\_utility::strip_suffix(var_05,"_mp");
}
else
{
var_05 = param_00;
}
var_0E = spawnstruct();
var_0E.weaponname = var_05;
var_0E.attachments = var_04;
var_0E.weapontype = var_02;
var_0E.weaponclass = var_03;
var_0E.weaponnamefull = param_00;
return var_0E;
}
//Function Number: 19
logfirefightshotshits(param_00,param_01)
{
if(!canlogclient(self) || isplayer(param_01) && !canlogclient(param_01) || !canloglife(param_00))
{
return;
}
if(!isplayer(param_01))
{
return;
}
if(param_00 >= level.maxlives)
{
return;
}
if(self.currentfirefightshots > 0)
{
setmatchdata("lives",param_00,"shots",maps\mp\_utility::clamptobyte(self.currentfirefightshots));
}
if(isdefined(param_01.enemyhitcounts) && isdefined(param_01.enemyhitcounts[self.guid]) && param_01.enemyhitcounts[self.guid] > 0)
{
setmatchdata("lives",param_00,"hits",maps\mp\_utility::clamptobyte(param_01.enemyhitcounts[self.guid]));
}
if(param_01.currentfirefightshots > 0)
{
setmatchdata("lives",param_00,"killerShots",maps\mp\_utility::clamptobyte(param_01.currentfirefightshots));
}
if(isdefined(self.enemyhitcounts) && isdefined(self.enemyhitcounts[param_01.guid]) && self.enemyhitcounts[param_01.guid] > 0)
{
setmatchdata("lives",param_00,"killerHits",maps\mp\_utility::clamptobyte(self.enemyhitcounts[param_01.guid]));
}
}
//Function Number: 20
logplayerandkillerstanceandmotionstate(param_00,param_01)
{
if(!canloglife(param_00))
{
return;
}
if(isplayer(self) && canlogclient(self))
{
var_02 = getstanceandmotionstateforplayer(self);
setmatchdata("lives",param_00,"victimStanceAndMotionState",var_02);
}
if(isplayer(param_01) && canlogclient(param_01))
{
var_02 = getstanceandmotionstateforplayer(param_01);
setmatchdata("lives",param_00,"killerStanceAndMotionState",var_02);
}
}
//Function Number: 21
logassists(param_00,param_01)
{
if(!canloglife(param_00))
{
return;
}
if(isplayer(self) && canlogclient(self))
{
if(isdefined(self.attackerdata))
{
var_02 = 0;
foreach(var_04 in self.attackerdata)
{
if(isplayer(var_04.attackerent))
{
if(var_04.attackerent != param_01)
{
setmatchdata("lives",param_00,"assists",var_02,"assistingPlayerIndex",var_04.attackerent.clientid);
setmatchdata("lives",param_00,"assists",var_02,"damage",maps\mp\_utility::clamptobyte(var_04.damage));
var_02++;
if(var_02 == 5)
{
break;
}
}
}
}
if(var_02 < 5)
{
for(var_06 = var_02;var_06 < 5;var_06++)
{
setmatchdata("lives",param_00,"assists",var_06,"assistingPlayerIndex",255);
}
return;
}
}
}
}
//Function Number: 22
logspecialassists(param_00,param_01)
{
if(!isplayer(self) || !canlogclient(self))
{
return;
}
if(!isplayer(param_00) || !canlogclient(param_00))
{
return;
}
var_02 = self.lifeid;
if(!canloglife(var_02))
{
return;
}
if(param_01 == "assist_emp" || param_01 == "assist_uav" || param_01 == "assist_uav_plus" || param_01 == "assist_riot_shield")
{
for(var_03 = 0;var_03 < 5;var_03++)
{
var_04 = getmatchdata("lives",var_02,"assists",var_03,"assistingPlayerIndex");
if(var_04 == param_00.clientid || var_04 == 255)
{
if(var_04 == 255)
{
setmatchdata("lives",var_02,"assists",var_03,"assistingPlayerIndex",param_00.clientid);
}
if(param_01 == "assist_emp")
{
setmatchdata("lives",var_02,"assists",var_03,"assistEMP",1);
}
else if(param_01 == "assist_uav")
{
setmatchdata("lives",var_02,"assists",var_03,"assistUAV",1);
}
else if(param_01 == "assist_uav_plus")
{
setmatchdata("lives",var_02,"assists",var_03,"assistUAVPlus",1);
}
else if(param_01 == "assist_riot_shield")
{
setmatchdata("lives",var_02,"assists",var_03,"assistRiotShield",1);
}
else
{
}
break;
}
}
}
}
//Function Number: 23
logplayerdeath(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07)
{
if(!canlogclient(self) || isplayer(param_01) && !canlogclient(param_01) || !canloglife(param_00))
{
return;
}
if(param_00 >= level.maxlives)
{
return;
}
if(level.iszombiegame)
{
return;
}
if(isdefined(level.ishorde) && level.ishorde)
{
return;
}
logplayerandkillerexomovedata(param_00,param_01);
logplayerandkilleradsandfov(param_00,param_01);
logplayerandkillershieldcloakhoveractive(param_00,param_01);
logfirefightshotshits(param_00,param_01);
logplayerandkillerstanceandmotionstate(param_00,param_01);
logassists(param_00,param_01);
var_08 = determineweaponnameandattachments(param_04,param_05);
for(var_09 = 0;var_09 < 3;var_09++)
{
if(isdefined(var_08.attachments[var_09]) && var_08.attachments[var_09] != "None")
{
setmatchdata("lives",param_00,"killersWeaponAttachments",var_09,var_08.attachments[var_09]);
}
}
if(var_08.weapontype != "exclusive")
{
setmatchdata("lives",param_00,"killersWeapon",var_08.weaponname);
}
if(var_08.weaponnamefull == "altmode")
{
setmatchdata("lives",param_00,"killersWeaponAltMode",1);
}
if(maps\mp\_utility::iskillstreakweapon(var_08.weaponnamefull))
{
setmatchdata("lives",param_00,"modifiers","killstreak",1);
if(isdefined(param_01.currentkillstreakindex))
{
var_0A = getmatchdata("killstreaks",param_01.currentkillstreakindex,"killsTotal");
var_0A++;
setmatchdata("killstreaks",param_01.currentkillstreakindex,"killsTotal",maps\mp\_utility::clamptoshort(var_0A));
setmatchdata("lives",param_00,"killerKillstreakIndex",param_01.currentkillstreakindex);
}
}
else
{
setmatchdata("lives",param_00,"killerKillstreakIndex",255);
}
var_0B = determineweaponnameandattachments(param_07,undefined);
for(var_09 = 0;var_09 < 3;var_09++)
{
if(isdefined(var_0B.attachments[var_09]) && var_0B.attachments[var_09] != "None")
{
setmatchdata("lives",param_00,"victimCurrentWeaponAtDeathAttachments",var_09,var_0B.attachments[var_09]);
}
}
if(var_0B.weapontype != "exclusive")
{
if(maps\mp\_utility::iskillstreakweapon(var_0B.weaponname))
{
if(isdefined(self.primaryweapon))
{
var_0C = maps\mp\_utility::getbaseweaponname(self.primaryweapon);
setmatchdata("lives",param_00,"victimCurrentWeaponAtDeath",var_0C);
}
}
else
{
setmatchdata("lives",param_00,"victimCurrentWeaponAtDeath",var_0B.weaponname);
}
}
if(isdefined(self.pickedupweaponfrom) && isdefined(self.pickedupweaponfrom[var_0B.weaponnamefull]))
{
setmatchdata("lives",param_00,"victimCurrentWeaponPickedUp",1);
}
setmatchdata("lives",param_00,"meansOfDeath",param_03);
var_0D = 2;
if(isplayer(param_01))
{
setmatchdata("lives",param_00,"killer",param_01.clientid);
setmatchdata("lives",param_00,"killerLifeIndex",param_01.lifeid);
setmatchdata("lives",param_00,"killerPos",0,int(param_01.origin[0]));
setmatchdata("lives",param_00,"killerPos",1,int(param_01.origin[1]));
setmatchdata("lives",param_00,"killerPos",2,int(param_01.origin[2]));
setmatchdata("lives",param_00,"killerAngles",0,int(param_01.angles[0]));
setmatchdata("lives",param_00,"killerAngles",1,int(param_01.angles[1]));
setmatchdata("lives",param_00,"killerAngles",2,int(param_01.angles[2]));
var_0E = anglestoforward((0,self.angles[1],0));
var_0F = self.origin - param_01.origin;
var_0F = vectornormalize((var_0F[0],var_0F[1],0));
var_0D = vectordot(var_0E,var_0F);
setmatchdata("lives",param_00,"dotOfDeath",var_0D);
if(param_01 maps\mp\_utility::isjuggernaut())
{
setmatchdata("lives",param_00,"killerIsJuggernaut",1);
}
if(isdefined(param_01.pickedupweaponfrom) && isdefined(param_01.pickedupweaponfrom[var_08.weaponnamefull]))
{
setmatchdata("lives",param_00,"killerCurrentWeaponPickedUp",1);
}
}
else
{
setmatchdata("lives",param_00,"killer",255);
setmatchdata("lives",param_00,"killerLifeIndex",65535);
setmatchdata("lives",param_00,"killerPos",0,int(self.origin[0]));
setmatchdata("lives",param_00,"killerPos",1,int(self.origin[1]));
setmatchdata("lives",param_00,"killerPos",2,int(self.origin[2]));
setmatchdata("lives",param_00,"killerAngles",0,int(self.angles[0]));
setmatchdata("lives",param_00,"killerAngles",1,int(self.angles[1]));
setmatchdata("lives",param_00,"killerAngles",2,int(self.angles[2]));
}
setmatchdata("lives",param_00,"player",self.clientid);
setmatchdata("lives",param_00,"victimPos",0,int(self.origin[0]));
setmatchdata("lives",param_00,"victimPos",1,int(self.origin[1]));
setmatchdata("lives",param_00,"victimPos",2,int(self.origin[2]));
setmatchdata("lives",param_00,"victimAngles",0,int(self.angles[0]));
setmatchdata("lives",param_00,"victimAngles",1,int(self.angles[1]));
setmatchdata("lives",param_00,"victimAngles",2,int(self.angles[2]));
var_10 = "world";
if(isplayer(param_01))
{
var_10 = param_01.name;
}
var_11 = 1;
var_12 = 0;
var_13 = maps\mp\_utility::isaiteamparticipant(self);
var_14 = 0;
if(isplayer(param_01))
{
var_14 = maps\mp\_utility::isaiteamparticipant(param_01);
}
var_15 = length(self.origin - param_01.origin);
var_16 = 0;
var_17 = 0;
var_18 = -1;
var_19 = -1;
var_1A = gettime();
if(isplayer(param_01))
{
var_17 = param_01 playerads();
}
var_1B = param_01.clientid;
if(!isdefined(var_1B))
{
var_1B = -1;
}
var_1C = param_01.lifeid;
if(!isdefined(var_1C))
{
var_1C = -1;
}
var_1D = 0.1;
if(self.damage_info.size > 1)
{
var_11 = 0;
}
if(isdefined(self.damage_info[param_01 getentitynumber()]))
{
var_12 = self.damage_info[param_01 getentitynumber()].num_shots;
}
var_1E = self.pers["primaryWeapon"] + "_mp";
var_1F = weaponclass(var_1E);
if(issubstr(var_08.weaponname,"loot"))
{
var_16 = 1;
}
if(isdefined(self.spawninfo) && isdefined(self.spawninfo.spawntime))
{
var_18 = var_1A - self.spawninfo.spawntime / 1000;
}
if(isdefined(param_01.spawninfo) && isdefined(param_01.spawninfo.spawntime) && isplayer(param_01))
{
var_19 = var_1A - param_01.spawninfo.spawntime / 1000;
}
reconspatialevent(self.origin,"script_mp_playerdeath: player_name %s, life_id %d, angles %v, death_dot %f, is_jugg %b, is_killstreak %b, mod %s, gameTime %d, spawnToDeathTime %f, attackerAliveTime %f, attacker_life_id %d",self.name,self.lifeid,self.angles,var_0D,param_01 maps\mp\_utility::isjuggernaut(),maps\mp\_utility::iskillstreakweapon(var_08.weaponnamefull),param_03,var_1A,var_18,var_19,var_1C);
reconspatialevent(self.origin,"@"script_mp_weaponinfo: player_name %s, life_id %d, isbot %b, attacker_name %s, attacker %d, attacker_pos %v, distance %f, ads_fraction %f, is_jugg %b, is_killstreak %b, weapon_type %s, weapon_class %s, weapon_name %s, isLoot %b, attachment0 %s, attachment1 %s, attachment2 %s, numShots %d, soleAttacker %b, gameTime %d",self.name,self.lifeid,var_13,var_10,var_1B,param_01.origin,var_15,var_17,param_01 maps\mp\_utility::isjuggernaut(),maps\mp\_utility::iskillstreakweapon(var_08.weaponnamefull),var_08.weapontype,var_08.weaponclass,var_08.weaponname,var_16,var_08.attachments[0],var_08.attachments[1],var_08.attachments[2],var_12,var_11,var_1A);
reconspatialevent(self.origin,"script_mp_weaponinfo_ext: player_name %s, life_id %d, gametime %d, version %f, victimWeapon %s, victimWeaponClass %s, killerIsBot %b",self.name,self.lifeid,var_1A,var_1D,var_1E,var_1F,var_14);
if(!isdefined(level.matchdata))
{
level.matchdata = [];
}
if(!isdefined(level.matchdata["deathCount"]))
{
level.matchdata["deathCount"] = 1;
}
else
{
level.matchdata["deathCount"]++;
}
if(var_18 <= 3)
{
if(!isdefined(level.matchdata["badSpawnDiedTooFastCount"]))
{
level.matchdata["badSpawnDiedTooFastCount"] = 1;
}
else
{
level.matchdata["badSpawnDiedTooFastCount"]++;
}
if(self.spawninfo.badspawn == 0)
{
if(!isdefined(level.matchdata["badSpawnByAnyMeansCount"]))
{
level.matchdata["badSpawnByAnyMeansCount"] = 1;
}
else
{
level.matchdata["badSpawnByAnyMeansCount"]++;
}
self.spawninfo.badspawn = 1;
}
}
if(isplayer(param_01) && var_19 <= 3 && !var_08.weaponname == "sentry_minigun_mp")
{
if(!isdefined(level.matchdata["badSpawnKilledTooFastCount"]))
{
level.matchdata["badSpawnKilledTooFastCount"] = 1;
}
else
{
level.matchdata["badSpawnKilledTooFastCount"]++;
}
if(param_01.spawninfo.badspawn == 0)
{
if(!isdefined(level.matchdata["badSpawnByAnyMeansCount"]))
{
level.matchdata["badSpawnByAnyMeansCount"] = 1;
}
else
{
level.matchdata["badSpawnByAnyMeansCount"]++;
}
param_01.spawninfo.badspawn = 1;
}
}
}
//Function Number: 24
logplayerdata()
{
if(!canlogclient(self))
{
return;
}
setmatchdata("players",self.clientid,"score",maps\mp\_utility::getpersstat("score"));
if(maps\mp\_utility::getpersstat("assists") > 255)
{
setmatchdata("players",self.clientid,"assists",255);
}
else
{
setmatchdata("players",self.clientid,"assists",maps\mp\_utility::getpersstat("assists"));
}
if(maps\mp\_utility::getpersstat("longestStreak") > 255)
{
setmatchdata("players",self.clientid,"longestStreak",255);
}
else
{
setmatchdata("players",self.clientid,"longestStreak",maps\mp\_utility::getpersstat("longestStreak"));
}
if(isdefined(self) && isdefined(self.pers) && isdefined(self.pers["validationInfractions"]))
{
if(maps\mp\_utility::getpersstat("validationInfractions") > 255)
{
setmatchdata("players",self.clientid,"validationInfractions",255);
return;
}
setmatchdata("players",self.clientid,"validationInfractions",maps\mp\_utility::getpersstat("validationInfractions"));
}
}
//Function Number: 25
endofgamesummarylogger()
{
foreach(var_01 in level.players)
{
wait(0.05);
if(!isdefined(var_01))
{
continue;
}
logplayerping(var_01);
if(isdefined(var_01.detectedexploit) && var_01.detectedexploit && var_01 maps\mp\_utility::rankingenabled())
{
var_01 setrankedplayerdata("restXPGoal",var_01.detectedexploit);
}
var_02 = undefined;
var_03 = 0;
if(isdefined(game["challengeStruct"]) && isdefined(game["challengeStruct"]["challengesCompleted"]) && isdefined(game["challengeStruct"]["challengesCompleted"][var_01.guid]))
{
var_03 = 1;
}
if(var_03)
{
var_02 = game["challengeStruct"]["challengesCompleted"][var_01.guid];
if(var_02.size > 0)
{
var_01 setcommonplayerdata("round","challengeNumCompleted",var_02.size);
var_04 = maps\mp\_utility::clamptobyte(var_02.size);
setmatchdata("players",var_01.clientid,"challengesCompleted",var_04);
}
else
{
var_01 setcommonplayerdata("round","challengeNumCompleted",0);
}
}
else
{
var_01 setcommonplayerdata("round","challengeNumCompleted",0);
}
for(var_05 = 0;var_05 < 20;var_05++)
{
if(isdefined(var_02) && isdefined(var_02[var_05]) && var_02[var_05] != 8000)
{
var_01 setcommonplayerdata("round","challengesCompleted",var_05,var_02[var_05]);
continue;
}
var_01 setcommonplayerdata("round","challengesCompleted",var_05,0);
}
var_01 setcommonplayerdata("round","gameMode",level.gametype);
var_01 setcommonplayerdata("round","map",tolower(getdvar("mapname")));
}
}
//Function Number: 26
logplayerping(param_00)
{
if(!isdefined(param_00.pers["maxPing"]) || !isdefined(param_00.pers["minPing"]) || !isdefined(param_00.pers["pingAccumulation"]) || !isdefined(param_00.pers["pingSampleCount"]))
{
return;
}
if(param_00.pers["pingSampleCount"] > 0 && param_00.pers["maxPing"] > 0)
{
var_01 = maps\mp\_utility::clamptoshort(param_00.pers["pingAccumulation"] / param_00.pers["pingSampleCount"]);
setmatchdata("players",param_00.clientid,"averagePing",var_01);
setmatchdata("players",param_00.clientid,"maxPing",maps\mp\_utility::clamptoshort(param_00.pers["maxPing"]));
setmatchdata("players",param_00.clientid,"minPing",maps\mp\_utility::clamptoshort(param_00.pers["minPing"]));
}
}
//Function Number: 27
gameendlistener()
{
level waittill("game_ended");
foreach(var_01 in level.players)
{
var_01 logplayerdata();
if(!isalive(var_01))
{
continue;
}
var_01 logplayerlife(0);
}
foreach(var_01 in level.players)
{
if(var_01.totallifetime > 0)
{
var_04 = var_01 maps\mp\_utility::getpersstat("score") / var_01.totallifetime / 60000;
tournamentreportplayerspm(var_01.xuid,var_04,var_01.team);
}
var_01.totallifetime = 0;
}
}
//Function Number: 28
canlogclient(param_00)
{
if(isagent(param_00))
{
return 0;
}
var_01 = param_00.code_classname;
if(!isdefined(var_01))
{
var_01 = "undefined";
}
return param_00.clientid < level.maxlogclients;
}
//Function Number: 29
canlogevent()
{
return getmatchdata("eventCount") < level.maxevents;
}
//Function Number: 30
canlogkillstreak()
{
return getmatchdata("killstreakCount") < level.maxkillstreaks;
}
//Function Number: 31
canloglife(param_00)
{
return getmatchdata("lifeCount") < level.maxlives;
}
//Function Number: 32
logweaponstat(param_00,param_01,param_02)
{
if(!canlogclient(self))
{
return;
}
if(maps\mp\_utility::iskillstreakweapon(param_00))
{
return;
}
if(!isdefined(self.pers["mpWeaponStats"][param_00]))
{
self.pers["mpWeaponStats"][param_00] = [];
}
if(!isdefined(self.pers["mpWeaponStats"][param_00][param_01]))
{
self.pers["mpWeaponStats"][param_00][param_01] = 0;
}
var_03 = self.pers["mpWeaponStats"][param_00][param_01];
var_03 = var_03 + param_02;
self.pers["mpWeaponStats"][param_00][param_01] = var_03;
}
//Function Number: 33
buildbaseweaponlist()
{
var_00 = [];
var_01 = 149;
for(var_02 = 0;var_02 <= var_01;var_02++)
{
var_03 = tablelookup("mp/statstable.csv",0,var_02,4);
if(var_03 == "")
{
continue;
}
if(!issubstr(tablelookup("mp/statsTable.csv",0,var_02,2),"weapon_"))
{
continue;
}
if(tablelookup("mp/statsTable.csv",0,var_02,2) == "weapon_other")
{
continue;
}
if(tablelookup("mp/statsTable.csv",0,var_02,51) != "")
{
continue;
}
var_00[var_00.size] = var_03;
}
return var_00;
}
//Function Number: 34
logkillsconfirmed()
{
if(!canlogclient(self))
{
return;
}
setmatchdata("players",self.clientid,"killsConfirmed",self.pers["confirmed"]);
}
//Function Number: 35
logkillsdenied()
{
if(!canlogclient(self))
{
return;
}
setmatchdata("players",self.clientid,"killsDenied",self.pers["denied"]);
}
//Function Number: 36
loginitialstats()
{
if(getdvarint("mdsd") > 0)
{
var_00 = self getrankedplayerdata("experience");
setmatchdata("players",self.clientid,"startXp",var_00);
setmatchdata("players",self.clientid,"startKills",self getrankedplayerdata("kills"));
setmatchdata("players",self.clientid,"startDeaths",self getrankedplayerdata("deaths"));
setmatchdata("players",self.clientid,"startWins",self getrankedplayerdata("wins"));
setmatchdata("players",self.clientid,"startLosses",self getrankedplayerdata("losses"));
setmatchdata("players",self.clientid,"startHits",self getrankedplayerdata("hits"));
setmatchdata("players",self.clientid,"startMisses",self getrankedplayerdata("misses"));
setmatchdata("players",self.clientid,"startGamesPlayed",self getrankedplayerdata("gamesPlayed"));
setmatchdata("players",self.clientid,"startScore",self getrankedplayerdata("score"));
setmatchdata("players",self.clientid,"startUnlockPoints",self getrankedplayerdata("unlockPoints"));
setmatchdata("players",self.clientid,"startPrestige",self getrankedplayerdata("prestige"));
setmatchdata("players",self.clientid,"startDP",self getrankedplayerdata("division"));
var_01 = self getrankedplayerdata("mmr");
setmatchdata("players",self.clientid,"startMMR",var_01);
}
}
//Function Number: 37
logfinalstats()
{
if(getdvarint("mdsd") > 0)
{
var_00 = self getrankedplayerdata("experience");
setmatchdata("players",self.clientid,"endXp",var_00);
setmatchdata("players",self.clientid,"endKills",self getrankedplayerdata("kills"));
setmatchdata("players",self.clientid,"endDeaths",self getrankedplayerdata("deaths"));
setmatchdata("players",self.clientid,"endWins",self getrankedplayerdata("wins"));
setmatchdata("players",self.clientid,"endLosses",self getrankedplayerdata("losses"));
setmatchdata("players",self.clientid,"endHits",self getrankedplayerdata("hits"));
setmatchdata("players",self.clientid,"endMisses",self getrankedplayerdata("misses"));
setmatchdata("players",self.clientid,"endGamesPlayed",self getrankedplayerdata("gamesPlayed"));
setmatchdata("players",self.clientid,"endScore",self getrankedplayerdata("score"));
setmatchdata("players",self.clientid,"endUnlockPoints",self getrankedplayerdata("unlockPoints"));
setmatchdata("players",self.clientid,"endPrestige",self getrankedplayerdata("prestige"));
var_01 = self getrankedplayerdata("mmr");
setmatchdata("players",self.clientid,"endMMR",var_01);
if(isdefined(self.pers["rank"]))
{
var_03 = maps\mp\_utility::clamptobyte(maps\mp\gametypes\_rank::getrank());
setmatchdata("players",self.clientid,"rankAtEnd",var_03);
}
}
}
//Function Number: 38
reconlogplayerinfo()
{
for(;;)
{
if(getdvarint("cl_freemove") == 0)
{
foreach(var_01 in level.players)
{
var_02 = 0;
if(maps\mp\_utility::isreallyalive(var_01))
{
var_02 = 1;
}
if(istestclient(var_01))
{
continue;
}
if(!isdefined(var_01.origin))
{
continue;
}
var_03 = "disconnected?";
if(isdefined(var_01.name))
{
var_03 = var_01.name;
}
var_04 = -1;
if(isdefined(var_01.clientid))
{
var_04 = var_01.clientid;
}
var_05 = (-999,-999,-999);
if(isdefined(var_01.angles))
{
var_05 = var_01.angles;
}
var_06 = "undefined";
if(isdefined(var_01.team))
{
var_06 = var_01.team;
}
var_07 = gettime();
reconspatialevent(var_01.origin,"script_mp_playerpos: player_name %s, angles %v, gameTime %d, playerTeam %s, is_alive %b",var_03,var_05,var_07,var_06,var_02);
}
}
wait(0.2);
}
}