Skyrimにおいて、スクリプトのついた装備MODが色々あります。自分の好みの効果に少しだけ手直ししたいけど、どこから手をつけていいかわからず挫折した、なんて経験ありませんでしょうか。自分もスクリプトは殆ど知らないので、これに関しては初心者であります。そんな初心者目線の改造例の紹介です。
Ring of Sunnies Woeを例にします。スニーク時に透明になってステルス効果が大幅に上昇する指輪です。
※改造したMODを作者の許可無くアップロードしないよう注意してください。ネクサスじゃなければOKとか、そういうのも無しでお願いします。アップローダに変造MOD上げる人いますが、あれ作者が見たらいい気分しないと思います。
さて、このMODの何を改造したいかといいますと。スニーク時に透明化するのは良いのですが、ほぼ完全に透明になってしまう為、三人称視点で自キャラがちょっと見づらいです。効果はそのままで、見た目の透明度を下げて視認性を上げたいと思います。
Skyrimのスクリプトについて
Skyrimのスクリプトは、Papyrusという言語なのはみんな知ってると思います。これは必ずなにかしらのオブジェクトにくっついてます。単体で何のオブジェクトとも関わり無く、勝手に動いてる。って奴はいないと思います。
これから見ていきますが、今回はRing of Sunnies Woeという指輪にひっついています。Silver RingのArmor Addonを使っているので見た目は普通のSilver Ringです。
ですがこの指輪には、こんな感じでミギーみたいにスクリプトがくっついてます。スクリプトは指輪から離れたら、生きていくことができません。オブジェクトあってのスクリプトです。
それから、この寄生生物スクリプトは普段は寝てます。
スクリプト=四六時中動いてる
とは限らないです。起きる条件があって、「殴られた」とか「調べる」とか作り方次第です。そういったトリガで動き始めます。「0.03秒ごと」だと、0.03秒だけ寝てます。ほとんど動いてるので、こういうのが増えると、だんだん負荷が上がっていきます。
装備や家具といった目に見えるオブジェクト以外にも、Questのように目には見えないオブジェクトもあります。
スクリプトMODの改造前の前提条件
1つ、絶対に必須の前提条件があります。それは「ソースファイルがMODと一緒に配布されていること」です。これが無いことには手も足も出ないので、無かった時は素直に諦めましょう。
Ring of Sunnies Woeは、ソースが一緒に配布されてました。作者のMofoMojoさんに感謝です。Scripts/sourceフォルダの中に入っています。
インストーラを使っていれば大丈夫ですが、このフォルダ構成でソースが入っていないと、CKからエディットやコンパイルが出来ないので注意してください。
今回は大丈夫ですが、SKSEの関数を使ったスクリプトを変更する場合は、SKSEのsourceフォルダの中身も必要ですのでお忘れなく。
改造前にTES5Editで事前調査
まずはMODの構成を調べないと、手も足も出ません。TES5Editで開いてみます。TES5Editでスクリプトのコンパイルとかできませんが、MODの構成を把握するのに便利です。
左窓だけ最初に見ておくだけでも、MODの全体像が掴めます。CKでむやみにオブジェクト探し回らずに済みます。
Armor
指輪としての装備です。Armor AddonはSilverRingを流用してました。つまりオリジナルのグラフィックではないです。
Constructible Oblect
生産レシピです。生産可能な装備のようです。
Keyword
指輪に付けられてるKeywordです。
MagicEffect
Invisibilityという名前のエフェクトです。Editor IDはmm_SunniesWoeEffectです。
Spell
Sunnies Woe Spellという新魔法。魔法といってもキャストする物ではなく指輪にくっつけておく物でしょう。唱えて透明になる魔法を追加するMODではありませんし。Editor IDはmm_SunniesWoeSpellです。
Worldspace
これちょっと曲者かもしれません。中を見てみます。
Update.esmで追加されたCamera Dataの値を潰しています。これはSkyrim1.8から追加されたパラメータだそうです。UESPWikiでも、イマイチ何の目的かわからないとなってました。
このMODは最新バージョンでも2012年2月です。 1.8のリリースが2012年11月頃?っぽいので、意図的に上書きしてるとは思えません。恐らく1.8リリース前に作られた、ただのDirty Editだと思います。しかしUpdate.esmがマスター指定されている以上、TES5Editの自動クリーニングでは、これをDirtyEditと判断しないです。正当な書き戻しと識別されると思います。
マニュアルクリーニングするのであれば、Worldspaceごと削除しちゃっていいと思いますが、自己責任でお願いします。
以上の項目をまとめると、重要な点は
- 指輪の追加1個
- エフェクトの追加1個
- 魔法の追加1個
といった所です。ちなみにアーカイブに入っていたスクリプトは2つでした。
CKで改造作業を開始
さて、いよいよCKです。TES5Editであらかじめ中身を見ておいたので、やりやすいと思います。
指輪の確認
指輪を開きます。右下の「Scripts」の所にスクリプトがくっついています。
指輪についてるスクリプトのソースを開く
このソースを見ます。
Scriptname mm_RingOfSunniesWoePOC2 extends ObjectReference
Spell Property mm_SunniesWoeSpell auto
Event OnEquipped(Actor akActor)
Game.GetPlayer().AddSpell(mm_SunniesWoeSpell)
EndEventEvent OnUnequipped(Actor akActor)
Game.GetPlayer().RemoveSpell(mm_SunniesWoeSpell)
EndEvent
Spell Propertyで、TES5Editで見覚えのあるSpellが接続されてます。「Event」がスクリプトを駆動させる条件。
つまり、指輪を装備した時にプレイヤーにこの魔法効果をくっつけ、外した時には撤去する、といったスクリプトのようです。
これは改変したいスクリプトではなさそうなので、Spellの方を追いかけてみることにします。
スクリプトのProperty。SPELLがくっついてます。TES5Editで見たときと同じです。こっちを探ります。
Spellを開いてスクリプトをたぐっていく
アドレスも分かっているのでこのSpellを開きます。InvisibilityというEfect Name、見覚えがありますね。
これを開くと、IsSneakingの条件の時に、mm_SunniesWoeEffectが発動するようです。なんかこれっぽい感じです、透明化。
これを開きます。Editor IDから探してもいいですし、TES5Editで見た時のアドレスからでもいいです。右下にスクリプトがくっついています。
スクリプトを開く
エフェクトのスクリプトです。
Scriptname mm_SunniesWoeEffect extends activemagiceffect
Event OnEffectStart(Actor akTarget, Actor akCaster)
if(Game.GetPlayer() == akTarget)
akTarget.SetActorValue("Invisibility",10)
akTarget.SetAlpha(0.1, abFade = true)
EndIf
EndEventEvent OnEffectFinish(Actor akTarget, Actor akCaster)
if(Game.GetPlayer() == akTarget)
akTarget.SetActorValue("Invisibility", 0)
akTarget.SetAlpha(1, abFade = true)
EndIf
EndEvent
エフェクト開始条件は、すでに見た通り「スニーク時」です。開始すると、
- ActorValueのInbisibilityを10
- Alphaを0.1
とするようです。エフェクトが終わると、それぞれ0と1に書き戻します。
スクリプトマスターじゃないので、これだけ見てもピンときません。CKwikiのお世話になることにします。
http://www.creationkit.com/Category
SetActorValueは、パラメータをActorに書き込むようです。Inbisibilityは、グラフィック無関係に、不可視状態の程度の設定ができるみたいです。
SetAlphaで、見た目の透明度を変更するようです。0で透明、1で透明無し。これが本命っぽいです。試しに0.4あたりにしてみました。
書き換えが終わったらソースをセーブ、コンパイルしてエラーが無ければ終了です。
ゲーム内で確認する
左がデフォルトでAlpha=0.1、右が0.4です。ほんのり自キャラが見えるようになりました。
僕の固有環境問題かもしれませんが、透明度つけるとちょっとテクスチャが荒れます。幽霊とかは別に問題ないのですけど。
こんな感じで、無事にスクリプトの改造ができました。
この装備使わない人でも、スクリプト使ったMODの構造と改造手順の参考になれば幸いです。
関連記事