‪Black Ops 3 Source Code Explorer  0.1
‪An script explorer for Black Ops 3 by ZeRoY
_zm_stats.gsc
Go to the documentation of this file.
1 #using scripts\codescripts\struct;
2 
3 #using scripts\shared\system_shared;
4 #using scripts\shared\util_shared;
5 
6 #insert scripts\shared\shared.gsh;
7 
8 #using scripts\zm\gametypes\_globallogic;
9 #using scripts\zm\gametypes\_globallogic_score;
10 
11 #using scripts\zm\_zm;
12 #using scripts\zm\_zm_pers_upgrades;
13 #using scripts\zm\_zm_weapons;
14 
15 #insert scripts\zm\_zm_perks.gsh;
16 
17 #define MATCH_FINISHED 4
18 
19 #namespace zm_stats;
20 
21 ‪REGISTER_SYSTEM( "zm_stats", &‪__init__, undefined )
22 
23 function ‪__init__()
24 {
25  // create a level function pointer, so that add_client_stat function can be called in non zm script file
26  level.player_stats_init = &‪player_stats_init;
27  level.add_client_stat = &‪add_client_stat;
28  level.increment_client_stat = &‪increment_client_stat;
29 }
30 
32 {
33  self ‪globallogic_score::initPersStat( "kills", false );
34  self ‪globallogic_score::initPersStat( "suicides", false );
35  self ‪globallogic_score::initPersStat( "downs", false );
36  self.downs = self ‪globallogic_score::getPersStat( "downs" );
37 
38  self ‪globallogic_score::initPersStat( "revives", false );
39  self.revives = self ‪globallogic_score::getPersStat( "revives" );
40 
41  self ‪globallogic_score::initPersStat( "perks_drank", false );
42  self ‪globallogic_score::initPersStat( "bgbs_chewed", false );
43  self ‪globallogic_score::initPersStat( "headshots", false );
44 
45  self ‪globallogic_score::initPersStat( "melee_kills", false );
46  self ‪globallogic_score::initPersStat( "grenade_kills", false );
47  self ‪globallogic_score::initPersStat( "doors_purchased", false );
48 
49  self ‪globallogic_score::initPersStat( "distance_traveled", false );
50  self.distance_traveled = self ‪globallogic_score::getPersStat( "distance_traveled" );
51 
52  self ‪globallogic_score::initPersStat( "total_shots", false );
53  self.total_shots = self ‪globallogic_score::getPersStat( "total_shots" );
54 
55  self ‪globallogic_score::initPersStat( "hits", false );
56  self.hits = self ‪globallogic_score::getPersStat( "hits" );
57 
58  self ‪globallogic_score::initPersStat( "misses", false );
59  self.misses = self ‪globallogic_score::getPersStat( "misses" );
60 
61  self ‪globallogic_score::initPersStat( "deaths", false );
62  self.deaths = self ‪globallogic_score::getPersStat( "deaths" );
63 
64  self ‪globallogic_score::initPersStat( "boards", false );
65 
66  self ‪globallogic_score::initPersStat( "failed_revives", false );
67  self ‪globallogic_score::initPersStat( "sacrifices", false );
68  self ‪globallogic_score::initPersStat( "failed_sacrifices", false );
69  self ‪globallogic_score::initPersStat( "drops", false );
70  //individual drops pickedup
71  self ‪globallogic_score::initPersStat( "nuke_pickedup",false);
72  self ‪globallogic_score::initPersStat( "insta_kill_pickedup",false);
73  self ‪globallogic_score::initPersStat( "full_ammo_pickedup",false);
74  self ‪globallogic_score::initPersStat( "double_points_pickedup",false);
75  self ‪globallogic_score::initPersStat( "carpenter_pickedup",false);
76  self ‪globallogic_score::initPersStat( "fire_sale_pickedup",false);
77  self ‪globallogic_score::initPersStat( "minigun_pickedup",false);
78  self ‪globallogic_score::initPersStat( "island_seed_pickedup",false);
79 
80  self ‪globallogic_score::initPersStat( "bonus_points_team_pickedup",false);
81  self ‪globallogic_score::initPersStat( "ww_grenade_pickedup",false);
82 
83  self ‪globallogic_score::initPersStat( "use_magicbox", false );
84  self ‪globallogic_score::initPersStat( "grabbed_from_magicbox", false );
85  self ‪globallogic_score::initPersStat( "use_perk_random", false );
86  self ‪globallogic_score::initPersStat( "grabbed_from_perk_random", false );
87  self ‪globallogic_score::initPersStat( "use_pap", false );
88  self ‪globallogic_score::initPersStat( "pap_weapon_grabbed", false );
89  self ‪globallogic_score::initPersStat( "pap_weapon_not_grabbed", false );
90 
91  //individual perks drank
92  self ‪globallogic_score::initPersStat( "specialty_armorvest_drank", false );
93  self ‪globallogic_score::initPersStat( "specialty_quickrevive_drank", false );
94  self ‪globallogic_score::initPersStat( "specialty_fastreload_drank", false );
95  self ‪globallogic_score::initPersStat( "specialty_additionalprimaryweapon_drank", false );
96  self ‪globallogic_score::initPersStat( "specialty_staminup_drank", false );
97  self ‪globallogic_score::initPersStat( "specialty_doubletap2_drank", false );
98  self ‪globallogic_score::initPersStat( "specialty_widowswine_drank", false );
99  self ‪globallogic_score::initPersStat( "specialty_deadshot_drank", false );
100  self ‪globallogic_score::initPersStat( "specialty_electriccherry_drank", false );
101 
102  //weapons that can be planted/picked up ( claymores, ballistics...)
103  self ‪globallogic_score::initPersStat( "claymores_planted", false );
104  self ‪globallogic_score::initPersStat( "claymores_pickedup", false );
105 
106  self ‪globallogic_score::initPersStat( "bouncingbetty_planted", false );
107  self ‪globallogic_score::initPersStat( "bouncingbetty_pickedup", false );
108 
109  self ‪globallogic_score::initPersStat( "bouncingbetty_devil_planted", false );
110  self ‪globallogic_score::initPersStat( "bouncingbetty_devil_pickedup", false );
111 
112  self ‪globallogic_score::initPersStat( "bouncingbetty_holly_planted", false );
113  self ‪globallogic_score::initPersStat( "bouncingbetty_holly_pickedup", false );
114 
115  self ‪globallogic_score::initPersStat( "ballistic_knives_pickedup", false );
116 
117  self ‪globallogic_score::initPersStat( "wallbuy_weapons_purchased", false );
118  self ‪globallogic_score::initPersStat( "ammo_purchased", false );
119  self ‪globallogic_score::initPersStat( "upgraded_ammo_purchased", false );
120 
121  self ‪globallogic_score::initPersStat( "power_turnedon", false );
122  self ‪globallogic_score::initPersStat( "power_turnedoff", false );
123  self ‪globallogic_score::initPersStat( "planted_buildables_pickedup", false );
124  self ‪globallogic_score::initPersStat( "buildables_built", false );
125  self ‪globallogic_score::initPersStat( "time_played_total", false );
126  self ‪globallogic_score::initPersStat( "weighted_rounds_played", false );
127 
128 
129  self globallogic_score::initpersstat( "zdogs_killed", false );
130  self globallogic_score::initpersstat( "zspiders_killed", false );
131  self globallogic_score::initpersstat( "zthrashers_killed", false );
132  self globallogic_score::initpersstat( "zraps_killed", false );
133  self globallogic_score::initpersstat( "zwasp_killed", false );
134  self globallogic_score::initpersstat( "zsentinel_killed", false );
135  self globallogic_score::initpersstat( "zraz_killed", false );
136 
137  self globallogic_score::initpersstat( "zdog_rounds_finished", false );
138  self globallogic_score::initpersstat( "zdog_rounds_lost", false );
139  self globallogic_score::initpersstat( "killed_by_zdog", false );
140 
141  //cheats
142  self ‪globallogic_score::initPersStat( "cheat_too_many_weapons", false );
143  self ‪globallogic_score::initPersStat( "cheat_out_of_playable", false );
144  self ‪globallogic_score::initPersStat( "cheat_too_friendly",false);
145  self ‪globallogic_score::initPersStat( "cheat_total",false);
146 
147  //DLC1 - castle
148  self ‪globallogic_score::initPersStat( "castle_tram_token_pickedup",false);
149 
150 
151  // Persistent system "player" globals
152  //self zm_pers_upgrades::pers_abilities_init_globals();
153 
154  // some extra ...
155  self ‪globallogic_score::initPersStat( "total_points", false );
156  self ‪globallogic_score::initPersStat( "rounds", false );
157  if ( level.resetPlayerScoreEveryRound )
158  {
159  self.pers["score"] = 0;
160  }
161 
162  self.pers["score"] = level.player_starting_points;
163  self.score = self.pers["score"];
164  self IncrementPlayerStat( "score", self.score );
165  self ‪add_map_stat( "score", self.score );
166 
167  self ‪globallogic_score::initPersStat( "zteam", false );
168 
169  if ( IsDefined( level.level_specific_stats_init ) )
170  {
171  [[ level.level_specific_stats_init ]]();
172  }
173 
174  if( !isDefined( self.stats_this_frame ) )
175  {
176  self.pers_upgrade_force_test = true;
177  self.stats_this_frame = []; // used to track if stats is update in current frame
178  self.pers_upgrades_awarded = [];
179  }
180 
181  //update daily challenge stats
182  self ‪globallogic_score::initPersStat( "ZM_DAILY_CHALLENGE_INGAME_TIME", true, true );
183  self ‪add_global_stat( "ZM_DAILY_CHALLENGE_GAMES_PLAYED", 1 );
184 }
185 
187 {
188  if ( ‪IS_TRUE( level.zm_disable_recording_stats ) )
189  {
190  return;
191  }
192 
193  // update the player stats at the end of match
194  game_mode = GetDvarString( "ui_gametype" );
195  game_mode_group = level.scr_zm_ui_gametype_group;
196  map_location_name = level.scr_zm_map_start_location;
197 
198  // will be updated based on info from gametypesTable.csv
199  if ( map_location_name == "" )
200  map_location_name = "default";
201  if( IsDefined( level.gameModuleWinningTeam ) )
202  {
203  if( level.gameModuleWinningTeam == "B" )
204  {
205  MatchRecorderIncrementHeaderStat( "winningTeam", 1 );
206  }
207  else if ( level.gameModuleWinningTeam == "A" )
208  {
209  MatchRecorderIncrementHeaderStat( "winningTeam", 2 );
210  }
211  }
212  RecordMatchSummaryZombieEndGameData( game_mode, game_mode_group, map_location_name, level.round_number );
213  newTime = gettime();
214  for ( i = 0; i < players.size; i++ )
215  {
216  player = players[i];
217 
218  if ( player ‪util::is_bot() )
219  continue;
220 
221  distance = player ‪get_stat_distance_traveled();
222 
223  player AddPlayerStat( "distance_traveled", distance );
224 
225  // Add the "time_played_total" to startlocation stats and map stats
226  player IncrementPlayerStat( "time_played_total", player.pers["time_played_total"] );
227  player ‪add_map_stat( "time_played_total", player.pers["time_played_total"] );
228 
229  RecordPlayerMatchEnd( player );
230  RecordPlayerStats(player, "presentAtEnd", 1 );
231  player ‪zm_weapons::updateWeaponTimingsZM( newTime );
232 
233  if(isdefined(level._game_module_stat_update_func))
234  {
235  player [[level._game_module_stat_update_func]]();
236  }
237 
238  //high score
239  old_high_score = player ‪get_global_stat("score");
240  if(player.score_total > old_high_score)
241  {
242  player ‪set_global_stat("score",player.score_total);
243  }
244 
245  player ‪set_global_stat("total_points", player.score_total);
246  player ‪set_global_stat("rounds", level.round_number);
247 
248  if ( level.onlineGame )
249  {
250  player ‪highwater_global_stat( "HIGHEST_ROUND_REACHED", level.round_number );
251  player ‪highwater_map_stat( "HIGHEST_ROUND_REACHED", level.round_number );
252 
253  player ‪add_global_stat( "TOTAL_ROUNDS_SURVIVED", level.round_number - 1 );
254  player ‪add_map_stat( "TOTAL_ROUNDS_SURVIVED", level.round_number - 1 );
255 
256  player ‪add_global_stat( "TOTAL_GAMES_PLAYED", 1 );
257  player ‪add_map_stat( "TOTAL_GAMES_PLAYED", 1 );
258  }
259 
260  if ( GameModeIsMode( ‪GAMEMODE_PUBLIC_MATCH ) )
261  {
262  player GameHistoryFinishMatch( ‪MATCH_FINISHED, 0, 0, 0, 0, 0 );
263 
264  if ( IsDefined( player.pers["matchesPlayedStatsTracked"] ) )
265  {
266  gameMode = ‪util::GetCurrentGameMode();
267  player ‪globallogic::IncrementMatchCompletionStat( gameMode, "played", "completed" );
268 
269  if ( IsDefined( player.pers["matchesHostedStatsTracked"] ) )
270  {
271  player ‪globallogic::IncrementMatchCompletionStat( gameMode, "hosted", "completed" );
272  player.pers["matchesHostedStatsTracked"] = undefined;
273  }
274 
275  player.pers["matchesPlayedStatsTracked"] = undefined;
276  }
277  }
278 
279  if ( !IsDefined( player.pers["previous_distance_traveled"] ) )
280  {
281  player.pers["previous_distance_traveled"] = 0;
282  }
283  distanceThisRound = int( player.pers["distance_traveled"] - player.pers["previous_distance_traveled"] );
284  player.pers["previous_distance_traveled"] = player.pers["distance_traveled"];
285  player IncrementPlayerStat("distance_traveled", distanceThisRound );
286  }
287 }
288 
289 function ‪update_playing_utc_time( matchEndUTCTime )
290 {
291 }
292 
294 {
295  // self set_global_stat( "combined_rank", self get_stat_combined_rank_value_survival_classic() );
296 }
297 
299 {
300  // self set_global_stat( "combined_rank", self get_stat_combined_rank_value_grief() );
301 }
302 
303 //**************************************************************
304 //**************************************************************
305 // DDL stats operation functions
306 
307 function ‪get_global_stat( stat_name )
308 {
309  return ( self GetDStat( "PlayerStatsList", stat_name, "StatValue" ) );
310 }
311 
312 function ‪set_global_stat( stat_name, value )
313 {
314  if ( ‪IS_TRUE( level.zm_disable_recording_stats ) )
315  {
316  return;
317  }
318 
319  self SetDStat( "PlayerStatsList", stat_name, "StatValue", value );
320 }
321 
322 function ‪add_global_stat( stat_name, value )
323 {
324  if ( ‪IS_TRUE( level.zm_disable_recording_stats ) )
325  {
326  return;
327  }
328 
329  self AddDStat( "PlayerStatsList", stat_name, "StatValue", value );
330 }
331 
332 function ‪increment_global_stat( stat_name )
333 {
334  if ( ‪IS_TRUE( level.zm_disable_recording_stats ) )
335  {
336  return;
337  }
338 
339  self AddDStat( "PlayerStatsList", stat_name, "StatValue", 1 );
340 }
341 
342 function ‪highwater_global_stat( stat_name, value )
343 {
344  if ( value > ‪get_global_stat( stat_name ) )
345  {
346  ‪set_global_stat( stat_name, value );
347  }
348 }
349 
350 //**************************************************************
351 //**************************************************************
352 
353 function ‪add_client_stat( stat_name, stat_value,include_gametype )
354 {
355  if ( ‪IS_TRUE( level.zm_disable_recording_stats ) )
356  {
357  return;
358  }
359 
360  if(!isDefined(include_gametype))
361  {
362  include_gametype = true;
363  }
364 
365  self ‪globallogic_score::incPersStat( stat_name, stat_value, false, include_gametype );
366  self.stats_this_frame[stat_name] = true;
367 }
368 
369 function ‪increment_player_stat( stat_name )
370 {
371  if ( ‪IS_TRUE( level.zm_disable_recording_stats ) )
372  {
373  return;
374  }
375 
376  self IncrementPlayerStat( stat_name, 1 );
377 }
378 
379 function ‪increment_root_stat(stat_name,stat_value)
380 {
381  if ( ‪IS_TRUE( level.zm_disable_recording_stats ) )
382  {
383  return;
384  }
385 
386  self AddDStat( stat_name, stat_value );
387 }
388 
389 function ‪increment_client_stat( stat_name,include_gametype )
390 {
391  if ( ‪IS_TRUE( level.zm_disable_recording_stats ) )
392  {
393  return;
394  }
395 
396  ‪add_client_stat( stat_name, 1,include_gametype );
397 }
398 
399 function ‪set_client_stat( stat_name, stat_value, include_gametype )
400 {
401  if ( ‪IS_TRUE( level.zm_disable_recording_stats ) )
402  {
403  return;
404  }
405 
406  current_stat_count = self ‪globallogic_score::getPersStat( stat_name );
407  self ‪globallogic_score::incPersStat( stat_name, stat_value - current_stat_count, false, include_gametype );
408  self.stats_this_frame[stat_name] = true;
409 }
410 
411 function ‪zero_client_stat( stat_name, include_gametype )
412 {
413  if ( ‪IS_TRUE( level.zm_disable_recording_stats ) )
414  {
415  return;
416  }
417 
418  current_stat_count = self ‪globallogic_score::getPersStat( stat_name );
419  self ‪globallogic_score::incPersStat( stat_name, -current_stat_count, false, include_gametype );
420  self.stats_this_frame[stat_name] = true;
421 }
422 
423 //-------------------------------------------
424 function ‪get_map_stat( stat_name )
425 {
426  return ( self GetDStat( "PlayerStatsByMap", level.script, "stats", stat_name, "StatValue" ) );
427 }
428 
429 function ‪set_map_stat( stat_name, value )
430 {
431  if ( !level.onlineGame || ‪IS_TRUE( level.zm_disable_recording_stats ) )
432  {
433  return;
434  }
435 
436  self SetDStat( "PlayerStatsByMap", level.script, "stats", stat_name, "StatValue", value );
437 }
438 
439 function ‪add_map_stat( stat_name, value )
440 {
441  if ( !level.onlineGame || ‪IS_TRUE( level.zm_disable_recording_stats ) )
442  {
443  return;
444  }
445 
446  self AddDStat( "PlayerStatsByMap", level.script, "stats", stat_name, "StatValue", value );
447 }
448 
449 function ‪increment_map_stat( stat_name )
450 {
451  if ( !level.onlineGame || ‪IS_TRUE( level.zm_disable_recording_stats ) )
452  {
453  return;
454  }
455 
456  self AddDStat( "PlayerStatsByMap", level.script, "stats", stat_name, "StatValue", 1 );
457 }
458 
459 function ‪highwater_map_stat( stat_name, value )
460 {
461  if ( value > ‪get_map_stat( stat_name ) )
462  {
463  ‪set_map_stat( stat_name, value );
464  }
465 }
466 
467 function ‪increment_map_cheat_stat( stat_name )
468 {
469  if ( ‪IS_TRUE( level.zm_disable_recording_stats ) )
470  {
471  return;
472  }
473 
474  self AddDStat( "PlayerStatsByMap", level.script, "cheats", stat_name, 1 );
475 }
476 //-------------------------------------------
477 
478 function ‪increment_challenge_stat( stat_name, amount = 1 )
479 {
480  if ( !level.onlineGame || ‪IS_TRUE( level.zm_disable_recording_stats ) )
481  {
482  return;
483  }
484 
485  self AddPlayerStat( stat_name, amount );
486 }
487 
488 
489 //**************************************************************
490 //**************************************************************
491 
493 {
494  miles = int( self.pers["distance_traveled"] / 63360 );
495 
496  remainder = (self.pers["distance_traveled"] / 63360) - miles;
497 
498  if(miles < 1 && ( remainder < 0.5 ) )
499  {
500  miles = 1;
501  }
502  else if(remainder >= 0.5)
503  {
504  miles++;
505  }
506 
507  return miles; //int( self.pers["distance_traveled"] / 63360 ); // upload distance in miles since current distance was to capture in inches,
508 }
509 
511 {
512  return ( ‪zm::get_round_number() );
513 }
514 
516 {
517  rounds = ‪get_stat_round_number();
518  kills = self.pers["kills"];
519 
520  if( rounds > 99 )
521  rounds = 99;
522 
523  ‪result = rounds*10000000 + kills;
524  return ‪result;
525 }
526 
527 //**************************************************************
528 //**************************************************************
530 {
531  if ( ‪IS_TRUE( level.zm_disable_recording_stats ) )
532  {
533  return;
534  }
535 
536  deaths = 0;
537  kills = 0;
538  melee_kills = 0;
539  headshots = 0;
540  suicides = 0;
541  downs = 0;
542  revives = 0;
543  perks_drank = 0;
544  doors_purchased = 0;
545  distance_traveled = 0;
546  total_shots = 0;
547  boards = 0;
548  sacrifices = 0;
549  drops = 0;
550  nuke_pickedup = 0;
551  insta_kill_pickedup = 0;
552  full_ammo_pickedup = 0;
553  double_points_pickedup = 0;
554  meat_stink_pickedup = 0;
555  carpenter_pickedup = 0;
556  fire_sale_pickedup = 0;
557  minigun_pickedup = 0;
558  island_seed_pickedup = 0;
559  bonus_points_team_pickedup = 0;
560  ww_grenade_pickedup = 0;
561  zombie_blood_pickedup = 0;
562  use_magicbox = 0;
563  grabbed_from_magicbox = 0;
564  use_perk_random = 0;
565  grabbed_from_perk_random = 0;
566  use_pap = 0;
567  pap_weapon_grabbed = 0;
568 
569  specialty_armorvest_drank = 0;
570  specialty_quickrevive_drank = 0;
571  specialty_fastreload_drank = 0;
572  specialty_additionalprimaryweapon_drank = 0;
573  specialty_staminup_drank = 0;
574  specialty_doubletap2_drank = 0;
575  specialty_widowswine_drank = 0;
576  specialty_deadshot_drank = 0;
577 
578  claymores_planted = 0;
579  claymores_pickedup = 0;
580  bouncingbetty_planted = 0;
581  ballistic_knives_pickedup = 0;
582  wallbuy_weapons_purchased = 0;
583  power_turnedon = 0;
584  power_turnedoff = 0;
585  planted_buildables_pickedup = 0;
586  ammo_purchased = 0;
587  upgraded_ammo_purchased = 0;
588  buildables_built = 0;
589  time_played = 0;
590  cheat_too_many_weapons = 0;
591  cheat_out_of_playable_area = 0;
592  cheat_too_friendly = 0;
593  cheat_total = 0;
594 
595  players = GetPlayers();
596  foreach(player in players)
597  {
598  deaths += player.pers["deaths"];
599  kills += player.pers["kills"];
600  headshots += player.pers["headshots"];
601  suicides += player.pers["suicides"];
602  melee_kills += player.pers["melee_kills"];
603  downs += player.pers["downs"];
604  revives += player.pers["revives"];
605  perks_drank += player.pers["perks_drank"];
606 
607  specialty_armorvest_drank += player.pers["specialty_armorvest_drank"];
608  specialty_quickrevive_drank += player.pers["specialty_quickrevive_drank"];
609  specialty_fastreload_drank += player.pers["specialty_fastreload_drank"];
610  specialty_additionalprimaryweapon_drank += player.pers["specialty_additionalprimaryweapon_drank"];
611  specialty_staminup_drank += player.pers["specialty_staminup_drank"];
612  specialty_doubletap2_drank += player.pers["specialty_doubletap2_drank"];
613  specialty_widowswine_drank += player.pers["specialty_widowswine_drank"];
614  specialty_deadshot_drank += player.pers["specialty_deadshot_drank"];
615 
616  doors_purchased += player.pers["doors_purchased"];
617  distance_traveled += player ‪get_stat_distance_traveled();
618  boards += player.pers["boards"];
619  sacrifices += player.pers["sacrifices"];
620  drops += player.pers["drops"];
621  nuke_pickedup += player.pers["nuke_pickedup"];
622  insta_kill_pickedup += player.pers["insta_kill_pickedup"];
623  full_ammo_pickedup += player.pers["full_ammo_pickedup"];
624  double_points_pickedup += player.pers["double_points_pickedup"];
625  meat_stink_pickedup += player.pers["meat_stink_pickedup"];
626  carpenter_pickedup += player.pers["carpenter_pickedup"];
627  fire_sale_pickedup += player.pers["fire_sale_pickedup"];
628  minigun_pickedup += player.pers["minigun_pickedup"];
629  island_seed_pickedup += player.pers["island_seed_pickedup"];
630  bonus_points_team_pickedup += player.pers["bonus_points_team_pickedup"];
631  ww_grenade_pickedup += player.pers["ww_grenade_pickedup"];
632  use_magicbox += player.pers["use_magicbox"];
633  grabbed_from_magicbox += player.pers["grabbed_from_magicbox"];
634  use_perk_random += player.pers["use_perk_random"];
635  grabbed_from_perk_random += player.pers["grabbed_from_perk_random"];
636  use_pap += player.pers["use_pap"];
637  pap_weapon_grabbed += player.pers["pap_weapon_grabbed"];
638  claymores_planted += player.pers["claymores_planted"];
639  claymores_pickedup += player.pers["claymores_pickedup"];
640  bouncingbetty_planted += player.pers["bouncingbetty_planted"];
641  ballistic_knives_pickedup += player.pers["ballistic_knives_pickedup"];
642  wallbuy_weapons_purchased += player.pers["wallbuy_weapons_purchased"];
643  power_turnedon += player.pers["power_turnedon"];
644  power_turnedoff += player.pers["power_turnedoff"];
645  planted_buildables_pickedup += player.pers["planted_buildables_pickedup"];
646  buildables_built += player.pers["buildables_built"];
647  ammo_purchased += player.pers["ammo_purchased"];
648  upgraded_ammo_purchased += player.pers["upgraded_ammo_purchased"];
649  total_shots += player.total_shots;
650  time_played += player.pers["time_played_total"];
651  cheat_too_many_weapons += player.pers["cheat_too_many_weapons"];
652  cheat_out_of_playable_area += player.pers["cheat_out_of_playable"];
653  cheat_too_friendly += player.pers["cheat_too_friendly"];
654  cheat_total += player.pers["cheat_total"];
655  }
656  game_mode = GetDvarString( "ui_gametype" );
657  incrementCounter( "global_zm_" + game_mode ,1);
658  incrementCounter( "global_zm_games", 1 );
659 
660  if ( "zclassic" == game_mode || "zm_nuked" == level.script )
661  {
662  incrementCounter( "global_zm_games_" + level.script, 1 );
663  }
664 
665  incrementCounter( "global_zm_killed", level.global_zombies_killed );
666  incrementCounter( "global_zm_killed_by_players",kills );
667  incrementCounter( "global_zm_killed_by_traps",level.zombie_trap_killed_count);
668 
669  incrementCounter( "global_zm_headshots", headshots );
670  incrementCounter( "global_zm_suicides", suicides );
671  incrementCounter( "global_zm_melee_kills", melee_kills );
672  incrementCounter( "global_zm_downs", downs );
673  incrementCounter( "global_zm_deaths", deaths );
674  incrementCounter( "global_zm_revives", revives );
675  incrementCounter( "global_zm_perks_drank", perks_drank );
676 
677  incrementCounter( "global_zm_specialty_armorvest_drank", specialty_armorvest_drank );
678  incrementCounter( "global_zm_specialty_quickrevive_drank", specialty_quickrevive_drank );
679  incrementCounter( "global_zm_specialty_fastreload_drank", specialty_fastreload_drank );
680  incrementCounter( "global_zm_specialty_additionalprimaryweapon_drank", specialty_additionalprimaryweapon_drank );
681  incrementCounter( "global_zm_specialty_staminup_drank", specialty_staminup_drank );
682  incrementCounter( "global_zm_specialty_doubletap2_drank", specialty_doubletap2_drank );
683  incrementCounter( "global_zm_specialty_widowswine_drank", specialty_widowswine_drank );
684  incrementCounter( "global_zm_specialty_deadshot_drank", specialty_deadshot_drank );
685 
686  incrementCounter( "global_zm_distance_traveled", int(distance_traveled) );
687  incrementCounter( "global_zm_doors_purchased", doors_purchased);
688  incrementCounter( "global_zm_boards", boards);
689  incrementCounter( "global_zm_sacrifices", sacrifices);;
690  incrementCounter( "global_zm_drops", drops);
691  incrementCounter( "global_zm_total_nuke_pickedup",nuke_pickedup);
692  incrementCounter( "global_zm_total_insta_kill_pickedup",insta_kill_pickedup);
693  incrementCounter( "global_zm_total_full_ammo_pickedup",full_ammo_pickedup);
694  incrementCounter( "global_zm_total_double_points_pickedup",double_points_pickedup);
695  incrementCounter( "global_zm_total_meat_stink_pickedup",double_points_pickedup);
696  incrementCounter( "global_zm_total_carpenter_pickedup",carpenter_pickedup);
697  incrementCounter( "global_zm_total_fire_sale_pickedup",fire_sale_pickedup);
698  incrementCounter( "global_zm_total_minigun_pickedup",minigun_pickedup);
699  incrementCounter( "global_zm_total_island_seed_pickedup",island_seed_pickedup);
700  incrementCounter( "global_zm_total_zombie_blood_pickedup",zombie_blood_pickedup);
701  incrementCounter( "global_zm_use_magicbox", use_magicbox);
702  incrementCounter( "global_zm_grabbed_from_magicbox", grabbed_from_magicbox);
703  incrementCounter( "global_zm_use_perk_random", use_perk_random);
704  incrementCounter( "global_zm_grabbed_from_perk_random", grabbed_from_perk_random);
705  incrementCounter( "global_zm_use_pap", use_pap);
706  incrementCounter( "global_zm_pap_weapon_grabbed", pap_weapon_grabbed);
707  incrementCounter( "global_zm_claymores_planted", claymores_planted);
708  incrementCounter( "global_zm_claymores_pickedup", claymores_pickedup);
709  incrementCounter( "global_zm_ballistic_knives_pickedup", ballistic_knives_pickedup);
710  incrementCounter( "global_zm_wallbuy_weapons_purchased", wallbuy_weapons_purchased);
711  incrementCounter( "global_zm_power_turnedon", power_turnedon);
712  incrementCounter( "global_zm_power_turnedoff", power_turnedoff);
713  incrementCounter( "global_zm_planted_buildables_pickedup", planted_buildables_pickedup);
714  incrementCounter( "global_zm_buildables_built", buildables_built);
715  incrementCounter( "global_zm_ammo_purchased", ammo_purchased);
716  incrementCounter( "global_zm_upgraded_ammo_purchased", upgraded_ammo_purchased);
717  incrementCounter( "global_zm_total_shots", total_shots);
718  incrementCounter( "global_zm_time_played", time_played);
719  incrementCounter( "global_zm_cheat_players_too_friendly",cheat_too_friendly);
720  incrementCounter( "global_zm_cheats_cheat_too_many_weapons",cheat_too_many_weapons);
721  incrementCounter( "global_zm_cheats_out_of_playable",cheat_out_of_playable_area);
722  incrementCounter( "global_zm_total_cheats",cheat_total);
723 }
724 
725 function ‪get_specific_stat( stat_category,stat_name )
726 {
727  return ( self GetDStat( stat_category, stat_name, "StatValue" ) );
728 }
729 
731 {
732  if ( !level.onlineGame || !GameModeIsMode( ‪GAMEMODE_PUBLIC_MATCH ) )
733  return;
734 
735  self.pers["lastHighestScore"] = self getDStat( "HighestStats", "highest_score" );
736 
737  currGameType = level.gametype;
738  self GameHistoryStartMatch( getGameTypeEnumFromName( currGameType, false ) );
739 }
740 
742 {
744 }
745 
747 {
748  self notify( "upload_stats_soon" );
749  self endon( "upload_stats_soon" );
750  self endon( "disconnect" );
751 
752  wait 1;
753  UploadStats( self );
754 }
755 
‪set_client_stat
‪function set_client_stat(stat_name, stat_value, include_gametype)
Definition: _zm_stats.gsc:399
‪get_stat_combined_rank_value_survival_classic
‪function get_stat_combined_rank_value_survival_classic()
Definition: _zm_stats.gsc:515
‪increment_root_stat
‪function increment_root_stat(stat_name, stat_value)
Definition: _zm_stats.gsc:379
‪adjustRecentStats
‪function adjustRecentStats()
Definition: _zm_stats.gsc:741
‪highwater_map_stat
‪function highwater_map_stat(stat_name, value)
Definition: _zm_stats.gsc:459
‪increment_client_stat
‪function increment_client_stat(stat_name, include_gametype)
Definition: _zm_stats.gsc:389
‪is_bot
‪function is_bot()
Definition: util_shared.gsc:2488
‪update_global_counters_on_match_end
‪function update_global_counters_on_match_end()
Definition: _zm_stats.gsc:529
‪increment_player_stat
‪function increment_player_stat(stat_name)
Definition: _zm_stats.gsc:369
‪uploadStatsSoon
‪function uploadStatsSoon()
Definition: _zm_stats.gsc:746
‪increment_map_stat
‪function increment_map_stat(stat_name)
Definition: _zm_stats.gsc:449
‪updateWeaponTimingsZM
‪function updateWeaponTimingsZM(newTime)
Definition: _zm_weapons.gsc:427
‪get_map_stat
‪function get_map_stat(stat_name)
Definition: _zm_stats.gsc:424
‪MATCH_FINISHED
‪#define MATCH_FINISHED
Definition: _zm_stats.gsc:17
‪get_stat_distance_traveled
‪function get_stat_distance_traveled()
Definition: _zm_stats.gsc:492
‪GAMEMODE_PUBLIC_MATCH
‪#define GAMEMODE_PUBLIC_MATCH
Definition: shared.gsh:10
‪add_client_stat
‪function add_client_stat(stat_name, stat_value, include_gametype)
Definition: _zm_stats.gsc:353
‪add_global_stat
‪function add_global_stat(stat_name, value)
Definition: _zm_stats.gsc:322
‪IS_TRUE
‪#define IS_TRUE(__a)
Definition: shared.gsh:251
‪highwater_global_stat
‪function highwater_global_stat(stat_name, value)
Definition: _zm_stats.gsc:342
‪update_players_stats_at_match_end
‪function update_players_stats_at_match_end(players)
Definition: _zm_stats.gsc:186
‪IncrementMatchCompletionStat
‪function IncrementMatchCompletionStat(gameMode, playedOrHosted, stat)
Definition: _globallogic.gsc:1119
‪increment_challenge_stat
‪function increment_challenge_stat(stat_name, amount=1)
Definition: _zm_stats.gsc:478
‪zero_client_stat
‪function zero_client_stat(stat_name, include_gametype)
Definition: _zm_stats.gsc:411
‪initializeMatchStats
‪function initializeMatchStats()
Definition: _zm_stats.gsc:730
‪player_stats_init
‪function player_stats_init()
Definition: _zm_stats.gsc:31
‪increment_map_cheat_stat
‪function increment_map_cheat_stat(stat_name)
Definition: _zm_stats.gsc:467
‪GetCurrentGameMode
‪function GetCurrentGameMode()
Definition: util_shared.gsc:3750
‪increment_global_stat
‪function increment_global_stat(stat_name)
Definition: _zm_stats.gsc:332
‪survival_classic_custom_stat_update
‪function survival_classic_custom_stat_update()
Definition: _zm_stats.gsc:293
‪set_map_stat
‪function set_map_stat(stat_name, value)
Definition: _zm_stats.gsc:429
‪grief_custom_stat_update
‪function grief_custom_stat_update()
Definition: _zm_stats.gsc:298
‪__init__
‪function __init__()
Definition: _zm_stats.gsc:23
‪getPersStat
‪function getPersStat(dataName)
Definition: _globallogic_score.gsc:1018
‪REGISTER_SYSTEM
‪#define REGISTER_SYSTEM(__sys, __func_init_preload, __reqs)
Definition: shared.gsh:204
‪initPersStat
‪function initPersStat(dataName, record_stats)
Definition: _globallogic_score.gsc:1004
‪get_global_stat
‪function get_global_stat(stat_name)
Definition: _zm_stats.gsc:307
‪add_map_stat
‪function add_map_stat(stat_name, value)
Definition: _zm_stats.gsc:439
‪get_specific_stat
‪function get_specific_stat(stat_category, stat_name)
Definition: _zm_stats.gsc:725
‪update_playing_utc_time
‪function update_playing_utc_time(matchEndUTCTime)
Definition: _zm_stats.gsc:289
‪result
‪function result(death, attacker, mod, weapon)
Definition: _zm_aat_blast_furnace.gsc:46
‪get_round_number
‪function get_round_number()
Definition: _zm.gsc:447
‪get_stat_round_number
‪function get_stat_round_number()
Definition: _zm_stats.gsc:510
‪incPersStat
‪function incPersStat(dataName, increment, record_stats, includeGametype)
Definition: _globallogic_score.gsc:1024
‪set_global_stat
‪function set_global_stat(stat_name, value)
Definition: _zm_stats.gsc:312