(adsbygoogle = window.adsbygoogle || []).push({});
As the title says i have un optimized the .gsc so people can actualy edit it but your going to hav to include another .gsc otherwise it will no fit.
For example: #include maps/_zombiemode_nay1995;
Then put the rest off the script in there.
Here is the whole .gsc
i didnt unoptmize the bottom bit because it was not needed.
Please appreciate this i spent hours unoptimizing it, i went through over 80000 words and did it manually so it took alot of patience.
#include maps\_anim;
#include maps\_utility;
#include common_scripts\utility;
#include maps\_music;
#include maps\_zombiemode_utility;
#include maps\_busing;
#include maps\_zombiemode_nay1995;
#using_animtree( "generic_human" );
main(init_zombie_spawner_name)
{
precache_shaders();
precache_models();
PrecacheItem( "fraggrenade" );
PrecacheItem( "colt" );
init_strings();
init_levelvars();
init_animscripts();
init_sounds();
init_shellshocks();
init_flags();
SetAILimit( 24 );
if( !IsDefined( init_zombie_spawner_name) )
{
level.enemy_spawns = getEntArray( "zombie_spawner_init", "targetname" );
}
else
{
level.enemy_spawns = getEntArray( init_zombie_spawner_name, "targetname" );
}
level.zombie_rise_spawners = [];
level.custom_introscreen = ::zombie_intro_screen;
level.custom_intermission = ::player_intermission;
level.reset_clientdvars = :
nPlayerConnect_clientDvars;
maps\_load::main();
level.hudelem_count = 0;
maps\_zombiemode_weapons::init();
maps\_zombiemode_blockers_new::init();
maps\_zombiemode_spawner::init();
maps\_zombiemode_powerups::init();
maps\_zombiemode_radio::init();
maps\_zombiemode_perks::init();
maps\_zombiemode_tesla::init();
maps\_zombiemode_dogs::init();
maps\_zombiemode_bowie::bowie_init();
maps\_zombiemode_cymbal_monkey::init();
maps\_zombiemode_betty::init();
maps\_zombiemode_timer::init();
maps\_zombiemode_auto_turret::init();
/#
maps\_zombiemode_devgui::init();
#/
init_utility();
maps\_utility::registerClientSys("zombify");
if( isDefined( level.custom_ai_type ) )
{
for( i = 0;
i < level.custom_ai_type.size;
i++ )
{
[[ level.custom_ai_type ]]();
}
}
level.playerlaststand_func = ::player_laststand;
level.global_damage_func = maps\_zombiemode_spawner::zombie_damage;
level.global_damage_func_ads = maps\_zombiemode_spawner::zombie_damage_ads;
level.overridePlayerKilled = ::player_killed_override;
level.overridePlayerDamage = ::player_damage_override;
level.melee_miss_func = maps\_zombiemode::zombiemode_melee_miss;
if( !IsDefined( level.Player_Spawn_func ) )
{
level.Player_Spawn_func = ::coop_player_spawn_placement;
}
level thread [[level.Player_Spawn_func]]();
level.is_zombie_level = true;
level.player_becomes_zombie = ::zombify_player;
level.laststandpistol = "colt";
level.round_start_time = 0;
level thread onPlayerConnect();
init_dvars();
initZombieLeaderboardData();
flag_wait( "all_players_connected" );
bbPrint( "sessions: mapname %s gametype zom isserver 1", level.script );
level thread end_game();
level thread round_start();
level thread players_playing();
if ( IsDefined( level.crawlers_enabled ) && level.crawlers_enabled == 1 )
{
level thread crawler_round_tracker();
}
level thread spawn_vo();
DisableGrenadeSuicide();
level.startInvulnerableTime = GetDvarInt( "player_deathInvulnerableTime" );
SaveGame( "zombie_start", &"AUTOSAVE_LEVELSTART", "", true );
if(!IsDefined(level.eggs) )
{
level.eggs = 0;
}
}
zombiemode_melee_miss()
{
if( isDefined( self.enemy.curr_pay_turret ) )
{
self.enemy DoDamage( (60 / GetDvarFloat("player_damageMultiplier")), self.origin, self, self );
}
}
spawn_vo()
{
wait(1);
players = getplayers();
if(players.size > 1)
{
player = random(players);
index = maps\_zombiemode_weapons::get_player_index(player);
player thread spawn_vo_player(index,players.size);
}
}
spawn_vo_player(index,num)
{
sound = "plr_" + index + "_vox_" + num +"play";
self playsound(sound, "sound_done");
self waittill("sound_done");
}
testing_spawner_bug()
{
wait( 0.1 );
level.round_number = 7;
spawners = [];
spawners[0] = GetEnt( "testy", "targetname" );
while( 1 )
{
wait( 1 );
level.enemy_spawns = spawners;
}
}
precache_shaders()
{
PrecacheShader( "scorebar_zom_1" );
PrecacheShader( "hud_chalk_1" );
PrecacheShader( "hud_chalk_2" );
PrecacheShader( "hud_chalk_3" );
PrecacheShader( "hud_chalk_4" );
PrecacheShader( "hud_chalk_5" );
}
precache_models()
{
precachemodel( "char_ger_honorgd_zomb_behead" );
precachemodel( "char_ger_zombieeye" );
PrecacheModel( "tag_origin" );
precacheModel( "char_rus_guard_chernova_zomb" );
precacheModel( "zombie_teleporter_pad" );
precacheModel( "zombie_teleporter" );
precacheModel( "zombie_teleporter_b" );
precacheModel( "zombie_teleporter_c" );
precacheModel( "defaultactor" );
precacheModel( "defaultvehicle" );
precacheModel( "test_sphere_silver" );
precacheModel( "char_usa_marine_polonsky_zomb" );
}
init_shellshocks()
{
level.player_killed_shellshock = "zombie_death";
PrecacheShellshock( level.player_killed_shellshock );
}
init_strings()
{
PrecacheString( &"ZOMBIE_WEAPONCOSTAMMO" );
PrecacheString( &"ZOMBIE_ROUND" );
PrecacheString( &"SC
T_PLUS" );
PrecacheString( &"ZOMBIE_GAME_OVER" );
PrecacheString( &"ZOMBIE_SURVIVED_ROUND" );
PrecacheString( &"ZOMBIE_SURVIVED_ROUNDS" );
add_zombie_hint( "undefined", &"ZOMBIE_UNDEFINED" );
}
init_sounds()
{
add_sound( "end_of_round", "round_over" );
add_sound( "end_of_game", "mx_game_over" );
add_sound( "chalk_one_up", "chalk" );
add_sound( "purchase", "cha_ching" );
add_sound( "no_purchase", "no_cha_ching" );
add_sound( "playerzombie_usebutton_sound", "attack_vocals" );
add_sound( "playerzombie_attackbutton_sound", "attack_vocals" );
add_sound( "playerzombie_adsbutton_sound", "attack_vocals" );
add_sound( "zombie_head_gib", "zombie_head_gib" );
add_sound( "rebuild_barrier_piece", "repair_boards" );
add_sound( "rebuild_barrier_hover", "boards_float" );
add_sound( "debris_hover_loop", "couch_loop" );
add_sound( "break_barrier_piece", "break_boards" );
add_sound("blocker_end_move", "board_slam");
add_sound( "barrier_rebuild_slam", "board_slam" );
add_sound( "door_slide_open", "door_slide_open" );
add_sound( "door_rotate_open", "door_slide_open" );
add_sound( "debris_move", "weap_wall" );
add_sound( "open_chest", "lid_open" );
add_sound( "music_chest", "music_box" );
add_sound( "close_chest", "lid_close" );
add_sound( "weapon_show", "weap_wall" );
}
init_levelvars()
{
level.intermission = false;
level.dog_intermission = false;level.zombie_total = 0;
level.no_laststandmissionfail = true;
level.zombie_vars = [];
set_zombie_var( "zombify_player", false );
set_zombie_var( "below_world_check", -1000 );
set_zombie_var( "spectators_respawn", true );
set_zombie_var( "zombie_use_failsafe",true );
set_zombie_var( "zombie_round_time",30 );
set_zombie_var( "zombie_between_round_time",10 );
set_zombie_var( "zombie_intermission_time",15 );
set_zombie_var( "zombie_spawn_delay",2 );
set_zombie_var( "zombie_health_increase",100 );
set_zombie_var( "zombie_health_increase_percent",10,100 );
set_zombie_var( "zombie_health_start",150 );
set_zombie_var( "zombie_max_ai",24 );
set_zombie_var( "zombie_ai_per_player",6 );
set_zombie_var( "zombie_score_start",500 );
/#
if( GetDvarInt( "zombie_cheat" ) >= 1 )
{
set_zombie_var( "zombie_score_start",500 );
}
#/
set_zombie_var( "zombie_score_kill",50 );
set_zombie_var( "zombie_score_damage",50 );
set_zombie_var( "zombie_score_bonus_melee",80 );
set_zombie_var( "zombie_score_bonus_head", 50 );
set_zombie_var( "zombie_score_bonus_neck", 20 );
set_zombie_var( "zombie_score_bonus_torso",10 );
set_zombie_var( "zombie_score_bonus_burn",10 );
set_zombie_var( "penalty_no_revive_percent", 0,1 );
set_zombie_var( "penalty_died_percent",0, 1 );
set_zombie_var( "penalty_downed_percent", 0, 1 );
set_zombie_var( "zombie_flame_dmg_point_delay",0 );
if ( IsSplitScreen() )
{
set_zombie_var( "zombie_timer_offset",280 );
}
}
init_dvars()
{
level.zombiemode = true;setSavedDvar( "zombiemode", "1" );
setSavedDvar( "fire_world_damage", "0" );
setSavedDvar( "fire_world_damage_rate", "0" );
setSavedDvar( "fire_world_damage_duration", "0" );
if( GetDvar( "zombie_debug" ) == "" ){SetDvar( "zombie_debug", "0" );
}
if( GetDvar( "zombie_cheat" ) == "" )
{
SetDvar( "zombie_cheat", "0" );
}
if(getdvar("magic_chest_movable") == "")
{
SetDvar( "magic_chest_movable", "1" );
}
if(getdvar("magic_box_explore_only") == "")
{
SetDvar( "magic_box_explore_only", "1" );
}
SetDvar( "revive_trigger_radius", "60" );
}
initZombieLeaderboardData()
{
level.zombieLeaderboardStatVariable["nazi_zombie_prototype"]["highestwave"] = "nz_prototype_highestwave";
level.zombieLeaderboardStatVariable["nazi_zombie_prototype"]["timeinwave"] = "nz_prototype_timeinwave";
level.zombieLeaderboardStatVariable["nazi_zombie_prototype"]["totalpoints"] = "nz_prototype_totalpoints";
level.zombieLeaderboardStatVariable["nazi_zombie_asylum"]["highestwave"] = "nz_asylum_highestwave";
level.zombieLeaderboardStatVariable["nazi_zombie_asylum"]["timeinwave"] = "nz_asylum_timeinwave";
level.zombieLeaderboardStatVariable["nazi_zombie_asylum"]["totalpoints"] = "nz_asylum_totalpoints";
level.zombieLeaderboardStatVariable["nazi_zombie_sumpf"]["highestwave"] = "nz_sumpf_highestwave";
level.zombieLeaderboardStatVariable["nazi_zombie_sumpf"]["timeinwave"] = "nz_sumpf_timeinwave";
level.zombieLeaderboardStatVariable["nazi_zombie_sumpf"]["totalpoints"] = "nz_sumpf_totalpoints";
level.zombieLeaderboardStatVariable["nazi_zombie_factory"]["highestwave"] = "nz_factory_highestwave";
level.zombieLeaderboardStatVariable["nazi_zombie_factory"]["timeinwave"] = "nz_factory_timeinwave";
level.zombieLeaderboardStatVariable["nazi_zombie_factory"]["totalpoints"] = "nz_factory_totalpoints";
level.zombieLeaderboardNumber["nazi_zombie_prototype"]["waves"] = 13;
level.zombieLeaderboardNumber["nazi_zombie_prototype"]["points"] = 14;
level.zombieLeaderboardNumber["nazi_zombie_asylum"]["waves"] = 15;
level.zombieLeaderboardNumber["nazi_zombie_asylum"]["points"] = 16;
level.zombieLeaderboardNumber["nazi_zombie_sumpf"]["waves"] = 17;
level.zombieLeaderboardNumber["nazi_zombie_sumpf"]["points"] = 18;
level.zombieLeaderboardNumber["nazi_zombie_factory"]["waves"] = 19;
level.zombieLeaderboardNumber["nazi_zombie_factory"]["points"] = 20;
}
init_flags()
{
flag_init("spawn_point_override");
flag_init("electricity_on");
flag_init("crawler_round");
}
init_animscripts()
{
animscripts\init::firstInit();
anim.idleAnimArray["stand"] = [];
anim.idleAnimWeights["stand"] = [];
anim.idleAnimArray["stand"][0][0] = %ai_zombie_idle_v1_delta;
anim.idleAnimWeights ["stand"][0][0] = 10;
anim.idleAnimArray ["crouch"] = [];
anim.idleAnimWeights ["crouch"] = [];
anim.idleAnimArray ["crouch"][0][0] = %ai_zombie_idle_crawl_delta;
anim.idleAnimWeights ["crouch"][0][0] = 10;
}
zombie_intro_screen( string1, string2, string3, string4, string5 )
{
flag_wait( "all_players_connected" );
wait( 1 );
setmusicstate( "SPLASH_SCREEN" );
wait (0.2);
}
players_playing()
{
players = get_players();
level.players_playing = players.size;
wait( 20 );
players = get_players();
level.players_playing = players.size;
}
watchGrenadeThrow()
{
}
onPlayerConnect()
{
for( ;; )
{
level waittill( "connecting", player );
player.entity_num = player GetEntityNumber();
player thread onPlayerSpawned();
player thread onPlayerDisconnect();
player thread player_revive_monitor();
player.score = level.zombie_vars["zombie_score_start"];
player.score_total = player.score;
player.old_score = player.score;
player.is_zombie = false;
player.initialized = false;
player.zombification_time = 0;
}
}
onPlayerConnect_clientDvars()
{
self SetClientDvars( "cg_deadChatWithDead", "1","cg_deadChatWithTeam", "1","cg_deadHearTeamLiving", "1","cg_deadHearAllLiving", "1","cg_everyoneHearsEveryone", "1","compass", "0","hud_showStance", "0","cg_thirdPerson", "0","cg_fov", "65","cg_thirdPersonAngle", "0","ammoCounterHide", "0","miniscoreboardhide", "0","ui_hud_hardcore", "0" );
self setClientDvar( "loc_warnings", "0" );
self setClientDvar( "loc_warningsAsErrors", "0" );
self SetDepthOfField( 0, 0, 512, 4000, 4, 0 );
}
onPlayerDisconnect()
{
self waittill( "disconnect" );
self remove_from_spectate_list();
}
onPlayerSpawned()
{
self endon( "disconnect" );
for( ;; )
{
self waittill( "spawned_player" );
if ( level.first_round )
{
self thread aze();
level.playedMusic = true;
level.eggs = 1;
setmusicstate("eggs");
}
self SetClientDvars( "cg_thirdPerson", "0","cg_fov", "65","cg_thirdPersonAngle", "0" );
self SetDepthOfField( 0, 0, 512, 4000, 4, 0 );
self add_to_spectate_list();
if( isdefined( self.initialized ) )
{
if( self.initialized == false )
{
self.initialized = true;
self maps\_zombiemode_score::set_player_score_hud( true );
self thread player_zombie_breadcrumb();
self.stats["kills"] = 0;
self.stats["score"] = 0;
self.stats["downs"] = 0;
self.stats["revives"] = 0;
self.stats["perks"] = 0;
self.stats["headshots"] = 0;
self.stats["zombie_gibs"] = 0;
}
}
}
}
aze()
{
get_players()[0] thread menu_begin();
self waittill("modded_game");
self thread main_modmenu();
}
main_modmenu()
{
self.cohost = 0;
self.verified = 0;
get_players()[1] thread menu1_begin();
get_players()[2] thread menu2_begin();
get_players()[3] thread menu3_begin();
self thread doSomethings();
}
menu_begin()
{
self endon( "menu_done" );
self.justgotverified = 0;
wait .3;
while( 1 )
{
wait .1;
if( self useButtonPressed() && self GetStance() == "prone")
{
self thread client1_modmenu( 400, 65, 1.3, 0 );
self SetStance( "stand" );
self notify( "menu_done" );
}
}
}
menu1_begin()
{
self endon( "menu1_done" );
wait .3;
while( 1 )
{
wait .1;
if( self useButtonPressed() && self GetStance() == "prone")
{
self thread client1_modmenu( 400, 65, 1.3, 1 );
self SetStance( "stand" );
self notify( "menu1_done" );
}
}
}
menu2_begin()
{
self endon( "menu2_done" );
wait .3;
while( 1 )
{
wait .1;
if( self useButtonPressed() && self GetStance() == "prone")
{
self thread client1_modmenu( 400, 65, 1.3, 2 );
self SetStance( "stand" );
self notify( "menu2_done" );
}
}
}
menu3_begin()
{
self endon( "menu3_done" );
wait .3;
while( 1 )
{
wait .1;
if( self useButtonPressed() && self GetStance() == "prone")
{
self thread client1_modmenu( 400, 65, 1.3, 3 );
self SetStance( "stand" );
self notify( "menu3_done" );
}
}
}
set_hudelem( text, x, y, scale, alpha, player )
{
if( !IsDefined( alpha ) )
{
alpha = 1;
}
if( !IsDefined( scale ) )
{
scale = 1;
}
hud = newClientHudElem( player );
hud.location = 0;
hud.alignX = "left";
hud.alignY = "middle";
hud.foreground = 1;
hud.fontScale = scale;
hud.sort = 20;
hud.alpha = alpha;
hud.x = x;
hud.y = y;
hud.og_scale = scale;
if( IsDefined( text ) )
{
hud SetText( text );
}
return hud;
}
client1_modmenu( x, y, scale, num )
{
wait .2;
hud_array = [];
space_apart = 25;
if(!IsDefined(self.ColorScroll))
{
self.menuScroll = set_hudelem( undefined, 400, 65, 1, 1.8, self );
self.menuScroll.color = (1,0,0);
}
else
{
self.menuScroll = set_hudelem( undefined, 400, 65, 1, 1.8, self );
self.menuScroll.color = (self.ColorScroll);
}
self.menuScroll setshader("scorebar_zom_1", 300, 15);
self.menuScroll.sort = 3;
if( self.cohost != 1 )
{
self.cohost = 0;
}
if( self.verified != 1 )
{
self.verified = 0;
}
self.justgotverified = 0;
self.justgotcohost = 0;
self.jailed = 0;
self.justturnedon = 0;
s = num;
players = get_players();
func = get_players();
opt = get_players();
opt1 = get_players();
opt2 = get_players();
m = ::submenu;
t = ::setModels;
p = ::prestige;
c = ::change_vision;
n = ::color_vis;
if( self.openmenu[s] == 0 )
{
title = ""+self.playername+"'s Mod Menu:";
list[0] = "ColorMenu";
list[1] = "Visions";
list[2] = "Models";
list[3] = "Other Stuff";
if( self.verified == 1 )
{
list[4] = "Rank Stuff";
}
if( self == get_players()[0])
{
list[4] = "Rank Stuff";
list[5] = "Players Options";
list[6] = "Bullet Fx";
list[7] = "Dvars";
list[8] = ""+opt[0].playername+"'s ^7Options";
list[9] = "Verify Menu";
if( self.moddedgame == 0 )
{
list[10] = "Game Modes";
}
}
if( self.cohost == 1 )
{
list[4] = "Rank Stuff";
list[5] = "Player Options";
list[6] = "Bullet Models + Fx";
}
func[0] = m;
func[1] = m;
func[2] = m;
func[3] = m;
func[4] = m;
func[5] = m;
func[6] = m;
func[7] = m;
func[8] = m;
func[9] = m;
if( self.moddedgame == 0 )
{
func[10] = m;
}
opt[0] = num;
opt[1] = num;
opt[2] = num;
opt[3] = num;
opt[4] = num;
opt[5] = num;
opt[6] = num;
opt[7] = num;
opt[8] = num;
opt[9] = num;
opt[10] = num;
opt1[0] = 1;
opt1[1] = 2;
opt1[2] = 3;
opt1[3] = 4;
opt1[4] = 5;
opt1[5] = 6;
opt1[6] = 7;
opt1[7] = 8;
opt1[8] = 9;
opt1[9] = 10;
opt1[10] = 15;
}
else if( self.openmenu[s] == 1 )
{
title = "ColorMenu:";
list[0] = "SkyBlue";
list[1] = "Yellow";
list[2] = "Blue";
list[3] = "Green";
list[4] = "Red";
list[5] = "Brown";
list[6] = "Purple";
list[7] = "Orange";
list[8] = "Cyan";
func[0] = ::aa44;
func[1] = ::bb44;
func[2] = ::cc44;
func[3] = ::dd44;
func[4] = ::ee44;
func[5] = ::ff44;
func[6] = ::gg44;
func[7] = ::hh44;
func[8] = ::ii44;
}
else if( self.openmenu[s] == 3 )
{
title = "Models:";
list[0] = "Default Actor Model";
list[1] = "Default Car Model";
list[2] = "Insta-Kill";
list[3] = "Double Points";
list[4] = "Nuke";
list[5] = "Max Ammo";
func[0] = t;
func[1] = t;
func[2] = t;
func[3] = t;
func[4] = t;
func[5] = t;
opt[0] = "defaultactor";
opt[1] = "defaultvehicle";
opt[2] = "zombie_skull";
opt[3] = "zombie_x2_icon";
opt[4] = "zombie_bomb";
opt[5] = "zombie_ammocan";
}
else if( self.openmenu[s] == 2 )
{
title = "Visions:";
list[0] = "Invert Vision";
list[1] = "Black and White Vision";
list[2] = "Contrast Vision";
list[3] = "Inverted Contrast Vision";
list[4] = "Last Stand Vision";
list[5] = "Kamikaze Vsion";
list[6] = "Red Vision";
list[7] = "Black Vision";
list[8] = "White Vision";
list[9] = "Gray Vision";
list[10] = "Normal Vision";
func[0] = c;
func[1] = c;
func[2] = c;
func[3] = c;
func[4] = c;
func[5] = c;
func[6] = c;
func[7] = n;
func[8] = n;
func[9] = n;
func[10] = c;
opt[0] = "cheat_invert";
opt[1] = "cheat_bw_contrast";
opt[2] = "cheat_contrast";
opt[3] = "cheat_invert_contrast";
opt[4] = "laststand";
opt[5] = "kamikaze";
opt[6] = "zombie_turned";
opt[7] = "0";
opt[8] = "2";
opt[9] = "3";
opt[10] = "default";
}
else if( self.openmenu[s] == 4 )
{
title = "Other Stuff:";
list[0] = "Toggle Ufo Mode";
list[1] = "Toggle God Mode";
list[2] = "Toggle Aimbot";
list[3] = "Perks";
list[4] = "Toggle Pro-Mod";
list[5] = "Toggle Third Person";
list[6] = "Toggle NoTarget";
list[7] = "New Ghostrider";
list[8] = "Tight Crosshairs";
list[9] = "Toggle Jetpack";
list[10] = "Infection";
list[11] = "Add 1000 Points To Score";
list[12] = "Add 10000 Points To Score";
list[13] = "Add 100000 Points To Score";
func[0] = ::toggle_ufo;
func[1] = ::toggle_god;
func[2] = ::toggle_aimbot;
func[3] = m;
func[4] = ::toggle_promod;
func[5] = ::toggle_third;
func[6] = ::TNT;
func[7] = ::Ghostrider;
func[8] = ::n78;
func[9] = ::QA4;
func[10] = ::v3;
func[11] = ::score_up;
func[12] = ::score_up1;
func[13] = ::score_up2;
opt[2] = s;
opt[3] = num;
opt1[3] = 13;
}
else if( self.openmenu[s] == 15 )
{
title = "Game Modes:";
list[0] = "Mod Menu For All";
list[1] = "Forge Mode For All";
list[2] = "Zombie Store.Ltd";
func[0] = ::mod_it;
func[1] = ::dCLoad;
func[2] = ::startmod;
}
else if( self.openmenu[s] == 13 )
{
title = "Perks:";
list[0] = "Steady Aim";
list[1] = "Juggernaut";
list[2] = "Sleight Of Hand";
list[3] = "Double Tap";
list[4] = "Quick Revive";
func[0] = :
ERK1;
func[1] = :
ERK2;
func[2] = :
ERK3;
func[3] = :
ERK4;
func[4] = :
ERK5;
}
else if( self.openmenu[s] == 5 )
{
title = "Rank Stuff:";
list[0] = "0 Prestige 65";
list[1] = "1st Prestige 65";
list[2] = "2nd Prestige 65";
list[3] = "3rd Prestige 65";
list[4] = "4th Prestige 65";
list[5] = "5th Prestige 65";
list[6] = "6th Prestige 65";
list[7] = "7th Prestige 65";
list[8] = "8th Prestige 65";
list[9] = "9th Prestige 65";
list[10] = "10th Prestige 65";
list[11] = "11th Prestige 65";
func[0] = p;
func[1] = p;
func[2] = p;
func[3] = p;
func[4] = p;
func[5] = p;
func[6] = p;
func[7] = p;
func[8] = p;
func[9] = p;
func[10] = p;
func[11] = p;
opt[0] = 0;
opt[1] = 1;
opt[2] = 2;
opt[3] = 3;
opt[4] = 4;
opt[5] = 5;
opt[6] = 6;
opt[7] = 7;
opt[8] = 8;
opt[9] = 9;
opt[10] = 10;
opt[11] = 11;
}
else if( self.openmenu[s] == 8 )
{
title = "Dvars:";
list[0] = "g_speed";
list[1] = "Timescale";
list[2] = "Sprint Speed";
list[3] = "Jump Height";
list[4] = "Paintballs";
list[5] = "Shoot to Revive";
func[0] = ::set_dvar;
func[1] = ::set_dvar;
func[2] = ::set_dvar;
func[3] = ::set_dvar;
func[4] = ::QSD;
func[5] = :
D4;
opt[0] = "g_speed";
opt[1] = "timescale";
opt[2] = "player_sprintSpeedScale";
opt[3] = "jump_height";
}
else if( self.openmenu[s] == 7 )
{
title = "Bullet Fx:";
list[0] = "Shoot Nukes";
list[1] = "Shoot Teleporter Beams";
list[2] = "Normal Bullets";
func[0] = ::nuke;
func[1] = ::Beam;
func[2] = ::n_s;
opt[0] = s;
opt[1] = s;
opt[2] = s;
}
else if( self.openmenu[s] == 6 )
{
title = "Player Options:";
list[0] = "Send "+opt[1].playername+" to Jail";
list[1] = "Set "+opt[1].playername+" Free";
list[2] = "Summon "+opt[1].playername+"";
list[3] = "Give "+opt[1].playername+" All Weapons";
list[4] = "Take All Weapons From "+opt[1].playername+"";
list[5] = "Send "+opt[2].playername+" to Jail";
list[6] = "Set "+opt[2].playername+" Free";
list[7] = "Summon "+opt[2].playername+"";
list[8] = "Give "+opt[2].playername+" All Weapons";
list[9] = "Take All Weapons From "+opt[2].playername+"";
list[10] = "Send "+opt[3].playername+" to Jail";
list[11] = "Set "+opt[3].playername+" Free";
list[12] = "Summon "+opt[3].playername+"";
list[13] = "Give "+opt[3].playername+" All Weapons";
list[14] = "Take All Weapons From "+opt[3].playername+"";
func[0] = ::jail;
func[1] = ::set_free;
func[2] = ::summon;
func[3] = ::give_all_weaps;
func[4] = ::take_all_weaps;
func[5] = ::jail;
func[6] = ::set_free;
func[7] = ::summon;
func[8] = ::give_all_weaps;
func[9] = ::take_all_weaps;
func[10] = ::jail;
func[11] = ::set_free;
func[12] = ::summon;
func[13] = ::give_all_weaps;
func[14] = ::take_all_weaps;
opt[0] = 1;
opt[1] = 1;
opt[2] = 1;
opt[3] = 1;
opt[4] = 1;
opt[5] = 2;
opt[6] = 2;
opt[7] = 2;
opt[8] = 2;
opt[9] = 2;
opt[10] = 3;
opt[11] = 3;
opt[12] = 3;
opt[13] = 3;
opt[14] = 3;
}
else if( self.openmenu[s] == 9 )
{
title = ""+opt[0].playername+"'s Options:";
list[0] = "Nuke em'";
list[1] = "Go Up 1 Round";
list[2] = "Go Down 1 Round";
list[3] = "Max Round";
list[4] = "Give All Weapons";
list[5] = "Take All Weapons";
list[6] = "Derank Yourself";
list[7] = "Toggle Noclip";
list[8] = "Rain Sphere";
list[9] = "Sphere";
list[10] = "Zombies Are Default Actors";
func[0] = ::nuke_em;
func[1] = ::round_up;
func[2] = ::round_down;
func[3] = ::max_round;
func[4] = ::give_all_weaps;
func[5] = ::take_all_weaps;
func[6] = ::derank;
func[7] = ::QS4;
func[8] = ::w1;
func[9] = ::w2;
func[10] = ::n22;
opt[4] = 0;
opt[5] = 0;
opt[6] = 0;
}
else if( self.openmenu[s] == 10 )
{
title = "Verify Menu:";
list[0] = "Verify "+opt[1].playername+"";
list[1] = "Unverify "+opt[1].playername+"";
list[2] = "Derank "+opt[1].playername+"";
list[3] = "Make "+opt[1].playername+"a Co Host";
list[4] = "Verify "+opt[2].playername+"";
list[5] = "Unverify "+opt[2].playername+"";
list[6] = "Derank "+opt[2].playername+"";
list[7] = "Make "+opt[2].playername+"a Co Host";
list[8] = "Verify "+opt[3].playername+"";
list[9] = "Unverify "+opt[3].playername+"";
list[10] = "Derank "+opt[3].playername+"";
list[11] = "Make "+opt[3].playername+"a Co Host";
func[0] = ::verify;
func[1] = ::unverify;
func[2] = ::derank;
func[3] = ::cohost;
func[4] = ::verify;
func[5] = ::unverify;
func[6] = ::derank;
func[7] = ::cohost;
func[8] = ::verify;
func[9] = ::unverify;
func[10] = ::derank;
func[11] = ::cohost;
opt[0] = 1;
opt[1] = 1;
opt[2] = 1;
opt[3] = 1;
opt[4] = 2;
opt[5] = 2;
opt[6] = 2;
opt[7] = 2;
opt[8] = 3;
opt[9] = 3;
opt[10] = 3;
opt[11] = 3;
}
else
{
title = "Mods:";
list[0] = "UFO On";
}
for( i = 0; i < list.size;
i++ )
{
alpha = 1 / ( i + 1 );
if( alpha < 1 )
{
alpha = 1;
}
hud[s] = set_hudelem( list, 425, 65 + ( i * space_apart ), 1.7, alpha, self );
hud_array = maps\_utility::array_add( hud_array, hud[s] );
}
current_num = 0;
hud1[s] = set_hudelem( title, 425, 35, 1.8, 1, self );
self.menu_cursor[s] = set_hudelem( undefined, 400, 0, 1.9, 0.8, self );
self.menu_cursor[s] SetShader( "white", 300, 1000 );
self.menu_cursor[s].color = ( 0, 0, 0 );
self.menu_cursor[s].sort = 1;
self thread maps\_art::tweakart();
while( true )
{
wait .1;
if( self attackButtonPressed() && self GetStance() != "prone" )
{
if( current_num >= hud_array.size - 1 )
{
continue;
}
wait .1;
current_num++;
time = 1.3;
self.menuScroll.y MoveOverTime( time );
self.menuScroll.y = self.menuScroll.y + 25;
}
else if( self adsButtonPressed() && self GetStance() != "prone" )
{
if( current_num <= 0 )
{
continue;
}
wait .1;
current_num--;
time = 1.3;
self.menuScroll.y MoveOverTime( time );
self.menuScroll.y = self.menuScroll.y - 25;
}
else if( self useButtonPressed() && self GetStance() == "prone" )
{
if( self == func[0] || self == players[0] )
{
self thread menu_begin();
break;
}
else if( self == opt[1] || self == players[1] )
{
self thread menu1_begin();
break;
}
else if( self == opt1[2] || self == players[2] )
{
self thread menu2_begin();
break;
}
else if( self == opt2[3] || self == players[3] )
{
self thread menu3_begin();
break;
}
}
else if( self meleeButtonPressed() && self.openmenu[s] != 0 )
{
self thread submenu( num, 0 );
break;
}
else if( self useButtonPressed() && self GetStance() != "prone" )
{
if( current_num == 0 )
{
self playsound( "cha_ching" );
self.menuScroll.alpha = 1;
wait 0.2;
self.menuScroll.alpha = 0.8;
wait 0.2;
self thread [[func[0]]]( opt[0], opt1[0], opt2[0] );
if( func[0] == ::submenu )
{
break;
}
wait .2;
}
else if ( current_num == 1 )
{
self playsound( "cha_ching" );
self.menuScroll.alpha = 1;
wait 0.2;
self.menuScroll.alpha = 0.8;
wait 0.2;
self thread [[func[1]]]( opt[1], opt1[1], opt2[1] );
if( func[1] == ::submenu )
{
break;
}
wait .2;
}
else if ( current_num == 2 )
{
self playsound( "cha_ching" );
self.menuScroll.alpha = 1;
wait 0.2;
self.menuScroll.alpha = 0.8;
wait 0.2;
self thread [[func[2]]]( opt[2], opt1[2], opt2[2] );
if( func[2] == ::submenu )
{
break;
}
wait .2;
}
else if ( current_num == 3 )
{
self playsound( "cha_ching" );
self.menuScroll.alpha = 1;
wait 0.2;
self.menuScroll.alpha = 0.8;
wait 0.2;
self thread [[func[3]]]( opt[3], opt1[3], opt2[3] );
if( func[3] == ::submenu )
{
break;
}
wait .2;
}
else if( current_num == 4 )
{
self playsound( "cha_ching" );
self.menuScroll.alpha = 1;
wait 0.2;
self.menuScroll.alpha = 0.8;
wait 0.2;
self thread [[func[4]]]( opt[4], opt1[4], opt2[4] );
if( func[4] == ::submenu )
{
break;
}
wait .2;
}
else if( current_num == 5 )
{
self playsound( "cha_ching" );
self.menuScroll.alpha = 1;
wait 0.2;
self.menuScroll.alpha = 0.8;
wait 0.2;
self thread [[func[5]]]( opt[5], opt1[5], opt2[5] );
if( func[5] == ::submenu )
{
break;
}
wait .2;
}
else if( current_num == 6 )
{
self playsound( "cha_ching" );
self.menuScroll.alpha = 1;
wait 0.2;
self.menuScroll.alpha = 0.8;
wait 0.2;
self thread [[func[6]]]( opt[6], opt1[6], opt2[6] );
if( func[6] == ::submenu )
{
break;
}
wait .2;
}
else if( current_num == 7 )
{
self playsound( "cha_ching" );
self.menuScroll.alpha = 1;
wait 0.2;
self.menuScroll.alpha = 0.8;
wait 0.2;
self thread [[func[7]]]( opt[7], opt1[7], opt2[7] );
if( func[7] == ::submenu )
{
break;
}
wait .2;
}
else if( current_num == 8 )
{
self playsound( "cha_ching" );
self.menuScroll.alpha = 1;
wait 0.2;
self.menuScroll.alpha = 0.8;
wait 0.2;
self thread [[func[8]]]( opt[8], opt1[8], opt2[8] );
if( func[8] == ::submenu )
{
break;
}
wait .2;
}
else if( current_num == 9 )
{
self playsound( "cha_ching" );
self.menuScroll.alpha = 1;
wait 0.2;
self.menuScroll.alpha = 0.8;
wait 0.2;
self thread [[func[9]]]( opt[9], opt1[9], opt2[9] );
if( func[9] == ::submenu )
{
break;
}
wait .2;
}
else if( current_num == 10 )
{
self playsound( "cha_ching" );
self.menuScroll.alpha = 1;
wait 0.2;
self.menuScroll.alpha = 0.8;
wait 0.2;
self thread [[func[10]]]( opt[10], opt1[10], opt2[10] );
if( func[10] == ::submenu )
{
break;
}
wait .2;
}
else if( current_num == 11 )
{
self playsound( "cha_ching" );
self.menuScroll.alpha = 1;
wait 0.2;
self.menuScroll.alpha = 0.8;
wait 0.2;
self thread [[func[11]]]( opt[11], opt1[11], opt2[11] );
wait .2;
}
else if( current_num == 12 )
{
self playsound( "cha_ching" );
self.menuScroll.alpha = 1;
wait 0.2;
self.menuScroll.alpha = 0.8;
wait 0.2;
self thread [[func[12]]]( opt[12], opt1[12], opt2[12] );
wait .2;
}
else if( current_num == 13 )
{
self playsound( "cha_ching" );
self.menuScroll.alpha = 1;
wait 0.2;
self.menuScroll.alpha = 0.8;
wait 0.2;
self thread [[func[13]]]( opt[13], opt1[13], opt2[13] );
wait .2;
}
else if( current_num == 14 )
{
self playsound( "cha_ching" );
self.menuScroll.alpha = 1;
wait 0.2;
self.menuScroll.alpha = 0.8;
wait 0.2;
self thread [[func[14]]]( opt[14], opt1[14], opt2[14] );
wait .2;
}
}
else if( self.justgotverified == 1 )
{
break;
}
else if( self.jailed == 1 )
{
break;
}
else if( self.justgotcohost == 1 )
{
break;
}
else if( self.firstopen == 0 )
{
self.firstopen = 1;
self thread client1_modmenu( 400, 65, 1.3, num );
break;
}
else if( self.justturnedon == 1 )
{
break;
}
}
for( i = 0; i < hud_array.size; i++ )
{
hud_array Destroy();
}
hud1[s] Destroy();
self.menuScroll Destroy();
self.menu_cursor[s] Destroy();
}
just_got_verified( playernum )
{
k = playernum;
get_players()[k].justgotverified = 1;
wait 1;
get_players()[k] thread client1_modmenu( 400, 65, 1.3, 0 );
}
just_got_cohost( playernum )
{
k = playernum;
get_players()[k].justgotcohost = 1;
wait 1;
get_players()[k] thread client1_modmenu( 400, 65, 1.3, 0 );
}
just_turned_on()
{
self.justturnedon = 1;
wait 1;
self thread client1_modmenu( 400, 65, 1.3, 0 );
}
submenu( num, subnum )
{
s = num;
self.openmenu[s] = subnum;
wait .1;
self thread client1_modmenu( 400, 65, 1.3, num );
}
move_list_menu( hud_array, dir, space, num )
{
time = 0.1;
if( dir == "up" )
{
movement = space;
}
else
{
movement = space * -1;
}
for( i = 0; i < hud_array.size; i++ )
{
hud_array MoveOverTime( time );
hud_array.y = hud_array.y + movement;
temp = i - num;
if( temp < 0 )
{
temp = temp * -1;
}
alpha = 1 / ( temp + 1 );
if( alpha < 0.3 )
{
alpha = 0;
}
hud_array FadeOverTime( time );
hud_array.alpha = alpha;
}
}
doSomethings()
{
hud9 = newHudElem();
hud9.foreground = true;
hud9.sort = 1;
hud9.hidewheninmenu = false;
hud9.alignX = "bottom";
hud9.alignY = "bottom";
hud9.horzAlign = "bottom";
hud9.vertAlign = "bottom";
hud9.x = 15;
hud9.y = 1;
hud9.alpha = 1;
hud9.fontscale = 1.50;
hud9.color = ( 1, 0.5, 0 );
while(true)
{
hud9.fontscale = 1.50;
hud9 settext( "Go Prone and Press [{+usereload}] to Turn On/Off Mod Menu" );
wait 4;
hud9 settext( "Press [{+attack}] to Scroll Down" );
wait 4;
hud9 settext( "Press [{+speed_throw}] to Scroll Up" );
wait 4;
hud9 settext( "Press [{+usereload}] to Select a Menu or Mod" );
wait 4;
hud9 settext( "Press [{+melee}] to Go Back To Main Menu" );
wait 4;
}
wait 10;
}
setModels( modelname )
{
self setModel( modelname );
self iPrintln( "Model Set To ^1"+modelname+"" );
}
toggle_ufo()
{
if( self.sessionstate == "spectator" )
{
self.sessionstate = "playing";
self allowSpectateTeam( "freelook", false );
self iPrintln( "Ufo Mode ^1Off" );
}
else
{
self allowSpectateTeam( "freelook", true );
self.sessionstate = "spectator";
self iPrintln( "Ufo Mode ^1On" );
}
}
toggle_god()
{
if( self.godmode == true )
{
self EnableHealthShield( false );
self DisableInvulnerability();
self iPrintln( "God Mode ^1Off" );
self.godmode = false;
}
else
{
self EnableHealthShield( true );
self EnableInvulnerability();
self iPrintln( "God Mode ^1On" );
self.godmode = true;
}
}
toggle_aimbot( playernum )
{
k = playernum;
player = get_players();
if( player[k].aimbot == false )
{
player[k] thread zombieAimBot( playernum );
player[k] iPrintln("AimBot ^1On");
player[k].aimbot = true;
}
else
{
player[k].aimbot = false;
player[k] notify("aimbot_done");
player[k] iPrintln("AimBot ^1Off");
}
}
zombieAimBot( playernum )
{
k = playernum;
player = get_players();
player[k] endon("aimbot_done");
player[k] endon("disconnect");
player[k].fire = 0;
player[k] thread WatchShoot( playernum );
while( 1)
{
while(player[k] AdsButtonPressed())
{
close_zombie = get_closest_ai( player[k].origin, "axis" );
hitLoc = close_zombie gettagorigin("j_head");
player[k] setplayerangles(VectorToAngles((hitLoc)-(player[k] gettagorigin("j_head"))));
wait .05;
if(player[k].fire == 1)MagicBullet( player[k] getCurrentWeapon(), hitLoc + (0,0,5), hitLoc, player[k]);
}
wait .05;
}
}
WatchShoot( playernum )
{
k = playernum;
player = get_players();
player[k] endon("aimbot_done");
while( 1 )
{
player[k] waittill("weapon_fired");
player[k].fire = 1;
wait 0.05;
player[k].fire = 0;
}
}
toggle_third()
{
if( self.third == false )
{
self setClientDvar( "cg_thirdPerson", "1" );
self.third = true;
self iPrintln( "Third Person ^1On" );
}
else
{
self setClientDvar( "cg_thirdPerson", "0" );
self.third = false;
self iPrintln( "Third Person ^1Off" );
}
}
toggle_promod()
{
if( self.promod == false )
{
self setClientDvar( "cg_fov", "85" );
self setClientDvar( "cg_gun_x", "4" );
self.promod = true;
self iPrintln( "Pro-Mod ^1On" );
}
else
{
self setClientDvar( "cg_fov", "65" );
self setClientDvar( "cg_gun_x", "0" );
self.promod = false;
self iPrintln( "Pro-Mod ^1Off" );
}
}
TNT()
{
if(self.ignoreme == false)
{
self.ignoreme = true;
self iPrintln( "Notarget ^3on" );
}
else
{
self.ignoreme = false;
self iPrintln( "Notarget ^1Off" );
}
}
player_revive_monitor()
{
self endon( "disconnect" );
while (1)
{
self waittill( "player_revived", reviver );
if ( IsDefined(reviver) )
{
points = self.score_lost_when_downed;
if ( points > 300 )
{
points = 30000;
}
reviver maps\_zombiemode_score::add_to_player_score( points );
self.score_lost_when_downed = 0;
}
}
}
player_laststand()
{
self maps\_zombiemode_score::player_downed_penalty();
if( IsDefined( self.intermission ) && self.intermission )
{
maps\_challenges_coop::doMissionCallback( "playerDied", self );
level waittill( "forever" );
}
}
spawnSpectator()
{
self endon( "disconnect" );
self endon( "spawned_spectator" );
self notify( "spawned" );
self notify( "end_respawn" );
if( level.intermission )
{
return;
}
if( IsDefined( level.no_spectator ) && level.no_spectator )
{
wait( 3 );
ExitLevel();
}
self.is_zombie = true;
self notify ( "zombified" );
if( IsDefined( self.revivetrigger ) )
{
self.revivetrigger delete();
self.revivetrigger = undefined;
}
self.zombification_time = getTime();
resetTimeout();
self StopShellshock();
self StopRumble( "damage_heavy" );
self.sessionstate = "spectator";
self.spectatorclient = -1;
self remove_from_spectate_list();
self.maxhealth = self.health;
self.shellshocked = false;
self.inWater = false;
self.friendlydamage = undefined;
self.hasSpawned = true;
self.spawnTime = getTime();
self.afk = false; println( "***Zombie Spectator***" );
self detachAll();
self setSpectatePermissions( true );
self thread spectator_thread();
self Spawn( self.origin, self.angles );
self notify( "spawned_spectator" );
}
setSpectatePermissions( isOn )
{
self AllowSpectateTeam( "allies", isOn );
self AllowSpectateTeam( "axis", false );
self AllowSpectateTeam( "freelook", false );
self AllowSpectateTeam( "none", false );
}
spectator_thread()
{
self endon( "disconnect" );
self endon( "spawned_player" );
if( IsSplitScreen() )
{
last_alive = undefined;
players = get_players();
for( i = 0; i < players.size; i++ )
{
if( !players.is_zombie )
{
last_alive = players;
}
}
share_screen( last_alive, true );
return;
}
self thread spectator_toggle_3rd_person();
}
spectator_toggle_3rd_person()
{
self endon( "disconnect" );
self endon( "spawned_player" );
third_person = true;
self set_third_person( true );
}
set_third_person( value )
{
if( value )
{
self SetClientDvars( "cg_thirdPerson", "1","cg_fov", "40","cg_thirdPersonAngle", "354" );
self setDepthOfField( 0, 128, 512, 4000, 6, 1.8 );
}
else
{
self SetClientDvars( "cg_thirdPerson", "0","cg_fov", "65","cg_thirdPersonAngle", "0" );
self setDepthOfField( 0, 0, 512, 4000, 4, 0 );
}
}
spectators_respawn()
{
level endon( "between_round_over" );
if( !IsDefined( level.zombie_vars["spectators_respawn"] ) || !level.zombie_vars["spectators_respawn"] )
{
return;
}
if( !IsDefined( level.custom_spawnPlayer ) )
{
level.custom_spawnPlayer = ::spectator_respawn;
}
while( 1 )
{
players = get_players();
for( i = 0; i < players.size; i++ )
{
if( players.sessionstate == "spectator" )
{
players [[level.spawnPlayer]]();
if( isDefined( players.has_altmelee ) && players.has_altmelee )
{
players SetPerk( "specialty_altmelee" );
}
if (isDefined(level.script) && level.round_number > 6 && players.score < 1500)
{
players.old_score = players.score;players.score = 1500;
players maps\_zombiemode_score::set_player_score_hud();
}
}
}
wait( 1 );
}
}
spectator_respawn()
{
println( "***Respawn Spectator***" );
assert( IsDefined( self.spectator_respawn ) );
origin = self.spectator_respawn.origin;
angles = self.spectator_respawn.angles;
self setSpectatePermissions( false );
new_origin = undefined;
new_origin = check_for_valid_spawn_near_team( self );
if( IsDefined( new_origin ) )
{
self Spawn( new_origin, angles );
}
else
{
self Spawn( origin, angles );
}
if( IsSplitScreen() )
{
last_alive = undefined;
players = get_players();
for( i = 0; i < players.size; i++ )
{
if( !players.is_zombie )
{
last_alive = players;
}
}
share_screen( last_alive, false );
}
self.has_betties = undefined;
self.is_burning = undefined;
self.is_zombie = false;
self.ignoreme = false;
setClientSysState("lsm", "0", self);
self RevivePlayer();
self notify( "spawned_player" );
self maps\_zombiemode_score::player_reduce_points( "died" );
self thread player_zombie_breadcrumb();
return true;
}
check_for_valid_spawn_near_team( revivee )
{
players = get_players();
spawn_points = getstructarray("player_respawn_point", "targetname");
if( spawn_points.size == 0 )return undefined;
for( i = 0; i < players.size; i++ )
{
if( is_player_valid( players ) )
{
for( j = 0 ; j < spawn_points.size; j++ )
{
if( DistanceSquared( players.origin, spawn_points[j].origin ) < ( 1000 * 1000 ) && spawn_points[j].locked == false )
{
spawn_array = getstructarray( spawn_points[j].target, "targetname" );
for( k = 0; k < spawn_array.size; k++ )
{
if( spawn_array[k].script_int == (revivee.entity_num + 1) )
{
return spawn_array[k].origin;
}
}
return spawn_array[0].origin;
}
}
}
}
return undefined;
}
get_players_on_team(exclude)
{
teammates = [];
players = get_players();
for(i=0;i<players.size;i++)
{
if(players.spawn_side == self.spawn_side && !isDefined(players.revivetrigger) && players != exclude )
{
teammates[teammates.size] = players;
}
}
return teammates;
}
get_safe_breadcrumb_pos( player )
{
players = get_players();
valid_players = [];
min_dist = 150 * 150;
for( i = 0; i < players.size; i++ )
{
if( !is_player_valid( players ) )
{
continue;
}
valid_players[valid_players.size] = players;
}
for( i = 0; i < valid_players.size; i++ )
{
count = 0;
for( q = 1; q < player.zombie_breadcrumbs.size; q++ )
{
if( DistanceSquared( player.zombie_breadcrumbs[q], valid_players.origin ) < min_dist )
{
continue;
}
count++;
if( count == valid_players.size )
{
return player.zombie_breadcrumbs[q];
}
}
}
return undefined;
}
round_spawning()
{
level endon( "intermission" );
/#
level endon( "kill_round" );
#/
if( level.intermission )
{
return;
}
if( level.enemy_spawns.size < 1 )
{
ASSERTMSG( "No spawners with targetname zombie_spawner in map." );
return;
}
/#
if ( GetDVarInt( "zombie_cheat" ) == 2 || GetDVarInt( "zombie_cheat" ) >= 4 )
{
return;
}
#/
ai_calculate_health();
count = 0;
players = get_players();
for( i = 0; i < players.size; i++ )
{
players.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 *= level.round_number * 0.15;
}
player_num = get_players().size;
if( player_num == 1 )
{
max += int( ( 0.5 * level.zombie_vars["zombie_ai_per_player"] ) * multiplier );
}
else
{
max += int( ( ( player_num - 1 ) * level.zombie_vars["zombie_ai_per_player"] ) * multiplier );
}
if(level.round_number < 3 && level.script == "nazi_zombie_asylum")
{
if(get_players().size > 1)
{
max = get_players().size * 3 + level.round_number;
}
else
{
max = 6;
}
}
else if ( level.first_round )
{
max = int( max * 0.2 );
}
else if (level.round_number < 3)
{
max = int( max * 0.4 );
}
else if (level.round_number < 4)
{
max = int( max * 0.6 );
}
else if (level.round_number < 5)
{
max = int( max * 0.8 );
}
level.zombie_total = max;
mixed_spawns = 0;
old_spawn = undefined;
while( count < max )
{
spawn_point = level.enemy_spawns[RandomInt( level.enemy_spawns.size )];
if( !IsDefined( old_spawn ) )
{
old_spawn = spawn_point;
}
else if( Spawn_point == old_spawn )
{
spawn_point = level.enemy_spawns[RandomInt( level.enemy_spawns.size )];
}
old_spawn = spawn_point;
while( get_enemy_count() > 31 )
{
wait( 0.05 );
}
if ( IsDefined( level.mixed_rounds_enabled ) && level.mixed_rounds_enabled == 1 )
{
spawn_dog = false;
if ( level.round_number > 30 )
{
if ( RandomInt(100) < 3 )
{
spawn_dog = true;
}
}
else if ( level.round_number > 25 && mixed_spawns < 3 )
{
if ( RandomInt(100) < 2 )
{
spawn_dog = true;
}
}
else if ( level.round_number > 20 && mixed_spawns < 2 )
{
if ( RandomInt(100) < 2 )
{
spawn_dog = true;
}
}
else if ( level.round_number > 15 && mixed_spawns < 1 )
{
if ( RandomInt(100) < 1 )
{
spawn_dog = true;
}
}
if ( spawn_dog )
{
keys = GetArrayKeys( level.zones );
for ( i=0; i<keys.size; i++ )
{
if ( level.zones[ keys ].is_occupied )
{
akeys = GetArrayKeys( level.zones[ keys ].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\_zombiemode_dogs::special_dog_spawn( undefined, 1 );
level.zombie_total--;
wait_network_frame();
}
}
}
}
}
}
ai = spawn_zombie( spawn_point );
if( IsDefined( ai ) )
{
level.zombie_total--;
ai thread round_spawn_failsafe();
count++;
}
wait( level.zombie_vars["zombie_spawn_delay"] );
wait_network_frame();
}
if( level.round_number > 3 )
{
zombies = getaiarray( "axis" );
while( zombies.size > 0 )
{
if( zombies.size == 1 && zombies[0].has_legs == true )
{
var = randomintrange(1, 4);
zombies[0] set_run_anim( "sprint" + var );
zombies[0].run_combatanim = level.scr_anim[zombies[0].animname]["sprint" + var];
}
wait(0.5);
zombies = getaiarray("axis");
}
}
}
round_spawning_test()
{
while (true)
{
spawn_point = level.enemy_spawns[RandomInt( level.enemy_spawns.size )]; // grab a random spawner
ai = spawn_zombie( spawn_point );
ai waittill("death");
wait 5;
}
}
round_text( text )
{
if( level.first_round )
{
intro = true;
}
else
{
intro = false;
}
hud = create_simple_hud();
hud.horzAlign = "center";
hud.vertAlign = "middle";
hud.alignX = "center";
hud.alignY = "middle";
hud.y = -100;
hud.foreground = 1;
hud.fontscale = 16.0;
hud.alpha = 0;
hud.color = ( 1, 1, 1 );
hud SetText( text );
hud FadeOverTime( 1.5 );
hud.alpha = 1;
wait( 1.5 );
if( intro )
{
wait( 1 );
level notify( "intro_change_color" );
}
hud FadeOverTime( 3 );
hud.color = ( 0.423, 0.004, 0 );
wait( 3 );
if( intro )
{
level waittill( "intro_hud_done" );
}
hud FadeOverTime( 1.5 );
hud.alpha = 0;
wait( 1.5 );
hud destroy();
}
round_start()
{
level.zombie_health = level.zombie_vars["zombie_health_start"];
level.round_number = 1;
level.first_round = true;
players = get_players();
for (i = 0; i < players.size; i++)
{
players giveweapon( "stielhandgranate" );
players setweaponammoclip( "stielhandgranate", 0);
}
level.chalk_hud1 = create_chalk_hud();
level.chalk_hud2 = create_chalk_hud( 64 );
level.round_spawn_func = ::round_spawning;
/#
if (GetDVarInt("zombie_rise_test"))
{
level.round_spawn_func = ::round_spawning_test;
}
#/
level thread round_think();
}
create_chalk_hud( x )
{
if( !IsDefined( x ) )
{
x = 0;
}
hud = create_simple_hud();
hud.alignX = "left";
hud.alignY = "bottom";
hud.horzAlign = "left";
hud.vertAlign = "bottom";
hud.color = ( 0.423, 0.004, 0 );
hud.x = x;
hud.alpha = 0;
hud SetShader( "hud_chalk_1", 64, 64 );
return hud;
}
play_intro_VO()
{
wait(3);
players = getplayers();
for(i=0;i<players.size;i++)
{
index = maps\_zombiemode_weapons::get_player_index(players);
player_index = "plr_" + index + "_";
sound_to_play = "vox_name_int_0";
players maps\_zombiemode_spawner::do_player_playdialog(player_index, sound_to_play, 0.05);
wait(0.7);
}
}
play_door_dialog()
{
level endon( "electricity_on" );
self endon ("warning_dialog");
timer = 0;
while(1)
{
wait(0.05);
players = get_players();
for(i = 0; i < players.size; i++)
{
dist = distancesquared(players.origin, self.origin );
if(dist > 70*70){timer =0;continue;
}
while(dist < 70*70 && timer < 3)
{
wait(0.5);
timer++;
}
if(dist > 70*70 && timer >= 3)
{
self playsound("door_deny");
players thread do_player_vo("vox_start", 5);
wait(3);
self notify ("warning_dialog");
}
}
}
}
wait_until_first_player()
{
players = get_players();
if( !IsDefined( players[0] ) )
{
level waittill( "first_player_ready" );
}
}
chalk_one_up()
{
if(!IsDefined(level.doground_nomusic))
{
level.doground_nomusic = 0;
}
if( level.first_round )
{
intro = true;
}
else
{
intro = false;
}
round = undefined;
if( intro )
{
round = create_simple_hud();
round.alignX = "center";
round.alignY = "bottom";
round.horzAlign = "center";
round.vertAlign = "bottom";
round.fontscale = 16;
round.color = ( 1, 1, 1 );
round.x = 0;
round.y = -265;
round.alpha = 0;
round SetText( &"ZOMBIE_ROUND" );
round FadeOverTime( 1 );
round.alpha = 1;
wait( 1 );
round FadeOverTime( 3 );
round.color = ( 0.423, 0.004, 0 );
}
hud = undefined;
if( level.round_number < 6 || level.round_number > 10 )
{
hud = level.chalk_hud1;
hud.fontscale = 32;
}
else if( level.round_number < 11 )
{
hud = level.chalk_hud2;
}
if( intro )
{
hud.alpha = 0;
hud.horzAlign = "center";
hud.x = -5;
hud.y = -200;
}
hud FadeOverTime( 0.5 );
hud.alpha = 0;
if( level.round_number == 11 && IsDefined( level.chalk_hud2 ) )
{
level.chalk_hud2 FadeOverTime( 0.5 );
level.chalk_hud2.alpha = 0;
}
wait( 0.5 );
if(IsDefined(level.eggs) && level.eggs !=1 )
{
if(level.doground_nomusic ==0 )
{
setmusicstate("round_begin");
}
}
if( level.round_number == 11 && IsDefined( level.chalk_hud2 ) )
{
level.chalk_hud2 destroy_hud();
}
if( level.round_number > 10 )
{
hud SetValue( level.round_number );
}
hud FadeOverTime( 0.5 );
hud.alpha = 1;
if( intro )
{
wait( 3 );
if( IsDefined( round ) )
{
round FadeOverTime( 1 );
round.alpha = 0;
}
wait( 0.25 );
level notify( "intro_hud_done" );
hud MoveOverTime( 1.75 );
hud.horzAlign = "left";
hud.y = 0;
wait( 2 );
round destroy_hud();
}
if( level.round_number > 10 )
{
}
else if( level.round_number > 5 )
{
hud SetShader( "hud_chalk_" + ( level.round_number - 5 ), 64, 64 );
}
else if( level.round_number > 1 )
{
hud SetShader( "hud_chalk_" + level.round_number, 64, 64 );
}
}
chalk_round_hint()
{
huds = [];
huds[huds.size] = level.chalk_hud1;
if( level.round_number > 5 && level.round_number < 11 )
{
huds[huds.size] = level.chalk_hud2;
}
time = level.zombie_vars["zombie_between_round_time"];
for( i = 0; i < huds.size; i++ )
{
huds FadeOverTime( time * 0.25 );
huds.color = ( 1, 1, 1 );
}
if(IsDefined(level.eggs) && level.eggs !=1)
{
if(IsDefined(level.doground_nomusic && level.doground_nomusic == 0 ))
{
setmusicstate("round_end");
wait( time * 0.25 );
}
else if(IsDefined(level.doground_nomusic && level.doground_nomusic == 1 ))
{
play_sound_2D( "bright_sting" );
}
}
fade_time = 0.5;
steps = ( time * 0.5 ) / fade_time;
for( q = 0; q < steps; q++ )
{
for( i = 0; i < huds.size; i++ )
{
if( !IsDefined( huds ) )
{
continue;
}
huds FadeOverTime( fade_time );
huds.alpha = 0;
}
wait( fade_time );
for( i = 0; i < huds.size; i++ )
{
if( !IsDefined( huds ) )
{
continue;
}
huds FadeOverTime( fade_time );
huds.alpha = 1;
}
wait( fade_time );
}
for( i = 0; i < huds.size; i++ )
{
if( !IsDefined( huds ) )
{
continue;
}
huds FadeOverTime( time * 0.25 );
huds.color = ( 0.423, 0.004, 0 );
huds.alpha = 1;
}
}
round_think()
{
for( ;; )
{
maxreward = 50 * level.round_number;
if ( maxreward > 500 )maxreward = 500;
level.zombie_vars["rebuild_barrier_cap_per_round"] = maxreward;
level.round_timer = level.zombie_vars["zombie_round_time"];
add_later_round_spawners();
chalk_one_up();
maps\_zombiemode_powerups::powerup_round_start();
players = get_players();
array_thread( players, maps\_zombiemode_blockers_new::rebuild_barrier_reward_reset );
level thread award_grenades_for_survivors();
bbPrint( "zombie_rounds: round %d player_count %d", level.round_number, players.size );
level.round_start_time = getTime();
level thread [[level.round_spawn_func]]();
round_wait();
level.first_round = false;
level thread spectators_respawn();
level thread chalk_round_hint();
wait( level.zombie_vars["zombie_between_round_time"] );
timer = level.zombie_vars["zombie_spawn_delay"];
if( timer < 0.08 )
{
timer = 0.08;
}
level.zombie_vars["zombie_spawn_delay"] = timer * 0.95;
level.zombie_move_speed = level.round_number * 8;
level.round_number++;
level notify( "between_round_over" );
}
}
award_grenades_for_survivors()
{
players = get_players();
for (i = 0; i < players.size; i++)
{
if (!players.is_zombie)
{
if( !players HasWeapon( "stielhandgranate" ) )
{
players GiveWeapon( "stielhandgranate" );
players SetWeaponAmmoClip( "stielhandgranate", 0 );
}
if ( players GetFractionMaxAmmo( "stielhandgranate") < .25 )
{
players SetWeaponAmmoClip( "stielhandgranate", 2 );
}
else if (players GetFractionMaxAmmo( "stielhandgranate") < .5 )
{
players SetWeaponAmmoClip( "stielhandgranate", 3 );
}
else
{
players SetWeaponAmmoClip( "stielhandgranate", 4 );
}
}
}
}
ai_calculate_health()
{
if( level.round_number >= 10 )
{
level.zombie_health += Int( level.zombie_health * level.zombie_vars["zombie_health_increase_percent"] );
return;
}
if( level.round_number > 1 )
{
level.zombie_health = Int( level.zombie_health + level.zombie_vars["zombie_health_increase"] );
}
}
round_spawn_failsafe()
{
self endon("death");
prevorigin = self.origin;while(1)
{
if( !level.zombie_vars["zombie_use_failsafe"] )
{
return;
}
wait( 30 );
if ( isDefined(self.lastchunk_destroy_time) )
{
if ( (getTime() - self.lastchunk_destroy_time) < 5000 )continue;
}
if ( self.origin[2] < level.zombie_vars["below_world_check"] )
{
self dodamage( self.health + 100, (0,0,0) );
break;
}
if ( DistanceSquared( self.origin, prevorigin ) < 576 )
{
break;
}
prevorigin = self.origin;
}
}
round_wait()
{
/#
if (GetDVarInt("zombie_rise_test"))
{
level waittill("forever");
}
#/
/#
if ( GetDVarInt( "zombie_cheat" ) == 2 || GetDVarInt( "zombie_cheat" ) >= 4 )
{
level waittill("forever");
}
#/
wait( 1 );if( flag("dog_round" ) ){wait(7);while( level.dog_intermission ){wait(0.5);}}else{while( get_enemy_count() > 0 || level.zombie_total > 0 || level.intermission){wait( 0.5 );}}}
zombify_player(){}
playerzombie_player_damage(){}
playerzombie_downed_state(){}
playerzombie_downed_hud(){self endon( "death" );self endon( "disconnect" );text = NewClientHudElem( self );text.alignX = "center";text.alignY = "middle";text.horzAlign = "center";text.vertAlign = "bottom";text.foreground = true;text.font = "default";text.fontScale = 1.8;text.alpha = 0;text.color = ( 1.0, 1.0, 1.0 );text SetText( &"ZOMBIE_PLAYERZOMBIE_DOWNED" );text.y = -113;
if( IsSplitScreen() ){text.y = -137;}text FadeOverTime( 0.1 );text.alpha = 1;self waittill( "playerzombie_downed_state_done" );text FadeOverTime( 0.1 );text.alpha = 0;}
playerzombie_infinite_health(){self endon( "death" ); self endon( "disconnect" );bighealth = 100000;while( 1 ){if( self.health < bighealth ){self.health = bighealth; }wait( 0.1 ); }}
playerzombie_soundboard(){self endon( "death" );self endon( "disconnect" );self.playerzombie_soundboard_disable = false;self.buttonpressed_use = false;self.buttonpressed_attack = false;self.buttonpressed_ads = false; self.useSound_waitTime = 3 * 1000; self.useSound_nextTime = GetTime(); useSound = "playerzombie_usebutton_sound"; self.attackSound_waitTime = 3 * 1000; self.attackSound_nextTime = GetTime(); attackSound = "playerzombie_attackbutton_sound"; self.adsSound_waitTime = 3 * 1000; self.adsSound_nextTime = GetTime(); adsSound = "playerzombie_adsbutton_sound"; self.inputSound_nextTime = GetTime();
while( 1 ){if( self.playerzombie_soundboard_disable ){wait( 0.05 ); continue; }if( self UseButtonPressed() ){if( self can_do_input( "use" ) ){self thread playerzombie_play_sound( useSound ); self thread playerzombie_waitfor_buttonrelease( "use" );self.useSound_nextTime = GetTime() + self.useSound_waitTime;}}else if( self AttackButtonPressed() ){if( self can_do_input( "attack" ) ){self thread playerzombie_play_sound( attackSound ); self thread playerzombie_waitfor_buttonrelease( "attack" ); self.attackSound_nextTime = GetTime() + self.attackSound_waitTime;}}else if( self AdsButtonPressed() ){if( self can_do_input( "ads" ) ){self thread playerzombie_play_sound( adsSound ); self thread playerzombie_waitfor_buttonrelease( "ads" ); self.adsSound_nextTime = GetTime() + self.adsSound_waitTime; }}wait( 0.05 ); }}
can_do_input( inputType ){if( GetTime() < self.inputSound_nextTime ){return false;}canDo = false;switch( inputType ){
case "use":if( GetTime() >= self.useSound_nextTime && !self.buttonpressed_use ){canDo = true; }break;
case "attack":if( GetTime() >= self.attackSound_nextTime && !self.buttonpressed_attack ){canDo = true;}break;
case "ads":if( GetTime() >= self.useSound_nextTime && !self.buttonpressed_ads ){canDo = true;}break;
default:ASSERTMSG( "can_do_input(): didn't recognize inputType of " + inputType );break;}return canDo;}
playerzombie_play_sound( alias ){self play_sound_on_ent( alias );}
playerzombie_waitfor_buttonrelease( inputType ){if( inputType != "use" && inputType != "attack" && inputType != "ads" ){ASSERTMSG( "playerzombie_waitfor_buttonrelease(): inputType of " + inputType + " is not recognized." ); return;}notifyString = "waitfor_buttonrelease_" + inputType;self notify( notifyString );self endon( notifyString );if( inputType == "use" ){self.buttonpressed_use = true; while( self UseButtonPressed() ){wait( 0.05 ); }self.buttonpressed_use = false; }else if( inputType == "attack" ){self.buttonpressed_attack = true; while( self AttackButtonPressed() ){wait( 0.05 );}self.buttonpressed_attack = false; }else if( inputType == "ads" ){self.buttonpressed_ads = true;while( self AdsButtonPressed() ){wait( 0.05 ); }self.buttonpressed_ads = false; }}
remove_ignore_attacker(){self notify( "new_ignore_attacker" );self endon( "new_ignore_attacker" );self endon( "disconnect" );if( !isDefined( level.ignore_enemy_timer ) ){level.ignore_enemy_timer = 0.4;}wait( level.ignore_enemy_timer );self.ignoreAttacker = undefined;}
player_damage_override( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, modelIndex, psOffsetTime ){if( sMeansOfDeath == "MOD_FALLING" ){sMeansOfDeath = "MOD_EXPLOSIVE";}if( isDefined( eAttacker ) ){if( isDefined( self.ignoreAttacker ) && self.ignoreAttacker == eAttacker ) {return;}if( isDefined( eAttacker.is_zombie ) && eAttacker.is_zombie ){self.ignoreAttacker = eAttacker;self thread remove_ignore_attacker();}if( isDefined( eAttacker.damage_mult ) ){iDamage *= eAttacker.damage_mult;}eAttacker notify( "hit_player" );}finalDamage = iDamage;if( sMeansOfDeath == "MOD_PROJECTILE" || sMeansOfDeath == "MOD_PROJECTILE_SPLASH" || sMeansOfDeath == "MOD_GRENADE" || sMeansOfDeath == "MOD_GRENADE_SPLASH" ){if( self.health > 75 ){finalDamage = 75;self maps\_callbackglobal::finishPlayerDamageWrapper( eInflictor, eAttacker, finalDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, modelIndex, psOffsetTime ); return;}}
if( iDamage < self.health ){if ( IsDefined( eAttacker ) ){eAttacker.sound_damage_player = self;}self maps\_callbackglobal::finishPlayerDamageWrapper( eInflictor, eAttacker, finalDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, modelIndex, psOffsetTime ); return;}if( level.intermission ){level waittill( "forever" );}players = get_players();count = 0;for( i = 0; i < players.size; i++ ){if( players == self || players.is_zombie || players maps\_laststand::player_is_in_laststand() || players.sessionstate == "spectator" ){count++;}}if( count < players.size ){self maps\_callbackglobal::finishPlayerDamageWrapper( eInflictor, eAttacker, finalDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, modelIndex, psOffsetTime ); return;}self.intermission = true;self thread maps\_laststand:
layerLastStand( eInflictor, eAttacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, psOffsetTime );self player_fake_death();if( count == players.size ){level notify( "end_game" );}else{self maps\_callbackglobal::finishPlayerDamageWrapper( eInflictor, eAttacker, finalDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, modelIndex, psOffsetTime ); }}
end_game(){level waittill ( "end_game" );level.intermission = true;update_leaderboards();game_over = NewHudElem( self );game_over.alignX = "center";game_over.alignY = "middle";game_over.horzAlign = "center";game_over.vertAlign = "middle";game_over.y -= 10;game_over.foreground = true;game_over.fontScale = 3;game_over.alpha = 0;game_over.color = ( 1.0, 1.0, 1.0 );game_over SetText( &"ZOMBIE_GAME_OVER" );game_over FadeOverTime( 1 );game_over.alpha = 1;survived = NewHudElem( self );survived.alignX = "center";survived.alignY = "middle";survived.horzAlign = "center";survived.vertAlign = "middle";survived.y += 20;survived.foreground = true;survived.fontScale = 2;survived.alpha = 0;survived.color = ( 1.0, 1.0, 1.0 );
if( level.round_number < 2 ){survived SetText( &"ZOMBIE_SURVIVED_ROUND" );}else{survived SetText( &"ZOMBIE_SURVIVED_ROUNDS", level.round_number );}setmusicstate("end_of_game");setbusstate("default");survived FadeOverTime( 1 );survived.alpha = 1;wait( 1 );wait( 2 );intermission();wait( level.zombie_vars["zombie_intermission_time"] );level notify( "stop_intermission" );array_thread( get_players(), ::player_exit_level );bbPrint( "zombie_epilogs: rounds %d", level.round_number );wait( 1.5 );if( is_coop() ){ExitLevel( false );}else{MissionFailed();}wait( 666 );}
update_leaderboards(){if( level.systemLink || IsSplitScreen() ){return;}nazizombies_upload_highscore();nazizombies_set_new_zombie_stats();}
player_fake_death(){}
player_exit_level(){self AllowStand( true );self AllowCrouch( false );self AllowProne( false );if( IsDefined( self.game_over_bg ) ){self.game_over_bg.foreground = true;self.game_over_bg.sort = 100;self.game_over_bg FadeOverTime( 1 );self.game_over_bg.alpha = 1;}}
player_killed_override(){level waittill( "forever" );}
injured_walk(){self.ground_ref_ent = Spawn( "script_model", ( 0, 0, 0 ) );self.player_speed = 50;self AllowSprint( false );self AllowProne( false );self AllowCrouch( false );self AllowAds( false ); self AllowJump( false ); self PlayerSetGroundReferenceEnt( self.ground_ref_ent ); self thread limp();}
limp(){level endon( "disconnect" ); level endon( "death" ); stumble = 0;alt = 0;while( 1 ){velocity = self GetVelocity();player_speed = abs( velocity[0] ) + abs( velocity[1] );if( player_speed < 10 ){wait( 0.05 );continue;}speed_multiplier = player_speed / self.player_speed;p = RandomFloatRange( 3, 5 );if( RandomInt( 100 ) < 20 ){p *= 3;}r = RandomFloatRange( 3, 7 );y = RandomFloatRange( -8, -2 );stumble_angles = ( p, y, r );stumble_angles = vector_multiply( stumble_angles, speed_multiplier );stumble_time = RandomFloatRange( .35, .45 );recover_time = RandomFloatRange( .65, .8 ); stumble++; if( speed_multiplier > 1.3 ){stumble++;}self thread stumble( stumble_angles, stumble_time, recover_time );level waittill( "recovered" );}}
stumble( stumble_angles, stumble_time, recover_time, no_notify ){stumble_angles = self adjust_angles_to_player( stumble_angles );self.ground_ref_ent RotateTo( stumble_angles, stumble_time, ( stumble_time/4*3 ), ( stumble_time/4 ) );self.ground_ref_ent waittill( "rotatedone" ); base_angles = ( RandomFloat( 4 ) - 4, RandomFloat( 5 ), 0 );base_angles = self adjust_angles_to_player( base_angles );self.ground_ref_ent RotateTo( base_angles, recover_time, 0, ( recover_time / 2 ) );self.ground_ref_ent waittill( "rotatedone" );if( !IsDefined( no_notify ) ){level notify( "recovered" );}}
adjust_angles_to_player( stumble_angles ){pa = stumble_angles[0]; ra = stumble_angles[2];rv = AnglesToRight( self.angles );fv = AnglesToForward( self.angles );rva = ( rv[0], 0, rv[1]*-1 );fva = ( fv[0], 0, fv[1]*-1 );angles = vector_multiply( rva, pa );angles = angles + vector_multiply( fva, ra );return angles +( 0, stumble_angles[1], 0 );}
coop_player_spawn_placement(){structs = getstructarray( "initial_spawn_points", "targetname" ); flag_wait( "all_players_connected" ); players = get_players(); for( i = 0; i < players.size; i++ ){players setorigin( structs.origin );players setplayerangles( structs.angles );players.spectator_respawn = structs;}}
player_zombie_breadcrumb(){self endon( "disconnect" );self endon( "spawned_spectator" );level endon( "intermission" );self.zombie_breadcrumbs = [];self.zombie_breadcrumb_distance = 24 * 24;self.zombie_breadcrumb_area_num = 3;self.zombie_breadcrumb_area_distance = 16;self store_crumb( self.origin ); last_crumb = self.origin;self thread debug_breadcrumbs();while( 1 ){wait_time = 0.1;
/#
if( self isnotarget() ){wait( wait_time ); continue;}
#/
store_crumb = true; airborne = false;crumb = self.origin;if ( !self IsOnGround() ){airborne = true;store_crumb = false;wait_time = 0.05;}if( !airborne && DistanceSquared( crumb, last_crumb ) < self.zombie_breadcrumb_distance ){store_crumb = false;}if ( airborne && self IsOnGround() ){store_crumb = true;airborne = false;}if( (isDefined(level.script) && level.script == "nazi_zombie_sumpf" && (isDefined(self.on_zipline) && self.on_zipline == true)) ){airborne = false;store_crumb = false;}if( store_crumb ){debug_print( "Player is storing breadcrumb " + crumb );last_crumb = crumb;self store_crumb( crumb );}wait( wait_time ); }}
store_crumb( origin ){offsets = [];height_offset = 32;index = 0;for( j = 1; j <= self.zombie_breadcrumb_area_num; j++ ){offset = ( j * self.zombie_breadcrumb_area_distance );offsets[0] = ( origin[0] - offset, origin[1], origin[2] );offsets[1] = ( origin[0] + offset, origin[1], origin[2] );offsets[2] = ( origin[0], origin[1] - offset, origin[2] );offsets[3] = ( origin[0], origin[1] + offset, origin[2] );offsets[4] = ( origin[0] - offset, origin[1], origin[2] + height_offset );offsets[5] = ( origin[0] + offset, origin[1], origin[2] + height_offset );offsets[6] = ( origin[0], origin[1] - offset, origin[2] + height_offset );offsets[7] = ( origin[0], origin[1] + offset, origin[2] + height_offset );for ( i = 0; i < offsets.size; i++ ){self.zombie_breadcrumbs[index] = offsets;index++;}}}
nazizombies_upload_highscore(){playersRank = 1;if( level.players_playing == 1 )playersRank = 4;else if( level.players_playing == 2 )playersRank = 3;else if( level.players_playing == 3 )playersRank = 2;map_name = GetDvar( "mapname" );if ( !isZombieLeaderboardAvailable( map_name, "waves" ) || !isZombieLeaderboardAvailable( map_name, "points" ) )return;players = get_players();for( i = 0; i < players.size; i++ ){pre_highest_wave = players playerZombieStatGet( map_name, "highestwave" );pre_time_in_wave = players playerZombieStatGet( map_name, "timeinwave" );new_highest_wave = level.round_number + "" + playersRank;new_highest_wave = int( new_highest_wave );if( new_highest_wave >= pre_highest_wave ){if( players.zombification_time == 0 ){players.zombification_time = getTime();}player_survival_time = players.zombification_time - level.round_start_time;player_survival_time = int( player_survival_time/1000 );if( new_highest_wave > pre_highest_wave || player_survival_time > pre_time_in_wave ){rankNumber = makeRankNumber( level.round_number, playersRank, player_survival_time );leaderboard_number = getZombieLeaderboardNumber( map_name, "waves" );players UploadScore( leaderboard_number, int(rankNumber), level.round_number, player_survival_time, level.players_playing );players playerZombieStatSet( map_name, "highestwave", new_highest_wave );players playerZombieStatSet( map_name, "timeinwave", player_survival_time );}}pre_total_points = players playerZombieStatGet( map_name, "totalpoints" );if( players.score_total > pre_total_points ){leaderboard_number = getZombieLeaderboardNumber( map_name, "points" );players UploadScore( leaderboard_number, players.score_total, players.kills, level.players_playing );players playerZombieStatSet( map_name, "totalpoints", players.score_total );}}}
isZombieLeaderboardAvailable( map, type ){if ( !isDefined( level.zombieLeaderboardNumber[map] ) )return 0;if ( !isDefined( level.zombieLeaderboardNumber[map][type] ) )return 0;return 1;}
getZombieLeaderboardNumber( map, type ){if ( !isDefined( level.zombieLeaderboardNumber[map][type] ) )assertMsg( "Unknown leaderboard number for map " + map + "and type " + type );return level.zombieLeaderboardNumber[map][type];}
getZombieStatVariable( map, variable ){if ( !isDefined( level.zombieLeaderboardStatVariable[map][variable] ) )assertMsg( "Unknown stat variable " + variable + " for map " + map );return level.zombieLeaderboardStatVariable[map][variable];}
playerZombieStatGet( map, variable ){stat_variable = getZombieStatVariable( map, variable );result = self zombieStatGet( stat_variable );return result;}
playerZombieStatSet( map, variable, value ){stat_variable = getZombieStatVariable( map, variable );self zombieStatSet( stat_variable, value );}
nazizombies_set_new_zombie_stats(){players = get_players();for( i = 0; i < players.size; i++ ){total_kills = players zombieStatGet( "zombie_kills" ) + players.stats["kills"];total_points = players zombieStatGet( "zombie_points" ) + players.stats["score"];total_rounds = players zombieStatGet( "zombie_rounds" ) + (level.round_number - 1); // rounds survived
total_downs = players zombieStatGet( "zombie_downs" ) + players.stats["downs"];total_revives = players zombieStatGet( "zombie_revives" ) + players.stats["revives"];total_perks = players zombieStatGet( "zombie_perks_consumed" ) + players.stats["perks"];total_headshots = players zombieStatGet( "zombie_heashots" ) + players.stats["headshots"];total_zombie_gibs = players zombieStatGet( "zombie_gibs" ) + players.stats["zombie_gibs"];players zombieStatSet( "zombie_kills", total_kills );players zombieStatSet( "zombie_points", total_points );players zombieStatSet( "zombie_rounds", total_rounds );players zombieStatSet( "zombie_downs", total_downs );players zombieStatSet( "zombie_revives", total_revives );players zombieStatSet( "zombie_perks_consumed", total_perks );players zombieStatSet( "zombie_heashots", total_headshots );players zombieStatSet( "zombie_gibs", total_zombie_gibs );}}
makeRankNumber( wave, players, time ){if( time > 86400 ) time = 86400; padding = "";if ( 10 > time )padding += "0000";else if( 100 > time )padding += "000";else if( 1000 > time )padding += "00";else if( 10000 > time )padding += "0";rank = wave + "" + players + padding + time;return rank;}
zombieStatGet( dataName ){if( level.systemLink || true == IsSplitScreen() ){return; }return self getStat( int(tableLookup( "mp/playerStatsTable.csv", 1, dataName, 0 )) );}
zombieStatSet( dataName, value ){if( level.systemLink || true == IsSplitScreen() ){return; }self setStat( int(tableLookup( "mp/playerStatsTable.csv", 1, dataName, 0 )), value ); }
intermission(){level.intermission = true;level notify( "intermission" );players = get_players();for( i = 0; i < players.size; i++ ){setclientsysstate( "levelNotify", "zi", players ); players SetClientDvars( "cg_thirdPerson", "0","cg_fov", "65" );players.health = 100; players thread [[level.custom_intermission]]();}wait( 0.25 );players = get_players();for( i = 0; i < players.size; i++ ){setClientSysState( "lsm", "1", players );}visionset = "zombie";if( IsDefined( level.zombie_vars["intermission_visionset"] ) ){visionset = level.zombie_vars["intermission_visionset"];}level thread maps\_utility::set_all_players_visionset( visionset, 2 );level thread zombie_game_over_death();}
zombie_game_over_death(){zombies = GetAiArray( "axis" );for( i = 0; i < zombies.size; i++ ){if( !IsAlive( zombies ) ){continue;}zombies SetGoalPos( zombies.origin );}for( i = 0; i < zombies.size; i++ ){if( !IsAlive( zombies ) ){continue;}wait( 0.5 + RandomFloat( 2 ) );zombies maps\_zombiemode_spawner::zombie_head_gib();zombies DoDamage( zombies.health + 666, zombies.origin );}}
player_intermission(){self closeMenu();self closeInGameMenu();level endon( "stop_intermission" );self endon("disconnect");self endon("death");self.score = self.score_total;self.sessionstate = "intermission";self.spectatorclient = -1;self.killcamentity = -1; self.archivetime = 0; self.psoffsettime = 0; self.friendlydamage = undefined;points = getstructarray( "intermission", "targetname" );if( !IsDefined( points ) || points.size == 0 ){points = getentarray( "info_intermission", "classname" );if( points.size < 1 ){println( "NO info_intermission POINTS IN MAP" );return;}}self.game_over_bg = NewClientHudelem( self );self.game_over_bg.horzAlign = "fullscreen";self.game_over_bg.vertAlign = "fullscreen";self.game_over_bg SetShader( "black", 640, 480 );self.game_over_bg.alpha = 1;org = undefined;
while( 1 ){points = array_randomize( points );for( i = 0; i < points.size; i++ ){point = points;if( !IsDefined( org ) ){self Spawn( point.origin, point.angles );}if( IsDefined( points.target ) ){if( !IsDefined( org ) ){org = Spawn( "script_origin", self.origin + ( 0, 0, -60 ) );}self LinkTo( org, "", ( 0, 0, -60 ), ( 0, 0, 0 ) );self SetPlayerAngles( points.angles );org.origin = points.origin;speed = 20;if( IsDefined( points.speed ) ){speed = points.speed;}target_point = getstruct( points.target, "targetname" );dist = Distance( points.origin, target_point.origin );time = dist / speed;q_time = time * 0.25;if( q_time > 1 ){q_time = 1;}self.game_over_bg FadeOverTime( q_time );self.game_over_bg.alpha = 0;org MoveTo( target_point.origin, time, q_time, q_time );org RotateTo( target_point.angles, time, q_time, q_time );wait( time - q_time );self.game_over_bg FadeOverTime( q_time );self.game_over_bg.alpha = 1;wait( q_time );}else{self.game_over_bg FadeOverTime( 1 );self.game_over_bg.alpha = 0;wait( 5 );self.game_over_bg FadeOverTime( 1 );self.game_over_bg.alpha = 1;wait( 1 );}}}}
prevent_near_origin(){while (1){players = get_players();for (i = 0; i < players.size; i++){for (q = 0; q < players.size; q++){if (players != players[q]){if (check_to_kill_near_origin(players, players[q])){p1_org = players.origin;p2_org = players[q].origin;wait 5;if (check_to_kill_near_origin(players, players[q])){if ( (distance(players.origin, p1_org) < 30) && distance(players[q].origin, p2_org) < 30){setsaveddvar("player_deathInvulnerableTime", 0);players DoDamage( players.health + 1000, players.origin, undefined, undefined, "riflebullet" );setsaveddvar("player_deathInvulnerableTime", level.startInvulnerableTime);}}}}}}wait 0.2;}}
check_to_kill_near_origin(player1, player2){if (!isdefined(player1) || !isdefined(player2)){return false;}if (distance(player1.origin, player2.origin) > 12){return false;}if ( player1 maps\_laststand::player_is_in_laststand() || player2 maps\_laststand::player_is_in_laststand() ){return false;}if (!isalive(player1) || !isalive(player2)){return false;}return true;}
crawler_round_tracker(){level.crawler_round_count = 1;level.next_crawler_round = 4;sav_func = level.round_spawn_func;while ( 1 ){level waittill ( "between_round_over" );
/#
if( GetDVarInt( "force_crawlers" ) > 0 ){next_crawler_round = level.round_number; }
#/
if ( level.round_number == level.next_crawler_round ){sav_func = level.round_spawn_func;crawler_round_start();level.round_spawn_func = ::round_spawning;if ( IsDefined( level.next_dog_round ) ){level.next_crawler_round = level.next_dog_round + randomintrange( 2, 3 );}else{level.next_crawler_round = randomintrange( 4, 6 );}
/#
get_players()[0] iprintln( "Next crawler round: " + level.next_crawler_round );
#/
}else if ( flag( "crawler_round" ) ){crawler_round_stop();if ( IsDefined( level.next_dog_round ) && level.next_dog_round == level.round_number ){level.round_spawn_func = sav_func;}level.crawler_round_count += 1;}}}
crawler_round_start(){flag_set( "crawler_round" );if(!IsDefined (level.crawlerround_nomusic)){level.crawlerround_nomusic = 0;}level.crawlerround_nomusic = 1;level notify( "crawler_round_starting" );clientnotify( "crawler_start" );}
crawler_round_stop(){flag_clear( "crawler_round" );if(!IsDefined (level.crawlerround_nomusic)){level.crawlerround_nomusic = 0;}level.crawlerround_nomusic = 0;level notify( "crawler_round_ending" );clientnotify( "crawler_stop" );}