‪Black Ops 3 Source Code Explorer  0.1
‪An script explorer for Black Ops 3 by ZeRoY
_globallogic_utils.gsc
Go to the documentation of this file.
1 #using scripts\codescripts\struct;
2 
3 #using scripts\shared\hud_message_shared;
4 
5 #insert scripts\shared\shared.gsh;
6 
7 #using scripts\zm\gametypes\_globallogic_score;
8 #using scripts\zm\gametypes\_hostmigration;
9 
10 #namespace globallogic_utils;
11 
12 function ‪testMenu()
13 {
14  self endon ( "death" );
15  self endon ( "disconnect" );
16 
17  for ( ;; )
18  {
19  wait ( 10.0 );
20 
21  notifyData = spawnStruct();
22  notifyData.titleText = &"MP_CHALLENGE_COMPLETED";
23  notifyData.notifyText = "wheee";
24  notifyData.sound = "mp_challenge_complete";
25 
26  self thread ‪hud_message::notifyMessage( notifyData );
27  }
28 }
29 
30 function ‪testShock()
31 {
32  self endon ( "death" );
33  self endon ( "disconnect" );
34 
35  for ( ;; )
36  {
37  wait ( 3.0 );
38 
39  numShots = randomInt( 6 );
40 
41  for ( i = 0; i < numShots; i++ )
42  {
43  iPrintLnBold( numShots );
44  self shellShock( "frag_grenade_mp", 0.2 );
45  wait ( 0.1 );
46  }
47  }
48 }
49 
50 function ‪testHPs()
51 {
52  self endon ( "death" );
53  self endon ( "disconnect" );
54 
55  hps = [];
56  hps[hps.size] = "radar";
57  hps[hps.size] = "artillery";
58  hps[hps.size] = "dogs";
59 
60  for ( ;; )
61  {
62 // hp = hps[randomInt(hps.size)];
63  hp = "radar";
64  /*if ( self thread _killstreaks::giveKillstreak( hp ) )
65  {
66  self playLocalSound( level.killstreaks[hp].informDialog );
67  }*/
68 
69 // self thread _killstreaks::upgradeHardpointItem();
70 
71  wait ( 20.0 );
72  }
73 }
74 
75 
76 // returns the best guess of the exact time until the scoreboard will be displayed and player control will be lost.
77 // returns undefined if time is not known
79 {
80  if ( level.gameEnded )
81  {
82  timePassed = (getTime() - level.gameEndTime) / 1000;
83  timeRemaining = level.postRoundTime - timePassed;
84 
85  if ( timeRemaining < 0 )
86  return 0;
87 
88  return timeRemaining;
89  }
90 
91  if ( level.inOvertime )
92  return undefined;
93 
94  if ( level.timeLimit <= 0 )
95  return undefined;
96 
97  if ( !isdefined( level.startTime ) )
98  return undefined;
99 
100  timePassed = (‪getTimePassed() - level.startTime)/1000;
101  timeRemaining = (level.timeLimit * 60) - timePassed;
102 
103  return timeRemaining + level.postRoundTime;
104 }
105 
106 
108 {
109  return level.timeLimit * 60 * 1000 - ‪getTimePassed();
110 }
111 
112 function ‪registerPostRoundEvent( eventFunc )
113 {
114  if ( !isdefined( level.postRoundEvents ) )
115  level.postRoundEvents = [];
116 
117  level.postRoundEvents[level.postRoundEvents.size] = eventFunc;
118 }
119 
121 {
122  if ( !isdefined( level.postRoundEvents ) )
123  return;
124 
125  for ( i = 0 ; i < level.postRoundEvents.size ; i++ )
126  {
127  [[level.postRoundEvents[i]]]();
128  }
129 }
130 
131 function ‪getValueInRange( value, minValue, maxValue )
132 {
133  if ( value > maxValue )
134  return maxValue;
135  else if ( value < minValue )
136  return minValue;
137  else
138  return value;
139 }
140 
141 
142 
143 
144 function ‪isValidClass( vclass )
145 {
146  if ( level.oldschool || SessionModeIsZombiesGame() )
147  {
148  assert( !isdefined( vclass ) );
149  return true;
150  }
151  return isdefined( vclass ) && vclass != "";
152 }
153 
154 
155 function ‪playTickingSound( gametype_tick_sound )
156 {
157  self endon("death");
158  self endon("stop_ticking");
159  level endon("game_ended");
160 
161  time = level.bombTimer;
162 
163  while(1)
164  {
165  self playSound( gametype_tick_sound );
166 
167  if ( time > 10 )
168  {
169  time -= 1;
170  wait 1;
171  }
172  else if ( time > 4 )
173  {
174  time -= .5;
175  wait .5;
176  }
177  else if ( time > 1 )
178  {
179  time -= .4;
180  wait .4;
181  }
182  else
183  {
184  time -= .3;
185  wait .3;
186  }
188  }
189 }
190 
192 {
193  self notify("stop_ticking");
194 }
195 
196 function ‪gameTimer()
197 {
198  level endon ( "game_ended" );
199 
200  level waittill("prematch_over");
201  // moving music to post spawn to allow for intro stingers
202  //music::setmusicstate( "UNDERSCORE" );
203 
204  level.startTime = getTime();
205  level.discardTime = 0;
206 
207  if ( isdefined( game["roundMillisecondsAlreadyPassed"] ) )
208  {
209  level.startTime -= game["roundMillisecondsAlreadyPassed"];
210  game["roundMillisecondsAlreadyPassed"] = undefined;
211  }
212 
213  prevtime = gettime();
214 
215  while ( game["state"] == "playing" )
216  {
217  if ( !level.timerStopped )
218  {
219  // the wait isn't always exactly 1 second. dunno why.
220  game["timepassed"] += gettime() - prevtime;
221  }
222  prevtime = gettime();
223  wait ( 1.0 );
224  }
225 }
226 
228 {
229  if ( !isdefined( level.startTime ) )
230  return 0;
231 
232  if ( level.timerStopped )
233  return (level.timerPauseTime - level.startTime) - level.discardTime;
234  else
235  return (gettime() - level.startTime) - level.discardTime;
236 
237 }
238 
239 
240 function ‪pauseTimer()
241 {
242  if ( level.timerStopped )
243  return;
244 
245  level.timerStopped = true;
246  level.timerPauseTime = gettime();
247 }
248 
249 
250 function ‪resumeTimer()
251 {
252  if ( !level.timerStopped )
253  return;
254 
255  level.timerStopped = false;
256  level.discardTime += gettime() - level.timerPauseTime;
257 }
258 
259 
260 function ‪getScoreRemaining( team )
261 {
262  assert( IsPlayer( self ) || isdefined( team ) );
263 
264  scoreLimit = level.scoreLimit;
265 
266  if ( IsPlayer( self ) )
267  return scoreLimit - ‪globallogic_score::_getPlayerScore( self );
268  else
269  return scoreLimit - GetTeamScore( team );
270 }
271 
272 
273 function ‪getScorePerMinute( team )
274 {
275  assert( IsPlayer( self ) || isdefined( team ) );
276 
277  scoreLimit = level.scoreLimit;
278  timeLimit = level.timeLimit;
279  minutesPassed = ( ‪getTimePassed() / ( 60 * 1000 ) ) + 0.0001;
280 
281  if ( IsPlayer( self ) )
282  return ‪globallogic_score::_getPlayerScore( self ) / minutesPassed;
283  else
284  return GetTeamScore( team ) / minutesPassed;
285 }
286 
287 
289 {
290  assert( IsPlayer( self ) || isdefined( team ) );
291 
292  scorePerMinute = self ‪getScorePerMinute( team );
293  scoreRemaining = self ‪getScoreRemaining( team );
294 
295  if ( !scorePerMinute )
296  return 999999;
297 
298  return scoreRemaining / scorePerMinute;
299 }
300 
301 
302 function ‪rumbler()
303 {
304  self endon("disconnect");
305  while(1)
306  {
307  wait(0.1);
308  self PlayRumbleOnEntity( "damage_heavy" );
309  }
310 }
311 
312 
313 function ‪waitForTimeOrNotify( time, notifyname )
314 {
315  self endon( notifyname );
316  wait time;
317 }
318 
319 
320 function ‪waitForTimeOrNotifyNoArtillery( time, notifyname )
321 {
322  self endon( notifyname );
323  wait time;
324  while( isdefined( level.artilleryInProgress ) )
325  {
326  assert( level.artilleryInProgress ); // undefined or true
327  wait .25;
328  }
329 }
330 
331 
332 function ‪isHeadShot( weapon, sHitLoc, sMeansOfDeath, eInflictor )
333 {
334  if( sHitLoc != "head" && sHitLoc != "helmet" )
335  {
336  return false;
337  }
338 
339  switch( sMeansOfDeath )
340  {
341  case "MOD_MELEE":
342  return false;
343  case "MOD_IMPACT":
344  if( weapon != level.weaponBallisticKnife )
345  return false;
346  }
347 
348  //if ( _killstreaks::isKillstreakWeapon( weapon ) )
349  //{
350  // if ( !isdefined( eInflictor ) || !isdefined( eInflictor.controlled ) || eInflictor.controlled == false )
351  // {
352  // return false;
353  // }
354  //}
355 
356  return true;
357 }
358 
359 
360 function ‪getHitLocHeight( sHitLoc )
361 {
362  switch( sHitLoc )
363  {
364  case "helmet":
365  case "head":
366  case "neck":
367  return 60;
368  case "torso_upper":
369  case "right_arm_upper":
370  case "left_arm_upper":
371  case "right_arm_lower":
372  case "left_arm_lower":
373  case "right_hand":
374  case "left_hand":
375  case "gun":
376  return 48;
377  case "torso_lower":
378  return 40;
379  case "right_leg_upper":
380  case "left_leg_upper":
381  return 32;
382  case "right_leg_lower":
383  case "left_leg_lower":
384  return 10;
385  case "right_foot":
386  case "left_foot":
387  return 5;
388  }
389  return 48;
390 }
391 
392 function ‪debugLine( start, ‪end )
393 {
394 }
395 
396 
397 function ‪isExcluded( entity, entityList )
398 {
399  for ( index = 0; index < entityList.size; index++ )
400  {
401  if ( entity == entityList[index] )
402  return true;
403  }
404  return false;
405 }
406 
407 
408 function ‪waitForTimeOrNotifies( desiredDelay )
409 {
410  startedWaiting = getTime();
411 
412 // while( self.doingNotify )
413 // WAIT_SERVER_FRAME;
414 
415  waitedTime = (getTime() - startedWaiting)/1000;
416 
417  if ( waitedTime < desiredDelay )
418  {
419  wait desiredDelay - waitedTime;
420  return desiredDelay;
421  }
422  else
423  {
424  return waitedTime;
425  }
426 }
427 
428 function ‪logTeamWinString( wintype, winner )
429 {
430 }
431 
‪waitTillHostMigrationDone
‪function waitTillHostMigrationDone()
Definition: hostmigration_shared.gsc:193
‪notifyMessage
‪function notifyMessage(notifyData)
Definition: hud_message_shared.gsc:214
‪getHitLocHeight
‪function getHitLocHeight(sHitLoc)
Definition: _globallogic_utils.gsc:426
‪waitForTimeOrNotifies
‪function waitForTimeOrNotifies(desiredDelay)
Definition: _globallogic_utils.gsc:481
‪executePostRoundEvents
‪function executePostRoundEvents()
Definition: _globallogic_utils.gsc:122
‪timeUntilRoundEnd
‪function timeUntilRoundEnd()
Definition: _globallogic_utils.gsc:80
‪getTimeRemaining
‪function getTimeRemaining()
Definition: _globallogic_utils.gsc:109
‪rumbler
‪function rumbler()
Definition: _globallogic_utils.gsc:367
‪playTickingSound
‪function playTickingSound(gametype_tick_sound)
Definition: _globallogic_utils.gsc:155
‪isExcluded
‪function isExcluded(entity, entityList)
Definition: _globallogic_utils.gsc:470
‪getScorePerMinute
‪function getScorePerMinute(team)
Definition: _globallogic_utils.gsc:340
‪pauseTimer
‪function pauseTimer(pausePlayableTimer=false)
Definition: _globallogic_utils.gsc:287
‪getEstimatedTimeUntilScoreLimit
‪function getEstimatedTimeUntilScoreLimit(team)
Definition: _globallogic_utils.gsc:353
‪registerPostRoundEvent
‪function registerPostRoundEvent(eventFunc)
Definition: _globallogic_utils.gsc:114
‪debugLine
‪function debugLine(start, end)
Definition: _globallogic_utils.gsc:458
‪isHeadShot
‪function isHeadShot(weapon, sHitLoc, sMeansOfDeath, eInflictor)
Definition: _globallogic_utils.gsc:397
‪testMenu
‪function testMenu()
Definition: _globallogic_utils.gsc:17
‪resumeTimer
‪function resumeTimer()
Definition: _globallogic_utils.gsc:299
‪_getPlayerScore
‪function _getPlayerScore(player)
Definition: _globallogic_score.gsc:538
‪getTimePassed
‪function getTimePassed()
Definition: _globallogic_utils.gsc:274
‪waitForTimeOrNotify
‪function waitForTimeOrNotify(time, notifyname)
Definition: _globallogic_utils.gsc:378
‪gameTimer
‪function gameTimer()
Definition: _globallogic_utils.gsc:196
‪end
‪function end(final)
Definition: _killcam.gsc:511
‪logTeamWinString
‪function logTeamWinString(wintype, winner)
Definition: _globallogic_utils.gsc:498
‪isValidClass
‪function isValidClass(c)
Definition: _globallogic_utils.gsc:144
‪testShock
‪function testShock()
Definition: _globallogic_utils.gsc:35
‪getValueInRange
‪function getValueInRange(value, minValue, maxValue)
Definition: _globallogic_utils.gsc:133
‪waitForTimeOrNotifyNoArtillery
‪function waitForTimeOrNotifyNoArtillery(time, notifyname)
Definition: _globallogic_utils.gsc:385
‪stopTickingSound
‪function stopTickingSound()
Definition: _globallogic_utils.gsc:191
‪getScoreRemaining
‪function getScoreRemaining(team)
Definition: _globallogic_utils.gsc:318
‪testHPs
‪function testHPs()
Definition: _globallogic_utils.gsc:55