ActionStartConversation(object, string, int, int)
PCとのconversationをNPCに開始させます
action ActionStartConversation( object oObjectToConverseWith, string sDialogResRef = "", int bPublicConversation = FALSE int bPlayHello = TRUE );
Parameters
oObjectToConverseWith
対話する対象にするObject
sDialogResRef
参照するconversationのファイル名(デフォルト:"")
bPublicConversation
conversationが周りに、またはPCにのみ聞こえるかどうか(デフォルト:FALSE)
bPlayHello
最初の挨拶をするかどうか (デフォルト: TRUE)
Description
この関数をスクリプトの中で使用すると、実行したObjectのアクション・キューにActionStartConversationを加えます
ObjectがActionStartConversationを実行すると、sDialogResRefで設定した対話ファイルを使って、oObjectToConverseWithに設定された対象に話かけるよう試みます
対象がPCでない場合、その対象のonConversationが開始されます
sResRefはの参照するconversationファイルのファイル名です
sResRefが指定されていない場合、PCではない側のObjectのデフォルトのconversationが使用されます(ツールセットのプロパティにあるセット)
bPublicConversationが指定されていない、もしくはFALSEである場合、そのconversationはPCとObjectの間にのみ残ります
そうでなければ、その会話は雑談として放送され、他のプレーヤーにも「聞こえ」ます
Remarks
PCは、NPCやplaceables(配置用オブジェクト)、トリガ及びドアとの対話を行うことができますがアイテムとは対話することができません
(しかしアイテムと同じ名前を持たせた'透明なオブジェクト'とは可能です)
元々、BioWareの原型ではbPublicConversationはbPrivateConversationと名付けられていましたが、このパラメーター名がその意図したものとは逆の働きをすることに混同していることに気をつけてください
会話をしようとするどのような静的ObjectもPCの視界範囲内にあるでしょう(カメラが自動拡大中でも約10m以内)
もしドアとPCの会話を始めようとして、そのドアが10m以上離れていれば、会話ウィンドウは簡潔に現われて即座に閉じてしまいますが、ドアの最初の文章はPCのチャットウィンドウに表示されるでしょう
アクションを実行するObjectが動的ならば、それはoObjectToConverseWithに走り寄り会話をしようと試みますが、別のアクションがそのキューに加えられるならやめるでしょう
ActionStartConversation関数を登録しようとすると結果は不定です
プレイヤーが通常の移動をしている場合には行動を止める可能性が非常に高いです
sResRefはモジュール内容一覧の「カンバーセーション」の項目にあるconversationのファイル名です
PCはOnConversationがないので、デフォルトのconvasationファイルを持ちません
カメラのZoomは操作できませんが、角度とモードはScriptで指定できます
Known Bugs
v1.28以前のpatchでは、ActionStartConversationをエリアやモジュールに割り当てた場合は問題を引き起こします。
Version
1.28
Example
// --- NPCs ----
/*
*これはNPCのOnPerception用で, NPCが気付いた
* 最初のPCに対し、デフォルトのconversationとして
* "q_dragnbone"を開始させる。
* そのconversationはそのPCにのみ聞こえる
*/
ActionStartConversation( GetLastPerceived(), "q_dragnbone");
// --- Placeables ---
/*
* これは静的ではない配置用オブジェクトのOnUsed用で
* その配置オブジェクトを使用したPCに対し
* デフォルトのconversationを開始す
* (配置用オブジェクトのプロパティの詳細設定タブで設定します)
*/
ActionStartConversation( GetLastUsedBy() );
/*
* これは静的ではない配置用オブジェクトの
* OnUsed用で、それを使用したPCに対して
* "offer_healing"というファイルの会話を開始する
* 他のプレイヤーもその会話を聞くことができる
*/
ActionStartConversation( GetLastUsedBy(), "offer_healing", TRUE );
// --- Triggers ---
/*
* これはトリガーのOnEnter用Scriptで
* 入ったPCとトリガーの間に"odd_voice"という
* 会話を開始する。(トリガーに)入ったPCだけが
* 会話を聞くことができる。しかし、会話が始まる前に、
* プレイヤーの移動は会話を取り消すかもしれない
*/
ActionStartConversation( GetLastEntering(), "odd_voice" );
/*
* これはトリガーのOnEnter用Scriptで
* "rat_boy"というタグを持つNPCはPCに駆け寄り
* 彼のデフォルトのconversationを開始する
* またOnConversationも始まるが、表示した場合
* BeginConversationで終わるべきである
* onConversationの実行の中に異なるconversationのresrefが
* セットされると、その会話が始められる
*/
object oBoy = GetObjectByTag("rat_boy");
object oPC = GetEnteringObject();
AssignCommand(oBoy, ActionStartConversation(oPC, "", TRUE));
See Also
author: Iskander Merriman, editor: Charles Feduke, additional contributor(s): Michael Mason, John Detwiler, Jotham, Jassper, JP team: geshi, marshall, Rainie
Send comments on this topic.