Jump to content
  • 0

Save the place before teleportation aCis


l2jkain

Question

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);
 

                   

Link to comment
Share on other sites

Recommended Posts

  • 0

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
Link to comment
Share on other sites

  • 0

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();
Link to comment
Share on other sites

  • 0
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

 

Link to comment
Share on other sites

  • 0

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
Link to comment
Share on other sites

  • 0

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. 

Link to comment
Share on other sites

  • 0
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
Link to comment
Share on other sites

  • 0

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.

Link to comment
Share on other sites

  • 0
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'
Link to comment
Share on other sites

  • 0
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
Link to comment
Share on other sites

  • 0
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
Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now


×
×
  • Create New...