Files
mod_trading/docs/ru.md
T

77 lines
5.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Trading — торговцы и окно торговли
Trading добавляет в игру лавки. Лавка — это данные: что торговец продаёт, что скупает и по каким ценам. Открывает её сценарий, а торгуется игрок в окне с двумя инвентарями: слева товары торговца, справа сумка игрока. Деньги — обычный предмет, золотая монета: она лежит в сумке, сохраняется вместе с ней и выдаётся сценарием как любой другой предмет.
В RPG Plus так торгует деревенский торговец: поговорите с ним — окно откроется.
## Покупка
Выберите товар слева. В середине показаны предмет, его цена, ваш кошелёк, ползунок количества с кнопками **−**, **+** и **Все**, а также итог. **Купить** завершает сделку:
![Окно "Merchant's shop": слева товары торговца с ценниками (эликсир 10 c, железный меч 30 c, кинжал 18 c, посох 24 c, кожаный доспех 20 c, мантия 16 c, серебряное кольцо 22 c, тоник силы 40 c, смола 4 c, гриб 3 c, ветки 2 c), в середине выбран эликсир (price 10, wallet 15, quantity 1/1, Total: 10 coins, Buy) и сообщение "Bought: Elixir ×1 for 10 coins", справа — сумка с тремя волчьими шкурами и эликсиром; кошелёк справа вверху показывает 15.](assets/trade-buy.jpg)
Герой пришёл с 25 монетами; эликсир стоил 10, поэтому в кошельке 15, а эликсир лежит в сумке. Ползунок поднимается только на те деньги, что есть, — сейчас это 1.
## Продажа
Выберите предмет в своей сумке. На предметах, которые торговец скупает, стоит ценник; остальные здесь продать нельзя. Кнопка **Все** ставит количество на всё, что у вас есть:
![Из сумки выбрана Silver wolf fur: Yours, price 4, you have 3, quantity 3/3, Total: 12 coins, Sell.](assets/trade-sell.jpg)
![После продажи: "Sold: Silver wolf fur ×3 for 12 coins", в сумке остался только эликсир, кошелёк показывает 27.](assets/trade-sold.jpg)
15 + 3 × 4 = **27** монет. Окно закрывают Esc или крестик.
Товар у торговца не кончается, а проданное обратно не предлагается: у лавки нет собственного состояния, меняется только ваша сумка.
## Лавка в данных
Лавки — это сущности вида `shop`, лежат в папке `shops/` мода. Деревенский торговец в том виде, как его определяет RPG Demo:
```json
{
"Kind": "shop",
"Items": [
{
"Id": "rpg_demo/village_merchant",
"Name": "rpg_demo/shop/village_merchant",
"Sells": [ { "Item": "rpg_demo/elixir", "Price": 10 } ],
"Buys": [
{ "Item": "rpg_demo/branches", "Price": 1 },
{ "Item": "rpg_demo/stones", "Price": 2 }
]
}
]
}
```
- `Name` — ключ перевода заголовка окна.
- `Sells` — что может купить игрок, в этом порядке, по цене за штуку.
- `Buys` — за что торговец платит; всё остальное он брать отказывается.
- `Currency` (необязательно) — денежный предмет; по умолчанию это `money/coin`, золотая монета этого мода.
- Цена ниже 1 игнорируется: бесплатный предмет — это подарок, а подарки — дело сценария.
RPG Plus добавляет свою экипировку и товары тому же торговцу, не трогая файл RPG Demo, — патчем в собственном `patches/shop.json`:
```json
{ "Items": [ { "Id": "rpg_demo/village_merchant",
"Sells$add": [ { "Item": "classic/iron_sword", "Price": 30 } ],
"Buys$add": [ { "Item": "rpg_plus/wolf_pelt", "Price": 4 } ] } ] }
```
## Открытие лавки
```scenario
text "— О, покупатель! Эликсиры — свежие, почти без осадка." key=rpg_demo/merchant/line1
action trade.open shop=rpg_demo/village_merchant
end
```
Это событие торговца на карте запускает такой сценарий. Любой сценарий может открыть лавку так же — ответ в диалоге, щелчок по интерактивному объекту.
## Если что-то пошло не так
1. **Предмет из сумки не продаётся.** Его нет в `Buys` лавки.
2. **«Купить» ничего не делает.** Не хватает монет даже на одну штуку — окно так и пишет.
3. **Окно не открывается.** id в `shop=` не совпадает с `Id` ни одной лавки; лог назовёт её.