

Login Issues
Forgot password?Activate Issues
Account activation email not received? Wrong account activation email used?Other Problems?
Contact Support - Help Center Get help on the UGX Discord. Join it now!

![]() | Benevolent Soul who has our eternal gratitude and exclusive access to betas and the donator section of the forum. |
![]() | Has shown effort and knowledge in the area of scripting while being a part of the UGX-Mods community. |
//================================================================================================
// Script Name : Weapon Bundle Upgrade Machine
// Author : xSanchez78
// Notes : call "maps\_weapon_bundle::main();" after "maps\_zombiemode::main();" in "mapname.gsc".
//
//================================================================================================
#include common_scripts\utility;
#include maps\_utility;
#include maps\_zombiemode_utility;
#include maps\_zombiemode_zone_manager;
#include maps\_music;
#include maps\dlc3_code;
#include maps\dlc3_teleporter;
main()
{
vending_bundle_trigger = GetEntArray("zombie_vending_bundle", "targetname");
if ( vending_bundle_trigger.size >= 1 )
{
array_thread( vending_bundle_trigger, ::vending_bundle );
}
level.bundle_timeout = 15;
level thread turn_Bundle_on();
}
turn_Bundle_on()
{
flag_wait("electricity_on");
vending_bundle_trigger = GetEntArray("zombie_vending_bundle", "targetname");
for(i=0; i<vending_bundle_trigger.size; i++ )
{
perk = getent(vending_bundle_trigger[i].target, "targetname");
if(isDefined(perk))
{
perk thread activate_bundle();
}
}
}
activate_bundle()
{
self setmodel("zombie_vending_packapunch_on");
self playsound("perks_power_on");
self vibrate((0,-100,0), 0.3, 0.4, 3);
timer = 0;
duration = 0.05;
level notify( "Bundle_On" );
}
vending_bundle()
{
perk_machine = GetEnt( self.target, "targetname" );
if( isDefined( perk_machine.target ) )
{
perk_machine.wait_flag = GetEnt( perk_machine.target, "targetname" );
}
self UseTriggerRequireLookAt();
self SetHintString( "The power must be activated first" );
self SetCursorHint( "HINT_NOICON" );
level waittill("Bundle_On");
self thread maps\_zombiemode_weapons::decide_hide_show_hint();
bundle_rollers = spawn("script_origin", self.origin);
bundle_timer = spawn("script_origin", self.origin);
bundle_rollers playloopsound("packa_rollers_loop");
self SetHintString( "Press & hold &&1 to Bundle Weapon [Cost: 5000]" );
for( ;; )
{
self waittill( "trigger", player );
index = maps\_zombiemode_weapons::get_player_index(player);
cost = 5000;
plr = "plr_" + index + "_";
if( !player maps\_zombiemode_weapons::can_buy_weapon() )
{
wait( 0.1 );
continue;
}
if (player maps\_laststand::player_is_in_laststand() )
{
wait( 0.1 );
continue;
}
if( player isThrowingGrenade() )
{
wait( 0.1 );
continue;
}
if( player isSwitchingWeapons() )
{
wait(0.1);
continue;
}
current_weapon = player getCurrentWeapon();
if( !IsDefined( level.zombie_include_weapons[current_weapon] ) || !IsDefined( level.zombie_include_weapons[current_weapon + "_bundled"] ) )
{
iprintlnbold ("This Weapon Is Not Bundle-Able");
continue;
}
if ( player.score < cost )
{
self playsound("deny");
player thread maps\_zombiemode_perks::play_no_money_perk_dialog();
continue;
}
player maps\_zombiemode_score::minus_to_player_score( cost );
self achievement_notify("perk_used");
sound = "bottle_dispense3d";
playsoundatposition(sound, self.origin);
rand = randomintrange(1,100);
if( rand <= 8 )
{
player thread maps\_zombiemode_perks::play_packa_wait_dialog(plr);
}
origin = self.origin;
angles = self.angles;
if( isDefined(perk_machine))
{
origin = perk_machine.origin+(0,0,35);
angles = perk_machine.angles+(0,90,0);
}
self disable_trigger();
player thread do_knuckle_crack();
self.current_weapon = current_weapon;
weaponmodel = player third_person_weapon_bundle( current_weapon, origin, angles, bundle_rollers, perk_machine );
self enable_trigger();
self SetHintString( "Press & hold &&1 to Take Bundled Weapon" );
self setvisibletoplayer( player );
self thread wait_for_player_to_take( player, current_weapon, bundle_timer );
self thread wait_for_timeout( bundle_timer );
self waittill_either( "bundle_timeout", "bundle_taken" );
self.current_weapon = "";
weaponmodel delete();
self SetHintString( "Press & hold &&1 to Bundle Weapon [Cost: 5000]" );
self setvisibletoall();
}
}
do_knuckle_crack()
{
gun = self bundle_knuckle_crack_begin();
self.is_drinking = 1;
self waittill_any( "fake_death", "death", "player_downed", "weapon_change_complete" );
self bundle_knuckle_crack_end( gun );
self.is_drinking = undefined;
}
bundle_knuckle_crack_begin()
{
self DisableOffhandWeapons();
self DisableWeaponCycling();
self AllowLean( false );
self AllowAds( false );
self AllowSprint( false );
self AllowProne( false );
self AllowMelee( false );
if ( self GetStance() == "prone" )
{
self SetStance( "crouch" );
}
primaries = self GetWeaponsListPrimaries();
gun = self GetCurrentWeapon();
weapon = "zombie_knuckle_crack";
if ( gun != "none" && gun != "mine_bouncing_betty" )
{
self TakeWeapon( gun );
}
else
{
return;
}
if( primaries.size <= 1 )
{
self GiveWeapon( "zombie_colt" );
}
self GiveWeapon( weapon );
self SwitchToWeapon( weapon );
return gun;
}
bundle_knuckle_crack_end( gun )
{
assert( gun != "zombie_perk_bottle_doubletap" );
assert( gun != "zombie_perk_bottle_revive" );
assert( gun != "zombie_perk_bottle_jugg" );
assert( gun != "zombie_perk_bottle_sleight" );
assert( gun != "syrette" );
self EnableOffhandWeapons();
self EnableWeaponCycling();
self AllowLean( true );
self AllowAds( true );
self AllowSprint( true );
self AllowProne( true );
self AllowMelee( true );
weapon = "zombie_knuckle_crack";
if ( self maps\_laststand::player_is_in_laststand() )
{
self TakeWeapon(weapon);
return;
}
self TakeWeapon(weapon);
primaries = self GetWeaponsListPrimaries();
if( isDefined( primaries ) && primaries.size > 0 )
{
self SwitchToWeapon( primaries[0] );
}
else
{
self SwitchToWeapon( "zombie_colt" );
}
}
third_person_weapon_bundle( current_weapon, origin, angles, bundle_rollers, perk_machine )
{
forward = anglesToForward( angles );
interact_pos = origin + (forward*-25);
worldgun = spawn( "script_model", interact_pos );
worldgun.angles = self.angles;
worldgun setModel( GetWeaponModel( current_weapon ) );
PlayFx( level._effect["packapunch_fx"], origin+(0,1,-34), forward );
worldgun rotateto( angles+(0,90,0), 0.35, 0, 0 );
wait( 0.5 );
worldgun moveto( origin, 0.5, 0, 0 );
bundle_rollers playsound( "packa_weap_upgrade" );
if( isDefined( perk_machine.wait_flag ) )
{
perk_machine.wait_flag rotateto( perk_machine.wait_flag.angles+(179, 0, 0), 0.25, 0, 0 );
}
wait( 0.35 );
worldgun delete();
wait( 6 );
bundle_rollers playsound( "packa_weap_ready" );
worldgun = spawn( "script_model", origin );
worldgun.angles = angles+(0,90,0);
worldgun setModel( GetWeaponModel( current_weapon+"_bundled" ) );
worldgun moveto( interact_pos, 0.5, 0, 0 );
if( isDefined( perk_machine.wait_flag ) )
{
perk_machine.wait_flag rotateto( perk_machine.wait_flag.angles-(179, 0, 0), 0.25, 0, 0 );
}
wait( 0.5 );
worldgun moveto( origin, level.bundle_timeout, 0, 0);
return worldgun;
}
wait_for_player_to_take( player, weapon, bundle_timer )
{
index = maps\_zombiemode_weapons::get_player_index(player);
plr = "plr_" + index + "_";
self endon( "bundle_timeout" );
while( true )
{
bundle_timer playloopsound( "ticktock_loop" );
self waittill( "trigger", trigger_player );
bundle_timer stoploopsound(.05);
if( trigger_player == player )
{
if( !player maps\_laststand::player_is_in_laststand() )
{
self notify( "bundle_taken" );
primaries = player GetWeaponsListPrimaries();
if( isDefined( primaries ) && primaries.size >= 2 )
{
player maps\_zombiemode_weapons::weapon_give( weapon+"_bundled" );
}
else
{
player GiveWeapon( weapon+"_bundled" );
player GiveMaxAmmo( weapon+"_bundled" );
}
player SwitchToWeapon( weapon+"_bundled" );
player achievement_notify( "DLC3_ZOMBIE_PAP_ONCE" );
player achievement_notify( "DLC3_ZOMBIE_TWO_UPGRADED" );
player thread maps\_zombiemode_perks::play_packa_get_dialog(plr);
return;
}
}
wait( 0.05 );
}
}
wait_for_timeout( bundle_timer )
{
self endon( "bundle_taken" );
wait( level.bundle_timeout );
self notify( "bundle_timeout" );
bundle_timer stoploopsound(.05);
bundle_timer playsound( "packa_deny" );
}weapon,sp\WEAPONNAME_upgraded_bundledadd_zombie_weapon( "WEAPONNAME_upgraded_bundled", "Press & hold &&1 to buy WEAPONNAME [Cost: 10000]", 10000, "" );include_weapon( "WEAPONNAME_upgraded_bundled", false );