TES4:Oblivionの情報を集めたり、ユーザーの交流や妄想等を楽しむための休憩所です。ゲームの合間の一服にどうぞ。

※参考になりそうな情報や注意点などを皆さんでどんどん追記編集してください。

2011/7/24 Questウインドウ(Dialog)に関するTipsに2項目追加

実戦編2 NPCを喋らせてみよう


 ようやくNPCにオリジナル台詞を喋らせる段階まできました。
 前章冒頭で述べましたが、OblivionのNPCの台詞はQuestに内包される形で存在します。よって台詞を作成するにはQuestを作成する必要があります。「Questを作らないと台詞が作れない」というと難しそうと思うかもしれませんが、作業自体は大したことないのでご安心ください。「ゲームスタートと同時に開始され」「進行は一切無い」クエストを作成するだけです。なお、ここでは一般的なクエスト(メインクエストやギルドクエストみたいなもの)の作成方法は説明しません。あくまでオリジナルNPC用台詞を入れておく「容器」としてのクエストを作成するだけなのでご了承ください。

QuestウインドウとDialogueウインドウの違い


 さて、いきなりですが観察力に優れた方は「おい、待てよ」と思われるかもしれません。
 というのもNPCウインドウ上に「Dialogue」と書かれたボタンが存在しているのです。



 RPGツクール的な発想だと「あのボタンを経由して台詞を作成することができる!」と思うのが筋でしょう。自分は最初そう思いました。
 結論から言うとあの「Dialogue」ボタンを押すことで開くDialogueウインドウは「現在、閲覧中のNPCにどの台詞が適用されるかを確認するためのもの」です。台詞テキストの修正などある程度の編集はできますが「新規作成ができない」「設定を変更しても反映されない項目がある」などエディタとしては制限が存在します。よって台詞の作成はQuestウインドウを経由して行うのが正解です(たぶん)。

  • Dialogueウインドウ : 個々のNPCに適用される台詞をチェックするための機能特化&制限版
  • Questウインドウ : Quest単位で台詞を作成、編集するためのもの


 さて、では実際に作業しながら説明していきましょう。
 前章の最後でCSを終了させてしまったので改めてCSを起動、読み込みウインドウを表示させ「LoversFirstNPC.esp」にチェックを入れる作業と、Activefile指定する作業を行ってください。



 ここで読み込みウインドウの右上をちょっと参照してみてください。
 「LoversFirstNPC.esp」を選択すると右上の「マスターファイル」と書かれた欄に「Oblivion.esm」が出現したと思います。これは前章での作業で「LoversFirstNPC.esp」が「Oblivion.esm」を利用したデータを持ったために「切っても切れない関係」になったことを意味します。マスター指定されたファイル(esm限定)は指定しなくても自動的に読みこむファイルとして選択されるので、あとはOKボタンを押すだけです。読み込みがはじまり、少しの時間を待てばCSが使えるようになります。

Questウインドウ


 Quest、およびDialogの管理・作成はQuestウインドウで行います。
 Questウインドウはメインウインドウメニュー上の「キャラクター→クエスト」を選択することで表示できます。QuestウインドウはOblivionに含まれる合計150近くのクエストと、全てのDialogを管理しているので表示には少し時間がかかります。
 少し待てば大きめの「Quest:Arena」と表示されたウインドウが表示されます。これがQuestウインドウです。名前に「Arena」がはいってるのは単にVanilla環境でリストの先頭にくるQuestのIDが「Arena」だからです。なお、Questウインドウに限らず、基本ウインドウ以外のウインドウは同時に複数開くことができるので「他のクエストを表示し、それを参照しながら作業を進める」ということも可能です。

 いきなりですがちょっと寄り道。
 Questリスト(Questウインドウ左端の縦長の欄)をスクロールさせ、一番下にある「Vampire」というQuestを参照してください。これはPlayerがヴァンパイア化した際の処理(スクリプト)と、NPCから向けられる台詞をまとめたQuestです。Stage(クエストの進行管理)も設定されておらず、これから作るオリジナルNPCの台詞用Questに近いものです。OblivionではこういうものもQuestとして管理されている、という例でした。

 では、クエストを作成しましょう。



 Questウインドウ左端のリストの適当な場所を選んで右クリックを押すと、メニューが表示されるので「新規作成」を選択。QuestのIDの入力するウインドウが開くので「 AAALoversFNPC00Quest 」と入力して「OK」ボタンを押します。

 これで新規のQuestが作成されました。IDの識別符を「AAA」にしたのでリストの先頭に出現していると思います。
 続いて設定です。

クエスト名称

 ジャーナルやクエストリストなどに表示される際のクエスト名です。ジャーナルもリストも使わないので「おちんこびろーん」とか適当でいいです。本当はゲーム中に名称が表示されないクエストの場合、CSで参照した際にそのクエストが何のためのクエストであるかを明記しておくのが望ましいです。

Priority

 条件が被った際にどちらのクエストを優先して実行するかを決定する数値です。一般的なクエストであれば「50」の数値を設定することが推奨されているので「50」と入力しておきましょう。

Start Game Enable

 チェックしているとゲームがスタートした際に自動的に開始されます。新規作成の場合、初期状態で既にチェックがはいっているので確認をするだけです。

 以上でQuestの設定は終わりです。拍子抜けするぐらい簡単なのです。
 これで台詞を作る準備は整いました。


 では、これより台詞作成にはいります。
 Questウインドウの上部にずらりと並んでいるボタンを参照してください。初期状態では「QuestData」が選択されています。これらのボタンのうち、クエストを管理しているのは「QuestData(クエストの基本設定)」と「QuestStage(クエストの進行管理)」だけです。残りは全部、台詞用です。

 以下に台詞用各ボタンの分類と大まかな説明を記します。

  • Topics(話題) :基本的にPlayとNPCの対話(会話相手がズームするやつ)用の台詞。分岐選択肢(Choices)が設定できる。
  • Conversation(会話) :非対話状態時にPlayerに向けられる台詞(挨拶など)や、NPC同士の対話(挨拶や噂話など)の台詞。
  • Combat(戦闘) :戦闘状態のときに使われる台詞。「あいおんとぅゆーだーい!」とか。
  • Persuasion(説得) :友好度上げのミニゲーム時に使われる台詞。
  • Detection(発見) :NPCが何か(犯罪、死体、ターゲット)を見つけたときに使われる台詞。
  • Service(サービス) :NPCが提供するサービス(店、トレーニングなど)を使用時に使われる台詞。
  • Misc(その他) :その他。

 RPGツクール的な「会話」(PlayerとNPCが行うもの)は「Topics」が該当し、この講座ではこれしか扱いません。
 基本的にこれらの分類は「状況に応じ自動で適用される特別な項目がそれぞれに存在すること」と「台詞に付加できるオプションがそれぞれ違う」だけで、根本的な違いはありません。

 次に台詞を管理するTopic(トピック)という要素について説明します。
 Oblivionにおける台詞は「Topicという容器」に1個〜複数個の「パターン(Info)」を含む形で構成されます。個々のinfoは「条件式」や「オプション」の設定が可能で、1〜複数行の「返答(Response)」を有します。
 以下にいくつかの例をあげます。

  • LocalGreeting (2個のResponseを持つ1個のinfoで構成されるパターン)
    • トピック:「ただいまんこ!」
      • 「おかえりんこ」「・・・って逆じゃね?!」

  • DispositionCheck (条件分岐する4個のinfoで構成されるパターン)
    • トピック:「ボクのことどう思う?」
      • (条件)Playerに対する友好度が40未満の場合 「できれば視界にいれたくないわね」
      • (条件)Playerに対する友好度が40以上60未満の場合 「まぁ、普通って感じかな」
      • (条件)Playerに対する友好度が60以上80未満の場合 「素直に言えば好意的に思ってるわ」
      • (条件)Playerに対する友好度が80以上の場合 「友人以上、恋人未満かしら?」

  • TodaysDivination (2個のResponseを持つ4個のランダムオプションを付与されたInfoで構成されるパターン)
    • トピック:「占いして!」
      • 「貴方の今日の運勢は大吉です。」「いいことがあります。」(ランダム)
      • 「貴方の今日の運勢は中吉です。」「いいことがあるかもしれませんね。」(ランダム)
      • 「貴方の今日の運勢は小吉です。」「よくも無く悪くも無く。幸せとはそういったものかもしれません。」(ランダム)
      • 「貴方の今日の運勢は大凶です。」「この壺を買わないと死にます。」(ランダム・ランダムエンド)

 以上を踏まえた上でこれよりQuesウインドウ(Topics)を具体的に触ってみましょう。



1、Questウインドウ上段の「Topics」ボタンを押す。
2、Topicリスト(「QuestData」「QuesStage」ボタンの真下、縦長の白い領域)内の適当な場所を右クリックして、メニューより「トピックの追加」を選択する。
3、「トピックを選択」ウインドウが表示されるので一覧の中から「GREETING」を探して選択する。
4、Topicリストに「GREETING *」が追加される。

 この「GREETING」は特別なトピックで対話を行った際、必ず最初に適応されます(詳細はTipsにて)。名前の横についた「*」印は「この項目は、いまActiveなesp上に新しく作られたか、マスターファイルの内容を変更するものだよ」という印です。

 次に、このトピック「GREETING」の中に「らば子」専用の台詞を追加しましょう。



5、Topicリスト上の「GREETING」の項目をクリック。
6、Infoリスト(中央から右側上段にある横長の白い領域)内の適当な場所を右クリックして、メニューより「新規作成」を選択する。
7、「NEW Response」というタイトルの新しいウインドウが開くので、その中の「返答の文章」という入力欄に「 Hello Lovers! 」と入力して「OK」ボタンを押す。

 これで「 Hello Lovers! 」という台詞が追加されましたが条件が設定されていないため、すべてのNPCがこの台詞を使用してしまいます。よって「条件式」を設定し、この台詞を「らば子専用」にする必要があります。

 条件式は、Questウインドウ最下部の「条件」の欄で設定します。



8、infoリスト中の「Hello Lovers!」をクリック。
9、ウインドウ下部の「条件」の欄の「新規」ボタンを押す。
10、その右の「条件式」という選択ボックスの中から「 GetIsID 」という関数を選択。
11、その右のパラメータというボタンを押し、新しく開いたウインドウのObjectID選択ボックスの中から「 AAALoversFNPC00 」を選択して「OK」ボタンを押す。
12、パラメータボタンの右の「比較」が「 == 」、「値」が「 1.000 」になっていることを確認する。

 この作業により、この台詞は「らば子専用」になりました。

 ついに関数がでてきました。怖がらないで下さい。今回使用したGetIsID関数について少し詳しく説明します。
 「GetIsID」という関数は「(呼び出したObjectの)IDが「パラメータ」のIDと同じであるかを比較する」という関数です。同じ場合「1」、違う場合「0」という結果を返します。
 いま設定した条件式を無理やり日本語に訳すると、

 (この条件式を参照したObjectの)IDが「AAALoversFNPC00」と同じ(==1)である場合、適用される。

 という意味になり、この条件式に合致するのは「AAALoversFNPC00」のみ、すなわち「らば子専用」となります。
 この説明が理解できない場合、専用の台詞は、条件式「GetIsID」、パラメータ「NPCのID」で「== 1.000」にすれば良いと覚えてください。
 個々のNPC固有の台詞を作成する場合はこの条件式を必ず設定してください。さもないと面白いことになります。


 さて、これで「らば子」の挨拶の台詞と、それをらば子専用にする設定が完了しました。
 「OK」ボタンを押してQuestウインドウを閉じ、保存してからOblivionを起動してみましょう。CSは起動したままでも構いません。

 らば子はちゃんと挨拶できましたか?
 できた人は第二目標達成です、次のステップへ進んでください。できなかった人はもう一度このステップを読み直し、どこで間違えているかを確認してください。


 続いて「対話によりPlayerに新しい話題を追加する」方法を説明します。
 Oblivionにおける話題(対話メニューの選択肢に表示されるもの)の扱いは、NPC側が持っているのではなく「PC側が話題のリストを持ち、その話題に対応する台詞をもっているNPCと会話した際、選択肢に表示される」という仕組みです。これを応用することで「AというNPCとの対話で話題が追加され、BというNPCの対話に話題が反映される」ということができます。クエストを作成する際、頻繁に使われるテクニックなので頭のどこか片隅においておいてください。

 Questウインドウを開き、「AAALoversFNPC00Quest」クエストを選択、「Topics」ボタンを押してください。さっきまでの画面です。
 流れとしては、追加するための新しいトピックを作成し、そのトピックを「Hello Lovers!」と発言した際にPlayerの話題リストに追加するための設定を行います。

 まずは新しいトピックの作成です。



1、Topicリストの適当な場所で「右クリック→トピック追加」。
2、開いた「トピックを選択」ウインドウ上の適当な場所で「右クリック→新規作成」。
3、リスト最下段に新規トピックが作成されるので「 AAALFNP00Topic1 」と入力し、「OK」を押す。
4、Topicリストに新規トピック「AAALFNP00Topic1」が追加されているのを確認。

 次に台詞を作成します。

5、Topicリスト上のトピック「AAALFNP00Topic1」をクリック。



6、Infoリストの上、「トピック」と書いてある入力欄に「 ちんぽっぽ! 」と入力する。ここに入力された文章が対話メニューの選択肢として表示されます。
7、Infoリスト上で「右クリック→新規作成」、開いたResponseウインドウの返答欄に「 やらないか? 」と入力して「OK」を押す。



 この際、上記のようなウインドウがでると思います。これはスペルチェック機能です。英語圏の人には便利な機能なんでしょうが日本語には当然対応してません。「Cancel」ボタンを押してスキップしてください。表示させない方法があるのなら教えてくださいorz

8、条件に「 GetIsID AAALoversFNPC00 == 1 」を設定。

 これで新しいトピック「ちんぽっぽ!」が完成しました。
 このトピックの動作を説明すると、対話中の選択肢に「ちんぽっぽ!」が表示され、これを選択すると「やらないか?」という返答が返る、というものです。

 続いて、このトピック(話題)を「Hello Lovers!」が表示された際にPlayerに与える設定をします。

9、Topicリスト中の「GREETING」をクリック。
10、infoリスト中の「Hello Lovers!」をクリック。



11、Questウインドウ右側にある「トピックを追加」という小さなリスト上で「右クリック→トピック追加」
12、「トピックを選択」ウインドウが表示されるので「 AAALFNPC00Topic1 」を選択し、「OK」を押す。

 これで設定は完了です。
 「OK」ボタンを押してQuestウインドウを閉じ、保存してからOblivionを起動してみましょう。CSは起動したままでも構いません。

 「らば子」が挨拶した後、ちゃんと「ちんぽっぽ!」が選択肢に表示され、「やらないか?」という返事が返ってきましたか?また他のNPCとの対話でこの話題が表示されたりしませんでしたか?
 できた人は第三目標達成です、次のステップへ進んでください。できなかった人はもう一度このステップを読み直し、どこで間違えているかを確認してください。


 ついに前半の最終目標です。ここでは会話に分岐選択肢を導入する方法を説明します。
 一般の選択肢と、分岐選択肢の違いは、選択肢が「話題の追加」という形で対話メニューに常に存在するのに対し、分岐選択肢は呼び出されたときにしか表示されません。「はい」「いいえ」など、ある台詞に対する受け答え等に利用できます。
 流れとしては分岐選択肢用に新規のトピックを2個作成し、トピック「ちんぽっぽ!」の返答を表示後、このふたつの選択肢が表示されるように設定します。

 まずは分岐選択肢用トピックの作成です。
 これより細かい説明は省きます。解らなくなった場合、貴方の理解がまだ足りていないことを意味します。これより前の章を参照し、理解を深めてください。

1、新規のトピック「 AAALFNPC00Choice1 」を作成。
2、AAALFNPC00Choice1のトピックに「 うほっ、いいらば子! 」と入力。
3、infoを新規作成し、返答の文章に「 おぅいぇす。 」と入力。
4、条件に「 GetIsID AAALoversFNPC00 == 1 」を設定。

5、新規のトピック「 AAALFNPC00Choice2 」を作成。
6、AAALFNPC00Choice2のトピックに「 お断りだ 」と入力。
7、infoを新規作成し、返答の文章に「 しょぼーん。 」と入力。
8、条件に「 GetIsID AAALoversFNPC00 == 1 」を設定。

 これで分岐選択肢用のふたつの台詞が完成しました。
 次はこのふたつのトピックをトピック「ちんぽっぽ!」の分岐選択肢として設定します。

9、トピック「AAALFNPC00Topic1」を選択。
10、info「やらないか?」を選択。
11、Questウインドウ右側にある「Choices」という小さなリスト上で「右クリック→トピック追加」。
12、「トピックの選択ウインドウ」上で「 AAALFNPC00Choice1 」を選択して「OK」を押す。
13、同様の手順で「 AAALFNPC00Choice2 」も追加する。



 上図のようになっていれば完了です。
 これでトピック「ちんぽっぽ!」を選択すると「やらないか?」という返答のあとに「うほっ、いいらば子!」と「お断りだ」が表示され、選択に応じて「おぅいぇす。」あるいは「しょぼーん。」が表示されます。

 これで設定は完了です。
 「OK」ボタンを押してQuestウインドウを閉じ、保存してからOblivionを起動してみましょう。CSは起動したままでも構いません。

 「ちんぽっぽ!」を選んだ後、ちゃんと分岐選択肢は表示されたでしょうか?そしてその返答は意図したものでしたか?
 できなかった人はもう一度このステップ、あるいはそれ以前のステップを読み直し、どこで間違えているかを確認してください。
 できた人は最終目標達成です。おめでとうございます、そしてお疲れ様でした。

 この最終目標を達成した人には今後ふたつの道が存在します。ひとつは、このまま次の章にすすみ「具体的なスクリプトの使い方に手を出す」という道。もうひとつは「ここまで説明した内容に関して理解をより深める」という道です。他のチュートリアルを参考にしてAIPackageの設定や店機能の追加などに手を出してみるのもいいでしょう。お好きな方をお選びください。
 後者を選んだ方向けにいくつか課題を出してみます。
  1. チュートリアルを見ず、自力で「LoversFirstNPC.esp」上に「AAALoversFNPC01」を作成してみる(ヒントとして「らば子」を参照してもいい)。
  2. 現状の会話、および分岐にランダムパターンや条件分岐の要素を追加してみる。
  3. スクリプトを使用せずに作れるオリジナルNPCを構想し、作成してみる。

 上記の課題をクリアする上で必要な情報、知識を以下のTips、およびリファレンスに記しておきます。課題3に手をつけるとすぐにスクリプトの必要性がわかると思います。
 失敗を恐れず、いろいろチャレンジしてみてください。その経験は必ず貴方の力になります。

Questウインドウ(Dialog)に関するTips

  • 特別なトピック :トピックの中にはシステムが特別な扱いをするものがいくつかあります。Topicsカテゴリーのトピック「GREETING」もそのひとつで「PlayerがNPCをアクティベイトした(対話状態になった)際、最初に使われる」というトピックです。特別な扱いのトピックは「アルファベット大文字のID」なので簡単に見分けることができます。これらの特別なトピックは下手にいじると正常な動作が保てない場合があるので、決して「削除」や「ID変更」などは行わないで下さい。

  • 「削除」の違い :CS上で「削除」という操作は随所に存在しますが、その処理に関しては二種類存在します。ひとつは使用設定の削除。これはQuestウインドウの「Topicsリスト」やNPCウインドウの「Inventoryリスト」など「使用する」という設定(宣言)を消すだけであっさり消えてくれます。ですが、この操作では元データは消えていないので、消したつもりが残りカスが大量に蓄積している、ということがよくあります。もうひとつの操作がこの元データそのものを完全に削除する操作で「オブジェクトウインドウ」上や、「トピックを選択するウインドウ」上などで行う操作がこれに該当します。この操作を行った場合、対象はすぐには消えません。IDの右側に「DELETE」の文字が追加され、対象がそのesp上のオリジナルのものであればCSを再起動した際に完全に削除され、マスターファイルやプラグインファイル上のデータに対して行った操作であれば「削除したという変更要素」として残り続けます。

  • 条件式のコピペ ;大量の台詞を作成する場合、条件の設定は結構手間です。特に関数の選択肢が膨大なので「GetIsID」を探すのも結構めんどうです。そんなときに便利なのが条件式のコピペです。条件中のConditionリスト(横長の欄)上、あるいはコピーしたい条件式の上で右クリックを押すとメニューが表示され、その下3つが条件式のコピペに関する選択肢です。この操作を覚えれば、作業時間をそこそこ短縮することができます。
    • Copy Condition :選択した条件式をコピーします。
    • Copy All Condition :現在選択中のinfoの全ての条件式をコピーします。
    • Paste Condition :コピーした条件式をペーストします。

  • infoオプション :Questウインドウ上の右下にあるチェックボックスはそれぞれのInfoに特別な仕様を追加するためのオプションです。以下によく使うものに関して簡単な説明を記します。
    • Goodby :このオプションが付与されたinfoは返答の台詞を表示した後、対話状態を終了させます。
    • 一度だけ話す :このオプションが付与されたinfoはゲーム中に一度だけしか表示されません。初対面時の挨拶などには便利なオプションですが、クエストなどで重要な情報を与える台詞への付与はあまりお勧めできません。
    • ランダム :このオプションを同一Topic内の複数のinfoに付与することで、条件式に合致するものの中からどれかひとつが適応される、という処理が行われます。会話にランダムパターンの要素をいれたいときに便利です。
    • Random End :そのInfoがランダムInfoの最後尾であることを指定するオプションです。Infoに「Random End」を指定する場合は「ランダム」オプションの指定も忘れずにしてください。

  • 台詞テキスト作成上の注意点 :を箇条書きしておきます。
    • ユーザーごとに画面解像度、文字サイズの設定が違うので最適な一文の長さは存在し無い。ただ1行があまりにも長くなりすぎる避けた方が良い。
    • 全角スペースは文字化けすることがあるので使わない。あと文字化けする特定の漢字があるとか?(未確認)

  • 並び順に関して :CSの仕様としてリスト形式に格納されるデータ(infoなど)は「上に行くほど優先度が高い」という決まりがあります。infoを例にあげて説明すると下表のような順番でinfoが並んでいるTopicsが呼び出された場合、条件Cだけを満たす場合は「うううう」が呼び出されます。条件AとBを満たす場合は「ああああ」が呼び出されます。すべての条件を満たす場合も「ああああ」が呼び出されます。Infoを作成したけど意図したとおりに適応されない、という場合は「条件式」と「並び順」の双方を疑う必要があります。
    • ああああ 条件A
    • いいいい 条件B
    • うううう 条件C

  • 並べ替えに関して :並び順が意味を成すリストとしてはinfoリスト(適応順に影響)、Choicesリスト(表示順に影響)がありますが、これらのリストは少々気がつきにくいのですが、作成したあとでも並べ替え作業を行うことが可能できます。並べ替えたい項目をマークした上でキーボードの「←」「→」ボタンを押すと、選んだ項目が上下に移動します。


 さて、これで貴方は扉を開け、外の世界にでました。しかし外といってもまだ街の中です。街の人と会話をしたり、武器屋をのぞいたり、王様から100ゴールドもらったりはできますが、街の外にでたり、街の中を極めるにはまだまだ頼りない状態です。次の章では世界を統べる力「スクリプト」の使い方を説明します。その力を得ることによってはじめて貴方は世界に干渉する存在になるのです。つづく。


 ここでは余力のある人やこのチュートリアルを試すのが2回目以後の方、チュートリアルを卒業して自分のオリジナルNPC作りをはじめた方を対象に、Dialog作成の条件式でよく使われる関数の概略、その用例と意味を記します。関数の詳細な仕様についてはCSwiki日本語版の「Function」の項、あるいはCsWiki - List of Functions(英語)から探して参照してください。

  • GetActorValue (呼び出したObjectの)「パラメータ」(ステータス)を参照する。
    • 用例1:「yes」「GetActorValue」「Strength」「>=」「90」 ※Run on Targetをチェック
    • 意味1:(この条件式を参照したObjectがターゲットしているObject(≒Player)の)筋力が90以上の場合、適用する。
    • 用例2:「yes」「GetActorValue」「Blade」「<」「50」 ※Run on Targetをチェック
    • 意味2:(この条件式を参照したObjectがターゲットしているObject(≒Player)の)刀剣スキルのレベルが50未満の場合、適用する。

  • GetDisposition (呼び出したObjectの)「パラメータ」に対する友好度を参照する。
    • 用例:「GetDisposition」「player」「>=」「50」
    • 意味:(この条件式を参照したObjectの)Playerに対する友好度が50以上の場合、適用する。

  • GetGlovalValue グローバル変数の中の「 パラメータ 」を参照する。
    • 用例:「GetGlovalValue」「GameHour」「==」「8」
    • 意味:GameHour(ゲーム内の現在時間)が8時の場合、適用する。
    • 補足:「GetGlovalValue」「GameHour」「>=」「8」と「GetGlovalValue」「GameHour」「<」「9」のふたつを条件に入れると8時台の場合に適用される

  • GetGold (呼び出したObjectの)所持金を参照する。
    • 用例1:「GetGold」「 NONE 」「<」「10」
    • 意味1:(この条件式を参照したObjectの)所持金が10未満の場合、適用する。
    • 用例2:「yes」「GetGold」「 NONE 」「<」「10」 ※Run on Targetをチェック
    • 意味2:(この条件式を参照したObjectがターゲットしているObject(≒Player)の)所持金が10未満の場合、適用する。

  • GetInCell (呼び出したObjectの)現在いるCellと「パラメータ」を比較する。同じなら「1」、それ以外なら「0」
    • 用例:「GetInCell」「ICWaterFront」「==」「1」
    • 意味:(この条件式を参照したObjectの)現在いるCellが帝都港湾地区(ICWaterfront)である場合、適用する。

  • GetItemCount (呼び出したObjectの)「パラメータ」(アイテム)の所持数を参照する。
    • 用例1:「GetItemCount」「Apple」「>=」「1」
    • 意味1:(この条件式を参照したObjectが)Appleを1個以上所持している場合、適用する。
    • 用例2:「yes」「GetItemCount」「Apple」「>=」「1」 ※Run on Targetをチェック
    • 意味2:(この条件式を参照したObjectがターゲットしているObject(≒Player)が)Appleを1個以上所持している場合、適用する。

  • GetPCInFaction Playerが所属している組織の中に「パラメータ」があるか比較する。あるなら「1」、ないなら「0」
    • 用例:「GetPCInFaction」「Blades」「==」「1」
    • 意味:Playerが「Blades」に所属している場合、適用する。

  • GetPCIsRace Playerの種族と「パラメータ」を比較する。同じなら「1」、それ以外なら「0」
    • 用例:「GetPCIsRace」「Orc」「==」「0」
    • 意味:Playerの種族が「Orc」以外の場合、適用する。

  • GetPCIsSex Playerの性別と「パラメータ」を比較する。同じなら「1」、それ以外なら「0」
    • 用例:「GetPCIsSex」「Male」「==」「1」
    • 意味:Playerの性別が「Male(男)」の場合、適用する。

  • GetTalkedToPC (呼び出したObjectが)今までにPlayerと話したことがあるか比較する。あるなら「1」、ないなら「0」
    • 用例:「GetTalkedToPC」「 NONE 」「==」「0」
    • 意味:(この条件式を参照したObjectが)今までにPlayerと話したことがない場合、適用する。

※ 最初は条件関数の膨大な量に圧倒されると思います。個人的にはまずはGetPCシリーズを把握し、GetPCシリーズでできない条件設定が必要になった場合、新しい条件関数を探す、という順番が良いと思います。
※ これらの説明で「パラメータ」として上げられている要素を一般的に「引数」といいます。また「同じなら1、それ以外なら0」とか「参照して得られる数値」といった数字のことを「戻り値」といいます。覚えておくと他の解説ページを読むときに役に立ちます。

おまけ:NPC活用法


  • 自分好みのコンパニオン作成 :ここまでの講座内容だけでも、NPCを操作するMod(MCSなど)と合わせることで「普段は自作した会話を行い、コンパニオンとして連れ歩くことができるNPC」として利用できます。NPCの普段の生活(食う、寝る、ぶらつく)などを導入したい場合は「AI Package」の作成、及び設定する必要があります。CSWiki日本語版の「Actor Behavior→Package」を参照するか「Oblivion NPC 作成 AI」などでググって見てください。


紳士のためのNPC作成講座 実践編1 | 目次| 紳士のためのNPC作成講座 学習編2

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

フリーエリア


どなたでも編集できます