Skip to content

[Share]Random spots gatekeeper

Featured Replies

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

Nice, but try to use non-hardcoded htmls. Also using xml for the random locs would be great too.

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

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.

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.