Skip to content
  • 0 Unread 0
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
Collapse

Plutonium

Erkikundefined

Erkik

@Erkik
About
Posts
11
Topics
2
Shares
0
Groups
0
Followers
0
Following
0

Posts

Recent Best Controversial

  • Working on a T6 Zombies Overhaul GSC - Coming soon!
    Erkikundefined Erkik

    Thanks for the feedback guys! Dec G0LD3N 4RM , I totally hear you. Vanilla BO2 can feel a bit 'empty' after round 20 if there's nothing to grind for.

    I'm actually looking into a persistent XP system or some kind of 'In-Game Shop' where players can unlock permanent perks or weapon tiers using their score. My goal is to make every match feel like you're building towards something bigger.

    I've been deep-diving into the BO2 engine code to understand how to manipulate the HUD and the game logic natively. I've just successfully applied a demo script to my test server to showcase this research.

    It includes some of the QoL features I mentioned, and I'm using it as a foundation to build the 'Progression System' you guys suggested. It feels much more rewarding already! I'll be sharing more details and the source code as soon as I polish the latest build.

    General Discussion

  • [GSC Release] Ultimate T6 Zombies Overhaul: Modern HUD, Hitmarkers, Auto-Reload & Advanced Commands
    Erkikundefined Erkik

    TherealGTM
    Hey there! Yes, you can absolutely use this for individual play!

    BO2 Modding Releases & Resources bo2 zombies gsc hud commands origins script

  • [GSC Release] Ultimate T6 Zombies Overhaul: Modern HUD, Hitmarkers, Auto-Reload & Advanced Commands
    Erkikundefined Erkik

    FaZe Flick

    Hey there! Yes, you can absolutely use this for individual play!

    In Plutonium, whenever you start a Solo match or a Custom Game, your PC is technically acting as the "host server". As long as you have the .gsc file placed in your "C:\Users\USER\AppData\Local\Plutonium\storage\t6\raw\scripts\zm" folder, the mod will load perfectly when you play by yourself.

    Since you are playing solo, the game automatically recognizes you as the Host, meaning you will have full access to all the fun admin/cheat commands (like !god, !staff, !bring, etc.) to use at your own pace.

    Have fun testing it out, and let me know if you have any questions!

    BO2 Modding Releases & Resources bo2 zombies gsc hud commands origins script

  • [GSC Release] Ultimate T6 Zombies Overhaul: Modern HUD, Hitmarkers, Auto-Reload & Advanced Commands
    Erkikundefined Erkik

    mr.kennutbuster said:

    i can give it a try i just need to reinstall bo2 i got my 1tb ssd and now i can do more stuff i have special for my camo pack

    That's awesome! A 1TB SSD is a game-changer for BO2 and custom content.

    Definitely give it a try when you reinstall the game. The script runs completely server-side, so it shouldn't conflict at all with your custom camo pack. I'd love to see how the modern HUD looks paired with your camos!

    Also, just a quick heads-up in case you were wondering: the script works perfectly in Solo / Custom Games too, not just in public lobbies. So you can easily jump into a private match by yourself to test your camos, use the commands, and check out the new features at your own pace.

    Take your time setting everything up, and let me know how it goes!

    BO2 Modding Releases & Resources bo2 zombies gsc hud commands origins script

  • [GSC Release] Ultimate T6 Zombies Overhaul: Modern HUD, Hitmarkers, Auto-Reload & Advanced Commands
    Erkikundefined Erkik

    mr.kennutbuster

    Thank you so much! I really appreciate it.

    The shield bar was definitely one of the things I spent the most time tweaking. I really wanted it to feel seamless and modern (kind of like Warzone or Apex) instead of having bulky text taking up the screen.

    Let me know if you get to try the Origins staff commands or if you have any ideas/suggestions for a future update. Enjoy the server!

    BO2 Modding Releases & Resources bo2 zombies gsc hud commands origins script

  • [GSC Release] Ultimate T6 Zombies Overhaul: Modern HUD, Hitmarkers, Auto-Reload & Advanced Commands
    Erkikundefined Erkik

    The link is not avaible now, i dont have enought reputation, but guys you have the full source code.

    BO2 Modding Releases & Resources bo2 zombies gsc hud commands origins script

  • [GSC Release] Ultimate T6 Zombies Overhaul: Modern HUD, Hitmarkers, Auto-Reload & Advanced Commands
    Erkikundefined Erkik

    Hello everyone!

    After a lot of coding and testing (especially fighting with the Origins weapon mechanics lol), I am releasing a comprehensive GSC script designed to upgrade your Plutonium T6 Zombies server.

    This script transforms the vanilla BO2 experience into a more modern, smooth, and feature-rich game, perfect for playing with friends or hosting public lobbies. It features a custom UI, huge Quality of Life (QoL) improvements, and a robust chat command system that doesn't break the game.

    🌟 Key Features

    1. Modern Custom HUD (Warzone / Apex Style)

    • Replaces the old basic text counters with a sleek, unified dark panel.
    • Dynamic HP & Shield Bars: Features a dynamic health bar that changes color based on your HP. If you equip a shield, a slim cyan blue bar attaches directly on top of your health bar. If the shield breaks, the bar disappears seamlessly.
    • Unified Stats: Modernized Round Time, Game Time, and Zombie Remaining counters in the top left corner.

    2. Quality of Life (QoL) & Gameplay

    • Hitmarkers: Added satisfying multiplayer hitmarkers with sound (mpl_hit_alert) for every zombie hit.
    • BO3-Style Max Ammo: Grabbing a Max Ammo drop now instantly refills your current magazine too. No more reloading mid-panic!
    • Economy System: Players can share points using the !pay <name> <amount> command.

    3. Smart Scripting & Crash Prevention

    • Smart Shield Giver: The !shield command automatically detects the map you are playing on (Origins, Mob of the Dead, Tranzit) and gives you the correct shield to your D-pad without breaking your weapon inventory.
    • Origins Staff Bypass: The !staff <type> command safely gives you the upgraded staff of your choice. It correctly injects the hidden "Sekhmet's Vigor" melee weapon so the animations don't crash or bug your hands.

    πŸ’¬ Chat Commands

    Public Commands:

    • !help - Displays available commands.
    • !pay <player> <amount> - Transfer points to another player (e.g., !pay juan 1000).

    Host / Utility Commands:

    • !god / !ignore (Invisibility) / !speed
    • !puntos / !ammo / !perks / !allperks
    • !pap - Instantly Pack-a-Punches the weapon in your hands.
    • !drop <ammo/nuke/insta/fire/blood> - Spawns a specific power-up.
    • !shield - Gives the map-specific shield.

    Admin / Easter Egg Tools:

    • !bring - Teleports all players to your exact location.
    • !killall - Wipes all alive zombies instantly.
    • !round <number> - Force skips the game to a specific round.

    Weapon Spawns:

    • !mk2, !galil, !an94, !ms (Mustang & Sally), !monkeys
    • Origins Exclusives: !staff <fire/ice/lightning/wind>

    βš™οΈ How to Install

    Simply compile or drop the .gsc file into your C:\Users\USER\AppData\Local\Plutonium\storage\t6\raw\scripts\zm folder and start your server. Ensure you are the host to use the restricted commands!

    Enjoy, and let me know if you find any bugs or have suggestions for future updates!

    πŸ’» Source Code & Installation

    How to Install:

    1. Click the link above to view the code. You can copy it or click the "Download ZIP" button.
    2. Save the code as a .gsc file (for example, _ezz_server.gsc).
    3. Place the file inside your C:\Users\USER\AppData\Local\Plutonium\storage\t6\raw\scripts\zm folder.
    4. Start your server! (Remember, you need to be the Host to use the admin/cheat commands).

    πŸ’» Full Source Code

    Copy the code below and save it as a .gsc file (for example, _ezz_server.gsc) inside your C:\Users\USER\AppData\Local\Plutonium\storage\t6\raw\scripts\zm folder.

    #include maps\mp\_utility;
    #include common_scripts\utility;
    #include maps\mp\gametypes_zm\_hud_util;
    #include maps\mp\gametypes_zm\_hud_message;
    #include maps\mp\zombies\_zm_utility;
    #include maps\mp\zombies\_zm_score;
    #include maps\mp\zombies\_zm_perks;
    #include maps\mp\zombies\_zm_weapons;
    #include maps\mp\zombies\_zm_powerups;
    
    init()
    {
        // ==========================================
        // PRECACHE TEXTURES (Prevents crashing)
        // ==========================================
        PrecacheShader("white");
        PrecacheShader("damage_feedback"); 
    
        // ==========================================
        // SERVER CONFIGURATION
        // ==========================================
        level.perk_purchase_limit = 10; 
        level.host_only_commands = true; // true = Host Only, false = Everyone
    
        level thread onPlayerConnect();
        level thread chat_command_listener();
        level thread remove_quick_revive_limit(); 
        level thread global_hitmarker_manager(); 
    }
    
    onPlayerConnect()
    {
        for (;;)
        {
            level waittill("connecting", player);
            player thread onplayerspawned();
        }
    }
    
    onplayerspawned()
    {
        self endon("disconnect");
        
        // Initialize HUD and monitors only on the first spawn
        if(!isDefined(self.hud_initiated))
        {
            self thread modern_counters_hud(); 
            self thread ezz_bars_hud();        
            self thread auto_reload_monitor(); 
            self.hud_initiated = true;
        }
        
        for (;;)
        {
            self waittill("spawned_player");
            
            self iprintln("^6[EZZ Server] ^7Welcome, ^2" + self.name);
            self iprintln("Type ^3!help ^7in chat to see the commands.");
    
            if(!isDefined(self.speed_buff_active) || self.speed_buff_active == false)
            {
                self setMoveSpeedScale(1.0); 
            }
        }
    }
    
    // ==========================================
    // CHAT COMMAND SYSTEM
    // ==========================================
    chat_command_listener()
    {
        level endon("end_game");
    
        for(;;)
        {
            level waittill("say", message, player);
            message = tolower(message);
            args = strtok(message, " ");
            if (args.size == 0) continue;
            command = args[0];
    
            // ------------------------------------------
            // PUBLIC COMMANDS
            // ------------------------------------------
            if(command == "!help" || command == "!cmds")
            {
                player iprintln("^3Public: ^7!pay <player> <points>");
                player iprintln("^3Cheats: ^7!god, !ammo, !perks, !allperks, !points, !ignore");
                player iprintln("^3Utility: ^7!pap, !drop, !shield, !bring, !round <n>, !killall");
                player iprintln("^3Weapons: ^7!mk2, !galil, !an94, !ms, !monkeys");
                player iprintln("^3Origins: ^7!staff <fire/ice/lightning/wind>");
                continue;
            }
    
            if(command == "!pay" || command == "!dar")
            {
                if(args.size >= 3)
                {
                    target_name = args[1];
                    amount = int(args[2]);
                    if(amount > 0 && player.score >= amount)
                    {
                        target = get_player_by_name(target_name);
                        if(isDefined(target) && target != player)
                        {
                            player maps\mp\zombies\_zm_score::minus_to_player_score(amount);
                            target maps\mp\zombies\_zm_score::add_to_player_score(amount);
                            player iprintln("^2You sent " + amount + " points to " + target.name);
                            target iprintln("^2You received " + amount + " points from " + player.name + "!");
                        }
                        else { player iprintln("^1Error: Player not found."); }
                    }
                    else { player iprintln("^1Error: Not enough points."); }
                }
                continue;
            }
    
            // ------------------------------------------
            // HOST PERMISSION CHECK
            // ------------------------------------------
            if ( level.host_only_commands && !player isHost() )
            {
                player iprintln("^1Error: Only the Server Host can use these commands.");
                continue;
            }
    
            // ------------------------------------------
            // ORIGINS STAFFS FIX
            // ------------------------------------------
            if(command == "!staff" || command == "!baston")
            {
                if ( level.script != "zm_tomb" )
                {
                    player iprintln("^1Error: Staffs are only available in Origins.");
                    continue;
                }
    
                if(args.size < 2)
                {
                    player iprintln("^3Usage: ^7!staff <fire/ice/lightning/wind>");
                    continue;
                }
    
                staff_type = tolower(args[1]);
                weapon_to_give = "none";
    
                // Treyarch internal names mapped
                if(staff_type == "fire" || staff_type == "fuego") weapon_to_give = "staff_fire_upgraded_zm";
                else if(staff_type == "ice" || staff_type == "water" || staff_type == "hielo") weapon_to_give = "staff_water_upgraded_zm";
                else if(staff_type == "lightning" || staff_type == "rayo") weapon_to_give = "staff_lightning_upgraded_zm";
                else if(staff_type == "wind" || staff_type == "air" || staff_type == "viento") weapon_to_give = "staff_air_upgraded_zm";
    
                if(weapon_to_give != "none")
                {
                    // SECRET FIX: Give the revive weapon to prevent animation crash
                    if ( !player HasWeapon("staff_revive_zm") )
                    {
                        player GiveWeapon("staff_revive_zm");
                    }
                    
                    // Safe native method for weapon swap
                    player maps\mp\zombies\_zm_weapons::weapon_give(weapon_to_give);
                    player SwitchToWeapon(weapon_to_give);
                    
                    player iprintln("^2Upgraded Staff equipped instantly!");
                }
                else
                {
                    player iprintln("^1Error: Invalid type. Use: fire, ice, lightning, or wind.");
                }
            }
    
            // ------------------------------------------
            // OTHER COMMANDS
            // ------------------------------------------
            else if(command == "!mk2" || command == "!mark2")
            {
                if ( isDefined( level.zombie_weapons["raygun_mark2_zm"] ) || isDefined( level.zombie_weapons["raygun_mark2_upgraded_zm"] ) || level.script == "zm_tomb" )
                {
                    player maps\mp\zombies\_zm_weapons::weapon_give("raygun_mark2_zm");
                    player SwitchToWeapon("raygun_mark2_zm");
                    player iprintln("^2Ray Gun Mark II equipped!");
                } else { player iprintln("^1Error: Mark II is not available on this map."); }
            }
            else if(command == "!bring" || command == "!traer")
            {
                players = get_players();
                foreach(p in players)
                {
                    if(p != player)
                    {
                        p SetOrigin(player.origin);
                        p SetPlayerAngles(player.angles);
                    }
                }
                player iprintln("^2All players teleported to your position!");
            }
            else if(command == "!killall" || command == "!matar")
            {
                zombies = GetAiSpeciesArray( "axis", "all" );
                if(isDefined(zombies))
                {
                    foreach(z in zombies) { z DoDamage(z.health + 666, z.origin, player); }
                }
                player iprintln("^2All zombies eliminated!");
            }
            else if(command == "!round" || command == "!ronda")
            {
                if(args.size > 1)
                {
                    new_round = int(args[1]);
                    if(new_round > 0)
                    {
                        level.zombie_total = 0;
                        level.round_number = new_round - 1; 
                        zombies = GetAiSpeciesArray( "axis", "all" );
                        if(isDefined(zombies))
                        {
                            foreach(z in zombies) { z DoDamage(z.health + 666, z.origin, player); }
                        }
                        player iprintln("^2Forcing skip to round " + new_round + "!");
                    }
                }
            }
            else if(command == "!shield" || command == "!escudo")
            {
                shield_name = "none";
                if ( level.script == "zm_tomb" ) shield_name = "tomb_shield_zm";           
                else if ( level.script == "zm_prison" ) shield_name = "alcatraz_shield_zm"; 
                else if ( level.script == "zm_transit" ) shield_name = "riotshield_zm";     
    
                if(shield_name != "none")
                {
                    player GiveWeapon( shield_name );
                    player SetActionSlot( 3, "weapon", shield_name ); 
                    player iprintln("^2Shield equipped instantly!");
                }
                else { player iprintln("^1Error: No shields available on this map."); }
            }
            else if(command == "!galil")
            {
                player maps\mp\zombies\_zm_weapons::weapon_give("galil_zm");
                player SwitchToWeapon("galil_zm");
                player iprintln("^2Galil equipped!");
            }
            else if(command == "!an94")
            {
                player maps\mp\zombies\_zm_weapons::weapon_give("an94_zm");
                player SwitchToWeapon("an94_zm");
                player iprintln("^2AN-94 equipped!");
            }
            else if(command == "!ms" || command == "!mustang")
            {
                player maps\mp\zombies\_zm_weapons::weapon_give("m1911_upgraded_zm");
                player SwitchToWeapon("m1911_upgraded_zm");
                player iprintln("^2Mustang & Sally ready!");
            }
            else if(command == "!monkeys" || command == "!monos")
            {
                player maps\mp\zombies\_zm_weapons::weapon_give("cymbal_monkey_zm");
                player iprintln("^2Space Monkeys received!");
            }
            else if(command == "!raygun")
            {
                player maps\mp\zombies\_zm_weapons::weapon_give("ray_gun_zm");
                player SwitchToWeapon("ray_gun_zm");
                player iprintln("^2Ray Gun equipped!");
            }
            else if(command == "!pap")
            {
                current_weapon = player GetCurrentWeapon();
                if(current_weapon != "none" && current_weapon != "knife_zm")
                {
                    upgraded_weapon = player maps\mp\zombies\_zm_weapons::get_upgrade_weapon( current_weapon );
                    if(isDefined(upgraded_weapon))
                    {
                        player TakeWeapon(current_weapon);
                        player maps\mp\zombies\_zm_weapons::weapon_give(upgraded_weapon);
                        player iprintln("^2Weapon upgraded instantly!");
                    } else { player iprintln("^1This weapon cannot be upgraded."); }
                }
            }
            else if(command == "!drop")
            {
                drop_type = "full_ammo"; 
                if (args.size > 1)
                {
                    if(args[1] == "ammo") drop_type = "full_ammo";
                    else if(args[1] == "nuke") drop_type = "nuke";
                    else if(args[1] == "insta") drop_type = "insta_kill";
                    else if(args[1] == "fire") drop_type = "fire_sale";
                    else if(args[1] == "blood") drop_type = "zombie_blood";
                }
                if ( isDefined( level.zombie_powerups ) && isDefined( level.zombie_powerups[drop_type] ) )
                {
                    maps\mp\zombies\_zm_powerups::specific_powerup_drop( drop_type, player.origin );
                    player iprintln("^2Spawning Drop: " + drop_type);
                } else { player iprintln("^1Drop not supported on this map."); }
            }
            else if(command == "!ignore")
            {
                if(!isDefined(player.ignoreme) || player.ignoreme == false) {
                    player.ignoreme = true;
                    player iprintln("^2Invisibility ENABLED.");
                } else {
                    player.ignoreme = false;
                    player iprintln("^1Invisibility DISABLED.");
                }
            }
            else if(command == "!speed")
            {
                if(!isDefined(player.speed_buff_active) || player.speed_buff_active == false)
                {
                    player.speed_buff_active = true;
                    player thread maintain_speed(); 
                    player iprintln("^2Extra Speed ENABLED!");
                } else {
                    player notify("stop_speed_buff"); 
                    player.speed_buff_active = false;
                    player setMoveSpeedScale(1.0);
                    player iprintln("^1Extra Speed DISABLED.");
                }
            }
            else if(command == "!god")
            {
                if(!isDefined(player.godmode_active) || player.godmode_active == false) 
                {
                    player.godmode_active = true;
                    player EnableInvulnerability(); 
                    player thread brute_force_godmode(); 
                    player iprintln("^2Godmode ENABLED!");
                } else {
                    player notify("stop_godmode"); 
                    player.godmode_active = false;
                    player DisableInvulnerability();
                    player iprintln("^1Godmode DISABLED.");
                }
            }
            else if(command == "!points" || command == "!puntos")
            {
                points_to_give = 50000; 
                if (args.size > 1) { points_to_give = int(args[1]); }
                player maps\mp\zombies\_zm_score::add_to_player_score( points_to_give );
                player iprintln("^2You received " + points_to_give + " points!");
            }
            else if(command == "!ammo")
            {
                weapons = player GetWeaponsList( true );
                foreach ( weapon in weapons )
                {
                    player GiveMaxAmmo( weapon );
                    player SetWeaponAmmoClip( weapon, WeaponClipSize( weapon ) );
                }
                player iprintln("^2Max Ammo received!");
            }
            else if(command == "!perks")
            {
                player maps\mp\zombies\_zm_perks::give_perk( "specialty_armorvest", false );   
                player maps\mp\zombies\_zm_perks::give_perk( "specialty_longersprint", false ); 
                player maps\mp\zombies\_zm_perks::give_perk( "specialty_fastreload", false );   
                player maps\mp\zombies\_zm_perks::give_perk( "specialty_quickrevive", false );  
                player iprintln("^24 Basic Perks received!");
            }
            else if(command == "!allperks")
            {
                lista_perks = [];
                lista_perks[0] = "specialty_armorvest";               
                lista_perks[1] = "specialty_quickrevive";             
                lista_perks[2] = "specialty_fastreload";              
                lista_perks[3] = "specialty_rof";                     
                lista_perks[4] = "specialty_longersprint";            
                lista_perks[5] = "specialty_flakjacket";              
                lista_perks[6] = "specialty_deadshot";                
                lista_perks[7] = "specialty_additionalprimaryweapon"; 
                lista_perks[8] = "specialty_grenadepulldeath";        
                
                for ( i = 0; i < lista_perks.size; i++ )
                {
                    if ( !player hasPerk( lista_perks[i] ) )
                    {
                        player maps\mp\zombies\_zm_perks::give_perk( lista_perks[i], false );
                        wait 0.1; 
                    }
                }
                player iprintln("^2Full Perk arsenal received!");
            }
        }
    }
    
    // ==========================================
    // QoL FEATURES & UTILITIES
    // ==========================================
    
    // Get player by name (For !pay command)
    get_player_by_name(name)
    {
        players = get_players();
        foreach(p in players)
        {
            if(issubstr(tolower(p.name), tolower(name))) return p;
        }
        return undefined;
    }
    
    // Auto-Reload on Max Ammo pickup
    auto_reload_monitor()
    {
        self endon("disconnect");
        for(;;)
        {
            self waittill( "zmb_max_ammo" ); 
            weapons = self GetWeaponsList(true);
            foreach(weapon in weapons)
            {
                self SetWeaponAmmoClip(weapon, WeaponClipSize(weapon));
            }
        }
    }
    
    // Global Hitmarker Manager
    global_hitmarker_manager()
    {
        level endon("end_game");
        for(;;)
        {
            zombies = GetAiSpeciesArray("axis", "all");
            foreach(z in zombies)
            {
                if(!isDefined(z.has_hitmarker_monitor))
                {
                    z.has_hitmarker_monitor = true;
                    z thread monitor_zombie_damage();
                }
            }
            wait 1; 
        }
    }
    
    // Monitor damage for each zombie
    monitor_zombie_damage()
    {
        self endon("death");
        for(;;)
        {
            self waittill("damage", amount, attacker, dir, point, type);
            if(isDefined(attacker) && isPlayer(attacker))
            {
                attacker thread show_hitmarker();
            }
        }
    }
    
    // Display hitmarker and play sound
    show_hitmarker()
    {
        if(!isDefined(self.hitmarker_hud))
        {
            self.hitmarker_hud = newClientHudElem(self);
            self.hitmarker_hud.alignX = "center";
            self.hitmarker_hud.alignY = "middle";
            self.hitmarker_hud.horzAlign = "center";
            self.hitmarker_hud.vertAlign = "middle";
            self.hitmarker_hud.alpha = 0;
            self.hitmarker_hud setShader("damage_feedback", 24, 48);
        }
        
        self.hitmarker_hud.alpha = 1;
        self playlocalsound("mpl_hit_alert"); 
        self.hitmarker_hud fadeOverTime(0.5);
        self.hitmarker_hud.alpha = 0;
    }
    
    // ==========================================
    // BACKGROUND FUNCTIONS
    // ==========================================
    brute_force_godmode()
    {
        self endon("disconnect");
        self endon("stop_godmode");
        level endon("end_game");
    
        for(;;)
        {
            self.health = self.maxhealth;
            wait 0.05; 
        }
    }
    
    remove_quick_revive_limit()
    {
        level endon("end_game");
        for(;;)
        {
            if ( isDefined( level.solo_lives_given ) ) { level.solo_lives_given = 0; }
            wait 1; 
        }
    }
    
    maintain_speed()
    {
        self endon("disconnect");
        self endon("stop_speed_buff"); 
        level endon("end_game");
    
        for(;;)
        {
            if(self getMoveSpeedScale() < 1.5) { self setMoveSpeedScale(1.5); }
            wait 0.1; 
        }
    }
    
    // ==========================================
    // UNIFIED MODERN HUD
    // ==========================================
    
    modern_counters_hud()
    {
        self endon("disconnect");
        flag_wait("initial_blackscreen_passed");
    
        self.panel_bg = newClientHudElem(self);
        self.panel_bg.alignX = "left";
        self.panel_bg.alignY = "top";
        self.panel_bg.horzAlign = "user_left";
        self.panel_bg.vertAlign = "user_top";
        self.panel_bg.x = 5;
        self.panel_bg.y = 5;
        self.panel_bg setShader("white", 100, 52); 
        self.panel_bg.color = (0, 0, 0);
        self.panel_bg.alpha = 0.6;
        self.panel_bg.sort = 1;
    
        self.panel_line = newClientHudElem(self);
        self.panel_line.alignX = "left";
        self.panel_line.alignY = "top";
        self.panel_line.horzAlign = "user_left";
        self.panel_line.vertAlign = "user_top";
        self.panel_line.x = 5;
        self.panel_line.y = 5;
        self.panel_line setShader("white", 3, 52); 
        self.panel_line.color = (0, 0.6, 1);
        self.panel_line.alpha = 1;
        self.panel_line.sort = 2;
    
        self.zombie_text = newClientHudElem(self);
        self.zombie_text.alignX = "left";
        self.zombie_text.alignY = "top";
        self.zombie_text.horzAlign = "user_left";
        self.zombie_text.vertAlign = "user_top";
        self.zombie_text.x = 12;
        self.zombie_text.y = 8;
        self.zombie_text.fontscale = 1.2;
        self.zombie_text.color = (1, 1, 1);
        self.zombie_text.label = &"Zombies: ^5"; 
        self.zombie_text.sort = 3;
    
        self.round_time_text = newClientHudElem(self);
        self.round_time_text.alignX = "left";
        self.round_time_text.alignY = "top";
        self.round_time_text.horzAlign = "user_left";
        self.round_time_text.vertAlign = "user_top";
        self.round_time_text.x = 12;
        self.round_time_text.y = 23;
        self.round_time_text.fontscale = 1.2;
        self.round_time_text.color = (1, 1, 1);
        self.round_time_text.label = &"Round: ^5";
        self.round_time_text.sort = 3;
    
        self.game_time_text = newClientHudElem(self);
        self.game_time_text.alignX = "left";
        self.game_time_text.alignY = "top";
        self.game_time_text.horzAlign = "user_left";
        self.game_time_text.vertAlign = "user_top";
        self.game_time_text.x = 12;
        self.game_time_text.y = 38;
        self.game_time_text.fontscale = 1.2;
        self.game_time_text.color = (1, 1, 1);
        self.game_time_text.label = &"Game: ^5";
        self.game_time_text.sort = 3;
    
        self.game_time_text setTimerUp(0);
        self thread update_zombie_counter_modern();
        self thread update_round_timer_modern();
    }
    
    update_zombie_counter_modern()
    {
        self endon("disconnect");
        for (;;)
        {
            self.zombie_text setvalue(level.zombie_total + get_current_zombie_count());
            wait 0.05;
        }
    }
    
    update_round_timer_modern()
    {
        self endon("disconnect");
        for (;;)
        {
            self.round_time_text setTimerUp(0);
            start_time = GetTime() / 1000;
            level waittill("end_of_round");
    
            end_time = GetTime() / 1000;
            time_elapsed = end_time - start_time;
    
            self.round_time_text setTimer(time_elapsed);
        }
    }
    
    ezz_bars_hud()
    {
        self endon("disconnect");
        flag_wait("initial_blackscreen_passed");
    
        bar_width = 130;
        hp_height = 8;
        shield_height = 3;  
        bg_padding = 4;
        y_bottom_anchor = -40; 
    
        self.hp_text = newClientHudElem(self);
        self.hp_text.alignX = "center";
        self.hp_text.alignY = "bottom";
        self.hp_text.horzAlign = "center";
        self.hp_text.vertAlign = "bottom";
        self.hp_text.x = 0;
        self.hp_text.y = y_bottom_anchor - hp_height - shield_height - bg_padding - 2; 
        self.hp_text.fontscale = 1.1;
        self.hp_text.label = &"^5HP / SHIELD";
        self.hp_text.sort = 2;
    
        self.hp_bg = newClientHudElem(self);
        self.hp_bg.alignX = "center";
        self.hp_bg.alignY = "bottom";
        self.hp_bg.horzAlign = "center";
        self.hp_bg.vertAlign = "bottom";
        self.hp_bg.x = 0;
        self.hp_bg.y = y_bottom_anchor;
        self.hp_bg setShader("white", bar_width + bg_padding, hp_height + shield_height + bg_padding);
        self.hp_bg.color = (0, 0, 0);
        self.hp_bg.alpha = 0.6;
        self.hp_bg.sort = 1;
    
        self.hp_bar = newClientHudElem(self);
        self.hp_bar.alignX = "left";
        self.hp_bar.alignY = "bottom";
        self.hp_bar.horzAlign = "center";
        self.hp_bar.vertAlign = "bottom";
        self.hp_bar.x = -(bar_width/2);
        self.hp_bar.y = y_bottom_anchor - (bg_padding/2); 
        self.hp_bar setShader("white", bar_width, hp_height);
        self.hp_bar.sort = 3;
    
        self.shield_bar = newClientHudElem(self);
        self.shield_bar.alignX = "left";
        self.shield_bar.alignY = "bottom";
        self.shield_bar.horzAlign = "center";
        self.shield_bar.vertAlign = "bottom";
        self.shield_bar.x = -(bar_width/2);
        self.shield_bar.y = y_bottom_anchor - (bg_padding/2) - hp_height; 
        self.shield_bar setShader("white", bar_width, shield_height);
        self.shield_bar.color = (0, 0.6, 1); 
        self.shield_bar.sort = 4;
    
        for(;;)
        {
            current_health = self.health;
            max_health = self.maxhealth;
            
            if(max_health <= 0) max_health = 100;
            health_percent = current_health / max_health;
            
            hp_visual_width = int(bar_width * health_percent);
            if(hp_visual_width < 1) hp_visual_width = 1; 
    
            if (health_percent >= 1.0) {
                self.hp_bar.color = (0, 1, 0); 
                self.hp_bar.alpha = 1;
            } else if (health_percent > 0.4) {
                self.hp_bar.color = (1, 1, 0); 
                self.hp_bar.alpha = 1;
            } else {
                self.hp_bar.color = (1, 0, 0); 
                self.hp_bar.alpha = (int(GetTime() / 250) % 2) ? 0.3 : 1; 
            }
    
            self.hp_bar setShader("white", hp_visual_width, hp_height);
    
            if ( self HasWeapon("riotshield_zm") || self HasWeapon("alcatraz_shield_zm") || self HasWeapon("tomb_shield_zm") )
            {
                self.shield_bar.alpha = 1;
            }
            else
            {
                self.shield_bar.alpha = 0;
            }
    
            wait 0.05; 
        }
    }
    
    BO2 Modding Releases & Resources bo2 zombies gsc hud commands origins script

  • I own the game on steam and even verfied it but the console can't verify it when i start the game. It just says authentification request and handeling hello request.
    Erkikundefined Erkik

    II-Raptor-II
    Thanks for the screenshots! Don't worry about the German, AusschlΓΌsse is perfectly clear. Your exclusions and firewall settings are set up flawlessly, so we can 100% rule out Windows Defender blocking it locally.

    To answer your questions and move to the next steps:

    1. Do I need to restart my router after changing DNS?
      Yes, it is highly recommended. Also, your Windows machine might still be remembering the old blocked routes. After changing your DNS to Cloudflare (1.1.1.1), open your Windows search, type cmd, right-click Command Prompt and run as Administrator. Type ipconfig /flushdns and hit Enter. Then restart your PC.

    2. How to test/bypass an ISP block without a mobile hotspot?
      If your ISP is blocking the auth servers, the easiest way to test and bypass this is by using a VPN.
      Download a free and safe VPN (like Cloudflare WARP or ProtonVPN). Turn the VPN on and try launching Plutonium. If the game launches instantly and gets past the "Handling hello request", then your ISP is definitely the culprit. You can use the VPN to log in, and once the game is open, you can often turn the VPN off to play with your normal ping.

    3. Double-check for 3rd Party Antivirus:
      Just to be absolutely sure: do you have any other antivirus installed like Avast, Kaspersky, Bitdefender, or McAfee? If you do, your Windows Defender exclusions won't work because the 3rd-party antivirus takes control of your PC. You would need to add the exclusions in that specific software.

    4. MW3 Specific Config Bug:
      Sometimes MW3 hangs on that exact screen because of a corrupted config file. Go to your MW3 game folder, find the players2 folder, and temporarily move it to your Desktop (don't delete it, just move it). Launch Plutonium again. The game will generate a fresh config file, which sometimes instantly fixes the freeze.

    Try the free VPN test first, as that will immediately give us the answer if it's your internet provider! Let me know how it goes.

    MW3 Client Support

  • I own the game on steam and even verfied it but the console can't verify it when i start the game. It just says authentification request and handeling hello request.
    Erkikundefined Erkik

    Hey there! Thanks for providing all the screenshots, they are incredibly helpful for diagnosing the issue.

    First of all, your third screenshot shows that your Steam account is synced perfectly. Your ownership verification is 100% correct, so there is nothing wrong with your account or your Steam copy.

    Getting stuck on [DW][Auth] Handling authentication request... and [DW][Lobby] Handling hello request... means that the Plutonium client is trying to communicate with the Plutonium Master Servers to log you in, but the connection is being blocked locally on your PC or by your network. Also, in your console screenshot, there is a massive Hitch warning: 9787 msec which means the client froze for almost 10 seconds trying to bypass a block.

    Here is how to fix this:

    1. Windows Firewall / Antivirus (Most likely culprit):
      Your firewall or antivirus is silently blocking the connection to the Plutonium auth servers.

    You need to add a folder exclusion in Windows Defender (or your 3rd party antivirus) for your MW3 Game Folder AND your Plutonium folder (%localappdata%\Plutonium).

    Also, make sure plutonium-bootstrapper-win32.exe is allowed through your Windows Defender Firewall on both Private and Public networks.

    1. Hidden Game Window:
      Sometimes, the console hangs on "Handling hello request..." because the actual game window has already launched but is minimized or hidden behind another window. Try pressing Alt + Tab to see if the MW3 window is actually open in the background.

    2. DNS / ISP Blocking:
      Some Internet Service Providers block the specific ports or domains that Plutonium uses for authentication.

    Try restarting your router.

    Try changing your Windows IPv4 DNS settings to Cloudflare (1.1.1.1 and 1.0.0.1) or Google (8.8.8.8 and 8.8.4.4).

    As a quick test, you can connect your PC to your phone's mobile hotspot. If it launches instantly, your home ISP/Router is blocking the connection.

    Try these steps (especially the Firewall/AV exclusions) and let us know if it finally pushes through to the main menu!

    MW3 Client Support

  • Crash At Launch?
    Erkikundefined Erkik

    Hey guys! This is a very common issue with Plutonium T6 and it usually comes down to a few specific things blocking the client from hooking into the game. Here is a checklist that fixes 99% of these crashes at launch:

    1. Antivirus / Windows Defender (Most Common):
      Defender or your Antivirus often silently blocks or deletes Plutonium files. You need to add a folder exclusion in your Antivirus for both your BO2 game folder AND your Plutonium folder (%localappdata%\Plutonium).

    2. Background Overlays:
      Plutonium's anti-cheat and bootstrapper hate third-party overlays hooking into the game. Make sure to completely disable Discord Overlay, MSI Afterburner, RivaTuner, GeForce Experience, or Overwolf before launching the game.

    3. Missing Redistributables:
      Even if the Steam version works, Plutonium needs specific DirectX and Visual C++ redists. Make sure you run the plutonium-bootstrapper properly or download the all-in-one redist installer from the official Plutonium install guide.

    Zeymex, since you got the specific "Crash reference ID" message, the exact cause of your crash was written in a .dmp or .log file inside your C:\Users\YourUser\AppData\Local\Plutonium\crashdumps folder.

    Try the steps above (especially disabling overlays and checking Defender). If it still crashes, upload your latest .dmp or .log file here so we can see exactly what module is failing!

    Hope this helps you both get back to playing!

    BO2 Client Support help

  • Working on a T6 Zombies Overhaul GSC - Coming soon!
    Erkikundefined Erkik

    Hey guys, I'm new here! I've been working hard on a QoL script for BO2 Zombies ( HUD, Hitmarkers, Auto-reload, Origins Staffs fixes, etc.). I'm currently tweaking the last bugs and I'll drop the full source code soon. What features do you guys usually look for in public servers?

    General Discussion
  • 1 / 1
  • Login

  • Don't have an account? Register

  • Login or register to search.
  • First post
    Last post
0
  • Unread 0
  • Recent
  • Tags
  • Popular
  • Users
  • Groups