




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!![]() | Benevolent Soul who has our eternal gratitude and exclusive access to betas and the donator section of the forum. |
![]() | Has shown excellence and experience in the area of custom scripting in the UGX-Mods community. |
![]() Oil Rig Beta Access |
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;
// run cycles
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["zombie"] = [];
level._zombie_walk_melee["zombie"] = [];
level._zombie_run_melee["zombie"] = [];
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 ]]();
}
......
.....
.....
.....
dude, maybe instead of making the text all big and bold just use normal complete sentences? Maybe you're not actually from the usa and use some translator, or maybe i dont understand it because i'm not from the usa, or i'm to old or something but it's 50% guessing for me what you actually ask here..
Anyways.. If you get an error with your custom models about missing bones you do just need to add them. Bones like tag_eye and a few others simply need to be on an ai or the game will crash. If you get another error, let us know what the error actually is. If you need 2 not a get error, then i dont know man.. ???
Animations for zombies are setup in _zombiemode:basicly if you give them a full set of anims and have their animname setup right, the rest should work by itself. Zombies dont use shooting anims though, so you need to script them in yourself, or look at how normal AI does it. Code SnippetPlaintextinit_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;
// run cycles
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["zombie"] = [];
level._zombie_walk_melee["zombie"] = [];
level._zombie_run_melee["zombie"] = [];
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 ]]();
}
......
.....
.....
.....
( if you setup stuff like aitype etc correctly you can make the ai shoot his weapon by adding a notetrack named 'fire' in the animation on the frame it needs to shoot )
![]() | Benevolent Soul who has our eternal gratitude and exclusive access to betas and the donator section of the forum. |
![]() | Has shown excellence and experience in the area of custom scripting in the UGX-Mods community. |
![]() Oil Rig Beta Access |
set_zombie_run_cycle()
{
self set_run_speed();
death_anims = level._zombie_deaths[self.animname];
self.deathanim = random(death_anims);
//if(level.round_number < 3)
//{
// self.zombie_move_speed = "walk";
//}
switch(self.zombie_move_speed)
{
case "walk":
var = randomintrange(1, 8);
self set_run_anim( "walk" + var );
self.run_combatanim = level.scr_anim[self.animname]["walk" + var];
break;
case "run":
var = randomintrange(1, 6);
self set_run_anim( "run" + var );
self.run_combatanim = level.scr_anim[self.animname]["run" + var];
break;
case "sprint":
var = randomintrange(1, 4);
self set_run_anim( "sprint" + var );
self.run_combatanim = level.scr_anim[self.animname]["sprint" + var];
break;
}
}
pick_zombie_melee_anim( zombie_guy )
{
melee_anim = undefined;
if ( zombie_guy.has_legs )
{
switch(zombie_guy.zombie_move_speed)
{
case "walk":
anims = array_combine(level._zombie_melee[zombie_guy.animname],level._zombie_walk_melee[zombie_guy.animname]);
melee_anim = random(anims);
break;
case "run":
case "sprint":
anims = array_combine(level._zombie_melee[zombie_guy.animname],level._zombie_run_melee[zombie_guy.animname]);
melee_anim = random(anims);
break;
}
}
else if(zombie_guy.a.gib_ref == "no_legs")
{
// if zombie have no legs whatsoever.
melee_anim = random(level._zombie_stumpy_melee[zombie_guy.animname]);
}
else
{
melee_anim = random(level._zombie_melee_crawl[zombie_guy.animname]);
}
return melee_anim;
}
It all depends on how you setup your ai, and how you spawn them and what scripts you run on them.
If your ai is using _zombiemode_spawner, there it's using the .animname to set the run-anims: Code SnippetPlaintextset_zombie_run_cycle()
{
self set_run_speed();
death_anims = level._zombie_deaths[self.animname];
self.deathanim = random(death_anims);
//if(level.round_number < 3)
//{
// self.zombie_move_speed = "walk";
//}
switch(self.zombie_move_speed)
{
case "walk":
var = randomintrange(1, 8);
self set_run_anim( "walk" + var );
self.run_combatanim = level.scr_anim[self.animname]["walk" + var];
break;
case "run":
var = randomintrange(1, 6);
self set_run_anim( "run" + var );
self.run_combatanim = level.scr_anim[self.animname]["run" + var];
break;
case "sprint":
var = randomintrange(1, 4);
self set_run_anim( "sprint" + var );
self.run_combatanim = level.scr_anim[self.animname]["sprint" + var];
break;
}
}
You would have to add an exception in animscripts\melee.gsc to make melee anims work: Code SnippetPlaintextpick_zombie_melee_anim( zombie_guy )
{
melee_anim = undefined;
if ( zombie_guy.has_legs )
{
switch(zombie_guy.zombie_move_speed)
{
case "walk":
anims = array_combine(level._zombie_melee[zombie_guy.animname],level._zombie_walk_melee[zombie_guy.animname]);
melee_anim = random(anims);
break;
case "run":
case "sprint":
anims = array_combine(level._zombie_melee[zombie_guy.animname],level._zombie_run_melee[zombie_guy.animname]);
melee_anim = random(anims);
break;
}
}
else if(zombie_guy.a.gib_ref == "no_legs")
{
// if zombie have no legs whatsoever.
melee_anim = random(level._zombie_stumpy_melee[zombie_guy.animname]);
}
else
{
melee_anim = random(level._zombie_melee_crawl[zombie_guy.animname]);
}
return melee_anim;
}
as you can see it's using for example:
level.scr_anim[self.animname]["walk" + var]
level._zombie_melee[zombie_guy.animname]
wich is the stuff you set in _zombiemode
#include maps\_anim;
#include maps\_utility;
#include common_scripts\utility;
#include maps\_hud_util;
#include maps\_zombiemode_utility;
#include animscripts\utility;
#include animscripts\traverse\shared;
#using_animtree ("generic_human");
freeze1_init()
{
thread spawn_freeze();
Precachemodel("fre_gun");
precachemodel("frez2");
Precacheitem("freazas_gun");
level._effect["quakeit_fx"] = loadfx( "maps/zombie/freza_land" );
}
spawn_freeze()
{
freezeSpawns = GetEnt( "freeze_boss1", "targetname" );
wait 2;
thread spawn_freeze_zombie(freezeSpawns);
wait 1;
}
spawn_freeze_zombie(freezeSpawn)
{
zombies = getaiarray( "axis" );
while(zombies.size > 23)
{
wait .1;
}
level waittill( "free2up" );
wait 3.5;
zombie = spawn_zombie(freezeSpawn);
level.freeza = 2;
playfx(level._effect[ "elec_torso" ],freezeSpawn.origin);
wait 1.5;
zombie.team = "axis";
zombie.isfreeze = true;
zombie thread WatchHealth();
//zombie setModel("frez2", true); //add properly rigged model
zombie.zombie_move_speed = "run";
zombie thread makefreeze();
zombie thread frezaAsbility();
zombie.IsGunner = true;
zombie.gibbed = true;
zombie.head_gibbed = true;
zombie.grenadeawareness = 1;
zombie.ignoreSuppression = false;
zombie.suppressionThreshold = 0;
zombie.noDodgeMove = false;
zombie.dontShootWhileMoving = false;
zombie.animname = "boss_zombie";
zombie.goalradius = 1000;
zombie.pathenemyfightdist = 1000;
zombie.pathenemylookahead = 1000;
zombie.chatInitialized = true;
setdvar("zombie_taunt_freq","9999999");
setdvar("zombie_reachin_freq","9999999");
setdvar("player_meleeRange ","100");
setdvar("ai_eventDistGunShot","2048");
setdvar("ai_eventDistNewEnemy","1024");
zombie AllowedStances( "crouch" );
zombie animscripts\init::initWeapon( "freazas_gun", "primary" ); // new gun
zombie animscripts\shared::placeWeaponOn( "freazas_gun", "right" ); // new gun
zombie PushPlayer( false );
zombie.disableArrivals = false;
zombie.disableExits = false;
zombie OrientMode( "face point" );
zombie.is_zombie = false;
zombie thread zombshoot2();
zombie notify( "zombie_acquire_enemy" );
zombie GiveWeapon( "freazas_gun", 0 );
zombie SwitchToWeapon( "freazas_gun" );
self thread maps\_gsc_dbz_models::fretalk( 1 );
zombie thread uphim();
zombie waittill( "death" );
{
level notify( "BossIsDead" );
level.Bosslife = 0;
//iprintlnbold("^1talk: ^4" + level.Bosslife + " ^1life: ^3" + level.BossHealth );
}
}
uphim()
{
level notify( "BossIsup" );
}
makefreeze()
{
self maps\_zombiemode_spawner::zombie_spawn_init("zombie");
self maps\_zombiemode_spawner::zombie_think();
self maps\_zombiemode_spawner::zombie_setup_attack_properties();
self maps\_zombiemode_spawner::find_flesh();
wait 1;
self maps\_zombiemode_spawner::find_flesh();
}
frezaAsbility()
{
self.maxbosshealth = 60000;
self.maxhealth = 60000;
self.health = self.maxhealth;
level.SaveBossHealth = self.health;
level.boss = self;
self endon ( "death" );
for(;;)
{
wait 0.1;
teleportsetting0 = level.SaveBossHealth * 0.90;
teleportsetting1 = level.SaveBossHealth * 0.60;
teleportsetting2 = level.SaveBossHealth * 0.40;
teleportsetting3 = level.SaveBossHealth * 0.20;
level.nearByplayer = get_closest_valid_player( self.origin, false );
self.offset1 = (0,0,10);
self.offset2 = (0,0,20);
self.offset3 = (0,0,30);
self.offset4 = (0,0,40);
self.offset5 = (0,0,50);
self.offset6 = (0,0,60);
self.offset7 = (0,0,70);
if( self.health <= teleportsetting0 && !IsDefined( self.teleport0 ) )
{
self.teleport0 = true;
if( self == level.boss )
{
self thread DoBossAbility();
}
else
{
self thread StrightUpAbility();
}
}
else if( self.health <= teleportsetting1 && !IsDefined( self.teleport1 ) )
{
self.teleport1 = true;
if( self == level.boss )
{
self thread DoBossAbility();
}
else
{
self thread StrightUpAbility();
}
}
else if( self.health <= teleportsetting2 && !IsDefined( self.teleport2 ) )
{
self.teleport2 = true;
if( self == level.boss )
{
self thread DoBossAbility();
}
else
{
self thread StrightUpAbility();
}
}
else if( self.health <= teleportsetting3 && !IsDefined( self.teleport3 ) )
{
self.teleport3 = true;
if( self == level.boss )
{
self thread DoBossAbility();
}
else
{
self thread StrightUpAbility();
}
}
else
{
wait 0.01;
}
//maps\friza();
}
}
DoBossAbility()
{
self thread maps\_gsc_dbz_models::fretalk( 1 );
//iprintlnbold("^1talk: ^4" + level.Bosslife + " ^1life: ^3" + level.BossHealth );
PlayFxOnTag( level._effect["lightning_dog_spawn"], self, "J_SpineLower" );
playsoundatposition( "??????????", self.origin );
wait 0.2;
self thread StrightUpAbility();
wait( 1.45 );
playsoundatposition( "????????", self.origin );
Earthquake( 0.5, 0.75, self.origin, 1000);
//PlayRumbleOnPosition("explosion_generic", self.origin);
playsoundatposition( "???????", self.origin );
}
StrightUpAbility()
{
PlayFxOnTag( level._effect["elec_torso"], self, "J_SpineLower" );
PlayFxOnTag( level._effect["elec_sm"], self, "J_SpineLower" );
self ForceTeleport( self.origin+self.offset1 );
wait 0.1;
self ForceTeleport( self.origin+self.offset2 );
wait 0.1;
self ForceTeleport( self.origin+self.offset3 );
wait 0.1;
self ForceTeleport( self.origin+self.offset4 );
wait 0.1;
PlayFxOnTag( level._effect["elec_torso"], self, "J_SpineLower" );
PlayFxOnTag( level._effect["elec_sm"], self, "J_SpineLower" );
self ForceTeleport( self.origin );
wait 0.1;
self ForceTeleport( self.origin );
wait 0.1;
self ForceTeleport( self.origin );
wait 0.1;
self ForceTeleport( self.origin );
wait 0.1;
self ForceTeleport( self.origin );
wait 0.1;
self ForceTeleport( self.origin );
wait 0.1;
self ForceTeleport( self.origin );
wait 0.1;
PlayFxOnTag( level._effect["elec_torso"], self, "J_SpineLower" );
PlayFxOnTag( level._effect["elec_sm"], self, "J_SpineLower" );
self ForceTeleport( self.origin+self.offset1 );
wait 0.05;
self ForceTeleport( self.origin+self.offset2 );
wait 0.05;
self ForceTeleport( self.origin+self.offset3 );
wait 0.05;
self ForceTeleport( self.origin+self.offset4 );
wait 0.05;
self ForceTeleport( self.origin+self.offset5 );
wait 0.05;
self ForceTeleport( self.origin+self.offset6 );
wait 0.05;
self ForceTeleport( self.origin+self.offset7 );
wait 0.05;
self ForceTeleport( level.nearByplayer.origin );
}
zombshoot2()
{
self endon( "death" );
for(;;)
{
//(left,back,up)
//(- right,- forword,- down)
self notify( "zombie_acquire_enemy" );
close_zombie = get_players( self.origin, true );
close_zombie.favoriteenemy = self;
hitLoc = close_zombie gettagorigin("b_c_head");
if ( self IsKnownEnemyInRadius( self.origin, 300 ) )
{
//self DumpAnims();
self SetLookAt( hitLoc, 0.05 );
self AimAtPos( hitLoc, 0.09 );
self shoot(5.1);
}
else
{
self thread quakeitsound();
self UseAnimTree( "generic_human" );
self ClearAnim(%ai_zombie_jump_gol_flip, 0);
self animscripted( "damage_time", self.origin, self.angles, %ai_zombie_jump_gol_flip );
self quakeit();
wait(4.2);
}
wait (randomfloatrange(0.2, 0.6));
}
}
quakeitsound()
{
if ( level.bsound == 0 )
{
self playsound( "freza_quack");
}
}
quakeit()
{
//getPlayers()[z] StopShellShock();
self waittill( "damage_time" );
Earthquake(1.5,1.5,self.origin,1000);
Playfx( level._effect["quakeit_fx"], self.origin);
players = getPlayers();
for(z = 0; z < players.size; z++)
{
if(distance(players[z].origin, self.origin) <= 200)
{
getPlayers()[z] shellShock("death", 5);
getPlayers()[z] DoDamage( 1000, getPlayers()[z].origin );
}
else if(distance(players[z].origin, self.origin) <= 300)
{
getPlayers()[z] shellShock("death", 5);
getPlayers()[z] DoDamage( 800, getPlayers()[z].origin );
}
else if(distance(players[z].origin, self.origin) <= 400)
{
getPlayers()[z] shellShock("death", 5);
getPlayers()[z] DoDamage( 500, getPlayers()[z].origin );
}
}
}
WatchHealth()
{
self endon ( "death" );
for(;;)
{
wait 0.1;
level.BossHealth = self.health;
}
}
dude, maybe instead of making the text all big and bold just use normal complete sentences? Maybe you're not actually from the usa and use some translator, or maybe i dont understand it because i'm not from the usa, or i'm to old or something but it's 50% guessing for me what you actually ask here..
![]() | Benevolent Soul who has our eternal gratitude and exclusive access to betas and the donator section of the forum. |
![]() | Has shown excellence and experience in the area of custom scripting in the UGX-Mods community. |
![]() Oil Rig Beta Access |
self maps\_zombiemode_spawner::zombie_spawn_init("zombie");
zombie.animname = "boss_zombie";
![]() | Benevolent Soul who has our eternal gratitude and exclusive access to betas and the donator section of the forum. |
![]() | Has shown excellence and experience in the area of custom scripting in the UGX-Mods community. |
![]() Oil Rig Beta Access |