UGX-Mods

Call of Duty: Black Ops 3 => Help Desk => Scripting => Topic started by: Doodles_Inc on December 07, 2016, 03:39:38 pm

Title: How to make the NSZ Kino Teleport work for all the players in the match?
Post by: Doodles_Inc on December 07, 2016, 03:39:38 pm
I have a problem with a NSZ Telport script:
Code Snippet
Plaintext
// Kino Teleporter by NSZ
#using scripts\zm\_zm_score;
#using scripts\codescripts\struct;

#define KINO_SWIRL "_NSZ/Kino_Tele/kino_swirl"
#precache( "fx", KINO_SWIRL );

// Kino Teleporter
function init()
{
// ================ Begin: Variables You Can Change if You Like :Begin =====================
level.tele_kill_radius = 100; // The radius that kills zom at the main frame
level.cooldown_time = 90; // Cooldown Time after teleporting in seconds
level.tele_cost = undefined; // Cost to Use Teleporter, if undefined it is free
level.time_in_pap = 30; // The amount of time you will spend in the PaP room
level.nsz_debug = false; // Used to bug test and display features
// ================ End: Variables You Can Change if You Like :End =====================

level.link_pad_trigger = GetEnt( "link_pad", "targetname" );
level.teleport_trigger = GetEnt( "tele_trigger", "targetname" );
level.tele_room_spots = struct::get_array( "tele_room_org", "targetname" );
level.mainframe_spots = struct::get_array( "mainframe_org", "targetname" );
level.black_spots = struct::get_array( "black_orgs", "targetname" );
level.black_spots_targets = [];
for( i=0;i<level.black_spots.size;i++ )
level.black_spots_targets[i] = struct::get( level.black_spots[i].target, "targetname" );

main();
}

function main()
{
while(1)
{
level.link_pad_trigger SetCursorHint( "HINT_NOICON" );
level.link_pad_trigger SetHintString( "" );
level.teleport_trigger SetHintString( "Hold ^3&&1^7 to Initiate Link to Pad" );
level.teleport_trigger SetCursorHint( "HINT_NOICON" );

level.teleport_trigger waittill( "trigger", player );
level.teleport_trigger playsound( "kino_activate_start" );
level.teleport_trigger SetHintString( "Waiting for Link to Mainframe" );
level.link_pad_trigger SetHintString( "Hold ^3&&1^7 to Link Pad with Core" );
level.link_pad_trigger waittill( "trigger", player );
level.link_pad_trigger playsound( "kino_activate_finish" );
level.link_pad_trigger SetHintString( "" );

if( isDefined(level.tele_cost) )
while(1)
{
level.teleport_trigger SetHintString( "Hold ^3&&1^7 to Use Teleporter [Cost: "+level.tele_cost+"]" );
level.teleport_trigger waittill( "trigger", player );
if( isDefined(level.tele_cost) && player.score >= level.tele_cost )
{
player zm_score::minus_to_player_score( level.tele_cost );
level.teleport_trigger playsound( "cha_ching" );
break;
}
else if( isDefined( level.tele_cost ) && player.score < level.tele_cost )
{
level.teleport_trigger playsound( "nsz_deny" );
nsz_iprintlnbold( "Cost Can Be Turned ON or OFF" );
wait(1);
continue;
}
}
else
{
level.teleport_trigger SetHintString( "Hold ^3&&1^7 to Use Teleporter" );
level.teleport_trigger waittill( "trigger", player );
}

level.teleport_trigger SetHintString( "" );
nsz_iprintlnbold( "Kill Radius of Teleporter is Customizable" );
radius = spawn( "trigger_radius", level.teleport_trigger.origin, 1, level.tele_kill_radius, level.tele_kill_radius );
radius thread zom_watcher();
players = getplayers();
for( i=0;i<players.size;i++ )
{
if( players[i] isTouching(radius) )
{
players[i] thread tele_to_room( level.time_in_pap, i );
teleporter_sounds();
}
}
radius delete();
level.teleport_trigger SetHintString( "Teleporter is Cooling Down" );
nsz_iprintlnbold( "Cooldown Time is Customizable" );
wait( level.cooldown_time );
}
}

function tele_to_room( time, num )
{
self move_to_room( level.tele_room_spots, num );
nsz_iprintlnbold( "The Amount of Time Spent in PaP is Customizable" );
wait( time );
self move_to_room( level.mainframe_spots, num );
}

function teleporter_sounds()
{
level.teleport_trigger PlaySound( "kino_top_spark" );
wait(0.5);
level.teleport_trigger PlaySound( "kino_arc_loop" );
level.teleport_trigger PlaySound( "kino_top_spark" );
wait(0.5);
level.teleport_trigger PlaySound( "kino_top_spark" );
wait(2);
level.teleport_trigger PlaySound( "kino_beam_fx" );
}

function zom_watcher()
{
time_to_wait = GetTime() + 3000;
while( GetTime() < time_to_wait )
{
zoms = GetAISpeciesArray( "axis" );
for( i=0;i<zoms.size;i++ )
{
if( zoms[i] isTouching( self ) )
zoms[i] doDamage( zoms[i].health + 666, zoms[i].origin );
}
wait( 0.05 );
}
}

function disable_weap_states()
{
self setstance( "stand" );
wait(0.1);
self DisableWeapons();
self DisableOffhandWeapons();
self freezecontrols( true );
}

function enable_weap_states()
{
self EnableWeapons();
self EnableOffhandWeapons();
self freezecontrols( false );
}

function move_to_room( spawns, player_num )
{
self SetElectrified( 3.5 );
self playlocalsound( "kino_cooldown" );
wait( 3 );
PlaySoundAtPosition( "kino_beam_fx", self.origin );
self stopsound( "kino_cooldown" );
self playlocalsound( "kino_teleport_2d" );
self disable_weap_states();
self SetOrigin( level.black_spots[player_num].origin );
self SetPlayerAngles( level.black_spots[player_num].angles );
playfx( KINO_SWIRL, level.black_spots_targets[player_num].origin );
wait(2);
self enable_weap_states();   
self SetOrigin( spawns[player_num].origin );
wait(0.05);
self playsound( "kino_beam_fx" );
}

function nsz_iprintlnbold( string )
{
if( isDefined(level.nsz_debug) && level.nsz_debug )
iprintlnbold( "^6NSZ Debug:^7 "+string );
}
I need to make this script work for everyone in the match, because, when everone click F to telport, only one person go.
Thanks.  ;)
Title: Re: How to make the NSZ Kino Teleport work for all the players in the match?
Post by: hajhaka on December 07, 2016, 03:52:07 pm
add 4 pap room spawns
Title: Re: How to make the NSZ Kino Teleport work for all the players in the match?
Post by: Doodles_Inc on December 08, 2016, 06:11:05 pm
add 4 pap room spawns
I will check if it's working with my friends saturday.