CK Tips

CKで複数のマスターファイルを読む(multiple master file selected load. load operation abortedのエラーが出る場合)

スカイリムのルートフォルダ(TESV.exeがあるところ)にある SkyrimEditor.ini をテキストで開いて編集します。
[General]項目に以下のように bAllowMultipleMasterLoads=1 を追加してください。
[General]
bAllowMultipleMasterLoads=1

CKでDLCのesmファイルを読む

スカイリムのルートフォルダ(TESV.exeがあるところ)にある SkyrimEditor.ini をテキストで開いて編集します。

[Archive]
SArchiveList=
SResourceArchiveList=
の最後尾に, Dawnguard.bsaというふうに追加する。
例:
SArchiveList=Skyrim - Textures.bsa, Skyrim - Meshes.bsa, Skyrim - Animations.bsa, Skyrim - Voices.bsa, Skyrim - Interface.bsa, Skyrim - Misc.bsa, Skyrim - Sounds.bsa, Skyrim - VoicesExtra.bsa,  Skyrim - Shaders.bsa, Update.bsa, Dawnguard.bsa, HearthFires.bsa

フィルターのワイルドカード

CKのフィルターはワイルドカード(ワイルドカード=*の部分がなんであれ一致します)が使えます。
たとえば、encbanditは通常のエンカウントする山賊ですが、山賊の両手持ちだけ抽出したい場合、
encbandit*2hと入力します。


プラグインを読み込むときの最初のエラーをスキップする設定にする

スカイリムのルートフォルダ(TESV.exeがあるところ)にある SkyrimEditor.ini をテキストで開いて編集します。
[MESSAGES]
bBlockMessageBoxes=1
※ただし全部のエラーをスキップしてしまうのでエラーがよくわからないデメリットもあります。スカイリムフォルダのEditorWarnings.txtにエラーが記載されてます。

.espファイルで編集された項目一覧の表示(編集した項目の解除)


File -> Data... Plugin/Master Files の中から編集項目を一覧したいプラグインを選択
赤枠 Details... ボタンを押すと一覧が表示されます。
この項目の中で編集をとりやめたい(Ignored)場合はその項目を選んで Deleteキー
なにやらメッセージが出ますが はい を選択。
編集をとりやめた項目は青枠のIマークが出ます。
変更を適用するにはこのあと、そのespファイルを CKで読み込みセーブが必要 です。

マスター指定の解除

{File -> Data...]で該当のespファイルを選択して右上ParentMastersの欄で解除したい.esp/.esmをCtrl+Deleteで削除します。
あとは該当のespをアクティブにして読み込みし保存します。

espファイルのバックアップ

スカイリムのフォルダ\Backup にespのバックアップがあります。
保存時の時にここにも保存しているようです。

レンダーウィンドウでのキー操作一覧



プレビューウィンドウの操作方法

視点の回転:Shift押しながらマウス移動
視点の上下左右移動:スペースキー押しながらマウス移動 or マウス中クリックしながらドラッグ
Mキーでマーカーのオン/オフ
クリックでオブジェクトの選択
ダブルクリックでEdit出す

プレビュー画面でモデルデータを確認する。

装備やエフェクトを作った時にCKに登録したとき、espを一旦読み込み直したりファイル名を変えないとプレビューのモデルデータが更新されません。
必ずskyrim.esm等のプラグインを読み込み、ActorでもActivatorでもなんでも右クリックでPreviewを開いておきます。
ドラッグアンドドロップで放り込むだけです。
必ずData下のフォルダにいれることと、ドラッグアンドドロップしたデータは別のメッシュデータ開いても残るようなので、気になるときはプレビューを一回閉じてください。

スクリプトのプロパティの解除

スクリプトに付いたプロパティが不必要になった場合は、
スクリプトの行を消してから、一旦プロパティ一覧を開いて、OK押さない限りは消えません。

長さの単位

CK上での長さの単位は2つあります。
ひとつはフィート(ft,feet,単数形foot,フット)
1ft=30.48 cm
だいたい30cm、そのままの意味で(靴履いた状態で)一足分の長さと思うと覚えやすいでしょう。

魔法のRange,Areaなどがフィート単位です。

ふたつめはUnitです。
1Unit=目安1.4cmぐらいです。
参考:CK Wiki Unit
人間は種族や男女の身長差に関わらずすべて、128Unitです。
Unitはボーンのボックスサイズで規定されているからです。

GetDisatance(),GetHeight(), GetWidth(), GetLength()などがUnit単位です。

Condition

Spell,Magic Effect, PackageやPerk等の様々なところにでてくるConditionとは 条件文 です。
この条件にあったら効果が発動します。


Conditionのチェックは一回たびに発動し、その負荷はスクリプトの関数と同等の重さです。

ANDとORについて

ANDとORは常に その行のあとにしか影響 しません。

A AND
B OR

ならA AND B、つまりAとBが両方真なら効果が発動します。

ORも同じくその次にしか影響しないので
A OR
B AND

ならA OR B、つまりAかBのどちらかが真なら効果が発動します。

2行ならわかりやすいですが複数行だとちょっとややこしくなりますが、
AND/ORは 直後にしか影響を与えない ことを考えると分かりやすいです。


画像のような場合
Gauntlets=手 AND
Helmet=頭 OR
Boots=足 AND
Cuirass=胴 AND

手AND(頭OR足)AND胴 になります。
手と胴の装備は必須、頭と足の装備はどちらか一つです。


(手 AND 頭) OR (足 AND 胴)
手と頭が揃ってるか、もしくは足と胴が揃ってる場合に発動します。
ORは直後にしか影響を与えないので、手と頭という()でひとまとめにできません。
その場合は分解して、
(手 OR 足) & (頭 OR 足) &(手 OR 胴) & (頭 OR 胴)
にすればいいのです。

手 OR
足 AND
頭 OR
足 AND
手 OR
胴 AND
頭 OR
胴 AND

処理する数が倍になってしまうので、あんまり複雑な条件はおすすめしません。
スクリプトとして違ってエラーを吐き出さなくてわかりにくいのも難点で、負荷はしっかりあるので、
基本的には簡潔な条件にしましょう。


クラフトカテゴリの追加の仕方


メニューバーのGameplay->Setting...でFilterにkeywordと入力。
sGenericCraftKeywordName08か~09のString Valueにカテゴリの表示名を書きます。
ObjectWindowのKeywordに新しくキーワードを作り、適当な名前をつける。(例"ArmorMaterialMOD")
Gameplay->Default Objects...を開く。
Type FilterをKeywordsにして、Keyword - Generic Craftable Keyword 08 か 09に新しく追加したキーワードを選択。
あとは任意のWeaponやArmor等にKeywordsをAddしてください。

※DLCで01~07, 10は使ってます。被った場合はその他カテゴリに移動します。残り二枠しかないのでmodder間での協議の必要性あり?



戦闘の割り込み

戦闘時にNPCに何かをさせようとすると中々うまく行きません。
戦闘中のAIは優先度の高い順から処理するので、事あるごとに上書きや中断されます。
たとえば、フォロワーが回復呪文使用中に殴られたりすると中断されてしまいます。
暗黙のAI上の割り込みは変更できないのと、優先度が分かりにくいのが厄介です。

これらの対処法は「素早く」「確実に」 処理を終わらせることです。

素早く処理する

まずは動作そのものをなるべく速くします。
新規で魔法を作りCasting Timeを短縮したり、早く終わるモーションを使うようにしたりなどです。

スクリプトの方面では処理に時間のかかる関数を使わないことです(Find系の関数やIsInMenu()など)。
同Wiki内のスクリプト最適化Tipsを参考に。

確実に処理する

Procedureやシーンなどの処理は画面と同期する必要があるため、Waitを挟むことで安定する場合があります。

事例によって違ってくるので詳しくは書きませんが、ifやconditionを使っての条件制約や、中断された場合の処理を加えることで、確実に処理できるようにします。

そもそも、中断させられるのを防ぐのも有効です。
処理中にStaggerの耐性を持たせたり、SetGhostで当たり判定なくしたりなど。

同Wiki内の関数の処理についても参考にどうぞ。

魔法を使えないNPC(動物など)に魔法を使わせる


1.まず使わせたい魔法のAbility版を作る。
そのNPC専用に新規またはコピーしてSpellを作成し、SpellのTypeをAbilityにしてます。

2.Packageを作ってUseMagicを使う。
Packageの作り方はCharacter->Package->UseMagicをDuplicateします。
コピーしたものは名前を適当に変えて、いいえ(IDを新しくするか)→はい(レファレンスを引き継ぐか)。

コピーしたものを開いて右上Package TypeをPackage TemplateからPackageに変えます。
Public Package Data内のNameがSPELLTypeがTargetselectorの項目を選んで、
右側、SelectedPackageData内のSpell Range Targetボタンを押します。
出てきたPackageTarget欄のAnyObjectのObject IDから作ったAbilityを選びます。
そのほかの設定は作った魔法によるのでいろいろ試してください。

3.Packageを適用する。
2で作ったPackageを使わせたいNPCに適用させます。

Character->Questから新規でQuestを作ります。
Quest Aliasタブで新規Aliasを作ります。
新規で作ったAliasを開き、Alias Package Data欄内で右クリックしてAddします。
2で作ったPackageを選択します。

Script側で
作ったAlias.ForceRefTo(NPC)でAliasを魔法を使わせたいNPCにかぶせて
OnPacakageEnd等のEventまたはWaitでその後作ったAlias.Clear(NPC)でAliasから開放します。

これでバニラでAbilityを使えるアクターはすべてその魔法を使えるようになります。
犬や山羊や蟹などが魔法を使えるようになります。Abilityが使えない種族もいるので注意。


WeatherのDirectional Ambientの方向


大雑把に方角で書きましたが、実際には面の向きと適用される色はノーマルマップで判別されます。

X-:西側の色
X+:南側の色
Y+:北側の色
Y-:東側の色

Z+:上(天井など)
Z-:下(地面)

例:日が昇るのは東で、太陽の当たる面の環境光なら、X-(太陽光の色も含まれる点に注意)

ConditionのGetCurrentDeliveryType

魔法のDeliveryType判定です。
0:Self
1:Contact
2:Aimed
3:TargetActor
4:TagetLocation

装備スロットの割り当て

Armorには装備箇所を決めるスロットがあり、それをどれに割り当てるかはArmorのBiped Objectの項目で変更可能です。

30 - 頭部
31 - 髪
32 - 胴体
33 - 両手
34 - 前腕(ひじから手首まで)
35 - 首飾り
36 - 指輪
37 - 足
38 - ふくらはぎ
39 - 盾
40 - 尻尾
41 - 長髪
42 - 頭飾り
43 - 耳
50 - 切断された頭部
51 - 切断部分
61 - FX01(ドラゴンアスペクト)

NEXUSフォーラムで提案されている未使用Slotの割り当て
(これはnif skopeのBSDismemberSkinInstanceのPartitionsリストにもとづいてます)

44 - 顔、口
45 - 首
46 - 胸、上着
47 - 背中
48 - その他1
49 - 腰1、上着
52 - 腰2、下着
53 - 脚1、上着、右脚
54 - 脚2、肌着、左脚
55 - 顔、装飾品
56 - 胸2、下着
57 - 肩
58 - 腕2、肌着、左腕
59 - 腕1、上着、右腕
60 - その他2