Skip to content

Save the place before teleportation aCis

Featured Replies

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

                   

before the teleport begins (to the arena) , store their location in a map .

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

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();
  • Author
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

 

Remove your addition. DON'T MIX EM together. All you need is what I posted.

  • Author

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

  • Author

when I remove this it is normal but when the event finishes the players stay in the same place

 

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

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. 

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

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.

  • Author
24 minutes ago, 'Baggos' said:

AbstractOlympiadGame.java

Lá você receberá sua resposta.

Not Found man

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'

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

Create an account or sign in to comment

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.