top / 1 / 2 / 3 / 4 / ex1 / 5 / 6 / ex2 / 7 / 8 / 9 / 10 / 11 / ex3 / 12 / 13 / 14 /..../ 関数 / 覚え書き / 倉庫
第6回 【 作ったアイテムをゲーム内に登場させる 】

前回の最後で書きましたが、アイテムは追加しただけではゲーム内に登場してくれません。どうにかして手に入れる手段を追加しなければならないのです。
で、取りあえず、お店で売ってもらえるようにするか、クエストの報酬でもらえるようにするのが一番簡単な修正だと思います。
スタート時点で持っているのが理想ですが、今の段階ではちょっと面倒なので、それはもう少し後に説明しますね。


まずはお店で取引できる商品の変更です。
フォルダ「gamedata/config/misc」内のファイル「trade_trader.ltx」を修正すれば最初のお店(シドロビッチ)の内容は変更できます。
ちなみに、お店ごとにファイルが違っていて、以下のように対応してます。修正の仕方は同じ。

trade_barman.ltx:バーの親父
trade_dolg.ltx:Dutyの武器屋
trade_freedom.ltx:Freedomの武器屋
trade_ecolog.ltx:Yantar研究所


構成はこんな感じになります。
必要に応じて各お店のファイルも追加してください。

□groza_sp_in_shop ┣□gamedata ┃┗□config ┃ ┗□misc ┃  ┗■trade_trader.ltx ┗■readme.txt

取りあえず「trade_trader.ltx」を例に説明しますね。
このファイルを開くと、カテゴリ名となにやらアイテムIDらしい羅列が見えますね。
手を加えるのは7行目の [trader_generic_buy] 以降ですが、その前に構成を説明しましょう。

7行目以降、まず最初に見えるのがこのカテゴリ名ですね。

[trader_generic_buy]

ここにアイテム名と何やら数値が設定されており、おや、結構多いですね。ずっと下に行くと・・・。

221行目らへんにこんなのがあります。

[supplies_start]

同じ調子でカテゴリだけを拾い集めていくと、全部でこんな感じになるはずですね。

[trader_generic_buy]
[supplies_start]
[supplies_after_fabric]
[trader_start_sell]
[trader_after_fabric_sell]


全部で5つのカテゴリに分かれている事が判ります。
このカテゴリの数はお店によって異なっていますが、分類すると全部で3種類にしかなりません。

[店の名前_generic_buy]
[supplies_タイミング]
[店の名前_タイミング_sell]


店の名前はファイル名と同じ法則で、こんなんです。

trader:シドロビッチ
barman:バーの親父
dolg:Dutyの武器屋
freedom:Freedomの武器屋
ecolog:Yantar研究所


タイミングには色々あるようですが、要するにゲーム内で大きな節目になるイベントを通過する毎に店の内容が変化していくわけですね。

[supplies_start]

これはゲーム開始時点から販売していると言う意味です。

[supplies_after_fabric]

これはチュートリアルが終わった後のお店の品揃えと言う意味ですね。
fabric=下地、つまりゲームを進める上での下地が終わった後、と言う意味です。
このタイミングの名前はかなりアバウトですが、ゲームを進めた人には「ははーん、あのイベントの事だな」程度に判るような名前にはなっています。

意味的には、

[店の名前_generic_buy]

これはそのお店で買い取ってもらえるものの一覧表です。
数値が色々あるようですが、買い取って欲しいアイテムには「=1,3」と設定すれば良いようです。
これを見ると、シドロビッチは殆ど全てのアイテムを買い取ってくれますが、ミュータントの身体の一部やクエストアイテムは買い取ってくれない事が判ります。

[supplies_タイミング]

これは、このタイミングから売り出されるアイテム一覧です。
数値の意味は最初の数値が在庫数、2番目の数値が売ってくれる確率です。
ゲーム開始直後を見ると、

wpn_groza_m1 = 1, 0.1

こんなのが見えますね。
これは10%(0.1)の確率でお店に並ぶと言う事です。セーブ&ロードする事でお店はリセットされるので、こう言ったものが欲しいならば何度もロードを繰り返すのも手ですね。
良く見ると、[supplies_after_fabric] の後にはgrozaカスタムは売ってもらえません。
ゲーム開始直後、チュートリアルが終わる前までにお金を貯める事ができれば、grozaカスタムを売ってもらえると言うちょっと憎い仕様になっているわけですね。

最後に、

[店の名前_タイミング_sell]

これは [supplies_タイミング] と似ていますが、在庫や販売確率ではなく、「扱うか/扱わないか」の設定になっている模様です。
例え [supplies_タイミング] で設定しても、こちらのカテゴリが設定されていなければ、決して売ってもらえないと言うわけです。


さて、お店の構成は理解できたでしょうか?
では、早速前回作ったgrozaカスタムならぬgrozaスペシャルを販売してもらうとしましょう。
修正は全部で5箇所。一つ一つ探すと面倒くさいです。カテゴリで使われているカッコ記号“[”で検索すると修正箇所の近くに飛んでくれるので活用すると便利です。
まず、カテゴリ [trader_generic_buy] および [trader_start_sell] 、そして [trader_after_fabric_sell] 、それぞれのカテゴリの最後にこの二行を追加します。
コメントを入れる最大の理由は検索をしやすくするためです。オイラの場合、今後「Nyagicha」で検索すれば、修正するべき場所を速やかに見つけられると言うわけです。

;Groza-SP MOD Added by Nyagicha
wpn_groza_special = 1, 3


未確認ですが、設定値は恐らく「1, 1」でも良いと思います。
安定動作が保証されている「Trader MOD」の内容がこうなっていたので、取りあえず習って「1, 3」にしている次第です。何でなんでしょうね?
追加したアイテムでなく、既存のアイテムを売買してもらいたい場合は、該当アイテムIDのコメントで「NO TRADE」と書いてある部分を「1,3」に変更すれば良いです。

次に、カテゴリ [supplies_start] および [supplies_after_fabric] の最後にこの二行を追加します。

;Groza-SP MOD Added by Nyagicha
wpn_groza_special = 1, 3


あ、良く見たら上のと同じですね。ま、いいか。
これも「1,1」と設定すれば100%売ってもらえるはずですが、やはり「Trader MOD」に習い、この数値を入れるようにしてます。
ちなみに最初の在庫の数値はもちろん置いて欲しい数を設定します。
武器なんか大量に売ってても意味無いけど、弾薬など消耗品は30とか100とかに設定しなければ一つしか買えずに寂しい思いをする事になります。

お店の設定はこれで完了です。
これでゲームを始めればすぐにでも作ったアイテムを買えるはずですが、その前に別の入手手段についても説明したいと思います。
一刻も速く自作武器を確認したくてウズウズしてる方はどうぞ試してきてください。
このブログは逃げないと思うので。
取りあえずここまでの構成を書きましょう。

□groza_sp_in_shop ┣□gamedata ┃┗□config ┃ ┗□misc ┃  ┗■trade_trader.ltx ┗■readme.txt

前回の武器追加MODに直接組み込んじゃうのもアリだと思います。

□groza_sp ┣□gamedata ┃┗□config ┃ ┣□misc ┃ ┃┣■unique_item.ltx ┃ ┃┗■trade_trader.ltx ┃ ┗□text ┃  ┗□eng ┃   ┗■string_table_enc_weapons.xml ┗■readme.txt


クエストの報酬データを改造して、目的のアイテムをもらえるように変えることも出来ます。
しかし、どうやらメインクエストに関しては単純な設定で行えるものではないようなので、メインクエストとは関係ない、サブクエストの報酬と言う事になります。
弄る箇所は、フォルダ「gamedata/config/misc」内のファイル「task_manager.ltx」です。
一番最初に受けられるようになるクエストを例に説明しましょう。

Nimbleを助けて帰って来た時、WolfにFort12-Mk2を貰った後、イノシシ退治のクエストを持ちかけられます。
その報酬として弾丸をもらえるように改造してみましょう。

「task_manager.ltx」の中を一通り見てみると、何やらクエストの名前っぽいものが羅列してありますね。

依頼主_eliminate_camp_番号

とか、

依頼主_kill_stalker_番号

とか、こんな感じ。
まあ見れば何となく想像がつくとは思うけど、「eliminate_camp」が殲滅系、「kill_stalker」が暗殺系とか、そんなノリです。
で、とりあえずWolfで検索かけると、ありました。

wolf_eliminate_lager_1

これがイノシシ退治。
1797行目らへんに内容が書かれています。
スクロールするのもかったるいので「Wolf」とかで検索かけてちゃちゃっと探しちゃいましょう。
1809行目らへんにこんなのがありますね。

reward_item = af_vyvert

これが報酬。追加する場合はカンマ区切りで連続で記述します。
今回は作った武器で使える弾丸をいっぱいもらえるようにします。
せっかくなので、特殊弾の方にしましょう。弾丸は種類にもよるけど、今回扱うものは1箱30発入り。1個追加すると30発もらえる事になります。
とりあえず300発くらいドバッと貰える様に設定しましょう。

reward_item = af_vyvert, ammo_5.45x39_ap, ammo_5.45x39_ap, ammo_5.45x39_ap, ammo_5.45x39_ap, ammo_5.45x39_ap, ammo_5.45x39_ap, ammo_5.45x39_ap, ammo_5.45x39_ap, ammo_5.45x39_ap, ammo_5.45x39_ap

これだけでOK。
後は、好きなクエストに好きなアイテムIDをぶち込むだけで、報酬としてもらえるようになります。
「reward_item」の項目が無く、金しかもらえないようなクエストもありますが、普通に項目ごと追加してやれば、ちゃんともらえます。


これも構成を書いときます。

□groza_sp_in_quest ┣□gamedata ┃┗□config ┃ ┗□misc ┃  ┗■task_manager.ltx ┗■readme.txt

ここまでのを全部あわせると、こうなります。
中々いいかんじにまとまってきましたね。

□groza_sp ┣□gamedata ┃┗□config ┃ ┣□misc ┃ ┃┣■unique_item.ltx ┃ ┃┗■trade_trader.ltx ┃ ┃┗■task_manager.ltx ┃ ┗□text ┃  ┗□eng ┃   ┗■string_table_enc_weapons.xml ┗■readme.txt


これだけ多くの改造を施すと、エラーもポロポロ発生してるのではないでしょうか?
この辺りで考えられる現象としては、

@報酬を受け取ろうとしたら突然クラッシュする。
Aシドロビッチが無言でニヤニヤ笑ってる。


こんなところでしょうか。
@に関しては存在しないアイテムを報酬に設定したと言うところではないでしょうか?
Aに関しては、同じく存在しないアイテムを店に並べようとした際に出る現象です。
もう一度この辺のファイルの修正箇所を穴の開くほど見直してみましょう。
この時にコメントを書いておくと楽になったりするわけですね。

さて次は何をやりましょうか。
ちょっと長いの連発して疲れたんで、次回は息抜きがてら痛銃の造り方でもやる事にしましょう。


今回作ったもの:
groza_sp_on_shop.zip (店のみ)
bullet_on_quest_reward.zip (クエストのみ)
groza_sp_ready.zip (全部入り)



top / 1 / 2 / 3 / 4 / ex1 / 5 / 6 / ex2 / 7 / 8 / 9 / 10 / 11 / ex3 / 12 / 13 / 14 /..../ 関数 / 覚え書き / 倉庫
ニャギ茶★SPOT --工作部屋--