UGX-Mods Login

or login with an authentication provider below
Sign In with Google
Sign In with Twitter
Sign In with Discord
Sign In with Steam
Sign In with Facebook
Sign In with Twitch

Help with kino-style Teleporter

broken avatar :(
Created 13 years ago
by Lukkie1998
0 Members and 1 Guest are viewing this topic.
3,033 views
broken avatar :(
×
broken avatar :(
[UGX] Developer
Location: nlLimburg, Netherlands
Date Registered: 28 October 2013
Last active: 2 years ago
Posts
764
Respect
Forum Rank
The Decider
Primary Group
UGX Team Member
My Groups
More
My Contact & Social Links
More
Personal Quote
[UGX] Developer
×
Lukkie1998's Groups
UGX Team Member
Donator ♥ Benevolent Soul who has our eternal gratitude and exclusive access to betas and the donator section of the forum.
Box Mappers Elite
Box Mappers Elite
Mapper Has released one or more maps to the UGX-Mods community.
UGX Chat Moderator Has the ability to mute, kick, or ban chat members for being abusive or breaking the rules of the forum.
UGX Site Moderator Has the ability to issue warnings to users, edit and remove posts from the forum and to move topics to other boards. Upholds the rules of the forum. Moderates Chat Rooms.
2015 Participant
BO3 Modtools Alpha
BO3 Modtools Alpha
This user has access to the Black Ops 3 Modtools Alpha
Can someone help with my kino-style teleporter? Everytime I try to teleport, it doesn't take me to the black boxes. This is my script:
Code Snippet
Plaintext
#include common_scripts\utility; 
#include maps\_utility;
#include maps\_zombiemode_utility;

init()
{
    thread level_players();
    addItems();
    thread handleTriggers(level.kts["teleporter_trigger"], level.kts["mainframe_trigger"]);
    flag_wait("electricity_on");
    thread teleport_room_fx();
    thread main();
}
addItems()
{
    // Create Kino Teleporting System array
    level.kts = [];
    // Set variables needed for the teleporting system (using the setVar function)
   
    // DO NOT EDIT THESE
    setVar("teleporter_trigger", getEnt("kino_teleporter_trigger","targetname")); //done
    setVar("mainframe_trigger", getEnt("kino_mainframe_trigger","targetname")); //done
    setVar("teleporter_fxspot", getEnt("kino_teleporter_fxspot","targetname"));
    setVar("mainframe_fxspot", getEnt("kino_mainframe_fxspot","targetname"));
    setVar("zombie_goto", getEnt("kino_teleporter_zombiegoto","targetname"));
    setVar("mainframe_spawn", getEntArray("kino_mainframe_spawn","targetname")); //done
    setVar("pap_room_spawn", getEntArray("kino_paproom_spawn","targetname")); //done
    setVar("transfer_room_structs", getEntArray("kino_image_room","targetname")); //done
    setVar("teleporter_status", 0);
    level.paping = false;
    level.disable_pap = true;
    level.kts["zombie_goto"] create_zombie_point_of_interest( 1536, 96, 10000, true );
    level.kts["zombie_goto"].attract_to_origin = false;
   
    // You CAN edit these
    setVar("teleporter_cooldown_time", 10); // After a teleport, this is how long a wait until you can use it again 60
    setVar("teleport_lag", 2); // When you go to teleport, this is how long it will wait until it actually teleports 2
    setVar("pap_room_time", 20); // This is how long you are in the pack-a-punch room
    setVar("wait_for_pap", true); // If false, you can be teleported out of the room even if there is a gun in the slot of the pap machine
    setVar("teleport_cost", 500); // This is the amount of money it costs to teleport
   
    // You MUST change these to be correct
    setVar("room_is_pap", true); // If the room you go to when teleporting does NOT have the pack-a-punch in it, set this to false
   
    if(!level.kts["room_is_pap"])
        level.disable_pap = false;
}
level_players()
{
    while(1)
    {
        level.players = get_players();
        wait 0.5;
    }
}
teleport_room_fx()
{
    //points = level.kts["transfer_room_structs"];
    points = getEntArray("kino_image_room","targetname");
    for(i=0;i<points.size;i++)
    {
        points[i].struct = Spawn( "script_model", points[i].origin );
        points[i].struct SetModel( "tag_origin_animate" );
        points[i].struct.angles = points[i].angles;
        PlayFxOnTag( level._effect["zombie_flashback_american"], points[i].struct, "tag_origin" );
    }
}
main()
{
    while(1)
    {
        setVar("teleporter_status", 1);
        level.kts["teleporter_trigger"] waittill("trigger");
        setVar("teleporter_status", 2);
        level.kts["mainframe_trigger"] waittill("trigger");
        setVar("teleporter_status", 3);
        while(1)
        {
            level.kts["teleporter_trigger"] waittill("trigger", who);
            if(level.kts["teleport_cost"] == 0)
                break;
           
            if(who.score < level.kts["teleport_cost"])
            {
                who playsound("deny");
                continue;
            }
            who playsound("purchase");
            who maps\_zombiemode_score::minus_to_player_score( level.kts["teleport_cost"] );
            break;
        }
        setVar("teleporter_status", 4);
        level.kts["teleporter_trigger"] do_teleport();
        setVar("teleporter_status", 5);
        wait level.kts["teleporter_cooldown_time"];
    }
}
do_teleport()
{
    // start fps fx
    self thread teleport_pad_player_fx();

    // Activate the TP zombie kill effect
    self thread teleport_nuke( 20, 300, false); // Max 20 zombies and range 300
   
    // 3rd Person Beam
    level.kts["teleporter_fxspot"] thread pad_explosion();
   
    // Teleport the players
    self teleport_players();
}
teleport_players()
{
    //thread do_mainframe_explode();
    wait level.kts["teleport_lag"];
    self notify( "fx_done" );
    players_in = [];
    attract = false;
    for ( i = 0; i <level.players.size; i++ )
    {
        if( self player_is_near_pad( level.players[i] ) )
        {
            players_in[players_in.size] = level.players[i];
            level.players[i] SetTransported( 2 );
            level.players[i] SetStance( "stand" );
            level.players[i] disableOffhandWeapons();
            level.players[i] disableweapons();
            image_room = getent( "teleport_room_" + i, "script_noteworthy" );
            level.players[i].teleport_origin = spawn( "script_origin", level.players[i].origin );
            level.players[i].teleport_origin.angles = level.players[i].angles;
            level.players[i] linkto( level.players[i].teleport_origin );
            level.players[i].teleport_origin.origin = image_room.origin + (0,-70,-60); // 0, -70, -60
            level.players[i].teleport_origin.angles = image_room.angles + (0,180,0);
            setClientSysState("levelNotify", "t2d", level.players[i]);
            level.players[i] FreezeControls( true );
            wait_network_frame();
        }
    }
    if(players_in.size == level.players.size)
    {
        attract = true;
        level.kts["zombie_goto"].attract_to_origin = true;
    }
    wait 2;
    for ( i = 0; i <players_in.size; i++ )
    {
        players_in[i].teleport_origin delete();
        players_in[i].teleport_origin = undefined;
        players_in[i] SetTransported( 0 );
        players_in[i] FreezeControls( false );
        players_in[i] enableOffhandWeapons();
        players_in[i] enableweapons();
        players_in[i] setOrigin(level.kts["pap_room_spawn"][i].origin);
    }
    if(level.kts["room_is_pap"])
        level.disable_pap = false;
    wait(level.kts["pap_room_time"] - 2);
    if(level.kts["room_is_pap"] && level.kts["wait_for_pap"])
        while(level.paping)
        {
            wait 0.5;
        }
    for ( i = 0; i <players_in.size; i++ )
        players_in[i] SetTransported( 2 );
    if(level.kts["room_is_pap"])
        level.disable_pap = true;
    level.kts["mainframe_fxspot"] thread do_mainframe_explode();
    wait 2;
    for ( i = 0; i <players_in.size; i++ )
    {
        players_in[i] SetTransported( 2 );
        players_in[i] SetStance( "stand" );
        players_in[i] disableOffhandWeapons();
        players_in[i] disableweapons();
        image_room = getEnt( "teleport_room_" + i, "script_noteworthy" );
        players_in[i].teleport_origin = spawn( "script_origin", players_in[i].origin );
        players_in[i].teleport_origin.angles = players_in[i].angles;
        players_in[i] linkto( players_in[i].teleport_origin );
        players_in[i].teleport_origin.origin = image_room.origin + (0,-70,-60);
        players_in[i].teleport_origin.angles = image_room.angles + (0,180,0);
        players_in[i] FreezeControls( true );
        setClientSysState("levelNotify", "t2d", players_in[i]);
        wait_network_frame();
    }
    wait 2;
    for ( i = 0; i <players_in.size; i++ )
    {
        players_in[i].teleport_origin delete();
        players_in[i].teleport_origin = undefined;
        players_in[i] SetTransported( 0 );
        players_in[i] FreezeControls( false );
        players_in[i] enableOffhandWeapons();
        players_in[i] enableweapons();
        players_in[i] setOrigin(level.kts["mainframe_spawn"][i].origin);
    }
    if(attract)
    {
        level.kts["zombie_goto"].attract_to_origin = false;
    }
}
handleTriggers(self1, self2)
{
    self1 SetCursorHint( "HINT_NOICON" );
    self2 SetCursorHint( "HINT_NOICON" );
    while(1)
    {
        hint1 = "";
        hint2 = "";
        switch(level.kts["teleporter_status"])
        {
            case 0: // Need power
                hint1 = "You need to activate the power before using the teleporter";
                hint2 = "You need to activate the power before using the teleporter";
                break;
            case 1: // Startup
                hint1 = "Press &&1 to initiate link to mainframe";
                hint2 = "Waiting for initial link to mainframe";
                break;
            case 2: // Waiting for link
                hint1 = "Waiting for confirmation";
                hint2 = "Press &&1 to link pad to mainframe";
                break;
            case 3: // Linked
                if(level.kts["teleport_cost"] == 0)
                    hint1 = "Press &&1 to teleport";
                else
                    hint1 = "Press &&1 to teleport [Cost: " + level.kts["teleport_cost"] + "]";
                hint2 = "Search for the other station";
                break;
            case 4: // Teleporting
                hint1 = "Teleporting in progress";
                hint2 = "Teleporting in progress";
                break;
            case 5: // Cooling down
                hint1 = "The teleporter is cooling down";
                hint2 = "The teleporter is cooling down";
                break;
            default: // Failsafe
                hint1 = " ";
                hint2 = " ";
                break;
        }
        self1 setHintString(hint1);
        self2 setHintString(hint2);
        wait 0.5;
    }
}
setVar(var, value)
{
    // Sets the value on the array
    level.kts[var] = value;
}
teleport_pad_player_fx()
{
    self endon( "fx_done" );

    while ( 1 )
    {
        players = getplayers();
        for ( i = 0; i < players.size; i++ )
        {
            if ( isdefined( players[i] ) )
            {
                if ( self player_is_near_pad( players[i] ) )
                {
                    players[i] SetTransported( 2 );
                }
                else
                {
                    players[i] SetTransported( 0 );
                }
            }
        }
        wait ( .05 );
    }
}
player_is_near_pad( player )
{
    radius = 44;
    scale_factor = 2;

    dist = Distance2D( player.origin, self.origin );
    dist_touching = radius * scale_factor;

    if ( dist < dist_touching )
    {
        return true;
    }

    return false;
}
teleport_nuke( max_zombies, range, end_after_one )
{
    self endon( "fx_done" );
    if(!isDefined(end_after_one))
        end_after_one = false;
    while(1)
    {
        zombies = getaispeciesarray("axis");

        zombies = get_array_of_closest( self.origin, zombies, undefined, max_zombies, range );

        for (i = 0; i < zombies.size; i++)
        {
            wait (randomfloatrange(0.2, 0.3));
            if( !IsDefined( zombies[i] ) )
            {
                continue;
            }

            if( is_magic_bullet_shield_enabled( zombies[i] ) )
            {
                continue;
            }

            if( !( zombies[i] enemy_is_dog() ) )
            {
                zombies[i] maps\_zombiemode_spawner::zombie_head_gib();
            }

            zombies[i] dodamage( 10000, zombies[i].origin );
            playsoundatposition( "nuked", zombies[i].origin );
        }
        if(end_after_one)
            return;
        wait 0.01;
    }
}
pad_explosion()
{
    self thread pad_explosion_sound();
    playfx(level._effect["transporter_pad_start"], self.origin);
    wait level.kts["teleport_lag"];
    playfx(level._effect["transporter_beam"], self.origin);
}
pad_explosion_sound()
{
    count = 0;
    while(1)
    {
        count ++;
        if(count == 5)
            return;
        sound = "top_spark" + count + "_warmup";
        playsoundatposition(sound, self.origin);
        wait 0.1;
        if(count == 4)
            return;
    }
}
do_mainframe_explode()
{
    playfx(level._effect["zombie_mainframe_beam_start"], self.origin);
    wait 4;
    earthquake(0.3, 2, self.origin, 1024);
    playfx(level._effect["zombie_mainframe_beam"], self.origin);
    self thread teleport_nuke( 20, 300, true);
}
Last Edit: November 29, 2013, 06:36:49 am by lukkie1998
broken avatar :(
  • DeletedUser
  • Deleted Member
×
broken avatar :(
DeletedUser
This user is deleted :(
Youre trying to teleport the trigger not the player.
broken avatar :(
×
broken avatar :(
[UGX] Developer
Location: nlLimburg, Netherlands
Date Registered: 28 October 2013
Last active: 2 years ago
Posts
764
Respect
Forum Rank
The Decider
Primary Group
UGX Team Member
My Groups
More
My Contact & Social Links
More
Personal Quote
[UGX] Developer
×
Lukkie1998's Groups
UGX Team Member
Donator ♥ Benevolent Soul who has our eternal gratitude and exclusive access to betas and the donator section of the forum.
Box Mappers Elite
Box Mappers Elite
Mapper Has released one or more maps to the UGX-Mods community.
UGX Chat Moderator Has the ability to mute, kick, or ban chat members for being abusive or breaking the rules of the forum.
UGX Site Moderator Has the ability to issue warnings to users, edit and remove posts from the forum and to move topics to other boards. Upholds the rules of the forum. Moderates Chat Rooms.
2015 Participant
BO3 Modtools Alpha
BO3 Modtools Alpha
This user has access to the Black Ops 3 Modtools Alpha
It teleports me to the other teleporter. The only problem is while I am teleporting, I can't move and I don't see the black boxes. The triggers stay on the same place.

 
Loading ...