Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
AvanpostTeleporterInstance
#1
Всем привет. Подскажите пожалуйста почему вместо списка телепортов у меня вот это:
[Изображение: 20:22:21_3283bfa4.png]
[SRC="java"]package l2p.gameserver.model.instances;


import l2p.gameserver.instancemanager.AvanpostManager;
import l2p.gameserver.instancemanager.RaidBossSpawnManager;
import l2p.gameserver.model.Player;
import l2p.gameserver.model.Spawner;
import l2p.gameserver.serverpackets.NpcHtmlMessage;
import l2p.gameserver.serverpackets.components.CustomMessage;
import l2p.gameserver.serverpackets.ExShowQuestInfo;
import l2p.gameserver.serverpackets.RadarControl;
import l2p.gameserver.templates.npc.NpcTemplate;
import l2p.gameserver.utils.Location;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.File;

public class AvanpostTeleporterInstance extends NpcInstance
{
public AvanpostTeleporterInstance(int objectId, NpcTemplate template)
{
super(objectId, template);
}

@Override
public void onBypassFeedback(Player player, String command)
{
try
{
String[] com = command.split(" ");

if(com[0].equals("tele"))
{
AvanpostManager.Avanpost a = AvanpostManager.getInstance().getAvanpostById(Integer.parseInt(com[1]));

if(a.canTeleport(player))
{
player.teleToLocation(Location.coordsRandomize(a.getLocation(), 50, 250));
}
}
}
catch (Exception e)
{}
}

@Override
public void showChatWindow(Player player, int val, Object... replace)
{
NpcHtmlMessage html = new NpcHtmlMessage(player, this, getHtmlPath(getNpcId(), val, player), val);

// стандартное
html.replace("%objectId%", String.valueOf(getObjectId()));
html.replace("%npcname%", getName());

AvanpostManager.Avanpost[] posts = AvanpostManager.getInstance().getAvanposts();

if(posts.length > 0)
{
StringBuilder sb = new StringBuilder();

sb.append("<center>");
sb.append("<table>");

for(AvanpostManager.Avanpost avan : posts)
{
if(!avan.isCapturable() && avan.getFactionId() != player.getFactionId())
continue;

if(avan.isCapturable() && avan.getFactionId() != player.getFactionId())
{
sb.append("<tr><td>").append(avan.getName()).append("</td><td><font color=\"red\">захвачен!</font></td></tr>");
}
else
{
sb.append("<tr><td><a action=\"bypass -h npc_").append(getObjectId()).append("_tele ").append(avan.ID).append("\">").append(avan.getName()).append("</a></td><td></td></tr>");
}
}

sb.append("</table>");
sb.append("</center>");
}
else
{
html.replace("%content%", "Временно недоступно");
}

player.sendPacket(html);
}

@Override
public String getHtmlPath(int npcId, int val, Player player)
{
File mainText = new File("manager/avanpost/teleporter.htm");

if (mainText.exists())
{
return mainText.toString();
}

return "teleporter.htm";
}
}[/SRC]
Хотя должен быть список аванпостов?
Ответ
#2
Вообще то Вы подменяете тег %content% только если список не больше нуля)

[SRC="java"]
@Override
public void showChatWindow(Player player, int val, Object... replace)
{
NpcHtmlMessage html = new NpcHtmlMessage(player, this, getHtmlPath(getNpcId(), val, player), val);

// стандартное
html.replace("%objectId%", String.valueOf(getObjectId()));
html.replace("%npcname%", getName());

AvanpostManager.Avanpost[] posts = AvanpostManager.getInstance().getAvanposts();

if(posts.length > 0)
{
StringBuilder sb = new StringBuilder();

sb.append("<center>");
sb.append("<table>");

for(AvanpostManager.Avanpost avan : posts)
{
if(!avan.isCapturable() && avan.getFactionId() != player.getFactionId())
continue;

if(avan.isCapturable() && avan.getFactionId() != player.getFactionId())
{
sb.append("<tr><td>").append(avan.getName()).append("</td><td><font color=\"red\">захвачен!</font></td></tr>");
}
else
{
sb.append("<tr><td><a action=\"bypass -h npc_").append(getObjectId()).append("_tele ").append(avan.ID).append("\">").append(avan.getName()).append("</a></td><td></td></tr>");
}
}

sb.append("</table>");
sb.append("</center>");
html.replace("%content%", sb.toString()); // <--------- Вот этого не хватало Smile
}
else
{
html.replace("%content%", "Временно недоступно");
}

player.sendPacket(html);
}
[/SRC]
Ответ
#3
А захваченных постов 1 или 2 без разницы, все равно диалог появляется этот.
Ответ
#4
Это уже свой скрипт смотрите.

На счет подмены.
[SRC="java"]public class replace
{
public static void main(String[] args)
{
String text = "Заменяем тег %tag% на что то другое.";
text.replace("%tag%", "REPLACE"); // <--- Не сработет как нам нужно.
System.out.println(text);
text = text.replace("%tag%", "REPLACE"); // <--- Сработет как нам нужно.
System.out.println(text);
System.out.println("\n\nМетод replace через возврат: " + replaceTag(text));
}

public static String replaceTag(String text)
{
return text.replace("%tag%", "REPLACE");
}
}[/SRC]

Думаю все ясно.
Если нет то вкратце 'text.replace("%tag%", "REPLACE");' делает возврат, а чтобы получить результат нужно сделать инициализацию с возврата 'text = text.replace("%tag%", "REPLACE");' Smile
Ответ
#5
Ясно, спасибо!Smile
Ответ


Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)