From 0aed0ae98ae111904784673eb4491caccdafd5db Mon Sep 17 00:00:00 2001 From: MobiusDev <8391001+MobiusDevelopment@users.noreply.github.com> Date: Wed, 5 Sep 2018 23:49:55 +0000 Subject: [PATCH] Fixed admin respawn commands. --- .../admincommandhandlers/AdminSpawn.java | 41 ++++++++++++++++--- .../instancemanager/QuestManager.java | 31 +++++++++----- .../instancemanager/ZoneManager.java | 34 ++++++++------- .../admincommandhandlers/AdminSpawn.java | 41 ++++++++++++++++--- .../instancemanager/QuestManager.java | 31 +++++++++----- .../instancemanager/ZoneManager.java | 34 ++++++++------- .../admincommandhandlers/AdminSpawn.java | 41 ++++++++++++++++--- .../instancemanager/QuestManager.java | 31 +++++++++----- .../instancemanager/ZoneManager.java | 34 ++++++++------- .../admincommandhandlers/AdminSpawn.java | 41 ++++++++++++++++--- .../instancemanager/QuestManager.java | 31 +++++++++----- .../instancemanager/ZoneManager.java | 34 ++++++++------- .../admincommandhandlers/AdminSpawn.java | 14 +++++-- .../instancemanager/QuestManager.java | 32 ++++++++++----- .../gameserver/model/AutoSpawnHandler.java | 20 +++++---- .../admincommandhandlers/AdminSpawn.java | 41 ++++++++++++++++--- .../instancemanager/QuestManager.java | 31 +++++++++----- .../instancemanager/ZoneManager.java | 34 ++++++++------- .../admincommandhandlers/AdminSpawn.java | 41 ++++++++++++++++--- .../instancemanager/QuestManager.java | 31 +++++++++----- .../instancemanager/ZoneManager.java | 34 ++++++++------- .../admincommandhandlers/AdminSpawn.java | 41 ++++++++++++++++--- .../instancemanager/QuestManager.java | 31 +++++++++----- .../instancemanager/ZoneManager.java | 34 ++++++++------- 24 files changed, 577 insertions(+), 231 deletions(-) diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/admincommandhandlers/AdminSpawn.java b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/admincommandhandlers/AdminSpawn.java index 5c219e3877..7d5f27c846 100644 --- a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/admincommandhandlers/AdminSpawn.java +++ b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/admincommandhandlers/AdminSpawn.java @@ -26,11 +26,13 @@ import java.util.regex.Pattern; import com.l2jmobius.Config; import com.l2jmobius.gameserver.data.xml.impl.AdminData; import com.l2jmobius.gameserver.data.xml.impl.NpcData; +import com.l2jmobius.gameserver.data.xml.impl.SpawnsData; import com.l2jmobius.gameserver.datatables.SpawnTable; import com.l2jmobius.gameserver.handler.IAdminCommandHandler; import com.l2jmobius.gameserver.instancemanager.DBSpawnManager; import com.l2jmobius.gameserver.instancemanager.InstanceManager; import com.l2jmobius.gameserver.instancemanager.QuestManager; +import com.l2jmobius.gameserver.instancemanager.ZoneManager; import com.l2jmobius.gameserver.model.L2Object; import com.l2jmobius.gameserver.model.L2Spawn; import com.l2jmobius.gameserver.model.L2World; @@ -212,6 +214,19 @@ public class AdminSpawn implements IAdminCommandHandler else if (command.startsWith("admin_unspawnall")) { Broadcast.toAllOnlinePlayers(SystemMessage.getSystemMessage(SystemMessageId.THE_NPC_SERVER_IS_NOT_OPERATING_AT_THIS_TIME)); + // Unload all scripts. + QuestManager.getInstance().unloadAllScripts(); + // Unload all zones. + ZoneManager.getInstance().unload(); + // Delete all spawns. + for (L2Npc npc : DBSpawnManager.getInstance().getNpcs().values()) + { + if (npc != null) + { + DBSpawnManager.getInstance().deleteSpawn(npc.getSpawn(), true); + npc.deleteMe(); + } + } DBSpawnManager.getInstance().cleanUp(); for (L2Object obj : L2World.getInstance().getVisibleObjects()) { @@ -227,11 +242,26 @@ public class AdminSpawn implements IAdminCommandHandler } } } - AdminData.getInstance().broadcastMessageToGMs("NPC Unspawn completed!"); + // Reload. + ZoneManager.getInstance().reload(); + QuestManager.getInstance().reloadAllScripts(); + AdminData.getInstance().broadcastMessageToGMs("NPC unspawn completed!"); } else if (command.startsWith("admin_respawnall") || command.startsWith("admin_spawn_reload")) { - // make sure all spawns are deleted + // Unload all scripts. + QuestManager.getInstance().unloadAllScripts(); + // Unload all zones. + ZoneManager.getInstance().unload(); + // Delete all spawns. + for (L2Npc npc : DBSpawnManager.getInstance().getNpcs().values()) + { + if (npc != null) + { + DBSpawnManager.getInstance().deleteSpawn(npc.getSpawn(), true); + npc.deleteMe(); + } + } DBSpawnManager.getInstance().cleanUp(); for (L2Object obj : L2World.getInstance().getVisibleObjects()) { @@ -247,11 +277,12 @@ public class AdminSpawn implements IAdminCommandHandler } } } - // now respawn all - NpcData.getInstance().load(); + // Reload. + SpawnsData.getInstance().init(); DBSpawnManager.getInstance().load(); + ZoneManager.getInstance().reload(); QuestManager.getInstance().reloadAllScripts(); - AdminData.getInstance().broadcastMessageToGMs("NPC Respawn completed!"); + AdminData.getInstance().broadcastMessageToGMs("NPC respawn completed!"); } else if (command.startsWith("admin_spawnat")) { diff --git a/L2J_Mobius_1.0_Ertheia/java/com/l2jmobius/gameserver/instancemanager/QuestManager.java b/L2J_Mobius_1.0_Ertheia/java/com/l2jmobius/gameserver/instancemanager/QuestManager.java index 856a578296..3e44215f09 100644 --- a/L2J_Mobius_1.0_Ertheia/java/com/l2jmobius/gameserver/instancemanager/QuestManager.java +++ b/L2J_Mobius_1.0_Ertheia/java/com/l2jmobius/gameserver/instancemanager/QuestManager.java @@ -73,7 +73,27 @@ public final class QuestManager */ public void reloadAllScripts() { + unloadAllScripts(); + LOGGER.info("Reloading all server scripts."); + try + { + ScriptEngineManager.getInstance().executeScriptList(); + } + catch (Exception e) + { + LOGGER.log(Level.SEVERE, "Failed executing script list!", e); + } + + getInstance().report(); + } + + /** + * Unload all quests and scripts. + */ + public void unloadAllScripts() + { + LOGGER.info("Unloading all server scripts."); // Unload quests. for (Quest quest : _quests.values()) @@ -93,17 +113,6 @@ public final class QuestManager } } _scripts.clear(); - - try - { - ScriptEngineManager.getInstance().executeScriptList(); - } - catch (Exception e) - { - LOGGER.log(Level.SEVERE, "Failed executing script list!", e); - } - - getInstance().report(); } /** diff --git a/L2J_Mobius_1.0_Ertheia/java/com/l2jmobius/gameserver/instancemanager/ZoneManager.java b/L2J_Mobius_1.0_Ertheia/java/com/l2jmobius/gameserver/instancemanager/ZoneManager.java index a7b515d858..9daae5a4bf 100644 --- a/L2J_Mobius_1.0_Ertheia/java/com/l2jmobius/gameserver/instancemanager/ZoneManager.java +++ b/L2J_Mobius_1.0_Ertheia/java/com/l2jmobius/gameserver/instancemanager/ZoneManager.java @@ -93,6 +93,26 @@ public final class ZoneManager implements IGameXmlReader * Reload. */ public void reload() + { + // Unload zones. + unload(); + + // Load the zones. + load(); + + // Re-validate all characters in zones. + for (L2Object obj : L2World.getInstance().getVisibleObjects()) + { + if (obj.isCharacter()) + { + ((L2Character) obj).revalidateZone(true); + } + } + + SETTINGS.clear(); + } + + public void unload() { // Get the world regions int count = 0; @@ -119,20 +139,6 @@ public final class ZoneManager implements IGameXmlReader } } LOGGER.info(getClass().getSimpleName() + ": Removed zones in " + count + " regions."); - - // Load the zones - load(); - - // Re-validate all characters in zones - for (L2Object obj : L2World.getInstance().getVisibleObjects()) - { - if (obj.isCharacter()) - { - ((L2Character) obj).revalidateZone(true); - } - } - - SETTINGS.clear(); } @Override diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/admincommandhandlers/AdminSpawn.java b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/admincommandhandlers/AdminSpawn.java index 5c219e3877..7d5f27c846 100644 --- a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/admincommandhandlers/AdminSpawn.java +++ b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/admincommandhandlers/AdminSpawn.java @@ -26,11 +26,13 @@ import java.util.regex.Pattern; import com.l2jmobius.Config; import com.l2jmobius.gameserver.data.xml.impl.AdminData; import com.l2jmobius.gameserver.data.xml.impl.NpcData; +import com.l2jmobius.gameserver.data.xml.impl.SpawnsData; import com.l2jmobius.gameserver.datatables.SpawnTable; import com.l2jmobius.gameserver.handler.IAdminCommandHandler; import com.l2jmobius.gameserver.instancemanager.DBSpawnManager; import com.l2jmobius.gameserver.instancemanager.InstanceManager; import com.l2jmobius.gameserver.instancemanager.QuestManager; +import com.l2jmobius.gameserver.instancemanager.ZoneManager; import com.l2jmobius.gameserver.model.L2Object; import com.l2jmobius.gameserver.model.L2Spawn; import com.l2jmobius.gameserver.model.L2World; @@ -212,6 +214,19 @@ public class AdminSpawn implements IAdminCommandHandler else if (command.startsWith("admin_unspawnall")) { Broadcast.toAllOnlinePlayers(SystemMessage.getSystemMessage(SystemMessageId.THE_NPC_SERVER_IS_NOT_OPERATING_AT_THIS_TIME)); + // Unload all scripts. + QuestManager.getInstance().unloadAllScripts(); + // Unload all zones. + ZoneManager.getInstance().unload(); + // Delete all spawns. + for (L2Npc npc : DBSpawnManager.getInstance().getNpcs().values()) + { + if (npc != null) + { + DBSpawnManager.getInstance().deleteSpawn(npc.getSpawn(), true); + npc.deleteMe(); + } + } DBSpawnManager.getInstance().cleanUp(); for (L2Object obj : L2World.getInstance().getVisibleObjects()) { @@ -227,11 +242,26 @@ public class AdminSpawn implements IAdminCommandHandler } } } - AdminData.getInstance().broadcastMessageToGMs("NPC Unspawn completed!"); + // Reload. + ZoneManager.getInstance().reload(); + QuestManager.getInstance().reloadAllScripts(); + AdminData.getInstance().broadcastMessageToGMs("NPC unspawn completed!"); } else if (command.startsWith("admin_respawnall") || command.startsWith("admin_spawn_reload")) { - // make sure all spawns are deleted + // Unload all scripts. + QuestManager.getInstance().unloadAllScripts(); + // Unload all zones. + ZoneManager.getInstance().unload(); + // Delete all spawns. + for (L2Npc npc : DBSpawnManager.getInstance().getNpcs().values()) + { + if (npc != null) + { + DBSpawnManager.getInstance().deleteSpawn(npc.getSpawn(), true); + npc.deleteMe(); + } + } DBSpawnManager.getInstance().cleanUp(); for (L2Object obj : L2World.getInstance().getVisibleObjects()) { @@ -247,11 +277,12 @@ public class AdminSpawn implements IAdminCommandHandler } } } - // now respawn all - NpcData.getInstance().load(); + // Reload. + SpawnsData.getInstance().init(); DBSpawnManager.getInstance().load(); + ZoneManager.getInstance().reload(); QuestManager.getInstance().reloadAllScripts(); - AdminData.getInstance().broadcastMessageToGMs("NPC Respawn completed!"); + AdminData.getInstance().broadcastMessageToGMs("NPC respawn completed!"); } else if (command.startsWith("admin_spawnat")) { diff --git a/L2J_Mobius_2.5_Underground/java/com/l2jmobius/gameserver/instancemanager/QuestManager.java b/L2J_Mobius_2.5_Underground/java/com/l2jmobius/gameserver/instancemanager/QuestManager.java index 856a578296..3e44215f09 100644 --- a/L2J_Mobius_2.5_Underground/java/com/l2jmobius/gameserver/instancemanager/QuestManager.java +++ b/L2J_Mobius_2.5_Underground/java/com/l2jmobius/gameserver/instancemanager/QuestManager.java @@ -73,7 +73,27 @@ public final class QuestManager */ public void reloadAllScripts() { + unloadAllScripts(); + LOGGER.info("Reloading all server scripts."); + try + { + ScriptEngineManager.getInstance().executeScriptList(); + } + catch (Exception e) + { + LOGGER.log(Level.SEVERE, "Failed executing script list!", e); + } + + getInstance().report(); + } + + /** + * Unload all quests and scripts. + */ + public void unloadAllScripts() + { + LOGGER.info("Unloading all server scripts."); // Unload quests. for (Quest quest : _quests.values()) @@ -93,17 +113,6 @@ public final class QuestManager } } _scripts.clear(); - - try - { - ScriptEngineManager.getInstance().executeScriptList(); - } - catch (Exception e) - { - LOGGER.log(Level.SEVERE, "Failed executing script list!", e); - } - - getInstance().report(); } /** diff --git a/L2J_Mobius_2.5_Underground/java/com/l2jmobius/gameserver/instancemanager/ZoneManager.java b/L2J_Mobius_2.5_Underground/java/com/l2jmobius/gameserver/instancemanager/ZoneManager.java index a7b515d858..9daae5a4bf 100644 --- a/L2J_Mobius_2.5_Underground/java/com/l2jmobius/gameserver/instancemanager/ZoneManager.java +++ b/L2J_Mobius_2.5_Underground/java/com/l2jmobius/gameserver/instancemanager/ZoneManager.java @@ -93,6 +93,26 @@ public final class ZoneManager implements IGameXmlReader * Reload. */ public void reload() + { + // Unload zones. + unload(); + + // Load the zones. + load(); + + // Re-validate all characters in zones. + for (L2Object obj : L2World.getInstance().getVisibleObjects()) + { + if (obj.isCharacter()) + { + ((L2Character) obj).revalidateZone(true); + } + } + + SETTINGS.clear(); + } + + public void unload() { // Get the world regions int count = 0; @@ -119,20 +139,6 @@ public final class ZoneManager implements IGameXmlReader } } LOGGER.info(getClass().getSimpleName() + ": Removed zones in " + count + " regions."); - - // Load the zones - load(); - - // Re-validate all characters in zones - for (L2Object obj : L2World.getInstance().getVisibleObjects()) - { - if (obj.isCharacter()) - { - ((L2Character) obj).revalidateZone(true); - } - } - - SETTINGS.clear(); } @Override diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/admincommandhandlers/AdminSpawn.java b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/admincommandhandlers/AdminSpawn.java index 5c219e3877..7d5f27c846 100644 --- a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/admincommandhandlers/AdminSpawn.java +++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/admincommandhandlers/AdminSpawn.java @@ -26,11 +26,13 @@ import java.util.regex.Pattern; import com.l2jmobius.Config; import com.l2jmobius.gameserver.data.xml.impl.AdminData; import com.l2jmobius.gameserver.data.xml.impl.NpcData; +import com.l2jmobius.gameserver.data.xml.impl.SpawnsData; import com.l2jmobius.gameserver.datatables.SpawnTable; import com.l2jmobius.gameserver.handler.IAdminCommandHandler; import com.l2jmobius.gameserver.instancemanager.DBSpawnManager; import com.l2jmobius.gameserver.instancemanager.InstanceManager; import com.l2jmobius.gameserver.instancemanager.QuestManager; +import com.l2jmobius.gameserver.instancemanager.ZoneManager; import com.l2jmobius.gameserver.model.L2Object; import com.l2jmobius.gameserver.model.L2Spawn; import com.l2jmobius.gameserver.model.L2World; @@ -212,6 +214,19 @@ public class AdminSpawn implements IAdminCommandHandler else if (command.startsWith("admin_unspawnall")) { Broadcast.toAllOnlinePlayers(SystemMessage.getSystemMessage(SystemMessageId.THE_NPC_SERVER_IS_NOT_OPERATING_AT_THIS_TIME)); + // Unload all scripts. + QuestManager.getInstance().unloadAllScripts(); + // Unload all zones. + ZoneManager.getInstance().unload(); + // Delete all spawns. + for (L2Npc npc : DBSpawnManager.getInstance().getNpcs().values()) + { + if (npc != null) + { + DBSpawnManager.getInstance().deleteSpawn(npc.getSpawn(), true); + npc.deleteMe(); + } + } DBSpawnManager.getInstance().cleanUp(); for (L2Object obj : L2World.getInstance().getVisibleObjects()) { @@ -227,11 +242,26 @@ public class AdminSpawn implements IAdminCommandHandler } } } - AdminData.getInstance().broadcastMessageToGMs("NPC Unspawn completed!"); + // Reload. + ZoneManager.getInstance().reload(); + QuestManager.getInstance().reloadAllScripts(); + AdminData.getInstance().broadcastMessageToGMs("NPC unspawn completed!"); } else if (command.startsWith("admin_respawnall") || command.startsWith("admin_spawn_reload")) { - // make sure all spawns are deleted + // Unload all scripts. + QuestManager.getInstance().unloadAllScripts(); + // Unload all zones. + ZoneManager.getInstance().unload(); + // Delete all spawns. + for (L2Npc npc : DBSpawnManager.getInstance().getNpcs().values()) + { + if (npc != null) + { + DBSpawnManager.getInstance().deleteSpawn(npc.getSpawn(), true); + npc.deleteMe(); + } + } DBSpawnManager.getInstance().cleanUp(); for (L2Object obj : L2World.getInstance().getVisibleObjects()) { @@ -247,11 +277,12 @@ public class AdminSpawn implements IAdminCommandHandler } } } - // now respawn all - NpcData.getInstance().load(); + // Reload. + SpawnsData.getInstance().init(); DBSpawnManager.getInstance().load(); + ZoneManager.getInstance().reload(); QuestManager.getInstance().reloadAllScripts(); - AdminData.getInstance().broadcastMessageToGMs("NPC Respawn completed!"); + AdminData.getInstance().broadcastMessageToGMs("NPC respawn completed!"); } else if (command.startsWith("admin_spawnat")) { diff --git a/L2J_Mobius_3.0_Helios/java/com/l2jmobius/gameserver/instancemanager/QuestManager.java b/L2J_Mobius_3.0_Helios/java/com/l2jmobius/gameserver/instancemanager/QuestManager.java index 856a578296..3e44215f09 100644 --- a/L2J_Mobius_3.0_Helios/java/com/l2jmobius/gameserver/instancemanager/QuestManager.java +++ b/L2J_Mobius_3.0_Helios/java/com/l2jmobius/gameserver/instancemanager/QuestManager.java @@ -73,7 +73,27 @@ public final class QuestManager */ public void reloadAllScripts() { + unloadAllScripts(); + LOGGER.info("Reloading all server scripts."); + try + { + ScriptEngineManager.getInstance().executeScriptList(); + } + catch (Exception e) + { + LOGGER.log(Level.SEVERE, "Failed executing script list!", e); + } + + getInstance().report(); + } + + /** + * Unload all quests and scripts. + */ + public void unloadAllScripts() + { + LOGGER.info("Unloading all server scripts."); // Unload quests. for (Quest quest : _quests.values()) @@ -93,17 +113,6 @@ public final class QuestManager } } _scripts.clear(); - - try - { - ScriptEngineManager.getInstance().executeScriptList(); - } - catch (Exception e) - { - LOGGER.log(Level.SEVERE, "Failed executing script list!", e); - } - - getInstance().report(); } /** diff --git a/L2J_Mobius_3.0_Helios/java/com/l2jmobius/gameserver/instancemanager/ZoneManager.java b/L2J_Mobius_3.0_Helios/java/com/l2jmobius/gameserver/instancemanager/ZoneManager.java index a7b515d858..9daae5a4bf 100644 --- a/L2J_Mobius_3.0_Helios/java/com/l2jmobius/gameserver/instancemanager/ZoneManager.java +++ b/L2J_Mobius_3.0_Helios/java/com/l2jmobius/gameserver/instancemanager/ZoneManager.java @@ -93,6 +93,26 @@ public final class ZoneManager implements IGameXmlReader * Reload. */ public void reload() + { + // Unload zones. + unload(); + + // Load the zones. + load(); + + // Re-validate all characters in zones. + for (L2Object obj : L2World.getInstance().getVisibleObjects()) + { + if (obj.isCharacter()) + { + ((L2Character) obj).revalidateZone(true); + } + } + + SETTINGS.clear(); + } + + public void unload() { // Get the world regions int count = 0; @@ -119,20 +139,6 @@ public final class ZoneManager implements IGameXmlReader } } LOGGER.info(getClass().getSimpleName() + ": Removed zones in " + count + " regions."); - - // Load the zones - load(); - - // Re-validate all characters in zones - for (L2Object obj : L2World.getInstance().getVisibleObjects()) - { - if (obj.isCharacter()) - { - ((L2Character) obj).revalidateZone(true); - } - } - - SETTINGS.clear(); } @Override diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/admincommandhandlers/AdminSpawn.java b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/admincommandhandlers/AdminSpawn.java index 5c219e3877..7d5f27c846 100644 --- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/admincommandhandlers/AdminSpawn.java +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/admincommandhandlers/AdminSpawn.java @@ -26,11 +26,13 @@ import java.util.regex.Pattern; import com.l2jmobius.Config; import com.l2jmobius.gameserver.data.xml.impl.AdminData; import com.l2jmobius.gameserver.data.xml.impl.NpcData; +import com.l2jmobius.gameserver.data.xml.impl.SpawnsData; import com.l2jmobius.gameserver.datatables.SpawnTable; import com.l2jmobius.gameserver.handler.IAdminCommandHandler; import com.l2jmobius.gameserver.instancemanager.DBSpawnManager; import com.l2jmobius.gameserver.instancemanager.InstanceManager; import com.l2jmobius.gameserver.instancemanager.QuestManager; +import com.l2jmobius.gameserver.instancemanager.ZoneManager; import com.l2jmobius.gameserver.model.L2Object; import com.l2jmobius.gameserver.model.L2Spawn; import com.l2jmobius.gameserver.model.L2World; @@ -212,6 +214,19 @@ public class AdminSpawn implements IAdminCommandHandler else if (command.startsWith("admin_unspawnall")) { Broadcast.toAllOnlinePlayers(SystemMessage.getSystemMessage(SystemMessageId.THE_NPC_SERVER_IS_NOT_OPERATING_AT_THIS_TIME)); + // Unload all scripts. + QuestManager.getInstance().unloadAllScripts(); + // Unload all zones. + ZoneManager.getInstance().unload(); + // Delete all spawns. + for (L2Npc npc : DBSpawnManager.getInstance().getNpcs().values()) + { + if (npc != null) + { + DBSpawnManager.getInstance().deleteSpawn(npc.getSpawn(), true); + npc.deleteMe(); + } + } DBSpawnManager.getInstance().cleanUp(); for (L2Object obj : L2World.getInstance().getVisibleObjects()) { @@ -227,11 +242,26 @@ public class AdminSpawn implements IAdminCommandHandler } } } - AdminData.getInstance().broadcastMessageToGMs("NPC Unspawn completed!"); + // Reload. + ZoneManager.getInstance().reload(); + QuestManager.getInstance().reloadAllScripts(); + AdminData.getInstance().broadcastMessageToGMs("NPC unspawn completed!"); } else if (command.startsWith("admin_respawnall") || command.startsWith("admin_spawn_reload")) { - // make sure all spawns are deleted + // Unload all scripts. + QuestManager.getInstance().unloadAllScripts(); + // Unload all zones. + ZoneManager.getInstance().unload(); + // Delete all spawns. + for (L2Npc npc : DBSpawnManager.getInstance().getNpcs().values()) + { + if (npc != null) + { + DBSpawnManager.getInstance().deleteSpawn(npc.getSpawn(), true); + npc.deleteMe(); + } + } DBSpawnManager.getInstance().cleanUp(); for (L2Object obj : L2World.getInstance().getVisibleObjects()) { @@ -247,11 +277,12 @@ public class AdminSpawn implements IAdminCommandHandler } } } - // now respawn all - NpcData.getInstance().load(); + // Reload. + SpawnsData.getInstance().init(); DBSpawnManager.getInstance().load(); + ZoneManager.getInstance().reload(); QuestManager.getInstance().reloadAllScripts(); - AdminData.getInstance().broadcastMessageToGMs("NPC Respawn completed!"); + AdminData.getInstance().broadcastMessageToGMs("NPC respawn completed!"); } else if (command.startsWith("admin_spawnat")) { diff --git a/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/instancemanager/QuestManager.java b/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/instancemanager/QuestManager.java index 856a578296..3e44215f09 100644 --- a/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/instancemanager/QuestManager.java +++ b/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/instancemanager/QuestManager.java @@ -73,7 +73,27 @@ public final class QuestManager */ public void reloadAllScripts() { + unloadAllScripts(); + LOGGER.info("Reloading all server scripts."); + try + { + ScriptEngineManager.getInstance().executeScriptList(); + } + catch (Exception e) + { + LOGGER.log(Level.SEVERE, "Failed executing script list!", e); + } + + getInstance().report(); + } + + /** + * Unload all quests and scripts. + */ + public void unloadAllScripts() + { + LOGGER.info("Unloading all server scripts."); // Unload quests. for (Quest quest : _quests.values()) @@ -93,17 +113,6 @@ public final class QuestManager } } _scripts.clear(); - - try - { - ScriptEngineManager.getInstance().executeScriptList(); - } - catch (Exception e) - { - LOGGER.log(Level.SEVERE, "Failed executing script list!", e); - } - - getInstance().report(); } /** diff --git a/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/instancemanager/ZoneManager.java b/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/instancemanager/ZoneManager.java index a7b515d858..9daae5a4bf 100644 --- a/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/instancemanager/ZoneManager.java +++ b/L2J_Mobius_4.0_GrandCrusade/java/com/l2jmobius/gameserver/instancemanager/ZoneManager.java @@ -93,6 +93,26 @@ public final class ZoneManager implements IGameXmlReader * Reload. */ public void reload() + { + // Unload zones. + unload(); + + // Load the zones. + load(); + + // Re-validate all characters in zones. + for (L2Object obj : L2World.getInstance().getVisibleObjects()) + { + if (obj.isCharacter()) + { + ((L2Character) obj).revalidateZone(true); + } + } + + SETTINGS.clear(); + } + + public void unload() { // Get the world regions int count = 0; @@ -119,20 +139,6 @@ public final class ZoneManager implements IGameXmlReader } } LOGGER.info(getClass().getSimpleName() + ": Removed zones in " + count + " regions."); - - // Load the zones - load(); - - // Re-validate all characters in zones - for (L2Object obj : L2World.getInstance().getVisibleObjects()) - { - if (obj.isCharacter()) - { - ((L2Character) obj).revalidateZone(true); - } - } - - SETTINGS.clear(); } @Override diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/admincommandhandlers/AdminSpawn.java b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/admincommandhandlers/AdminSpawn.java index 83ec37f6fa..e395b0caa8 100644 --- a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/admincommandhandlers/AdminSpawn.java +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/admincommandhandlers/AdminSpawn.java @@ -216,6 +216,10 @@ public class AdminSpawn implements IAdminCommandHandler else if (command.startsWith("admin_unspawnall")) { Broadcast.toAllOnlinePlayers(SystemMessage.getSystemMessage(SystemMessageId.THE_NPC_SERVER_IS_NOT_OPERATING_AT_THIS_TIME)); + // Unload all scripts. + QuestManager.getInstance().unloadAllScripts(); + // Delete all spawns. + AutoSpawnHandler.getInstance().unload(); RaidBossSpawnManager.getInstance().cleanUp(); DayNightSpawnManager.getInstance().cleanUp(); for (L2Object obj : L2World.getInstance().getVisibleObjects()) @@ -232,6 +236,8 @@ public class AdminSpawn implements IAdminCommandHandler } } } + // Reload. + QuestManager.getInstance().reloadAllScripts(); AdminData.getInstance().broadcastMessageToGMs("NPC unspawn completed!"); } else if (command.startsWith("admin_spawnday")) @@ -244,7 +250,10 @@ public class AdminSpawn implements IAdminCommandHandler } else if (command.startsWith("admin_respawnall") || command.startsWith("admin_spawn_reload")) { - // make sure all spawns are deleted + // Unload all scripts. + QuestManager.getInstance().unloadAllScripts(); + // Delete all spawns. + AutoSpawnHandler.getInstance().unload(); RaidBossSpawnManager.getInstance().cleanUp(); DayNightSpawnManager.getInstance().cleanUp(); for (L2Object obj : L2World.getInstance().getVisibleObjects()) @@ -261,8 +270,7 @@ public class AdminSpawn implements IAdminCommandHandler } } } - // now respawn all - NpcData.getInstance().load(); + // Reload. SpawnTable.getInstance().load(); RaidBossSpawnManager.getInstance().load(); AutoSpawnHandler.getInstance().reload(); diff --git a/L2J_Mobius_CT_2.6_HighFive/java/com/l2jmobius/gameserver/instancemanager/QuestManager.java b/L2J_Mobius_CT_2.6_HighFive/java/com/l2jmobius/gameserver/instancemanager/QuestManager.java index 21155dfafd..b8fba1efac 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/com/l2jmobius/gameserver/instancemanager/QuestManager.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/com/l2jmobius/gameserver/instancemanager/QuestManager.java @@ -73,8 +73,29 @@ public final class QuestManager */ public void reloadAllScripts() { + unloadAllScripts(); + LOGGER.info("Reloading all server scripts."); + try + { + ScriptEngineManager.getInstance().executeScriptList(); + } + catch (Exception e) + { + LOGGER.log(Level.SEVERE, "Failed executing script list!", e); + } + + getInstance().report(); + } + + /** + * Unload all quests and scripts. + */ + public void unloadAllScripts() + { + LOGGER.info("Unloading all server scripts."); + // Unload quests. for (Quest quest : _quests.values()) { @@ -93,17 +114,6 @@ public final class QuestManager } } _scripts.clear(); - - try - { - ScriptEngineManager.getInstance().executeScriptList(); - } - catch (Exception e) - { - LOGGER.log(Level.SEVERE, "Failed executing script list!", e); - } - - getInstance().report(); } /** diff --git a/L2J_Mobius_CT_2.6_HighFive/java/com/l2jmobius/gameserver/model/AutoSpawnHandler.java b/L2J_Mobius_CT_2.6_HighFive/java/com/l2jmobius/gameserver/model/AutoSpawnHandler.java index d987589d60..533f63de04 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/com/l2jmobius/gameserver/model/AutoSpawnHandler.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/com/l2jmobius/gameserver/model/AutoSpawnHandler.java @@ -89,6 +89,19 @@ public class AutoSpawnHandler } public void reload() + { + // unload + unload(); + + // create clean list + _registeredSpawns.clear(); + _runningSpawns.clear(); + + // load + restoreSpawnData(); + } + + public void unload() { // stop all timers for (ScheduledFuture sf : _runningSpawns.values()) @@ -106,13 +119,6 @@ public class AutoSpawnHandler removeSpawn(asi); } } - - // create clean list - _registeredSpawns.clear(); - _runningSpawns.clear(); - - // load - restoreSpawnData(); } private void restoreSpawnData() diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/admincommandhandlers/AdminSpawn.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/admincommandhandlers/AdminSpawn.java index 5c219e3877..7d5f27c846 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/admincommandhandlers/AdminSpawn.java +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/admincommandhandlers/AdminSpawn.java @@ -26,11 +26,13 @@ import java.util.regex.Pattern; import com.l2jmobius.Config; import com.l2jmobius.gameserver.data.xml.impl.AdminData; import com.l2jmobius.gameserver.data.xml.impl.NpcData; +import com.l2jmobius.gameserver.data.xml.impl.SpawnsData; import com.l2jmobius.gameserver.datatables.SpawnTable; import com.l2jmobius.gameserver.handler.IAdminCommandHandler; import com.l2jmobius.gameserver.instancemanager.DBSpawnManager; import com.l2jmobius.gameserver.instancemanager.InstanceManager; import com.l2jmobius.gameserver.instancemanager.QuestManager; +import com.l2jmobius.gameserver.instancemanager.ZoneManager; import com.l2jmobius.gameserver.model.L2Object; import com.l2jmobius.gameserver.model.L2Spawn; import com.l2jmobius.gameserver.model.L2World; @@ -212,6 +214,19 @@ public class AdminSpawn implements IAdminCommandHandler else if (command.startsWith("admin_unspawnall")) { Broadcast.toAllOnlinePlayers(SystemMessage.getSystemMessage(SystemMessageId.THE_NPC_SERVER_IS_NOT_OPERATING_AT_THIS_TIME)); + // Unload all scripts. + QuestManager.getInstance().unloadAllScripts(); + // Unload all zones. + ZoneManager.getInstance().unload(); + // Delete all spawns. + for (L2Npc npc : DBSpawnManager.getInstance().getNpcs().values()) + { + if (npc != null) + { + DBSpawnManager.getInstance().deleteSpawn(npc.getSpawn(), true); + npc.deleteMe(); + } + } DBSpawnManager.getInstance().cleanUp(); for (L2Object obj : L2World.getInstance().getVisibleObjects()) { @@ -227,11 +242,26 @@ public class AdminSpawn implements IAdminCommandHandler } } } - AdminData.getInstance().broadcastMessageToGMs("NPC Unspawn completed!"); + // Reload. + ZoneManager.getInstance().reload(); + QuestManager.getInstance().reloadAllScripts(); + AdminData.getInstance().broadcastMessageToGMs("NPC unspawn completed!"); } else if (command.startsWith("admin_respawnall") || command.startsWith("admin_spawn_reload")) { - // make sure all spawns are deleted + // Unload all scripts. + QuestManager.getInstance().unloadAllScripts(); + // Unload all zones. + ZoneManager.getInstance().unload(); + // Delete all spawns. + for (L2Npc npc : DBSpawnManager.getInstance().getNpcs().values()) + { + if (npc != null) + { + DBSpawnManager.getInstance().deleteSpawn(npc.getSpawn(), true); + npc.deleteMe(); + } + } DBSpawnManager.getInstance().cleanUp(); for (L2Object obj : L2World.getInstance().getVisibleObjects()) { @@ -247,11 +277,12 @@ public class AdminSpawn implements IAdminCommandHandler } } } - // now respawn all - NpcData.getInstance().load(); + // Reload. + SpawnsData.getInstance().init(); DBSpawnManager.getInstance().load(); + ZoneManager.getInstance().reload(); QuestManager.getInstance().reloadAllScripts(); - AdminData.getInstance().broadcastMessageToGMs("NPC Respawn completed!"); + AdminData.getInstance().broadcastMessageToGMs("NPC respawn completed!"); } else if (command.startsWith("admin_spawnat")) { diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/com/l2jmobius/gameserver/instancemanager/QuestManager.java b/L2J_Mobius_Classic_2.0_Saviors/java/com/l2jmobius/gameserver/instancemanager/QuestManager.java index 856a578296..3e44215f09 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/com/l2jmobius/gameserver/instancemanager/QuestManager.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/com/l2jmobius/gameserver/instancemanager/QuestManager.java @@ -73,7 +73,27 @@ public final class QuestManager */ public void reloadAllScripts() { + unloadAllScripts(); + LOGGER.info("Reloading all server scripts."); + try + { + ScriptEngineManager.getInstance().executeScriptList(); + } + catch (Exception e) + { + LOGGER.log(Level.SEVERE, "Failed executing script list!", e); + } + + getInstance().report(); + } + + /** + * Unload all quests and scripts. + */ + public void unloadAllScripts() + { + LOGGER.info("Unloading all server scripts."); // Unload quests. for (Quest quest : _quests.values()) @@ -93,17 +113,6 @@ public final class QuestManager } } _scripts.clear(); - - try - { - ScriptEngineManager.getInstance().executeScriptList(); - } - catch (Exception e) - { - LOGGER.log(Level.SEVERE, "Failed executing script list!", e); - } - - getInstance().report(); } /** diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/com/l2jmobius/gameserver/instancemanager/ZoneManager.java b/L2J_Mobius_Classic_2.0_Saviors/java/com/l2jmobius/gameserver/instancemanager/ZoneManager.java index a7b515d858..9daae5a4bf 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/com/l2jmobius/gameserver/instancemanager/ZoneManager.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/com/l2jmobius/gameserver/instancemanager/ZoneManager.java @@ -93,6 +93,26 @@ public final class ZoneManager implements IGameXmlReader * Reload. */ public void reload() + { + // Unload zones. + unload(); + + // Load the zones. + load(); + + // Re-validate all characters in zones. + for (L2Object obj : L2World.getInstance().getVisibleObjects()) + { + if (obj.isCharacter()) + { + ((L2Character) obj).revalidateZone(true); + } + } + + SETTINGS.clear(); + } + + public void unload() { // Get the world regions int count = 0; @@ -119,20 +139,6 @@ public final class ZoneManager implements IGameXmlReader } } LOGGER.info(getClass().getSimpleName() + ": Removed zones in " + count + " regions."); - - // Load the zones - load(); - - // Re-validate all characters in zones - for (L2Object obj : L2World.getInstance().getVisibleObjects()) - { - if (obj.isCharacter()) - { - ((L2Character) obj).revalidateZone(true); - } - } - - SETTINGS.clear(); } @Override diff --git a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/admincommandhandlers/AdminSpawn.java b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/admincommandhandlers/AdminSpawn.java index 5c219e3877..7d5f27c846 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/admincommandhandlers/AdminSpawn.java +++ b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/admincommandhandlers/AdminSpawn.java @@ -26,11 +26,13 @@ import java.util.regex.Pattern; import com.l2jmobius.Config; import com.l2jmobius.gameserver.data.xml.impl.AdminData; import com.l2jmobius.gameserver.data.xml.impl.NpcData; +import com.l2jmobius.gameserver.data.xml.impl.SpawnsData; import com.l2jmobius.gameserver.datatables.SpawnTable; import com.l2jmobius.gameserver.handler.IAdminCommandHandler; import com.l2jmobius.gameserver.instancemanager.DBSpawnManager; import com.l2jmobius.gameserver.instancemanager.InstanceManager; import com.l2jmobius.gameserver.instancemanager.QuestManager; +import com.l2jmobius.gameserver.instancemanager.ZoneManager; import com.l2jmobius.gameserver.model.L2Object; import com.l2jmobius.gameserver.model.L2Spawn; import com.l2jmobius.gameserver.model.L2World; @@ -212,6 +214,19 @@ public class AdminSpawn implements IAdminCommandHandler else if (command.startsWith("admin_unspawnall")) { Broadcast.toAllOnlinePlayers(SystemMessage.getSystemMessage(SystemMessageId.THE_NPC_SERVER_IS_NOT_OPERATING_AT_THIS_TIME)); + // Unload all scripts. + QuestManager.getInstance().unloadAllScripts(); + // Unload all zones. + ZoneManager.getInstance().unload(); + // Delete all spawns. + for (L2Npc npc : DBSpawnManager.getInstance().getNpcs().values()) + { + if (npc != null) + { + DBSpawnManager.getInstance().deleteSpawn(npc.getSpawn(), true); + npc.deleteMe(); + } + } DBSpawnManager.getInstance().cleanUp(); for (L2Object obj : L2World.getInstance().getVisibleObjects()) { @@ -227,11 +242,26 @@ public class AdminSpawn implements IAdminCommandHandler } } } - AdminData.getInstance().broadcastMessageToGMs("NPC Unspawn completed!"); + // Reload. + ZoneManager.getInstance().reload(); + QuestManager.getInstance().reloadAllScripts(); + AdminData.getInstance().broadcastMessageToGMs("NPC unspawn completed!"); } else if (command.startsWith("admin_respawnall") || command.startsWith("admin_spawn_reload")) { - // make sure all spawns are deleted + // Unload all scripts. + QuestManager.getInstance().unloadAllScripts(); + // Unload all zones. + ZoneManager.getInstance().unload(); + // Delete all spawns. + for (L2Npc npc : DBSpawnManager.getInstance().getNpcs().values()) + { + if (npc != null) + { + DBSpawnManager.getInstance().deleteSpawn(npc.getSpawn(), true); + npc.deleteMe(); + } + } DBSpawnManager.getInstance().cleanUp(); for (L2Object obj : L2World.getInstance().getVisibleObjects()) { @@ -247,11 +277,12 @@ public class AdminSpawn implements IAdminCommandHandler } } } - // now respawn all - NpcData.getInstance().load(); + // Reload. + SpawnsData.getInstance().init(); DBSpawnManager.getInstance().load(); + ZoneManager.getInstance().reload(); QuestManager.getInstance().reloadAllScripts(); - AdminData.getInstance().broadcastMessageToGMs("NPC Respawn completed!"); + AdminData.getInstance().broadcastMessageToGMs("NPC respawn completed!"); } else if (command.startsWith("admin_spawnat")) { diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/com/l2jmobius/gameserver/instancemanager/QuestManager.java b/L2J_Mobius_Classic_2.1_Zaken/java/com/l2jmobius/gameserver/instancemanager/QuestManager.java index 856a578296..3e44215f09 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/com/l2jmobius/gameserver/instancemanager/QuestManager.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/com/l2jmobius/gameserver/instancemanager/QuestManager.java @@ -73,7 +73,27 @@ public final class QuestManager */ public void reloadAllScripts() { + unloadAllScripts(); + LOGGER.info("Reloading all server scripts."); + try + { + ScriptEngineManager.getInstance().executeScriptList(); + } + catch (Exception e) + { + LOGGER.log(Level.SEVERE, "Failed executing script list!", e); + } + + getInstance().report(); + } + + /** + * Unload all quests and scripts. + */ + public void unloadAllScripts() + { + LOGGER.info("Unloading all server scripts."); // Unload quests. for (Quest quest : _quests.values()) @@ -93,17 +113,6 @@ public final class QuestManager } } _scripts.clear(); - - try - { - ScriptEngineManager.getInstance().executeScriptList(); - } - catch (Exception e) - { - LOGGER.log(Level.SEVERE, "Failed executing script list!", e); - } - - getInstance().report(); } /** diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/com/l2jmobius/gameserver/instancemanager/ZoneManager.java b/L2J_Mobius_Classic_2.1_Zaken/java/com/l2jmobius/gameserver/instancemanager/ZoneManager.java index a7b515d858..9daae5a4bf 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/com/l2jmobius/gameserver/instancemanager/ZoneManager.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/com/l2jmobius/gameserver/instancemanager/ZoneManager.java @@ -93,6 +93,26 @@ public final class ZoneManager implements IGameXmlReader * Reload. */ public void reload() + { + // Unload zones. + unload(); + + // Load the zones. + load(); + + // Re-validate all characters in zones. + for (L2Object obj : L2World.getInstance().getVisibleObjects()) + { + if (obj.isCharacter()) + { + ((L2Character) obj).revalidateZone(true); + } + } + + SETTINGS.clear(); + } + + public void unload() { // Get the world regions int count = 0; @@ -119,20 +139,6 @@ public final class ZoneManager implements IGameXmlReader } } LOGGER.info(getClass().getSimpleName() + ": Removed zones in " + count + " regions."); - - // Load the zones - load(); - - // Re-validate all characters in zones - for (L2Object obj : L2World.getInstance().getVisibleObjects()) - { - if (obj.isCharacter()) - { - ((L2Character) obj).revalidateZone(true); - } - } - - SETTINGS.clear(); } @Override diff --git a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/admincommandhandlers/AdminSpawn.java b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/admincommandhandlers/AdminSpawn.java index 5c219e3877..7d5f27c846 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/admincommandhandlers/AdminSpawn.java +++ b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/admincommandhandlers/AdminSpawn.java @@ -26,11 +26,13 @@ import java.util.regex.Pattern; import com.l2jmobius.Config; import com.l2jmobius.gameserver.data.xml.impl.AdminData; import com.l2jmobius.gameserver.data.xml.impl.NpcData; +import com.l2jmobius.gameserver.data.xml.impl.SpawnsData; import com.l2jmobius.gameserver.datatables.SpawnTable; import com.l2jmobius.gameserver.handler.IAdminCommandHandler; import com.l2jmobius.gameserver.instancemanager.DBSpawnManager; import com.l2jmobius.gameserver.instancemanager.InstanceManager; import com.l2jmobius.gameserver.instancemanager.QuestManager; +import com.l2jmobius.gameserver.instancemanager.ZoneManager; import com.l2jmobius.gameserver.model.L2Object; import com.l2jmobius.gameserver.model.L2Spawn; import com.l2jmobius.gameserver.model.L2World; @@ -212,6 +214,19 @@ public class AdminSpawn implements IAdminCommandHandler else if (command.startsWith("admin_unspawnall")) { Broadcast.toAllOnlinePlayers(SystemMessage.getSystemMessage(SystemMessageId.THE_NPC_SERVER_IS_NOT_OPERATING_AT_THIS_TIME)); + // Unload all scripts. + QuestManager.getInstance().unloadAllScripts(); + // Unload all zones. + ZoneManager.getInstance().unload(); + // Delete all spawns. + for (L2Npc npc : DBSpawnManager.getInstance().getNpcs().values()) + { + if (npc != null) + { + DBSpawnManager.getInstance().deleteSpawn(npc.getSpawn(), true); + npc.deleteMe(); + } + } DBSpawnManager.getInstance().cleanUp(); for (L2Object obj : L2World.getInstance().getVisibleObjects()) { @@ -227,11 +242,26 @@ public class AdminSpawn implements IAdminCommandHandler } } } - AdminData.getInstance().broadcastMessageToGMs("NPC Unspawn completed!"); + // Reload. + ZoneManager.getInstance().reload(); + QuestManager.getInstance().reloadAllScripts(); + AdminData.getInstance().broadcastMessageToGMs("NPC unspawn completed!"); } else if (command.startsWith("admin_respawnall") || command.startsWith("admin_spawn_reload")) { - // make sure all spawns are deleted + // Unload all scripts. + QuestManager.getInstance().unloadAllScripts(); + // Unload all zones. + ZoneManager.getInstance().unload(); + // Delete all spawns. + for (L2Npc npc : DBSpawnManager.getInstance().getNpcs().values()) + { + if (npc != null) + { + DBSpawnManager.getInstance().deleteSpawn(npc.getSpawn(), true); + npc.deleteMe(); + } + } DBSpawnManager.getInstance().cleanUp(); for (L2Object obj : L2World.getInstance().getVisibleObjects()) { @@ -247,11 +277,12 @@ public class AdminSpawn implements IAdminCommandHandler } } } - // now respawn all - NpcData.getInstance().load(); + // Reload. + SpawnsData.getInstance().init(); DBSpawnManager.getInstance().load(); + ZoneManager.getInstance().reload(); QuestManager.getInstance().reloadAllScripts(); - AdminData.getInstance().broadcastMessageToGMs("NPC Respawn completed!"); + AdminData.getInstance().broadcastMessageToGMs("NPC respawn completed!"); } else if (command.startsWith("admin_spawnat")) { diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/com/l2jmobius/gameserver/instancemanager/QuestManager.java b/L2J_Mobius_Classic_2.2_Antharas/java/com/l2jmobius/gameserver/instancemanager/QuestManager.java index 856a578296..3e44215f09 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/com/l2jmobius/gameserver/instancemanager/QuestManager.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/com/l2jmobius/gameserver/instancemanager/QuestManager.java @@ -73,7 +73,27 @@ public final class QuestManager */ public void reloadAllScripts() { + unloadAllScripts(); + LOGGER.info("Reloading all server scripts."); + try + { + ScriptEngineManager.getInstance().executeScriptList(); + } + catch (Exception e) + { + LOGGER.log(Level.SEVERE, "Failed executing script list!", e); + } + + getInstance().report(); + } + + /** + * Unload all quests and scripts. + */ + public void unloadAllScripts() + { + LOGGER.info("Unloading all server scripts."); // Unload quests. for (Quest quest : _quests.values()) @@ -93,17 +113,6 @@ public final class QuestManager } } _scripts.clear(); - - try - { - ScriptEngineManager.getInstance().executeScriptList(); - } - catch (Exception e) - { - LOGGER.log(Level.SEVERE, "Failed executing script list!", e); - } - - getInstance().report(); } /** diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/com/l2jmobius/gameserver/instancemanager/ZoneManager.java b/L2J_Mobius_Classic_2.2_Antharas/java/com/l2jmobius/gameserver/instancemanager/ZoneManager.java index a7b515d858..9daae5a4bf 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/com/l2jmobius/gameserver/instancemanager/ZoneManager.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/com/l2jmobius/gameserver/instancemanager/ZoneManager.java @@ -93,6 +93,26 @@ public final class ZoneManager implements IGameXmlReader * Reload. */ public void reload() + { + // Unload zones. + unload(); + + // Load the zones. + load(); + + // Re-validate all characters in zones. + for (L2Object obj : L2World.getInstance().getVisibleObjects()) + { + if (obj.isCharacter()) + { + ((L2Character) obj).revalidateZone(true); + } + } + + SETTINGS.clear(); + } + + public void unload() { // Get the world regions int count = 0; @@ -119,20 +139,6 @@ public final class ZoneManager implements IGameXmlReader } } LOGGER.info(getClass().getSimpleName() + ": Removed zones in " + count + " regions."); - - // Load the zones - load(); - - // Re-validate all characters in zones - for (L2Object obj : L2World.getInstance().getVisibleObjects()) - { - if (obj.isCharacter()) - { - ((L2Character) obj).revalidateZone(true); - } - } - - SETTINGS.clear(); } @Override