[ZM][RELEASE] First box patch + timer + movement speed for Der Riese

Topic created · 6 Posts · 161 Views
  • 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

    • 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_ChooseWeightedRandomWeapon, ::custom_treasure_chest_ChooseWeightedRandomWeapon);
    	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);
    	}
    	
    }
    
    
    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_treasure_chest_ChooseRandomWeapon( player )
    {
    	if (level.round_number <= 20){
    		if (!(player HasWeapon("tesla_gun"))){
    			return "tesla_gun";
    		}
    
    		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("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 )];
    }
    
    
    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");
    	}
    	
    }
    
  • The way you explain this makes no sense to me. So idk what to do exactly.

  • @Cornal_F You create a txt file anywhere and copy and paste the code into it. You then pull the file into a compiler, which changes it to a script file. You then put the file into %localappdata%/Plutonium/storage/t4/raw/scripts/sp

  • @WolflexZ ok thank you, but I'm still confused on compiling the file?

  • Hey, what can I use to compile this script I don't really heavily go into waw modding.

  • You don't need to compile anything, the game will do that when it tries to load the file.

Log in to reply