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

@@ -65,7 +65,7 @@ public class AddHuntingTime extends AbstractEffect
}
final long currentTime = Chronos.currentTimeMillis();
long endTime = currentTime + player.getTimedHuntingZoneRemainingTime(_zoneId);
final long endTime = currentTime + player.getTimedHuntingZoneRemainingTime(_zoneId);
if ((endTime > currentTime) && (((endTime - currentTime) + _time) >= holder.getMaximumAddedTime()))
{
player.getInventory().addItem("AddHuntingTime effect refund", item.getId(), 1, player, player);
@@ -73,24 +73,23 @@ public class AddHuntingTime extends AbstractEffect
return;
}
final long remainRefill = player.getVariables().getInt(PlayerVariables.HUNTING_ZONE_REMAIN_REFILL_ + _zoneId, holder.getRemainRefillTime());
if ((_time < remainRefill) || (remainRefill == 0))
{
player.getInventory().addItem("AddHuntingTime effect refund", item.getId(), 1, player, player);
player.sendMessage("You cannot exceed the time zone limit.");
return;
}
final long remainTime = player.getVariables().getLong(PlayerVariables.HUNTING_ZONE_TIME + _zoneId, holder.getInitialTime());
player.getVariables().set(PlayerVariables.HUNTING_ZONE_TIME + _zoneId, remainTime + _time);
player.getVariables().set(PlayerVariables.HUNTING_ZONE_REMAIN_REFILL_ + _zoneId, remainRefill - (_time / 1000));
if (player.isInTimedHuntingZone(_zoneId))
{
player.getVariables().set(PlayerVariables.HUNTING_ZONE_TIME + _zoneId, _time + player.getTimedHuntingZoneRemainingTime(_zoneId));
player.startTimedHuntingZone(_zoneId, endTime);
player.sendPacket(new TimedHuntingZoneEnter(player, _zoneId));
}
else
{
if ((endTime + holder.getResetDelay()) < currentTime)
{
endTime = currentTime + holder.getInitialTime();
}
else if (endTime < currentTime)
{
endTime = currentTime;
}
player.getVariables().set(PlayerVariables.HUNTING_ZONE_TIME + _zoneId, (endTime - currentTime) + _time);
}
player.sendPacket(new TimedHuntingZoneList(player));
}

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
}

View File

@@ -65,7 +65,7 @@ public class AddHuntingTime extends AbstractEffect
}
final long currentTime = Chronos.currentTimeMillis();
long endTime = currentTime + player.getTimedHuntingZoneRemainingTime(_zoneId);
final long endTime = currentTime + player.getTimedHuntingZoneRemainingTime(_zoneId);
if ((endTime > currentTime) && (((endTime - currentTime) + _time) >= holder.getMaximumAddedTime()))
{
player.getInventory().addItem("AddHuntingTime effect refund", item.getId(), 1, player, player);
@@ -73,24 +73,23 @@ public class AddHuntingTime extends AbstractEffect
return;
}
final long remainRefill = player.getVariables().getInt(PlayerVariables.HUNTING_ZONE_REMAIN_REFILL_ + _zoneId, holder.getRemainRefillTime());
if ((_time < remainRefill) || (remainRefill == 0))
{
player.getInventory().addItem("AddHuntingTime effect refund", item.getId(), 1, player, player);
player.sendMessage("You cannot exceed the time zone limit.");
return;
}
final long remainTime = player.getVariables().getLong(PlayerVariables.HUNTING_ZONE_TIME + _zoneId, holder.getInitialTime());
player.getVariables().set(PlayerVariables.HUNTING_ZONE_TIME + _zoneId, remainTime + _time);
player.getVariables().set(PlayerVariables.HUNTING_ZONE_REMAIN_REFILL_ + _zoneId, remainRefill - (_time / 1000));
if (player.isInTimedHuntingZone(_zoneId))
{
player.getVariables().set(PlayerVariables.HUNTING_ZONE_TIME + _zoneId, _time + player.getTimedHuntingZoneRemainingTime(_zoneId));
player.startTimedHuntingZone(_zoneId, endTime);
player.sendPacket(new TimedHuntingZoneEnter(player, _zoneId));
}
else
{
if ((endTime + holder.getResetDelay()) < currentTime)
{
endTime = currentTime + holder.getInitialTime();
}
else if (endTime < currentTime)
{
endTime = currentTime;
}
player.getVariables().set(PlayerVariables.HUNTING_ZONE_TIME + _zoneId, (endTime - currentTime) + _time);
}
player.sendPacket(new TimedHuntingZoneList(player));
}

View File

@@ -442,10 +442,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)
@@ -458,6 +459,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();
}
}
@@ -476,10 +478,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)
@@ -492,6 +495,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_";
public static final String FAVORITE_TELEPORTS = "FAVORITE_TELEPORTS";
public static final String HOMUNCULUS_HP_POINTS = "HOMUNCULUS_HP_POINTS";
public static final String HOMUNCULUS_SP_POINTS = "HOMUNCULUS_SP_POINTS";

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 (272 C to D)
packet.writeC(0); // bUserBound

View File

@@ -74,9 +74,9 @@
<enterLocation>90327,198818,-3280</enterLocation>
<initialTime>3600</initialTime> <!-- 1 hour -->
<resetDelay>36000</resetDelay> <!-- 10 hours -->
<maxAddedTime>3600</maxAddedTime> <!-- 1 hour -->
<remainRefillTime>43200</remainRefillTime>
<refillTimeMax>3600</refillTimeMax>
<maxAddedTime>21600</maxAddedTime> <!-- 3 hours -->
<remainRefillTime>18000</remainRefillTime>
<refillTimeMax>36000</refillTimeMax>
<entryFee>150000</entryFee>
<minLevel>100</minLevel>
<maxLevel>130</maxLevel>

View File

@@ -65,7 +65,7 @@ public class AddHuntingTime extends AbstractEffect
}
final long currentTime = Chronos.currentTimeMillis();
long endTime = currentTime + player.getTimedHuntingZoneRemainingTime(_zoneId);
final long endTime = currentTime + player.getTimedHuntingZoneRemainingTime(_zoneId);
if ((endTime > currentTime) && (((endTime - currentTime) + _time) >= holder.getMaximumAddedTime()))
{
player.getInventory().addItem("AddHuntingTime effect refund", item.getId(), 1, player, player);
@@ -73,24 +73,23 @@ public class AddHuntingTime extends AbstractEffect
return;
}
final long remainRefill = player.getVariables().getInt(PlayerVariables.HUNTING_ZONE_REMAIN_REFILL_ + _zoneId, holder.getRemainRefillTime());
if ((_time < remainRefill) || (remainRefill == 0))
{
player.getInventory().addItem("AddHuntingTime effect refund", item.getId(), 1, player, player);
player.sendMessage("You cannot exceed the time zone limit.");
return;
}
final long remainTime = player.getVariables().getLong(PlayerVariables.HUNTING_ZONE_TIME + _zoneId, holder.getInitialTime());
player.getVariables().set(PlayerVariables.HUNTING_ZONE_TIME + _zoneId, remainTime + _time);
player.getVariables().set(PlayerVariables.HUNTING_ZONE_REMAIN_REFILL_ + _zoneId, remainRefill - (_time / 1000));
if (player.isInTimedHuntingZone(_zoneId))
{
player.getVariables().set(PlayerVariables.HUNTING_ZONE_TIME + _zoneId, _time + player.getTimedHuntingZoneRemainingTime(_zoneId));
player.startTimedHuntingZone(_zoneId, endTime);
player.sendPacket(new TimedHuntingZoneEnter(player, _zoneId));
}
else
{
if ((endTime + holder.getResetDelay()) < currentTime)
{
endTime = currentTime + holder.getInitialTime();
}
else if (endTime < currentTime)
{
endTime = currentTime;
}
player.getVariables().set(PlayerVariables.HUNTING_ZONE_TIME + _zoneId, (endTime - currentTime) + _time);
}
player.sendPacket(new TimedHuntingZoneList(player));
}

View File

@@ -442,10 +442,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)
@@ -458,6 +459,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();
}
}
@@ -476,10 +478,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)
@@ -492,6 +495,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_";
public static final String FAVORITE_TELEPORTS = "FAVORITE_TELEPORTS";
public static final String HOMUNCULUS_HP_POINTS = "HOMUNCULUS_HP_POINTS";
public static final String HOMUNCULUS_SP_POINTS = "HOMUNCULUS_SP_POINTS";

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 (272 C to D)
packet.writeC(0); // bUserBound

View File

@@ -86,9 +86,9 @@
<enterLocation>90327,198818,-3280</enterLocation>
<initialTime>3600</initialTime> <!-- 1 hour -->
<resetDelay>36000</resetDelay> <!-- 10 hours -->
<maxAddedTime>3600</maxAddedTime> <!-- 1 hour -->
<remainRefillTime>43200</remainRefillTime>
<refillTimeMax>3600</refillTimeMax>
<maxAddedTime>21600</maxAddedTime> <!-- 3 hours -->
<remainRefillTime>18000</remainRefillTime>
<refillTimeMax>36000</refillTimeMax>
<entryFee>150000</entryFee>
<minLevel>100</minLevel>
<maxLevel>130</maxLevel>

View File

@@ -65,7 +65,7 @@ public class AddHuntingTime extends AbstractEffect
}
final long currentTime = Chronos.currentTimeMillis();
long endTime = currentTime + player.getTimedHuntingZoneRemainingTime(_zoneId);
final long endTime = currentTime + player.getTimedHuntingZoneRemainingTime(_zoneId);
if ((endTime > currentTime) && (((endTime - currentTime) + _time) >= holder.getMaximumAddedTime()))
{
player.getInventory().addItem("AddHuntingTime effect refund", item.getId(), 1, player, player);
@@ -73,24 +73,23 @@ public class AddHuntingTime extends AbstractEffect
return;
}
final long remainRefill = player.getVariables().getInt(PlayerVariables.HUNTING_ZONE_REMAIN_REFILL_ + _zoneId, holder.getRemainRefillTime());
if ((_time < remainRefill) || (remainRefill == 0))
{
player.getInventory().addItem("AddHuntingTime effect refund", item.getId(), 1, player, player);
player.sendMessage("You cannot exceed the time zone limit.");
return;
}
final long remainTime = player.getVariables().getLong(PlayerVariables.HUNTING_ZONE_TIME + _zoneId, holder.getInitialTime());
player.getVariables().set(PlayerVariables.HUNTING_ZONE_TIME + _zoneId, remainTime + _time);
player.getVariables().set(PlayerVariables.HUNTING_ZONE_REMAIN_REFILL_ + _zoneId, remainRefill - (_time / 1000));
if (player.isInTimedHuntingZone(_zoneId))
{
player.getVariables().set(PlayerVariables.HUNTING_ZONE_TIME + _zoneId, _time + player.getTimedHuntingZoneRemainingTime(_zoneId));
player.startTimedHuntingZone(_zoneId, endTime);
player.sendPacket(new TimedHuntingZoneEnter(player, _zoneId));
}
else
{
if ((endTime + holder.getResetDelay()) < currentTime)
{
endTime = currentTime + holder.getInitialTime();
}
else if (endTime < currentTime)
{
endTime = currentTime;
}
player.getVariables().set(PlayerVariables.HUNTING_ZONE_TIME + _zoneId, (endTime - currentTime) + _time);
}
player.sendPacket(new TimedHuntingZoneList(player));
}

View File

@@ -442,10 +442,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)
@@ -458,6 +459,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();
}
}
@@ -476,10 +478,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)
@@ -492,6 +495,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_";
public static final String FAVORITE_TELEPORTS = "FAVORITE_TELEPORTS";
public static final String HOMUNCULUS_HP_POINTS = "HOMUNCULUS_HP_POINTS";
public static final String HOMUNCULUS_SP_POINTS = "HOMUNCULUS_SP_POINTS";

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 (272 C to D)
packet.writeC(0); // bUserBound

View File

@@ -65,7 +65,7 @@ public class AddHuntingTime extends AbstractEffect
}
final long currentTime = Chronos.currentTimeMillis();
long endTime = currentTime + player.getTimedHuntingZoneRemainingTime(_zoneId);
final long endTime = currentTime + player.getTimedHuntingZoneRemainingTime(_zoneId);
if ((endTime > currentTime) && (((endTime - currentTime) + _time) >= holder.getMaximumAddedTime()))
{
player.getInventory().addItem("AddHuntingTime effect refund", item.getId(), 1, player, player);
@@ -73,24 +73,23 @@ public class AddHuntingTime extends AbstractEffect
return;
}
final long remainRefill = player.getVariables().getInt(PlayerVariables.HUNTING_ZONE_REMAIN_REFILL_ + _zoneId, holder.getRemainRefillTime());
if ((_time < remainRefill) || (remainRefill == 0))
{
player.getInventory().addItem("AddHuntingTime effect refund", item.getId(), 1, player, player);
player.sendMessage("You cannot exceed the time zone limit.");
return;
}
final long remainTime = player.getVariables().getLong(PlayerVariables.HUNTING_ZONE_TIME + _zoneId, holder.getInitialTime());
player.getVariables().set(PlayerVariables.HUNTING_ZONE_TIME + _zoneId, remainTime + _time);
player.getVariables().set(PlayerVariables.HUNTING_ZONE_REMAIN_REFILL_ + _zoneId, remainRefill - (_time / 1000));
if (player.isInTimedHuntingZone(_zoneId))
{
player.getVariables().set(PlayerVariables.HUNTING_ZONE_TIME + _zoneId, _time + player.getTimedHuntingZoneRemainingTime(_zoneId));
player.startTimedHuntingZone(_zoneId, endTime);
player.sendPacket(new TimedHuntingZoneEnter(player, _zoneId));
}
else
{
if ((endTime + holder.getResetDelay()) < currentTime)
{
endTime = currentTime + holder.getInitialTime();
}
else if (endTime < currentTime)
{
endTime = currentTime;
}
player.getVariables().set(PlayerVariables.HUNTING_ZONE_TIME + _zoneId, (endTime - currentTime) + _time);
}
player.sendPacket(new TimedHuntingZoneList(player));
}

View File

@@ -378,10 +378,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)
@@ -394,6 +395,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();
}
}
@@ -412,10 +414,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)
@@ -428,6 +431,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

@@ -61,6 +61,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
}

View File

@@ -65,7 +65,7 @@ public class AddHuntingTime extends AbstractEffect
}
final long currentTime = Chronos.currentTimeMillis();
long endTime = currentTime + player.getTimedHuntingZoneRemainingTime(_zoneId);
final long endTime = currentTime + player.getTimedHuntingZoneRemainingTime(_zoneId);
if ((endTime > currentTime) && (((endTime - currentTime) + _time) >= holder.getMaximumAddedTime()))
{
player.getInventory().addItem("AddHuntingTime effect refund", item.getId(), 1, player, player);
@@ -73,24 +73,23 @@ public class AddHuntingTime extends AbstractEffect
return;
}
final long remainRefill = player.getVariables().getInt(PlayerVariables.HUNTING_ZONE_REMAIN_REFILL_ + _zoneId, holder.getRemainRefillTime());
if ((_time < remainRefill) || (remainRefill == 0))
{
player.getInventory().addItem("AddHuntingTime effect refund", item.getId(), 1, player, player);
player.sendMessage("You cannot exceed the time zone limit.");
return;
}
final long remainTime = player.getVariables().getLong(PlayerVariables.HUNTING_ZONE_TIME + _zoneId, holder.getInitialTime());
player.getVariables().set(PlayerVariables.HUNTING_ZONE_TIME + _zoneId, remainTime + _time);
player.getVariables().set(PlayerVariables.HUNTING_ZONE_REMAIN_REFILL_ + _zoneId, remainRefill - (_time / 1000));
if (player.isInTimedHuntingZone(_zoneId))
{
player.getVariables().set(PlayerVariables.HUNTING_ZONE_TIME + _zoneId, _time + player.getTimedHuntingZoneRemainingTime(_zoneId));
player.startTimedHuntingZone(_zoneId, endTime);
player.sendPacket(new TimedHuntingZoneEnter(player, _zoneId));
}
else
{
if ((endTime + holder.getResetDelay()) < currentTime)
{
endTime = currentTime + holder.getInitialTime();
}
else if (endTime < currentTime)
{
endTime = currentTime;
}
player.getVariables().set(PlayerVariables.HUNTING_ZONE_TIME + _zoneId, (endTime - currentTime) + _time);
}
player.sendPacket(new TimedHuntingZoneList(player));
}

View File

@@ -378,10 +378,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)
@@ -394,6 +395,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();
}
}
@@ -412,10 +414,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)
@@ -428,6 +431,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

@@ -61,6 +61,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_";
public static final String SAYHA_GRACE_SUPPORT_ENDTIME = "SAYHA_GRACE_SUPPORT_ENDTIME";
public static final String LIMITED_SAYHA_GRACE_ENDTIME = "LIMITED_SAYHA_GRACE_ENDTIME";
public static final String MAGIC_LAMP_EXP = "MAGIC_LAMP_EXP";

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 (272 C to D)
packet.writeC(0); // bUserBound

View File

@@ -65,7 +65,7 @@ public class AddHuntingTime extends AbstractEffect
}
final long currentTime = Chronos.currentTimeMillis();
long endTime = currentTime + player.getTimedHuntingZoneRemainingTime(_zoneId);
final long endTime = currentTime + player.getTimedHuntingZoneRemainingTime(_zoneId);
if ((endTime > currentTime) && (((endTime - currentTime) + _time) >= holder.getMaximumAddedTime()))
{
player.getInventory().addItem("AddHuntingTime effect refund", item.getId(), 1, player, player);
@@ -73,24 +73,23 @@ public class AddHuntingTime extends AbstractEffect
return;
}
final long remainRefill = player.getVariables().getInt(PlayerVariables.HUNTING_ZONE_REMAIN_REFILL_ + _zoneId, holder.getRemainRefillTime());
if ((_time < remainRefill) || (remainRefill == 0))
{
player.getInventory().addItem("AddHuntingTime effect refund", item.getId(), 1, player, player);
player.sendMessage("You cannot exceed the time zone limit.");
return;
}
final long remainTime = player.getVariables().getLong(PlayerVariables.HUNTING_ZONE_TIME + _zoneId, holder.getInitialTime());
player.getVariables().set(PlayerVariables.HUNTING_ZONE_TIME + _zoneId, remainTime + _time);
player.getVariables().set(PlayerVariables.HUNTING_ZONE_REMAIN_REFILL_ + _zoneId, remainRefill - (_time / 1000));
if (player.isInTimedHuntingZone(_zoneId))
{
player.getVariables().set(PlayerVariables.HUNTING_ZONE_TIME + _zoneId, _time + player.getTimedHuntingZoneRemainingTime(_zoneId));
player.startTimedHuntingZone(_zoneId, endTime);
player.sendPacket(new TimedHuntingZoneEnter(player, _zoneId));
}
else
{
if ((endTime + holder.getResetDelay()) < currentTime)
{
endTime = currentTime + holder.getInitialTime();
}
else if (endTime < currentTime)
{
endTime = currentTime;
}
player.getVariables().set(PlayerVariables.HUNTING_ZONE_TIME + _zoneId, (endTime - currentTime) + _time);
}
player.sendPacket(new TimedHuntingZoneList(player));
}

View File

@@ -418,10 +418,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)
@@ -434,6 +435,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();
}
}
@@ -452,10 +454,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)
@@ -468,6 +471,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

@@ -61,6 +61,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_";
public static final String SAYHA_GRACE_SUPPORT_ENDTIME = "SAYHA_GRACE_SUPPORT_ENDTIME";
public static final String LIMITED_SAYHA_GRACE_ENDTIME = "LIMITED_SAYHA_GRACE_ENDTIME";
public static final String MAGIC_LAMP_EXP = "MAGIC_LAMP_EXP";

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 (272 C to D)
packet.writeC(0); // bUserBound

View File

@@ -65,7 +65,7 @@ public class AddHuntingTime extends AbstractEffect
}
final long currentTime = Chronos.currentTimeMillis();
long endTime = currentTime + player.getTimedHuntingZoneRemainingTime(_zoneId);
final long endTime = currentTime + player.getTimedHuntingZoneRemainingTime(_zoneId);
if ((endTime > currentTime) && (((endTime - currentTime) + _time) >= holder.getMaximumAddedTime()))
{
player.getInventory().addItem("AddHuntingTime effect refund", item.getId(), 1, player, player);
@@ -73,24 +73,23 @@ public class AddHuntingTime extends AbstractEffect
return;
}
final long remainRefill = player.getVariables().getInt(PlayerVariables.HUNTING_ZONE_REMAIN_REFILL_ + _zoneId, holder.getRemainRefillTime());
if ((_time < remainRefill) || (remainRefill == 0))
{
player.getInventory().addItem("AddHuntingTime effect refund", item.getId(), 1, player, player);
player.sendMessage("You cannot exceed the time zone limit.");
return;
}
final long remainTime = player.getVariables().getLong(PlayerVariables.HUNTING_ZONE_TIME + _zoneId, holder.getInitialTime());
player.getVariables().set(PlayerVariables.HUNTING_ZONE_TIME + _zoneId, remainTime + _time);
player.getVariables().set(PlayerVariables.HUNTING_ZONE_REMAIN_REFILL_ + _zoneId, remainRefill - (_time / 1000));
if (player.isInTimedHuntingZone(_zoneId))
{
player.getVariables().set(PlayerVariables.HUNTING_ZONE_TIME + _zoneId, _time + player.getTimedHuntingZoneRemainingTime(_zoneId));
player.startTimedHuntingZone(_zoneId, endTime);
player.sendPacket(new TimedHuntingZoneEnter(player, _zoneId));
}
else
{
if ((endTime + holder.getResetDelay()) < currentTime)
{
endTime = currentTime + holder.getInitialTime();
}
else if (endTime < currentTime)
{
endTime = currentTime;
}
player.getVariables().set(PlayerVariables.HUNTING_ZONE_TIME + _zoneId, (endTime - currentTime) + _time);
}
player.sendPacket(new TimedHuntingZoneList(player));
}

View File

@@ -418,10 +418,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)
@@ -434,6 +435,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();
}
}
@@ -452,10 +454,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)
@@ -468,6 +471,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

@@ -61,6 +61,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_";
public static final String SAYHA_GRACE_SUPPORT_ENDTIME = "SAYHA_GRACE_SUPPORT_ENDTIME";
public static final String LIMITED_SAYHA_GRACE_ENDTIME = "LIMITED_SAYHA_GRACE_ENDTIME";
public static final String MAGIC_LAMP_EXP = "MAGIC_LAMP_EXP";

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 (272 C to D)
packet.writeC(0); // bUserBound