Как добавить монеты к предмету в Травнице

«Травница» (англ. Herbalist) – игра‑симулятор, в которой игроки собирают ресурсы, варят зелья и торгуют с NPC.
Одним из самых частых вопросов новичков является: как добавить монеты к предмету, чтобы его можно было продать? В этой статье мы разберём все детали процесса, покажем готовый пример кода и дадим полезные рекомендации.


Содержание

  1. Основы торговли в «Травнице»
  2. Функция add_to_items
  3. Параметр sell_price
  4. Пример: добавляем монеты к тыкве на Хэллоуин
  5. Полезные советы и типичные ошибки
  6. 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" -- (опционально) событие при получении
)

Что происходит после загрузки мода:

  1. Игра регистрирует новый вариант тыквы, связанный с квестом helloween.
  2. При попытке продать тыкву NPC заплатит игроку ровно 8 монет.
  3. Если вы хотите, чтобы при получении тыквы срабатывало событие (например, открыть диалог), укажите 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?

Проверьте следующее:

  1. Правильно ли указан item_id (без опечаток).
  2. Не переопределяется ли ваш предмет позже в другом файле мода.
  3. Запущена ли игра с включённым модом (в меню «Mods» поставьте галочку).

Вопрос: Как добавить монеты к уже существующим предметам без создания новых ID?

Можно использовать функцию modify_item (если она доступна в вашей версии):

modify_item(
 PUMPKIN_MOD_PUMPKIN_CUT,
 sell_price = 12 -- меняем цену на 12 монет
)

Вопрос: Можно ли задать sell_price = None и одновременно указать pick_label?

Да, такие параметры совместимы. Предмет будет недоступен для продажи, но при получении сработает указанное событие.


Дата последнего обновления статьи: