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

NPCの会話について3
さらに、もうちょっと細かい所まで解説していきます。


会話文(Response)は、Infoの窓のところで右クリックから新規作成が出来ます。
会話文を編集したい時はダブルクリックで出来ます。

そうすると、このウインドウが開きます。




一番上が表示される会話文で、スクリプトノートはコメント欄、メモ帳の部分です。
ここにスクリプトを書いても実行はされません。

感情種別は、その会話をしている間、選択した表情を作ることが出来ます。
感情の度合いは、感情表現の強さを100までの数値で決められます。注意点としては現在の表情プラス選択した感情になる事です。
つまり、好感度が高い時と、低い時とでは表情が変わる事になります。どうしても特定の表情になってほしい時は数値を100にすればいいようです。

音声ファイル名ですが、この会話文を喋った時の音声のファイル名です。これは、自動で決められて、変更する事は出来ません。
用意した音声のファイル名をこれに合わせましょう。
場所も決められていて、

Data/sound/Voice/(MOD名、拡張子も含む)/(種族名)/(男なら「M」女なら「F」)

のフォルダになります。対になるlipファイルとmp3ファイルは同じ名前でなければいけません。
あと、使用できるmp3の形式は「64kbps」「44100Hz」「モノラル」と決められています。

その下のウインドウは、この会話文を話す可能性のある種族の一覧です。
音声は、種族ごとに決められているので、ここで確認できるというわけです。


なお、音声は必ずしも設定する必要はありません。
ただし、音声の設定をしていないと、通常では字幕が一瞬で流れていってしまいます。
音声の設定をせずに、それを解決するためのMODがあります。
それが「OBSE -Elys- Universal Silent Voice」です。
有名なOBSEのプラグインなので、すでに多くの人は導入済みかと思いますが。




複数の話題をランダムに話させる方法ですが、ランダムのチェックボックスにチェックを入れる方法と、
条件(Condition)のところでGetRandomParcentの条件式を使う方法があります。


この二つの違いですが、会話文を一つだけにして試してみると分かりやすいです。
そうすると、ランダムのチェックボックスの方は、必ず一つの会話文を話すようになるのに対し、
GetRandomParcentの条件式の方は、話す時と、話さない(空白を話す)時があります。

このことから、ランダムのチェックボックスの方は、「この枠の中からランダムで選ぶ」と言う意味で、
GetRandomParcentの条件式の方は、「選ばれたときに、確立を計算して話すかどうか決める」という動作をすることが分かります。



両方を使う事で、ランダムに話す内容のうち、特定の話題を話す確立だけを小さくすることが出来ます。
ちなみに、メインクエストクリア後用の話題は、そういう設定になっています。
ただし、並び順には気をつけましょう。GetRandomParcentの条件式を付けたものを一番下に置くと、
上記のように話さない(空白を話す)ことがあるようになってしまいます。
スポンサーサイト

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

NPCの会話について2
トピックの中に会話文のデータを追加・編集する時の注意点を書いていきます。



セリフを追加する場合はまず始めに、セリフ用の新規のクエストを作り、そこに会話文を追加していきます。

その際に気をつけることは、クエストには優先(Priority)と言うものがあると言うことです。(0~100)
セリフを話す条件に当てはまっても、この数字が小さいと、例えば「GREETING」のトピックにセリフを追加しても
「Generic」のクエスト(Priorityが5)のような一般的なセリフのほうが優先されて、追加したセリフを喋ってくれない事があります。




クエストを作ったら、次はそこにトピックの追加をします。
ここでの注意点は、トピックの一覧のところで右クリックからトピックの追加or削除が出来ますが、この一覧は、
このクエスト内でのトピックの一覧だと言う事です。

ここで追加を選ぶとトピックを選択するウインドウが開きます。ここが、その区分にある全トピックの一覧になります。
(そのクエスト内でのトピックの一覧に追加されているものは表示されていません)
このウインドウから、クエストにトピックを追加して、そのトピックの中に会話文を追加していきます。
このウインドウ内で右クリックから新規作成をする事で新しいトピックを作ることも出来ます。

2013_04_26_01.jpg


このトピックの中にある会話文は、そのクエストで追加された会話文しか表示されていません。
トピックの中にある全部のクエストのセリフを確認したい時はキャラクター(Character)→Dialogueのフィルタリング(Filtered Dialogue)から確認できます。

2013_04_26_02.jpg


トピックを選んだら、Infoのウインドウの右クリックから会話文を作れます。
会話文を選んだ状態でResponse Textのウインドウの右クリックから2ページ目を作れます。
会話文は、上にあるものが優先されます。

Infoのウインドウのところで右クリックから新規作成で会話文を追加していけますが、このときに忘れずに会話文ごとに必ず条件を設定しましょう。
なぜなら、何の条件も設定してない場合は全NPCが喋る事になるからです。
(特定の1キャラのみに話させたい場合はGetIsIDの条件を設定します。)


次は、操作に関してですが、
・会話文は、矢印キーの←→で移動できます。(上にあるものの方が優先されるため重要です)
・条件のところで右クリックから「Copy Condition」でコピー、「Paste Condition」でペーストが出来ます。
 「Copy All Conditions」だと全部の条件をコピーできます。
 ですが、多くの条件が必要な特定NPC用のセリフを複数作りたいときは、会話文のほうをコピーして、内容を変更したほうが速いこともあります。活用しましょう。
※注意・ヴァニラの会話文をコピーすると、コピー元の会話文も変更されたものとして保存されてしまいます。つまり、英語の文に戻ってしまいます。
 その場合はTES4Editで該当箇所を手動で削除するか、クリーニングをしなければならないでしょう。)
・また、会話文をトピックの所までドラッグする事で別のトピックに移動させることが出来ます。
・会話文を右クリックして「Move to Quest」で、クエスト間の移動も出来ます。
 これも、多くの条件が必要な特定NPC用のセリフを沢山作りたいときには、役に立ちます。





あと、会話文につけられるスクリプトですが、いくつか注意しておくことがあります。
なぜなら、ここで実行されるスクリプトはいくつか制限があるからです。

・ここで書かれたスクリプトは、文章が表示された時に一回だけ実行されます。
・ここで実行されるスクリプトは、変数の宣言が出来ないようです。(クエストスクリプトの変数を操作する事はできます。)
・ここで書くスクリプトは一部が省略できます。(ターゲットを省略して書くと、そのセリフを話すNPCがターゲットになります。)
・ここで実行したときは、他で実行した時と若干動作が違う命令があります。例えば、ここでSetStageをすると、クエストジャーナルが表示されません。

要するに、NPCとの会話の結果の処理用に特化していて、他の用途には向かないと言う事です。




スクリプトのウインドウの右にあるチェックボックスの項目の意味はそれぞれ

・Info Refusal…聞いたことのある会話文を明るい色のままにするもの。要するにヴァニラで、「まだそのNPCが話していない事がある」を示すのに使われている機能。
・Goodbye…強制的に会話を終わらせる。
・Say Once…一度だけしか表示させない。複数NPCが話す項目でも、ゲーム中に一度しか表示されないのに注意。
・Random…条件が合うものが複数あるとランダムに話す。
・Random End…ランダムの終わりを示すもの。ランダムに話すブロックを複数作りたいときに有用。

・Run Immediately …「Conversation」の区分のトピックのときにだけ意味がある項目。NPC同士の会話でスクリプトを実行する際にチェックが必要らしい。
・Run For Rumors …「INFOGENERAL」トピックにだけ意味があるもの。こちらも会話でスクリプトを実行する際にチェックが必要らしい。

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

NPCの会話について1
NPCが話す会話文は、トピックの中にあり、トピックはクエストの中にあります。
会話文を見るためにはクエストを開かなければいけません。画像では「Generic」のクエストを開いてます。

2013_04_23_01.jpg

トピックは喋るシチュエーションによっていくつか種類が区別されていて、クエストのウィンドウを開いた上段、赤枠の所に
Topics、Conversation、Combat、Persuasion、Detection、Service、Miscの7種類の区分があります。
この区分の中にトピックが入っていて、トピックの中には複数の会話文が存在しています。


どのようなシチュエーションかと言うと、
・Topicsは、PCがNPCに話しかけたときに出てくる選択肢です。
・Conversationは、NPC同士のセリフです。ただし例外あり。
・Combatは、戦闘中に話すセリフ。犯罪中に話すセリフもここ。
・Persuasionは、交渉ゲームのときのセリフ。
・Detectionは、スニーク中に発見された時等のセリフ。戦闘中のNPCは話しません。
・Serviceは、買い物の時のセリフ。
・Miscは、その他シチュエーションの時のセリフ。



それぞれのクエストの中にも当然、専用のセリフが入っていますが、
いくつかのクエストは、いわゆるイベントとしてのクエストではなく、一見しても走っているのが分からない、
一般的なセリフを格納するのが目的のクエストになっています。以下がその一部です。

「Generic」のクエストは、汎用的なセリフ集になっていて、特定のクエストによらない一般的なセリフの集まりになっています。
「Generic(種族名)」のクエストは、各種族ごとの特徴が出る汎用的なセリフ集になっています。
「MQInfoGeneral」のクエストは、メインクエスト関係の一般NPCのセリフ集になっています。
「NQD(街の名前or組織名)」がそれぞれの街の住人用のセリフ集。特定のNPC用のセリフも入っています。
「(ギルドの略称)Info」は、それぞれの一般ギルド員用のセリフが入っています。
「MQConversations」は、メインクエストに使われるNPC同士の掛け合いのセリフが入っています。
「SQConversations」は、サブクエストに使われるNPC同士の掛け合いのセリフが入っています。
「DispositionBlockers」は、NPC同士の会話で好感度が低いときのセリフ。
「Crime」は、不法侵入等の犯罪時のセリフ。



青枠のところがトピックの表示されている所になりますが、トピックの中には編集する際に
気をつけなければならない物がいくつかあります。
大文字で書かれているトピックは、どれも特別なもので、名前をむやみに変更すべきでない物(中に追加するのはOK)ですが、
中でも特に重要で、気をつけなければならないものについて説明しておきます。


Topicsの区別の中にある
・GREETING…Topicsの区別のトピックは話しかけた時に出る選択肢ですが、これだけは例外で、選択肢には出ません。これは、PCがNPCに最初に話しかけた時に話す会話文になっています。

Conversationの区分の中にある
・GOODBYE…話が終わった時に、別れ際に話す言葉になっています。相手がPCでは必ず、NPC同士でも話す可能性があります。
・HELLO…NPC同士の会話で、最初に話す言葉になっています。たまに、PCに向かっても話したりします。
・INFOGENERAL…Conversationの区分の中で、これだけは例外的に話しかけた時に出る選択肢に出ます。いわゆる「噂話を聞く」のトピックです。また、NPC同士での会話時にも喋る可能性があります。なので、ここに会話文を追加する場合は、一ページで済ませるようにするべきです。



画像の黄色い枠のところが会話文のデータになります。
枠の右下の「Link To」「Link From」「Next Speaker」は、NPC同士の会話であるConversationの区分の時にしか意味がありません。
これは、会話文ごとに設定するものです。(トピックごとではないことに注意)

・Link Toは、この会話文を話し終わった後に続いて話すトピックです。複数ある場合はランダムになります。リンク先のトピック全てを話すのではなく、Link Fromが設定されている会話文のみ話す事に注意。

・Link Fromは、このトピックの会話文の後に話すと言う条件です。複数ある場合はランダムになります。Conversationの区分のトピックはHELLOとINFOGENERAL以外は、ここを設定しなければ、話す事が出来ない事に注意。

・Next Speakerは、その会話が終わったら次に話をするのが自分か相手かを設定します。Eitherにすると、ランダムになります。

また、「Link From」で「ANY」のトピックを選んでいる場合は、どの会話文からでもつながるようにする、という意味になります。(ただし「GOODBYE」は除く)


画像の例だと、NPC同士の会話で、HELLOの会話文の後、話し相手がHELLOかQuestionかINFOGENERALのトピックの中の会話文を話します。

BookResponsesのトピックなどでは複数の会話文を、「Link To」と「Link From」の条件をうまく使い分けて、
BookResponsesからBookResponsesへつなげる事で、本の話題振りと、その返答を一つのトピック内でしています。







画像で言う赤枠と黄色の枠の間のウィンドウは、話しかけた時に出る選択肢の文になっていて、
Topicsの区別のトピックを追加する時には編集する事は必至でしょう。


また、Topicsの区別を選択していると、「Link To」の所が「Choices」になります。
これは、会話文が終わってから、選択肢を表示させるものです。

その一つ上のトピック追加(Add Topics)は、PCにそのトピックを覚えさせるための物になります。
これは、スクリプトで「Add Topics」をするのとまったく同じ意味です。



あと、最初に触った時に戸惑いやすいですが、それぞれの箇所全部、右クリックから新規作成が出来ます。
返答一覧の「Respones Text」のところで新規作成をすると、一つの会話文の次ページが作成できます。


NPCのウインドウにも「Dialogu」というのがありますが、あれは、そのNPCが話す可能性のあるものを
フィルターして表示するもので、確認のための機能なので、会話文の編集はクエストから行うのが一般的です。

続きを読む

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

Add○○について
Addから始まるコマンドは、コンソールでも、スクリプトでも良く使われます。
まとめてみました。



~~~以下はよく使うもの

・AddItem
アイテムを追加できる

player.additem VarlaStone 1
書式
[渡す相手(省略可)].additem [アイテムのID] [個数]

削除する場合は、RemoveItem


・AddSpell
魔法を追加できる

player.addspell AbMudcrabSwim
書式
[渡す相手(省略可)].Spell [魔法のID]

削除する場合は、RemoveSpell


・AddTopic
話題を追加できる
トピックはPCだけが持つもので、持っている(知っている)話題じゃなければ、
そのことを話すNPCがいても、訪ねる事ができないという仕組み。

AddTopic ArenaTopic
書式
AddTopic [渡すトピック]


・AddScriptPackage
NPCにAIを付加できる
付加したAIは、既存のものよりも優先される。

DarMa.AddScriptPackage FollowPlayer
書式
[渡す相手(省略可)].AddScriptPackage [追加するAI]

削除する場合は、RemoveScriptPackage


~~~以下はあまり使わない、特殊なもの


・AddFlames
火をともせるオブジェクトというものがはじめから定義されていて(街灯など)
定義されているものだったら、対象を点火して、光らせることができる、らしい。

消す場合は、RemoveFlames


・addachievement
これはXBOX版において、実績を追加するために使われるもので、PC版にも存在はしているものの、実際には関係が無いです。
ちなみに、「IsXbox」というゲーム環境がXBOXかどうかを判断するための関数もあるようです。



・AddToLeveledList
ゲーム中にledListの中にledListを追加できる。
そのため、espではledListをいじっていない事になるため、ロードリスト等を気にしなくても良くなるが…色々面倒。
例(aaaLListをLL0GoldChange100の中に追加する場合)
ref addList
ref Lvlist

set addList to aaaLList
set Lvlist to LL0GoldChange100

AddToLeveledList Lvlist addList 1 1
書式
AddToLeveledList [入れられるledListのRef] [追加するledListのRef] [Level] [Count(省略可)]

これはOBSEで追加された関数のためか、LeveledListのIDをそのまま使えるではなくRef変数を宣言して、
Ref変数に入れるという手順を踏んで書かないといけないみたい。
また、この変更はセーブデータに保存されません。
そのため、ゲーム開始時にクエストスクリプトで毎回実行する必要があるようです。
なお、上の例ではbegin等を省略しているのでスクリプトにコピペする際は注意。

RemoveFromLeveledListで、追加を削除できる



OBSEで追加されるものには他にも
・AddEffectItem
・AddFullEffectItem
・AddMagicEffectCounter
などあるようですが、正直よく分かりません。

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

espの中のキャラの顔をプレイヤーキャラに移植する方法
そういえば、Wrye Bashをつかって、他のセーブデータの顔を、プレイヤーキャラにコピーする方法はよく書かれているのに、
espの中のキャラの顔をプレイヤーキャラに移植する方法は見かけなかったので、覚書がてら書いておきます。


と言っても方法は、実に簡単。
CSで、NPCの所を開いたら、Editor IDが「Player」のNPCに顔データをコピーするだけです。
その状態で新規ゲームを開始すれば、顔がコピーされています。

エディター名からして分かるように、これはプレイヤーのデフォルトの状態のデータを持っているキャラクターになっています。
だから、このキャラの初期装備や所持魔法をいじれば、ゲームの新規開始時にそれらを持っています。


ちなみにデフォルトネームは「Bendu Olo」で、「Player Faction」という組織に始めから入っています。
この組織は、同じ組織に入った者に好感度プラス30の補正が付いています。
そのため召喚魔法のNPCやクエストなどではNPCを、この組織に所属させたり外したりすることで、好感度の調整をしているようです。

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

ヴァニラの魔法の仕様について
あまり意味がないと思って、使っていなかった魔法について、知らなかった仕様が色々あったので、
いくつかメモしておきます。

・まず、重荷増加と可搬重量増加の魔法は共に移動速度も少しだけ変化させます。
 当然、重荷の増加は速度ダウンで、可搬重量増加は速度アップです。

・炎のシールド等のエレメンタル系のシールドの魔法は物理防御+属性防御の効果だそうです。
 …道理で消費が多いと思った。

・人を操る魔法は、効果が切れるとその時点で好感度が0にリセットされます。
 好感度がマイナスになっていても0になるため、これを応用すれば本来敵対的なNPCとも話が出来たりします。

・アンデット退散の魔法は、使いどころがないと思っていたけど、召喚されたアンデットに使えばいいようです。
 通常、召喚魔法は、同じユニットを複数召喚できない仕様のためです。

・各種耐性の低下の魔法は、重ねがけが出来ないけれど、魔法の耐性の低下(属性ではない)だけは、
 なぜか重ねがけができるようです。

・あと、スタミナにダメージを与えていると気絶しますが、これは麻痺の魔法とは別物のようです。
 麻痺の魔法が効かない相手にもスタミナダメージで気絶させることが出来るようです。

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



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