Support for Prime shop account limitations.
This commit is contained in:
		@@ -11,51 +11,51 @@
 | 
			
		||||
 for the price to be used as golden or silver, vipTier needs to be > 0
 | 
			
		||||
 -->
 | 
			
		||||
 | 
			
		||||
	<item id="2090044" cat="11" paymentType="0" price="30" recommended="4" startSale="315558000" endSale="2127452400" dayOfWeek="127" startHour="0" startMinute="0" stopHour="23" stopMinute="59" stock="-1" maxStock="-1" salePercent="0" minLevel="0" maxLevel="0" minBirthday="0" maxBirthday="0" restrictionDay="0" availableCount="0">
 | 
			
		||||
	<item id="2090044" cat="11" paymentType="0" price="30" recommended="4" startSale="315558000" endSale="2127452400" dayOfWeek="127" startHour="0" startMinute="0" stopHour="23" stopMinute="59" stock="-1" maxStock="-1" salePercent="0" minLevel="0" maxLevel="0" minBirthday="0" maxBirthday="0" accountDailyLimit="0" accountBuyLimit="0">
 | 
			
		||||
		<item itemId="29505" count="1" /> <!-- Normal VIP Gain Scroll -->
 | 
			
		||||
	</item>
 | 
			
		||||
	<item id="2090045" cat="12" paymentType="0" price="60" recommended="4" startSale="315558000" endSale="2127452400" dayOfWeek="127" startHour="0" startMinute="0" stopHour="23" stopMinute="59" stock="-1" maxStock="-1" salePercent="0" minLevel="0" maxLevel="0" minBirthday="0" maxBirthday="0" restrictionDay="0" availableCount="0">
 | 
			
		||||
	<item id="2090045" cat="12" paymentType="0" price="60" recommended="4" startSale="315558000" endSale="2127452400" dayOfWeek="127" startHour="0" startMinute="0" stopHour="23" stopMinute="59" stock="-1" maxStock="-1" salePercent="0" minLevel="0" maxLevel="0" minBirthday="0" maxBirthday="0" accountDailyLimit="0" accountBuyLimit="0">
 | 
			
		||||
		<item itemId="29506" count="1" /> <!-- Medium VIP Gain Scroll -->
 | 
			
		||||
	</item>
 | 
			
		||||
	<item id="2090046" cat="13" paymentType="0" price="50" recommended="4" startSale="315558000" endSale="2127452400" dayOfWeek="127" startHour="0" startMinute="0" stopHour="23" stopMinute="59" stock="-1" maxStock="-1" salePercent="0" minLevel="0" maxLevel="0" minBirthday="0" maxBirthday="0" restrictionDay="0" availableCount="0">
 | 
			
		||||
	<item id="2090046" cat="13" paymentType="0" price="50" recommended="4" startSale="315558000" endSale="2127452400" dayOfWeek="127" startHour="0" startMinute="0" stopHour="23" stopMinute="59" stock="-1" maxStock="-1" salePercent="0" minLevel="0" maxLevel="0" minBirthday="0" maxBirthday="0" accountDailyLimit="0" accountBuyLimit="0">
 | 
			
		||||
		<item itemId="29507" count="1" /> <!-- Good VIP Gain Scroll -->
 | 
			
		||||
	</item>
 | 
			
		||||
	<item id="2090047" cat="14" paymentType="0" price="100" recommended="4" startSale="315558000" endSale="2127452400" dayOfWeek="127" startHour="0" startMinute="0" stopHour="23" stopMinute="59" stock="-1" maxStock="-1" salePercent="0" minLevel="0" maxLevel="0" minBirthday="0" maxBirthday="0" restrictionDay="0" availableCount="0">
 | 
			
		||||
	<item id="2090047" cat="14" paymentType="0" price="100" recommended="4" startSale="315558000" endSale="2127452400" dayOfWeek="127" startHour="0" startMinute="0" stopHour="23" stopMinute="59" stock="-1" maxStock="-1" salePercent="0" minLevel="0" maxLevel="0" minBirthday="0" maxBirthday="0" accountDailyLimit="0" accountBuyLimit="0">
 | 
			
		||||
		<item itemId="29508" count="1" /> <!-- Perfect VIP Gain Scroll -->
 | 
			
		||||
	</item>
 | 
			
		||||
 | 
			
		||||
	<item id="2090048" cat="15" paymentType="0" price="0" silverCoin="100" recommended="4" vipTier="7" startSale="315558000" endSale="2127452400" dayOfWeek="127" startHour="0" startMinute="0" stopHour="23" stopMinute="59" stock="-1" maxStock="-1" salePercent="0" minLevel="0" maxLevel="0" minBirthday="0" maxBirthday="0" restrictionDay="0" availableCount="0">
 | 
			
		||||
	<item id="2090048" cat="15" paymentType="0" price="0" silverCoin="100" recommended="4" vipTier="7" startSale="315558000" endSale="2127452400" dayOfWeek="127" startHour="0" startMinute="0" stopHour="23" stopMinute="59" stock="-1" maxStock="-1" salePercent="0" minLevel="0" maxLevel="0" minBirthday="0" maxBirthday="0" accountDailyLimit="0" accountBuyLimit="0">
 | 
			
		||||
		<item itemId="29505" count="1" /> <!-- Normal VIP Gain Scroll -->
 | 
			
		||||
	</item>
 | 
			
		||||
	<item id="2090049" cat="15" paymentType="0" price="0" silverCoin="200" recommended="4" vipTier="7" startSale="315558000" endSale="2127452400" dayOfWeek="127" startHour="0" startMinute="0" stopHour="23" stopMinute="59" stock="-1" maxStock="-1" salePercent="0" minLevel="0" maxLevel="0" minBirthday="0" maxBirthday="0" restrictionDay="0" availableCount="0">
 | 
			
		||||
	<item id="2090049" cat="15" paymentType="0" price="0" silverCoin="200" recommended="4" vipTier="7" startSale="315558000" endSale="2127452400" dayOfWeek="127" startHour="0" startMinute="0" stopHour="23" stopMinute="59" stock="-1" maxStock="-1" salePercent="0" minLevel="0" maxLevel="0" minBirthday="0" maxBirthday="0" accountDailyLimit="0" accountBuyLimit="0">
 | 
			
		||||
		<item itemId="29506" count="1" /> <!-- Medium VIP Gain Scroll -->
 | 
			
		||||
	</item>
 | 
			
		||||
	<item id="2090050" cat="15" paymentType="0" price="50" silverCoin="0" recommended="4" vipTier="7" startSale="315558000" endSale="2127452400" dayOfWeek="127" startHour="0" startMinute="0" stopHour="23" stopMinute="59" stock="-1" maxStock="-1" salePercent="0" minLevel="0" maxLevel="0" minBirthday="0" maxBirthday="0" restrictionDay="0" availableCount="0">
 | 
			
		||||
	<item id="2090050" cat="15" paymentType="0" price="50" silverCoin="0" recommended="4" vipTier="7" startSale="315558000" endSale="2127452400" dayOfWeek="127" startHour="0" startMinute="0" stopHour="23" stopMinute="59" stock="-1" maxStock="-1" salePercent="0" minLevel="0" maxLevel="0" minBirthday="0" maxBirthday="0" accountDailyLimit="0" accountBuyLimit="0">
 | 
			
		||||
		<item itemId="29507" count="1" /> <!-- Good VIP Gain Scroll -->
 | 
			
		||||
	</item>
 | 
			
		||||
	<item id="2090051" cat="15" paymentType="0" price="100" silverCoin="0" recommended="4" vipTier="7" startSale="315558000" endSale="2127452400" dayOfWeek="127" startHour="0" startMinute="0" stopHour="23" stopMinute="59" stock="-1" maxStock="-1" salePercent="0" minLevel="0" maxLevel="0" minBirthday="0" maxBirthday="0" restrictionDay="0" availableCount="0">
 | 
			
		||||
	<item id="2090051" cat="15" paymentType="0" price="100" silverCoin="0" recommended="4" vipTier="7" startSale="315558000" endSale="2127452400" dayOfWeek="127" startHour="0" startMinute="0" stopHour="23" stopMinute="59" stock="-1" maxStock="-1" salePercent="0" minLevel="0" maxLevel="0" minBirthday="0" maxBirthday="0" accountDailyLimit="0" accountBuyLimit="0">
 | 
			
		||||
		<item itemId="29508" count="1" /> <!-- Perfect VIP Gain Scroll -->
 | 
			
		||||
	</item>
 | 
			
		||||
 | 
			
		||||
	<item id="100001" cat="13" paymentType="0" price="0" recommended="4" startSale="315558000" endSale="2127452400" dayOfWeek="127" startHour="0" startMinute="0" stopHour="23" stopMinute="59" stock="-1" maxStock="-1" salePercent="0" minLevel="0" maxLevel="0" minBirthday="0" maxBirthday="0" restrictionDay="0" availableCount="0" isVipGift="true" vipTier="1">
 | 
			
		||||
	<item id="100001" cat="13" paymentType="0" price="0" recommended="4" startSale="315558000" endSale="2127452400" dayOfWeek="127" startHour="0" startMinute="0" stopHour="23" stopMinute="59" stock="-1" maxStock="-1" salePercent="0" minLevel="0" maxLevel="0" minBirthday="0" maxBirthday="0" accountDailyLimit="0" accountBuyLimit="0" isVipGift="true" vipTier="1">
 | 
			
		||||
		<item itemId="29001" count="1" /> <!-- Daily Present - VIP 1 -->
 | 
			
		||||
	</item>
 | 
			
		||||
	<item id="100002" cat="13" paymentType="0" price="0" recommended="4" startSale="315558000" endSale="2127452400" dayOfWeek="127" startHour="0" startMinute="0" stopHour="23" stopMinute="59" stock="-1" maxStock="-1" salePercent="0" minLevel="0" maxLevel="0" minBirthday="0" maxBirthday="0" restrictionDay="0" availableCount="0" isVipGift="true" vipTier="2">
 | 
			
		||||
	<item id="100002" cat="13" paymentType="0" price="0" recommended="4" startSale="315558000" endSale="2127452400" dayOfWeek="127" startHour="0" startMinute="0" stopHour="23" stopMinute="59" stock="-1" maxStock="-1" salePercent="0" minLevel="0" maxLevel="0" minBirthday="0" maxBirthday="0" accountDailyLimit="0" accountBuyLimit="0" isVipGift="true" vipTier="2">
 | 
			
		||||
		<item itemId="29002" count="1" /> <!-- Daily Present - VIP 2 -->
 | 
			
		||||
	</item>
 | 
			
		||||
	<item id="100003" cat="13" paymentType="0" price="0" recommended="4" startSale="315558000" endSale="2127452400" dayOfWeek="127" startHour="0" startMinute="0" stopHour="23" stopMinute="59" stock="-1" maxStock="-1" salePercent="0" minLevel="0" maxLevel="0" minBirthday="0" maxBirthday="0" restrictionDay="0" availableCount="0" isVipGift="true" vipTier="3">
 | 
			
		||||
	<item id="100003" cat="13" paymentType="0" price="0" recommended="4" startSale="315558000" endSale="2127452400" dayOfWeek="127" startHour="0" startMinute="0" stopHour="23" stopMinute="59" stock="-1" maxStock="-1" salePercent="0" minLevel="0" maxLevel="0" minBirthday="0" maxBirthday="0" accountDailyLimit="0" accountBuyLimit="0" isVipGift="true" vipTier="3">
 | 
			
		||||
		<item itemId="29003" count="1" /> <!-- Daily Present - VIP 3 -->
 | 
			
		||||
	</item>
 | 
			
		||||
	<item id="100004" cat="13" paymentType="0" price="0" recommended="4" startSale="315558000" endSale="2127452400" dayOfWeek="127" startHour="0" startMinute="0" stopHour="23" stopMinute="59" stock="-1" maxStock="-1" salePercent="0" minLevel="0" maxLevel="0" minBirthday="0" maxBirthday="0" restrictionDay="0" availableCount="0" isVipGift="true" vipTier="4">
 | 
			
		||||
	<item id="100004" cat="13" paymentType="0" price="0" recommended="4" startSale="315558000" endSale="2127452400" dayOfWeek="127" startHour="0" startMinute="0" stopHour="23" stopMinute="59" stock="-1" maxStock="-1" salePercent="0" minLevel="0" maxLevel="0" minBirthday="0" maxBirthday="0" accountDailyLimit="0" accountBuyLimit="0" isVipGift="true" vipTier="4">
 | 
			
		||||
		<item itemId="29004" count="1" /> <!-- Daily Present - VIP 4 -->
 | 
			
		||||
	</item>
 | 
			
		||||
	<item id="100005" cat="13" paymentType="0" price="0" recommended="4" startSale="315558000" endSale="2127452400" dayOfWeek="127" startHour="0" startMinute="0" stopHour="23" stopMinute="59" stock="-1" maxStock="-1" salePercent="0" minLevel="0" maxLevel="0" minBirthday="0" maxBirthday="0" restrictionDay="0" availableCount="0" isVipGift="true" vipTier="5">
 | 
			
		||||
	<item id="100005" cat="13" paymentType="0" price="0" recommended="4" startSale="315558000" endSale="2127452400" dayOfWeek="127" startHour="0" startMinute="0" stopHour="23" stopMinute="59" stock="-1" maxStock="-1" salePercent="0" minLevel="0" maxLevel="0" minBirthday="0" maxBirthday="0" accountDailyLimit="0" accountBuyLimit="0" isVipGift="true" vipTier="5">
 | 
			
		||||
		<item itemId="29005" count="1" /> <!-- Daily Present - VIP 5 -->
 | 
			
		||||
	</item>
 | 
			
		||||
	<item id="100006" cat="13" paymentType="0" price="0" recommended="4" startSale="315558000" endSale="2127452400" dayOfWeek="127" startHour="0" startMinute="0" stopHour="23" stopMinute="59" stock="-1" maxStock="-1" salePercent="0" minLevel="0" maxLevel="0" minBirthday="0" maxBirthday="0" restrictionDay="0" availableCount="0" isVipGift="true" vipTier="6">
 | 
			
		||||
	<item id="100006" cat="13" paymentType="0" price="0" recommended="4" startSale="315558000" endSale="2127452400" dayOfWeek="127" startHour="0" startMinute="0" stopHour="23" stopMinute="59" stock="-1" maxStock="-1" salePercent="0" minLevel="0" maxLevel="0" minBirthday="0" maxBirthday="0" accountDailyLimit="0" accountBuyLimit="0" isVipGift="true" vipTier="6">
 | 
			
		||||
		<item itemId="29006" count="1" /> <!-- Daily Present - VIP 6 -->
 | 
			
		||||
	</item>
 | 
			
		||||
	<item id="100007" cat="13" paymentType="0" price="0" recommended="4" startSale="315558000" endSale="2127452400" dayOfWeek="127" startHour="0" startMinute="0" stopHour="23" stopMinute="59" stock="-1" maxStock="-1" salePercent="0" minLevel="0" maxLevel="0" minBirthday="0" maxBirthday="0" restrictionDay="0" availableCount="0" isVipGift="true" vipTier="7">
 | 
			
		||||
	<item id="100007" cat="13" paymentType="0" price="0" recommended="4" startSale="315558000" endSale="2127452400" dayOfWeek="127" startHour="0" startMinute="0" stopHour="23" stopMinute="59" stock="-1" maxStock="-1" salePercent="0" minLevel="0" maxLevel="0" minBirthday="0" maxBirthday="0" accountDailyLimit="0" accountBuyLimit="0" isVipGift="true" vipTier="7">
 | 
			
		||||
		<item itemId="29007" count="1" /> <!-- Daily Present - VIP 7 -->
 | 
			
		||||
	</item>
 | 
			
		||||
</list>
 | 
			
		||||
@@ -32,8 +32,8 @@
 | 
			
		||||
						<xs:attribute type="xs:byte" name="maxLevel" use="optional" />
 | 
			
		||||
						<xs:attribute type="xs:byte" name="minBirthday" use="optional" />
 | 
			
		||||
						<xs:attribute type="xs:byte" name="maxBirthday" use="optional" />
 | 
			
		||||
						<xs:attribute type="xs:byte" name="restrictionDay" use="optional" />
 | 
			
		||||
						<xs:attribute type="xs:byte" name="availableCount" use="optional" />
 | 
			
		||||
						<xs:attribute type="xs:byte" name="accountDailyLimit" use="optional" />
 | 
			
		||||
						<xs:attribute type="xs:byte" name="accountBuyLimit" use="optional" />
 | 
			
		||||
						<xs:attribute type="xs:boolean" name="isVipGift" use="optional" />
 | 
			
		||||
						<xs:attribute type="xs:byte" name="vipTier" use="optional" />
 | 
			
		||||
						<xs:attribute type="xs:int" name="silverCoin" use="optional" />
 | 
			
		||||
 
 | 
			
		||||
@@ -30,6 +30,7 @@ import org.l2jmobius.commons.threads.ThreadPool;
 | 
			
		||||
import org.l2jmobius.commons.util.Chronos;
 | 
			
		||||
import org.l2jmobius.gameserver.data.sql.ClanTable;
 | 
			
		||||
import org.l2jmobius.gameserver.data.xml.DailyMissionData;
 | 
			
		||||
import org.l2jmobius.gameserver.data.xml.PrimeShopData;
 | 
			
		||||
import org.l2jmobius.gameserver.model.DailyMissionDataHolder;
 | 
			
		||||
import org.l2jmobius.gameserver.model.World;
 | 
			
		||||
import org.l2jmobius.gameserver.model.actor.Player;
 | 
			
		||||
@@ -38,6 +39,7 @@ import org.l2jmobius.gameserver.model.clan.Clan;
 | 
			
		||||
import org.l2jmobius.gameserver.model.clan.ClanMember;
 | 
			
		||||
import org.l2jmobius.gameserver.model.holders.SubClassHolder;
 | 
			
		||||
import org.l2jmobius.gameserver.model.olympiad.Olympiad;
 | 
			
		||||
import org.l2jmobius.gameserver.model.primeshop.PrimeShopGroup;
 | 
			
		||||
import org.l2jmobius.gameserver.model.variables.AccountVariables;
 | 
			
		||||
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
 | 
			
		||||
import org.l2jmobius.gameserver.model.vip.VipManager;
 | 
			
		||||
@@ -110,6 +112,7 @@ public class DailyTaskManager
 | 
			
		||||
		// Daily tasks.
 | 
			
		||||
		resetClanBonus();
 | 
			
		||||
		resetDailySkills();
 | 
			
		||||
		resetDailyPrimeShopData();
 | 
			
		||||
		resetWorldChatPoints();
 | 
			
		||||
		resetRecommends();
 | 
			
		||||
		resetTrainingCamp();
 | 
			
		||||
@@ -417,6 +420,32 @@ public class DailyTaskManager
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	private void resetDailyPrimeShopData()
 | 
			
		||||
	{
 | 
			
		||||
		for (PrimeShopGroup holder : PrimeShopData.getInstance().getPrimeItems().values())
 | 
			
		||||
		{
 | 
			
		||||
			// Update data for offline players.
 | 
			
		||||
			try (Connection con = DatabaseFactory.getConnection();
 | 
			
		||||
				PreparedStatement ps = con.prepareStatement("DELETE FROM account_gsdata WHERE var=?"))
 | 
			
		||||
			{
 | 
			
		||||
				ps.setString(1, AccountVariables.PRIME_SHOP_PRODUCT_DAILY_COUNT + holder.getBrId());
 | 
			
		||||
				ps.executeUpdate();
 | 
			
		||||
			}
 | 
			
		||||
			catch (Exception e)
 | 
			
		||||
			{
 | 
			
		||||
				LOGGER.log(Level.SEVERE, getClass().getSimpleName() + ": Could not reset PrimeShopData: " + e);
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			// Update data for online players.
 | 
			
		||||
			for (Player player : World.getInstance().getPlayers())
 | 
			
		||||
			{
 | 
			
		||||
				player.getVariables().remove(AccountVariables.PRIME_SHOP_PRODUCT_DAILY_COUNT + holder.getBrId());
 | 
			
		||||
				player.getAccountVariables().storeMe();
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		LOGGER.info("PrimeShopData has been resetted.");
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	public static DailyTaskManager getInstance()
 | 
			
		||||
	{
 | 
			
		||||
		return SingletonHolder.INSTANCE;
 | 
			
		||||
 
 | 
			
		||||
@@ -45,8 +45,8 @@ public class PrimeShopGroup
 | 
			
		||||
	private final int _maxLevel;
 | 
			
		||||
	private final int _minBirthday;
 | 
			
		||||
	private final int _maxBirthday;
 | 
			
		||||
	private final int _restrictionDay;
 | 
			
		||||
	private final int _availableCount;
 | 
			
		||||
	private final int _accountDailyLimit;
 | 
			
		||||
	private final int _accountBuyLimit;
 | 
			
		||||
	private final boolean _isVipGift;
 | 
			
		||||
	private final int _vipTier;
 | 
			
		||||
	private final int _silverCoin;
 | 
			
		||||
@@ -74,8 +74,8 @@ public class PrimeShopGroup
 | 
			
		||||
		_maxLevel = set.getInt("maxLevel", 0);
 | 
			
		||||
		_minBirthday = set.getInt("minBirthday", 0);
 | 
			
		||||
		_maxBirthday = set.getInt("maxBirthday", 0);
 | 
			
		||||
		_restrictionDay = set.getInt("restrictionDay", 0);
 | 
			
		||||
		_availableCount = set.getInt("availableCount", 0);
 | 
			
		||||
		_accountDailyLimit = set.getInt("accountDailyLimit", 0);
 | 
			
		||||
		_accountBuyLimit = set.getInt("accountBuyLimit", 0);
 | 
			
		||||
		_isVipGift = set.getBoolean("isVipGift", false);
 | 
			
		||||
		_vipTier = set.getInt("vipTier", 0);
 | 
			
		||||
		_silverCoin = set.getInt("silverCoin", 0);
 | 
			
		||||
@@ -193,14 +193,14 @@ public class PrimeShopGroup
 | 
			
		||||
		return _maxBirthday;
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	public int getRestrictionDay()
 | 
			
		||||
	public int getAccountDailyLimit()
 | 
			
		||||
	{
 | 
			
		||||
		return _restrictionDay;
 | 
			
		||||
		return _accountDailyLimit;
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	public int getAvailableCount()
 | 
			
		||||
	public int getAccountBuyLimit()
 | 
			
		||||
	{
 | 
			
		||||
		return _availableCount;
 | 
			
		||||
		return _accountBuyLimit;
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	public boolean isVipGift()
 | 
			
		||||
 
 | 
			
		||||
@@ -42,6 +42,8 @@ public class AccountVariables extends AbstractVariables
 | 
			
		||||
	// Public variable names
 | 
			
		||||
	public static final String HWID = "HWID";
 | 
			
		||||
	public static final String HWIDSLIT_VAR = "	";
 | 
			
		||||
	public static final String PRIME_SHOP_PRODUCT_COUNT = "PSPCount";
 | 
			
		||||
	public static final String PRIME_SHOP_PRODUCT_DAILY_COUNT = "PSPDailyCount";
 | 
			
		||||
	public static final String VIP_POINTS = "VipPoints";
 | 
			
		||||
	public static final String VIP_TIER = "VipTier";
 | 
			
		||||
	public static final String VIP_EXPIRATION = "VipExpiration";
 | 
			
		||||
 
 | 
			
		||||
@@ -138,6 +138,17 @@ public class RequestBRBuyProduct implements IClientIncomingPacket
 | 
			
		||||
			{
 | 
			
		||||
				player.getAccountVariables().set(AccountVariables.VIP_ITEM_BOUGHT, Calendar.getInstance().getTimeInMillis());
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			// Update account variables.
 | 
			
		||||
			if (item.getAccountDailyLimit() > 0)
 | 
			
		||||
			{
 | 
			
		||||
				player.getAccountVariables().set(AccountVariables.PRIME_SHOP_PRODUCT_DAILY_COUNT + item.getBrId(), player.getAccountVariables().getInt(AccountVariables.PRIME_SHOP_PRODUCT_DAILY_COUNT + item.getBrId(), 0) + (item.getCount() * _count));
 | 
			
		||||
			}
 | 
			
		||||
			else if (item.getAccountBuyLimit() > 0)
 | 
			
		||||
			{
 | 
			
		||||
				player.getAccountVariables().set(AccountVariables.PRIME_SHOP_PRODUCT_COUNT + item.getBrId(), player.getAccountVariables().getInt(AccountVariables.PRIME_SHOP_PRODUCT_COUNT + item.getBrId(), 0) + (item.getCount() * _count));
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			player.sendPacket(new ExBRBuyProduct(ExBrProductReplyType.SUCCESS));
 | 
			
		||||
			player.sendPacket(new ExBRGamePoint(player));
 | 
			
		||||
		}
 | 
			
		||||
@@ -201,6 +212,16 @@ public class RequestBRBuyProduct implements IClientIncomingPacket
 | 
			
		||||
			player.sendPacket(new ExBRBuyProduct(ExBrProductReplyType.AFTER_SALE_DATE));
 | 
			
		||||
			return false;
 | 
			
		||||
		}
 | 
			
		||||
		else if ((item.getAccountDailyLimit() > 0) && ((count + player.getAccountVariables().getInt(AccountVariables.PRIME_SHOP_PRODUCT_DAILY_COUNT + item.getBrId(), 0)) > item.getAccountDailyLimit()))
 | 
			
		||||
		{
 | 
			
		||||
			player.sendPacket(new ExBRBuyProduct(ExBrProductReplyType.SOLD_OUT));
 | 
			
		||||
			return false;
 | 
			
		||||
		}
 | 
			
		||||
		else if ((item.getAccountBuyLimit() > 0) && ((count + player.getAccountVariables().getInt(AccountVariables.PRIME_SHOP_PRODUCT_COUNT + item.getBrId(), 0)) > item.getAccountBuyLimit()))
 | 
			
		||||
		{
 | 
			
		||||
			player.sendPacket(new ExBRBuyProduct(ExBrProductReplyType.SOLD_OUT));
 | 
			
		||||
			return false;
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		if ((item.getVipTier() > player.getVipTier()) || (item.isVipGift() && !canReceiveGift(player, item)))
 | 
			
		||||
		{
 | 
			
		||||
@@ -250,8 +271,7 @@ public class RequestBRBuyProduct implements IClientIncomingPacket
 | 
			
		||||
		}
 | 
			
		||||
		else
 | 
			
		||||
		{
 | 
			
		||||
			long timeBought = player.getAccountVariables().getLong(AccountVariables.VIP_ITEM_BOUGHT, 0L);
 | 
			
		||||
			return timeBought <= 0;
 | 
			
		||||
			return player.getAccountVariables().getLong(AccountVariables.VIP_ITEM_BOUGHT, 0) <= 0;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
 
 | 
			
		||||
@@ -22,6 +22,7 @@ import org.l2jmobius.commons.network.PacketWriter;
 | 
			
		||||
import org.l2jmobius.gameserver.model.actor.Player;
 | 
			
		||||
import org.l2jmobius.gameserver.model.primeshop.PrimeShopGroup;
 | 
			
		||||
import org.l2jmobius.gameserver.model.primeshop.PrimeShopItem;
 | 
			
		||||
import org.l2jmobius.gameserver.model.variables.AccountVariables;
 | 
			
		||||
import org.l2jmobius.gameserver.network.OutgoingPackets;
 | 
			
		||||
import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
 | 
			
		||||
 | 
			
		||||
@@ -64,15 +65,49 @@ public class ExBRProductList implements IClientOutgoingPacket
 | 
			
		||||
			packet.writeC(brItem.getStartMinute());
 | 
			
		||||
			packet.writeC(brItem.getStopHour());
 | 
			
		||||
			packet.writeC(brItem.getStopMinute());
 | 
			
		||||
			packet.writeD(brItem.getStock());
 | 
			
		||||
			packet.writeD(brItem.getTotal());
 | 
			
		||||
			
 | 
			
		||||
			// Daily account limit.
 | 
			
		||||
			if ((brItem.getAccountDailyLimit() > 0) && (_player.getAccountVariables().getInt(AccountVariables.PRIME_SHOP_PRODUCT_DAILY_COUNT + brItem.getBrId(), 0) >= brItem.getAccountDailyLimit()))
 | 
			
		||||
			{
 | 
			
		||||
				packet.writeD(brItem.getAccountDailyLimit());
 | 
			
		||||
				packet.writeD(brItem.getAccountDailyLimit());
 | 
			
		||||
			}
 | 
			
		||||
			// General account limit.
 | 
			
		||||
			else if ((brItem.getAccountBuyLimit() > 0) && (_player.getAccountVariables().getInt(AccountVariables.PRIME_SHOP_PRODUCT_COUNT + brItem.getBrId(), 0) >= brItem.getAccountBuyLimit()))
 | 
			
		||||
			{
 | 
			
		||||
				packet.writeD(brItem.getAccountBuyLimit());
 | 
			
		||||
				packet.writeD(brItem.getAccountBuyLimit());
 | 
			
		||||
			}
 | 
			
		||||
			else
 | 
			
		||||
			{
 | 
			
		||||
				packet.writeD(brItem.getStock());
 | 
			
		||||
				packet.writeD(brItem.getTotal());
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			packet.writeC(brItem.getSalePercent());
 | 
			
		||||
			packet.writeC(brItem.getMinLevel());
 | 
			
		||||
			packet.writeC(brItem.getMaxLevel());
 | 
			
		||||
			packet.writeD(brItem.getMinBirthday());
 | 
			
		||||
			packet.writeD(brItem.getMaxBirthday());
 | 
			
		||||
			packet.writeD(brItem.getRestrictionDay());
 | 
			
		||||
			packet.writeD(brItem.getAvailableCount());
 | 
			
		||||
			
 | 
			
		||||
			// Daily account limit.
 | 
			
		||||
			if (brItem.getAccountDailyLimit() > 0)
 | 
			
		||||
			{
 | 
			
		||||
				packet.writeD(1); // Days
 | 
			
		||||
				packet.writeD(brItem.getAccountDailyLimit()); // Amount
 | 
			
		||||
			}
 | 
			
		||||
			// General account limit.
 | 
			
		||||
			else if (brItem.getAccountBuyLimit() > 0)
 | 
			
		||||
			{
 | 
			
		||||
				packet.writeD(-1); // Days
 | 
			
		||||
				packet.writeD(brItem.getAccountBuyLimit()); // Amount
 | 
			
		||||
			}
 | 
			
		||||
			else
 | 
			
		||||
			{
 | 
			
		||||
				packet.writeD(0); // Days
 | 
			
		||||
				packet.writeD(0); // Amount
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			packet.writeC(brItem.getItems().size());
 | 
			
		||||
			for (PrimeShopItem item : brItem.getItems())
 | 
			
		||||
			{
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user