Jump to content

[ΑΙΟ-Updated]Aion Collection.


Recommended Posts

  • 1 month later...
  • 1 month later...
Guest
This topic is now closed to further replies.
 Share



  • 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

×
×
  • Create New...

AdBlock Extension Detected!

Our website is made possible by displaying online advertisements to our members.

Please disable AdBlock browser extension first, to be able to use our community.

I've Disabled AdBlock