2017年6月30日

CKでオブジェクトを固定する方法

スカイリムには様々なオブジェクトが配置されています。かごや食べ物のように取得・移動ができるものもあれば、ランタンや薪の山のようにアクティベートも移動もできないものもあります。扉を開けるレバーのようにアクティベート専用のオブジェクトもあります。

こういったオブジェクトを Creation Kit (CK) では自由に配置できますが、それらをゲーム内で固定したいときがあります。
そこで今回は、プレイヤーやNPCの如何なる行動でも動かされないオブジェクトの配置法について書き残しておきます。もしかしたら例外となるオブジェクトもあるかもしれませんが、今のところ不具合には遭遇していない方法です。


目次

  1. バニラの固定オブジェクトを配置してみる(Static)
  2. 取得もアクティベートもできないものを固定配置(Static)
  3. 取得できるものを固定配置(MiscItem)
  4. アクティベートできるものを固定配置(Activator)

1. バニラの固定オブジェクトを配置してみる(Static)

まず、CK の Render Window(レンダーウィンドウ)の操作確認も兼ねて、元々固定されているオブジェクトがどういうものか見ておきましょう。
テストする場所としてドラゴンズリーチを表示してみます。

オブジェクトもマーカーもコリジョンもあって、場所によってはカオスな状況です。
オブジェクトを配置するときに良く使う操作を挙げてみます。

  • 「1」を2回 … 選択対象を非表示にする(1回だと半透明、2回で非表示、3回で再表示)
  • 「Alt+1」… 非表示にしたものをすべて再表示する
  • 「X」を押しながらドラッグ … X軸(横)方向に移動
  • 「C」を押しながらドラッグ … Y軸(縦)方向に移動
  • 「Z」を押しながらドラッグ … Z軸(高さ)方向に移動
  • 「F」… 重力に従って下に落とす

ドラゴンズリーチの床でテストしたいので、いらないものを選択して「1」を2回押し、非表示にします。

これで見やすくなりました。

次に、Object Window(オブジェクトウィンドウ)から固定できるものを選んで配置してみましょう。CKでは「Static」に分類されているものです。
WorldObjects > Static を選択し、Filter に「Lantern」と入力するとランタンが選別されます。

一番上の「CandleLanternwithCandle01」を選択し、レンダーウィンドウにドラッグすると配置できます。

こうして「Static」から配置したオブジェクトは、ゲーム内で動かすことはできませんし、アクティベートもできません。

目次へ戻る


2. 取得もアクティベートもできないものを固定配置(Static)

それでは、Static オブジェクトを新たに作成してみることにしましょう。例として、バニラでは取得・移動ができてしまう黄金のディベラ像を別の Static オブジェクトとして作成し、固定配置します。

ディベラ像の nif ファイルのパスをコピーする

オブジェクトウィンドウから Items > MiscItem を選択し、Filterに「dibella」と入力すると、「StatueDibellaGold」が選別されます。

「StatueDibellaGold」をダブルクリックして設定画面を開きます。Model の右側の「Edit」をクリックすると3Dモデルを見ることができます。

表示されたモデルで良ければ、左上の Model File Name のパスをドラッグ選択してコピーします。この nif ファイルパスは後で使います。

既存の Static オブジェクトを複製する

オブジェクトを作るときは、似たような既存オブジェクトを複製すると良いです。複製したものに対して、変更したい部分だけ設定し直して使います。
ここでは、上の方で出てきた Static のランタンを複製することにしましょう。「CandleLanternwithCandle01」を右クリックして「Duplicate」を選択すると、すぐ下に複製品ができます。

複製品をダブルクリックして設定画面を開き、Model の右側の「Edit」をクリックします。

するとランタンのモデルが表示されますので、Model File Name の右側の「Edit」をクリックします。

nif ファイルの選択画面になりますので、ファイル名のところに先ほどコピーしたディベラ像のパスをそのまま貼り付けます。

モデルが変更されて、ランタンから黄金のディベラ像になりました。

設定画面に戻って Model の部分が書き変わっていれば成功です。IDの部分は分かりやすいように変更しましょう。ここでは「DibellaStatic」にしました。

「OK」を押して確定しようとすると、次のようなメッセージが出ますので「いいえ」を選択します。IDが変更してあるときに、別のオブジェクトとして保存するかどうかです。

さらに次のような確認をされますので、今度は「はい」を選択します。本当にIDを変更して良いのかという確認です。

これで Static オブジェクトのディベラ像の完成です。

「DibellaStatic」をレンダーウィンドウに配置すれば、動かないディベラ像として置くことができます。Static なので取得もアクティベートもできません

目次へ戻る


3. 取得できるものを固定配置(MiscItem)

次に、取得できるものを固定します。食べ物など、固定した上でプレイヤーが取得できるようにもしておきたい場合です。

MiscItem の挙動

MiscItem に分類されるものは、ゲーム内で取得・移動ができます。バニラのディベラ像もそうです。
挙動の確認のために、オブジェクトウィンドウの MiscItem から「StatueDibellaGold」をレンダーウィンドウにドラッグし、配置してみます。

ゲーム内でディベラ像に突撃すると、ディベラ像は倒れてコロコロと転がります。取得することもできます。これが通常の MiscItem の挙動です。

MiscItem を「Don't Havok Settle」とスクリプトで固定する

まずはレンダーウィンドウに配置したディベラ像をダブルクリックし、設定画面を開きます。右下の「Don't Havok Settle」にチェックを入れると、直接触れたり魔法を当てたりしない限り動かなくなります。重力も無視されます。

上の設定だけだと触れた瞬間に動いてしまいますので、完全固定してみます。「Scripts」タブから「Add」を選択します。

スクリプト選択画面になりますので、Filter に「defaultd」と入れ、「defaultDisableHavokOnLoad」を選択します。

スクリプトが追加されたら「Properties」をクリックします。

上から2つ目の「havokOnHit」を選択して「Edit Value」をクリックします。

すると次の画面のように Value が「False」に変わりますので、このまま「OK」します。

以上で設定は終わりです。このスクリプトのプロパティは4つありますが、havokOnHit 以外はデフォルトで動かないような設定になっていますので、指定する必要はありません。
ゲーム内で触れても Havok が働かないようになりましたので、完全に固定されます。通常通り取得することは可能です。

目次へ戻る


4. アクティベートできるものを固定配置(Activator)

個人的に「Static なアクティベーター」と呼んでいます。
アクティベーターとは、その名の通りアクティベートできるオブジェクトを指しており、扉を開けるレバーなどがそうです。普通はスクリプトをくっつけて何らかのアクションを起こさせる用途に使います。
これはCK上で「Activator」に分類されていますが、新たに作成して配置したときにゲーム内で動いてしまうものと固定されたままのものとがあります。どうやら nif ファイルによって違いが出るようで、同じ「Static」に分類されるオブジェクトの nif でも、明かりの点いたランタンの nif はアクティベーターに流用しても固定されていますが、消えたランタンはアクティベーターに流用すると動いてしまいます。

そこで nif の種類に依存せず、とにかく動かないアクティベーターを作成したいと思います。簡単に言えば Static オブジェクトに透明なアクティベーターを被せる という作業を行います。

Static なディベラ像を配置する

これは上記 2. 取得もアクティベートもできないものを固定配置(Static) の方法で設置します。

透明なアクティベーターを作成する

それでは、既存のアクティベーターを複製しましょう。オブジェクトウィンドウで WorldObjects > Activator を選択し、Filter に「wetemp」と入力すると「WETempActivator」が出ますので、右クリックして Duplicate します。

複製された方の設定画面を開き、IDを分かりやすいものに変更します。ここでは「ToumeiActivator001」にしました。
Name の部分は、ゲーム内でクロスヘアを合わせたときに表示されるテキストになるので適切に設定しましょう。
それらを設定したら Model の右側の「Edit」をクリックします。

3Dモデルが表示されますので、Model File Name の右側の「Edit」をクリックします。

次の画面で、何も変更せず「キャンセル」を押します。

3Dモデルが空欄になりますので「OK」します。

下の画像のようになっていれば成功です。「OK」を押します。

続いて確認メッセージが2つ出ますので、1つ目は「いいえ」、2つ目は「はい」を選択します。

これで3Dモデルの無い、透明なアクティベーターが完成しました。

Static オブジェクトに透明なアクティベーターを被せる

レンダーウィンドウに配置した Static のディベラ像を選択してから、ツールバーにある「T」のマークをクリックします。

Select Form というダイアログが出ますので、Filter に「toumei」と入れて「ToumeiActivator001」を選択します。

ディベラ像を囲むように赤い半透明のボックスができました。透明なアクティベーターが被さっている状態です。ただしこのままでは有効に働かず、いくつかの設定をする必要があります。
この赤いボックスをダブルクリックします。

「3D Data」タブの Rotation 内、Z の数値を「0以外」にします。ここが 0 だと何故かアクティベートできません。

「Primitive」タブに移り「Player Activation」のチェックを入れます。

さらに「Scripts」タブに移り、アクティベートしたときに実行されるスクリプトを「Add」から指定します。ここではシンプルにメッセージを表示させるだけのスクリプトを作って指定してみます。

スクリプト選択画面で [New Script] を選択。

Name にスクリプトの名前を入れます。ここでは「ToumeiScript」にしました。
一旦「OK」を押して確定します。スクリプト内容を記述する前に一度確定しておいた方が、余計な作業をしなくて済むのでおすすめです。

スクリプトが追加されたら、右クリックして「Edit Source」を選択します。

次の画面の1行目だけは既に記入されているはずです。
下記のようなコードを書いて「File > Save」を行います。

Event OnActivate(ObjectReference akActionRef)
 Debug.Notification("ディベラ像をアクティベートした!")
EndEvent

Compiler Output: に結果が出ます。成功した場合は赤枠内のように表示されます。

ここでスクリプトの記述に問題が無いのにエラーが出てしまう場合は、おそらく必要なソースファイルがありません。
バニラのソースファイルは「Data\Scripts.rar」に収められていますので、中身の psc ファイルを「Data\scripts\source」フォルダに解凍しておきましょう。

以上で設定は終わりです。ゲーム内でディベラ像が動かないことと、アクティベートしてスクリプトが実行されることを確認しましょう。プレイヤーが実際にアクティベートしているのは ToumeiActivator001 ですが、ディベラ像をアクティベートしているように見えるはずです。

ちなみにCKでespを新規作成した場合は、NMM等でそのespにチェックを入れ、ロードオーダーに加える必要があります。これを忘れてスカイリムを起動して「あれ?反映できてないよ…。あーそうだ、しまった!」ってなることが多々あります。自分は。


2 件のコメント:

  1. とても分かりやすくて自分でもできました!
    簡単なので宿の皿や食べ物を固定してやりましたよ!
    まぁ多すぎて途中で挫折しましたが...

    返信削除
    返信
    1. こんにちはーうまくお伝えできたようで良かったです!
      意外と簡単ですよね。とりあえず「Don't Havok Settle」にチェックを入れるだけでも勝手に動かなくなるのでお勧めです。
      しかしながら、あんな大量のオブジェクトにHavokが働いてるってすごいことだと思います。

      削除

注: コメントを投稿できるのは、このブログのメンバーだけです。