Skip to content
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Donate
Collapse

Plutonium

AlexInVrundefined

AlexInVr

@AlexInVr
About
Posts
68
Topics
12
Shares
0
Groups
0
Followers
19
Following
11

Posts

Recent Best Controversial

  • [ZM][RELEASE] First box patch + timer + movement speed for ALL maps except moon
    AlexInVrundefined AlexInVr

    scotlords Yeah so for the raygun you need to move the box atleast once

    b3a0e542-0dbc-4df7-a742-ee5224da67d1-image.png

    BO1 Modding Releases & Resources

  • [ZM] [RELEASE] First Box patch + timer + movement speed patch NACHT DER UNTOTEN
    AlexInVrundefined AlexInVr

    chuyito9154 I'm sorry bro I don't speak spanish, using google translate your comment asks what does this mod do, without offense, I wrote everything in the title and the description of the post my guy, idk what to tell you more 😕

    WAW Modding Releases & Resources

  • [ZM][RELEASE] First box patch + timer + movement speed for ALL maps except moon
    AlexInVrundefined AlexInVr

    scotlords Did you make sure to move the box atleast once ? you need to move it atleast once for the raygun to appear, this is in the original game code and wasn't too sure if it would be legit without it so I added it. I will also double check that I did add the raygun in coop 🙂

    BO1 Modding Releases & Resources

  • [ZM][RELEASE] First box patch + timer + movement speed for ALL maps except moon
    AlexInVrundefined AlexInVr

    scotlords you gotta press the arrow in the upper right corner 8829cdc2-0122-4967-8ed0-e1fb64a079ac-image.png

    BO1 Modding Releases & Resources

  • [ZM] [RELEASE] First Box patch + timer + movement speed patch NACHT DER UNTOTEN
    AlexInVrundefined AlexInVr

    MrConfetti Welcome my friend ! 🙂

    WAW Modding Releases & Resources

  • [ZM][RELEASE] First box patch + timer + movement speed for ALL maps except moon
    AlexInVrundefined AlexInVr

    Nucleye I will work on fixing that and release an update soon, probably tommorow as I got stuff to do tonight

    BO1 Modding Releases & Resources

  • [ZM] [RELEASE] First Box patch + timer + movement speed patch NACHT DER UNTOTEN
    AlexInVrundefined AlexInVr

    MrConfetti For sure,

    #include maps\_utility;
    #include common_scripts\utility;
    #include maps\_zombiemode_utility;
    
    //First Box by twitch.tv/AlexInVR
    
    init()
    {
    	thread OnPlayerConnect();
       
    }
    
    OnPlayerConnect()
    {
    	for(;;)
    	{
    		level waittill( "connecting", player );
    		player thread OnPlayerSpawned();
    	}
    }
    
    
    
    game_timer()
    {	
    	hud = create_simple_hud( self );
    	hud.foreground = true; 
    	hud.sort = 1; 
    	hud.hidewheninmenu = true; 
    	hud.alignX = "left"; 
    	hud.alignY = "top";
    	hud.horzAlign = "user_left"; 
    	hud.vertAlign = "user_top";
    	hud.x = hud.x - -700; 
    	hud.y = hud.y + 35; 
    	hud.alpha = 1;
    	time_text = string(GetTime() / 1000);
    	flag_wait("all_players_spawned");
    	while (1){
    		hud setTimerUp(1);
    		hud setTimer(time_text);
    	}
    	
    }
    
    OnPlayerSpawned()
    {
    	self endon( "disconnect" ); 
    
    	for( ;; )
    	{
    		
    		level waittill( "connected", player ); 
    		self thread game_timer();
    		self SetClientDvars( 
    			"player_backSpeedScale", "1", 
    			"player_strafeSpeedScale", "1");
    
    		
    		wait 3;
    
    		self IPrintLnBold("Timer and speed patch by ^1twitch.tv/^2AlexInVR");
    	}
    	level waittill( "connected", player ); 
    	
    }   
    
    WAW Modding Releases & Resources

  • [ZM][RELEASE] First box patch + timer + movement speed for ALL maps except moon
    AlexInVrundefined AlexInVr

    Nucleye Yes but the crossbow isn't the first weapon, the crossbow is there for coop games, until round 19 it will give you the crossbow as last weapon in the box since it's there for coop games for maps that require it, if the first or second weapon in the box is a crossbow that means that it's a weapon required for the high round strategy

    BO1 Modding Releases & Resources

  • [ZM][RELEASE] First box patch + timer + movement speed for ALL maps except moon
    AlexInVrundefined AlexInVr

    Nucleye which map ? I can update it for sure

    BO1 Modding Releases & Resources

  • [RESOURCE] Boilerplate GSC code for your first script
    AlexInVrundefined AlexInVr

    Resxt I agree with that definitly !

    BO1 Modding Releases & Resources

  • [RESOURCE] Boilerplate GSC code for your first script
    AlexInVrundefined AlexInVr

    Resxt Thx ! I am still learning gsc myself as I just recently got to it more seriously other than writing just simple box patch functions, these will be useful, I'll make sure to update my post too 🙂 !

    As for the syntax yeah this is a bad habit I developed while working on multiple programming projects and languages, Unity is one such example where they love capitals lol

    BO1 Modding Releases & Resources

  • [RESOURCE] Boilerplate GSC code for your first script
    AlexInVrundefined AlexInVr

    I was going around the forums and stuff, and realized there isn't too much resources for newbies to learn GSC, and one fantastic thing in the world of programming are boilerplates, which save you alot of time,

    so thought I would share a boilerplate for anyone who wants to start a script

    #include maps\_utility;
    #include common_scripts\utility;
    #include maps\_zombiemode_utility;
    
    init()
    {
    	 thread onPlayerConnect();
    }
    
    onPlayerConnect()
    {
    	for(;;)
    	{
    		level waittill( "connecting", player );
    		player thread onPlayerSpawned();
    	}
    }
    
    onPlayerSpawned()
    {
    	self endon( "disconnect" ); 
    
    	for( ;; )
    	{
    		level waittill( "connected", player );
    	}
    	
    	
    }
    
    
    
    
    BO1 Modding Releases & Resources

  • [ZM][RELEASE] First box patch + timer + movement speed for ALL maps except moon
    AlexInVrundefined AlexInVr

    This is my personal first box patch for all maps except Moon since this one is not working using this method of common_zombie_patch.ff

    if you are interested in Moon first box see this

    Features:

    • Synchronized Timer

    • Round timer

    • Starting box location changed on maps that require it (Looking at you kino) - Credit goes to idk who for this part of the code, I took it from another patch I was given, Idk who the author is, if you were the one who did it, just comment and I'll give ya credits

    • Movement Speed patch

    • First box also accounting for coop games working up until round 20

    • Perks patch with monkeys on Ascension, and shang

      • order is: Jugg, speed cola, stamin up, (assuming you get all the other perks from the machines, otherwise missing perks will be given to you via the monkeys)

    * No dual wield cz's since they crash plutonium on regular maps
    (Removed because I don't play pluto t5 anymore due to it not being considered legit for Records)


    Installation Instructions:

    • Download Compiled + Source Code
    • unzip the file
    • take common_zombie_patch.ff from the folder
    • move it to %localappdata%/Plutonium/storage/t5/zone or yourGameFolder/zone/common if you are using steam or Bgamer
    • Enjoy

    Building from source instructions

    • you need a valid copy of black ops 1 on steam or have a copy of the mod tools somewhere, they can be downloaded through steam, otherwise, you are on your own, I will not provide support for cracked mod tools, sorry

    • Open steam, and enable Tools on your library 41d2ee05-fdbf-4d96-b851-c95fcd912e30-image.png

    • Navigate to Black ops mod tools (BETA) and download it, the download might be slow as fuck, this is normal, it's probably how they did the compression on steam

    • Once you have the modtools opened, make sure you have a folder named mods in your main game folder

    • Copy and paste the folder you unzipped inside the mods folder

    61a5c9b0-2cb6-4f14-8a74-b4078e47a64a-image.png

    • Inside the tool, select the mod in the dropdown menu, and tick the Link Fastfile option down below

    8d3e5e56-3dde-47b9-97df-085706d15c5f-image.png

    • click on build mod

    aeb2931b-3858-4af3-8416-7e02a1b5a8ad-image.png

    • Click on View Mod 58f4434c-caf1-4573-b5e0-fcdcdc6d5422-image.png

    • Next you will be inside the mod's folder, you will have a file named mod.ff congratulations ! you compiled your first mod, we're almost done

    • Rename mod.ff to common_zombie_patch.ff

    • Follow instructions on how to install compiled version above


    Weapon order:

    • Kino:

      • Raygun, Tgun, monkeys, Crossbow

    • Five:

      • Raygun, monkeys, crossbow

    • Ascension:

      • Raygun, Tgun, gersh, crossbow

    • Call of the dead:

      • Scavenger, Raygun, Russian dolls, Crossbow

    • Shangri la:

      • Babygun, raygun, monkeys, crossbow

    • Nacht:

      • Tgun, raygun, monkeys

    • Verruckt:

      • Raygun, monkeys, crossbow

    • Shi no numa:

      • Raygun, waffe, monkeys

    • Der Riese:

      • Raygun once the box moved atleast once, waffe, monkeys, crossbow

    Have fun and if I helped you please leave a comment showing your gratitude or just an upvote, I appreciate it alot 🙂

    BO1 Modding Releases & Resources

  • [ZM][RELEASE] First box patch + timer + electric trap timer + movement speed for Der Riese
    AlexInVrundefined AlexInVr

    There is, the final First box patch for WAW, all 4 maps are now patched.

    Installation

    • Create a folder named nazi_zombie_factory inside %localappdata%/Plutonium/storage/t4/raw/scripts/sp

    • Create a file with the name of your choice, that ends with the file extension GSC, so for example, file.gsc

    • Paste the code inside this file

    • save it

    • you now have a script

    • Drop the script inside

    • Enjoy

    
    
    #include maps\_utility;
    #include common_scripts\utility;
    #include maps\_zombiemode_utility;
    
    //First Box by twitch.tv/AlexInVR
    
    init()
    {
    	 replacefunc(maps\_zombiemode::round_think, ::custom_round_think);
    	 replacefunc(maps\_zombiemode_weapons::treasure_chest_ChooseRandomWeapon, ::custom_treasure_chest_ChooseRandomWeapon);
         replacefunc(maps\_zombiemode_weapons::treasure_chest_ChooseWeightedRandomWeapon, ::custom_treasure_chest_ChooseWeightedRandomWeapon);
    	 replacefunc(maps\nazi_zombie_factory::electric_trap_think, ::custom_electric_trap_think);
    	thread onConnect();
    
    }
    
    onConnect()
    {
    	for(;;)
    	{
    		level waittill( "connecting", player );
    		player thread OnPlayerSpawned();
    	}
    }
    
    
    game_timer()
    {
    	hud = create_simple_hud( self );
    	hud.foreground = true;
    	hud.sort = 1;
    	hud.hidewheninmenu = true;
    	hud.alignX = "left";
    	hud.alignY = "top";
    	hud.horzAlign = "user_left";
    	hud.vertAlign = "user_top";
    	hud.x = hud.x - -720;
    	hud.y = hud.y + 35;
    	hud.alpha = 1;
    	flag_wait("all_players_spawned");
    	hud setTimerUp(1);
    }
    
    round_timer()
    {
    	timerHud = create_simple_hud( self );
    	timerHud.foreground = true;
    	timerHud.sort = 1;
    	timerHud.hidewheninmenu = true;
    	timerHud.alignX = "left";
    	timerHud.alignY = "top";
    	timerHud.horzAlign = "user_left";
    	timerHud.vertAlign = "user_top";
    	timerHud.x = timerHud.x - -720;
    	timerHud.y = timerHud.y + 45;
    	timerHud.color =  (1, 0, 0);
    	timerHud.alpha = 1;
    	flag_wait("all_players_spawned");
    	for (;;){
    		start_time = GetTime() / 1000;
    		timerHud setTimerUp(0);
    		level waittill("end_of_round");
    		end_time = GetTime() / 1000;
    		time = end_time - start_time;
    		set_time_frozen(timerHud, time);
    	}
    
    }
    
    set_time_frozen(hud, time)
    {
    	level endon("start_of_round");
    	time = time - 0.1;
    	while(1)
    	{
    		hud settimer(time);
    		wait(0.5);
    	}
    }
    
    trap_timer()
    {
    	TtimerHud = create_simple_hud( self );
    	TtimerHud.foreground = true;
    	TtimerHud.sort = 1;
    	TtimerHud.hidewheninmenu = true;
    	TtimerHud.alignX = "left";
    	TtimerHud.alignY = "top";
    	TtimerHud.horzAlign = "user_left";
    	TtimerHud.vertAlign = "user_top";
    	TtimerHud.x = TtimerHud.x - -720;
    	TtimerHud.y = TtimerHud.y + 25;
    	TtimerHud.color =  (1, 1, 0);
    	TtimerHud.alpha = 1;
    	flag_wait("all_players_spawned");
    	for (;;){
    		level waittill("electric_trap_start");
    		start_time = 50;
    		TtimerHud settimer(start_time);
    	}
    }
    
    
    
    timer_til_despawn(floatHeight)
    {
    
    
    	// SRS 9/3/2008: if we timed out, move the weapon back into the box instead of deleting it
    	putBackTime = 12;
    	self MoveTo( self.origin - ( 0, 0, floatHeight ), putBackTime, ( putBackTime * 0.5 ) );
    	wait( putBackTime );
    
    	if(isdefined(self))
    	{
    		self Delete();
    	}
    }
    
    
    custom_electric_trap_think( enable_flag )
    {
    	self sethintstring(&"ZOMBIE_FLAMES_UNAVAILABLE");
    	self.zombie_cost = 1000;
    
    	self thread maps\nazi_zombie_factory::electric_trap_dialog();
    
    	// get a list of all of the other triggers with the same name
    	triggers = getentarray( self.targetname, "targetname" );
    	flag_wait( "electricity_on" );
    
    	// Get the damage trigger.  This is the unifying element to let us know it's been activated.
    	self.zombie_dmg_trig = getent(self.target,"targetname");
    	self.zombie_dmg_trig.in_use = 0;
    
    	// Set buy string
    	self sethintstring(&"ZOMBIE_BUTTON_NORTH_FLAMES");
    
    	// Getting the light that's related is a little esoteric, but there isn't
    	// a better way at the moment.  It uses linknames, which are really dodgy.
    	light_name = "";	// scope declaration
    	tswitch = getent(self.script_linkto,"script_linkname");
    	switch ( tswitch.script_linkname )
    	{
    	case "10":	// wnuen
    	case "11":
    		light_name = "zapper_light_wuen";
    		break;
    
    	case "20":	// warehouse
    	case "21":
    		light_name = "zapper_light_warehouse";
    		break;
    
    	case "30":	// Bridge
    	case "31":
    		light_name = "zapper_light_bridge";
    		break;
    	}
    
    	// The power is now on, but keep it disabled until a certain condition is met
    	//	such as opening the door it is blocking or waiting for the bridge to lower.
    	if ( !flag( enable_flag ) )
    	{
    		self trigger_off();
    
    		maps\nazi_zombie_factory::zapper_light_red( light_name );
    		flag_wait( enable_flag );
    
    		self trigger_on();
    	}
    
    	// Open for business!
    	maps\nazi_zombie_factory::zapper_light_green( light_name );
    
    	while(1)
    	{
    		//valve_trigs = getentarray(self.script_noteworthy ,"script_noteworthy");
    
    		//wait until someone uses the valve
    		self waittill("trigger",who);
    		if( who in_revive_trigger() )
    		{
    			continue;
    		}
    
    		if( is_player_valid( who ) )
    		{
    			if( who.score >= self.zombie_cost )
    			{
    				if(!self.zombie_dmg_trig.in_use)
    				{
    					self.zombie_dmg_trig.in_use = 1;
    
    					//turn off the valve triggers associated with this trap until available again
    					array_thread (triggers, ::trigger_off);
    
    					play_sound_at_pos( "purchase", who.origin );
    					self thread maps\nazi_zombie_factory::electric_trap_move_switch(self);
    					//need to play a 'woosh' sound here, like a gas furnace starting up
    					self waittill("switch_activated");
    					level notify( "electric_trap_start" );
    					//set the score
    					who maps\_zombiemode_score::minus_to_player_score( self.zombie_cost );
    
    					//this trigger detects zombies walking thru the flames
    					self.zombie_dmg_trig trigger_on();
    
    					//play the flame FX and do the actual damage
    					self thread maps\nazi_zombie_factory::activate_electric_trap();
    
    					//wait until done and then re-enable the valve for purchase again
    					self waittill("elec_done");
    
    					clientnotify(self.script_string +"off");
    					level notify( "electric_trap_end" );
    
    					//delete any FX ents
    					if(isDefined(self.fx_org))
    					{
    						self.fx_org delete();
    					}
    					if(isDefined(self.zapper_fx_org))
    					{
    						self.zapper_fx_org delete();
    					}
    					if(isDefined(self.zapper_fx_switch_org))
    					{
    						self.zapper_fx_switch_org delete();
    					}
    
    					//turn the damage detection trigger off until the flames are used again
    			 		self.zombie_dmg_trig trigger_off();
    					wait(25);
    
    					array_thread (triggers, ::trigger_on);
    
    					//COLLIN: Play the 'alarm' sound to alert players that the traps are available again (playing on a temp ent in case the PA is already in use.
    					//speakerA = getstruct("loudspeaker", "targetname");
    					//playsoundatposition("warning", speakera.origin);
    					self notify("available");
    
    					self.zombie_dmg_trig.in_use = 0;
    				}
    			}
    		}
    	}
    }
    
    custom_round_think()
    {
    	for( ;; )
    	{
    		level.round_spawn_func = maps\_zombiemode::round_spawning;
    		//////////////////////////////////////////
    		//designed by prod DT#36173
    		maxreward = 50 * level.round_number;
    		if ( maxreward > 500 )
    			maxreward = 500;
    		level.zombie_vars["rebuild_barrier_cap_per_round"] = maxreward;
    		//////////////////////////////////////////
    
    		level.round_timer = level.zombie_vars["zombie_round_time"];
    
    		add_later_round_spawners();
    
    		maps\_zombiemode::chalk_one_up();
    		//		round_text( &"ZOMBIE_ROUND_BEGIN" );
    
    		maps\_zombiemode_powerups::powerup_round_start();
    
    		players = get_players();
    		array_thread( players, maps\_zombiemode_blockers::rebuild_barrier_reward_reset );
    
    		level thread maps\_zombiemode::award_grenades_for_survivors();
    
    		level.round_start_time = getTime();
    		level thread [[level.round_spawn_func]]();
    		level notify("start_of_round");
    
    		maps\_zombiemode::round_wait();
    		level.first_round = false;
    		level notify("end_of_round");
    
    		level thread maps\_zombiemode::spectators_respawn();
    
    		//		round_text( &"ZOMBIE_ROUND_END" );
    		level thread maps\_zombiemode::chalk_round_hint();
    
    		wait( level.zombie_vars["zombie_between_round_time"] );
    
    		// here's the difficulty increase over time area
    		timer = level.zombie_vars["zombie_spawn_delay"];
    
    		if( timer < 0.08 )
    		{
    			timer = 0.08;
    		}
    
    		level.zombie_vars["zombie_spawn_delay"] = timer * 0.95;
    
    		// Increase the zombie move speed
    		level.zombie_move_speed = level.round_number * 8;
    
    		level.round_number++;
    
    		level notify( "between_round_over" );
    	}
    }
    
    
    
    
    
    
    custom_treasure_chest_ChooseRandomWeapon( player )
    {
    	if (level.round_number <= 20){
    		if (!(player HasWeapon("tesla_gun"))){
    			return "tesla_gun";
    		}
    
    		if (!(player HasWeapon("zombie_cymbal_monkey"))){
    			return "zombie_cymbal_monkey";
    		}
    
    		if (!(player HasWeapon("ray_gun"))){
    			return "ray_gun";
    		}
    
    
    	}
    
    	keys = GetArrayKeys( level.zombie_weapons );
    
    	// Filter out any weapons the player already has
    	filtered = [];
    	for( i = 0; i < keys.size; i++ )
    	{
    		if( !maps\_zombiemode_weapons::get_is_in_box( keys[i] ) )
    		{
    			continue;
    		}
    
    		if( player maps\_zombiemode_weapons::has_weapon_or_upgrade( keys[i] ) )
    		{
    			continue;
    		}
    
    		if( !IsDefined( keys[i] ) )
    		{
    			continue;
    		}
    
    		filtered[filtered.size] = keys[i];
    	}
    
    	// Filter out the limited weapons
    	if( IsDefined( level.limited_weapons ) )
    	{
    		keys2 = GetArrayKeys( level.limited_weapons );
    		players = get_players();
    		pap_triggers = GetEntArray("zombie_vending_upgrade", "targetname");
    		for( q = 0; q < keys2.size; q++ )
    		{
    			count = 0;
    			for( i = 0; i < players.size; i++ )
    			{
    				if( players[i] maps\_zombiemode_weapons::has_weapon_or_upgrade( keys2[q] ) )
    				{
    					count++;
    				}
    			}
    
    			// Check the pack a punch machines to see if they are holding what we're looking for
    			for ( k=0; k<pap_triggers.size; k++ )
    			{
    				if ( IsDefined(pap_triggers[k].current_weapon) && pap_triggers[k].current_weapon == keys2[q] )
    				{
    					count++;
    				}
    			}
    
    			if( count >= level.limited_weapons[keys2[q]] )
    			{
    				filtered = array_remove( filtered, keys2[q] );
    			}
    		}
    	}
    
    	return filtered[RandomInt( filtered.size )];
    }
    
    custom_treasure_chest_ChooseWeightedRandomWeapon( player )
    {
    
    	if (level.round_number <= 20){
    		if (!(player HasWeapon("tesla_gun"))){
    			return "tesla_gun";
    		}
    
    		if (!(player HasWeapon("zombie_cymbal_monkey"))){
    			return "zombie_cymbal_monkey";
    		}
    
    		if (!(player HasWeapon("ray_gun"))){
    			return "ray_gun";
    		}
    
    
    	}
    
    	keys = GetArrayKeys( level.zombie_weapons );
    
    	// Filter out any weapons the player already has
    	filtered = [];
    	for( i = 0; i < keys.size; i++ )
    	{
    		if( !maps\_zombiemode_weapons::get_is_in_box( keys[i] ) )
    		{
    			continue;
    		}
    
    		if( player maps\_zombiemode_weapons::has_weapon_or_upgrade( keys[i] ) )
    		{
    			continue;
    		}
    
    		if( !IsDefined( keys[i] ) )
    		{
    			continue;
    		}
    
    		num_entries = [[ level.weapon_weighting_funcs[keys[i]] ]]();
    
    		for( j = 0; j < num_entries; j++ )
    		{
    			filtered[filtered.size] = keys[i];
    		}
    	}
    
    	// Filter out the limited weapons
    	if( IsDefined( level.limited_weapons ) )
    	{
    		keys2 = GetArrayKeys( level.limited_weapons );
    		players = get_players();
    		pap_triggers = GetEntArray("zombie_vending_upgrade", "targetname");
    		for( q = 0; q < keys2.size; q++ )
    		{
    			count = 0;
    			for( i = 0; i < players.size; i++ )
    			{
    				if( players[i] maps\_zombiemode_weapons::has_weapon_or_upgrade( keys2[q] ) )
    				{
    					count++;
    				}
    			}
    
    			// Check the pack a punch machines to see if they are holding what we're looking for
    			for ( k=0; k<pap_triggers.size; k++ )
    			{
    				if ( IsDefined(pap_triggers[k].current_weapon) && pap_triggers[k].current_weapon == keys2[q] )
    				{
    					count++;
    				}
    			}
    
    			if( count >= level.limited_weapons[keys2[q]] )
    			{
    				filtered = array_remove( filtered, keys2[q] );
    			}
    		}
    	}
    
    	return filtered[RandomInt( filtered.size )];
    }
    
    weapon_give_custom( weapon, is_upgrade )
    {
    	primaryWeapons = self GetWeaponsListPrimaries();
    	current_weapon = undefined;
    
    	//if is not an upgraded perk purchase
    
    	self play_sound_on_ent( "purchase" );
    	self GiveWeapon( weapon, 0 );
    	self GiveMaxAmmo( weapon );
    	self SwitchToWeapon( weapon );
    
    	maps\_zombiemode_weapons::play_weapon_vo(weapon);
    }
    
    power_electric_switch_custom()
    {
    	trig = getent("use_power_switch","targetname");
    	master_switch = getent("power_switch","targetname");
    	master_switch notsolid();
    	//master_switch rotatepitch(90,1);
    	trig sethintstring(&"ZOMBIE_ELECTRIC_SWITCH");
    
    	//turn off the buyable door triggers for electric doors
    // 	door_trigs = getentarray("electric_door","script_noteworthy");
    // 	array_thread(door_trigs,::set_door_unusable);
    // 	array_thread(door_trigs,::play_door_dialog);
    
    	cheat = false;
    
    /#
    	if( GetDvarInt( "zombie_cheat" ) >= 3 )
    	{
    		wait( 5 );
    		cheat = true;
    	}
    #/
    
    	user = undefined;
    
    	// MM - turning on the power powers the entire map
    // 	if ( IsDefined(user) )	// only send a notify if we weren't originally triggered through script
    // 	{
    // 		other_trig = getent("use_warehouse_switch","targetname");
    // 		other_trig notify( "trigger", undefined );
    //
    // 		wuen_trig = getent("use_wuen_switch", "targetname" );
    // 		wuen_trig notify( "trigger", undefined );
    // 	}
    
    	master_switch rotateroll(-90,.3);
    
    	//TO DO (TUEY) - kick off a 'switch' on client script here that operates similiarly to Berlin2 subway.
    	master_switch playsound("switch_flip");
    	flag_set( "electricity_on" );
    	wait_network_frame();
    	clientnotify( "revive_on" );
    	wait_network_frame();
    	clientnotify( "fast_reload_on" );
    	wait_network_frame();
    	clientnotify( "doubletap_on" );
    	wait_network_frame();
    	clientnotify( "jugger_on" );
    	wait_network_frame();
    	level notify( "sleight_on" );
    	wait_network_frame();
    	level notify( "revive_on" );
    	wait_network_frame();
    	level notify( "doubletap_on" );
    	wait_network_frame();
    	level notify( "juggernog_on" );
    	wait_network_frame();
    	level notify( "Pack_A_Punch_on" );
    	wait_network_frame();
    	level notify( "specialty_armorvest_power_on" );
    	wait_network_frame();
    	level notify( "specialty_rof_power_on" );
    	wait_network_frame();
    	level notify( "specialty_quickrevive_power_on" );
    	wait_network_frame();
    	level notify( "specialty_fastreload_power_on" );
    	wait_network_frame();
    
    //	clientnotify( "power_on" );
    	ClientNotify( "pl1" );	// power lights on
    	exploder(600);
    
    	trig delete();
    
    	playfx(level._effect["switch_sparks"] ,getstruct("power_switch_fx","targetname").origin);
    
    	// Don't want east or west to spawn when in south zone, but vice versa is okay
    	maps\_zombiemode_zone_manager::connect_zones( "outside_east_zone", "outside_south_zone" );
    	maps\_zombiemode_zone_manager::connect_zones( "outside_west_zone", "outside_south_zone", true );
    }
    
    
    onPlayerSpawned()
    {
    	self endon( "disconnect" );
    
    	for( ;; )
    	{
    
    		level waittill( "connected", player );
    		self thread round_timer();
    		self thread game_timer();
    		self thread trap_timer();
    		self SetClientDvars(
    			"player_backSpeedScale", "1",
    			"player_strafeSpeedScale", "1");
    
    
    		wait 1.5;
    
    		self IPrintLnBold("First box by ^1twitch.tv/^2AlexInZombies");
    	}
    
    }
    
    
    WAW Modding Releases & Resources

  • [ZM] [RELEASE] First Box patch + timer + movement speed patch NACHT DER UNTOTEN
    AlexInVrundefined AlexInVr

    3 out of 4 maps completed, I will release a patch soon for Der Riese

    Timer, basckpeed and strafe speed

    first box up until 20, (flamethrower and raygun)

    Installation:

    • Create a folder named nazi_zombie_prototype in
    %localappdata%/Plutonium/Storage/t4/raw/scripts/sp
    
    • Drop the script inside

    • enjoy

    #include maps\_utility;
    #include common_scripts\utility;
    #include maps\_zombiemode_utility;
    
    //First Box by twitch.tv/AlexInVR
    
    init()
    {
    	 replacefunc(maps\_zombiemode_weapons::treasure_chest_ChooseRandomWeapon, ::custom_treasure_chest_ChooseRandomWeapon);
    	 replacefunc(maps\_zombiemode_weapons::treasure_chest_weapon_spawn, ::custom_treasure_chest_weapon_spawn);
    	thread onConnect();
       
    }
    
    onConnect()
    {
    	for(;;)
    	{
    		level waittill( "connecting", player );
    		player thread OnPlayerSpawned();
    	}
    }
    
    
    game_timer()
    {	
    	hud = create_simple_hud( self );
    	hud.foreground = true; 
    	hud.sort = 1; 
    	hud.hidewheninmenu = true; 
    	hud.alignX = "left"; 
    	hud.alignY = "top";
    	hud.horzAlign = "user_left"; 
    	hud.vertAlign = "user_top";
    	hud.x = hud.x - -700; 
    	hud.y = hud.y + 35; 
    	hud.alpha = 1;
    	time_text = string(GetTime() / 1000);
    	flag_wait("all_players_spawned");
    	while (1){
    		hud setTimerUp(1);
    		hud setTimer(time_text);
    	}
    	
    }
    
    
    custom_treasure_chest_ChooseRandomWeapon( player )
    {
    	if (level.round_number <= 20){
    		if (!(player HasWeapon("m2_flamethrower_zombie"))){
    			return "m2_flamethrower_zombie";
    		}
    
    		if (!(player HasWeapon("ray_gun"))){
    			return "ray_gun";
    		}
    
    		
    	}
    
    	keys = GetArrayKeys( level.zombie_weapons );
    
    	// Filter out any weapons the player already has
    	filtered = [];
    	for( i = 0; i < keys.size; i++ )
    	{
    		if( player HasWeapon( keys[i] ) )
    		{
    			continue;
    		}
    
    		//chrisP - make sure the chest doesn't give the player a bouncing betty
    		if(keys[i] == "mine_bouncing_betty")
    		{
    			continue;
    		}
    
    		filtered[filtered.size] = keys[i];
    	}
    
    	// Filter out the limited weapons
    	if( IsDefined( level.limited_weapons ) )
    	{
    		keys2 = GetArrayKeys( level.limited_weapons );
    		players = get_players();
    		for( q = 0; q < keys2.size; q++ )
    		{
    			count = 0;
    			for( i = 0; i < players.size; i++ )
    			{
    				if( players[i] HasWeapon( keys2[q] ) )
    				{
    					count++;
    				}
    
    				// check for last stand weapons that might not be on the player at the time
    				if (players[i] maps\_laststand::player_is_in_laststand())
    				{
    					for( m = 0; m < players[i].weaponInventory.size; m++ )
    					{
    						if (players[i].weaponInventory[m] == keys2[q])
    						{
    							count++;
    						}
    					}
    				}
    			}
    
    			if( count == level.limited_weapons[keys2[q]] )
    			{
    				filtered = array_remove( filtered, keys2[q] );
    			}
    		}
    	}
    
    	return filtered[RandomInt( filtered.size )];
    }
    
    custom_treasure_chest_weapon_spawn( chest, player )
    {
    	assert(IsDefined(player));
    	// spawn the model
    	model = spawn( "script_model", self.origin ); 
    	model.angles = self.angles +( 0, 90, 0 );
    
    	floatHeight = 40;
    
    	//move it up
    	model moveto( model.origin +( 0, 0, floatHeight ), 3, 2, 0.9 ); 
    
    	// rotation would go here
    
    	// make with the mario kart
    	modelname = undefined; 
    	rand = undefined; 
    	for( i = 0; i < 40; i++ )
    	{
    
    		if( i < 20 )
    		{
    			wait( 0.05 ); 
    		}
    		else if( i < 30 )
    		{
    			wait( 0.1 ); 
    		}
    		else if( i < 35 )
    		{
    			wait( 0.2 ); 
    		}
    		else if( i < 38 )
    		{
    			wait( 0.3 ); 
    		}
    
    		rand = custom_treasure_chest_ChooseRandomWeapon( player );
    		modelname = GetWeaponModel( rand );
    		model setmodel( modelname ); 
    
    
    	}
    
    	self.weapon_string = rand; // here's where the org get it's weapon type for the give function
    
    	// random change of getting the joker that moves the box
    	rand = Randomint(100);
    
    
    	//increase the chance of joker appearing from 0-100 based on amount of the time chest has been opened.
    	if(level.script != "nazi_zombie_prototype" && getdvar("magic_chest_movable") == "1")
    	{
    
    		if(level.chest_accessed < 5)
    		{		
    			chance_of_joker = 0;
    		}
    		else
    		{
    			chance_of_joker = level.chest_accessed + 3;
    		}
    
    		if (rand <= chance_of_joker)
    		{
    			model SetModel("zombie_teddybear");
    		//	model rotateto(level.chests[level.chest_index].angles, 0.01);
    			//wait(1);
    			model.angles = level.chests[level.chest_index].angles;		
    			wait 1;
    			flag_set("moving_chest_now");
    			level.chest_accessed = 0;
    
    			player maps\_zombiemode_score::add_to_player_score( 950 );
    
    		}
    
    	}
    
    	self notify( "randomization_done" );
    
    	if (flag("moving_chest_now"))
    	{
    		wait .5;	// we need a wait here before this notify
    		level notify("weapon_fly_away_start");
    		wait 2;
    		model MoveZ(500, 4, 3);
    		model waittill("movedone");
    		model delete();
    		self notify( "box_moving" );
    		level notify("weapon_fly_away_end");
    	}
    	else
    	{
    
    		model thread timer_til_despawn(floatHeight);
    		self waittill( "weapon_grabbed" );
    
    		if( !chest.timedOut )
    		{
    			model Delete();
    		}
    
    
    	}
    }
    
    
    
    timer_til_despawn(floatHeight)
    {
    
    
    	// SRS 9/3/2008: if we timed out, move the weapon back into the box instead of deleting it
    	putBackTime = 12;
    	self MoveTo( self.origin - ( 0, 0, floatHeight ), putBackTime, ( putBackTime * 0.5 ) );
    	wait( putBackTime );
    
    	if(isdefined(self))
    	{	
    		self Delete();
    	}
    }
    
    
    onPlayerSpawned()
    {
    	self endon( "disconnect" ); 
    
    	for( ;; )
    	{
    		
    		level waittill( "connected", player ); 
    		self thread game_timer();
    		self SetClientDvars( 
    			"player_backSpeedScale", "1", 
    			"player_strafeSpeedScale", "1");
    
    		
    		wait 3;
    
    		self IPrintLnBold("First box by ^1twitch.tv/^2AlexInVR");
    	}
    	level waittill( "connected", player ); 
    	
    }
    
    
    WAW Modding Releases & Resources

  • [ZM][RELEASE] [PLUTO ONLY] First box patch for moon + timer + speed patch
    AlexInVrundefined AlexInVr

    hindercanrun thx man ! Appreciate it, been trying to find a way to patch this map for a while now

    BO1 Modding Releases & Resources

  • [Release] [Zombies] Black Ops 1 Shared mystery box
    AlexInVrundefined AlexInVr

    if you want to load the script without closing the game etc.... another solution is to make a folder with the name of the map you want in SP

    like

    scripts/sp/zombie_theater/yourscript.gsc

    and it will load it when you load this map

    BO1 Modding Releases & Resources

  • [ZM][RELEASE] [PLUTO ONLY] First box patch for moon + timer + speed patch
    AlexInVrundefined AlexInVr

    So I made a box patch for moon, but it only works on Plutonium due to the use of replacefunc, it will give you the wavegun, gersh and raygun for coop up until round 20, it also has a timer like my waw mods, and a speed patch to make your backspeed and strafe speed the same as on console,

    INSTALL INSTRUCTIONS:

    • REPLACE YOUR COMMON_ZOMBIE_PATCH.FF WITH THE ORIGINAL GAME FILE WHILE YOU PLAY THE MAP OR ELSE IT WILL NOT LOAD !! Please don't comment that the script is not working if you did not follow the instructions, I tested it before and it's working 100%

    • Create a folder named zombie_moon in your %localappdata%/Plutonium/Storage/t5/scripts/sp and place the file in it

    • Launch the map and enjoy 🙂

    • If you don't have the original common_zombie_patch.ff here it is, just unzip the file
      download

    if you find any issues in the gameplay please advise me, I am not a moon player so idk if it will do something to the gameplay, as far as I tested, everything works.

    #include maps\_utility; 
    #include common_scripts\utility;
    #include maps\_zombiemode_utility;
    
    
    init()
    {
            if ( GetDvar( #"zombiemode" ) == "1" )
            {
                level thread onPlayerConnect();
                replacefunc(maps\_zombiemode_weapons::treasure_chest_ChooseWeightedRandomWeapon, ::custom_treasure_chest_ChooseWeightedRandomWeapon);
            }
                
    }
    
    
    any_player_has_weapon(weap)
    {	
    	players = get_players();
    	has_weap = false;
    	for(i = 0; players.size > i; i++)
    	{
    		if(players[i] maps\_zombiemode_weapons::has_weapon_or_upgrade(weap))
    			has_weap = true;
    	}
    	return has_weap;
    }
    
    
    game_timer()
    {	
    	hud = create_simple_hud( self );
    	hud.foreground = true; 
    	hud.sort = 1; 
    	hud.hidewheninmenu = true; 
    	hud.alignX = "left"; 
    	hud.alignY = "top";
    	hud.horzAlign = "user_left"; 
    	hud.vertAlign = "user_top";
    	hud.x = hud.x - -820; 
    	hud.y = hud.y + 35; 
    	hud.alpha = 1;
    	time_text = string(GetTime() / 1000);
    	flag_wait("all_players_spawned");
    	while (1){
    		hud setTimerUp(1);
    		hud setTimer(time_text);
    	}
    	
    }
    
    patch_moon()
    {	
    	//WaveGun
    	if(!self maps\_zombiemode_weapons::has_weapon_or_upgrade("microwavegundw_zm") && !any_player_has_weapon("microwavegundw_zm"))
    				return "microwavegundw_zm";
    
    	//Gersh
    	if(!self maps\_zombiemode_weapons::has_weapon_or_upgrade("zombie_black_hole_bomb"))
    				return "zombie_black_hole_bomb";
    
    	//RayGun for coop
    	if(!self maps\_zombiemode_weapons::has_weapon_or_upgrade("ray_gun_zm"))
    				return "ray_gun_zm";
    }
    
    
    custom_treasure_chest_ChooseWeightedRandomWeapon( player )
    {
    	//First Box by Crybaby / AlexInVr
    
    	if(level.round_number < 20)
    	{
    		//Moon
    		if (level.script == "zombie_moon")
    			return player patch_moon();
    	}
    
    
    
    	keys = GetArrayKeys( level.zombie_weapons );
    
    	toggle_weapons_in_use = 0;
    	// Filter out any weapons the player already has
    	filtered = [];
    	for( i = 0; i < keys.size; i++ )
    	{
    		if( !maps\_zombiemode_weapons::get_is_in_box( keys[i] ) )
    		{
    			continue;
    		}
    		
    		if( isdefined( player ) && is_player_valid(player) && player maps\_zombiemode_weapons::has_weapon_or_upgrade( keys[i] ) )
    		{
    			if ( maps\_zombiemode_weapons::is_weapon_toggle( keys[i] ) )
    			{
    				toggle_weapons_in_use++;
    			}
    			continue;
    		}
    
    		if( !IsDefined( keys[i] ) )
    		{
    			continue;
    		}
    
    		num_entries = [[ level.weapon_weighting_funcs[keys[i]] ]]();
    		
    		for( j = 0; j < num_entries; j++ )
    		{
    			filtered[filtered.size] = keys[i];
    		}
    	}
    	
    	// Filter out the limited weapons
    	if( IsDefined( level.limited_weapons ) )
    	{
    		keys2 = GetArrayKeys( level.limited_weapons );
    		players = get_players();
    		pap_triggers = GetEntArray("zombie_vending_upgrade", "targetname");
    		for( q = 0; q < keys2.size; q++ )
    		{
    			count = 0;
    			for( i = 0; i < players.size; i++ )
    			{
    				if( players[i] maps\_zombiemode_weapons::has_weapon_or_upgrade( keys2[q] ) )
    				{
    					count++;
    				}
    			}
    
    			// Check the pack a punch machines to see if they are holding what we're looking for
    			for ( k=0; k<pap_triggers.size; k++ )
    			{
    				if ( IsDefined(pap_triggers[k].current_weapon) && pap_triggers[k].current_weapon == keys2[q] )
    				{
    					count++;
    				}
    			}
    
    			// Check the other boxes so we don't offer something currently being offered during a fire sale
    			for ( chestIndex = 0; chestIndex < level.chests.size; chestIndex++ )
    			{
    				if ( IsDefined( level.chests[chestIndex].chest_origin.weapon_string ) && level.chests[chestIndex].chest_origin.weapon_string == keys2[q] )
    				{
    					count++;
    				}
    			}
    			
    			if ( isdefined( level.random_weapon_powerups ) )
    			{
    				for ( powerupIndex = 0; powerupIndex < level.random_weapon_powerups.size; powerupIndex++ )
    				{
    					if ( IsDefined( level.random_weapon_powerups[powerupIndex] ) && level.random_weapon_powerups[powerupIndex].base_weapon == keys2[q] )
    					{
    						count++;
    					}
    				}
    			}
    
    			if ( maps\_zombiemode_weapons::is_weapon_toggle( keys2[q] ) )
    			{
    				toggle_weapons_in_use += count;
    			}
    
    			if( count >= level.limited_weapons[keys2[q]] )
    			{
    				filtered = array_remove( filtered, keys2[q] );
    			}
    		}
    	}
    	
    	// finally, filter based on toggle mechanic
    	if ( IsDefined( level.zombie_weapon_toggles ) )
    	{
    		keys2 = GetArrayKeys( level.zombie_weapon_toggles );
    		for( q = 0; q < keys2.size; q++ )
    		{
    			if ( level.zombie_weapon_toggles[keys2[q]].active )
    			{
    				if ( toggle_weapons_in_use < level.zombie_weapon_toggle_max_active_count )
    				{
    					continue;
    				}
    			}
    
    			filtered = array_remove( filtered, keys2[q] );
    		}
    	}
    
    	// try to "force" a little more "real randomness" by randomizing the array before randomly picking a slot in it
    	filtered = array_randomize( filtered );
    	return filtered[RandomInt( filtered.size )];
    }
    
    
    onPlayerConnect()
    {
    	for(;;)
    	{
    		level waittill ("connecting", player);
    
    		player thread onPlayerSpawned();
    	}
    }
    
    onPlayerSpawned()
    {
    	for(;;)
    	{
    		self waittill("spawned_player");
    		self thread game_timer();
    
    
    		self SetClientDvars( 
    			"player_backSpeedScale", "1", 
    			"player_strafeSpeedScale", "1");
    
    		
    		wait 3;
    
    		self IPrintLnBold("First box by ^1twitch.tv/^2AlexInVR");
    	}
    }
    
    

    PICS:

    0b0621bf-658f-4f15-a350-a647a36ac8fa-image.png

    BO1 Modding Releases & Resources

  • [Release] [Mod Tools] Apothicon Servant
    AlexInVrundefined AlexInVr

    Lerrycapetime if you extract the map_name.ff you should have a file _zombiemode.gsc that contains the functions that includes the weapons in the map, if not, look in the map_name_patch.ff

    BO1 Modding Support & Discussion

  • [RELEASE] [ZOMBIES] First box patch for shi no numa
    AlexInVrundefined AlexInVr

    asherisis see https://forum.plutonium.pw/topic/24371/zm-release-shi-no-numa-first-box-timer-movement-speed-patch I fixed it

    WAW Modding Releases & Resources
  • 1
  • 2
  • 3
  • 4
  • 3 / 4
  • Login

  • Don't have an account? Register

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