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:
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.
I think the whole case is about showing proper chance value in the client, since server xml files provide the chance value it needs to be output in the client, so adding probability={100} into the clients dat you have mentioned in the guide would be a logical step. The file on its own is missing that parameter. So you declare chance in xml as well as add probility={} tag into the clients dat. Chances work server side, this is just to show actual chance server is doing in xml.
 
Допилить надо, очень много тасок навалилось, я в целом все сделал уже, можешь уже потестить
Я бы с радостью но обнов так и не было, сижу жду =)
 
Я бы с радостью но обнов так и не было, сижу жду =)
1751907142006.webp

файл посмотри,там уже новые типы и байпассы.... Куда ты смотрел я без понятия
 
View attachment 6511

файл посмотри,там уже новые типы и байпассы.... Куда ты смотрел я без понятия
Скажи, пожалуйста, зачем ты умничаешь и выставляешь всех дураками? Обновление было 7 дней назад, я написал 3 дня назад — не просто так.
Может, ты наконец посмотришь и поймёшь, что у тебя не работает то, что здесь описано, и соизволишь внести ясность?
Вот пример из твоего xml-файла:
Code:
<equipment_upgrade upgrade_id="11412" type="UPGRADE_COMMON_ITEMS_TO_S_GRADE" upgrade_item="8680;12" material_items="1461;250,91547;1" commission="1000000" result_item="6365;1;0" fail_result_items="91500;1;0" chance="80" />
А вот как это выглядит в клиенте:
Code:
upgradesystem_begin    upgrade_id=11412    type=2    upgrade_item={8680;12}    material_items={{1461;250};{91547;1}}    success_result_items={{6365;1;0}}    fail_result_items={{91500;1;0};{22221;1;0}}    bonus_items={}    commission=1000000    probability={80;20;0}    applycountry={-1}    upgradesystem_end
А вот ошибка из логов:
Code:
ERROR EquipmentUpgradeParser: Invalid material_items format for upgrade_id 11412: 1461;250,91547;1
Извини, конечно, но это реально раздражает. Когда косячишь ты, а крайними оказываются другие — это, мягко говоря, несправедливо.
 
  • Like
Reactions: aly
Скажи, пожалуйста, зачем ты умничаешь и выставляешь всех дураками? Обновление было 7 дней назад, я написал 3 дня назад — не просто так.
Может, ты наконец посмотришь и поймёшь, что у тебя не работает то, что здесь описано, и соизволишь внести ясность?
Вот пример из твоего xml-файла:
Code:
<equipment_upgrade upgrade_id="11412" type="UPGRADE_COMMON_ITEMS_TO_S_GRADE" upgrade_item="8680;12" material_items="1461;250" commission="1000000" result_item="6365;1;0" fail_result_items="91500;1;0" chance="80" />
А вот как это выглядит в клиенте:
Code:
upgradesystem_begin    upgrade_id=11412    type=2    upgrade_item={8680;12}    material_items={{1461;250};{91547;1}}    success_result_items={{6365;1;0}}    fail_result_items={{91500;1;0};{22221;1;0}}    bonus_items={}    commission=1000000    probability={80;20;0}    applycountry={-1}    upgradesystem_end
А вот ошибка из логов:
Code:
ERROR EquipmentUpgradeParser: Invalid material_items format for upgrade_id 11412: 1461;250,91547;1
Извини, конечно, но это реально раздражает. Когда косячишь ты, а крайними оказываются другие — это, мягко говоря, несправедливо.
ну так и говори - проблема такая то. ты просто - ой а обновы нет
 
ну так и говори - проблема такая то. ты просто - ой а обновы нет
Я ведь дважды задал вопрос — и не просто так. Я не флудил, а ждал, когда проблему исправят.
Какой смысл каждый день спамить уточнениями, если в итоге ты просто ответишь в духе: «Не доставайте, задач много, а я ещё и на вас время трачу»?
Можно же было хотя бы уточнить, что именно не работает и почему я дублирую вопрос — вместо того чтобы просто кинуть в ответ обнову. Я ещё 1-го числа проверил. Человек тогда уже отписал, что оно не работает, ты ему ответил, что "перезалил". Я сделал вывод, что это обновление было только для Classic-ветки, а для Legacy — ещё в процессе.
С таким же успехом можно каждый день писать: «что там по TimeZone?» и апать её, но от этого оно быстрее не пофиксится. Если ты заходишь и каждый день видишь, что тебя снова квотят, то да, это тратит время. Но и отвечать людям с раздражением типа «ждите, задолбали» — тоже, мягко говоря, не решение.
 
  • Like
Reactions: aly
Я ведь дважды задал вопрос — и не просто так. Я не флудил, а ждал, когда проблему исправят.
Какой смысл каждый день спамить уточнениями, если в итоге ты просто ответишь в духе: «Не доставайте, задач много, а я ещё и на вас время трачу»?
Можно же было хотя бы уточнить, что именно не работает и почему я дублирую вопрос — вместо того чтобы просто кинуть в ответ обнову. Я ещё 1-го числа проверил. Человек тогда уже отписал, что оно не работает, ты ему ответил, что "перезалил". Я сделал вывод, что это обновление было только для Classic-ветки, а для Legacy — ещё в процессе.
С таким же успехом можно каждый день писать: «что там по TimeZone?» и апать её, но от этого оно быстрее не пофиксится. Если ты заходишь и каждый день видишь, что тебя снова квотят, то да, это тратит время. Но и отвечать людям с раздражением типа «ждите, задолбали» — тоже, мягко говоря, не решение.
я не ванга что бы чувствовать твои мысли и намеки и хорош оффтопить в РАБОЧЕЙ теме!
Есть проблемы - пиши! Тикеты !!!
 
<equipment_upgrade upgrade_id="2" upgrade_item="48277;0" material_items="40000;10,4037;5" commission="50000" result_item="48278;0" chance="50" />
do not have fail resunts.

Tell me please, why are you being smart and making everyone look like fools? The update was 7 days ago, I wrote it 3 days ago - for a reason.
Maybe you will finally take a look and understand that what is described here does not work for you, and deign to clarify?
Here is an example from your xml file:
Code:
<equipment_upgrade upgrade_id="11412" type="UPGRADE_COMMON_ITEMS_TO_S_GRADE" upgrade_item="8680;12" material_items="1461;250,91547;1" commission="1000000" result_item="6365;1;0" fail_result_items="91500;1;0" chance="80" />
And here's how it looks in the client:
Code:
upgradesystem_begin    upgrade_id=11412    type=2    upgrade_item={8680;12}    material_items={{1461;250};{91547;1}}    success_result_items={{6365;1;0}}    fail_result_items={{91500;1;0};{22221;1;0}}    bonus_items={}    commission=1000000    probability={80;20;0}    applycountry={-1}    upgradesystem_end
And here is the error from the logs:
Code:
ERROR EquipmentUpgradeParser: Invalid material_items format for upgrade_id 11412: 1461;250,91547;1
Sorry, of course, but it's really annoying. When you screw up and others end up being the ones to blame, it's unfair, to put it mildly.
 
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?
@Deazer не получилось починить?
 
Давно сделал
Тогда помоги разобраться что сделал)

Ибо я в клиенте выставляю
Code:
upgradesystem_begin    upgrade_id=1    upgrade_item={91244;5}    material_items={{1459;200}}    commission=2000000    result_item={91245;0}    applycountry={all}    upgradesystem_end
на сервере chance="50"
Code:
<equipment_upgrade upgrade_id="1" upgrade_item="91244;5"  material_items="1459;200" commission="2000000" result_item="91245;0" applycountry="all" chance="50" />
а в игре получаю 100% на успех
1759152168235.webp

Что я делаю не так?)
 
Тогда помоги разобраться что сделал)

Ибо я в клиенте выставляю
Code:
upgradesystem_begin    upgrade_id=1    upgrade_item={91244;5}    material_items={{1459;200}}    commission=2000000    result_item={91245;0}    applycountry={all}    upgradesystem_end
на сервере chance="50"
Code:
<equipment_upgrade upgrade_id="1" upgrade_item="91244;5"  material_items="1459;200" commission="2000000" result_item="91245;0" applycountry="all" chance="50" />
а в игре получаю 100% на успех
View attachment 6986

Что я делаю не так?)
В пакете вообще не летит ни какой инфы от срвера - там только реквест, это ТОЛЬКО сторона клиента
 
В пакете вообще не летит ни какой инфы от срвера - там только реквест, это ТОЛЬКО сторона клиента
ну т.е. из коробки можно использовать только для апгрейда со 100% шансом?
 
ну т.е. из коробки можно использовать только для апгрейда со 100% шансом?
Как в клиенте, так и можно, я переносил из датника все
 
Апгрейд работает из клиента.

У окна всего 2 пакета:
1) Открыться по типу
2) Показать результат

Между - клиент и вероятности получить откуда то шанс и др. кроме него - нет.
1759160292107.webp


Запрос идёт в клиентский АПИ, который возвращает массив данных:

this.upgradeMaterialsData = ItemUpgradeSystem.getUpgradeSystemData(_loc10_["ClassID"],_loc10_["Enchanted"],this.upgradeType);
public static function getUpgradeSystemData(param1:int, param2:int, param3:int) : Object
{
return ExternalInterface.call("GetUpgradeSystemData",param1,param2,param3);
}


И сразу же вкладывает статичные данные в тот или иной элемент, как например суццессШанс

this.successPercentText.text = L2UISystem.getSystemString(3903) + " (" + this.upgradeMaterialsData["SuccessRate"] + "%)";



Вопрос "почему так?" - скрывается либо в кривой датке, либо в наборе даток (приоритет версий), либо в структурах датэдитора, который игнорирует какие то поля (можно как минимум глянуть в консольные логи).
Но факт остаётся фактом - цифра 100 и остальные находятся в клиенте. Может л2.ини конфиг, может ещё что-то. Если честно мне лень ковырять флеш, вы в целом можете сделать это и сами, если хотите докопаться до истины.
 
Last edited:
Расковыряно: this.upgradeType назначается из пакета, кажется 0 или 1.

При 1 - начинает жрать Normal датники. Делаем вывод, что у системы 2 варианта:

1) 100%
2) Шансовый

Т.е. у нпц должно быть 2 кнопки, на 2 типа.
@Deazer это к вам

1759166086684.webp


Кому лень ждать официальных фиксов или не нужно окно со 100% - https://dropmefiles.com/SUQdH
 
Last edited:
Расковыряно: this.upgradeType назначается из пакета, кажется 0 или 1.

При 1 - начинает жрать Normal датники. Делаем вывод, что у системы 2 варианта:

1) 100%
2) Шансовый

Т.е. у нпц должно быть 2 кнопки, на 2 типа.
@Deazer это к вам

View attachment 6988


Кому лень ждать официальных фиксов или нужно окно со 100% - https://dropmefiles.com/SUQdH
угу, посмотрю, спасибо за нифу
 
Uncovered: this.upgradeType is assigned from the package, seems to be 0 or 1.

At 1, it starts eating up the Normal sensors. We conclude that the system has two options:

1) 100%
2) Chance

That is, the NPC should have 2 buttons for 2 types.
@Deazer this is for you

View attachment 6988


For those too lazy to wait for official fixes or who don't need a 100% window - https://dropmefiles.com/SUQdH
 
Back
Top