UGX-Mods

Call of Duty 5: World at War => Help Desk => Modding => Topic started by: GerardS0406 on July 21, 2018, 09:25:19 pm

Title: [Help] Custom AI Animations
Post by: GerardS0406 on July 21, 2018, 09:25:19 pm
I'm trying to create a custom friendly ai (I have ported over the models and anims already into waw as well as the character and aitype) but I'm stuck as to how to get the ai's anims to work and how to get the ai to move. For the moment, I just want the ai to follow a set path. If anyone can help, that would be great!
Title: Re: [Help] Custom AI Animations
Post by: AllMoDs on July 27, 2018, 08:02:59 pm
do you have maya to make the anims
in zombiemode.gsc look for this
[noae]
Code Snippet
Plaintext
init_standard_zombie_anims
[/noae]

if you look in this setup you will see how to add the anims
default zom anims start with    "level.scr_anim["zombie"]"
anims  i added    "level.scr_anim["zomboss1"]"

[noae]
Code Snippet
Plaintext
init_standard_zombie_anims()
{
// deaths
level.scr_anim["zombie"]["death1"] = %ai_zombie_death_v1;
level.scr_anim["zombie"]["death2"] = %ai_zombie_death_v2;
level.scr_anim["zombie"]["death3"] = %ai_zombie_crawl_death_v1;
level.scr_anim["zombie"]["death4"] = %ai_zombie_crawl_death_v2;


level.scr_anim["zomboss1"]["death1"] = %hamerwalk;
level.scr_anim["zomboss1"]["death2"] = %hamerwalk;
level.scr_anim["zomboss1"]["death3"] = %hamerwalk;
level.scr_anim["zomboss1"]["death4"] = %hamerwalk;

level.scr_anim["genu"]["death1"] = %hamerwalk;
level.scr_anim["genu"]["death2"] = %hamerwalk;
level.scr_anim["genu"]["death3"] = %hamerwalk;
level.scr_anim["genu"]["death4"] = %hamerwalk;
// run cycles
level.scr_anim["zomboss1"]["walk1"] = %hamerwalk;
level.scr_anim["zomboss1"]["walk2"] = %hamerwalk;
level.scr_anim["zomboss1"]["walk3"] = %hamerwalk;
level.scr_anim["zomboss1"]["walk4"] = %hamerwalk;

level.scr_anim["genu"]["walk1"] = %hamerwalk;
level.scr_anim["genu"]["walk2"] = %hamerwalk;
level.scr_anim["genu"]["walk3"] = %hamerwalk;
level.scr_anim["genu"]["walk4"] = %hamerwalk;

level.scr_anim["zomboss1"]["run1"] = %hamerwalk;
level.scr_anim["zomboss1"]["run2"] = %hamerwalk;
level.scr_anim["zomboss1"]["run3"] = %hamerwalk;
level.scr_anim["zomboss1"]["run4"] = %hamerwalk;
level.scr_anim["zomboss1"]["run5"] = %hamerwalk;
level.scr_anim["zomboss1"]["run6"] = %hamerwalk;

level.scr_anim["genu"]["run1"] = %hamerwalk;
level.scr_anim["genu"]["run2"] = %hamerwalk;
level.scr_anim["genu"]["run3"] = %hamerwalk;
level.scr_anim["genu"]["run4"] = %hamerwalk;
level.scr_anim["genu"]["run5"] = %hamerwalk;
level.scr_anim["genu"]["run6"] = %hamerwalk;

level.scr_anim["genu"]["sprint1"] = %hamerwalk;
level.scr_anim["genu"]["sprint2"] = %hamerwalk;
level.scr_anim["genu"]["sprint3"] = %hamerwalk;
level.scr_anim["genu"]["sprint4"] = %hamerwalk;



level.scr_anim["zombie"]["walk1"] = %ai_zombie_walk_v1;
level.scr_anim["zombie"]["walk2"] = %ai_zombie_walk_v2;
level.scr_anim["zombie"]["walk3"] = %ai_zombie_walk_v3;
level.scr_anim["zombie"]["walk4"] = %ai_zombie_walk_v4;

level.scr_anim["zombie"]["run1"] = %ai_zombie_walk_fast_v1;
level.scr_anim["zombie"]["run2"] = %ai_zombie_walk_fast_v2;
level.scr_anim["zombie"]["run3"] = %ai_zombie_walk_fast_v3;
level.scr_anim["zombie"]["run4"] = %ai_zombie_run_v2;
level.scr_anim["zombie"]["run5"] = %ai_zombie_run_v4;
level.scr_anim["zombie"]["run6"] = %ai_zombie_run_v3;
//level.scr_anim["zombie"]["run4"] = %ai_zombie_run_v1;
//level.scr_anim["zombie"]["run6"] = %ai_zombie_run_v4;

level.scr_anim["zombie"]["sprint1"] = %ai_zombie_sprint_v1;
level.scr_anim["zombie"]["sprint2"] = %ai_zombie_sprint_v2;
level.scr_anim["zombie"]["sprint3"] = %ai_zombie_sprint_v1;
level.scr_anim["zombie"]["sprint4"] = %ai_zombie_sprint_v2;
//level.scr_anim["zombie"]["sprint3"] = %ai_zombie_sprint_v3;
//level.scr_anim["zombie"]["sprint3"] = %ai_zombie_sprint_v4;
//level.scr_anim["zombie"]["sprint4"] = %ai_zombie_sprint_v5;

// run cycles in prone
level.scr_anim["zombie"]["crawl1"] = %ai_zombie_crawl;
level.scr_anim["zombie"]["crawl2"] = %ai_zombie_crawl_v1;
level.scr_anim["zombie"]["crawl3"] = %ai_zombie_crawl_v2;
level.scr_anim["zombie"]["crawl4"] = %ai_zombie_crawl_v3;
level.scr_anim["zombie"]["crawl5"] = %ai_zombie_crawl_v4;
level.scr_anim["zombie"]["crawl6"] = %ai_zombie_crawl_v5;
level.scr_anim["zombie"]["crawl_hand_1"] = %ai_zombie_walk_on_hands_a;
level.scr_anim["zombie"]["crawl_hand_2"] = %ai_zombie_walk_on_hands_b;




level.scr_anim["zombie"]["crawl_sprint1"] = %ai_zombie_crawl_sprint;
level.scr_anim["zombie"]["crawl_sprint2"] = %ai_zombie_crawl_sprint_1;
level.scr_anim["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["genu"] = [];
level._zombie_walk_melee["genu"] = [];
level._zombie_run_melee["genu"] = [];

level._zombie_melee["zomboss1"] = [];
level._zombie_walk_melee["zomboss1"] = [];
level._zombie_run_melee["zomboss1"] = [];

level._zombie_melee["zombie"] = [];
level._zombie_walk_melee["zombie"] = [];
level._zombie_run_melee["zombie"] = [];

level._zombie_melee["genu"][0] = %hamerwalk;
level._zombie_melee["genu"][1] = %hamerwalk;
level._zombie_melee["genu"][2] = %hamerwalk;
level._zombie_melee["genu"][3] = %hamerwalk;
level._zombie_melee["genu"][4] = %hamerwalk;
level._zombie_melee["genu"][5] = %hamerwalk;
level._zombie_melee["genu"][6] = %hamerwalk;

level._zombie_melee["zomboss1"][0] = %hamerwalk;
level._zombie_melee["zomboss1"][1] = %hamerwalk;
level._zombie_melee["zomboss1"][2] = %hamerwalk;
level._zombie_melee["zomboss1"][3] = %hamerwalk;
level._zombie_melee["zomboss1"][4] = %hamerwalk;
level._zombie_melee["zomboss1"][5] = %hamerwalk;
level._zombie_melee["zomboss1"][6] = %hamerwalk;

level._zombie_melee["zombie"][0] = %ai_zombie_attack_forward_v1;
level._zombie_melee["zombie"][1] = %ai_zombie_attack_forward_v2;
level._zombie_melee["zombie"][2] = %ai_zombie_attack_v1;
level._zombie_melee["zombie"][3] = %ai_zombie_attack_v2;
level._zombie_melee["zombie"][4] = %ai_zombie_attack_v1;
level._zombie_melee["zombie"][5] = %ai_zombie_attack_v4;
level._zombie_melee["zombie"][6] = %ai_zombie_attack_v6;
level._zombie_run_melee["zombie"][0] = %ai_zombie_run_attack_v1;
level._zombie_run_melee["zombie"][1] = %ai_zombie_run_attack_v2;
level._zombie_run_melee["zombie"][2] = %ai_zombie_run_attack_v3;
level.scr_anim["zombie"]["walk5"] = %ai_zombie_walk_v6;
level.scr_anim["zombie"]["walk6"] = %ai_zombie_walk_v7;
level.scr_anim["zombie"]["walk7"] = %ai_zombie_walk_v8;
level.scr_anim["zombie"]["walk8"] = %ai_zombie_walk_v9;

if( isDefined( level.zombie_anim_override ) )
{
[[ level.zombie_anim_override ]]();
}

level._zombie_walk_melee["genu"][0] = %hamerwalk;
level._zombie_walk_melee["genu"][1] = %hamerwalk;
level._zombie_walk_melee["genu"][2] = %hamerwalk;
level._zombie_walk_melee["genu"][3] = %hamerwalk;


level._zombie_walk_melee["zomboss1"][0] = %hamerwalk;
level._zombie_walk_melee["zomboss1"][1] = %hamerwalk;
level._zombie_walk_melee["zomboss1"][2] = %hamerwalk;
level._zombie_walk_melee["zomboss1"][3] = %hamerwalk;


level._zombie_walk_melee["zombie"][0] = %ai_zombie_walk_attack_v1;
level._zombie_walk_melee["zombie"][1] = %ai_zombie_walk_attack_v2;
level._zombie_walk_melee["zombie"][2] = %ai_zombie_walk_attack_v3;
level._zombie_walk_melee["zombie"][3] = %ai_zombie_walk_attack_v4;

// melee in crawl
if( !isDefined( level._zombie_melee_crawl ) )
{
level._zombie_melee_crawl = [];
}
level._zombie_melee_crawl["zombie"] = [];
level._zombie_melee_crawl["zombie"][0] = %ai_zombie_attack_crawl;
level._zombie_melee_crawl["zombie"][1] = %ai_zombie_attack_crawl_lunge;

if( !isDefined( level._zombie_stumpy_melee ) )
{
level._zombie_stumpy_melee = [];
}
level._zombie_stumpy_melee["zombie"] = [];
level._zombie_stumpy_melee["zombie"][0] = %ai_zombie_walk_on_hands_shot_a;
level._zombie_stumpy_melee["zombie"][1] = %ai_zombie_walk_on_hands_shot_b;
//level._zombie_melee_crawl["zombie"][2] = %ai_zombie_crawl_attack_A;

// tesla deaths
if( !isDefined( level._zombie_tesla_death ) )
{
level._zombie_tesla_death = [];
}
level._zombie_tesla_death["zombie"] = [];
level._zombie_tesla_death["zombie"][0] = %ai_zombie_tesla_death_a;
level._zombie_tesla_death["zombie"][1] = %ai_zombie_tesla_death_b;
level._zombie_tesla_death["zombie"][2] = %ai_zombie_tesla_death_c;
level._zombie_tesla_death["zombie"][3] = %ai_zombie_tesla_death_d;
level._zombie_tesla_death["zombie"][4] = %ai_zombie_tesla_death_e;

if( !isDefined( level._zombie_tesla_crawl_death ) )
{
level._zombie_tesla_crawl_death = [];
}
level._zombie_tesla_crawl_death["zombie"] = [];
level._zombie_tesla_crawl_death["zombie"][0] = %ai_zombie_tesla_crawl_death_a;
level._zombie_tesla_crawl_death["zombie"][1] = %ai_zombie_tesla_crawl_death_b;

// deaths
if( !isDefined( level._zombie_deaths ) )
{
level._zombie_deaths = [];
}
level._zombie_deaths["zombie"] = [];
level._zombie_deaths["zombie"][0] = %ch_dazed_a_death;
level._zombie_deaths["zombie"][1] = %ch_dazed_b_death;
level._zombie_deaths["zombie"][2] = %ch_dazed_c_death;
level._zombie_deaths["zombie"][3] = %ch_dazed_d_death;

level._zombie_deaths["genu"] = [];
level._zombie_deaths["genu"][0] = %hamerwalk;
level._zombie_deaths["genu"][1] = %hamerwalk;
level._zombie_deaths["genu"][2] = %hamerwalk;
level._zombie_deaths["genu"][3] = %hamerwalk;

level._zombie_deaths["zomboss1"] = [];
level._zombie_deaths["zomboss1"][0] = %hamerwalk;
level._zombie_deaths["zomboss1"][1] = %hamerwalk;
level._zombie_deaths["zomboss1"][2] = %hamerwalk;
level._zombie_deaths["zomboss1"][3] = %hamerwalk;

/*
ground crawl
*/

if( !isDefined( level._zombie_rise_anims ) )
{
level._zombie_rise_anims = [];
}

// set up the arrays
level._zombie_rise_anims["zombie"] = [];

//level._zombie_rise_anims["zombie"][1]["walk"][0] = %ai_zombie_traverse_ground_v1_crawl;
level._zombie_rise_anims["zombie"][1]["walk"][0] = %ai_zombie_traverse_ground_v1_walk;

//level._zombie_rise_anims["zombie"][1]["run"][0] = %ai_zombie_traverse_ground_v1_crawlfast;
level._zombie_rise_anims["zombie"][1]["run"][0] = %ai_zombie_traverse_ground_v1_run;

level._zombie_rise_anims["zombie"][1]["sprint"][0] = %ai_zombie_traverse_ground_climbout_fast;

//level._zombie_rise_anims["zombie"][2]["walk"][0] = %ai_zombie_traverse_ground_v2_walk; //!broken
level._zombie_rise_anims["zombie"][2]["walk"][0] = %ai_zombie_traverse_ground_v2_walk_altA;
//level._zombie_rise_anims["zombie"][2]["walk"][2] = %ai_zombie_traverse_ground_v2_walk_altB;//!broken

// ground crawl death
if( !isDefined( level._zombie_rise_death_anims ) )
{
level._zombie_rise_death_anims = [];
}

level._zombie_rise_death_anims["zombie"] = [];

level._zombie_rise_death_anims["zombie"][1]["in"][0] = %ai_zombie_traverse_ground_v1_deathinside;
level._zombie_rise_death_anims["zombie"][1]["in"][1] = %ai_zombie_traverse_ground_v1_deathinside_alt;

level._zombie_rise_death_anims["zombie"][1]["out"][0] = %ai_zombie_traverse_ground_v1_deathoutside;
level._zombie_rise_death_anims["zombie"][1]["out"][1] = %ai_zombie_traverse_ground_v1_deathoutside_alt;

level._zombie_rise_death_anims["zombie"][2]["in"][0] = %ai_zombie_traverse_ground_v2_death_low;
level._zombie_rise_death_anims["zombie"][2]["in"][1] = %ai_zombie_traverse_ground_v2_death_low_alt;

level._zombie_rise_death_anims["zombie"][2]["out"][0] = %ai_zombie_traverse_ground_v2_death_high;
level._zombie_rise_death_anims["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["zombie"] = [];
level._zombie_board_taunt["zombie"] = [];

//level._zombie_taunt["zombie"][0] = %ai_zombie_taunts_1;
//level._zombie_taunt["zombie"][1] = %ai_zombie_taunts_4;
//level._zombie_taunt["zombie"][2] = %ai_zombie_taunts_5b;
//level._zombie_taunt["zombie"][3] = %ai_zombie_taunts_5c;
//level._zombie_taunt["zombie"][4] = %ai_zombie_taunts_5d;
//level._zombie_taunt["zombie"][5] = %ai_zombie_taunts_5e;
//level._zombie_taunt["zombie"][6] = %ai_zombie_taunts_5f;
//level._zombie_taunt["zombie"][7] = %ai_zombie_taunts_7;
//level._zombie_taunt["zombie"][8] = %ai_zombie_taunts_9;
//level._zombie_taunt["zombie"][8] = %ai_zombie_taunts_11;
//level._zombie_taunt["zombie"][8] = %ai_zombie_taunts_12;

level._zombie_board_taunt["zombie"][0] = %ai_zombie_taunts_4;
level._zombie_board_taunt["zombie"][1] = %ai_zombie_taunts_7;
level._zombie_board_taunt["zombie"][2] = %ai_zombie_taunts_9;
level._zombie_board_taunt["zombie"][3] = %ai_zombie_taunts_5b;
level._zombie_board_taunt["zombie"][4] = %ai_zombie_taunts_5c;
level._zombie_board_taunt["zombie"][5] = %ai_zombie_taunts_5d;
level._zombie_board_taunt["zombie"][6] = %ai_zombie_taunts_5e;
level._zombie_board_taunt["zombie"][7] = %ai_zombie_taunts_5f;
}

[/noae]

dont use this set up your own your default zom anims might not be the same

and you need to call this on your zombie with custom anims

[noae]
Code Snippet
Plaintext
self maps\_zombiemode_spawner:zombie_spawn_init("zomboss1");
self maps\_zombiemode_spawner_boss::zombie_think();
self maps\_zombiemode_spawner_boss::zombie_setup_attack_properties();
self maps\_zombiemode_spawner_boss::find_flesh();
[/noae]

where it says "zomboss1" is the anima set that will play on that zombie after spawn

and when you make the walk and run anime in maya if that is how your doing it on frame 0 save frame
go to the last frame in the anime move modal forward on x axes save frame this will make the zombie walk or run how fast they move depends on how fare forward you moved the modal on the x axis  need more help pm me