Premium system for the custom community board.

Contributed by gigilo1968.
This commit is contained in:
MobiusDev
2016-12-29 21:54:44 +00:00
parent ac16e869c8
commit 61efe4651f
8 changed files with 258 additions and 44 deletions

View File

@@ -680,6 +680,9 @@ public final class Config
public static boolean FACTION_BALANCE_ONLINE_PLAYERS;
public static int FACTION_BALANCE_PLAYER_EXCEED_LIMIT;
public static boolean PREMIUM_SYSTEM_ENABLED;
public static boolean COMMUNITY_PREMIUM_SYSTEM_ENABLED;
public static int COMMUNITY_PREMIUM_COIN_ID;
public static int COMMUNITY_PREMIUM_PRICE_PER_DAY;
public static float PREMIUM_RATE_XP;
public static float PREMIUM_RATE_SP;
public static Map<Integer, Float> PREMIUM_RATE_DROP_ITEMS_ID;
@@ -2133,6 +2136,9 @@ public final class Config
FACTION_BALANCE_PLAYER_EXCEED_LIMIT = CustomSettings.getInt("BalancePlayerExceedLimit", 20);
PREMIUM_SYSTEM_ENABLED = CustomSettings.getBoolean("EnablePremiumSystem", false);
COMMUNITY_PREMIUM_SYSTEM_ENABLED = CustomSettings.getBoolean("CommunityPremiumSystem", false);
COMMUNITY_PREMIUM_COIN_ID = CustomSettings.getInt("CommunityPremiumBuyCoinId", 57);
COMMUNITY_PREMIUM_PRICE_PER_DAY = CustomSettings.getInt("CommunityPremiumPricePerDay", 1000000);
PREMIUM_RATE_XP = CustomSettings.getFloat("PremiumRateXp", 2);
PREMIUM_RATE_SP = CustomSettings.getFloat("PremiumRateSp", 2);
PREMIUM_RATE_DROP_CHANCE = CustomSettings.getFloat("PremiumRateDropChance", 2);

View File

@@ -62,7 +62,42 @@ public class PremiumManager
return endDate;
}
public void updatePremiumData(int months, String accountName)
public void addPremiumDays(int days, String accountName)
{
long remainingTime = getPremiumEndDate(accountName);
if (remainingTime > 0)
{
remainingTime -= System.currentTimeMillis();
}
try (Connection con = DatabaseFactory.getInstance().getConnection())
{
final Calendar endDate = Calendar.getInstance();
endDate.setTimeInMillis(System.currentTimeMillis() + remainingTime);
endDate.set(Calendar.SECOND, 0);
endDate.add(Calendar.HOUR, 24 * days);
final PreparedStatement statement = con.prepareStatement("UPDATE account_premium SET premium_service=?,enddate=? WHERE account_name=?");
statement.setInt(1, 1);
statement.setLong(2, endDate.getTimeInMillis());
statement.setString(3, accountName);
statement.execute();
statement.close();
}
catch (SQLException e)
{
}
for (L2PcInstance player : L2World.getInstance().getPlayers())
{
if (player.getAccountNamePlayer().equalsIgnoreCase(accountName))
{
player.setPremiumStatus(getPremiumEndDate(accountName) > 0);
}
}
}
public void addPremiumMonths(int months, String accountName)
{
long remainingTime = getPremiumEndDate(accountName);
if (remainingTime > 0)

View File

@@ -17,6 +17,7 @@
package com.l2jmobius.gameserver.network.serverpackets;
import com.l2jmobius.commons.network.PacketWriter;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.network.client.OutgoingPackets;
/**
@@ -24,13 +25,11 @@ import com.l2jmobius.gameserver.network.client.OutgoingPackets;
*/
public class ExBrPremiumState implements IClientOutgoingPacket
{
private final int _objId;
private final int _state;
private final L2PcInstance _activeChar;
public ExBrPremiumState(int id, int state)
public ExBrPremiumState(L2PcInstance activeChar)
{
_objId = id;
_state = state;
_activeChar = activeChar;
}
@Override
@@ -38,8 +37,8 @@ public class ExBrPremiumState implements IClientOutgoingPacket
{
OutgoingPackets.EX_BR_PREMIUM_STATE.writeId(packet);
packet.writeD(_objId);
packet.writeC(_state);
packet.writeD(_activeChar.getObjectId());
packet.writeC(_activeChar.hasPremiumStatus() ? 0x01 : 0x00);
return true;
}
}