第2回は、MCMの基本構造を作っていきます。
MCM用のクエストと、それにつける必須スクリプトを作ります。普段のMOD制作でクエストやスクリプトに触れない方でもきっと大丈夫です。たぶん。
MCMの作り方については SkyUI の GitHub にドキュメントがあります。当サイトではこれをもとに実際の作業に即して説明していきます。
1. 専用クエストの作成
1-1. MCM専用のクエストを作成する
まずは、MCMを実装しようとしているMODをCKで通常通り読み込みます。
Object Window で Character > Quest を選択します。右側のどこかを右クリックして「New」を選択し、新規にクエストを作成します。
IDに任意の名前を付けます。できればMCMに用いるクエストであることが分かるようにしましょう。さらに「Run Once」のチェックを外して、念のためクエストを繰り返し開始できるようにしておきます。
ここで一度「OK」を押してクエストを確定させます。そうしないとスクリプトをつけることができません。
1-2. クエストにスクリプトをつける
作成したクエストの「Scripts」タブを開きます。「Add」を押すとスクリプトをつけることができます。
[New Script] を選択し、新規にスクリプトを作成します。
Name に入れるスクリプト名は任意ですが、他のMODと被らないような名前にしてください。そして Extends の欄が重要で、デフォルトでは Quest となっているものを必ず「SKI_ConfigBase」に書き換えてください。MCM用の関数等を使えるようにするためです。
もしここで SKI_ConfigBase を指定できないエラーが出たら、SkyUI SDK のインストールができていません。前回の記事を参考にインストールし直してください。
1-3. プロパティにMOD名を記載する
プロパティとは変数の一種で、スクリプトとゲームデータとの橋渡しをしたり、他のスクリプトから値を参照したりするのに用いられます。作成したMCMスクリプトを選択状態にし、「Properties」を押すとその内容が見られます。
MCMスクリプトは SKI_ConfigBase を拡張しているため、すでに2つのプロパティがあります。このうち「ModName」がMCMのMODリストで表示される名前になるので、選択してから右側の「Edit Value」を押して入力します。MOD名が長すぎるとMCMのUIからはみ出します。ユーザーが使用しているフォントにもよりますが、長くても20~24文字程度にしておいた方がよいでしょう。
1-4. スクリプトをコンパイルする
Papyrus でいうコンパイルとは、人が読んで編集するための psc をコンピュータ用の pex に変換する作業です。スクリプトの内容を作っていく前に、ここでコンパイル作業を確認しておきましょう。
MCMスクリプトを右クリックして「Edit Source」を選択します。
1行だけ書かれたスクリプトの画面が開くので、File メニューから「Save」を選択します。
いくつかの記述のあと「Compilation succeeded.」の文字が出ていれば成功です。
これにより “Data/Scripts” 内に pex が作成されます。もしこの段階で失敗するようなら何らかのスクリプトソースが足りていません。前回を参考に、バニラおよびSKSEのスクリプトソースが “Data/Source/Scripts” フォルダに正しく展開されているか確認してください。
2. エイリアスの作成
2-1. プレイヤーエイリアスを作成する
エイリアスとは、クエストで用いるデータを登録しておく枠のようなものです。MCMでは、プレイヤーのエイリアスを作成するよう指定されています。
MCMクエストの「Quest Aliases」タブを開き、右クリックして「New Reference Alias」を選択します。
Alias Name に「PlayerAlias」と入力します。そして Fill Type の Specific Reference を選び、右側のボタンを押します。Cell に「(any)」を指定することで Ref には自動的に「PlayerRef」が入り、プレイヤーのエイリアスとなります。
2-2. エイリアスにスクリプトをつける
エイリアスの Scripts 欄にある「Add」を押し、「SKI_PlayerLoadGameAlias」を選択してスクリプトをつけます。
ここまでできたら、エイリアス画面とクエスト画面の「OK」ボタンを押して確定させ、さらに esp を保存しましょう。この段階でテストプレイすると、ゲーム開始後に少し経ってから登録メッセージが出て、ModName プロパティに入力した名前の項目がMCMに出るはずです。
以上で基本構造はできました。次回以降、その中身を作っていきます。
3. サクラエディタを使ったコンパイル
3-1. スクリプトをダブルクリックしたときの挙動を設定する
上の説明ではCKを使ってスクリプトをコンパイルしました。最初のうちはそれでも構いませんが、これから先、スクリプトの編集を何回も繰り返すことになるので、できればエディタを使って編集・コンパイルするようにしていきましょう。
まず、CKでスクリプトをダブルクリックしたとき、その psc がサクラエディタで開かれるように設定します。デフォルトではプロパティの設定が開くようになっていますが、これはあまり頻繁に行う作業ではありませんし、psc が開かれる方が直感的だと思います。
psc ファイルの関連付けを行うために、”Data/Source/Scripts” 内のどれでも良いので psc を右クリックして「プログラムから開く」を選択します。ダイアログが出るので開く方法としてサクラエディタを選択し、「常にこのアプリを使って .psc ファイルを開く」にチェックを入れてOKしてください。開いた psc は何もせずに閉じておきます。
そして、CKの File メニューから「Preferences…」を選択して「Scripts」タブを開き、On double-click に「Edit externally」を指定します。
3-2. サクラエディタからコンパイルする
サクラエディタで psc を編集したら、「Ctrl+S」で保存し、さらに「Ctrl+F5」で ファイル名を指定して実行 ダイアログを開きます。前回ご紹介した通りにバッチファイルを作成してあれば、以下のコマンドで pex へのコンパイルが可能です。
"$e..\..\..\Papyrus Compiler\ScriptCompile_AE.bat" "$F"
エディタを使うと色分けや入力補完機能等が使えるので、スクリプトの編集効率が格段に上がります。さらに、後からスクリプトだけ修正したいと思ったときに、CKを起動することなく “Data/Source/Scripts” 内の psc を直接開いて編集・コンパイルすることもできるため、デバッグ作業がとても楽です。
この作業効率向上が、前回 Vortex とサクラエディタの組み合わせをご紹介した理由の1つです。
【MCM実装 シリーズ】
1. Creation Kit で Papyrus を扱えるようにする
2. MCMに登録するための基本構造を作る
3. 初期画面とページの枠組みを作る
4. ページ内の項目を作る
5. スクリプトMODを配布形式にまとめる
6. MCM設定を自動で保存する