☆ SkyPatcher NPC Replacer Converter - xEdit Script [ユーティリティ] ID:141105 Author:mmsk4989 2025-04-26 20:55 Version:1.2.1
- RATE: ★=457 G=1 [DOWNLOAD SITE]
-
TAG: [Skypatcher] [SSEEdit] [xEdit] [スクリプト] [NPC美化]
SkyPatcher NPC Replacer Converter - xEdit Script
NPCのデータを上書きして美化するModを、
SkyPatcherを利用する形式に変換するxEditスクリプトです。
NPCを上書きしているレコードやFacegenファイルを、独立したNPCのデータとして変換し
それをSkyPatcherで元のNPCの外見に適用する事で競合を回避できるため、
互換性が大幅に向上します。
Race Distribution Framework版もあります。
このスクリプトはMO2ユーザー向けです。
Vortexでテストされていませんが、動作するかもしれません。
◇重要
このスクリプトは、プラグイン内のNPCレコードを削除し、新しいNPCレコードを追加します。作業前に必ずバックアップを作成して下さい。
このスクリプトは複数のプラグインを同時に操作するようには設計されていません。スクリプトを適用する時は、必ずプラグインを 1つずつ選択してください。
Facegenファイルが BSAファイル内にある場合は、スクリプトを実行する前にそれを抽出してください。このスクリプトはBSAファイル内のファイルを操作できません。
◇要件
SSEEdit
SkyPatcher ver 2.6以降
または
Race Distribution Framework
◇インストール
zipファイルを解凍し、
Skypatcher NPC Replacer Converter.pas または RDF NPC Replacer Converter.pas をSSEEditの Edit Scriptsフォルダに移動します。
◇使用方法
1,このスクリプトで変換したいリプレイサーMODのみを有効にするプロファイルを用意します。(前提MODを含む)。
通常のプロファイルでも使用可能ですが、トラブル回避(リネーム対象のFaceGenを間違える可能性があります)のためこちらを推奨します。
2,変換したいリプレイサーMODのespファイルをOverwriteフォルダに直接コピーします。
(コピーしなくても実行可能ですが、その場合は元ModのESPが直接書き換えられます。)
3,SSEEditを開き、プラグインリストからリプレイサーMODを開き、全てのNPCレコードを選択。
右クリックからApply Scriptを選択し、SkyPatcher NPC Replacer Converterを実行する。
4,スクリプトの実行時にオプションを選択します。
ver 1.2.0からチェックボックス形式で選択するようになりました
チェック項目は上から
-SkyPathcer iniファイルのIDをForm IDで記述するか(チェック無しならEditorID)
-出力されるiniファイル内の構成行をデフォルトで無効にするか。
これは主に、多数のNPCを置き換えるMODから少数のNPCのみを変更したい人向けです。
無効になっている行は、先頭に追加されたセミコロン(RDFなら#)を削除するだけで有効にできます。
-オリジナルのFacegenファイルを削除するか
(削除する場合はmodのファイル構造を変更するため、問題が発生する可能性があります、事前にバックアップをとるなどしてご利用ください。)
-NPCレコードに紐づくFacegenファイルが見つからない場合、そのレコードを取り除くか(主にUseTraitsフラグで他のNPCの顔を参照してるタイプ)
また、新しいEditorIDに追加する接頭辞を入力する必要があります。
・例として、アエラ(EditorIDがAelaTheHuntress)の美化Modの接頭辞をBijinと入力すると
変換されたNPCデータのEditorIDはBijin_AelaTheHuntressとなります。
・もしESPFEなどでNextObjectID(espの親項目のHEDR - Headerのところに記載)に問題がある場合は適切なIDに直す選択肢が出て800に直します
※注意:NextObjectIDの処理を行う場合、本変換処理をスキップするため、再度実行してください
5,スクリプトが正常に終了すると、
Facegenファイル(メッシュとテクスチャ)のコピーとSkyPatcher/RDF用のiniファイルが
Overwrite内のSkyPatcher NPC Replacer Converterフォルダに出力されます。
SSEEditの変更内容を保存して終了して下さい。
6,Overwriteフォルダにコピーしたespファイルを
SkyPatcher NPC Replacer Converterフォルダに移動します。
SkyPatcher NPC Replacer Converterフォルダを任意の名前でzipファイル等に圧縮して
ダウンロードフォルダに移動し、通常のMODと同様にインストールします。
Detailed usage guide
https://www.nexusmods.com/skyrimspeci…
名前の通り、細かい解説つきのガイド記事です。Finishingの項目で他のインストール方法も紹介しています。zipファイルが不要だったり、リプレイサーMod単独で完結させたい場合は参考にしてください。
・このスクリプトは、簡単に元の状態に復帰できるように、元のModの各種ファイルはリソースとしてそのまま参照して、元のModの構造を極力変更しないようにしています。元のModが有効で、元のModのESPのみが上書きされている状態が基本です。VRAMrやPG Patcherのような運用を想定しています。
◇既知の問題
リストからmod名を選択してスクリプトを適用することもできます
(つまり、NPCレコードを直接選択せずにスクリプトを適用します)。
ただし、この方法ではスクリプトがクラッシュする可能性があります。
これは、SSEEditのバージョンとの互換性の問題によるものと思われます。
(ver 4.0.4では正常に終了しますが、ver 4.1.5fではクラッシュする可能性があります。)
ver1.0.0からプレフィックス入力時に入力文字を検証する処理を追加しましたが、無効な文字を入力すると挙動がおかしくなる不具合が出るようになりました。
こうなった場合はキャンセルボタンを押して一旦スクリプトを中止して、再度実行しなおしてください。
SkyPatcher側の仕様で独自種族化や大幅に体型が異なる美化(ErinRaceなど)および性別を変える変更をしている場合、頭部(美化後)と身体(美化前のまま)があわなくなる可能性がありますのでそういう美化MODに使うのは非推奨、
Race Distribution Frameworkであれば体も含めて丸ごと変更するためよほど特殊じゃない限りは大丈夫です。
SMP髪を利用している美化ModでSkyPatcher版だと禿げる場合もRDF版だと問題ないみたいです。
関連Mod
SkyPatcher NPC Replacer Follower Converter - xEdit Script
リプレイサーModの見た目を持ったフォロワーNPCをゲーム内の各地に配置するスクリプト
このスクリプトで変換した状態を前提に設計されています
Follower SkyPatcher NPC Replacer Converter - xEdit Script
フォロワーModをSkyPatcher形式のリプレイサーModに変換するスクリプト
Race Distribution Framework版もありますSkyrim Special Edition Nexus, mmsk4989. 26 Apr 2025. SkyPatcher NPC Replacer Converter - xEdit Script. 7 Feb 2025 <https://www.nexusmods.com/skyrimspecialedition/mods/141105>.スポンサーリンク
スポンサーリンク
上記説明は古い又は異なる場合があります。導入の際はDescriptionを確認の上、自己責任でお願いします。
説明はどなたでも編集する事が可能です、古い又は異なる場合は編集にご協力をお願いします。
To users except in Japan - コメントコメントだけでも投稿できます。気に入ったMODはNEXUSでもENDORSEしましょう。
[Spoiler]テキスト[/Spoiler]とする事で隠しテキスト、#や>>後、半角数字でアンカーを使用可。 -
-▼ Version : 1.2.0#32作者ちゃんと動きましたか、よかったよかった。
スクリプトが止まるのは、普通は編集しない場所を編集したので念のためユーザに確認してもらいたい、という意図でやってます。 ID:djMGRmYz Day:126 Good:2 Bad:0- Good
- Bad
- 141105
#31名無しGood!v1.2.0、Kurone美化シリーズ一通り試してエラーもなく正常に動作、
ただNextObjectIDは事前にて手作業で直したほうが再実行の手間省けるかも(NextObjectID変更を任せると変換処理はスキップするようなので)、
その辺もあったのでRDFでの運用もあわせてちょっと説明文に補足しました ID:RlZGFlZj Day:522 Good:1 Bad:0- Good
- Bad
- 141105
▼ Version : 1.1.2#30作者#29
やっぱり入ってますよねぇ…
あとはレコード数が2048以下ならファイルのヘッダーverを直接1.70に編集してしまう、という手もあります。今回みたいな小型のModならこれで問題なく変換できるはず。 ID:A4MDQ3ND Day:117 Good:0 Bad:0- Good
- Bad
- 141105
#29名無し#28
BEESは入ってますね、
ただそれでもSSEEditはExtendedESLに関して不正IDあるからESPFEじゃ保存できないよってエラーがきてそれでFormID変えた経験は何度かあるんで認識できてなそうな予感、それは作者様が原因ではないのでしょうがないところで…
現状でも迂回策(再ESL付与時にNPCのFormIDがさらに変わってないかチェックは必要だが)でどうにか運用できるんで手間をだいぶ省けたのは確かです、どうもありがとうございます! ID:RlZGFlZj Day:513 Good:0 Bad:0- Good
- Bad
- 141105
#28作者あー本体バージョン!
ヘッダーver1.71は1.6.1130以降対応が基本なので、そこで引っかかってる可能性が高いかもです。
Backported Extended ESL Supportは入ってます?入っててもSSEEdit上でうまく認識されるかどうか微妙ですけど… ID:A4MDQ3ND Day:117 Good:0 Bad:0- Good
- Bad
- 141105
#27作者#25
もしかしたらシンプルにスクリプトがバグってるかもしれないですね…
Next Object IDをユーザに操作させるオペレーション自体、無理があるかもなぁって思ってたところだったので、スクリプトで自動的に対処できるようにしてみます。
Modたくさん作ってるベテランの人でも場所わからなくて苦戦してたぐらいだし… ID:A4MDQ3ND Day:117 Good:0 Bad:0- Good
- Bad
- 141105
#26名無しあ、環境も書き忘れたので書いときます
本体:v1.5.97
SKSE:2.0.20
SSEEdit:ver 4.1.5f(NPC指定してるのでクラッシュは発生していない)
MO2:v2.5.2
SkyPatcher:v3.8.0 ID:RlZGFlZj Day:513 Good:0 Bad:0- Good
- Bad
- 141105
#25名無し#24
もう一度戻してリディアを000A2C8E→00000800(バニラリディアから分離された)にしても同じエラー
ヤケになって全レコード80x~で振り直してからスクリプト実行してみたけど同じエラー(レコードは801~807しかない状態)
ただDawnguard CCpatchの方はエラー出ずにできたからこのスクリプトと相性悪いMODがあるんですかね…、先のようにESLフラグいったん外して実行すれば大丈夫です、
可能性としてはエラーでたのはバージョンv1.71のプラグイン(Dawnguard CCpatchは1.70)なのでこれが問題あるのかな… ID:RlZGFlZj Day:513 Good:0 Bad:0- Good
- Bad
- 141105
#24作者#23
範囲に引っかかったのはそうなんですが、この処理で評価するのはNext Object IDだけで、レコードのForm IDは見てないです。
(コードが読めるのでしたら、ESLFlagedPluginTest関数で評価してるので興味があったら読んでみてください。)
それと、Form IDの割り振りなんですが、どうやらオーバーライドしてるレコードはオーバーライド先のForm IDを持っていて、プラグインが持っているForm IDではないみたいなんです。
イメージとしては、Skyrim.esm:0x0A2C8Eが直接書かれていて、KuroneRimLydiaReplacer.esp:0x0A2C8Eではない、みたいな感じです。
試しにRenumber Form IDしてもらうとわかるんですが、オーバーライドレコードのForm IDは変更されません。
また、Next Object IDはプラグインが持っているForm ID空間のみから算出されます。
状況を整理すると、Renumberすると0x0A2C8EのForm IDは変更されず、他のForm IDは800から順当に割り振られ、Next Object IDは新しく割り振りできた値に基づいて算出されます。
件のプラグインでやってみると割り振りできたレコードに+1された値がNext Object IDに設定されますが、これはオーバーライドレコードの分が余分にカウントされているのだと思われます。
長くなりましたが、こういうわけでRenumberしてもこのスクリプトによる変換に支障はありません。 ID:A4MDQ3ND Day:116 Good:1 Bad:0- Good
- Bad
- 141105
#23名無し#22
ソース見てみたんですけどおそらくESL/ESPFEに対してのID制限
ESLMAXFORMID = $FFF;
ESLMINFORMID = $800;
これが引っかかったんじゃないかと思うんですが
Kurone Rim Lydia Replacer - Racemenu Preset - 3BA Preset は「ESPFEだがバニラレコードのリディア(0x0A2C8Eのため800~FFFの範囲外)のを編集している」
ことがエラーになった原因じゃないのでしょうか?
バニラレコードゆえにKurone側のリディアを800とかにRenumberしたらFaceGenやiniファイル類の出力においてリディア(0x0A2C8E)と認識して変換するのでしょうか? ID:RlZGFlZj Day:513 Good:0 Bad:0- Good
- Bad
- 141105
#22作者#21
手元で同じ手順を試してみましたが、正常終了はできますが、ちょっと危ないなぁ、という印象です。
この手順で作成されるレコードのForm IDは2C8ですが、これは元々のNext Object IDの値の右から4桁目の1が0に置換された結果だと考えられます。
この手順で行うと、ロード時のインデックスの状態のまま(FE000等)なので、1が入力できずに0にされたのでしょう。フラグ外してセーブしてもう一度ロード、という手順を挟むと12C8で生成されます。
Form IDを振り直ししなくても、Next Object IDを直接編集して、00000800等の値を設定してやれば、フラグを解除しなくても正しく実行されるようになります。設定したIDがすでに存在していた場合は自動的に空いているIDを割り振ってくれるので、レコードが勝手に書き換わる、みたいな不具合は心配しなくても大丈夫です。
File Header(マスター参照してるファイルのリストが見れるところ)の上の方にこのフィールドがあるので、そこから編集できます。
Renumber Form IDを実行するとNext Object IDも自動的に適切な値になるので、わかりやすさ重視でこの方法を推奨しています。
いずれにせよ、私としては一旦フラグを解除する方法はあんまりお勧めできないなぁ、という感じですね。 ID:kzYTg3MW Day:115 Good:0 Bad:0- Good
- Bad
- 141105
#21名無しGood!#19
ありがとうございます、ただレコード振り直しは面倒なので以下の
1:ESLフラグいったん外す
2:スクリプト実行(成功)
3:ESLフラグつけ直してセーブ
という方法でいけました、RDF版でも美化が適応されてるのも確認 ID:RlZGFlZj Day:511 Good:0 Bad:0- Good
- Bad
- 141105
#20作者#19
Next Object IDは次に作成されるレコードに割り振られるForm IDで、今回はその値がESPFEの範囲を逸脱しているのを検出した、というエラーですね。たまにあるやつです。
Renumber Form IDで800からForm IDを振りなおせば最後まで実行できるはずです。 ID:Y3ZjJkYj Day:115 Good:0 Bad:0- Good
- Bad
- 141105
#19名無し#18
ありがとうございます
ただKurone Rim Lydia Replacer - Racemenu Preset - 3BA Preset で試したところ以下のエラー
Checking ESL Plugin: KuroneRimLydiaReplacer.esp
Total Records:7
Header version:1.71
Max Record Count:4095
NPC Records:1
Next Object ID:12C8 →※このレコードは該当MODには存在しない(そもそもリディアはバニラレコードの編集だが他はespfe)
Script aborted: Next Object ID is invalid.
-- Fix Guide --
The script has stopped because the Form ID to be assigned to a newly generated record exceeds the valid range for ESL-flagged ESP.
Right-click to open the menu, select Renumber Form IDs from..., and specify 800 to reset the Form ID.
[00:40] Script terminated itself, Result=-1
[00:40] Done: Applying script "RDF NPC Replacer Converter", Elapsed Time: 00:40 ID:RlZGFlZj Day:511 Good:0 Bad:0- Good
- Bad
- 141105
#18作者#17名無し#16
個人的にはRace Distribution Framework 用の変換もあれば
見た目の移植精度は今のところSkyPatcherより優秀で書式もそこまで複雑じゃないので ID:RlZGFlZj Day:510 Good:0 Bad:0- Good
- Bad
- 141105
#16作者種族や性別の変更も対応するのって需要ありますかね?
SkyPatcherで変更できるみたいなんで、やれないことはないけど不具合が起きやすそうでね…
性別変更の整合性とるなら声と名前も変える必要出てくるかな ID:ZmNmU0Nz Day:113 Good:0 Bad:0- Good
- Bad
- 141105
#15名無しGood!元々手作業でやってたんで大体変換後の状態も把握しやすかったです、
美化の整頓だけじゃなく気分iniファイルを切り替えるだけで複数の美化MODを手軽に切り替えることもできてSkyPatcherの機能も含めてとても便利
闇鍋状態だった自作競合パッチがスッキリした ID:RlZGFlZj Day:509 Good:0 Bad:0- Good
- Bad
- 141105
▼ Version : 1.1.1#14名無しあぁなるほど、理屈が分かってないので的外れなことを言ってしまった。
競合なしで外見変更を導入出来る、としか考えてなかったので・・顔の扱いが単純なメッシュとは全く違うんですね、いやはやお恥ずかしい ID:gwNTMzMW Day:41 Good:0 Bad:0- Good
- Bad
- 141105
#13作者そういえば、そもそもこのスクリプトを書いたのは、Facegenファイルの移動と名前変更が面倒すぎるので自動化したい、っていう動機だったなぁ…。
レコードのスタンドアロン化はSSEEditで数クリックでできたり、iniファイルの生成はAIに丸投げでOKなんだけど、Facegenファイルまわりはそうもいかない。
なので、このスクリプトを利用したほうが良いかどうかは、Facegenファイルの操作があるかどうかで判断すると間違いないでしょうね。 ID:MxZDVkY2 Day:103 Good:0 Bad:0- Good
- Bad
- 141105
#12名無し理屈では出来るけどそもそもFaceGenファイルを必要としないクリーチャー類をわざわざレコード抽出してスカイパッチャーで配布する必要性を考えると効果は薄いかと
作者も言ってるけど特定の見た目のメッシュを広範囲のクリーチャーに配布したい場合はそれ用に特化したパッチャーがすでにあるのでそっちを使ったほうがいいよ ID:IzNjRlOG Day:176 Good:0 Bad:0- Good
- Bad
- 141105
#11作者#10
それは試したことないのでなんとも…
見た目の移植部分はSkyPatcherの機能で実現してるので、そちらの仕様を調べるのが良いかなと。
ただ、今のバージョンだとFacegenファイルが見つからない&use traitsフラグがないとスクリプトを中止するような作りになってるので、そもそも正常終了できないでしょうね。試すなら古いバージョン使ってみてください。 ID:MxZDVkY2 Day:103 Good:0 Bad:0- Good
- Bad
- 141105
#10名無しnpcだけでなく、クリーチャーや動物などのactor全般にも使用出来るって認識で合ってるでしょうか。
まぁやってみりゃ分かるんでしょうが・・ ID:RlNWE3OG Day:47 Good:0 Bad:0- Good
- Bad
- 141105
#9作者今回のバージョンアップでESPファイルを持たないリプレイサーModもSkyPatcherを利用する形式に簡単に変換できるようになりました。
詳細はConversion Tipsの記事を参照してください。 ID:MxZDVkY2 Day:102 Good:2 Bad:0- Good
- Bad
- 141105
▼ Version : 1.0.2#8名無しちなみに、Skypatcher NPC Replacer Converterフォルダに出力されているファイルを元のModの方に移動させる、という方法でも変換は有効なはずです。
この方法だと元のリプレイサーMod単独で完結できるようになるメリットがありますが、Skypatcher iniファイルを操作して読み込み順を変更する、みたいなことはやりにくくなります。 ID:MxZDVkY2 Day:101 Good:0 Bad:0- Good
- Bad
- 141105
#7作者ひとつ考えらえるのは、他のリプレイサーModでメッシュやテクスチャが上書きされてるパターンですかね。リソースをまとめたことで、このスクリプトで変換したModのリソースが優先されるようになって、不具合が解消された、とか。 ID:MxZDVkY2 Day:101 Good:0 Bad:0- Good
- Bad
- 141105
#6名無し#5だけど、説明よく読むとそうしなくても不具合で内容になってるはずだな…なんでだろ。まぁ自分の環境ではリソースも一つに纏めないとなんかおかしかった。 ID:YwNjk5ND Day:49 Good:0 Bad:0- Good
- Bad
- 141105
#5名無し考えれば当然の事なんだけど、上の手順で作った新しいzipファイルにはメッシュもテクスチャも無いからオバケが闊歩する事になってびっくりした…。元MODから必要なメッシュ、テクスチャデータを移行させて初めて、元MODは削除してしまっていい。 ID:YwNjk5ND Day:49 Good:0 Bad:0- Good
- Bad
- 141105
#4作者やで説明をちょっと編集しました。(作者注)は主張が強すぎたので、Nexusの方の説明に同様の記述を追記して、そちらから引用されている体裁にしました。 ID:BlN2NkMT Day:93 Good:0 Bad:0- Good
- Bad
- 141105
▼ Version : 1.0.0#3作者やではい、とんでもない神ツールだと思ったので公開しました。
あっちの対応でここまで手が回らなかったけど、アプデがひと段落したのでこちらでもサポートしていきまっせ。 ID:JmZmJiYj Day:82 Good:14 Bad:0- Good
- Bad
- 141105
#2名無し説明見る限りとんでもない神ツールのように思えるんだけど
これで本当に美化modのパッチから解放されるんだろうか ID:U4ZDBmYj Day:35 Good:0 Bad:0- Good
- Bad
- 141105
▼ Version : 0.9.0#1名無しなんちゅー神MOD ID:E3YzJhZW Day:20 Good:0 Bad:0- Good
- Bad
- 141105
- 機械翻訳 説明引用 [原文]
「このxEditスクリプトは、NPC Replacer ModsをSkyPatcherに変換します。上書きレコードをスタンドアロンにし、互換性を大幅に向上させます。」
スポンサーリンク
スポンサーリンク