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

Plutonium

  1. Home
  2. WAW Modding Releases & Resources
  3. [ZM][RELEASE] Shi no numa first box + timer + movement speed patch

[ZM][RELEASE] Shi no numa first box + timer + movement speed patch

Scheduled Pinned Locked Moved WAW Modding Releases & Resources
14 Posts 9 Posters 4.1k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • A Former User? Offline
    A Former User? Offline
    A Former User
    wrote on last edited by
    #2

    Hey can you maybe make one without the first box patch?

    And how do i add this code to the game?

    AlexInVrundefined 1 Reply Last reply
    0
    • AlexInVrundefined Offline
      AlexInVrundefined Offline
      AlexInVr
      wrote on last edited by
      #3

      UPDATE: 2/3/2023 3:34PM

      • Implemented timer in a better way to make sure the game stays stable

      • Implemented round timer

      1 Reply Last reply
      0
      • A Former User? A Former User

        Hey can you maybe make one without the first box patch?

        And how do i add this code to the game?

        AlexInVrundefined Offline
        AlexInVrundefined Offline
        AlexInVr
        wrote on last edited by
        #4

        @frost_EU I will update the post with a no first box version

        1 Reply Last reply
        0
        • AlexInVrundefined AlexInVr

          Again, another First box patch by your fav waw modder 😄

          This release adds a timer synchronized with the game without the need for external software

          it also fixes the movement speed to be the same as console

          #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);
          	 replacefunc(maps\_zombiemode_weapons_sumpf::treasure_chest_ChooseRandomWeapon, ::custom_treasure_chest_ChooseRandomWeapon);
          	 replacefunc(maps\_zombiemode_weapons_sumpf::treasure_chest_weapon_spawn, ::custom_treasure_chest_weapon_spawn);
          	replacefunc(maps\_zombiemode::round_think, ::custom_round_think);
          	thread onConnect();
             
          }
          
          onConnect()
          {
          	for(;;)
          	{
          		level waittill( "connecting", player );
          		player thread onPlayerSpawned();
          	}
          }
          
          
          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 <= 15){
          			if (!(player HasWeapon("tesla_gun"))){
          				return "tesla_gun";
          			}
          
          			if (!(player HasWeapon("zombie_ppsh"))){
          				return "zombie_ppsh";
          			}
          		} else {
          			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;
          		}
          
          		// PI_CHANGE_BEGIN
          		if( isDefined(level.script) && level.script == "nazi_zombie_sumpf")
          		{
          			//make sure box moves once before allowing ray gun to be accessed.
          			if( level.box_moved == false )
          			{
          				if( keys[i] == "ray_gun" )
          				{
          					continue;
          				}
          			}
          		}
          		// PI_CHANGE_END
          		
          		if( !IsDefined( keys[i] ) )
          			continue;
          
          		filtered[filtered.size] = keys[i];
          	}
          	
          	// PI_CHANGE_BEGIN - adjusting the percentages of the ray gun and tesla gun showing up 
          	if( isDefined(level.script) && level.script == "nazi_zombie_sumpf" )
          	{	
          		if( level.box_moved == true )
          		{	
          			if( !(player HasWeapon( "ray_gun" )) )
          			{
          				// increase the percentage of ray gun
          				if( isDefined( level.pulls_since_last_ray_gun ) )
          				{
          					// after 12 pulls the ray gun percentage increases to 15%
          					
          					if( level.pulls_since_last_ray_gun > 11 )
          					{
          						// calculate the number of times we have to add it to the array to get the desired percent
          						number_to_add = .15 * filtered.size;
          						for(i=1; i<number_to_add; i++)
          						{
          							filtered[filtered.size] = "ray_gun";
          						}				
          					}			
          					// after 8 pulls the Ray Gun percentage increases to 10%
          					else if( level.pulls_since_last_ray_gun > 7 )
          					{
          						// calculate the number of times we have to add it to the array to get the desired percent
          						number_to_add = .1 * filtered.size;
          						for(i=1; i<number_to_add; i++)
          						{
          							filtered[filtered.size] = "ray_gun";
          						}				
          					}				
          				}
          			}
          		}
          			
          		// increase the percentage of tesla gun
          		if( isDefined( level.pulls_since_last_tesla_gun ) )
          		{
          			// player has dropped the tesla for another weapon, so we set all future polls to 20%
          			if( isDefined(level.player_drops_tesla_gun) && level.player_drops_tesla_gun == true )
          			{						
          				// calculate the number of times we have to add it to the array to get the desired percent
          				number_to_add = .2 * filtered.size;
          				for(i=1; i<number_to_add; i++)
          				{
          					filtered[filtered.size] = "tesla_gun";
          				}				
          			}
          			
          			// player has not seen tesla gun in late rounds
          			if( !isDefined(level.player_seen_tesla_gun) || level.player_seen_tesla_gun == false )
          			{
          
          				// after round 10 the Tesla gun percentage increases to 20%
          				if( level.round_number > 10 )
          				{
          					// calculate the number of times we have to add it to the array to get the desired percent
          					number_to_add = .2 * filtered.size;
          					for(i=1; i<number_to_add; i++)
          					{
          						filtered[filtered.size] = "tesla_gun";
          					}				
          				}		
          				// after round 5 the Tesla gun percentage increases to 15%
          				else if( level.round_number > 5 )
          				{
          					// calculate the number of times we have to add it to the array to get the desired percent
          					number_to_add = .15 * filtered.size;
          					for(i=1; i<number_to_add; i++)
          					{
          						filtered[filtered.size] = "tesla_gun";
          					}				
          				}						
          			}
          		}
          	}
          	// PI_CHANGE_END	
          
          	// 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 );
          		
          		/#
          			if( maps\_zombiemode_tesla::tesla_gun_exists() )	
          			{
          				if ( i == 39 && GetDvar( "scr_spawn_tesla" ) != "" )
          				{
          					SetDvar( "scr_spawn_tesla", "" );
          					rand = "tesla_gun";
          				}
          			}
          		#/
          		
          		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
          	random = 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 < 4)
          		{		
          			// PI_CHANGE_BEGIN - JMA - RandomInt(100) can return a number between 0-99.  If it's zero and chance_of_joker is zero
          			//									we can possibly have a teddy bear one after another.
          			chance_of_joker = -1;
          			// PI_CHANGE_END
          		}
          		else
          		{
          			chance_of_joker = level.chest_accessed + 20;
          			
          			// PI_CHANGE_BEGIN - JMA 
          			if( isDefined(level.script) && level.script == "nazi_zombie_sumpf" )
          			{
          				// make sure teddy bear appears on the 8th pull if it hasn't moved from the attic
          				if( (!isDefined(level.magic_box_first_move) || level.magic_box_first_move == false ) && level.chest_accessed >= 8)
          				{
          					chance_of_joker = 100;
          				}
          				
          				// pulls 4 thru 8, there is a 15% chance of getting the teddy bear
          				// NOTE:  this happens in all cases
          				if( level.chest_accessed >= 4 && level.chest_accessed < 8 )
          				{
          					if( random < 15 )
          					{
          						chance_of_joker = 100;
          					}
          					else
          					{
          						chance_of_joker = -1;
          					}
          				}
          				
          				// after the first magic box move the teddy bear percentages changes
          				if( isDefined(level.magic_box_first_move) && level.magic_box_first_move == true )
          				{
          					// between pulls 8 thru 12, the teddy bear percent is 30%
          					if( level.chest_accessed >= 8 && level.chest_accessed < 13 )
          					{
          						if( random < 30 )
          						{
          							chance_of_joker = 100;
          						}
          						else
          						{
          							chance_of_joker = -1;
          						}
          					}
          					
          					// after 12th pull, the teddy bear percent is 50%
          					if( level.chest_accessed >= 13 )
          					{
          						if( random < 50 )
          						{
          							chance_of_joker = 100;
          						}
          						else
          						{
          							chance_of_joker = -1;
          						}
          					}
          				}
          			}					
          			// PI_CHANGE_END
          		}
          
          		if (random <= chance_of_joker)
          		{
          			model SetModel("zombie_teddybear");
          		//	model rotateto(level.chests[level.chest_index].angles, 0.01);
          			//wait(1);
          			model.angles = self.angles;		
          			wait 1;
          			flag_set("moving_chest_now");
          			level.chest_accessed = 0;
          
          			player maps\_zombiemode_score::add_to_player_score( 950 );
          
          			//allow power weapon to be accessed.
          			level.box_moved = true;
          
          
          		}
          
          	}
          
          	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
          	{
          		
          		//turn off power weapon, since player just got one
          		if( rand == "tesla_gun" || rand == "ray_gun" )
          		{
          			// PI_CHANGE_BEGIN - JMA - reset the counters for tesla gun and ray gun pulls
          			if( isDefined( level.script ) && level.script == "nazi_zombie_sumpf" )
          			{
          				if( rand == "ray_gun" )
          				{
          					level.box_moved = false;
          					level.pulls_since_last_ray_gun = 0;
          				}
          				
          				if( rand == "tesla_gun" )
          				{
          					level.pulls_since_last_tesla_gun = 0;
          					level.player_seen_tesla_gun = true;
          				}			
          			}
          			else
          			{
          				level.box_moved = false;
          			}
          			// PI_CHANGE_END			
          		}
          
          		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();
          	}
          }
          
          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;
          	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 - -700; 
          	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);
          	}
          }
          
          onPlayerSpawned()
          {
          	self endon( "disconnect" ); 
          
          	for( ;; )
          	{
          		
          		level waittill( "connected", player ); 
          		self thread game_timer();
          		self thread round_timer();
          		self SetClientDvars( 
          			"player_backSpeedScale", "1", 
          			"player_strafeSpeedScale", "1");
          		
          		wait 3;
          
          		self IPrintLnBold("First box patch by ^1twitch.tv/^2AlexInVR");
          	}
          	level waittill( "connected", player ); 
          	
          }  
          

          pic of what it looks like upon spawning in the game.

          download (9).jpg
          download (3).jpg

          download (4).jpg

          download (5).jpg

          kamthescholarundefined Offline
          kamthescholarundefined Offline
          kamthescholar
          wrote on last edited by
          #5

          AlexInVr i know this is quite old but how do i add this to my game?

          1 Reply Last reply
          0
          • Cam Out2uundefined Offline
            Cam Out2uundefined Offline
            Cam Out2u
            wrote on last edited by
            #6

            how do i add the script to the game

            AlexInVrundefined 1 Reply Last reply
            0
            • Cam Out2uundefined Cam Out2u

              how do i add the script to the game

              AlexInVrundefined Offline
              AlexInVrundefined Offline
              AlexInVr
              wrote on last edited by
              #7

              Cam Out2u Open notepad, copy paste the text into Notepad, click "save as", name it patch.gsc

              press windows + r on your keyboard, a box will appear, type in %LOCALAPPDATA%, search for a folder named plutonium, then you wanna go to storage ---> t4 --> raw ---> scripts ----> sp ----> and then you want to create a folder named nazi_zombie_sumpf

              drop the patch.gsc file in the folder and launch your game

              C:\Users\thrif\AppData\Local\Plutonium\storage\t4\raw\scripts\sp

              meteora_undefined VisoredTuna4671undefined 2 Replies Last reply
              0
              • Kingtonioundefined Offline
                Kingtonioundefined Offline
                Kingtonio
                wrote on last edited by
                #8

                how can i get the reset tracker like in the first pic?

                1 Reply Last reply
                0
                • addygobblerundefined Offline
                  addygobblerundefined Offline
                  addygobbler
                  wrote on last edited by
                  #9

                  does first box patch no longer work? Isn't working for me but timer and backspeed is. Also where can i get the wonder waff skin and zombie skin you got in the pics?

                  1 Reply Last reply
                  0
                  • lepoonchisundefined Offline
                    lepoonchisundefined Offline
                    lepoonchis
                    wrote on last edited by
                    #10
                    This post is deleted!
                    1 Reply Last reply
                    0
                    • Cu1tzZzundefined Offline
                      Cu1tzZzundefined Offline
                      Cu1tzZz
                      wrote on last edited by
                      #11

                      does timer still work

                      AlexInVrundefined 1 Reply Last reply
                      0
                      • GoatedGameplayundefined Offline
                        GoatedGameplayundefined Offline
                        GoatedGameplay
                        wrote on last edited by
                        #12

                        How do I download it?

                        1 Reply Last reply
                        0
                        • Cu1tzZzundefined Cu1tzZz

                          does timer still work

                          AlexInVrundefined Offline
                          AlexInVrundefined Offline
                          AlexInVr
                          wrote on last edited by
                          #13

                          Cu1tzZz Should be working still

                          1 Reply Last reply
                          0
                          • GoatedGameplayundefined Offline
                            GoatedGameplayundefined Offline
                            GoatedGameplay
                            wrote last edited by
                            #14

                            Can you make a download option?

                            1 Reply Last reply
                            0

                            Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                            Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                            With your input, this post could be even better 💗

                            Register Login
                            Reply
                            • Reply as topic
                            Log in to reply
                            • Oldest to Newest
                            • Newest to Oldest
                            • Most Votes


                            • Login

                            • Don't have an account? Register

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