ワールドマップなしで拠点とダンジョンのみのゲームを製作中ですが
セーブを拠点のみできるようにし、ダンジョンではセーブできないようにしたいのですが
ダンジョンでゲームをやめれなくなるので、一時保存してロード時に破棄されるようなセーブシステムが欲しいです。
専用セーブ枠を設けたり、通常のセーブ枠でやったりは問いませんが
通常のセーブ枠を使用する場合は、中断セーブであることがわかる何かしらの目印が欲しいです。
【解決済み】中断セーブ機能
【解決済み】中断セーブ機能
最後に編集したユーザー 水星人 [ 2022年11月25日(金) 22:19 ], 累計 1 回
Re: 中断セーブ機能
次の3つのプラグインを使用します。
1.イベントコマンドで一時保存出来るようにします。このとき、セッション管理プラグインでセッションを作成します。
2.セーブ画面拡張で、プラグインコマンドの章に「中断セーブ」と表示させるようにします。
3.セーブのイベントコマンドの後に、セッション管理プラグインで、ロードされたか判定します。
4.ロードされていた場合は削除するか、もう一度セーブをして、次にロードされた場合は自動的に拠点も戻るようにします。
セーブコマンドの追加(オートセーブ)
https://torigoya-plugin.rutan.dev/system/saveCommand2/
セーブ画面拡張
viewtopic.php?t=11239
セッション管理プラグイン
https://raw.githubusercontent.com/triac ... Manager.js
1.イベントコマンドで一時保存出来るようにします。このとき、セッション管理プラグインでセッションを作成します。
2.セーブ画面拡張で、プラグインコマンドの章に「中断セーブ」と表示させるようにします。
3.セーブのイベントコマンドの後に、セッション管理プラグインで、ロードされたか判定します。
4.ロードされていた場合は削除するか、もう一度セーブをして、次にロードされた場合は自動的に拠点も戻るようにします。
セーブコマンドの追加(オートセーブ)
https://torigoya-plugin.rutan.dev/system/saveCommand2/
セーブ画面拡張
viewtopic.php?t=11239
セッション管理プラグイン
https://raw.githubusercontent.com/triac ... Manager.js
Re: 中断セーブ機能
ご回答ありがとうございます。
後日試してみようと思うのですがイベントコマンドでセーブとなると
カスタムメニュープラグイン等を使うことになるのでしょうか
後日試してみようと思うのですがイベントコマンドでセーブとなると
カスタムメニュープラグイン等を使うことになるのでしょうか
Re: 中断セーブ機能
プレイヤーがどう操作すれば、一時保存が出来るかによります。
メニュー画面に一時保存という項目を追加するのを想定しているのでしょうか。
メニュー画面でコモンイベントを呼び出すプラグインを利用するといいと思います。
メニュー画面に一時保存という項目を追加するのを想定しているのでしょうか。
メニュー画面でコモンイベントを呼び出すプラグインを利用するといいと思います。
Re: 中断セーブ機能
いつでもどこでもできるようにしたかったのでメニューからと考えていました。
メニューからコモンイベント呼び出しプラグイン
https://torigoya-plugin.rutan.dev/system/commonMenu/
にてメニューから中断セーブ作成は出来たのですが
セッションの使い方がわからず想定の動きになりません。
中断セーブ後、強制的にタイトルに戻し、次回ロード時に中断データを破棄するというのが理想の動きなのですが
可能でしょうか。
現在設定しているコモンイベント内容を貼り付けます。
◆文章:なし, なし, ウィンドウ, 下
: :一時的にセーブして中断しますか?
: :※次回ロード時に中断データは削除されるため別スロットにセーブ
: :してください
◆文章:なし, なし, ウィンドウ, 下
: :セーブしたいスロット番号を入力してください。
: :※セーブが既にあるスロットを選択すると上書きされてしまうので
: :注意してください
◆ループ
◆数値入力の処理:中断セーブスロット指定, 2桁
◆条件分岐:中断セーブスロット指定 ≤ 20
◆条件分岐:中断セーブスロット指定 ≠ 0
◆文章:なし, なし, ウィンドウ, 下
: :\v[58]番でよろしいですか?
◆選択肢の表示:はい, いいえ (ウィンドウ, 右, -, -)
:はいのとき
◆ループの中断
◆
:いいえのとき
◆
:分岐終了
◆
:それ以外のとき
◆文章:なし, なし, ウィンドウ, 下
: :セーブスロットに0は選択できません。
◆
:分岐終了
◆
:それ以外のとき
◆文章:なし, なし, ウィンドウ, 下
: :セーブスロットは20までです。20以下の数字を入力してください
◆
:分岐終了
◆
:以上繰り返し
◆スクリプト:$gameSystem.saveSession();
◆プラグインコマンド:NUUN_SaveScreen, 章
: :表示文字列 = 中断セーブ
◆プラグインコマンド:TorigoyaMZ_SaveCommand2, 【セーブ】変数でスロットIDを指定してセーブ
: :スロットIDが入った変数 = 58
: :セーブ日時の更新をスキップ = false
◆条件分岐:スクリプト:$gameSystem.isSameSession();
◆タイトル画面に戻す
◆
:それ以外のとき
◆プラグインコマンド:TorigoyaMZ_SaveCommand2, 【削除】変数でスロットIDを指定してセーブ削除
: :スロットIDが入った変数 = 58
◆変数の操作:#0058 中断セーブスロット指定 = 0
◆プラグインコマンド:NUUN_SaveScreen, 章
: :表示文字列 =
◆
:分岐終了
メニューからコモンイベント呼び出しプラグイン
https://torigoya-plugin.rutan.dev/system/commonMenu/
にてメニューから中断セーブ作成は出来たのですが
セッションの使い方がわからず想定の動きになりません。
中断セーブ後、強制的にタイトルに戻し、次回ロード時に中断データを破棄するというのが理想の動きなのですが
可能でしょうか。
現在設定しているコモンイベント内容を貼り付けます。
◆文章:なし, なし, ウィンドウ, 下
: :一時的にセーブして中断しますか?
: :※次回ロード時に中断データは削除されるため別スロットにセーブ
: :してください
◆文章:なし, なし, ウィンドウ, 下
: :セーブしたいスロット番号を入力してください。
: :※セーブが既にあるスロットを選択すると上書きされてしまうので
: :注意してください
◆ループ
◆数値入力の処理:中断セーブスロット指定, 2桁
◆条件分岐:中断セーブスロット指定 ≤ 20
◆条件分岐:中断セーブスロット指定 ≠ 0
◆文章:なし, なし, ウィンドウ, 下
: :\v[58]番でよろしいですか?
◆選択肢の表示:はい, いいえ (ウィンドウ, 右, -, -)
:はいのとき
◆ループの中断
◆
:いいえのとき
◆
:分岐終了
◆
:それ以外のとき
◆文章:なし, なし, ウィンドウ, 下
: :セーブスロットに0は選択できません。
◆
:分岐終了
◆
:それ以外のとき
◆文章:なし, なし, ウィンドウ, 下
: :セーブスロットは20までです。20以下の数字を入力してください
◆
:分岐終了
◆
:以上繰り返し
◆スクリプト:$gameSystem.saveSession();
◆プラグインコマンド:NUUN_SaveScreen, 章
: :表示文字列 = 中断セーブ
◆プラグインコマンド:TorigoyaMZ_SaveCommand2, 【セーブ】変数でスロットIDを指定してセーブ
: :スロットIDが入った変数 = 58
: :セーブ日時の更新をスキップ = false
◆条件分岐:スクリプト:$gameSystem.isSameSession();
◆タイトル画面に戻す
◆
:それ以外のとき
◆プラグインコマンド:TorigoyaMZ_SaveCommand2, 【削除】変数でスロットIDを指定してセーブ削除
: :スロットIDが入った変数 = 58
◆変数の操作:#0058 中断セーブスロット指定 = 0
◆プラグインコマンド:NUUN_SaveScreen, 章
: :表示文字列 =
◆
:分岐終了
Re: 中断セーブ機能
セッション管理プラグインがMZ未対応ですね。水星人 さんが書きました:いつでもどこでもできるようにしたかったのでメニューからと考えていました。
メニューからコモンイベント呼び出しプラグイン
https://torigoya-plugin.rutan.dev/system/commonMenu/
にてメニューから中断セーブ作成は出来たのですが
セッションの使い方がわからず想定の動きになりません。
中断セーブ後、強制的にタイトルに戻し、次回ロード時に中断データを破棄するというのが理想の動きなのですが
可能でしょうか。
MVとMZでは仕様が変更されていて、想定外の動きになって、正常に機能していませんでした。
コード: 全て選択
var _DataManager_loadGame = DataManager.loadGame;
DataManager.loadGame = function(savefileId) {
var result = _DataManager_loadGame.apply(this, arguments);
$gameTemp.createSession();
return result;
};
//ここから追加
var _DataManager_extractSaveContents = DataManager.extractSaveContents;
DataManager.extractSaveContents = function() {
_DataManager_extractSaveContents.apply(this, arguments);
$gameTemp.createSession();
};
//ここまで
var _DataManager_setupNewGame = DataManager.setupNewGame;
DataManager.setupNewGame = function() {
_DataManager_setupNewGame.apply(this, arguments);
$gameTemp.createSession();
};
へ、83行目から追加してください。
これで正常に動作すると思います。
ニューゲームからは初めて最初の1回は動作するが、2回以上ロードしてからは機能しなくなっていました。
追記:
コード: 全て選択
//空いているセーブスロット番号を取得します
//-1の場合は、すべてのスロットが埋まっています
//変数のスクリプト
DataManager.emptySavefileId();
//セーブスロット1番に、セーブが存在するか
//条件分岐もしくはスイッチのスクリプト
!!DataManager.savefileInfo(1);
Re: 中断セーブ機能
SessionManager.jsに追加して確認したところ、理想通りの動きをしました。
また、追記のセーブデータの存在の確認で不用意なデータ消失を防げるのはとてもありがたいです。
この度は本当にありがとうございました。
また、追記のセーブデータの存在の確認で不用意なデータ消失を防げるのはとてもありがたいです。
この度は本当にありがとうございました。