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

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:
Всем привет. А как понять сколько щас буст према у игрока, например если он без према то 100% а если заюзал свиток на 20% опыта и купил премиум, как он может знать сколько у него сейчас, есть меню или команда где это написано?
 
Всем привет. Нужно сделать отдельный <rate_bonus id="3" для предмета. При этом этот bonus id не должен выводиться вместе с остальными, доступными для покупки. Как такое сделать ?
 
Всем привет. Нужно сделать отдельный <rate_bonus id="3" для предмета. При этом этот bonus id не должен выводиться вместе с остальными, доступными для покупки. Как такое сделать ?
Для предмета делай скил
Мне кажется то что ты написал никак имеющимися способами не сделать
 
Для предмета делай скил
Мне кажется то что ты написал никак имеющимися способами не сделать
Не совсем понял при чём тут скилл. Делаю через конфиг.

Code:
# Предмет дающий Премиум Аккаунт по двойному клику
PremiumAccountItemEnable = True
PremiumAccountItemHandlerId =

Просто у меня в продаже варианты от 3 дней. А для предмета хочу сделать 1 день и чтоб его bonus id естественно не выводило вместе с остальными, доступными для покупки.
 
Не совсем понял при чём тут скилл. Делаю через конфиг.

Code:
# Предмет дающий Премиум Аккаунт по двойному клику
PremiumAccountItemEnable = True
PremiumAccountItemHandlerId =

Просто у меня в продаже варианты от 3 дней. А для предмета хочу сделать 1 день и чтоб его bonus id естественно не выводило вместе с остальными, доступными для покупки.
не про то подумал.
Вроде была тема или обсуждение что id премиума не убрать из вывода списка
 
не про то подумал.
Вроде была тема или обсуждение что id премиума не убрать из вывода списка
Что за вывод списка ? Он же сам выводит хтмл какую хочет)
 
Что за вывод списка ? Он же сам выводит хтмл какую хочет)

Code:
scripts.services.RateBonus.BonusHtml=<button width=120 height=30 action="bypass -h scripts_services.RateBonus:get %bonus_idx%" back="L2UI_CH3.bigbutton2_down" fore="L2UI_CH3.bigbutton2" value="%period_days%. %price% монет">
Нет, разом выводит все ид ,которые есть в services_rate_bonus
 
Code:
scripts.services.RateBonus.BonusHtml=<button width=120 height=30 action="bypass -h scripts_services.RateBonus:get %bonus_idx%" back="L2UI_CH3.bigbutton2_down" fore="L2UI_CH3.bigbutton2" value="%period_days%. %price% монет">
Нет, разом выводить все ид ,которые есть в services_rate_bonus
Аа , так это ужасно, кто так делает ?
 
Вот наглядный пример :

123.webp

Третья кнопка настроена для предмета, дающего прем и её не должно быть видно в разделе покупки.
 
Просить сделать конфиг hidePremiumIdIndex=3;6
К примеру. Спрятать ид 3 и 6
Зачем ? Когда можно самому выводить из какие хочешь
Вы что маразмом занимаетесь
 
Зачем ? Когда можно самому выводить из какие хочешь
Вы что маразмом занимаетесь
Покажи как, вон человеку, я этим не занимался) знаю только это
Code:
scripts.services.RateBonus.BonusHtml=<button width=120 height=30 action="bypass -h scripts_services.RateBonus:get %bonus_idx%" back="L2UI_CH3.bigbutton2_down" fore="L2UI_CH3.bigbutton2" value="%period_days%. %price% монет">
Нет, разом выводит все ид ,которые есть в services_rate_bonus
 
Зачем ? Когда можно самому выводить из какие хочешь
Вы что маразмом занимаетесь
Они все выводятся и ничего ты с этим не сделаешь
Но соглашусь что давно пора хайд сделать, потому что давно горел идеей сделать отдельный премиум со старта, покупные и с рб, но помешало вот это вот)
Форумные советчики предложили сделать цену по которой нельзя купить, но это совсем не по феншую
 
Last edited:
Они все выводятся и ничего ты с этим не сделаешь
Но соглашусь что давно пора хайд сделать, потому что давно горел идеей сделать отдельный премиум со старта, покупные и с рб, но помешало вот это вот)
Форумные советчики предложили сделать цену по которой нельзя купить, но это совсем не по феншую
Куда они все выводятся? У меня в файле их штук 20, а вывожу я 4
 
@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
 

Attachments

  • 1234444.webp
    1234444.webp
    3.8 KB · Views: 9
Last edited:
Покажи как, вон человеку, я этим не занимался) знаю только это
Code:
scripts.services.RateBonus.BonusHtml=<button width=120 height=30 action="bypass -h scripts_services.RateBonus:get %bonus_idx%" back="L2UI_CH3.bigbutton2_down" fore="L2UI_CH3.bigbutton2" value="%period_days%. %price% монет">
Нет, разом выводит все ид ,которые есть в services_rate_bonus
Так он сам давно написал вариант решения
 
Back
Top