Магазин покупки и продажи
Магазин в стиле торговца, где каждая плитка позволяет купить ИЛИ продать один и тот же предмет, в зависимости от того, какой кнопкой мыши кликнули. Цена покупки выше цены продажи (торговец берёт наценку). Демонстрирует разделение по типу клика в одном и том же слоте.
Что показывает
Заголовок раздела «Что показывает»click { left { ... } right { ... } }для разного поведения по типу кнопки- Связку правила
moneyс действиемtakeMoneyдля покупки - Связку правила
inventoryItemsс действиямиitemRemove+giveMoneyдля продажи - Несимметричное ценообразование (купить за 20, продать за 15)
Как работают типы кликов
Заголовок раздела «Как работают типы кликов»Блок click {} может содержать несколько подблоков, по одному на тип кнопки мыши:
click { left { rules { money: 20 }, actions { takeMoney: 20, itemAdd { ... } } } right { rules { inventoryItems: [...] }, actions { itemRemove: [...], giveMoney: 15 } }}При левом клике игрока выполняется только подблок left. При правом - только right. Это отличается от плоского click { rules: ..., actions: ... }, который срабатывает на любой тип клика.
Доступные типы кликов: left, right, shift_left, shift_right, drop. Добавляйте больше подблоков для большего числа кнопок - типичный паттерн: left под основное действие, shift_left под “сделать x8” или “продвинутый вариант”.
Зачем несимметричные цены
Заголовок раздела «Зачем несимметричные цены»Плагины-торговцы обычно покупают предметы у игроков дешевле, чем продают. Разница (купить 20 - продать 15 = 5 наценки) - это доля торговца. Не даёт игрокам бесконечно прокручивать предметы через магазин ради прибыли.
Чтобы магазин был защищён от арбитража:
- buy_price > sell_price (всегда)
- buy_price > sell_price для любой цепочки и через другие магазины тоже
Если хотите “честную цену” в UI без наценки - ставьте обе одинаковыми.
Проверка инвентаря при продаже
Заголовок раздела «Проверка инвентаря при продаже»Обработчик правого клика использует правило inventoryItems, чтобы проверить, есть ли у игрока предмет на продажу:
right { rules { inventoryItems: [{ material: WHEAT, count: 16 }] } actions { itemRemove: [{ material: WHEAT, count: 16 }] giveMoney: 15 }}Если у игрока нет 16 пшеницы - правило не проходит, действия не срабатывают, и вместо них локальный denyActions показывает сообщение “У вас недостаточно для продажи”.
Попробовать
Заголовок раздела «Попробовать»- Закиньте бандл в
plugins/AbstractMenus/menus/example/. /am reload./eco give <вы> 1000.- Введите
/ame_buysellв игре. - Левый клик по пшенице - купить. Правый - продать обратно.