前の記事からの続きです。アドレスが最小単位であることの具体例と、ロードオーダーの秘密に迫ります。アドレスとロードオーダーの話は、分ってしまえば非常に簡単なことなのですが、反面、これが分らないと何も出来ないとも言える、大事なところです。
また、文字が潰れないように、TES5Editのちょっと大きめの画像貼り付けてあります。150kくらいです1枚。SSの文字潰さずに綺麗に縮小できないですかね。
前回の記事はこちら
アドレス上位2桁の「xx」の秘密
先ほどまではSkyrim.esmだけで見てきましたが、今度はSteel2.espというMODも一緒に開いてみます。上のSSのように、アドレス(Form ID)00013952にあるSteelArmorを変更しています。
ちなみにTES5Editはバックカラーと文字カラーの変わり方に意味があって、これでよくない競合とかをすぐに見つけることが出来ます。バックが黄色、文字が濃い緑の場合は、単独の上書き競合です(カーソル合わさってるんで緑っぽくなってますが、黄色です)。ほとんどの場合、意図的に書き換えているだろうことを意味しています。(間違えて書き換えていた場合は、まずいです。発見次第消します。)
右側の窓を見ると、ロードオーダー[01]のSteel2.espが、[00]のSkyrim.esmのSteelArmorを書き換えていることが判ります。右側の窓で、バックが黄色になっている箇所が、変更されているエントリーです。次の4点が変更されていることが読み取れます。
- ArmorTypeがHevyからLight
- 価格が275から1000
- 重量が35から10
- 防御力が31から50
見た目はSteelArmorだけど、軽装で値段高くなって軽くなって防御力上がった、というチートです。ただし、Skyrim.esmに元々あるSteelArmorを書き換えているので、自分のキャラだけでなく、全世界に存在するSteelArmorが、全て等しく強くなります。
左の窓を見てください。Steel2.espにある変更箇所、00013952の下にもう1つありますよね?今度はこれを見てみます。
上のSSでカーソル合わさって薄い青になっている所です。本来はバック白で文字黒です。これは上書きの無い単独のページであることを意味しています。つまり、付箋紙上書きではなくて、新規追加です。右側の窓を見るとわかりますが、これもSteelArmorです。中身は、いまさっき書き換えたSteelArmorの4点の変更と同じです。
同じもの2つあってどうするの?といいますと。防具の性能としては全く同じ物なのですが、こちらは新規追加なので、全世界に元々あるSteelArmorとは無関係な、全く新しいSteelArmorです。つまり、元々の00013952のSteelArmorは元に戻して、こっちの追加したSteelArmorを自分で使えば、自分”だけ”が強いSteelArmorを使えるということになります。
※この方法を応用すると、例えばリプレイスMODをスタンドアロン化する、といったことが自分でできるようになりますよね。
この新しいSteelArmorのアドレスは、
01000800
になっています。元々のSteelArmorは、
00013952
です。
ここで上位2桁に注目です。お気づきでしょうか。
アドレスの上位2桁はロードオーダーになっています。
元々あるSteelArmorも書き換えていますが、これは元々のSkyrim.esmにてアドレスが00013952に確定していますので、データを書き換えてもアドレスは変わりません。
一方、新しく追加したSteelArmorは、元々のSkyrim.esmには存在しないものなので、新規にアドレスが割り振られます。アカウントを新しく取得するようなものですね。このときアドレスとして確定するのは、
xx000800
ということになります。xxの部分はロードオーダーなので、今の例では01になります。もしこれが99個目に読み込まれたとしたら、
98000800
62000800
になります。(1個目は0番で始まる16進)
(訂正)
decimalで書いてました・・・アホすぎます(汗)
バニラから防御力”だけ”書き換えたespを追加したらどうなる?
最後に、さらにもう1つespを追加してみます。バニラのSteelArmorから防御力だけを書き換えたespです。
ロードオーダー
00Skyrim.esm
01Steel2.esp
02Steel3.esp
steel2.esp導入時に、SteelArmorの変更項目は、
- ArmorTypeがHevyからLight
- 価格が275から1000
- 重量が35から10
- 防御力が31から50
でした。ここにSteel3.espを追加します。Steel3.espの変更項目は、
- 防御力を31から100
のみです。さて、どうなるでしょうか。
- ArmorTypeがHevyからLight
- 価格が275から1000
- 重量が35から10
- 防御力が31から100
になると思います?ちょっと考えて見てください。
答えは、
- 防御力が31から100
になるだけで、残りはすべてSkyrim.esmの値に戻ります。アドレスが最小単位ということは、こういう意味なんです。同一アドレス内の内容を、複数のespで上書きしあうことはできない訳です。
項目別の最小エントリを把握しておくことで、競合しそうなMODの予測を立てられたり、実際に競合していたら自分で修正することが可能になります。
まとめ
- 既存の武器や防具を「変更」したら、存在する全てに結果が反映される。
- 新規Form IDで武器や防具を「追加」したら、見た目や性能全て同じでも、それは別物。
- Form ID(アドレス)の上位2桁はロードオーダーである。
- 1つのアドレス中のパラメータ群は、複数のesm、espで個々に変更できない。
シリーズの続きはこちらからどうぞ