only on Xenia, as of now!
Coronavirus-19
Posts
-
it is gonna be possible to play the dlc 5 maps on pc? (black ops 2) -
[ZM] BO3's Three hit system and increased health for Juggernog as well! v3!To add this script first copy n' paste this code into Notepad++ then save it as a ".txt" after edit the change ".txt" to ".gsc" -- if you don't know how to do that open up a random folder look for "View" at the top and click it. A drop down menu should appear and you'll see "Show" at the bottom, click it and you'll see "File name extension" and should be able to change ".txt" to ".gsc"
--You can name the file whatever you want, just make sure it ends with ".gsc"
After the File name extension change add the ".gsc" to the Plutonium folders by:
Win + R and Run "%localappdata%" then search for "Plutonium" and go the folders as shown: Local/Plutonium/storage/t6/scripts/zmRaw Code:
#include common_scripts\utility; #include maps\mp\_utility; init() { level thread global_player_connect_handler(); } // ------------------------- // GLOBAL PLAYER CONNECT // ------------------------- global_player_connect_handler() { for(;;) { level waittill("connected", player); // make sure EVERY client gets the code player thread player_spawn_handler(); } } // ------------------------- // PLAYER SPAWN HANDLER // ------------------------- player_spawn_handler() { self endon("disconnect"); level endon("game_ended"); for(;;) { self waittill("spawned_player"); // ensure each new spawn has these set self.jugActive = false; self.health_initialized = false; self thread enforce_health_system(); self thread monitor_perks(); self thread revive_handler(); } } // ------------------------- // ENFORCE HEALTH (RUNS EVERY 250ms) // ------------------------- enforce_health_system() { self endon("disconnect"); level endon("game_ended"); for(;;) { wait 0.25; if (self.jugActive) { if (self.maxhealth != 300) { self.maxhealth = 300; self.health = self.maxhealth; } } else { if (self.maxhealth != 150) { self.maxhealth = 150; self.health = self.maxhealth; } } } } // ------------------------- // PERK MONITOR // ------------------------- monitor_perks() { self endon("disconnect"); level endon("game_ended"); for(;;) { wait 0.25; currentJug = self hasPerk("specialty_armorvest"); if (!isDefined(self.jugActive) || currentJug != self.jugActive) { self.jugActive = currentJug; if (currentJug) { self.maxhealth = 300; self.health = self.maxhealth; self IPrintLnBold("^2Juggernog: 300 HP"); } else { self.maxhealth = 150; self.health = self.maxhealth; self IPrintLnBold("^1Jug lost: 150 HP"); } } } } // ------------------------- // REVIVE HANDLER // ------------------------- revive_handler() { self endon("disconnect"); level endon("game_ended"); for(;;) { self waittill("player_revived"); // revive resets health → reapply our rules self.maxhealth = 150; self.health = self.maxhealth; self IPrintLnBold("^3Revived → HP reset to 150"); } } -
BO3's System for Max Ammo for BO1This script overrides the max ammo to function like BO3's Max Ammo!
Installation
Plutonium/storage/t5/scripts/sp
Raw Code
#include maps\_utility; init() { level thread on_player_connect(); } on_player_connect() { for (;;) { level waittill("connected", player); player thread max_ammo_clip_fix(); } } max_ammo_clip_fix() { self endon("disconnect"); lastAmmoCheck = []; for (;;) { wait 0.1; weapons = self getweaponslist(); i = 0; while (i < weapons.size) { weapon = weapons[i]; if (!self hasweapon(weapon)) { i++; continue; } ammo = self getweaponammostock(weapon); maxAmmo = weaponmaxammo(weapon); // Init tracking if (!isDefined(lastAmmoCheck[weapon])) lastAmmoCheck[weapon] = ammo; // Detect Max Ammo refill if (ammo == maxAmmo && lastAmmoCheck[weapon] < maxAmmo) { self setweaponammoclip(weapon, weaponclipsize(weapon)); } lastAmmoCheck[weapon] = ammo; i++; } } } -
[ZM] Iron Fist on Round 1 of OriginsThe Iron Fists/ One Inch Punch has been my favorite melee since it's debut. I know the steps to require it can take some time and by the time to get it the Iron Fist is a two-hit kill!
-
CREDIT: https://forum.plutonium.pw/topic/16828/resource-gsc-give-yourself-the-one_inch_punch-correctly
-
I updated the code and also allowed the Iron Fist to be a one-shot kill for further rounds!
-
I will make an update for the upgraded version and the elemental versions too!
-
Iron Fist and Damage Mod for it was be separate in-case you just want the fist by itself!
-
Command will be through in-game chat by typing and entering "#fist"
-
Setup for the correct placements for the scripts:
Put the iron_fist.gsc and iron_fist_infdmg.gsc in zm_tomb, so it should be "Plutonium/storage/t6/scripts/zm/zm_tomb".
Create a new folder within zm, so it should be "Plutonium/storage/t6/scripts/zm/replaced", and put infdmgfist.gsc in there!
NOTE you can edit the damage, have fun and enjoy!
Raw Code:
#include maps\mp\_utility; #include maps\mp\zombies\_zm_weap_one_inch_punch; init() { level thread on_player_connect(); level thread command_bar(); } on_player_connect() { for (;;) { level waittill("connected", player); player thread on_player_spawned(); } } on_player_spawned() { self endon("disconnect"); for (;;) { self waittill("spawned_player"); } } command_bar() { level endon("end_game"); prefix = "#"; for (;;) { level waittill("say", message, player); if (!isDefined(message) || !isDefined(player)) continue; message = toLower(message); if (message[0] == prefix) { args = strtok(message, " "); command = getSubStr(args[0], 1); switch (command) { case "fist": player thread give_iron_fist(); break; } } } } give_iron_fist() { self endon("disconnect"); self freezecontrols(true); current_weapon = self getcurrentweapon(); if (isDefined(current_weapon)) self takeweapon(current_weapon); // Optional flourish animation self giveweapon("zombie_one_inch_punch_upgrade_flourish"); self switchtoweapon("zombie_one_inch_punch_upgrade_flourish"); wait 1.5; self freezecontrols(false); self takeweapon("zombie_one_inch_punch_upgrade_flourish"); // Give & activate regular Iron Fist self giveweapon("one_inch_punch_zm"); self switchtoweapon("one_inch_punch_zm"); // Enable proper Iron Fist melee handling self thread monitor_melee_swipe(); self iprintlnbold("Iron Fist Equipped!"); } monitor_melee_swipe() { self endon("disconnect"); for (;;) { self waittill("melee"); // add hit effect logic here if desired } } -
-
[ZM] [RELEASE] Running and Reloading!This isn't true running and reloading, more so an illusion. In Black Ops 2, running and reloading at the same time isn’t actually a scriptable feature — it’s hard-locked by the game engine itself.
Why true “run + reload” isn’t possible in BO2 (and why this is a workaround)
When you reload:
• The engine forces the player out of sprint
• Sprint is only allowed while moving forward
• Reload animations temporarily override movement logic
• Scripts do not receive early reload input events
Because of this, there’s no exposed function in GSC to:
• Detect the reload button press early
• Override sprint restrictions
• Allow sprinting during reload
• Change movement state mid-animation
Those checks happen below the scripting layer, inside the player movement code (pm_* functions), which GSC can’t modify.
═══════════════════════════════════════════So how does this script work?
Instead of true sprint-reload, the script:
• Detects when the engine flags the player as “reloading”
• Temporarily boosts walk speed
• Restores normal speed once reload finishes
This creates the illusion of running while reloading:
• Movement feels faster
• No animation breaking
• No desync
• No crashes
It’s the closest possible result without engine hooks or custom DLLs.Path: Win + R "%localappdata%"
- Plutonium/storage/t6/scripts/zm
Raw Code:
#include maps\mp\_utility; init() { level thread onPlayerConnect(); } onPlayerConnect() { for ( ;; ) { level waittill("connected", player); player thread onPlayerSpawned(); } } onPlayerSpawned() { self endon("disconnect"); for ( ;; ) { self waittill("spawned_player"); // Start reload speed monitor self thread reloadWalkSpeedBoost(); } } reloadWalkSpeedBoost() { self endon("disconnect"); self endon("death"); normalSpeed = 1.0; // default speed is 1.0 reloadSpeed = 1.5; // adjust if needed (1.2–1.5 safe) wasReloading = false; for (;;) { isNowReloading = self isReloading(); // Detect reload START (edge detection) if ( isNowReloading && !wasReloading ) { self setMoveSpeedScale(reloadSpeed); } // Detect reload END if ( !isNowReloading && wasReloading ) { self setMoveSpeedScale(normalSpeed); } wasReloading = isNowReloading; wait 0.05; } } -
[Release] [ZM] “Stim Shot” Movement ScriptThis script adds a stim-shot–style movement boost to Black Ops 2 Zombies using pure GSC, no hooks or engine mods required.
By double-tapping the sprint button, the player temporarily equips a hidden consumable (syrette_zm) that:
• Plays the injection animation
• Grants a temporary walk/run speed boost
• Automatically removes itself after the animation finishes
• Restores the player’s original weapon afterward
Controls
• Double-tap Sprint → Activate stim boost
• Speed boost automatically ends when the animation finishes!Raw Code:
#include maps\mp\_utility; init() { level thread onPlayerConnect(); } onPlayerConnect() { for (;;) { level waittill("connected", player); player thread heroinListener(); } } heroinListener() { self endon("disconnect"); self endon("death"); lastPressTime = 0; sprintHeld = false; normalSpeed = 1.0; boostSpeed = 1.5; // Adjust as needed for (;;) { wait 0.05; // Detect NEW sprint press (edge detection) if ( self sprintbuttonpressed() ) { if ( !sprintHeld ) { sprintHeld = true; currentTime = getTime(); // Double-tap window (300 ms) if ( currentTime - lastPressTime <= 300 ) { currentWeapon = self getCurrentWeapon(); // Give consumable self giveWeapon("syrette_zm"); self switchToWeapon("syrette_zm"); // Apply speed boost self setMoveSpeedScale(boostSpeed); // Let animation play wait 2; // Remove consumable self takeWeapon("syrette_zm"); // Remove speed boost self setMoveSpeedScale(normalSpeed); // Restore previous weapon if ( isDefined(currentWeapon) ) { self switchToWeapon(currentWeapon); } lastPressTime = 0; wait 0.3; } else { lastPressTime = currentTime; } } } else { // Button released → allow next tap sprintHeld = false; } } } -
[ZM] Nightmare ModeZombies can either get challenging or scary — I think I achieved both!
ONLY for the Tranzit Maps!
This game mode introduces ultra fast zombies on round 100!
Features of this mode:
-
You get one grace round, that being round 1, & during this gather perks, weapons, upgrade, etc.
-
The game forces Round 100.
-
Max Ammo Monitoring (50%) Drop System if players kill a zombie having no ammo! Empty weapon must be out for this to function.
-
All perks are given and are given back when revived, except Quick Revive!
-
Solo Quick Revive Function for Co-Op, Self Resurrection!
-
Quick Revive cost 6,000 Points.
-
Spawn in with the Ray Gun Mark II.
-
Base Health is 150 and with Juggernog it's 300 HP!
Raw Code is highly descriptive — should be easy to make adjustments!
#include maps\mp\_utility; #include maps\mp\zombies\_zm_utility; #include maps\mp\zombies\_zm_spawner; #include maps\mp\gametypes_zm\_hud_util; #include common_scripts\utility; init() { // Modify perk costs (Quick Revive, etc.) modifyPerkCosts(); // Start the max ammo monitor level thread zombieMaxAmmoMonitor(); } main() { // Override default zombie health calculation replacefunc( maps\mp\zombies\_zm::ai_calculate_health, ::ai_calculate_health ); // Zombie systems thread force_round_system(); thread force_zombie_speed(); // Player systems level thread global_player_connect_handler(); } global_player_connect_handler() { for(;;) { level waittill("connected", player); // make sure EVERY client gets the code player thread player_spawn_handler(); } } player_spawn_handler() { self endon("disconnect"); level endon("game_ended"); for(;;) { self waittill("spawned_player"); flag_wait("initial_blackscreen_passed"); wait 0.2; // small safety delay self.jugActive = false; self.health_initialized = false; self thread give_start_weapon(); self thread give_allowed_perks(); self thread enforce_health_system(); self thread monitor_perks(); self thread revive_handler(); self thread quick_revive_monitor(); self thread force_fog_settings(); } } // ------------------------- // FORCE FOG SETTINGS // ------------------------- force_fog_settings() { self endon("disconnect"); level endon("game_ended"); for(;;) { self setClientDvar("r_fog", 1); wait 1; // Re-apply every second in case the game resets it } } // ------------------------- // SPAWN WITH THE RAY GUN MK II // ------------------------- give_start_weapon() { self endon("disconnect"); level endon("game_ended"); wait 0.3; // give engine time to finish default loadout // Give Ray Gun Mark 2 self giveWeapon("raygun_mark2_zm"); self switchToWeapon("raygun_mark2_zm"); self giveMaxAmmo("raygun_mark2_zm"); self IPrintLnBold("^5Bonus Weapon Given"); } // ------------------------- // Quick Revive Price Change // ------------------------- modifyPerkCosts() { level._custom_perks = []; level._custom_perks["specialty_quickrevive"] = spawnStruct(); level._custom_perks["specialty_quickrevive"].cost = 6000; level._custom_perks["specialty_quickrevive"].hint_string = "^5Quick Revive ^7Cost: "; } // ------------------------- // SPAWN WITH SPECIFIC PERKS (EXCEPTION QUICK REVIVE) // ------------------------- give_allowed_perks() { allowedPerks = []; allowedPerks[0] = "specialty_armorvest"; // Jug allowedPerks[1] = "specialty_rof"; // Double Tap allowedPerks[2] = "specialty_longersprint"; // Stamin-Up allowedPerks[3] = "specialty_fastreload"; // Speed Cola allowedPerks[4] = "specialty_scavenger"; // Tombstone foreach(perk in allowedPerks) { if(!(self hasperk(perk))) { self maps\mp\zombies\_zm_perks::give_perk(perk, 0); wait 0.15; } } // Map-specific extras via mods, would still be given PhD won't work FULLY! if(level.script == "zm_transit") { extraPerks = []; extraPerks[0] = "specialty_additionalprimaryweapon"; // MULE KICK extraPerks[1] = "specialty_deadshot"; // DEADSHOT extraPerks[2] = "specialty_flakjacket"; // PHD foreach(perk in extraPerks) { if(!(self hasperk(perk))) { self maps\mp\zombies\_zm_perks::give_perk(perk, 0); wait 0.15; } } } } // ------------------------- // ENFORCE HEALTH (RUNS EVERY 250ms) // ------------------------- enforce_health_system() { self endon("disconnect"); level endon("game_ended"); for(;;) { wait 0.25; if (self.jugActive) { if (self.maxhealth != 300) { self.maxhealth = 300; self.health = self.maxhealth; } } else { if (self.maxhealth != 150) { self.maxhealth = 150; self.health = self.maxhealth; } } } } // ------------------------- // PERK MONITOR // ------------------------- monitor_perks() { self endon("disconnect"); level endon("game_ended"); for(;;) { wait 0.25; currentJug = self hasPerk("specialty_armorvest"); if (!isDefined(self.jugActive) || currentJug != self.jugActive) { self.jugActive = currentJug; if (currentJug) { self.maxhealth = 300; self.health = self.maxhealth; self IPrintLnBold("^2Juggernog: 300 HP"); } else { self.maxhealth = 150; self.health = self.maxhealth; self IPrintLnBold("^1Jug lost: 150 HP"); } } } } // ------------------------- // REVIVE HANDLER // ------------------------- revive_handler() { self endon("disconnect"); level endon("game_ended"); for(;;) { self waittill("player_revived"); wait 0.3; // allow engine to finish revive logic // Reset base health self.maxhealth = 150; self.health = self.maxhealth; self IPrintLnBold("^3Revived → HP reset to 150"); // Restore allowed perks self thread give_allowed_perks(); } } // ------------------------- // QUICK REVIVE AUTO-REVIVE (COOP) // ------------------------- quick_revive_monitor() { self endon("disconnect"); level endon("game_ended"); for(;;) { self waittill("player_downed"); // Only works in coop (2+ players) if(level.players.size > 1 && self HasPerk("specialty_quickrevive")) { wait 1; // let downed animation finish maps\mp\zombies\_zm_laststand::auto_revive(self); self IPrintLnBold("^2Quick Revive Activated!"); } } } zombieMaxAmmoMonitor() { level endon("game_ended"); prev_count = 0; level.forced_max_ammo = false; for(;;) { players = get_players(); curr_count = GetAiArray("axis").size; // Check if any player just hit 0 ammo foreach(player in players) { if(!isDefined(player.prev_ammo)) player.prev_ammo = calculate_total_ammo(player); current_ammo = calculate_total_ammo(player); if(current_ammo == 0 && player.prev_ammo > 0) level.forced_max_ammo = true; player.prev_ammo = current_ammo; } // Detect zombie death if(curr_count < prev_count) { min_perc = 1.0; foreach(player in players) { total_left = calculate_total_ammo(player); total_max = calculate_total_max(player); if(total_max > 0) { perc = total_left / total_max; if(perc < min_perc) min_perc = perc; } } drop = false; // 100% if someone fully ran out if(level.forced_max_ammo) { drop = true; level.forced_max_ammo = false; } else { max_desp = 1.0 - min_perc; chance = int(50 * (max_desp * max_desp)); // Adjustable (where [50] is & only on this line!) if(randomInt(100) < chance) drop = true; } if(drop && players.size) { player = players[randomInt(players.size)]; drop_origin = player.origin + (randomIntRange(-120,120), randomIntRange(-120,120), 50); trace = bulletTrace(drop_origin + (0,0,100), drop_origin + (0,0,-400), 0, player); level thread maps\mp\zombies\_zm_powerups::specific_powerup_drop("full_ammo", trace["position"]); } } prev_count = curr_count; wait 0.1; } } calculate_total_ammo(player) { weapons = player GetWeaponsList(); total = 0; foreach(weapon in weapons) total += player GetWeaponAmmoClip(weapon) + player GetWeaponAmmoStock(weapon); return total; } calculate_total_max(player) { weapons = player GetWeaponsList(); total = 0; foreach(weapon in weapons) total += WeaponClipSize(weapon) + WeaponMaxAmmo(weapon); return total; } // // =============================== // FORCE ROUND TO 100 // =============================== // force_round_system() { level endon("game_ended"); wait 8; // allow map to fully initialize for(;;) { wait 0.2; if(!isDefined(level.round_number)) continue; if(level.round_number < 99) // Adjustable { level.round_number++; // Properly update round display level notify("round_start"); iprintlnbold("^1FORCED ROUND: ^7" + level.round_number); } } } // // =============================== // FORCE ZOMBIE ANIMATION (HARD LOOP) // =============================== // force_zombie_speed() { level endon("game_ended"); // Wait for Round 1 to start level waittill("start_of_round"); // Wait for Round 2 to start level waittill("start_of_round"); for(;;) { wait 5; zombies = getAIArray(level.zombie_team); foreach(zombie in zombies) { if(isdefined(zombie) && !(isdefined(zombie.is_traversing) && zombie.is_traversing) && (isdefined(zombie.ai_state) && zombie.ai_state == "find_flesh") && zombie.zombie_move_speed != "chase_bus") { zombie set_zombie_run_cycle("chase_bus"); } } } } // // ================================================== // ZOMBIE HEALTH + INSTAKILL // - No round cap // - HP Adjustments at 100+ // ================================================== // ai_calculate_health( round_number ) { if ( round_number >= 100 ) { level.zombie_health = 25000; // Adjustable return; } level.zombie_health = level.zombie_vars["zombie_health_start"]; i = 2; while ( i <= round_number ) { if ( i >= 10 ) { level.zombie_health += int( level.zombie_health * level.zombie_vars["zombie_health_increase_multiplier"] ); } else { level.zombie_health += level.zombie_vars["zombie_health_increase"]; } i++; } // Overflow protection if ( level.zombie_health <= 0 ) { level.zombie_health = level.zombie_vars["zombie_health_start"]; } }Path: Win + R "%localappdata%"
- Plutonium/storage/t6/scripts/zm/zm_transit
Credit:
-
-
BO3's 3-Hit System & increased health for Juggernog on BO1!This script overrides the health function and increases it to 150 HP then 300 HP when Juggernog is obtained. Also properly resets when downed and revived!
Installation
Plutonium/storage/t5/scripts/sp
Raw Code
#include maps\_utility; init() { level thread on_player_connect(); } on_player_connect() { for (;;) { level waittill("connected", player); player thread health_controller(); } } health_controller() { self endon("disconnect"); for (;;) { wait 0.05; // Determine max HP if (self hasperk("specialty_armorvest")) { self.maxhealth = 300; } else { self.maxhealth = 150; } // Force regen override if (self.health < self.maxhealth && self.health > 0) { self.health += 2; if (self.health > self.maxhealth) { self.health = self.maxhealth; } } } } -
[ZM][RELEASE] First Box Patch + Timer + Movement Speed Patch for VerrucktLuciTheFen %localappdata%/Plutonium/storage/t4/raw/scripts/sp/nazi_zombie_asylum
-
[ZM] Origins Permasnow (TEST)Permanent Snow after Round 1!
This mod is for anyone that wants the Ice Staff on an earlier round.
Any issues please state them in the comments!
Files: Plutonium/storage/t6/scripts/zm/zm_tomb
Raw Code:
init() { level thread force_snow_weather(); } force_snow_weather() { // Wait for Origins weather controller to start wait 5; // Stop Origins from cycling weather level.weather_cycle_enabled = false; level.weather_state = "snow"; setDvar("weather", "snow"); setDvar("weather_state", "snow"); // Loop to keep overriding anything the game tries to change while (1) { level.weather_state = "snow"; setDvar("weather", "snow"); setDvar("weather_state", "snow"); wait 5; } } -
[ZM] Emotes & Gestures Script (VERSION 2 RELEASE)!Just Some Fun Shit!

These scripts add gesture, emote, consumable, and buildable equip functionality that can be activated using the D-Pad (Action Slots) and work with keyboard bindings.
Input Methods
Controller:
• Uses D-Pad / Action Slot buttons (Action Slot 1–4 depending on script)
Keyboard:
• Functions via mapped action-slot keys.
Behavior Details
Repeatable Use
• Single Tap for Action Buttons 3 & 4.
• Double Tap for Action Buttons 1 & 2.
Most gestures (e.g. knuckle crack, syrette-style animations) are:
• Fully repeatable
• Reset correctly after each use
• Safe to activate multiple times in one game
Map-Specific Gestures and equipment
• Some gestures / emotes are map-specific
• Jetgun is for the Tranzit maps only!
Availability depends on:
• Map scripting
• Loaded assets
• Internal animation support
If a gesture exists on the map, it can generally be reused without issue!
️ Important Limitation
If a buildable is already equipped or actively attached (example: Zombie Shield already on the player), attempting to equip another buildable or gesture may fail or do nothing due to engine restrictions.
• This is a game limitation, not a script bug!