P1ckw1ck 158 Опубликовано 15 апреля, 2015 (изменено) Добрый день, поставил нпц для просмотра сколько осталось времени до респа рб. Вроде все отлично. Только когда хоть 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"); } } Буду блогодарен. Изменено 15 апреля, 2015 пользователем P1ckw1ck Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Izonami 31 Опубликовано 15 апреля, 2015 (изменено) Получаешь 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 Изменено 15 апреля, 2015 пользователем Izonami Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
P1ckw1ck 158 Опубликовано 15 апреля, 2015 на асисах же вроде нужно гедить 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) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Izonami 31 Опубликовано 15 апреля, 2015 Всеравно крит 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) верю, значит видел какой то форк от асисов Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
StreLpower 10 Опубликовано 16 апреля, 2015 Реализуй маленькую функцию, в чем проблема?) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
P1ckw1ck 158 Опубликовано 16 апреля, 2015 Реализуй маленькую функцию, в чем проблема?) Я начел только явой заниматся и скриптами, еще не вкуриваю толком, вот и прошу помощи. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
2terege 67 Опубликовано 21 апреля, 2015 Я начел только явой заниматся и скриптами, еще не вкуриваю толком, вот и прошу помощи. А наф такой огромный скрип прост сделай обрашение к базе данных и все А в исходниках рб установи правила когда он спавнулся в бд обнуляются таймеры и больш ненад Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты