Maximizer Blake Great things Deserve the wait
Ivobardolf
Posts
-
[Release] [ZM] [Mod] zm_weapons - Adding all weapons to maps -
Cap the Number of Zombies in the Round to 1 PlayerKyber66 Fixed
-
Cap the Number of Zombies in the Round to 1 PlayerXerxes which one
-
Remove Zombie Dying by HimselfT.Re.Viento Makes sense now
Regarding the no running, I use the script in testing on every map and never had a no running issue, what round/step the zombie was supposed to run and it didn't?
-
Remove Zombie Dying by HimselfWolflexZ They Respawn/Die if they have met certain conditions that I disabled here:
1 - Zombie is far away
2 - Zombie is Idle (he stands in place for too long)
I couldn't find anything related to needing to hit the playerAs you said, many people don't need this script, and it might do them more harm then good, it's intended for some uses and not normal play.
-
Remove Zombie Dying by HimselfT.Re.Viento Thanks for trying it, but I'm curious, why do you use it ?
yeah, Origins and Motd and some areas in other maps need the things I disable here for them to respawn the zombies, I can think of a way to make it work, but that isn't what I intended for the script, only thing you can do is only move out and in the crazy place if the rounds are changing.
-
[Release] [ZM] [Mod] zm_perks - Adding all perks to mapsOh wow you are doing Perks too!
Thank you for doing it -
[Release] [ZM] [Mod] zm_weapons - Adding all weapons to mapsworks really well, Thanks for the work!
-
Remove Zombie Dying by HimselfxNando compare your script with the one from the post above, see where you made a difference, I just tried the one in the post and it works
-
Remove Zombie Dying by HimselfxNando hmm, did you just copy the script of origins?
every map has its own thing, some things are the same though
-
Remove Zombie Dying by HimselfUpdate: All maps have been added, except Nuketown
-
Remove Zombie Dying by HimselfJezuzLizard don't know how it works
-
Remove Zombie Dying by HimselfxNando you can make on big replace func and add a check for each map so it auto loads from one script
or make a file for each map
I might do it later
-
Remove Zombie Dying by Himselfiluisey each map has the same checks, it just a name change
replaceFunc(maps\mp\zm_tomb::tomb_round_spawn_failsafe, ::tomb_round_spawn_failsafe) replaceFunc(maps\mp\zm_tomb_distance_tracking::delete_zombie_noone_looking, ::delete_zombie_noone_looking);
zm_tomb is orignis, zm_transit is for tranzit etc
-
Cap the Number of Zombies in the Round to 1 PlayerHello,
This is a simple script using replace function to cap the zombies numbers in a round to 1 player.
Now instead of 389 zombies for 4 players on round 26, it's now 84You can also make it a X number of zombies for X number of players, all from the simple function, 8 players in game but only spawns zombies up to 6 players.
Or change how much zombies get added per player for better
calculating, example on round 40 for normal calculations:
1 Player: 168 Zombies
2 Players: 312 Zombies, 1.85 Worth of zombies
3 Players: 600 Zombies, 3.57 Worth of zombies
4 Players: 888 Zombies, 5.28 Worth of zombiesIt's also possible to change the formula, you can have any number of zombies you want.
the change is simple:
From --->if ( player_num == 1 ) max = max + int( 0.5 * level.zombie_vars["zombie_ai_per_player"] * multiplier ); else max = max + int( ( player_num - 1 ) * level.zombie_vars["zombie_ai_per_player"] * multiplier );
To --->
if ( player_num == 1 ) max = max + int( 0.5 * level.zombie_vars["zombie_ai_per_player"] * multiplier ); else max = max + int( 0.5 * level.zombie_vars["zombie_ai_per_player"] * multiplier );
Here is the script:
#include common_scripts\utility; #include maps\mp\_utility; #include maps\mp\zombies\_zm_utility; #include maps\mp\zombies\_zm_ffotd; #include maps\mp\zombies\_zm; #include maps\mp\_visionset_mgr; #include maps\mp\zombies\_zm_devgui; #include maps\mp\zombies\_zm_zonemgr; #include maps\mp\zombies\_zm_unitrigger; #include maps\mp\zombies\_zm_audio; #include maps\mp\zombies\_zm_blockers; #include maps\mp\zombies\_zm_bot; #include maps\mp\zombies\_zm_clone; #include maps\mp\zombies\_zm_buildables; #include maps\mp\zombies\_zm_equipment; #include maps\mp\zombies\_zm_laststand; #include maps\mp\zombies\_zm_magicbox; #include maps\mp\zombies\_zm_perks; #include maps\mp\zombies\_zm_playerhealth; #include maps\mp\zombies\_zm_power; #include maps\mp\zombies\_zm_powerups; #include maps\mp\zombies\_zm_score; #include maps\mp\zombies\_zm_spawner; #include maps\mp\zombies\_zm_gump; #include maps\mp\zombies\_zm_timer; #include maps\mp\zombies\_zm_traps; #include maps\mp\zombies\_zm_weapons; #include maps\mp\zombies\_zm_tombstone; #include maps\mp\zombies\_zm_stats; #include maps\mp\zombies\_zm_pers_upgrades; #include maps\mp\gametypes_zm\_zm_gametype; #include maps\mp\zombies\_zm_pers_upgrades_functions; #include maps\mp\_demo; #include maps\mp\gametypes_zm\_hud_util; #include maps\mp\zombies\_zm_melee_weapon; #include maps\mp\zombies\_zm_ai_dogs; #include maps\mp\zombies\_zm_pers_upgrades_system; #include maps\mp\gametypes_zm\_weapons; #include maps\mp\zombies\_zm_ai_basic; #include maps\mp\zombies\_zm_game_module; main() { replaceFunc(maps\mp\zombies\_zm::round_spawning, ::round_spawning); } round_spawning() { level endon( "intermission" ); level endon( "end_of_round" ); level endon( "restart_round" ); /# level endon( "kill_round" ); #/ if ( level.intermission ) return; /# if ( getdvarint( #"zombie_cheat" ) == 2 || getdvarint( #"zombie_cheat" ) >= 4 ) return; #/ if ( level.zombie_spawn_locations.size < 1 ) { /# assertmsg( "No active spawners in the map. Check to see if the zone is active and if it's pointing to spawners." ); #/ return; } ai_calculate_health( level.round_number ); count = 0; players = get_players(); for ( i = 0; i < players.size; i++ ) players[i].zombification_time = 0; max = level.zombie_vars["zombie_max_ai"]; multiplier = level.round_number / 5; if ( multiplier < 1 ) multiplier = 1; if ( level.round_number >= 10 ) multiplier = multiplier * ( level.round_number * 0.15 ); player_num = get_players().size; if ( player_num == 1 ) max = max + int( 0.5 * level.zombie_vars["zombie_ai_per_player"] * multiplier ); else { //max = max + int( ( player_num - 1 ) * level.zombie_vars["zombie_ai_per_player"] * multiplier ); max = max + int( 0.5 * level.zombie_vars["zombie_ai_per_player"] * multiplier ); iPrintLn("^8Zombies count set to 1 Player :D"); } if ( !isdefined( level.max_zombie_func ) ) level.max_zombie_func = ::default_max_zombie_func; if ( !( isdefined( level.kill_counter_hud ) && level.zombie_total > 0 ) ) { level.zombie_total = [[ level.max_zombie_func ]]( max ); level notify( "zombie_total_set" ); } if ( isdefined( level.zombie_total_set_func ) ) level thread [[ level.zombie_total_set_func ]](); if ( level.round_number < 10 || level.speed_change_max > 0 ) level thread zombie_speed_up(); mixed_spawns = 0; old_spawn = undefined; while ( true ) { while ( get_current_zombie_count() >= level.zombie_ai_limit || level.zombie_total <= 0 ) wait 0.1; while ( get_current_actor_count() >= level.zombie_actor_limit ) { clear_all_corpses(); wait 0.1; } flag_wait( "spawn_zombies" ); while ( level.zombie_spawn_locations.size <= 0 ) wait 0.1; run_custom_ai_spawn_checks(); spawn_point = level.zombie_spawn_locations[randomint( level.zombie_spawn_locations.size )]; if ( !isdefined( old_spawn ) ) old_spawn = spawn_point; else if ( spawn_point == old_spawn ) spawn_point = level.zombie_spawn_locations[randomint( level.zombie_spawn_locations.size )]; old_spawn = spawn_point; if ( isdefined( level.mixed_rounds_enabled ) && level.mixed_rounds_enabled == 1 ) { spawn_dog = 0; if ( level.round_number > 30 ) { if ( randomint( 100 ) < 3 ) spawn_dog = 1; } else if ( level.round_number > 25 && mixed_spawns < 3 ) { if ( randomint( 100 ) < 2 ) spawn_dog = 1; } else if ( level.round_number > 20 && mixed_spawns < 2 ) { if ( randomint( 100 ) < 2 ) spawn_dog = 1; } else if ( level.round_number > 15 && mixed_spawns < 1 ) { if ( randomint( 100 ) < 1 ) spawn_dog = 1; } if ( spawn_dog ) { keys = getarraykeys( level.zones ); for ( i = 0; i < keys.size; i++ ) { if ( level.zones[keys[i]].is_occupied ) { akeys = getarraykeys( level.zones[keys[i]].adjacent_zones ); for ( k = 0; k < akeys.size; k++ ) { if ( level.zones[akeys[k]].is_active && !level.zones[akeys[k]].is_occupied && level.zones[akeys[k]].dog_locations.size > 0 ) { maps\mp\zombies\_zm_ai_dogs::special_dog_spawn( undefined, 1 ); level.zombie_total--; wait_network_frame(); } } } } } } if ( isdefined( level.zombie_spawners ) ) { if ( isdefined( level.use_multiple_spawns ) && level.use_multiple_spawns ) { if ( isdefined( spawn_point.script_int ) ) { if ( isdefined( level.zombie_spawn[spawn_point.script_int] ) && level.zombie_spawn[spawn_point.script_int].size ) spawner = random( level.zombie_spawn[spawn_point.script_int] ); else { /# assertmsg( "Wanting to spawn from zombie group " + spawn_point.script_int + "but it doens't exist" ); #/ } } else if ( isdefined( level.zones[spawn_point.zone_name].script_int ) && level.zones[spawn_point.zone_name].script_int ) spawner = random( level.zombie_spawn[level.zones[spawn_point.zone_name].script_int] ); else if ( isdefined( level.spawner_int ) && ( isdefined( level.zombie_spawn[level.spawner_int].size ) && level.zombie_spawn[level.spawner_int].size ) ) spawner = random( level.zombie_spawn[level.spawner_int] ); else spawner = random( level.zombie_spawners ); } else spawner = random( level.zombie_spawners ); ai = spawn_zombie( spawner, spawner.targetname, spawn_point ); } if ( isdefined( ai ) ) { level.zombie_total--; ai thread round_spawn_failsafe(); count++; } wait( level.zombie_vars["zombie_spawn_delay"] ); wait_network_frame(); } }
-
[ZM] [Release] Nuketown Perks Managervery nice, sometimes people search for the simple stuff
-
Remove Zombie Dying by HimselfHello,
In order to stop Zombies from dying by being Idle for too long & if they are far from you, you change these functions ( This is for Origins, Other maps should be the same by replacing the names and some don't use a function from this ), First Idle:
tomb_round_spawn_failsafe()//tomp is Origins name
replace OR comment out:
self dodamage( self.health + 100, ( 0, 0, 0 ) ); level.zombie_total++; level.zombie_total_subtract++;
zombie_damage_failsafe()//this for damaged or missing limbs
replace OR comment out:
self.enemy dodamage( self.enemy.health + 1000, self.enemy.origin, self, self, "none", "MOD_RIFLE_BULLET" ); continue_failsafe_damage = 1;
for far away:
delete_zombie_noone_looking( how_close, how_high )//every map has this
replace OR comment out:
self notify( "zombie_delete" ); self delete(); level.zombie_total++; level.zombie_respawned_health[level.zombie_respawned_health.size] = self.health;
here is a GSC script for Origins:
#include common_scripts\utility; #include maps\mp\_utility; #include maps\mp\zombies\_zm_utility; main() { replaceFunc(maps\mp\zm_tomb_distance_tracking::delete_zombie_noone_looking, ::delete_zombie_noone_looking); replaceFunc(maps\mp\zm_tomb::tomb_round_spawn_failsafe, ::tomb_round_spawn_failsafe);// tomb is origins name replaceFunc(maps\mp\zombies\_zm::round_spawn_failsafe, ::round_spawn_failsafe); } delete_zombie_noone_looking( how_close, how_high ) { self endon( "death" ); if ( !isdefined( how_close ) ) how_close = 1500; if ( !isdefined( how_high ) ) how_high = 600; distance_squared_check = how_close * how_close; too_far_dist = distance_squared_check * 3; if ( isdefined( level.zombie_tracking_too_far_dist ) ) too_far_dist = level.zombie_tracking_too_far_dist * level.zombie_tracking_too_far_dist; self.inview = 0; self.player_close = 0; n_distance_squared = 0; n_height_difference = 0; players = get_players(); for ( i = 0; i < players.size; i++ ) { if ( players[i].sessionstate == "spectator" ) continue; if ( isdefined( level.only_track_targeted_players ) ) { if ( !isdefined( self.favoriteenemy ) || self.favoriteenemy != players[i] ) continue; } can_be_seen = self player_can_see_me( players[i] ); if ( can_be_seen && distancesquared( self.origin, players[i].origin ) < too_far_dist ) self.inview++; n_modifier = 1.0; if ( isdefined( players[i].b_in_tunnels ) && players[i].b_in_tunnels ) n_modifier = 2.25; n_distance_squared = distancesquared( self.origin, players[i].origin ); n_height_difference = abs( self.origin[2] - players[i].origin[2] ); if ( n_distance_squared < distance_squared_check * n_modifier && n_height_difference < how_high ) self.player_close++; } if ( self.inview == 0 && self.player_close == 0 ) { if ( !isdefined( self.animname ) || self.animname != "zombie" && self.animname != "mechz_zombie" ) return; if ( isdefined( self.electrified ) && self.electrified == 1 ) return; if ( isdefined( self.in_the_ground ) && self.in_the_ground == 1 ) return; zombies = getaiarray( "axis" ); if ( ( !isdefined( self.damagemod ) || self.damagemod == "MOD_UNKNOWN" ) && self.health < self.maxhealth ) { if ( !( isdefined( self.exclude_distance_cleanup_adding_to_total ) && self.exclude_distance_cleanup_adding_to_total ) && !( isdefined( self.isscreecher ) && self.isscreecher ) ) { empty = 0; //level.zombie_total++; //level.zombie_respawned_health[level.zombie_respawned_health.size] = self.health; } } else if ( zombies.size + level.zombie_total > 24 || zombies.size + level.zombie_total <= 24 && self.health >= self.maxhealth ) { if ( !( isdefined( self.exclude_distance_cleanup_adding_to_total ) && self.exclude_distance_cleanup_adding_to_total ) && !( isdefined( self.isscreecher ) && self.isscreecher ) ) { empty = 1; //level.zombie_total++; if ( self.health < level.zombie_health ) level.zombie_respawned_health[level.zombie_respawned_health.size] = self.health; } } self maps\mp\zombies\_zm_spawner::reset_attack_spot(); //self notify( "zombie_delete" ); empty = 0; if ( isdefined( self.is_mechz ) && self.is_mechz ) { self notify( "mechz_cleanup" ); level.mechz_left_to_spawn++; wait_network_frame(); level notify( "spawn_mechz" ); } empty = 0; //self delete(); recalc_zombie_array(); } } tomb_round_spawn_failsafe() { self endon( "death" ); prevorigin = self.origin; while ( true ) { if ( isdefined( self.ignore_round_spawn_failsafe ) && self.ignore_round_spawn_failsafe ) return; wait 15; if ( isdefined( self.is_inert ) && self.is_inert ) continue; if ( isdefined( self.lastchunk_destroy_time ) ) { if ( gettime() - self.lastchunk_destroy_time < 8000 ) continue; } if ( self.origin[2] < -3000 ) { if ( isdefined( level.put_timed_out_zombies_back_in_queue ) && level.put_timed_out_zombies_back_in_queue && !flag( "dog_round" ) && !( isdefined( self.isscreecher ) && self.isscreecher ) ) { empty = 0; //level.zombie_total++; //level.zombie_total_subtract++; } empty = 0; //self dodamage( self.health + 100, ( 0, 0, 0 ) ); break; } if ( distancesquared( self.origin, prevorigin ) < 576 ) { if ( isdefined( level.put_timed_out_zombies_back_in_queue ) && level.put_timed_out_zombies_back_in_queue && !flag( "dog_round" ) ) { if ( !self.ignoreall && !( isdefined( self.nuked ) && self.nuked ) && !( isdefined( self.marked_for_death ) && self.marked_for_death ) && !( isdefined( self.isscreecher ) && self.isscreecher ) && ( isdefined( self.has_legs ) && self.has_legs ) && !( isdefined( self.is_brutus ) && self.is_brutus ) ) { empty = 0; //level.zombie_total++; //level.zombie_total_subtract++; } } level.zombies_timeout_playspace++; empty = 0; //self dodamage( self.health + 100, ( 0, 0, 0 ) ); break; } prevorigin = self.origin; } } round_spawn_failsafe() { self endon( "death" ); prevorigin = self.origin; while ( true ) { if ( !level.zombie_vars["zombie_use_failsafe"] ) return; if ( isdefined( self.ignore_round_spawn_failsafe ) && self.ignore_round_spawn_failsafe ) return; wait 30; if ( !self.has_legs ) wait 10.0; if ( isdefined( self.is_inert ) && self.is_inert ) continue; if ( isdefined( self.lastchunk_destroy_time ) ) { if ( gettime() - self.lastchunk_destroy_time < 8000 ) continue; } if ( self.origin[2] < level.zombie_vars["below_world_check"] ) { if ( isdefined( level.put_timed_out_zombies_back_in_queue ) && level.put_timed_out_zombies_back_in_queue && !flag( "dog_round" ) && !( isdefined( self.isscreecher ) && self.isscreecher ) ) { empty = 0; //level.zombie_total++; //level.zombie_total_subtract++; } /# #/ empty = 0; //self dodamage( self.health + 100, ( 0, 0, 0 ) ); break; } if ( distancesquared( self.origin, prevorigin ) < 576 ) { if ( isdefined( level.put_timed_out_zombies_back_in_queue ) && level.put_timed_out_zombies_back_in_queue && !flag( "dog_round" ) ) { if ( !self.ignoreall && !( isdefined( self.nuked ) && self.nuked ) && !( isdefined( self.marked_for_death ) && self.marked_for_death ) && !( isdefined( self.isscreecher ) && self.isscreecher ) && ( isdefined( self.has_legs ) && self.has_legs ) ) { empty = 0; //level.zombie_total++; //level.zombie_total_subtract++; } } level.zombies_timeout_playspace++; /# #/ empty = 0; //self dodamage( self.health + 100, ( 0, 0, 0 ) ); break; } prevorigin = self.origin; } }
here is a GSC script for Buried:
#include maps\mp\gametypes_zm\_hud_util; #include common_scripts\utility; #include maps\mp\_utility; #include maps\mp\zombies\_zm_utility; #include maps\mp\gametypes_zm\_spawnlogic; main() { replaceFunc(maps\mp\zm_buried_distance_tracking::delete_zombie_noone_looking, ::delete_zombie_noone_looking); replaceFunc(maps\mp\zombies\_zm::round_spawn_failsafe, ::round_spawn_failsafe); } delete_zombie_noone_looking( how_close, how_high ) { self endon( "death" ); if ( self can_be_deleted_from_buried_special_zones() ) { self.inview = 0; self.player_close = 0; } else { if ( !isdefined( how_close ) ) how_close = 1000; if ( !isdefined( how_high ) ) how_high = 500; if ( !( isdefined( self.has_legs ) && self.has_legs ) ) how_close = how_close * 1.5; distance_squared_check = how_close * how_close; height_squared_check = how_high * how_high; too_far_dist = distance_squared_check * 3; if ( isdefined( level.zombie_tracking_too_far_dist ) ) too_far_dist = level.zombie_tracking_too_far_dist * level.zombie_tracking_too_far_dist; self.inview = 0; self.player_close = 0; players = get_players(); foreach ( player in players ) { if ( player.sessionstate == "spectator" ) continue; if ( isdefined( player.laststand ) && player.laststand && ( isdefined( self.favoriteenemy ) && self.favoriteenemy == player ) ) { if ( !self can_zombie_see_any_player() ) { self.favoriteenemy = undefined; self.zombie_path_bad = 1; self thread escaped_zombies_cleanup(); } } if ( isdefined( level.only_track_targeted_players ) ) { if ( !isdefined( self.favoriteenemy ) || self.favoriteenemy != player ) continue; } can_be_seen = self player_can_see_me( player ); distance_squared = distancesquared( self.origin, player.origin ); if ( can_be_seen && distance_squared < too_far_dist ) self.inview++; if ( distance_squared < distance_squared_check && abs( self.origin[2] - player.origin[2] ) < how_high ) self.player_close++; } } wait 0.1; if ( self.inview == 0 && self.player_close == 0 ) { if ( !isdefined( self.animname ) || isdefined( self.animname ) && self.animname != "zombie" ) return; if ( isdefined( self.electrified ) && self.electrified == 1 ) return; zombies = getaiarray( "axis" ); if ( zombies.size + level.zombie_total > 24 || zombies.size + level.zombie_total <= 24 && self.health >= self.maxhealth ) { if ( !( isdefined( self.exclude_distance_cleanup_adding_to_total ) && self.exclude_distance_cleanup_adding_to_total ) && !( isdefined( self.isscreecher ) && self.isscreecher ) ) { //level.zombie_total++; if ( self.health < level.zombie_health ) level.zombie_respawned_health[level.zombie_respawned_health.size] = self.health; } } self maps\mp\zombies\_zm_spawner::reset_attack_spot(); //self notify( "zombie_delete" ); if ( isdefined( self.anchor ) ) //self.anchor delete(); //self delete(); recalc_zombie_array(); } } round_spawn_failsafe() { self endon( "death" ); prevorigin = self.origin; while ( true ) { if ( !level.zombie_vars["zombie_use_failsafe"] ) return; if ( isdefined( self.ignore_round_spawn_failsafe ) && self.ignore_round_spawn_failsafe ) return; wait 30; if ( !self.has_legs ) wait 10.0; if ( isdefined( self.is_inert ) && self.is_inert ) continue; if ( isdefined( self.lastchunk_destroy_time ) ) { if ( gettime() - self.lastchunk_destroy_time < 8000 ) continue; } if ( self.origin[2] < level.zombie_vars["below_world_check"] ) { if ( isdefined( level.put_timed_out_zombies_back_in_queue ) && level.put_timed_out_zombies_back_in_queue && !flag( "dog_round" ) && !( isdefined( self.isscreecher ) && self.isscreecher ) ) { empty = 0; //level.zombie_total++; //level.zombie_total_subtract++; } /# #/ empty = 0; //self dodamage( self.health + 100, ( 0, 0, 0 ) ); break; } if ( distancesquared( self.origin, prevorigin ) < 576 ) { if ( isdefined( level.put_timed_out_zombies_back_in_queue ) && level.put_timed_out_zombies_back_in_queue && !flag( "dog_round" ) ) { if ( !self.ignoreall && !( isdefined( self.nuked ) && self.nuked ) && !( isdefined( self.marked_for_death ) && self.marked_for_death ) && !( isdefined( self.isscreecher ) && self.isscreecher ) && ( isdefined( self.has_legs ) && self.has_legs ) ) { empty = 0; //level.zombie_total++; //level.zombie_total_subtract++; } } level.zombies_timeout_playspace++; /# #/ empty = 0; //self dodamage( self.health + 100, ( 0, 0, 0 ) ); break; } prevorigin = self.origin; } }
here is a GSC script for Mob of the Dead:
#include maps\mp\gametypes_zm\_hud_util; #include common_scripts\utility; #include maps\mp\_utility; #include maps\mp\zombies\_zm_utility; #include maps\mp\gametypes_zm\_spawnlogic; main() { replaceFunc(maps\mp\zm_alcatraz_distance_tracking::delete_zombie_noone_looking, ::delete_zombie_noone_looking); replaceFunc(maps\mp\zm_prison::alcatraz_round_spawn_failsafe, ::alcatraz_round_spawn_failsafe);// tomb is origins name replaceFunc(maps\mp\zombies\_zm::round_spawn_failsafe, ::round_spawn_failsafe); } delete_zombie_noone_looking( how_close, how_high ) { self endon( "death" ); if ( !isdefined( how_close ) ) how_close = 1500; if ( !isdefined( how_high ) ) how_close = 600; distance_squared_check = how_close * how_close; too_far_dist = distance_squared_check * 3; if ( isdefined( level.zombie_tracking_too_far_dist ) ) too_far_dist = level.zombie_tracking_too_far_dist * level.zombie_tracking_too_far_dist; self.inview = 0; self.player_close = 0; players = get_players(); for ( i = 0; i < players.size; i++ ) { if ( players[i].sessionstate == "spectator" ) continue; if ( isdefined( level.only_track_targeted_players ) ) { if ( !isdefined( self.favoriteenemy ) || self.favoriteenemy != players[i] ) continue; } can_be_seen = self player_can_see_me( players[i] ); if ( can_be_seen && distancesquared( self.origin, players[i].origin ) < too_far_dist ) self.inview++; if ( distancesquared( self.origin, players[i].origin ) < distance_squared_check && abs( self.origin[2] - players[i].origin[2] ) < how_high ) self.player_close++; } wait 0.1; if ( self.inview == 0 && self.player_close == 0 ) { if ( !isdefined( self.animname ) || isdefined( self.animname ) && self.animname != "zombie" ) return; if ( isdefined( self.electrified ) && self.electrified == 1 ) return; if ( isdefined( self.in_the_ground ) && self.in_the_ground == 1 ) return; zombies = getaiarray( "axis" ); if ( ( !isdefined( self.damagemod ) || self.damagemod == "MOD_UNKNOWN" ) && self.health < self.maxhealth ) { if ( !( isdefined( self.exclude_distance_cleanup_adding_to_total ) && self.exclude_distance_cleanup_adding_to_total ) && !( isdefined( self.isscreecher ) && self.isscreecher ) ) { //level.zombie_total++; //level.zombie_respawned_health[level.zombie_respawned_health.size] = self.health; } } else if ( zombies.size + level.zombie_total > 24 || zombies.size + level.zombie_total <= 24 && self.health >= self.maxhealth ) { if ( !( isdefined( self.exclude_distance_cleanup_adding_to_total ) && self.exclude_distance_cleanup_adding_to_total ) && !( isdefined( self.isscreecher ) && self.isscreecher ) ) { //level.zombie_total++; if ( self.health < level.zombie_health ) level.zombie_respawned_health[level.zombie_respawned_health.size] = self.health; } } self maps\mp\zombies\_zm_spawner::reset_attack_spot(); //self notify( "zombie_delete" ); //self delete(); recalc_zombie_array(); } } alcatraz_round_spawn_failsafe() { self endon( "death" ); prevorigin = self.origin; while ( true ) { if ( isdefined( self.ignore_round_spawn_failsafe ) && self.ignore_round_spawn_failsafe ) return; wait 15; if ( isdefined( self.is_inert ) && self.is_inert ) continue; if ( isdefined( self.lastchunk_destroy_time ) ) { if ( gettime() - self.lastchunk_destroy_time < 8000 ) continue; } if ( self.origin[2] < -15000 ) { if ( isdefined( level.put_timed_out_zombies_back_in_queue ) && level.put_timed_out_zombies_back_in_queue && !flag( "dog_round" ) && !( isdefined( self.isscreecher ) && self.isscreecher ) ) { //level.zombie_total++; //level.zombie_total_subtract++; } /# #/ self dodamage( self.health + 100, ( 0, 0, 0 ) ); break; } if ( distancesquared( self.origin, prevorigin ) < 576 ) { if ( isdefined( level.put_timed_out_zombies_back_in_queue ) && level.put_timed_out_zombies_back_in_queue && !flag( "dog_round" ) ) { if ( !( isdefined( self.nuked ) && self.nuked ) && !( isdefined( self.marked_for_death ) && self.marked_for_death ) && !( isdefined( self.isscreecher ) && self.isscreecher ) && ( isdefined( self.has_legs ) && self.has_legs ) && !( isdefined( self.is_brutus ) && self.is_brutus ) ) { //level.zombie_total++; //level.zombie_total_subtract++; } } level.zombies_timeout_playspace++; /# #/ if ( isdefined( self.is_brutus ) && self.is_brutus ) { self.suppress_brutus_powerup_drop = 1; self.brutus_round_spawn_failsafe = 1; } //self dodamage( self.health + 100, ( 0, 0, 0 ) ); break; } prevorigin = self.origin; } } round_spawn_failsafe() { self endon( "death" ); prevorigin = self.origin; while ( true ) { if ( !level.zombie_vars["zombie_use_failsafe"] ) return; if ( isdefined( self.ignore_round_spawn_failsafe ) && self.ignore_round_spawn_failsafe ) return; wait 30; if ( !self.has_legs ) wait 10.0; if ( isdefined( self.is_inert ) && self.is_inert ) continue; if ( isdefined( self.lastchunk_destroy_time ) ) { if ( gettime() - self.lastchunk_destroy_time < 8000 ) continue; } if ( self.origin[2] < level.zombie_vars["below_world_check"] ) { if ( isdefined( level.put_timed_out_zombies_back_in_queue ) && level.put_timed_out_zombies_back_in_queue && !flag( "dog_round" ) && !( isdefined( self.isscreecher ) && self.isscreecher ) ) { empty = 0; //level.zombie_total++; //level.zombie_total_subtract++; } /# #/ empty = 0; //self dodamage( self.health + 100, ( 0, 0, 0 ) ); break; } if ( distancesquared( self.origin, prevorigin ) < 576 ) { if ( isdefined( level.put_timed_out_zombies_back_in_queue ) && level.put_timed_out_zombies_back_in_queue && !flag( "dog_round" ) ) { if ( !self.ignoreall && !( isdefined( self.nuked ) && self.nuked ) && !( isdefined( self.marked_for_death ) && self.marked_for_death ) && !( isdefined( self.isscreecher ) && self.isscreecher ) && ( isdefined( self.has_legs ) && self.has_legs ) ) { empty = 0; //level.zombie_total++; //level.zombie_total_subtract++; } } level.zombies_timeout_playspace++; /# #/ empty = 0; //self dodamage( self.health + 100, ( 0, 0, 0 ) ); break; } prevorigin = self.origin; } }
here is a GSC script for Die Rise:
#include maps\mp\gametypes_zm\_hud_util; #include common_scripts\utility; #include maps\mp\_utility; #include maps\mp\zombies\_zm_utility; #include maps\mp\gametypes_zm\_spawnlogic; main() { replaceFunc(maps\mp\zm_highrise_distance_tracking::delete_zombie_noone_looking, ::delete_zombie_noone_looking); replaceFunc(maps\mp\zombies\_zm::round_spawn_failsafe, ::round_spawn_failsafe); } delete_zombie_noone_looking( how_close, how_high ) { self endon( "death" ); if ( !isdefined( how_close ) ) how_close = 1000; if ( !isdefined( how_high ) ) how_high = 500; distance_squared_check = how_close * how_close; height_squared_check = how_high * how_high; too_far_dist = distance_squared_check * 3; if ( isdefined( level.zombie_tracking_too_far_dist ) ) too_far_dist = level.zombie_tracking_too_far_dist * level.zombie_tracking_too_far_dist; self.inview = 0; self.player_close = 0; players = get_players(); for ( i = 0; i < players.size; i++ ) { if ( players[i].sessionstate == "spectator" ) continue; if ( isdefined( level.only_track_targeted_players ) ) { if ( !isdefined( self.favoriteenemy ) || self.favoriteenemy != players[i] ) continue; } can_be_seen = self player_can_see_me( players[i] ); if ( can_be_seen && distancesquared( self.origin, players[i].origin ) < too_far_dist ) self.inview++; if ( distancesquared( self.origin, players[i].origin ) < distance_squared_check && abs( self.origin[2] - players[i].origin[2] ) < how_high ) self.player_close++; } wait 0.1; if ( self.inview == 0 && self.player_close == 0 ) { if ( !isdefined( self.animname ) || isdefined( self.animname ) && self.animname != "zombie" ) return; if ( isdefined( self.electrified ) && self.electrified == 1 ) return; zombies = getaiarray( "axis" ); if ( zombies.size + level.zombie_total > 24 || zombies.size + level.zombie_total <= 24 && self.health >= self.maxhealth ) { if ( !( isdefined( self.exclude_distance_cleanup_adding_to_total ) && self.exclude_distance_cleanup_adding_to_total ) && !( isdefined( self.isscreecher ) && self.isscreecher ) ) { //level.zombie_total++; if ( self.health < level.zombie_health ) level.zombie_respawned_health[level.zombie_respawned_health.size] = self.health; } } self maps\mp\zombies\_zm_spawner::reset_attack_spot(); //self notify( "zombie_delete" ); //self delete(); recalc_zombie_array(); } } round_spawn_failsafe() { self endon( "death" ); prevorigin = self.origin; while ( true ) { if ( !level.zombie_vars["zombie_use_failsafe"] ) return; if ( isdefined( self.ignore_round_spawn_failsafe ) && self.ignore_round_spawn_failsafe ) return; wait 30; if ( !self.has_legs ) wait 10.0; if ( isdefined( self.is_inert ) && self.is_inert ) continue; if ( isdefined( self.lastchunk_destroy_time ) ) { if ( gettime() - self.lastchunk_destroy_time < 8000 ) continue; } if ( self.origin[2] < level.zombie_vars["below_world_check"] ) { if ( isdefined( level.put_timed_out_zombies_back_in_queue ) && level.put_timed_out_zombies_back_in_queue && !flag( "dog_round" ) && !( isdefined( self.isscreecher ) && self.isscreecher ) ) { empty = 0; //level.zombie_total++; //level.zombie_total_subtract++; } /# #/ empty = 0; //self dodamage( self.health + 100, ( 0, 0, 0 ) ); break; } if ( distancesquared( self.origin, prevorigin ) < 576 ) { if ( isdefined( level.put_timed_out_zombies_back_in_queue ) && level.put_timed_out_zombies_back_in_queue && !flag( "dog_round" ) ) { if ( !self.ignoreall && !( isdefined( self.nuked ) && self.nuked ) && !( isdefined( self.marked_for_death ) && self.marked_for_death ) && !( isdefined( self.isscreecher ) && self.isscreecher ) && ( isdefined( self.has_legs ) && self.has_legs ) ) { empty = 0; //level.zombie_total++; //level.zombie_total_subtract++; } } level.zombies_timeout_playspace++; /# #/ empty = 0; //self dodamage( self.health + 100, ( 0, 0, 0 ) ); break; } prevorigin = self.origin; } }
here is a GSC script for Tranzit:
#include maps\mp\gametypes_zm\_hud_util; #include common_scripts\utility; #include maps\mp\_utility; #include maps\mp\zombies\_zm_utility; #include maps\mp\gametypes_zm\_spawnlogic; main() { replaceFunc(maps\mp\zm_transit_distance_tracking::delete_zombie_noone_looking, ::delete_zombie_noone_looking); replaceFunc(maps\mp\zombies\_zm::round_spawn_failsafe, ::round_spawn_failsafe); } delete_zombie_noone_looking( how_close ) { self endon( "death" ); if ( !isdefined( how_close ) ) how_close = 1000; distance_squared_check = how_close * how_close; too_far_dist = distance_squared_check * 3; if ( isdefined( level.zombie_tracking_too_far_dist ) ) too_far_dist = level.zombie_tracking_too_far_dist * level.zombie_tracking_too_far_dist; self.inview = 0; self.player_close = 0; players = get_players(); for ( i = 0; i < players.size; i++ ) { if ( players[i].sessionstate == "spectator" ) continue; if ( isdefined( level.only_track_targeted_players ) ) { if ( !isdefined( self.favoriteenemy ) || self.favoriteenemy != players[i] ) continue; } can_be_seen = self player_can_see_me( players[i] ); if ( can_be_seen && distancesquared( self.origin, players[i].origin ) < too_far_dist ) self.inview++; if ( distancesquared( self.origin, players[i].origin ) < distance_squared_check ) self.player_close++; } wait 0.1; if ( self.inview == 0 && self.player_close == 0 ) { if ( !isdefined( self.animname ) || isdefined( self.animname ) && self.animname != "zombie" ) return; if ( isdefined( self.electrified ) && self.electrified == 1 ) return; if ( isdefined( self.in_the_ground ) && self.in_the_ground == 1 ) return; zombies = getaiarray( "axis" ); if ( ( !isdefined( self.damagemod ) || self.damagemod == "MOD_UNKNOWN" ) && self.health < self.maxhealth ) { if ( !( isdefined( self.exclude_distance_cleanup_adding_to_total ) && self.exclude_distance_cleanup_adding_to_total ) && !( isdefined( self.isscreecher ) && self.isscreecher ) ) { //level.zombie_total++; //level.zombie_respawned_health[level.zombie_respawned_health.size] = self.health; } } else if ( zombies.size + level.zombie_total > 24 || zombies.size + level.zombie_total <= 24 && self.health >= self.maxhealth ) { if ( !( isdefined( self.exclude_distance_cleanup_adding_to_total ) && self.exclude_distance_cleanup_adding_to_total ) && !( isdefined( self.isscreecher ) && self.isscreecher ) ) { //level.zombie_total++; if ( self.health < level.zombie_health ) level.zombie_respawned_health[level.zombie_respawned_health.size] = self.health; } } self maps\mp\zombies\_zm_spawner::reset_attack_spot(); //self notify( "zombie_delete" ); //self delete(); recalc_zombie_array(); } } round_spawn_failsafe() { self endon( "death" ); prevorigin = self.origin; while ( true ) { if ( !level.zombie_vars["zombie_use_failsafe"] ) return; if ( isdefined( self.ignore_round_spawn_failsafe ) && self.ignore_round_spawn_failsafe ) return; wait 30; if ( !self.has_legs ) wait 10.0; if ( isdefined( self.is_inert ) && self.is_inert ) continue; if ( isdefined( self.lastchunk_destroy_time ) ) { if ( gettime() - self.lastchunk_destroy_time < 8000 ) continue; } if ( self.origin[2] < level.zombie_vars["below_world_check"] ) { if ( isdefined( level.put_timed_out_zombies_back_in_queue ) && level.put_timed_out_zombies_back_in_queue && !flag( "dog_round" ) && !( isdefined( self.isscreecher ) && self.isscreecher ) ) { empty = 0; //level.zombie_total++; //level.zombie_total_subtract++; } /# #/ empty = 0; //self dodamage( self.health + 100, ( 0, 0, 0 ) ); break; } if ( distancesquared( self.origin, prevorigin ) < 576 ) { if ( isdefined( level.put_timed_out_zombies_back_in_queue ) && level.put_timed_out_zombies_back_in_queue && !flag( "dog_round" ) ) { if ( !self.ignoreall && !( isdefined( self.nuked ) && self.nuked ) && !( isdefined( self.marked_for_death ) && self.marked_for_death ) && !( isdefined( self.isscreecher ) && self.isscreecher ) && ( isdefined( self.has_legs ) && self.has_legs ) ) { empty = 0; //level.zombie_total++; //level.zombie_total_subtract++; } } level.zombies_timeout_playspace++; /# #/ empty = 0; //self dodamage( self.health + 100, ( 0, 0, 0 ) ); break; } prevorigin = self.origin; } }
-
[Release][ZM] Replaced Nazi Symbolsvery nice