Rizlaaa Posted May 27, 2012 Posted May 27, 2012 Well , it's quite easy and totally simple to be coded. It's usefull only for faction servers i think or if you edit it you can make it to be usefull for pvp servers too for farming zones. Anyway one friend will open faction server and he requested me a gatekeeper that will teleport players to random spots. So here it is. ### Eclipse Workspace Patch 1.0 #P aVa Tester Index: java/net/sf/l2j/gameserver/clientpackets/RequestBypassToServer.java =================================================================== --- java/net/sf/l2j/gameserver/clientpackets/RequestBypassToServer.java (revision 9) +++ java/net/sf/l2j/gameserver/clientpackets/RequestBypassToServer.java (working copy) @@ -29,10 +29,12 @@ import net.sf.l2j.gameserver.model.L2CharPosition; import net.sf.l2j.gameserver.model.L2Object; import net.sf.l2j.gameserver.model.L2World; +import net.sf.l2j.gameserver.model.actor.instance.L2CustomTeleporterInstance; import net.sf.l2j.gameserver.model.actor.instance.L2NpcInstance; import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; import net.sf.l2j.gameserver.model.entity.L2Event; import net.sf.l2j.gameserver.serverpackets.ActionFailed; +import net.sf.l2j.gameserver.serverpackets.CreatureSay; import net.sf.l2j.gameserver.serverpackets.NpcHtmlMessage; /** @@ -86,6 +88,17 @@ { playerHelp(activeChar, _command.substring(12)); } + else if (_command.startsWith("randomTeleport")) + { + int[] randomLocations = L2CustomTeleporterInstance.getRandomArray(); + + int coordinateX = randomLocations[0]; + int coordinateY = randomLocations[1]; + int coordinateZ = randomLocations[2]; + + activeChar.sendPacket(new CreatureSay(0,Say2.PARTY,"Clarissa","You teleported in a random spawn.")); + activeChar.teleToLocation(coordinateX, coordinateY, coordinateZ); + } else if (_command.startsWith("npc_")) { if(!activeChar.validateBypass(_command)) Index: java/net/sf/l2j/gameserver/model/actor/instance/L2CustomTeleporterInstance.java =================================================================== --- java/net/sf/l2j/gameserver/model/actor/instance/L2CustomTeleporterInstance.java (revision 0) +++ java/net/sf/l2j/gameserver/model/actor/instance/L2CustomTeleporterInstance.java (revision 0) @@ -0,0 +1,61 @@ + +package net.sf.l2j.gameserver.model.actor.instance; + +import javolution.text.TextBuilder; + +import net.sf.l2j.gameserver.serverpackets.NpcHtmlMessage; +import net.sf.l2j.gameserver.templates.L2NpcTemplate; +import net.sf.l2j.util.Rnd; + +/** + * This class created for l2j aVatar and it handles + * a custom gatekeeper that allows players to teleport + * in random locations every time. + * + *@author Iratus + */ +public class L2CustomTeleporterInstance extends L2NpcInstance +{ + + private static final int[][] CUSTOM_LOCATIONS = + { + {60580,-93972,-1351}, + {109060,-128655,-3084}, + {-69904,116410,-3519}, + {-85170,105725,-3585}, + {81198,75743,03377} + }; + + public static int[] getRandomArray() + { + return CUSTOM_LOCATIONS[Rnd.get(CUSTOM_LOCATIONS.length)]; + } + + public L2CustomTeleporterInstance(int objectId, L2NpcTemplate template) + { + super(objectId, template); + } + + @Override + public void showChatWindow(L2PcInstance player , int val) + { + if(player == null) return; + + TextBuilder tb = new TextBuilder(); + NpcHtmlMessage html = new NpcHtmlMessage(this.getObjectId()); + + tb.append("<html><head>"); + tb.append("<title> Random Gatekeeper </title>"); + tb.append("</head><body>"); + tb.append("<center>"); + tb.append("Welcome visitor <font color=\"F7FE2E\">"+player.getName()+"</font><br>"); + tb.append("<font color=\"088A85\">Press the magic button to teleport into a random spawn</font><br>"); + tb.append("<button value=\"Teleport Me\" action=\"bypass -h randomTeleport\" width=68 height=15 back=\"sek.cbui94\" fore=\"sek.cbui92\">"); + tb.append("</center>"); + tb.append("</body></html>"); + + html.setHtml(tb.toString()); + player.sendPacket(html); + } + +}
An4rchy Posted May 28, 2012 Posted May 28, 2012 Nice, but try to use non-hardcoded htmls. Also using xml for the random locs would be great too.
L2Serenity Posted May 30, 2012 Posted May 30, 2012 when i am filling and writing L2CustomTeleporterInstance it says : CANNOT BE RESOLVED. there is no custom teleporter instance in Model.actor.instance. what must i do? thanks . the same does to creature say
Fanky Posted May 30, 2012 Posted May 30, 2012 when i am filling and writing L2CustomTeleporterInstance it says : CANNOT BE RESOLVED. there is no custom teleporter instance in Model.actor.instance. what must i do? thanks . the same does to creature say you should create that class,as you can see in the code.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now