1 #using scripts\codescripts\struct;
3 #using scripts\shared\system_shared;
4 #using scripts\shared\util_shared;
6 #insert scripts\shared\shared.gsh;
8 #using scripts\zm\gametypes\_globallogic;
9 #using scripts\zm\gametypes\_globallogic_score;
11 #using scripts\zm\_zm;
12 #using scripts\zm\_zm_pers_upgrades;
13 #using scripts\zm\_zm_weapons;
15 #insert scripts\zm\_zm_perks.gsh;
17 #define MATCH_FINISHED 4
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 );
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 );
157 if ( level.resetPlayerScoreEveryRound )
159 self.pers[
"score"] = 0;
162 self.pers[
"score"] = level.player_starting_points;
163 self.score =
self.pers[
"score"];
164 self IncrementPlayerStat(
"score",
self.score );
169 if ( IsDefined( level.level_specific_stats_init ) )
171 [[ level.level_specific_stats_init ]]();
174 if( !isDefined(
self.stats_this_frame ) )
176 self.pers_upgrade_force_test =
true;
177 self.stats_this_frame = [];
178 self.pers_upgrades_awarded = [];
188 if (
IS_TRUE( level.zm_disable_recording_stats ) )
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;
199 if ( map_location_name ==
"" )
200 map_location_name =
"default";
201 if( IsDefined( level.gameModuleWinningTeam ) )
203 if( level.gameModuleWinningTeam ==
"B" )
205 MatchRecorderIncrementHeaderStat(
"winningTeam", 1 );
207 else if ( level.gameModuleWinningTeam ==
"A" )
209 MatchRecorderIncrementHeaderStat(
"winningTeam", 2 );
212 RecordMatchSummaryZombieEndGameData( game_mode, game_mode_group, map_location_name, level.round_number );
214 for ( i = 0; i < players.size; i++ )
223 player AddPlayerStat(
"distance_traveled", distance );
226 player IncrementPlayerStat(
"time_played_total", player.pers[
"time_played_total"] );
227 player
add_map_stat(
"time_played_total", player.pers[
"time_played_total"] );
229 RecordPlayerMatchEnd( player );
230 RecordPlayerStats(player,
"presentAtEnd", 1 );
233 if(isdefined(level._game_module_stat_update_func))
235 player [[level._game_module_stat_update_func]]();
240 if(player.score_total > old_high_score)
248 if ( level.onlineGame )
254 player
add_map_stat(
"TOTAL_ROUNDS_SURVIVED", level.round_number - 1 );
264 if ( IsDefined( player.pers[
"matchesPlayedStatsTracked"] ) )
269 if ( IsDefined( player.pers[
"matchesHostedStatsTracked"] ) )
272 player.pers[
"matchesHostedStatsTracked"] = undefined;
275 player.pers[
"matchesPlayedStatsTracked"] = undefined;
279 if ( !IsDefined( player.pers[
"previous_distance_traveled"] ) )
281 player.pers[
"previous_distance_traveled"] = 0;
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 );
309 return (
self GetDStat(
"PlayerStatsList", stat_name,
"StatValue" ) );
314 if (
IS_TRUE( level.zm_disable_recording_stats ) )
319 self SetDStat(
"PlayerStatsList", stat_name,
"StatValue", value );
324 if (
IS_TRUE( level.zm_disable_recording_stats ) )
329 self AddDStat(
"PlayerStatsList", stat_name,
"StatValue", value );
334 if (
IS_TRUE( level.zm_disable_recording_stats ) )
339 self AddDStat(
"PlayerStatsList", stat_name,
"StatValue", 1 );
355 if (
IS_TRUE( level.zm_disable_recording_stats ) )
360 if(!isDefined(include_gametype))
362 include_gametype =
true;
366 self.stats_this_frame[stat_name] =
true;
371 if (
IS_TRUE( level.zm_disable_recording_stats ) )
376 self IncrementPlayerStat( stat_name, 1 );
381 if (
IS_TRUE( level.zm_disable_recording_stats ) )
386 self AddDStat( stat_name, stat_value );
391 if (
IS_TRUE( level.zm_disable_recording_stats ) )
401 if (
IS_TRUE( level.zm_disable_recording_stats ) )
408 self.stats_this_frame[stat_name] =
true;
413 if (
IS_TRUE( level.zm_disable_recording_stats ) )
420 self.stats_this_frame[stat_name] =
true;
426 return (
self GetDStat(
"PlayerStatsByMap", level.script,
"stats", stat_name,
"StatValue" ) );
431 if ( !level.onlineGame ||
IS_TRUE( level.zm_disable_recording_stats ) )
436 self SetDStat(
"PlayerStatsByMap", level.script,
"stats", stat_name,
"StatValue", value );
441 if ( !level.onlineGame ||
IS_TRUE( level.zm_disable_recording_stats ) )
446 self AddDStat(
"PlayerStatsByMap", level.script,
"stats", stat_name,
"StatValue", value );
451 if ( !level.onlineGame ||
IS_TRUE( level.zm_disable_recording_stats ) )
456 self AddDStat(
"PlayerStatsByMap", level.script,
"stats", stat_name,
"StatValue", 1 );
469 if (
IS_TRUE( level.zm_disable_recording_stats ) )
474 self AddDStat(
"PlayerStatsByMap", level.script,
"cheats", stat_name, 1 );
480 if ( !level.onlineGame ||
IS_TRUE( level.zm_disable_recording_stats ) )
485 self AddPlayerStat( stat_name, amount );
494 miles = int(
self.pers[
"distance_traveled"] / 63360 );
496 remainder = (
self.pers[
"distance_traveled"] / 63360) - miles;
498 if(miles < 1 && ( remainder < 0.5 ) )
502 else if(remainder >= 0.5)
518 kills =
self.pers[
"kills"];
523 result = rounds*10000000 + kills;
531 if (
IS_TRUE( level.zm_disable_recording_stats ) )
545 distance_traveled = 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;
563 grabbed_from_magicbox = 0;
565 grabbed_from_perk_random = 0;
567 pap_weapon_grabbed = 0;
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;
578 claymores_planted = 0;
579 claymores_pickedup = 0;
580 bouncingbetty_planted = 0;
581 ballistic_knives_pickedup = 0;
582 wallbuy_weapons_purchased = 0;
585 planted_buildables_pickedup = 0;
587 upgraded_ammo_purchased = 0;
588 buildables_built = 0;
590 cheat_too_many_weapons = 0;
591 cheat_out_of_playable_area = 0;
592 cheat_too_friendly = 0;
595 players = GetPlayers();
596 foreach(player
in players)
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"];
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"];
616 doors_purchased += player.pers[
"doors_purchased"];
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"];
656 game_mode = GetDvarString(
"ui_gametype" );
657 incrementCounter(
"global_zm_" + game_mode ,1);
658 incrementCounter(
"global_zm_games", 1 );
660 if (
"zclassic" == game_mode ||
"zm_nuked" == level.script )
662 incrementCounter(
"global_zm_games_" + level.script, 1 );
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);
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 );
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 );
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);
727 return (
self GetDStat( stat_category, stat_name,
"StatValue" ) );
735 self.pers[
"lastHighestScore"] =
self getDStat(
"HighestStats",
"highest_score" );
737 currGameType = level.gametype;
738 self GameHistoryStartMatch( getGameTypeEnumFromName( currGameType,
false ) );
748 self notify(
"upload_stats_soon" );
749 self endon(
"upload_stats_soon" );
750 self endon(
"disconnect" );