Posts
1
Respect
Forum Rank
Fresh Corpse
Primary Group
Member
Login Issues
Forgot password?Activate Issues
Account activation email not received? Wrong account activation email used?Other Problems?
Contact Support - Help Center Get help on the UGX Discord. Join it now!
#using scripts\codescripts\struct;
#using scripts\shared\array_shared;
#using scripts\shared\callbacks_shared;
#using scripts\shared\clientfield_shared;
#using scripts\shared\compass;
#using scripts\shared\exploder_shared;
#using scripts\shared\flag_shared;
#using scripts\shared\laststand_shared;
#using scripts\shared\math_shared;
#using scripts\shared\scene_shared;
#using scripts\shared\util_shared;
#insert scripts\shared\shared.gsh;
#insert scripts\shared\version.gsh;
#insert scripts\zm\_zm_utility.gsh;
#using scripts\zm\_load;
#using scripts\zm\_zm;
#using scripts\zm\_zm_audio;
#using scripts\zm\_zm_powerups;
#using scripts\zm\_zm_utility;
#using scripts\zm\_zm_weapons;
#using scripts\zm\_zm_zonemgr;
#using scripts\shared\ai\zombie_utility;
//Perks
#using scripts\zm\_zm_pack_a_punch;
#using scripts\zm\_zm_pack_a_punch_util;
#using scripts\zm\_zm_perk_additionalprimaryweapon;
#using scripts\zm\_zm_perk_doubletap2;
#using scripts\zm\_zm_perk_deadshot;
#using scripts\zm\_zm_perk_juggernaut;
#using scripts\zm\_zm_perk_quick_revive;
#using scripts\zm\_zm_perk_sleight_of_hand;
#using scripts\zm\_zm_perk_staminup;
#using scripts\zm\_zm_perk_electric_cherry;
#using scripts\zm\_zm_perk_widows_wine;
#using scripts\zm\_zm_perk_vulture_aid;
#using scripts\zm\_zm_perk_whoswho;
#using scripts\zm\_zm_perk_tombstone;
#using scripts\zm\_zm_perk_phdflopper;
#using scripts\zm\_zm_perk_random;
//Traps
#using scripts\zm\_zm_trap_electric;
#using scripts\zm\_zm_trap_fire;
#using scripts\zm\_hb21_sym_zm_trap_turret;
#using scripts\zm\_hb21_zm_trap_flogger;
#using scripts\zm\_hb21_zm_trap_centrifuge;
#using scripts\zm\_hb21_zm_trap_flinger;
#using scripts\zm\_hb21_sym_zm_trap_chain;
#using scripts\zm\_hb21_sym_zm_trap_fan;
// WAW WEAPON STUFF
#using scripts\zm\_zm_t4_weapons;
// BO2 WEAPON STUFF
#using scripts\zm\_zm_t6_weapons;
// BO3 WEAPON STUFF
#using scripts\zm\_zm_t7_weapons;
// NAPALM ZOMBIE
#using scripts\zm\_hb21_zm_ai_napalm;
// SONIC Zombie
#using scripts\zm\_hb21_zm_ai_sonic;
//Powerups
#using scripts\zm\_zm_powerup_double_points;
#using scripts\zm\_zm_powerup_carpenter;
#using scripts\zm\_zm_powerup_fire_sale;
#using scripts\zm\_zm_powerup_free_perk;
#using scripts\zm\_zm_powerup_full_ammo;
#using scripts\zm\_zm_powerup_insta_kill;
#using scripts\zm\_zm_powerup_nuke;
//#using scripts\zm\_zm_powerup_weapon_minigun;
//Traps
#using scripts\zm\_zm_trap_electric;
#using scripts\zm\zm_usermap;
#using scripts\_ZK\zk_buyable_elevator_v2;
#using scripts\_redspace\rs_o_jump_pad;
//*****************************************************************************
// MAIN
//*****************************************************************************
function main()
{
level shootable_trigs();
level thread set_perk_limit(10); // This sets the perk limit to 10
zm_usermap::main();
level thread zk_buyable_elevator_v2::init();
player_teleporter_init();
level._zombie_custom_add_weapons =&custom_add_weapons;
//Setup the levels Zombie Zone Volumes
level.zones = [];
level.zone_manager_init_func =&usermap_test_zone_init;
init_zones[0] = "start_zone";
level thread zm_zonemgr::manage_zones( init_zones );
level.pathdist_type = PATHDIST_ORIGINAL;
thread teleport_zombies_init();
}
function usermap_test_zone_init()
{
zm_zonemgr::add_adjacent_zone( "start_zone", "box_zone", "enter_box_zone" );
zm_zonemgr::add_adjacent_zone( "start_zone", "power_zone", "enter_power_zone" );
zm_zonemgr::add_adjacent_zone( "power_zone", "phd_zone", "enter_phd_zone" );
zm_zonemgr::add_adjacent_zone( "power_zone", "roof_zone", "enter_roof_zone" );
zm_zonemgr::add_adjacent_zone( "start_zone", "pap_zone", "enter_pap_zone" );
zm_zonemgr::add_adjacent_zone( "pap_zone", "tunnel_zone", "enter_tunnel_zone" );
zm_zonemgr::add_adjacent_zone( "tunnel_zone", "jugg_zone", "enter_jugg_zone" );
zm_zonemgr::add_adjacent_zone( "tunnel_zone", "staff_zone", "enter_staff_zone" );
zm_zonemgr::add_adjacent_zone( "box_zone", "jugg_zone", "enter_jugg_zone" );
zm_zonemgr::add_adjacent_zone( "jugg_zone", "dablock_zone", "enter_dablock_zone" );
zm_zonemgr::add_adjacent_zone( "dablock_zone", "dablock_2", "enter_dablock_2" );
level flag::init( "always_on" );
level flag::set( "always_on" );
}
function custom_add_weapons()
{
zm_weapons::load_weapon_spec_from_table("gamedata/weapons/zm/zm_levelcommon_weapons.csv", 1);
}
function set_perk_limit(num)
{
wait( 30 );
level.perk_purchase_limit = num;
}
function teleport_zombies_init()
{
teleport_trig = GetEntArray( "teleport_zombies", "targetname" );
for (i = 0; i < teleport_trig.size; i++)
{
teleport_trig[i] thread teleport_zombies();
}
}
function teleport_zombies()
{
teleport_destination = GetEnt( self.target, "targetname" );
while(1)
{
zombs = getaispeciesarray("axis","all");
for(k=0;k<zombs.size;k++)
{
if( zombs[k] IsTouching( self ) )
{
zombs[k] ForceTeleport( teleport_destination.origin );
}
}
wait(0.01);
}
}
function player_teleporter_init()
{
player_tp = GetEntArray( "teleport_player", "targetname" );
for( i = 0; i < player_tp.size; i++ )
{
player_tp[i] thread player_teleport();
}
}
function player_teleport()
{
destination = GetEnt( self.target, "targetname" );
while(1)
{
self waittill( "trigger", player );
player SetOrigin( destination.origin );
player SetPlayerAngles( destination.angles );
}
}
function shootable_trigs()
{
level.shootable_doors_Required = 3;
level.shootable_door_count = 0;
level thread shootable_door1();
level thread shootable_door2();
level thread shootable_door3();
trigs = GetEntArray( "shootable_door", "targetname" );
level.shootable_door_goal = trigs.size;
foreach( trig in trigs )
trig thread wait_for_shoot();
}
function shootable_door1()
{
trig1 = GetEnt("ee_trig1", "targetname");
obj1 = GetEnt("ee_obj1", "targetname");
trig1 SetHintString("");
trig1 SetCursorHint("HINT_NOICON");
while(1)
{
trig1 waittill("trigger", player);
level.shootable_door_count++;
thread wait_for_shoot();
break;
}
trig1 Delete();
obj1 Delete();
}
function shootable_door2()
{
trig2 = GetEnt("ee_trig2", "targetname");
obj2 = GetEnt("ee_obj2", "targetname");
trig2 SetHintString("");
trig2 SetCursorHint("HINT_NOICON");
while(1)
{
trig2 waittill("trigger", player);
level.shootable_door_count++;
thread wait_for_shoot();
break;
}
trig2 Delete();
obj2 Delete();
}
function shootable_door3()
{
trig3 = GetEnt("ee_trig3", "targetname");
obj3 = GetEnt("ee_obj3", "targetname");
trig3 SetHintString("");
trig3 SetCursorHint("HINT_NOICON");
while(1)
{
trig3 waittill("trigger", player);
level.shootable_door_count++;
thread wait_for_shoot();
break;
}
trig3 Delete();
obj3 Delete();
}
function wait_for_shoot()
{
self waittill( "trigger", player );
player PlayLocalSound( "zmb_cha_ching" ); // Change this to any sound alias you want
{
while(1)
{
self waittill(level.shootablesCollected >= level.shootable_doors_Required);
if(level.shootable_door_count == level.shootable_doors_Required)
{
self open_door();
}
break;
}
}
}
function open_door()
{
doors = GetEntArray( "shootable_door_reward", "targetname" );
foreach( door in doors )
door PlaySound( "zmb_cha_ching" );
wait(0.05);
iprintlnbold("The Dungeon and Roof are acessible!");
wait(0.05);
foreach( door in doors )
door delete();
flag = doors[0].script_flag;
level flag::set( flag );
}