mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-06-07 17:17:50 -05:00
580 lines
12 KiB
Plaintext
580 lines
12 KiB
Plaintext
/*******************************************************************
|
||
* Decompiled By: Bog
|
||
* Decompiled File: maps\mp\_gameadvertisement.gsc
|
||
* Game: Call of Duty: Black Ops 2
|
||
* Platform: PC
|
||
* Function Count: 22
|
||
* Decompile Time: 3 ms
|
||
* Timestamp: 10/28/2023 12:10:56 AM
|
||
*******************************************************************/
|
||
|
||
#include maps/mp/_utility;
|
||
#include maps/mp/gametypes/_dev;
|
||
#include maps/mp/gametypes/_globallogic_utils;
|
||
|
||
//Function Number: 1
|
||
init()
|
||
{
|
||
/#
|
||
level.sessionadvertstatus = 1;
|
||
thread sessionadvertismentupdatedebughud();
|
||
#/
|
||
thread sessionadvertisementcheck();
|
||
}
|
||
|
||
//Function Number: 2
|
||
setadvertisedstatus(onoff)
|
||
{
|
||
/#
|
||
level.sessionadvertstatus = onoff;
|
||
#/
|
||
changeadvertisedstatus(onoff);
|
||
}
|
||
|
||
//Function Number: 3
|
||
sessionadvertisementcheck()
|
||
{
|
||
if(sessionmodeisprivate())
|
||
{
|
||
return;
|
||
}
|
||
|
||
if(sessionmodeiszombiesgame())
|
||
{
|
||
setadvertisedstatus(0);
|
||
return;
|
||
}
|
||
|
||
runrules = getgametyperules();
|
||
if(!(IsDefined(runrules)))
|
||
{
|
||
return;
|
||
}
|
||
|
||
level endon("game_end");
|
||
level waittill("prematch_over");
|
||
while(1)
|
||
{
|
||
sessionadvertcheckwait = getdvarintdefault("sessionAdvertCheckwait",1);
|
||
wait(sessionadvertcheckwait);
|
||
advertise = [[ runrules ]]();
|
||
setadvertisedstatus(advertise);
|
||
}
|
||
}
|
||
|
||
//Function Number: 4
|
||
getgametyperules()
|
||
{
|
||
gametype = level.gametype;
|
||
switch(gametype)
|
||
{
|
||
case "dm":
|
||
return ::dm_rules;
|
||
|
||
case "tdm":
|
||
return ::tdm_rules;
|
||
|
||
case "dom":
|
||
return ::dom_rules;
|
||
|
||
case "hq":
|
||
return ::hq_rules;
|
||
|
||
case "sd":
|
||
return ::sd_rules;
|
||
|
||
case "dem":
|
||
return ::dem_rules;
|
||
|
||
case "ctf":
|
||
return ::ctf_rules;
|
||
|
||
case "koth":
|
||
return ::koth_rules;
|
||
|
||
case "conf":
|
||
return ::conf_rules;
|
||
|
||
case "oic":
|
||
return ::oic_rules;
|
||
|
||
case "sas":
|
||
return ::sas_rules;
|
||
|
||
case "gun":
|
||
return ::gun_rules;
|
||
|
||
case "shrp":
|
||
return ::shrp_rules;
|
||
}
|
||
}
|
||
|
||
//Function Number: 5
|
||
teamscorelimitcheck(rulescorepercent)
|
||
{
|
||
if(level.scorelimit)
|
||
{
|
||
minscorepercentageleft = 100;
|
||
foreach(team in level.teams)
|
||
{
|
||
scorepercentageleft = 100 - game["teamScores"][team] / level.scorelimit * 100;
|
||
if(minscorepercentageleft > scorepercentageleft)
|
||
{
|
||
minscorepercentageleft = scorepercentageleft;
|
||
}
|
||
|
||
if(rulescorepercent >= scorepercentageleft)
|
||
{
|
||
/#
|
||
updatedebughud(3,"Score Percentage Left: ",int(scorepercentageleft));
|
||
#/
|
||
return 0;
|
||
}
|
||
}
|
||
|
||
/#
|
||
updatedebughud(3,"Score Percentage Left: ",int(minscorepercentageleft));
|
||
}
|
||
#/
|
||
return 1;
|
||
}
|
||
|
||
//Function Number: 6
|
||
timelimitcheck(ruletimeleft)
|
||
{
|
||
maxtime = level.timelimit;
|
||
if(maxtime != 0)
|
||
{
|
||
timeleft = maps/mp/gametypes/_globallogic_utils::gettimeremaining();
|
||
if(ruletimeleft >= timeleft)
|
||
{
|
||
return 0;
|
||
}
|
||
}
|
||
|
||
return 1;
|
||
}
|
||
|
||
//Function Number: 7
|
||
dm_rules()
|
||
{
|
||
rulescorepercent = 35;
|
||
ruletimeleft = 60000 * 1.5;
|
||
/#
|
||
updatedebughud(1,"Any player is within percent of score cap: ",rulescorepercent);
|
||
updatedebughud(2,"Time limit has less than minutes remaining: ",ruletimeleft / 60000);
|
||
#/
|
||
if(level.scorelimit)
|
||
{
|
||
highestscore = 0;
|
||
players = get_players();
|
||
for(i = 0;i < players.size;i++)
|
||
{
|
||
if(players[i].pointstowin > highestscore)
|
||
{
|
||
highestscore = players[i].pointstowin;
|
||
}
|
||
}
|
||
|
||
scorepercentageleft = 100 - highestscore / level.scorelimit * 100;
|
||
/#
|
||
updatedebughud(3,"Score Percentage Left: ",int(scorepercentageleft));
|
||
#/
|
||
if(rulescorepercent >= scorepercentageleft)
|
||
{
|
||
return 0;
|
||
}
|
||
}
|
||
|
||
if(timelimitcheck(ruletimeleft) == 0)
|
||
{
|
||
return 0;
|
||
}
|
||
}
|
||
|
||
//Function Number: 8
|
||
tdm_rules()
|
||
{
|
||
rulescorepercent = 15;
|
||
ruletimeleft = 60000 * 1.5;
|
||
/#
|
||
updatedebughud(1,"Any player is within percent of score cap: ",rulescorepercent);
|
||
updatedebughud(2,"Time limit has less than minutes remaining: ",ruletimeleft / 60000);
|
||
#/
|
||
if(teamscorelimitcheck(rulescorepercent) == 0)
|
||
{
|
||
return 0;
|
||
}
|
||
|
||
if(timelimitcheck(ruletimeleft) == 0)
|
||
{
|
||
return 0;
|
||
}
|
||
}
|
||
|
||
//Function Number: 9
|
||
dom_rules()
|
||
{
|
||
rulescorepercent = 15;
|
||
ruletimeleft = 60000 * 1.5;
|
||
ruleround = 3;
|
||
currentround = game["roundsplayed"] + 1;
|
||
/#
|
||
updatedebughud(1,"Time limit 1.5 minutes remaining in final round. Any player is within percent of score cap: ",rulescorepercent);
|
||
updatedebughud(2,"Is round: ",ruleround);
|
||
updatedebughud(4,"Current Round: ",currentround);
|
||
#/
|
||
if(currentround >= 2)
|
||
{
|
||
if(teamscorelimitcheck(rulescorepercent) == 0)
|
||
{
|
||
return 0;
|
||
}
|
||
}
|
||
|
||
if(timelimitcheck(ruletimeleft) == 0)
|
||
{
|
||
return 0;
|
||
}
|
||
|
||
if(ruleround <= currentround)
|
||
{
|
||
return 0;
|
||
}
|
||
|
||
return 1;
|
||
}
|
||
|
||
//Function Number: 10
|
||
hq_rules()
|
||
{
|
||
return koth_rules();
|
||
}
|
||
|
||
//Function Number: 11
|
||
sd_rules()
|
||
{
|
||
ruleround = 3;
|
||
/#
|
||
updatedebughud(1,"Any team has won rounds: ",ruleround);
|
||
#/
|
||
maxroundswon = 0;
|
||
foreach(team in level.teams)
|
||
{
|
||
roundswon = game["teamScores"][team];
|
||
if(maxroundswon < roundswon)
|
||
{
|
||
maxroundswon = roundswon;
|
||
}
|
||
|
||
if(ruleround <= roundswon)
|
||
{
|
||
/#
|
||
updatedebughud(3,"Max Rounds Won: ",maxroundswon);
|
||
#/
|
||
return 0;
|
||
}
|
||
}
|
||
|
||
/#
|
||
updatedebughud(3,"Max Rounds Won: ",maxroundswon);
|
||
#/
|
||
return 1;
|
||
}
|
||
|
||
//Function Number: 12
|
||
dem_rules()
|
||
{
|
||
return ctf_rules();
|
||
}
|
||
|
||
//Function Number: 13
|
||
ctf_rules()
|
||
{
|
||
ruleround = 3;
|
||
roundsplayed = game["roundsplayed"];
|
||
/#
|
||
updatedebughud(1,"Is round or later: ",ruleround);
|
||
updatedebughud(3,"Rounds Played: ",roundsplayed);
|
||
#/
|
||
if(ruleround <= roundsplayed)
|
||
{
|
||
return 0;
|
||
}
|
||
}
|
||
|
||
//Function Number: 14
|
||
koth_rules()
|
||
{
|
||
rulescorepercent = 20;
|
||
ruletimeleft = 60000 * 1.5;
|
||
/#
|
||
updatedebughud(1,"Any player is within percent of score cap: ",rulescorepercent);
|
||
updatedebughud(2,"Time limit has less than minutes remaining: ",ruletimeleft / 60000);
|
||
#/
|
||
if(teamscorelimitcheck(rulescorepercent) == 0)
|
||
{
|
||
return 0;
|
||
}
|
||
|
||
if(timelimitcheck(ruletimeleft) == 0)
|
||
{
|
||
return 0;
|
||
}
|
||
}
|
||
|
||
//Function Number: 15
|
||
conf_rules()
|
||
{
|
||
return tdm_rules();
|
||
}
|
||
|
||
//Function Number: 16
|
||
oic_rules()
|
||
{
|
||
/#
|
||
updatedebughud(1,"No join in progress, so shouldn’t advertise to matchmaking once the countdown timer ends.",0);
|
||
#/
|
||
return 0;
|
||
}
|
||
|
||
//Function Number: 17
|
||
sas_rules()
|
||
{
|
||
rulescorepercent = 35;
|
||
ruletimeleft = 60000 * 1.5;
|
||
/#
|
||
updatedebughud(1,"Any player is within percent of score cap: ",rulescorepercent);
|
||
updatedebughud(2,"Time limit has less than minutes remaining: ",ruletimeleft / 60000);
|
||
#/
|
||
if(teamscorelimitcheck(rulescorepercent) == 0)
|
||
{
|
||
return 0;
|
||
}
|
||
|
||
if(timelimitcheck(ruletimeleft) == 0)
|
||
{
|
||
return 0;
|
||
}
|
||
}
|
||
|
||
//Function Number: 18
|
||
gun_rules()
|
||
{
|
||
ruleweaponsleft = 3;
|
||
/#
|
||
updatedebughud(1,"Any player is within X weapons from winning: ",ruleweaponsleft);
|
||
#/
|
||
minweaponsleft = level.gunprogression.size;
|
||
foreach(player in level.players)
|
||
{
|
||
weaponsleft = level.gunprogression.size - player.gunprogress;
|
||
if(minweaponsleft > weaponsleft)
|
||
{
|
||
minweaponsleft = weaponsleft;
|
||
}
|
||
|
||
if(ruleweaponsleft >= minweaponsleft)
|
||
{
|
||
/#
|
||
updatedebughud(3,"Weapons Left: ",minweaponsleft);
|
||
#/
|
||
return 0;
|
||
}
|
||
}
|
||
|
||
/#
|
||
updatedebughud(3,"Weapons Left: ",minweaponsleft);
|
||
#/
|
||
return 1;
|
||
}
|
||
|
||
//Function Number: 19
|
||
shrp_rules()
|
||
{
|
||
rulescorepercent = 35;
|
||
ruletimeleft = 60000 * 1.5;
|
||
/#
|
||
updatedebughud(1,"Any player is within percent of score cap: ",rulescorepercent);
|
||
updatedebughud(2,"Time limit has less than minutes remaining: ",ruletimeleft / 60000);
|
||
#/
|
||
if(teamscorelimitcheck(rulescorepercent) == 0)
|
||
{
|
||
return 0;
|
||
}
|
||
|
||
if(timelimitcheck(ruletimeleft) == 0)
|
||
{
|
||
return 0;
|
||
}
|
||
}
|
||
|
||
//Function Number: 20
|
||
sessionadvertismentcreatedebughud(linenum,alignx)
|
||
{
|
||
/#
|
||
debug_hud = maps/mp/gametypes/_dev::new_hud("session_advert","debug_hud",0,0,1);
|
||
debug_hud.hidewheninmenu = 1;
|
||
debug_hud.horzalign = "right";
|
||
debug_hud.vertalign = "middle";
|
||
debug_hud.alignx = "right";
|
||
debug_hud.aligny = "middle";
|
||
debug_hud.x = alignx;
|
||
debug_hud.y = -50 + linenum * 15;
|
||
debug_hud.foreground = 1;
|
||
debug_hud.font = "default";
|
||
debug_hud.fontscale = 1.5;
|
||
debug_hud.color = (1,1,1);
|
||
debug_hud.alpha = 1;
|
||
debug_hud settext("");
|
||
return debug_hud;
|
||
#/
|
||
}
|
||
|
||
//Function Number: 21
|
||
updatedebughud(hudindex,text,value)
|
||
{
|
||
/#
|
||
switch(hudindex)
|
||
{
|
||
case "1":
|
||
level.sessionadverthud_1a_text = text;
|
||
level.sessionadverthud_1b_text = value;
|
||
break;
|
||
|
||
case "2":
|
||
level.sessionadverthud_2a_text = text;
|
||
level.sessionadverthud_2b_text = value;
|
||
break;
|
||
|
||
case "3":
|
||
level.sessionadverthud_3a_text = text;
|
||
level.sessionadverthud_3b_text = value;
|
||
break;
|
||
|
||
case "4":
|
||
level.sessionadverthud_4a_text = text;
|
||
level.sessionadverthud_4b_text = value;
|
||
break;
|
||
}
|
||
#/
|
||
}
|
||
|
||
//Function Number: 22
|
||
sessionadvertismentupdatedebughud()
|
||
{
|
||
/#
|
||
level endon("game_end");
|
||
sessionadverthud_0 = undefined;
|
||
sessionadverthud_1a = undefined;
|
||
sessionadverthud_1b = undefined;
|
||
sessionadverthud_2a = undefined;
|
||
sessionadverthud_2b = undefined;
|
||
sessionadverthud_3a = undefined;
|
||
sessionadverthud_3b = undefined;
|
||
sessionadverthud_4a = undefined;
|
||
sessionadverthud_4b = undefined;
|
||
level.sessionadverthud_0_text = "";
|
||
level.sessionadverthud_1a_text = "";
|
||
level.sessionadverthud_1b_text = "";
|
||
level.sessionadverthud_2a_text = "";
|
||
level.sessionadverthud_2b_text = "";
|
||
level.sessionadverthud_3a_text = "";
|
||
level.sessionadverthud_3b_text = "";
|
||
level.sessionadverthud_4a_text = "";
|
||
level.sessionadverthud_4b_text = "";
|
||
while(1)
|
||
{
|
||
wait(1);
|
||
showdebughud = getdvarintdefault("sessionAdvertShowDebugHud",0);
|
||
level.sessionadverthud_0_text = "Session is advertised";
|
||
if(level.sessionadvertstatus == 0)
|
||
{
|
||
level.sessionadverthud_0_text = "Session is not advertised";
|
||
}
|
||
|
||
if(!IsDefined(sessionadverthud_0) && showdebughud != 0)
|
||
{
|
||
host = gethostplayer();
|
||
if(!(IsDefined(host)))
|
||
{
|
||
continue;
|
||
}
|
||
|
||
sessionadverthud_0 = host sessionadvertismentcreatedebughud(0,0);
|
||
sessionadverthud_1a = host sessionadvertismentcreatedebughud(1,-20);
|
||
sessionadverthud_1b = host sessionadvertismentcreatedebughud(1,0);
|
||
sessionadverthud_2a = host sessionadvertismentcreatedebughud(2,-20);
|
||
sessionadverthud_2b = host sessionadvertismentcreatedebughud(2,0);
|
||
sessionadverthud_3a = host sessionadvertismentcreatedebughud(3,-20);
|
||
sessionadverthud_3b = host sessionadvertismentcreatedebughud(3,0);
|
||
sessionadverthud_4a = host sessionadvertismentcreatedebughud(4,-20);
|
||
sessionadverthud_4b = host sessionadvertismentcreatedebughud(4,0);
|
||
sessionadverthud_1a.color = VectorScale((0,1,0));
|
||
sessionadverthud_1b.color = VectorScale((0,1,0));
|
||
sessionadverthud_2a.color = VectorScale((0,1,0));
|
||
sessionadverthud_2b.color = VectorScale((0,1,0));
|
||
}
|
||
|
||
if(IsDefined(sessionadverthud_0))
|
||
{
|
||
if(showdebughud == 0)
|
||
{
|
||
sessionadverthud_0 destroy();
|
||
sessionadverthud_1a destroy();
|
||
sessionadverthud_1b destroy();
|
||
sessionadverthud_2a destroy();
|
||
sessionadverthud_2b destroy();
|
||
sessionadverthud_3a destroy();
|
||
sessionadverthud_3b destroy();
|
||
sessionadverthud_4a destroy();
|
||
sessionadverthud_4b destroy();
|
||
sessionadverthud_0 = undefined;
|
||
sessionadverthud_1a = undefined;
|
||
sessionadverthud_1b = undefined;
|
||
sessionadverthud_2a = undefined;
|
||
sessionadverthud_2b = undefined;
|
||
sessionadverthud_3a = undefined;
|
||
sessionadverthud_3b = undefined;
|
||
sessionadverthud_4a = undefined;
|
||
sessionadverthud_4b = undefined;
|
||
continue;
|
||
}
|
||
|
||
if(level.sessionadvertstatus == 1)
|
||
{
|
||
sessionadverthud_0.color = (1,1,1);
|
||
}
|
||
else
|
||
{
|
||
sessionadverthud_0.color = VectorScale((1,0,0));
|
||
}
|
||
|
||
sessionadverthud_0 settext(level.sessionadverthud_0_text);
|
||
if(level.sessionadverthud_1a_text != "")
|
||
{
|
||
sessionadverthud_1a settext(level.sessionadverthud_1a_text);
|
||
sessionadverthud_1b setvalue(level.sessionadverthud_1b_text);
|
||
}
|
||
|
||
if(level.sessionadverthud_2a_text != "")
|
||
{
|
||
sessionadverthud_2a settext(level.sessionadverthud_2a_text);
|
||
sessionadverthud_2b setvalue(level.sessionadverthud_2b_text);
|
||
}
|
||
|
||
if(level.sessionadverthud_3a_text != "")
|
||
{
|
||
sessionadverthud_3a settext(level.sessionadverthud_3a_text);
|
||
sessionadverthud_3b setvalue(level.sessionadverthud_3b_text);
|
||
}
|
||
|
||
if(level.sessionadverthud_4a_text != "")
|
||
{
|
||
sessionadverthud_4a settext(level.sessionadverthud_4a_text);
|
||
sessionadverthud_4b setvalue(level.sessionadverthud_4b_text);
|
||
}
|
||
}
|
||
}
|
||
#/
|
||
} |