WOLF RPGエディター(ウディタ)[3.175]/イベントコマンド【サイトトップへ戻る】
■セーブ・ロード操作
(更新:2023/04/24)


イベントコマンド【セーブ・ロード操作】について解説します。



ショートカット
■イベントコマンド【セーブ・ロード操作】とは?
■システム変数・システム文字列の一覧
■セーブデータについて
■設定画面の説明:保存・読込
■設定画面の説明:変数・文字列の読み込み
■設定画面の説明:セーブデータへの書き込み
■補足



以下は【セーブ・ロード操作】を使った別のページにある使用例です。
クリックするとYADOT-WOLF内の別ページが開きます。

別ページの使用例
■周回プレイやクリア特典の基礎
「保存・読込」「セーブデータの内容読込」「セーブデータに書き込み」


  
■イベントコマンド【セーブ・ロード操作】とは?

【セーブ・ロード操作】はセーブやロードの処理を実行する時に使います。



【コモンイベント】コモンイベント[014:○各種メニュー呼出]を呼び出す事で、
セーブ画面、ロード画面を呼び出す事ができます。





セーブ画面(ロード画面)では、最大20個のセーブデータ(セーブ番号[1〜20])に対応していますが、
可変DB[18:基本システム用変数]データ[52:1ページセーブ数][53:セーブページ数]の設定を変える事で、
セーブできる数を変える事ができます。

可変DB[18:基本システム用変数]
データID データ名 内容・値の設定位置
52 1ページセーブ数 1画面に表示されるセーブ項目数を設定。
▼値の設定位置
コモン[048]107行目=4
▼「コモン[48]の107行目=3」にした場合
53 セーブページ数 セーブ画面をページ数を設定。
▼値の設定位置
コモン[048]108行目=5
▼「コモン[48]の108行目=1」にした場合



並列実行のイベント実行中にセーブやロードを行うと強制終了する可能性があるため、
並列実行のイベント実行中には実行しないでください。


▲トップへ戻る▲


  
■システム変数の一覧

【セーブ・ロード操作】に関連する「システム変数」の一覧です。
変数名をクリックすると詳細情報を見る事ができます。

【システム変数の説明ページを見る】

システム変数 説明
24:[読]セーブデータ読込判定(1=成功 0=失敗)]
セーブファイルがあるかどうかを調べる時に使用。
25:現在セーブデータ番号(0〜) 最後にセーブした時のセーブ番号を保存。


▲トップへ戻る▲


  
■セーブデータについて

セーブデータはフォルダー[Save]の中に保存されます。

フォルダー[Save]が無い場合は、セーブを実行すると自動的にフォルダー[Save]が作成されます。



セーブデータは…
セーブ番号[1] → SaveData01.sav
セーブ番号[2] → SaveData02.sav
などとセーブ番号を含めたファイル名で保存されます。



セーブを実行すると上記のセーブデータとは別にセーブファイル「System.sav」が作成されます。



このセーブファイル「System.sav」には、システム変数[25:現在セーブデータ番号(0〜)]の値を保存します。
(保存場所はセーブファイル「System.sav」の通常変数[0])

そしてゲームを最初から開始した時にコモンイベント[048:X[共]基本システム自動初期化]にて、
セーブファイル「System.sav」からシステム変数[25:現在セーブデータ番号(0〜)]の値が読み込まれます。

ゲーム開始時にシステム変数[25:現在セーブデータ番号(0〜)]の値を読み込む事で、
セーブデータがあるかどうかを調べる事ができ、
セーブデータがある時にはタイトル画面の選択肢で最初に「コンティニュー」が選択されるようになります。
(セーブデータが無い場合は最初に「スタート」が選択される)

なお、このセーブファイル「System.sav」はウディタの基本システムのコモンイベントで作成されるため、
オリジナルのセーブ設定で処理する場合はセーブファイル「System.sav」は作成されず、
またオリジナルのセーブ設定ではシステム変数[25:現在セーブデータ番号(0〜)]の情報は更新されません。



セーブ番号は「変数呼び出し値」で設定する事もできます。
【「変数呼び出し値」の説明を見る】

例えば実行中のマップイベントのセルフ変数[0]にセーブ番号を設定する場合は、以下のように設定します。

▼セルフ変数[0]でセーブ番号[2]を呼び出す場合
【イベントコード表示】

■変数操作: このEvのセルフ変数0 = 2 + 0
■データのセーブ: このEvのセルフ変数0

▼「対象セーブデータ」にセルフ変数[0]の変数呼び出し値を設定




文字列タイプの変数呼び出し値を使う事で、セーブデータのファイル名を任意で自由に設定する事ができます。

▼「あいうえお」のファイル名でセーブする場合
【イベントコード表示】

■文字列操作:S1[] = "Save/あいうえお.sav"
■データのセーブ: S1[]

▼文字列変数[1]の「変数呼び出し値」を設定した時の設定画面



ファイル名を任意で設定する場合は、セーブデータの保存先をフォルダー[Save]の中ではなく、
実行ファイル「Game.exe」がある所に保存する事もできます。

【イベントコード表示】

■文字列操作:S1[] = "セーブデータ.sav"
■データのセーブ: S1[]

▼ウディタの実行ファイルと同じ位置に保存



なお、ファイル名を任意で設定する場合…
■文字列操作:S1[] = "セーブデータ"
■データのセーブ: S1[]
などと拡張子「.sav」を付けない設定にしても、セーブ・ロードは問題無く実行されます。


▲トップへ戻る▲


   
■設定画面の説明:保存・読込



[セーブ]または[ロード]を選択して、セーブデータの番号を設定ください。



対象セーブデータ「0」はウディタ内で使用するので、セーブ番号は「1以上」にしてください。



ロードを実行した時に指定したセーブデータが存在しない場合は、そのままイベントコマンドの処理が進みます。

セーブデータが存在する場合は、イベント処理を中断して、すぐにセーブされた所からゲームが再開されます。

例えば…
■文章:あいうえお
■データのロード: 1
■文章:かきくけこ
と設定した場合、セーブデータ[1]が存在しない場合は、
「あいうえお」が表示されたあとに「かきくけこ」が表示されますが、
セーブデータ[1]が存在する場合は、
「あいうえお」が表示されたあとに「かきくけこ」は表示されず、すぐにセーブした所からゲームが再開します。



イベント処理の途中でセーブした場合は、ロード時にイベント処理の途中からは実行されません。

例えば…
■文章:あいうえお
■データのセーブ: 1
■文章:かきくけこ
と設定した場合、セーブ時は「かきくけこ」が表示されますが、ロード時は「かきくけこ」が表示されません。



なお、上記の設定例のようにセーブの直前に【文章の表示】を実行すると、
ロード時に文章ウィンドウが残った状態になります。

▼ロード時に文章ウィンドウが消えない


このような問題を防ぐためには…
■文章:あいうえお
■ウェイト:5 フレーム
■データのセーブ: 1
■文章:かきくけこ
と言ったように、セーブ前にウェイトを設定して、文章ウィンドウが消える時間を確保してください。


▲トップへ戻る▲


  
■設定画面の説明:変数・文字列の読み込み



指定した1つの変数の値だけをロードします。



上の「保存・読込」でロードした場合は、セーブした位置に主人公が移動して、
セルフ変数や文字列変数などの全ての変数がセーブした時の状態になります。

しかしこの「変数・文字列の読み込み」の場合は、ロードしても主人公の位置はそのままで、
変数・文字列の読み込み」でロードした変数の値以外はそのままになります。



左側にはセーブデータからの情報を受け取る変数を設定します。

真ん中の[データ〜番]には、呼び出すセーブ番号を設定します。

右側にはセーブデータから呼び出す変数を「変数呼び出し値」で設定します。
【「変数呼び出し値」の説明を見る】



セーブデータから呼び出す情報が「文字列」の場合は、
左側に設定する変数も文字列タイプの変数にしてください。

▼選択肢の下の方に文字列変数があります


なお…

と言ったように、文字列タイプの変数の情報を数値タイプの変数で受け取ろうとすると、
「変数」呼び出し時の呼び出しIDが不適切です」のエラーが発生します。

逆に…

と言ったように、数値タイプの変数の情報を文字列タイプの変数で受け取ろうとすると、
エラーは発生しませんが、文字列変数には「<<ERROR>>」が設定されます。



X番の変数読込」にチェックを入れた場合は、
設定した「変数呼び出し値」の変数の値に「変数呼び出し値」を設定してください。

例えば、通常変数[1]の値に「2000010(通常変数[10]の変数呼び出し値)」を設定した場合は、
以下のように設定します。

【イベントコード表示】

■変数操作: V1[] = 2000010 + 0<右辺は[データを呼ばない]にチェック
■セーブデータの内容読込: このEvのセルフ変数0 = セーブデータ[1]の V[V1[]]<[X番の変数読込]にチェック



X番の変数読込」を使えば、例えば通常変数[10〜19]の値を呼び出し、
呼び出した全ての値を加算した合計を出すような設定が簡単にできます。

【イベントコード表示】

■変数操作: このEvのセルフ変数0 = 2000010 + 0
■変数操作: このEvのセルフ変数1 = 0 + 0
■回数付きループ [ 10 ]回
|■セーブデータの内容読込: このEvのセルフ変数2 = セーブデータ[1]の V[このEvのセルフ変数0]
|■変数操作: このEvのセルフ変数1 += このEvのセルフ変数2 + 0
|■変数操作: このEvのセルフ変数0 += 1 + 0
|■
◇ループここまで◇◇
■文章:合計「\self[1]」


▲トップへ戻る▲


  
■設定画面の説明:セーブデータへの書き込み



指定した1つの変数の値だけをセーブします。



左側の[データ〜番]には、セーブするセーブ番号を設定します。

真ん中には、情報を置き換える変数を「変数呼び出し値」で設定します。
【「変数呼び出し値」の説明を見る】

右側には、セーブする情報を持った変数を設定します。



設定は「数値タイプ変数=数値データ」「文字列タイプ変数=文字列」と設定してください。

数値タイプ変数=文字列データ」と設定すると、
「文字列」を格納すべき場所に「変数」を代入しようとしました」のエラーが発生します。

文字列タイプ変数=数値データ」を設定すると、処理は無効となり、
セーブデータに保存されていた情報はそのままの状態になります。



X番の変数読込」にチェックを入れた場合は、
設定した「変数呼び出し値」の変数の値に「変数呼び出し値」を設定してください。
※上記の「変数・文字列の読み込み」と同じ仕様です。



数値を手動入力」にチェックを入れた場合は、
セーブする値を直接入力で設定する事ができ、「変数呼び出し値」の設定もできます。

▼システム変数[29:[読]プレイ時間(1秒単位)]の変数呼び出し値を設定した時




セーブファイルが存在しない場合は「保存・読込」の時と同様に新規でセーブファイルが作成されます。

なお、セーブ番号[1〜20]に関しては、
一度「保存・読込」でセーブした上で「セーブデータへの書き込み」を処理してください。

セーブデータへの書き込み」だけでセーブデータを作成すると、セーブ画面(ロード画面)を表示した時に、
可変DBのデータが保存されていない事が原因で、大量のエラーが表示されます。


▲トップへ戻る▲


  
■補足

ウディタ[3.13]以前の古いバージョンでは「セーブデータへの書き込み」でセーブすると、
システム変数[25:現在セーブデータ番号(0〜)]のセーブ番号が更新されていました。

そのため、例えば「セーブデータへの書き込み」でセーブ番号「99」に保存した場合は、
セーブ後にシステム変数[25:現在セーブデータ番号(0〜)]の値を元のセーブ番号に戻す処理が必要でした。

【イベントコード表示】

■変数操作: このEvのセルフ変数0 = Sys25:現在セーブデータ番号(0〜) + 0
■セーブデータに書き込み:セーブデータ[99]の V1-0[] = 1
■変数操作: Sys25:現在セーブデータ番号(0〜) = このEvのセルフ変数0 + 0

現行のバージョンでは「セーブデータへの書き込み」で…
■セーブデータに書き込み:セーブデータ[99]の V1-0[] = 1
を実行しても、システム変数[25:現在セーブデータ番号(0〜)]が「99」になる事はありません。


▲トップへ戻る▲



◎関連ページ

◆セーブ画面をカスタマイズ

◆「イベントコマンド」って何?
┣◆文章の表示
┃┗◆特殊文字
┣◆選択肢
┃┗◆【使用例】選択肢
┣◆変数操作
┃┗◆演算子について
┣◆DB操作
┣◆文字列操作
┃┗◆【使用例】文字列操作
┣◆変数操作+
┃┣◆「X座標・Y座標」と「画面X座標・画面Y座標」の違い
┃┣◆【使用例】変数操作+の「キャラ」と「位置」
┃┗◆【使用例】変数操作+の「ピクチャ」と「その他」
┣◆条件(変数)
┣◆条件(文字列)
┣◆キー入力
┃┗◆【使用例】キー入力
┣◆ピクチャ
┃┗◆表示形式(通常・加算・減算・乗算)について
┣◆エフェクト
┃┗◆【使用例】エフェクト
┣◆サウンド
┣◆セーブ・ロード操作
┣◆パーティ画像
┣◆チップ処理
┃┗◆【使用例】チップ処理
┣◆場所移動
┣◆イベント制御
┃┣◆キャラクターの動作指定
┃┗◆【使用例】イベント制御
┣◆コモンイベント
┣◆ダウンロード
┗◆プロ版機能

YADOT-WOLFトップ  気紛れな空間へ戻る  メール