Система магазинов
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 dynamic | elitemobs.shop.dynamic | true | Открывает входное меню динамического магазина или запрашивает телепортацию в Гильдию |
/em shop procedural <player> | elitemobs.* | op | Открывает динамический (процедурный) магазин для другого игрока |
/em shop custom | elitemobs.shop.command | только в коде | Открывает входное меню кастомного магазина или запрашивает телепортацию в Гильдию; при необходимости выдайте этот фактический узел команды вместо объявленного, но неиспользуемого elitemobs.shop.custom |
/em shop custom <player> | elitemobs.shop.custom.other | op | Открывает кастомный магазин для другого игрока |
/em shop sell <player> | elitemobs.shop.sell.other | op | Открывает меню продажи для другого игрока |
Разрешения на взаимодействие с NPC (выдаются игрокам по умолчанию через набор elitemobs.user):
| Разрешение | NPC |
|---|---|
elitemobs.shop.dynamic.npc | Кузнец (динамический магазин) |
elitemobs.shop.custom.npc | Особый кузнец (кастомный магазин) |
elitemobs.shop.sell.npc | Продажа предметов |
elitemobs.shop.arrow.npc | Магазин стрел |
Конфигурация
Экономика магазинов настраивается в EconomySettings.yml. Примечательные ключи:
| Ключ | По умолчанию | Эффект |
|---|---|---|
enableEconomy | true | Включает обычные точки входа в экономику; не блокирует все прямые пути к магазинам |
currencyName | Elite Coins | Отображаемое название валюты |
useVault | false | Направлять балансы через Vault вместо базы данных EliteMobs |
itemResaleValue | 5 | Процент от полной стоимости предмета, выплачиваемый при продаже |
playerToPlayerPaymentTaxes | 0.2 | Налоговая ставка (0.0–1.0), применяемая к переводам /em pay (0.2 = 20%) |
enableCurrencyShower | true | Выпадают ли монеты при смерти элит |
currencyShowerTierMultiplier | 1.0 | Множитель выпадающей валюты (2.0 = вдвое больше) |
materialWorth.defaultMaterialWorth | 1 | Стоимость любого материала, у которого нет собственной записи materialWorth.<MATERIAL> |
Для materialWorth.<MATERIAL> используются фиксированные начальные значения из ступеней материалов плагина: незерит — 18, алмаз и трезубец — 17, железо — 16, камень и кольчуга — 15, золото, дерево и кожа — 13. Эти ступени являются константами кода, а не настройками. Чтобы задать цены магазина, измените отдельные записи materialWorth в EconomySettings.yml.
Раскладки меню (слоты, иконки предметов, названия и сообщения) для каждого магазина находятся в конфигурационных файлах меню EliteMobs (например, конфиги меню покупки-продажи, кастомного магазина, процедурного магазина, продажи и магазина стрел).
Рассчитанная покупная стоимость складывается из стоимости материала, зачарований и эффектов зелий с базовым значением 1. Поэтому после изменения ценовых настроек сохранённые цены продажи могут отличаться от заново рассчитанных цен покупки.
При каждой покупке сначала списывается цена, а предмет выдаётся только после того, как поставщик экономики принял платёж. Если поставщик отклоняет платёж, игрок получает сообщение о нехватке средств, и ничего не выдаётся. Если транзакция обрывается на полпути, игрок видит shopTransactionFailedMessage, а в лог сервера записываются цена, было ли принято списание и сам предмет, чтобы администратор мог урегулировать ситуацию.
Связанные страницы
- Мир Гильдии искателей приключений — где живут NPC магазинов
- Привязка души — проверка владельца и исключения
- Система навыков — как уровни навыков ограничивают экипировку и масштабируют динамический магазин
- Интеграция с Vault — использование общесерверной экономики
- Создание предметов — добавление кастомных предметов в кастомный магазин