PunctualBoat203 it work for any zm server (T6) just put it in scripts folder
mahmodhalah2
Posts
-
🔮 BO2 Zombies – Shared Mystery Box Script -
🔮 BO2 Zombies – Shared Mystery Box Script
About:
This script upgrades the way players interact with the Mystery Box in BO2 Zombies,
adding new co-op focused features that make gameplay smoother, faster, and more fun.
Features:- Press V while the Mystery Box is open to share it with your teammate.
No more fighting over rolls – now both players can access the box together. - Press Shift while the Mystery Box is open to instantly close it.
Perfect for shutting it down during hectic moments, trolling your friends,
or preventing wasted spins.
Why Use It?- Perfect for co-op sessions where teamwork and timing matter.
- Adds a unique twist to the Mystery Box mechanic, making it feel more dynamic.
- Helps avoid box-hogging and gives both players fair chances.
- Quick-close feature with Shift makes the box easier to control.
- Useful for speedruns, challenge games, and custom fun runs.
Installation:
Just drop the script into your Plutonium BO2 Zombies GSC mods folder
and enjoy the upgraded Mystery Box experience!
[code]#include maps/mp/_utility; #include common_scripts/utility; #include maps/mp/gametypes_zm/_hud_util; #include maps/mp/zombies/_zm_weapons; #include maps/mp/zombies/_zm_magicbox; #include maps/mp/zombies/_zm; #include maps/mp/zombies/_zm_unitrigger; #include maps/mp/zombies/_zm_utility; #include maps/mp/_zm_tomb_capture_zones; init() { if(getdvar( "mapname" ) == "zm_tomb" ) thread monitor_boxes(); else thread CheckForCurrentBox(); level.shared_box = 0; add_zombie_hint( "default_shared_box", "Hold ^3&&1^7 for weapon"); } CheckForCurrentBox() { flag_wait( "initial_blackscreen_passed" ); if( getdvar( "mapname" ) == "zm_nuked" ) { wait 10; } for(i = 0; i < level.chests.size; i++) { level.chests[ i ] thread reset_box(); if(level.chests[ i ].hidden) { level.chests[ i ] get_chest_pieces(); } if(!level.chests[ i ].hidden) { level.chests[ i ].unitrigger_stub.prompt_and_visibility_func = ::boxtrigger_update_prompt; } } } monitor_boxes() { flag_wait( "initial_blackscreen_passed" ); wait 10; for(i = 0; i < level.chests.size; i++) { level.chests[ i ] thread reset_box(); } for(;;) { for(i = 0; i < level.chests.size; i++) { if(!level.chests[ i ].hidden) { level.chests[ i ].unitrigger_stub.prompt_and_visibility_func = ::boxtrigger_update_prompt; level.chests[ i ].zbarrier waittill( "left" ); //iPrintLn("left"); } } wait 15; //iPrintLn("15"); } } reset_box() { self notify("kill_chest_think"); wait .1; if(!self.hidden) { self.grab_weapon_hint = 0; self thread maps/mp/zombies/_zm_unitrigger::register_static_unitrigger( self.unitrigger_stub, ::magicbox_unitrigger_think ); self.unitrigger_stub run_visibility_function_for_all_triggers(); } self thread custom_treasure_chest_think(); } get_chest_pieces() { self.chest_box = getent( self.script_noteworthy + "_zbarrier", "script_noteworthy" ); self.chest_rubble = []; rubble = getentarray( self.script_noteworthy + "_rubble", "script_noteworthy" ); i = 0; while ( i < rubble.size ) { if ( distancesquared( self.origin, rubble[ i ].origin ) < 10000 ) { self.chest_rubble[ self.chest_rubble.size ] = rubble[ i ]; } i++; } self.zbarrier = getent( self.script_noteworthy + "_zbarrier", "script_noteworthy" ); if ( isDefined( self.zbarrier ) ) { self.zbarrier zbarrierpieceuseboxriselogic( 3 ); self.zbarrier zbarrierpieceuseboxriselogic( 4 ); } self.unitrigger_stub = spawnstruct(); self.unitrigger_stub.origin = self.origin + ( anglesToRight( self.angles ) * -22.5 ); self.unitrigger_stub.angles = self.angles; self.unitrigger_stub.script_unitrigger_type = "unitrigger_box_use"; self.unitrigger_stub.script_width = 104; self.unitrigger_stub.script_height = 50; self.unitrigger_stub.script_length = 45; self.unitrigger_stub.trigger_target = self; unitrigger_force_per_player_triggers( self.unitrigger_stub, 1 ); self.unitrigger_stub.prompt_and_visibility_func = ::boxtrigger_update_prompt; self.zbarrier.owner = self; } boxtrigger_update_prompt( player ) { can_use = self custom_boxstub_update_prompt( player ); if ( isDefined( self.hint_string ) ) { if ( isDefined( self.hint_parm1 ) ) { self sethintstring( self.hint_string, self.hint_parm1 ); } else { self sethintstring( self.hint_string ); } } return can_use; } custom_boxstub_update_prompt( player ) { self setcursorhint( "HINT_NOICON" ); if(!self trigger_visible_to_player( player )) { if(level.shared_box) { self setvisibletoplayer( player ); self.hint_string = get_hint_string( self, "default_shared_box" ); return 1; } return 0; } self.hint_parm1 = undefined; if(level.shared_box) { self.hint_string = "Press ^2F^7 to take weapon"; // Any player can now take it return 1; } if ( isDefined( self.stub.trigger_target.grab_weapon_hint ) && self.stub.trigger_target.grab_weapon_hint && !level.shared_box ) { if (isDefined( level.magic_box_check_equipment ) && [[ level.magic_box_check_equipment ]]( self.stub.trigger_target.grab_weapon_name ) ) { self.hint_string = "Press ^2F^7 for Equipment, ^3V^7 to share, or ^1Shift^7 to close"; } else { self.hint_string = "Press ^2F^7 for Weapon, ^3V^7 to share, or ^1Shift^7 to close"; } } else if(getdvar("mapname") == "zm_tomb" && isDefined(level.zone_capture.zones) && !level.zone_capture.zones[self.stub.zone] ent_flag( "player_controlled" )) { self.stub.hint_string = &"ZM_TOMB_ZC"; return 0; } else { if ( isDefined( level.using_locked_magicbox ) && level.using_locked_magicbox && isDefined( self.stub.trigger_target.is_locked ) && self.stub.trigger_target.is_locked ) { self.hint_string = get_hint_string( self, "locked_magic_box_cost" ); } else { self.hint_parm1 = self.stub.trigger_target.zombie_cost; self.hint_string = get_hint_string( self, "default_treasure_chest" ); } } return 1; } custom_treasure_chest_think() { self endon( "kill_chest_think" ); user = undefined; user_cost = undefined; self.box_rerespun = undefined; self.weapon_out = undefined; self thread unregister_unitrigger_on_kill_think(); while ( 1 ) { if ( !isdefined( self.forced_user ) ) { self waittill( "trigger", user ); if ( user == level ) { wait 0.1; continue; } } else { user = self.forced_user; } if ( user in_revive_trigger() ) { wait 0.1; continue; } if ( user.is_drinking > 0 ) { wait 0.1; continue; } if ( isdefined( self.disabled ) && self.disabled ) { wait 0.1; continue; } if ( user getcurrentweapon() == "none" ) { wait 0.1; continue; } reduced_cost = undefined; if ( is_player_valid( user ) && user maps/mp/zombies/_zm_pers_upgrades_functions::is_pers_double_points_active() ) { reduced_cost = int( self.zombie_cost / 2 ); } if ( isdefined( level.using_locked_magicbox ) && level.using_locked_magicbox && isdefined( self.is_locked ) && self.is_locked ) { if ( user.score >= level.locked_magic_box_cost ) { user maps/mp/zombies/_zm_score::minus_to_player_score( level.locked_magic_box_cost ); self.zbarrier set_magic_box_zbarrier_state( "unlocking" ); self.unitrigger_stub run_visibility_function_for_all_triggers(); } else { user maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "no_money_box" ); } wait 0.1 ; continue; } else if ( isdefined( self.auto_open ) && is_player_valid( user ) ) { if ( !isdefined( self.no_charge ) ) { user maps/mp/zombies/_zm_score::minus_to_player_score( self.zombie_cost ); user_cost = self.zombie_cost; } else { user_cost = 0; } self.chest_user = user; break; } else if ( is_player_valid( user ) && user.score >= self.zombie_cost ) { user maps/mp/zombies/_zm_score::minus_to_player_score( self.zombie_cost ); user_cost = self.zombie_cost; self.chest_user = user; break; } else if ( isdefined( reduced_cost ) && user.score >= reduced_cost ) { user maps/mp/zombies/_zm_score::minus_to_player_score( reduced_cost ); user_cost = reduced_cost; self.chest_user = user; break; } else if ( user.score < self.zombie_cost ) { play_sound_at_pos( "no_purchase", self.origin ); user maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "no_money_box" ); wait 0.1; continue; } wait 0.05; } flag_set( "chest_has_been_used" ); maps/mp/_demo::bookmark( "zm_player_use_magicbox", getTime(), user ); user maps/mp/zombies/_zm_stats::increment_client_stat( "use_magicbox" ); user maps/mp/zombies/_zm_stats::increment_player_stat( "use_magicbox" ); if ( isDefined( level._magic_box_used_vo ) ) { user thread [[ level._magic_box_used_vo ]](); } self thread watch_for_emp_close(); if ( isDefined( level.using_locked_magicbox ) && level.using_locked_magicbox ) { self thread custom_watch_for_lock(); } self._box_open = 1; level.box_open = 1; self._box_opened_by_fire_sale = 0; if ( isDefined( level.zombie_vars[ "zombie_powerup_fire_sale_on" ] ) && level.zombie_vars[ "zombie_powerup_fire_sale_on" ] && !isDefined( self.auto_open ) && self [[ level._zombiemode_check_firesale_loc_valid_func ]]() ) { self._box_opened_by_fire_sale = 1; } if ( isDefined( self.chest_lid ) ) { self.chest_lid thread treasure_chest_lid_open(); } if ( isDefined( self.zbarrier ) ) { play_sound_at_pos( "open_chest", self.origin ); play_sound_at_pos( "music_chest", self.origin ); self.zbarrier set_magic_box_zbarrier_state( "open" ); } self.timedout = 0; self.weapon_out = 1; self.zbarrier thread treasure_chest_weapon_spawn( self, user ); self.zbarrier thread treasure_chest_glowfx(); thread maps/mp/zombies/_zm_unitrigger::unregister_unitrigger( self.unitrigger_stub ); self.zbarrier waittill_any( "randomization_done", "box_hacked_respin" ); if ( flag( "moving_chest_now" ) && !self._box_opened_by_fire_sale && isDefined( user_cost ) ) { user maps/mp/zombies/_zm_score::add_to_player_score( user_cost, 0 ); } if ( flag( "moving_chest_now" ) && !level.zombie_vars[ "zombie_powerup_fire_sale_on" ] && !self._box_opened_by_fire_sale ) { self thread treasure_chest_move( self.chest_user ); } else { self.grab_weapon_hint = 1; self.grab_weapon_name = self.zbarrier.weapon_string; self.chest_user = user; thread maps/mp/zombies/_zm_unitrigger::register_static_unitrigger( self.unitrigger_stub, ::magicbox_unitrigger_think ); if ( isDefined( self.zbarrier ) && !is_true( self.zbarrier.closed_by_emp ) ) { self thread treasure_chest_timeout(); } timeout_time = 105; grabber = user; for( i=0;i<105;i++ ) { // SKIPPING with SHIFT if(user sprintButtonPressed() && isplayer( user ) && distance(self.origin, user.origin) <= 100) { self.timedout = 1; if(isDefined(self.zbarrier.weapon_model)) { self.zbarrier.weapon_model delete(); } self.zbarrier notify( "weapon_grabbed" ); break; } // SHARING with V if(user meleebuttonpressed() && isplayer( user ) && distance(self.origin, user.origin) <= 100) { level.magic_box_grab_by_anyone = 1; level.shared_box = 1; self.unitrigger_stub run_visibility_function_for_all_triggers(); for( a=i;a<105;a++ ) { foreach(player in level.players) { if(player usebuttonpressed() && distance(self.origin, player.origin) <= 100 && isDefined( player.is_drinking ) && !player.is_drinking) { player thread treasure_chest_give_weapon( self.zbarrier.weapon_string ); a = 105; break; } } wait 0.1; } break; } // GRABBING with F if(grabber usebuttonpressed() && isplayer( grabber ) && user == grabber && distance(self.origin, grabber.origin) <= 100 && isDefined( grabber.is_drinking ) && !grabber.is_drinking) { grabber thread treasure_chest_give_weapon( self.zbarrier.weapon_string ); break; } wait 0.1; } self.weapon_out = undefined; self notify( "user_grabbed_weapon" ); user notify( "user_grabbed_weapon" ); self.grab_weapon_hint = 0; self.zbarrier notify( "weapon_grabbed" ); if ( isDefined( self._box_opened_by_fire_sale ) && !self._box_opened_by_fire_sale ) { level.chest_accessed += 1; } if ( level.chest_moves > 0 && isDefined( level.pulls_since_last_ray_gun ) ) { level.pulls_since_last_ray_gun += 1; } thread maps/mp/zombies/_zm_unitrigger::unregister_unitrigger( self.unitrigger_stub ); if ( isDefined( self.chest_lid ) ) { self.chest_lid thread treasure_chest_lid_close( self.timedout ); } if ( isDefined( self.zbarrier ) ) { self.zbarrier set_magic_box_zbarrier_state( "close" ); play_sound_at_pos( "close_chest", self.origin ); self.zbarrier waittill( "closed" ); wait 1; } else { wait 3; } if ( isDefined( level.zombie_vars[ "zombie_powerup_fire_sale_on" ] ) && level.zombie_vars[ "zombie_powerup_fire_sale_on" ] || self [[ level._zombiemode_check_firesale_loc_valid_func ]]() || self == level.chests[ level.chest_index ] ) { thread maps/mp/zombies/_zm_unitrigger::register_static_unitrigger( self.unitrigger_stub, ::magicbox_unitrigger_think ); } } self._box_open = 0; level.box_open = 0; level.shared_box = 0; level.magic_box_grab_by_anyone = 0; self._box_opened_by_fire_sale = 0; self.chest_user = undefined; self notify( "chest_accessed" ); self thread custom_treasure_chest_think(); } custom_watch_for_lock() { self endon( "user_grabbed_weapon" ); self endon( "chest_accessed" ); self waittill( "box_locked" ); self notify( "kill_chest_think" ); self.grab_weapon_hint = 0; wait 0.1; self thread maps/mp/zombies/_zm_unitrigger::register_static_unitrigger( self.unitrigger_stub, ::magicbox_unitrigger_think ); self.unitrigger_stub run_visibility_function_for_all_triggers(); self thread custom_treasure_chest_think(); }[/code]
Play smarter, share faster, and survive longer with the Shared Mystery Box Script! - Press V while the Mystery Box is open to share it with your teammate.
-
Rank System From My Z-tavern SimpledDirkRockface this my dis user : abo_al_7alah
-
Rank System From My Z-tavern SimpledDirkRockface we're can I find it I need it
-
[Release] [ZM] [Mod] zm_weapons - Adding all weapons to mapssehteria can you DM me in discord king_rl_pl
-
[Release] [ZM] [Mod] zm_weapons - Adding all weapons to mapsi add the files to mods and i add it to website in xampp and make url buy when i come to open the box the game crashed
-
Perks Problemsdownload custom-perks-powerups.gsc search to find it
-
I need some scripts that maybe useful in ZM Bo2@Mazen-exe try this https://www.mediafire.com/file/f2tv7ybgjv9ljo8/best_script_bo2_zm.rar/file
-
Give ideas for scripts!make this scripts /afk/rank/bank/pay/id/custom name/save load rounds/kill last zombie/drop weapon/buy speed or hp. I hope you see my comment
-
[Release] [ZM] BO2 Remix Modnice mod but i need slow zm not speed one how?