Перейти к основному содержимому

Система магазинов

EliteMobs поставляется со встроенной системой магазинов, которая позволяет игрокам тратить и зарабатывать Elite Coins (валюту EliteMobs) на экипировку и стрелы EliteMobs. Магазины обычно доступны через NPC кузнецов и торговцев в Гильдии искателей приключений, но их также можно открывать командами.

Настройки экономики

Для обычного использования магазинов оставьте enableEconomy: true в EconomySettings.yml. Входные меню динамического и кастомного магазинов проверяют эту настройку, но прямые административные команды и пути через NPC продажи и стрел не выполняют такую же проверку. Это не универсальный переключатель доступа. При работающей интеграции с Vault балансы используют поставщика экономики Vault вместо базы валюты EliteMobs.

Валюта​

Валюта по умолчанию называется Elite Coins (currencyName в EconomySettings.yml). Игроки зарабатывают её в основном убийством элит (денежные дожди) и продажей добычи EliteMobs. Балансы можно проверять и переводить стандартными денежными командами:

  • /em money check – проверить свой баланс (команды /em wallet не существует; некоторые комментарии в конфигах всё ещё называют её этим старым именем)
  • /em pay <player> <amount> – заплатить другому игроку (с учётом playerToPlayerPaymentTaxes)

Администраторы могут управлять балансами с помощью /em money add|remove|set и подобных.

Магазины​

Динамический магазин (процедурно сгенерированная экипировка)​

Используйте /em shop dynamic или поговорите с NPC Кузнеца (elitemobs.shop.dynamic.npc). Команда игрока перенаправляет в Гильдию, если включён agTeleport, Гильдия установлена и у игрока есть elitemobs.adventurersguild.teleport; иначе открывается меню покупки-продажи. NPC открывает это меню напрямую.

Динамический магазин использует настроенные товарные слоты меню из 54 слотов для процедурного оружия и брони EliteMobs. Уровни зависят от вашего навыка для данного типа предмета: каждый предмет разыгрывается между (skillLevel - 5) и skillLevel в пределах 1–100. Начиная с уровня навыка 105 все предложения для этого навыка имеют уровень 100. Материалы без соответствующего навыка используют уровень, рассчитанный из среднего XP по всем типам навыков.

  • Нажмите на предмет, чтобы купить его по рассчитанной стоимости. Нужны достаточные средства, пустой слот хранения и выполнение применимого требования навыка для экипировки. Проверка учитывает настройку ограничений экипировки и её исключения, включая предметы уровня 20 и ниже.
  • Используйте кнопку переброса, чтобы обновить предлагаемый ассортимент (короткая перезарядка в 2 секунды).
  • Покупка также обновляет ассортимент.

Кастомный магазин (особые предметы)​

Используйте /em shop custom или поговорите с NPC Особого кузнеца (elitemobs.shop.custom.npc). Команда игрока следует тому же правилу перенаправления в Гильдию, что и динамический магазин; NPC открывает меню покупки-продажи напрямую.

Кастомный магазин случайно выбирает позиции из допустимых кастомных предметов. itemType: CUSTOM допускается; UNIQUE, DROPPABLE и CLASS_LOOT исключены. Предлагаемые копии привязываются к душе покупателя, если привязка включена. Оставьте хотя бы один допустимый предмет: текущий выборщик не может заполнить магазин из пустого набора.

Для покупки нужны достаточные средства и пустой слот хранения. Это меню не выполняет проверку навыка динамического магазина, поэтому возможность покупки не гарантирует возможность экипировки. Кнопка переброса имеет перезарядку 2 секунды; покупки также обновляют ассортимент.

Продажа предметов​

Продажа доступна через опцию Продать в меню покупки-продажи (после открытия динамического или кастомного магазина) или напрямую администратором командой /em shop sell <player> (elitemobs.shop.sell.other). NPC кузнеца Продажи предметов использует разрешение elitemobs.shop.sell.npc.

В меню продажи:

  • Нажимайте на предметы EliteMobs в инвентаре, чтобы переместить их стопки в слоты продажи. Принимаются непривязанные предметы и привязанные к вам. Ванильные предметы и привязанные к другому игроку отклоняются; отключённая проверка привязки или право обхода являются исключением для привязки.
  • Кнопка подтверждения показывает текущую сумму. Нажмите её, чтобы продать всё и получить Elite Coins.
  • Цена продажи составляет долю сохранённой стоимости предмета, а при её отсутствии — рассчитанной стоимости. Доля задаётся параметром itemResaleValue в EconomySettings.yml (по умолчанию 5%). Размер стопки умножает выплату.
  • Выручка сначала погашает непогашенные игровые долги; только остаток увеличивает доступный баланс.
  • Каждая стопка зачисляется отдельно. Если поставщик экономики отклоняет зачисление, эта стопка возвращается вам, продажа останавливается и показывается shopTransactionFailedMessage. Стопки, зачисленные до этого момента, остаются проданными.

Магазин стрел​

Открывается разговором с NPC Магазина стрел (elitemobs.shop.arrow.npc).

Магазин стрел продаёт боеприпасы за Elite Coins. Стандартный ассортимент включает:

  • Обычные стрелы (небольшая пачка и большая пачка)
  • Спектральные стрелы
  • Стрелы с эффектом Яда, Замедления, Слабости, Урона и Лечения

Количество и цена каждой позиции настраиваются в menus/arrow_shop_menu.yml. Нажмите на стрелу для покупки; нужны достаточные средства и пустой слот инвентаря, даже если стрелы можно сложить в другую стопку. Позиции товаров закреплены в реализации меню. После изменения цен, количества или названий товаров перезапустите сервер: каталог кэшируется при первой загрузке класса меню.

Команды и разрешения​

КомандаРазрешениеПо умолчаниюОписание
/em shop dynamicelitemobs.shop.dynamictrueОткрывает входное меню динамического магазина или запрашивает телепортацию в Гильдию
/em shop procedural <player>elitemobs.*opОткрывает динамический (процедурный) магазин для другого игрока
/em shop customelitemobs.shop.commandтолько в кодеОткрывает входное меню кастомного магазина или запрашивает телепортацию в Гильдию; при необходимости выдайте этот фактический узел команды вместо объявленного, но неиспользуемого elitemobs.shop.custom
/em shop custom <player>elitemobs.shop.custom.otheropОткрывает кастомный магазин для другого игрока
/em shop sell <player>elitemobs.shop.sell.otheropОткрывает меню продажи для другого игрока

Разрешения на взаимодействие с NPC (выдаются игрокам по умолчанию через набор elitemobs.user):

РазрешениеNPC
elitemobs.shop.dynamic.npcКузнец (динамический магазин)
elitemobs.shop.custom.npcОсобый кузнец (кастомный магазин)
elitemobs.shop.sell.npcПродажа предметов
elitemobs.shop.arrow.npcМагазин стрел

Конфигурация​

Экономика магазинов настраивается в EconomySettings.yml. Примечательные ключи:

КлючПо умолчаниюЭффект
enableEconomytrueВключает обычные точки входа в экономику; не блокирует все прямые пути к магазинам
currencyNameElite CoinsОтображаемое название валюты
useVaultfalseНаправлять балансы через Vault вместо базы данных EliteMobs
itemResaleValue5Процент от полной стоимости предмета, выплачиваемый при продаже
playerToPlayerPaymentTaxes0.2Налоговая ставка (0.0–1.0), применяемая к переводам /em pay (0.2 = 20%)
enableCurrencyShowertrueВыпадают ли монеты при смерти элит
currencyShowerTierMultiplier1.0Множитель выпадающей валюты (2.0 = вдвое больше)
materialWorth.defaultMaterialWorth1Стоимость любого материала, у которого нет собственной записи materialWorth.<MATERIAL>

Для materialWorth.<MATERIAL> используются фиксированные начальные значения из ступеней материалов плагина: незерит — 18, алмаз и трезубец — 17, железо — 16, камень и кольчуга — 15, золото, дерево и кожа — 13. Эти ступени являются константами кода, а не настройками. Чтобы задать цены магазина, измените отдельные записи materialWorth в EconomySettings.yml.

Раскладки меню (слоты, иконки предметов, названия и сообщения) для каждого магазина находятся в конфигурационных файлах меню EliteMobs (например, конфиги меню покупки-продажи, кастомного магазина, процедурного магазина, продажи и магазина стрел).

Рассчитанная покупная стоимость складывается из стоимости материала, зачарований и эффектов зелий с базовым значением 1. Поэтому после изменения ценовых настроек сохранённые цены продажи могут отличаться от заново рассчитанных цен покупки.

При каждой покупке сначала списывается цена, а предмет выдаётся только после того, как поставщик экономики принял платёж. Если поставщик отклоняет платёж, игрок получает сообщение о нехватке средств, и ничего не выдаётся. Если транзакция обрывается на полпути, игрок видит shopTransactionFailedMessage, а в лог сервера записываются цена, было ли принято списание и сам предмет, чтобы администратор мог урегулировать ситуацию.