今更なオブリビオンブログ
おもにMOD関連のメモを書いていくと思います、MODをいじったり、作ってるのが楽しいです。
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

MOD作り12
ズームが出来るMODを作るといっても、やっている作業はまあ要するに、双眼鏡に付いているオブジェクトスクリプトのズームする部分をクエストスクリプトに移し変えて、アイテムが無くても動作するようにするわけなんですが、これが一筋縄ではいきません。

主な動作としては、右クリックを押しながらホイールの操作をすることで、FOVの値を変えてズームをするというものです。

この部分はオブジェクトスクリプトの「GameMode」で書かれています。
オブジェクトスクリプトやマジックエフェクトスクリプトで、「GameMode」を使った場合は、近くにそのオブジェクトがあれば、毎フレーム実行されるわけなんですが、クエストスクリプトの場合は、指定が無い場合は5秒毎に一回の実行となっています。
ですが、クエストスクリプトは実行頻度を変更することが出来るので、どこかでクエストスクリプトの実行頻度を高く変更する命令を書けばそれでいいはずです。
(FOVを変更するには、OBSEで追加される関数の「con_SetCameraFOV」を使います。これはコンソールコマンドでFOVを変更した時と同様で、変更しても、すぐに元の状態に戻ってしまいます。なので、スクリプトで常に実行し続ける必要があるようです。)


しかし、ここで問題が起こりました。
作ったMODだけで動作確認をしたときは、うまくいったのですが、現在の自分のMOD環境でテストすると、うまく動いてくれません。
どうやら、他のFOV変更のMODの影響を受けているようなのです。これを回避して、併用もできるようにするためには、ズームMODの実行頻度を毎フレーム実行するぐらいにを高くして、ズームMODのFOV変更のほうを優先させるようにしなければいけません。
ですが、クエストスクリプトは、実行頻度を変更することができる代わりに、毎フレーム実行するという設定に出来ないようなのです。

どういう事かというと、クエストスクリプトは「fQuestDelayTime」の変数を宣言して、数値を変更することで実行頻度を変更出来ますが、この値をある程度まで小さくすると、それよりも小さくしても実行頻度が変わらなくなるのです。
…なので、どうやらクエストスクリプトで毎フレーム実行するのは、事実上不可能なようなのです。



そこで、ちょっと一工夫して、ズームの動作をするクエストスクリプトは、マジックスクリプトエフェクトに変更して、右クリックを押したらアビリティをAddSpellして、必要なくなったらRemoveSpellするように変えました。
これにより、右クリックを緩めに監視するクエストスクリプトと、実際にズームの動作をするマジックスクリプトエフェクトという風に分けられて、ズームをしていない時は負荷が小さくなるという効果もあります。

これで解決したかと思ったら、今度は別の問題が発生しました。



AddSpellをすると、そのたびに魔法を追加された旨のメッセージが発生してしまうのです。(RemoveSpellの方は、元からメッセージを発生させない)
これはなんとも目障りです。

最悪、「気にしない」という最終手段も視野に入れて、どうにかできないものかと思い、調べてみると、解決策が複数あるようでした。
その方法は…次回へ続きます。
スポンサーサイト

テーマ:Oblivion - ジャンル:ゲーム

コメント

コメントの投稿














管理者にだけ表示を許可する


トラックバック
トラックバック URL
http://5588ob.blog.fc2.com/tb.php/37-a1b33804
この記事にトラックバックする(FC2ブログユーザー)

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。