RSS FEED

オブジェクト(家具、建築など)のカテゴリー変更

re-categorizing sims3pack files - MTS Forum

MTSのModdingフォーラムで、Sims3Pack形式のオブジェクトのカタログカテゴリー(購入/建築モードのカタログで、オブジェクトがどこのカテゴリーに載っているか)を変更したいというトピックがありました。

返信やリンク先のチュートリアルを見てみると、Sims3Pack形式のオブジェクトだけでなく、もともとゲームにあるオブジェクト(以下、"EA Object"と書きます)やPackage形式のオブジェクトでも似たような方法が使え、知っておくと便利そうですので、ここではその手順を書いておこうと思います。



EA Object編
購入モードの『部屋別のアイテム -> 書斎 -> デスクチェア』または『カテゴリー別のアイテム -> 安らぎ -> 様々な安らぎ』のカテゴリーに、名前に反してデスクチェアに分類されている『健康ダイニングチェア』というイスがあります。

ここでは例として、このイスのカテゴリーを『部屋別のアイテム -> ダイニングルーム -> ダイニングチェア』および『カテゴリー別のアイテム -> 安らぎ -> ダイニングチェア』に変更します。


1. 必要なツール
- s3pe: Package形式などのファイルの中身を編集できるツールです。
- s3oc: 新しいオブジェクトCCを作る際に、その基にするデータとしてEA Objectを複製するツールです。ただしここでは本来の用途ではなく、カテゴリーを変更したいEA Objectが持つOBJDというデータを知るために使います。


2. リソースの判別とエクスポート
各EA Objectがどのカテゴリーに分類されているか、という情報は、
Program Files(x86)\Electronic Arts\ザ・シムズ3\GameData\Shared\Packages\
にある FullBuild0.package に含まれるOBJDというリソースにあります。
ただし、FullBuild0.package にはベースゲームにあるすべてのオブジェクトのOBJDリソースが含まれていますので、まずは『健康ダイニングチェア』のOBJDがどれなのかが分からないといけません。

『健康ダイニングチェア』のOBJDがどれなのか判別するには、s3ocを利用します。

2-1.
s3ocを起動します。初回起動時に表示されるメッセージは、s3ocのオートアップデート機能を有効にするかどうかを聞いてきてますが、この設定は後でも変更できますので、どちらを選択してもかまいません。

2-2.
メニューの "Settings -> Game Folders..." を選択して、インストールされているベースゲーム(BG) / データセット(EP) / スタッフパック(SP)のフォルダーを設定します。
- base: The Sims 3 本体です。日本語版を標準設定でインストールしていれば、以下のフォルダーになるはずです。
Program Files(x86)\Electronic Arts\ザ・シムズ3\
EP/SPのインストール先も同様に設定します。
- ep1: ワールドアドベンチャーズ(WA)
- sp1: ハイエンドロフトパック(HELS)
- ep2: アンビション(AMB)
- sp2: Fast Lane Stuff(FLS)
- ep3: レイトナイト(LN)
- sp3はまだありません。
必須ではありませんがEnabledのチェックを外しておくと、オブジェクトが検索された際に、そのEP/SPのオブジェクトはリストに出てこなくなります。持っていないEP/SPのEnabledのチェックは、外しておくとよいでしょう。
設定が終わったら "Close" ボタンをクリックします。

2-3.
メニューの "Tools -> Search" を選択します。今回は、実際のゲーム中でカタログに表示されるオブジェクトの名前が『健康ダイニングチェア』と分かっていますので、カタログの名前(Catalog Name)で検索します。
"Catalog Name" にチェックを入れ、"All Languages" を選択してから、"Search" ボタンをクリックします。しばらく時間が経つと、"ChairDiningOfficeMission" というOBJDリソースひとつだけが検索結果として表示されるはずです。リソースをクリックすると右側にイスのサムネイル画像などが表示されます。

これで、『健康ダイニングチェア』のリソースネームが "ChairDiningOfficeMission" だということが分かりました。s3ocはもう使いませんので、s3ocを終了します。


3. リソースのエクスポート
『健康ダイニングチェア』のOBJDリソースネームが分かりましたので、次に FullBuild0.package からそのリソースのエクスポートを行います。以降は、s3peを利用します。

3-1.
s3peを管理者権限で起動します(右クリック -> 管理者として実行、など)。管理者権限でないと、FullBuild0.package をロードできないためです。
ウィンドウの下の方に、"Display: Names, Tags" のチェックがありますので、ここにチェックが入っていない場合は、両方にチェックを付けておきます。

3-2.
メニューの "File -> Open..." を選択し、
Program Files(x86)\Electronic Arts\ザ・シムズ3\GameData\Shared\Packages\
にある FullBuild0.package をロードします。
表示されるリストの中から、Nameが "ChairDiningOfficeMission", TagがOBJDとなっているリソースを探します。
リソースが見つかったら、そのリソースを右クリックして"Export -> To file..." を選択し、ファイルとして保存します。ファイル名は、変更せずそのままにします。


4. リソースの編集
目当てのリソースをエクスポートできましたので、今度はこれを編集してカタログのカテゴリーを変更します。

4-1.
メニューの "File -> New" を選択します。
続けて、メニューの "Resource -> Import -> from File..." を選択して、先ほどエクスポートしたOBJDリソースを、今度はインポートします。"Resouce Details" というウィンドウが表示されますので、"OK" ボタンをクリックします。
なお"Use Resource Name" のチェックがありますが、これは入れても入れなくても構いません。(チェックを入れない場合は、リソースネームが空っぽになりますが、動作は特に影響ありません。)

4-2.
OBJDリソースを選択すると、ウィンドウの下の方にある"Grid"ボタンが押せる状態になっていると思いますので、クリックします。
"Data Grid"のウィンドウが出てきますが、この中にオブジェクトのカテゴリーの情報が含まれていますので、該当する箇所を変更します。

- 『部屋別のアイテム』のカテゴリーは、"RoomCategoryFlags"(リビングルーム、書斎など部屋の種別) と "RoomSubCategoryFlags"(本棚、照明器具などオブジェクトの種別) で設定されています。値を見てみると、
"RoomCategoryFlags": [02]Dining と [07]Study がTrue
"RoomSubCategoryFlags": [0F]OfficeChairs がTrue
になっており、部屋の種別では『ダイニングルーム』および『書斎』、オブジェクトの種別では『デスクチェア』に分類されていることが判断できます。『ダイニングルーム -> デスクチェア』というカテゴリーは実際のゲーム中にはありませんので、結果として、『健康ダイニングチェア』は『書斎 -> デスクチェア』のカテゴリーに存在することになります。
今回は、カテゴリーを『ダイニングルーム -> ダイニングチェア』に変更しますので、
"RoomCategoryFlags": [02]DiningがすでにTrueになっていますので、変更する必要はありません。
"RoomSubCategoryFlags": [0E]LivingChairs をFalse -> True, [0F]OfficeChairs をTrue -> False
にそれぞれ変えます。

- 『カテゴリー別のアイテム』のカテゴリーは、"FunctionCategoryFlags"(安らぎ、装飾品など大まかな種別) と "FunctionSubCategoryFlags"(鏡、彫刻品など細かな種別) で設定されています。値を見てみると、
"FunctionCategoryFlags": [0B]Comfort がTrue
"FunctionSubCategoryFlags": [28]ComfortMisc がTrue
になっていますので、『健康ダイニングチェア』は『安らぎ -> 様々な安らぎ』のカテゴリーにあることが判断できます。
今回は、カテゴリーを『安らぎ -> ダイニングチェア』に変更しますので、
"FunctionCategoryFlags": 『安らぎ』のカテゴリーはそのままですので、変更する必要はありません。
"FunctionSubCategoryFlags": [26]ComfortDiningChairs をFalse -> True, [28]ComfortMisc をTrue -> False
にそれぞれ変えます。

"Data Grid"の編集が終わったら、"Commit" ボタンをクリックします。

4-3.
メニューの "File -> Save または Save as..." を選択して、Packageファイルとしてセーブします。

ここでできあがったPackageファイルは、『健康ダイニングチェアのカテゴリーを、デスクチェアからダイニングチェアに変更するMOD』ということになりますので、あとはこのPackageファイルをMODと同様にインストールしてゲームを起動し、カテゴリーがちゃんと変更されているかどうかを確認します。



Sims3Pack編
Sims3Packファイルは、s3peなどで直接編集することはできません。代わりに、以下の2つのうちどちらかの方法をとることになります。


方法A
Sims3PackをPackageに変換して、s3peで編集することでカテゴリーを変更します。Sims3Packファイルはアンインストールし、編集したPackageファイルを代わりにインストールして利用します。

Sims 3 Pack Multi-ExtracterまたはSims3Pack CommandLine Extractorを利用すると、Sims3PackをPackageに変換できます。以降の手順はPackageファイルを編集する場合と同じなので、この投稿の下の方にあるPackage編を見てください。


方法B
Sims3Packファイルをランチャーでインストールすると、そのデータは
(マイ) ドキュメント\Electronic Arts\ザ・シムズ3\DCCache\
の中にあるdbc, ebcファイルに追加されます。
このdbcファイルの中から、カテゴリーを変更したいオブジェクトのOBJDリソースを探し出して、s3peで編集します。

ここでは例として、Around the Sims 3からダウンロードできるワインボトル(ATS3-object-cellar-bottle)を使います。
このオブジェクトは、『部屋別のアイテム -> リビング/ダイニングルーム -> 植物』のカテゴリーにあるんですが、これを『部屋別のアイテム -> ダイニングルーム -> 様々な装飾品』へと変更します。


1. 必要なツール
- Sims 3 Pack Multi-Extracter または Sims3Pack CommandLine Extractor: Sims3PackファイルをPackageファイルに変換するツールです。
- s3pe


2. リソースの判別
インストールしたSims3Packファイルのオブジェクトが、どのカテゴリーに分類されているかという情報は
(マイ) ドキュメント\Electronic Arts\ザ・シムズ3\DCCache\
にある dcdb0.dbc に含まれるOBJDリソースにあります(環境によっては、dbcファイルが複数あることもあるかもしれません。その場合は dcdb0.dbc だけでなくすべてのdbcファイルから探してください)。
ただし、dcdb0.dbc にはインストールしたすべてのSims3PackファイルのOBJDリソースが含まれていますので、まずはワインボトルのOBJDがどれなのかが分からないといけません。

インストールしたSims3Packファイルの数がそれほど多くない場合は、dcdb0.dbcのOBJDリソースをひとつひとつチェックするだけで、目的のリソースが分かることもあると思います。この場合は、2-1, 2-2の作業をスキップしてください。

Sims3Packファイルをたくさんインストールしている場合はこうはいきませんので、まずSims3PackファイルをPackageファイルに変換して、そのPackageファイルをs3pe(s3ocでも可能です)でロードして中身を確認することで、目的のOBJDリソースを事前に調べておくという手を使います。

2-1.
Sims 3 Pack Multi-ExtracterまたはSims3Pack CommandLine Extractorを利用して、ATS3_object_cellar_bottle.Sims3PackをPackageファイルに変換します(元のSims3Packファイルはそのまま残ります)。使い方は各リンク先を見てください。

2-2.
s3peを起動します。
ウィンドウの下の方に、"Display: Names, Tags" のチェックがありますので、ここにチェックが入っていない場合は、両方にチェックを付けておきます。

メニューの "File -> Open..." を選択し、先ほど変換してできあがったATS3_object_cellar_bottle.packageをロードします。表示されるリストの中から、TagがOBJDとなっているリソースを探します。
EA Objectの場合と違い、Nameの列に何も表示されておらず、リソースネームがないことが分かります。リソースネームで目的のOBJDを判別することができませんので、代わりにそれ以外のデータから判断することにします。
Instanceを利用するのがよいでしょう。このワインボトルの場合は、0x2CE2396704029FC5になっているはずです。

2-3.
メニューの "File -> Open..." を選択し、
(マイ) ドキュメント\Electronic Arts\ザ・シムズ3\DCCache\
の中にある dcdb0.dbc をロードして、表示されるリソースの中から目的のOBJDリソースを探します。
2-2の作業を済ませている場合は、TagがOBJDでInstanceが0x2CE2396704029FC5ということがすでに分かっていますので、すぐに見つかります。
直接探す場合は、リソースを選択したときに右側の枠に表示されるName(オブジェクトネーム)などを参考にするといいかもしれません。


3. リソースの編集
dcdb0.dbc の中にあるワインボトルのOBJDリソースが分かったので、編集してカテゴリーを変更します。
ワインボトルのOBJDリソースを選択すると、ウィンドウの下の方にある"Grid"ボタンが押せる状態になっていると思いますので、クリックします。
"Data Grid"のウィンドウが出てきますが、この中にオブジェクトのカテゴリーの情報が含まれていますので、該当する箇所を変更します。

変更のしかたはEA Object編の3-3.と同じです。
このワインボトルの場合、"RoomSubCategoryFlags" を見ると [1F] Plants のみTrueとなっていて、『植物』に分類されていた理由が分かります。今回は『様々な装飾品』へとカテゴリーを変更しますので、[1F] Plants をFalseに、[38] MiscDecor をTrueに変えます。その後、"Commit"ボタンをクリックします。

編集が終わったらメニューの "File -> Save" を選択して上書き保存します。ゲームを起動して、カテゴリーがちゃんと変わっていることを確認します。




Package編
Pacakgeファイルの場合は、s3peでPackageファイルそのものをロードして、OBJDリソースを編集し、"File -> Save" で上書き保存するだけです。編集の要領はEA ObjectやSims3Packの場合と同じです。

ただし、ゲームのロード時間短縮のために、複数のPackageファイルを1つに統合してインストールしている(あるいは予め統合されている)場合などは、OBJDが複数あって編集するべきリソースがどれなのかを見分ける必要があるかもしれません。
見分け方としては、統合前のPackageファイルをs3peでロードして確認したり、あるいはリソースネーム、オブジェクトネームなどから判断するなどがあります。その辺は各自にお任せします。
Return top