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

Pages:
1
2 3 ... 5
1
3rd-Party Applications & Tools / [MAYA] One Click Does Plenty
« on: April 05, 2017, 03:38:11 am »


Prepare yourselves for the rattling that will come with this awesome, epic, amazing, spectacular, super Box Map Assister!
 
THIS REQUIRES CODMAYATOOLS AND SEATOOLS, IF YOU DON'T HAVE THEM GET THEM.
ALSO THIS IS FOR USE WITH COLLIES/AZSRY'S RIG TO T7, THNX

To use:



  • Put the py file in the script folder into your Maya scripts folder.
  • Add this to your usersetup.mel: python("import oneclickdoesplenty");
  • Set your directories for XANIM_EXPORT (where the anims are going) and SEANIMS (Where the exported anims are)
  • Click Run Export.

Notes:


  • Your scene should be set up as if it was the scene you would use for animation model and base for if you were to manually export.
  • You can query the directories at any time by click the button to query them, I store them as attributes on the scene so it's stored with the file.
  • Do not annoy me with simple issues.


Example:




dont foget 2 suppot me on patreon

2
3rd-Party Applications & Tools / [App] Auto-GDT 0.1.3
« on: March 29, 2017, 10:22:18 am »

A tool that will take your dank animations and add them to a GDT/Create a new one. :)

In its current state the tool works. Currently I have it setup only for weapon animation (i.e. it doesn't set correct options for AI anim, etc.)

Features:
  • Will detect automatically whether it's looping or non-looping based off name.
  • I guess it does what the title says.


Please report any bugs you find. :)


3
YouTube / Extinct: The Last Compound
« on: March 14, 2017, 07:58:14 am »
This map was awesome on WaW, it's awesome on BO3. :)


4
YouTube / Bo3 Gulag
« on: March 12, 2017, 08:03:12 am »
Puf returns with another installment of Kellog's Factory Tour. (Sorry if audio is a little weird. :P)


5
Modding / Enable Auto-aim for Controllers
« on: November 04, 2016, 04:16:48 am »
If you're like me and like to play zombies with a controller then you'll understand the absolute beauty of what we know as Target Assist/Auto-aim. I found this feature missing in a lot of custom weapons on ZM maps and even my own ports.

It's a simple setting in the weapon asset (credit to Hitman who found the settings in Kuda's weapon):



The Auto Aim Range seems to handle the Auto-aim when you ADS so I set that to the same as the assist range, though you might want to increase it. Simply type "auto aim range" into the search to find it. :)




6
Zombie Maps in Progress / [WIP] zm_alley (Name TBD)
« on: October 31, 2016, 11:35:31 am »
Return of the Gargage got lost in transit so today I present zm_alley. I won't provide much info and just show some screenshots and will show more as I progress. :)

NOTE: This is an early WIP. :)






7
Radiant Black Prefabs / [PREFAB] Detached Garage
« on: October 15, 2016, 11:42:24 pm »


A small detached Garage because I love Garages and I believe every map should have a Garage, so make sure to put this in your map and don't forget to like and subscribe.

Download:



Images:







8
Zombie Maps in Progress / [W.I.P] Return of the Garage
« on: October 01, 2016, 10:43:27 pm »
Garage Returns for a second round. \__________ :gusta: __/

This is not a remake, port, etc. of my original Garage, this is a complete different map and depicts a Garage in a small town, depending on how it goes it might be smaller than my Original but with more options in where you can go, etc.

Some screenshots with more to come as I work on the map:






9
Modding / [TUT] Link and build lights on Non-SSE 4.1 CPU
« on: October 01, 2016, 12:15:25 am »
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: [Select]
 -- 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)






10
YouTube / John's House
« on: September 20, 2016, 08:53:58 am »

yo John, fix yo shit!


11
YouTube / Decagonal Demise
« on: September 18, 2016, 06:49:39 am »
when the kellog's factory in Gulag closed down we come to here to become fast af boi.


12
YouTube / Gulag Kellog's zombies map.
« on: September 16, 2016, 10:46:13 pm »
Embrace the Kellog's Production Plant z__ :gusta: __z



13
Scripting / [TUT] Updated Power Ups HUD
« on: August 25, 2016, 10:08:10 am »
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: [Select]
level thread powerup_hud_overlay();

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

Code: [Select]
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: [Select]
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: [Select]
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: [Select]
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: [Select]
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: [Select]
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: [Select]
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: [Select]
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: [Select]
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: [Select]
	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: [Select]
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:

You must have an account to view the spoiler contents. Please log in or create an account.

Enjoy!

14
Modding / [TUT] Reduce degenerate tris on Black Ops 2 Weapons
« on: August 17, 2016, 06:23:04 am »
Now you no longer need to worry about your gun missing half its body.



15
Modding / [TUT] How to port Black Ops 3 Weapons to BO1 and lower.
« on: August 16, 2016, 06:39:16 am »
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



Pages:
1
2 3 ... 5