heopas Posted December 30, 2010 Posted December 30, 2010 I want to teleport a player somewhere from GK and when "x" time pass he will go back to giran. Any idea?
0 scrubs Posted December 30, 2010 Posted December 30, 2010 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?!
0 josecarlosfl18 Posted January 4, 2011 Posted January 4, 2011 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...
0 JoeDaFlow Posted July 30, 2011 Posted July 30, 2011 As soon as the player gets teleported there gets a timer triggered which teleports the player back to Giran, so simple =)
0 Matim Posted July 30, 2011 Posted July 30, 2011 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.
0 Matim Posted July 30, 2011 Posted July 30, 2011 Loled noobzords, stop bumping threads and waste members time. LOCKED.
Question
heopas
I want to teleport a player somewhere from GK and when "x" time pass he will go back to giran. Any idea?
8 answers to this question
Recommended Posts