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.

Messages - marinescdude

To change the train wallbuy on Shadows of Evil, use this:
 
Code Snippet
gamescript
foreach(ent in GetEntArray("train_buyable_weapon", "script_noteworthy"))
    ent.zombie_weapon_upgrade = "s2_sten";

I've yet to figure out how to change the spawned weapon model, currently returning an error indicating that the .model property of the usual ent.target entity is read-only.
2 months ago
Okay good to see there have indeed been random weapon power-ups publicly available for use, still some changes from natesmithzombies' version (download from KillJoy's megathread) that are required:
 
Code Snippet
cpp
//nsz_powerup_weapon.csc/zm_powerup_random_weapon.csc

//change "weapon" with "random_weapon" so hacker scripts know it's not hackable

function __init__()
{
    zm_powerups::include_zombie_powerup( "random_weapon" );
    zm_powerups::add_zombie_powerup( "random_weapon" );
}
Code Snippet
cpp
//nsz_powerup_weapon.gsc/zm_powerup_random_weapon.gsc

zm_powerups::register_powerup( "random_weapon", &grab_weapon, &setup_weapon );
if( ToLower( GetDvarString( "g_gametype" ) ) != "zcleansed" )
{
    zm_powerups::add_zombie_powerup( "random_weapon", "tag_origin", "", &zm_powerups::func_should_never_drop, POWERUP_ONLY_AFFECTS_GRABBER, !POWERUP_ANY_TEAM, !POWERUP_ZOMBIE_GRABBABLE );
    zm_powerups::powerup_set_statless_powerup("random_weapon");
    zm_powerups::powerup_set_player_specific("random_weapon", 1);
}
Code Snippet
cpp
//nsz_powerup_weapon.gsc/zm_powerup_random_weapon.gsc

//remove weapon_lookup_table function above this, func_should_drop_weapon below this

function setup_weapon( player )
{
    //level.weapon_lookup_table = array::randomize( level.weapon_lookup_table );
    keys = array::randomize( GetArrayKeys( level.zombie_weapons ) );
    if (IsDefined(level.CustomRandomWeaponWeights))
    {
        keys = player [[level.CustomRandomWeaponWeights]](keys);
    }
    weapon_to_give = keys[0];
    //pap_triggers = zm_pap_util::get_triggers();
    for ( i = 0; i < keys.size; i++ )
    {
        if ( zm_weapons::get_is_in_box( keys[i] ) )
        //if ( zm_magicbox::treasure_chest_CanPlayerReceiveWeapon( player, keys[i], pap_triggers ) )
        {
            weapon_to_give = keys[i];
            break;
        }
    }

    //w_weapon = zm_magicbox::treasure_chest_ChooseWeightedRandomWeapon();
    if(zm_weapons::can_upgrade_weapon(weapon_to_give) && !RandomInt(4))
        weapon_to_give = zm_weapons::get_upgrade_weapon(weapon_to_give);
   
    //weapon_to_give = level.weapon_lookup_table[0];
    world_gun = GetWeaponWorldModel(weapon_to_give);
    //self SetModel( world_gun );
    self useweaponmodel( weapon_to_give, world_gun );
    self.weapon_to_give = weapon_to_give;
)
Code Snippet
cpp
//nsz_powerup_weapon.gsc/zm_powerup_random_weapon.gsc

//replace GiveWeapon call with zm_weapons::weapon_give, other no. of weapons/Mule Kick checks are unnecessary

function grab_weapon( player )
{
    weaps = player getweaponslistprimaries();
    gun = self.weapon_to_give;
   
    if( player does_player_have(gun) )
        return;
   
    player zm_weapons::weapon_give( gun, zm_weapons::is_weapon_upgraded(gun) );
}

 
 
 
8 months ago
Now to figure out how to change the position of the weapon model pop-up...
Either relative movement:
Code Snippet
cpp
case "pistol_burst": //RK5
{
    ent.zombie_weapon_upgrade = "t5_olympia";
    ent.origin += (0, 10, 0);
    spawn_loc = struct::get(ent.target, "targetname");
    spawn_loc.origin += (0, 10, 0);
    break;
}
or repositioning altogether
Code Snippet
cpp
case "smg_fastfire": //Vesper
{
    ent.zombie_weapon_upgrade = "t5_aug";
    ent.origin = (3, 926, -30);
    ent.angles = (0, 180, 0);
    spawn_loc = struct::get(ent.target, "targetname");
    spawn_loc.origin = (3, 926, -30);
    spawn_loc.angles = (0, 180, 0);
    break;
}

9 months ago
 

QED Random Weapon Power-Up

China Lake from Skye's Weapon Ports for example only
www.mediafire.com

To-Do:
  • Make weapon-giving power-up specific rather than globally set
  • Add second weaponmodel to dual-wield weapon power-ups
  • Apply PaP camo to weapon models
Credits
Serious for decompiled scripts: https://github.com/shiversoftdev/t7-source
TescoFresco for reference on how to init power-up scripts: https://github.com/tescfresc/TFs-Zombie-Options
 
Quick Reference
Code Snippet
cpp
//_zm_weap_quantum_bomb.gsc

function init()
{
    ...
    quantum_bomb_register_result("random_weapon_powerup", &quantum_bomb_random_weapon_powerup_result, 60);
    ...
}

function quantum_bomb_random_weapon_powerup_result(position, player)
{
    keys = array::randomize( GetArrayKeys( level.zombie_weapons ) );
    if (IsDefined(level.CustomRandomWeaponWeights))
    {
        keys = player [[level.CustomRandomWeaponWeights]](keys);
    }
    w_weapon = keys[0];
    for ( i = 0; i < keys.size; i++ )
    {
        if ( zm_weapons::get_is_in_box( keys[i] ) )
        {
            w_weapon = keys[i];
            break;
        }
    }

    if(zm_weapons::can_upgrade_weapon(w_weapon) && !RandomInt(4))
        w_weapon = zm_weapons::get_upgrade_weapon(w_weapon);
   
    level.zombie_powerups["random_weapon"].weapon = w_weapon;
   
    dw_weapon = w_weapon.dualWieldWeapon;
    if ( dw_weapon != level.weaponNone )
        level.zombie_powerups["random_weapon"].model_name = dw_weapon.worldmodel;
    else
        level.zombie_powerups["random_weapon"].model_name = w_weapon.worldmodel;

    level thread zm_powerups::specific_powerup_drop("random_weapon", position);
}
Code Snippet
cpp
//_zm_powerup_random_weapon.gsc

#using scripts\codescripts\struct;
#using scripts\shared\ai\zombie_death;
#using scripts\shared\array_shared;
#using scripts\shared\clientfield_shared;
#using scripts\shared\flag_shared;
#using scripts\shared\flagsys_shared;
#using scripts\shared\laststand_shared;
#using scripts\shared\system_shared;
#using scripts\shared\util_shared;
#using scripts\zm\_zm_blockers;
#using scripts\zm\_zm_devgui;
#using scripts\zm\_zm_magicbox;
#using scripts\zm\_zm_melee_weapon;
#using scripts\zm\_zm_pers_upgrades;
#using scripts\zm\_zm_pers_upgrades_functions;
#using scripts\zm\_zm_powerups;
#using scripts\zm\_zm_score;
#using scripts\zm\_zm_spawner;
#using scripts\zm\_zm_utility;
#using scripts\zm\_zm_weapons;

#namespace zm_powerup_random_weapon;

//REGISTER_SYSTEM( "zm_powerup_random_weapon", &__init__, undefined )

/*function autoexec __init__sytem__()
{
    system::register("zm_powerup_random_weapon", &__init__, undefined, undefined);
}*/

function init()
{
    zm_powerups::register_powerup("random_weapon", &give_random_weapon, &setup_random_weapon);
    if(tolower(getdvarstring("g_gametype")) != "zcleansed")
    {
        zm_powerups::add_zombie_powerup("random_weapon", "zombie_pickup_minigun", &"", &zm_powerups::func_should_never_drop, 1, 0, 0);
        zm_powerups::powerup_set_statless_powerup("random_weapon");
        zm_powerups::powerup_set_player_specific("random_weapon", 1);
    }
}

function give_random_weapon(e_player)
{
    w_weapon = level.zombie_powerups["random_weapon"].weapon;
    e_player notify(#"hash_31471387");
    e_player zm_weapons::weapon_give(w_weapon, 0, 0, 1);
    wait(0.1);
}

//make sure no missing tags on weapon models
function setup_random_weapon()
{
    self useweaponmodel( level.zombie_powerups["random_weapon"].weapon, level.zombie_powerups["random_weapon"].model_name );
}

Code Snippet
cpp
//_zm_powerup_random_weapon.csc

#using scripts\codescripts\struct;
#using scripts\shared\clientfield_shared;
#using scripts\shared\system_shared;
#using scripts\zm\_zm_powerups;

#insert scripts\shared\shared.gsh;

#namespace zm_powerup_random_weapon;

REGISTER_SYSTEM( "zm_powerup_random_weapon", &__init__, undefined )

/*function autoexec __init__sytem__()
{
    system::register("zm_powerup_random_weapon", &__init__, undefined, undefined);
}*/

function __init__()
{
    zm_powerups::include_zombie_powerup("random_weapon");
    zm_powerups::add_zombie_powerup("random_weapon");
}

9 months ago
Trying to implement JBird632's Custom Claymores to replace Trip Mines needs some specific ordering: first add a new wallbuy .gsc-side while you still have location info then delete the previous ones both server- and client-side.
Code Snippet
cpp
//_zm_weapons.gsc

function init_spawnable_weapon_upgrade()
{
    zm_swap_weapons::swap_claymores();
    zm_swap_weapons::swap_wall_weapon();

Evidently trigger_radius_use did not work on its own so time to use unitriggers and then execute zm_claymore::init at the end of the function...
Code Snippet
cpp
//zm_swap_weapons.gsc

#using scripts\zm\zm_claymore;
#using scripts\zm\_zm_unitrigger;

...

function swap_claymores()
{
    foreach(ent in struct::get_array("claymore_purchase", "targetname"))
    {
        VAL = ent.zombie_weapon_upgrade;
        if(!isdefined(VAL))
        {
            continue;
        }
        spawn_loc = struct::get(ent.target, "targetname");
        claymore = Spawn("trigger_radius_use", spawn_loc.origin, 0, 84, 72);
        claymore.targetname = "claymore_trigger";
        claymore zm_unitrigger::create_unitrigger( "Hold ^3&&1^7 to buy Claymores [Cost: 1000]" , 20, &visibility_and_update_prompt);
        if(isdefined(claymore))
            claymore.spawnmodel = util::spawn_model("wallbuy_claymore", spawn_loc.origin + VectorScale((0, -0.5, 0), 1), spawn_loc.angles);
    }
    thread zm_claymore::init();
}

function visibility_and_update_prompt( player )
{
    if(isdefined(self.hint_string))
    {
        self SetHintString( self.hint_string );
    }
    return true;
}

 
change the waittill from trigger to trigger_activated:
Code Snippet
cpp
//zm_claymore.gsc

function purchaseClaymores()
{
    trigger = GetEnt("claymore_trigger", "targetname");
    trigger.zombie_cost = 1000;    
    trigger SetHintString( "Hold ^3&&1^7 to buy Claymores [Cost: 1000]" );    
    trigger SetCursorHint( "HINT_NOICON" );
    trigger.claymore_triggered = false;
   
    thread give_claymores_after_rounds();

    while(1)
    {
        trigger waittill("trigger_activated", player);
   
        ...
       
    }
   
    ...
   
}
(apparently also needed to change a PlaySoundAtPosition to use zmb_cha_ching instead of purchase)
 
 
and delete the Trip Mine structs:
Code Snippet
cpp
//zm_swap_weapons.gsc, zm_swap_weapons.csc

function swap_wall_weapon()
{

    ...

    foreach(ent in struct::get_array("claymore_purchase", "targetname"))
    {
        VAL = ent.zombie_weapon_upgrade;
        if(!isdefined(VAL))
        {
            continue;
        }
        ent struct::delete();
    }
}

 
And I suppose to find out how to make the claymore weaponmodel pop out of the wallbuy...?
9 months ago
As for the missing effects, try installing the BO3 tools additional assets and see if that fixes it. Thanks!
Haven't any luck doing that, neither did it help to make sure Campaign/Multiplayer was installed. Just must really be overlooking something on my end, and we just started to notice missing PaP muzzle flashes as well from this importing issue...
 
Another thing that might be an oversight on my part is the Dual-Wield CZ-75, having trouble removing the extended barrel off the left gun's model: usual method of hiding tag_long_barrel doesn't seem to work.
Also been pointed out to me the Death Machine sounds don't match the original Black Ops ones, seems they're still the ones from BO II/III?
10 months ago

 
Adds TheSkyeLord's weapon ports to the four Black Ops maps in Zombie Chronicles with accurate wallbuy replacements, mystery box weapons and minigun replacement for the Death Machine power-up.
 
Currently uses BOCW versions of the ballistic knife and crossbow: ballistic knife is fully functional but lacks different models for Bowie/Sickle combinations (damage buff still applies), crossbow lacks warning indicators/sounds and PaP 'monkey bomb' effect. Also at the moment does not replace Grenades or Wonder Weapons.
Claymores are available but Spikemores are not. Shangri-La easter egg cannot be completed because it is tripmine-specific.
 
Also available are optional MP weapons: AK47 (Reznov's Revenge), Uzi (choice between 25- and 32-round mag versions), Skorpion, Stoner63, Enfield, WA2000.
 
Other Changes:
  • Adjusted stats based on the original game
  • Added lobby menu option to change perk machine between PhD Flopper or Widow's Wine
  • Added lobby menu option to remove Widow's Wine from the Wunderfizz pool
  • Added lobby menu option to disable double pack-a-punch
  • Set r_modellodbias to 10, r_lodbiasrigid to -1000, r_dof_enable to 0
  • Added Improved BO3 Ray Gun, though set the damage stats back to original and changed the glow material colours to match Black Ops (white, blue when PaP)
  • Changed PaP camo to more closely resemble the original from Black Ops
  • Added lobby menu option to switch HUD perk icons to Black Ops 1 style
  • Added random weapon power-up to QED and adjusted random weapon 'starburst' pool
  • Added lobby menu option to disable Gobblegum Machine or remove model (collision still applies)
  • Added lobby menu  option to restore classic round change music (initial sounds when starting the game are currently unchanged for the base mod, but works for the version with TF's Zombie Options)
  • Added lobby menu option to enable/disable Ray Gun Mark II
  • Restored pre-Zombie-Chronicles zombie sounds
  • Added lobby menu option to disable Space Monkey rounds on Ascension
  • Added lobby menu option to add the Kino der Toten AUG Wallbuy from Wii
  • Added lobby menu option to change Deadshot price to 1000
  • Added lobby menu option to change the wallbuy between Claymores or Trip Mines
  • Added lobby menu options to remove Ballistic Knife or Crossbow from the mystery box
  • Added lobby menu options to reintroduce BO III weapons to the mystery box
  • Added lobby menu option to disable Der Wunderfizz or remove model (collision still applies)
  • Added lobby menu options to disable or change PaP camos. Multiple camo selections can either be handled by randomly picking one for the game or changing after every PaP.
  • Added lobby menu option to switch between viewmodel and overlay scope (or the ability to change mid-game) across Dragunov, L96A1, G11
  • Added lobby menu option to replace Demonic Announcer with original Samantha, Moon Richtofen, BO II Richtofen, Origins Samantha, Shadowman

Ascension Easter Egg is soloable and partially uses debug logic hidden in the original script files:
  • For 3-player games and below, the monkey round buttons have a delay of 100.5 seconds rather than the normal 0.5 seconds, allowing them all to be pressed in time
  • In Solo, Lunar Landers automatically collect the letters when in sufficient proximity to them
  • Matryoshka dolls are not needed for Solo in the final Gersh Device weapon combo step
Shangri-La Easter Egg is soloable and uses debug logic hidden in the original script files:
  • For 3-player games and below, the Eclipse mode buttons have a delay of 10 seconds rather than the normal 1 second, allowing them all to be pressed in time
  • Tile-matching step is skipped in solo upon pressing the button, this is a stopgap until I can figure out how to make them automatically match when stepping on one
  • Pressure plate is considered 'stepped on' by default in Solo so going down the slide successfully hits the switch

Base Mod:

www.mediafire.com

Version with TF's Zombie Options:

www.mediafire.com

Installation: extract into the mods folder in your root BO III installation, resulting file directory should look mods\bo_weapons\zone
Quick Installation: copy .zip into mods folder and right-click to choose an 'Extract here' option
Notes:
  • Death Machine spin up time reduced to 0.1s and spin down time reduced to 0.25s (originally 0.25s, 0.5s)
  • Incorrect splash damage, mobility for M72 Anarchy
  • Incorrect far range damage values for shotguns
  • Improved Ray Gun glowy material is set to a white colour normally and blue colour when PaP to match the original Black Ops version
  • Custom Black Ops 1 Style PaP Camo has material type changed to lit_emissive_scroll_advanced_fullspec so batteries during Ray Gun reload animation do not render over the glowy material
  • Weapon Camo Tables modified to match the parts of the weapons that actually had the Black Ops PaP Camo applied (also used for WaW PaP Camo)

Included is some support for Custom Maps:
  • Call of the Dead - Overrides existing weapons and adds Crossbow, Ballistic Knife (subject to the same lobby menu options as usual). Lobby menu option to replace Death Machine reward with Lightning Bolt (Wunderwaffe DG-2) when defeating George. Perk icon options do not work.
  • Der Riese: Declassified - Keeps wall weapons, replaces Mystery Box weapons, perk icons option disabled (already used by map), lobby menu options to restore PPSh-41/MG 42
and support for non-Rezurrection stock maps:
Shadows of Evil

Credits
TheSkyeLord
Scobalula's Cereberus to extract script files for reference purposes from Deadshot.mp4's COTD Chronicles Conversion Mod
Deadshot.mp4 for providing tools useful in determining the alignment of wallbuys
Scobalula's Greyhound to extract 'wallbuy model files' from Smurphy's BO2 Origins Mod ... which is just in practice a flat plane ...
Birdman's XModel Tools For Blender
MikeyRay, Humphrey, MotoLegacy, JBird632 for Customisable PhD Flopper
Logical Edits for Custom Perk Icons set-up
TescoFresco for TF's Zombie Options and the options menu set-up derived from it
Smurphy for Improved BO3 Ray Gun
Hogarth935 for Black Ops 1 Style PaP Camo
Ronan’s Custom Perk & Powerup Shaders
MakeCentsGaming for reference on how to add optional perk icons
JBird632's Custom Claymores
Serious for decompiled scripts (QED, _zm_powerup_genesis_random_weapon)
pmr360 for Black Ops Cold War Ballistic Knife and Crossbow
natesmithzombies and ZoekMeMaar for Custom Power-Ups, thanks also KillJoy for the Powerups Megathread
Beandon for providing Death Machine announcer voicelines
Cypress for the Monkey Exterminiation Mod used as reference because I apparently did not want to figure out Ascension monkey round code by myself
Scobalula's  Bo3Mutators for options menu set-up
Scobabula's HydraX for general asset decompilation, especially map _weapons.csv files
quizz for pointers on where to find WaW PaP camo (iw_26.iwd)
Kingslayer Kyle for the BO3 Gun Pack used for adding Ray Gun Mark II to other maps
JariKCoding for the CoDLuaDecompiler used to help fix perk icons in Der Riese: Declassified
Humphrey for Shadows of Evil Perk Shaders
Booris, J.G, Westchief596, VoiceOfJared for Shadow Man Announcer/Dr. Monty Announcer, Origins Samantha Announcer, BO1 Moon Richtofen Announcer, Richtofen Announcer respectively
Double Post Merge: June 12, 2023, 01:06:24 pm
 
Update Changelog
1ˢᵗ April 2024 13:17 GMT+1
Fixed previous Call of the Dead chalk drawings change being applied to all maps
Fixed 2D overlay option not allowing WA2000 to give an upgraded weapon from the PaP machine
 
Issues reported by TheGoldenBum, thanks for the help!
Fixed Thunder Gun not having PaP camo applied
Switched WA2000 PaP camo to be applied to the other parts of the gun rather than the wooden parts
31ˢᵗ March 2024 10:35 GMT+1
Fixed Call of the Dead having extra chalk drawings on top of the map's original ones.
Fixed switchable sniper rifle scope setup doubling reserve ammo
Known issue: default sounds (explosions, wonder weapon reloads) sometimes don't play, this is a problem with building the mod on a different system and is guaranteed to be fixed around the middle of April, though I'll see what I can do until then - just unclear when it does work and when it doesn't
 
Thanks TheGoldenBum for the suggestions!
Added Dr Monty as Demonic Announcer option
Added WA2000
18ᵗʰ March 2024 08:13 GMT
Issue reported by TheGoldenBum, thanks for the help!
Added missing BO II Richtofen Demonic Announcer option, the results in game should now align with the settings
17ᵗʰ March 2024 22:24 GMT
Added as options to replace Demonic Announcer with original Samantha (for maps using custom ones, otherwise leave it as default)/Moon Richtofen/BO II Richtofen/Origins Samantha
Thanks TheGoldenBum for the suggestion!
Added lobby menu option to replace Demonic Announcer with the Shadowman
Adjusted Enfield Black Ops/World at War PaP camo so it's no longer applied to the polymer textures
3ʳᵈ March 2024 22:25 GMT
Fixed Shadows of Evil having BO III weapons regardless of the lobby menu options
3ʳᵈ March 2024 21:21 GMT
Added support for Shadows of Evil
To-do: Change Bootlegger wallbuy model to Sten, replace powerup HUD icons with Black Ops icons
24ᵗʰ February 2024 20:20 GMT
Issue reported by poyzee, thanks for the help!
Fixed check for already-included Ray Gun Mark II (based on worldmodel check from _zm_weapons.csc), should now actually appear in the mystery box on custom maps.
19ᵗʰ February 2024 10:17 GMT
Issue reported by poyzee (Gamer Squirrel), thanks for the help!
Fixed Ray Gun Mark II not appearing on custom maps by including it by default, then removing from mystery box on stock maps that already have it
17ᵗʰ February 2024 12:18 GMT
Issue reported by Monkeyzon, thanks for the help!
Fixed custom Ray Gun Mark II being erroneously added to stock maps.
Prevented custom Ray Gun Mark II FX from overriding stock FX (the issues with said custom FX are yet to be fixed)
 
Re-implemented lobby menu option for round change sounds
Thanks Gamer Squirrel for the suggestion!
Added Ice PaP camouflage option
8ᵗʰ February 2024 14:06 GMT
Thanks Gamer Squirrel for the suggestion!
Added option to replace Death Machine powerup with Lightning Bolt (Wunderwaffe DG-2) after defeating George on Call of the Dead (name for zm_powerups::specific_powerup_drop is "tesla")
4ᵗʰ February 2024 13:25 GMT
Issue reported by Gamer Squirrel (poyzee), thanks for the help!
Fixed PhD Flopper perk icon not showing in Der Riese: Declassified
30ᵗʰ January 2024 12:28 GMT
Thanks Clapmeister for the suggestion!
Added lobby menu options to restore PPSh-41, MG 42 to Der Riese: Declassified
 
Added Circuits/WaW camo to stock weapons
 
Issue reported by poyzee, thanks for the help!
Made sure the Ray Gun Mark II is added to maps that did not already have it
27ᵗʰ January 2024 17:46 GMT
Added lobby menu option to switch between viewmodel and overlay scope (or the ability to change mid-game) across Dragunov, L115, G11
 
Issue reported by poyzee, thanks for the help!
Fixed Ballistic Knife with Sickle erroneously being added to Call of the Dead
Disabled Perk Icon change functionality on Der Riese: Declassified due to being redundant
26ᵗʰ January 2024 10:38 GMT
Fixed Black Ops PaP Camo being erroneously applied to parts of AUG, Commando, FAMAS, G11, Galil, M14, M16, AK74u, MP5K, MPL, Spectre, HK21, RPK, Dragunov, L115, HS10, SPAS-12
 
Thanks Clapmeister for the suggestion!
Added lobby menu option for WaW Camo, uses same camo rules as Black Ops
KNOWN BUG: Camo does not get applied to G11
25ᵗʰ January 2024 11:17 GMT
Thanks poyzee for the suggestion!
Added support for Call of the Dead and Der Riese: Declassified
23ʳᵈ January 2024 12:56 GMT
Thanks Clapmeister for the suggestion!
Made Ascension Easter Egg soloable
20ᵗʰ January 2024 15:24 GMT
Issue reported by poyzee, thanks for the help!
Fixed batteries rendering over the Ray Gun glowy material when using the Black Ops PaP camo during the reload animation, they are now only slightly visible behind the glowy material (this happens with other vanilla camos)
On request added option to restore Black Ops III Circuits camo for Black Ops weapons/Ray Gun/Crossbow/Ballistic Knife only (custom camos cannot be added to stock weapons)
13ᵗʰ January 2024 11:52 GMT
Thanks poyzee for the suggestion!
Changed Ray Gun glowing material to white (blue when PaP) to match the original Black Ops version
5ᵗʰ January 2024 14:16 GMT
Thanks poyzee for the suggestion!
Added lobby menu options to disable or change PaP camos.
20ᵗʰ December 2023 18:24 GMT
Issue reported by TheGoldenBum, thanks for the help!
Fixed erroneous removal of Enfield lobby menu option
19ᵗʰ December 2023 17:16 GMT
Thanks TheGoldenBum for the suggestion!
Added option to disable Der Wunderfizz
 
Issue reported by Bananascopz, thanks for the help!
Fixed waterslide step not working for 2/3-player games
12ᵗʰ December 2023 18:27 GMT
Thanks TheGoldenBum for the suggestion!
Changed red dot to higher resolution texture (BO III red dot)
Added Enfield weapon option
9ᵗʰ December 2023 12:48 GMT
Fixed optional weapons not having their model cycle through the box (changed .csc code from clientfield to DVAR method)
Fixed disabled weapons still having their model cycle through the box (RemoveZombieBoxWeapon)
8ᵗʰ December 2023 11:12 GMT
Made AK47/Uzi/Skorpion/Stoner63 options off by default
 
Thanks Dobonhonkeroo for the suggestion!
Added options to reintroduce BO III weapons to the mystery box
 
Thanks Clapmeister for the suggestion!
Added options to remove Ballistic Knife or Crossbow from the mystery box
 
Issue reported by Clapmeister, thanks for the help!
Reduced M72 Law 'Raise' time to 1.1, 'First Raise' time to 1.4
Reduced Death Machine 'First Raise' time to 1.55
 
Issue reported by TheGoldenBum, thanks for the help!
Changed all remaining PaP viewmodel muzzleflash to available effect (fx\zombie\fx_muz_lg_mg_1p_ug_zm/fx_muz_sm_pistol_1p_ug_zmb/fx_muz_rocket_xm_1p_ug_zmb.efx → fx_muz_md_rifle_1p_ugw_zmb)
25ᵗʰ November 2023 14:39 GMT
Changed Mod Options system to be based on Scobalula's Bo3Mutators, map restarts no longer occur to implement certain features
Made Shangri-La Easter Egg soloable, claymores do not in fact work during the trip mine step
28ᵗʰ October 2023 15:45 GMT+1
Swapped Shangri-La and Moon grenade wallbuys for semtex
Currently a port from the maingame BO III semtex, which doesn't have the throwing or beeping sounds of previous games
Uses standard grenade indicators as a placeholder, hud_icon_sticky_grenade doesn't seem to work
23ʳᵈ October 2023 18:21 GMT+1
Thanks Clapmeister for the suggestion!
Added lobby menu option to choose between Claymores and Trip Mines, if Shangri-La easter egg wasn't fixed behind-the-scenes
22ⁿᵈ October 2023 15:14 GMT+1
Set ADS spread to 0 and enabled Is Sniper Weapon on Dragunov, L115A1
Enabled ADS Sway View Instead of Gun on D115 Disassembler, L115 Isolator
 
Changed lobby menu option to be a drop-down with option to 'replace' Gobblegum Machines, at present this doesn't work and removes the model without affecting the collision.
At some point I'll figure out how to make the code spawn in barrels like poyzee suggested
 
Issue reported by Clapmeister, thanks for the help!
Changed Widow's Wine lobby menu option to be a drop-down with new option to remove the perk from the map rather than just Wunderfizz (restores previous functionality)
25ᵗʰ September 2023 19:43 GMT+1
Thanks Sergeant Meow 08 for the suggestion!
Added option to disable Space Monkey rounds on Ascension
19ᵗʰ September 2023 13:04 GMT+1
Changed 'Enable Widow's Wine' option to only affect Der Wunderfizz pool and not remove entirely from the game (backend change)
Added AUG wallbuy lobby menu option (BUG: currently with this option all wall weapon models will fail to spawn when buying)
Added Deadshot Price lobby menu option
Added lobby menu option to choose between spawning either PhD Flopper or Widow's Wine
10ᵗʰ September 2023 17:50 GMT+1
Added Skorpion and Stoner63 weapon options.
18ᵗʰ August 2023 09:00 GMT+1
Issue reported by Ben, thanks for the help!
 
Added compatibility for other localised versions of the game, no translations yet (was it really as easy as edit>options>build language>all)
12ᵗʰ August 2023 16:23 GMT+1
Added Death Machine announcer voicelines provided by Beandon. Post-Moon Easter Egg will still need to be tested.
9ᵗʰ August 2023 15:54 GMT+1
Made classic round change sounds apply by default and removed lobby menu option due to issues with it not applying mid-game
8ᵗʰ August 2023 15:34 GMT+1
Issue reported by street sign, thanks for the help!
 
Changed all firearm recoil settings (apart from Dragunov) to be closer to original Black Ops values, should no longer feel like they have no recoil
6ᵗʰ August 2023 14:45 GMT+1
Replaced my random weapon powerup with modified version of natesmithzombies custom powerup, fixes weapon given being globally set rather than per-powerup
5ᵗʰ August 2023 10:39 GMT+1
Fixed missing sounds for ballistic knife and crossbow
5ᵗʰ August 2023 00:29 GMT+1
Added BOCW ballistic knife and crossbow.
2ⁿᵈ August 2023 13:19 GMT+1
Thanks poyzee for the suggestion!
Added Ray Gun Mark II option
 
Thanks Beandon for the suggestion!
Restored pre-Zombie-Chronicles zombie sounds
31ˢᵗ July 2023 09:41 GMT+1
Thanks TheGoldenBum for the suggestion!
Added option to restore classic round change music
Fixed Fire Sales overriding disable GobbleGum option
30ᵗʰ July 2023 09:26 GMT+1
Issue reported by TheGoldenBum, thanks for the help!
 
Fixed AK47 not appearing in the box when enabled
29ᵗʰ July 2023 14:17 GMT+1
Adjusted M14, Olympia, MPL, Stakeout, M16 wallbuy positions in Moon
28ᵗʰ July 2023 16:59 GMT+1
Thanks TheGoldenBum for the suggestion!
Added option to disable Gobblegum Machines
27ᵗʰ July 2023 09:39 GMT+1
Added fix to make claymores work in Shangri-La easter egg, if this is confirmed to work I'll remove the front page disclaimer.
Changed Double PaP disable to a better method.
 
On popular request:
Added optional AK47 (Reznov's Revenge PaP only for now) and Uzi (both 25- and 32-round mag options).
15ᵗʰ July 2023 17:55 GMT+1
Thanks TheGoldenBum for the suggestion!
Added random weapon power-up to QED
To-do:
  • Make weapon-giving power-up specific rather than globally set
  • Add second weaponmodel to dual-wield weapon power-ups
  • Apply PaP camo to weapon models

Changed weapon pool of 'starburst' QED effect
Disabled double pack-a-punching on M1911
9ᵗʰ July 2023 16:55 GMT+1
Added Claymores
5ᵗʰ July 2023 11:37 GMT+1
Issue reported by TheGoldenBum, thanks for the help!
 
Changed PaP-d AK74u name to AK74fu2
3ʳᵈ July 2023 11:04 GMT+1
Issue reported by Monkeyzon, thanks for the help!
Reverted worldmodel PaP muzzle flash changes on AK-74u, AUG, Commando, Dragunov, FAL, FAMAS, G11, Galil, L115, M14, M16A1 due to co-op crashing issue
 
Thanks Moyai Gaming for the suggestion!
Changed M16A1 name to M16
2ⁿᵈ July 2023 11:47 GMT+1
On Popular Request:
 
Added option to use original Black Ops perk icons
1ˢᵗ July 2023 10:49 GMT+1
Changed China Lake/Mustang & Sally/M203/M72 fx to things that are actually loaded
  • explosions/fx_exp_rocket_default_sm.efx → explosions/fx_exp_rocket_default
  • weapon/fx_trail_crossbow.efx → fx/weapon/fx_trail_grenade.efx
Removed PaP-d M72 trail
Removed early unworking Claymore-replacing-Trip-Mine functionality
27ᵗʰ June 2023 15:34 GMT+1
Changed AK74u/AUG/Commando/Dragunov/FAL/FAMAS/G11/Galil/L115/M14/M16A1 PaP muzzleflash to available effect (fx_muz_md_rifle_1p_ug_zmb → fx_muz_md_rifle_1p_ugw_zmb etc.)
Changed Olympia/SPAS-12/Stakeout/HS-10 PaP muzzleflash to available effect (fx_muz_lg_shotgun_1p_ug_zmb → fx_muz_lg_gas_flash_buckshot_1p_ugw_zmb etc.)
23ʳᵈ June 2023 10:32 GMT+1
Added Hogarth935's Black Ops 1 Style PaP Camo
22ⁿᵈ June 2023 16:49 GMT+1
Changed 'Double Pack-a-Punch' option to a different method that eliminates prompt showing up.
 
Added Black Ops weapons to the mystery box in Rezurrection pack maps, until wall weapons are replaced this is a 'buyer beware' situation for playability since most chalk drawings aren't visible.
 
Fixed PaP-d Dragunov using incorrect zoom.
Issue reported by Kaidoggydawg, thanks for the help!
Fixed incorrect zoom and animation of L115 causing the scope to be incorrectly aligned for hitting things.
21ˢᵗ June 2023 15:20 GMT+1
Thanks Sergeant Meow 08 for the suggestion!
 
Added Improved Ray Gun as a preliminary measure
21ˢᵗ June 2023 09:09 GMT+1
Re-introduced options for Double Pack-a-Punch and Widow's Wine.
20ᵗʰ June 2023 14:20 GMT+1
Re-added PhD Flopper
19ᵗʰ June 2023 20:56 GMT+1
Re-carried through with change to set r_modellodbias to 10, r_lodbiasrigid to -1000, r_dof_enable to 0
19ᵗʰ June 2023 19:05 GMT+1
Reverted all changes other than ADS fixes
19ᵗʰ June 2023 14:45 GMT+1
On popular request:
 
Added PhD Flopper to replace Widow's Wine perk machines (also added option to remove Widow's Wine from the map/Wunderfizz pool if wanted)
Added option to disable double pack-a-punching
Set r_modellodbias to 10, r_lodbiasrigid to -1000, r_dof_enable to 0
 
Issue reported by Dexter307, thanks for the help!
 
Set M1911 ADS transition times to 0.1s, CZ-75 to 0.15s
18ᵗʰ June 2023 09:46 GMT+1
Issue reported by TheGoldenBum, thanks for the help!
 
Fixed PaP-d Commando aim-down-sights animation being further away from the screen than normal.
17ᵗʰ June 2023 14:58 GMT+1
Issues reported by TheGoldenBum, thanks for the help!
 
Fixed RPK not being imported into mod files and thus unobtainable
Fixed PaP-d HK21 having incorrect fire rate and magazine staying in place while reloading
17ᵗʰ June 2023 10:16 GMT+1
Aligned M16A1, PM-63, Stakeout wallbuys on Shangri-La
Thank you to Deadshot.mp4 for providing tools useful in achieving this
16ᵗʰ June 2023 15:31 GMT+1
Fixed Stakeout being obtainable from the Mystery Box in Kino der Toten
 
Issues reported by TheGoldenBum, thanks for the help!
 
Fixed PaP-d CZ-75 lacking iron sights
Fixed PaP-d Dual-Wield CZ-75 right weapon mag count and reverted long barrel removal (still need to deal with non-PaP Dual Wield which has the opposite problem)
Enabled 'Stop Trail When Stationary' for M72 Law/Anarchy projectiles, not sure if it will make the smoke issues any less of a problem
15ᵗʰ June 2023 19:46 GMT+1
Issues reported by TheGoldenBum, thanks for the help!
 
Fixed PaP-d M14 ADS zoom level being of an optics attachment rather than the default iron sights (strange variable that, zoom focal length...)
Fixed magazine staying in place when reloading PaP-d MPL
Reduced Death Machine spin up time to 0.1s and spin down time to 0.25s (originally 0.25s, 0.5s)
13ᵗʰ June 2023 20:52 GMT+1
Fixed PaP-d AUG masterkey having 30×6 reserve ammo rather than 30
13ᵗʰ June 2023 16:41 GMT+1
Actually fixed magazine staying in place when reloading PaP-d Galil, Spectre
Fixed PaP-d M14 ironsight animation
Fixed PaP-d M16A1 adding the flatrail modelgroup when switching to the underbarrel
13ᵗʰ June 2023 00:51 GMT+1
Actually fixed z-fighting on Kino der Toten PM63 wallbuy
Actually fixed PaP-d Python carrying over dual-wield animations
Reverted PaP-d Dragunov scope change and reverted ADS version of L115 Isolator scope as a stop-gap measure until scope overlays are implemented
12ᵗʰ June 2023 13:48 GMT+1
Fixed animations for PaP-d AK74u, M16A1, FAL, HK21, MP40, MP5K
Fixed China Beach name
Fixed missing ironsight for PaP-d Commando
Fixed magazine staying in place when reloading PaP-d Galil, Spectre
Fixed wrong scope on PaP-d Dragunov, L115A1
Fixed PaP-d Python carrying over dual-wield animations
Fixed PaP-d Stakeout not using grip animations
Fixed z-fighting on Kino der Toten PM63 wallbuy

 
10 months ago
After using Cerberus on a few mods I settled on adapting from https://steamcommunity.com/sharedfiles/filedetails/?id=2911456494
zm_swap_weapons.gsc
gamescript
#using scripts\codescripts\struct;
#using scripts\shared\aat_shared;
#using scripts\shared\ai\systems\gib;
#using scripts\shared\ai\zombie_utility;
#using scripts\shared\array_shared;
#using scripts\shared\callbacks_shared;
#using scripts\shared\clientfield_shared;
#using scripts\shared\flag_shared;
#using scripts\shared\laststand_shared;
#using scripts\shared\scene_shared;
#using scripts\shared\system_shared;
#using scripts\shared\util_shared;
#using scripts\zm\_util;
#using scripts\zm\_zm;
#using scripts\zm\_zm_equipment;
#using scripts\zm\_zm_perks;
#using scripts\zm\_zm_powerups;
#using scripts\zm\_zm_score;
#using scripts\zm\_zm_spawner;
#using scripts\zm\_zm_utility;
#using scripts\zm\_zm_weapons;

#namespace zm_swap_weapons;

function autoexec __init__sytem__()
{
    system::register("zm_swap_weapons", &init, &main, undefined);
}

function init()
{
}


function main()
{
    thread swap_chalk();
    level flag::wait_till("initial_blackscreen_passed");
}

function swap_wall_weapon()
{
    rk5 = 0;
    foreach(ent in struct::get_array("weapon_upgrade", "targetname"))
    {
        VAL = ent.zombie_weapon_upgrade;
        if(!isdefined(VAL))
        {
            continue;
        }
        switch( GetDvarString("mapname") )
        {
        case "zm_cosmodrome": //Ascension
            {
                switch(VAL)
                {
                    case "ar_marksman": //Sheiva
                    {
                        ent.zombie_weapon_upgrade = "t5_m14";
                        break;
                    }
                    case "pistol_burst": //RK5
                    {
                        if (rk5 == 0)
                            ent.zombie_weapon_upgrade = "t5_olympia";
                        else
                            ent.zombie_weapon_upgrade = "t5_mp5k";
                       
                        rk5 = 1;
                        break;
                    }
                break;
            }
        }
        if(isdefined(ent.target) && isdefined(VAL))
        {
            struct::get(ent.target, "targetname").model = GetWeapon(ent.zombie_weapon_upgrade).worldmodel;
        }
    }
}

function swap_chalk()
{
    foreach(ent in struct::get_array("weapon_upgrade", "targetname"))
    {
        VAL = ent.zombie_weapon_upgrade;
        if(!isdefined(VAL))
        {
            break;
        }
        switch(VAL)
        {
            case "t5_m14":
            {
                spawn_loc = struct::get(ent.target, "targetname");
                switch( GetDvarString("mapname") )
                {
                case "zm_theater": //Kino der Toten
                    {
                        ent.spawnmodel = util::spawn_model("wallbuy_m14", spawn_loc.origin, spawn_loc.angles);
                        break;
                    }
                case "zm_cosmodrome": //Ascension
                    {
                        ent.spawnmodel = util::spawn_model("wallbuy_m14", spawn_loc.origin + VectorScale((0, -1, 0), 1), spawn_loc.angles);
                        break;
                    }
                case "zm_temple": //Shangri-La
                    {
                        ent.spawnmodel = util::spawn_model("wallbuy_m14", spawn_loc.origin, spawn_loc.angles);
                        break;
                    }
                case "zm_moon":
                    {
                        ent.spawnmodel = util::spawn_model("wallbuy_m14", spawn_loc.origin, spawn_loc.angles);
                        break;
                    }
                }
                break;
            }
        }
    }
}
Very lucky the wallbuys are passed through to the script in the same order every time so we can replace the Ascension starting room RK5 with the Olympia and the other RK5 with the MP5K.
 
spawn_loc.origin + VectorScale((0, -1, 0), 1) allows adjusting the position of the chalk drawing so it matches up with the pop-up model
 
The chalk drawings themselves are spawned in with models (basically just a flat plane with UV set up to point to the relevant material) which I was lazy and unknowledgeable enough to just rip using Greyhound from https://steamcommunity.com/sharedfiles/filedetails/?id=2049603169 and re-export with Birdman's XModel Tools after conversion to .obj
 
The original chalk drawing textures are replaced with blank transparent .tiff images in texture_assets\t7_materials_zombie, easy enough to import in zm_mod.zone with an image,i_t7_zm_chalk_buy_arak_c  etc. entry
Some materials had to be added using APE because they aren't accessible by default (Argus, Pharo (i_t7_zm_chalk_buy_pharaoh_c), MP40, HVK-30).
 
 
zm_swap_weapons.csc
gamescript
#using scripts\codescripts\struct;
#using scripts\shared\callbacks_shared;
#using scripts\shared\clientfield_shared;
#using scripts\shared\flag_shared;
#using scripts\shared\system_shared;
#using scripts\shared\util_shared;
#using scripts\zm\_zm_utility;

#namespace zm_swap_weapons;

function autoexec __init__sytem__()
{
    system::register("zm_swap_weapons", &init, &main, undefined);
}

function init()
{
}

function main()
{
}

function swap_wall_weapon()
{
    //same as in zm_swap_weapons.gsc
}
Edit: To make it clearer, the zm_swap_weapons::swap_wall_weapon() function call should be put before the spawn_list/spawnable_weapon_spawns array set-up in the function. If you can't see those lines of code underneath where you've pasted, you're putting it in the wrong place.
Code Snippet
gamescript
#using scripts\zm\zm_swap_weapons;

//zm_weapons.gsc
function init_spawnable_weapon_upgrade()
{
    zm_swap_weapons::swap_wall_weapon();
   
    //pre-existing code, only copy above
    spawn_list = ;
    spawnable_weapon_spawns = struct::get_array( "weapon_upgrade", "targetname" );
    spawnable_weapon_spawns = ArrayCombine( spawnable_weapon_spawns, struct::get_array( "bowie_upgrade", "targetname" ), true, false );
    spawnable_weapon_spawns = ArrayCombine( spawnable_weapon_spawns, struct::get_array( "sickle_upgrade", "targetname" ), true, false );
    spawnable_weapon_spawns = ArrayCombine( spawnable_weapon_spawns, struct::get_array( "tazer_upgrade", "targetname" ), true, false );
    spawnable_weapon_spawns = ArrayCombine( spawnable_weapon_spawns, struct::get_array( "buildable_wallbuy", "targetname" ), true, false );
   
    ...
   
}

//zm_weapons.csc
function init()
{
    zm_swap_weapons::swap_wall_weapon();

    //pre-existing code, only copy above
    spawn_list = ;
    spawnable_weapon_spawns = struct::get_array( "weapon_upgrade", "targetname" );
    spawnable_weapon_spawns = ArrayCombine( spawnable_weapon_spawns, struct::get_array( "bowie_upgrade", "targetname" ), true, false );
    spawnable_weapon_spawns = ArrayCombine( spawnable_weapon_spawns, struct::get_array( "sickle_upgrade", "targetname" ), true, false );
    spawnable_weapon_spawns = ArrayCombine( spawnable_weapon_spawns, struct::get_array( "tazer_upgrade", "targetname" ), true, false );
    spawnable_weapon_spawns = ArrayCombine( spawnable_weapon_spawns, struct::get_array( "buildable_wallbuy", "targetname" ), true, false );
   
    ...
   
}

Now to figure out how to change the position of the weapon model pop-up...
10 months ago
Works mostly well, though I wonder if there's plans to have the dual-wield M1911 unique reload animation (one-handed manually racking the slide), assuming I haven't been overlooked something? Also the non-speedloader one-by-one reload for the Python and there's something up with the variable zoom scope attachment for the Dragunov?
 
Though speaking of things I've overlooked, any pointers on what to do if the Mustang & Sally explosion effects don't work? Damage functionality is fine but no visual feedback in the game world. At least I'm not sure - if it's relevant - where fx_exp_rocket_default_sm, fx_muz_rocket_xm_1p_ug_zmb, fx_trail_crossbow are supposed to be imported from.
10 months ago
Just thinking of  using TheSkyeLord's BO ports, seem to work for the mystery box...
Had a look around at some old WaW mods for reference, and initially thought to copy over _zm_weapons.gsc and edit init_weapon_upgrade like so:
Code Snippet
Plaintext
function init_weapon_upgrade()
{
    init_spawnable_weapon_upgrade();
   
    weapon_spawns = ;
    weapon_spawns = GetEntArray( "weapon_upgrade", "targetname" );

    for ( i = 0; i < weapon_spawns.size; i++ )
    {
        mapname = GetCurrentMap(); //no, this is Lua not GSC
        switch(mapname)
        {
        //Kino Der Toten
        case "zm_theater":
            switch ( weapon_spawns[i].zombie_weapon_upgrade )
            {
            case "ar_marksman": //Sheiva
                weapon_spawns[i].zombie_weapon_upgrade = "t5_olympia";
                break;
            case "pistol_burst": //RK5
                weapon_spawns[i].zombie_weapon_upgrade = "t5_m14";
                break;
            case "smg_burst": //Pharo
                weapon_spawns[i].zombie_weapon_upgrade = "t5_pm63";
                break;
            //Remove Vesper
            case "shotgun_precision": //Argus
                weapon_spawns[i].zombie_weapon_upgrade = "t5_stakeout";
                break;
            case "smg_waw_mp40":
                weapon_spawns[i].zombie_weapon_upgrade = "t5_mp40";
                break;
            case "ar_standard": //KN-44
                weapon_spawns[i].zombie_weapon_upgrade = "t5_mp5k";
                break;
            case "ar_accurate": //ICR-1
                weapon_spawns[i].zombie_weapon_upgrade = "t5_m16a1";
                break;
            case "pistol_fullauto": //L-CAR 9
                weapon_spawns[i].zombie_weapon_upgrade = "t5_mpl";
                break;
            case "smg_versatile": //VMP
                weapon_spawns[i].zombie_weapon_upgrade = "t5_ak74u";
                break;*/
            /*case "bowie_knife": //handle these later
                weapon_spawns[i].targetname = "bowie_upgrade";
                break;
            case "bouncingbetty":
                weapon_spawns[i].zombie_weapon_upgrade = "bouncingbetty";
                break;
            case "frag_grenade":
                weapon_spawns[i].zombie_weapon_upgrade = "stielhandgranate";
                break;*/
            }
            break;
       
           ...
       
       }
           
       weapon_spawns[i].weapon = GetWeapon( weapon_spawns[i].zombie_weapon_upgrade )
Spoiler: click to show...
maybe figure out the map-specific part of the code later
Then thought to move the code after that last line and test the switch statement for weapon_spawns[ i ].weapon instead with appropriate GetWeapon calls.
Tried doing similar in reset_wallbuys but I don't think that was meant to work either.

Maybe I'll get help starting on the chalk outlines as well while I'm at it...
1 year ago
Great map, but three problems 1) no 500 points at start of round 2). 600 points for M14? - you used the modified Gewehr 43, didn't you. 3) Power for perks? Otherwise, it's a fine map.
8 years ago
Loading ...