※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。


Trader(商人)の設定




使うファイル

SoC
gamedata\config\misc\
trade_XXX.ltx
gulag_XXX.ltx
gamedata\config\gameplay
character_desc_XXX.xml
gamedata\config\creatures\
m_stalker.ltx
※"XXX"の部分は任意。Cordon関係なら全部escapeになってる物を引っ張ればOK。

CS/CoP
保留。だいたい同じだと思う。

Trader設定のテンプレート

今回は、単純にSidの親父の取扱商品を弄る…なんて単純なことは、先達がさんざんやってる事なので、ちょっとひねって既存のNPCにTraderやらせてみようか、という趣旨。
というより、Dialogを作成するで設定したNimbleさんをTrader化しようとしているので、こっちもちゃんと設定して1つのテストケースとして完成させていきたいということで。

というわけで、まずはお手本として、SidのTrader設定(trade_trader.ltx)。
trade_trader.ltx抜粋
  [trader]
  buy_condition = trader_generic_buy
  sell_condition = {+esc_kill_bandits_quest_done}trader_after_fabric_sell, trader_start_sell
  buy_supplies = {+esc_kill_bandits_quest_done} supplies_after_fabric, supplies_start

ここで設定しているのは、Traderとしての売買価格、および商品の在庫設定がどこに設定されているか、ということ。
buy_conditionが買取価格sell_conditionが商品の売値buy_suppliesが入荷する商品の在庫設定
そして、下2つに関しては、","で区切られた設定が2つある、ということに注目。
要は、esc_kill_bandits_quest_doneという条件を満たしてたら、trader_after_fabric_sellなりsupplies_after_fabricなりで商売しちゃうぞ★ということ。

ちなみに、esc_kill_bandits_quest_doneは、Dialogを作成するにチラっと出てきたinfoのIDのようなので、自分で弄るときもそのように制御してやると宜しいんではないかと。

Traderの買取価格設定

次はtrader_generic_buyの中身。
trade_trader.ltx抜粋-[trader_generic_buy]
  [trader_generic_buy]
  af_medusa				= 1,	0.3
  af_cristall_flower		= 1,	0.3
  …中略…
  ammo_9x18_fmj				= 0.9,	0.1
  ammo_9x18_pmm				= 0.9,	0.1
  …中略…
  bandage					= 1,	0.5
  medkit					= 1,	0.5
  …中略…
  mutant_flesh_eye		;NO TRADE
  mutant_boar_leg			;NO TRADE
  mutant_dog_tail			;NO TRADE
  …以下略…
というわけで、4種類の(買取)値段設定を抜粋。ホントは全itemに対して書かれてるけど、特に載せる必要も無いので略。
では1つ目。
af_medusa(Jerryfish)に関しては" 1, 0.3"で買っちゃうよと言っている。
実際幾らなのか分かりづらいけど、計算には以下の式を使う。
(1つ目の数値+2つ目の数値)/2=実際のcostに対する買い取り価格の割合
要は、(1+0.3)/2=0.65、つまり、 定価の65% で買い取っちゃうぞ、ということ。

これを他の値にも適用すると、
ammo_9x18_fmj(9x18通常弾)は0.5(50%)、bandage(包帯)は0.75(75%)で買い取ってくれる。
意外とこういう調整が入ってて、Traderごとに高く買い取ってくれる商品があったりするのもプレイしてるうちに気づいた人もいるんじゃないかと。

ちなみに、最後の3つ、これはミュータントの目玉やら尻尾やらのカテゴリで、数値の設定がされてない。
ご丁寧にコメントで";NO TRADE"と書いてくれている。
要するに、 数値の設定が無いアイテムは売れないアイテム 、ということ。
ちなみに、trade_ecolog.ltx(教授の買取設定)ならこの辺のアイテムも"1.5 1"。定価の25%増しで買っちゃいます。

Traderの販売価格設定

続いてtrader_after_fabric_sellの中身。
trade_trader.ltx抜粋-[trader_after_fabric_sell]
  af_medusa				;NO TRADE
  af_cristall_flower		;NO TRADE
  …中略…
  ammo_9x18_fmj				= 1, 3
  ammo_9x18_pmm				= 1, 3
  …中略…
  novice_outfit			= 1, 3
  bandit_outfit			= 2, 4
  killer_outfit			= 3, 5
  …以下略…
今回もいくつか例を提示してみたが、基本の判定は同じ。
(1つ目の数値+2つ目の数値)/2=実際のcostに対する売値の割合
要するに、ammo_9x18_fmjなら(1+3)/2=2。定価の倍が実際の売値。
Leather Suitは2倍、Bandit Suitは3倍、Merc Suitだと4倍のきっつい商売。

スーツ関係高いなーと思ったらこんだけむしり取ってくれてやがったわけです。
勿論その辺でホイホイ手に入るもんじゃないので高くて当然ですが。
NO_TRADEは勿論売らない設定。買取はしても店頭には並ばないよ、って感じで。


Traderの商品在庫設定

さて、最後は[supplies_after_fabric]。
trade_trader.ltx抜粋-[supplies_after_fabric]
  ammo_9x18_fmj			= 10,	0.6
  ammo_9x18_pmm			= 10,	0.5
  ammo_12x70_buck			= 10,	0.5
  …中略…
  novice_outfit			= 3,	0.8
  bandit_outfit			= 2,	0.6
  killer_outfit			= 2,	0.5
  …中略…
  bandage					= 5,	0.6
  medkit					= 5,	0.3
  antirad					= 5,	0.5
  …以下略…
今回は足して2で割ったってどうにもなりません。
1つ目の数値が入荷数 。ただし、それぞれについて 入荷するかしないか判定するのが2つ目の数値
つまり、9x18通常弾は10パック入荷する可能性があるけど、1パックごとに0.6、つまり60%の確率で入荷するかどうか判定している。
運がよければ10パック入ることもあれば、1パックも無くて残念!ってのも十分にありうる…というわけ。

こうやって見ると、Medkitはなかなか入荷しない設定になってるのが心憎い演出に見えてくる。
勿論、2つ目の数値を1にすれば、在庫めいっぱいまで揃えてくれる。

Traderを新たに作る

前提のところが終わったので、ここからが今回のキモ。
Nimbleさんに商品扱わせてみようぜ!の巻。

用意するのはオリジナルのtrade_nimble.ltx。
中身はまぁ、他の物を流用した上でちょいちょいと変更する程度で結構です。
買い取り価格とか販売価格とか、自分の好きなようにやっちゃって問題ないと思われます。

で、今回はNimbleさんに今用意したTrade商品設定を読み込ませないといけないので、
gulag_escape.ltx を開く。
ここでちょっと混乱するのが、"nimble"で検索しても何も出て来ない。
ここは、"shustryi"…おそらくロシア語の読み?で設定されてるのでここを探していじくること。
  [logic@esc_lager_shustryi]
  active = camper@esc_lager_prisoner
  combat_ignore = combat_ignore
  trade = misc\trade_nimble.ltx
active=とcombat_ignoreは元からあった2行なので、下にtrade=の1文をくっつけた、というところ。
たぶん、 logic@なんちゃら~が設定されてる箇所 につければ、他のNPCでも適用可能。

これでトレードしたときの商品なんかがバッチリ変わっているはず。
さらに!ここで忘れちゃいけないのがもう1つ。
せっかくTraderやってるので、ちゃんとお金持たせてやんないといけません。
character_desc_escape.xml のesc_shustryiの項を見てみると、
  <money min="200" max="600" infinitive="0"/>
Nimbleさんがあまりにも貧乏すぎてお話にならない。金持ってても600RU。Medkit2つも買えば文無しです。
で、これを、
  <money min="100000" max="100000" infinitive="1"/>
に変更してやると、Sidの親父と同じ、幾ら売っても買っても持ち金が"-"の超Traderに変身します。
まぁ、これは一例なので、後の調整で何とかするということで。

NPC-Traderの罠!

しかし、この状態で銃なんかを売りつけると…
Nimbleさんはイラネとばかりに銃を投げ捨てます。
この現象を無くす方法を探すこと数時間…

結論から言うと、 config\creatures\m_stalker.ltx の中にある、
  can_select_items
  use_single_item_rule
↑の2つのパラメータを設定してやればいいっぽい。
一般Stalkerは両方on、Traderは両方offですが、情報元のForumによると、
  can_select_items = on
  use_single_item_rule = off
でOK、とのこと。

この2つ、詳細な情報が無かったけれど、複数の銃を持ったときにその使い分けをするかどうか…的なフラグのようです。
use_single_item_ruleは、銃がダブったら要らない方捨てる?ってことでしょうか。
持ってない銃を売ったときにどうなるかは未検証。
ただ、一般NPCに銃を売るための改造ポイントとして、この2つはこういう設定にしてやれという話。

ただ、出来ればNimbleさん個人のパラメータを弄りたい・・・のだけれど、
AMKNSあたりでもみんなoffにしちゃってるようなので、とりあえずは問題ないのかもしれない。

また、同ファイルのOFFLINE ALIFEの項目、
  max_item_mass
  inv_max_weight
↑の2つの項目が、Stalkerが持てる荷物の重量の最大値を設定してるらしい。
先のForumでも、この2つ10000にしとけ、的な話になってるけど、
要するに、一気に手持ちの銃をガンガン売りつけてNPCの荷物が設定値(初期設定で1000kg)を超えると、やっぱりNPCは荷物を地面に投げ捨ててしまうらしい。
なので、
  max_item_mass = 10000.0
  inv_max_weight = 10000.0
にしといて損は無いでしょう。たぶん。

出来上がったものが

こちらになります。クリックで別窓。
  • 普段売れない銃やスーツが売れる
  • 商品に設定したMedkit/Bandage/食料類が並んでいる
  • 売却価格を設定したPMMが商品として並んでいる(元はまーくんが売っぱらった物)
くらいが見るポイントでしょうか。あとちゃんと金が増えてます。
http://www43.atwiki.jp/stalker_modder/pub/nimble_the_trader/make_nimble_trader.jpg