読者です 読者をやめる 読者になる 読者になる

Thinking Skeever

Skyrim/The Witcher 3 Modについてのあれこれ。FoModの作り方、Mod導入時のトラブル事例などのニッチな話を書いていきます。a.k.a. BowmoreLover@nexusmods

Skyrim自作Mod: TesvRefidPicker 利用ガイド (v1.1.5版)

Skyrim 自作Mod

nexusmods Skyrimで公開中のSkyrim用のユティリティ TesvRefidPicker - Showing RefID of NPC の利用ガイドです。

TesvRefidPicker 利用ガイド (v1.1.5版)
f:id:thinkingskeever:20151114030550p:plain

1.TesvRefidPickerとは

1.1 何ができるのか

このユティリティは、NPCのRefID(Reference ID/参照IDとも言う)を表示するものです。 RefIDとNPCの情報を表形式で一覧表示します。
一覧表はちょっとした表計算ソフトのような操作性となっていて、行をフィルタ・ソートしたり、列の並びを代えたり・列を表示・非表示したりすることができます。
一覧に表示したNPC全員に対するコンソールコマンドをクリップボードにコピーしたり、一覧の内容をCSVファイルに出力することもできます。

RefIDはCreation KitやTES5Editなどのツールで知ることができますが、それらを起動するのが面倒な方や使い方が分からない方もいると思い作成しました。

補足:

  • Skyrim Special Editionでの利用について
    今のところSkyrim SEには未対応ですが、以下の点に注意すれば一応は利用可能です。
    • Skyrim SEのbsaファイルが取り扱えません。ローカライズされた(.stringsファイルを持つ)プラグインを読み込む場合、あらかじめbsaファイル内の.stringsファイルを展開してください。
    • Skyrim SEのインストールフォルダを認識しません。
      • Skyrim/Dataフォルダを開く」メニューは使えません。
      • 「マスタープラグインからレコードを読み込む」をチェックする場合、対象プラグインと同じフォルダにマスタープラグインが存在する必要があります。
    • プラグイン内の文字コードセットが一部変更されているため、欧米圏の特殊文字が文字化けする場合があります。この場合は「コードページをUTF-8で上書き」をチェックすることで回避できます。
      なお、日本語化されたプラグインの表示に問題はありません。
  • 表示対象NPCについて
    ゲーム内で動的に生成されるNPC/生物/特殊オブジェクト(例えば山賊/スパイダー/NPC扱いのクエストオブジェクト)は表示対象外です。
    • NPC_レコードではなく、ACHRレコードで明示的に初期生成・配置されたものだけが表示対象となります。
    • 技術的にはNPC_レコードの内容を表示することも可能ですが、以下の理由で対象外としました。
      • MODで一定の場所に追加されるNPCを表示する、という当初の目的から外れる
      • ACHR(配置情報)がないと居場所や呼び出しのためのRefIDが存在しない
    • TES5Editの代用品ではなく、あくまでも限定的な用途を簡易化するツールである点に注意してください。
  • AreYouThere - Actor(NPC) Explorer by bein を使えば、ゲーム内のMCMメニューからNPC(フォロワー)の一覧を表示したり、NPCに対して各種操作を行うことができます。
    これを導入すればフォロワーを追加するたびにIDを調査する手間が省けそうです。ぜひお試しを。
    ダウンロード(nexusmods):AreYouThere - Actor(NPC) Explorer by bein

1.2 表示できる情報

列名 説明 列の初期表示
Plugin 読み込んだプラグイン 表示
RefID 参照ID 表示
Ref Owner NPC参照情報(ACHR)の定義プラグイン
Name NPCの長い名前または短い名前または[EDID] 表示
Ref EDID NPC参照情報のEDID。ほとんどの場合は空となる
BaseID ベースID 表示
Base Owner NPC情報(NPC_)の定義プラグイン
Flags NPCフラグ(ABCS) 表示
RaceID 種族ID
Race Owner 種族情報(RACE)の定義プラグイン
Race Name 種族名または[種族のEDID] 表示
VoiceID ボイスタイプID
Voice Owner ボイスタイプ(VTYP)の定義プラグイン
Voice Name ボイスタイプの[EDID] 表示
Health Offset 体力補正値
Magicka Offset マジカ補正値
Stamina Offset スタミナ補正値
Level NPCのレベル。FlagsにPCLevelMultがある場合はレベル倍率
Calc Min Level 最低レベル
Calc Max Level 最大レベル
Speed Multiplier 移動速度倍率
Calc Health 体力値
Calc Magicka マジカ値
Calc Stamina スタミナ値
Height 身長
Weight 体重
World 初期配置ワールド。ワールド名または[ワールドのEDID] 表示
Cell 初期配置セル。セル名または[セルのEDID] 表示
X 配置座標 X
Y 配置座標 Y
Z 配置座標 Z

1.3 仕様一覧

  • 読み込み対象ファイル:.esm/.esp
  • ローカライズされた(stringsファイル併用)プラグイン:対応
  • BSAファイルに格納されたstringsファイル:対応
  • プラグインの言語:Arabic/Baltic/Chinese/Czech/Danish/English/Finnish/French/German/Greek/Hungarian/Italian/Japanese/Norwegian/Polish/Portuguese/Russian/Spanish/Swedish/Turkish
  • 対応するSkyrim日本語化方式:旧方式(Lang=English)/新方式(Lang=Japanese)
  • ファイルの開き方:ファイルを開くダイアログ/ファイルのドロップ/Skyrimプラグイン定義から
  • 複数ファイルの同時読み込み:可能
  • UIの表示言語:英語(デフォルト)/日本語
  • 表示対象オブジェクト:NPC
  • 表の操作:列幅変更/行ソート(同時1列)/行フィルタ(複数列同時設定可)/列の表示/列の非表示/列の並べ替え/列状態をデフォルトに戻す
  • 行フィルタ:すべて表示(フィルタ解除)/空白/空白以外/テキストフィルタ/項目選択/項目部分選択(OR/AND)
  • 設定の保存方法:iniファイル(exeと同一フォルダ)
  • レジストリ使用:使用しない


f:id:thinkingskeever:20151114030550p:plain

2.導入方法

2.1 動作環境

私はWindows XP/8を持っていないので動作検証できていませんが、恐らく.NET Framework 4.0以降がインストールされていれば動作します。
Windows 10でも問題なく動作します。

2.2 インストール方法

  • nexusmods Skyrimのダウンロードページから最新版をダウンロードします。
  • ZIPファイルを解凍し、TesvRefidPickerフォルダーごと任意のフォルダにコピーします。ただしSkyrimフォルダ、Mod Organizer/NMMのフォルダ、Program Filesフォルダは避けてください。良く分からなければデスクトップ上でも問題ありません。
  • 旧バージョンからのアップデート時には、単純にファイルを上書きコピーしてください。

2.3 プログラムの起動

TesvRefidPicker.exeを実行します。
メイン画面が表示されます。
  

2.4 UIの表示言語の変更

「Options - UI Language - Japanese」メニューをチェックします。
  f:id:thinkingskeever:20160105172335p:plain
表示言語が日本語に切り替わります。

2.5 プラグインの言語の変更

SkyrimおよびModを日本語化している場合、プラグイン言語の変更が必要です。変更内容はSkyrimの日本語化方式により異なります。

(1) 旧日本語化方式(Skyrim.iniのsLanguageがEnglishの場合)

「オプション - プラグインの言語 - English (1252)」をチェックします。
「オプション - コードページをUTF-8で上書き」をチェックします。
  f:id:thinkingskeever:20160105172339p:plain

(2) 新日本語化方式(Skyrim.iniのsLanguageがJapaneseの場合)

「オプション - プラグインの言語 - Japanese (UTF-8)」をチェックします。
「オプション - コードページをUTF-8で上書き」のチェックは不要です。
  f:id:thinkingskeever:20160105172340p:plain

2.6 Mod Organizerの設定

Mod Organizerを使っている場合、次の手順で起動メニューに登録します。

  • 「実行ファイルの設定」ツールボタンを押します。実行ファイルの修正ダイアログが表示されます。

  f:id:thinkingskeever:20160105172341p:plain

  • タイトルに「TesvRefidPicker」を、実行ファイルにTesvRefidPicker.exeのフルパスを入力し、「追加」ボタンを押します。

  f:id:thinkingskeever:20160105172342p:plain

  • 「閉じる」ボタンを押し、ダイアログを閉じます。

以降、MOに登録されたModを開く場合は、画面右上の起動メニューからTesvRefidPickerを起動してください。
  f:id:thinkingskeever:20160105172343p:plain

2.7 アンインストール方法

ユティリティをアンインストールする場合、次のファイルを削除してください。レジストリは使っていませんのでクリーニングの必要はありません(厳密にはWindows.NET Frameworkによって少量のレジストリが作られているかもしれませんが、誤差の範囲だと思います)。

  • TesvRefidPicker.exe
  • TesvRefidPicker.ini


f:id:thinkingskeever:20151114030550p:plain

3.プラグインファイルを開く

3.1 まだインストールしていないプラグインを開く

  • Modの圧縮ファイルを解凍します
  • プラグインファイル(.esmまたは.esp)をメイン画面にドラッグ&ドロップするか、「ファイル - 開く」メニューを選択してファイルを開きます。複数のファイルをまとめて開くこともできます。

  f:id:thinkingskeever:20160105172344p:plain

  • 一覧が表示されます。NPCのRefIDとNPCの初期配置ワールド・セル名が確認できます。

  

注意:この方法で開いた場合、RefIDおよびBaseIDの先頭1バイトはModで定義された値と同一です。ゲーム内の実際のIDとは異なり、このままではコンソールコマンドで使えないことに注意してください。

3.2 インストール済みのプラグインを開く

Skyrimのインストールプラグイン定義(Plugins.txt)に登録されたプラグインを開きます。
Mod Organizerをお使いの場合、Mod Organizerの起動メニューから本ユティリティを起動してください。

  • 「ファイル - Skyrim/Dataフォルダから開く」メニューを選択します。

  f:id:thinkingskeever:20160105172346p:plain

  f:id:thinkingskeever:20160105172347p:plain

  • 一覧が表示されます。NPCのRefIDとNPCの初期配置ワールド・セル名が確認できます。

  

補足: この方法で開いた場合、RefIDおよびBaseIDの先頭1バイトはゲームでのロード順に合わせて変更されます。つまり、ゲーム内のIDと同じであり、コンソールコマンドで使用できます。


f:id:thinkingskeever:20151114030550p:plain

4.コンソールコマンドのコピー

一覧に表示されたNPC全員に対するコンソールコマンドをクリップボードにコピーできます。
「編集 - コンソールコマンドのコピー」メニューのサブメニューを選択します。
  f:id:thinkingskeever:20160105172350p:plain

4.1 コピーできるコンソールコマンドの一覧

コンソールコマンド 説明
Prid <RefID> NPCをターゲットするPridコマンド(Pick by Reference ID)です。Pridコマンドの後に任意のコマンドを追加してください。
"<RefID>".Moveto.Player NPCをプレイヤーのところに呼び出すコマンドです。
"<RefID>".SetLevel 1000 0 1 0 NPCのレベルをプレイヤーのレベルと同期させるコマンドです。
"<BaseID>" BaseIDだけをコピーします。このまま実行してもエラーとなります。バッチファイル作成のテンプレートとして使ってください。
SetEssential <BaseID> 0 NPCの不死属性を解除します。
SetEssential <BaseID> 1 NPCの不死属性を設定します。

4.2 出力例

"56002306".Moveto Player ; レコーダー
"56011D03".Moveto Player ; オムニコ Ver.4.1
"5601FB7B".Moveto Player ; ジーニア


f:id:thinkingskeever:20151114030550p:plain

5.CSVファイルのエクスポート

  • 「ファイル - CSVファイルのエクスポート」メニューを選択します。

  f:id:thinkingskeever:20160105172351p:plain

  • CSVファイルのエクスポートダイアログが表示されます。出力先ファイルを選択します。

CSVファイルには現在表示されている行が出力されます。表示されているかどうかに関わらずすべての列が出力されます。

5.1 CSVファイルの形式

ファイルのコードページはオプションで選択したプラグインの言語に依存します。

出力例

"Plugin"	"RefID"	"Ref Owner"	"Ref EDID"	"Name"	"BaseID"	"Base Owner"	"Flags"	"RaceID"	"Race Owner"	"Race Name"	"Health Offset"	"Magicka Offset"	"Stamina Offset"	"Level"	"Calc Min Level"	"Calc Max Level"	"Speed Multiplier"	"Calc Health"	"Calc Magicka"	"Calc Stamina"	"Height"	"Weight"	"World"	"Cell"	"X"	"Y"	"Z"
"Recorder Follower Base.esp"	"60002306"	"Recorder Follower Base.esp"	""	"レコーダー"	"60000D70"	"Recorder Follower Base.esp"	"Female,Essential,AutoCalcStats,Unique,PCLevelMult,Summonable"	"00013746"	"Skyrim.esm"	"ノルド"	"0"	"150"	"0"	"1.00"	"0"	"0"	"100"	"50"	"200"	"50"	"1"	"100"	""	"宿屋「スリーピング・ジャイアント」"	"-874.1511"	"-131.0032"	"0.5329494"


区切り文字のデフォルトはタブです。区切り文字を変更する場合、TesvRefidPicker.iniに次の設定を追加します。

カンマに変更する例

[General]
csvSeparator=,


f:id:thinkingskeever:20151114030550p:plain

6.フィルタについて

フィルタを使えば、指定した条件にあった行のみを表示することができます。

6.1 フィルタの設定

フィルタを設定するには、列ヘッダの右にある矢印ボタン「▼」をクリックします。
  f:id:thinkingskeever:20160105172352p:plain

フィルタメニューの操作方法は次のとおりです。

名称 説明
すべて表示 フィルタを解除します。
空白 空白のデータを表示します。
空白でない 空白でないデータを表示します。
テキストフィルタ 指定した文字を含むデータを表示します。テキストを入力し、右にある「OK」ボタンを押します。数値型の列では使用できません。
チェック一覧 一覧でチェックしたデータを表示します。一覧をチェックし、メニュー下にある「OK」ボタンを押します。
すべて選択 データの一覧を全選択/全解除します。
部分フィルタ Flags列でのみ使用できます。チェックすると各フラグが一覧に表示され、チェックしたフラグを含むデータを表示できます。複数のフラグをチェックした場合、結合条件は右のリスト(OR/AND)で切り替えられます。

フィルタが設定された列では、矢印ボタンが「▽」になります。

6.2 フィルタの解除

フィルタを解除するには、列を右クリックします。
  f:id:thinkingskeever:20160105172404p:plain

名称 説明
フィルタを解除する クリックした列のフィルタを解除します。
すべてのフィルタを解除する すべてのフィルタを解除します。

6.3 プラグイン読み込み直後のフィルタ設定について

プラグインを読み込んだ直後、Flags列には自動的に「Unique」フラグで絞り込むフィルタが設定されます。
フォロワーModで追加されるNPCのほとんどには「Unique」フラグが設定されていることと、無名NPCやクリーチャーを見る必要は少ないだろうと考え、本仕様としました。
すべてのNPCを見るにはFlags列のフィルタを解除してください。

6.4 フィルタの設定例

プラグインを読み込んだ直後の様子です。「Unique」なNPCが表示されています。
  

Flags列のフィルタボタンをクリックし、「Female」をチェックして「OK」ボタンを押します。
  f:id:thinkingskeever:20160105172406p:plain

これで「Unique」な「女性」NPCが絞り込めます。
  

Name列の名前で絞り込んだり、Cell列の場所で絞り込むこともできます。うまく活用してください。
  


f:id:thinkingskeever:20151114030550p:plain

7.列の操作

列の状態は好みに合わせて変更することができます。カスタマイズ結果はiniファイルに保存され、次回起動時に引き継がれます。
用途にあわせてカスタマイズしましょう。

列のカスタマイズ例
  

7.1 列幅の変更

列ヘッダの境目をドラッグします。
  f:id:thinkingskeever:20160105172413p:plain

7.2 列を隠す

隠したい列を右クリックし、「列を表示しない」メニューを選択します。
  f:id:thinkingskeever:20160105172414p:plain

7.3 隠した列を再表示する

任意の列を右クリックし、「列を再表示する」メニューのサブメニューから再表示したい列を選択します。「(すべて)」を選択すると、隠された列すべてが再表示されます。
  f:id:thinkingskeever:20160105172415p:plain

7.4 列のソート

列ヘッダをクリックします。クリックする度にソート方向(昇順/降順)が切り替わり、ソート方向がアイコン(△/▽)で表示されます。
  f:id:thinkingskeever:20160105172416p:plain

7.5 列順の並べ替え

列ヘッダをドラッグし、移動先の列でドロップします。
  

7.6 列の状態をデフォルトに戻す

「編集 - 列の状態をデフォルトに戻す」メニューを選択すると、列の変更内容をリセットしてデフォルトに戻すことができます。
  


f:id:thinkingskeever:20151114030550p:plain

8. 補足事項

8.1 「マスタープラグインからレコードを読み込む」オプションについて

読み込んだプラグインの中にNPC定義レコード(NPC_)が存在しない場合、警告メッセージ「NPCのベースレコードがいくつか見つかりませんでした。NPC情報を完全に表示するには、「マスタープラグインからレコードを読み込む」オプションをチェックしてください。」が表示され、列の一部が空白となります。クエストModやNPC/クリーチャー追加Modのように、バニラで定義されたNPCを増やすModで発生します。
  

この場合、「オプション - マスタープラグインからレコードを読み込む」メニューをチェックします。
  f:id:thinkingskeever:20160105172425p:plain

もう一度プラグインを開くと、マスタープラグインからNPC定義レコードが読み込まれ、NPC情報が補完されます。
  

マスタープラグインファイルは次の順序で検索します。

8.2 NPC用のModなのにNPCが表示されない場合

SBF、Bijin NPCsのようなNPC美化ModにはNPC参照情報(ACHR)が含まれていないため、NPCは表示されません(つまり表示すべきRefIDがない)。
NPC定義情報(NPC_)は含まれているので何かしら表示することは技術的に可能ですが、本来の目的から外れる気がしたので本仕様としました。

8.3 問題が発生したら

何か問題が発生したら、問題となったMod名、プラグインファイル名、エラーメッセージ(スタックトレース部分も含む)を報告してください。
nexusmodsのforum、このページのコメント、Twitter(ThinkingSkeever (@ThinkingSkeever) | Twitter)のいずれかにお願いします。


f:id:thinkingskeever:20151114030550p:plain

9. 余興

もちろん、このユティリティではバニラのプラグインを開くこともできます。
謎のNPCや誤訳などを探して楽しむのも面白いでしょう。


植木鉢さんもNPCでしたか・・・
  f:id:thinkingskeever:20160105172427p:plain

このセルはなんぞ・・・
  f:id:thinkingskeever:20160105172428p:plain

スカイリム筋肉番付
  
  ※実際にはゲーム中で再計算されると思うので意味はなさそうですが

スカイリム+DLC - ユニーNPCの種族分布
カジートが少数派って噂はほんまやった・・・

種族 備考
ノルド 478
インペリアル 104
ブレトン 93
ダークエルフ 87
オーク 57
レッドガード 49
古き人の種族 47 老人のこと
ハイエルフ 44
ウッドエルフ 26
アルゴニアン 22
カジート 18
イヌ 8
ケルト 8
ドラゴン種族 8
ドレモラ 5
ドラゴン・プリースト 4
ハグレイヴン 3
デスハウンド 2
フロストバイト・スパイダー 2
ヤギ 2
[DLC2RieklingRace] 1 リークリングのこと
ウィッチライト 1
スキーヴァー 1
スノー・サーベルキャット 1
スノートロール 1
マンモス 1
ユキグマ 1
巨人 1
1 フロストだけ。シャドウメアはなぜかUniqueでない
雷の精霊 1

  ※このユティリティで出力したCSVをLibre Calcで読み込んで集計した結果です


f:id:thinkingskeever:20151114030550p:plain

10. 謝辞

本ガイドでは次のModをサンプルに使わせていただきました(順不同)。この場を借りて御礼申し上げます。
Chaconne Follower by rxkx22
Custom Voice Follower_Rosalie by okame28
Garm the Husky Companion by Wolfgrimdark
Millepon Healer Follower by millepon
Recorder - Standalone Fully Voiced Follower by potasticpanda
Rigmor of Bruma by Rigmor
Segodon Kunoichi Follower by Segodon
The Goddess Diana by triptherift - marmotte
Toccata Follower by rxkx22

(拙作日本語訳)
Recorder - Standalone Fully Voiced Follower - Japanese by potasticpanda and BowmoreLover
Rigmor of Bruma - Japanese Translation by Rigmor and Translated by BowmoreLover


f:id:thinkingskeever:20151114030550p:plain

11. ツールの変更履歴

Version 1.1.5 (2016/7/18)

  • Dragonborn.esmが読み込めないバグを修正。未クリーニングの場合に発生。XXXXフィールドの処理誤りだった
  • Visual Studio 2015でリビルドした

Version 1.1.4 (2016/2/11)

  • コンソールコマンドの形式の変更。コメント(NPC名)はコマンドの同一行、コマンドの右になりました (95f890be氏に感謝!)
  • スペルミスと不自然な英語の修正 (95f890be氏に感謝!)
  • プラグインのロード順が128以上のとき、RefId/BaseIdが空白になる問題の修正

Version 1.1.3 (2016/1/8)

  • 列の追加:(Plugins)Index, VoiceID, Voice Owner, Voice Name (要はボイスタイプが表示できるようになった)

Version 1.1.2 (2016/1/6)

  • 列の追加:RaceID, Race Owner, Race Name (要は種族名が表示できるようになった)

Version 1.1.1 (2016/1/5)
バグ修正のみです

  • ウィンドウリサイズ時、ログウィンドウの高さを固定するようにしました。
  • コンソールコマンドメニューの"Prid "を""に変更しました。エラーとなる意味のないコマンドだったためです。
  • マスタープラグインファイルが見つからなかった場合の動作不具合を修正しました。

Version 1.1 (2016/1/4)

  • CSV出力機能。表示中の行が出力対象。ファイルのコードページはプラグインの言語に依存。区切り文字はタブ。
  • より多くのNPCパラメータ表示。デフォルトでは非表示列なので必要に応じて再表示してください。追加された列:Magicka Offset, Stamina Offset, Health Offset, Level, Calc Min Level, Calc Max Level, Speed Multiplier, Calculated Health, Calculated Magicka, Calculated Stamina, Height, Weight
  • 「コードページをUTF-8で上書き」オプションの追加。旧日本語化方式(sLanguage=English)で日本語化されたプラグインを開くときにはこれをチェックしてください。
  • 「Flag」列に表示される値の追加:Summonable, LoopedAudio

Version 1.0 (2016/1/1)

  • 初回リリース


f:id:thinkingskeever:20151114030550p:plain

本ガイドの改訂履歴

  • 2016/01/05 18:10 - 公開開始、v1.1.1対応
  • 2016/01/06 01:40 - v1.1.2対応
  • 2016/01/08 21:45 - v1.1.3対応
  • 2016/02/11 05:40 - v1.1.4対応
  • 2016/06/26 12:30 - AreYouThere - Actor(NPC) Explorerに関する情報を追記
  • 2016/07/18 21:30 - v1.1.5対応

以上

Copyright (C) 2015,2017 ThinkingSkeever, All Rights Reserved.
ブログの記事内に記載されているメーカー名、製品名称等は、日本及びその他の国における各企業の商標または登録商標です。
リンクはご自由に。記事の転載はご遠慮ください。記事を引用する場合はトラックバックするか元のURLを明記してください。