見出し画像

SRPG Studio オートセーブ機能で一手ずつ行動を戻す機能を再現しようとしたプラグイン

(2023/12/27)
ターンを選んだ時にエラーになるのを修正しました

こんにちは熱帯魚ことRYBAです。

本プラグインを導入すると
オートセーブ機能が追加されます。


事前準備(必須)

Ryba.UndoLoadControlのうちの以下の関数を設定する必要があります

    //実際に使っている通常のセーブデータの数を入力します
    startUndoSaveCount:function(){
        return 50;
    },
    //オートセーブデータを何個まで記録するかの数
    //※startUndoSaveCountと合わせて99を超えるとバグります
    maxUndoCount:function(){
        return 40;
    },

その他の設定項目

ロードしたセーブデータの数を記録する場合、
その変数のテーブルとIDを指定します。
そして、Ryba.UndoLoadCountRecord を trueにします。

また、1マップ中にロードできる回数を制限する場合、
その変数のテーブルとIDを指定します。
Ryba.RewindSystem = true;にします。

↑変数は2つ作っておく
//ロードしたセーブデータの数を記録する変数のテーブル番号を記載します。
//※タブの番号は「0」、「1」、「2」....となっている点に注意
Ryba.SaveCountTableId = 0;
//ロードしたセーブデータの数を記録する変数のIDを記載します。
Ryba.SaveCountVariableId = 1;
//ロードしたセーブデータの数を記録するかどうか
Ryba.UndoLoadCountRecord = false;

//巻き戻し機能化するかどうか
//trueにするとロードできる回数などが指定できます
//(ツール側にデフォルトであるマップセーブがオフにしないとプレイヤーが簡単に不正出来てしまう欠点があります)
//trueにするとタイトルからは選べなくなります(マップ攻略中のみ選択可能に)
Ryba.RewindSystem = true;
//巻き戻せる回数
Ryba.RewindMaxCount = 10;
//巻き戻し回数を保存する変数を設定
//これは「ロードしたセーブデータの数を記録する」変数とは別の物にする必要があります
//※タブの番号は「0」、「1」、「2」....となっている点に注意
Ryba.RewindCountTableId = 0;
//変数のIDを記載します。
Ryba.RewindCountVariableId = 2;

環境

オートセーブに関する項目が二つ増えます。

↑ユニット毎でなくターン毎やそもそも行わないことも可能

「オートセーブ最新読込」は
オフにすると単純に一番最後にセーブしたデータが最新となりますが、
オンにするとロードしたデータが最新データとなり、
一手戻しっぽくなります。

カスタマイズ(重いとき)

ぶっちゃけターンの開始時だけで良い場合は
810行目のgetFlagValue関数部分を変更しましましょう。

    getFlagValue: function() {
        if (typeof root.getExternalData().env.autoSaveType !== 'number') {
            return AutoSaveType.Turn;
        }
    
        return root.getExternalData().env.autoSaveType;
    }

初期設定が「ターン」になります。

「ユニット」を項目から消したい場合

getFlagCount: function() {
        return 2;
    }, 

getObjectArray: function() {
        return [ 'なし', 'ターン' ];
    }

としましょう。

注意点

あくまでオートセーブ機能です。
(巻き戻しを主目的とした機能ではないです)

また、ユニットの行動毎にセーブするため
セーブ容量の多い作品ではかなり重くなり、
事実上実装できない可能性があります。

Plguin

https://github.com/RYBA549/RYBA_SrpgStudio/blob/master/UndoLoadControl.js

PS

参考までにこちらもどうぞ↓

https://note.com/nettaigyo10ryba/n/ndd3158fd56c3

履歴

(2023/12/27)
ターンを選んだ時にエラーになるのを修正しました。

(2023/04/06)
ロードできる回数を設定できるモードを追加しました。
指定回数以上ロードするとそのマップでは
オートセーブデータをロードできなくなります。
(オートセーブ機能なのでなんか変ですが)

使用する場合はマップセーブ廃止推奨です
(オートセーブの都合上プレイヤーが悪さしやすくなります)
公式の中断セーブプラグインなどを代わりに入れましょう。

いいなと思ったら応援しよう!