UGX-Mods

Call of Duty 5: World at War => Help Desk => Scripting => Topic started by: nikfar1 on July 04, 2018, 09:00:18 pm

Title: nova crowler
Post by: nikfar1 on July 04, 2018, 09:00:18 pm
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]
Code Snippet
Plaintext
#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

(https://www.ugx-mods.com/forum/proxy.php?request=http%3A%2F%2Fi65.tinypic.com%2Fev6h6x.jpg&hash=bdddbb1a813907fb34273346a5d3aafb067dca8b)
Title: Re: nova crowler
Post by: codmoddd1234 on July 04, 2018, 09:23:10 pm
Try the gsc from here.
https://www.mediafire.com/download/u41jcwjj5ytyni0 (https://www.mediafire.com/download/u41jcwjj5ytyni0)
Title: Re: nova crowler
Post by: nikfar1 on July 05, 2018, 04:18:06 am
Thanks codmoddd1234 for replying
I used this script before but it dosent work.
Do i need to add script struct like riser spawner and how to link this spawner to zones?
Title: Re: nova crowler
Post by: codmoddd1234 on July 05, 2018, 06:44:51 am
In your picture your missing the kvp
targetname "ZONE NAME"
count 9999
script_forcespawn 1
//
The only difference between zombie and crawler kvp is the "script_noteworthy"
Regular zombie can be crawlers by changing the "script_noteworthy" only.
Title: Re: nova crowler
Post by: nikfar1 on July 06, 2018, 05:30:53 pm
thanks again codmoddd1234 for helping me
I did it what you said and everything works fine. ;)   +1