プログラミング・動画編集 備忘録

プログラミングや動画編集についての備忘録です

Skyrim Mod 製作日記 - 17 - すべてのマップマーカーを編集する

前回から続いているModの作成途中ですが、esp/esmファイルの読込をより完全に出来るようにしました。
といってもまだ全然完全ではないですが。

以前に、Discovered Map MarkerというModを作成しました。
これは、ゲームスタート時に各要塞へ行けるようにマップマーカーのフラグをファストトラベル可能にしただけのものでした。
この際、できれば各大立石へもファストトラベル可能としたかったのですが、CKでどのように探せば良いのかわからず、放置していました。

今回の目的は、MapMarker(0x00000010)を参照しているすべての項目を抜き出して出力し、FormIDを知ることです。
それには、Skyrim.esmを読込み、Worldspaceのデータをすべて適切に解析しなければなりません。
他の項目は基本的に単純なのですが、CellとWorldspaceは癖があります。

※今回で大体必要な解析ができたので、Skyrimのesm/espファイルのバイナリ解析については別途記事にする予定です。

ともかくも、Worldspaceの読込が適切に読込めるようになったので、MapMarkerを参照しているものをすべて抜き出しました。
本来なら、そのデータをコピーして出力すればよいのですが、一部仕組みが分からない点があったため、FormIDを出力して、後はSSEEditで対象をコピーするようにしました。(SSEEditは本当すごいですね)

結果、次のようになりました。

全てのマップマーカーのリスト

FormIDが判明したので、そのまま player.moveto {FromID} としてテレポートもできます。

リストが長いので次の場所へ移しました。
rrryutaro.hatenadiary.com

ファストトラベル可能にする

さて、ファストトラベル可能にするには、"FNAM"(Map Flags)の値を Visible:(1) + Can Travel To (2) = 3 にする必要があります。
SSEEditでコピーして作ったespファイルを読込み、FNAMの値を3に変更して保存します。

実行してみたところ次のように、マップマーカーが表示されました。
実際に全て表示されているか確認してみた所、表示されていないマーカーがありました。

表示されていないマーカーについて、player.moveto {FormID} でテレポートしてみた所、発見される場合と、そうでないマーカーがあります。
基本的にはクエストと紐づいているであろうマーカーは表示されないようです。
特に内戦系は、帝国軍かストームクロークかの野営地のいずれかになる場所は表示されません。
また、ドワーフの遺跡のエレベータの入り口や一部の難破船などもマーカー表示にならないようです。
その他、セーブデータ上で、未発見でマーカーが表示されているものは、ファストトラベル可能な状態に書き換わらないようです。

調べた限りでは、全436箇所中、369箇所が有効でした。

PC版について

コンソールコマンドで tmm 1 とすれば、すべてのマーカーが有効になります。

※当初なぜか表示されるだけで、ファストトラベルできないものと勘違いしていました・・・
※折角なのでPC版も公開しようとNexusに登録したところ、コメントをもらい、確かめたところ表示されました
※う~ん。前に試したときに、ファストトラベルできなかったと気がするのですが、勘違いなのでしょう。

Skyrim SE:http://skyrimspecialedition.2game.info/detail.php?id=9186
Skyrim LE:http://skyrim.2game.info/detail.php?id=83030


以上