Перейти к содержанию
Авторизация  
P1ckw1ck

Вывод хтмл диалога через ядро

Рекомендуемые сообщения

Добрый день возник вопрос, Есть аванпост от него делаю тп по указанным координатам в ядре. при  нажатие кнопки Телепорт. Хочу сделать что бы при нажатие на кнопку телепорт появлялася диалог и там расписать дроп в этой хтмл. И добавить кнопку Телепорт в этот новый хтмл.

 

 

post-3072-0-67010500-1431054565_thumb.png

 

 

Сам код

 

пробовал менять байпасы, нпц выдает квест. после нажатия кнопки Телепорт

 

с

<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);
    }
}
Изменено пользователем P1ckw1ck

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

можно попробовать сделать метод по аналогии с имеющимися

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 без расширения

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сейчас  глянем, что получится=)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ах, да, переменная такая уже есть

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в метод onBypassFeedback надо это условие поставить,

 

    else
    {
        player.sendMessage("Локация не найдена, сообщите администратору.");
    }
}
else if (actualCommand.equalsIgnoreCase("show"))
{
    showHtml(player, where);
}
else
{
    super.onBypassFeedback(player, command);
}

как то вот так засунь

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Забыл добавить нормально все. спасибо + дал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Гость
Эта тема закрыта для публикации ответов.
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...