Dialogue View画面に行って、雇用時のセリフを選びます。
Conditionsに、雇用ダイアログを出現させる条件を設定します。
Global変数で、現在雇っている人数が最大Alias数より小さい時を設定。
ファクションについても決めます。
・雇用可能ファクション(PotentialFollowerFactionバニラと自作、2つのうち少なくともどちらか)に入っている
かつ(AND)
・雇用中ファクションに(CurrentFollowerFactionバニラと自作、2つのうちどちらにも)、入っていない(入っていてもRank -1だと、GetInFactionでは入っていないと見なされるようです)
これで最大人数まで雇っている時と、すでに仲間にしたフォロワーに雇用ダイアログは出ないはずです。
バニラではこれに加えてプレイヤーの友達になっていないと仲間に誘えません。今回は手軽にテストプレイしたいので、この条件は省いています。
今回はただで仲間に誘うだけのダイアログですが、そのうち傭兵にも対応したいです。
条件が設定できたら、下のScript欄に移ります。
会話が終わった時点で雇用処理を行いたいので、中央のEndというテキストエリアに「;」を打ち込んで、すぐ下の「Compile」ボタンを押します。
すると右欄のScript Nameにスクリプトが自動生成されます。一般にTopic Infoにくっつくスクリプトは、TIFの文字列から始まっています。ただこれではちょっと分かりづらいので、名前を変えます。
Endテキストエリアの「Advanced」タブを選択し、「Rename Script」ボタンを押します。
するとRename Scriptという小さなウィンドウが開くので、ここで自分の好きな名前に変えられます。
自作クエスト関連のScriptは全部SL01SPSから始めたいので、こんな感じに名前を変更してOKしました。
Papyrus Fragmentタブを選択し、雇用処理を行うFunctionをQuestScriptから呼び出します。
テキストエリアが小さくて作業しにくい場合は、「Edit」ボタンを押すと別ウィンドウで入力ができます。
最初に入力した「;」は消して、「(GetOwningQuest() as SL01SPSQuestScript).SL01SetSPSFollower(akSpeaker)」と入力。
"akSpeaker"には、このセリフを話すNPCがあらかじめ指定されています。
このScript入力欄、QuestのScript画面でみたものとまったく異なっています。
Papyrus Fragmentというものらしいのですが、ちょっとクセがあって扱いがいまだに慣れません。ためしにScript NameのScriptをEdit Sourceで開いてみると、中身はこんなになっています。
一番最初の行に、「FragmentCodeは編集するな!」と書いてあります。
Papyrus Fragmentは、直接Scriptをいじってはいけないようです。Scriptに対して直接やっていいのは、Propertyを設定することだけ。編集は必ずBeforeやEndのテキストエリアから行わないと、どうにも厄介なことになります。
Papyrus FragmentはQuestStage、AI Package、Sceneなどでも使われています。ややこしいですが、慣れるしかないようです。
「ここで待て」の待機命令はこんなConditionsにします。
EndのPapyrusFragmentには、
(GetOwningQuest() as SL01SPSQuestScript).SL01ToggleWait(akSpeaker)
と入力。
「ついて来い」の待機命令解除。
EndのPapyrusFragmentには、
(GetOwningQuest() as SL01SPSQuestScript).SL01ToggleWait(akSpeaker)
と入力。
待機処理はトグル方式にしたから、「ここで待て」と内容は同じです。
持ち物交換のダイアログ。これはバニラのフォロワークエストに寄生できます。
ボイスタイプの判断にて、バニラフォロワーと同じ声を持っている人にはこのダイアログを出さないConditionsを設定しました。
バニラフォロワーと同じボイスタイプの人はバニラのフォロワークエストの持ち物交換ダイアログを使えるので、声によって違う反応を楽しめます。それ以外の人は一律ここで設定したセリフを言うのみ。音声ファイル用意してないので、無音です。
EndのPapyrusFragmentには「akSpeaker.OpenInventory()」と入力。
「手伝ってもらおうかな」のダイアログ。これもバニラのフォロワークエストに寄生するタイプ。
EndのPapyrusFragmentには「akSpeaker.SetDoingFavor()
」と入力。
これでひとまず完成。
早速ゲーム内でうまく動くかどうか確認してみます。
ゲームを起動後、コンソールから"StartQuest <Quest ID>"を打ち込んで自作フォロワークエストを開始させます。
ウスガルドに話しかけて、バニラ枠の雇用ダイアログと自作フォロワー枠の雇用ダイアログが出ているのを確認。
それにしても「強い酒を飲み交わし、拳で語り合うまではその女を知っているとは言えない」って、ノルドの女ってどれだけ荒々しいんだか……。ウスガルドさん限定じゃないんですか、なんて口が裂けても言えませんけど。
自作フォロワー枠に三人まで入ることを確認。
枠がいっぱいになると、雇用できるNPCに話しかけても雇用ダイアログが出ないのも確認します。
ソレックス・ビニウスなど通常プレイでは仲間にならないNPCに対しては、自作雇用可能ファクションにコンソールで加入させてやれば仲間にすることが可能です。
コンソール画面で相手を選んでから、"addfac <Faction ID> 0"。
バニラフォロワーのボイスタイプと一致するNPCに関しては、こんな感じでダイアログが並びます。
「ここで待て(Wait here)」については同じ内容が2つ出ていますが、自作の「{」付きダイアログのほうを選ばないといけません。間違って無印の「ここで待て」をやってしまうと、現在の状況ではベルランドが待機状態に入ってしまいます。
また、「手伝ってもらおうかな(I need you to do something)」については、「{」付きのダイアログは出ていません。バニラの「DialogueFollower」クエストに寄生している部分になります。これは無印のダイアログを選択しても大丈夫。
このように、バニラフォロワーのボイスタイプと一致するNPCには同じ指示が二つ出ている場合「{」付きの方を選んで指示を出すことになります。ちょっとややこしいです。
こちらはバニラフォロワーのボイスタイプでないNPC。
自作クエストの指示ダイアログしか出ていないので、とても見やすいです。
また、バニラ枠で連れているフォロワーには、自作クエストのダイアログは出てきません。
ちなみに雇用ダイアログのConditionsをミスして、バニラフォロワー枠に入っているNPCに自作クエストの雇用ダイアログが出現すると、ちょっと困ったことになります。
バニラフォロワー枠に入っているNPCを、自作フォロワー枠にも入れられてしまいます。二重雇用状態です。しかもこの状態で自作フォロワー枠から解雇すると、バニラフォロワー枠のファクション関係の設定が壊れるという事態に。バニラのフォロワー枠に入っているのにまだ雇っていない状態と見なされる上、再雇用も不可能になるわけの分からない状況になります(コンソールの力技で直せますが……)。
これは自作フォロワーAliasのファクションに、バニラフォロワーが持っているのと同じファクションを使用しているために起こると思われます。
こんな感じでテストプレイでは、バニラフォロワー枠に入っているNPCに対しても、自作クエストが悪影響を及ぼしていないか、及ぼす可能性があるか、あわせて確認していきます。
ゲーム内で一通り動作を確認したら、Papyrusログも見ておきます。
デバッグ用のメッセージがきちんと出ていて、エラーを吐いていないか一通り確認。
[Actor < (000A2C94) >]が人間用Aliasの02番に割り当てられたという記述。
000A2C94は、
リディアさんのRefIDです。
ActorのデータにScriptがくっついている場合は、「Actor」の代わりにそのScript名が出ることがあります。今回だとウスガルドさんとソレックス・ビニウスがそれにあたります(埋葬用のScriptです…)。ちょっと見にくいですが、後に続く8桁の番号が彼らのRefIDと一致しているはずです。
……一応大丈夫そうだったので、今度は動物フォロワー枠も増やしてみます。
前へ |
次へ