hi everyone
I want to bring nova crawlers to my map and spawn inside the playable area.my problem is thay dont spawn.please help me..
this is my script
[noae]
#include maps\_utility; #include common_scripts\utility; #include maps\_zombiemode_utility; #include animscripts\Utility; init() { thread quads_enabled(); init_quad_zombie_anims(); level.quad_spawners = GetEntArray( "quad_zombie_spawner", "script_noteworthy" ); array_thread( level.quad_spawners, ::add_spawn_function, maps\_zombiemode_ai_quad::quad_prespawn ); } quads_enabled() { level.quads = false; // flag_wait("electricity_on"); level.quads = true; } #using_animtree( "generic_human" ); quad_prespawn() { if( level.quads == false ) { // iprintln( "level quads false or count higher than 10" ); self DetachAll(); character\char_ger_pnzrgren_helm_zombies_gear1::main(); self.animname = "zombie"; self maps\_zombiemode_spawner::zombie_spawn_init( true ); return; } else self.animname = "quad_zombie"; self.quad = true; self.custom_idle_setup = maps\_zombiemode_ai_quad::quad_zombie_idle_setup; self.a.idleAnimOverrideArray = []; self.a.idleAnimOverrideArray["stand"] = []; self.a.idleAnimOverrideArray["stand"] = []; self.a.idleAnimOverrideArray["stand"][0][0] = %quad_idle; self.a.idleAnimOverrideWeights["stand"][0][0] = 10; self.no_eye_glow = true; self maps\_zombiemode_spawner::zombie_spawn_init( true ); self.maxhealth = int( self.maxhealth * 0.75 ); self.health = self.maxhealth; self.meleeDamage = 45; self playsound( "quad_spawn1" ); self.death_explo_radius_zomb = 96; self.death_explo_radius_plr = 96; self.death_explo_damage_zomb = 0.75; self.death_gas_radius = 125; self.death_gas_time = 7; self.deathanimscript = ::quad_post_death; //self.actor_killed_override = ::quad_killed_override; //self set_default_attack_properties(); self.thundergun_disintegrate_func = ::quad_thundergun_disintegrate; self.thundergun_knockdown_func = ::quad_thundergun_knockdown; self.can_explode = false; if ( isdefined( level.quad_explode ) && level.quad_explode == true ) { self.can_explode = true; } self.exploded = false; self thread quad_trail(); self thread quad_vox(); if ( isdefined( level.quad_traverse_death_fx ) ) { self thread [[ level.quad_traverse_death_fx ]](); } } quad_zombie_idle_setup() { self.a.array["turn_left_45"] = %exposed_tracking_turn45L; self.a.array["turn_left_90"] = %exposed_tracking_turn90L; self.a.array["turn_left_135"] = %exposed_tracking_turn135L; self.a.array["turn_left_180"] = %exposed_tracking_turn180L; self.a.array["turn_right_45"] = %exposed_tracking_turn45R; self.a.array["turn_right_90"] = %exposed_tracking_turn90R; self.a.array["turn_right_135"] = %exposed_tracking_turn135R; self.a.array["turn_right_180"] = %exposed_tracking_turn180L; self.a.array["exposed_idle"] = array( %quad_idle, %quad_idle ); self.a.array["straight_level"] = %quad_idle; self.a.array["stand_2_crouch"] = %ai_zombie_shot_leg_right_2_crawl; } init_quad_zombie_anims() { // deaths level.scr_anim["quad_zombie"]["death1"] = %ai_zombie_quad_death; level.scr_anim["quad_zombie"]["death2"] = %ai_zombie_quad_death_2; level.scr_anim["quad_zombie"]["death3"] = %ai_zombie_quad_death_3; level.scr_anim["quad_zombie"]["death4"] = %ai_zombie_quad_death_4; // run cycles level.scr_anim["quad_zombie"]["walk1"] = %ai_zombie_quad_crawl; level.scr_anim["quad_zombie"]["walk2"] = %ai_zombie_quad_crawl; level.scr_anim["quad_zombie"]["walk3"] = %ai_zombie_quad_crawl; level.scr_anim["quad_zombie"]["walk4"] = %ai_zombie_quad_crawl_2; level.scr_anim["quad_zombie"]["walk5"] = %ai_zombie_quad_crawl_2; level.scr_anim["quad_zombie"]["walk6"] = %ai_zombie_quad_crawl_3; level.scr_anim["quad_zombie"]["walk7"] = %ai_zombie_quad_crawl_3; level.scr_anim["quad_zombie"]["walk8"] = %ai_zombie_quad_crawl_3; level.scr_anim["quad_zombie"]["run1"] = %ai_zombie_quad_crawl_run; level.scr_anim["quad_zombie"]["run2"] = %ai_zombie_quad_crawl_run_2; level.scr_anim["quad_zombie"]["run3"] = %ai_zombie_quad_crawl_run_3; level.scr_anim["quad_zombie"]["run4"] = %ai_zombie_quad_crawl_run_4; level.scr_anim["quad_zombie"]["run5"] = %ai_zombie_quad_crawl_run_5; level.scr_anim["quad_zombie"]["run6"] = %ai_zombie_quad_crawl_run; level.scr_anim["quad_zombie"]["sprint1"] = %ai_zombie_quad_crawl_sprint; level.scr_anim["quad_zombie"]["sprint2"] = %ai_zombie_quad_crawl_sprint_2; level.scr_anim["quad_zombie"]["sprint3"] = %ai_zombie_quad_crawl_sprint_3; level.scr_anim["quad_zombie"]["sprint4"] = %ai_zombie_quad_crawl_sprint; level.scr_anim["quad_zombie"]["sprint5"] = %ai_zombie_quad_crawl_sprint_3; level.scr_anim["quad_zombie"]["sprint6"] = %ai_zombie_quad_crawl_sprint_2; // run cycles in prone level.scr_anim["quad_zombie"]["crawl1"] = %ai_zombie_crawl; level.scr_anim["quad_zombie"]["crawl2"] = %ai_zombie_crawl_v1; level.scr_anim["quad_zombie"]["crawl3"] = %ai_zombie_crawl_v2; level.scr_anim["quad_zombie"]["crawl4"] = %ai_zombie_crawl_v3; level.scr_anim["quad_zombie"]["crawl5"] = %ai_zombie_crawl_v4; level.scr_anim["quad_zombie"]["crawl6"] = %ai_zombie_crawl_v5; level.scr_anim["quad_zombie"]["crawl_hand_1"] = %ai_zombie_walk_on_hands_a; level.scr_anim["quad_zombie"]["crawl_hand_2"] = %ai_zombie_walk_on_hands_b; level.scr_anim["quad_zombie"]["crawl_sprint1"] = %ai_zombie_crawl_sprint; level.scr_anim["quad_zombie"]["crawl_sprint2"] = %ai_zombie_crawl_sprint_1; level.scr_anim["quad_zombie"]["crawl_sprint3"] = %ai_zombie_crawl_sprint_2; if( !isDefined( level._zombie_melee ) ) { level._zombie_melee = []; } if( !isDefined( level._zombie_walk_melee ) ) { level._zombie_walk_melee = []; } if( !isDefined( level._zombie_run_melee ) ) { level._zombie_run_melee = []; } level._zombie_melee["quad_zombie"] = []; level._zombie_walk_melee["quad_zombie"] = []; level._zombie_run_melee["quad_zombie"] = []; level._zombie_melee["quad_zombie"][0] = %ai_zombie_quad_attack; level._zombie_melee["quad_zombie"][1] = %ai_zombie_quad_attack_2; level._zombie_melee["quad_zombie"][2] = %ai_zombie_quad_attack_3; level._zombie_melee["quad_zombie"][3] = %ai_zombie_quad_attack_4; level._zombie_melee["quad_zombie"][4] = %ai_zombie_quad_attack_5; level._zombie_melee["quad_zombie"][5] = %ai_zombie_quad_attack_6; level._zombie_melee["quad_zombie"][6] = %ai_zombie_quad_attack_double; level._zombie_melee["quad_zombie"][7] = %ai_zombie_quad_attack_double_2; level._zombie_melee["quad_zombie"][8] = %ai_zombie_quad_attack_double_3; level._zombie_melee["quad_zombie"][9] = %ai_zombie_quad_attack_double_4; level._zombie_melee["quad_zombie"][10] = %ai_zombie_quad_attack_double_5; level._zombie_melee["quad_zombie"][11] = %ai_zombie_quad_attack_double_6; /* level._zombie_run_melee["quad_zombie"][0] = %ai_zombie_quad_attack; level._zombie_run_melee["quad_zombie"][1] = %ai_zombie_quad_attack; level._zombie_run_melee["quad_zombie"][2] = %ai_zombie_quad_attack; level._zombie_walk_melee["quad_zombie"][0] = %ai_zombie_quad_attack; level._zombie_walk_melee["quad_zombie"][1] = %ai_zombie_quad_attack; level._zombie_walk_melee["quad_zombie"][2] = %ai_zombie_quad_attack; level._zombie_walk_melee["quad_zombie"][3] = %ai_zombie_quad_attack; */ if( isDefined( level.quad_zombie_anim_override ) ) { [[ level.quad_zombie_anim_override ]](); } // melee in crawl if( !isDefined( level._zombie_melee_crawl ) ) { level._zombie_melee_crawl = []; } level._zombie_melee_crawl["quad_zombie"] = []; level._zombie_melee_crawl["quad_zombie"][0] = %ai_zombie_attack_crawl; level._zombie_melee_crawl["quad_zombie"][1] = %ai_zombie_attack_crawl_lunge; if( !isDefined( level._zombie_stumpy_melee ) ) { level._zombie_stumpy_melee = []; } level._zombie_stumpy_melee["quad_zombie"] = []; level._zombie_stumpy_melee["quad_zombie"][0] = %ai_zombie_walk_on_hands_shot_a; level._zombie_stumpy_melee["quad_zombie"][1] = %ai_zombie_walk_on_hands_shot_b; // tesla deaths if( !isDefined( level._zombie_tesla_death ) ) { level._zombie_tesla_death = []; } level._zombie_tesla_death["quad_zombie"] = []; level._zombie_tesla_death["quad_zombie"][0] = %ai_zombie_quad_death_tesla; level._zombie_tesla_death["quad_zombie"][1] = %ai_zombie_quad_death_tesla_2; level._zombie_tesla_death["quad_zombie"][2] = %ai_zombie_quad_death_tesla_3; level._zombie_tesla_death["quad_zombie"][3] = %ai_zombie_quad_death_tesla_4; if( !isDefined( level._zombie_tesla_crawl_death ) ) { level._zombie_tesla_crawl_death = []; } level._zombie_tesla_crawl_death["quad_zombie"] = []; level._zombie_tesla_crawl_death["quad_zombie"][0] = %ai_zombie_tesla_crawl_death_a; level._zombie_tesla_crawl_death["quad_zombie"][1] = %ai_zombie_tesla_crawl_death_b; // deaths if( !isDefined( level._zombie_deaths ) ) { level._zombie_deaths = []; } level._zombie_deaths["quad_zombie"] = []; level._zombie_deaths["quad_zombie"][0] = %ai_zombie_quad_death; level._zombie_deaths["quad_zombie"][1] = %ai_zombie_quad_death_2; level._zombie_deaths["quad_zombie"][2] = %ai_zombie_quad_death_3; level._zombie_deaths["quad_zombie"][3] = %ai_zombie_quad_death_4; /* ground crawl */ if( !isDefined( level._zombie_rise_anims ) ) { level._zombie_rise_anims = []; } // set up the arrays level._zombie_rise_anims["quad_zombie"] = []; level._zombie_rise_anims["quad_zombie"][1]["walk"][0] = %ai_zombie_traverse_ground_v1_crawl; level._zombie_rise_anims["quad_zombie"][1]["run"][0] = %ai_zombie_traverse_ground_v1_crawlfast; level._zombie_rise_anims["quad_zombie"][1]["sprint"][0] = %ai_zombie_traverse_ground_v1_crawlfast; level._zombie_rise_anims["quad_zombie"][2]["walk"][0] = %ai_zombie_traverse_ground_v1_crawl; // ground crawl death if( !isDefined( level._zombie_rise_death_anims ) ) { level._zombie_rise_death_anims = []; } level._zombie_rise_death_anims["quad_zombie"] = []; level._zombie_rise_death_anims["quad_zombie"][1]["in"][0] = %ai_zombie_traverse_ground_v1_deathinside; level._zombie_rise_death_anims["quad_zombie"][1]["in"][1] = %ai_zombie_traverse_ground_v1_deathinside_alt; level._zombie_rise_death_anims["quad_zombie"][1]["out"][0] = %ai_zombie_traverse_ground_v1_deathoutside; level._zombie_rise_death_anims["quad_zombie"][1]["out"][1] = %ai_zombie_traverse_ground_v1_deathoutside_alt; level._zombie_rise_death_anims["quad_zombie"][2]["in"][0] = %ai_zombie_traverse_ground_v2_death_low; level._zombie_rise_death_anims["quad_zombie"][2]["in"][1] = %ai_zombie_traverse_ground_v2_death_low_alt; level._zombie_rise_death_anims["quad_zombie"][2]["out"][0] = %ai_zombie_traverse_ground_v2_death_high; level._zombie_rise_death_anims["quad_zombie"][2]["out"][1] = %ai_zombie_traverse_ground_v2_death_high_alt; //taunts if( !isDefined( level._zombie_run_taunt ) ) { level._zombie_run_taunt = []; } if( !isDefined( level._zombie_board_taunt ) ) { level._zombie_board_taunt = []; } level._zombie_run_taunt["quad_zombie"] = []; level._zombie_board_taunt["quad_zombie"] = []; level._zombie_board_taunt["quad_zombie"][0] = %ai_zombie_quad_taunt; level._zombie_board_taunt["quad_zombie"][1] = %ai_zombie_quad_taunt_2; level._zombie_board_taunt["quad_zombie"][2] = %ai_zombie_quad_taunt_3; level._zombie_board_taunt["quad_zombie"][3] = %ai_zombie_quad_taunt_4; level._zombie_board_taunt["quad_zombie"][4] = %ai_zombie_quad_taunt_5; level._zombie_board_taunt["quad_zombie"][5] = %ai_zombie_quad_taunt_6; level._effect[ "quad_explo_gas" ] = LoadFX( "maps/zombie/fx_zombie_quad_gas_nova6" ); level._effect[ "quad_trail" ] = Loadfx( "maps/zombie/fx_zombie_quad_trail" ); } quad_thundergun_disintegrate( player ) { self endon( "death" ); self DoDamage( self.health + 666, player.origin, player ); } quad_thundergun_knockdown( player, gib ) { self endon( "death" ); damage = int( self.maxhealth * 0.5 ); self DoDamage( damage, player.origin, player ); } quad_trail() { self endon( "death" ); //self waittill( "quad_end_traverse_anim" ); self.fx_quad_trail = Spawn( "script_model", self GetTagOrigin( "tag_origin" ) ); self.fx_quad_trail.angles = self GetTagAngles( "tag_origin" ); self.fx_quad_trail SetModel( "tag_origin" ); self.fx_quad_trail LinkTo( self, "tag_origin" ); maps\_zombiemode_net::network_safe_play_fx_on_tag( "quad_fx", 2, level._effect[ "quad_trail" ], self.fx_quad_trail, "tag_origin" ); } quad_post_death() { if( self.can_explode == true ) { if ( isdefined( self.fx_quad_trail ) ) { self.fx_quad_trail unlink(); self.fx_quad_trail delete(); } mod = self.damagemod; if ( mod == "MOD_PISTOL_BULLET" || mod == "MOD_RIFLE_BULLET" ) { self thread quad_gas_explo_death(); } } } quad_gas_explo_death() { death_vars = []; death_vars["explo_radius_zomb"] = self.death_explo_radius_zomb; death_vars["explo_radius_plr"] = self.death_explo_radius_plr; death_vars["explo_damage_zomb"] = self.death_explo_damage_zomb; death_vars["gas_radius"] = self.death_gas_radius; death_vars["gas_time"] = self.death_gas_time; self thread quad_death_explo( self.origin, death_vars ); level thread quad_gas_area_of_effect( self.origin, death_vars ); self Delete(); } quad_death_explo( origin, death_vars ) { playsoundatposition( "quad_explo1", origin ); PlayFx( level._effect["dog_gib"], origin ); players = get_players(); zombies = GetAIArray( "axis" ); for(i = 0; i < zombies.size; i++) { if( Distance( origin, zombies[i].origin ) <= death_vars["explo_radius_zomb"] ) { if( zombies[i].animname != "quad_zombie" ) { if( zombies[i].animname != "boss_zombie" ) { zombies[i] DoDamage( zombies[i].maxhealth * death_vars["explo_damage_zomb"], origin ); } } } } for(i = 0; i < players.size; i++) { if( Distance( origin, players[i].origin ) <= death_vars["explo_radius_plr"] ) { players[i] ShellShock( "explosion", 2.5 ); RadiusDamage( players[i].origin, death_vars["explo_radius_zomb"], 15, 10, self, "MOD_EXPLOSIVE" ); } } self.exploded = true; //self RadiusDamage( origin, death_vars["explo_radius_zomb"], level.zombie_health, level.zombie_health, self, "MOD_EXPLOSIVE" ); } quad_gas_area_of_effect( origin, death_vars ) { effectArea = spawn( "trigger_radius", origin, 0, death_vars["gas_radius"], 100 ); PlayFX( level._effect[ "quad_explo_gas" ], origin ); gas_time = 0; while( gas_time <= death_vars["gas_time"] ) { players = get_players(); for(i = 0; i < players.size; i++) { if( players[i] IsTouching( effectArea )) { players[i] setblur( 4, .1 ); } else { players[i] setblur( 0, .5 ); } } wait(1); gas_time = gas_time + 1; } players = get_players(); for ( i = 0; i < players.size; i++ ) { players[i] setblur( 0, .5 ); } effectArea Delete(); } quad_killed_override( eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, psOffsetTime ) { if ( sMeansOfDeath == "MOD_PISTOL_BULLET" || sMeansOfDeath == "MOD_RIFLE_BULLET" ) { self.can_explode = true; } else { self.can_explode = false; if ( isdefined( self.fx_quad_trail ) ) { self.fx_quad_trail unlink(); self.fx_quad_trail delete(); } } } quad_vox() { self endon( "death" ); wait( 5 ); quad_wait = 5; while(1) { players = getplayers(); for(i=0;i<players.size;i++) { if(DistanceSquared(self.origin, players[i].origin) > 1200 * 1200) { self playsound( "quad_amb" ); quad_wait = 8; } else if(DistanceSquared(self.origin, players[i].origin) > 200 * 200) { self playsound( "quad_vox" ); quad_wait = 6; } else if(DistanceSquared(self.origin, players[i].origin) < 150 * 150) { self playsound( "quad_close" ); quad_wait = 3; } } wait randomfloatrange( 1, quad_wait ); } } quad_close() { self endon( "death" ); while(1) { players = getplayers(); for(i=0;i<players.size;i++) { if ( is_player_valid( players[i], true ) ) { if(DistanceSquared(self.origin, players[i].origin) < 150 * 150) { self playsound( "quad_close" ); wait randomfloatrange( 1, 2 ); } } } wait_network_frame(); } }
[/noae]
And this is my spawn