■Unity開発メモ用のWiki◎現在扱っていること・Unity全般・MMDからUnityへの変換してインポート・MMDの仕様把握・BlenderでMMDモデルのカスタム


目次


クエスト設計の基礎

1.クエスト作成の準備

Bethesda チュートリアル クエストの計画
https://www.creationkit.com/index.php?title=Bethes...

次のことを学びます:
  • 実装を開始する前にクエストを構築する方法
  • まったく新しいクエストの作り方
  • 「クエストステージ」とは何か、そしてその作成方法

次の一連の連続したストーリー フェーズに分割できます。
  • プレクエスト:プレイヤーはベンドゥ・オロに会ったことがありません。アミュレットは泥棒と一緒に洞窟にあります。
  • ステージ 1:プレイヤーは Bendu Olo に会い、アミュレットを入手するという任務を与えられます。
  • ステージ 2:プレイヤーは泥棒を殺しました。
  • ステージ 3:プレイヤーはアミュレットを回収しました。
  • ステージ 4:プレイヤーはお守りを Bendu Olo に返し、報酬を受け取りました。
ステージは、最も最近起こったイベントをマークするものであると考えると役立ちます。
これらのステージを使用して、NPC がプレイヤーにどの対話オプションを提供するかを決定し、
目的とクエストのターゲットを設定し、クエストの全体的な進行状況を追跡します。

先のことを考えている場合は、ステージ 3 は実際に泥棒を殺さなくても (忍び足やスリで) 発生する可能性があり、
プレイヤーが最初にベンドゥと出会ったときに手助けを拒否した場合、
ステージ 1 は 2 つの別個のイベントとして考えることができることにも気づくかもしれません。
この両方に対処する方法を紹介します。
クエストオブジェクトの作成
オブジェクト ウィンドウで、カテゴリ リストの Character -> Quest に移動します。
クエストリストの任意の場所を右クリックし、「新規」を選択します。
→「Skyrim.esm」と「Updata.esm」を先に読み込んでおく

これにより、クエスト ウィンドウとデフォルトの[クエスト データ] タブが表示されます。

現時点で考慮する (そして入力する) 必要がある重要なフィールドは次のとおりです。

・ID:これは、Creation Engine がクエストを識別するために内部で使用するものです。
 これに「GSQ01」と入力します(引用符は除く)。
・クエスト名:プレイヤーが見てクエストに関連付けられる名前。
 「ベンドゥ・オロの唯一の希望」と入力してください。
・優先度:複数のクエストでアクターが使用されている場合のダイアログの順序に影響します。
 「60」は非クエストラインのスタンドアロンクエストの一般的な値なので、ここにそれを入力します。
・タイプ:ここでは「サイドクエスト」を選択します。
 これは、プレイヤーのジャーナルにクエストがどのように表示されるかにのみ影響します。
右下の「OK」ボタンを押してクエストを保存します。


ゲーム内のすべてのオブジェクトには独自の ID があるため、これは一意である必要があります。
一般的な手法は、単一のクエストに対して作成するすべてのオブジェクトにプレフィックスを使用することです。
これにより、オブジェクト ウィンドウのフィルターを使用して、そのクエストに関連するすべてのオブジェクトを簡単に確認できます。
(内部的には、オブジェクトをクエスト固有としてマークするため、他の開発者はオブジェクトを一般的に使用しないことがわかります。)
このチュートリアルでは、「Getting Started Quest」に「GSQ」を使用しています。
クエストステージの作り方
オブジェクト リストでクエストをダブルクリックして、元のクエストを開きます。
[クエスト ステージ] をクリックして、(当然のことですが)クエスト ステージ タブに移動します。

クエストが作成されるまでは利用できない特定のオプションがあるため、
基本データを入力した後でクエストを閉じて再度開きました。
オブジェクト リストにエントリが追加されると、準備完了です。

ここでは、クエストを分解してレイアウトします。
左側の表 (「インデックス」というラベルの付いた列) には、ステージがリストされます。
それを右クリックして「新規」を選択します。

編集用に選択されたステージ番号を使用して、ステージがすぐに作成されます。
現時点ではこれを 0 のままにしておき、プレイヤーがこのコンテンツを実際に操作する前の「プレクエスト」段階とみなします。

テーブル内を右クリックし、再度「新規」を選択して別のステージを作成します。これに「10」というラベルを付けます。
通常、クエスト ステージには 10 ずつ番号を付けます。
そうすることで、後で必要に応じて、すべての番号を付け直すことなく、前に戻って中間ステージを追加できる柔軟性が得られるからです。(
BASIC でプログラミングしたことがあれば、この規則に親しみを感じるはずです。)

続けて、20、30、40 番のステージを作成します。



クエストの基本的な骨組みは作成されました

2.アクターの作成

Bethesda チュートリアル アクターの作成
https://www.creationkit.com/index.php?title=Bethes...

この章では、エディターで民間人 (プレイヤーに戦闘の挑戦を提供するものではありません) と
敵の両方の NPC を作成する方法を説明します。

読者は次のことを学びます:
  • エディターでの NPC の作成方法
  • NPC の基本的な戦闘統計を設定する方法

◎アクター(Actors)
スカイリムでは、動く生き物はすべてアクターと呼ばれる特別な種類のオブジェクトとして設定されます。
すべての動物と人型生物がこのオブジェクトを使用し、キャラクターの外観、動作、その他すべてが定義される場所です。
アクターの設定
ベンドゥ オロの作成
・ID:GSQBenduOloクエスト ID と同様に、これはゲーム全体で一意である必要があります。
 彼に ID GSQBenduOlo を与えます。
 (ID にはスペースや特殊文字を含めることはできないことに注意してください。)
・名前:Bendu Oloプレイヤーに表示される名前。
 私たちの場合は「ベンドゥ・オロ」です。
・ショートネーム:Benduこのキャラクターに詳しい人がこのキャラクターをどのように呼ぶか。
 これは、後で説明する Radiant Story システムで使用されます。
 とりあえず、彼を「ベンドゥ」と呼んでください。
・Unique:現時点で考慮する必要があるチェックボックスはこれだけです。
 これにより、このアクターは世界に 1 人だけであるべきであることがエンジンに通知されます
 (たとえば、私たちが作成していた新しいタイプの動物とは対照的に)。
 これにチェックが入っていることを確認してください。



すぐ右側にある 「Traits」タブで設定する必要があることがいくつかあります。
・Race:DarkElfRace非常に説明不要 -- このアクターがなる種族を設定します。
 プルダウンメニューから「DarkElfRace」を選択します。
 これで、Bendu はダークエルフの外観と種族ボーナスを得ることができます。
・音声タイプ: MaleDarkElfこれは、このアクターが利用できる一般的な会話と戦闘の吠え声を決定します。
 彼を男性ダークエルフとして設定します。

キャラクターは複数のクエストで使用されることが多いため、ほとんどの場合、キャラクターには識別子としての接頭辞が付けられません。
Bendu には明るい未来が待っているかもしれないので、彼を単に「BenduOlo」と呼ぶことを検討してもよいでしょう。

最後に、[インベントリ] タブに移動します。
ここでは、彼がただ下着姿で走り回らないように、いくつかの服を与えてみましょう。
アクターが何を着るかは衣装によって決まります。
Skyrim にはすでに定義されたおしゃれな衣装が多数付属していますが、必要に応じて独自の衣装を簡単に作成できます。
とりあえず、デフォルトの衣装プルダウンメニューから「FarmClothesOutfit01WithHat」を選択して、帽子をかぶった私服を着せてあげましょう。

「キャンセル」ではなく必ず「OK」を押すこと
ウィンドウを閉じるだけで、作業内容は破棄されます。
これは、Creation Kit のほとんどに当てはまります。
残りのチュートリアルでは、常にこのことを思い出すわけではないので、気をつけてください!
アクターの配置
ここで行ったことは、アクターの基本オブジェクトを作成することです。
実際に彼をゲームに配置するには、彼の参照を作成する必要があります。
(ベース オブジェクトとリファレンスの違いがよくわからない場合は、
このページの「ベース オブジェクトとリファレンス」というラベルの吹き出しボックスを参照してください。)

Bendu を既存のスペースに配置します。
ミックスウォーター・ミルには、かつて労働者が住んでいたが、
その後放棄された家があります。ここをベンドゥの家にしましょう。

「セルビュー」ウィンドウを見てください。
「World Space」の右側にあるプルダウン メニューに「Interiors」と表示されていることを確認し、
セル リストから「MixwaterMillWorkersHouse」を選択します。ダブルクリックしてロードします。

少しズームアウトすると、内部空間がさらに見えるようになります。
(レンダリング ウィンドウ内を移動するのにヘルプが必要な場合は、以前のチュートリアルを参照してください。)

善良な Olo 氏をセルに追加するのは、オブジェクト ウィンドウで
GSQBenduOlo をつかみ、レンダー ウィンドウ内の任意の場所にドラッグするだけです。

ゲーム内でアクターをテストする
新しい作品に出会いたいと思っているなら、それは簡単です。
プラグインがロードされていることを確認して、ゲームを開始してください。
→MO2の場合


完了したら、ゲームを開始し、コンソールを引き上げて、次の操作を行います。
COC MixwaterMillWorkersHouse
中に入ると、おそらく椅子に座って歩き回っているベンドゥが見つかるはずです。
私たちは彼のためにセリフを書いていないので、彼があなたに言うことはあまりありませんし、
私たちが彼にアクティビティを与えていないので、することもあまりありません。
しかし、これで新しい NPC が作成されました。おめでとうございます。
敵の作成
次はベンドゥのアミュレットを盗んだ泥棒を作ります。
前と同じように新しいアクターを作成し、ID に「GSQThief」、名前に「Dirty Thief」を付けます。



ただし、ここからはもう少し面白くなります。
残りの泥棒データを指定する代わりに、テンプレートを使用します。
Actor ウィンドウの左下に、「Template Data」セクションが表示されます。

テンプレートを使用すると、このアクターを別のアクターに基づいて作成できます。
必要な部分を変更するだけで、既存のレベル付きリストと統計情報を簡単に使用できるため、
戦闘員になる予定のあらゆる種類の俳優にとって最適です。

そこで、ActorBase プルダウン リストから「LvlBanditMelee1H」を選択します。
この名前はちょっと長めですが、簡単に分解できます。

・Lvl:このアクターはレベル付きリストを使用するため、プレイヤーがより強力になるにつれて、このアクターの難易度もそれに応じて増加します。
・Bandit:このアクターの外観と装備は、私たちが一般的に考える世界中の盗賊キャラクターの原型に適合しており、プレイヤーの戦闘インターフェイスでは「Bandit」として表示されます。
・近接攻撃:このアクターは、遠隔攻撃や魔法攻撃ではなく、近接攻撃を使用します。
・1H:このアクターは片手武器を使用します。

その中には、多くのバリエーションとランダム性があります。
ある時は女性のカジートを、またある時は男性のノルドを手に入れるかもしれません。
レベル別のテンプレートを使用すると、プレイヤーの進行状況や多様性に関係なく、適切な課題をプレイヤーに提供できます。

ほとんどのレベル化されたテンプレートは多数の音声タイプに解決されるため、
テンプレート化されたアクターのダイアログを作成する場合は注意が必要であることに注意してください。
私たちの場合、このアクターは単にクエストの障害物であるため、気にしません。

テンプレートを選択したら、テンプレート領域の適切なボックスをチェックして、
そのテンプレートのどの側面を使用するかを選択する必要があります。
「スクリプトを使用」と「ベースデータを使用」を除くすべてのチェックボックスをオンにします。

種族、インベントリ、装備などの設定について心配する必要はありません。すべてテンプレートから取得しているためです。

「OK」をクリックして泥棒アクターを保存します。
敵を配置する
スカイリムには空いている「ダンジョン」スペースはそれほど多くありませんが、リーチのはるか遠くに利用できるスペースがあります。
セル「ReachwindEyrie01」をロードし、Bendu を Mixwater Mill セルに配置したのと同じ方法で、thief オブジェクトへの参照を配置します。



参照がエディターに緑色のMとして表示されることがわかります。
このアクターはテンプレート化されているため、編集者はそれがどのように見えるかを知りません。
レベルアップしたアクターのデフォルトの難易度が「Easy」であるため、緑色になっています。

作成した新しい悪者にアクセスしたい場合は、プラグインを使用してゲームを起動し、次の手順を実行します。
COC ReachwindEyrie01
戦いの準備をしてください!

■バグ/問題点
ダークフェイスのバグ: 現在、作成されたアクターがゲーム内でレンダリングされた NPC に顔データ
(傷跡、メイクアップ、トーンなど) をエクスポートしないという問題があります。

これは、コンソールを開いてゲーム内でアクターを選択し、選択した NPC に対して
「setnpcweight x」と入力することで一時的に修正できます。
ただし、これは肌の色調を正規化された状態に設定するだけで、顔の特徴はありません。

これは、顔データを手動でエクスポートすることで永久に修正することもできます。
オブジェクト ウィンドウのリストでアクターをハイライト表示し、CTRL+F4を押します。
残念ながら、プラグイン ファイルを保存し、Creation Kit を再起動するまで、これは機能しない可能性があります。

3.ダイアログの作成

ベセスダ チュートリアル ダイアログ
https://www.creationkit.com/index.php?title=Bethes...

この章では、チュートリアル クエスト「Bendu Olo's Only Hope」用の特定のダイアログを作成する手順を説明します。

読者は次のことを学びます:
  • Skyrim のダイアログが Creation Kit でどのように作成されるか。
  • プレイヤーの会話の選択に基づいてイベントをスクリプト化する方法。
ダイアログビュー
Skyrim はシンプルなビジュアル レイアウト システムを提供しているので、会話の流れを作成しながら確認できます。
ビューの使用を開始するには、クエスト (GSQ01) に移動し、ダブルクリックしてクエスト ウィンドウを開きます。
次に、[ダイアログ ビュー] タブに移動します。ウィンドウは次のようになります。

新しいビューを作成するには、ウィンドウの左側にあるテーブルを右クリックし、[新規] を選択します。
このビューに ID を指定するように求められ、プレフィックスとして使用できるクエスト ID が自動的に設定されます。
このビューを「GSQ01BenduView」と名付けます。表内でそれをクリックして選択します。

まだビューに何も追加していないため、退屈な白い空間が広がっています。
その範囲内で右クリックし、「ブランチの作成」を選択します。
このブランチに「GSQ01MeetingBenduBranch」という名前を付けます。
トピックに名前を付けるためのもう 1 つのプロンプトが表示され
(デフォルトの「GSQ01MeetingBenduBranchTopic」をそのまま使用できます)、
Enter キーを押すと、おそらくあまり意味のない一連の四角形が表示されます。

先に進む前に、混乱を招く可能性のある用語がいくつかあるため、正確に理解する必要があります。

・応答(Response): NPC が言ったたった 1 行の会話。
 テキストは 150 文字に制限されています。
 NPC がそれを言いながら物理的に再生するように、感情とアニメーションを割り当てることができます。
・情報(Info):単一の状況に対してまとめられた回答のコレクション。
 キャラクターが複数のセリフを次々に言うとき、それは複数の応答を持つ 1 つの情報です。
・トピック(Topic):特定の状況で NPC が言う可能性のある情報のコレクション (多くの場合、特定の会話の選択に応じて)。
・ブランチ(Branch):プレイヤーの視点から見た特定の会話フローを構成するトピックのコレクション。
したがって、上記の一連のクリックと入力でブランチを作成し、ブランチ自体のトピックが自動的に作成されました。現在、トピックには情報がありません。

トピック
トピックをダブルクリックしてトピック ウィンドウを開きます。

ここで注意する必要があるのは、「トピック テキスト」フィールドだけです。
これは、プレイヤーが NPC と話すときに対話オプションのリストから選択するプロンプトになります。
プレイヤーを標準的な親切な冒険者として設定するので、「何か手助けが必要ですか?」と記入してください。

情報テーブルをダブルクリックすると、NPC の応答を書き込むことができます。

「応答テキスト」フィールドに、次のように入力します。
「そうそう、そう言われたら、汚い泥棒が私のアミュレットを持ち去ってしまいました。... ええと... 取り返していただけますか?」
ウィンドウの下部にある [OK] ボタンを2 回押します。
ウィンドウが消え、[トピック情報] ウィンドウが表示されます。

応答ウィンドウで初めて「OK」ボタンを押すと、エディターは入力した内容に対して簡単なスペルチェックを実行します。
それを正確にコピーした場合、スペルミスはないため、最初のボタンを押しても何も起こりません。

トピックス情報
このウィンドウには大量のデータがありますが、そのほとんどは私たちの目的には不要です。
私たちが注目するのは、中央の条件テーブルです。
ここで、この情報を発言できる人を絞り込みます。
条件を空白のままにすると、世界中のすべての NPC に「何か手助けが必要ですか?」という対話トピックが表示されます。

[条件] リストを右クリックし、[新規] を選択して、この情報の最初の条件を作成します。

各条件は、True または False を決定する独立したチェックです。
リスト内のすべての条件が有効な場合、この情報は有効になります。
最初の条件は、このセリフを言える人を単に制限するだけです。
「GetIsID」は対話条件によく使用されるため、デフォルトで選択されています。
現在「無効」と表示されている中央のボタンをクリックすると、適切なアクターを選択できます。
プルダウン メニューから「GSQBenduOlo」を選択し、[OK] をクリックします。



条件ウィンドウで [OK] をクリックして閉じると、リストにそのウィンドウが表示されます。
今ではベンドゥだけがそれを言うことができますが、私たちは彼にいつもそれを言わせたくないのです。
彼がプレイヤーにクエストを与える直前。
そこで、もう 1 つ条件を追加します。条件リスト内で右クリックし、再度「新規」を選択します。

クエストの現在の段階に基づいて、この部分の会話をさらに制限する予定です。
そこで、[Condition Function] プルダウンをクリックして、[GetStage] を選択します。
(最初の数文字を入力すると、リスト内をスキップできます。スクロールするよりはるかに速いです。)
ここで、「無効」ボタンをクリックしてパラメータを選択すると、ベース オブジェクトではなくクエストのリストが表示されます
( GetStage 条件がクエストのみを扱うことを知っています)。メニューから「GSQ01」を選択し、「OK」をクリックします。



あとは、どのクエスト ステージに関心があるかを条件に伝えるだけです。
クエストがステージ 0 から開始されることがわかっているため、比較のために「==」を選択し、値を「0」に設定できますが、
このステージの前にステージを追加することになった場合、この条件が崩れる可能性があります。
条件を設定するより安全な方法は、現在のステージが 10 未満であることを確認することです。
そのため、比較リストから「<」を選択し、値フィールドに「10」を入力します。

左右の矢印キー、または条件ウィンドウの左下のボタンを使用して条件を並べ替えることができることに注意してください。
この例では順序は重要ではありませんが、AND だけでなく OR も使用して条件を設定し始めた場合は、順序は重要になります。

最終的なトピック情報ウィンドウは次のようになります。
[OK] を押して [トピック情報] ウィンドウを閉じ、[トピック] ウィンドウでもう一度 [OK] を押して閉じます。

リンクダイアログ
ついにダイアログビューに戻りました!新しい対話の一部をご紹介します。
実際にすべてのテキストを表示したい場合は (そうしない理由はないでしょうか?)、
ビューの下部にある [すべてのテキストを表示] チェックボックスをクリックします。

ベンドゥはセリフで質問を投げかけているので、プレイヤーに答える機会を与えたいと考えています。
分岐エリアを右クリックし、「トピックの追加」を選択します。
(コンテキスト メニューにそれが表示されない場合は、ブランチをクリックしなかった可能性があります。)


これにより、別のトピック ウィンドウが開きます。これには ID を割り当てる必要があります。
「GSQ01MeetingBenduYes」は機能します。
これは、プレイヤーが支援に同意する場合に私たちが選択するためです。
「もちろん、それはできます。」トピックテキストとして入力し、情報テーブルをダブルクリックして応答を作成します。
テキストには、「ああ、ありがとうございます。リーチウィンド砦に運ばれました。急いでください。価値の 2 倍あげます!」と入力します。
今度は「OK」を押すと、スペルチェックが「Reachwind」について警告します。
「無視」ボタンを押して無視し、もう一度「OK」を押すと、「トピック情報」ウィンドウに戻ります。

ここまで来たら、応答テキストを再度ダブルクリックして表示させます。このウィンドウの下部にあるサウンド ファイルのリストに注目してください。
この会話には条件を何も設定していないため、ゲームは世界中の誰もがそれを言うことができると考えており、あらゆる音声タイプに適切なサウンド ファイルを作成しようとします。
これはディスク容量の大きな無駄であり、(音声を録音する予定がある場合は)不必要なパフォーマンスを録音する時間の無駄です。
したがって、このウィンドウを閉じて、GSQBenduOlo を検索する GetIsID 条件を追加します (前のトピック情報で行ったように)。
ここでもう一度応答を見ると、この行が MaleDarkElf ボイスタイプによってのみ発話されていることを認識しているため、1 つのファイルのみがリストされていることがわかります。


もう一度ダイアログ ビューに戻るまで、[トピック情報] ウィンドウと [トピック] ウィンドウで [OK] をクリックします。
ブランチ内に新しいトピックが表示され、それに合わせて拡張されたトピックが表示されます。

Dialogue Views の利点は、これらのトピックを自分にとって意味のある方法でアレンジできることです。
実行時には、ゲームはこの位置を気にしません。
それは単にデザイナーの便宜のためです。新しいトピックの上部バーをつかんで、都合の良い場所にドラッグします。

もう 1 つのトピックを作成します。今回はトピック テキストを「申し訳ありませんが、今はできません」とします。
Bendu の応答を「まあ、それでは大丈夫です」に設定します。
トピック情報に GetIsID 条件を設定することを忘れないでください。

これらすべてのトピックはブランチ内に存在しますが、ゲームはトピック間のフローについては何も知りません。
それらを結び付けなければなりません。「GSQ01MeetingBenduBranchTopic」をクリックしてアクティブにします。
次に、その行のテキストをもう一度クリックし (カーソルをロールオーバーすると、カーソルが小さな手に変わります)、
行を GSQ01MeetingBenduYes までドラッグします。
同じことを行い、最初のトピックから GSQ01MeetingBenduNo トピックまで線をドラッグします。



ここで、プレイヤーが「何か手助けが必要ですか?」というプロンプトを選択すると、ベンドゥはセリフを言い、
そのトピックからのリンクに基づいて別の選択肢のリストをプレイヤーに提示します。
選択肢は、そのトピックからリンクされた順序でリストされます。
スクリプトダイアログ
ここではスクリプト システムに初めて取り組みますが、非常に簡単なので、苦手な方でも心配する必要はありません。

現時点では対話フローが設定されていますが、ゲームにはさまざまな選択肢が何を意味するかという概念がありません。
プレイヤーが「はい」と言ったら、プレイヤーがクエストを受け入れ、次の段階に進んだことを伝える必要があります。

GSQ01MeetingBenduYes トピックの下にあるテキスト「Oh, thank you...」をダブルクリックします。
(これにより、最初にトピック ウィンドウが表示されずに、直接情報ウィンドウが表示されることに注意してください。)

このウィンドウの下部に、「開始」と「終了」とマークされたスクリプトのフィールドが表示されます。
Begin スクリプトは NPC がセリフを言い始めるときに実行され、End スクリプトはNPC が言い終わるときに実行されます。
(スクリプト用語では、これらのスクリプトの小さな部分は「スクリプト フラグメント」と呼ばれます。)

「終了」フィールドに、次のスクリプト コマンドを入力します。
GetOwningQuest().SetObjectiveDisplayed(10)
GetOwningQuest().SetStage(10)

SetStage(10)ご想像のとおり、この部分はクエストの現在のステージを 10 に設定します。
このGetOwningQuest()部分は、関心のあるクエストがこのダイアログを含むクエストであることを示しているだけです。
(場合によっては、クエスト内の行を別のクエストでいじりたい場合があるため、具体的にする必要があります。)

[コンパイル] を押すと、右側の [スクリプト名] の下に、いくつかの gobbledygook ポップアップが表示されます。
それは無視して構いません。(ただし、入力が間違っていると、編集者から文句を言われるでしょう。)

ウィンドウを閉じる準備ができたら、次のように表示されます。


以上です!窓を閉めれば準備完了です。ダイアログ ビューでは、この情報のテキストの先頭に「[S]」が付いていることがわかります。
そのため、各ダイアログを開かなくても、ゲーム ロジックが関連付けられているダイアログの部分を簡単に見つけることができます。
分岐と条件
私たちが今やったことは、対話のブランチを作成することです。
デフォルトでは、これは「トップレベル」ブランチです (ビュー内でオレンジ色になっているのはこのためです)。
現時点では、他のブランチ タイプについて心配する必要はありません。
アクターがプレイヤーに伝えることができる最初の言葉の 1 つとして、トップレベルのブランチが利用可能であることを知っておいてください。

上部に黄色とオレンジ色のバーがあるトピックは、ブランチの開始トピックとしてフラグが立てられています。
アクターがプレーヤーにどのような選択肢を提供するかを決定するとき、アクターは開始トピックを探し、
有効なすべてのトピックに対するプロンプトを表示します。
覚えていると思いますが、開始トピックには、クエスト ステージが 10 未満である必要があるという条件を設定しました。
プレイヤーがクエストを受け入れることを選択すると、クエスト ステージは 10 に設定されます。
これは、開始トピックが無効になることを意味します。その俳優のトピック リストには表示されなくなります。

非開始トピックには、通常、ブランチの開始トピックが有効な場合にのみアクセスされるため、条件のリストをはるかに小さくすることができます。
そのため、追加の音声ファイルが発生しないように、音声を特定の NPC に限定しました。ゲームプレイの観点からは、それは問題ではなかったでしょう。

プレーヤーがリンクのないトピックを選択すると、ゲームは再び有効なトップレベルのトピックを探してプレーヤーに選択肢を与えます。
どれも有効でない場合、NPC はプレイヤーを対話から解放します。
実機での確認
ゲームは追加したStart-Game Enabledクエスト、および場合によっては
変更したクエストを追跡するために SEQ ファイルを使用します。
これらのファイルは、ダイアログやシーンが適切に動作するために必要です。


現状の対話にはいくつかの問題があります。

次の選択リストに直接点滅します。(音声がないので、キャプションがオンになっていない場合、彼が何を言っているのかまったくわかりません。
たとえキャプションがあったとしても、おそらく文字があまりにも早く過ぎて読めないでしょう。)
あなたが手助けを拒否すると、彼はすぐに同じトップレベルのトピックに戻るだけで、奇妙に感じます。
幸いなことに、これらは簡単に対処できます。
追加のダイアログ
ここにいる間に、アミュレットを持って戻ってきたときにクエストを終了する会話も作成しましょう。

ダイアログ ビューで右クリックして新しいブランチ(トピックではない) を作成し、「GSQ01BenduFinishBranch」という名前を付けます。
開始トピックのデフォルト名を受け入れ、トピックのテキストを「お守りを持ってきました。」とします。
返事として彼に何か良いものを与えてください(私は「あなたがその泥棒を十分に打ち負かしてくれることを願っています!」と言いました)。
2 つの条件が必要になります。
1 つはベンドゥに制限するもの、
もう 1 つはクエストのステージ 30 に制限するものです。
最後にGoodbyeに設定し、
言われた時点でクエストをステージ40に設定します。


これですべての操作ができるようになっているはずです。完了するとこのようになります。

アミュレット自体の処理もまだ終わってないし、クエストもステージ10から30までは進めないので、やるべきことはある!

4.アイテムの作成

Bethesda チュートリアル アイテムの作成
https://www.creationkit.com/index.php?title=Bethes...

このチュートリアルでは、サンプル クエストでベンドゥ オロから盗まれたアミュレットの作成方法を説明します。
読者は次のことを学びます:
  • 新しいアイテムの作成方法
  • そのアイテムをアクターのインベントリに追加する方法

◎アイテムの作成/コピー
改造の目的では、既存のアイテムをコピーしてその値を変更することになるでしょう。
この方法では、すでに 3D モデルがセットアップされており、動作することがわかっているものから開始できるため、
特定の設定をそれぞれいじる必要がありません。

このアミュレットでは、闇の一党のクエストラインで使用される長老評議会のアミュレットのコピーを作成します。
オブジェクト ウィンドウで、 に移動しますItems -> Armor -> AmuletsandRings。

「ElderCouncilAmulet」をダブルクリックして、Armor ウィンドウを開きます。

ここにいくつかの変更を加えて、クエストに適したものにするつもりです。



ID:「GSQAmulet」に変更
名称:「ベンドゥ・オロのアミュレット」に変更
値: 250 に変更 (ベンドゥは資力のある人ではありません)
他はすべてそのままにして、「OK」ボタンを押します。ID を変更したため、これらの属性を使用して新しいオブジェクトを作成するか、既存のオブジェクトを変更するかを尋ねられます。新しいオブジェクトを作成したいので、「はい」ボタンを押します。

それだけです!この例では鎧を作成していましたが、同じテクニックを ID を持つゲーム内のあらゆるオブジェクトに使用できます。
IDを変更することで新しい武器、種族、クリーチャー、呪文、食材などを作ることができます。

ここで私たちがすべき最後のことは、それを盗賊の在庫に入れることです。
GSQThief アクターを再度開き、Actor ウィンドウのインベントリ タブに移動します。

最初に気づくのは、すべてがグレー表示になっていることです。
これは、このアクターをテンプレートに基づいているため、インベントリはすでにそのテンプレートによって設定されているためです。
ただし、テンプレートの個々の部分を簡単にオーバーライドできます。
ウィンドウの左下隅にある「インベントリを使用」ボックスのチェックを外すと、インベントリ領域が点灯します。

デフォルトのテンプレートがなくなったため、山賊の衣装を入力する必要があります。
デフォルトの衣装プルダウン メニューから「BanditArmorMeleeHeavyOutfit」を選択します。



アクターのインベントリに追加のアイテムを追加するには、インベントリ テーブル内で右クリックし、[新規] を選択します。
これにより、デフォルトでゲーム内の最初のオブジェクト (アルファベット順) の 1 つのインスタンスとなるエントリがテーブルに追加されます。
[オブジェクト] プルダウン メニューから、作成したばかりのアイテム (GSQAmulet) を選択すると、泥棒のインベントリの準備が整います。

5.基本的なクエストのスクリプト作成

このチュートリアルでは、スクリプトを使用して、プレイヤーのアクションに基づいてクエストラインを進める方法を示します。
以前にダイアログをスクリプト化する方法を示しましたが、ここではアクターやゲーム オブジェクトに任意のスクリプトをアタッチする方法も示します。

読者は次のことを学びます:
  • スクリプトがどのように動作し、Creation Engine 内のオブジェクトにアタッチされるのかに関する基本的なフレームワーク
  • 新しいスクリプト言語でイベントに応答する方法
スクリプトの追加
Creation Kit で使用されるスクリプト言語は Papyrus と呼ばれます (巻物が印刷される素材にちなんで)。
Papyrus スクリプトは、ゲームが実行時に実行するバイトコードに変換される通常のテキスト ファイルです。

最初に行うことは、泥棒が殺されたときにクエストが適切に更新されるように、泥棒にスクリプトを追加することです。

スクリプトの追加
これまで作成してきた GSQThief アクターを開きます。
ウィンドウの「Papyrus Scripts」セクションを見てみましょう。


「追加」ボタンをクリックします。これにより、このアクターに追加できる可能性のあるスクリプトのリストが表示されます。
ただし、新しいスクリプトを作成するので、リストの上部にある「[新しいスクリプト]」をダブルクリックします。

これにより、さらに別のウィンドウがポップアップ表示され、スクリプトに名前を付けることができます。
その名前を「GSQThiefScript」に設定し、「OK」をクリックします。



これで、スクリプトがアクターに追加されました。
ただし、ご想像のとおり、まだ実際には何も行われていません。
プロパティ
スクリプト名をダブルクリックして、このスクリプトのプロパティ ウィンドウを表示します。
スクリプト自体は、スクリプトがアタッチされているオブジェクト以外のゲーム内のオブジェクトについては認識しません。
プロパティを使用してオブジェクトをフックし、相互に影響を与えられるようにします。
この例では、泥棒が殺されたときに GSQ01 をステージ 20 に設定したいので、どのクエストを対象にするかをスクリプトに伝える必要があります。

このウィンドウの左下にある「プロパティの追加」ボタンを押します。ここでプロパティを作成します。
「タイプ」フィールドで、プルダウンから「クエスト」を選択するか、「クエスト」という単語を入力します。
[名前] フィールドに「TutorialQuest」と入力し、それ以外は空白のままにします。



これで、「TutorialQuest」と呼ばれるものを考慮するようにスクリプトに指示しましたが、スクリプトはそれがどのクエストであるか知りません。
リスト内で作成したプロパティをクリックし、ウィンドウの右側にある「値の編集」をクリックします。
新しいプルダウン メニューが表示され、ゲーム内のすべてのクエストがリストされます。
このメニューから「GSQ01」を選択し、「OK」をクリックします。

スクリプトを書く
このプロパティを追加したので、それを使用して何かを行う実際のスクリプトを追加する必要があります。
スクリプト名を右クリックし、「ソースの編集」を選択してスクリプト エディタを表示します。

一番上の行 ( Scriptname GSQThiefScript extends ObjectReference) は、スクリプト作成時に編集者が作成した定型文です。
その数行下が、作成したプロパティのテキスト バージョンです。

テキストの下部に、次のコードのスニペットをコピーして貼り付けます。
Event OnDeath(Actor killer)
        TutorialQuest.SetObjectiveDisplayed(20)
	TutorialQuest.SetStage(20)
EndEvent
もう一度言いますが無視してくださいSetObjectiveDisplayed(20)
プログラミングやスクリプトの作成に十分慣れていて、貼り付けた内容が理解できる場合は、
「Amulet のスクリプト作成」セクションに進んでください。他の人のために、一行ずつ見ていきます。

Event OnDeath(Actor killer)
この行は、スクリプトが俳優の死亡に応答することを宣言します。
アクターが死亡すると、ゲームはこの時点からコードの実行を開始します。
ゲームでは俳優を殺した人物を「killer」変数に入れますが、その部分は私たちには関係ありません。

TutorialQuest.SetStage(20)
SetStage対話チュートリアルで所有クエストを呼び出したときと同様に、これにより、TutorialQuest プロパティで設定したクエストのステージ 20 が設定されます。
読みやすくするためにインデントしています。

EndEvent
これは、死亡イベントの処理が終了したことを意味します。

ファイル メニューから [保存] を選択する (または Ctrl-S を押す) と、エディターがスクリプトのコンパイルを試みます。
出力ウィンドウがポップアップします。スクリプトが構文的に正しい場合は、次のようになります。



そこに他に何かが表示された場合は、何か間違ったものを入力したことになります。再試行する!
完了したら、スクリプト ウィンドウとアクター ウィンドウを閉じ、プラグインを保存します。
次に、アミュレット自体のスクリプトを作成します。
アミュレットのスクリプト作成
最後のチュートリアルで作成した GSQAmulet アイテムを開きます。
Armor ウィンドウの右端にスクリプト領域があります。



以前と同じように新しいスクリプトを作成し、GSQAmuletScript という名前を付けます。
Quest プロパティを追加しますが、気の利いたトリックを確認するために、今回は「TutorialQuest」ではなく「GSQ01」と名付けます。

AutofilledProperty.png

既存の ID と一致する名前をプロパティに指定したため、プロパティの値が自動的に設定されます。
多くのプロパティを宣言している場合、これにより時間を大幅に節約できます。

スクリプトを開いて、それにイベントを追加します。
アミュレットは (当然ですが) 死ぬことはありませんが、プレイヤーがいつそれを拾うのかを知りたいと考えています
イベント スクリプトは次のようになります。
Event OnContainerChanged(ObjectReference newContainer, ObjectReference oldContainer)
	if (newContainer == Game.GetPlayer())
                GSQ01.SetObjectivedisplayed(30)
		GSQ01.SetStage(30)
	endif
EndEvent

このスクリプトには注意すべき点がいくつかあります。

宣言内のパラメータ (newContainerとoldContainer) は、
ゲームがこのスクリプトにイベントを処理するように指示するときに、ゲームによって入力されます。

OnContainerChanged イベントは、このオブジェクトの所有者が変わるたびに発生するため、
プレイヤーがステージを取得する場合にのみステージを設定する必要があるため、if/endifブロックになります。

Game.GetPlayer()これは、プロパティを設定する必要なくプレーヤーへの参照を取得する便利な方法であり、

newContainerこのイベントが発生したときにエンジンによって埋められるため、
2 行目で比較を行って項目がプレーヤーに移動していることを確認できます。

このスクリプトの書き方では、プレイヤーがアミュレットを拾うたびに SetStage が呼び出されます。
各クエスト ステージは 1 回しか発生しないため、これは問題ではありません。SetStage(30) を呼び出しても、初回以降は効果がありません。
このスクリプトも問題ありません。スクリプトとアーマー ウィンドウを閉じて、プラグインを保存します。

これで、クエストを最初から最後までプレイし、 SQVでコンソールをチェックしてステージの変化を確認できるようになりました。
ただし、プレイヤーがコンソールを使用することは期待できないため、クエストについてより良いフィードバックを提供する方法を次の章で学びます。

パピルスの箱は、間違ったコードが挿入されると不安定になる可能性があります。
フォームを修正して元のフォームに戻り、CK を再起動すると解決する可能性があります。
保存されたスクリプトをパピルス ボックスから削除しても、スクリプト フォルダー内の関連する
コンパイル済み PEX が自動的に削除されない場合があり、ゲーム内のテストに影響します。

6.クエストの目標

ベセスダ チュートリアル クエストの目標
https://www.creationkit.com/index.php?title=Bethes...

このチュートリアルでは、プレーヤーが現在の目標をより簡単に追跡できるように、
目標とクエストのターゲットを作成する方法を読者に示します。
また、プレイヤーを混乱させたりイライラさせたりする可能性のあるいくつかの未解決の問題も解決します。

読者は次のことを学びます:
  • エイリアスと目的の作成方法
  • 目標をオンまたはオフにする方法
  • クエストの完了と終了を処理する方法
  • 追加クエストステージの挿入方法

目的
プレイヤーがスカイリムでクエストを進めるとき、メニューでクエストを確認し、
現在の目的を確認し、ストーリーの次の部分に進む必要がある場所のアイデアを得ることができます。
目標を立てる最初のステップはターゲットを設定することであり、これはエイリアスの世界に初めて飛び込むことを意味します。
エイリアス
Aliases は、ストーリーの過程でさまざまな人々や場所が果たす役割を定義するクエストであると考えることができます。
各エイリアスは、ゲーム世界内の特定の参照または場所を指します。
このクエストの例では、これらの役割にはベンドゥ、泥棒、アミュレットが含まれます。
これらはそれぞれ、少し異なる方法で定義する必要があります。

クエストを再度開き、今度は「Quest Aliases」タブに移動します。
この時点では、大きな空のテーブルがほとんどです。
テーブル内を右クリックし、[新しい参照エイリアス] を選択すると、大きな威圧的なウィンドウが開きます。
ありがたいことに、今のところはほとんどすべてを無視します
(この機能のほとんどは、エイリアスに関するチュートリアルで後ほど説明します)。

上部のエイリアス名フィールドに「Bendu」と入力し、「Unique Actor」ラジオ ボタンをオンにして、
有効になるプルダウン メニューから「GSQBenduOlo」を選択します。完了すると、ウィンドウは次のようになります。



リストに「GSQBenduOlo」が見つからない場合は、基本オブジェクトのプロパティに戻り、
Unique フラグがオンになっているかどうかを確認してください。
ユニーク アクターのリストには、「ユニーク」フラグを持つアクターのみが表示されます。

[OK] をクリックしてこのウィンドウを閉じます。
右クリックして「新しい参照エイリアス」を再度選択し、新しいエイリアス ウィンドウを開きます。エイリアス名に「Thief」と入力します。
泥棒は一意のアクターではないため (テンプレートから作成されているため)、今回は特定の参照塗りつぶしタイプを使用する必要があります。
[特定の参照] ラジオ ボタンをクリックし、その右側にある大きな [強制参照の選択] ボタンをクリックします。

参照を選択するには 2 つの方法があります。
Cell ドロップダウンから「ReachwindEyrie01」を選択し、Ref ドロップダウンから「GSQThief」を選択します。
Reachwind Eyrie がロードされ、レンダー ウィンドウに表示されている場合は、
「レンダー ウィンドウで参照を選択」をクリックして、マウス ポインターをターゲットに変えることができます。
大きな緑色の M をダブルクリックして選択します。
いずれの場合も、そのウィンドウで [OK] をクリックし、次にエイリアス ウィンドウをクリックして、2 番目のエイリアスの作成を完了します。



もちろん、ユニーク アクター リストからベンドゥを選択する代わりに、特定の参照を使用してベンドゥを指すこともできます。
かなり複雑な理由により、可能であれば、特定の参照よりも Unique Actor タイプを使用する方がメモリ効率が高くなります。

次に、3 番目のエイリアス (アミュレット用) を作成しますが、これは難しいです。
アクターのみを一意にできるため、Unique Actor タイプは機能しません。
そして、それは私たちの泥棒の在庫にのみ存在するため、それを特定の参照として指定することはできません。
そこで、エイリアス自体に独自の参照を作成させることになります。

もう一度新しい参照エイリアスを作成します。
「Amulet」という名前を付け、「Fill Type」の「Create Reference to Object」のラジオボタンをクリックします。
左から右に移動すると、次のようになります。



最初のプルダウンメニューから「GSQAmulet」を選択します。
[レベル/難易度] メニューは無視します (アクターを作成していないため、オブジェクトの難易度の概念はありません)。
「作成場所」のラジオボタンをクリックします。
最後のプルダウンから「Thief」を選択します。

ご想像のとおり、これにより、クエストの開始時 (ゲームの開始時) に、盗賊のインベントリにアミュレットへの新しい参照が作成されます。
現時点では、これにより泥棒にアミュレットのコピーが2 つ与えられることになるため、GSQThief を開いてインベントリからアミュレットを削除します。
目標の作成
次に、クエスト ウィンドウの [Quest Objectives(クエストの目標)] タブに移動します。
ここで、プレイヤーが見たとおりに実際に目標を設定します。

各目標には、インデックス (参照するために使用する番号)、プレーヤーに表示されるテキスト、
およびプレーヤーのマップとゲーム内インターフェイスに配置される矢印を取得するターゲットのリストがあります。

新しい目標を作成するには、ウィンドウの上部にあるテーブルを右クリックし、メニューから「新規」を選択します。
その下の「Objective Data」エリアで、Index 値を「10」に変更し、表示テキストを「盗賊を殺せ」とします。



通常、私たちは目標のインデックス番号を、その目標を確認したいステージと一致させようとします。
より複雑なクエストの場合は、ややこしくなる可能性がありますが、単純なクエストの場合は、
後で説明するように、これにより物事を追跡するのがはるかに簡単になります。

最後に、[インデックス] フィールドと [表示テキスト] フィールドの下のテーブルで、右クリックして [新規] を選択し、
新しいクエスト ターゲットを作成します。これにより、下の「ターゲット エイリアス」プルダウンから何かを選択するまで、
非常に恐ろしい「NO TARGET」が作成されます。このリストには、前に定義したすべてのエイリアスが表示されます。
「Thief」を選択すれば、先に進むことができます。
(「NO TARGET」は、別の項目をクリックするまで残ります。)

次に、別の目標を立てます。

インデックス: 20
表示テキスト:ベンドゥ・オロのアミュレットを回収します。
対象別名:アミュレット
そしてもう一つ:

インデックス: 30
表示テキスト:ベンドゥ・オロのアミュレットを返してください。
ターゲットの別名: Bendu
完了すると、ウィンドウは次のように表示されるはずです。

これで目標が設定できたので、あとはそれをいつ表示するかをゲームに指示するだけです。
目標の設定
SetObjectiveDisplayed()私が無視するように言ったことをすべて覚えていますか?
ここで彼らが活躍します。何らかの奇妙な理由で以下が機能しない場合、それらはセーフティネットです。
彼らはこれがやるべきことをやるでしょう。すべてのベースをカバーするには両方を行うことをお勧めします。

「クエストステージ」タブに戻ります。クエストが進むにつれて、ここにロジックを追加していきます。

左側のリストでステージ 10 をクリックします。
クエスト ステージにスクリプト ロジックまたはログ エントリを追加するには、少なくとも 1 つの「クエスト ステージ アイテム」が必要です。
そのため、上部にある「ログ エントリ」と表示されている表を右クリックし、「新規」を選択します。

ログエントリは、プレイヤーの日記に表示されるテキストの一部です。最新のログ エントリのみが表示されるため、
これを使用してクエストのストーリーが変化するたびに更新することができます。「ログエントリ」領域に以下を入力します。

貴重なアミュレットを盗まれたベンドゥ・オロに会ってきました。
彼はそれに感傷的な愛着を持っているため、報酬としてその価値の2倍を提供しました。
右側のテキスト フィールド (Papyrus フラグメント タブ内) をクリックします。
そうすると、スペルチェックウィンドウがポップアップし、「Bendu」と「Olo」が適切な単語ではないというメッセージが表示されます。
両方の「間違い」を無視して、スクリプト ロジックを追加します。

パピルス領域に次のように入力しますSetObjectiveDisplayed(10)。
「コンパイル」ボタンを押して、それが正しく行われたことを確認します。
ご想像のとおり、これによりクエストの現在の目標が 10 に設定され、プレイヤーに適切なクエストのターゲットが与えられます。
これはこのクエストで表示される最初の目標であるため、「開始済み」バナーもプレイヤーに表示されます。

「ステージ アイテム」を作成する追加の手順がなぜ必要なのか疑問に思うかもしれません。
より複雑なクエストでは、複数のステージ アイテムを使用でき、その一部またはすべてが条件を使用して発生するかどうかを制御します
(たとえば、バリアントを許可するため)。プレイヤーがクエストの前半で行った選択に応じてログエントリが記録されます)。
この場合、クエストは非常に単純で、各ステージに必要なステージ アイテムは 1 つだけです。
次に、左側のリストからステージ 20 を選択し、それに新しいステージ アイテムを作成します。

ステージ 20 は、泥棒を倒した後、アミュレットを入手する前であることを覚えておいてください。
ここでやるべきことは 2 つあります。プレイヤーに前の目的 (泥棒を倒す) が達成されたことを伝え、
次の目標を設定します。これを 2 行のスクリプトで行います。
SetObjectiveCompleted(10)
SetObjectiveDisplayed(20)

「完了」と「表示」は 2 つの異なるフラグであることに注意してください。
プレイヤーが見たことのない目標を完了することもできます。

クエストの全体的なストーリーは変わっていないため、ここでの日記エントリは空白のままにしておきます。

ステージ 30 に対しても同じことを行います。
ただし、今回はロジックが目標 20 を完了し、目標 30 を表示する必要があります。



最後に、ステージ 40 では、目標 30 を完了するだけです。
ステージ 40 が設定されたときに「完了」バナーが表示されるように、
ログ エントリ テキスト フィールドの下にある [クエストを完了] チェックボックスもオンにする必要があります。
(これにより、クエストがプレイヤーのジャーナルの非アクティブな部分に移動され、ある程度整理された状態に保たれます。)

もう過去のことなので、最後の日記にはクエストで何が起こったかを要約する必要があります。例えば:

私はベンドゥ・オロに会い、盗まれたアミュレットを取り戻したことで多額の報酬を受け取りました。
試してみる
クエストを進めると、ジャーナルに進行状況が表示され、さまざまなプロット ポイントへのクエスト ターゲットが表示されます。

7.細かな修正

ベセスダ チュートリアル クエスト ルース エンド
https://www.creationkit.com/index.php?title=Bethes...
問題点
クエストの実装に伴い、いくつかの問題が発生しています。
  • ベンドゥはクエストを受け入れた後に殺される可能性がありますが、すでにクエストを開始している場合は完了することが不可能になります。
  • Bendu が行き先を指示するときに、プレイヤーのマップにマップ マーカーを追加しません。
  • プレイヤーがスリでアミュレットを入手することも可能で、そうすればクエストは適切に進行しますが、追加の目標が未完了のまま残ります。
  • プレイヤーはベンドゥに会う前に泥棒を見つけて殺す可能性があり、それによってクエストが進行し、混乱が生じます。
  • ベンドゥは実際にはクエストの最後にプレイヤーからアミュレットを受け取りません。
  • プレイヤーはアミュレットを落として紛失する可能性があり、それはプレイヤー自身の責任になりますが、それでも考えるべきことです。
  • プレイヤーがベンドゥを助けないことを選択した場合、彼は以前にプレイヤーに会ったことを認めないことになり、少し不快になる可能性があります。
  • ベンドゥは、自分の具体的な状況を認識するのではなく、一般的な挨拶と別れをするだけです。
これらを一度に 1 つずつ見ていきます。中には複数の解決策があり、長所と短所があるものもあります。
ベンドゥを殺す
ベンドゥの死を処理するには 2 つのオプションがあります。
クエストがプレイヤーを煩わせないようにクエストをシャットダウンするか、
ベンドゥが決して死なないようにするかのどちらかです。
明らかに、どちらの側にも長所と短所があります。
たとえば、ベンドゥが将来必要なキャラクターである場合、とにかく彼を殺せないようにしたいかもしれません。

■死を扱う
特定の段階でクエストを完了する方法 ([クエスト完了] ボックスを使用) はすでに示しました。
そのステージが設定されると、クエストはプレイヤーのジャーナルの非アクティブな部分に移動され、
「COMPLETED: <クエスト名>」バナーが表示されます。
クエストの失敗も同様に機能しますが、プレイヤーには代わりに「FAILED」が表示されます。

番号 200 の新しいクエスト ステージを作成します。
ダウナーな結論テキストを含むログ エントリを作成します。

ベンドゥ・オロのアミュレットを彼に返すのに失敗しました。

その下の「クエスト失敗」ボックスにチェックを入れます。

次に、ベンドゥが死んだときにこの舞台を設定する必要があります。
(泥棒の場合と同様に) GSQBenduOloScript というスクリプトを彼に適用します。
最初の Scriptname 行の後のスクリプトのテキストは次のとおりです。

Quest Property GSQ01 auto
 
Event OnDeath(Actor akKiller)
	if (!GSQ01.IsCompleted())
		GSQ01.SetStage(200)
	endif
EndEvent

注: クエストが完了した後にプレイヤーが失敗することを望まないため、クエストがまだ完了していないかどうかを確認します。
GSQ01 プロパティを自動入力できます。

■不滅のベンドゥ
もう 1 つのオプションは、Bendu を殺せないようにすることです。
プレイヤーが彼を攻撃すると、彼はブリードアウト (床でのたうち回る) 状態になりますが、戦闘が終了すると再び立ち上がります。

これは非常に簡単に実現できます。GSQBenduOlo のアクター ウィンドウを開き、名前フィールドの下にある [Essential] チェックボックスをクリックします。(「保護」も同様の状態ですが、プレイヤーとプレイヤーのみがアクターを殺すことができます。)
マップマーカーを追加する
通常、プレイヤーにゲーム内の特定の場所に行くように指示するときは、プレイヤーが簡単に向かうことができるようにマップ マーカーを追加します。
Tamriel ワールドスペースの ReachwindEyrieExterior01 というセルに移動します。
(ReachwindEyrie01 内の黄色のドア マーカーをダブルクリックすると、簡単にアクセスできます。)
外側のドア マーカーのすぐ隣に、大きな M が彫られた緑と青の長方形が表示されます。



GSQ01 Quest を開いて [Scripts] タブをクリックし、ObjectReference プロパティをスクリプトに追加して、「DungeonMarker」という名前を付けます。
レンダリング ウィンドウでマップ マーカーをプロパティのターゲットとして選択します。



次に、ステージ 10 のスクリプトを次のように編集します。

SetObjectiveDisplayed(10)
 DungeonMarker.AddToMap()

コメントをかく


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

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

Menu

【メニュー編集】

スカイリム関連

スカイリム関連


Menu

【メニュー編集】

スクリプト関連

フリーエリア

管理人/副管理人のみ編集できます