P1ckw1ck 158 Опубликовано 8 мая, 2015 (изменено) Добрый день возник вопрос, Есть аванпост от него делаю тп по указанным координатам в ядре. при нажатие кнопки Телепорт. Хочу сделать что бы при нажатие на кнопку телепорт появлялася диалог и там расписать дроп в этой хтмл. И добавить кнопку Телепорт в этот новый хтмл. Сам код пробовал менять байпасы, нпц выдает квест. после нажатия кнопки Телепорт с <a action="bypass -h npc_%objectId%_tele avanevil1">Телепорт</a> на action="bypass -h npc_%objectId%_Chat 1 package net.sf.l2j.gameserver.model.actor.instance; import java.util.StringTokenizer; import net.sf.l2j.gameserver.ai.CtrlIntention; import net.sf.l2j.gameserver.network.serverpackets.ActionFailed; import net.sf.l2j.gameserver.network.serverpackets.MyTargetSelected; import net.sf.l2j.gameserver.network.serverpackets.NpcHtmlMessage; import net.sf.l2j.gameserver.network.serverpackets.SocialAction; import net.sf.l2j.gameserver.network.serverpackets.ValidateLocation; import net.sf.l2j.gameserver.templates.chars.L2NpcTemplate; import net.sf.l2j.util.Rnd; public class L2AvanPostTpInstance extends L2NpcInstance { public L2AvanPostTpInstance(int objectId, L2NpcTemplate template) { super(objectId, template); } @Override public void onBypassFeedback(L2PcInstance player, String command) { StringTokenizer st = new StringTokenizer(command, " "); String actualCommand = st.nextToken(); String where = ""; if (st.countTokens() == 1) where = st.nextToken(); if (actualCommand.equalsIgnoreCase("tele")) { if (where.equals("avangood1")) { player.teleToLocation(54644,12348,-5604, false); } else if (where.equals("avangood2")) { player.teleToLocation(146768,-174945,-1525, false); } else if (where.equals("avangood3")) { player.teleToLocation(98689,-2051,-3727, false); } else if (where.equals("avangood4")) { player.teleToLocation(98689,-2051,-3727, false); } else if (where.equals("avangood5")) { player.teleToLocation(98689,-2051,-3727, false); } else if (where.equals("avangood6")) { player.teleToLocation(98689,-2051,-3727, false); } else if (where.equals("avangood7")) { player.teleToLocation(98689,-2051,-3727, false); } else if (where.equals("avanevil1")) { player.teleToLocation(54133,27698,-5288, false); } else if (where.equals("avanevil2")) { player.teleToLocation(135858,-174102,-1781, false); } else if (where.equals("avanevil3")) { player.teleToLocation(85439,-5717,-3256, false); } else if (where.equals("avanevil4")) { player.teleToLocation(85439,-5717,-3256, false); } else if (where.equals("avanevil5")) { player.teleToLocation(85439,-5717,-3256, false); } else if (where.equals("avanevil6")) { player.teleToLocation(85439,-5717,-3256, false); } else if (where.equals("avanevil7")) { player.teleToLocation(85439,-5717,-3256, false); } else { player.sendMessage("Локация не найдена, сообщите администратору."); } } else { super.onBypassFeedback(player, command); } } @Override public void onAction(L2PcInstance player) { if (this != player.getTarget()) { player.setTarget(this); player.sendPacket(new MyTargetSelected(getObjectId(), player.getLevel() - getLevel())); player.sendPacket(new ValidateLocation(this)); } else if (isInsideRadius(player, INTERACTION_DISTANCE, false, false)) { SocialAction sa = new SocialAction(this, Rnd.get(); broadcastPacket(sa); player.setCurrentFolkNPC(this); if (player.getFactionId() == 1) { showGoodWindow(player); } else if (player.getFactionId() == 2) { showEvilWindow(player); } player.sendPacket(ActionFailed.STATIC_PACKET); } else { player.getAI().setIntention(CtrlIntention.AI_INTENTION_INTERACT, this); player.sendPacket(ActionFailed.STATIC_PACKET); } } private void showGoodWindow(L2PcInstance player) { String file = "data/html/faction/1.htm"; NpcHtmlMessage html = new NpcHtmlMessage(1); html.setFile(file); html.replace("%objectId%", String.valueOf(getObjectId())); html.replace("%charname%", player.getName()); player.sendPacket(html); } private void showEvilWindow(L2PcInstance player) { String file = "data/html/faction/2.htm"; NpcHtmlMessage html = new NpcHtmlMessage(1); html.setFile(file); html.replace("%objectId%", String.valueOf(getObjectId())); html.replace("%charname%", player.getName()); player.sendPacket(html); } } Изменено 8 мая, 2015 пользователем P1ckw1ck Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Nha 22 Опубликовано 8 мая, 2015 можно попробовать сделать метод по аналогии с имеющимися private void showHtml(L2PcInstance player, String html) { String file = "data/html/faction/" + html + ".htm"; NpcHtmlMessage html = new NpcHtmlMessage(1); html.setFile(file); html.replace("%objectId%", String.valueOf(getObjectId())); html.replace("%charname%", player.getName()); player.sendPacket(html); } И байпасс ловить, соответственно if (actualCommand.equalsIgnoreCase("show")) { showHtml(player, where); } И в html вызывать bypass -h npc_%objectId%_show HTML_NAME HTML_NAME - имя хтмлки в папке faction без расширения Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
P1ckw1ck 158 Опубликовано 8 мая, 2015 Сейчас глянем, что получится=) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
P1ckw1ck 158 Опубликовано 8 мая, 2015 ругается еклипс Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Nha 22 Опубликовано 8 мая, 2015 ах, да, переменная такая уже есть private void showHtml(L2PcInstance player, String htm) { String file = "data/html/faction/" + htm + ".htm"; NpcHtmlMessage html = new NpcHtmlMessage(1); html.setFile(file); html.replace("%objectId%", String.valueOf(getObjectId())); html.replace("%charname%", player.getName()); player.sendPacket(html); } Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
P1ckw1ck 158 Опубликовано 8 мая, 2015 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Nha 22 Опубликовано 8 мая, 2015 в метод onBypassFeedback надо это условие поставить, else { player.sendMessage("Локация не найдена, сообщите администратору."); } } else if (actualCommand.equalsIgnoreCase("show")) { showHtml(player, where); } else { super.onBypassFeedback(player, command); } как то вот так засунь 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
P1ckw1ck 158 Опубликовано 8 мая, 2015 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
P1ckw1ck 158 Опубликовано 8 мая, 2015 private void showHtml(L2PcInstance player, String htm){ String file = "data/html/faction/" + htm + ".htm"; NpcHtmlMessage html = new NpcHtmlMessage(1); html.setFile(file); html.replace("%objectId%", String.valueOf(getObjectId())); html.replace("%charname%", player.getName()); player.sendPacket(html);} Забыл добавить нормально все. спасибо + дал. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
P1ckw1ck 158 Опубликовано 8 мая, 2015 Можно закрывать. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты