Все о Премиум Аккаунте и как с ним работать

1) Как включать:
Путь - gameserver/config/services.properties
По умолчанию система выключена!
# Сервис повышения рейтов
# Для конфигурации бонусов/периода/стоимости настройте файл /config/services_rate_bonus.xml
RateBonusEnabled = False
# Возможность PA из игрового чата .pa .permium
RateBonusVoiceCommandEnabled = False
# Выводить время истечения ПА в чат при входе в игру
RateBonusReportExpireTime = False

2) Конфигурирование бонусов и уровней:
Местонахождение: gameserver/config/services_rate_bonus.xml
Описание бонусов и пример
Code:
<rate_bonus id="1" consume_item_id="4037" consume_item_amount="250">
<exp value="1.2" />
<sp value="1.2" />
<exp_raid value="1.2" />
<sp_raid value="1.2" />
<quest_reward value="1.2" />
<quest_adena_reward value="1.2" />
<quest_drop value="1.2" />
<drop_adena value="1.2" />
<drop_items value="1.2" />
<drop_seal_stones value="1"/>
<drop_raid_item value="1.0" />
<drop_spoil value="1.2" />
<enchant_item_mul value="1.0" />
<enchant_skill_mul value="1.0" />
<bonus_days value="2" />
<!-- additional reward -->
<!-- <reward item_id="4037" item_count="1" />
<reward item_id="57" item_count="100" />
<name_color value="00FCA0" />
<hwid_limits value="1" />
-->
</rate_bonus>
Где - rate_bonus id="1" его ID который будет вызываться при байпассе
consume_item_id="4037" какая валюта будет изыматься за этот премиум
consume_item_amount="250" какое количество будет изыматься
<exp value="1.2" /> - рейты на Experience. Тут происходит прямая калькуляция - допустим рейты на сервере x10. При активации премиума будет x12. Потому что 10 * 1.2 = 12 Что равно 20%
<sp value="1.2" /> - Рейты на Skill Point Тут происходит прямая калькуляция - допустим рейты на сервере x5. При активации премиума будет x6. Потому что 5 * 1.2 = 6 Что равно 20%
<exp_raid value="1.2" /> рейты на Experience получаемый с Боссов. Допустим наш рейт x1. При активации премиума будет x1.2. Потому что 1 * 1.2 = 1.2 Что равно 20%
<sp_raid value="1.2" /> рейты на Skill Point получаемый с Боссов. Допустим наш рейт x1. При активации премиума будет x1.2. Потому что 1 * 1.2 = 1.2 Что равно 20%
<quest_reward value="1.2" /> Награда выдаваемая за квесты. По окончанию квеста, происходит рейтовка награды в количестве. 20%
<quest_adena_reward value="1.2" /> Адена выдаваемая за квесты. По окончанию квеста, происходит рейтовка адены в количестве. 20%
<quest_drop value="1.2" /> Рейты на выпадения квестовых предметов с монстров при выполнения задания. 20%
<drop_adena value="1.2" /> Рейты выпадения Адены из монстров и рейдов. Увеличивает количество дропа адены на 20%. Если у вас рейты x100, станет x120.
<drop_items value="1.2" /> Рейты выпадения предметов из монстров. Увеличивает количество дропа предметов на 20%. Если у вас рейты x10, станет x12.
<drop_seal_stones value="1"/> Рейды выпадения Камней 7 печатей из монстров и рейдов. Увеличивает количество дропа камней на 20%. Если у вас рейты x10, станет x12.
<drop_raid_item value="1.0" /> Рейты выпадения предметов из Рейд Боссов. Увеличивает количество дропа предметов на 20%. Если у вас рейты x100, станет x120.
<drop_spoil value="1.2" /> Рейты выпадения предметов при спойле. Увеличивает количество дропа пойла на 20%. Если у вас рейты x1, станет x1.2.
<enchant_item_mul value="1.2" /> Увеличивает шанс заточки предметов. Допустим если по умолчанию заточить на +5 50%, при активном ПА будет 60%. Увеличивает на 20%
<enchant_skill_mul value="1.2" /> Увеличивает шанс заточки умений. Допустим если по умолчанию заточить на +5 50%, при активном ПА будет 60%. Увеличивает на 20%
<bonus_days value="2" /> Сколько времени будет активен Премиум после покупки. Можно так же выставлять дробные числа. Допустим <bonus_days value="0.12" /> = 12 часов
<!-- additional reward -->
Данный блок не активен пока вы не уберете тут -> <!-- и -->
<!-- <reward item_id="4037" item_count="1" /> - Предмет который будет выдан игроку после выдачи Премиума
<reward item_id="57" item_count="100" /> - Предмет который будет выдан игроку после выдачи Премиума
<name_color value="00FCA0" /> - Какой цвет ника будет выставлен после покупки Премиума
<hwid_limits value="1" /> - Количество активных окон для этого аккаунта
-->

3) Так же вы можете выдавать скилы/умения игрокам с премиум аккаунтом:
Путь: gameserver\data\skill_tree\premium_account_skill_tree.xml
Для примера выдадим игроку умение Heroic Miracle
XML:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE list SYSTEM "tree.dtd">
<list>
    <premium_account_skill_tree>
     <skill id="395"  min_level="0"  level="1" cost="0" name="Heroic Miracle"/>
    </premium_account_skill_tree>
</list>

Таким образом у всех игроков с премиум аккаунтом будет выдан скил.


4) Теперь переходим к местонахождению диалогов и как их редактировать:
Сам HTML диалог находится gameserver\data\html\scripts\services
Список файлов:
RateBonus.htm
RateBonusAlready.htm
RateBonusGet.htm
RateBonusNo.htm

Редактирование самой строки с описанием бонусов и самой верстки кнопки для покупок находится
gameserver\data\string
Списко строк для редактирования:
scripts.services.RateBonus.BonusExpireTime
scripts.services.RateBonus.LuckEnded
scripts.services.RateBonus.BonusExpireTime
scripts.services.RateBonus.BonusHtml
Основная строка редактирования кнопки > scripts.services.RateBonus.BonusHtml
Фактически эти строки являются HTMLем и верстаете его РОВНО так же как и обычный HTML, но в gameserver\data\string

Есть даже отдельная тема где показаны примеры и детальный разбор от клиентов. https://lucera2.com/threads/stranica-pokupki-pa.1759/

5) Разного рода дополнительные конфиги:
altsettings.properties
# AutoLoot доступен только для Премиум Аккаунта
AutoLootOnlyForPremium = False
# Опция позволяющая использовать команду .autoloot .xpfreez .ru .en
AltAllowServicesCommand = True
ExpFreezingLootOnlyForPremium = False
# Множитель времени для баффов при наличии Премиум Аккаунта (AltNpcBufferEffectTime * AltNpcPremiumBufferEffectMul)
# Пример : AltNpcPremiumBufferEffectMul = 1.2 +20% к времени AltNpcBufferEffectTime для Премиум Аккаунта
AltNpcPremiumBufferEffectMul = 1.
# При включении для владельцев премиум аккаунта будет отображается ХТМЛ с префиксом -pa.htm
# Example: for normal player npc-40010.htm, for premium npc-40010-pa.htm
AltNpcBufferPremiumHtmlPrefix = False
# Префикс по наличию предмета, проверяется отдельно от AltNpcBufferPremiumHtmlPrefix
# Пример: AltNpcBufferPremiumItemPrefix = 4037
AltNpcBufferPremiumItemPrefix = 0
# Потребление для Премиум Аккаунта соулшотов , спирит шотов и стел - При false они становятся бесконечными (только для премиума)
PremiumAccountConsumeArrows = true
PremiumAccountConsumeSoulShots = true
PremiumAccountConsumeSpiritShots = true
PremiumAccountConsumeBeastShots = true
# Пример: если поставить 1.2 это будет 20% бонуса
AltPcBangPointsBonusForPremiumAccount = 1.
# Позволяет играть только пользователям с премиум аккаунтом
AltCheckPremiumForStartGame = False

auto_farm.properties
# Если этот параметр включен, сервисом могут пользоваться только премиум аккаунта.
AutoFarmOnlyForPremium = False
# Сервис бесплатный только для премиум аккаунта ?
AutoFarmIsFreeForPremium = False

other.properties
StartingPremiumAccountId = 0
# Стартовый статус премиум аккаунта дается один раз на весь аккаунт.
StartingPremiumAccountGlobal = True

pvpcommunityboard.properties
# Телепорт только для прем аккаунтов
CommunityTeleporterPremiumOnly = false

services.properties
# Предмет дающий Премиум Аккаунт по двойному клику
# Можно добавлять множество предметов:
# PremiumAccountItemHandlerId = 6642, 6643, 6644
# PremiumAccountBonusId = 1, 2, 3 (доступные ID можете брать из config/services_rate_bonus.xml)
PremiumAccountItemEnable = False
PremiumAccountItemHandlerId = 6643
PremiumAccountBonusId = 1

6) Параметр для скилов и предметов
Вот так выглядит сам параметр
XML:
    <cond msgId="1518">
      <player is_premium="true"/>
    </cond>
Пример использования
XML:
  <etcitem id="6410" name="2006 Battle Tournament - Quick Healing Potion">
    <!-- [quick_healing_potion_2005] -->
    <set name="reuse_delay" value="500"/>
    <set name="class" value="CONSUMABLE"/>
    <set name="crystal_type" value="NONE"/>
    <set name="icon" value="icon.etc_potion_gold_i00"/>
    <set name="stackable" value="true"/>
    <set name="type" value="POTION"/>
    <set name="weight" value="180"/>
    <cond msgId="1508">
      <not>
        <player olympiad="true"/>
      </not>
    </cond>
    <cond msgId="1518">
      <player is_premium="true"/>
    </cond>
  </etcitem>

7) Администрирование сервиса
1) Для выдачи на ходу игроку премиум аккаунта в игре есть ГМ комманда
//set_pa <pa_id> <target>
Где <pa_id> это номер Премиума из файла gameserver/config/services_rate_bonus.xml rate_bonus id="?", а <target> это игрок которого вы выберете в таргет

2) Для выдачи или удаления или редактирования бонусов оффлайн игрока или просто если хотите в базе - отвечает таблица accounts_bonuses
Вот ее дескрипшен и пример
SQL:
CREATE TABLE IF NOT EXISTS  `accounts_bonuses` (
  `account` VARCHAR(45) NOT NULL,
  `expireTime` INT(11) NOT NULL,
  `rateXp` DOUBLE NOT NULL,
  `rateSp` DOUBLE NOT NULL,
  `rateRaidXp` DOUBLE NOT NULL,
  `rateRaidSp` DOUBLE NOT NULL,
  `questRewardRate` DOUBLE NOT NULL,
  `questRewardAdenaRate` DOUBLE NOT NULL,
  `questDropRate` DOUBLE NOT NULL,
  `dropAdena` DOUBLE NOT NULL,
  `dropItems` DOUBLE NOT NULL,
  `dropSealStones` DOUBLE NOT NULL,
  `dropRaidItems` DOUBLE NOT NULL,
  `dropSpoil` DOUBLE NOT NULL,
  `enchantItemBonus` DOUBLE DEFAULT '1.0',
  `enchantSkillBonus` DOUBLE DEFAULT '1.0',
  `hwidsLimit` INT NULL DEFAULT '1',
  PRIMARY KEY (`account`)
);
Пример выдачи бонуса руками в базу:
SQL:
INSERT INTO accounts_bonuses
(account, expireTime, rateXp, rateSp, rateRaidXp, rateRaidSp, questRewardRate, questRewardAdenaRate, questDropRate, dropAdena, dropItems, dropSealStones, dropRaidItems, dropSpoil, enchantItemBonus, enchantSkillBonus, hwidsLimit)
VALUES
('test', 1690038888, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 2, 1.2, 1.2, 1, 1, 1);
Где - test это имя аккаунта
1690038888 - Время когда истечет премиум аккаунт в формате Unix TimeStamp, генерировать свое время можете на ресурсе https://www.epochconverter.com/
И далее по списку соответствующие столбцы rateXp, rateSp, rateRaidXp, rateRaidSp, questRewardRate, questRewardAdenaRate, questDropRate, dropAdena, dropItems, dropSealStones, dropRaidItems, dropSpoil, enchantItemBonus, enchantSkillBonus, hwidsLimit

Если будут вопросы - отвечу и дополню тему
 
Last edited:
@Dimaris @Holst @Rosylik
Да я не дома.
Пример:
<center>
<table align="center" border="0" width="200" cellpadding="0" cellspacing="0" bgcolor=000000>
<td align=center><button value="30 дней" action="bypass -h scripts_services.RateBonus:get 7" width=120 height=21 back="Icons.button120" fore="Icons.button120"></td>
</table>
</center><br>


<table align="center" border="0" width="200" cellpadding="0" cellspacing="0" bgcolor=000000>
<tr>
<td width="200"><a action="bypass -h scripts_services.RateBonus:get 6"><font color="0099cc">Приобрести на 14 дней: 25 Coin of Luck</font></a></td>
</tr>
</table><br>


bypass: bypass -h scripts_services.RateBonus:get 1
Рабочий параметр: Цифра "1", берётся из rate_bonus id="1" (соответственно вместо 1 Вы можете подставлять любые id, которые создадите в конфигурации (gameserver/config/services_rate_bonus.xml)


Путь: gameserver/data/html/RateBonus.htm

Мда, кто бы знал. Благодарю!


Получается из RateBonus просто убираем вывод через %toreplace%. И вместо него ставим вручную те ид, которые хотим вывести:

<button width=120 height=30 action="bypass -h scripts_services.RateBonus:get 1" back="L2UI_CH3.bigbutton2_down" fore="L2UI_CH3.bigbutton2" value="3 Дня. 3 монеты">
<button width=120 height=30 action="bypass -h scripts_services.RateBonus:get 2" back="L2UI_CH3.bigbutton2_down" fore="L2UI_CH3.bigbutton2" value="30 Дней. 20 монет">
 
Мда, кто бы знал. Благодарю!


Получается из RateBonus просто убираем вывод через %toreplace%. И вместо него ставим вручную те ид, которые хотим вывести:

<button width=120 height=30 action="bypass -h scripts_services.RateBonus:get 1" back="L2UI_CH3.bigbutton2_down" fore="L2UI_CH3.bigbutton2" value="3 Дня. 3 монеты">
<button width=120 height=30 action="bypass -h scripts_services.RateBonus:get 2" back="L2UI_CH3.bigbutton2_down" fore="L2UI_CH3.bigbutton2" value="30 Дней. 20 монет">
Да
К нормальному внешнему виду только приведи, по типу как я пример дал, а то задолбало по серверам ходить, где нереальное говно. Особенно сервера у которых дефолт этот с текстом-ссылкой со всеми статами, ужс)
 
Back
Top