Как работать с multisell

Шаг 1: Создание XML-файла мультиселла​


  • Создайте XML-файл для мультиселла и разместите его в директории data/multisell.
  • Назовите файл уникально, используя ID мультиселла, например, 1.xml для мультиселла с ID 1.
  • Убедитесь, что ID мультиселла уникален для каждого нового списка обмена.

Шаг 2: Структура файла мультиселла​


В каждом файле мультиселла определите контейнер <list>, в котором будут храниться элементы для обмена. Вот базовая структура файла:

XML:
<list>
    <!-- Настройки контейнера мультиселла -->
    <config showall="true" notax="false" keepenchanted="false" nokey="false" is_chanced="false" no_merchant="false"/>
 
    <!-- Пример предмета для обмена -->
    <item>
        <ingredient id="57" count="100000"/> <!-- Валюта: адена -->
        <production id="960" count="1"/> <!-- Результат: предмет с ID 960 -->
    </item>
</list>

Описание параметров:

- <config> - блок настроек для всего мультиселла:
- showall: если true, показывает все элементы мультиселла.
- notax: при true отменяет налог на обмен.
- keepenchanted: если true, сохраняет уровень заточки предметов.
- nokey: определяет необходимость ключа.
- is_chanced: указывает, является ли список случайным.
- <item> - определяет один предмет для обмена:
- <ingredient> - входной предмет, указывается id и count.
- <production> - предмет, который получит игрок после обмена.
- no_merchant - мультиселл без привязки к НПЦ. Для предметов или для интерфейса

Шаг 3: Добавление шансов на выпадение предметов! (Classic/Legacy)​

При создании мультиселлов можно задать шанс на получение предмета через атрибут chance. Например:
XML:
<item>
    <ingredient id="57" count="100000"/>
    <production id="960" count="1" chance="50"/> <!-- 50% шанс получить предмет -->
</item>

Шаг 4: Добавление атрибутов к предметам​


Если мультиселл позволяет передавать атрибуты (например, заточку, атрибуты стихии), это можно сделать через дополнительные атрибуты в ingredient или production:

XML:
<item>
    <ingredient id="57" count="100000"/>
    <production id="960" count="1" enchant="5"/> <!-- предмет с заточкой +5 -->
</item>

XML:
<item>
    <ingredient id="57" count="100000"/>
    <production id="960" count="1" enchant="5" fireAttr="10"/> <!-- предмет с заточкой +5 и огненным атрибутом 10 -->
</item>

- enchant - уровень заточки при создании предмета. Применяется только для экиперуемых вещей.

Только в Классик и Легаси!
- fireAttr - атрибут Огня:
- waterAttr - атрибут воды:
- earthAttr - атрибут земли:
- windAttr - атрибут ветра:
- holyAttr - атрибут святости:
- unholyAttr- атрибут нежити:

Шаг 5: Загрузка и перезагрузка мультиселлов​


После создания или изменения XML-файлов мультиселлов вам необходимо перезагрузить данные на сервере, чтобы обновления вступили в силу. Используйте команду админа (в зависимости от сборки сервера) для перезагрузки мультиселлов:

Code:
//reload multisell

Шаг 6: Устранение ошибок​


- Проверьте, что все ID предметов и значения количества корректны.
- В случае ошибки загрузки мультиселла, сервер может записывать их в лог-файлы, чтобы администратор мог просмотреть и устранить их.

Полезные советы​


- Балансировка: настройте цены и шанс выпадения с учетом игровой экономики, чтобы избежать дисбаланса.
- Гибкость использования: используйте разные мультиселлы для редких и стандартных товаров, меняя параметры showall и is_chanced.
- Тестирование: всегда тестируйте новый мультиселл, чтобы убедиться, что игроки могут использовать его корректно.
 
Last edited:
Возможно кто-то уже задавал подобный вопрос, но всё же попробую.
делаем мультиселл с 5 предметами, 1/2/3/4/5 уровня, простейшая логика, для улучшения следующего нужен предыдущий, если предмет не точится и сохранение точки нам не нужно, то всё ок, делаем один мультиселл, не выставляем никаких конфигов и радуемся жизни, игрок видит все итемы в мультиселле и сразу может их покупать, обменивать, улучшать.

Если же нам нужен мультиселл с сохранением заточки, то при выставленных настройках:
1 вариант <config showall="false" notax="true" keepenchanted="true" /> - мы не видим лист вообще.
2 вариант <config showall="false" notax="true" keepenchanted="true" /> - видим лист, но заточенный предмет мы уже обменять не можем.
3 вариант <config showall="false" notax="true" keepenchanted="false" /> - ну и соответственно тут мы уже можем обменять заточенный итем, но без сохранения параметров.

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

Иначе приходится делать 1 мультиселл с продажей уже заточенного предмета, 2 мультиссел с сохранением параметров, ну и если мы в этот же лист засунем все следующие уровни, то игрок будет видеть только тот что он может улучшить, а как это обычно бывает, он улучшит один раз и потом будет биться головой о стену с вопросами, а как улучшить дальше, думая что во 2 мультиселле можно было улучшить только на 1 уровень выше, для следующих улучшений нужен будет другой мультиселл, и для таких уникальных ребят приходится делать 5 мультиселлов называя их 1 2 3 4 5 уровень и т.д.

@Deazer
 
Last edited:
Как то можно указать строго что нужен именно предмет enchant=5.
Потому что если например предмет +6 и более тоже подходит под это условие.
Сохранение заточки не требуется в моей случае.
 
Столкнулся с такой проблемой на Classic есть подвески которые имеют 1-5 ур , хочу реализовать в мультиселе шансовом (пробывал и простом) обмен подвески с доплатой на след. уровень но с сохранением заточки , почему то если предмет <set name="crystal_type" value="NONE"/>, то пишет не достаточно предметов при попытке обмена , если ставлю <set name="crystal_type" value="S"/> то обмен с сохранением заточки происходит , но предмет начинает точится S grade точками. Можно ли это как то решить?
 
Столкнулся с такой проблемой на Classic есть подвески которые имеют 1-5 ур , хочу реализовать в мультиселе шансовом (пробывал и простом) обмен подвески с доплатой на след. уровень но с сохранением заточки , почему то если предмет <set name="crystal_type" value="NONE"/>, то пишет не достаточно предметов при попытке обмена , если ставлю <set name="crystal_type" value="S"/> то обмен с сохранением заточки происходит , но предмет начинает точится S grade точками. Можно ли это как то решить?
NONE грейд не точится. Если смена грейда, не точится.
Тут нечего решать
 
NONE грейд не точится. Если смена грейда, не точится.
Тут нечего решать
ну у подвески есть же заточка <scroll id="49469" infallible="false" on_fail="CRYSTALIZE" chance_bonus="0" grade="NONE"> , она без грейда и точит подвеску которая так же без грейда. То есть обмен с сохранением заточки не реализовать для предметов NONE grade через мультисел , я правильно понимаю?
 
ну у подвески есть же заточка <scroll id="49469" infallible="false" on_fail="CRYSTALIZE" chance_bonus="0" grade="NONE"> , она без грейда и точит подвеску которая так же без грейда. То есть обмен с сохранением заточки не реализовать для предметов NONE grade через мультисел , я правильно понимаю?
Погода, сейчас посмотрю в чем дело.
 
ну у подвески есть же заточка <scroll id="49469" infallible="false" on_fail="CRYSTALIZE" chance_bonus="0" grade="NONE"> , она без грейда и точит подвеску которая так же без грейда. То есть обмен с сохранением заточки не реализовать для предметов NONE grade через мультисел , я правильно понимаю?
да, в мультиселлах старая проверка с грейдом которая уже deprecate.


сейчас переделаю логику и закоммичу
 
Last edited:
Back
Top