ページ 1 / 1
【解決済】MZでセーブ画面をキャンセル不可にする方法
Posted: 2024年6月02日(日) 09:30
by おふう
お世話になっております。
ツクールMZではイベントコマンドからセーブ画面を開いた際、Xキー等でセーブ画面を閉じてキャンセル出来てしまいます。
取り返しのつかない選択シーンの前に手動セーブしないと先に進めない仕様を作りたいため、これを一時的にキャンセルできないようにしたく思っています。
(セーブデータの意図せぬ上書きを避けるため、オートセーブではなく手動セーブを使用しています)
以下にMVで同様のことを実現出来るムノクラ様のプラグインがあるようですが、MZで同じ仕様にしたいと思っています。
viewtopic.php?t=10951
MZで実現できる方法をご存じの方がいらっしゃったらご助力お願いします。
よろしくお願いいたします。
Re: MZでセーブ画面をキャンセル不可にする方法
Posted: 2024年6月02日(日) 11:56
by 名無し蛙
「シーン制御>セーブ画面を開く」ではなく
「上級>スクリプト」から以下のコードを入力してセーブ画面を開く、とかどうでしょ
コード: 全て選択
SceneManager.push(Scene_Save);
const _temp = SceneManager._nextScene.createListWindow;
SceneManager._nextScene.createListWindow = function() {
_temp.apply(this, arguments);
this._listWindow.setHandler("cancel", null);
};
トリッキーなコードですけど
他への影響を出さずプラグイン要らずでピンポイントに要件を満たしているはず
Re: MZでセーブ画面をキャンセル不可にする方法
Posted: 2024年6月02日(日) 15:11
by おふう
名無し蛙 さんが書きました:「シーン制御>セーブ画面を開く」ではなく
「上級>スクリプト」から以下のコードを入力してセーブ画面を開く、とかどうでしょ
コード: 全て選択
SceneManager.push(Scene_Save);
const _temp = SceneManager._nextScene.createListWindow;
SceneManager._nextScene.createListWindow = function() {
_temp.apply(this, arguments);
this._listWindow.setHandler("cancel", null);
};
トリッキーなコードですけど
他への影響を出さずプラグイン要らずでピンポイントに要件を満たしているはず
名無し蛙様
早速スクリプトを試してみたところ、セーブ画面のキャンセルを不可にすることが出来ました。
この度はご教示いただきありがとうございます!
あとはセーブ画面のタッチUIのキャンセルボタンが表示されたままになるので、こちらを非表示にする方法がもしあれば、どなたかご教示いただけると幸いです。
(タッチUIをオフにしたいのではなく、押せない状態のボタンが表示されたままなのが少し気になるので、キャンセル不可のセーブ画面でのみ非表示にしたいです)
よろしくお願いいたします。
Re: MZでセーブ画面をキャンセル不可にする方法
Posted: 2024年6月02日(日) 15:42
by 名無し蛙
そういえばMZにはそれがありましたね
コードの末尾に
コード: 全て選択
SceneManager._nextScene.createCancelButton = () => {};
を追加してください
Re: MZでセーブ画面をキャンセル不可にする方法
Posted: 2024年6月02日(日) 17:52
by おふう
名無し蛙 さんが書きました:そういえばMZにはそれがありましたね
コードの末尾に
コード: 全て選択
SceneManager._nextScene.createCancelButton = () => {};
を追加してください
名無し蛙様
ご教示頂いたスクリプトを追記したところ、思い通りの挙動を実現できました。
重ね重ねになりますが、ご助力いただき誠にありがとうございました!
解決済とさせていただきます。