NPCの行動を待たせるには?

NPCがタスクを完了するまでに、プレイヤーに一定の時間(または時間帯)待ってもらう方法について知りたいです。具体的には、プレイヤーがNPCと会話してアイテムを渡し、後で結果を受け取りに来る必要があるようにしたいのです。私はゲーム内の日、時、分を追跡する独自の時計システムを実装しており、さらに時間の値に応じてオン/オフが切り替わる昼夜切替スイッチも備えています。以下が私の時計システムのイベントページです:

「夜」スイッチは時間が20時にONになり、6時にOFFになります。目的の結果を得るために少し試行錯誤しましたが、うまくいきませんでした。次の日まで待つ、次の昼夜切替スイッチの切り替え時まで待つなど、イベントを再開する前にプレイヤーが短時間待つためのオプションであれば、どのような提案でも歓迎します。アドバイスよろしくお願いします!

-Chew

プレイヤーとNPCの会話が終了してから経過した時間を記録するタイマー変数を追加する必要があります。

例えば、プレイヤーとNPCの会話後にイベントAを起動し、イベントAは並列処理イベントとして設定します。このイベントでは、一定間隔(スクリーンショットで示されている20フレームなど)ごとにタイマー変数をインクリメントし、タイマー変数が設定した値に達したかどうかをチェックします。具体的には、タイマー変数の初期値を0とし、1ずつ増加させていき、60に到達したらプレイヤーが報酬を受け取れるようにするフラグをオンにし、イベントAを終了させます。

時計システムの方に、条件分岐を追加する案もあります。
ただし、この方法は、条件を満たす間ずっとスイッチをONOFFする作り方になっている場合は
上手く機能しません。

そのイベントの待機状態を記録する変数を一つ作ります。
以後、待機変数と呼びます。
イベントが待機状態になる際に、待機変数に数値を入れます。
夜スイッチがONの時・・・2
夜スイッチがOFFの時・・・1

時計システムのスイッチを切り替える条件分岐内に
待機変数が1以上の時は、待機変数を+1する、というコマンドを入れます。

待機変数が3なら、翌日になっているというわけです。

大事なのでもう一度言いますが
この方法は、条件を満たす間ずっとスイッチをONOFFする作り方になっている場合は
上手く機能しません。

例えば、20時以上だったら、常にスイッチをONにするコマンドが実行される場合使えないので
スイッチがOFFでなおかつ20時以上の時だけ実行される条件分岐にしなければなりません。

待機変数を要するイベントが複数ある場合は、条件を満たしたら+1するコマンドを
コモンイベントにまとめて、呼び出すとすっきりします。

すでにDays変数があるなら、プレイヤーがアイテムを渡した日の情報を保存してみませんか?「Pickup Day」といった新しい変数を作成し、アイテムを渡す際に[コントロール変数]を使ってPickup DayにDaysの値を設定し、さらに1を加えてください。その後、自己スイッチAをオンにしてNPCが2ページ目に遷移するようにします。

その2ページ目では、[条件分岐]でDaysとPickup Dayを比較できます。[変数]オプションでは定数の代わりに変数を選択できるため、他の変数との比較が行えます。もしDaysがPickup Day以上であれば報酬を与えます。[else]側では、NPCが「まだ作業中だよ。明日また来てね」のようなセリフを言うように設定できます。

もし1日よりも短い待ち時間にしたい場合は、総時間(hours)で同じ処理を行うのが良いでしょう。Pickup HourにDaysの値を設定し、24を掛けてから現在のHoursを加え、さらに待たせたい時間数を足します。プレイヤーが再度NPCと話した際には、待ち時間を加算せずに同様の計算を別の一時変数で行い、その結果を比較します。

提案をいただき、ありがとうございます。

Bazさん、その方法は私がやろうとしていたこととほぼ完全に一致しています。完全には理解できませんでしたが、2つ目の変数を作成する必要があったようです。今では計画通りに動作しています。ありがとう!

-Chew