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

Маленькая проблемка в скрипте.

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

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

Вроде все отлично.

Только когда хоть 1 рб мертв скрипт крит дает, когда все рб живи то все отоброжается без проблем.

C:\Server_GVE\game\data\scripts\custom\BossRespawn\BossRespawn.java
java.lang.NullPointerException
        at custom.BossRespawn.BossRespawn.sendInfo(BossRespawn.java:57)
        at custom.BossRespawn.BossRespawn.onFirstTalk(BossRespawn.java:43)
        at net.sf.l2j.gameserver.model.quest.Quest.notifyFirstTalk(Quest.java:48
1)
        at net.sf.l2j.gameserver.model.actor.L2Npc.onAction(L2Npc.java:871)
        at net.sf.l2j.gameserver.network.clientpackets.Action.runImpl(Action.jav
a:86)
        at net.sf.l2j.gameserver.network.clientpackets.L2GameClientPacket.run(L2
GameClientPacket.java:62)
        at net.sf.l2j.gameserver.network.L2GameClient.run(L2GameClient.java:843)

        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)

java.lang.NullPointerException
        at custom.BossRespawn.BossRespawn.sendInfo(BossRespawn.java:57)
        at custom.BossRespawn.BossRespawn.onFirstTalk(BossRespawn.java:43)
        at net.sf.l2j.gameserver.model.quest.Quest.notifyFirstTalk(Quest.java:48
1)
        at net.sf.l2j.gameserver.model.actor.L2Npc.onAction(L2Npc.java:871)
        at net.sf.l2j.gameserver.network.clientpackets.Action.runImpl(Action.jav
a:86)
        at net.sf.l2j.gameserver.network.clientpackets.L2GameClientPacket.run(L2
GameClientPacket.java:62)
        at net.sf.l2j.gameserver.network.L2GameClient.run(L2GameClient.java:843)

        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)
C:\Server_GVE\game\data\scripts\custom\BossRespawn\BossRespawn.java
java.lang.NullPointerException
        at custom.BossRespawn.BossRespawn.sendInfo(BossRespawn.java:57)
        at custom.BossRespawn.BossRespawn.onFirstTalk(BossRespawn.java:43)
        at net.sf.l2j.gameserver.model.quest.Quest.notifyFirstTalk(Quest.java:48
1)
        at net.sf.l2j.gameserver.model.actor.L2Npc.onAction(L2Npc.java:871)
        at net.sf.l2j.gameserver.network.clientpackets.Action.runImpl(Action.jav
a:86)
        at net.sf.l2j.gameserver.network.clientpackets.L2GameClientPacket.run(L2
GameClientPacket.java:62)
        at net.sf.l2j.gameserver.network.L2GameClient.run(L2GameClient.java:843)

        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)

java.lang.NullPointerException
        at custom.BossRespawn.BossRespawn.sendInfo(BossRespawn.java:57)
        at custom.BossRespawn.BossRespawn.onFirstTalk(BossRespawn.java:43)
        at net.sf.l2j.gameserver.model.quest.Quest.notifyFirstTalk(Quest.java:48
1)
        at net.sf.l2j.gameserver.model.actor.L2Npc.onAction(L2Npc.java:871)
        at net.sf.l2j.gameserver.network.clientpackets.Action.runImpl(Action.jav
a:86)
        at net.sf.l2j.gameserver.network.clientpackets.L2GameClientPacket.run(L2
GameClientPacket.java:62)
        at net.sf.l2j.gameserver.network.L2GameClient.run(L2GameClient.java:843)

        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)

Сам скрипт


package custom.BossRespawn;


import net.sf.l2j.gameserver.datatables.NpcTable;
import net.sf.l2j.gameserver.instancemanager.RaidBossSpawnManager;
import net.sf.l2j.gameserver.model.actor.L2Npc;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
import net.sf.l2j.gameserver.model.quest.Quest;
import net.sf.l2j.gameserver.network.serverpackets.NpcHtmlMessage;

public class BossRespawn extends Quest
{
	private static final int NPC_ID = 110;
	private static final int[] BOSSES = {25115, 29056, 25524};

	public BossRespawn(int questid, String name, String descr)
	{
		super(questid, name, descr);
		addFirstTalkId(NPC_ID);
	}
	
	public String onFirstTalk(L2Npc npc, L2PcInstance pc)
	{
		if(npc == null || pc == null)
			return null;

		if(npc.getNpcId() == NPC_ID)
		{
			sendInfo(pc);
		}
			return null;
	}

	private void sendInfo(L2PcInstance activeChar)
	{
		StringBuilder tb = new StringBuilder();
		tb.append("<html><title>RaidBoss Manager</title><body><br><center>");
		tb.append("<img src=\"L2UI_CH3.herotower_deco\" width=256 height=32><br><br>");

		for(int boss : BOSSES)
		{
			String name = NpcTable.getInstance().getTemplate(boss).getName();
			long delay = RaidBossSpawnManager.getInstance().getStatsSet(boss).getLong("respawnTime");
			if (delay <= System.currentTimeMillis())
			{
				tb.append("<font color=\"00C3FF\">" + name + "</color>: " + "<font color=\"9CC300\">Живой</color>"+"<br1>");
			}
			else
			{
				int hours = (int) ((delay - System.currentTimeMillis()) / 1000 / 60 / 60);
				int mins = (int) (((delay - (hours * 60 * 60 * 1000)) - System.currentTimeMillis()) / 1000 / 60);
				int seconts = (int) (((delay - ((hours * 60 * 60 * 1000) + (mins * 60 * 1000))) - System.currentTimeMillis()) / 1000);
				tb.append("<font color=\"00C3FF\">" + name + "</color>" + "<font color=\"FFFFFF\">" +" " + "Появится через :</color>" + " " + " <font color=\"32C332\">" + hours + " : " + mins + " : " + seconts + "</color><br1>");
			}
		}

		tb.append("<br><img src=\"L2UI_CH3.herotower_deco\" width=256 height=32><br>");
		tb.append("</center></body></html>");
		
		NpcHtmlMessage msg = new NpcHtmlMessage(NPC_ID);
		msg.setHtml(tb.toString());
		activeChar.sendPacket(msg);
	}

	public static void main(String[] args)
	{
		new BossRespawn(-1, "BossRespawn", "custom");
	}
}

Буду блогодарен.

Изменено пользователем P1ckw1ck

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


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

Получаешь NPE в результате того что переменной delay скорее всего патается присвоится null

а лучше будет разбить вот это long delay = RaidBossSpawnManager.getInstance().getStatsSet(boss).getLong("respawnTime");

на вот так 

final StatsSet stats = RaidBossSpawnManager.getInstance().getStatsSet(boss);
if (stats == null)
{
  activeChar.sendMessage("Stats for RaidBoss" + boss + " not found!"); 
  continue;
}

final long delay = stats.getLong("respawn_time");
if ( delay <= System.currentTimeMillis() )
{
  tb.append("<font color=\"00C3FF\">" + name + "</color>: " + "<font color=\"9CC300\">Живой</color>"+"<br1>");
}
else
{
  int hours = (int) ((delay - System.currentTimeMillis()) / 1000 / 60 / 60);
  int mins = (int) (((delay - (hours * 60 * 60 * 1000)) - System.currentTimeMillis()) / 1000 / 60);
  int seconts = (int) (((delay - ((hours * 60 * 60 * 1000) + (mins * 60 * 1000))) - System.currentTimeMillis()) / 1000);
  tb.append("<font color=\"00C3FF\">" + name + "</color>" + "<font color=\"FFFFFF\">" +" " + "Появится через :</color>" + " " + " <font color=\"32C332\">" + hours + " : " + mins + " : " + seconts + "</color><br1>");
}

на асисах же вроде нужно гедить respawn_time, а не respawnTime

Изменено пользователем Izonami

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


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

на асисах же вроде нужно гедить respawn_time, а не respawnTime

Всеравно крит

C:\Server_GVE\game\data\scripts\custom\BossRespawn\BossRespawn.java
java.lang.IllegalArgumentException: Integer value required, but not specified
        at net.sf.l2j.gameserver.templates.StatsSet.getLong(StatsSet.java:254)
        at custom.BossRespawn.BossRespawn.sendInfo(BossRespawn.java:57)
        at custom.BossRespawn.BossRespawn.onFirstTalk(BossRespawn.java:43)
        at net.sf.l2j.gameserver.model.quest.Quest.notifyFirstTalk(Quest.java:48
1)
        at net.sf.l2j.gameserver.model.actor.L2Npc.onAction(L2Npc.java:871)
        at net.sf.l2j.gameserver.model.actor.instance.L2PcInstance.doInteract(L2
PcInstance.java:4180)
        at net.sf.l2j.gameserver.model.actor.instance.L2PcInstance$AIAccessor.do
Interact(L2PcInstance.java:322)
        at net.sf.l2j.gameserver.ai.L2PlayerAI.thinkInteract(L2PlayerAI.java:317
)
        at net.sf.l2j.gameserver.ai.L2PlayerAI.onEvtThink(L2PlayerAI.java:343)
        at net.sf.l2j.gameserver.ai.L2CharacterAI.onEvtArrived(L2CharacterAI.jav
a:663)
        at net.sf.l2j.gameserver.ai.AbstractAI.notifyEvent(AbstractAI.java:406)
        at net.sf.l2j.gameserver.ai.AbstractAI.notifyEvent(AbstractAI.java:328)
        at net.sf.l2j.gameserver.GameTimeController$MovingObjectArrived.run(Game
TimeController.java:209)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)

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


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

 

Всеравно крит

C:\Server_GVE\game\data\scripts\custom\BossRespawn\BossRespawn.java
java.lang.IllegalArgumentException: Integer value required, but not specified
        at net.sf.l2j.gameserver.templates.StatsSet.getLong(StatsSet.java:254)
        at custom.BossRespawn.BossRespawn.sendInfo(BossRespawn.java:57)
        at custom.BossRespawn.BossRespawn.onFirstTalk(BossRespawn.java:43)
        at net.sf.l2j.gameserver.model.quest.Quest.notifyFirstTalk(Quest.java:48
1)
        at net.sf.l2j.gameserver.model.actor.L2Npc.onAction(L2Npc.java:871)
        at net.sf.l2j.gameserver.model.actor.instance.L2PcInstance.doInteract(L2
PcInstance.java:4180)
        at net.sf.l2j.gameserver.model.actor.instance.L2PcInstance$AIAccessor.do
Interact(L2PcInstance.java:322)
        at net.sf.l2j.gameserver.ai.L2PlayerAI.thinkInteract(L2PlayerAI.java:317
)
        at net.sf.l2j.gameserver.ai.L2PlayerAI.onEvtThink(L2PlayerAI.java:343)
        at net.sf.l2j.gameserver.ai.L2CharacterAI.onEvtArrived(L2CharacterAI.jav
a:663)
        at net.sf.l2j.gameserver.ai.AbstractAI.notifyEvent(AbstractAI.java:406)
        at net.sf.l2j.gameserver.ai.AbstractAI.notifyEvent(AbstractAI.java:328)
        at net.sf.l2j.gameserver.GameTimeController$MovingObjectArrived.run(Game
TimeController.java:209)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)

верю, значит видел какой то форк от асисов 

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


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

Реализуй маленькую функцию, в чем проблема?)

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


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

Реализуй маленькую функцию, в чем проблема?)

Я начел только явой заниматся и скриптами, еще не вкуриваю толком, вот и прошу помощи.

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


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

Я начел только явой заниматся и скриптами, еще не вкуриваю толком, вот и прошу помощи.

А наф такой огромный скрип прост сделай обрашение к базе данных и все 

А в  исходниках рб установи правила когда он спавнулся в бд обнуляются таймеры и  больш ненад

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

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

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

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