4.5 KiB
Trading——商人と取引ウィンドウ
Trading はゲームに店を追加します。店はデータです: 商人が何を売り、何を買い取り、いくらか。開くのはシナリオで、プレイヤーは 2 つのインベントリを持つウィンドウで取引します — 左に商人の品物、右にプレイヤーのかばん。お金は普通のアイテム、金貨です: かばんの中にあり、かばんと一緒にセーブされ、シナリオはほかのアイテムと同じように渡せます。
RPG Plus では村の商人がこうして取引します: 彼に話しかければウィンドウが開きます。
買う
左で品物を選びます。中央にはアイテム、価格、あなたの財布、− と + と すべて の付いた数量スライダー、合計が出ます。買う で取引が成立します:
主人公は 25 枚を持ってきて、エリクサーに 10 枚払ったので、財布には 15 枚残り、エリクサーはかばんの中です。スライダーはお金のあるところまでしか動きません — 今は 1 まで。
売る
かばんでアイテムを選びます。商人が買い取るアイテムには値札が付き、ほかはここでは売れません。すべて は数量を所持数いっぱいにします:
15 + 3 × 4 = 27 枚。Esc か × でウィンドウを閉じます。
商人の在庫は減らず、売ったものが店に戻ることもありません: 店には自分の状態がなく、変わるのはあなたのかばんだけです。
データとしての店
店は shop 種類のエンティティで、mod の shops/ フォルダに入ります。村の商人を RPG Demo はこう定義します:
{
"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— プレイヤーが買えるもの。この順で、1 個の値段付き。Buys— 商人がお金を払うもの。それ以外は拒否します。Currency(省略可)— お金のアイテム。既定はこの mod の金貨money/coin。- 1 未満の値段は無視されます: 無料のアイテムは贈り物で、贈り物はシナリオの仕事です。
RPG Plus は、RPG Demo のファイルを触らずに、自分の patches/shop.json のパッチで同じ商人に装備と品物を追加します:
{ "Items": [ { "Id": "rpg_demo/village_merchant",
"Sells$add": [ { "Item": "classic/iron_sword", "Price": 30 } ],
"Buys$add": [ { "Item": "rpg_plus/wolf_pelt", "Price": 4 } ] } ] }
店を開く
text "おや、お客さんだ! エリクサーは新鮮、沈殿もほとんどなし。" key=rpg_demo/merchant/line1
action trade.open shop=rpg_demo/village_merchant
end
商人のマップイベントがこのシナリオを実行します。どんなシナリオでも同じ方法で店を開けられます — ダイアログの選択肢からでも、インタラクティブなオブジェクトのクリックからでも。
うまくいかないとき
- かばんのアイテムが売れない。 店の
Buysにありません。 - 買うが何もしない。 1 個も買えるお金がありません。ウィンドウがそう言ってくれます。
- ウィンドウが開かない。
shop=の id がどの店のIdとも一致しません。ログが名前を挙げます。


