diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java index c5ea04177c..ffba796c0a 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java @@ -25,8 +25,8 @@ import org.l2jmobius.gameserver.model.holders.TimedHuntingZoneHolder; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.variables.PlayerVariables; -import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage; -import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimedHuntingZoneEnter; +import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimeRestrictFieldUserAlarm; +import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimedHuntingZoneChargeResult; import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimedHuntingZoneList; /** @@ -66,7 +66,7 @@ public class AddHuntingTime extends AbstractEffect final long currentTime = System.currentTimeMillis(); final long endTime = currentTime + player.getTimedHuntingZoneRemainingTime(_zoneId); - if ((endTime > currentTime) && (((endTime - currentTime) + _time) >= holder.getMaximumAddedTime())) + if ((endTime > currentTime) && (((endTime - currentTime) + _time) > holder.getMaximumAddedTime())) { player.getInventory().addItem("AddHuntingTime effect refund", item.getId(), 1, player, player); player.sendMessage("You cannot exceed the time zone limit."); @@ -88,12 +88,10 @@ public class AddHuntingTime extends AbstractEffect if (player.isInTimedHuntingZone(_zoneId)) { player.startTimedHuntingZone(_zoneId, endTime); - player.sendPacket(new TimedHuntingZoneEnter(player, _zoneId)); + player.sendPacket(new TimeRestrictFieldUserAlarm(player, _zoneId)); } + player.sendPacket(new TimedHuntingZoneChargeResult(_zoneId, (int) (remainTime / 1000), (int) ((remainTime + _time) / 1000), (int) _time / 1000)); player.sendPacket(new TimedHuntingZoneList(player)); - - // TODO: TimedHuntingZoneChargeResult - player.sendPacket(new ExShowScreenMessage("Time of adventure in the " + holder.getZoneName() + " area is extended for " + (_time / 60 / 1000) + " min.", 10000)); } } diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldUserAlarm.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldUserAlarm.java new file mode 100644 index 0000000000..44b3b22a0e --- /dev/null +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldUserAlarm.java @@ -0,0 +1,46 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.gameserver.network.serverpackets.huntingzones; + +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.model.actor.Player; +import org.l2jmobius.gameserver.network.OutgoingPackets; +import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; + +/** + * @author NasSeKa + */ +public class TimeRestrictFieldUserAlarm implements IClientOutgoingPacket +{ + private final Player _player; + private final int _zoneId; + + public TimeRestrictFieldUserAlarm(Player player, int zoneId) + { + _player = player; + _zoneId = zoneId; + } + + @Override + public boolean write(PacketWriter packet) + { + OutgoingPackets.EX_TIME_RESTRICT_FIELD_USER_ALARM.writeId(packet); + packet.writeD(_zoneId); + packet.writeD(_player.getTimedHuntingZoneRemainingTime(_zoneId) / 1000); // RemainTime (zone left time) + return true; + } +} \ No newline at end of file diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java index 433bd1c05c..ebf213a695 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java @@ -21,19 +21,21 @@ import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; /** - * @author dontknowdontcare + * @author NasSeKa */ public class TimedHuntingZoneChargeResult implements IClientOutgoingPacket { private final int _zoneId; - private final int _secondsLeft; - private final int _newExtensionValue; + private final int _remainTime; + private final int _refillTime; + private final int _chargeTime; - public TimedHuntingZoneChargeResult(int zoneId, int secondsLeft, int newExtensionValue) + public TimedHuntingZoneChargeResult(int zoneId, int remainTime, int refillTime, int chargeTime) { _zoneId = zoneId; - _secondsLeft = secondsLeft; - _newExtensionValue = newExtensionValue; + _remainTime = remainTime; + _refillTime = refillTime; + _chargeTime = chargeTime; } @Override @@ -41,8 +43,9 @@ public class TimedHuntingZoneChargeResult implements IClientOutgoingPacket { OutgoingPackets.EX_TIME_RESTRICT_FIELD_USER_CHARGE_RESULT.writeId(packet); packet.writeD(_zoneId); - packet.writeD(_secondsLeft); // Remaining Time in zone. - packet.writeD(_newExtensionValue); // New Extension value. + packet.writeD(_remainTime); + packet.writeD(_refillTime); + packet.writeD(_chargeTime); return true; } } diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java index f527d6d08b..e55156077f 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java @@ -41,8 +41,8 @@ public class TimedHuntingZoneEnter implements IClientOutgoingPacket OutgoingPackets.EX_TIME_RESTRICT_FIELD_USER_ENTER.writeId(packet); packet.writeC(1); // bEnterSuccess packet.writeD(_zoneId); - packet.writeD((int) ((System.currentTimeMillis() / 60) / 1000)); // nEnterTimeStamp (current time in minutes) - packet.writeD(_player.getTimedHuntingZoneRemainingTime(_zoneId) / 1000); // nRemainTime (zone left time) + packet.writeD((int) (System.currentTimeMillis() / 1000)); // nEnterTimeStamp + packet.writeD((_player.getTimedHuntingZoneRemainingTime(_zoneId) / 1000) + 59); // nRemainTime (zone left time) return true; } } \ No newline at end of file diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java index c5ea04177c..ffba796c0a 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java @@ -25,8 +25,8 @@ import org.l2jmobius.gameserver.model.holders.TimedHuntingZoneHolder; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.variables.PlayerVariables; -import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage; -import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimedHuntingZoneEnter; +import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimeRestrictFieldUserAlarm; +import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimedHuntingZoneChargeResult; import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimedHuntingZoneList; /** @@ -66,7 +66,7 @@ public class AddHuntingTime extends AbstractEffect final long currentTime = System.currentTimeMillis(); final long endTime = currentTime + player.getTimedHuntingZoneRemainingTime(_zoneId); - if ((endTime > currentTime) && (((endTime - currentTime) + _time) >= holder.getMaximumAddedTime())) + if ((endTime > currentTime) && (((endTime - currentTime) + _time) > holder.getMaximumAddedTime())) { player.getInventory().addItem("AddHuntingTime effect refund", item.getId(), 1, player, player); player.sendMessage("You cannot exceed the time zone limit."); @@ -88,12 +88,10 @@ public class AddHuntingTime extends AbstractEffect if (player.isInTimedHuntingZone(_zoneId)) { player.startTimedHuntingZone(_zoneId, endTime); - player.sendPacket(new TimedHuntingZoneEnter(player, _zoneId)); + player.sendPacket(new TimeRestrictFieldUserAlarm(player, _zoneId)); } + player.sendPacket(new TimedHuntingZoneChargeResult(_zoneId, (int) (remainTime / 1000), (int) ((remainTime + _time) / 1000), (int) _time / 1000)); player.sendPacket(new TimedHuntingZoneList(player)); - - // TODO: TimedHuntingZoneChargeResult - player.sendPacket(new ExShowScreenMessage("Time of adventure in the " + holder.getZoneName() + " area is extended for " + (_time / 60 / 1000) + " min.", 10000)); } } diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldUserAlarm.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldUserAlarm.java new file mode 100644 index 0000000000..44b3b22a0e --- /dev/null +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldUserAlarm.java @@ -0,0 +1,46 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.gameserver.network.serverpackets.huntingzones; + +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.model.actor.Player; +import org.l2jmobius.gameserver.network.OutgoingPackets; +import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; + +/** + * @author NasSeKa + */ +public class TimeRestrictFieldUserAlarm implements IClientOutgoingPacket +{ + private final Player _player; + private final int _zoneId; + + public TimeRestrictFieldUserAlarm(Player player, int zoneId) + { + _player = player; + _zoneId = zoneId; + } + + @Override + public boolean write(PacketWriter packet) + { + OutgoingPackets.EX_TIME_RESTRICT_FIELD_USER_ALARM.writeId(packet); + packet.writeD(_zoneId); + packet.writeD(_player.getTimedHuntingZoneRemainingTime(_zoneId) / 1000); // RemainTime (zone left time) + return true; + } +} \ No newline at end of file diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java index 433bd1c05c..ebf213a695 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java @@ -21,19 +21,21 @@ import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; /** - * @author dontknowdontcare + * @author NasSeKa */ public class TimedHuntingZoneChargeResult implements IClientOutgoingPacket { private final int _zoneId; - private final int _secondsLeft; - private final int _newExtensionValue; + private final int _remainTime; + private final int _refillTime; + private final int _chargeTime; - public TimedHuntingZoneChargeResult(int zoneId, int secondsLeft, int newExtensionValue) + public TimedHuntingZoneChargeResult(int zoneId, int remainTime, int refillTime, int chargeTime) { _zoneId = zoneId; - _secondsLeft = secondsLeft; - _newExtensionValue = newExtensionValue; + _remainTime = remainTime; + _refillTime = refillTime; + _chargeTime = chargeTime; } @Override @@ -41,8 +43,9 @@ public class TimedHuntingZoneChargeResult implements IClientOutgoingPacket { OutgoingPackets.EX_TIME_RESTRICT_FIELD_USER_CHARGE_RESULT.writeId(packet); packet.writeD(_zoneId); - packet.writeD(_secondsLeft); // Remaining Time in zone. - packet.writeD(_newExtensionValue); // New Extension value. + packet.writeD(_remainTime); + packet.writeD(_refillTime); + packet.writeD(_chargeTime); return true; } } diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java index f527d6d08b..e55156077f 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java @@ -41,8 +41,8 @@ public class TimedHuntingZoneEnter implements IClientOutgoingPacket OutgoingPackets.EX_TIME_RESTRICT_FIELD_USER_ENTER.writeId(packet); packet.writeC(1); // bEnterSuccess packet.writeD(_zoneId); - packet.writeD((int) ((System.currentTimeMillis() / 60) / 1000)); // nEnterTimeStamp (current time in minutes) - packet.writeD(_player.getTimedHuntingZoneRemainingTime(_zoneId) / 1000); // nRemainTime (zone left time) + packet.writeD((int) (System.currentTimeMillis() / 1000)); // nEnterTimeStamp + packet.writeD((_player.getTimedHuntingZoneRemainingTime(_zoneId) / 1000) + 59); // nRemainTime (zone left time) return true; } } \ No newline at end of file diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java index c5ea04177c..ffba796c0a 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java @@ -25,8 +25,8 @@ import org.l2jmobius.gameserver.model.holders.TimedHuntingZoneHolder; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.variables.PlayerVariables; -import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage; -import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimedHuntingZoneEnter; +import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimeRestrictFieldUserAlarm; +import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimedHuntingZoneChargeResult; import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimedHuntingZoneList; /** @@ -66,7 +66,7 @@ public class AddHuntingTime extends AbstractEffect final long currentTime = System.currentTimeMillis(); final long endTime = currentTime + player.getTimedHuntingZoneRemainingTime(_zoneId); - if ((endTime > currentTime) && (((endTime - currentTime) + _time) >= holder.getMaximumAddedTime())) + if ((endTime > currentTime) && (((endTime - currentTime) + _time) > holder.getMaximumAddedTime())) { player.getInventory().addItem("AddHuntingTime effect refund", item.getId(), 1, player, player); player.sendMessage("You cannot exceed the time zone limit."); @@ -88,12 +88,10 @@ public class AddHuntingTime extends AbstractEffect if (player.isInTimedHuntingZone(_zoneId)) { player.startTimedHuntingZone(_zoneId, endTime); - player.sendPacket(new TimedHuntingZoneEnter(player, _zoneId)); + player.sendPacket(new TimeRestrictFieldUserAlarm(player, _zoneId)); } + player.sendPacket(new TimedHuntingZoneChargeResult(_zoneId, (int) (remainTime / 1000), (int) ((remainTime + _time) / 1000), (int) _time / 1000)); player.sendPacket(new TimedHuntingZoneList(player)); - - // TODO: TimedHuntingZoneChargeResult - player.sendPacket(new ExShowScreenMessage("Time of adventure in the " + holder.getZoneName() + " area is extended for " + (_time / 60 / 1000) + " min.", 10000)); } } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldUserAlarm.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldUserAlarm.java new file mode 100644 index 0000000000..44b3b22a0e --- /dev/null +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldUserAlarm.java @@ -0,0 +1,46 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.gameserver.network.serverpackets.huntingzones; + +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.model.actor.Player; +import org.l2jmobius.gameserver.network.OutgoingPackets; +import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; + +/** + * @author NasSeKa + */ +public class TimeRestrictFieldUserAlarm implements IClientOutgoingPacket +{ + private final Player _player; + private final int _zoneId; + + public TimeRestrictFieldUserAlarm(Player player, int zoneId) + { + _player = player; + _zoneId = zoneId; + } + + @Override + public boolean write(PacketWriter packet) + { + OutgoingPackets.EX_TIME_RESTRICT_FIELD_USER_ALARM.writeId(packet); + packet.writeD(_zoneId); + packet.writeD(_player.getTimedHuntingZoneRemainingTime(_zoneId) / 1000); // RemainTime (zone left time) + return true; + } +} \ No newline at end of file diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java index 433bd1c05c..ebf213a695 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java @@ -21,19 +21,21 @@ import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; /** - * @author dontknowdontcare + * @author NasSeKa */ public class TimedHuntingZoneChargeResult implements IClientOutgoingPacket { private final int _zoneId; - private final int _secondsLeft; - private final int _newExtensionValue; + private final int _remainTime; + private final int _refillTime; + private final int _chargeTime; - public TimedHuntingZoneChargeResult(int zoneId, int secondsLeft, int newExtensionValue) + public TimedHuntingZoneChargeResult(int zoneId, int remainTime, int refillTime, int chargeTime) { _zoneId = zoneId; - _secondsLeft = secondsLeft; - _newExtensionValue = newExtensionValue; + _remainTime = remainTime; + _refillTime = refillTime; + _chargeTime = chargeTime; } @Override @@ -41,8 +43,9 @@ public class TimedHuntingZoneChargeResult implements IClientOutgoingPacket { OutgoingPackets.EX_TIME_RESTRICT_FIELD_USER_CHARGE_RESULT.writeId(packet); packet.writeD(_zoneId); - packet.writeD(_secondsLeft); // Remaining Time in zone. - packet.writeD(_newExtensionValue); // New Extension value. + packet.writeD(_remainTime); + packet.writeD(_refillTime); + packet.writeD(_chargeTime); return true; } } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java index f527d6d08b..e55156077f 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java @@ -41,8 +41,8 @@ public class TimedHuntingZoneEnter implements IClientOutgoingPacket OutgoingPackets.EX_TIME_RESTRICT_FIELD_USER_ENTER.writeId(packet); packet.writeC(1); // bEnterSuccess packet.writeD(_zoneId); - packet.writeD((int) ((System.currentTimeMillis() / 60) / 1000)); // nEnterTimeStamp (current time in minutes) - packet.writeD(_player.getTimedHuntingZoneRemainingTime(_zoneId) / 1000); // nRemainTime (zone left time) + packet.writeD((int) (System.currentTimeMillis() / 1000)); // nEnterTimeStamp + packet.writeD((_player.getTimedHuntingZoneRemainingTime(_zoneId) / 1000) + 59); // nRemainTime (zone left time) return true; } } \ No newline at end of file diff --git a/L2J_Mobius_10.2_MasterClass/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java b/L2J_Mobius_10.2_MasterClass/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java index c5ea04177c..ffba796c0a 100644 --- a/L2J_Mobius_10.2_MasterClass/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java +++ b/L2J_Mobius_10.2_MasterClass/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java @@ -25,8 +25,8 @@ import org.l2jmobius.gameserver.model.holders.TimedHuntingZoneHolder; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.variables.PlayerVariables; -import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage; -import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimedHuntingZoneEnter; +import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimeRestrictFieldUserAlarm; +import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimedHuntingZoneChargeResult; import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimedHuntingZoneList; /** @@ -66,7 +66,7 @@ public class AddHuntingTime extends AbstractEffect final long currentTime = System.currentTimeMillis(); final long endTime = currentTime + player.getTimedHuntingZoneRemainingTime(_zoneId); - if ((endTime > currentTime) && (((endTime - currentTime) + _time) >= holder.getMaximumAddedTime())) + if ((endTime > currentTime) && (((endTime - currentTime) + _time) > holder.getMaximumAddedTime())) { player.getInventory().addItem("AddHuntingTime effect refund", item.getId(), 1, player, player); player.sendMessage("You cannot exceed the time zone limit."); @@ -88,12 +88,10 @@ public class AddHuntingTime extends AbstractEffect if (player.isInTimedHuntingZone(_zoneId)) { player.startTimedHuntingZone(_zoneId, endTime); - player.sendPacket(new TimedHuntingZoneEnter(player, _zoneId)); + player.sendPacket(new TimeRestrictFieldUserAlarm(player, _zoneId)); } + player.sendPacket(new TimedHuntingZoneChargeResult(_zoneId, (int) (remainTime / 1000), (int) ((remainTime + _time) / 1000), (int) _time / 1000)); player.sendPacket(new TimedHuntingZoneList(player)); - - // TODO: TimedHuntingZoneChargeResult - player.sendPacket(new ExShowScreenMessage("Time of adventure in the " + holder.getZoneName() + " area is extended for " + (_time / 60 / 1000) + " min.", 10000)); } } diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/Creature.java index 96bb89754a..f92c64346b 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -570,9 +570,20 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe */ public void onDecay() { - if (Config.DISCONNECT_AFTER_DEATH && isPlayer()) + if (isPlayer()) { - Disconnection.of(getActingPlayer()).deleteMe().defaultSequence(new SystemMessage(SystemMessageId.SIXTY_MIN_HAVE_PASSED_AFTER_THE_DEATH_OF_YOUR_CHARACTER_SO_YOU_WERE_DISCONNECTED_FROM_THE_GAME)); + if (isInsideZone(ZoneId.TIMED_HUNTING)) + { + getActingPlayer().stopTimedHuntingZoneTask(); + abortCast(); + stopMove(null); + teleToLocation(MapRegionManager.getInstance().getTeleToLocation(this, TeleportWhereType.TOWN)); + setInstance(null); + } + else if (Config.DISCONNECT_AFTER_DEATH) + { + Disconnection.of(getActingPlayer()).deleteMe().defaultSequence(new SystemMessage(SystemMessageId.SIXTY_MIN_HAVE_PASSED_AFTER_THE_DEATH_OF_YOUR_CHARACTER_SO_YOU_WERE_DISCONNECTED_FROM_THE_GAME)); + } } else { diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/Player.java index 0bae1d06a2..3e438111e9 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -366,6 +366,7 @@ import org.l2jmobius.gameserver.network.serverpackets.autoplay.ExActivateAutoSho import org.l2jmobius.gameserver.network.serverpackets.autoplay.ExAutoPlaySettingSend; import org.l2jmobius.gameserver.network.serverpackets.commission.ExResponseCommissionInfo; import org.l2jmobius.gameserver.network.serverpackets.friend.FriendStatus; +import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimeRestrictFieldDieLimitTime; import org.l2jmobius.gameserver.network.serverpackets.limitshop.ExBloodyCoinCount; import org.l2jmobius.gameserver.network.serverpackets.olympiad.ExOlympiadMode; import org.l2jmobius.gameserver.taskmanager.AttackStanceTaskManager; @@ -5089,7 +5090,12 @@ public class Player extends Playable setReputation(newRep < -20 ? newRep : 0); } - if (Config.DISCONNECT_AFTER_DEATH) + if (isInsideZone(ZoneId.TIMED_HUNTING)) + { + DecayTaskManager.getInstance().add(this); + sendPacket(new TimeRestrictFieldDieLimitTime()); + } + else if (Config.DISCONNECT_AFTER_DEATH) { DecayTaskManager.getInstance().add(this); } diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldDieLimitTime.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldDieLimitTime.java new file mode 100644 index 0000000000..d9878455e6 --- /dev/null +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldDieLimitTime.java @@ -0,0 +1,39 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.gameserver.network.serverpackets.huntingzones; + +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; +import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; + +/** + * @author NasSeKa + */ +public class TimeRestrictFieldDieLimitTime implements IClientOutgoingPacket +{ + public TimeRestrictFieldDieLimitTime() + { + } + + @Override + public boolean write(PacketWriter packet) + { + OutgoingPackets.EX_TIME_RESTRICT_FIELD_DIE_LIMT_TIME.writeId(packet); + packet.writeD(600); // RemainTime (zone left time) + return true; + } +} \ No newline at end of file diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldUserAlarm.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldUserAlarm.java new file mode 100644 index 0000000000..44b3b22a0e --- /dev/null +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldUserAlarm.java @@ -0,0 +1,46 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.gameserver.network.serverpackets.huntingzones; + +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.model.actor.Player; +import org.l2jmobius.gameserver.network.OutgoingPackets; +import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; + +/** + * @author NasSeKa + */ +public class TimeRestrictFieldUserAlarm implements IClientOutgoingPacket +{ + private final Player _player; + private final int _zoneId; + + public TimeRestrictFieldUserAlarm(Player player, int zoneId) + { + _player = player; + _zoneId = zoneId; + } + + @Override + public boolean write(PacketWriter packet) + { + OutgoingPackets.EX_TIME_RESTRICT_FIELD_USER_ALARM.writeId(packet); + packet.writeD(_zoneId); + packet.writeD(_player.getTimedHuntingZoneRemainingTime(_zoneId) / 1000); // RemainTime (zone left time) + return true; + } +} \ No newline at end of file diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java index 433bd1c05c..ebf213a695 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java @@ -21,19 +21,21 @@ import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; /** - * @author dontknowdontcare + * @author NasSeKa */ public class TimedHuntingZoneChargeResult implements IClientOutgoingPacket { private final int _zoneId; - private final int _secondsLeft; - private final int _newExtensionValue; + private final int _remainTime; + private final int _refillTime; + private final int _chargeTime; - public TimedHuntingZoneChargeResult(int zoneId, int secondsLeft, int newExtensionValue) + public TimedHuntingZoneChargeResult(int zoneId, int remainTime, int refillTime, int chargeTime) { _zoneId = zoneId; - _secondsLeft = secondsLeft; - _newExtensionValue = newExtensionValue; + _remainTime = remainTime; + _refillTime = refillTime; + _chargeTime = chargeTime; } @Override @@ -41,8 +43,9 @@ public class TimedHuntingZoneChargeResult implements IClientOutgoingPacket { OutgoingPackets.EX_TIME_RESTRICT_FIELD_USER_CHARGE_RESULT.writeId(packet); packet.writeD(_zoneId); - packet.writeD(_secondsLeft); // Remaining Time in zone. - packet.writeD(_newExtensionValue); // New Extension value. + packet.writeD(_remainTime); + packet.writeD(_refillTime); + packet.writeD(_chargeTime); return true; } } diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java index f527d6d08b..e55156077f 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java @@ -41,8 +41,8 @@ public class TimedHuntingZoneEnter implements IClientOutgoingPacket OutgoingPackets.EX_TIME_RESTRICT_FIELD_USER_ENTER.writeId(packet); packet.writeC(1); // bEnterSuccess packet.writeD(_zoneId); - packet.writeD((int) ((System.currentTimeMillis() / 60) / 1000)); // nEnterTimeStamp (current time in minutes) - packet.writeD(_player.getTimedHuntingZoneRemainingTime(_zoneId) / 1000); // nRemainTime (zone left time) + packet.writeD((int) (System.currentTimeMillis() / 1000)); // nEnterTimeStamp + packet.writeD((_player.getTimedHuntingZoneRemainingTime(_zoneId) / 1000) + 59); // nRemainTime (zone left time) return true; } } \ No newline at end of file diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/taskmanager/DecayTaskManager.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/taskmanager/DecayTaskManager.java index 95cb3495d9..7860e5f1d9 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/taskmanager/DecayTaskManager.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/taskmanager/DecayTaskManager.java @@ -25,6 +25,7 @@ import org.l2jmobius.commons.threads.ThreadPool; import org.l2jmobius.gameserver.model.actor.Attackable; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; +import org.l2jmobius.gameserver.model.zone.ZoneId; /** * @author Mobius @@ -89,9 +90,16 @@ public class DecayTaskManager implements Runnable delay += Config.SPOILED_CORPSE_EXTEND_TIME; } - if (Config.DISCONNECT_AFTER_DEATH && creature.isPlayer()) + if (creature.isPlayer()) { - delay = 3600; // 1 hour + if (Config.DISCONNECT_AFTER_DEATH) + { + delay = 3600; // 1 hour + } + if (creature.isInsideZone(ZoneId.TIMED_HUNTING)) + { + delay = 60; // 10 minutes + } } // Add to decay schedules. diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java index c5ea04177c..ffba796c0a 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java @@ -25,8 +25,8 @@ import org.l2jmobius.gameserver.model.holders.TimedHuntingZoneHolder; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.variables.PlayerVariables; -import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage; -import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimedHuntingZoneEnter; +import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimeRestrictFieldUserAlarm; +import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimedHuntingZoneChargeResult; import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimedHuntingZoneList; /** @@ -66,7 +66,7 @@ public class AddHuntingTime extends AbstractEffect final long currentTime = System.currentTimeMillis(); final long endTime = currentTime + player.getTimedHuntingZoneRemainingTime(_zoneId); - if ((endTime > currentTime) && (((endTime - currentTime) + _time) >= holder.getMaximumAddedTime())) + if ((endTime > currentTime) && (((endTime - currentTime) + _time) > holder.getMaximumAddedTime())) { player.getInventory().addItem("AddHuntingTime effect refund", item.getId(), 1, player, player); player.sendMessage("You cannot exceed the time zone limit."); @@ -88,12 +88,10 @@ public class AddHuntingTime extends AbstractEffect if (player.isInTimedHuntingZone(_zoneId)) { player.startTimedHuntingZone(_zoneId, endTime); - player.sendPacket(new TimedHuntingZoneEnter(player, _zoneId)); + player.sendPacket(new TimeRestrictFieldUserAlarm(player, _zoneId)); } + player.sendPacket(new TimedHuntingZoneChargeResult(_zoneId, (int) (remainTime / 1000), (int) ((remainTime + _time) / 1000), (int) _time / 1000)); player.sendPacket(new TimedHuntingZoneList(player)); - - // TODO: TimedHuntingZoneChargeResult - player.sendPacket(new ExShowScreenMessage("Time of adventure in the " + holder.getZoneName() + " area is extended for " + (_time / 60 / 1000) + " min.", 10000)); } } diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldUserAlarm.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldUserAlarm.java new file mode 100644 index 0000000000..44b3b22a0e --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldUserAlarm.java @@ -0,0 +1,46 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.gameserver.network.serverpackets.huntingzones; + +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.model.actor.Player; +import org.l2jmobius.gameserver.network.OutgoingPackets; +import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; + +/** + * @author NasSeKa + */ +public class TimeRestrictFieldUserAlarm implements IClientOutgoingPacket +{ + private final Player _player; + private final int _zoneId; + + public TimeRestrictFieldUserAlarm(Player player, int zoneId) + { + _player = player; + _zoneId = zoneId; + } + + @Override + public boolean write(PacketWriter packet) + { + OutgoingPackets.EX_TIME_RESTRICT_FIELD_USER_ALARM.writeId(packet); + packet.writeD(_zoneId); + packet.writeD(_player.getTimedHuntingZoneRemainingTime(_zoneId) / 1000); // RemainTime (zone left time) + return true; + } +} \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java index 433bd1c05c..ebf213a695 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java @@ -21,19 +21,21 @@ import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; /** - * @author dontknowdontcare + * @author NasSeKa */ public class TimedHuntingZoneChargeResult implements IClientOutgoingPacket { private final int _zoneId; - private final int _secondsLeft; - private final int _newExtensionValue; + private final int _remainTime; + private final int _refillTime; + private final int _chargeTime; - public TimedHuntingZoneChargeResult(int zoneId, int secondsLeft, int newExtensionValue) + public TimedHuntingZoneChargeResult(int zoneId, int remainTime, int refillTime, int chargeTime) { _zoneId = zoneId; - _secondsLeft = secondsLeft; - _newExtensionValue = newExtensionValue; + _remainTime = remainTime; + _refillTime = refillTime; + _chargeTime = chargeTime; } @Override @@ -41,8 +43,9 @@ public class TimedHuntingZoneChargeResult implements IClientOutgoingPacket { OutgoingPackets.EX_TIME_RESTRICT_FIELD_USER_CHARGE_RESULT.writeId(packet); packet.writeD(_zoneId); - packet.writeD(_secondsLeft); // Remaining Time in zone. - packet.writeD(_newExtensionValue); // New Extension value. + packet.writeD(_remainTime); + packet.writeD(_refillTime); + packet.writeD(_chargeTime); return true; } } diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java index f527d6d08b..e55156077f 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java @@ -41,8 +41,8 @@ public class TimedHuntingZoneEnter implements IClientOutgoingPacket OutgoingPackets.EX_TIME_RESTRICT_FIELD_USER_ENTER.writeId(packet); packet.writeC(1); // bEnterSuccess packet.writeD(_zoneId); - packet.writeD((int) ((System.currentTimeMillis() / 60) / 1000)); // nEnterTimeStamp (current time in minutes) - packet.writeD(_player.getTimedHuntingZoneRemainingTime(_zoneId) / 1000); // nRemainTime (zone left time) + packet.writeD((int) (System.currentTimeMillis() / 1000)); // nEnterTimeStamp + packet.writeD((_player.getTimedHuntingZoneRemainingTime(_zoneId) / 1000) + 59); // nRemainTime (zone left time) return true; } } \ No newline at end of file diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java index c5ea04177c..ffba796c0a 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java @@ -25,8 +25,8 @@ import org.l2jmobius.gameserver.model.holders.TimedHuntingZoneHolder; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.variables.PlayerVariables; -import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage; -import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimedHuntingZoneEnter; +import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimeRestrictFieldUserAlarm; +import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimedHuntingZoneChargeResult; import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimedHuntingZoneList; /** @@ -66,7 +66,7 @@ public class AddHuntingTime extends AbstractEffect final long currentTime = System.currentTimeMillis(); final long endTime = currentTime + player.getTimedHuntingZoneRemainingTime(_zoneId); - if ((endTime > currentTime) && (((endTime - currentTime) + _time) >= holder.getMaximumAddedTime())) + if ((endTime > currentTime) && (((endTime - currentTime) + _time) > holder.getMaximumAddedTime())) { player.getInventory().addItem("AddHuntingTime effect refund", item.getId(), 1, player, player); player.sendMessage("You cannot exceed the time zone limit."); @@ -88,12 +88,10 @@ public class AddHuntingTime extends AbstractEffect if (player.isInTimedHuntingZone(_zoneId)) { player.startTimedHuntingZone(_zoneId, endTime); - player.sendPacket(new TimedHuntingZoneEnter(player, _zoneId)); + player.sendPacket(new TimeRestrictFieldUserAlarm(player, _zoneId)); } + player.sendPacket(new TimedHuntingZoneChargeResult(_zoneId, (int) (remainTime / 1000), (int) ((remainTime + _time) / 1000), (int) _time / 1000)); player.sendPacket(new TimedHuntingZoneList(player)); - - // TODO: TimedHuntingZoneChargeResult - player.sendPacket(new ExShowScreenMessage("Time of adventure in the " + holder.getZoneName() + " area is extended for " + (_time / 60 / 1000) + " min.", 10000)); } } diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldUserAlarm.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldUserAlarm.java new file mode 100644 index 0000000000..44b3b22a0e --- /dev/null +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldUserAlarm.java @@ -0,0 +1,46 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.gameserver.network.serverpackets.huntingzones; + +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.model.actor.Player; +import org.l2jmobius.gameserver.network.OutgoingPackets; +import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; + +/** + * @author NasSeKa + */ +public class TimeRestrictFieldUserAlarm implements IClientOutgoingPacket +{ + private final Player _player; + private final int _zoneId; + + public TimeRestrictFieldUserAlarm(Player player, int zoneId) + { + _player = player; + _zoneId = zoneId; + } + + @Override + public boolean write(PacketWriter packet) + { + OutgoingPackets.EX_TIME_RESTRICT_FIELD_USER_ALARM.writeId(packet); + packet.writeD(_zoneId); + packet.writeD(_player.getTimedHuntingZoneRemainingTime(_zoneId) / 1000); // RemainTime (zone left time) + return true; + } +} \ No newline at end of file diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java index 433bd1c05c..ebf213a695 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java @@ -21,19 +21,21 @@ import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; /** - * @author dontknowdontcare + * @author NasSeKa */ public class TimedHuntingZoneChargeResult implements IClientOutgoingPacket { private final int _zoneId; - private final int _secondsLeft; - private final int _newExtensionValue; + private final int _remainTime; + private final int _refillTime; + private final int _chargeTime; - public TimedHuntingZoneChargeResult(int zoneId, int secondsLeft, int newExtensionValue) + public TimedHuntingZoneChargeResult(int zoneId, int remainTime, int refillTime, int chargeTime) { _zoneId = zoneId; - _secondsLeft = secondsLeft; - _newExtensionValue = newExtensionValue; + _remainTime = remainTime; + _refillTime = refillTime; + _chargeTime = chargeTime; } @Override @@ -41,8 +43,9 @@ public class TimedHuntingZoneChargeResult implements IClientOutgoingPacket { OutgoingPackets.EX_TIME_RESTRICT_FIELD_USER_CHARGE_RESULT.writeId(packet); packet.writeD(_zoneId); - packet.writeD(_secondsLeft); // Remaining Time in zone. - packet.writeD(_newExtensionValue); // New Extension value. + packet.writeD(_remainTime); + packet.writeD(_refillTime); + packet.writeD(_chargeTime); return true; } } diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java index f527d6d08b..e55156077f 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java @@ -41,8 +41,8 @@ public class TimedHuntingZoneEnter implements IClientOutgoingPacket OutgoingPackets.EX_TIME_RESTRICT_FIELD_USER_ENTER.writeId(packet); packet.writeC(1); // bEnterSuccess packet.writeD(_zoneId); - packet.writeD((int) ((System.currentTimeMillis() / 60) / 1000)); // nEnterTimeStamp (current time in minutes) - packet.writeD(_player.getTimedHuntingZoneRemainingTime(_zoneId) / 1000); // nRemainTime (zone left time) + packet.writeD((int) (System.currentTimeMillis() / 1000)); // nEnterTimeStamp + packet.writeD((_player.getTimedHuntingZoneRemainingTime(_zoneId) / 1000) + 59); // nRemainTime (zone left time) return true; } } \ No newline at end of file diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java index c5ea04177c..ffba796c0a 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java @@ -25,8 +25,8 @@ import org.l2jmobius.gameserver.model.holders.TimedHuntingZoneHolder; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.variables.PlayerVariables; -import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage; -import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimedHuntingZoneEnter; +import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimeRestrictFieldUserAlarm; +import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimedHuntingZoneChargeResult; import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimedHuntingZoneList; /** @@ -66,7 +66,7 @@ public class AddHuntingTime extends AbstractEffect final long currentTime = System.currentTimeMillis(); final long endTime = currentTime + player.getTimedHuntingZoneRemainingTime(_zoneId); - if ((endTime > currentTime) && (((endTime - currentTime) + _time) >= holder.getMaximumAddedTime())) + if ((endTime > currentTime) && (((endTime - currentTime) + _time) > holder.getMaximumAddedTime())) { player.getInventory().addItem("AddHuntingTime effect refund", item.getId(), 1, player, player); player.sendMessage("You cannot exceed the time zone limit."); @@ -88,12 +88,10 @@ public class AddHuntingTime extends AbstractEffect if (player.isInTimedHuntingZone(_zoneId)) { player.startTimedHuntingZone(_zoneId, endTime); - player.sendPacket(new TimedHuntingZoneEnter(player, _zoneId)); + player.sendPacket(new TimeRestrictFieldUserAlarm(player, _zoneId)); } + player.sendPacket(new TimedHuntingZoneChargeResult(_zoneId, (int) (remainTime / 1000), (int) ((remainTime + _time) / 1000), (int) _time / 1000)); player.sendPacket(new TimedHuntingZoneList(player)); - - // TODO: TimedHuntingZoneChargeResult - player.sendPacket(new ExShowScreenMessage("Time of adventure in the " + holder.getZoneName() + " area is extended for " + (_time / 60 / 1000) + " min.", 10000)); } } diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldUserAlarm.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldUserAlarm.java new file mode 100644 index 0000000000..44b3b22a0e --- /dev/null +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldUserAlarm.java @@ -0,0 +1,46 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.gameserver.network.serverpackets.huntingzones; + +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.model.actor.Player; +import org.l2jmobius.gameserver.network.OutgoingPackets; +import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; + +/** + * @author NasSeKa + */ +public class TimeRestrictFieldUserAlarm implements IClientOutgoingPacket +{ + private final Player _player; + private final int _zoneId; + + public TimeRestrictFieldUserAlarm(Player player, int zoneId) + { + _player = player; + _zoneId = zoneId; + } + + @Override + public boolean write(PacketWriter packet) + { + OutgoingPackets.EX_TIME_RESTRICT_FIELD_USER_ALARM.writeId(packet); + packet.writeD(_zoneId); + packet.writeD(_player.getTimedHuntingZoneRemainingTime(_zoneId) / 1000); // RemainTime (zone left time) + return true; + } +} \ No newline at end of file diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java index 433bd1c05c..ebf213a695 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java @@ -21,19 +21,21 @@ import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; /** - * @author dontknowdontcare + * @author NasSeKa */ public class TimedHuntingZoneChargeResult implements IClientOutgoingPacket { private final int _zoneId; - private final int _secondsLeft; - private final int _newExtensionValue; + private final int _remainTime; + private final int _refillTime; + private final int _chargeTime; - public TimedHuntingZoneChargeResult(int zoneId, int secondsLeft, int newExtensionValue) + public TimedHuntingZoneChargeResult(int zoneId, int remainTime, int refillTime, int chargeTime) { _zoneId = zoneId; - _secondsLeft = secondsLeft; - _newExtensionValue = newExtensionValue; + _remainTime = remainTime; + _refillTime = refillTime; + _chargeTime = chargeTime; } @Override @@ -41,8 +43,9 @@ public class TimedHuntingZoneChargeResult implements IClientOutgoingPacket { OutgoingPackets.EX_TIME_RESTRICT_FIELD_USER_CHARGE_RESULT.writeId(packet); packet.writeD(_zoneId); - packet.writeD(_secondsLeft); // Remaining Time in zone. - packet.writeD(_newExtensionValue); // New Extension value. + packet.writeD(_remainTime); + packet.writeD(_refillTime); + packet.writeD(_chargeTime); return true; } } diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java index f527d6d08b..e55156077f 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java @@ -41,8 +41,8 @@ public class TimedHuntingZoneEnter implements IClientOutgoingPacket OutgoingPackets.EX_TIME_RESTRICT_FIELD_USER_ENTER.writeId(packet); packet.writeC(1); // bEnterSuccess packet.writeD(_zoneId); - packet.writeD((int) ((System.currentTimeMillis() / 60) / 1000)); // nEnterTimeStamp (current time in minutes) - packet.writeD(_player.getTimedHuntingZoneRemainingTime(_zoneId) / 1000); // nRemainTime (zone left time) + packet.writeD((int) (System.currentTimeMillis() / 1000)); // nEnterTimeStamp + packet.writeD((_player.getTimedHuntingZoneRemainingTime(_zoneId) / 1000) + 59); // nRemainTime (zone left time) return true; } } \ No newline at end of file diff --git a/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java b/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java index c5ea04177c..ffba796c0a 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/scripts/handlers/effecthandlers/AddHuntingTime.java @@ -25,8 +25,8 @@ import org.l2jmobius.gameserver.model.holders.TimedHuntingZoneHolder; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.variables.PlayerVariables; -import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage; -import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimedHuntingZoneEnter; +import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimeRestrictFieldUserAlarm; +import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimedHuntingZoneChargeResult; import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimedHuntingZoneList; /** @@ -66,7 +66,7 @@ public class AddHuntingTime extends AbstractEffect final long currentTime = System.currentTimeMillis(); final long endTime = currentTime + player.getTimedHuntingZoneRemainingTime(_zoneId); - if ((endTime > currentTime) && (((endTime - currentTime) + _time) >= holder.getMaximumAddedTime())) + if ((endTime > currentTime) && (((endTime - currentTime) + _time) > holder.getMaximumAddedTime())) { player.getInventory().addItem("AddHuntingTime effect refund", item.getId(), 1, player, player); player.sendMessage("You cannot exceed the time zone limit."); @@ -88,12 +88,10 @@ public class AddHuntingTime extends AbstractEffect if (player.isInTimedHuntingZone(_zoneId)) { player.startTimedHuntingZone(_zoneId, endTime); - player.sendPacket(new TimedHuntingZoneEnter(player, _zoneId)); + player.sendPacket(new TimeRestrictFieldUserAlarm(player, _zoneId)); } + player.sendPacket(new TimedHuntingZoneChargeResult(_zoneId, (int) (remainTime / 1000), (int) ((remainTime + _time) / 1000), (int) _time / 1000)); player.sendPacket(new TimedHuntingZoneList(player)); - - // TODO: TimedHuntingZoneChargeResult - player.sendPacket(new ExShowScreenMessage("Time of adventure in the " + holder.getZoneName() + " area is extended for " + (_time / 60 / 1000) + " min.", 10000)); } } diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Creature.java index 0154ebd771..07cc819ce2 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -571,9 +571,20 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe */ public void onDecay() { - if (Config.DISCONNECT_AFTER_DEATH && isPlayer()) + if (isPlayer()) { - Disconnection.of(getActingPlayer()).deleteMe().defaultSequence(new SystemMessage(SystemMessageId.SIXTY_MIN_HAVE_PASSED_AFTER_THE_DEATH_OF_YOUR_CHARACTER_SO_YOU_WERE_DISCONNECTED_FROM_THE_GAME)); + if (isInsideZone(ZoneId.TIMED_HUNTING)) + { + getActingPlayer().stopTimedHuntingZoneTask(); + abortCast(); + stopMove(null); + teleToLocation(MapRegionManager.getInstance().getTeleToLocation(this, TeleportWhereType.TOWN)); + setInstance(null); + } + else if (Config.DISCONNECT_AFTER_DEATH) + { + Disconnection.of(getActingPlayer()).deleteMe().defaultSequence(new SystemMessage(SystemMessageId.SIXTY_MIN_HAVE_PASSED_AFTER_THE_DEATH_OF_YOUR_CHARACTER_SO_YOU_WERE_DISCONNECTED_FROM_THE_GAME)); + } } else { diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Player.java index d6f971e2fc..435c0fd866 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -383,6 +383,7 @@ import org.l2jmobius.gameserver.network.serverpackets.autoplay.ExAutoPlaySetting import org.l2jmobius.gameserver.network.serverpackets.commission.ExResponseCommissionInfo; import org.l2jmobius.gameserver.network.serverpackets.elementalspirits.ElementalSpiritInfo; import org.l2jmobius.gameserver.network.serverpackets.friend.FriendStatus; +import org.l2jmobius.gameserver.network.serverpackets.huntingzones.TimeRestrictFieldDieLimitTime; import org.l2jmobius.gameserver.network.serverpackets.limitshop.ExBloodyCoinCount; import org.l2jmobius.gameserver.network.serverpackets.pet.PetInfo; import org.l2jmobius.gameserver.network.serverpackets.vip.ReceiveVipInfo; @@ -5099,7 +5100,12 @@ public class Player extends Playable setReputation(newRep < -20 ? newRep : 0); } - if (Config.DISCONNECT_AFTER_DEATH) + if (isInsideZone(ZoneId.TIMED_HUNTING)) + { + DecayTaskManager.getInstance().add(this); + sendPacket(new TimeRestrictFieldDieLimitTime()); + } + else if (Config.DISCONNECT_AFTER_DEATH) { DecayTaskManager.getInstance().add(this); } diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldDieLimitTime.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldDieLimitTime.java new file mode 100644 index 0000000000..d9878455e6 --- /dev/null +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldDieLimitTime.java @@ -0,0 +1,39 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.gameserver.network.serverpackets.huntingzones; + +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.network.OutgoingPackets; +import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; + +/** + * @author NasSeKa + */ +public class TimeRestrictFieldDieLimitTime implements IClientOutgoingPacket +{ + public TimeRestrictFieldDieLimitTime() + { + } + + @Override + public boolean write(PacketWriter packet) + { + OutgoingPackets.EX_TIME_RESTRICT_FIELD_DIE_LIMT_TIME.writeId(packet); + packet.writeD(600); // RemainTime (zone left time) + return true; + } +} \ No newline at end of file diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldUserAlarm.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldUserAlarm.java new file mode 100644 index 0000000000..44b3b22a0e --- /dev/null +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimeRestrictFieldUserAlarm.java @@ -0,0 +1,46 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.gameserver.network.serverpackets.huntingzones; + +import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.model.actor.Player; +import org.l2jmobius.gameserver.network.OutgoingPackets; +import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; + +/** + * @author NasSeKa + */ +public class TimeRestrictFieldUserAlarm implements IClientOutgoingPacket +{ + private final Player _player; + private final int _zoneId; + + public TimeRestrictFieldUserAlarm(Player player, int zoneId) + { + _player = player; + _zoneId = zoneId; + } + + @Override + public boolean write(PacketWriter packet) + { + OutgoingPackets.EX_TIME_RESTRICT_FIELD_USER_ALARM.writeId(packet); + packet.writeD(_zoneId); + packet.writeD(_player.getTimedHuntingZoneRemainingTime(_zoneId) / 1000); // RemainTime (zone left time) + return true; + } +} \ No newline at end of file diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java index 433bd1c05c..ebf213a695 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneChargeResult.java @@ -21,19 +21,21 @@ import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; /** - * @author dontknowdontcare + * @author NasSeKa */ public class TimedHuntingZoneChargeResult implements IClientOutgoingPacket { private final int _zoneId; - private final int _secondsLeft; - private final int _newExtensionValue; + private final int _remainTime; + private final int _refillTime; + private final int _chargeTime; - public TimedHuntingZoneChargeResult(int zoneId, int secondsLeft, int newExtensionValue) + public TimedHuntingZoneChargeResult(int zoneId, int remainTime, int refillTime, int chargeTime) { _zoneId = zoneId; - _secondsLeft = secondsLeft; - _newExtensionValue = newExtensionValue; + _remainTime = remainTime; + _refillTime = refillTime; + _chargeTime = chargeTime; } @Override @@ -41,8 +43,9 @@ public class TimedHuntingZoneChargeResult implements IClientOutgoingPacket { OutgoingPackets.EX_TIME_RESTRICT_FIELD_USER_CHARGE_RESULT.writeId(packet); packet.writeD(_zoneId); - packet.writeD(_secondsLeft); // Remaining Time in zone. - packet.writeD(_newExtensionValue); // New Extension value. + packet.writeD(_remainTime); + packet.writeD(_refillTime); + packet.writeD(_chargeTime); return true; } } diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java index f527d6d08b..e55156077f 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneEnter.java @@ -41,8 +41,8 @@ public class TimedHuntingZoneEnter implements IClientOutgoingPacket OutgoingPackets.EX_TIME_RESTRICT_FIELD_USER_ENTER.writeId(packet); packet.writeC(1); // bEnterSuccess packet.writeD(_zoneId); - packet.writeD((int) ((System.currentTimeMillis() / 60) / 1000)); // nEnterTimeStamp (current time in minutes) - packet.writeD(_player.getTimedHuntingZoneRemainingTime(_zoneId) / 1000); // nRemainTime (zone left time) + packet.writeD((int) (System.currentTimeMillis() / 1000)); // nEnterTimeStamp + packet.writeD((_player.getTimedHuntingZoneRemainingTime(_zoneId) / 1000) + 59); // nRemainTime (zone left time) return true; } } \ No newline at end of file diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/taskmanager/DecayTaskManager.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/taskmanager/DecayTaskManager.java index 8870b309f1..c2726e5368 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/taskmanager/DecayTaskManager.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/taskmanager/DecayTaskManager.java @@ -25,6 +25,7 @@ import org.l2jmobius.commons.threads.ThreadPool; import org.l2jmobius.gameserver.model.actor.Attackable; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate; +import org.l2jmobius.gameserver.model.zone.ZoneId; /** * @author Mobius @@ -97,9 +98,16 @@ public class DecayTaskManager implements Runnable delay += Config.SPOILED_CORPSE_EXTEND_TIME; } - if (Config.DISCONNECT_AFTER_DEATH && creature.isPlayer()) + if (creature.isPlayer()) { - delay = 3600; // 1 hour + if (Config.DISCONNECT_AFTER_DEATH) + { + delay = 3600; // 1 hour + } + if (creature.isInsideZone(ZoneId.TIMED_HUNTING)) + { + delay = 60; // 10 minutes + } } // Add to decay schedules.