Files
IL-GSC/MW3/PC/MP/maps/mp/_entityheadicons.gsc
InfinityLoader d559c1d414 Added MW3 Scripts
2023-10-27 03:47:01 -04:00

358 lines
6.7 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\_entityheadicons.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: PC
* Function Count: 10
* Decompile Time: 176 ms
* Timestamp: 10/27/2023 2:14:58 AM
*******************************************************************/
//Function Number: 1
init()
{
if(isdefined(level.initedentityheadicons))
{
return;
}
level.initedentityheadicons = 1;
game["entity_headicon_allies"] = maps\mp\gametypes\_teams::init("allies");
game["entity_headicon_axis"] = maps\mp\gametypes\_teams::init("axis");
precacheshader(game["entity_headicon_allies"]);
precacheshader(game["entity_headicon_axis"]);
if(!level.teambased)
{
}
}
//Function Number: 2
setheadicon(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A)
{
if(!isdefined(self.entityheadicons))
{
self.entityheadicons = [];
}
if(!isdefined(param_05))
{
param_05 = 1;
}
if(!isdefined(param_06))
{
param_06 = 0.05;
}
if(!isdefined(param_07))
{
param_07 = 1;
}
if(!isdefined(param_08))
{
param_08 = 1;
}
if(!isdefined(param_09))
{
param_09 = 0;
}
if(!isdefined(param_0A))
{
param_0A = 1;
}
if(!isplayer(param_00) && param_00 == "none")
{
foreach(var_0D, var_0C in self.entityheadicons)
{
if(isdefined(var_0C))
{
var_0C destroy();
}
self.entityheadicons[var_0D] = undefined;
}
return;
}
if(isplayer(param_03))
{
if(isdefined(self.entityheadicons[param_03.guid]))
{
self.entityheadicons[param_03.guid] destroy();
self.entityheadicons[param_03.guid] = undefined;
}
if(param_04 == "")
{
return;
}
if(isdefined(self.entityheadicons[param_03.team]))
{
self.entityheadicons[param_03.team] destroy();
self.entityheadicons[param_03.team] = undefined;
}
var_0C = newclienthudelem(param_03);
self.entityheadicons[param_02.guid] = var_0D;
}
else
{
if(isdefined(self.entityheadicons[param_03]))
{
self.entityheadicons[param_03] destroy();
self.entityheadicons[param_03] = undefined;
}
if(param_04 == "")
{
return;
}
foreach(var_0E in self.entityheadicons)
{
if(var_10 == "axis" || var_10 == "allies")
{
continue;
}
var_0F = maps\mp\_utility::getplayerforguid(var_10);
if(var_0F.team == param_01)
{
self.entityheadicons[var_10] destroy();
self.entityheadicons[var_10] = undefined;
}
}
var_0C = newteamhudelem(param_01);
self.entityheadicons[param_01] = var_0C;
}
if(!isdefined(param_04) || !isdefined(param_05))
{
param_04 = 10;
param_05 = 10;
}
var_0C.archived = param_06;
var_0C.x = self.origin[0] + param_03[0];
var_0C.y = self.origin[1] + param_03[1];
var_0C.z = self.origin[2] + param_03[2];
var_0C.alpha = 0.85;
var_0C setshader(param_02,param_04,param_05);
var_0C setwaypoint(param_08,param_09,param_0A,var_0B);
var_0C thread keeppositioned(self,param_03,param_07);
thread destroyiconsondeath();
if(isplayer(param_01))
{
var_0C thread destroyonownerdisconnect(param_01);
}
if(isplayer(self))
{
var_0C thread destroyonownerdisconnect(self);
}
return var_0C;
}
//Function Number: 3
destroyonownerdisconnect(param_00)
{
self endon("death");
param_00 waittill("disconnect");
self destroy();
}
//Function Number: 4
destroyiconsondeath()
{
self notify("destroyIconsOnDeath");
self endon("destroyIconsOnDeath");
self waittill("death");
foreach(var_01 in self.entityheadicons)
{
if(!isdefined(var_01))
{
continue;
}
var_01 destroy();
}
}
//Function Number: 5
keeppositioned(param_00,param_01,param_02)
{
self endon("death");
param_00 endon("death");
param_00 endon("disconnect");
var_03 = param_00.origin;
for(;;)
{
if(!isdefined(param_00))
{
return;
}
if(var_03 != param_00.origin)
{
var_03 = param_00.origin;
self.x = var_03[0] + param_01[0];
self.y = var_03[1] + param_01[1];
self.z = var_03[2] + param_01[2];
}
if(param_02 > 0.05)
{
self.alpha = 0.85;
self fadeovertime(param_02);
self.alpha = 0;
}
wait param_02;
}
}
//Function Number: 6
setteamheadicon(param_00,param_01)
{
if(!level.teambased)
{
return;
}
if(!isdefined(self.entityheadiconteam))
{
self.entityheadiconteam = "none";
self.entityheadicon = undefined;
}
var_02 = game["entity_headicon_" + param_00];
self.entityheadiconteam = param_00;
if(isdefined(param_01))
{
self.entityheadiconoffset = param_01;
}
else
{
self.entityheadiconoffset = (0,0,0);
}
self notify("kill_entity_headicon_thread");
if(param_00 == "none")
{
if(isdefined(self.entityheadicon))
{
self.entityheadicon destroy();
}
return;
}
var_03 = newteamhudelem(param_00);
var_03.archived = 1;
var_03.x = self.origin[0] + self.entityheadiconoffset[0];
var_03.y = self.origin[1] + self.entityheadiconoffset[1];
var_03.z = self.origin[2] + self.entityheadiconoffset[2];
var_03.alpha = 0.8;
var_03 setshader(var_02,10,10);
var_03 setwaypoint(0,0,0,1);
self.entityheadicon = var_03;
thread keepiconpositioned();
thread destroyheadiconsondeath();
}
//Function Number: 7
setplayerheadicon(param_00,param_01)
{
if(level.teambased)
{
return;
}
if(!isdefined(self.entityheadiconteam))
{
self.entityheadiconteam = "none";
self.entityheadicon = undefined;
}
self notify("kill_entity_headicon_thread");
if(!isdefined(param_00))
{
if(isdefined(self.entityheadicon))
{
self.entityheadicon destroy();
}
return;
}
var_02 = param_00.team;
self.entityheadiconteam = var_02;
if(isdefined(param_01))
{
self.entityheadiconoffset = param_01;
}
else
{
self.entityheadiconoffset = (0,0,0);
}
var_03 = game["entity_headicon_" + var_02];
var_04 = newclienthudelem(param_00);
var_04.archived = 1;
var_04.x = self.origin[0] + self.entityheadiconoffset[0];
var_04.y = self.origin[1] + self.entityheadiconoffset[1];
var_04.z = self.origin[2] + self.entityheadiconoffset[2];
var_04.alpha = 0.8;
var_04 setshader(var_03,10,10);
var_04 setwaypoint(0,0,0,1);
self.entityheadicon = var_04;
thread keepiconpositioned();
thread destroyheadiconsondeath();
}
//Function Number: 8
keepiconpositioned()
{
self endon("kill_entity_headicon_thread");
self endon("death");
var_00 = self.origin;
for(;;)
{
if(var_00 != self.origin)
{
updateheadiconorigin();
var_00 = self.origin;
}
wait 0.05;
}
}
//Function Number: 9
destroyheadiconsondeath()
{
self endon("kill_entity_headicon_thread");
self waittill("death");
if(!isdefined(self.entityheadicon))
{
return;
}
self.entityheadicon destroy();
}
//Function Number: 10
updateheadiconorigin()
{
self.entityheadicon.x = self.origin[0] + self.entityheadiconoffset[0];
self.entityheadicon.y = self.origin[1] + self.entityheadiconoffset[1];
self.entityheadicon.z = self.origin[2] + self.entityheadiconoffset[2];
}