» Find Revision
L2J Revision Number:
L2JDP Revision Number:
i have this error in my bossrespawn.java
[url]http:/imageshack.us/photo/my-images/259/70007651.png/[/url]
here is my bossrespawn.java
Code: Select all
/* * This program is free software: you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by the Free Software * Foundation, either version 3 of the License, or (at your option) any later * version. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License along with * this program. If not, see <http://www.gnu.org/licenses/>. */ package custom.BossRespawn; import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.text.SimpleDateFormat;import java.util.Date;import java.util.List;import java.util.logging.Level; import javolution.text.TextBuilder; import com.l2jserver.L2DatabaseFactory;import com.l2jserver.gameserver.ThreadPoolManager;import com.l2jserver.gameserver.instancemanager.GrandBossManager;import com.l2jserver.gameserver.model.actor.L2Npc;import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;import com.l2jserver.gameserver.model.quest.Quest;import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;import com.l2jserver.gameserver.templates.StatsSet;import com.l2jserver.util.L2FastList; /** * * @author UnAfraid * */public class BossRespawn extends Quest{ private static final int NPC_ID = 93000; private static final boolean GM_ONLY = true; private static final boolean DEBUG = false; private static List<Grandboss> GRAND_BOSSES = new L2FastList<Grandboss>(); private static List<Raidboss> RAID_BOSSES = new L2FastList<Raidboss>(); private static final long refreshTime = 5 * 60 * 1000; private static final SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); public BossRespawn(int questid, String name, String descr) { super(questid, name, descr); addFirstTalkId(NPC_ID); addTalkId(NPC_ID); addStartNpc(NPC_ID); ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new reloadBosses(), 1000, refreshTime); } @Override public String onFirstTalk(L2Npc npc, L2PcInstance player) { return "home.htm"; } @Override public String onTalk(L2Npc npc, L2PcInstance player) { return "main.htm"; } @Override public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) { if (event.equalsIgnoreCase("grandbosses")) sendGrandBosses(player); else if (event.equalsIgnoreCase("raidbosses")) return "raidbosses.htm"; else if (event.startsWith("raidboss_")) { try { int level = Integer.parseInt(event.substring(9)); if (level > 0 && level % 20 == 0 && level < 100) return "Are you fackin insain?"; sendRaidBosses(player, level); } catch (NumberFormatException nfe) {} } return null; } private void sendRaidBosses(L2PcInstance player, int bosslevel) { TextBuilder tb = new TextBuilder(); tb.append("<html><title>Grand Boss Info</title><body><br><center><img src=\"L2UI_CH3.herotower_deco\" width=256 height=32><table width=260>"); for (Raidboss rb : RAID_BOSSES) { String name = rb.getName(); int level = rb.getLevel(); int min = bosslevel; int max = min + 10; if (level >= min && level <= max) { long delay = rb.getRespawn(); long currentTime = System.currentTimeMillis(); if (delay <= currentTime) tb.append("<tr><td><font color=\"00C3FF\">" + name + " (" + level + ")</color>:</td><td><font color=\"32C332\">Is Alive</color></td></tr>"); else tb.append("<tr><td><font color=\"00C3FF\">" + name + " (" + level + ")</color>:</td><td><font color=\"9CC300\">" + (player.isGM() && GM_ONLY ? sdf.format(new Date(delay)) : "Dead") + "</color></td></tr>"); } } tb.append("</table><img src=\"L2UI_CH3.herotower_deco\" width=256 height=32><br></center></body></html>"); NpcHtmlMessage msg = new NpcHtmlMessage(NPC_ID); msg.setHtml(tb.toString()); player.sendPacket(msg); } private void sendGrandBosses(L2PcInstance player) { TextBuilder tb = new TextBuilder(); tb.append("<html><title>Grand Boss Info</title><body><br><center><img src=\"L2UI_CH3.herotower_deco\" width=256 height=32><table width=260>"); for (Grandboss boss : GRAND_BOSSES) { String name = boss.getName(); StatsSet stats = GrandBossManager.getInstance().getStatsSet(boss.getId()); if (stats == null) { player.sendMessage("Stats for GrandBoss " + boss.getId() + " not found!"); continue; } long delay = stats.getLong("respawn_time"); long currentTime = System.currentTimeMillis(); if (delay <= currentTime) tb.append("<tr><td><font color=\"00C3FF\">" + name + "</color>:</td><td><font color=\"32C332\">Is Alive</color></td></tr>"); else tb.append("<tr><td><font color=\"00C3FF\">" + name + "</color>:</td><td><font color=\"9CC300\">" + (player.isGM() && GM_ONLY ? sdf.format(new Date(delay)) : "Dead") + "</color></td></tr>"); } tb.append("</table><img src=\"L2UI_CH3.herotower_deco\" width=256 height=32><br></center></body></html>"); NpcHtmlMessage msg = new NpcHtmlMessage(NPC_ID); msg.setHtml(tb.toString()); player.sendPacket(msg); } private class reloadBosses implements Runnable { public void run() { RAID_BOSSES.clear(); GRAND_BOSSES.clear(); Connection con = null; try { con = L2DatabaseFactory.getInstance().getConnection(); PreparedStatement statement = con.prepareStatement("SELECT `n`.`name`, `g`.`boss_id` FROM `npc` as `n` CROSS JOIN `grandboss_data` AS `g` ON `n`.`id` = `g`.`boss_id` GROUP BY `n`.`name` ORDER BY `g`.`respawn_time` DESC"); ResultSet rset = statement.executeQuery(); while (rset.next()) { Grandboss boss = new Grandboss(); boss.setGrandboss(rset.getInt("boss_id"), rset.getString("name")); GRAND_BOSSES.add(boss); } rset.close(); statement.close(); } catch (Exception e) { _log.log(Level.WARNING, "Could not restore grand bosses: " + e.getMessage(), e); } finally { L2DatabaseFactory.close(con); } try { con = L2DatabaseFactory.getInstance().getConnection(); PreparedStatement statement = con.prepareStatement("SELECT `n`.`level`, `n`.`name`, `r`.`respawn_time` FROM `npc` as `n` CROSS JOIN `raidboss_spawnlist` AS `r` ON `n`.`id` = `r`.`boss_id` ORDER BY `n`.`level`"); ResultSet rset = statement.executeQuery(); while (rset.next()) { Raidboss rb = new Raidboss(); rb.setRaidboss(rset.getString("name"), rset.getInt("level") , rset.getLong("respawn_time")); RAID_BOSSES.add(rb); } rset.close(); statement.close(); } catch (Exception e) { _log.log(Level.WARNING, "Could not restore raid bosses: " + e.getMessage(), e); } finally { L2DatabaseFactory.close(con); } if (DEBUG) { _log.info("Boss Respawn last update: " + sdf.format(new Date(System.currentTimeMillis()))); _log.info("Boss Respawn Loaded: " + GRAND_BOSSES.size() + " Grand Bosses"); _log.info("Boss Respawn Loaded: " + RAID_BOSSES.size() + " Raid Bosses"); _log.info("Boss Respawn next update: " + sdf.format(new Date(System.currentTimeMillis() + refreshTime))); } } } private class Raidboss { private String bossName = null; private long bossRespawn = 0; private int bossLevel = 0; private void setRaidboss(String name, int level, long respawn) { bossName = name; bossLevel = level; bossRespawn = respawn; } private String getName() { return bossName; } private int getLevel() { return bossLevel; } private long getRespawn() { return bossRespawn; } } private class Grandboss { private int bossId = 0; private String bossName = null; private void setGrandboss(int id, String name) { bossId = id; bossName = name; } private int getId() { return bossId; } private String getName() { return bossName; } } public static void main(String[] args) { new BossRespawn(-1, "BossRespawn", "custom"); }}