mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-06-10 18:27:57 -05:00
562 lines
11 KiB
Plaintext
562 lines
11 KiB
Plaintext
/*******************************************************************
|
|
* Decompiled By: Bog
|
|
* Decompiled File: scripts\mp\_spectating.gsc
|
|
* Game: Call of Duty: Infinite Warfare
|
|
* Platform: PC
|
|
* Function Count: 20
|
|
* Decompile Time: 799 ms
|
|
* Timestamp: 10/27/2023 12:21:38 AM
|
|
*******************************************************************/
|
|
|
|
//Function Number: 1
|
|
init()
|
|
{
|
|
level.var_10978["allies"] = spawnstruct();
|
|
level.var_10978["axis"] = spawnstruct();
|
|
level thread func_C56E();
|
|
if(getdvarint("cg_mlg_static_cameras",0) != 0)
|
|
{
|
|
level thread func_7F6C();
|
|
}
|
|
}
|
|
|
|
//Function Number: 2
|
|
func_49F0(param_00,param_01)
|
|
{
|
|
precacheshader(param_00);
|
|
var_02 = spawn("script_model",(0,0,0));
|
|
var_02 setmodel("tag_origin");
|
|
var_02.angles = (0,0,0);
|
|
return var_02;
|
|
}
|
|
|
|
//Function Number: 3
|
|
func_F780(param_00,param_01)
|
|
{
|
|
var_02 = param_00;
|
|
if(var_02 >= 4)
|
|
{
|
|
var_02 = var_02 - 4;
|
|
}
|
|
|
|
var_03 = tolower(getdvar("mapname"));
|
|
var_04 = tablelookup(param_01,0,var_03,var_02 * 2 + 1);
|
|
if(var_04 != "")
|
|
{
|
|
var_05 = param_00 + 1;
|
|
if(param_00 >= 5)
|
|
{
|
|
var_05 = var_05 - 4;
|
|
}
|
|
|
|
level.var_37C3[param_00] = func_49F0("compass_icon_codcaster_cam",1);
|
|
level.var_C215[param_00] = func_49F0("compass_icon_codcaster_num" + var_05,0);
|
|
var_06 = tablelookup(param_01,0,var_03,var_02 * 2 + 2);
|
|
level.var_37C8[param_00] = func_7E16(var_04);
|
|
level.var_37C1[param_00] = func_7E16(var_06);
|
|
level.camerahighestindex = param_00;
|
|
}
|
|
}
|
|
|
|
//Function Number: 4
|
|
func_7F6C()
|
|
{
|
|
while(!isdefined(level.objidpool))
|
|
{
|
|
wait(0.05);
|
|
}
|
|
|
|
var_00 = "mp/CameraPositions";
|
|
var_01 = var_00 + "_" + level.gametype + ".csv";
|
|
var_00 = var_00 + ".csv";
|
|
level.var_37C3 = [];
|
|
level.var_C215 = [];
|
|
for(var_02 = 0;var_02 < 4;var_02++)
|
|
{
|
|
func_F780(var_02,var_00);
|
|
}
|
|
|
|
for(var_02 = 4;var_02 < 8;var_02++)
|
|
{
|
|
func_F780(var_02,var_01);
|
|
}
|
|
}
|
|
|
|
//Function Number: 5
|
|
func_7E16(param_00)
|
|
{
|
|
var_01 = strtok(param_00," ");
|
|
var_02 = (0,0,0);
|
|
if(isdefined(var_01[0]) && isdefined(var_01[1]) && isdefined(var_01[2]))
|
|
{
|
|
var_02 = (int(var_01[0]),int(var_01[1]),int(var_01[2]));
|
|
}
|
|
|
|
return var_02;
|
|
}
|
|
|
|
//Function Number: 6
|
|
func_C56E()
|
|
{
|
|
for(;;)
|
|
{
|
|
level waittill("connected",var_00);
|
|
var_00 thread func_C541();
|
|
var_00 thread func_C540();
|
|
var_00 thread func_C5A1();
|
|
var_00 thread func_C531();
|
|
var_00 thread func_C5A2();
|
|
}
|
|
}
|
|
|
|
//Function Number: 7
|
|
func_C541()
|
|
{
|
|
self endon("disconnect");
|
|
for(;;)
|
|
{
|
|
self waittill("joined_team");
|
|
func_F857();
|
|
}
|
|
}
|
|
|
|
//Function Number: 8
|
|
func_C540()
|
|
{
|
|
self endon("disconnect");
|
|
for(;;)
|
|
{
|
|
self waittill("joined_spectators");
|
|
func_F857();
|
|
self setclientomnvar("ui_callout_area_id",-1);
|
|
if(self ismlgspectator() || isdefined(self.pers["mlgSpectator"]) && self.pers["mlgSpectator"])
|
|
{
|
|
self method_830E(1);
|
|
self setclientomnvar("ui_use_mlg_hud",1);
|
|
self method_85B1(0);
|
|
thread updatemlgspectator();
|
|
thread autoattachtoplayer();
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 9
|
|
func_C5A1()
|
|
{
|
|
self endon("disconnect");
|
|
for(;;)
|
|
{
|
|
self waittill("spectating_cycle");
|
|
var_00 = self method_815D();
|
|
if(self ismlgspectator() || isdefined(var_00))
|
|
{
|
|
var_01 = level.var_377C.var_2138[var_00.var_3779];
|
|
self setclientomnvar("ui_callout_area_id",var_01);
|
|
if(level.gametype == "ball")
|
|
{
|
|
scripts\mp\gametypes\ball::func_2796(self);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 10
|
|
func_C5A2()
|
|
{
|
|
self endon("disconnect");
|
|
for(;;)
|
|
{
|
|
self waittill("spectating_mlg_camera");
|
|
var_00 = self method_858E();
|
|
if(self ismlgspectator() || isdefined(self.pers["mlgSpectator"]) && self.pers["mlgSpectator"])
|
|
{
|
|
if(isdefined(var_00))
|
|
{
|
|
self setclientomnvar("ui_callout_area_id",-1);
|
|
continue;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 11
|
|
func_C531()
|
|
{
|
|
self endon("disconnect");
|
|
for(;;)
|
|
{
|
|
self waittill("luinotifyserver",var_00,var_01);
|
|
if(var_00 == "mlg_view_change")
|
|
{
|
|
scripts\mp\_playerlogic::func_E27B();
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 12
|
|
func_12F21()
|
|
{
|
|
level endon("game_ended");
|
|
for(var_00 = 0;var_00 < level.players.size;var_00++)
|
|
{
|
|
level.players[var_00] func_F857();
|
|
}
|
|
}
|
|
|
|
//Function Number: 13
|
|
linkcameratoball(param_00)
|
|
{
|
|
self endon("disconnect");
|
|
self endon("joined_team");
|
|
self endon("joined_spectators");
|
|
for(;;)
|
|
{
|
|
if(!isdefined(self.codcasterballcamfollow))
|
|
{
|
|
break;
|
|
}
|
|
|
|
if(self method_85AF())
|
|
{
|
|
wait(0.05);
|
|
continue;
|
|
}
|
|
|
|
self cameralinkto(self.codcasterballcamfollow,"tag_origin",1);
|
|
var_01 = level.codcasterball.origin;
|
|
var_02 = (0,0,30);
|
|
var_02 = var_02 + -80 * param_00;
|
|
var_03 = var_01 + var_02;
|
|
self.codcasterballcamfollow moveto(var_03,10.5,5.2,5.2);
|
|
self.codcasterballcamfollow.angles = vectortoangles(param_00);
|
|
break;
|
|
}
|
|
}
|
|
|
|
//Function Number: 14
|
|
autoattachtoplayer()
|
|
{
|
|
self endon("disconnect");
|
|
self endon("game_ended");
|
|
self endon("joined_team");
|
|
self endon("joined_spectator");
|
|
self endon("spectating_mlg_camera");
|
|
for(;;)
|
|
{
|
|
wait(1);
|
|
var_00 = undefined;
|
|
if(!self ismlgspectator() || self method_85AF())
|
|
{
|
|
break;
|
|
}
|
|
|
|
if(level.players.size > 1)
|
|
{
|
|
var_01 = scripts\mp\_utility::func_81A0("allies",0);
|
|
if(var_01.size > 0)
|
|
{
|
|
var_00 = scripts\mp\_utility::getlowestclientnum(var_01,1);
|
|
}
|
|
|
|
if(!isdefined(var_00))
|
|
{
|
|
var_01 = scripts\mp\_utility::func_81A0("axis",0);
|
|
if(var_01.size > 0)
|
|
{
|
|
var_00 = scripts\mp\_utility::getlowestclientnum(var_01,1);
|
|
}
|
|
}
|
|
|
|
if(isdefined(var_00))
|
|
{
|
|
self method_85B0(var_00);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 15
|
|
updatemlgspectator()
|
|
{
|
|
self endon("joined_team");
|
|
self endon("disconnect");
|
|
self.iswatchingcodcasterball = 0;
|
|
self.codcasterballcamfollow = undefined;
|
|
self.spectatingplayerbeforeballcam = undefined;
|
|
for(;;)
|
|
{
|
|
var_00 = isdefined(level.codcasterball);
|
|
if(!var_00 || !self method_85B2())
|
|
{
|
|
if(self.iswatchingcodcasterball)
|
|
{
|
|
self.iswatchingcodcasterball = 0;
|
|
self.codcasterballcamfollow unlink();
|
|
self.codcasterballcamfollow delete();
|
|
self.codcasterballcamfollow = undefined;
|
|
if(!self method_85AF() && isdefined(self.spectatingplayerbeforeballcam))
|
|
{
|
|
self method_85B0(self.spectatingplayerbeforeballcam getentitynumber());
|
|
}
|
|
else
|
|
{
|
|
self cameraunlink();
|
|
}
|
|
|
|
self.spectatingplayerbeforeballcam = undefined;
|
|
}
|
|
}
|
|
else if(!self.iswatchingcodcasterball)
|
|
{
|
|
if(self method_85B2())
|
|
{
|
|
var_01 = self method_815D();
|
|
if(isdefined(var_01) && isdefined(level.codcasterballowner) && var_01 == level.codcasterballowner)
|
|
{
|
|
self.iswatchingcodcasterball = 1;
|
|
self.spectatingplayerbeforeballcam = var_01;
|
|
var_02 = vectornormalize(level.codcasterballinitialforcevector);
|
|
var_03 = var_01 method_816E();
|
|
self.codcasterballcamfollow = spawn("script_model",var_03);
|
|
self.codcasterballcamfollow.angles = vectortoangles(var_02);
|
|
self.codcasterballcamfollow setmodel("tag_origin");
|
|
function_0321(self getentitynumber());
|
|
self cameraunlink();
|
|
thread linkcameratoball(var_02);
|
|
}
|
|
}
|
|
}
|
|
else if(isdefined(self.codcasterballcamfollow))
|
|
{
|
|
var_04 = level.codcasterball.origin;
|
|
var_05 = self.codcasterballcamfollow.origin;
|
|
var_06 = distance2d(var_04,var_05);
|
|
var_07 = var_04 - var_05;
|
|
var_08 = (var_07[0],var_07[1],0);
|
|
var_08 = vectornormalize(var_08);
|
|
var_09 = var_04;
|
|
var_0A = (0,0,30);
|
|
var_0A = var_0A + -80 * var_08;
|
|
var_0B = var_09 + var_0A;
|
|
if(var_06 > 600)
|
|
{
|
|
self.codcasterballcamfollow.origin = var_0B;
|
|
}
|
|
else
|
|
{
|
|
self.codcasterballcamfollow moveto(var_0B,0.5,0,0.2);
|
|
}
|
|
|
|
self.codcasterballcamfollow rotateto(vectortoangles(var_07),0.15,0.05,0.05);
|
|
}
|
|
|
|
wait(0.05);
|
|
}
|
|
}
|
|
|
|
//Function Number: 16
|
|
func_F857()
|
|
{
|
|
if(level.var_7669 && gettime() - level.var_766B >= 2000)
|
|
{
|
|
if(level.multiteambased)
|
|
{
|
|
for(var_00 = 0;var_00 < level.teamnamelist.size;var_00++)
|
|
{
|
|
self allowspectateteam(level.teamnamelist[var_00],0);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
self allowspectateteam("allies",0);
|
|
self allowspectateteam("axis",0);
|
|
}
|
|
|
|
self allowspectateteam("freelook",0);
|
|
self allowspectateteam("none",1);
|
|
return;
|
|
}
|
|
|
|
var_01 = scripts\mp\_tweakables::func_81E7("game","spectatetype");
|
|
if(self ismlgspectator())
|
|
{
|
|
var_01 = 2;
|
|
}
|
|
|
|
if(scripts\mp\_utility::func_2DD9())
|
|
{
|
|
var_01 = 1;
|
|
}
|
|
|
|
var_02 = self.sessionteam;
|
|
switch(var_01)
|
|
{
|
|
case 0:
|
|
func_F6C5();
|
|
break;
|
|
|
|
case 1:
|
|
self notify("waitForGameStartSpectate");
|
|
if(var_02 != "spectator")
|
|
{
|
|
func_F87A(var_02);
|
|
}
|
|
else if(isdefined(self.pers["last_team"]))
|
|
{
|
|
var_02 = self.pers["last_team"];
|
|
func_F87A(var_02);
|
|
}
|
|
else if(scripts\mp\_utility::func_766C("prematch_done"))
|
|
{
|
|
if(randomint(2))
|
|
{
|
|
var_02 = "allies";
|
|
}
|
|
else
|
|
{
|
|
var_02 = "axis";
|
|
}
|
|
|
|
func_F87A(var_02);
|
|
}
|
|
else
|
|
{
|
|
thread waitforgamestartspectate();
|
|
return;
|
|
}
|
|
break;
|
|
|
|
case 2:
|
|
func_F71A();
|
|
break;
|
|
|
|
case 3:
|
|
if(var_02 == "spectator")
|
|
{
|
|
func_F71A();
|
|
}
|
|
else
|
|
{
|
|
func_F87A(var_02);
|
|
}
|
|
break;
|
|
}
|
|
|
|
if(isdefined(var_02) && var_02 == "axis" || var_02 == "allies")
|
|
{
|
|
if(isdefined(level.var_10978[var_02].var_1C93))
|
|
{
|
|
self allowspectateteam("freelook",1);
|
|
}
|
|
|
|
if(isdefined(level.var_10978[var_02].var_1C90))
|
|
{
|
|
self allowspectateteam(scripts\mp\_utility::getotherteam(var_02),1);
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 17
|
|
waitforgamestartspectate()
|
|
{
|
|
self endon("waitForGameStartSpectate");
|
|
level waittill("prematch_over");
|
|
thread func_F857();
|
|
}
|
|
|
|
//Function Number: 18
|
|
func_F6C5()
|
|
{
|
|
if(level.multiteambased)
|
|
{
|
|
for(var_00 = 0;var_00 < level.teamnamelist.size;var_00++)
|
|
{
|
|
self allowspectateteam(level.teamnamelist[var_00],0);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
self allowspectateteam("allies",0);
|
|
self allowspectateteam("axis",0);
|
|
}
|
|
|
|
self allowspectateteam("freelook",0);
|
|
self allowspectateteam("none",0);
|
|
}
|
|
|
|
//Function Number: 19
|
|
func_F87A(param_00)
|
|
{
|
|
if(!level.teambased)
|
|
{
|
|
self allowspectateteam("allies",1);
|
|
self allowspectateteam("axis",1);
|
|
self allowspectateteam("none",1);
|
|
self allowspectateteam("freelook",0);
|
|
return;
|
|
}
|
|
|
|
if(isdefined(param_00) && param_00 == "allies" || param_00 == "axis" && !level.multiteambased)
|
|
{
|
|
self allowspectateteam(param_00,1);
|
|
self allowspectateteam(scripts\mp\_utility::getotherteam(param_00),0);
|
|
self allowspectateteam("freelook",0);
|
|
self allowspectateteam("none",0);
|
|
return;
|
|
}
|
|
|
|
if(isdefined(param_00) && issubstr(param_00,"team_") && level.multiteambased)
|
|
{
|
|
for(var_01 = 0;var_01 < level.teamnamelist.size;var_01++)
|
|
{
|
|
if(param_00 == level.teamnamelist[var_01])
|
|
{
|
|
self allowspectateteam(level.teamnamelist[var_01],1);
|
|
continue;
|
|
}
|
|
|
|
self allowspectateteam(level.teamnamelist[var_01],0);
|
|
}
|
|
|
|
self allowspectateteam("freelook",0);
|
|
self allowspectateteam("none",0);
|
|
return;
|
|
}
|
|
|
|
if(level.multiteambased)
|
|
{
|
|
for(var_01 = 0;var_01 < level.teamnamelist.size;var_01++)
|
|
{
|
|
self allowspectateteam(level.teamnamelist[var_01],0);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
self allowspectateteam("allies",0);
|
|
self allowspectateteam("axis",0);
|
|
}
|
|
|
|
self allowspectateteam("freelook",0);
|
|
self allowspectateteam("none",0);
|
|
}
|
|
|
|
//Function Number: 20
|
|
func_F71A()
|
|
{
|
|
if(level.multiteambased)
|
|
{
|
|
for(var_00 = 0;var_00 < level.teamnamelist.size;var_00++)
|
|
{
|
|
self allowspectateteam(level.teamnamelist[var_00],1);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
self allowspectateteam("allies",1);
|
|
self allowspectateteam("axis",1);
|
|
}
|
|
|
|
self allowspectateteam("freelook",1);
|
|
self allowspectateteam("none",1);
|
|
} |