2016年12月30日金曜日

[Modding]xml解析:treasuretable


本稿ではMOD作成の前提として、xmlに書かれた情報を解析していきます。

今回はあらゆるアイテムの生成について設定しているtreasuretableテーブルです。
MOD作成時には必ずと言っていいほど手を付ける場所なので、しっかり把握しておきましょう。

※多分にネタバレを含みます。ご注意ください。




サンプルデータ

データの参照元はtreasuretable.xmlです。
今回はwhiskeyのボトルとその中身を生成するテーブルがサンプルです。
<table name="treasuretable">
    <column name="id">227</column>
    <column name="strName">whiskey</column>
    <column name="aTreasures">11.2x1.0x1-1,98.8x1x6-12</column>
    <column name="bNested">1</column>
    <column name="bSuppress">1</column>
    <column name="bIdentify">0</column>
</table>

column解析

strNameはテーブル名です。ゲーム中には反映されません。

aTreasuresは、そのテーブルで生成するアイテムです。
生成するアイテムはAxBxCの形で設定され、
A"itemtypes"テーブルのnGroupIDnSubgroupIDの組
もしくは"treasuretable"テーブルのid

Bアイテムの生成確率1.0=100%

Cアイテムの生成数最小値-最大値
と言う風に設定できるようです。

生成アイテムは複数個設定が可能で、
区切りには","を使用します。

bNested"1"を設定していると、
そのテーブル内で生成されるcontainerの中に、
他の生成物をできるだけ格納するようになります。

今回のサンプルでは、whiskeyのボトルに
whiskeyが詰まった状態で生成されることになります。


bSuppress"1"を設定していると、
生成時に"itemtypes"テーブルのnTreasureIDで中身が設定されるアイテム、
サンプルで言えばwhiskeyのボトルのようなものがあった場合、
その中身を生成せずにcontainerだけを生成します

containerの中身を変更、もしくは固定したい場合に使う設定です。


bIdentify"1"を設定していると、
生成物はすべて鑑定済みになります。(水やベリーなど)

店で販売される商品や、未開封(という設定)のものに使われます。


アイテムやレシピなどを生成する際、
treasuretableテーブルは必ず関係してくる要素です。

特にbNested,bSuppress,bIdentifyの扱いに慣れておくと
アイテム生成時の細かい表現に活用できます。
少なくとも、設定項目の意味だけでも覚えておきましょう。



0 件のコメント:

コメントを投稿