Jump to content
  • 0

[Request] Teleport for a time


heopas
 Share

Question

8 answers to this question

Recommended Posts

  • 0

Hmm.. this is just a wild imagination on how to do it..

 

When the player gets ported, it also gets a buff.

When the buff time is over, it will give the effect "Return".

 

But then again, how do you make a buff execute on the last second, and how do you make a GK buff you at the same time you enter the "Teleport" button?!

Link to comment
Share on other sites

  • 0

When a player teleport, get 2 values on a table on DB, one origin city, second status of return (cuz you want to do that with every teleport? or with ones on them not all teleport?)...

 

A treat (in core) activate a timeout of "x time" and when get zero, invoque "recall player" like GM got into their menu into that player in return to origin city...

 

Any concret idea of how to do that pfff... it's just an idea not a codding solution :S...

 

How to make a player recall? well you can create a npc in every town that do that request over that player...

Link to comment
Share on other sites

  • 0

In L2TeleporterInstance, or your own instance:

 

1. add special container for those players, for example:

 

private List<L2PcInstance> _players = new FastList<L2PcInstance>();

 

2. create boolean to check conditions of the party (like members level, if they are close to the GK, if party != null, members count and so on, sample:)

 

/**

* Check if party may enter.

* @param player

* @return

*/

private boolean checkConditions(L2PcInstance player)

{

L2Party party = player.getParty();

 

if (party == null)

{

player.sendPacket(new ExShowScreenMessage("You need party with at least 5 members to enter!", 5000));

return false;

}

if (party.getLeader() != player)

{

player.sendPacket(new ExShowScreenMessage("You are not party leader!", 5000));

return false;

}

if (party.getMemberCount() < 2)

{

player.sendPacket(new ExShowScreenMessage("You need party with at least 5 members to enter!", 5000));

return false;

}

for (L2PcInstance partyMember : party.getPartyMembers())

{

if (partyMember.getLevel() < 82)

{

ExShowScreenMessage msg = new ExShowScreenMessage("Each party member should be level 82 at least!", 5000);

party.broadcastToPartyMembers(msg);

return false;

}

if (!Util.checkIfInRange(500, player, partyMember, true))

{

ExShowScreenMessage msg = new ExShowScreenMessage("Each party member should be close to the leader!", 5000);

party.broadcastToPartyMembers(msg);

return false;

}

}

return true;

}

 

3. create new bypass for this kind of teleport, for example tele_party

 

Inside of this bypass, use already created boolean:

 

if (checkConditions)

  //iterate over party members, to tele them one by one

  // and add them to the _players aswell

 

4. Create new inner class for new task, which will tele players back after certain time.

 

private class ScheduleBackTask implements Runnable

{

public ScheduleEnterTask()

{

// Nothing

}

 

@Override

public void run()

{

                      //Iterate over _players container, to tele them back

                      _players.clear();

}

}

 

5. Again inside bypass under teleporting players, use this, to run task:

 

ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleBackTask(), 300000);

 

And put there time in milisec, after this time they will be teleportedback

 


 

I could make some mistakes, i was to lazy to check it with eclipse, but will be ok.

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share



×
×
  • Create New...