Jump to content
  • 0

Save the place before teleportation aCis


Question

Posted

Hello, I wanted to know how I can save a coordinate, because on my tvt when the event ends I'm teleported to giran I would like to know how I can get where I was

 

This instead of putting me where I was, leaves me in the same place after the event ends.

 


int[] playerCoordinates = new int[]
                        {
                        player.getPosition().getX(),
                        player.getPosition().getY(),
                        player.getPosition().getZ(),
                        player.getPosition().getHeading()
                        };
                    
                    new EventTeleporter(player, playerCoordinates, false);
 

                   

Recommended Posts

  • 0
Posted (edited)

if you dont(cant?) want to save them in an int variable you can just store them in database before they enter or you can set a X Y Z +RND(10, 200) in the (propably) for loop you have to restore them in town

Edited by Nightw0lf
  • 0
Posted

You don't have to create any new map or store to db (bleeh). There is something like getSavedLocation on acis. You can find the usage over Olympiad system.

 

store

player.getSavedLocation().set(player.getPosition());

 

retrieve

final Location loc = player.getSavedLocation();
if (loc.equals(Location.DUMMY_LOC))
    return;

player.teleToLocation(loc, 0);
player.getSavedLocation().clean();
  • 0
Posted
1 hour ago, SweeTs said:

You don't have to create any new map or store to db (bleeh). There is something like getSavedLocation on acis. You can find the usage over Olympiad system.

 

store


player.getSavedLocation().set(player.getPosition());

 

retrieve


final Location loc = player.getSavedLocation();
if (loc.equals(Location.DUMMY_LOC))
    return;

player.teleToLocation(loc, 0);
player.getSavedLocation().clean();

 

created this way

 



    public static int[] getOriginalCoordinates()
    {
        return _originalCoordinates;
    }
    
    public static void setOriginalCoordinates(int[] originalCoordinates)
    {
        _originalCoordinates = originalCoordinates;
    }
    
    public static void teleportPlayersToArena()
    {
        for (EventTeam team : _teams)
        {
            for (Player player : team.getParticipatedPlayers().values())
            {
                if ((player != null))
                {
                    int[] playerCoordinates = new int[]
                        {
                        player.getSavedLocation().set(player.getPosition());
                        player.getPosition().getX(),
                        player.getPosition().getY(),
                        player.getPosition().getZ(),
                        };
                    setOriginalCoordinates(playerCoordinates);
                    new EventTeleporter(player, team.getCoordinates(), false);
                }
            }
        }
    }
    
    public static void teleportPlayersBack()
    {
        for (EventTeam team : _teams)
        {
            for (Player player : team.getParticipatedPlayers().values())
            {
                if (player == null)
                    return;
                
                Location loc = player.getSavedLocation();
                if (loc.equals(Location.DUMMY_LOC))
                    return;
                
                player.teleToLocation(loc, 0);
                player.getSavedLocation().clean();
                
                new EventTeleporter(player, getOriginalCoordinates(), false);
            }
        }
    }
    

 

generated this error

 

u0tiiLK.png

 

  • 0
Posted (edited)

so players can attack themselves but when the event ends the players go to the spawn of the first one that registered

 

    public static int[] getOriginalCoordinates()
    {
        return _originalCoordinates;
    }
    
    public static void setOriginalCoordinates(int[] originalCoordinates)
    {
        _originalCoordinates = originalCoordinates;
    }
    
    public static void teleportPlayersToArena()
    {
        for (EventTeam team : _teams)
        {
            for (Player player : team.getParticipatedPlayers().values())
            {
                if ((player != null))
                {
                    int[] playerCoordinates = new int[]
                        {
                        player.getPosition().getX(),
                        player.getPosition().getY(),
                        player.getPosition().getZ(),
                        };
                    setOriginalCoordinates(playerCoordinates);
                    new EventTeleporter(player, team.getCoordinates(), false);
                }
            }
        }
    }
    
    public static void teleportPlayersBack()
    {
        for (EventTeam team : _teams)
        {
            for (Player player : team.getParticipatedPlayers().values())
            {
                if ((player != null))
                    new EventTeleporter(player, getOriginalCoordinates(), false);
            }
        }
    }
    

 

so they can not, but when the event ends, they go to where they were.

 

    public static void teleportPlayersToArena()
    {
        for (EventTeam team : _teams)
        {
            for (Player player : team.getParticipatedPlayers().values())
            {
                if ((player != null))
                {
                    player.getSavedLocation().set(player.getPosition());
                    new EventTeleporter(player, team.getCoordinates(), false);
                }
            }
        }
    }
    
    public static void teleportPlayersBack()
    {
        for (EventTeam team : _teams)
        {
            for (Player player : team.getParticipatedPlayers().values())
            {
                final Location loc = player.getSavedLocation();
                if (loc.equals(Location.DUMMY_LOC))
                    return;

                player.teleToLocation(loc, 0);
                player.getSavedLocation().clean();
            }
        }
    }

Edited by l2jkain
  • 0
Posted

Dunno what you do, normally it should work. If it's not teleporting back to town after event finish, then the saved location is null, looks like and so, the return is executed. Put teleport to town instead, if loc is dummy.

 

Btw, stop multiposting. 

  • 0
Posted (edited)
1 hour ago, SweeTs said:

Dunno what you do, normally it should work. If it's not teleporting back to town after event finish, then the saved location is null, looks like and so, the return is executed. Put teleport to town instead, if loc is dummy.

 

Btw, stop multiposting. 

 

At the end of the event, the players stay where they were before the event. The only error is that they can not reach the target of the opponents and show that message.

 

 

Edited by l2jkain
  • 0
Posted

This one has nothing to do with the piece of code I provided. Your event code is simply bad.

Find the message over sources, see why you get it and remove lol code.

  • 0
Posted (edited)
7 minutes ago, l2jkain said:

Not Found man

Follow exactly what SweeTs said. But replace:

-  player.getSavedLocation().set(player.getPosition());

+ player.getSavedLocation().set(player.getX(), player.getY(), player.getZ());

Edited by 'Baggos'
  • 0
Posted (edited)
On 18/04/2018 at 6:51 PM, 'Baggos' said:

Follow exactly what SweeTs said. But replace:

-  player.getSavedLocation().set(player.getPosition());

+ player.getSavedLocation().set(player.getX(), player.getY(), player.getZ());

 

no matter what place it does not work

 

I removed all restriction of the same only let the tvt and the npc register does not always work that message should be aCis bug

Edited by l2jkain
  • 0
Posted (edited)
On 18/4/2018 at 12:32 PM, SweeTs said:

You don't have to create any new map or store to db (bleeh). There is something like getSavedLocation on acis. You can find the usage over Olympiad system.

 

store


player.getSavedLocation().set(player.getPosition());

 

retrieve


final Location loc = player.getSavedLocation();
if (loc.equals(Location.DUMMY_LOC))
    return;

player.teleToLocation(loc, 0);
player.getSavedLocation().clean();

newbie approach, if they get dc this info is lost xD

plus if they are in db WHILE the event is running with a check in enterworld you can restore the dc.. player inside the arena (drops mic)

 

EDIT: man i just saw your code in the video and i stopped it in the first 10 seconds staring the code at the part with the for loops with the thread inside NEVER ... EVER do that!

Edited by Nightw0lf

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...