Oblivion攻略ブログ 独善的仕置人

シロディール世直しの旅 - Oblivionの悪党仕置プレイ日記と攻略、CS、Modに関する記事を書いております -

CSスクリプト自作方法 Part3 (AIパッケージ操作編)

前回のCSスクリプト自作方法 Part2 (基本サンプル編)で作った指輪のスクリプトをベースにして、NPCのAIパッケージをを操作する方法をご紹介します。作業は単純で、AIパッケージのConditionsタブの設定方法のお話になります。


スクリプトとAIパッケージ編集

まず、前回作ったスクリプトの体力回復に関る部分を削除し、変数の値代入に関するところだけ残しました。装備をすれば変数SampleEquipが1になり、装備を解除すれば0になるというだけの極めてシンプルなスクリプトになりました。




今回はこの指輪を装備したとにNPCをプレイヤーに付き従わせるようにしたいと思います。サンプルに使うのはコロール(Chorrol)・グレイメア亭(The Grey Mare)のエンフリッド(Emfrid)を使います。もちろん、自作したNPCやCreatureに同じ内容を設定することもできます。

初めに、この指輪に添付されているスクリプト内の変数を参照可能にするために、Render Windowで指輪をダブルクリックして、Persistant Referenceにチェックを入れます。ここにチェックの入っていないオブジェクトは参照できないので、今回の作業に限らず必要な作業です。指輪は前回と同じくコロールの魔術師ギルドに配置しています。これを行ってからAIパッケージの編集作業に移ります。




※Render WindowとAIパッケージ編集
 → Render Windowの簡単な使い方
 → AIパッケージ編集画面
 → Follow AIパッケージ


エンフリッド(Emfrid)のAIパッケージを開いたら、AIパッケージ欄を右クリックしてNewを選択し新しいパッケージを追加します。IDは任意のものを入力し、Package Typeには「Follow」を、そして、TargetにはPlayerを選択します。




次にConditionsタブをクリックしします。このタブはAIが作動する条件を入力する部分です。

まず、ウインドウ左下のNewのボタンを押します。すると、空白だったリストに1行追加されます。このままでは、何も設定されていないので、Newの右側にあるプルダウンメニューから「GetScriptVariable」を選択します。これは、AIパッケージの作動conditionになんらかのスクリプトの変数を使用するという意味です。

ここまで済んだら、その右側にあるCondition Parametersの部分にあるボタンを押します。すると下図のようなウインドウが開くのでParameter1の囲みにあるTARGETボタンを押します。この項目はスクリプトが添付されているオブジェクトを選択するものです。



下図のように、Cell欄には指輪が配置されているコロール魔術師ギルドを選択します。そしてRef欄にはスクリプトが添付されている指輪のIDを選択します。



次に、Parameter2の部分には、スクリプトの変数(今回はSampleEquip)を選択します。



ここまで済んだら、下図のようにウインドウ右下の数式の部分を「==」と「1」とします。これで、変数が1の時(=指輪が装備されている時)にエンフリッドはプレイヤーに追従するように設定されました。




下図のようになっていることを確認して、問題なければ作業完了です。





テストプレイ

指輪を装備してグレイメア亭へ行くとエンフリッドが附いてくるようになりました。



そして、指輪を外してしばらくすると、帰って行きました。無事作動したようです。



<注意点>
この方式の場合はFollowパッケージは作動/解除の切替に約10秒ほどのタイムラグが発生することがあります。
[ 2008/05/10 ] | CS (Construction Set) | CM(0) | TB(0)

CSスクリプト自作方法 Part2 (基本サンプル編)

今回は簡単なスクリプトを例にとってスクリプトの書き方についてお話します。この記事でのサンプルアイテムは「装備しているとプレイヤーの体力が30より小さくなった時に、体力を全快してくれる指輪」です。まずは、必要なものをリストアップするところから始めます。
(※参考画像はクリックで拡大します)

必要なもの

基本的な考え方として、思い浮かんでくることは色々ありますが、終いから考えると分かりやすいと思います。まず、具体的な処理を行う部分では、以下の3つが必要になりそうです。

・回復する命令文
・体力が30より小さいことを取得する条件文
・指輪を装備していることをあらわす条件文

次に、その準備として、下のものも必要になりそうです。

・指輪を装備していることあらわす変数
・装備/非装備に従って変数が切り替わるスイッチ
・変数そのもの

上記のものをスクリプト内に書き込み、好きな指輪に仕込めば、うまく作動させることが可能でしょう。


スクリプト記述

まずは回復するfunction自体を書かなければいけません。使用するfunctionは「ResetHealth」です。スクリプトの構文はfunction毎に違うので、それぞれCSヘルプで構文をチェックする必要はあります。今回は「○○.ResetHealth」となります。そして、回復するのはゲームプレイ中なので、「Begin Gamemode-End」ブロックに記述します。

----参考スクリプト----
Begin GameMode
player,ResetHealth
End
-------------------

まず、核となる部分が完成しました。これが意味するのはゲームプレイ中に「プレイヤーの体力を全快させなさい」という意味です。すなわち、このままでは常に全快させる命令が実行されてしまいます。次に「体力が30より小さい時は」という条件を入れないといけません。体力を参照するfunctionは「GetActorValue」を使用します。構文は「○○.GetActorValue ●●」です。○○は人、●●は属性値を指定します。

----参考スクリプト----
Begin GameMode
If(player.GetActorValue Health<30)
player,ResetHealth
Endif
End
-------------------

これで、プレイヤーの体力が30より小さい時は自動的に回復するようになりました。しかしながら、これでは、例の指輪を装備しているかどうかに関らず、30より小さい時にいつでも回復してしまいます。ここで変数を1つ作成します。指輪を装備していることを表すために「SampleEquip」という変数を自作します。そして、この変数が1の時は装備中、0の時は非装備であると考えてスクリプトを追記します。

----参考スクリプト----
short SampleEquip

Begin GameMode
If(SampleEquip==1&&player.GetActorValue Health<30)
player,ResetHealth
Endif
End
-------------------

この文が示すのは、SampleEquipが「1」で、なおかつ、体力が30より小さい時はプレイヤーの体力を全快させなさいという意味です。ここまでの作業で、実際に処理を行う核になる部分は完成しました。次に、SampleEquipという変数がサンプル指輪の装備/非装備を表すような記述が必要です。

さきほどまで記述してきたのは「Begin GameModeブロック」でしたが、特定の状況を指定してスクリプトを実行させるコマンドが用意されているのでそれを使います。今回使うのは「OnEquip」と「OnUnEquip」です。「OnEquip」は装備した時に実行され、「OnUnEquip」は装備を外した時には実行されます。

----参考スクリプト----
short SampleEquip

Begin OnEquip
set SampleEquip to 1
End

Begin OnUnEquip
set Sample Equip to 0
End

Begin GameMode
If(SampleEquip==1&&player.GetActorValue Health<30)
player,ResetHealth
Endif
End
-------------------

これでスクリプトが完成しました。




自作したスクリプトを保存し、好きな指輪に添付します。これにより、その指輪がプレイヤーの近くにいる場合はそのスクリプトが随時実行されます。




※アイテムの複製方法は以下の記事もお使いください。
 → オブジェクト(Object)複製の手順
 → 装備品の性能を編集する手順

そして、Render Widowで適当な場所に配置します。今回もコロール魔術師ギルドに設置しました。




※Render Windowについては以下の記事もよろしければ。
 → Render Windowの簡単な使い方


最後に必須ではありませんが、装備した時にこの指輪が特別なものであることを示す文や、回復した時にこの指輪の効果であることが判る文が表示されるようにしておくと面白いかもしれません。ダイアログを表示するには「MessageBox」、画面の左上に表示するには「Message」を使います。構文は「MessageBox ""」、「Message ""」であり、""の中に表示したい文章を記述します。





テストプレイ







[ 2008/05/10 ] | CS (Construction Set) | CM(0) | TB(0)
お知らせ

コンテンツ
目次から各記事をご覧いただけます。攻略と狩場についてはxbox360版共通です。

Julienne 更新情報
Ver 4.0をリリースしました。
Julienneについてはこちらです。

リンクについて
当ブログへのリンクは大歓迎です。

その他
なんでもお気軽にコメントどうぞ!

コンテンツ

総目次
→ 総目次 (167)

カテゴリ別目次
→ 妄想プレイ日記 (21)
→ 攻略 (16)
→ 寄り道 (2)
→ ハック&スラッシュレポート (39)
→ CS (Construction Set) (29)
→ Mod (55)
→ Oblivion 雑記 (5)

リンク集
→ Oblivion リンク集

拍手コメントへのお返事
→ お返事

※()内は記事数です。

このブログ内を検索

プロフィール

Author:pela
360版からPC版に移行して、悪党NPCの成敗とお気に入りNPC大軍団編成を目標に遊んでおります。
本当におバカな妄想ブログですが、どうぞよろしくお願いします。

Oblivionブログリンク

Darker than Darkness
lainさん執筆のプレイ日記。笑いあり、シリアスあり、CS解説ありの本当に充実したブログ。CSの説明は丁寧かつ親切で勉強になります。BABオヤジ殿が特にツボ。新キャラも登場して、さらに華やかに。


Romarjuの徒然なるOblivion日記
Romarjuさん執筆のお侍さん冒険物語。プロフィールのイラストと「オブリ短編劇場」の1発ネタもお気に入り。気の強いお嬢様と気の弱いニコフ隊長の掛け合いにニヤリ。


異国情緒
junaさん執筆のプレイ日記。重装騎士殿とかわいいコンパニオンの冒険はいつも楽しい雰囲気です。 高解像度のSSは美しく、好タイミングのベストショット多数。重装騎士殿のChillrendが唸ります。さらに、美人剣士コンパニオン登場!

フジョシプレイOBLIVION
Miariさん執筆のOblivion総合ブログ。オジサマ達の愉快な日記からMartin殿下とのスゥイ〜トな物語まで楽しい記事満載。最近はBABオヤジ殿も出演したりして、笑いがとまりません。その他mod紹介など膨大な記事が参考になります。

黒色アルゴニアンメイジ
Shukaさん執筆のプレイ日記。主人公の暗殺魔術師殿がメインクエストに沿って大冒険。まだら馬とのコンビが似合ってます。Morrowindの日記も執筆されているので旧作ファンも必見!

スポンサードリンク

since 2008 1/30

  Unique Visits 
  Page Views