LNS009a イベントスキップ

LNS009 Game_Interpreter拡張の拡張スクリプト。会話などのイベントを途中でスキップできるようにします。





基本情報

前提スクリプト


挿入位置



説明

概要

 ラベルに「スキップ開始」と書くと、次のラベル「スキップ終了」までのイベント演出を飛ばすことができるようになります。「スキップ終了」が見つからない場合、スキップは発生しません。
 スキップ区間中にスキップ区間から抜けるようなラベルジャンプを行うと、スキップ状態が永遠に解除されないなど不具合の原因になりますので、ご遠慮ください。

◆ スキップ方法

 イベント処理中、ラベル「スキップ開始」があると画面の右上にスキップ可能の旨が表示されます。この状態で F3 キー(Skip_Key で変更可能)を押すと、一旦スキップ待機モードに入ります(このとき、右上の表示が変わります)。スキップ待機モードに入ってから3秒以内にもう一度スキップキーを押すことで、ラベル「スキップ終了」までの処理が全てスキップされます。スキップの際、画面はいったん暗転します。
 実際には、ウェイト、文章の表示、アニメーションの表示、ピクチャの移動などといった、待ち時間(Fiber.yield)が発生するコマンドの、待ち時間が全て無視されるようになります。処理内容そのものが飛ばされるわけではないので、スキップした場合としなかった場合とでゲームの状態が変わることは基本的にありません。
 スキップ中に選択肢や数値入力などのプレイヤーからの入力が必要なイベントコマンドやショップやバトルなどシーンの遷移を含むイベントコマンドが実行された場合、そこで強制的にスキップ可能状態を解除します。それらの処理が終わると、再びスキップ可能な状態になります。

◆ スキップ処理

 イベントのスキップが発生した際、「スキップ終了」より前に「スキップ処理」というラベルがあった場合は、それ以降のイベントコマンドを実行します。イベントをスキップしなかった場合、「スキップ処理」から「スキップ終了」までのイベントコマンドは全て無視されます。

◆ 既読スキップ

 ラベル「スキップ開始」を「既読スキップ開始」としておくことで、一度以上そのイベントを最後まで見た場合のみスキップ可能になります。すなわち、最初の1回はスキップ可能状態にならず、同じイベントをもう一度起動した場合にスキップ可能となります。
 イベントを見たかどうかはセーブデータに記録されるので、異なるセーブデータどうしでは同じイベントをもう一度見なければならない場合もあります。もし、全セーブデータを通して1度だけ見ればよいとしたい場合、LNS006 共通セーブデータ を導入してください。


備考

再定義されるメソッド

  • Game_Interpreter#wait
  • Game_Interpreter#wait_for_message
  • Window_Base#update_open
  • Window_Base#update_close
  • Window_Message#input_pause
  • Window_Message#wait
イベントがスキップされた場合、待ち時間がゼロとなるように変更されます。

上記のメソッドを拡張するスクリプトはこれよりも後ろに入れてください。

設定項目

Skip_Key<初期値::F3>
イベントスキップに使うキーをシンボルで指定する。デフォルトの F3 はLNS005 Input拡張が必須なので注意。
Vocab_EventSkip1<初期値:"%s:イベントスキップ">
イベントスキップ可能になると最初に表示されるメッセージ。"%s"にはスキップキーの名前が入る。
Vocab_EventSkip2<初期値:"もう一度%sを押すとスキップします">
スキップ可能状態でスキップキーを押したあとに表示されるメッセージ。



更新履歴

  • 2020/12/02 「スクリプト」の2行目以降を処理中にスキップできない不具合の修正
  • 2018/04/22 スキップ中に「移動ルートの指定」があるとスキップされない不具合の修正

コメント:

すべてのコメントを見る
最終更新:2020年12月02日 01:41