Index: C:/eclipse-31m7/workspace/L2_GameServer/java/net/sf/l2j/gameserver/NpcTable.java =================================================================== --- C:/eclipse-31m7/workspace/L2_GameServer/java/net/sf/l2j/gameserver/NpcTable.java (revision 921) +++ C:/eclipse-31m7/workspace/L2_GameServer/java/net/sf/l2j/gameserver/NpcTable.java (working copy) @@ -47,7 +47,7 @@ private HashMap _npcs; private HashMap _npcsNames; - private boolean _initialized = true; + private boolean _initialized = false; public static NpcTable getInstance() { @@ -63,7 +63,6 @@ _npcs = new HashMap(); _npcsNames = new HashMap(); RestoreNpcData(); - } /** @@ -183,6 +182,8 @@ } finally { try { con.close(); } catch (Exception e) {} } + + _initialized = true; } private void fillNpcTable(ResultSet NpcData) @@ -305,6 +306,13 @@ } } + // just wrapper + public void reloadAllNpc() + { + RestoreNpcData(); + } + + public void saveNpc(StatsSet npc) { java.sql.Connection con = null; Index: C:/eclipse-31m7/workspace/L2_GameServer/java/net/sf/l2j/gameserver/SpawnTable.java =================================================================== --- C:/eclipse-31m7/workspace/L2_GameServer/java/net/sf/l2j/gameserver/SpawnTable.java (revision 921) +++ C:/eclipse-31m7/workspace/L2_GameServer/java/net/sf/l2j/gameserver/SpawnTable.java (working copy) @@ -223,4 +223,10 @@ } } } + + //just wrapper + public void reloadAll() + { + fillSpawnTable(); + } } Index: C:/eclipse-31m7/workspace/L2_GameServer/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminSpawn.java =================================================================== --- C:/eclipse-31m7/workspace/L2_GameServer/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminSpawn.java (revision 921) +++ C:/eclipse-31m7/workspace/L2_GameServer/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminSpawn.java (working copy) @@ -19,14 +19,19 @@ package net.sf.l2j.gameserver.handler.admincommandhandlers; import java.util.StringTokenizer; -import java.util.regex.*; +import java.util.logging.Logger; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + import net.sf.l2j.Config; import net.sf.l2j.gameserver.NpcTable; import net.sf.l2j.gameserver.SpawnTable; import net.sf.l2j.gameserver.handler.IAdminCommandHandler; +import net.sf.l2j.gameserver.model.L2NpcInstance; import net.sf.l2j.gameserver.model.L2Object; import net.sf.l2j.gameserver.model.L2PcInstance; import net.sf.l2j.gameserver.model.L2Spawn; +import net.sf.l2j.gameserver.model.L2World; import net.sf.l2j.gameserver.serverpackets.SystemMessage; import net.sf.l2j.gameserver.templates.L2NpcTemplate; @@ -40,7 +45,8 @@ public class AdminSpawn implements IAdminCommandHandler { - private static String[] _adminCommands = { "admin_show_spawns", "admin_spawn", "admin_spawn_monster", "admin_spawn_index" }; + private static String[] _adminCommands = { "admin_show_spawns", "admin_spawn", "admin_spawn_monster", "admin_spawn_index","admin_unspawnall","admin_respawnall" }; + private static Logger _log = Logger.getLogger(AdminSpawn.class.getName()); private static final int REQUIRED_LEVEL = Config.GM_NPC_EDIT; @@ -81,6 +87,33 @@ // Case of wrong monster data } } + else if (command.startsWith("admin_unspawnall")) + { + _log.info("NPC removing STARTED!"); + for(L2Object obj : L2World.getInstance().getAllVisibleObjects()) + { + if(obj instanceof L2NpcInstance) + { + L2NpcInstance target = (L2NpcInstance) obj; + target.deleteMe(); + L2Spawn spawn = target.getSpawn(); + if (spawn != null) + { + spawn.stopRespawn(); + SpawnTable.getInstance().deleteSpawn(spawn, false); + } + _log.finer("Removed NPC "+target.getObjectId()); + } + } + _log.info("NPC removing completed"); + } + else if (command.startsWith("admin_respawnall")) + { + _log.info("NPC spawn STARTED!"); + NpcTable.getInstance().reloadAllNpc(); + SpawnTable.getInstance().reloadAll(); + _log.info("NPC spawn complete"); + } return true; }