UGX-Mods Login

or login with an authentication provider below
Sign In with Google
Sign In with Twitter
Sign In with Discord
Sign In with Steam
Sign In with Facebook
Sign In with Twitch

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Topics - Scobalula

NOTE: This is a very, very echy solution, your compile times will be increased by a hell of a lot since we're "emulating" SSE 4.1, however it's a good solution for people like myself who at the very least want to build lights to see how it looks in Radiant (you can just build sun from then on).

This tutorial is provided AS IS, with no implied warranty. You assume full responsibility, neither myself or Intel are responsible for any damages to your PC, map files, assets, etc.

So you have an older Phenom or whatever AMD CPU (or even an older Intel CPU (u wot Pentium 4 m8?) and you don't have SSE 4.1, well read on.

For AMD users from my research only Bulldozer+ CPUs support, Intel CPUs all the way back to Penryn should support it from 2008.

If you're unsure check in CPU-Z if it supports 4.1.

To start download this from Intel:

https://software.intel.com/en-us/articles/intel-software-development-emulator/

Make sure to grab the win version, other is Linux I believe. And get something like 7zip to extract it.

1. Extract the files to BO3ROOT\bin (where the exe's are for Radiant, Launcher, etc.).

2. Right click on "sde.exe" and send to Desktop to create a shortcut there.

3. Right Click on it and open its Properties and enter this to run the Launcher under it:


Code Snippet
Plaintext
 -- modlauncher.exe



4. Now you can run it (might take a minute to load Launcher) and select your map to compile lights/link. DO NOT run APE/Radiant under this, they are very glitchy which is why I recommend doing it under Launcher, once you do that, you should have Lighting in Radiant. And again this can take a while, especially linking.

Some screenshots for pr00f: (more once it compiles incoming)





8 years ago

yo John, fix yo shit!

8 years ago
when the kellog's factory in Gulag closed down we come to here to become fast af boi.

8 years ago
Embrace the Kellog's Production Plant z__ :gusta: __z


8 years ago
shaders are not included. :gusta:


Updated HUD for danke display effect. Looks similar to BO2/3, gussssttttaaaaaaa.

Copy _zombiemode_powerups.gsc to your mods folder (or edit it from raw, don't really care, that's your call).

Find this and remove it:

Code Snippet
Plaintext
level thread powerup_hud_overlay();

Find the function called "init_powerups()" and replace it with this:

Code Snippet
Plaintext
init_powerups()
{
if( !IsDefined( level.zombie_powerup_array ) )
{
level.zombie_powerup_array = [];
}
if ( !IsDefined( level.zombie_special_drop_array ) )
{
level.zombie_special_drop_array = [];
}

// Random Drops
add_zombie_powerup( "nuke", "zombie_bomb", &"ZOMBIE_POWERUP_NUKE", "misc/fx_zombie_mini_nuke" );
add_zombie_powerup( "insta_kill", "zombie_skull", &"ZOMBIE_POWERUP_INSTA_KILL", undefined, "specialty_instakill_zombies", "zombie_powerup_insta_kill_time");
add_zombie_powerup( "double_points","zombie_x2_icon", &"ZOMBIE_POWERUP_DOUBLE_POINTS" , undefined, "specialty_doublepoints_zombies", "zombie_powerup_point_doubler_time" );
add_zombie_powerup( "full_ammo",  "zombie_ammocan", &"ZOMBIE_POWERUP_MAX_AMMO");
add_zombie_powerup( "carpenter",  "zombie_carpenter", &"ZOMBIE_POWERUP_MAX_AMMO");

// add_zombie_special_powerup( "monkey" );

// additional special "drops"
// add_zombie_special_drop( "nothing" );
add_zombie_special_drop( "dog" );

// Randomize the order
randomize_powerups();

level.zombie_powerup_index = 0;
randomize_powerups();



We have 2 new psh at the end:

Code Snippet
Plaintext
add_zombie_powerup( powerup_name, model_name, hint, fx, shader, timer_var )

We shall define our shader and timer variable here for danka obtaining effect.

Now find the function "add_zombie_powerup()" and replace it with this:

Code Snippet
Plaintext
add_zombie_powerup( powerup_name, model_name, hint, fx, shader, timer_var )
{
if( IsDefined( level.zombie_include_powerups ) && !IsDefined( level.zombie_include_powerups[powerup_name] ) )
{
return;
}

PrecacheModel( model_name );
PrecacheString( hint );

struct = SpawnStruct();

if( !IsDefined( level.zombie_powerups ) )
{
level.zombie_powerups = [];
}

struct.powerup_name = powerup_name;
struct.model_name = model_name;
struct.weapon_classname = "script_model";
struct.hint = hint;
if(IsDefined(shader))
struct.shader = shader;
if(IsDefined(timer_var))
struct.timer = timer_var;

if( IsDefined( fx ) )
{
struct.fx = LoadFx( fx );
}

level.zombie_powerups[powerup_name] = struct;
level.zombie_powerup_array[level.zombie_powerup_array.size] = powerup_name;
add_zombie_special_drop( powerup_name );
}

Now find the function "powerup_hud_overlay()" and replace the entire function with this set of functions:


Code Snippet
Plaintext
RemovePowerUpHud( powerup_name )
{
for(i = 0; i < self.powerup_hud.size ; i++)
{
if(IsDefined(self.powerup_hud[i].powerup_name) && self.powerup_hud[i].powerup_name == powerup_name)
{
self.hud_is_being_deleted = true;
self.powerup_hud[i] notify("hud_gone");
// IPrintLnBold(self.powerup_hud[i].powerup_name ); // Debug Purposes
self.powerup_hud[i].alpha = 1;
wait 0.1;
self.powerup_hud[i] FadeOverTime(0.5);
self.powerup_hud[i].alpha = 0;
wait 0.6;
self.powerup_hud[i] destroy_hud();
self.powerup_hud[i] Delete();
self.powerup_hud = array_remove(self.powerup_hud, self.powerup_hud[i]);
self.current_powerups = array_remove(self.current_powerups, self.current_powerups[powerup_name]);
self.hud_is_being_deleted = false;
}
}

for(i = 0; i < self.powerup_hud.size ; i++)
self.powerup_hud[i] thread MoveThyHUD(i, self.powerup_hud.size);
}

CreatePowerUpHud( powerup )
{
if(IsDefined(self.current_powerups))
self.current_powerups = [];
if(!IsDefined( self.powerup_hud))
self.powerup_hud = [];

while(IsDefined(self.current_powerups[powerup])) // Check because from testing if the player is fast enough (Though very rare for it to happen), 2 elements can spawn for same HUD.
wait 0.05;

self.current_powerups[powerup] = create_simple_hud( self ); // Made Client HUD so we modify per player for things like Minigun, etc.
self.current_powerups[powerup].powerup_name = powerup;
self.current_powerups[powerup].foreground = true;
self.current_powerups[powerup].sort = 2;
self.current_powerups[powerup].hidewheninmenu = false;
self.current_powerups[powerup].alignX = "center";
self.current_powerups[powerup].alignY = "bottom";
self.current_powerups[powerup].horzAlign = "center";
self.current_powerups[powerup].vertAlign = "bottom";
self.current_powerups[powerup].x = self.current_powerups[powerup].x;
self.current_powerups[powerup].y = self.current_powerups[powerup].y - 35;
self.current_powerups[powerup].alpha = 0;
self.current_powerups[powerup] setshader(level.zombie_powerups[powerup].shader, 48, 48);
self.current_powerups[powerup] scaleOverTime( .3, 32, 32 );
self.current_powerups[powerup] FadeOverTime(0.3);
self.current_powerups[powerup].alpha = 1;
self.current_powerups[powerup] thread LowTimeFade();

self.powerup_hud[self.powerup_hud.size] = self.current_powerups[powerup];

for(i = 0; i < self.powerup_hud.size ; i++)
self.powerup_hud[i] thread MoveThyHUD(i, self.powerup_hud.size);
}

LowTimeFade()
{
self endon("hud_gone");
while(IsDefined(self))
{
self.timer = level.zombie_vars[level.zombie_powerups[self.powerup_name].timer];
if(self.timer < 5)
{
fade_time = 0.2;
}
else if(self.timer < 10)
{
fade_time = 0.6;
}
else
{
wait 0.1;
continue;
}

self FadeOverTime(fade_time);
self.alpha = 0.1;
wait fade_time;
self FadeOverTime(fade_time);
self.alpha = 1;
wait fade_time;

}
}

MoveThyHUD(i, array_size) // Mjáá
{
self MoveOverTime(0.5);
self.x = (24 + (-24 * array_size + (i * 48))); // Jáám
self.y = self.y;
}


The 2 functions "CreatePowerUpHud()" and "RemovePowerUpHud()" will allow us to create and remove our shaders, more info below.

F

Now we need to edit the Double Points and Insta Kill to use this so find the function called "insta_kill_powerup()" and replace it with this:

Code Snippet
Plaintext
insta_kill_powerup( drop_item )
{

power_up_name = drop_item.powerup_name;
level notify( "powerup instakill" );
level endon( "powerup instakill" );

// array_thread (players, ::insta_kill_on_hud, drop_item);
level thread insta_kill_on_hud( drop_item, power_up_name );

level.zombie_vars["zombie_insta_kill"] = 1;
wait( 30 );
level.zombie_vars["zombie_insta_kill"] = 0;
players = get_players();
for(i = 0; i < players.size; i++)
{
players[i] notify("insta_kill_over");
}

}

Now find "insta_kill_on_hud()" and replace with this:

Code Snippet
Plaintext
insta_kill_on_hud( drop_item, power_up_name )
{
self endon ("disconnect");

// check to see if this is on or not
if ( level.zombie_vars["zombie_powerup_insta_kill_on"] )
{
// reset the time and keep going
level.zombie_vars["zombie_powerup_insta_kill_time"] = 30;
return;
}

for( i = 0; i < GetPlayers().size; i ++ )
GetPlayers()[i] thread CreatePowerUpHud( power_up_name );

level.zombie_vars["zombie_powerup_insta_kill_on"] = true;

// set up the hudelem
//hudelem = maps\_hud_util::createFontString( "objective", 2 );
//hudelem maps\_hud_util::setPoint( "TOP", undefined, 0, level.zombie_vars["zombie_timer_offset"] + level.zombie_vars["zombie_timer_offset_interval"]);
//hudelem.sort = 0.5;
//hudelem.alpha = 0;
//hudelem fadeovertime(0.5);
//hudelem.alpha = 1;
//hudelem.label = drop_item.hint;

// set time remaining for insta kill
level thread time_remaning_on_insta_kill_powerup( drop_item, power_up_name );

// offset in case we get another powerup
//level.zombie_timer_offset -= level.zombie_timer_offset_interval;
}

You can see here were are calling it on ALL players, as you may have guessed the 2 functions above and all the stuff is player specific allowing use to have different shaders like Death Machine, etc. while other players don't, and allowing it to scale depending on what player has what for example a player has Insta, Death, and x2 but other will only have the 2 global ones it will show up fine specific to player and move specific to player, this has been tested in co-op and works. :)

Now find the function "time_remaning_on_insta_kill_powerup()" and replace with this:

Code Snippet
Plaintext
time_remaning_on_insta_kill_powerup( drop_item, power_up_name ) // Must pass on power_up_name from above for some reason or it won't work.
{
//self setvalue( level.zombie_vars["zombie_powerup_insta_kill_time"] );
level thread play_devil_dialog("insta_vox");
temp_enta = spawn("script_origin", (0,0,0));
temp_enta playloopsound("insta_kill_loop");

/*
players = get_players();
for (i = 0; i < players.size; i++)
{
players[i] playloopsound ("insta_kill_loop");
}
*/


// time it down!
while ( level.zombie_vars["zombie_powerup_insta_kill_time"] >= 0)
{
wait 0.1;
level.zombie_vars["zombie_powerup_insta_kill_time"] = level.zombie_vars["zombie_powerup_insta_kill_time"] - 0.1;
// self setvalue( level.zombie_vars["zombie_powerup_insta_kill_time"] );
}

players = get_players();
for (i = 0; i < players.size; i++)
{
//players[i] stoploopsound (2);

players[i] playsound("insta_kill");

}

temp_enta stoploopsound(2);
for( i = 0; i < GetPlayers().size; i ++ )
GetPlayers()[i] thread RemovePowerUpHud( power_up_name );
// turn off the timer
level.zombie_vars["zombie_powerup_insta_kill_on"] = false;

// remove the offset to make room for new powerups, reset timer for next time
level.zombie_vars["zombie_powerup_insta_kill_time"] = 30;

//level.zombie_timer_offset += level.zombie_timer_offset_interval;
//self destroy();
temp_enta delete();
}

As you see from some reason we must pass on the power up name from the main function for the power up so make sure to do that.

Now for the Double Points replace the "point_double_on_hud()" and 2 functions under it with this:

Code Snippet
Plaintext
point_doubler_on_hud( drop_item, power_up_name )
{
self endon ("disconnect");

// check to see if this is on or not
if ( level.zombie_vars["zombie_powerup_point_doubler_on"] )
{
// reset the time and keep going
level.zombie_vars["zombie_powerup_point_doubler_time"] = 30;
return;
}

for( i = 0; i < GetPlayers().size; i ++ )
GetPlayers()[i] thread CreatePowerUpHud( power_up_name );

level.zombie_vars["zombie_powerup_point_doubler_on"] = true;
//power_hud_array[0] = true;
// set up the hudelem
//hudelem = maps\_hud_util::createFontString( "objective", 2 );
//hudelem maps\_hud_util::setPoint( "TOP", undefined, 0, level.zombie_vars["zombie_timer_offset"] );
//hudelem.sort = 0.5;
//hudelem.alpha = 0;
//hudelem fadeovertime( 0.5 );
//hudelem.alpha = 1;
//hudelem.label = drop_item.hint;

// set time remaining for point doubler
level thread time_remaining_on_point_doubler_powerup( drop_item, power_up_name );

// offset in case we get another powerup
//level.zombie_timer_offset -= level.zombie_timer_offset_interval;
}
play_devil_dialog(sound_to_play)
{
if(!IsDefined(level.devil_is_speaking))
{
level.devil_is_speaking = 0;
}
if(level.devil_is_speaking == 0)
{
level.devil_is_speaking = 1;
play_sound_2D( sound_to_play );
wait 2.0;
level.devil_is_speaking =0;
}

}
time_remaining_on_point_doubler_powerup(drop_item, power_up_name)
{
//self setvalue( level.zombie_vars["zombie_powerup_point_doubler_time"] );

temp_ent = spawn("script_origin", (0,0,0));
temp_ent playloopsound ("double_point_loop");

level thread play_devil_dialog("dp_vox");


// time it down!
while ( level.zombie_vars["zombie_powerup_point_doubler_time"] >= 0)
{
wait 0.1;
level.zombie_vars["zombie_powerup_point_doubler_time"] = level.zombie_vars["zombie_powerup_point_doubler_time"] - 0.1;
//self setvalue( level.zombie_vars["zombie_powerup_point_doubler_time"] );
}

for( i = 0; i < GetPlayers().size; i ++ )
GetPlayers()[i] thread RemovePowerUpHud( power_up_name );

// turn off the timer
level.zombie_vars["zombie_powerup_point_doubler_on"] = false;
players = get_players();
for (i = 0; i < players.size; i++)
{
//players[i] stoploopsound("double_point_loop", 2);
players[i] playsound("points_loop_off");
}
temp_ent stoploopsound(2);



// remove the offset to make room for new powerups, reset timer for next time
level.zombie_vars["zombie_powerup_point_doubler_time"] = 30;
//level.zombie_timer_offset += level.zombie_timer_offset_interval;
//self destroy();
temp_ent delete();
}

And replace the main function for it called

Code Snippet
Plaintext
double_points_powerup( drop_item )
{

power_up_name = drop_item.powerup_name;
level notify ("powerup points scaled");
level endon ("powerup points scaled");

// players = get_players();
// array_thread(level,::point_doubler_on_hud, drop_item);
level thread point_doubler_on_hud( drop_item, power_up_name );

level.zombie_vars["zombie_point_scalar"] = 2;
wait 30;

level.zombie_vars["zombie_point_scalar"] = 1;
}

And that should be it, now for some explaining of the 2 functions.

Like I said these are player spefic, for general power ups like Double Points we simply call it like this on all players:

   for( i = 0; i < GetPlayers().size; i ++ )
      GetPlayers() thread CreatePowerUpHud( power_up_name );

And remove it like so:

Code Snippet
Plaintext
	for( i = 0; i < GetPlayers().size; i ++ )
GetPlayers()[i] thread RemovePowerUpHud( power_up_name );

You can also pass on the player from the switch statement and call it on them specifically and it will add and move only their HUD:

Code Snippet
Plaintext
player thread CreatePowerUpHud( power_up_name );


With the nature of pulling stuff out of GSCs there might be something I missed, let me know if there are any errors or bugs.

FAQ:

Spoiler: click to open...
Q: dis is my mums.

A: z__ :gusta: __z

Q: u stole this from me mum.

A: \_ :gusta: _/

Q: u stole this from my iwd

A: You script? \_________________ :gusta: _/

Q: I don't know how to use this with my custom power ups.

A: Contact me. :)


Enjoy!
8 years ago
Now you no longer need to worry about your gun missing half its body.


8 years ago
In this tutorial I will go over porting a Black Ops 3 Gun to WaW with old viewhands. Many people were having issues so I made this, it took a while to make :P Hope it works for you.

Note: This is not intended for beginners in the slightest, it is intended for those who have an idea of porting. However you should be able to comprehend what's going on hopefully. :P


8 years ago
For those who use Wraith to grab stuff from BO3 it now exports notetracks (Tom's did too, but nobody used it didn't work if you dragged them on lol). This little tweak will grab the notetracks and add them to Aidan's list of notetracks so you don't need to add them manually.

This will also work with Tom's notetracks if you do import them to grab them.

If you haven't already go to here and download his tool:

http://ugx-mods.com/forum/index.php/topic,1295.0.html

After doing that, go to %USERPROFILE%\Documents\maya\2012-x64\scripts and open CoDMayaTools.py in something like Notepad++, etc.

Replace its contents with this:

http://pastebin.com/VWWVpe7t

Once that's done you'll notice a new button called "Grab Notes" in the xanim export window.

All credit goes to Aidan, don't even consider crediting me for something so minute. :D

Demonstration with PPSH from GK's anims:



Spoiler: click to open...
Please take the time to realize before screaming at me for editing Aidan's tool that he released it under the GPL3 and so long as I follow the GPL3 I can edit it. :please:
8 years ago

That's right bitches I'm making one last map for CoD WaW! \___________ :gusta: __/

I love broken, down, industrial buildings, etc. decaying away. So I am going to be working on this, I have it heavily planned out and have been planning it for the past few weeks. :gusta:

All previous projects are cancelled and/or considered finished. This is now my baby. \_ :gusta: _/

Here are some screenshots of my progress with more ofc. to come as I progress on working on the map: :gusta:











Planned Features:

Harry's Perks, BO3 PaP Effects, etc.

Guns from various IW and 3arc CoD Games from BO3 to MW2.

Bosses such as Panzer, etc.

And more info to come!

Current credits (More will be added ofc. and all will be credited at release):

DTZxPorter - Wraith BO3 Exporter
Tom_BMX - Lemon and Lime exporters
LilRobot - T7 anims to older rig.
Rollonmath42 - Porting Tutorials
Harry Bo21 - Perks, scripts, etc.
natesmithzombies - Scripts, AI, etc.
Redspace200 - Panzer

Spoiler: click to open...
This map will more than likely require T4M, I have deliberately decided to go over the limits in order to fit in more content from BO3 and such.

8 years ago
This is annoying me, I'll let the pictures show it:







I tried editing light maps, etc. but nothing worked, on Garage you can see it wasn't as sever so I left it but now this is out of control!

Setting light to extra makes it a bit better but still very noticeable, it seems to be on brushes, etc., since the shadows that are casted on Player's viewhands/weapons and models are fine, any insight appreciated.


Spoiler: click to open...
It's things like this that make me want BO3 tools so bad.
8 years ago




Some screenshots:

Spoiler: click to open...







This was done for sir Psh but since it's nice to have stuff people can add to their maps I decided to release.


Not many people know but Harry's box is actually set up for Fire Sale, it's as simple as calling a function to make it work, however I have taken to time to help out my non-scripting bois with this.

PLEASE NOTE: This is only for Harry Bo21's box and perks, please read below regarding stock version.
Adding the Scripts


Download the stuff and place them accordingly (puts stuff in mods\modname into your mods folder).

NOTE:
If you have not edited your _zombiemode_powerups.gsc, you can simple use the pre-edited version and skip all this. Just make sure to edit the drop increment and max per round since I forgot to edit these before upload (I set them for testing).



Copy _zombiemode_powerups.gsc to your mod's folder for danka editing effect and open it.

Add this:

Code Snippet
Plaintext
PrecacheShader( "specialty_firesale_zombies");

Under:

Code Snippet
Plaintext
PrecacheShader( "specialty_doublepoints_zombies" );
PrecacheShader( "specialty_instakill_zombies" );

So it should look like this:

Code Snippet
Plaintext
PrecacheShader( "specialty_doublepoints_zombies" );
PrecacheShader( "specialty_instakill_zombies" );
PrecacheShader( "specialty_firesale_zombies");


Now add this:

Code Snippet
Plaintext
set_zombie_var( "zombie_powerup_fire_sale_on", 		0 ); // Make sure its disabled at start of game, this won't turn it off, if you want it off, don't follow the tutorial!
set_zombie_var( "zombie_powerup_firesale_time", 30 ); // Firesale Length
set_zombie_var( "use_alt_firesale_sounds", "0" ); // Play alt sounds? (Listen to them in sounds folder) "1" = Yes, "0" = No.
set_zombie_var( "zombie_powerup_fire_sale_difficult", 1 ); // Enable extra difficulty, wait for the box to move first and only drop when there are more than x zombies (set this below)
set_zombie_var( "zombie_powerup_fire_sale_zombies_before_firesale", 15 ); // If the setting above is enabled, it will only drop when this amount of zombies are present, so it drops mid-round to make it harder on the player.

Under:

Code Snippet
Plaintext
set_zombie_var( "zombie_powerup_drop_max_per_round", 4 );	// lower this to make drop happen more often

So it should look like this:

Code Snippet
Plaintext
set_zombie_var( "zombie_insta_kill", 				0 );
set_zombie_var( "zombie_point_scalar", 1 );
set_zombie_var( "zombie_drop_item", 0 );
set_zombie_var( "zombie_timer_offset", 350 ); // hud offsets
set_zombie_var( "zombie_timer_offset_interval", 30 );
set_zombie_var( "zombie_powerup_insta_kill_on", false );
set_zombie_var( "zombie_powerup_point_doubler_on", false );
set_zombie_var( "zombie_powerup_point_doubler_time", 30 ); // length of point doubler
set_zombie_var( "zombie_powerup_insta_kill_time", 30 ); // length of insta kill
set_zombie_var( "zombie_powerup_drop_increment", 2000 ); // lower this to make drop happen more often
set_zombie_var( "zombie_powerup_drop_max_per_round", 4 ); // lower this to make drop happen more often
set_zombie_var( "zombie_powerup_fire_sale_on", 0 ); // Make sure its disabled at start of game, this won't turn it off, if you want it off, don't follow the tutorial!
set_zombie_var( "zombie_powerup_firesale_time", 30 ); // Firesale Length
set_zombie_var( "use_alt_firesale_sounds", "0" ); // Play alt sounds? (Listen to them in sounds folder) "1" = Yes, "0" = No.
set_zombie_var( "zombie_powerup_fire_sale_difficult", 1 ); // Enable extra difficulty, wait for the box to move first and only drop when there are more than x zombies (set this below)
set_zombie_var( "zombie_powerup_fire_sale_zombies_before_firesale", 10 ); // If the setting above is enabled, it will only drop when this amount of zombies are present, so it drops mid-round to make it harder on the player.

You can edit the 4 settings to your liking especially the difficulty one, using alt sounds (The announcer if set to one will do the "Attention Zombies shoppers!" and the sound that isn't from Kino), etc.

In the function "init_powerups" add this:

Code Snippet
Plaintext
add_zombie_powerup( "firesale",  	"zombie_firesale",	"Firesale!");

Below:

Code Snippet
Plaintext
add_zombie_powerup( "carpenter",  	"zombie_carpenter",	&"ZOMBIE_POWERUP_MAX_AMMO");

So it should look like this:

Code Snippet
Plaintext
add_zombie_powerup( "nuke", 		"zombie_bomb",		&"ZOMBIE_POWERUP_NUKE", 			"misc/fx_zombie_mini_nuke" );
add_zombie_powerup( "insta_kill", "zombie_skull", &"ZOMBIE_POWERUP_INSTA_KILL" );
add_zombie_powerup( "double_points","zombie_x2_icon", &"ZOMBIE_POWERUP_DOUBLE_POINTS" );
add_zombie_powerup( "full_ammo",  "zombie_ammocan", &"ZOMBIE_POWERUP_MAX_AMMO");
add_zombie_powerup( "carpenter",  "zombie_carpenter", &"ZOMBIE_POWERUP_MAX_AMMO");
add_zombie_powerup( "firesale",  "zombie_firesale", "Firesale!");

Find the function called "powerup_hud_overlay" and replace it with this:

Code Snippet
Plaintext
powerup_hud_overlay()
{

level.powerup_hud_array = [];
level.powerup_hud_array[0] = true;
level.powerup_hud_array[1] = true;

level.powerup_hud = [];
level.powerup_hud_cover = [];
level endon ("disconnect");


for(i = 0; i < 3; i++)
{
level.powerup_hud[i] = create_simple_hud();
level.powerup_hud[i].foreground = true;
level.powerup_hud[i].sort = 2;
level.powerup_hud[i].hidewheninmenu = false;
level.powerup_hud[i].alignX = "center";
level.powerup_hud[i].alignY = "bottom";
level.powerup_hud[i].horzAlign = "center";
level.powerup_hud[i].vertAlign = "bottom";
level.powerup_hud[i].x = -32 + (i * 15);
level.powerup_hud[i].y = level.powerup_hud[i].y - 35;
level.powerup_hud[i].alpha = 0.8;
}

shader_2x = "specialty_doublepoints_zombies";
shader_insta = "specialty_instakill_zombies";

while(true)
{
if(level.zombie_vars["zombie_powerup_insta_kill_time"] < 5)
{
wait(0.1);
level.powerup_hud[1].alpha = 0;
wait(0.1);


}
else if(level.zombie_vars["zombie_powerup_insta_kill_time"] < 10)
{
wait(0.2);
level.powerup_hud[1].alpha = 0;
wait(0.18);

}

if(level.zombie_vars["zombie_powerup_point_doubler_time"] < 5)
{
wait(0.1);
level.powerup_hud[0].alpha = 0;
wait(0.1);


}
else if(level.zombie_vars["zombie_powerup_point_doubler_time"] < 10)
{
wait(0.2);
level.powerup_hud[0].alpha = 0;
wait(0.18);
}

if(level.fire_sale_time  < 5)
{
wait(0.1);
level.powerup_hud[2].alpha = 0;
wait(0.1);
}
else if(level.fire_sale_time  < 10)
{
wait(0.2);
level.powerup_hud[2].alpha = 0;
wait(0.18);
}

if(level.zombie_vars["zombie_powerup_point_doubler_on"] == true && level.zombie_vars["zombie_powerup_insta_kill_on"] == true && level.zombie_vars["zombie_powerup_fire_sale_on"] == false) // X2 & INSTA
{
level.powerup_hud[0].x = -24;
level.powerup_hud[1].x = 24;
level.powerup_hud[0].alpha = 1;
level.powerup_hud[1].alpha = 1;
level.powerup_hud[0] setshader(shader_2x, 32, 32);
level.powerup_hud[1] setshader(shader_insta, 32, 32);

}
else if(level.zombie_vars["zombie_powerup_point_doubler_on"] == true && level.zombie_vars["zombie_powerup_insta_kill_on"] == false && level.zombie_vars["zombie_powerup_fire_sale_on"] == false) // X2
{
level.powerup_hud[0].x = 0;
level.powerup_hud[0] setshader(shader_2x, 32, 32);
level.powerup_hud[1].alpha = 0;
level.powerup_hud[0].alpha = 1;
level.powerup_hud[2].alpha = 0;

}
else if(level.zombie_vars["zombie_powerup_point_doubler_on"] == false && level.zombie_vars["zombie_powerup_insta_kill_on"] == false && level.zombie_vars["zombie_powerup_fire_sale_on"] == true) // FIRE SALE
{
level.powerup_hud[2].x = 0;
level.powerup_hud[2] setshader("specialty_firesale_zombies", 32, 32);
level.powerup_hud[1].alpha = 0;
level.powerup_hud[2].alpha = 1;
level.powerup_hud[0].alpha = 0;

}
else if(level.zombie_vars["zombie_powerup_insta_kill_on"] == true && level.zombie_vars["zombie_powerup_point_doubler_on"] == false && level.zombie_vars["zombie_powerup_fire_sale_on"] == false) // INSTA
{
level.powerup_hud[1].x = 0;
level.powerup_hud[1] setshader(shader_insta, 32, 32);
level.powerup_hud[0].alpha = 0;
level.powerup_hud[1].alpha = 1;
level.powerup_hud[2].alpha = 0;

}
else if(level.zombie_vars["zombie_powerup_insta_kill_on"] == true && level.zombie_vars["zombie_powerup_point_doubler_on"] == true && level.zombie_vars["zombie_powerup_fire_sale_on"] == true) // INSTA & X2 & FIRE SALE
{
level.powerup_hud[0].x = -48;
level.powerup_hud[1].x = 0;
level.powerup_hud[2].x = 48;
level.powerup_hud[0].alpha = 1;
level.powerup_hud[1].alpha = 1;
level.powerup_hud[2].alpha = 1;
level.powerup_hud[0] setshader(shader_2x, 32, 32);
level.powerup_hud[1] setshader(shader_insta, 32, 32);
level.powerup_hud[2] setshader("specialty_firesale_zombies", 32, 32);
}
else if(level.zombie_vars["zombie_powerup_insta_kill_on"] == false && level.zombie_vars["zombie_powerup_point_doubler_on"] == true && level.zombie_vars["zombie_powerup_fire_sale_on"] == true) // X2 & FIRESALE
{
level.powerup_hud[0].x = -24;
level.powerup_hud[2].x = 24;
level.powerup_hud[0].alpha = 1;
level.powerup_hud[1].alpha = 0;
level.powerup_hud[2].alpha = 1;
level.powerup_hud[0] setshader(shader_2x, 32, 32);
level.powerup_hud[2] setshader("specialty_firesale_zombies", 32, 32);
}
else if(level.zombie_vars["zombie_powerup_insta_kill_on"] == true && level.zombie_vars["zombie_powerup_point_doubler_on"] == false && level.zombie_vars["zombie_powerup_fire_sale_on"] == true) // INSTA & FIRE SALE
{
level.powerup_hud[1].x = -24;
level.powerup_hud[2].x = 24;
level.powerup_hud[0].alpha = 0;
level.powerup_hud[1].alpha = 1;
level.powerup_hud[2].alpha = 1;
level.powerup_hud[1] setshader(shader_insta, 32, 32);
level.powerup_hud[2] setshader("specialty_firesale_zombies", 32, 32);
}
else
{
level.powerup_hud[2].alpha = 0;
level.powerup_hud[1].alpha = 0;
level.powerup_hud[0].alpha = 0;
}

wait(0.01);

}

}

Next find the function called "get_next_powerup()", replace it with this:

Code Snippet
Plaintext
get_next_powerup()
{


/#
if( isdefined( level.zombie_devgui_power ) && level.zombie_devgui_power == 1 )
return level.zombie_powerup_array[ level.zombie_powerup_index ];

#/


powerup = getNextPowerUp();

while(1)
{
if( powerup == "firesale" && (IsDefined(level.zombie_vars["zombie_powerup_fire_sale_difficult"]) && level.zombie_vars["zombie_powerup_fire_sale_difficult"]))
{
if( powerup == "firesale" && ((IsDefined(level.box_moved) && !level.box_moved)) &&(IsDefined(getaiarray( "axis" ) && getaiarray( "axis" ).size < level.zombie_vars["zombie_powerup_fire_sale_zombies_before_firesale"]) && (IsDefined(level.power_on) && level.power_on))
powerup = getNextPowerUp();
else
return powerup;
}
else if( powerup == "carpenter" && get_num_window_destroyed() < 5 )
{
powerup = getNextPowerUp();
}
else
{
return powerup;
}
wait(0.05);
}
}

And add below it:

Code Snippet
Plaintext
getNextPowerUp()
{
powerup = level.zombie_powerup_array[ level.zombie_powerup_index ];

level.zombie_powerup_index++;
if( level.zombie_powerup_index >= level.zombie_powerup_array.size )
{
level.zombie_powerup_index = 0;
randomize_powerups();
}

return powerup;
}

Find function called "powerup_grab()", in the switch statement, find this:

Code Snippet
Plaintext
case "carpenter":
level thread start_carpenter( self.origin );
players[i] thread powerup_vo("carpenter");
break;

Under it add this:

Code Snippet
Plaintext
case "firesale":
level thread firesale_harrybo21box( self );
break;

So it should look like this:

Code Snippet
Plaintext

switch (self.powerup_name)
{
case "nuke":
level thread nuke_powerup( self );

//chrisp - adding powerup VO sounds
players[i] thread powerup_vo("nuke");
zombies = getaiarray("axis");
players[i].zombie_nuked = get_array_of_closest( self.origin, zombies );
players[i] notify("nuke_triggered");

break;
case "full_ammo":
level thread full_ammo_powerup( self );
players[i] thread powerup_vo("full_ammo");
break;
case "double_points":
level thread double_points_powerup( self );
players[i] thread powerup_vo("double_points");
break;
case "insta_kill":
level thread insta_kill_powerup( self );
players[i] thread powerup_vo("insta_kill");
break;
case "carpenter":
level thread start_carpenter( self.origin );
players[i] thread powerup_vo("carpenter");
break;
case "firesale":
level thread firesale_harrybo21box( self );
break;

default:
println ("Unrecognized poweup.");
break;
}


Under this same function, add:

Code Snippet
Plaintext
firesale_harrybo21box()
{
if(IsDefined(level.zombie_vars[ "zombie_powerup_fire_sale_on" ]) && level.zombie_vars[ "zombie_powerup_fire_sale_on" ])
{
level.fire_sale_time = level.zombie_vars[ "zombie_powerup_firesale_time" ];
return;
}

level.zombie_vars[ "zombie_powerup_fire_sale_on" ] = 1;

if(IsDefined(level.zombie_vars[ "zombie_powerup_firesale_time" ]))
level.fire_sale_time = level.zombie_vars[ "zombie_powerup_firesale_time" ];
else
level.fire_sale_time = 30;

thread firesale_sound_thread();

level thread maps\_zombiemode_mysterybox::harrybo21_mysterybox_start_fire_sale();

while(level.fire_sale_time > 0)
{
level.fire_sale_time -= 0.1;
wait 0.1;
}

level.zombie_vars[ "zombie_powerup_fire_sale_on" ] = 0;
if(IsDefined(level.zombie_vars[ "zombie_powerup_firesale_time" ]))
level.fire_sale_time = level.zombie_vars[ "zombie_powerup_firesale_time" ];
else
level.fire_sale_time = 30;
}

firesale_sound_thread()
{
if(!IsDefined(level.zombie_vars["use_alt_firesale_sounds"]))
level.zombie_vars["use_alt_firesale_sounds"] = "0";

sound_firesale = "fs_vox" + level.zombie_vars["use_alt_firesale_sounds"];
sound_firesale_loop = "fs_loop" + level.zombie_vars["use_alt_firesale_sounds"];

level thread play_devil_dialog(sound_firesale);

fs_ent = spawn("script_origin", (0,0,0));
fs_ent playloopsound (sound_firesale_loop);

while ( level.fire_sale_time >= 0)
{
wait 0.1;
}

players = get_players();
for (i = 0; i < players.size; i++)
{
players[i] playsound("points_loop_off");
}

fs_ent stoploopsound(2);
fs_ent delete();
}

Adding the Assets


I've given a bit of choice regarding the ffs, if you want to include the alt and kino sounds, you can use the main ff, if you want only one set, you can use the extra folder.

It's just a case of pulling them into your mods folder. I won't be providing 500 ffs, if you want, it's easy to get the assets for it, the sounds are even in the IWD in the main folder, so all you need to export is the model from BO2/BO1.


And that should be it, credit if used (and Harry ofc. since you're using his box).

Please let me know of any issues. :)

Credits:

Harry Bo21 - Box Script.

Regarding stock version:

Spoiler: click to open...
This was as mentioned orignally done for Psh but after a bit he mentioned it was for Harry's box, I am working on a stock version and will release it soon along side this.:



Currently what you see there is fully functional, and all boxes work, but it still need work obviously. Stay tuned my dudes!
8 years ago
So I've had this on many maps, and I was always under the impression it was (mostly) caused by a patch with bad LMAP, since once I fixed the offending patch, it went away, but in a recent project I am working on it seems to be persistent.

I'm really curious of several things:

1. What tf causes it?
2. Can I ignore it?
3. Is it possible to fix it?

I've created several maps with nothing but worldspawn KVPs and without the KVPs for worldspawn it goes away, and with, it stays, so I'm not sure what is causing it.

On Garage I never had it, on Kenaven it happen once but read above, and on these new maps I'm creating it's happening when the sundirection kvp is entered.

Here's what I'm talking about:



EDIT: I also should note on any of these maps as I move away from 0,0,0 in Radiant it goes away too....
8 years ago

I didn't see anything released/posted for this, and after porting DW anims for player, I decided to make a quick script for it.

First off, if you're reading this thread, and you are interested in getting the DW player anims, please read Harry's tutorial here on getting the animations from BO1:

http://ugx-mods.com/forum/index.php/topic,9675.0.html


Adding the Scripts


Download the script below.

Make sure to copy the stuff from maps folder to your mod's maps folder, located in root/mods/modname/maps.

Copy _zombiemode.gsc from root\raw\maps if you don't have it in your mods folder.

Open it and add this below the _zombiemode_perks call:

Code Snippet
Plaintext
maps\_zombiemode_dw_attach::init();

So it should look like this:

Code Snippet
Plaintext
 
maps\_zombiemode_blockers_new::init();
maps\_zombiemode_spawner::init();
maps\_zombiemode_powerups::init();
maps\_zombiemode_radio::init();
maps\_zombiemode_perks::init();
maps\_zombiemode_dw_attach::init();
maps\_zombiemode_tesla::init();
maps\_zombiemode_dogs::init();
maps\_zombiemode_bowie::bowie_init();
maps\_zombiemode_cymbal_monkey::init();
maps\_zombiemode_betty::init();
maps\_zombiemode_timer::init();
maps\_zombiemode_auto_turret::init();

Setting up for your weapon.


If we open the _zombiemode_dw_attach.gsc you can add your dw weapons from here.

First, take a look at this:

Code Snippet
Plaintext
level._effect[ "pistol_flash" ] = loadfx ( "weapon/muzzleflashes/standardflashworld" );

We need to precache the fx in order to be used for the muzzleflash.

Next scroll down to the bottom and notice this function:

Code Snippet
Plaintext
DWAttatch()
{
while(1)
{
self.weap_model = GetWeaponModel(self GetCurrentWeapon());
self waittill_any( "weapon_change", "weapon_change_complete" );
self Detach(self.weap_model, "tag_weapon_left");

if((self GetCurrentWeapon() == "mr6_upgraded" || "m1911_upgraded") || IsSubStr(self.weap_model, "dw") || IsSubStr(self GetCurrentWeapon(), "dw"))
self Attach( self.weap_model, "tag_weapon_left" );
}
}

There are 3 ways you can go about this, you can put dw in the name of your weapons (which isn't practical if your non-upgraded isn't dw), you can put dw in the name of the worldmodel which is my favourite way of doing it and means I only have to precache them instead of editing the script fully, or you can manually check for them. I left in the mr6_upgraded and m1911 check for example.

Lastly, we need to set up FX part for our weapons:

Code Snippet
Plaintext
left_hand_muzzleflashes()
{
self endon( "disconnect" );
while( true )
{
self waittill( "weapon_fired" );
switch( self GetCurrentWeapon() ) // Dumped the worldmodel shell ejects for second weapons since it's not worth looking into tbh.
{
case "mr6_upgraded":
self thread play_third_person_fx( level._effect[ "pistol_flash" ], "tag_weapon_left");
break;
case "hs10_upgraded":
self thread play_third_person_fx( level._effect[ "shotgun_flash" ], "tag_weapon_left");
break;
}
}
}

NOTE: If you want, you can use alaurenc9's post below and modify mine to actually spawn the Left World Model to play FX on properly, but for the sake of asset room, I've improvised with tag_weapon_left and used the default Right Worldmodel.

You can see how it's done here, you can copy and paste what's done above, like this for example:

Code Snippet
Plaintext
			case "weap_name":
self thread play_third_person_fx( level._effect[ "FX_ID" ], "tag_weapon_left");
break;

That should be it, credit if you want.

Make to tick the script/s in launcher. If there are any errors/you run into issues let me know. Enjoy.

Credits:

alaurenc9 - Muzzle FX for Second Gun.

Notes:

Spoiler: click to open...

The positing of some things such as FX, Models, etc. might be off, get over it.

The Knifing might look echy if you look closely, but that's it, if you look closely. The model is still attached and I couldn't find a decent way to detach/attach while knifing since for some odd reason the weaponmodel is M1911 while knifing. It's so small i didn't bother anymore than that.






8 years ago
Porting Microwave Gun/ Wave Gun AI animations and they seem to be working for the most part, but if you knife them, they fall to ground, like this:

https://i.gyazo.com/77211338d24027513e607c3b7638da65.mp4

Hitman originally suggested I add this when they would fall to ground originally after a second:

Code Snippet
Plaintext
self.nodeathragdoll = true;

Which worked for that, but he said it should work for knifing?

Looked at the BO1 GSC, can't really find anything, help appreciated. ^^
8 years ago
This map does not require T4M.

I put a lot of work into this map, and currently putting a lot of work into upcoming updates and maps, if you enjoy my work, consider donating: :)

Donate

Zombie Garage

As the recent outbreak sweeps through the United States, killing all those around you, you and your team take shelter in a nearby Garge, but things aren't what they seem.

Officially this is my second map, but first to be released to the public, I have spent and still am spending a lot of time making sure the map is good enough. :)

It's a small map, make sure to get that into your head, this is not Origins. It's a small survival map, for sitting back and relaxing, there's no easter egg, etc. just kill the zombies!

Download Sweetness:

Mediafire:


Mega:


Screenshots:





















Videos from community (PM me to be featured):

UltzZ



The Relaxing End:


Kong Zombies




Features

This map uses UGX Mod 1.1, for a list of features, check out the topic here.


Credits:
UGX-Team - UGX Mod, tools such as Weapon Editor, etc.
Tom_Bmx- Tools such as Xmodel Utils, Lime, Lemon, etc.
Rollonmath42- Porting tutorials
YhPh1l- Kino Like Wall lights, Typewriter intro
DualVII - Rotating Doors
DUKIP - ASM1
JBird632 - Secondary Alias Tutorial
Treyarch- Black Ops 1, 2 and 3 Textures, Models and anims.
Infinity Ward- MW2, 3 and Ghosts Textures, Models and anims
HitmanVere- General Help, Beta Tester.
Koan- Beta Tester
Valve- Textures from Counter Strike - Global Offense
TheScotchGuy- Scrub
Uk_ViiPeR- Why is he here again?


V1.1 Fixes/Additions:

Spoiler: click to open...
+: New areas, access routes, etc.
+: Stamin Up
*: Various bug fixes including playable area bugs, etc.
*: Games of 3 or 4 should be able to enter game now.

+ Many more additions.


If you feel I should have given you credit (helped me, used something made by you, etc.) please do not hesitate to PM me here or on Skype.

Regarding Beta Period: So many applied, lol, and I felt a lot of the bugs were found by Hitman, also the forum wouldn't let me PM since it exceeded 15 PMs :lol:
8 years ago
Loading ...