Equipment Upgrade system (classic/legacy)

1. Общая информация
Система апгрейдов позволяет игрокам улучшать экипировку, обменивая предмет с определённым уровнем заточки, материалы и адену на новый предмет. Апгрейды настраиваются в двух местах:
  • NPC: Head Blacksmith Ferris (30847)
  • На сервере: Через файл data/equipment_upgrade.xml.
  • В клиенте: Через файл GameClient/system_ru/UpgradeSystem_Classic.dat, который определяет, как апгрейды отображаются в игре.
Каждый апгрейд имеет:
  • Уникальный ID (upgrade_id).
  • Требуемый предмет с уровнем заточки (upgrade_item).
  • Список материалов и их количество (material_items).
  • Стоимость в адене (commission).
  • Шанс успеха в процентах (chance).
  • Результирующий предмет с уровнем заточки (result_item).
  • Страны, где апгрейд доступен (applycountry). Можете ставить что угодно, не имеет значения, значение имеет только какая указан в клиенте.
2. Настройка на сервере (equipment_upgrade.xml)
Файл data/equipment_upgrade.xml.

Формат XML
Каждый апгрейд описывается тегом <upgradesystem_begin> внутри корневого тега <upgrades>. Пример:
XML:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE upgrades SYSTEM "equipment_upgrade.dtd">
<upgrades>
    <upgradesystem_begin
        upgrade_id="1"
        upgrade_item="91244;5"
        material_items="1459;200"
        chance="100"
        commission="2000000"
        result_item="91245;0"
        applycountry="all" />
</upgrades>

Описание полей
  • upgrade_id: Уникальный номер апгрейда (например, 1, 10041). Не повторяйте ID!
  • upgrade_item: Предмет, который нужно улучшить. Формат: item_id;enchant_level. Например, 91244;5 - предмет с ID 91244 и заточкой +5.
  • material_items: Список материалов. Формат: item_id;count. Например, 1459;200 - 200 единиц предмета с ID 1459. Если материалов нет, укажите пустую строку: material_items="".
  • chance: Шанс успеха апгрейда в процентах (0–100). Например, 100 - всегда успех, 20 - 20% шанс. Если не указано, по умолчанию 100.
  • commission: Стоимость апгрейда в адене. Например, 2000000 - 2 миллиона адены.
  • result_item: Результирующий предмет. Формат: item_id;enchant_level. Например, 91245;0 - предмет с ID 91245 без заточки.
  • applycountry: Страны, где апгрейд доступен. Укажите all для всех стран или коды стран через точку с запятой, например, kr;j (для Кореи и Японии). Если не указано, по умолчанию all.
3. Настройка в клиенте (UpgradeSystem_Classic.dat)

Файл GameClient/system_ru/UpgradeSystem_Classic.dat отвечает за отображение апгрейдов в игровом клиенте. Его формат отличается от серверного XML, но данные должны соответствовать.

Формат файла
Каждый апгрейд описывается в блоке между upgradesystem_begin и upgradesystem_end. Пример:
Code:
upgradesystem_begin    upgrade_id=10041    upgrade_item={70295;9}    material_items={{71752;70}}    commission=10000    result_item={71746;0}    applycountry={all}    upgradesystem_end
Описание полей
  • upgrade_id: Тот же ID, что в equipment_upgrade.xml. Должен совпадать!
  • upgrade_item: Предмет для улучшения. Формат: {item_id;enchant_level}. Например, {70295;9} - предмет ID 70295 с заточкой +9.
  • material_items: Материалы. Формат: {{item_id;count}}. Например, {{71752;70}} - 70 единиц предмета ID 71752. Для нескольких материалов: {{71752;70}{71753;10}}. Если материалов нет, укажите {}.
  • commission: Стоимость в адене. Например, 10000. Должна совпадать с сервером.
  • result_item: Результирующий предмет. Формат: {item_id;enchant_level}. Например, {71746;0}.
  • applycountry: Страны. Формат: {all} или {kr;j}. Должно совпадать с сервером.
  • chance: В клиентском файле не указывается, так как шанс обрабатывается на сервере.
Как это вышлядит в игре:
 
Last edited:
какой фикс, в легаси вообще по другому работает, я еще не залил
Если на сервере изменить значение chance="20" или указать любые другие цифры, рецепт перестаёт работать: после нажатия кнопки "Улучшение" окно закрывается.

Такая ошибка на классик версии тоже есть
 
Если на сервере изменить значение chance="20" или указать любые другие цифры, рецепт перестаёт работать: после нажатия кнопки "Улучшение" окно закрывается.

Такая ошибка на классик версии тоже есть
ок
 
separator is , 1;1,2;2,3;3
i got this error on gs
[13:30:07] ERROR EquipmentUpgradeParser: Invalid material_items format for upgrade_id 2: 40000;10,4037;5
xml format
<equipment_upgrade
upgrade_id="2"
upgrade_item="6673;0"
material_items="40000;10,4037;5"
commission="50000"
result_item="6673;0"
chance="90" />
 
i got this error on gs
[13:30:07] ERROR EquipmentUpgradeParser: Invalid material_items format for upgrade_id 2: 40000;10,4037;5
xml format
<equipment_upgrade
upgrade_id="2"
upgrade_item="6673;0"
material_items="40000;10,4037;5"
commission="50000"
result_item="6673;0"
chance="90" />
@Deazer can check this?
 
Works ty, but i have a new question, how to change the chance in client? cause on xml was 50% but ingame show 100%?
1751665704528.webp
<equipment_upgrade upgrade_id="2" upgrade_item="48277;0" material_items="40000;10,4037;5" commission="50000" result_item="48278;0" chance="50" />

в Legacy работает 2 системы, в базовой нет коммиссии в адене во второй есть

View attachment 6408

в понедельник сяду сделаю
and if fail how set a fail result like this example?
 
Works ty, but i have a new question, how to change the chance in client? cause on xml was 50% but ingame show 100%?
View attachment 6489
<equipment_upgrade upgrade_id="2" upgrade_item="48277;0" material_items="40000;10,4037;5" commission="50000" result_item="48278;0" chance="50" />


and if fail how set a fail result like this example?
mate have no ANY idea how its work at game client side
 
UpgradeSystem_Normal_Classic.dat has got more params in the client, perhaps probability needs to be added to just the classic .dat file, here's UpgradeSystem_Normal_Classic.dat file contents. I'm yet to dive into it myself but this points into right direction one would assume.


Code:
upgradesystem_begin    upgrade_id=1    type=1    upgrade_item={2516;12}    material_items={{1458;11360;0};{91526;9;0}}    success_result_items={{2530;1;11}}    fail_result_items={}    bonus_items={}    commission=3692000    probability={100;0;0}    applycountry={all}    upgradesystem_end
upgradesystem_begin    upgrade_id=2    type=1    upgrade_item={2516;13}    material_items={{1458;17040;0};{91526;14;0}}    success_result_items={{2530;1;12}}    fail_result_items={}    bonus_items={}    commission=5538000    probability={100;0;0}    applycountry={all}    upgradesystem_end
upgradesystem_begin    upgrade_id=3    type=1    upgrade_item={2516;14}    material_items={{1458;22720;0};{91526;18;0}}    success_result_items={{2530;1;13}}    fail_result_items={}    bonus_items={}    commission=7384000    probability={100;0;0}    applycountry={all}    upgradesystem_end
upgradesystem_begin    upgrade_id=4    type=1    upgrade_item={2516;15}    material_items={{1458;28400;0};{91526;23;0}}    success_result_items={{2530;1;14}}    fail_result_items={}    bonus_items={}    commission=9230000    probability={100;0;0}    applycountry={all}    upgradesystem_end
 
UpgradeSystem_Normal_Classic.dat has got more params in the client, perhaps probability needs to be added to just the classic .dat file, here's UpgradeSystem_Normal_Classic.dat file contents. I'm yet to dive into it myself but this points into right direction one would assume.


Code:
upgradesystem_begin    upgrade_id=1    type=1    upgrade_item={2516;12}    material_items={{1458;11360;0};{91526;9;0}}    success_result_items={{2530;1;11}}    fail_result_items={}    bonus_items={}    commission=3692000    probability={100;0;0}    applycountry={all}    upgradesystem_end
upgradesystem_begin    upgrade_id=2    type=1    upgrade_item={2516;13}    material_items={{1458;17040;0};{91526;14;0}}    success_result_items={{2530;1;12}}    fail_result_items={}    bonus_items={}    commission=5538000    probability={100;0;0}    applycountry={all}    upgradesystem_end
upgradesystem_begin    upgrade_id=3    type=1    upgrade_item={2516;14}    material_items={{1458;22720;0};{91526;18;0}}    success_result_items={{2530;1;13}}    fail_result_items={}    bonus_items={}    commission=7384000    probability={100;0;0}    applycountry={all}    upgradesystem_end
upgradesystem_begin    upgrade_id=4    type=1    upgrade_item={2516;15}    material_items={{1458;28400;0};{91526;23;0}}    success_result_items={{2530;1;14}}    fail_result_items={}    bonus_items={}    commission=9230000    probability={100;0;0}    applycountry={all}    upgradesystem_end
The file exists, but there are no packages. I tried, but there's no client response.
At the same time, protocol 306 is running on the client.
 
У меня как-бы вопрос остался =)
На легаси как отобразить несколько материалов?
Допилить надо, очень много тасок навалилось, я в целом все сделал уже, можешь уже потестить
 
The file exists, but there are no packages. I tried, but there's no client response.
At the same time, protocol 306 is running on the client.
Have you tried adding probability={} to classic dat server is using ? I’ll test it tonight
 
Have you tried adding probability={} to classic dat server is using ? I’ll test it tonight
The server does not generate any content in this window, it only processes the transmutate request. Inside, the logic processes all conditions and issues an item.
 
Back
Top