IL-GSC/BO2/PC/MP/maps/mp/_popups.gsc
2023-10-28 00:17:17 -04:00

412 lines
9.2 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\_popups.gsc
* Game: Call of Duty: Black Ops 2
* Platform: PC
* Function Count: 10
* Decompile Time: 3 ms
* Timestamp: 10/28/2023 12:11:00 AM
*******************************************************************/
#include common_scripts/utility;
#include maps/mp/_medals;
#include maps/mp/_utility;
#include maps/mp/gametypes/_hud_message;
#include maps/mp/gametypes/_persistence;
#include maps/mp/gametypes/_rank;
//Function Number: 1
init()
{
level.contractsettings = spawnstruct();
level.contractsettings.waittime = 4.2;
level.killstreaksettings = spawnstruct();
level.killstreaksettings.waittime = 3;
level.ranksettings = spawnstruct();
level.ranksettings.waittime = 3;
level.startmessage = spawnstruct();
level.startmessagedefaultduration = 2;
level.endmessagedefaultduration = 2;
level.challengesettings = spawnstruct();
level.challengesettings.waittime = 3;
level.teammessage = spawnstruct();
level.teammessage.waittime = 3;
level.regulargamemessages = spawnstruct();
level.regulargamemessages.waittime = 6;
level.wagersettings = spawnstruct();
level.wagersettings.waittime = 3;
level.momentumnotifywaittime = 0;
level.momentumnotifywaitlasttime = 0;
level.teammessagequeuemax = 8;
precachestring(&"KILLSTREAK_DESTROYED_UAV");
precachestring(&"KILLSTREAK_DESTROYED_COUNTERUAV");
precachestring(&"KILLSTREAK_DESTROYED_REMOTE_MORTAR");
precachestring(&"KILLSTREAK_MP40_INBOUND");
precachestring(&"KILLSTREAK_M220_TOW_INBOUND");
precachestring(&"KILLSTREAK_MINIGUN_INBOUND");
precachestring(&"KILLSTREAK_M202_FLASH_INBOUND");
precachestring(&"KILLSTREAK_M32_INBOUND");
precachestring(&"MP_CAPTURED_THE_FLAG");
precachestring(&"MP_KILLED_FLAG_CARRIER");
precachestring(&"MP_FRIENDLY_FLAG_DROPPED");
precachestring(&"MP_ENEMY_FLAG_DROPPED");
precachestring(&"MP_FRIENDLY_FLAG_RETURNED");
precachestring(&"MP_ENEMY_FLAG_RETURNED");
precachestring(&"MP_FRIENDLY_FLAG_TAKEN");
precachestring(&"MP_ENEMY_FLAG_TAKEN");
precachestring(&"MP_ENEMY_FLAG_CAPTURED");
precachestring(&"MP_FRIENDLY_FLAG_CAPTURED");
precachestring(&"MP_EXPLOSIVES_BLOWUP_BY");
precachestring(&"MP_EXPLOSIVES_DEFUSED_BY");
precachestring(&"MP_EXPLOSIVES_PLANTED_BY");
precachestring(&"MP_HQ_DESTROYED_BY");
precachestring(&"KILLSTREAK_DESTROYED_HELICOPTER");
/#
level thread popupsfromconsole();
#/
level thread onplayerconnect();
}
//Function Number: 2
popupsfromconsole()
{
/#
while(1)
{
timeout = getdvarintdefault("scr_popuptime",1);
if(timeout == 0)
{
timeout = 1;
}
wait(timeout);
medal = getdvarintdefault("scr_popupmedal",0);
challenge = getdvarintdefault("scr_popupchallenge",0);
rank = getdvarintdefault("scr_popuprank",0);
gun = getdvarintdefault("scr_popupgun",0);
contractpass = getdvarintdefault("scr_popupcontractpass",0);
contractfail = getdvarintdefault("scr_popupcontractfail",0);
gamemodemsg = getdvarintdefault("scr_gamemodeslideout",0);
teammsg = getdvarintdefault("scr_teamslideout",0);
challengeindex = getdvarintdefault("scr_challengeIndex",1);
for(i = 0;i < medal;i++)
{
level.players[0] maps/mp/_medals::codecallback_medal(4);
}
for(i = 0;i < challenge;i++)
{
level.players[0] maps/mp/gametypes/_persistence::codecallback_challengecomplete(2500,1,84,3,0,0,851);
level.players[0] maps/mp/gametypes/_persistence::codecallback_challengecomplete(500,1,22,2,0,0,533);
}
for(i = 0;i < rank;i++)
{
level.players[0] maps/mp/gametypes/_rank::codecallback_rankup(4,0,0);
}
for(i = 0;i < gun;i++)
{
level.players[0] maps/mp/gametypes/_persistence::codecallback_gunchallengecomplete(0,20,25,0);
}
for(i = 0;i < contractpass;i++)
{
level.players[0] maps/mp/gametypes/_persistence::addcontracttoqueue(12,1);
}
for(i = 0;i < contractfail;i++)
{
level.players[0] maps/mp/gametypes/_persistence::addcontracttoqueue(12,0);
}
for(i = 0;i < teammsg;i++)
{
player = level.players[0];
if(IsDefined(level.players[1]))
{
player = level.players[1];
}
level.players[0] displayteammessagetoall(&"KILLSTREAK_DESTROYED_HELICOPTER",player);
}
reset = getdvarintdefault("scr_popupreset",1);
if(reset)
{
if(medal)
{
setdvar("scr_popupmedal",0);
}
if(challenge)
{
setdvar("scr_popupchallenge",0);
}
if(gun)
{
setdvar("scr_popupgun",0);
}
if(rank)
{
setdvar("scr_popuprank",0);
}
if(contractpass)
{
setdvar("scr_popupcontractpass",0);
}
if(contractfail)
{
setdvar("scr_popupcontractfail",0);
}
if(gamemodemsg)
{
setdvar("scr_gamemodeslideout",0);
}
if(teammsg)
{
setdvar("scr_teamslideout",0);
}
}
}
#/
}
//Function Number: 3
displaykillstreakteammessagetoall(killstreak,player)
{
if(!(IsDefined(level.killstreaks[killstreak])))
{
return;
}
if(!(IsDefined(level.killstreaks[killstreak].inboundtext)))
{
return;
}
message = level.killstreaks[killstreak].inboundtext;
self displayteammessagetoall(message,player);
}
//Function Number: 4
shoulddisplayteammessages()
{
if(level.hardcoremode == 1 || level.splitscreen == 1)
{
return 0;
}
}
//Function Number: 5
displayteammessagetoall(message,player)
{
if(!(shoulddisplayteammessages()))
{
return;
}
for(i = 0;i < level.players.size;i++)
{
cur_player = level.players[i];
if(cur_player isempjammed())
{
}
else
{
size = cur_player.teammessagequeue.size;
if(size >= level.teammessagequeuemax)
{
}
else
{
cur_player.teammessagequeue[size] = spawnstruct();
cur_player.teammessagequeue[size].message = message;
cur_player.teammessagequeue[size].player = player;
cur_player notify("received teammessage");
}
}
}
}
//Function Number: 6
displayteammessagetoteam(message,player,team)
{
if(!(shoulddisplayteammessages()))
{
return;
}
for(i = 0;i < level.players.size;i++)
{
cur_player = level.players[i];
if(cur_player.team != team)
{
}
else if(cur_player isempjammed())
{
}
else
{
size = cur_player.teammessagequeue.size;
if(size >= level.teammessagequeuemax)
{
}
else
{
cur_player.teammessagequeue[size] = spawnstruct();
cur_player.teammessagequeue[size].message = message;
cur_player.teammessagequeue[size].player = player;
cur_player notify("received teammessage");
}
}
}
}
//Function Number: 7
displayteammessagewaiter()
{
if(!(shoulddisplayteammessages()))
{
return;
}
self endon("disconnect");
level endon("game_ended");
self.teammessagequeue = [];
for(;;)
{
if(self.teammessagequeue.size == 0)
{
self waittill("received teammessage");
}
if(self.teammessagequeue.size > 0)
{
nextnotifydata = self.teammessagequeue[0];
arrayremoveindex(self.teammessagequeue,0,0);
if(!IsDefined(nextnotifydata.player) || !isplayer(nextnotifydata.player))
{
continue;
}
if(self isempjammed())
{
continue;
}
self luinotifyevent(&"player_callout",2,nextnotifydata.message,nextnotifydata.player.entnum);
}
wait(level.teammessage.waittime);
}
}
//Function Number: 8
displaypopupswaiter()
{
self endon("disconnect");
self.ranknotifyqueue = [];
if(!(IsDefined(self.pers["challengeNotifyQueue"])))
{
self.pers["challengeNotifyQueue"] = [];
}
if(!(IsDefined(self.pers["contractNotifyQueue"])))
{
self.pers["contractNotifyQueue"] = [];
}
self.messagenotifyqueue = [];
self.startmessagenotifyqueue = [];
self.wagernotifyqueue = [];
while(!(level.gameended))
{
if(self.startmessagenotifyqueue.size == 0 && self.messagenotifyqueue.size == 0)
{
self waittill("received award");
}
waittillframeend;
if(level.gameended)
{
break;
}
if(self.startmessagenotifyqueue.size > 0)
{
nextnotifydata = self.startmessagenotifyqueue[0];
arrayremoveindex(self.startmessagenotifyqueue,0,0);
if(IsDefined(nextnotifydata.duration))
{
duration = nextnotifydata.duration;
}
else
{
duration = level.startmessagedefaultduration;
}
self maps/mp/gametypes/_hud_message::shownotifymessage(nextnotifydata,duration);
wait(duration);
continue;
}
if(self.messagenotifyqueue.size > 0)
{
nextnotifydata = self.messagenotifyqueue[0];
arrayremoveindex(self.messagenotifyqueue,0,0);
if(IsDefined(nextnotifydata.duration))
{
duration = nextnotifydata.duration;
}
else
{
duration = level.regulargamemessages.waittime;
}
self maps/mp/gametypes/_hud_message::shownotifymessage(nextnotifydata,duration);
continue;
}
wait(1);
}
}
//Function Number: 9
onplayerconnect()
{
for(;;)
{
level waittill("connecting",player);
player.resetgameoverhudrequired = 0;
player thread displaypopupswaiter();
if(!(level.hardcoremode))
{
player thread displayteammessagewaiter();
}
}
}
//Function Number: 10
milestonenotify(index,itemindex,type,tier)
{
level.globalchallenges++;
if(!(IsDefined(type)))
{
type = "global";
}
size = self.pers["challengeNotifyQueue"].size;
self.pers["challengeNotifyQueue"][size] = [];
self.pers["challengeNotifyQueue"][size]["tier"] = tier;
self.pers["challengeNotifyQueue"][size]["index"] = index;
self.pers["challengeNotifyQueue"][size]["itemIndex"] = itemindex;
self.pers["challengeNotifyQueue"][size]["type"] = type;
self notify("received award");
}