事前のお知らせ

RPGツクールMV RPGツクールMZ

イベント中にセーブした場合、コンティニュー時にイベントの続きの一部を実行しない方法

ゲーム中に会話イベントでセーブした後にコンティニューすると、イベントの続きから開始されます。
これはツクールの仕様です。

問題が起こるイベント例

文章:なし, なし, ウィンドウ, 下
文章セーブするか?
選択肢の表示:はい, いいえ (ウィンドウ, 右, #1, #2)
はいのとき
セーブ画面を開く

いいえのとき

分岐終了
文章:なし, なし, ウィンドウ, 下
文章ゲームを続けるか?
選択肢の表示:はい, いいえ (ウィンドウ, 右, #1, #2)
はいのとき

いいえのとき
タイトル画面に戻す

分岐終了

この作りだと、コンティニューすると「ゲームを続けるか?」というメッセージから再開してしまい、プレイヤーには違和感がありますよね?

解決したイベント例

セーブ後にコンティニューした場合に、実行したくないイベントを指定する方法の一例が下記です。

文章:なし, なし, ウィンドウ, 下
文章セーブするか?
スクリプト:$gameTemp.goTitle = true; 
選択肢の表示:はい, いいえ (ウィンドウ, 右, #1, #2)
はいのとき
セーブ画面を開く

いいえのとき

分岐終了
条件分岐:スクリプト:$gameTemp.goTitle
文章:なし, なし, ウィンドウ, 下
文章ゲームを続けるか?
選択肢の表示:はい, いいえ (ウィンドウ, 右, #1, #2)
はいのとき

いいえのとき
タイトル画面に戻す

分岐終了

分岐終了

条件分岐:スクリプト:$gameTemp.goTitle の中にイベントを収めることで、コンティニュー時には条件分岐内のイベントは実行されません。

 

簡単な説明

スクリプト:$gameTemp.goTitle = true;

RPGツクールMVの$gameTempについてのリファレンス
katai5plate.github.io/RPGMV-CoreScript-Reference/jsdoc/Game_Temp.html

$gameTempはゲーム中には保存されますが、ゲームを再開(コンティニューも)する時に初期化される変数(スイッチ)と考えると分かりやすいと思います。

上記の例では、スクリプトで
$gameTemp.goTitle = true;
等と適当な名前を付けて、利用しています。

その後の条件分岐でのスクリプトで $gameTemp.goTitle を入れることで、ゲーム中は true (有効)と判断され、実行されます。
しかし、コンティニュー(ニューゲームでも)すると、 $gameTemp.goTitle は初期化され存在しないので、undefined (未定義)のため、条件を満たしていないと判断され、実行されません。

本当にどんな名前をつけても良いのか?(突っ込みたい方向け)

コアの中で$gameTempが使われているデータは、
MVでは rpg_objects.js
MZでは rmmz_objects.js
の中の Game_Temp.prototype.initialize に書かれています。
これらは使うべきではないでしょう。

MV

$gameTemp._isPlaytest
$gameTemp._commonEventId
$gameTemp._destinationX
$gameTemp._destinationY

MZ

$gameTemp._isPlaytest
$gameTemp._destinationX
$gameTemp._destinationY
$gameTemp._touchTarget
$gameTemp._touchState
$gameTemp._needsBattleRefresh
$gameTemp._commonEventQueue
$gameTemp._animationQueue
$gameTemp._balloonQueue
$gameTemp._lastActionData

スポンサードリンク

スポンサードリンク

-RPGツクールMV, RPGツクールMZ
-,

Copyright© RPGツクールMZ・MV初心者的備忘録 - FGMG (Fun Game Make Group) , 2024 All Rights Reserved.