Skyrim箱庭DIY

MODによる固有の環境不具合は自分で直して快適ゲーム。CTDにさようなら。Do It Yourself!!

Skyrimのスクリプト付き装備MODの簡単な改造例



スポンサーリンク

Skyrimにおいて、スクリプトのついた装備MODが色々あります。自分の好みの効果に少しだけ手直ししたいけど、どこから手をつけていいかわからず挫折した、なんて経験ありませんでしょうか。自分もスクリプトは殆ど知らないので、これに関しては初心者であります。そんな初心者目線の改造例の紹介です。

Ring of Sunnies Woeを例にします。スニーク時に透明になってステルス効果が大幅に上昇する指輪です。

※改造したMODを作者の許可無くアップロードしないよう注意してください。ネクサスじゃなければOKとか、そういうのも無しでお願いします。アップローダに変造MOD上げる人いますが、あれ作者が見たらいい気分しないと思います。

さて、このMODの何を改造したいかといいますと。スニーク時に透明化するのは良いのですが、ほぼ完全に透明になってしまう為、三人称視点で自キャラがちょっと見づらいです。効果はそのままで、見た目の透明度を下げて視認性を上げたいと思います。

Skyrimのスクリプトについて

 Skyrimのスクリプトは、Papyrusという言語なのはみんな知ってると思います。これは必ずなにかしらのオブジェクトにくっついてます。単体で何のオブジェクトとも関わり無く、勝手に動いてる。って奴はいないと思います。

これから見ていきますが、今回はRing of Sunnies Woeという指輪にひっついています。Silver RingのArmor Addonを使っているので見た目は普通のSilver Ringです。

SilverRing

 

ですがこの指輪には、こんな感じでミギーみたいにスクリプトがくっついてます。スクリプトは指輪から離れたら、生きていくことができません。オブジェクトあってのスクリプトです。

SilverRingとスクリプト

それから、この寄生生物スクリプトは普段は寝てます

スクリプト=四六時中動いてる

とは限らないです。起きる条件があって、「殴られた」とか「調べる」とか作り方次第です。そういったトリガで動き始めます。「0.03秒ごと」だと、0.03秒だけ寝てます。ほとんど動いてるので、こういうのが増えると、だんだん負荷が上がっていきます

装備や家具といった目に見えるオブジェクト以外にも、Questのように目には見えないオブジェクトもあります。

 

スクリプトMODの改造前の前提条件

1つ、絶対に必須の前提条件があります。それは「ソースファイルがMODと一緒に配布されていること」です。これが無いことには手も足も出ないので、無かった時は素直に諦めましょう

Ring of Sunnies Woeは、ソースが一緒に配布されてました。作者のMofoMojoさんに感謝です。Scripts/sourceフォルダの中に入っています。

MODのアーカイブの中

インストーラを使っていれば大丈夫ですが、このフォルダ構成でソースが入っていないと、CKからエディットやコンパイルが出来ないので注意してください。

今回は大丈夫ですが、SKSEの関数を使ったスクリプトを変更する場合は、SKSEのsourceフォルダの中身も必要ですのでお忘れなく。

 

改造前にTES5Editで事前調査

まずはMODの構成を調べないと、手も足も出ません。TES5Editで開いてみます。TES5Editでスクリプトのコンパイルとかできませんが、MODの構成を把握するのに便利です

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

これちょっと曲者かもしれません。中を見てみます。

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」の所にスクリプトがくっついています。

CKで開いた指輪情報

 

指輪についてるスクリプトのソースを開く

このソースを見ます。

Scriptname mm_RingOfSunniesWoePOC2 extends ObjectReference

Spell Property mm_SunniesWoeSpell auto

Event OnEquipped(Actor akActor)
Game.GetPlayer().AddSpell(mm_SunniesWoeSpell)
EndEvent

Event OnUnequipped(Actor akActor)
Game.GetPlayer().RemoveSpell(mm_SunniesWoeSpell)
EndEvent

 Spell Propertyで、TES5Editで見覚えのあるSpellが接続されてます。「Event」がスクリプトを駆動させる条件。

つまり、指輪を装備した時にプレイヤーにこの魔法効果をくっつけ、外した時には撤去する、といったスクリプトのようです。

これは改変したいスクリプトではなさそうなので、Spellの方を追いかけてみることにします。

スクリプトのProperty。SPELLがくっついてます。TES5Editで見たときと同じです。こっちを探ります。

スクリプトのプロパティ情報

 

Spellを開いてスクリプトをたぐっていく

アドレスも分かっているのでこのSpellを開きます。InvisibilityというEfect Name、見覚えがありますね。

CKでSpell情報の確認

 

これを開くと、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
EndEvent

Event 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あたりにしてみました。

 書き換えが終わったらソースをセーブ、コンパイルしてエラーが無ければ終了です。

Papyrusのソースを修正してコンパイル

ゲーム内で確認する

左がデフォルトでAlpha=0.1、右が0.4です。ほんのり自キャラが見えるようになりました。

Alpha値の違いによる自キャラの見え方の違い

僕の固有環境問題かもしれませんが、透明度つけるとちょっとテクスチャが荒れます。幽霊とかは別に問題ないのですけど。

こんな感じで、無事にスクリプトの改造ができました。

この装備使わない人でも、スクリプト使ったMODの構造と改造手順の参考になれば幸いです。

 

関連記事