Addition of time stone limited use.

Contributed by nasseka.
This commit is contained in:
MobiusDevelopment
2022-01-24 03:57:39 +00:00
parent 1cdcae949b
commit ce1195253a
34 changed files with 190 additions and 158 deletions

View File

@@ -403,10 +403,11 @@ public class DailyTaskManager
// Update data for offline players.
try (Connection con = DatabaseFactory.getConnection();
PreparedStatement ps = con.prepareStatement("DELETE FROM character_variables WHERE var IN (?, ?)"))
PreparedStatement ps = con.prepareStatement("DELETE FROM character_variables WHERE var IN (?, ?, ?)"))
{
ps.setString(1, PlayerVariables.HUNTING_ZONE_ENTRY + holder.getZoneId());
ps.setString(2, PlayerVariables.HUNTING_ZONE_TIME + holder.getZoneId());
ps.setString(3, PlayerVariables.HUNTING_ZONE_REMAIN_REFILL_ + holder.getZoneId());
ps.executeUpdate();
}
catch (Exception e)
@@ -419,6 +420,7 @@ public class DailyTaskManager
{
player.getVariables().remove(PlayerVariables.HUNTING_ZONE_ENTRY + holder.getZoneId());
player.getVariables().remove(PlayerVariables.HUNTING_ZONE_TIME + holder.getZoneId());
player.getVariables().remove(PlayerVariables.HUNTING_ZONE_REMAIN_REFILL_ + holder.getZoneId());
player.getVariables().storeMe();
}
}
@@ -437,10 +439,11 @@ public class DailyTaskManager
// Update data for offline players.
try (Connection con = DatabaseFactory.getConnection();
PreparedStatement ps = con.prepareStatement("DELETE FROM character_variables WHERE var IN (?, ?)"))
PreparedStatement ps = con.prepareStatement("DELETE FROM character_variables WHERE var IN (?, ?, ?)"))
{
ps.setString(1, PlayerVariables.HUNTING_ZONE_ENTRY + holder.getZoneId());
ps.setString(2, PlayerVariables.HUNTING_ZONE_TIME + holder.getZoneId());
ps.setString(3, PlayerVariables.HUNTING_ZONE_REMAIN_REFILL_ + holder.getZoneId());
ps.executeUpdate();
}
catch (Exception e)
@@ -453,6 +456,7 @@ public class DailyTaskManager
{
player.getVariables().remove(PlayerVariables.HUNTING_ZONE_ENTRY + holder.getZoneId());
player.getVariables().remove(PlayerVariables.HUNTING_ZONE_TIME + holder.getZoneId());
player.getVariables().remove(PlayerVariables.HUNTING_ZONE_REMAIN_REFILL_ + holder.getZoneId());
player.getVariables().storeMe();
}
}

View File

@@ -67,6 +67,7 @@ public class PlayerVariables extends AbstractVariables
public static final String AUTO_USE_SHORTCUTS = "AUTO_USE_SHORTCUTS";
public static final String HUNTING_ZONE_ENTRY = "HUNTING_ZONE_ENTRY_";
public static final String HUNTING_ZONE_TIME = "HUNTING_ZONE_TIME_";
public static final String HUNTING_ZONE_REMAIN_REFILL_ = "HUNTING_ZONE_REMAIN_REFILL_";
private final int _objectId;

View File

@@ -21,6 +21,7 @@ import org.l2jmobius.commons.util.Chronos;
import org.l2jmobius.gameserver.data.xml.TimedHuntingZoneData;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.holders.TimedHuntingZoneHolder;
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
import org.l2jmobius.gameserver.model.zone.ZoneId;
import org.l2jmobius.gameserver.network.OutgoingPackets;
import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
@@ -43,7 +44,6 @@ public class TimedHuntingZoneList implements IClientOutgoingPacket
public boolean write(PacketWriter packet)
{
OutgoingPackets.EX_TIME_RESTRICT_FIELD_LIST.writeId(packet);
int remainingTime;
final long currentTime = Chronos.currentTimeMillis();
packet.writeD(TimedHuntingZoneData.getInstance().getSize()); // zone count
for (TimedHuntingZoneHolder holder : TimedHuntingZoneData.getInstance().getAllHuntingZones())
@@ -56,14 +56,14 @@ public class TimedHuntingZoneList implements IClientOutgoingPacket
packet.writeD(holder.getMinLevel());
packet.writeD(holder.getMaxLevel());
packet.writeD(holder.getInitialTime() / 1000); // remain time base
remainingTime = _player.getTimedHuntingZoneRemainingTime(holder.getZoneId());
int remainingTime = _player.getTimedHuntingZoneRemainingTime(holder.getZoneId());
if ((remainingTime == 0) && ((_player.getTimedHuntingZoneInitialEntry(holder.getZoneId()) + holder.getResetDelay()) < currentTime))
{
remainingTime = holder.getInitialTime();
}
packet.writeD(remainingTime / 1000); // remain time
packet.writeD(holder.getMaximumAddedTime() / 1000);
packet.writeD(holder.getRemainRefillTime());
packet.writeD(_player.getVariables().getInt(PlayerVariables.HUNTING_ZONE_REMAIN_REFILL_ + holder.getZoneId(), holder.getRemainRefillTime()));
packet.writeD(holder.getRefillTimeMax());
packet.writeC(_isInTimedHuntingZone ? 0 : 1); // field activated
}