Files
mod_trading/docs/zh.md
T

77 lines
3.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` 类型的实体,放在 mod 的 `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`,本 mod 的金币。
- 低于 1 的价格会被忽略:免费的物品是礼物,而礼物属于剧本。
RPG Plus 用自己 `patches/shop.json` 里的补丁,把它的装备和货物加到同一个商人身上,不去动 RPG Demo 的文件:
```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. **窗口打不开。** `shop=` 的 id 和任何商店的 `Id` 都对不上;日志里会写明。