- 0
-
Posts
-
this is an example of how to not use teleportion. just delete this topic
-
Hello I just made this simple code implementation for teleportation at l2jMobius and I'd like to share it with you. Java code -> \java\org\l2jmobius\gameserver\model\actor\instance\CustomTeleporter.java /* * This file is part of the L2J Mobius project. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.l2jmobius.gameserver.model.actor.instance; import org.l2jmobius.gameserver.data.xml.TeleporterData; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.enums.TeleportType; import org.l2jmobius.gameserver.instancemanager.CastleManager; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; import org.l2jmobius.gameserver.model.holders.TeleporterQuestRecommendationHolder; import org.l2jmobius.gameserver.model.quest.QuestState; import org.l2jmobius.gameserver.model.teleporter.TeleportHolder; import org.l2jmobius.gameserver.network.PacketLogger; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; import org.l2jmobius.gameserver.util.Util; import java.util.*; import java.util.logging.Logger; public class CustomTeleporter extends Npc { private static final Logger LOGGER = Logger.getLogger(CustomTeleporter.class.getName()); private static final Map<Integer, List<TeleporterQuestRecommendationHolder>> QUEST_RECOMENDATIONS = new HashMap<>(); public CustomTeleporter(NpcTemplate template) { super(template); setInstanceType(InstanceType.Teleporter); } @Override public boolean isAutoAttackable(Creature attacker) { return attacker.isMonster() || super.isAutoAttackable(attacker); } @Override public void onBypassFeedback(Player player, String command) { String[] xyzs = command.split(" "); int[] xyz; try { xyz = new int[]{Integer.parseInt(xyzs[1]), Integer.parseInt(xyzs[2]), Integer.parseInt(xyzs[3])}; } catch (Exception e) { LOGGER.warning("Error while parsing coordinates: " + command); return; } if (player.isInCombat() || player.isJailed()) { player.sendMessage("You cannot use a teleporter while in combat!"); return; } if (command.startsWith("goto")) { player.teleToLocation(xyz[0], xyz[1], xyz[2]); } else if (command.startsWith("ptzone")) { if (player.isInParty()) { player.teleToLocation(xyz[0], xyz[1], xyz[2]); } } else { super.onBypassFeedback(player, command); } } @Override public String getHtmlPath(int npcId, int value, Player player) { String pom; if (value == 0) { pom = String.valueOf(npcId); if ((player != null) && QUEST_RECOMENDATIONS.containsKey(npcId)) { CHECK: for (TeleporterQuestRecommendationHolder rec : QUEST_RECOMENDATIONS.get(npcId)) { final QuestState qs = player.getQuestState(rec.getQuestName()); if ((qs != null) && qs.isStarted()) { for (int cond : rec.getConditions()) { if ((cond == -1) || qs.isCond(cond)) { pom = rec.getHtml(); break CHECK; } } } } } } else { pom = (npcId + "-" + value); } return "data/html/teleporter/" + pom + ".htm"; } @Override public void showChatWindow(Player player) { // Teleporter isn't on castle ground if (CastleManager.getInstance().getCastle(this) == null) { super.showChatWindow(player); return; } // Teleporter is on castle ground String filename = "data/html/teleporter/castleteleporter-no.htm"; if ((player.getClan() != null) && (getCastle().getOwnerId() == player.getClanId())) // Clan owns castle { filename = getHtmlPath(getId(), 0, player); // Owner message window } else if (getCastle().getSiege().isInProgress()) // Teleporter is busy due siege { filename = "data/html/teleporter/castleteleporter-busy.htm"; // Busy because of siege } sendHtmlMessage(player, filename); } private void sendHtmlMessage(Player player, String filename) { final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId()); html.setFile(player, filename); html.replace("%objectId%", String.valueOf(getObjectId())); html.replace("%npcname%", getName()); player.sendPacket(html); } } xml ->\game\data\stats\npcs\custom\custom.xml <?xml version="1.0" encoding="UTF-8"?> <list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../xsd/npcs.xsd"> <npc id="60008" displayId="9000" type="CustomTeleporter" name="Rosalia" usingServerSideName="true" title="Scheme Buffer" usingServerSideTitle="true"> <race>HUMAN</race> <sex>FEMALE</sex> <stats> <vitals hp="2444.46819" hpRegen="7.5" mp="1345.8" mpRegen="2.7" /> <attack physical="688.86373" magical="470.40463" random="30" critical="4" accuracy="95" attackSpeed="253" type="SWORD" range="40" distance="80" width="120" /> <defence physical="295.91597" magical="216.53847" /> <speed> <walk ground="50" /> <run ground="120" /> </speed> </stats> <status attackable="false" /> <collision> <radius normal="11" /> <height normal="22.25" /> </collision> </npc> </list> html -> \game\data\html\teleporter\60008.htm <html><body>Gatekeeper Clarissa:<br> At the mercy of Gods we, the Gatekeepers, open the doors into outer spaces and teleport everyone to the desired place. Would you like to go somewhere?<br> <Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h npc_%objectId%_goto 81386 14966 -3472">Teleport</Button> </body></html> *Disclaimer I just edited onBypassFeedback method the rest code is implemented by NightMarez (mby)
-
-
Topics
Question
DnR
Paw na trexw to build kai m bgazei ena error.
Version:
[exec] Execute failed: java.io.IOException: Cannot run program "svnversion": CreateProcess error=2, ?e? e??a? d??at? ? e??es? t?? ?a????s????? a??e??? ap? t? s?st?
Link to comment
Share on other sites
3 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.