イベントスキップ機能を追加します。
基本情報
前提スクリプト
拡張タイプ
○ 要設定 (イベントコマンドで指定する必要あり)
◆ 要注意 (内部の挙動を変えるため競合の可能性あり)
説明
概要
- イベントコマンド [ラベル] で「スキップ開始」と書くと、ラベル「スキップ終了」までのイベント演出を飛ばすことができるようになります。
- この状態を「スキップ可能状態」と呼びます。
- 「スキップ終了」が見つからない場合、スキップは発生しません。
- トリガーが [並列処理] のイベントはスキップできません。
- スキップ可能状態でスキップ区間から抜けるようなラベルジャンプを行うと、スキップ状態が永遠に解除されないなど不具合の原因になります。
- スキップ可能状態で Skip_Key が押されると「スキップ待機モード」になります。
- 「スキップ待機モード」に入ってから Skip_Time フレーム(1 秒 = 60 フレーム)以内にもう一度 Skip_Key を押すと、「イベントスキップ状態」に移行します。
- イベントがスキップされると画面は暗転します。
- スキップボタンが二度連続で押されなかった場合、スキップ待機モードは解除されます。
- Skip_Time が nil の場合、スキップ待機を経由せず即座にスキップします。
◆ イベントスキップ状態の詳細仕様
- [ウェイト] [文章の表示] など、待ち時間(Fiber.yield)が発生するコマンドの「待ち時間処理」が全て無視されるようになります。
- [ピクチャの移動] [移動ルートの指定] などの移動を伴うコマンドは、その移動が即座に終了する(移動速度が無限になるイメージ)ようになります。
- 上記については、処理内容そのものが飛ばされるわけではないので、スキップした場合としなかった場合とでゲームの状態が変わることは基本的にありません。
- [アニメーションの表示] など純粋な演出コマンドに関してはすべて無視されます。
- [選択肢の表示] や [数値入力の処理] などプレイヤーからの入力が必要な処理と、[ショップの処理] や [バトルの処理] などシーンの遷移を含む処理を挟む場合、そこで強制的にスキップ状態を解除します。
- それらの処理が終わると「スキップ可能状態」になります。
- 再びスキップ状態にするには、再び Skip_Key を押す必要があります。
- 無視されるコマンド、スキップできないコマンドの具体的な内容はスクリプト内を確認してください。
- イベントスキップが発生したあと、ラベル「スキップ終了」より前にラベル「スキップ処理」があった場合は、それ以降のコマンドを実行します。
- スキップが発生しなかった場合、「スキップ処理」から「スキップ終了」までのコマンドは全て無視されます。
- 「スキップ開始」と「スキップ終了」の間以外にある「スキップ処理」は単なるラベルとして扱われます。
- 「スキップ開始」と同じラベルに「既読」と書いておくと、そのイベントを一度最後まで見て、もう一度見たときにスキップ可能になります。
- イベントの既読状態はセーブデータに記録されますが、LNS111 共通セーブデータ が導入済みの場合は共通データになり、一度見たイベントは他のセーブデータでもスキップ可能になります。
備考
再定義されるメソッド
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 >
- イベントスキップに使うキー
- Skip_Time <既定値 180 >
- スキップ待機モードの猶予
- Vocab_EventSkip1 <既定値 "%s:イベントスキップ" >
- イベントスキップ待機時に表示される文1
- Vocab_EventSkip2 <既定値 "もう一度%sを押すとスキップします">
- イベントスキップ待機時に表示される文2
更新履歴
- 2021/09/23 [アニメーションの表示] 中にイベントスキップすると画面が暗転したままになる不具合の修正
- 2020/12/29 新版公開
- 2020/12/02 「スクリプト」の2行目以降を処理中にスキップできない不具合の修正
- 2018/04/22 スキップ中に「移動ルートの指定」があるとスキップされない不具合の修正
- こんにちは。不具合を発見したのでご報告いたします。 LNS000 組み込み拡張 LNS010 Input拡張 LNS100 プリセット拡張 LNS102 マウス操作 LNS140 マップ/キャラ拡張 の5つを導入した状態で、マップ画面でマウスカーソルをゲームウインドウの外側で大きく動かすなどすると、「 スクリプト 'LNS 140 マップ/キャラ拡張' の 980 行目で IndexError が発生しました。 index -1 too small for array; minimum: 0 」というエラーメッセージが表示され、ゲームが終了してしまいます。 スクリプトは全て最新で、内容は改変していません。 -- 2022-07-26 01:29:40
- 確認が遅れましたが、対応修正しました。正確には「既に対応済みであったがアップロードを忘れていた」という状態でした…… -- 2022-11-01 15:39:07
- 対応ありがとうございます!しかし LNS000, 010, 100, 102, 140 の5つを入れた状態で起動直後に「スクリプト 'LNS140 マップ/キャラ拡張' の 1719 行目で NameError が発生しました。 undefined method 'lns102_dash?' for class 'Game_Player'」と表示され、終了します。 -- 2022-12-24 16:39:35
最終更新:2021年09月23日 23:09