diff --git a/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java b/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java index a9d085331b..8640fdfd39 100644 --- a/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java +++ b/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java @@ -18,8 +18,12 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.Config; import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.enums.TeleportWhereType; +import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; import org.l2jmobius.gameserver.network.Disconnection; import org.l2jmobius.gameserver.network.GameClient; @@ -61,7 +65,31 @@ public class Logout implements IClientIncomingPacket OlympiadManager.getInstance().unRegisterNoble(player); } + final Instance world = player.getInstanceWorld(); + if (world != null) + { + if (Config.RESTORE_PLAYER_INSTANCE) + { + player.getVariables().set("INSTANCE_RESTORE", world.getId()); + } + else + { + final Location location = world.getExitLocation(player); + if (location != null) + { + player.teleToLocation(location); + } + else + { + player.teleToLocation(TeleportWhereType.TOWN); + } + player.getSummonedNpcs().forEach(npc -> npc.teleToLocation(player, true)); + } + world.onInstanceChange(player, false); + } + LOGGER_ACCOUNTING.info("Logged out, " + client); + if (!OfflineTradeUtil.enteredOfflineMode(player)) { Disconnection.of(client, player).defaultSequence(false); diff --git a/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java b/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java index 2696e9eb27..868ecfba25 100644 --- a/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java +++ b/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java @@ -18,8 +18,12 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.Config; import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.enums.TeleportWhereType; +import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; import org.l2jmobius.gameserver.network.ConnectionState; import org.l2jmobius.gameserver.network.Disconnection; @@ -64,7 +68,31 @@ public class RequestRestart implements IClientIncomingPacket OlympiadManager.getInstance().unRegisterNoble(player); } + final Instance world = player.getInstanceWorld(); + if (world != null) + { + if (Config.RESTORE_PLAYER_INSTANCE) + { + player.getVariables().set("INSTANCE_RESTORE", world.getId()); + } + else + { + final Location location = world.getExitLocation(player); + if (location != null) + { + player.teleToLocation(location); + } + else + { + player.teleToLocation(TeleportWhereType.TOWN); + } + player.getSummonedNpcs().forEach(npc -> npc.teleToLocation(player, true)); + } + world.onInstanceChange(player, false); + } + LOGGER_ACCOUNTING.info("Logged out, " + client); + if (!OfflineTradeUtil.enteredOfflineMode(player)) { Disconnection.of(client, player).storeMe().deleteMe(); diff --git a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java index a9d085331b..8640fdfd39 100644 --- a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java +++ b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java @@ -18,8 +18,12 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.Config; import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.enums.TeleportWhereType; +import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; import org.l2jmobius.gameserver.network.Disconnection; import org.l2jmobius.gameserver.network.GameClient; @@ -61,7 +65,31 @@ public class Logout implements IClientIncomingPacket OlympiadManager.getInstance().unRegisterNoble(player); } + final Instance world = player.getInstanceWorld(); + if (world != null) + { + if (Config.RESTORE_PLAYER_INSTANCE) + { + player.getVariables().set("INSTANCE_RESTORE", world.getId()); + } + else + { + final Location location = world.getExitLocation(player); + if (location != null) + { + player.teleToLocation(location); + } + else + { + player.teleToLocation(TeleportWhereType.TOWN); + } + player.getSummonedNpcs().forEach(npc -> npc.teleToLocation(player, true)); + } + world.onInstanceChange(player, false); + } + LOGGER_ACCOUNTING.info("Logged out, " + client); + if (!OfflineTradeUtil.enteredOfflineMode(player)) { Disconnection.of(client, player).defaultSequence(false); diff --git a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java index 2696e9eb27..868ecfba25 100644 --- a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java +++ b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java @@ -18,8 +18,12 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.Config; import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.enums.TeleportWhereType; +import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; import org.l2jmobius.gameserver.network.ConnectionState; import org.l2jmobius.gameserver.network.Disconnection; @@ -64,7 +68,31 @@ public class RequestRestart implements IClientIncomingPacket OlympiadManager.getInstance().unRegisterNoble(player); } + final Instance world = player.getInstanceWorld(); + if (world != null) + { + if (Config.RESTORE_PLAYER_INSTANCE) + { + player.getVariables().set("INSTANCE_RESTORE", world.getId()); + } + else + { + final Location location = world.getExitLocation(player); + if (location != null) + { + player.teleToLocation(location); + } + else + { + player.teleToLocation(TeleportWhereType.TOWN); + } + player.getSummonedNpcs().forEach(npc -> npc.teleToLocation(player, true)); + } + world.onInstanceChange(player, false); + } + LOGGER_ACCOUNTING.info("Logged out, " + client); + if (!OfflineTradeUtil.enteredOfflineMode(player)) { Disconnection.of(client, player).storeMe().deleteMe(); diff --git a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java index a9d085331b..8640fdfd39 100644 --- a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java +++ b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java @@ -18,8 +18,12 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.Config; import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.enums.TeleportWhereType; +import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; import org.l2jmobius.gameserver.network.Disconnection; import org.l2jmobius.gameserver.network.GameClient; @@ -61,7 +65,31 @@ public class Logout implements IClientIncomingPacket OlympiadManager.getInstance().unRegisterNoble(player); } + final Instance world = player.getInstanceWorld(); + if (world != null) + { + if (Config.RESTORE_PLAYER_INSTANCE) + { + player.getVariables().set("INSTANCE_RESTORE", world.getId()); + } + else + { + final Location location = world.getExitLocation(player); + if (location != null) + { + player.teleToLocation(location); + } + else + { + player.teleToLocation(TeleportWhereType.TOWN); + } + player.getSummonedNpcs().forEach(npc -> npc.teleToLocation(player, true)); + } + world.onInstanceChange(player, false); + } + LOGGER_ACCOUNTING.info("Logged out, " + client); + if (!OfflineTradeUtil.enteredOfflineMode(player)) { Disconnection.of(client, player).defaultSequence(false); diff --git a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java index 2696e9eb27..868ecfba25 100644 --- a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java +++ b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java @@ -18,8 +18,12 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.Config; import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.enums.TeleportWhereType; +import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; import org.l2jmobius.gameserver.network.ConnectionState; import org.l2jmobius.gameserver.network.Disconnection; @@ -64,7 +68,31 @@ public class RequestRestart implements IClientIncomingPacket OlympiadManager.getInstance().unRegisterNoble(player); } + final Instance world = player.getInstanceWorld(); + if (world != null) + { + if (Config.RESTORE_PLAYER_INSTANCE) + { + player.getVariables().set("INSTANCE_RESTORE", world.getId()); + } + else + { + final Location location = world.getExitLocation(player); + if (location != null) + { + player.teleToLocation(location); + } + else + { + player.teleToLocation(TeleportWhereType.TOWN); + } + player.getSummonedNpcs().forEach(npc -> npc.teleToLocation(player, true)); + } + world.onInstanceChange(player, false); + } + LOGGER_ACCOUNTING.info("Logged out, " + client); + if (!OfflineTradeUtil.enteredOfflineMode(player)) { Disconnection.of(client, player).storeMe().deleteMe(); diff --git a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java index a9d085331b..8640fdfd39 100644 --- a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java +++ b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java @@ -18,8 +18,12 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.Config; import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.enums.TeleportWhereType; +import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; import org.l2jmobius.gameserver.network.Disconnection; import org.l2jmobius.gameserver.network.GameClient; @@ -61,7 +65,31 @@ public class Logout implements IClientIncomingPacket OlympiadManager.getInstance().unRegisterNoble(player); } + final Instance world = player.getInstanceWorld(); + if (world != null) + { + if (Config.RESTORE_PLAYER_INSTANCE) + { + player.getVariables().set("INSTANCE_RESTORE", world.getId()); + } + else + { + final Location location = world.getExitLocation(player); + if (location != null) + { + player.teleToLocation(location); + } + else + { + player.teleToLocation(TeleportWhereType.TOWN); + } + player.getSummonedNpcs().forEach(npc -> npc.teleToLocation(player, true)); + } + world.onInstanceChange(player, false); + } + LOGGER_ACCOUNTING.info("Logged out, " + client); + if (!OfflineTradeUtil.enteredOfflineMode(player)) { Disconnection.of(client, player).defaultSequence(false); diff --git a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java index 2696e9eb27..868ecfba25 100644 --- a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java +++ b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java @@ -18,8 +18,12 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.Config; import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.enums.TeleportWhereType; +import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; import org.l2jmobius.gameserver.network.ConnectionState; import org.l2jmobius.gameserver.network.Disconnection; @@ -64,7 +68,31 @@ public class RequestRestart implements IClientIncomingPacket OlympiadManager.getInstance().unRegisterNoble(player); } + final Instance world = player.getInstanceWorld(); + if (world != null) + { + if (Config.RESTORE_PLAYER_INSTANCE) + { + player.getVariables().set("INSTANCE_RESTORE", world.getId()); + } + else + { + final Location location = world.getExitLocation(player); + if (location != null) + { + player.teleToLocation(location); + } + else + { + player.teleToLocation(TeleportWhereType.TOWN); + } + player.getSummonedNpcs().forEach(npc -> npc.teleToLocation(player, true)); + } + world.onInstanceChange(player, false); + } + LOGGER_ACCOUNTING.info("Logged out, " + client); + if (!OfflineTradeUtil.enteredOfflineMode(player)) { Disconnection.of(client, player).storeMe().deleteMe(); diff --git a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java index a9d085331b..8640fdfd39 100644 --- a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java +++ b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java @@ -18,8 +18,12 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.Config; import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.enums.TeleportWhereType; +import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; import org.l2jmobius.gameserver.network.Disconnection; import org.l2jmobius.gameserver.network.GameClient; @@ -61,7 +65,31 @@ public class Logout implements IClientIncomingPacket OlympiadManager.getInstance().unRegisterNoble(player); } + final Instance world = player.getInstanceWorld(); + if (world != null) + { + if (Config.RESTORE_PLAYER_INSTANCE) + { + player.getVariables().set("INSTANCE_RESTORE", world.getId()); + } + else + { + final Location location = world.getExitLocation(player); + if (location != null) + { + player.teleToLocation(location); + } + else + { + player.teleToLocation(TeleportWhereType.TOWN); + } + player.getSummonedNpcs().forEach(npc -> npc.teleToLocation(player, true)); + } + world.onInstanceChange(player, false); + } + LOGGER_ACCOUNTING.info("Logged out, " + client); + if (!OfflineTradeUtil.enteredOfflineMode(player)) { Disconnection.of(client, player).defaultSequence(false); diff --git a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java index 2696e9eb27..868ecfba25 100644 --- a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java +++ b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java @@ -18,8 +18,12 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.Config; import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.enums.TeleportWhereType; +import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; import org.l2jmobius.gameserver.network.ConnectionState; import org.l2jmobius.gameserver.network.Disconnection; @@ -64,7 +68,31 @@ public class RequestRestart implements IClientIncomingPacket OlympiadManager.getInstance().unRegisterNoble(player); } + final Instance world = player.getInstanceWorld(); + if (world != null) + { + if (Config.RESTORE_PLAYER_INSTANCE) + { + player.getVariables().set("INSTANCE_RESTORE", world.getId()); + } + else + { + final Location location = world.getExitLocation(player); + if (location != null) + { + player.teleToLocation(location); + } + else + { + player.teleToLocation(TeleportWhereType.TOWN); + } + player.getSummonedNpcs().forEach(npc -> npc.teleToLocation(player, true)); + } + world.onInstanceChange(player, false); + } + LOGGER_ACCOUNTING.info("Logged out, " + client); + if (!OfflineTradeUtil.enteredOfflineMode(player)) { Disconnection.of(client, player).storeMe().deleteMe(); diff --git a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java index a9d085331b..8640fdfd39 100644 --- a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java +++ b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java @@ -18,8 +18,12 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.Config; import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.enums.TeleportWhereType; +import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; import org.l2jmobius.gameserver.network.Disconnection; import org.l2jmobius.gameserver.network.GameClient; @@ -61,7 +65,31 @@ public class Logout implements IClientIncomingPacket OlympiadManager.getInstance().unRegisterNoble(player); } + final Instance world = player.getInstanceWorld(); + if (world != null) + { + if (Config.RESTORE_PLAYER_INSTANCE) + { + player.getVariables().set("INSTANCE_RESTORE", world.getId()); + } + else + { + final Location location = world.getExitLocation(player); + if (location != null) + { + player.teleToLocation(location); + } + else + { + player.teleToLocation(TeleportWhereType.TOWN); + } + player.getSummonedNpcs().forEach(npc -> npc.teleToLocation(player, true)); + } + world.onInstanceChange(player, false); + } + LOGGER_ACCOUNTING.info("Logged out, " + client); + if (!OfflineTradeUtil.enteredOfflineMode(player)) { Disconnection.of(client, player).defaultSequence(false); diff --git a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java index 2696e9eb27..868ecfba25 100644 --- a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java +++ b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java @@ -18,8 +18,12 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.Config; import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.enums.TeleportWhereType; +import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; import org.l2jmobius.gameserver.network.ConnectionState; import org.l2jmobius.gameserver.network.Disconnection; @@ -64,7 +68,31 @@ public class RequestRestart implements IClientIncomingPacket OlympiadManager.getInstance().unRegisterNoble(player); } + final Instance world = player.getInstanceWorld(); + if (world != null) + { + if (Config.RESTORE_PLAYER_INSTANCE) + { + player.getVariables().set("INSTANCE_RESTORE", world.getId()); + } + else + { + final Location location = world.getExitLocation(player); + if (location != null) + { + player.teleToLocation(location); + } + else + { + player.teleToLocation(TeleportWhereType.TOWN); + } + player.getSummonedNpcs().forEach(npc -> npc.teleToLocation(player, true)); + } + world.onInstanceChange(player, false); + } + LOGGER_ACCOUNTING.info("Logged out, " + client); + if (!OfflineTradeUtil.enteredOfflineMode(player)) { Disconnection.of(client, player).storeMe().deleteMe(); diff --git a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java index a9d085331b..8640fdfd39 100644 --- a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java +++ b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java @@ -18,8 +18,12 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.Config; import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.enums.TeleportWhereType; +import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; import org.l2jmobius.gameserver.network.Disconnection; import org.l2jmobius.gameserver.network.GameClient; @@ -61,7 +65,31 @@ public class Logout implements IClientIncomingPacket OlympiadManager.getInstance().unRegisterNoble(player); } + final Instance world = player.getInstanceWorld(); + if (world != null) + { + if (Config.RESTORE_PLAYER_INSTANCE) + { + player.getVariables().set("INSTANCE_RESTORE", world.getId()); + } + else + { + final Location location = world.getExitLocation(player); + if (location != null) + { + player.teleToLocation(location); + } + else + { + player.teleToLocation(TeleportWhereType.TOWN); + } + player.getSummonedNpcs().forEach(npc -> npc.teleToLocation(player, true)); + } + world.onInstanceChange(player, false); + } + LOGGER_ACCOUNTING.info("Logged out, " + client); + if (!OfflineTradeUtil.enteredOfflineMode(player)) { Disconnection.of(client, player).defaultSequence(false); diff --git a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java index 2696e9eb27..868ecfba25 100644 --- a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java +++ b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java @@ -18,8 +18,12 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.Config; import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.enums.TeleportWhereType; +import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; import org.l2jmobius.gameserver.network.ConnectionState; import org.l2jmobius.gameserver.network.Disconnection; @@ -64,7 +68,31 @@ public class RequestRestart implements IClientIncomingPacket OlympiadManager.getInstance().unRegisterNoble(player); } + final Instance world = player.getInstanceWorld(); + if (world != null) + { + if (Config.RESTORE_PLAYER_INSTANCE) + { + player.getVariables().set("INSTANCE_RESTORE", world.getId()); + } + else + { + final Location location = world.getExitLocation(player); + if (location != null) + { + player.teleToLocation(location); + } + else + { + player.teleToLocation(TeleportWhereType.TOWN); + } + player.getSummonedNpcs().forEach(npc -> npc.teleToLocation(player, true)); + } + world.onInstanceChange(player, false); + } + LOGGER_ACCOUNTING.info("Logged out, " + client); + if (!OfflineTradeUtil.enteredOfflineMode(player)) { Disconnection.of(client, player).storeMe().deleteMe(); diff --git a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java index a9d085331b..8640fdfd39 100644 --- a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java +++ b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java @@ -18,8 +18,12 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.Config; import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.enums.TeleportWhereType; +import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; import org.l2jmobius.gameserver.network.Disconnection; import org.l2jmobius.gameserver.network.GameClient; @@ -61,7 +65,31 @@ public class Logout implements IClientIncomingPacket OlympiadManager.getInstance().unRegisterNoble(player); } + final Instance world = player.getInstanceWorld(); + if (world != null) + { + if (Config.RESTORE_PLAYER_INSTANCE) + { + player.getVariables().set("INSTANCE_RESTORE", world.getId()); + } + else + { + final Location location = world.getExitLocation(player); + if (location != null) + { + player.teleToLocation(location); + } + else + { + player.teleToLocation(TeleportWhereType.TOWN); + } + player.getSummonedNpcs().forEach(npc -> npc.teleToLocation(player, true)); + } + world.onInstanceChange(player, false); + } + LOGGER_ACCOUNTING.info("Logged out, " + client); + if (!OfflineTradeUtil.enteredOfflineMode(player)) { Disconnection.of(client, player).defaultSequence(false); diff --git a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java index 2696e9eb27..868ecfba25 100644 --- a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java +++ b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java @@ -18,8 +18,12 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.Config; import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.enums.TeleportWhereType; +import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; import org.l2jmobius.gameserver.network.ConnectionState; import org.l2jmobius.gameserver.network.Disconnection; @@ -64,7 +68,31 @@ public class RequestRestart implements IClientIncomingPacket OlympiadManager.getInstance().unRegisterNoble(player); } + final Instance world = player.getInstanceWorld(); + if (world != null) + { + if (Config.RESTORE_PLAYER_INSTANCE) + { + player.getVariables().set("INSTANCE_RESTORE", world.getId()); + } + else + { + final Location location = world.getExitLocation(player); + if (location != null) + { + player.teleToLocation(location); + } + else + { + player.teleToLocation(TeleportWhereType.TOWN); + } + player.getSummonedNpcs().forEach(npc -> npc.teleToLocation(player, true)); + } + world.onInstanceChange(player, false); + } + LOGGER_ACCOUNTING.info("Logged out, " + client); + if (!OfflineTradeUtil.enteredOfflineMode(player)) { Disconnection.of(client, player).storeMe().deleteMe(); diff --git a/L2J_Mobius_8.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java b/L2J_Mobius_8.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java index a9d085331b..8640fdfd39 100644 --- a/L2J_Mobius_8.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java +++ b/L2J_Mobius_8.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java @@ -18,8 +18,12 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.Config; import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.enums.TeleportWhereType; +import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; import org.l2jmobius.gameserver.network.Disconnection; import org.l2jmobius.gameserver.network.GameClient; @@ -61,7 +65,31 @@ public class Logout implements IClientIncomingPacket OlympiadManager.getInstance().unRegisterNoble(player); } + final Instance world = player.getInstanceWorld(); + if (world != null) + { + if (Config.RESTORE_PLAYER_INSTANCE) + { + player.getVariables().set("INSTANCE_RESTORE", world.getId()); + } + else + { + final Location location = world.getExitLocation(player); + if (location != null) + { + player.teleToLocation(location); + } + else + { + player.teleToLocation(TeleportWhereType.TOWN); + } + player.getSummonedNpcs().forEach(npc -> npc.teleToLocation(player, true)); + } + world.onInstanceChange(player, false); + } + LOGGER_ACCOUNTING.info("Logged out, " + client); + if (!OfflineTradeUtil.enteredOfflineMode(player)) { Disconnection.of(client, player).defaultSequence(false); diff --git a/L2J_Mobius_8.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java b/L2J_Mobius_8.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java index 2696e9eb27..868ecfba25 100644 --- a/L2J_Mobius_8.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java +++ b/L2J_Mobius_8.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java @@ -18,8 +18,12 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.Config; import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.enums.TeleportWhereType; +import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; import org.l2jmobius.gameserver.network.ConnectionState; import org.l2jmobius.gameserver.network.Disconnection; @@ -64,7 +68,31 @@ public class RequestRestart implements IClientIncomingPacket OlympiadManager.getInstance().unRegisterNoble(player); } + final Instance world = player.getInstanceWorld(); + if (world != null) + { + if (Config.RESTORE_PLAYER_INSTANCE) + { + player.getVariables().set("INSTANCE_RESTORE", world.getId()); + } + else + { + final Location location = world.getExitLocation(player); + if (location != null) + { + player.teleToLocation(location); + } + else + { + player.teleToLocation(TeleportWhereType.TOWN); + } + player.getSummonedNpcs().forEach(npc -> npc.teleToLocation(player, true)); + } + world.onInstanceChange(player, false); + } + LOGGER_ACCOUNTING.info("Logged out, " + client); + if (!OfflineTradeUtil.enteredOfflineMode(player)) { Disconnection.of(client, player).storeMe().deleteMe(); diff --git a/L2J_Mobius_9.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java b/L2J_Mobius_9.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java index a9d085331b..8640fdfd39 100644 --- a/L2J_Mobius_9.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java +++ b/L2J_Mobius_9.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java @@ -18,8 +18,12 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.Config; import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.enums.TeleportWhereType; +import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; import org.l2jmobius.gameserver.network.Disconnection; import org.l2jmobius.gameserver.network.GameClient; @@ -61,7 +65,31 @@ public class Logout implements IClientIncomingPacket OlympiadManager.getInstance().unRegisterNoble(player); } + final Instance world = player.getInstanceWorld(); + if (world != null) + { + if (Config.RESTORE_PLAYER_INSTANCE) + { + player.getVariables().set("INSTANCE_RESTORE", world.getId()); + } + else + { + final Location location = world.getExitLocation(player); + if (location != null) + { + player.teleToLocation(location); + } + else + { + player.teleToLocation(TeleportWhereType.TOWN); + } + player.getSummonedNpcs().forEach(npc -> npc.teleToLocation(player, true)); + } + world.onInstanceChange(player, false); + } + LOGGER_ACCOUNTING.info("Logged out, " + client); + if (!OfflineTradeUtil.enteredOfflineMode(player)) { Disconnection.of(client, player).defaultSequence(false); diff --git a/L2J_Mobius_9.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java b/L2J_Mobius_9.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java index 2696e9eb27..868ecfba25 100644 --- a/L2J_Mobius_9.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java +++ b/L2J_Mobius_9.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java @@ -18,8 +18,12 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.Config; import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.enums.TeleportWhereType; +import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; import org.l2jmobius.gameserver.network.ConnectionState; import org.l2jmobius.gameserver.network.Disconnection; @@ -64,7 +68,31 @@ public class RequestRestart implements IClientIncomingPacket OlympiadManager.getInstance().unRegisterNoble(player); } + final Instance world = player.getInstanceWorld(); + if (world != null) + { + if (Config.RESTORE_PLAYER_INSTANCE) + { + player.getVariables().set("INSTANCE_RESTORE", world.getId()); + } + else + { + final Location location = world.getExitLocation(player); + if (location != null) + { + player.teleToLocation(location); + } + else + { + player.teleToLocation(TeleportWhereType.TOWN); + } + player.getSummonedNpcs().forEach(npc -> npc.teleToLocation(player, true)); + } + world.onInstanceChange(player, false); + } + LOGGER_ACCOUNTING.info("Logged out, " + client); + if (!OfflineTradeUtil.enteredOfflineMode(player)) { Disconnection.of(client, player).storeMe().deleteMe(); diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java index 2cc621db7c..f46ca24eee 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java @@ -18,8 +18,13 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.Config; import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.enums.TeleportWhereType; +import org.l2jmobius.gameserver.instancemanager.InstanceManager; +import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.olympiad.Olympiad; import org.l2jmobius.gameserver.network.Disconnection; import org.l2jmobius.gameserver.network.GameClient; @@ -64,7 +69,35 @@ public class Logout implements IClientIncomingPacket Olympiad.getInstance().unRegisterNoble(player); } + if (!Config.RESTORE_PLAYER_INSTANCE) + { + final int instanceId = player.getInstanceId(); + if (instanceId > 0) + { + final Instance world = InstanceManager.getInstance().getInstance(instanceId); + if (world != null) + { + player.setInstanceId(0); + final Location location = world.getExitLoc(); + if (location != null) + { + player.teleToLocation(location, true); + } + else + { + player.teleToLocation(TeleportWhereType.TOWN); + } + if (player.hasSummon()) + { + player.getSummon().teleToLocation(player, true); + } + world.removePlayer(player.getObjectId()); + } + } + } + LOGGER_ACCOUNTING.info("Logged out, " + client); + if (!OfflineTradeUtil.enteredOfflineMode(player)) { Disconnection.of(client, player).defaultSequence(false); diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java index 2d783371d1..b4b17cb23a 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java @@ -21,8 +21,12 @@ import java.util.logging.Logger; import org.l2jmobius.Config; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.enums.PrivateStoreType; +import org.l2jmobius.gameserver.enums.TeleportWhereType; +import org.l2jmobius.gameserver.instancemanager.InstanceManager; +import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.Party; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.olympiad.Olympiad; import org.l2jmobius.gameserver.model.sevensigns.SevenSignsFestival; import org.l2jmobius.gameserver.network.ConnectionState; @@ -129,7 +133,35 @@ public class RequestRestart implements IClientIncomingPacket Olympiad.getInstance().unRegisterNoble(player); } + if (!Config.RESTORE_PLAYER_INSTANCE) + { + final int instanceId = player.getInstanceId(); + if (instanceId > 0) + { + final Instance world = InstanceManager.getInstance().getInstance(instanceId); + if (world != null) + { + player.setInstanceId(0); + final Location location = world.getExitLoc(); + if (location != null) + { + player.teleToLocation(location, true); + } + else + { + player.teleToLocation(TeleportWhereType.TOWN); + } + if (player.hasSummon()) + { + player.getSummon().teleToLocation(player, true); + } + world.removePlayer(player.getObjectId()); + } + } + } + LOGGER_ACCOUNTING.info("Logged out, " + client); + if (!OfflineTradeUtil.enteredOfflineMode(player)) { Disconnection.of(client, player).storeMe().deleteMe(); diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java index d0a30ef47b..dee7b12152 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java @@ -18,8 +18,13 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.Config; import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.enums.TeleportWhereType; +import org.l2jmobius.gameserver.instancemanager.InstanceManager; +import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; import org.l2jmobius.gameserver.network.Disconnection; import org.l2jmobius.gameserver.network.GameClient; @@ -64,7 +69,35 @@ public class Logout implements IClientIncomingPacket OlympiadManager.getInstance().unRegisterNoble(player); } + if (!Config.RESTORE_PLAYER_INSTANCE) + { + final int instanceId = player.getInstanceId(); + if (instanceId > 0) + { + final Instance world = InstanceManager.getInstance().getInstance(instanceId); + if (world != null) + { + player.setInstanceId(0); + final Location location = world.getExitLoc(); + if (location != null) + { + player.teleToLocation(location, true); + } + else + { + player.teleToLocation(TeleportWhereType.TOWN); + } + if (player.hasSummon()) + { + player.getSummon().teleToLocation(player, true); + } + world.removePlayer(player.getObjectId()); + } + } + } + LOGGER_ACCOUNTING.info("Logged out, " + client); + if (!OfflineTradeUtil.enteredOfflineMode(player)) { Disconnection.of(client, player).defaultSequence(false); diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java index a3adf69405..861de4fbdc 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java @@ -21,8 +21,12 @@ import java.util.logging.Logger; import org.l2jmobius.Config; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.enums.PrivateStoreType; +import org.l2jmobius.gameserver.enums.TeleportWhereType; +import org.l2jmobius.gameserver.instancemanager.InstanceManager; +import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.Party; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; import org.l2jmobius.gameserver.model.sevensigns.SevenSignsFestival; import org.l2jmobius.gameserver.network.ConnectionState; @@ -129,7 +133,35 @@ public class RequestRestart implements IClientIncomingPacket OlympiadManager.getInstance().unRegisterNoble(player); } + if (!Config.RESTORE_PLAYER_INSTANCE) + { + final int instanceId = player.getInstanceId(); + if (instanceId > 0) + { + final Instance world = InstanceManager.getInstance().getInstance(instanceId); + if (world != null) + { + player.setInstanceId(0); + final Location location = world.getExitLoc(); + if (location != null) + { + player.teleToLocation(location, true); + } + else + { + player.teleToLocation(TeleportWhereType.TOWN); + } + if (player.hasSummon()) + { + player.getSummon().teleToLocation(player, true); + } + world.removePlayer(player.getObjectId()); + } + } + } + LOGGER_ACCOUNTING.info("Logged out, " + client); + if (!OfflineTradeUtil.enteredOfflineMode(player)) { Disconnection.of(client, player).storeMe().deleteMe(); diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java index a9d085331b..8640fdfd39 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java @@ -18,8 +18,12 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.Config; import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.enums.TeleportWhereType; +import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; import org.l2jmobius.gameserver.network.Disconnection; import org.l2jmobius.gameserver.network.GameClient; @@ -61,7 +65,31 @@ public class Logout implements IClientIncomingPacket OlympiadManager.getInstance().unRegisterNoble(player); } + final Instance world = player.getInstanceWorld(); + if (world != null) + { + if (Config.RESTORE_PLAYER_INSTANCE) + { + player.getVariables().set("INSTANCE_RESTORE", world.getId()); + } + else + { + final Location location = world.getExitLocation(player); + if (location != null) + { + player.teleToLocation(location); + } + else + { + player.teleToLocation(TeleportWhereType.TOWN); + } + player.getSummonedNpcs().forEach(npc -> npc.teleToLocation(player, true)); + } + world.onInstanceChange(player, false); + } + LOGGER_ACCOUNTING.info("Logged out, " + client); + if (!OfflineTradeUtil.enteredOfflineMode(player)) { Disconnection.of(client, player).defaultSequence(false); diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java index 2696e9eb27..868ecfba25 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java @@ -18,8 +18,12 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.Config; import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.enums.TeleportWhereType; +import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; import org.l2jmobius.gameserver.network.ConnectionState; import org.l2jmobius.gameserver.network.Disconnection; @@ -64,7 +68,31 @@ public class RequestRestart implements IClientIncomingPacket OlympiadManager.getInstance().unRegisterNoble(player); } + final Instance world = player.getInstanceWorld(); + if (world != null) + { + if (Config.RESTORE_PLAYER_INSTANCE) + { + player.getVariables().set("INSTANCE_RESTORE", world.getId()); + } + else + { + final Location location = world.getExitLocation(player); + if (location != null) + { + player.teleToLocation(location); + } + else + { + player.teleToLocation(TeleportWhereType.TOWN); + } + player.getSummonedNpcs().forEach(npc -> npc.teleToLocation(player, true)); + } + world.onInstanceChange(player, false); + } + LOGGER_ACCOUNTING.info("Logged out, " + client); + if (!OfflineTradeUtil.enteredOfflineMode(player)) { Disconnection.of(client, player).storeMe().deleteMe(); diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java index a9d085331b..8640fdfd39 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java @@ -18,8 +18,12 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.Config; import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.enums.TeleportWhereType; +import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; import org.l2jmobius.gameserver.network.Disconnection; import org.l2jmobius.gameserver.network.GameClient; @@ -61,7 +65,31 @@ public class Logout implements IClientIncomingPacket OlympiadManager.getInstance().unRegisterNoble(player); } + final Instance world = player.getInstanceWorld(); + if (world != null) + { + if (Config.RESTORE_PLAYER_INSTANCE) + { + player.getVariables().set("INSTANCE_RESTORE", world.getId()); + } + else + { + final Location location = world.getExitLocation(player); + if (location != null) + { + player.teleToLocation(location); + } + else + { + player.teleToLocation(TeleportWhereType.TOWN); + } + player.getSummonedNpcs().forEach(npc -> npc.teleToLocation(player, true)); + } + world.onInstanceChange(player, false); + } + LOGGER_ACCOUNTING.info("Logged out, " + client); + if (!OfflineTradeUtil.enteredOfflineMode(player)) { Disconnection.of(client, player).defaultSequence(false); diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java index 2696e9eb27..868ecfba25 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java @@ -18,8 +18,12 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.Config; import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.enums.TeleportWhereType; +import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; import org.l2jmobius.gameserver.network.ConnectionState; import org.l2jmobius.gameserver.network.Disconnection; @@ -64,7 +68,31 @@ public class RequestRestart implements IClientIncomingPacket OlympiadManager.getInstance().unRegisterNoble(player); } + final Instance world = player.getInstanceWorld(); + if (world != null) + { + if (Config.RESTORE_PLAYER_INSTANCE) + { + player.getVariables().set("INSTANCE_RESTORE", world.getId()); + } + else + { + final Location location = world.getExitLocation(player); + if (location != null) + { + player.teleToLocation(location); + } + else + { + player.teleToLocation(TeleportWhereType.TOWN); + } + player.getSummonedNpcs().forEach(npc -> npc.teleToLocation(player, true)); + } + world.onInstanceChange(player, false); + } + LOGGER_ACCOUNTING.info("Logged out, " + client); + if (!OfflineTradeUtil.enteredOfflineMode(player)) { Disconnection.of(client, player).storeMe().deleteMe(); diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java index a9d085331b..8640fdfd39 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java @@ -18,8 +18,12 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.Config; import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.enums.TeleportWhereType; +import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; import org.l2jmobius.gameserver.network.Disconnection; import org.l2jmobius.gameserver.network.GameClient; @@ -61,7 +65,31 @@ public class Logout implements IClientIncomingPacket OlympiadManager.getInstance().unRegisterNoble(player); } + final Instance world = player.getInstanceWorld(); + if (world != null) + { + if (Config.RESTORE_PLAYER_INSTANCE) + { + player.getVariables().set("INSTANCE_RESTORE", world.getId()); + } + else + { + final Location location = world.getExitLocation(player); + if (location != null) + { + player.teleToLocation(location); + } + else + { + player.teleToLocation(TeleportWhereType.TOWN); + } + player.getSummonedNpcs().forEach(npc -> npc.teleToLocation(player, true)); + } + world.onInstanceChange(player, false); + } + LOGGER_ACCOUNTING.info("Logged out, " + client); + if (!OfflineTradeUtil.enteredOfflineMode(player)) { Disconnection.of(client, player).defaultSequence(false); diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java index 2696e9eb27..868ecfba25 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java @@ -18,8 +18,12 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.Config; import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.enums.TeleportWhereType; +import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; import org.l2jmobius.gameserver.network.ConnectionState; import org.l2jmobius.gameserver.network.Disconnection; @@ -64,7 +68,31 @@ public class RequestRestart implements IClientIncomingPacket OlympiadManager.getInstance().unRegisterNoble(player); } + final Instance world = player.getInstanceWorld(); + if (world != null) + { + if (Config.RESTORE_PLAYER_INSTANCE) + { + player.getVariables().set("INSTANCE_RESTORE", world.getId()); + } + else + { + final Location location = world.getExitLocation(player); + if (location != null) + { + player.teleToLocation(location); + } + else + { + player.teleToLocation(TeleportWhereType.TOWN); + } + player.getSummonedNpcs().forEach(npc -> npc.teleToLocation(player, true)); + } + world.onInstanceChange(player, false); + } + LOGGER_ACCOUNTING.info("Logged out, " + client); + if (!OfflineTradeUtil.enteredOfflineMode(player)) { Disconnection.of(client, player).storeMe().deleteMe(); diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java index a9d085331b..8640fdfd39 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java @@ -18,8 +18,12 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.Config; import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.enums.TeleportWhereType; +import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; import org.l2jmobius.gameserver.network.Disconnection; import org.l2jmobius.gameserver.network.GameClient; @@ -61,7 +65,31 @@ public class Logout implements IClientIncomingPacket OlympiadManager.getInstance().unRegisterNoble(player); } + final Instance world = player.getInstanceWorld(); + if (world != null) + { + if (Config.RESTORE_PLAYER_INSTANCE) + { + player.getVariables().set("INSTANCE_RESTORE", world.getId()); + } + else + { + final Location location = world.getExitLocation(player); + if (location != null) + { + player.teleToLocation(location); + } + else + { + player.teleToLocation(TeleportWhereType.TOWN); + } + player.getSummonedNpcs().forEach(npc -> npc.teleToLocation(player, true)); + } + world.onInstanceChange(player, false); + } + LOGGER_ACCOUNTING.info("Logged out, " + client); + if (!OfflineTradeUtil.enteredOfflineMode(player)) { Disconnection.of(client, player).defaultSequence(false); diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java index 2696e9eb27..868ecfba25 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java @@ -18,8 +18,12 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.Config; import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.enums.TeleportWhereType; +import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; import org.l2jmobius.gameserver.network.ConnectionState; import org.l2jmobius.gameserver.network.Disconnection; @@ -64,7 +68,31 @@ public class RequestRestart implements IClientIncomingPacket OlympiadManager.getInstance().unRegisterNoble(player); } + final Instance world = player.getInstanceWorld(); + if (world != null) + { + if (Config.RESTORE_PLAYER_INSTANCE) + { + player.getVariables().set("INSTANCE_RESTORE", world.getId()); + } + else + { + final Location location = world.getExitLocation(player); + if (location != null) + { + player.teleToLocation(location); + } + else + { + player.teleToLocation(TeleportWhereType.TOWN); + } + player.getSummonedNpcs().forEach(npc -> npc.teleToLocation(player, true)); + } + world.onInstanceChange(player, false); + } + LOGGER_ACCOUNTING.info("Logged out, " + client); + if (!OfflineTradeUtil.enteredOfflineMode(player)) { Disconnection.of(client, player).storeMe().deleteMe(); diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java index a9d085331b..8640fdfd39 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java @@ -18,8 +18,12 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.Config; import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.enums.TeleportWhereType; +import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; import org.l2jmobius.gameserver.network.Disconnection; import org.l2jmobius.gameserver.network.GameClient; @@ -61,7 +65,31 @@ public class Logout implements IClientIncomingPacket OlympiadManager.getInstance().unRegisterNoble(player); } + final Instance world = player.getInstanceWorld(); + if (world != null) + { + if (Config.RESTORE_PLAYER_INSTANCE) + { + player.getVariables().set("INSTANCE_RESTORE", world.getId()); + } + else + { + final Location location = world.getExitLocation(player); + if (location != null) + { + player.teleToLocation(location); + } + else + { + player.teleToLocation(TeleportWhereType.TOWN); + } + player.getSummonedNpcs().forEach(npc -> npc.teleToLocation(player, true)); + } + world.onInstanceChange(player, false); + } + LOGGER_ACCOUNTING.info("Logged out, " + client); + if (!OfflineTradeUtil.enteredOfflineMode(player)) { Disconnection.of(client, player).defaultSequence(false); diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java index 2696e9eb27..868ecfba25 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java @@ -18,8 +18,12 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.Config; import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.enums.TeleportWhereType; +import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; import org.l2jmobius.gameserver.network.ConnectionState; import org.l2jmobius.gameserver.network.Disconnection; @@ -64,7 +68,31 @@ public class RequestRestart implements IClientIncomingPacket OlympiadManager.getInstance().unRegisterNoble(player); } + final Instance world = player.getInstanceWorld(); + if (world != null) + { + if (Config.RESTORE_PLAYER_INSTANCE) + { + player.getVariables().set("INSTANCE_RESTORE", world.getId()); + } + else + { + final Location location = world.getExitLocation(player); + if (location != null) + { + player.teleToLocation(location); + } + else + { + player.teleToLocation(TeleportWhereType.TOWN); + } + player.getSummonedNpcs().forEach(npc -> npc.teleToLocation(player, true)); + } + world.onInstanceChange(player, false); + } + LOGGER_ACCOUNTING.info("Logged out, " + client); + if (!OfflineTradeUtil.enteredOfflineMode(player)) { Disconnection.of(client, player).storeMe().deleteMe(); diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java index a9d085331b..8640fdfd39 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java @@ -18,8 +18,12 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.Config; import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.enums.TeleportWhereType; +import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; import org.l2jmobius.gameserver.network.Disconnection; import org.l2jmobius.gameserver.network.GameClient; @@ -61,7 +65,31 @@ public class Logout implements IClientIncomingPacket OlympiadManager.getInstance().unRegisterNoble(player); } + final Instance world = player.getInstanceWorld(); + if (world != null) + { + if (Config.RESTORE_PLAYER_INSTANCE) + { + player.getVariables().set("INSTANCE_RESTORE", world.getId()); + } + else + { + final Location location = world.getExitLocation(player); + if (location != null) + { + player.teleToLocation(location); + } + else + { + player.teleToLocation(TeleportWhereType.TOWN); + } + player.getSummonedNpcs().forEach(npc -> npc.teleToLocation(player, true)); + } + world.onInstanceChange(player, false); + } + LOGGER_ACCOUNTING.info("Logged out, " + client); + if (!OfflineTradeUtil.enteredOfflineMode(player)) { Disconnection.of(client, player).defaultSequence(false); diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java index 2696e9eb27..868ecfba25 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java @@ -18,8 +18,12 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.Config; import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.enums.TeleportWhereType; +import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; import org.l2jmobius.gameserver.network.ConnectionState; import org.l2jmobius.gameserver.network.Disconnection; @@ -64,7 +68,31 @@ public class RequestRestart implements IClientIncomingPacket OlympiadManager.getInstance().unRegisterNoble(player); } + final Instance world = player.getInstanceWorld(); + if (world != null) + { + if (Config.RESTORE_PLAYER_INSTANCE) + { + player.getVariables().set("INSTANCE_RESTORE", world.getId()); + } + else + { + final Location location = world.getExitLocation(player); + if (location != null) + { + player.teleToLocation(location); + } + else + { + player.teleToLocation(TeleportWhereType.TOWN); + } + player.getSummonedNpcs().forEach(npc -> npc.teleToLocation(player, true)); + } + world.onInstanceChange(player, false); + } + LOGGER_ACCOUNTING.info("Logged out, " + client); + if (!OfflineTradeUtil.enteredOfflineMode(player)) { Disconnection.of(client, player).storeMe().deleteMe(); diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java index a9d085331b..8640fdfd39 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java @@ -18,8 +18,12 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.Config; import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.enums.TeleportWhereType; +import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; import org.l2jmobius.gameserver.network.Disconnection; import org.l2jmobius.gameserver.network.GameClient; @@ -61,7 +65,31 @@ public class Logout implements IClientIncomingPacket OlympiadManager.getInstance().unRegisterNoble(player); } + final Instance world = player.getInstanceWorld(); + if (world != null) + { + if (Config.RESTORE_PLAYER_INSTANCE) + { + player.getVariables().set("INSTANCE_RESTORE", world.getId()); + } + else + { + final Location location = world.getExitLocation(player); + if (location != null) + { + player.teleToLocation(location); + } + else + { + player.teleToLocation(TeleportWhereType.TOWN); + } + player.getSummonedNpcs().forEach(npc -> npc.teleToLocation(player, true)); + } + world.onInstanceChange(player, false); + } + LOGGER_ACCOUNTING.info("Logged out, " + client); + if (!OfflineTradeUtil.enteredOfflineMode(player)) { Disconnection.of(client, player).defaultSequence(false); diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java index 2696e9eb27..868ecfba25 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java @@ -18,8 +18,12 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.Config; import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.enums.TeleportWhereType; +import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; import org.l2jmobius.gameserver.network.ConnectionState; import org.l2jmobius.gameserver.network.Disconnection; @@ -64,7 +68,31 @@ public class RequestRestart implements IClientIncomingPacket OlympiadManager.getInstance().unRegisterNoble(player); } + final Instance world = player.getInstanceWorld(); + if (world != null) + { + if (Config.RESTORE_PLAYER_INSTANCE) + { + player.getVariables().set("INSTANCE_RESTORE", world.getId()); + } + else + { + final Location location = world.getExitLocation(player); + if (location != null) + { + player.teleToLocation(location); + } + else + { + player.teleToLocation(TeleportWhereType.TOWN); + } + player.getSummonedNpcs().forEach(npc -> npc.teleToLocation(player, true)); + } + world.onInstanceChange(player, false); + } + LOGGER_ACCOUNTING.info("Logged out, " + client); + if (!OfflineTradeUtil.enteredOfflineMode(player)) { Disconnection.of(client, player).storeMe().deleteMe(); diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java index a9d085331b..8640fdfd39 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java @@ -18,8 +18,12 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.Config; import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.enums.TeleportWhereType; +import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; import org.l2jmobius.gameserver.network.Disconnection; import org.l2jmobius.gameserver.network.GameClient; @@ -61,7 +65,31 @@ public class Logout implements IClientIncomingPacket OlympiadManager.getInstance().unRegisterNoble(player); } + final Instance world = player.getInstanceWorld(); + if (world != null) + { + if (Config.RESTORE_PLAYER_INSTANCE) + { + player.getVariables().set("INSTANCE_RESTORE", world.getId()); + } + else + { + final Location location = world.getExitLocation(player); + if (location != null) + { + player.teleToLocation(location); + } + else + { + player.teleToLocation(TeleportWhereType.TOWN); + } + player.getSummonedNpcs().forEach(npc -> npc.teleToLocation(player, true)); + } + world.onInstanceChange(player, false); + } + LOGGER_ACCOUNTING.info("Logged out, " + client); + if (!OfflineTradeUtil.enteredOfflineMode(player)) { Disconnection.of(client, player).defaultSequence(false); diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java index 2696e9eb27..868ecfba25 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java @@ -18,8 +18,12 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.Config; import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.enums.TeleportWhereType; +import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; import org.l2jmobius.gameserver.network.ConnectionState; import org.l2jmobius.gameserver.network.Disconnection; @@ -64,7 +68,31 @@ public class RequestRestart implements IClientIncomingPacket OlympiadManager.getInstance().unRegisterNoble(player); } + final Instance world = player.getInstanceWorld(); + if (world != null) + { + if (Config.RESTORE_PLAYER_INSTANCE) + { + player.getVariables().set("INSTANCE_RESTORE", world.getId()); + } + else + { + final Location location = world.getExitLocation(player); + if (location != null) + { + player.teleToLocation(location); + } + else + { + player.teleToLocation(TeleportWhereType.TOWN); + } + player.getSummonedNpcs().forEach(npc -> npc.teleToLocation(player, true)); + } + world.onInstanceChange(player, false); + } + LOGGER_ACCOUNTING.info("Logged out, " + client); + if (!OfflineTradeUtil.enteredOfflineMode(player)) { Disconnection.of(client, player).storeMe().deleteMe(); diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java index a9d085331b..8640fdfd39 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/Logout.java @@ -18,8 +18,12 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.Config; import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.enums.TeleportWhereType; +import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; import org.l2jmobius.gameserver.network.Disconnection; import org.l2jmobius.gameserver.network.GameClient; @@ -61,7 +65,31 @@ public class Logout implements IClientIncomingPacket OlympiadManager.getInstance().unRegisterNoble(player); } + final Instance world = player.getInstanceWorld(); + if (world != null) + { + if (Config.RESTORE_PLAYER_INSTANCE) + { + player.getVariables().set("INSTANCE_RESTORE", world.getId()); + } + else + { + final Location location = world.getExitLocation(player); + if (location != null) + { + player.teleToLocation(location); + } + else + { + player.teleToLocation(TeleportWhereType.TOWN); + } + player.getSummonedNpcs().forEach(npc -> npc.teleToLocation(player, true)); + } + world.onInstanceChange(player, false); + } + LOGGER_ACCOUNTING.info("Logged out, " + client); + if (!OfflineTradeUtil.enteredOfflineMode(player)) { Disconnection.of(client, player).defaultSequence(false); diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java index 2696e9eb27..868ecfba25 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestRestart.java @@ -18,8 +18,12 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; +import org.l2jmobius.Config; import org.l2jmobius.commons.network.PacketReader; +import org.l2jmobius.gameserver.enums.TeleportWhereType; +import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.olympiad.OlympiadManager; import org.l2jmobius.gameserver.network.ConnectionState; import org.l2jmobius.gameserver.network.Disconnection; @@ -64,7 +68,31 @@ public class RequestRestart implements IClientIncomingPacket OlympiadManager.getInstance().unRegisterNoble(player); } + final Instance world = player.getInstanceWorld(); + if (world != null) + { + if (Config.RESTORE_PLAYER_INSTANCE) + { + player.getVariables().set("INSTANCE_RESTORE", world.getId()); + } + else + { + final Location location = world.getExitLocation(player); + if (location != null) + { + player.teleToLocation(location); + } + else + { + player.teleToLocation(TeleportWhereType.TOWN); + } + player.getSummonedNpcs().forEach(npc -> npc.teleToLocation(player, true)); + } + world.onInstanceChange(player, false); + } + LOGGER_ACCOUNTING.info("Logged out, " + client); + if (!OfflineTradeUtil.enteredOfflineMode(player)) { Disconnection.of(client, player).storeMe().deleteMe();