Shoppy Stock — это мощная и универсальная экономическая система, разработанная для обогащения вашего сервера Rust магазинами, фондовыми рынками, переводами, обменами и функциями внесения депозитов.
Этот плагин позволяет легко создавать несколько магазинов с уникальными валютами, настраивать динамические фондовые рынки со списками товаров и управлять полностью настраиваемым торговым центром сервера — а также предоставляет множество других расширенных возможностей.
В состав пакета плагинов (zip-архив) входят:
Глобальный
Это руководство представляет собой краткий обзор, который поможет вам начать работу и понять ключевые аспекты плагина.
Дополнительные плагины для поддержки валют
Shoppy Stock V2 был практически полностью переписан с нуля, повторно используя менее 10% старого кода.
Новая конфигурация стала более интуитивно понятной и функциональной.
Для облегчения миграции используйте предоставленный ShoppyConverter, который может преобразовать около 95% ваших старых конфигурационных файлов и файлов данных в новый формат.
После преобразования всегда внимательно проверяйте новые конфигурационные файлы — версия 2 включает десятки новых параметров, которые не будут автоматически подстраиваться под ваши предпочтительные настройки.
Как конвертировать:
Основные параметры конфигурации
Веб-API.
Вы можете использовать веб-API для отображения рыночных цен на вашем веб-сайте.
Требуется веб-хостинг с поддержкой PHP.
Загрузите apiupdate.php, НАЖАВ ЗДЕСЬ .
Поместите его в каталог, указанный в вашем файле конфигурации «Web Price API - Link».
Убедитесь, что у него есть права на создание файла api.html.
Сгенерированный файл будет доступен по адресу <Web Price API - Link>/api.html.
Продажа предметов на сервере → Расчет суммы продажи по умолчанию (DSAC)
DSAC помогает определить среднее количество предметов, продаваемых за определенный период, на основе активности игроков на вашем сервере. Период — это время, за которое устанавливается единая цена.
Пример: на PvE-сервере с 10 уровнями сложности и примерно 20-30 игроками DSAC для дерева может быть установлен на уровне 1 800 000 — на основе моих собственных расчетов, но вы можете скорректировать его в зависимости от вашей статистики и потребностей сервера.
При изменении цен акций плагином всегда запускайте таймер в часовом и минутном
режимах. Например:
Фондовый рынок — Категории по умолчанию
По умолчанию фондовый рынок включает следующие категории:
Предметы — Пользовательская подробная информация (skinId: languageKey)
Вы можете добавлять пользовательские информационные теги в описания товаров (аналогично отображению состояния инструмента или генов клонирования).
Например, можно пометить определенные предметы как «Ингредиенты для улучшения».
Имя хранилища для использования.
Убедитесь, что вы создали хранилище с этим именем в RedeemStorageAPI — в противном случае предметы, полученные в результате определенных действий, могут исчезнуть, и могут возникнуть ошибки.
Создание конфигурации магазина со всеми стандартными предметами RUST.
Чтобы автоматически добавить в магазин все стандартные предметы RUST:
Основные моменты настройки данных магазина
Товары магазина - Команды.
Поддерживаются некоторые типы динамических переменных в командах:
Сборник ответов на часто задаваемые вопросы о системах спроса, ценовых мультипликаторах, тенденциях фондового рынка и API для разработчиков.
Множительные события и система спроса.
Вопрос: Как работает система спроса? Что такое «вес»?
Ответ: Система спроса использует «Множительные события», определенные в основном файле конфигурации. Каждое событие имеет вес, который определяет вероятность его выбора во время изменения цены. Частота появления событий настраивается в файле конфигурации фондового рынка по адресу: /data/ShoppyStock/StockMarket/Configs/<shopName>.json. Убедитесь, что имена в основном файле конфигурации и файле конфигурации фондового рынка точно совпадают.
В: Как работают «минимальный» и «максимальный» значения?
О: Они определяют диапазон случайных множителей цены.
Например: если минимальное значение равно 1,4, а максимальное — 1,8, и исходная цена равна 1,4, то итоговый множитель может быть примерно 1,685 → итоговая цена становится ≈ 2,359.
Если результат случайного броска превышает максимальное значение или ниже минимального, он ограничивается минимальным/максимальным значением.
Фондовый рынок — временные метки и тренды.
Вопрос: Для чего используются временные метки?
Ответ: Плагин хранит исторические данные о ценах, которые отображаются на графиках для игроков с соответствующими правами доступа.
Совет: установите разумное значение для срока хранения временных меток, даже если вы не планируете показывать их игрокам сейчас — это позволит вам начать сбор полезных данных на раннем этапе.
Папка данных, конфигурация фондового рынка.
Вопрос: Ключи списка заблокированных множителей.
Ответ: Некоторые элементы, которые вы хотите исключить из множителей цен разрешений.
Калькулятор цен
: В: Изменение цены - Процент колебаний цены
О: Добавляет случайные небольшие изменения цен, чтобы рынок оставался реалистичным, когда не происходит других событий.
В: Изменение цены - Действия с одинаковой ценой Мин/Макс
О: Контролирует, сколько раз цены должны повышаться или понижаться последовательно, делая тренды более естественными.
В: Изменение цены - Шансы на увеличение на основе текущего процента цены
О: Это шанс выполнить указанное выше действие. Он задается в формате "<процент цены>": <шанс повышения цены (в процентах)>. Это сделано для того, чтобы цены росли легче, когда они низкие, и сложнее, когда они высокие.
В: Падение цены - Множитель штрафа за количество проданных товаров
О: Когда много товаров продается быстро, значение цены становится отрицательным × множитель штрафа, что приводит к более быстрому падению цены.
В: Снижение цены - Максимальное снижение цены при продаже
О: Если продано огромное количество товара (например, 10000% от DSAC), цена фиксируется, например, на уровне 25% от первоначальной стоимости на определенный период (например, 24 броска цены).
В: Повышение цены - DSAC не достигнут
О: Когда спрос на товар слишком низок (<100% продано DSAC), цена повышается быстрее, чтобы стимулировать фарм, например, в 1,5 раза.
В: Расчет количества проданных товаров по умолчанию - Множитель количества игроков онлайн
О: Автоматически масштабирует DSAC в зависимости от текущего количества игроков (проверяется при каждом броске цены). Полезно, если количество игроков онлайн сильно колеблется.
В: Множители цены - Минимальный временной интервал между событиями
О: Устанавливает период ожидания между событиями множителей, чтобы избежать скачков цен.
В: Множители цены - Вероятность появления в зависимости от количества проданных товаров
О: Позволяет множителям срабатывать чаще, когда продано мало или много товаров.
В: События с множителем цены
О: Определяет, сколько раз должно длиться событие повышения/понижения цены.
Сервер продает предметы.
Вопрос: Что такое родительская система ценообразования?
Ответ: Она позволяет устанавливать базовые предметы (например, металлическую руду) и переработанные предметы (например, металлические фрагменты) таким образом, чтобы фрагменты всегда оставались дороже руды на определенную разницу, стимулируя переработку.
Этот плагин позволяет легко создавать несколько магазинов с уникальными валютами, настраивать динамические фондовые рынки со списками товаров и управлять полностью настраиваемым торговым центром сервера — а также предоставляет множество других расширенных возможностей.
В состав пакета плагинов (zip-архив) входят:
- плагин ShoppyStock
- Плагин ShoppyConverter (преобразует конфигурацию версии 1.x в конфигурацию версии 2.0)
Глобальный
- Включает более 17 детализированных окон графического интерфейса пользователя в стиле Rust.
- Оптимизировано для высокой производительности — действия выполняются без большого объема данных и не будут создавать дополнительную нагрузку на ваш сервер.
- Обладает широкими возможностями расширения, ограниченными лишь вашей фантазией.
- Полностью настраиваемые всплывающие сообщения через PopUp API.
- Комплексная поддержка команд и API для управления валютами.
- Полная языковая поддержка всех сообщений и элементов.
- Поддерживает интеграцию с NoEscape.
- Полная настройка цвета пользовательского интерфейса.
- Поддержка взаимодействия NPC с магазинами и фондовыми рынками.
- Функция запоминания страниц позволяет сохранять ваше местоположение в магазине при повторном открытии.
- Вносить и снимать валюту с торговых точек.
- Обмен валюты между различными типами.
- Встроенная таблица лидеров по валютам.
- Создайте несколько магазинов, в каждом из которых используются разные валюты.
- Легко импортируйте свою старую валюту из других экономических плагинов.
- Сгруппируйте товары по категориям с помощью пользовательских значков для удобного просмотра.
- Единая строка поиска для всех категорий.
- Покупайте ровно столько товаров, сколько вам нужно.
- Полная поддержка пользовательских элементов.
- Если валюта основана на товарах, разрешите внесение депозитов в магазин в виде виртуальной валюты и вывод средств обратно в виде товаров.
- Детальная система разрешений, настраиваемая для каждого действия.
- Ежедневные лимиты или лимиты на стирание данных о покупках.
- Время восстановления покупок.
- Настраиваемая система скидок.
- Случайная ротация предложений с настраиваемыми списками.
- Прогрессивное ценообразование — цены могут увеличиваться на фиксированные значения или множители при каждой покупке.
- Создайте несколько рынков с различными валютами.
- Вкладка «Избранное» для быстрого доступа.
- Автоматический вывод списка всех стандартных элементов Rust с поддержкой черного списка.
- Множество вариантов сортировки для более эффективного управления рынком.
- Создание запросов на покупку и продажу.
- Настраиваемая история цен продажи сервера.
- Ограничения на количество объявлений, которые может создать каждый игрок, устанавливаются на основе прав доступа.
- Объявления можно отменить, получить возврат средств или вернуть на рынок без каких-либо затрат.
- Настраиваемые налоги на рыночные операции.
- Поддержка дополнительной информации о предметах, такой как прочность и гены растений.
- С помощью циклического изменения цен цены корректируются в установленные часы.
- Ценообразование, основанное на спросе и корректирующееся в зависимости от популярности товара (для обмена сообщениями требуется DiscordCore).
- Усовершенствованный центр продаж с калькулятором цен, использующим более 15 переменных (например, объем продаж, количество игроков онлайн).
- Система биржевого брокера — игроки могут хранить или возвращать предметы, устанавливать цены оповещений и даже автоматически продавать ресурсы в автономном режиме.
- Поддержка пользовательских категорий и полного набора пользовательских элементов.
- Поддержка веб-API для проверки цен или интеграции в серверные инструменты (требуется веб-сервер).
- Модуль статистики для тонкой настройки вашей экономики.
- Объявления с ограниченным временем доступности, которые можно настроить.
- Возможность выкупать ресурсы, проданные на рынке.
- Налоги, указанные в объявлении, рассчитываются исходя из времени размещения объявления.
- Динамические графики истории цен.
- Индивидуальная настройка предложений купли/продажи на сервере для каждого товара.
- Формирование исторических данных о ценах.
- Отправляйте внутриигровую валюту другим игрокам, независимо от того, находятся ли они онлайн или офлайн.
- Настраиваемые лимиты переводов и налоги.
Это руководство представляет собой краткий обзор, который поможет вам начать работу и понять ключевые аспекты плагина.
Дополнительные плагины для поддержки валют
- Экономика
- ServerRewards
- Банковская система
- IQEconomic
Shoppy Stock V2 был практически полностью переписан с нуля, повторно используя менее 10% старого кода.
Новая конфигурация стала более интуитивно понятной и функциональной.
Для облегчения миграции используйте предоставленный ShoppyConverter, который может преобразовать около 95% ваших старых конфигурационных файлов и файлов данных в новый формат.
После преобразования всегда внимательно проверяйте новые конфигурационные файлы — версия 2 включает десятки новых параметров, которые не будут автоматически подстраиваться под ваши предпочтительные настройки.
Как конвертировать:
- Поместите файл ShoppyConverter.cs в папку plugins.
- Следуйте инструкциям консоли, чтобы переместить файлы в нужное место.
- Выполните команду преобразования в соответствии с инструкциями.
- После преобразования поместите новые файлы в указанные папки.
- /config/ShoppyStock.json
Основной файл конфигурации, содержащий настройки по умолчанию для валют, магазинов, фондовых рынков и глобальных параметров. - /data/ShoppyStock/playersData.json
— хранит глобальные данные плагина и валюты игроков. - /data/ShoppyStock/Shops/Configs/<shopName>.json
Настройки магазина, включая доступные категории и товары. - /data/ShoppyStock/Shops/Statistics/
Данные о ежедневных лимитах, уникальных покупках и многом другом. - /data/ShoppyStock/StockMarkets/Configs/<stockName>.json
Конфигурации фондового рынка. - /data/ShoppyStock/StockMarkets/Listings/
Предложения игроков по покупке и продаже. - /data/ShoppyStock/StockMarkets/PlayerData/
Данные оповещений, избранное, сохраненные товары и т. д. - /data/ShoppyStock/StockMarkets/PriceCache/
Исторические данные о ценах и текущие цены продажи на сервере. - /data/ShoppyStock/StockMarkets/Statistics/
Данные о товарах, проданных на сервер, и общей сумме заработанной валюты.
Основные параметры конфигурации
Веб-API.
Вы можете использовать веб-API для отображения рыночных цен на вашем веб-сайте.
Требуется веб-хостинг с поддержкой PHP.
Загрузите apiupdate.php, НАЖАВ ЗДЕСЬ .
Поместите его в каталог, указанный в вашем файле конфигурации «Web Price API - Link».
Убедитесь, что у него есть права на создание файла api.html.
Сгенерированный файл будет доступен по адресу <Web Price API - Link>/api.html.
Продажа предметов на сервере → Расчет суммы продажи по умолчанию (DSAC)
DSAC помогает определить среднее количество предметов, продаваемых за определенный период, на основе активности игроков на вашем сервере. Период — это время, за которое устанавливается единая цена.
Пример: на PvE-сервере с 10 уровнями сложности и примерно 20-30 игроками DSAC для дерева может быть установлен на уровне 1 800 000 — на основе моих собственных расчетов, но вы можете скорректировать его в зависимости от вашей статистики и потребностей сервера.
При изменении цен акций плагином всегда запускайте таймер в часовом и минутном
режимах. Например:
- Значения: 0, 30, 60 → выпадает в точке x:00 или x:30.
- Значения: 0, 20, 40, 60 → выпадает в точке x:00, x:20 или x:40.
Фондовый рынок — Категории по умолчанию
По умолчанию фондовый рынок включает следующие категории:
- Избранное
- Мои объявления
- Банк
- Все товары
Предметы — Пользовательская подробная информация (skinId: languageKey)
Вы можете добавлять пользовательские информационные теги в описания товаров (аналогично отображению состояния инструмента или генов клонирования).
Например, можно пометить определенные предметы как «Ингредиенты для улучшения».
Имя хранилища для использования.
Убедитесь, что вы создали хранилище с этим именем в RedeemStorageAPI — в противном случае предметы, полученные в результате определенных действий, могут исчезнуть, и могут возникнуть ошибки.
Создание конфигурации магазина со всеми стандартными предметами RUST.
Чтобы автоматически добавить в магазин все стандартные предметы RUST:
- В файле /config/ShoppyStock.json в нужном разделе магазина установите параметр Generate Config With All Default RUST Items в значение true.
- Удалите существующий файл конфигурации магазина в папке /data/ShoppyStock/Shops/Configs/.
- Перезагрузите плагин — это создаст новый конфигурационный файл, содержащий все параметры по умолчанию.
Основные моменты настройки данных магазина
Товары магазина - Команды.
Поддерживаются некоторые типы динамических переменных в командах:
- {userId} → Steam ID покупателя
- {userName} → никнейм покупателя
- {userPosX}, {userPosY}, {userPosZ} → координаты покупателя
Сборник ответов на часто задаваемые вопросы о системах спроса, ценовых мультипликаторах, тенденциях фондового рынка и API для разработчиков.
Множительные события и система спроса.
Вопрос: Как работает система спроса? Что такое «вес»?
Ответ: Система спроса использует «Множительные события», определенные в основном файле конфигурации. Каждое событие имеет вес, который определяет вероятность его выбора во время изменения цены. Частота появления событий настраивается в файле конфигурации фондового рынка по адресу: /data/ShoppyStock/StockMarket/Configs/<shopName>.json. Убедитесь, что имена в основном файле конфигурации и файле конфигурации фондового рынка точно совпадают.
В: Как работают «минимальный» и «максимальный» значения?
О: Они определяют диапазон случайных множителей цены.
Например: если минимальное значение равно 1,4, а максимальное — 1,8, и исходная цена равна 1,4, то итоговый множитель может быть примерно 1,685 → итоговая цена становится ≈ 2,359.
Если результат случайного броска превышает максимальное значение или ниже минимального, он ограничивается минимальным/максимальным значением.
Фондовый рынок — временные метки и тренды.
Вопрос: Для чего используются временные метки?
Ответ: Плагин хранит исторические данные о ценах, которые отображаются на графиках для игроков с соответствующими правами доступа.
Совет: установите разумное значение для срока хранения временных меток, даже если вы не планируете показывать их игрокам сейчас — это позволит вам начать сбор полезных данных на раннем этапе.
Папка данных, конфигурация фондового рынка.
Вопрос: Ключи списка заблокированных множителей.
Ответ: Некоторые элементы, которые вы хотите исключить из множителей цен разрешений.
Калькулятор цен
: В: Изменение цены - Процент колебаний цены
О: Добавляет случайные небольшие изменения цен, чтобы рынок оставался реалистичным, когда не происходит других событий.
В: Изменение цены - Действия с одинаковой ценой Мин/Макс
О: Контролирует, сколько раз цены должны повышаться или понижаться последовательно, делая тренды более естественными.
В: Изменение цены - Шансы на увеличение на основе текущего процента цены
О: Это шанс выполнить указанное выше действие. Он задается в формате "<процент цены>": <шанс повышения цены (в процентах)>. Это сделано для того, чтобы цены росли легче, когда они низкие, и сложнее, когда они высокие.
В: Падение цены - Множитель штрафа за количество проданных товаров
О: Когда много товаров продается быстро, значение цены становится отрицательным × множитель штрафа, что приводит к более быстрому падению цены.
В: Снижение цены - Максимальное снижение цены при продаже
О: Если продано огромное количество товара (например, 10000% от DSAC), цена фиксируется, например, на уровне 25% от первоначальной стоимости на определенный период (например, 24 броска цены).
В: Повышение цены - DSAC не достигнут
О: Когда спрос на товар слишком низок (<100% продано DSAC), цена повышается быстрее, чтобы стимулировать фарм, например, в 1,5 раза.
В: Расчет количества проданных товаров по умолчанию - Множитель количества игроков онлайн
О: Автоматически масштабирует DSAC в зависимости от текущего количества игроков (проверяется при каждом броске цены). Полезно, если количество игроков онлайн сильно колеблется.
В: Множители цены - Минимальный временной интервал между событиями
О: Устанавливает период ожидания между событиями множителей, чтобы избежать скачков цен.
В: Множители цены - Вероятность появления в зависимости от количества проданных товаров
О: Позволяет множителям срабатывать чаще, когда продано мало или много товаров.
В: События с множителем цены
О: Определяет, сколько раз должно длиться событие повышения/понижения цены.
Сервер продает предметы.
Вопрос: Что такое родительская система ценообразования?
Ответ: Она позволяет устанавливать базовые предметы (например, металлическую руду) и переработанные предметы (например, металлические фрагменты) таким образом, чтобы фрагменты всегда оставались дороже руды на определенную разницу, стимулируя переработку.
- int GetCurrencyAmount(string shopName, BasePlayer player) - Возвращает баланс игрока, округленный до целого числа в меньшую сторону. Если значение не найдено, возвращает 0.
- int GetCurrencyAmount(string shopName, ulong userId) - Возвращает баланс игрока, округленный до целого числа в меньшую сторону. Если значение не найдено, возвращает 0.
- float GetCurrencyAmountFloat(string shopName, BasePlayer player) - Возвращает баланс игрока. Если не найден, возвращает 0.
- float GetCurrencyAmountFloat(string shopName, ulong userId) - Возвращает баланс игрока. Если не найдено, возвращает 0.
- bool TakeCurrency(string shopName, BasePlayer player, int amount) - Принимает валюту игрока. Возвращает true, если валюта принята, и false, если нет.
- bool TakeCurrency(string shopName, BasePlayer player, float amount) - Принимает валюту игрока. Возвращает true, если валюта принята, и false, если нет.
- bool TakeCurrency(string shopName, ulong userId, int amount) - Принимает игровую валюту. Возвращает true, если валюта принята, и false, если нет.
- bool TakeCurrency(string shopName, ulong userId, float amount) - Принимает игровую валюту. Возвращает true, если валюта принята, и false, если нет.
- void GiveCurrency(string shopName, ulong sellerId, int amount) - Выдает игроку игровую валюту.
- void GiveCurrency(string shopName, ulong sellerId, float amount) - Выдает игроку игровую валюту.
- string FormatCurrency(string shopName, BasePlayer player) - Возвращает отформатированный баланс игрока.
