Модуль Market
1.21.9, Paper.
Основная цель модуля - предоставление игрокам возможности арендовать торговые лавки в специальной локации (рынке), размещать в них товары для продажи другим игрокам и улучшать лавки для повышения эффективности торговли.
Это техническое задание - пример того, какой нам необходим плагин. Мы совершенно не будем против, если вы, будучи разработчиком, сделайте его более удобным, красивым и функциональным, даже если потребуется изменить это техническое задание.
В качестве примера можете посмотреть модуль ChestShop в плагине ExcellentShop
Все покупки в торговой лавке осуществляются в алмазах (если куплено улучшение - в валюте CoinsEngine)
Основные Компоненты
Рыночная Локация: Специальный регион в мире, где размещены лавки. Лавки представляют собой фиксированные позиции (блок).
Торговые Лавки: Каждая лавка - это виртуальный магазин, представленный в игре как моделька из ItemsAdder и менюшка. Игрок арендует лавку, размещает товары и устанавливает цены.
Аренда Лавок: Игроки могут арендовать свободные лавки за игровую валюту (CoinsEngine и обычные алмазы). Аренда на фиксированный срок с возможностью продления.
Продажа товаров: Игроки размещают предметы в лавке, устанавливают цену. Другие игроки покупают товары, деньги перечисляются владельцу.
Улучшения Лавок: Игроки могут получать улучшения торговой лавки через разрешения LuckPerms.
Команды
/emarket store create <Название>
Создать торговую лавку (для администратора)
expetrade.market.admin.store.create
/emarket store block add <Номер лавки>
Устанавливает блоки на которые нужно кликнуть чтобы открыть меню лавки (для администратора)
expetrade.market.admin.store.blockadd
/emarket store block remove
Отвязывает блок от лавки (для администратора) (нужно смотреть на блок)
expetrade.market.admin.store.blockremove
/emarket store npc create <Номер лавки>
Устанавливает место для спавна NPC-Торговца при покупке улучшения (для администратора)
expetrade.market.admin.store.npccreate
/emarket store npc remove <Номер лавки>
Удаляет место для спавна NPC-Торговца (для администратора)
expetrade.market.admin.store.npcremove
/mystore lease stop
Завершить аренду торговой лавки
expetrade.market.leasestop
/mystore lease extend
Продлить аренду торговой лавки
expetrade.market.leaseextend
/mystore storage
Открыть хранилище торговой лавки
expetrade.market.storage
/mystore buyer storage
Открыть хранилище по скупке товаров торговой лавки
expetrade.market.buyerstorage
/markets или /market list
Открыть менюшку с торговыми лавками всего сервера. Кликнув на лавку, можно открыть менюшку для взаимодействия с лавкой на расстоянии.
expetrade.market.donate.range
/markets <Предмет> или /market list <Предмет>
Открывает менюшку с торговыми лавками всего сервера в которых продаётся/скупается указанный в команде предмет. Кликнув на лавку, можно открыть менюшку для взаимодействия с лавкой на расстоянии.
expetrade.market.donate.search
/emarket admin sanction <Ник> <Тип санкции> <Время> <Причина>
Наложить санкцию на игрока.
expetrade.market.admin.sanction
/emarket admin tax <Цифра> <Рынок>
Установить налог на продажу товаров (снимается процент у продавца). Если не указан рынок - налог применяется ко всем рынкам.
expetrade.market.admin.tax
Каждая продажа для продавца облагается налогом который устанавливается администратором командой /emarket admin tax <Цифра>.
Увеличивает налоги для определённого игрока на 100%. Если налоги установлены на 0 - то устанавливается налог в 10%.
Рыночная локация
Администратор с помощью команды создаёт рынок и назначает ему название (пример: /emarket create spawn). Далее, с помощью тех же команд, он устанавливает позиции для лавок. А именно:
Создаёт торговую лавку - /emarket store create spawn (spawn - название рынка). После создания лавки, ей присваивается уникальный номер.
Устанавливает блоки (нужно на них смотреть), нажимая на которые будет открываться меню лавки - /emarket store block add <Номер лавки>. Таких блоков для одной лавки может быть множество. Удалить (отвязать) блок от лавки можно через команду /emarket store block remove (указывать номер лавки уже не надо, нужно просто посмотреть на блок. Но вообще, мы хотим сделать лавку через модельку ItemsAdder.
Создаёт место для NPC-Торговца (он появится при покупке улучшения "Личный торговец", смотрите ниже) - /emarket store npc create <Номер лавки>. NPC появится на месте, где стоит администратор. К NPC будет применён рандомный скин из определённой папки плагина (например, tradeskins, где скины будут расположены в png-файлах). Имя NPC будет "Продавец", на второй строчке ник игрока-владельца лавки. Удалить NPC может администратор командой /emarket store npc remove <Номер лавки>. NPC появится только если куплено специальное улучшение.
Список плейсхолдеров:
%expemarket_store_owner_<Номер лавки>%
Отображает владельца торговой лавки с определённым номером.
%expemarket_store_status_<Номер лавки>%
Отображает статус торговой лавки с определённым номером.
%expemarket_store_content_<Номер лавки>%
Отображает количество продаваемых товаров в
лавке с определённым номером.
%expemarket_store_description_<Номер лавки>%
Отображает описание лавки (устанавливается игроком)
Аренда лавки
Игрок подходит к свободной торговой лавке и кликает на неё ПКМ или ЛКМ. Открывается менюшка в которой будет 5 вариантов аренды лавки:
Аренда на 2 часа.
Аренда на 5 часов.
Аренда на 12 часов.
Аренда на 24 часа.
Аренда на 48 часов.
При нажатии на один из вариантов, с игрока списываются средства, а он получает доступ к лавке. Арендовать лавку можно сразу двумя валютами. Алмазами и валютой из CoinsEngine. Игрок через панель управления лавкой сможет продлевать аренду лавки.
Владелец лавки может принудительно завершить аренду торговой лавки заранее, но в таком случае, ему не будет возвращена потраченная на аренду сумма). Команда /mystore lease stop (+ возможность это сделать в менюшке)
Игрок не должен отходить от лавки во время её аренды больше, чем на 30 блоков от неё на срок более 120 секунд (всё настраивается в конфиге). Исключение - улучшение (о них ниже). Если игрок нарушил это правило и отошёл, статус лавки меняется на "заморожена" и игроки не смогут воспользоваться лавкой. При попытке открыть меню лавки им будет отправляться уведомление в чате. Так-же каждые 5 минут продавец будет получать уведомление о том, что лавка заморожена и товары не продаются.
За 1 час, 30 минут, 5 минут, 1 минуту отправляется автоматическое уведомление о том, что срок аренды торговой лавки подходят к концу. Командой /mystore lease extend можно продлить аренду (открывается менюшка как при изначальной аренде). При продлении аренды лавки нельзя превысить временный лимит. У обычных игроков лимит 48 часов. У игроков с привилегией elite (через Luckperms) лимит 100 часов. В конфиге должна быть возможность настроить это и добавить лимит другим привилегиям.
Если аренда истекла - лавка становится свободной, непроданные товары возвращаются владельцу (в специальный склад в который нельзя класть предметы, только забирать). Забрать непроданные товары можно с помощью /mystore storage
Управление лавкой
После того, как игрок арендовал лавку, он может воспользоваться командой /mystore и откроется специальная GUI-менюшка управления. В ней будет доступно несколько разделов:
В этом разделе игрок сможет выставить новый товар, отредактировать и удалить существующий.
Выставляется товар следующим образом: игрок нажимает на кнопку "Добавить товары", после он должен положить в менюшку все предметы которые он хочет выставить на продажу. Далее он подтверждает выбор и его перекидывает на страничку редактирования товара. Там, каждый предмет отображается как отдельный товар. Он должен кликнуть на каждый и настроить цену за одну штуку. После этого, товар появляется на лавке и его можно купить.
Если продавец захочет изменить цену товара или увеличить его количество, то он нажимает на кнопку "Редактировать товары". На страничке отображаются все предметы которые он продаёт. Продавец должен навести на товар и выбрать одно из действий:
ПКМ - изменить цену товара за 1 штуку.
ЛКМ - пополнить количество товара (открывается менюшка и он кладёт туда предметы).
Шифт + ПКМ - убрать товар с продажи (товары переносятся в /mystore storage).
При изначальном добавлении товаров игрок может положить сразу несколько видов предметов (например, золото и алмазы). Они должны быть добавлены как два разных товара. А вот уже при пополнении количества товара, он должен положить только тот предмет, который выбрал, другие предметы положить у него не получится.
При нажатии на эту копку игроку открывается страница с двумя иконками. При наведении на первую, он увидит статистику торговой лавки (за срок его аренды). В эту статистику входит:
Количество проданных товаров
Количество покупателей (1 игрок = 1 покупатель)
Выручка за срок аренды
Срок аренды лавки (сколько всего времени она находится в аренде у игрока)
Конец срока аренды (через сколько и когда аренда завершится)
При наведении на вторую иконку, он увидит свою личную статистику (за весь срок его игры):
Количество проданных игроком товаров
Общее количество покупателей у игрока
Выручка за всё время продаж
В этой вкладке игрок сможет приобрести улучшения для своей торговой лавки и настроить их.
Улучшения привязываются к игроку с помощью разрешения LuckPerms. Улучшение можно купить с помощью валюты (CoinsEngine). После покупки, улучшение можно настроить кликнув по иконке.
Данная вкладка доступна владельцу лавки при наличии улучшения "Помощники".
Здесь владелец лавки сможет добавить помощников, дав им доступ к торговой лавке. Количество помощников неограниченно. У них будет такой же доступ к лавке, как и у владельца. Во вкладке также будет отображаться список действующих помощников. При нажатии на помощника в этой менюшке, он будет лишён своих прав. Помощники отображаются в виде голов их скинов в меню.
Улучшения лавки
Все улучшения непосредственно покупаются самому игроку. Они автоматически применяются на его лавку. Один игрок может владеть только одной лавкой.
Личный торговец. После покупки этого улучшения, на специальном месте появляется NPC-торговец. Благодаря нему, игрок сможет отходить (и даже выходить с сервера) на неограниченное время от торговой лавки и она будет продолжать функционировать. Единственный момент - игрок должен кормить торговца с помощью хлеба. 1 хлеб = 5 минуты его работы (должно регулироваться в конфиге). Давать хлеб торговцу можно через меню улучшения (если улучшение куплено, нужно просто нажать на иконку этого улучшения и откроется менюшка где можно положить хлеб).
При покупке улучшения игроку выдаётся разрешение Luckperms: expetrade.market.upgrade.trader
Лавка скупщика. После приобретения данного улучшения взаимодействие с лавкой изменяется — при посещении покупатель должен выбрать один из двух разделов: «Продажа предметов» или «Скупка предметов». При выборе «Скупка предметов» игрок получает возможность продать предметы, которые владелец лавки заранее указал как востребованные. Владелец лавки может добавить скупаемые предметы, кликнув ЛКМ по улучшению (после его покупки). После этого он перемещается в чат, где должен ввести данные в формате: «НАЗВАНИЕ_ПРЕДМЕТА ЦЕНА_ЗА_ШТУКУ КОЛИЧЕСТВО» (например, MACE 15 30, что означает скупку булавы за 15 алмазов каждая, всего требуется 30 штук). Если на складе скупщика недостаточно алмазов, игрок не сможет совершить продажу. Владелец лавки должен самостоятельно пополнять склад скупщика алмазами через команду /mystore buyer <количество>, при этом алмазы должны находиться в его инвентаре. Все купленные у игроков предметы поступают в хранилище /mystore buyer storage. При ПКМ по иконке улучшения открывается интерфейс управления скупщиком, где владелец может просматривать список активных запросов на скупку и удалять их при необходимости.
При покупке улучшения игроку выдаётся разрешение Luckperms: expetrade.market.upgrade.buyer
Помощники. После приобретения данного улучшения владелец лавки может добавить помощников, которые будут иметь полный функционал к лавке кроме удаления лавки/досрочного завершения аренды. Так-же должна быть возможность посмотреть логи взаимодействия с лавкой у определённого помощника (каждое действие с лавкой).
При покупке улучшения игроку выдаётся разрешение Luckperms: expetrade.market.upgrade.helpers
Расширенный каталог (максимум 5 уровней). После приобретения данного улучшения открываются дополнительные страницы для выставления товаров (изначально доступна только одна страница в виде большого сундука). Чем больше уровень - тем больше дополнительных страниц открывается.
Привлечение. После приобретения данного улучшения владелец лавки может установить описание для лавки командой /mystore description <Текст>. Само описание будет отображаться в плейсхолдере %expemarket_store_description_<Номер лавки>%.
Максимальное количество символов - 20 (регулируется в конфиге).
Аналитика. После приобретения данного улучшения владелец сможет в меню улучшения посмотреть расширенную статистику: самые популярные товары, общая выручка, график активности, какие игроки покупают товары больше всего и всё что возможно.
Так-же система начнёт предлагает «рекомендованную цену» на основе средних цен по рынку в момент установки цены на товар (анализирует другие лавки).
Последнее обновление