«Травница» (англ. Herbalist) – игра‑симулятор, в которой игроки собирают ресурсы, варят зелья и торгуют с NPC.
Одним из самых частых вопросов новичков является: как добавить монеты к предмету, чтобы его можно было продать? В этой статье мы разберём все детали процесса, покажем готовый пример кода и дадим полезные рекомендации.
Содержание
- Основы торговли в «Травнице»
- Функция
add_to_items - Параметр
sell_price - Пример: добавляем монеты к тыкве на Хэллоуин
- Полезные советы и типичные ошибки
- FAQ
Основы торговли в «Травнице»
В игре каждый предмет имеет несколько атрибутов, среди которых важнейшими являются:
- item_id – уникальный идентификатор предмета.
- sell_price – цена, за которую NPC покупает предмет у игрока.
- pick_label – событие, которое срабатывает при получении предмета (необязательно).
Если sell_price не указан, игра автоматически ставит цену 0 монет. Чтобы предмет нельзя было продать, необходимо явно задать sell_price = None.
Функция add_to_items
Для добавления или изменения предметов в базе данных используется скриптовая функция add_to_items. Синтаксис выглядит так:
add_to_items(
item_id, # идентификатор предмета
quest = None, # квест, в рамках которого появляется предмет (опционально)
sell_price = None, # цена продажи (по умолчанию 0, если не указано)
pick_label = None # метка события при получении (опционально)
)
Эта функция вызывается в файлах модов (обычно .lua или .json), которые загружаются игрой при старте.
Параметр sell_price
| Значение | Результат |
|---|---|
| Не указано | Цена = 0 монет (можно продать, но за 0) |
Число (например, 8) | Предмет продаётся за указанное количество монет |
None | Продажа отключена – предмет нельзя продать |
Важно помнить, что sell_price принимает только целые числа. Если указать отрицательное значение, игра может выдать ошибку загрузки мода.
Пример: добавляем монеты к тыкве на Хэллоуин
Допустим, вы хотите, чтобы в рамках квеста «Halloween» игроки могли продать тыкву (PUMPKIN_MOD_PUMPKIN_CUT) за 8 монет. Ниже – готовый скрипт.
-- файл: halloween_mod.lua
-- Добавляем тыкву, которую можно продать за 8 монет
add_to_items(
PUMPKIN_MOD_PUMPKIN_CUT, -- идентификатор предмета (тыква)
quest = "helloween", -- привязываем к квесту Halloween
sell_price = 8, -- цена продажи – 8 монет
pick_label = "pumpkin_obtained" -- (опционально) событие при получении
)
Что происходит после загрузки мода:
- Игра регистрирует новый вариант тыквы, связанный с квестом helloween.
- При попытке продать тыкву NPC заплатит игроку ровно 8 монет.
- Если вы хотите, чтобы при получении тыквы срабатывало событие (например, открыть диалог), укажите
pick_label.
Как проверить, что всё работает
- Запустите игру в режиме модератора (если такой есть) или просто включите ваш мод в меню «Mods».
- Пройдите квест «Halloween» и получите тыкву.
- Откройте торговый интерфейс с NPC и убедитесь, что цена продажи указана как 8 монет.
Полезные советы и типичные ошибки
- Не забывайте про кавычки. Идентификаторы квестов и меток событий – строки, их нужно брать в кавычки:
quest = "helloween". - Проверяйте уникальность
item_id. Если в базе уже существует предмет с тем же ID, ваш вызов может переопределить его свойства, что иногда приводит к конфликтам. - Тестируйте в чистой копии. При работе с модами рекомендуется иметь резервную копию оригинальных файлов, чтобы быстро откатиться в случае ошибки.
- Для отключения продажи используйте
sell_price = None, а не0. При0предмет всё равно будет «продаваемым», но за бесплатные монеты. - Если хотите добавить несколько разных цен для одного предмета, создайте отдельные варианты с разными
item_id(например,PUMPKIN_MOD_PUMPKIN_CUT_RARE).
FAQ
Вопрос: Можно ли задать sell_price в виде дроби (например, 2.5 монеты)?
Нет. В «Травнице» валюта измеряется только целыми числами. Дробные значения будут округлены вниз или вызовут ошибку загрузки.
Вопрос: Что делать, если после изменения мода цена всё равно 0?
Проверьте следующее:
- Правильно ли указан
item_id(без опечаток). - Не переопределяется ли ваш предмет позже в другом файле мода.
- Запущена ли игра с включённым модом (в меню «Mods» поставьте галочку).
Вопрос: Как добавить монеты к уже существующим предметам без создания новых ID?
Можно использовать функцию modify_item (если она доступна в вашей версии):
modify_item(
PUMPKIN_MOD_PUMPKIN_CUT,
sell_price = 12 -- меняем цену на 12 монет
)
Вопрос: Можно ли задать sell_price = None и одновременно указать pick_label?
Да, такие параметры совместимы. Предмет будет недоступен для продажи, но при получении сработает указанное событие.
Дата последнего обновления статьи: