Перейти к содержанию
Авторизация  
RoyalGost

Diff Премиум Аккаунта

Рекомендуемые сообщения

Всем привет!

Думаю многие пользовалители нашего портала, собственно как и я сам ищут исходники для ПА.

Собственно, ребята, поделитесь кодом или дифкой если кто имеет таковой, желательно для сборки L2jFrozen , буду очень признателен.

Изменено пользователем RoyalGost

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На форуме полазил, увидел 1 тему с якобы премиум аккаунтом, скачал его, а там весь код кривой.

Поделитесь с рабочим кому не жалко!=)) Думаю многим это понадобится..=))

Изменено пользователем RoyalGost

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что тебе именно нужно для премиум сервиса?

П.С. У меня есть полноценная ПА система с менеджером покупки, оповещением при входе и проверками (не теми кривыми). Но ее не отдам, но простенькое написать могу

Изменено пользователем Anderson

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

во фрозенах встоенное ПА есть

Donator system

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

во фрозенах встоенное ПА есть

Donator system

Там есть, но он навсегда и лагает. Т.к. когда даёшь его, до релога он работает, а дальше просто ник цветной а вот бонусов нету.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что тебе именно нужно для премиум сервиса?

П.С. У меня есть полноценная ПА система с менеджером покупки, оповещением при входе и проверками (не теми кривыми). Но ее не отдам, но простенькое написать могу

Отписал в лс. Мне нужен простенький ПА.

Чтобы добавлял к статам на дроп\споил\адену\сп\опыт\квест + цветной ник ПА по возможности. Но увы мои познания ещё не столь велики дабы сложить такое)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

так там можно настроить все это, у меня норм было с па на фрозенах

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Там ПА только навсегда выдаётся. На определённое кол-во дней нету.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

так настроить можно, возьму шарувую сборку la2hate.ru

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

так настроить можно, возьму шарувую сборку la2hate.ru

Ничего там настраивать нельзя, не нужно тут рекламить кривые проекты, на которые даже зайти нельзя. И не нужна мне какая нибудь другая сборка, мне нужен именно исходник.

Изменено пользователем RoyalGost

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

$500 и реализую для тебя

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Начал делать, но роботы там по больше чем думал. Сделал ему менеджера и новую систему. Но конекты чуть другие, и еще попарить нужно было мозги я забил. Там доделать не так много, кто захочет напишите и доделайте, а то времени нет(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

вот в pcinstance

розьирайся с дропом итд сам.

+создай колонку в базею

//Премиум акаунт

private static final String INSERT_PREMIUMSERVICE = "INSERT INTO account_premium (account_name,premium_service,enddate) values(?,?,?)";

private static final String RESTORE_PREMIUMSERVICE = "SELECT premium_service,enddate FROM account_premium WHERE account_name=?";

private static final String UPDATE_PREMIUMSERVICE = "UPDATE account_premium SET premium_service=?,enddate=? WHERE account_name=?";

 

private void createPSdb() {

java.sql.Connection con = null;

try {

con = L2DatabaseFactory.getInstance().getConnection();

PreparedStatement statement = con.prepareStatement(INSERT_PREMIUMSERVICE);

statement.setString(1, _accountName);

statement.setInt(2, 0);

statement.setLong(3, 0);

statement.executeUpdate();

statement.close();

}

 

catch (Exception e)

{

_log.warning("Could not insert char data: " + e);

e.printStackTrace();

}

finally

{

try { con.close(); } catch (Exception e) {}

}

}

 

public static void restorePremServiceData(L2PcInstance player, String account) {

boolean sucess = false;

java.sql.Connection con = null;

try {

con = L2DatabaseFactory.getInstance().getConnection();

PreparedStatement statement = con.prepareStatement(RESTORE_PREMIUMSERVICE);

statement.setString(1, account);

ResultSet rset = statement.executeQuery();

while (rset.next()) {

sucess = true;

if (Config.USE_PREMIUMSERVICE) {

if (rset.getLong("enddate") <= System.currentTimeMillis()) {

PStimeOver(account);

player.setPremiumService(0);

} else

player.setPremiumService(rset.getInt("premium_service"));

} else

player.setPremiumService(0);

}

 

statement.close();

 

}

catch (Exception e)

{

_log.warning("PremiumService: Could not restore PremiumService data for:" + account + "." + e);

e.printStackTrace();

}

finally

{

try { con.close(); } catch (Exception e) {}

}

if (sucess == false) {

player.createPSdb();

player.setPremiumService(0);

}

}

 

private static void PStimeOver(String account) {

java.sql.Connection con = null;

try {

con = L2DatabaseFactory.getInstance().getConnection();

PreparedStatement statement = con.prepareStatement(UPDATE_PREMIUMSERVICE);

statement.setInt(1, 0);

statement.setLong(2, 0);

statement.setString(3, account);

statement.execute();

statement.close();

}

 

catch (Exception e)

{

_log.warning("PremiumService: Could not increase data");

}

finally

{

try { con.close(); } catch (Exception e) {}

}

}

 

//PA end

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да я ему это все уже написал, даже дроп изменил и добавил ф-и проверки на па не карявые. Но на больше времени нет

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Index: /Server/java/config/rates.properties

===================================================================

--- /Server/java/config/rates.properties (revision 23)

+++ /Server/java/config/rates.properties (revision 24)

@@ -28,4 +28,27 @@

RateSiegeGuardsPrice = 2

 

+# ---------------------------------------------------------------------------

+# Ñèñòåìà Ïðåìèóì-Àêêàóíò (ÏÀ)

+# ---------------------------------------------------------------------------

+# Âêëþ÷èòü ôóíêöèþ Ïðåìèóì-Àêêàóíò (ÏÀ)?

+# Ïî óìîë÷àíèþ: False

+UsePremiumServices = False

+

+# Êàêèå ðåéòû áóäóò ïðèíèìàòüñÿ äëÿ îáëàäàòåëåé ÏÀ?

+PremiumRateXp = 2

+PremiumRateSp = 2

+PremiumRateDropItemsById = 57,2

+PremiumRateDropItems = 2

+PremiumRateDropSpoil = 2

+PremiumRateDropQuest = 2

+

+# Âêëþ÷èòü íàäáàâêó ê øàíñó çàòî÷êè äëÿ îáëàäàòåëåé ïðåìèóìà?

+# Ïî óìîë÷àíèþ: False

+PremiumEnchBonus = false

+

+# Íàäáàâêà ê øàíñó çàòî÷êè, ðàáîòàåò òîëüêî ïðè PremiumEnchBonus = true

+# ïðèìåð: åñëè øàíñ çàòî÷êè 75%, à PremiumEnchantChanceBonus = 5 òî èòîãîâûé øàíñ 80%

+PremiumEnchantChanceBonus = 0

+

# Quest Multipliers

# Warning: Many quests need to be rewritten

Index: /Server/java/ru/l2m/util/DatabaseCommands.java

===================================================================

--- /Server/java/ru/l2m/util/DatabaseCommands.java (revision 23)

+++ /Server/java/ru/l2m/util/DatabaseCommands.java (revision 24)

@@ -73,4 +73,8 @@

public static final String SELECT_CHAR_TRANSFORM = "SELECT transform_id FROM characters WHERE charId=?";

public static final String UPDATE_CHAR_TRANSFORM = "UPDATE characters SET transform_id=? WHERE charId=?";

+ // Character PremiumService String Definitions:

+ private static final String INSERT_PREMIUMSERVICE = "INSERT INTO account_premium (account_name,premium_service,enddate) values(?,?,?)";

+ private static final String RESTORE_PREMIUMSERVICE = "SELECT premium_service,enddate FROM account_premium WHERE account_name=?";

+ private static final String UPDATE_PREMIUMSERVICE = "UPDATE account_premium SET premium_service=?,enddate=? WHERE account_name=?";

 

/**

@@ -1702,3 +1706,118 @@

return result;

}

+

+ public void createPSdb()

+ {

+ Connection con = null;

+ try

+ {

+ con = L2DatabaseFactory.getInstance().getConnection();

+ PreparedStatement statement = con.prepareStatement(INSERT_PREMIUMSERVICE);

+ statement.setString(1, _accountName);

+ statement.setInt(2, 0);

+ statement.setLong(3, 0);

+ statement.executeUpdate();

+ statement.close();

+ }

+ catch (Exception e)

+ {

+ _log.log(Level.SEVERE, "Could not insert char data: ", e);

+ e.printStackTrace();

+ return;

+ }

+ finally

+ {

+ try

+ {

+ if (con != null)

+ con.close();

+ }

+ catch (SQLException e)

+ {

+ e.printStackTrace();

+ }

+ }

+ }

+

+ public static void PStimeOver(String account)

+ {

+ Connection con = null;

+ try

+ {

+ con = L2DatabaseFactory.getInstance().getConnection();

+ PreparedStatement statement = con.prepareStatement(UPDATE_PREMIUMSERVICE);

+ statement.setInt(1, 0);

+ statement.setLong(2, 0);

+ statement.setString(3, account);

+ statement.execute();

+ statement.close();

+ }

+ catch (SQLException e)

+ {

+ _log.log(Level.SEVERE, "PremiumService: Could not increase data");

+ }

+ finally

+ {

+ try

+ {

+ if (con != null)

+ con.close();

+ }

+ catch (SQLException e)

+ {

+ e.printStackTrace();

+ }

+ }

+ }

+

+ public static void restorePremServiceData(L2PcInstance player, String account)

+ {

+ boolean sucess=false;

+ Connection con = null;

+ try

+ {

+ con = L2DatabaseFactory.getInstance().getConnection();

+ PreparedStatement statement = con.prepareStatement(RESTORE_PREMIUMSERVICE);

+ statement.setString(1, account);

+ ResultSet rset = statement.executeQuery();

+ while (rset.next())

+ {

+ sucess=true;

+ if (Config.USE_PREMIUMSERVICE){

+ if (rset.getLong("enddate") <= System.currentTimeMillis()){

+ PStimeOver(account);

+ player.setPremiumService(0);

+ }

+ else

+ player.setPremiumService(rset.getInt("premium_service"));

+ }

+ else

+ player.setPremiumService(0);

+ }

+ statement.close();

+ }

+ catch (Exception e)

+ {

+ _log.log(Level.SEVERE, "PremiumService: Could not restore PremiumService data for:" + account + ".", e);

+ e.printStackTrace();

+ }

+ finally

+ {

+ try

+ {

+ if (con != null)

+ con.close();

+ }

+ catch (SQLException e)

+ {

+ e.printStackTrace();

+ }

+ }

+ if (sucess==false)

+ {

+ player.createPSdb();

+ player.setPremiumService(0);

+ }

+ }

+

}

Index: /Server/java/ru/l2simple/gameserver/Prem.java

===================================================================

--- /Server/java/ru/l2simple/gameserver/Prem.java (revision 24)

+++ /Server/java/ru/l2simple/gameserver/Prem.java (revision 24)

@@ -0,0 +1,52 @@

+package ru.l2simple.gameserver;

+

+import java.sql.Connection;

+import java.sql.PreparedStatement;

+import java.sql.ResultSet;

+

+import ru.l2simple.Config;

+import ru.l2simple.L2DatabaseFactory;

+

+public class Prem

+{

+ private long _end_pr_date;

+ public static final Prem getInstance()

+ {

+ return SingletonHolder._instance;

+ }

+ public long getPremServiceData(String playerAcc)

+ {

+

+ Connection con = null;

+ try

+ {

+ con = L2DatabaseFactory.getInstance().getConnection();

+ PreparedStatement statement = con.prepareStatement("SELECT premium_service,enddate FROM account_premium WHERE account_name=?");

+ statement.setString(1, playerAcc);

+ ResultSet rset = statement.executeQuery();

+ while (rset.next())

+ {

+ if (Config.USE_PREMIUMSERVICE)

+ {

+ _end_pr_date = rset.getLong("enddate");

+ }

+ }

+ statement.close();

+ }

+ catch (Exception e)

+ {

+ }

+ finally

+ {

+ L2DatabaseFactory.close(con);

+ }

+ return _end_pr_date;

+ }

+

+ @SuppressWarnings("synthetic-access")

+

+ private static class SingletonHolder

+ {

+ protected static final Prem _instance = new Prem();

+ }

+}

Index: /Server/java/ru/l2simple/gameserver/network/clientpackets/RequestEnchantItem.java

===================================================================

--- /Server/java/ru/l2simple/gameserver/network/clientpackets/RequestEnchantItem.java (revision 23)

+++ /Server/java/ru/l2simple/gameserver/network/clientpackets/RequestEnchantItem.java (revision 24)

@@ -167,4 +167,9 @@

return;

}

+

+ if (Config.PREMIUM_ENCH_BONUS && activeChar.getPremiumService()==1)

+ {

+ chance += Config.PREMIUM_ENCH_CHANCE_BONUS;

+ }

 

if (Rnd.get(100) < chance)

Index: /Server/java/ru/l2simple/gameserver/network/clientpackets/EnterWorld.java

===================================================================

--- /Server/java/ru/l2simple/gameserver/network/clientpackets/EnterWorld.java (revision 23)

+++ /Server/java/ru/l2simple/gameserver/network/clientpackets/EnterWorld.java (revision 24)

@@ -4,4 +4,7 @@

package ru.l2simple.gameserver.network.clientpackets;

 

+import java.util.Calendar;

+import java.text.SimpleDateFormat;

+

import java.io.UnsupportedEncodingException;

import java.sql.Connection;

@@ -17,6 +20,7 @@

 

import ru.l2simple.Base64;

-import ru.l2simple.Config;

+import ru.l2simple.Config;

import ru.l2simple.L2DatabaseFactory;

+import ru.l2simple.gameserver.Prem;

import ru.l2simple.gameserver.Announcements;

import ru.l2simple.gameserver.GmListTable;

@@ -69,4 +73,5 @@

import ru.l2simple.gameserver.network.serverpackets.ExBirthdayPopup;

import ru.l2simple.gameserver.network.serverpackets.ExBrExtraUserInfo;

+import ru.l2simple.gameserver.network.serverpackets.ExBrPremiumState;

import ru.l2simple.gameserver.network.serverpackets.ExGetBookMarkInfoPacket;

import ru.l2simple.gameserver.network.serverpackets.ExNoticePostArrived;

@@ -323,4 +328,7 @@

sendPacket(new ShortCutInit(activeChar));

 

+ // Send PA Status

+ sendPacket(new ExBrPremiumState(activeChar.getObjectId(), activeChar.getPremiumService()));

+

// Send Action list

activeChar.sendPacket(new ExBasicActionList(activeChar));

@@ -389,8 +397,17 @@

 

sendPacket(new SystemMessage(SystemMessageId.WELCOME_TO_LINEAGE));

+

activeChar.sendMessage("This server uses L2Simple files, a project developed by Naik");

activeChar.sendMessage("Copyright 2012 www.L2Simple.ru");

+

SevenSigns.getInstance().sendCurrentPeriodMsg(activeChar);

Announcements.getInstance().showAnnouncements(activeChar);

+

+ SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy HH:mm");

+ long _end_prem_date;

+ _end_prem_date = Prem.getInstance().getPremServiceData(activeChar.getAccountName());

+

+ activeChar.sendMessage("Premium Service End - " + String.valueOf(format.format(_end_prem_date)));

+ activeChar.sendMessage("Now Date - " + String.valueOf(format.format(System.currentTimeMillis())));

 

if (Config.PETITIONING_ALLOWED)

Index: /Server/java/ru/l2simple/gameserver/model/L2Party.java

===================================================================

--- /Server/java/ru/l2simple/gameserver/model/L2Party.java (revision 23)

+++ /Server/java/ru/l2simple/gameserver/model/L2Party.java (revision 24)

@@ -622,9 +622,11 @@

*

*/

- public void distributeXpAndSp(long xpReward, int spReward, List<L2Playable> rewardedMembers, int topLvl, int partyDmg, L2Attackable target)

+ public void distributeXpAndSp(long xpReward_pr, int spReward_pr, long xpReward, int spReward, List<L2Playable> rewardedMembers, int topLvl, int partyDmg, L2Attackable target)

{

L2SummonInstance summon = null;

List<L2Playable> validMembers = getValidMembers(rewardedMembers, topLvl);

 

+ long CalcXPReward;

+ int CalcSPReward;

float penalty;

double sqLevel;

@@ -633,4 +635,6 @@

xpReward *= getExpBonus(validMembers.size());

spReward *= getSpBonus(validMembers.size());

+ xpReward_pr *= getExpBonus(validMembers.size());

+ spReward_pr *= getSpBonus(validMembers.size());

 

double sqLevelSum = 0;

@@ -650,4 +654,15 @@

continue;

}

+

+ if (member.getPremiumService()==1)

+ {

+ CalcXPReward=xpReward_pr;

+ CalcSPReward=spReward_pr;

+ }

+ else

+ {

+ CalcXPReward=xpReward;

+ CalcSPReward=spReward;

+ }

 

penalty = 0;

@@ -678,6 +693,6 @@

if (!member.isDead())

{

- long addexp = Math.round(member.calcStat(Stats.EXPSP_RATE, xpReward * preCalculation, null, null));

- int addsp = (int)member.calcStat(Stats.EXPSP_RATE, spReward * preCalculation, null, null);

+ long addexp = Math.round(member.calcStat(Stats.EXPSP_RATE, CalcXPReward * preCalculation, null, null));

+ int addsp = (int)member.calcStat(Stats.EXPSP_RATE, CalcSPReward * preCalculation, null, null);

if (member instanceof L2PcInstance)

{

Index: /Server/java/ru/l2simple/gameserver/model/actor/instance/L2PcInstance.java

===================================================================

--- /Server/java/ru/l2simple/gameserver/model/actor/instance/L2PcInstance.java (revision 23)

+++ /Server/java/ru/l2simple/gameserver/model/actor/instance/L2PcInstance.java (revision 24)

@@ -7133,4 +7133,5 @@

 

player = new L2PcInstance(objectId, template, rset.getString("account_name"), app);

+ restorePremServiceData(player,rset.getString("account_name"));

player.setName(rset.getString("char_name"));

player._lastAccess = rset.getLong("lastAccess");

Index: /Server/java/ru/l2simple/gameserver/model/actor/L2Attackable.java

===================================================================

--- /Server/java/ru/l2simple/gameserver/model/actor/L2Attackable.java (revision 23)

+++ /Server/java/ru/l2simple/gameserver/model/actor/L2Attackable.java (revision 24)

@@ -761,6 +761,6 @@

{

L2Party attackerParty;

- long exp;

- int levelDiff, partyDmg, partyLvl, sp;

+ long exp, exp_premium;

+ int levelDiff, partyDmg, partyLvl, sp, sp_premium;

float partyMul, penalty;

RewardInfo reward2;

@@ -814,5 +814,5 @@

levelDiff = attacker.getLevel() - getLevel();

 

- tmp = calculateExpAndSp(levelDiff, damage);

+ tmp = calculateExpAndSp(levelDiff, damage, attacker.getPremiumService());

exp = tmp[0];

exp *= 1 - penalty;

@@ -968,5 +968,8 @@

 

// Calculate Exp and SP rewards

- tmp = calculateExpAndSp(levelDiff, partyDmg);

+ tmp = calculateExpAndSp(levelDiff, partyDmg, 1);

+ exp_premium = tmp[0];

+ sp_premium = tmp[1];

+ tmp = calculateExpAndSp(levelDiff, partyDmg, 0);

exp = tmp[0];

sp = tmp[1];

@@ -986,4 +989,6 @@

exp *= partyMul;

sp *= partyMul;

+ exp_premium *= partyMul;

+ sp_premium *= partyMul;

 

// Check for an over-hit enabled strike

@@ -997,4 +1002,5 @@

player.sendPacket(new SystemMessage(SystemMessageId.OVER_HIT));

exp += calculateOverhitExp(exp);

+ exp_premium += calculateOverhitExp(exp_premium);

}

}

@@ -1016,5 +1022,5 @@

}

}

- attackerParty.distributeXpAndSp(exp, sp, rewardedMembers, partyLvl, partyDmg, this);

+ attackerParty.distributeXpAndSp(exp_premium, sp_premium, exp, sp, rewardedMembers, partyLvl, partyDmg, this);

}

}

@@ -1345,10 +1351,23 @@

 

// Applies Drop rates

- if (Config.RATE_DROP_ITEMS_ID.get(drop.getItemId()) != 0)

+ if (lastAttacker.getPremiumService()==1)

+ if (Config.PREMIUM_RATE_DROP_ITEMS_ID.get(drop.getItemId()) != 0)

+ dropChance *= Config.PREMIUM_RATE_DROP_ITEMS_ID.get(drop.getItemId());

+ else if (Config.RATE_DROP_ITEMS_ID.get(drop.getItemId()) != 0)

dropChance *= Config.RATE_DROP_ITEMS_ID.get(drop.getItemId());

else if (isSweep)

- dropChance *= Config.RATE_DROP_SPOIL;

+ {

+ if (lastAttacker.getPremiumService()==1)

+ dropChance *= Config.PREMIUM_RATE_DROP_SPOIL;

+ else

+ dropChance *= Config.RATE_DROP_SPOIL;

+ }

else

- dropChance *= isRaid() && !isRaidMinion() ? Config.RATE_DROP_ITEMS_BY_RAID : Config.RATE_DROP_ITEMS;

+ {

+ if (lastAttacker.getPremiumService()==1)

+ dropChance *= isRaid() && !isRaidMinion() ? Config.PREMIUM_RATE_DROP_ITEMS_BY_RAID : Config.PREMIUM_RATE_DROP_ITEMS;

+ else

+ dropChance *= isRaid() && !isRaidMinion() ? Config.RATE_DROP_ITEMS_BY_RAID : Config.RATE_DROP_ITEMS;

+ }

 

if (Config.MOD_CHAMPION_ENABLE && isChampion())

@@ -1489,6 +1508,11 @@

int dropChance = drop.getChance();

 

- if (Config.RATE_DROP_ITEMS_ID.get(drop.getItemId()) != 0)

- dropChance *= Config.RATE_DROP_ITEMS_ID.get(drop.getItemId());

+ if (lastAttacker.getPremiumService()==1)

+ if (Config.PREMIUM_RATE_DROP_ITEMS_ID.get(drop.getItemId()) != 0)

+ dropChance *= Config.PREMIUM_RATE_DROP_ITEMS_ID.get(drop.getItemId());

+ else if (Config.RATE_DROP_ITEMS_ID.get(drop.getItemId()) != 0)

+ dropChance *= Config.RATE_DROP_ITEMS_ID.get(drop.getItemId());

+ else if (lastAttacker.getPremiumService()==1)

+ dropChance *= isRaid() && !isRaidMinion() ? Config.PREMIUM_RATE_DROP_ITEMS_BY_RAID : Config.PREMIUM_RATE_DROP_ITEMS;

else

dropChance *= isRaid() && !isRaidMinion() ? Config.RATE_DROP_ITEMS_BY_RAID : Config.RATE_DROP_ITEMS;

@@ -2610,5 +2634,5 @@

*

*/

- private int[] calculateExpAndSp(int diff, int damage)

+ private int[] calculateExpAndSp(int diff, int damage, int IsPremium)

{

double xp;

@@ -2618,9 +2642,9 @@

diff = -5; // makes possible to use ALT_GAME_EXPONENT configuration

 

- xp = (double)getExpReward() * damage / getMaxHp();

+ xp = (double) getExpReward(IsPremium) * damage / getMaxHp();

if (Config.ALT_GAME_EXPONENT_XP != 0)

xp *= Math.pow(2., -diff / Config.ALT_GAME_EXPONENT_XP);

 

- sp = (double)getSpReward() * damage / getMaxHp();

+ sp = (double) getExpReward(IsPremium) * damage / getMaxHp();

if (Config.ALT_GAME_EXPONENT_SP != 0)

sp *= Math.pow(2., -diff / Config.ALT_GAME_EXPONENT_SP);

Index: /Server/java/ru/l2simple/gameserver/model/actor/L2Character.java

===================================================================

--- /Server/java/ru/l2simple/gameserver/model/actor/L2Character.java (revision 23)

+++ /Server/java/ru/l2simple/gameserver/model/actor/L2Character.java (revision 24)

@@ -6920,4 +6920,16 @@

{

return true;

- }

+ }

+

+ private int _PremiumService;

+

+ public void setPremiumService(int PS)

+ {

+ _PremiumService=PS;

+ }

+

+ public int getPremiumService()

+ {

+ return _PremiumService;

+ }

}

Index: /Server/java/ru/l2simple/gameserver/model/actor/L2Npc.java

===================================================================

--- /Server/java/ru/l2simple/gameserver/model/actor/L2Npc.java (revision 23)

+++ /Server/java/ru/l2simple/gameserver/model/actor/L2Npc.java (revision 24)

@@ -1335,19 +1335,25 @@

* Return the Exp Reward of this L2NpcInstance contained in the L2NpcTemplate (modified by RATE_XP).<BR><BR>

*/

- public int getExpReward()

- {

+ public int getExpReward(int isPremium)

+ {

double rateXp = getStat().calcStat(Stats.MAX_HP, 1, this, null);

- return (int) (getTemplate().rewardExp * rateXp * Config.RATE_XP);

- }

-

+ if (isPremium==1)

+ return (int) (getTemplate().getRewardExp() * Config.PREMIUM_RATE_XP);

+ else

+ return (int) (getTemplate().getRewardExp() * Config.RATE_XP);

+ }

+

/**

* Return the SP Reward of this L2NpcInstance contained in the L2NpcTemplate (modified by RATE_SP).<BR><BR>

*/

- public int getSpReward()

+ public int getSpReward(int isPremium)

{

double rateSp = getStat().calcStat(Stats.MAX_HP, 1, this, null);

- return (int) (getTemplate().rewardSp * rateSp * Config.RATE_SP);

- }

-

+ if (isPremium==1)

+ return (int) (getTemplate().getRewardSp() * Config.PREMIUM_RATE_SP);

+ else

+ return (int) (getTemplate().getRewardSp() * Config.RATE_SP);

+ }

+

/**

* Kill the L2NpcInstance (the corpse disappeared after 7 seconds).<BR><BR>

Index: /Server/java/ru/l2simple/Config.java

===================================================================

--- /Server/java/ru/l2simple/Config.java (revision 23)

+++ /Server/java/ru/l2simple/Config.java (revision 24)

@@ -848,5 +848,14 @@

public static int KARMA_RATE_DROP_EQUIP_WEAPON;

public static double[] PLAYER_XP_PERCENT_LOST;

-

+ public static boolean USE_PREMIUMSERVICE;

+ public static float PREMIUM_RATE_XP;

+ public static float PREMIUM_RATE_SP;

+ public static TIntFloatHashMap PREMIUM_RATE_DROP_ITEMS_ID;

+ public static float PREMIUM_RATE_DROP_SPOIL;

+ public static float PREMIUM_RATE_DROP_ITEMS;

+ public static float PREMIUM_RATE_DROP_QUEST;

+ public static float PREMIUM_RATE_DROP_ITEMS_BY_RAID;

+ public static boolean PREMIUM_ENCH_BONUS;

+ public static int PREMIUM_ENCH_CHANCE_BONUS;

 

//--------------------------------------------------

@@ -2067,4 +2076,17 @@

KARMA_RATE_DROP_EQUIP_WEAPON = Integer.parseInt(ratesSettings.getProperty("KarmaRateDropEquipWeapon", "10"));

 

+ USE_PREMIUMSERVICE = Boolean.parseBoolean(ratesSettings.getProperty("UsePremiumServices", "False"));

+ PREMIUM_RATE_XP = Float.parseFloat(ratesSettings.getProperty("PremiumRateXp", "2"));

+ PREMIUM_RATE_SP = Float.parseFloat(ratesSettings.getProperty("PremiumRateSp", "2"));

+ PREMIUM_RATE_DROP_SPOIL = Float.parseFloat(ratesSettings.getProperty("PremiumRateDropSpoil", "2"));

+ PREMIUM_RATE_DROP_ITEMS = Float.parseFloat(ratesSettings.getProperty("PremiumRateDropItems", "2"));

+ PREMIUM_RATE_DROP_QUEST = Float.parseFloat(ratesSettings.getProperty("PremiumRateDropQuest", "2"));

+ PREMIUM_RATE_DROP_ITEMS_BY_RAID = Float.parseFloat(ratesSettings.getProperty("PremiumRateRaidDropItems", "2"));

+ PREMIUM_ENCH_BONUS = Boolean.parseBoolean(ratesSettings.getProperty("PremiumEnchBonus", "False"));

+ if (PREMIUM_ENCH_BONUS)

+ {

+ PREMIUM_ENCH_CHANCE_BONUS = Integer.parseInt(ratesSettings.getProperty("PremiumEnchantChanceBonus", "0"));

+ }

+

// Initializing table

PLAYER_XP_PERCENT_LOST = new double[byte.MAX_VALUE+1];

@@ -2128,4 +2150,32 @@

{

RATE_DROP_ITEMS_ID.put(57, RATE_DROP_ITEMS); //for Adena rate if not defined

+ }

+

+ String[] premiumPropertySplit = ratesSettings.getProperty("PremiumRateDropItemsById", "").split(";");

+ PREMIUM_RATE_DROP_ITEMS_ID = new TIntFloatHashMap(propertySplit.length);

+ if (!propertySplit[0].isEmpty())

+ {

+ for (String item : propertySplit)

+ {

+ String[] itemSplit = item.split(",");

+ if (itemSplit.length != 2)

+ _log.warning(StringUtil.concat("Config.load(): invalid config property -> PremiumRateDropItemsById \"", item, "\""));

+ else

+ {

+ try

+ {

+ PREMIUM_RATE_DROP_ITEMS_ID.put(Integer.parseInt(itemSplit[0]), Float.parseFloat(itemSplit[1]));

+ }

+ catch (NumberFormatException nfe)

+ {

+ if (!item.isEmpty())

+ _log.warning(StringUtil.concat("Config.load(): invalid config property -> PremiumRateDropItemsById \"", item, "\""));

+ }

+ }

+ }

+ }

+ if (PREMIUM_RATE_DROP_ITEMS_ID.get(PcInventory.ADENA_ID) == 0f)

+ {

+ PREMIUM_RATE_DROP_ITEMS_ID.put(PcInventory.ADENA_ID, PREMIUM_RATE_DROP_ITEMS); //for Adena rate if not defined

}

}

@@ -3026,5 +3076,12 @@

else if (pName.equalsIgnoreCase("KarmaRateDropEquip")) KARMA_RATE_DROP_EQUIP = Integer.parseInt(pValue);

else if (pName.equalsIgnoreCase("KarmaRateDropEquipWeapon")) KARMA_RATE_DROP_EQUIP_WEAPON = Integer.parseInt(pValue);

-

+ else if (pName.equalsIgnoreCase("PremiumRateXp")) PREMIUM_RATE_XP = Float.parseFloat(pValue);

+ else if (pName.equalsIgnoreCase("PremiumRateSp")) PREMIUM_RATE_SP = Float.parseFloat(pValue);

+ else if (pName.equalsIgnoreCase("PremiumRateDropItemsById")) PREMIUM_RATE_DROP_ITEMS_ID.put(57, Float.parseFloat(pValue));

+ else if (pName.equalsIgnoreCase("PremiumRateDropSpoil")) PREMIUM_RATE_DROP_SPOIL = Float.parseFloat(pValue);

+ else if (pName.equalsIgnoreCase("PremiumRateDropItems")) PREMIUM_RATE_DROP_ITEMS = Float.parseFloat(pValue);

+ else if (pName.equalsIgnoreCase("PremiumRateDropQuest")) PREMIUM_RATE_DROP_QUEST = Float.parseFloat(pValue);

+ else if (pName.equalsIgnoreCase("PremiumRateRaidDropItems")) PREMIUM_RATE_DROP_ITEMS_BY_RAID = Float.parseFloat(pValue);

+

// general.properties

else if (pName.equalsIgnoreCase("AutoDestroyDroppedItemAfter")) AUTODESTROY_ITEM_AFTER = Integer.parseInt(pValue);

Index: /Datapack/sql/account_premium.sql

===================================================================

--- /Datapack/sql/account_premium.sql (revision 24)

+++ /Datapack/sql/account_premium.sql (revision 24)

@@ -0,0 +1,9 @@

+-- ----------------------------

+-- Table structure for account_premium

+-- ----------------------------

+CREATE TABLE IF NOT EXISTS `account_premium` (

+ `account_name` varchar(45) NOT NULL DEFAULT '',

+ `premium_service` int(1) NOT NULL DEFAULT '0',

+ `enddate` decimal(20,0) NOT NULL DEFAULT '0',

+ PRIMARY KEY (`account_name`)

+);

 

 

Полная система премиум аккаунта, есть несколько косяков, которые легко исправить.

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...