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 - shinged

This is a map entirely based around playing space invaders. There are no zombies and the game ends when you want it to. Try to get the high score and beat all 10 waves on this Space Invaders recreation!


7 years ago
Hey guys, today i'm gonna guide you guys through making a custom perk. You need at least a bit of scripting knowledge to do this as your perk won't actually do anything without scripting it ;)
IT IS EXTREMELY EASY TO GET CLIENT MISMATCH ERRORS WITH THIS,
HOWEVER IF YOU ARE POSITIVELY SURE YOU DID EVERYTHING 100% CORRECTLY LET ME KNOW
AND I WILL TRY TO FIX IT

First download my scripts here: https://mega.nz/#!Rk8D2JbI!rcYRTDhkgdYxC4TJiyHZW5N5k-dBMVHU8ZjjB1QJt9c

So lets start off by copying some shit.
 - Drag and drop everything but the .txt into your mapname/scripts/zm folder.
 - Open up your mapname GSC and paste this somewhere at the top
Code Snippet
Plaintext
#using scripts\zm\zm_custom_perk_shader;
#using scripts\zm\_zm_perk_custom_perk;
- at the bottom of main() function put this
Code Snippet
Plaintext
level thread custom_perk_shader::custom_perk_shaders_init();

 - Now open up your mapname CSC and paste this somewhere at the top
Code Snippet
Plaintext
#using scripts\zm\_zm_perk_custom_perk;

 - Open up your mapname ZONE file and paste this at the bottom
Code Snippet
Plaintext
// custom perk shader script by Matarra
scriptparsetree,scripts/zm/zm_custom_perk_shader.gsc
// custom perk
scriptparsetree,scripts/zm/_zm_perk_custom_perk.gsc
scriptparsetree,scripts/zm/_zm_perk_custom_perk.csc
scriptparsetree,scripts/zm/_zm_perk_custom_perk.gsh
xmodel,kh_elemental_nade_vending // CHANGE THESE TO YOUR VALUES - XMODEL NAME FOR YOUR MACHINE
material,kh_perk_elemental_nades // CHANGE THESE TO YOUR VALUES - THIS IS YOUR PERK SHADER MATERIAL NAME

 - Now in Radiant, copy quick revive and stamp the prefab. Delete everything but the struct at the bottom.
 - Change these KVP's
Code Snippet
Plaintext
"specialty_customperk", "script_noteworthy"
"your xmodel name for perk machine", "model"

Now lets move on to APE, we'll save scripting for last
 - Make a material and call it something you'll remember, this will be the perk shader.
 - Give this these settings




Now for the scripting part, there really isn't that much to do because i mostly did it all for you. If you want to change variable names you can, but i suggest leaving them alone and just changing whats in the gsh, and certain things like hintstrings in the gsc.
 - Open up the custom_perk.gsh and change everything to your own shit. I suggest leaving the price really low for testing.
 - Dont worry about this variable
Code Snippet
Plaintext
CUSTOM_SHADER
we dont have access to treyarchs hud elements so i had to script them in manually. So just leave the value alone.
 
Open up the custom_perk.gsc
 - At the top add this somewhere
Code Snippet
Plaintext
#precache( "material", "kh_perk_elemental_nades" ); // CHANGE THIS TO YOUR PERK SHADER
Obviously change kh_perk_elemental_shit to your own material name in APE.
 - Find this
Code Snippet
Plaintext
zm_perks::register_perk_basic_info( PERK_CUSTOM_PERK, "customperk", CUSTOM_PERK_COST, "Hold [{+activate}] for Elemental-Nades [Cost: &&1]", GetWeapon( CUSTOM_PERK_BOTTLE_WEAPON ) );
change the hintstring to your perkname.
 - Find this
Code Snippet
Plaintext
trigger = GetEnt("vending_customperk", "target"); // CHANGE THIS TO YOUR PERK MACHINE NAME
change "vending_customperk" to whatever you might have changed it to in the gsh.
 - Find this
Code Snippet
Plaintext
trigger SetHintStringForPlayer(self, "Hold [{+activate}] for Elemental-Nades [Cost: 3000]"); // CHANGE THIS TO YOUR HINTSTRING ABOVE

and change it to your hintstring once again. This time you will need to specify the cost of it.
 - In the final function is where you will script your perk effect, the function gets called one time when the player purchases the perk.

Code Snippet
Plaintext
give_custom_perk()
and
Code Snippet
Plaintext
take_custom_perk( b_pause, str_perk, str_result )
both only get threaded a single time.

So there you have it. This tutorial is probably my largest tutorial yet and might have some errors. If you guys find any let me know and i will fix them asap.

If you follow my tutorial you MUST credit me. Simply saying: "Matarra - Custom perk shader script and custom perk tutorial" will suffice
7 years ago
Hey guys, here is a simple script to add ways to teleport zombies in your map. So lets say you have a map with multiple zones and those zones are spaced apart, normally you would need to have a way for the zombies to get to the other like a hidden tunnel or something, this script is a good replacement for that. Here's a quick vid of it:


Radiant
The setup for this is very simple. The zombies need to be able to path to the area they are teleporting too. This can be done in a bunch of different creative ways such as using player clips or setting walls to non-colliding.
 - First create a trigger_multiple and give it this KVP "teleport_zombies" -  targetname.
 - Now create a script origin and place it halfway into the ground. Open the KVP's and set it to server. Now deselect everything, select the trigger first, then select the script_origin and hit W. What this will do is set the script_origin's targetname to an auto generated name so it can be copied without sharing targetnames.
 - Now you should see a line connecting the trigger to the origin. Double check to make sure its the trigger_multiple targeting script_origin and your good to go.
 - To add multiple teleporters just select the trigger and the origin and hit space. Check the kvp's to make sure the targetname on the origin is different from the targetname on the other origin and your done with radiant.

Here is an example of how i have mine setup, the clip is a clip_ai and not a player clip so only the zombies can cross that path.

Scripting
The scripting is extremely simple. Just open your mapname.gsc and copy this code.
Spoiler: click to open...
Code Snippet
Plaintext
/*
TELEPORT ZOMBIES ~ TELEPORT ZOMBIES ~ TELEPORT ZOMBIES ~ TELEPORT ZOMBIES ~ TELEPORT ZOMBIES ~ TELEPORT ZOMBIES ~ TELEPORT ZOMBIES ~ TELEPORT ZOMBIES ~
TELEPORT ZOMBIES ~ TELEPORT ZOMBIES ~ TELEPORT ZOMBIES ~ TELEPORT ZOMBIES ~ TELEPORT ZOMBIES ~ TELEPORT ZOMBIES ~ TELEPORT ZOMBIES ~ TELEPORT ZOMBIES ~
TELEPORT ZOMBIES ~ TELEPORT ZOMBIES ~ TELEPORT ZOMBIES ~ TELEPORT ZOMBIES ~ TELEPORT ZOMBIES ~ TELEPORT ZOMBIES ~ TELEPORT ZOMBIES ~ TELEPORT ZOMBIES ~
*/
function teleport_zombies_init()
{
teleport_trig = GetEntArray( "teleport_zombies", "targetname" );
for (i = 0; i < teleport_trig.size; i++)
{
teleport_trig[i] thread teleport_zombies();
}
}

function teleport_zombies()
{
teleport_destination = GetEnt( self.target, "targetname" );
while(1)
{
zombs = getaispeciesarray("axis","all");
for(k=0;k<zombs.size;k++)
{
if( zombs[k] IsTouching( self ) )
{
zombs[k] ForceTeleport( teleport_destination.origin );
}
}
wait(0.01);
}
}

 - Paste that code into the bottom of your mapname.gsc.
 - Now at the bottom of the main function paste this
Code Snippet
Plaintext
thread teleport_zombies_init();
- It should look something like this:
Code Snippet
Plaintext
function main()
{
zm_usermap::main();

level._zombie_custom_add_weapons =&custom_add_weapons;

//Setup the levels Zombie Zone Volumes
level.zones = [];
level.zone_manager_init_func =&usermap_test_zone_init;
init_zones[0] = "start_zone";
level thread zm_zonemgr::manage_zones( init_zones );

level.pathdist_type = PATHDIST_ORIGINAL;

thread teleport_zombies_init();
}

Now your done! Make sure when setting this up that the zombies are able to path to the destination otherwise they wont go into the portals. Also make sure to space the origin away from the portal a bit to avoid an infinite loop.

Let me know if you guys would like more simple scripting tutorial's like this.
7 years ago

Features:
- Custom Cell's (Perks that don't go away on death)
- Buildable Power / Weapon
- Craftable Lever's
- Small Parkour
- Few short Easter Egg's
- Music Selector (Song's are copyrighted so be careful of  that)
- Various other scripted things

Summary:
If you have played my Kingdom Hearts map for World at War, you'd know that i'm not the best at mapping, but i enjoy scripting. So i decided to create a Minecraft map to get the best of both world's. The source script for everything i created in my map is available to download for aspiring scripters / map creators. Just note that i'm certainly not the best scripter and it could have likely been done a plethora of way's better. All i ask is that you credit me for any script you use in your own map. https://mega.nz/#!AhkFEYia!pWiqGZiV3tWjCLCHaHrAQaW1z7FvG56L2PPo32Q98cU

Map Link:

- If you find any bug's please let me know and I will try to fix them

Within 10 seconds of map being released...
7 years ago
Hey guys, here's a few of my custom perks i made. These perks i call "cells" don't go away on down or death. It's a purchasable buff that lasts for the rest of the game.

If anyone want's a specific part of the script like how i made the thunder nade's work ill give it to you.
7 years ago
I just thought id share this because it looked funny, it would look perfect if i actually bothered to paint the skin weights. This is  straight from the skin bind. if you guys are familiar with the process of making custom zombie models from world at war, it is pretty much the same. Anyway heres the model
8 years ago
Heres the finished result


So to start off, download this prefab https://mega.nz/#!M9sBhZCT!ewDyF1nJVaCDdHUtc8UrcN_tKXM6Zl0_L4ca7xblPSg
Place the prefab in root/map_source/_prefabs/ and your ready for radiant.

Radiant:
 All you need to do is open the prefab by going to misc > prefab and opening the prefab, then stamp the prefab and move the pieces where you want them to be. If your on a tutorial map then delete the other power switch or this wont work.

Script:
 Navigate over to your mapname.gsc in root/usermaps/mapname/scripts/zm/mapname.gsc (Not the CSC) and open it.
 
 Below this
Code Snippet
Plaintext
#using scripts\zm\zm_usermap;
Add this
Code Snippet
Plaintext
#define PAP_WEAPON_KNUCKLE_CRACK		"zombie_knuckle_crack"


 At the bottom of the main function, add this
Code Snippet
Plaintext
thread buildableinit();

 And finally at the bottom of your gsc, paste this
Code Snippet
Plaintext
function buildableinit()
{
buildTable = getEnt("powcraft_crafting_trig", "targetname");
buildTable SetHintString("Missing parts");
buildTable SetCursorHint("HINT_NOICON");

level.allParts = 0;
level.finishedCraft = 2;

power_trigger = GetEnt("use_elec_switch", "targetname");
power_trigger TriggerEnable( false );
power_handle_model = GetEnt("elec_switch", "script_noteworthy");
power_handle_model hide();
power_clip = GetEnt("powcraft_clip_build", "targetname");
power_clip hide();
power_shaft_model = GetEnt("powcraft_build1", "targetname");
power_shaft_model hide();

level thread pick1();
level thread pick2();
}

function pick1()
{
pick_trig1 = getent("powcraft_pick1_trig", "targetname");
pick_trig1 SetHintString("Press and hold &&1 to pickup part");
pick_trig1 SetCursorHint("HINT_NOICON");
pick_model1 = getent("powcraft_pick1", "targetname");

while(1)
{
pick_trig1 waittill("trigger", player);

playfx(level._effect["powerup_grabbed"] ,GetEnt("powcraft_pick1","targetname").origin);

level.allParts++;

//IPrintLnBold(level.allParts);

thread build();

break;
}

pick_trig1 delete();
pick_model1 delete();
}

function pick2()
{
pick_trig2 = getent("powcraft_pick2_trig", "targetname");
pick_trig2 SetHintString("Press and hold &&1 to pickup part");
pick_trig2 SetCursorHint("HINT_NOICON");
pick_model2 = getent("powcraft_pick2", "targetname");

while(1)
{
pick_trig2 waittill("trigger", player);

playfx(level._effect["powerup_grabbed"] ,GetEnt("powcraft_pick2","targetname").origin);

level.allParts++;

//IPrintLnBold(level.allParts);

thread build();

break;
}

pick_trig2 delete();
pick_model2 delete();
}

function build()
{

while(1)
{
self waittill( level.allParts >= level.finishedCraft );

if ( level.allParts >= level.finishedCraft )
{
buildTable = GetEnt("powcraft_crafting_trig", "targetname");
buildTable SetHintString("Press and hold &&1 to craft");
buildTable SetCursorHint("HINT_NOICON");
buildTable waittill("trigger", player);

buildTable SetHintString("");

//playfx(level._effect["powerup_grabbed"] ,GetEnt("powcraft_crafting_trig","targetname").origin);

player thread do_knuckle_crack();

wait(2.7);

thread power_crafted();

buildTable delete();
}
break;
}
}

function power_crafted()
{
power_trigger = GetEnt("use_elec_switch", "targetname");
power_trigger TriggerEnable( true );
playfx(level._effect["powerup_grabbed"] ,GetEnt("use_elec_switch","targetname").origin);
power_handle_model = GetEnt("elec_switch", "script_noteworthy");
power_handle_model show();
power_clip = GetEnt("powcraft_clip_build", "targetname");
power_clip show();
power_shaft_model = GetEnt("powcraft_build1", "targetname");
power_shaft_model show();
}

/*
KNUCKLE CRACK SCRIPT
*/
function private do_knuckle_crack()
{
self endon("disconnect");
self upgrade_knuckle_crack_begin();

self util::waittill_any( "fake_death", "death", "player_downed", "weapon_change_complete" );

self upgrade_knuckle_crack_end();

}


// Switch to the knuckles
//
function private upgrade_knuckle_crack_begin()
{
self zm_utility::increment_is_drinking();

self zm_utility::disable_player_move_states(true);

primaries = self GetWeaponsListPrimaries();

original_weapon = self GetCurrentWeapon();
weapon = GetWeapon( PAP_WEAPON_KNUCKLE_CRACK );



self GiveWeapon( weapon );
self SwitchToWeapon( weapon );
}

// Anim has ended, now switch back to something
//
function private upgrade_knuckle_crack_end()
{
self zm_utility::enable_player_move_states();

weapon = GetWeapon( PAP_WEAPON_KNUCKLE_CRACK );

// TODO: race condition?
if ( self laststand::player_is_in_laststand() || IS_TRUE( self.intermission ) )
{
self TakeWeapon(weapon);
return;
}

self zm_utility::decrement_is_drinking();

self TakeWeapon(weapon);
primaries = self GetWeaponsListPrimaries();
if( IS_DRINKING(self.is_drinking) )
{
return;
}
else
{
self zm_weapons::switch_back_primary_weapon();
}
}
/*
KNUCKLE CRACK SCRIPT END
*/
8 years ago
Hey guys, im here with a simple tutorial on how to add buyable powerups. This is what the end result should look like


 So lets start with the script, open up your mapname.gsc located in root/usermaps/mapname/scritps/zm/mapname.gsc
Make sure you dont open the CSC

 Now somewhere at the top of the gsc, add this
Code Snippet
Plaintext
#using scripts\zm\_zm_score;

 At the bottom of the main function, add this
Code Snippet
Plaintext
thread buyable_powerup();

 Now at the bottom of your gsc paste this
Code Snippet
Plaintext
function buyable_powerup()
{
level.buyable_powerup_cost = 100; // Cost for powerup
level.buyable_powerup_cooldown = 20; // Cooldown in seconds for buyable trigger
while(1)
{
while(1)
{
buyable_powerup_trig = GetEnt("buyable_powerup_trig", "targetname");
buyable_powerup_trig SetHintString("Press and hold &&1 to spawn Powerup [Cost: " + level.buyable_powerup_cost + "]");
buyable_powerup_trig SetCursorHint("HINT_NOICON");
buyable_powerup_spawn = struct::get( "powerup_spawn", "targetname" );
buyable_powerup_trig waittill("trigger", player);

if(player.score >= level.buyable_powerup_cost)
{
player zm_score::minus_to_player_score(level.buyable_powerup_cost);

break;
}
}

/*
If you want a specific powerup, then uncomment the buyable_powerup_spawn below and delete or comment out the one above it.
Available Powerups: double_points, free_perk, full_ammo, nuke, fire_sale, carpenter, insta_kill, shield_charge, bonfire_sale,
*/

buyable_powerup_spawn thread zm_powerups::special_powerup_drop(buyable_powerup_spawn.origin);
//buyable_powerup_spawn thread zm_powerups::specific_powerup_drop("full_ammo", buyable_powerup_spawn.origin);

buyable_powerup_trig SetHintString("Recharing...");

wait(level.buyable_powerup_cooldown);
}
}


 Now for the radiant part, all you need is two things, the trigger to buy the powerup and the script_struct for where the powerup will spawn.
Make a trigger_use with this kvp
Code Snippet
Plaintext
"buyable_powerup_trig", "targetname"
Make a script_struct with this kvp
Code Snippet
Plaintext
"powerup_spawn", "targetname"
8 years ago
Hey guys, you might remember me from my WaW map Kingdom Hearts. This time i decided to base the map on Minecraft because i wanted to be the first BO3 minecraft map. I also had a ton of ideas for redstone easter eggs with levers and crafting tables which i already have a little bit scripted.

Gameplay: 10/6/16


I have most of the basic scripts out of the way, and now i just need to focus on mapping it. If you guys have any ideas of stuff to map or things to make comment and let me know :)

10/11/16 Update
Spoiler: click to open...
10/24/16 Update
Spoiler: click to open...
Progress Update 10/24/16:

Im pretty much just having fun scripting a fuck ton of random things.
8 years ago
Hey guys, i made a breakable redstone ore script for an easter egg idea i had and thought i'd show it to you guys

8 years ago
Hey guys, i decided to try to script my first script in black ops 3 and started with a buildable script. I'm sure this script could be improved greatly and  would love for someone to critique my code. Heres the script itself ( i copied the knuckle crack from the pack-a-punch script ).

Spoiler: click to open...
Code Snippet
Plaintext

#define PAP_WEAPON_KNUCKLE_CRACK "zombie_knuckle_crack"


function buildableinit()
{
// raygun_model = GetEnt("c_raygun", "targetname");
// raygun_model hide();

buildTable = getEnt("c_table", "targetname");
buildTable SetHintString("Missing parts");
buildTable SetCursorHint("HINT_NOICON");

level.allParts = 0;
level.finishedCraft = 3;

level thread pick1();
level thread pick2();
level thread pick3();

//level thread build();
}

function pick1()
{
pick_trig1 = getent("c_pick1", "targetname");
pick_trig1 SetHintString("Press and hold &&1 to pickup part");
pick_trig1 SetCursorHint("HINT_NOICON");
pick_model1 = getent("c_pickmodel1", "targetname");

while(1)
{
pick_trig1 waittill("trigger", player);

playfx(level._effect["powerup_grabbed"] ,GetEnt("c_pick1","targetname").origin);

level.allParts++;

//IPrintLnBold(level.allParts);

thread build();

break;
}

pick_trig1 delete();
pick_model1 delete();
}

function pick2()
{
pick_trig2 = getent("c_pick2", "targetname");
pick_trig2 SetHintString("Press and hold &&1 to pickup part");
pick_trig2 SetCursorHint("HINT_NOICON");
pick_model2 = getent("c_pickmodel2", "targetname");

while(1)
{
pick_trig2 waittill("trigger", player);

playfx(level._effect["powerup_grabbed"] ,GetEnt("c_pick2","targetname").origin);

level.allParts++;

//IPrintLnBold(level.allParts);

thread build();

break;
}

pick_trig2 delete();
pick_model2 delete();
}


function pick3()
{
pick_trig3 = getent("c_pick3", "targetname");
pick_trig3 SetHintString("Press and hold &&1 to pickup part");
pick_trig3 SetCursorHint("HINT_NOICON");
pick_model3 = getent("c_pickmodel3", "targetname");

while(1)
{
pick_trig3 waittill("trigger", player);

playfx(level._effect["powerup_grabbed"] ,GetEnt("c_pick3","targetname").origin);

level.allParts++;

//IPrintLnBold(level.allParts);

thread build();

break;
}

pick_trig3 delete();
pick_model3 delete();
}


function build()
{

while(1)
{
self waittill( level.allParts >= level.finishedCraft );

if ( level.allParts >= level.finishedCraft )
{
buildTable = GetEnt("c_table", "targetname");
buildTable SetHintString("Press and hold &&1 to craft");
buildTable SetCursorHint("HINT_NOICON");
buildTable waittill("trigger", player);

buildTable SetHintString("");

playfx(level._effect["powerup_grabbed"] ,GetEnt("c_table","targetname").origin);

player thread do_knuckle_crack();

wait(2.7);

buildTable SetHintString("^0Press and hold &&1 for ^2Raygun");
buildTable SetCursorHint("HINT_NOICON");

// raygun_model = GetEnt("c_raygun", "targetname");
// raygun_model show();

buildTable waittill("trigger", player);

weapon = getweapon("ray_gun");
    player giveweapon(weapon);
    player switchtoweapon(weapon); 

    // raygun_model = GetEnt("c_raygun", "targetname");
// raygun_model hide();

buildTable delete();
}
break;
}
}

function private do_knuckle_crack()
{
self endon("disconnect");
self upgrade_knuckle_crack_begin();

self util::waittill_any( "fake_death", "death", "player_downed", "weapon_change_complete" );

self upgrade_knuckle_crack_end();

}


// Switch to the knuckles
//
function private upgrade_knuckle_crack_begin()
{
self zm_utility::increment_is_drinking();

self zm_utility::disable_player_move_states(true);

primaries = self GetWeaponsListPrimaries();

original_weapon = self GetCurrentWeapon();
weapon = GetWeapon( PAP_WEAPON_KNUCKLE_CRACK );



self GiveWeapon( weapon );
self SwitchToWeapon( weapon );
}

// Anim has ended, now switch back to something
//
function private upgrade_knuckle_crack_end()
{
self zm_utility::enable_player_move_states();

weapon = GetWeapon( PAP_WEAPON_KNUCKLE_CRACK );

// TODO: race condition?
if ( self laststand::player_is_in_laststand() || IS_TRUE( self.intermission ) )
{
self TakeWeapon(weapon);
return;
}

self zm_utility::decrement_is_drinking();

self TakeWeapon(weapon);
primaries = self GetWeaponsListPrimaries();
if( IS_DRINKING(self.is_drinking) )
{
return;
}
else
{
self zm_weapons::switch_back_primary_weapon();
}
}

Here is a video of the script

Not sure if the script is worth copying if you wanna use the script go ahead and just credit me, thanks


Double Post Merge: October 02, 2016, 02:57:13 pm
i cant edit my post, but can a mod or someone delete everything with "raygun_model" from my code. Or comment it out because it was something i tried that didn't work but forgot to take it out, thanks
8 years ago
~IMPORTANT~If you want the intro cinematic and buyable endgame cinematic (Both solo only) then you need to drag the main folder into your Call of Duty World at War root directory. If you are unsure on what to do then follow this short tutorial below.
https://www.youtube.com/watch?v=TDPj-EIPnE4

Hey guys, this map is based on the game Kingdom Hearts, with various model's ripped from the game and rigged by me and my friend Josemassacre. The map offers buildable power, buildable mystery box, and a buildable wonder weapon. There are 4 ported stages/worlds ripped the game and clipped out by me. There is a 3 Keyblade easter egg required to reach the buyable endgame area that will play a cinematic (Cinematic only works in SOLO play but buyable endgame still functions in coop). Any questions or bug's found please let me know in the comments.










~Credits~
Traverse Town, Destiny Islands, Shadow Heartless, Dark Riku, and Powerwild Heartless were all rigged by Josemassacre
Underworld, twilight town area, Neoshadow, Dusk, Roxas, Kairi, Namine, and other model's were ripped and rigged by me.
CFGFactory for Black ops, Black ops 2, and MW3 weapons
Tom's tool's and music box
This zombie respawn script for making the map possible https://ugx-mods.com/forum/index.php/topic,2928.15.html
Various other tutorial's on Zombiemodding and UGX
If i missed something please let me know and i will add you to this list

8 years ago
Loading ...