From 75bea9840c655d95cd488ae1013a861126ff4c82 Mon Sep 17 00:00:00 2001 From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com> Date: Fri, 28 Oct 2022 23:49:20 +0000 Subject: [PATCH] Addition of Time Hunting zonePremiumUserOnly parameter. Contributed by Fakee. --- .../dist/game/data/xsd/TimedHuntingZoneData.xsd | 1 + .../gameserver/data/xml/TimedHuntingZoneData.java | 8 +++++++- .../gameserver/model/holders/TimedHuntingZoneHolder.java | 9 ++++++++- .../serverpackets/huntingzones/TimedHuntingZoneList.java | 4 ++-- .../dist/game/data/xsd/TimedHuntingZoneData.xsd | 1 + .../gameserver/data/xml/TimedHuntingZoneData.java | 8 +++++++- .../gameserver/model/holders/TimedHuntingZoneHolder.java | 9 ++++++++- .../serverpackets/huntingzones/TimedHuntingZoneList.java | 4 ++-- .../dist/game/data/xsd/TimedHuntingZoneData.xsd | 1 + .../gameserver/data/xml/TimedHuntingZoneData.java | 8 +++++++- .../gameserver/model/holders/TimedHuntingZoneHolder.java | 9 ++++++++- .../serverpackets/huntingzones/TimedHuntingZoneList.java | 4 ++-- .../dist/game/data/xsd/TimedHuntingZoneData.xsd | 1 + .../gameserver/data/xml/TimedHuntingZoneData.java | 8 +++++++- .../gameserver/model/holders/TimedHuntingZoneHolder.java | 9 ++++++++- .../serverpackets/huntingzones/TimedHuntingZoneList.java | 4 ++-- .../dist/game/data/xsd/TimedHuntingZoneData.xsd | 1 + .../gameserver/data/xml/TimedHuntingZoneData.java | 8 +++++++- .../gameserver/model/holders/TimedHuntingZoneHolder.java | 9 ++++++++- .../serverpackets/huntingzones/TimedHuntingZoneList.java | 4 ++-- .../dist/game/data/xsd/TimedHuntingZoneData.xsd | 1 + .../gameserver/data/xml/TimedHuntingZoneData.java | 8 +++++++- .../gameserver/model/holders/TimedHuntingZoneHolder.java | 9 ++++++++- .../serverpackets/huntingzones/TimedHuntingZoneList.java | 4 ++-- .../dist/game/data/xsd/TimedHuntingZoneData.xsd | 1 + .../gameserver/data/xml/TimedHuntingZoneData.java | 8 +++++++- .../gameserver/model/holders/TimedHuntingZoneHolder.java | 9 ++++++++- .../serverpackets/huntingzones/TimedHuntingZoneList.java | 4 ++-- .../dist/game/data/xsd/TimedHuntingZoneData.xsd | 1 + .../gameserver/data/xml/TimedHuntingZoneData.java | 8 +++++++- .../gameserver/model/holders/TimedHuntingZoneHolder.java | 9 ++++++++- .../serverpackets/huntingzones/TimedHuntingZoneList.java | 4 ++-- 32 files changed, 144 insertions(+), 32 deletions(-) diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/xsd/TimedHuntingZoneData.xsd b/L2J_Mobius_08.2_Homunculus/dist/game/data/xsd/TimedHuntingZoneData.xsd index fd6203a715..cb685eca0c 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/xsd/TimedHuntingZoneData.xsd +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/xsd/TimedHuntingZoneData.xsd @@ -22,6 +22,7 @@ + diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/data/xml/TimedHuntingZoneData.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/data/xml/TimedHuntingZoneData.java index 35d6d60f92..8640a5f5d5 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/data/xml/TimedHuntingZoneData.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/data/xml/TimedHuntingZoneData.java @@ -93,6 +93,7 @@ public class TimedHuntingZoneData implements IXmlReader boolean soloInstance = true; boolean weekly = false; boolean useWorldPrefix = false; + boolean zonePremiumUserOnly = false; Location enterLocation = null; Location exitLocation = null; for (Node zoneNode = listNode.getFirstChild(); zoneNode != null; zoneNode = zoneNode.getNextSibling()) @@ -186,9 +187,14 @@ public class TimedHuntingZoneData implements IXmlReader useWorldPrefix = Boolean.parseBoolean(zoneNode.getTextContent()); break; } + case "zonePremiumUserOnly": + { + zonePremiumUserOnly = Boolean.parseBoolean(zoneNode.getTextContent()); + break; + } } } - _timedHuntingZoneData.put(id, new TimedHuntingZoneHolder(id, name, initialTime, maxAddedTime, resetDelay, entryItemId, entryFee, minLevel, maxLevel, remainRefillTime, refillTimeMax, pvpZone, noPvpZone, instanceId, soloInstance, weekly, useWorldPrefix, enterLocation, exitLocation)); + _timedHuntingZoneData.put(id, new TimedHuntingZoneHolder(id, name, initialTime, maxAddedTime, resetDelay, entryItemId, entryFee, minLevel, maxLevel, remainRefillTime, refillTimeMax, pvpZone, noPvpZone, instanceId, soloInstance, weekly, useWorldPrefix, zonePremiumUserOnly, enterLocation, exitLocation)); } } } diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/holders/TimedHuntingZoneHolder.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/holders/TimedHuntingZoneHolder.java index 30f95830b7..719beba1f5 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/holders/TimedHuntingZoneHolder.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/holders/TimedHuntingZoneHolder.java @@ -41,12 +41,13 @@ public class TimedHuntingZoneHolder private final boolean _soloInstance; private final boolean _weekly; private final boolean _useWorldPrefix; + private final boolean _zonePremiumUserOnly; private final Location _enterLocation; private final Location _exitLocation; private final int _mapX; private final int _mapY; - public TimedHuntingZoneHolder(int id, String name, int initialTime, int maximumAddedTime, int resetDelay, int entryItemId, int entryFee, int minLevel, int maxLevel, int remainRefillTime, int refillTimeMax, boolean pvpZone, boolean noPvpZone, int instanceId, boolean soloInstance, boolean weekly, boolean useWorldPrefix, Location enterLocation, Location exitLocation) + public TimedHuntingZoneHolder(int id, String name, int initialTime, int maximumAddedTime, int resetDelay, int entryItemId, int entryFee, int minLevel, int maxLevel, int remainRefillTime, int refillTimeMax, boolean pvpZone, boolean noPvpZone, int instanceId, boolean soloInstance, boolean weekly, boolean useWorldPrefix, boolean zonePremiumUserOnly, Location enterLocation, Location exitLocation) { _id = id; _name = name; @@ -65,6 +66,7 @@ public class TimedHuntingZoneHolder _soloInstance = soloInstance; _weekly = weekly; _useWorldPrefix = useWorldPrefix; + _zonePremiumUserOnly = zonePremiumUserOnly; _enterLocation = enterLocation; _exitLocation = exitLocation; _mapX = ((_enterLocation.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN; @@ -156,6 +158,11 @@ public class TimedHuntingZoneHolder return _useWorldPrefix; } + public boolean zonePremiumUserOnly() + { + return _zonePremiumUserOnly; + } + public Location getEnterLocation() { return _enterLocation; diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneList.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneList.java index 36d05e9317..1606e8cd45 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneList.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneList.java @@ -67,8 +67,8 @@ public class TimedHuntingZoneList implements IClientOutgoingPacket packet.writeC(_isInTimedHuntingZone ? 0 : 1); // field activated (272 C to D) packet.writeC(0); // bUserBound packet.writeC(0); // bCanReEnter - packet.writeC(0); // bIsInZonePCCafeUserOnly - packet.writeC(0); // bIsPCCafeUser + packet.writeC(holder.zonePremiumUserOnly() ? 1 : 0); // bIsInZonePCCafeUserOnly + packet.writeC(_player.hasPremiumStatus() ? 1 : 0); // bIsPCCafeUser packet.writeC(holder.useWorldPrefix() ? 1 : 0); // bWorldInZone } return true; diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/xsd/TimedHuntingZoneData.xsd b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/xsd/TimedHuntingZoneData.xsd index fd6203a715..cb685eca0c 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/xsd/TimedHuntingZoneData.xsd +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/xsd/TimedHuntingZoneData.xsd @@ -22,6 +22,7 @@ + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/data/xml/TimedHuntingZoneData.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/data/xml/TimedHuntingZoneData.java index 35d6d60f92..8640a5f5d5 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/data/xml/TimedHuntingZoneData.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/data/xml/TimedHuntingZoneData.java @@ -93,6 +93,7 @@ public class TimedHuntingZoneData implements IXmlReader boolean soloInstance = true; boolean weekly = false; boolean useWorldPrefix = false; + boolean zonePremiumUserOnly = false; Location enterLocation = null; Location exitLocation = null; for (Node zoneNode = listNode.getFirstChild(); zoneNode != null; zoneNode = zoneNode.getNextSibling()) @@ -186,9 +187,14 @@ public class TimedHuntingZoneData implements IXmlReader useWorldPrefix = Boolean.parseBoolean(zoneNode.getTextContent()); break; } + case "zonePremiumUserOnly": + { + zonePremiumUserOnly = Boolean.parseBoolean(zoneNode.getTextContent()); + break; + } } } - _timedHuntingZoneData.put(id, new TimedHuntingZoneHolder(id, name, initialTime, maxAddedTime, resetDelay, entryItemId, entryFee, minLevel, maxLevel, remainRefillTime, refillTimeMax, pvpZone, noPvpZone, instanceId, soloInstance, weekly, useWorldPrefix, enterLocation, exitLocation)); + _timedHuntingZoneData.put(id, new TimedHuntingZoneHolder(id, name, initialTime, maxAddedTime, resetDelay, entryItemId, entryFee, minLevel, maxLevel, remainRefillTime, refillTimeMax, pvpZone, noPvpZone, instanceId, soloInstance, weekly, useWorldPrefix, zonePremiumUserOnly, enterLocation, exitLocation)); } } } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/holders/TimedHuntingZoneHolder.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/holders/TimedHuntingZoneHolder.java index 30f95830b7..719beba1f5 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/holders/TimedHuntingZoneHolder.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/holders/TimedHuntingZoneHolder.java @@ -41,12 +41,13 @@ public class TimedHuntingZoneHolder private final boolean _soloInstance; private final boolean _weekly; private final boolean _useWorldPrefix; + private final boolean _zonePremiumUserOnly; private final Location _enterLocation; private final Location _exitLocation; private final int _mapX; private final int _mapY; - public TimedHuntingZoneHolder(int id, String name, int initialTime, int maximumAddedTime, int resetDelay, int entryItemId, int entryFee, int minLevel, int maxLevel, int remainRefillTime, int refillTimeMax, boolean pvpZone, boolean noPvpZone, int instanceId, boolean soloInstance, boolean weekly, boolean useWorldPrefix, Location enterLocation, Location exitLocation) + public TimedHuntingZoneHolder(int id, String name, int initialTime, int maximumAddedTime, int resetDelay, int entryItemId, int entryFee, int minLevel, int maxLevel, int remainRefillTime, int refillTimeMax, boolean pvpZone, boolean noPvpZone, int instanceId, boolean soloInstance, boolean weekly, boolean useWorldPrefix, boolean zonePremiumUserOnly, Location enterLocation, Location exitLocation) { _id = id; _name = name; @@ -65,6 +66,7 @@ public class TimedHuntingZoneHolder _soloInstance = soloInstance; _weekly = weekly; _useWorldPrefix = useWorldPrefix; + _zonePremiumUserOnly = zonePremiumUserOnly; _enterLocation = enterLocation; _exitLocation = exitLocation; _mapX = ((_enterLocation.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN; @@ -156,6 +158,11 @@ public class TimedHuntingZoneHolder return _useWorldPrefix; } + public boolean zonePremiumUserOnly() + { + return _zonePremiumUserOnly; + } + public Location getEnterLocation() { return _enterLocation; diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneList.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneList.java index 36d05e9317..1606e8cd45 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneList.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneList.java @@ -67,8 +67,8 @@ public class TimedHuntingZoneList implements IClientOutgoingPacket packet.writeC(_isInTimedHuntingZone ? 0 : 1); // field activated (272 C to D) packet.writeC(0); // bUserBound packet.writeC(0); // bCanReEnter - packet.writeC(0); // bIsInZonePCCafeUserOnly - packet.writeC(0); // bIsPCCafeUser + packet.writeC(holder.zonePremiumUserOnly() ? 1 : 0); // bIsInZonePCCafeUserOnly + packet.writeC(_player.hasPremiumStatus() ? 1 : 0); // bIsPCCafeUser packet.writeC(holder.useWorldPrefix() ? 1 : 0); // bWorldInZone } return true; diff --git a/L2J_Mobius_10.2_MasterClass/dist/game/data/xsd/TimedHuntingZoneData.xsd b/L2J_Mobius_10.2_MasterClass/dist/game/data/xsd/TimedHuntingZoneData.xsd index fd6203a715..cb685eca0c 100644 --- a/L2J_Mobius_10.2_MasterClass/dist/game/data/xsd/TimedHuntingZoneData.xsd +++ b/L2J_Mobius_10.2_MasterClass/dist/game/data/xsd/TimedHuntingZoneData.xsd @@ -22,6 +22,7 @@ + diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/data/xml/TimedHuntingZoneData.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/data/xml/TimedHuntingZoneData.java index 35d6d60f92..8640a5f5d5 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/data/xml/TimedHuntingZoneData.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/data/xml/TimedHuntingZoneData.java @@ -93,6 +93,7 @@ public class TimedHuntingZoneData implements IXmlReader boolean soloInstance = true; boolean weekly = false; boolean useWorldPrefix = false; + boolean zonePremiumUserOnly = false; Location enterLocation = null; Location exitLocation = null; for (Node zoneNode = listNode.getFirstChild(); zoneNode != null; zoneNode = zoneNode.getNextSibling()) @@ -186,9 +187,14 @@ public class TimedHuntingZoneData implements IXmlReader useWorldPrefix = Boolean.parseBoolean(zoneNode.getTextContent()); break; } + case "zonePremiumUserOnly": + { + zonePremiumUserOnly = Boolean.parseBoolean(zoneNode.getTextContent()); + break; + } } } - _timedHuntingZoneData.put(id, new TimedHuntingZoneHolder(id, name, initialTime, maxAddedTime, resetDelay, entryItemId, entryFee, minLevel, maxLevel, remainRefillTime, refillTimeMax, pvpZone, noPvpZone, instanceId, soloInstance, weekly, useWorldPrefix, enterLocation, exitLocation)); + _timedHuntingZoneData.put(id, new TimedHuntingZoneHolder(id, name, initialTime, maxAddedTime, resetDelay, entryItemId, entryFee, minLevel, maxLevel, remainRefillTime, refillTimeMax, pvpZone, noPvpZone, instanceId, soloInstance, weekly, useWorldPrefix, zonePremiumUserOnly, enterLocation, exitLocation)); } } } diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/holders/TimedHuntingZoneHolder.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/holders/TimedHuntingZoneHolder.java index 30f95830b7..719beba1f5 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/holders/TimedHuntingZoneHolder.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/holders/TimedHuntingZoneHolder.java @@ -41,12 +41,13 @@ public class TimedHuntingZoneHolder private final boolean _soloInstance; private final boolean _weekly; private final boolean _useWorldPrefix; + private final boolean _zonePremiumUserOnly; private final Location _enterLocation; private final Location _exitLocation; private final int _mapX; private final int _mapY; - public TimedHuntingZoneHolder(int id, String name, int initialTime, int maximumAddedTime, int resetDelay, int entryItemId, int entryFee, int minLevel, int maxLevel, int remainRefillTime, int refillTimeMax, boolean pvpZone, boolean noPvpZone, int instanceId, boolean soloInstance, boolean weekly, boolean useWorldPrefix, Location enterLocation, Location exitLocation) + public TimedHuntingZoneHolder(int id, String name, int initialTime, int maximumAddedTime, int resetDelay, int entryItemId, int entryFee, int minLevel, int maxLevel, int remainRefillTime, int refillTimeMax, boolean pvpZone, boolean noPvpZone, int instanceId, boolean soloInstance, boolean weekly, boolean useWorldPrefix, boolean zonePremiumUserOnly, Location enterLocation, Location exitLocation) { _id = id; _name = name; @@ -65,6 +66,7 @@ public class TimedHuntingZoneHolder _soloInstance = soloInstance; _weekly = weekly; _useWorldPrefix = useWorldPrefix; + _zonePremiumUserOnly = zonePremiumUserOnly; _enterLocation = enterLocation; _exitLocation = exitLocation; _mapX = ((_enterLocation.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN; @@ -156,6 +158,11 @@ public class TimedHuntingZoneHolder return _useWorldPrefix; } + public boolean zonePremiumUserOnly() + { + return _zonePremiumUserOnly; + } + public Location getEnterLocation() { return _enterLocation; diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneList.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneList.java index 36d05e9317..1606e8cd45 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneList.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneList.java @@ -67,8 +67,8 @@ public class TimedHuntingZoneList implements IClientOutgoingPacket packet.writeC(_isInTimedHuntingZone ? 0 : 1); // field activated (272 C to D) packet.writeC(0); // bUserBound packet.writeC(0); // bCanReEnter - packet.writeC(0); // bIsInZonePCCafeUserOnly - packet.writeC(0); // bIsPCCafeUser + packet.writeC(holder.zonePremiumUserOnly() ? 1 : 0); // bIsInZonePCCafeUserOnly + packet.writeC(_player.hasPremiumStatus() ? 1 : 0); // bIsPCCafeUser packet.writeC(holder.useWorldPrefix() ? 1 : 0); // bWorldInZone } return true; diff --git a/L2J_Mobius_10.3_MasterClass/dist/game/data/xsd/TimedHuntingZoneData.xsd b/L2J_Mobius_10.3_MasterClass/dist/game/data/xsd/TimedHuntingZoneData.xsd index fd6203a715..cb685eca0c 100644 --- a/L2J_Mobius_10.3_MasterClass/dist/game/data/xsd/TimedHuntingZoneData.xsd +++ b/L2J_Mobius_10.3_MasterClass/dist/game/data/xsd/TimedHuntingZoneData.xsd @@ -22,6 +22,7 @@ + diff --git a/L2J_Mobius_10.3_MasterClass/java/org/l2jmobius/gameserver/data/xml/TimedHuntingZoneData.java b/L2J_Mobius_10.3_MasterClass/java/org/l2jmobius/gameserver/data/xml/TimedHuntingZoneData.java index 35d6d60f92..8640a5f5d5 100644 --- a/L2J_Mobius_10.3_MasterClass/java/org/l2jmobius/gameserver/data/xml/TimedHuntingZoneData.java +++ b/L2J_Mobius_10.3_MasterClass/java/org/l2jmobius/gameserver/data/xml/TimedHuntingZoneData.java @@ -93,6 +93,7 @@ public class TimedHuntingZoneData implements IXmlReader boolean soloInstance = true; boolean weekly = false; boolean useWorldPrefix = false; + boolean zonePremiumUserOnly = false; Location enterLocation = null; Location exitLocation = null; for (Node zoneNode = listNode.getFirstChild(); zoneNode != null; zoneNode = zoneNode.getNextSibling()) @@ -186,9 +187,14 @@ public class TimedHuntingZoneData implements IXmlReader useWorldPrefix = Boolean.parseBoolean(zoneNode.getTextContent()); break; } + case "zonePremiumUserOnly": + { + zonePremiumUserOnly = Boolean.parseBoolean(zoneNode.getTextContent()); + break; + } } } - _timedHuntingZoneData.put(id, new TimedHuntingZoneHolder(id, name, initialTime, maxAddedTime, resetDelay, entryItemId, entryFee, minLevel, maxLevel, remainRefillTime, refillTimeMax, pvpZone, noPvpZone, instanceId, soloInstance, weekly, useWorldPrefix, enterLocation, exitLocation)); + _timedHuntingZoneData.put(id, new TimedHuntingZoneHolder(id, name, initialTime, maxAddedTime, resetDelay, entryItemId, entryFee, minLevel, maxLevel, remainRefillTime, refillTimeMax, pvpZone, noPvpZone, instanceId, soloInstance, weekly, useWorldPrefix, zonePremiumUserOnly, enterLocation, exitLocation)); } } } diff --git a/L2J_Mobius_10.3_MasterClass/java/org/l2jmobius/gameserver/model/holders/TimedHuntingZoneHolder.java b/L2J_Mobius_10.3_MasterClass/java/org/l2jmobius/gameserver/model/holders/TimedHuntingZoneHolder.java index 30f95830b7..719beba1f5 100644 --- a/L2J_Mobius_10.3_MasterClass/java/org/l2jmobius/gameserver/model/holders/TimedHuntingZoneHolder.java +++ b/L2J_Mobius_10.3_MasterClass/java/org/l2jmobius/gameserver/model/holders/TimedHuntingZoneHolder.java @@ -41,12 +41,13 @@ public class TimedHuntingZoneHolder private final boolean _soloInstance; private final boolean _weekly; private final boolean _useWorldPrefix; + private final boolean _zonePremiumUserOnly; private final Location _enterLocation; private final Location _exitLocation; private final int _mapX; private final int _mapY; - public TimedHuntingZoneHolder(int id, String name, int initialTime, int maximumAddedTime, int resetDelay, int entryItemId, int entryFee, int minLevel, int maxLevel, int remainRefillTime, int refillTimeMax, boolean pvpZone, boolean noPvpZone, int instanceId, boolean soloInstance, boolean weekly, boolean useWorldPrefix, Location enterLocation, Location exitLocation) + public TimedHuntingZoneHolder(int id, String name, int initialTime, int maximumAddedTime, int resetDelay, int entryItemId, int entryFee, int minLevel, int maxLevel, int remainRefillTime, int refillTimeMax, boolean pvpZone, boolean noPvpZone, int instanceId, boolean soloInstance, boolean weekly, boolean useWorldPrefix, boolean zonePremiumUserOnly, Location enterLocation, Location exitLocation) { _id = id; _name = name; @@ -65,6 +66,7 @@ public class TimedHuntingZoneHolder _soloInstance = soloInstance; _weekly = weekly; _useWorldPrefix = useWorldPrefix; + _zonePremiumUserOnly = zonePremiumUserOnly; _enterLocation = enterLocation; _exitLocation = exitLocation; _mapX = ((_enterLocation.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN; @@ -156,6 +158,11 @@ public class TimedHuntingZoneHolder return _useWorldPrefix; } + public boolean zonePremiumUserOnly() + { + return _zonePremiumUserOnly; + } + public Location getEnterLocation() { return _enterLocation; diff --git a/L2J_Mobius_10.3_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneList.java b/L2J_Mobius_10.3_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneList.java index fbe73e91fb..8a13ae506d 100644 --- a/L2J_Mobius_10.3_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneList.java +++ b/L2J_Mobius_10.3_MasterClass/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneList.java @@ -67,8 +67,8 @@ public class TimedHuntingZoneList implements IClientOutgoingPacket packet.writeC(_isInTimedHuntingZone ? 0 : 1); // field activated (272 C to D) packet.writeC(0); // bUserBound packet.writeC(0); // bCanReEnter - packet.writeC(0); // bIsInZonePCCafeUserOnly - packet.writeC(0); // bIsPCCafeUser + packet.writeC(holder.zonePremiumUserOnly() ? 1 : 0); // bIsInZonePCCafeUserOnly + packet.writeC(_player.hasPremiumStatus() ? 1 : 0); // bIsPCCafeUser packet.writeC(holder.useWorldPrefix() ? 1 : 0); // bWorldInZone packet.writeC(0); // bCanUseEntranceTicket packet.writeD(0); // nEntranceCount diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/xsd/TimedHuntingZoneData.xsd b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/xsd/TimedHuntingZoneData.xsd index fd6203a715..cb685eca0c 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/xsd/TimedHuntingZoneData.xsd +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/xsd/TimedHuntingZoneData.xsd @@ -22,6 +22,7 @@ + diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/data/xml/TimedHuntingZoneData.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/data/xml/TimedHuntingZoneData.java index 5900d5a8e6..5af6ba42d5 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/data/xml/TimedHuntingZoneData.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/data/xml/TimedHuntingZoneData.java @@ -93,6 +93,7 @@ public class TimedHuntingZoneData implements IXmlReader boolean soloInstance = true; boolean weekly = false; boolean useWorldPrefix = false; + boolean zonePremiumUserOnly = false; Location enterLocation = null; Location exitLocation = null; for (Node zoneNode = listNode.getFirstChild(); zoneNode != null; zoneNode = zoneNode.getNextSibling()) @@ -186,9 +187,14 @@ public class TimedHuntingZoneData implements IXmlReader useWorldPrefix = Boolean.parseBoolean(zoneNode.getTextContent()); break; } + case "zonePremiumUserOnly": + { + zonePremiumUserOnly = Boolean.parseBoolean(zoneNode.getTextContent()); + break; + } } } - _timedHuntingZoneData.put(id, new TimedHuntingZoneHolder(id, name, initialTime, maxAddedTime, resetDelay, entryItemId, entryFee, minLevel, maxLevel, remainRefillTime, refillTimeMax, pvpZone, noPvpZone, instanceId, soloInstance, weekly, useWorldPrefix, enterLocation, exitLocation)); + _timedHuntingZoneData.put(id, new TimedHuntingZoneHolder(id, name, initialTime, maxAddedTime, resetDelay, entryItemId, entryFee, minLevel, maxLevel, remainRefillTime, refillTimeMax, pvpZone, noPvpZone, instanceId, soloInstance, weekly, useWorldPrefix, zonePremiumUserOnly, enterLocation, exitLocation)); } } } diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/holders/TimedHuntingZoneHolder.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/holders/TimedHuntingZoneHolder.java index 30f95830b7..719beba1f5 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/holders/TimedHuntingZoneHolder.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/holders/TimedHuntingZoneHolder.java @@ -41,12 +41,13 @@ public class TimedHuntingZoneHolder private final boolean _soloInstance; private final boolean _weekly; private final boolean _useWorldPrefix; + private final boolean _zonePremiumUserOnly; private final Location _enterLocation; private final Location _exitLocation; private final int _mapX; private final int _mapY; - public TimedHuntingZoneHolder(int id, String name, int initialTime, int maximumAddedTime, int resetDelay, int entryItemId, int entryFee, int minLevel, int maxLevel, int remainRefillTime, int refillTimeMax, boolean pvpZone, boolean noPvpZone, int instanceId, boolean soloInstance, boolean weekly, boolean useWorldPrefix, Location enterLocation, Location exitLocation) + public TimedHuntingZoneHolder(int id, String name, int initialTime, int maximumAddedTime, int resetDelay, int entryItemId, int entryFee, int minLevel, int maxLevel, int remainRefillTime, int refillTimeMax, boolean pvpZone, boolean noPvpZone, int instanceId, boolean soloInstance, boolean weekly, boolean useWorldPrefix, boolean zonePremiumUserOnly, Location enterLocation, Location exitLocation) { _id = id; _name = name; @@ -65,6 +66,7 @@ public class TimedHuntingZoneHolder _soloInstance = soloInstance; _weekly = weekly; _useWorldPrefix = useWorldPrefix; + _zonePremiumUserOnly = zonePremiumUserOnly; _enterLocation = enterLocation; _exitLocation = exitLocation; _mapX = ((_enterLocation.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN; @@ -156,6 +158,11 @@ public class TimedHuntingZoneHolder return _useWorldPrefix; } + public boolean zonePremiumUserOnly() + { + return _zonePremiumUserOnly; + } + public Location getEnterLocation() { return _enterLocation; diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneList.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneList.java index 36d05e9317..1606e8cd45 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneList.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneList.java @@ -67,8 +67,8 @@ public class TimedHuntingZoneList implements IClientOutgoingPacket packet.writeC(_isInTimedHuntingZone ? 0 : 1); // field activated (272 C to D) packet.writeC(0); // bUserBound packet.writeC(0); // bCanReEnter - packet.writeC(0); // bIsInZonePCCafeUserOnly - packet.writeC(0); // bIsPCCafeUser + packet.writeC(holder.zonePremiumUserOnly() ? 1 : 0); // bIsInZonePCCafeUserOnly + packet.writeC(_player.hasPremiumStatus() ? 1 : 0); // bIsPCCafeUser packet.writeC(holder.useWorldPrefix() ? 1 : 0); // bWorldInZone } return true; diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/xsd/TimedHuntingZoneData.xsd b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/xsd/TimedHuntingZoneData.xsd index fd6203a715..cb685eca0c 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/xsd/TimedHuntingZoneData.xsd +++ b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/xsd/TimedHuntingZoneData.xsd @@ -22,6 +22,7 @@ + diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/data/xml/TimedHuntingZoneData.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/data/xml/TimedHuntingZoneData.java index 5900d5a8e6..5af6ba42d5 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/data/xml/TimedHuntingZoneData.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/data/xml/TimedHuntingZoneData.java @@ -93,6 +93,7 @@ public class TimedHuntingZoneData implements IXmlReader boolean soloInstance = true; boolean weekly = false; boolean useWorldPrefix = false; + boolean zonePremiumUserOnly = false; Location enterLocation = null; Location exitLocation = null; for (Node zoneNode = listNode.getFirstChild(); zoneNode != null; zoneNode = zoneNode.getNextSibling()) @@ -186,9 +187,14 @@ public class TimedHuntingZoneData implements IXmlReader useWorldPrefix = Boolean.parseBoolean(zoneNode.getTextContent()); break; } + case "zonePremiumUserOnly": + { + zonePremiumUserOnly = Boolean.parseBoolean(zoneNode.getTextContent()); + break; + } } } - _timedHuntingZoneData.put(id, new TimedHuntingZoneHolder(id, name, initialTime, maxAddedTime, resetDelay, entryItemId, entryFee, minLevel, maxLevel, remainRefillTime, refillTimeMax, pvpZone, noPvpZone, instanceId, soloInstance, weekly, useWorldPrefix, enterLocation, exitLocation)); + _timedHuntingZoneData.put(id, new TimedHuntingZoneHolder(id, name, initialTime, maxAddedTime, resetDelay, entryItemId, entryFee, minLevel, maxLevel, remainRefillTime, refillTimeMax, pvpZone, noPvpZone, instanceId, soloInstance, weekly, useWorldPrefix, zonePremiumUserOnly, enterLocation, exitLocation)); } } } diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/holders/TimedHuntingZoneHolder.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/holders/TimedHuntingZoneHolder.java index 30f95830b7..719beba1f5 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/holders/TimedHuntingZoneHolder.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/holders/TimedHuntingZoneHolder.java @@ -41,12 +41,13 @@ public class TimedHuntingZoneHolder private final boolean _soloInstance; private final boolean _weekly; private final boolean _useWorldPrefix; + private final boolean _zonePremiumUserOnly; private final Location _enterLocation; private final Location _exitLocation; private final int _mapX; private final int _mapY; - public TimedHuntingZoneHolder(int id, String name, int initialTime, int maximumAddedTime, int resetDelay, int entryItemId, int entryFee, int minLevel, int maxLevel, int remainRefillTime, int refillTimeMax, boolean pvpZone, boolean noPvpZone, int instanceId, boolean soloInstance, boolean weekly, boolean useWorldPrefix, Location enterLocation, Location exitLocation) + public TimedHuntingZoneHolder(int id, String name, int initialTime, int maximumAddedTime, int resetDelay, int entryItemId, int entryFee, int minLevel, int maxLevel, int remainRefillTime, int refillTimeMax, boolean pvpZone, boolean noPvpZone, int instanceId, boolean soloInstance, boolean weekly, boolean useWorldPrefix, boolean zonePremiumUserOnly, Location enterLocation, Location exitLocation) { _id = id; _name = name; @@ -65,6 +66,7 @@ public class TimedHuntingZoneHolder _soloInstance = soloInstance; _weekly = weekly; _useWorldPrefix = useWorldPrefix; + _zonePremiumUserOnly = zonePremiumUserOnly; _enterLocation = enterLocation; _exitLocation = exitLocation; _mapX = ((_enterLocation.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN; @@ -156,6 +158,11 @@ public class TimedHuntingZoneHolder return _useWorldPrefix; } + public boolean zonePremiumUserOnly() + { + return _zonePremiumUserOnly; + } + public Location getEnterLocation() { return _enterLocation; diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneList.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneList.java index 36d05e9317..1606e8cd45 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneList.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneList.java @@ -67,8 +67,8 @@ public class TimedHuntingZoneList implements IClientOutgoingPacket packet.writeC(_isInTimedHuntingZone ? 0 : 1); // field activated (272 C to D) packet.writeC(0); // bUserBound packet.writeC(0); // bCanReEnter - packet.writeC(0); // bIsInZonePCCafeUserOnly - packet.writeC(0); // bIsPCCafeUser + packet.writeC(holder.zonePremiumUserOnly() ? 1 : 0); // bIsInZonePCCafeUserOnly + packet.writeC(_player.hasPremiumStatus() ? 1 : 0); // bIsPCCafeUser packet.writeC(holder.useWorldPrefix() ? 1 : 0); // bWorldInZone } return true; diff --git a/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/xsd/TimedHuntingZoneData.xsd b/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/xsd/TimedHuntingZoneData.xsd index fd6203a715..cb685eca0c 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/xsd/TimedHuntingZoneData.xsd +++ b/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/xsd/TimedHuntingZoneData.xsd @@ -22,6 +22,7 @@ + diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/data/xml/TimedHuntingZoneData.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/data/xml/TimedHuntingZoneData.java index 5900d5a8e6..5af6ba42d5 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/data/xml/TimedHuntingZoneData.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/data/xml/TimedHuntingZoneData.java @@ -93,6 +93,7 @@ public class TimedHuntingZoneData implements IXmlReader boolean soloInstance = true; boolean weekly = false; boolean useWorldPrefix = false; + boolean zonePremiumUserOnly = false; Location enterLocation = null; Location exitLocation = null; for (Node zoneNode = listNode.getFirstChild(); zoneNode != null; zoneNode = zoneNode.getNextSibling()) @@ -186,9 +187,14 @@ public class TimedHuntingZoneData implements IXmlReader useWorldPrefix = Boolean.parseBoolean(zoneNode.getTextContent()); break; } + case "zonePremiumUserOnly": + { + zonePremiumUserOnly = Boolean.parseBoolean(zoneNode.getTextContent()); + break; + } } } - _timedHuntingZoneData.put(id, new TimedHuntingZoneHolder(id, name, initialTime, maxAddedTime, resetDelay, entryItemId, entryFee, minLevel, maxLevel, remainRefillTime, refillTimeMax, pvpZone, noPvpZone, instanceId, soloInstance, weekly, useWorldPrefix, enterLocation, exitLocation)); + _timedHuntingZoneData.put(id, new TimedHuntingZoneHolder(id, name, initialTime, maxAddedTime, resetDelay, entryItemId, entryFee, minLevel, maxLevel, remainRefillTime, refillTimeMax, pvpZone, noPvpZone, instanceId, soloInstance, weekly, useWorldPrefix, zonePremiumUserOnly, enterLocation, exitLocation)); } } } diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/holders/TimedHuntingZoneHolder.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/holders/TimedHuntingZoneHolder.java index 30f95830b7..719beba1f5 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/holders/TimedHuntingZoneHolder.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/holders/TimedHuntingZoneHolder.java @@ -41,12 +41,13 @@ public class TimedHuntingZoneHolder private final boolean _soloInstance; private final boolean _weekly; private final boolean _useWorldPrefix; + private final boolean _zonePremiumUserOnly; private final Location _enterLocation; private final Location _exitLocation; private final int _mapX; private final int _mapY; - public TimedHuntingZoneHolder(int id, String name, int initialTime, int maximumAddedTime, int resetDelay, int entryItemId, int entryFee, int minLevel, int maxLevel, int remainRefillTime, int refillTimeMax, boolean pvpZone, boolean noPvpZone, int instanceId, boolean soloInstance, boolean weekly, boolean useWorldPrefix, Location enterLocation, Location exitLocation) + public TimedHuntingZoneHolder(int id, String name, int initialTime, int maximumAddedTime, int resetDelay, int entryItemId, int entryFee, int minLevel, int maxLevel, int remainRefillTime, int refillTimeMax, boolean pvpZone, boolean noPvpZone, int instanceId, boolean soloInstance, boolean weekly, boolean useWorldPrefix, boolean zonePremiumUserOnly, Location enterLocation, Location exitLocation) { _id = id; _name = name; @@ -65,6 +66,7 @@ public class TimedHuntingZoneHolder _soloInstance = soloInstance; _weekly = weekly; _useWorldPrefix = useWorldPrefix; + _zonePremiumUserOnly = zonePremiumUserOnly; _enterLocation = enterLocation; _exitLocation = exitLocation; _mapX = ((_enterLocation.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN; @@ -156,6 +158,11 @@ public class TimedHuntingZoneHolder return _useWorldPrefix; } + public boolean zonePremiumUserOnly() + { + return _zonePremiumUserOnly; + } + public Location getEnterLocation() { return _enterLocation; diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneList.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneList.java index 36d05e9317..1606e8cd45 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneList.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneList.java @@ -67,8 +67,8 @@ public class TimedHuntingZoneList implements IClientOutgoingPacket packet.writeC(_isInTimedHuntingZone ? 0 : 1); // field activated (272 C to D) packet.writeC(0); // bUserBound packet.writeC(0); // bCanReEnter - packet.writeC(0); // bIsInZonePCCafeUserOnly - packet.writeC(0); // bIsPCCafeUser + packet.writeC(holder.zonePremiumUserOnly() ? 1 : 0); // bIsInZonePCCafeUserOnly + packet.writeC(_player.hasPremiumStatus() ? 1 : 0); // bIsPCCafeUser packet.writeC(holder.useWorldPrefix() ? 1 : 0); // bWorldInZone } return true; diff --git a/L2J_Mobius_Essence_6.3_Crusader/dist/game/data/xsd/TimedHuntingZoneData.xsd b/L2J_Mobius_Essence_6.3_Crusader/dist/game/data/xsd/TimedHuntingZoneData.xsd index fd6203a715..cb685eca0c 100644 --- a/L2J_Mobius_Essence_6.3_Crusader/dist/game/data/xsd/TimedHuntingZoneData.xsd +++ b/L2J_Mobius_Essence_6.3_Crusader/dist/game/data/xsd/TimedHuntingZoneData.xsd @@ -22,6 +22,7 @@ + diff --git a/L2J_Mobius_Essence_6.3_Crusader/java/org/l2jmobius/gameserver/data/xml/TimedHuntingZoneData.java b/L2J_Mobius_Essence_6.3_Crusader/java/org/l2jmobius/gameserver/data/xml/TimedHuntingZoneData.java index 5900d5a8e6..5af6ba42d5 100644 --- a/L2J_Mobius_Essence_6.3_Crusader/java/org/l2jmobius/gameserver/data/xml/TimedHuntingZoneData.java +++ b/L2J_Mobius_Essence_6.3_Crusader/java/org/l2jmobius/gameserver/data/xml/TimedHuntingZoneData.java @@ -93,6 +93,7 @@ public class TimedHuntingZoneData implements IXmlReader boolean soloInstance = true; boolean weekly = false; boolean useWorldPrefix = false; + boolean zonePremiumUserOnly = false; Location enterLocation = null; Location exitLocation = null; for (Node zoneNode = listNode.getFirstChild(); zoneNode != null; zoneNode = zoneNode.getNextSibling()) @@ -186,9 +187,14 @@ public class TimedHuntingZoneData implements IXmlReader useWorldPrefix = Boolean.parseBoolean(zoneNode.getTextContent()); break; } + case "zonePremiumUserOnly": + { + zonePremiumUserOnly = Boolean.parseBoolean(zoneNode.getTextContent()); + break; + } } } - _timedHuntingZoneData.put(id, new TimedHuntingZoneHolder(id, name, initialTime, maxAddedTime, resetDelay, entryItemId, entryFee, minLevel, maxLevel, remainRefillTime, refillTimeMax, pvpZone, noPvpZone, instanceId, soloInstance, weekly, useWorldPrefix, enterLocation, exitLocation)); + _timedHuntingZoneData.put(id, new TimedHuntingZoneHolder(id, name, initialTime, maxAddedTime, resetDelay, entryItemId, entryFee, minLevel, maxLevel, remainRefillTime, refillTimeMax, pvpZone, noPvpZone, instanceId, soloInstance, weekly, useWorldPrefix, zonePremiumUserOnly, enterLocation, exitLocation)); } } } diff --git a/L2J_Mobius_Essence_6.3_Crusader/java/org/l2jmobius/gameserver/model/holders/TimedHuntingZoneHolder.java b/L2J_Mobius_Essence_6.3_Crusader/java/org/l2jmobius/gameserver/model/holders/TimedHuntingZoneHolder.java index 30f95830b7..719beba1f5 100644 --- a/L2J_Mobius_Essence_6.3_Crusader/java/org/l2jmobius/gameserver/model/holders/TimedHuntingZoneHolder.java +++ b/L2J_Mobius_Essence_6.3_Crusader/java/org/l2jmobius/gameserver/model/holders/TimedHuntingZoneHolder.java @@ -41,12 +41,13 @@ public class TimedHuntingZoneHolder private final boolean _soloInstance; private final boolean _weekly; private final boolean _useWorldPrefix; + private final boolean _zonePremiumUserOnly; private final Location _enterLocation; private final Location _exitLocation; private final int _mapX; private final int _mapY; - public TimedHuntingZoneHolder(int id, String name, int initialTime, int maximumAddedTime, int resetDelay, int entryItemId, int entryFee, int minLevel, int maxLevel, int remainRefillTime, int refillTimeMax, boolean pvpZone, boolean noPvpZone, int instanceId, boolean soloInstance, boolean weekly, boolean useWorldPrefix, Location enterLocation, Location exitLocation) + public TimedHuntingZoneHolder(int id, String name, int initialTime, int maximumAddedTime, int resetDelay, int entryItemId, int entryFee, int minLevel, int maxLevel, int remainRefillTime, int refillTimeMax, boolean pvpZone, boolean noPvpZone, int instanceId, boolean soloInstance, boolean weekly, boolean useWorldPrefix, boolean zonePremiumUserOnly, Location enterLocation, Location exitLocation) { _id = id; _name = name; @@ -65,6 +66,7 @@ public class TimedHuntingZoneHolder _soloInstance = soloInstance; _weekly = weekly; _useWorldPrefix = useWorldPrefix; + _zonePremiumUserOnly = zonePremiumUserOnly; _enterLocation = enterLocation; _exitLocation = exitLocation; _mapX = ((_enterLocation.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN; @@ -156,6 +158,11 @@ public class TimedHuntingZoneHolder return _useWorldPrefix; } + public boolean zonePremiumUserOnly() + { + return _zonePremiumUserOnly; + } + public Location getEnterLocation() { return _enterLocation; diff --git a/L2J_Mobius_Essence_6.3_Crusader/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneList.java b/L2J_Mobius_Essence_6.3_Crusader/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneList.java index fbe73e91fb..8a13ae506d 100644 --- a/L2J_Mobius_Essence_6.3_Crusader/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneList.java +++ b/L2J_Mobius_Essence_6.3_Crusader/java/org/l2jmobius/gameserver/network/serverpackets/huntingzones/TimedHuntingZoneList.java @@ -67,8 +67,8 @@ public class TimedHuntingZoneList implements IClientOutgoingPacket packet.writeC(_isInTimedHuntingZone ? 0 : 1); // field activated (272 C to D) packet.writeC(0); // bUserBound packet.writeC(0); // bCanReEnter - packet.writeC(0); // bIsInZonePCCafeUserOnly - packet.writeC(0); // bIsPCCafeUser + packet.writeC(holder.zonePremiumUserOnly() ? 1 : 0); // bIsInZonePCCafeUserOnly + packet.writeC(_player.hasPremiumStatus() ? 1 : 0); // bIsPCCafeUser packet.writeC(holder.useWorldPrefix() ? 1 : 0); // bWorldInZone packet.writeC(0); // bCanUseEntranceTicket packet.writeD(0); // nEntranceCount