Modのすゝめ:自分だけのパークツリーを作ろう

CSF

Custom Skills Frameworkを使えば自分だけのパークツリーをSkyrimに追加することができるようになります。蟹を食べて強くなる蟹関連のパークツリー、セラーナのような特定の従者を強化するパークツリー、自宅や店の拡張をパークツリーで管理するということも可能です。パークツリー作りは非常に面白いのですが、このフレームワークを使ったMODはまだまだ少ないので布教したいと思います。

以下でパークツリーを作るには何をどうすればいいのかをざっくりと紹介したいと思います。

初めに


スキル名やスキルレベル、専用のパークポイントなどは
NetScriptFramework\Plugins以下にあるCustomSkill.xxxxxx.config.txtで設定します。
xxxxxxにはMOD名などを入れて他のMODと被らないようにしましょう。(保存形式はUTF8やUCS2 LE BOMなどにしないと文字化けします。)

まずはこの設定ファイルを開いて、CK上で何を定義する必要があるか見ていきます。
パークツリーの設定ファイルのサンプルをここに置いておきます。->DL

基本設定


CSFSettingBase01
スキル名

Name = “スキル名”

レベルアップメッセージを表示しているときや、カスタム特典メニューにもここで設定したスキル名が表示されます。

スキルの説明文

Description = “ここにスキルの説明を入れてください”

スキルの説明はパークツリーの名前とレベルの下に表示されます。何も表示したくない場合は””と設定してください。

背景の設定

Skydome = “DLC01/Interface/INTVampirePerkSkydome.nif”
SkydomeNormalNif = false

背景として使用するスカイドームを指定します。ここではINTVampirePerkSkydome.nifは狼男の背景を指定しています。Interface/INTPerkSkydome.nif “を基にしたスカイドームを使う場合は、SkydomeNormalNifをtrueに設定する必要があります。

グローバル変数:必須


スキルレベル

LevelFile = “MOD名.esp”
LevelId = 0x***

現在のスキルレベルとして使う変数を指定してください。
IDは0x***としてください。例えばCK上で03000123であった場合は、ロードオーダーと先頭の0は無視して0x123としてください。

次のレベルへの進捗度、現在の経験値

RatioFile = “MOD名.esp”
RatioId = 0x***

スキルのレベルアップがどれだけ近いかを表す変数を指定してください。
値は常に0と1の間。グローバル変数はfloat型であること。

スキルレベルの上昇メッセージ

ShowLevelupFile = “MOD名.esp”
ShowLevelupId = 0x***

ここで指定されたグローバル変数の値が変わると「”スキル名”がXに増加しました」と表示されます。Xはこのグローバル変数に設定した値です。 変数の初期値は0に設定してください。

パークツリー画面への移行

ShowMenuFile = “MOD名.esp”
ShowMenuId = 0x***

ここで指定したグローバル変数を1に変更すると、このスキルのパークツリーがすぐに開かれます(メニューコントロールが有効でゲームが一時停止していない限り)。 変数の初期値は0に設定してください。

グローバル変数:必要に応じて設定してください


パークポイントの設定

PerkPointsFile = “MOD名.esp”
PerkPointsId = 0x***

通常のパークポイントを使う場合は
PerkPointsFile = “”
PerkPointsId = 0

レジェンダリーの回数

LegendaryFile = “MOD名.esp”
LegendaryId = 0x***

使わない場合は
LegendaryFile = “”
LegendaryId = 0

何回レジェンドされたかを記録するグローバル変数を指定してください。
これが設定されていない場合は、そのスキルを伝説化することはできません。

スキル名の色

ColorFile = “Mod名.esp”
ColorId = 0x***

デフォルトの白にする場合は
ColorFile = “”
ColorId = 0

設定ファイルのリロード(デバッグ用)

DebugReloadFile = “MOD名.esp”
DebugReloadId = 0x***

使わない場合は
DebugReloadFile = “”
DebugReloadId = 0

コンソールを開き、”set 変数名 to 1 “と入力すれば、設定ファイルがリロードされる。
メモリリークなどが起きるらしいので通常は使わないように。ファイルをリロードする際には、パーク選択画面を必ず閉じておくこと。

パークツリーの設定


パークツリーの始点

Node0.Enable = true
Node0.Links = “1”

必須。基本的には触らない。

Enable:ノードの有効/無効
PerkFile:パークがあるMod名
PerkId:パークのID
GridXとGridY:ノードの座標
・負の値は使わないこと
・GridXは値が大きなるにつれて左へ←←←
・GridYは値が大きなるにつれて上へ↑↑↑
XとY:より正確な配置のための補正値
・小数点以下の値を持てる。例.0.5など
・負の値を持てる。右や下に動かせる
Links:指定したノードに光の線を伸ばします。
・使わない場合はLinksの行を削除するか、Links=””と記述する
・Node1.Links = “2”でNode1からNode2へ光の線を伸ばす
・Node1.Links = “2 3″でNode1からNode2とNode3へ光の線を伸ばす

パークツリーの記述例

一番目のパーク
Node1.Enable = true
Node1.PerkFile = “MOD名.esp”
Node1.PerkId = 0x***
Node1.X = 0
Node1.Y = 0
Node1.GridX = 3
Node1.GridY = 0
Node1.Links = “2”
これでNode1のパークからNode2のパークへ光の線が伸びます。

二番目のパーク
Node2.Enable = true
Node2.PerkFile = “MOD名.esp”
Node2.PerkId = 0x***
Node2.X = 0
Node2.Y = 0
Node2.GridX = 3
Node2.GridY = 1
Node2.Links = “3 4”
これでNode2のパークからNode3とNode4のパークへ二つの光線で伸びます。

三番目のパーク
Node3.Enable = true
Node3.PerkFile = “MOD名.esp”
Node3.PerkId = 0x***
Node3.X = 0
Node3.Y = 0
Node3.GridX = 3
Node3.GridY = 2

四番目のパーク
Node4.Enable = true
Node4.PerkFile = “MOD名.esp”
Node4.PerkId = 0x***
Node4.X = 0
Node4.Y = 0
Node4.GridX = 2
Node4.GridY = 2

と記述すると、下のような配置になる。

●3……….●4
↑……..↗
↑…↗
●2


●1

背景を作ろう


ここからはパークツリーの背景作りについて紹介します。ここでは画像の作り方などは説明はしません。どのファイルのどの個所を変更すればいいかだけをザックリ説明していきます。

1.ベースモデルの抽出
Skyrim – Meshes0.bsaからmeshes\dlc01\interface以下にある
スカイドーム:intvampireperkskydome.nif
を取り出してください。それをData\Interface\(プロジェクト名)以下に配置して、好きな名前に変えてください。

2.背景画面の変更方法
抽出したスカイドームを編集していきます。実際に使われるのは人狼部分だけなので吸血鬼部分は無視してください。


CSFSkydome01
102BSorderNode ->110 NiNode ->111 BSTrishape – Moon:0 -> BSEffectShaderProperty
のSource Textureの項で月の部分を変更することができます。

シンボル(ぴかっと光る部分)
CSFSkydome02
102BSorderNode ->170 BSTrishape – clmage00 -> BSEffectShaderProperty
Source Textureを変更することでシンボルを変えることができます。

CSFSkydome02Symbol
シンボルが張られる板モデルは時計回りに45度傾いています。
そのためシンボルは上の画像の矢印の向きが真上となるよう、反時計回りに45度傾けてください。


雲の色を変えたい場合はWolfSky0*という名前のノードを探して、BSEffectShaderPropertyの一番下にあるGreyscale Textureを変更してください。

3.作った背景をCSFに読み込ませよう
スカイドームが出来たらパークツリーの設定ファイルに戻って、

Skydome = “Interface/(プロジェクト名)/(スカイドーム名).nif”
SkydomeNormalNif = false

に変更してください。

CKでパークを作ってみよう


CKで必要なグローバル変数を定義したら、いよいよパーク作りです。見ればわかると思う。
パーク
CSFPerk01
パークにランクを設定したい場合は右上の赤枠に次のランクとなるパークを指定してください。パークツリーの設定ファイルに追加で記述する必要はありません。パーク同士がお互いを次のランクのパークとして指定しないように気をつけてください。フリーズの原因になります。

パークエントリー
CSFPerk02
パークの効果はここで設定します。
タイプは三つあるので順に説明していきます。

Quest
このパークを取得した際に選んだQuestのステージを設定した値に進めます。
プレイヤー以外のものに対して変更を加えたい場合、専用のQuestを用意してPerk取得時に対応するステージのスクリプト動かすといった具合で実装することが可能です。NPCにアビリティやスペルを追加、自宅や店の拡張などにも利用できます。こういった使い方のほうがCustom Skill Frameworkで作る意義が大きいと思います。

Ability
設定したアビリティが適用されます。体力やスタミナ強化などの魔法効果をパーク経由で追加できます。

Entry Point
ダメージ補正などいろいろ。バニラのものを参考にしてください。

赤枠:パークにランクを設定した場合の注意
高ランクのパークを所持しているときは、低ランクのパークは無効となるように条件を設定することをお勧めします。

ムアイクは疲れた

コメント

タイトルとURLをコピーしました