‪Black Ops 3 Source Code Explorer  0.1
‪An script explorer for Black Ops 3 by ZeRoY
popups_shared.gsc
Go to the documentation of this file.
1 #using scripts\codescripts\struct;
2 
3 #using scripts\shared\callbacks_shared;
4 #using scripts\shared\flag_shared;
5 #using scripts\shared\hud_message_shared;
6 #using scripts\shared\medals_shared;
7 #using scripts\shared\persistence_shared;
8 #using scripts\shared\rank_shared;
9 #using scripts\shared\system_shared;
10 #using scripts\shared\util_shared;
11 #using scripts\shared\weapons_shared;
12 #using scripts\shared\weapons\_weapons;
13 
14 #insert scripts\shared\shared.gsh;
15 #insert scripts\shared\statstable_shared.gsh;
16 
17 #precache( "string", "KILLSTREAK_DESTROYED_UAV" );
18 #precache( "string", "KILLSTREAK_DESTROYED_COUNTERUAV" );
19 #precache( "string", "KILLSTREAK_DESTROYED_REMOTE_MORTAR" );
20 #precache( "string", "KILLSTREAK_MP40_INBOUND" );
21 #precache( "string", "KILLSTREAK_M220_TOW_INBOUND" );
22 #precache( "string", "KILLSTREAK_MINIGUN_INBOUND" );
23 #precache( "string", "KILLSTREAK_M202_FLASH_INBOUND" );
24 #precache( "string", "KILLSTREAK_M32_INBOUND");
25 #precache( "string", "MP_CAPTURED_THE_FLAG" );
26 #precache( "string", "MP_KILLED_FLAG_CARRIER" );
27 #precache( "string", "MP_FRIENDLY_FLAG_DROPPED" );
28 #precache( "string", "MP_ENEMY_FLAG_DROPPED" );
29 #precache( "string", "MP_FRIENDLY_FLAG_RETURNED" );
30 #precache( "string", "MP_ENEMY_FLAG_RETURNED" );
31 #precache( "string", "MP_FRIENDLY_FLAG_TAKEN" );
32 #precache( "string", "MP_ENEMY_FLAG_TAKEN" );
33 #precache( "string", "MP_ENEMY_FLAG_CAPTURED" );
34 #precache( "string", "MP_FRIENDLY_FLAG_CAPTURED" );
35 #precache( "string", "MP_EXPLOSIVES_BLOWUP_BY" );
36 #precache( "string", "MP_EXPLOSIVES_DEFUSED_BY" );
37 #precache( "string", "MP_EXPLOSIVES_PLANTED_BY" );
38 #precache( "string", "MP_HQ_DESTROYED_BY" );
39 #precache( "string", "KILLSTREAK_DESTROYED_HELICOPTER" );
40 
41 #namespace popups;
42 
43 // some common functions between all the air kill streaks
44 
45 ‪REGISTER_SYSTEM( "popups", &‪__init__, undefined )
46 
47 function ‪__init__()
48 {
50 }
51 
52 function ‪init()
53 {
54  // if the column changes in the medalTable.csv
55  // these need to be changed too
56  level.contractSettings = spawnstruct();
57  level.contractSettings.waitTime = 4.2;
58  level.killstreakSettings = spawnstruct();
59  level.killstreakSettings.waitTime = 3;
60  level.rankSettings = spawnstruct();
61  level.rankSettings.waitTime = 3;
62  level.startMessage = spawnstruct();
63  level.startMessageDefaultDuration = 2.0;
64  level.endMessageDefaultDuration = 2.0;
65  level.challengeSettings = spawnstruct();
66  level.challengeSettings.waitTime = 3;
67  level.teamMessage = spawnstruct();
68  level.teamMessage.waittime = 3;
69  level.regularGameMessages = spawnstruct();
70  level.regularGameMessages.waittime = 6;
71  level.wagerSettings = spawnstruct();
72  level.wagerSettings.waittime = 3;
73  level.momentumNotifyWaitTime = 0;
74  level.momentumNotifyWaitLastTime = 0;
75  level.teamMessageQueueMax = 8;
76 
77 
79 }
80 
82 {
83  self.resetGameOverHudRequired = false;
84  self thread displayPopupsWaiter();
85  if ( !level.hardcoreMode )
86  {
87  self thread ‪displayTeamMessageWaiter();
88  }
89 }
90 
91 function ‪DisplayKillstreakTeamMessageToAll( killstreak, player )
92 {
93  if ( !isdefined ( level.killstreaks[killstreak] ) )
94  return;
95  if ( !isdefined ( level.killstreaks[killstreak].inboundText ) )
96  return;
97 
98  message = level.killstreaks[killstreak].inboundText;
99  self ‪DisplayTeamMessageToAll( message, player );
100 }
101 
102 function ‪DisplayKillstreakHackedTeamMessageToAll( killstreak, player )
103 {
104  if ( !isdefined ( level.killstreaks[killstreak] ) )
105  return;
106  if ( !isdefined ( level.killstreaks[killstreak].hackedText ) )
107  return;
108 
109  message = level.killstreaks[killstreak].hackedText;
110  self ‪DisplayTeamMessageToAll( message, player );
111 }
112 
114 {
115  // level.splitscreen is the local splitscreen mode only
116  if ( level.hardcoreMode == true || level.splitscreen == true )
117  return false;
118 
119  return true;
120 }
121 
122 function ‪DisplayTeamMessageToAll( message, player )
123 {
125  return;
126 
127  for ( i = 0; i < level.players.size; i++ )
128  {
129  cur_player = level.players[i];
130 
131  if ( cur_player IsEMPJammed() )
132  continue;
133 
134  size = cur_player.teamMessageQueue.size;
135 
136  if ( size >= level.teamMessageQueueMax )
137  continue;
138 
139  cur_player.teamMessageQueue[size] = spawnStruct();
140  cur_player.teamMessageQueue[size].message = message;
141  cur_player.teamMessageQueue[size].player = player;
142 
143  cur_player notify ( "received teammessage" );
144  }
145 }
146 
147 function ‪DisplayTeamMessageToTeam( message, player, team )
148 {
150  return;
151 
152  for ( i = 0; i < level.players.size; i++ )
153  {
154  cur_player = level.players[i];
155 
156  if ( cur_player.team != team )
157  continue;
158 
159  if ( cur_player IsEMPJammed() )
160  continue;
161 
162  size = cur_player.teamMessageQueue.size;
163 
164  if ( size >= level.teamMessageQueueMax )
165  continue;
166 
167  cur_player.teamMessageQueue[size] = spawnStruct();
168  cur_player.teamMessageQueue[size].message = message;
169  cur_player.teamMessageQueue[size].player = player;
170 
171  cur_player notify ( "received teammessage" );
172  }
173 }
174 
176 {
178  return;
179 
180  self endon( "disconnect" );
181  level endon( "game_ended" );
182 
183  self.teamMessageQueue = [];
184 
185  for ( ;; )
186  {
187  if ( self.teamMessageQueue.size == 0 )
188  self waittill( "received teammessage" );
189 
190  if ( self.teamMessageQueue.size > 0 )
191  {
192  nextNotifyData = self.teamMessageQueue[0];
193  ArrayRemoveIndex( self.teamMessageQueue, 0, false );
194 
195  if ( !isdefined( nextNotifyData.player ) || !isplayer( nextNotifyData.player ) )
196  continue;
197 
198  if ( self IsEMPJammed() )
199  continue;
200 
201  self LUINotifyEvent( &"player_callout", 2, nextNotifyData.message, nextNotifyData.player.entnum );
202  }
203  wait ( level.teamMessage.waittime );
204  }
205 }
206 
207 
209 {
210  self endon( "disconnect" );
211 
212  self.rankNotifyQueue = [];
213  if ( !isdefined( self.pers["challengeNotifyQueue"] ) )
214  {
215  self.pers["challengeNotifyQueue"] = [];
216  }
217  if ( !isdefined( self.pers["contractNotifyQueue"] ) )
218  {
219  self.pers["contractNotifyQueue"] = [];
220  }
221 
222  self.messageNotifyQueue = [];
223  self.startMessageNotifyQueue = [];
224  self.wagerNotifyQueue = [];
225 
226  while( isdefined( level ) && isdefined( level.gameEnded ) && !level.gameEnded )
227  {
228  if ( self.startMessageNotifyQueue.size == 0 && self.messageNotifyQueue.size == 0 )
229  self waittill( "received award" );
230 
231  waittillframeend;
232 
233  if ( !isdefined( level ) )
234  break;
235 
236  if ( !isdefined( level.gameEnded ) )
237  break;
238 
239  if ( level.gameEnded )
240  break;
241 
242  if ( self.startMessageNotifyQueue.size > 0 )
243  {
244  nextNotifyData = self.startMessageNotifyQueue[0];
245  ArrayRemoveIndex( self.startMessageNotifyQueue, 0, false );
246 
247  if ( isdefined( nextNotifyData.duration ) )
248  duration = nextNotifyData.duration;
249  else
250  duration = level.startMessageDefaultDuration;
251 
252  self ‪hud_message::showNotifyMessage( nextNotifyData, duration );
253  wait ( duration );
254  }
255  else if ( self.messageNotifyQueue.size > 0 )
256  {
257  nextNotifyData = self.messageNotifyQueue[0];
258  ArrayRemoveIndex( self.messageNotifyQueue, 0, false );
259 
260  if ( isdefined( nextNotifyData.duration ) )
261  duration = nextNotifyData.duration;
262  else
263  duration = level.regularGameMessages.waittime;
264 
265  self ‪hud_message::showNotifyMessage( nextNotifyData, duration );
266  }
267  else
268  {
269  //assertmsg( "displayPopUpsWaiter not handling case" );
270  wait( 1 );
271  }
272  }
273 }
274 
275 function ‪milestoneNotify( index, itemIndex, type, tier )
276 {
277  level.globalChallenges++;
278 
279  if ( !isdefined( type ) )
280  {
281  type = "global";
282  }
283  size = self.pers["challengeNotifyQueue"].size;
284  self.pers["challengeNotifyQueue"][size] = [];
285  self.pers["challengeNotifyQueue"][size]["tier"] = tier;
286  self.pers["challengeNotifyQueue"][size]["index"] = index;
287  self.pers["challengeNotifyQueue"][size]["itemIndex"] = itemIndex;
288  self.pers["challengeNotifyQueue"][size]["type"] = type;
289 
290  self notify( "received award" );
291 }
292 
‪displayTeamMessageWaiter
‪function displayTeamMessageWaiter()
Definition: popups_shared.gsc:175
‪on_start_gametype
‪function on_start_gametype(func, obj)
Definition: callbacks_shared.csc:285
‪milestoneNotify
‪function milestoneNotify(index, itemIndex, type, tier)
Definition: popups_shared.gsc:275
‪DisplayKillstreakHackedTeamMessageToAll
‪function DisplayKillstreakHackedTeamMessageToAll(killstreak, player)
Definition: popups_shared.gsc:102
‪DisplayKillstreakTeamMessageToAll
‪function DisplayKillstreakTeamMessageToAll(killstreak, player)
Definition: popups_shared.gsc:91
‪displayPopUpsWaiter
‪function displayPopUpsWaiter()
Definition: popups_shared.gsc:208
‪showNotifyMessage
‪function showNotifyMessage(notifyData, duration)
Definition: hud_message_shared.gsc:244
‪DisplayTeamMessageToAll
‪function DisplayTeamMessageToAll(message, player)
Definition: popups_shared.gsc:122
‪init
‪function init()
Definition: popups_shared.gsc:52
‪REGISTER_SYSTEM
‪#define REGISTER_SYSTEM(__sys, __func_init_preload, __reqs)
Definition: shared.gsh:204
‪on_player_connect
‪function on_player_connect()
Definition: popups_shared.gsc:81
‪shouldDisplayTeamMessages
‪function shouldDisplayTeamMessages()
Definition: popups_shared.gsc:113
‪DisplayTeamMessageToTeam
‪function DisplayTeamMessageToTeam(message, player, team)
Definition: popups_shared.gsc:147
‪__init__
‪function __init__()
Definition: popups_shared.gsc:47
‪on_connecting
‪function on_connecting(func, obj)
Definition: callbacks_shared.gsc:146