WOLF RPGエディター(ウディタ)/演出・システム【サイトトップへ戻る】
■周回プレイ:【場所移動】でタイトル画面に戻って2周目を開始
(更新:2023/03/09)


周回プレイで2周目を始める時の処理方法(場所移動を使った方法)を紹介します。


ショートカット
■2周目を始める2つの方法
■処理の流れなどを確認
■マップイベントのセルフ変数の初期化
■コモンイベントのセルフ変数の初期化
■通常変数や予備変数を初期化
■データベースの初期化:「全データ初期化」を実行
■データベースの初期化:出力した初期状態のファイルを読み込む
■初期レベルに戻す
■クリア時にセーブする
■セーブ画面にクリア回数を表示

周回プレイやクリア特典に関する基礎情報は別ページに記載しています。
【周回プレイやクリア特典の基礎を見る】


  
■2周目を始める2つの方法

1周目をクリアして2周目を始める方法には、
【場所移動】で2周目を始める方法【タイトル画面へ戻る】で2周目を始める方法があります。

【場所移動】を使う イベントコマンド【場所移動】を使って
タイトル画面やオープニングが始まるマップへ移動して2周目を開始します。
通常変数や予備変数、主人公などの可変DBを初期化する作業が必要です。
マップイベントのセルフ変数は、
主人公がそのマップへ移動しないと初期化する事ができないため、
起動条件の変数には、通常変数や予備変数を使うなどの工夫が必要です。
セーブする必要はありませんが、
1周目のクリア時にセーブしてから2周目を始める事もできます。
【タイトル画面へ戻る】を使う イベントコマンド【タイトル画面へ戻る】を使って
タイトル画面のマップへ移動して2周目を開始します。
通常変数やセルフ変数の値が全て「0」になり、
主人公のステータスなどの可変DBも全て初期状態になります。
そのため、1周目からの引き継ぎが少ない場合は便利な始め方です。
【タイトル画面へ戻る】を実行すると全ての変数の値が初期化するので、
例えば「通常変数[1:周回数]=1」のような設定を行っても、
【タイトル画面へ戻る】を実行すると「通常変数[1:周回数]=0」になってしまい、
1周目をクリアしてタイトル画面へ戻って来たのか、新規プレイなのか、
どちらなのかが判断できません。
そのため1周目が終わる時にセーブを実行してから【タイトル画面へ戻る】を実行し、
タイトル画面でセーブデータから読み込んで、新規プレイなのか2周目なのかを判断します。

また他の通常変数や可変DBなどを2周目に引き継ぐ場合も、
セーブしてタイトル画面に戻ったあとにセーブデータから読み込む作業が必要です。
データ引き継ぎのイベント設定がやや難しいので、初心者向けではありません。

当ページは「【場所移動】を使う」の設定方法を紹介します。

【タイトル画面へ戻る】を使う」の設定方法は別のページで紹介しています。
【【タイトル画面へ戻る】を使った設定方法を見る】


▲トップへ戻る▲


  
■処理の流れなどを確認

1周目が終わったら【場所移動】でタイトル画面へ移動し、2周目を開始します。

処理の流れは以下の通りです。

1周目のエンディングが終了

通常変数[1:周回数]の値を1増やす

初期化処理を実行

タイトル画面へ場所移動して2周目を始める

制作者によっては、1周目のクリア時にセーブができるようにしたり、
2周目はタイトル画面に戻らず、すぐにオープニングが始まるようにする場合もあります。



当ページの設定例では、クリア回数をカウントする変数に通常変数[1:周回数]を使っていますが、
他の通常変数の番号や予備変数を使っても問題ありません。





タイトル画面へ戻る処理は、以下のように設定します。

【イベントコード表示(マップ)】

■変数操作: V1[周回数] += 1 + 0
▼ ここに初期化処理を設定
■ピクチャ表示:1 [左上]ウィンドウ「<SQUARE>」サイズ[Sys116:[読]画面サイズX,Sys117:[読]画面サイズY] X:0 Y:0 / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[0] G[0] B[0]
■場所移動:主人公 ▲マップID0[タイトル] X:8 Y:5 [トランジションなし]



2周目を開始する前には必ず初期化処理を行う必要があります。



まず初期化する必要があるのが、ゲームの進行に重要な通常変数や予備変数、可変DBなどの初期化です。

例えば「ボスを倒した → 通常変数[5]=1」などを設定している場合は、
通常変数[5]の値を「0」に戻さないとボスを倒したままになってしまい、
ボスを倒さないと先へ進めない場合は、進行不能のバグが発生します。

可変DBの初期化では、まずパーティメンバーを初期のメンバーにしておく必要があります。

またゲームの進行に重要なアイテムの所持数も「0」にしておく必要があります。
ウディタのサンプルゲームで言えば、以下の3つの所持数を「0」にしておく必要があります。
アイテム名 初期化する理由
おいしいパン 「P・G・エディ」を仲間にしないでダンジョンへ入れてしまう。
ダンジョンのカギ 仲間を増やさずにダンジョンへ入れてしまう。
WOLF RPGエディター 持っていると2周目が始まってすぐにエンディングが見れてしまう。
2周目が始まってすぐにエンディングが見れても良い場合はそのまま持っていても良いが、
その場合はコモンイベント[214:WOLF RPGエディター使用Ev]の設定を変えないと、
ウルファールしかいないのに、3人の主人公がいる状態で文章が表示されてしまう。



あとは2周目をどのような状態で始めたいのかによって、初期化を行います。

例えば「主人公を初期状態に戻したい」と言った場合は、可変DB[0〜5]を初期化する必要があります。

主人公を初期化する場合でも、例えばレベルなどは初期化せず、初期装備のみを初期化したり、
逆にレベルなどは初期化して、装備のみは1周目のクリア時のままにしたり、
主人公のステータスは全て初期化するが、習得した技能はそのままにするなど、
初期化したい内容に合わせて初期化方法を変えて処理します。

他に1周目で獲得した全てのアイテムや装備品を無くしたい場合は可変DB[7〜9]を初期化します。

所持金を初期状態に戻す場合は、可変DB[6:パーティー情報]項目[0:所持金]の値を変えます。

システム変数なども必要に応じて初期化します。

コモン素材を導入している場合は、そのコモン素材で使っている変数の初期化が必要になるかもしれません。



マップイベントのセルフ変数は、主人公がいるマップのセルフ変数しか操作する事ができません。

そのため、各マップにセルフ変数を初期化するマップイベントを設定するか、
起動条件の変数をセルフ変数ではなく通常変数か予備変数で設定する必要があります。



2周目の開始時の主人公の向きは、1周目のクリア時の向きになっています。

もしも下向きで2周目を開始する場合は…
■動作指定:主人公 / 下向
と言ったように【動作指定】で下向きにしてください。



2周目を開始する前には、全ての主人公を全回復した方が良いでしょう。

パーティにいない主人公を含め、全ての主人公を全回復する場合は、以下のように設定してください。

【イベントコード表示】

■DB読込(可変): このEvのセルフ変数0 = 可変DB[タイプ主人公ステータス(0)のデータ数]
■回数付きループ [ このEvのセルフ変数0 ]回
|■変数操作: このEvのセルフ変数0 -= 1 + 0
|■イベントの挿入: コモン4:[ ○回復・ダメージ処理 ] / 7:完全回復 / CSelf11[DBデータ数] / 0
|■
◇ループここまで◇◇



YADOT-WOLFにある「サンプルゲームを周回プレイ化してみる」では、
1周目が終了して初期化処理を行ったあとに【場所移動】でタイトル画面へ戻って2周目を始める設定方法を紹介しています。

【サンプルゲームを周回プレイ化してみるのページを開く】


▲トップへ戻る▲


  
■マップイベントのセルフ変数の初期化

マップイベントのセルフ変数は、初期化したいマップへ主人公が移動しないと初期化する事ができません。

そのため、以下のような対策が必要になります。

初期化方法 補足
通常変数や予備変数を使う 利点 いつでもどこでも初期化ができる上、変数に名前が付けられるので、
何に使っている変数なのかも分かりやすく、ウディタ初心者にはお勧め。
欠点 変数の名前をしっかりと付けて管理しないと、
未使用と勘違いして二重使用してしまうミスをやってしまう可能性がある。
使用場所が分かりにくい場合は、変数の名前に「map7ev5」などと、
使用している場所が分かる名前を付けるなど、自己対策が必要になる。
大量に使用するとイベントを制作する画面で処理落ちが発生する。
通常変数と予備変数1〜9の全てを合わせて「1000」以内の変数の数にした方が良い。
各マップに初期化イベントを設定 利点 通常変数[1:周回数]の値を増やすだけで、
2周目で初めて移動するマップへ移動した時に、1回だけ初期化が実行される。
初期化したいマップに初期化用のマップイベントを置けば良いので、
設定方法が分かりやすく、ウディタ初心者でも設定しやすい。
コモンイベントを呼び出す事で、初期化用のマップイベントのセルフ変数以外の
全てのマップイベントのセルフ変数を初期化する事ができる。
また特定のマップで全てのセルフ変数を初期化したくない場合は、
コモンイベントを呼び出さずに…
■変数操作: Ev0のセルフ0〜Ev0のセルフ9 = 0 + 0
■変数操作: Ev2のセルフ0〜Ev2のセルフ9 = 0 + 0
■変数操作: Ev3のセルフ0 = 0 + 0
と言ったように、セルフ変数を1つずつ初期化していくような設定もできる。
欠点 初期化したい全てのマップに初期化用のマップイベントを設定する必要がある。
マップイベントの並列実行があると、そちらが先に実行してしまう可能性がある。
そのため、初期化を行うマップイベントのイベントIDを「00」で設定したり、
マップ上にある並列実行の中に初期化イベントを設定するなどの工夫が必要になる。
2周目で初めて移動するマップへ
移動したら自動的に初期化
利点 2周目で初めて移動するマップへ移動するだけで自動的に初期化される。
初期化用のマップイベントの設定が不要である。
欠点 処理順が…
【1】マップイベントの並列実行
【2】マップイベントの自動実行
【3】コモンイベントの自動実行
【4】コモンイベントの並列実行

であるため、マップイベントのセルフ変数が初期化される前に、
マップイベントの並列実行や自動実行が実行してしまい、
初期化が間に合わなくなる可能性がある。
マップによっては上記の各マップに初期化イベントを設定を使うなど、
初期化方法に工夫が必要になる。
初期化しないマップ(除外するマップ)を手作業で設定する必要があり、
設定ミスや設定し忘れなどの問題が発生する可能性がある。
通常変数[1:周回数]の値を変えた瞬間に初期化が実行されるので、
マップイベントのセルフ変数が初期化されても問題無いタイミングで
通常変数[1:周回数]の値を変える必要がある。
【タイトル画面へ戻る】を実行する 利点 マップイベントのセルフ変数を含めて、全ての変数の値が初期化される。
また主人公のステータスや所持品なども全て初期化されるので、
新規でゲームを始めた時と同じ状態にしたい時には便利な初期化方法である。
欠点 1周目のクリア時にセーブを実行する必要がある。
【タイトル画面へ戻る】の実行後に、
セーブデータから必要な変数の値を呼び出す必要があり、
ウディタ初心者にはお勧めできない。
【【タイトル画面へ戻る】を使った設定方法を見る】



▼通常変数や予備変数を使う

マップイベントの起動条件など、初期化する必要がある変数は、通常変数や予備変数を使う方法です。


セルフ変数は、計算処理などの一時的に使用するもの(初期化不要)のみに使用し、
マップイベントの起動条件に設定する変数は、通常変数や予備変数を設定する方法です。



▼各マップに初期化イベントを設定

まずはコモンイベントに以下のイベントを設定してください。

【イベントコード表示】【コモン出力ファイル】

■コモンイベント「マップセルフ初期化」

起動条件:呼び出しのみ

■変数操作+: CSelf10[呼び出しイベントID] = マップイベントID(コモンなら呼び出し元ID)
■変数操作+: CSelf11[マップEv総数] = 現在マップのマップイベント数
■変数操作: CSelf12[イベントID] = -1 + 0
■ループ開始
|■変数操作: CSelf12[イベントID] += 1 + 0
|■条件分岐(変数): 【1】 CSelf11[マップEv総数] が 0 以下
|-◇分岐: 【1】 [ CSelf11[マップEv総数] が 0 以下 ]の場合↓
||■イベント処理中断
||■
|◇分岐終了◇
|■条件分岐(変数): 【1】 CSelf10[呼び出しイベントID] が CSelf12[イベントID] と同じ
|-◇分岐: 【1】 [ CSelf10[呼び出しイベントID] が CSelf12[イベントID] と同じ ]の場合↓
||■変数操作: CSelf11[マップEv総数] -= 1 + 0
||■ループ開始へ戻る
||■
|◇分岐終了◇
|■文字列操作:CSelf5[イベント有無確認] =<ファイル内容読込> [UTF-8] "<<GET_MAPEVENT_NAME_FROM_ID>>\cself[12]"
|■条件分岐(文字): 【1】 CSelf5[イベント有無確認]が "<<NotFound>>" と同じ
|-◇分岐: 【1】 [ CSelf5[イベント有無確認] "<<NotFound>>" と同じ ]の場合↓
||■ループ開始へ戻る
||■
|◇分岐終了◇
|■変数操作: CSelf13[変数呼び出し値] = 1000000 + 0
|■変数操作: CSelf13[変数呼び出し値] += CSelf12[イベントID] * 10
|■回数付きループ [ 10 ]回
||■変数操作: V[CSelf13[変数呼び出し値]] = 0 + 0
||■変数操作: CSelf13[変数呼び出し値] += 1 + 0
||■
|◇ループここまで◇◇
|■変数操作: CSelf11[マップEv総数] -= 1 + 0
|■
◇ループここまで◇◇

セルフ変数を初期化したいマップに、以下のマップイベントを設定してください。

【イベントコード表示】

■マップイベント「初期化イベント」

グラフィック:なし
起動条件:並列実行
起動条件変数:なし

■条件分岐(変数): 【1】 V1[周回数] が このEvのセルフ変数0 以外
-◇分岐: 【1】 [ V1[周回数] が このEvのセルフ変数0 以外 ]の場合↓
|■変数操作: このEvのセルフ変数0 = V1[周回数] + 0
|■イベントの挿入[名]: ["マップセルフ初期化"] <コモンEv 215>
|■
◇分岐終了◇
■イベント一時消去

上記のマップイベントをコピーして、他のマップに貼り付けてください。



▼2周目で初めて移動するマップへ移動したら自動的に初期化

コモンイベントに以下のイベントを設定してください。

【イベントコード表示】【コモン出力ファイル】

■コモンイベント「マップセルフ自動初期化」

起動条件:並列実行(常時)

■条件分岐(変数): 【1】 CSelf23[初期化実行] が 1 と同じ
-◇分岐: 【1】 [ CSelf23[初期化実行] が 1 と同じ ]の場合↓
|■変数操作: CSelf23[初期化実行] = 0 + 0
|▼ 初期化処理
|■変数操作+: CSelf10[呼び出しイベントID] = マップイベントID(コモンなら呼び出し元ID)
|■変数操作+: CSelf11[マップEv総数] = 現在マップのマップイベント数
|■変数操作: CSelf12[イベントID] = -1 + 0
|■ループ開始
||■変数操作: CSelf12[イベントID] += 1 + 0
||■条件分岐(変数): 【1】 CSelf11[マップEv総数] が 0 以下
||-◇分岐: 【1】 [ CSelf11[マップEv総数] が 0 以下 ]の場合↓
|||■イベント処理中断
|||■
||◇分岐終了◇
||■条件分岐(変数): 【1】 CSelf10[呼び出しイベントID] が CSelf12[イベントID] と同じ
||-◇分岐: 【1】 [ CSelf10[呼び出しイベントID] が CSelf12[イベントID] と同じ ]の場合↓
|||■変数操作: CSelf11[マップEv総数] -= 1 + 0
|||■ループ開始へ戻る
|||■
||◇分岐終了◇
||■文字列操作:CSelf5[イベント有無確認] =<ファイル内容読込> [UTF-8] "<<GET_MAPEVENT_NAME_FROM_ID>>\cself[12]"
||■条件分岐(文字): 【1】 CSelf5[イベント有無確認]が "<<NotFound>>" と同じ
||-◇分岐: 【1】 [ CSelf5[イベント有無確認] "<<NotFound>>" と同じ ]の場合↓
|||■ループ開始へ戻る
|||■
||◇分岐終了◇
||■変数操作: CSelf13[変数呼び出し値] = 1000000 + 0
||■変数操作: CSelf13[変数呼び出し値] += CSelf12[イベントID] * 10
||■回数付きループ [ 10 ]回
|||■変数操作: V[CSelf13[変数呼び出し値]] = 0 + 0
|||■変数操作: CSelf13[変数呼び出し値] += 1 + 0
|||■
||◇ループここまで◇◇
||■変数操作: CSelf11[マップEv総数] -= 1 + 0
||■
|◇ループここまで◇◇
|■イベント処理中断
|■
◇分岐終了◇
■条件分岐(変数): 【1】 CSelf20[クリア回数] が V1[周回数] 以外
-◇分岐: 【1】 [ CSelf20[クリア回数] が V1[周回数] 以外 ]の場合↓
|■変数操作: CSelf20[クリア回数] = V1[周回数] + 0
|■文字列操作:CSelf6[処理済みマップID] = ""
|■変数操作: CSelf21[保存マップID] = -1 + 0
|■
◇分岐終了◇
■変数操作+: CSelf22[現在マップID] = 現在のマップID
■条件分岐(変数): 【1】 CSelf21[保存マップID] が CSelf22[現在マップID] と同じ
-◇分岐: 【1】 [ CSelf21[保存マップID] が CSelf22[現在マップID] と同じ ]の場合↓
|■イベント処理中断
|■
◇分岐終了◇
■変数操作+: CSelf21[保存マップID] = 現在のマップID
■条件分岐(文字): 【1】 CSelf6[処理済みマップID]が "" と同じ
-◇分岐: 【1】 [ CSelf6[処理済みマップID] "" と同じ ]の場合↓
|▼ 初期化を除外するマップを設定 (マップ[0]とマップ[2]を除外する場合は【>0>2>】と設定)
|■文字列操作:CSelf6[処理済みマップID] = ">"
|■
◇分岐終了◇
■条件分岐(文字): 【1】 CSelf6[処理済みマップID]が ">\cself[22]>" を含む
-◇分岐: 【1】 [ CSelf6[処理済みマップID] ">\cself[22]>" を含む ]の場合↓
|■イベント処理中断
|■
◇分岐終了◇
■文字列操作:CSelf6[処理済みマップID] += "\cself[22]>"
■変数操作: CSelf23[初期化実行] = 1 + 0
■イベントの挿入: [このコモンから+0] コモン215:[ マップセルフ自動初期化 ]

ウディタの仕様上の問題があり、同じコモンを呼び出して初期化を行っています。


▲トップへ戻る▲


  
■コモンイベントのセルフ変数の初期化

コモンイベントのセルフ変数の初期化は、変数呼び出し値「15000000」を使って行います。
【変数呼び出し値の説明を見る】

▼コモンイベント[216〜225]を初期化する設定例
【イベントコード表示(マップ)】

■変数操作: このEvのセルフ変数0 = 15021600 + 0
■変数操作: このEvのセルフ変数1 = 15021601 + 0
■変数操作: このEvのセルフ変数2 = 15021602 + 0
■変数操作: このEvのセルフ変数3 = 15021603 + 0
■変数操作: このEvのセルフ変数4 = 15021604 + 0
■回数付きループ [ 10 ]回
|■変数操作: V[このEvのセルフ変数0〜このEvのセルフ変数4] = 0 + 0
|■変数操作: このEvのセルフ変数0 += 5 + 0
|■文字列操作:V[このEvのセルフ変数0] = ""
|■文字列操作:V[このEvのセルフ変数1] = ""
|■文字列操作:V[このEvのセルフ変数2] = ""
|■文字列操作:V[このEvのセルフ変数3] = ""
|■文字列操作:V[このEvのセルフ変数4] = ""
|■変数操作: このEvのセルフ変数0 += 5 + 0
|■回数付きループ [ 18 ]回
||■変数操作: V[このEvのセルフ変数0〜このEvのセルフ変数4] = 0 + 0
||■変数操作: このEvのセルフ変数0 += 5 + 0
||■
|◇ループここまで◇◇
|■
◇ループここまで◇◇


▲トップへ戻る▲


  
■通常変数や予備変数を初期化

通常変数や予備変数の初期化の場合は…
■変数操作: V0[[サンプルゲーム]コック出現]〜V10[] = 0 + 0
と言った感じに設定する事で一括で初期化する事ができます。



しかし制作中に通常変数や予備変数のデータ数が変わると、その都度一括の初期化設定も変える必要があります。

もしも一括の初期化設定の修正が面倒な場合は、以下のように設定すると、自動的に全ての通常変数と予備変数が初期化されます。

なお、通常変数[1:周回数]のような初期化したくない変数は、初期化前にセルフ変数などに一時保存する必要があります。

【イベントコード表示(マップ)】

■変数操作: このEvのセルフ変数9 = V1[周回数] + 0
■変数操作: このEvのセルフ変数0 = 13 + 0
■変数操作: このEvのセルフ変数1 = -1 + 0
■回数付きループ [ 10 ]回
|■変数操作: このEvのセルフ変数0〜このEvのセルフ変数1 += 1 + 0
|■DB読込(システム): このEvのセルフ変数2 = システムDB[タイプこのEvのセルフ変数0(-)のデータ数]
|■変数操作: このEvのセルフ変数3 = 2000000 + 0
|■変数操作: このEvのセルフ変数3 += 100000 * このEvのセルフ変数1
|■回数付きループ [ このEvのセルフ変数2 ]回
||■変数操作: V[このEvのセルフ変数3] = 0 + 0
||■変数操作: このEvのセルフ変数3 += 1 + 0
||■
|◇ループここまで◇◇
|■
◇ループここまで◇◇
■変数操作: V1[周回数] = このEvのセルフ変数9 + 0


▲トップへ戻る▲


  
■データベースの初期化:「全データ初期化」を実行

イベントコマンド【DB操作】にある「全データ初期化」や「全項目初期化」を使う事でデータベースを初期化する事ができます。





しかしこの初期化は初期の設定になる訳ではなく、新規作成時の初期化になるので、
例えば可変DB[0:主人公ステータス]で「全データ初期化」を実行した場合は、
全ての主人公が以下のような何も設定していない状態になります。





アイテムや装備品を何も持っていない状態にする時には、このデータベースの初期化が使えます。

もしも最初から持っているアイテムがある場合は、全て初期化したあとに追加する形で持たせると良いでしょう。


▲トップへ戻る▲


  
■データベースの初期化:出力した初期状態のファイルを読み込む

初期状態のCSV形式のファイルを読み込んで初期化します。



▼可変DBのファイル出力

初期状態のCSV形式のファイルは、
テストプレイでゲームを開始した時に自動的にCSV形式のファイルが出力されるようにした方が良いでしょう。

コモンイベント[048:X[共]基本システム自動初期化]最後の行(224行目)に以下のイベントを追加すると、
フォルダー[Data]の中にフォルダー[db]が作られ、その中に出力した可変DBのファイルが保存されます。

【イベントコード表示】

■条件分岐(変数): 【1】 Sys112:[読]テストプレイ中?(1=YES) が 0 と同じ
-◇分岐: 【1】 [ Sys112:[読]テストプレイ中?(1=YES) が 0 と同じ ]の場合↓
|■イベント処理中断
|■
◇分岐終了◇
▼ 可変DB[0:主人公ステータス]を出力
■DB読込(可変): CSelf30 = 可変DB[タイプ0(主人公ステータス)のデータ数]
■DBからCSVファイルに保存: 可変DB[0:0](主人公ステータス : ヒーローさん) から [ CSelf30 ]データ → ファイル "Data/db/cdb[0].csv"
▼ 可変DB[1:┣ 技能習得Lv]を出力
■DB読込(可変): CSelf30 = 可変DB[タイプ1(┣ 技能習得Lv)のデータ数]
■DBからCSVファイルに保存: 可変DB[1:0](┣ 技能習得Lv : ヒーローさん) から [ CSelf30 ]データ → ファイル "Data/db/cdb[1].csv"
▼ 可変DB[6:パーティー情報]を出力
■DB読込(可変): CSelf30 = 可変DB[タイプ6(パーティー情報)のデータ数]
■DBからCSVファイルに保存: 可変DB[6:0](パーティー情報 : メイン設定) から [ CSelf30 ]データ → ファイル "Data/db/cdb[6].csv"
▼ 可変DB[7:┣所持アイテム個数]を出力
■DB読込(ユーザ): CSelf30 = ユーザDB[タイプ2(アイテム)のデータ数]
■DBからCSVファイルに保存: 可変DB[7:0](┣所持アイテム個数 : 薬草) から [ CSelf30 ]データ → ファイル "Data/db/cdb[7].csv"
▼ 可変DB[8:┣所持武器個数]を出力
■DB読込(ユーザ): CSelf30 = ユーザDB[タイプ3(武器)のデータ数]
■DBからCSVファイルに保存: 可変DB[8:0](┣所持武器個数 : ダガー) から [ CSelf30 ]データ → ファイル "Data/db/cdb[8].csv"
▼ 可変DB[9:┗所持防具個数]を出力
■DB読込(ユーザ): CSelf30 = ユーザDB[タイプ4(防具)のデータ数]
■DBからCSVファイルに保存: 可変DB[9:0](┗所持防具個数 : レザーシールド) から [ CSelf30 ]データ → ファイル "Data/db/cdb[9].csv"

初期化しない可変DBは、ファイル出力不要です。

上記の処理は、テストプレイではなく、通常プレイでゲームを開始した場合は、ファイル出力は実行されません。

可変DBを更新した場合は「ゲームデータの作成」を行う前に、1回はテストプレイを実行して、出力ファイルを更新してください。



▼可変DBのファイル読み込み

1周目が終わって2周目が始まる時に出力したファイルを読み込めば、可変DBを初期状態に戻す事ができます。

【イベントコード表示(マップ)】

▼ 可変DB[0:主人公ステータス]を読み込む
■DB読込(可変): このEvのセルフ変数0 = 可変DB[タイプ0(主人公ステータス)のデータ数]
■CSVファイルからDBに読込: ファイル "Data/db/cdb[0].csv" → 可変DB[0:0](主人公ステータス : ヒーローさん) から [ このEvのセルフ変数0 ]データ
▼ 可変DB[1:┣ 技能習得Lv]を読み込む
■DB読込(可変): このEvのセルフ変数0 = 可変DB[タイプ1(┣ 技能習得Lv)のデータ数]
■CSVファイルからDBに読込: ファイル "Data/db/cdb[1].csv" → 可変DB[1:0](┣ 技能習得Lv : ヒーローさん) から [ このEvのセルフ変数0 ]データ
▼ 可変DB[6:パーティー情報]を読み込む
■DB読込(可変): このEvのセルフ変数0 = 可変DB[タイプ6(パーティー情報)のデータ数]
■CSVファイルからDBに読込: ファイル "Data/db/cdb[6].csv" → 可変DB[6:0](パーティー情報 : メイン設定) から [ このEvのセルフ変数0 ]データ
▼ 可変DB[7:┣所持アイテム個数]を読み込む
■DB読込(ユーザ): このEvのセルフ変数0 = ユーザDB[タイプ2(アイテム)のデータ数]
■可変DB書込:[タイプ 7(┣所持アイテム個数) を初期化]
■CSVファイルからDBに読込: ファイル "Data/db/cdb[7].csv" → 可変DB[7:0](┣所持アイテム個数 : 薬草) から [ このEvのセルフ変数0 ]データ
▼ 可変DB[8:┣所持武器個数]を読み込む
■DB読込(ユーザ): このEvのセルフ変数0 = ユーザDB[タイプ3(武器)のデータ数]
■可変DB書込:[タイプ 8(┣所持武器個数) を初期化]
■CSVファイルからDBに読込: ファイル "Data/db/cdb[8].csv" → 可変DB[8:0](┣所持武器個数 : ダガー) から [ このEvのセルフ変数0 ]データ
▼ 可変DB[9:┗所持防具個数]を読み込む
■DB読込(ユーザ): このEvのセルフ変数0 = ユーザDB[タイプ4(防具)のデータ数]
■可変DB書込:[タイプ 9(┗所持防具個数) を初期化]
■CSVファイルからDBに読込: ファイル "Data/db/cdb[9].csv" → 可変DB[9:0](┗所持防具個数 : レザーシールド) から [ このEvのセルフ変数0 ]データ

初期化しない可変DB(出力ファイルが無いもの)は、読み込み設定を削除してください。



▼主人公のステータスは初期化、但し装備品のみ2周目に引き継ぐ

主人公のレベルや攻撃力などは初期状態に戻すが、1周目クリア時に装備していた装備品のみは2周目に引き継ぐ場合は、
▼ 可変DB[0:主人公ステータス]を読み込む」の設定を以下のように設定してください。

なお、マップイベントのセルフ変数には文字列変数が無いので、
可変DB[18:基本システム用変数]データ[0〜1]にある文字列設定を一時使用しています。

【イベントコード表示(マップ)】

▼ 可変DB[0:主人公ステータス]を読み込む
■DB読込(可変): このEvのセルフ変数0 = 可変DB[タイプ0(主人公ステータス)のデータ数]
■可変DB書込:DB[ 18 : 0 : 1 ] (基本システム用変数 : 処理結果 : 文字列) =
■変数操作: このEvのセルフ変数1 = -1 + 0
■回数付きループ [ このEvのセルフ変数0 ]回
|■変数操作: このEvのセルフ変数1 += 1 + 0
|■可変DB書込:DB[ 18 : 0 : 1 ] (基本システム用変数 : 処理結果 : 文字列) += \cdb[0:\self[1]:28]\n\cdb[0:\self[1]:29]\n\cdb[0:\self[1]:30]\n\cdb[0:\self[1]:31]\n\cdb[0:\self[1]:32]\n\cdb[0:\self[1]...
|■
◇ループここまで◇◇
■CSVファイルからDBに読込: ファイル "Data/db/cdb[0].csv" → 可変DB[0:0](主人公ステータス : ヒーローさん) から [ このEvのセルフ変数0 ]データ
■変数操作: このEvのセルフ変数1 = -1 + 0
■回数付きループ [ このEvのセルフ変数0 ]回
|■変数操作: このEvのセルフ変数1 += 1 + 0
|■変数操作: このEvのセルフ変数2 = 27 + 0
|■変数操作: このEvのセルフ変数4 = 1118000101 + 0
|■回数付きループ [ 8 ]回
||■変数操作: このEvのセルフ変数2 += 1 + 0
||■変数操作: このEvのセルフ変数3 = 可変DB(18,0,1)[処理結果 文字列 ] + 0
||■可変DB書込:DB[ 0 : このEvのセルフ変数1 : このEvのセルフ変数2 ] (主人公ステータス : - : -) = このEvのセルフ変数3
||■文字列操作:V[このEvのセルフ変数4] =<上1行切出> 位置[可変DB(18,0,1)[処理結果 文字列 ]]の文字列
||■
|◇ループここまで◇◇
|■
◇ループここまで◇◇
■可変DB書込:DB[ 基本システム用変数 : 0 : 1 ] (18 : 処理結果 : 文字列) =
■可変DB書込:DB[ 基本システム用変数 : 1 : 1 ] (18 : メニュー消去フラグ : 文字列) =

以降、可変DB[1:┣ 技能習得Lv]を読み込み設定が続く



主人公のステータスは初期化せずに、装備状態のみを初期化する場合は、以下のように一旦全ての装備品を外した上で、
初期装備を1つずつ設定してください。

【イベントコード表示(マップ)】

▼ 装備状態を初期化
■DB読込(可変): このEvのセルフ変数0 = 可変DB[タイプ0(主人公ステータス)のデータ数]
■変数操作: このEvのセルフ変数1 = -1 + 0
■回数付きループ [ このEvのセルフ変数0 ]回
|■変数操作: このEvのセルフ変数1 += 1 + 0
|■イベントの挿入[名]: ["○装備武器の変更"] <コモンEv 11> / このEvのセルフ変数1 / -1:武器欄を解除 / 0:ダガー
|■イベントの挿入[名]: ["○装備防具の変更"] <コモンEv 12> / このEvのセルフ変数1 / -2:防具欄1を解除 / 0:レザーシールド
|■イベントの挿入[名]: ["○装備防具の変更"] <コモンEv 12> / このEvのセルフ変数1 / -3:防具欄2を解除 / 0:レザーシールド
|■イベントの挿入[名]: ["○装備防具の変更"] <コモンEv 12> / このEvのセルフ変数1 / -4:防具欄3を解除 / 0:レザーシールド
|■イベントの挿入[名]: ["○装備防具の変更"] <コモンEv 12> / このEvのセルフ変数1 / -5:防具欄4を解除 / 0:レザーシールド
|■イベントの挿入[名]: ["○装備防具の変更"] <コモンEv 12> / このEvのセルフ変数1 / -6:防具欄5を解除 / 0:レザーシールド
|■イベントの挿入[名]: ["○装備防具の変更"] <コモンEv 12> / このEvのセルフ変数1 / -7:防具欄6を解除 / 0:レザーシールド
|■イベントの挿入[名]: ["○装備防具の変更"] <コモンEv 12> / このEvのセルフ変数1 / -8:防具欄7を解除 / 0:レザーシールド

|■
◇ループここまで◇◇

■イベントの挿入[名]: ["○装備武器の変更"] <コモンEv 11> / 12:ウルファール / -1:武器欄を解除 / 0:ダガー
■イベントの挿入[名]: ["○装備防具の変更"] <コモンEv 12> / 12:ウルファール / 3:防具欄2に装備 / 27:青い服

以降、可変DB[1:┣ 技能習得Lv]を読み込み設定が続く


▲トップへ戻る▲


  
■初期レベルに戻す

初期レベルに戻す設定です。

初期レベルに戻す事で、最大HPや攻撃力などは初期値に戻りますが、
能力値を増減するイベントを実行して最大HPや攻撃力が増えた分はそのままになります。

また装備状態や戦闘コマンドなどもそのままになります。



レベルを初期レベルにする場合、単にレベルを減らすだけでは「次Lvまで」の誤差の問題が生じます。
【レベルの増減による「次Lvまで」の誤差についての説明を見る】

レベルを下げたあとに可変DB[0:主人公ステータス]項目[54:現Lvの取得経験値][55:現Lvの必要経験値]の初期化が必要です。

▼ウルファールの場合は「項目[54]=0」「項目[55]=40」に初期化




ウルファールのレベルを「5」に戻す設定は以下のとおりです。

【イベントコード表示(マップ)】

■DB読込(可変): このEvのセルフ変数0 = 可変DB[ 主人公ステータス : ウルファール : レベル ] (0 : 12 : 4)
■変数操作: このEvのセルフ変数0 -= 5 + 0
■変数操作: このEvのセルフ変数0 *= -1 + 0
■イベントの挿入: コモン10:[ ○経験値・Lv増減 ] / 12:ウルファール / 0:レベル増減 / このEvのセルフ変数0 / 0:なし
■可変DB書込:DB[ 主人公ステータス : ウルファール : 現Lvの取得経験値 ] (0 : 12 : 54) = 0
■可変DB書込:DB[ 主人公ステータス : ウルファール : 現Lvの必要経験値 ] (0 : 12 : 55) = 40



初期の[レベル]や[現Lvの必要経験値]が主人公ごとに異なるため、ループ処理で一括に初期化するのは難しいと言えます。

例えば、可変DB[0:主人公ステータス]項目[59〜60]を新設し、
初期の[レベル]や[現Lvの必要経験値]をその項目[59〜60]に設定しておけば、ループ処理で一括に処理する事ができます。

新設する項目番号 項目名
59 初期必要経験値
60 初期レベル





項目[55:現Lvの必要経験値]項目[59:初期必要経験値]項目[4:レベル]項目[60:初期レベル]は同じ値にしてください。



一括で全ての主人公を初期レベルに戻す場合は、以下のイベントを設定してください。

【イベントコード表示(マップ)】

■DB読込(可変): このEvのセルフ変数0 = 可変DB[タイプ主人公ステータス(0)のデータ数]
■回数付きループ [ このEvのセルフ変数0 ]回
|■変数操作: このEvのセルフ変数0 -= 1 + 0
|■DB読込(可変): このEvのセルフ変数1 = 可変DB[ 主人公ステータス : このEvのセルフ変数0 : レベル ] (0 : - : 4)
|■DB読込(可変): このEvのセルフ変数1 -= 可変DB[ 主人公ステータス : このEvのセルフ変数0 : 初期レベル ] (0 : - : 59)
|■変数操作: このEvのセルフ変数1 *= -1 + 0
|■イベントの挿入: コモン10:[ ○経験値・Lv増減 ] / 12:ウルファール / 0:レベル増減 / このEvのセルフ変数1 / 0:なし
|■可変DB書込:DB[ 主人公ステータス : このEvのセルフ変数0 : 現Lvの取得経験値 ] (0 : - : 54) = 0
|■DB読込(可変): このEvのセルフ変数1 = 可変DB[ 主人公ステータス : このEvのセルフ変数0 : 初期必要経験値 ] (0 : - : 60)
|■可変DB書込:DB[ 主人公ステータス : このEvのセルフ変数0 : 現Lvの必要経験値 ] (0 : - : 55) = このEvのセルフ変数1
|■
◇ループここまで◇◇


▲トップへ戻る▲


  
■クリア時にセーブする

1周目のクリア時にセーブ画面が表示されて、セーブする事ができるようにします。



この処理を設定する場合は、セーブするための専用のマップを用意した方が良いでしょう。





作成したマップへ移動してくる時には、【ピクチャ表示】で画面を真っ暗にしてください。

【イベントコード表示】

■ピクチャ表示:1 [左上]ウィンドウ「<SQUARE>」サイズ[Sys116:[読]画面サイズX,Sys117:[読]画面サイズY] X:0 Y:0 /
       0(0)フレーム / パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[0] G[0] B[0]
■場所移動:主人公 ▲マップID4[クリア時セーブ] X:0 Y:1 [トランジションなし]



作成したマップには、以下のマップイベントを設定してください。

【イベントコード表示】

■マップイベント「クリア時セーブ」

グラフィック:なし
起動条件:自動実行
起動条件変数:なし

■条件分岐(変数): 【1】 このEvのセルフ変数0 が 0 と同じ
-◇分岐: 【1】 [ このEvのセルフ変数0 が 0 と同じ ]の場合↓
|■変数操作: このEvのセルフ変数0 = 1 + 0
|▼ クリアした時に実行する処理
|■変数操作: V1[周回数] += 1 + 0
|■文章:セーブしますか?
|■文章選択肢:/ 【1】セーブする / 【2】セーブしない
|-◇選択肢:【1】 セーブする の場合↓
||■イベントの挿入[名]: ["○各種メニュー呼出"] <コモンEv 14> / 0:セーブ画面
||■
|-◇選択肢:【2】 セーブしない の場合↓
||■
|◇分岐終了◇
|▼ 以下のウェイトは、2周目が急に始まらないようにするために設定しています。
|▼ ウェイトが要らない場合は削除してください。

|■ウェイト:30 フレーム
|■
◇分岐終了◇
■変数操作: このEvのセルフ変数0 = 0 + 0
▼ ここに初期化イベントを設定

▼ オープニングが始まるマップへ移動

■場所移動:主人公 ▲マップID1[サンプルマップA] X:15 Y:21 [トランジションなし]
■ピクチャ消去:1 / 0(0)フレーム



セーブ後、一度タイトル画面に戻る場合は、以下のように設定。

【イベントコード表示】

■マップイベント「クリア時セーブ」

グラフィック:なし
起動条件:自動実行
起動条件変数:なし

■条件分岐(変数): 【1】 このEvのセルフ変数0 が 0 と同じ
-◇分岐: 【1】 [ このEvのセルフ変数0 が 0 と同じ ]の場合↓
|■変数操作: このEvのセルフ変数0 = 1 + 0
|▼ クリアした時に実行する処理
|■変数操作: V1[周回数] += 1 + 0
|■文章:セーブしますか?
|■文章選択肢:/ 【1】セーブする / 【2】セーブしない
|-◇選択肢:【1】 セーブする の場合↓
||■イベントの挿入[名]: ["○各種メニュー呼出"] <コモンEv 14> / 0:セーブ画面
||■
|-◇選択肢:【2】 セーブしない の場合↓
||■
|◇分岐終了◇
|■
-◇上記以外
|■変数操作: このEvのセルフ変数0 = 0 + 0
|■
◇分岐終了◇
▼ ここに初期化イベントを設定

■条件分岐(変数): 【1】 このEvのセルフ変数0 が 1 と同じ
-◇分岐: 【1】 [ このEvのセルフ変数0 が 1 と同じ ]の場合↓
|■変数操作: このEvのセルフ変数0 = 0 + 0
|■場所移動:主人公 ▲マップID0[タイトル] X:8 Y:5 [トランジションなし]
|■イベント処理中断
|■
◇分岐終了◇
▼ オープニングが始まるマップへ移動
■場所移動:主人公 ▲マップID1[サンプルマップA] X:15 Y:21 [トランジションなし]
■ピクチャ消去:1 / 0(0)フレーム


▲トップへ戻る▲


  
■セーブ画面にクリア回数を表示

セーブ画面にクリア回数が表示されるようにコモンイベント[094:X[移]セーブ・ロード画面描画]を改造します。





改造する場合はコモンイベント[094:X[移]セーブ・ロード画面描画]をコピーして、
コモンイベント[215]以降に貼り付けて複製品を作り、貼り付けた複製品を改造する事で、
改造前のコモンイベント[094:X[移]セーブ・ロード画面描画]を残す事ができます。



コモンイベント[X[移]セーブ・ロード画面描画]268行目にある…
■変数操作: CSelf10[一時変数A] = CSelf21[一時ピクチャ番号] + -1
の設定を…
■変数操作: CSelf10[一時変数A] = CSelf21[一時ピクチャ番号] + 0
に変えてください。



276行目に以下のイベントを追加してください。

【イベントコード表示】

■回数付きループ [ 1 ]回
|▼ クリア回数
|■セーブデータの内容読込: CSelf65[クリア回数] = セーブデータ[CSelf50[注目セーブ番号]]の V1[周回数]
|■条件分岐(変数): 【1】 CSelf65[クリア回数] が 1 以上
|-◇分岐: 【1】 [ CSelf65[クリア回数] が 1 以上 ]の場合↓
||■文字列操作:CSelf6[付与文字列] = "クリア:\cself[65]回"
||■変数操作: CSelf21[一時ピクチャ番号] = CSelf20[基本ピクチャ番号] + 66
||■変数操作: CSelf21[一時ピクチャ番号] += CSelf55[セーブ1セットあたり使用枚数] * CSelf43[処理中個数]
||■ピクチャ表示:CSelf21[一時ピクチャ番号] [左上]文字列[\f[\cself[18]]\c] X:CSelf41[一時項目表示X] Y:CSelf42[一時項目表示Y] / 0(0)フレーム / パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
||■変数操作: CSelf10[一時変数A] = CSelf79[プレイタイム位置Y] + 0
||■変数操作: CSelf10[一時変数A] -= CSelf87[座標倍率Y[x10]] + 0
||■ピクチャエフェクト:CSelf21[一時ピクチャ番号] [描画座標シフト(最終値)] Xシフト CSelf76[データ名位置X] / Yシフト CSelf10[一時変数A] (0)フレーム
||■回数付きループ [ 1 ]回
|||▼ 表示エフェクト
|||■変数操作: CSelf51[一時項目表示X2] = CSelf41[一時項目表示X] + CSelf48[エフェクトシフト量X]
|||■変数操作: CSelf52[一時項目表示Y2] = CSelf42[一時項目表示Y] + 0
|||■ピクチャ移動:CSelf21[一時ピクチャ番号] X:CSelf51[一時項目表示X2] Y:CSelf52[一時項目表示Y2] / 0(0)フレーム / パターン 1 / 透 同値 / 表示形式:同値 / 角 同値 / 拡 同値 / カラー 同値
|||■ピクチャ移動:CSelf21[一時ピクチャ番号] X:CSelf41[一時項目表示X] Y:CSelf42[一時項目表示Y] / 5(CSelf96[ディレイフレーム1])フレーム / パターン 1 / 透 同値 / 表示形式:同値 / 角 同値 / 拡 同値 / カラー 同値
|||■ピクチャ移動:CSelf21[一時ピクチャ番号] X:CSelf41[一時項目表示X] Y:CSelf42[一時項目表示Y] / 5(CSelf97[ディレイフレーム2])フレーム / パターン 1 / 透 同値 / 表示形式:同値 / 角 同値 / 拡 同値 / カラー 同値
|||■ピクチャ移動:CSelf21[一時ピクチャ番号] X:CSelf41[一時項目表示X] Y:CSelf42[一時項目表示Y] / 5(CSelf98[ディレイフレーム3])フレーム / パターン 1 / 透 同値 / 表示形式:同値 / 角 同値 / 拡 同値 / カラー 同値
|||■
||◇ループここまで◇◇
||■
|◇分岐終了◇
|■
◇ループここまで◇◇



クリア回数の表示色を変えたい時には、284行目【ピクチャ表示】のカラー設定を変えてください。

▼黄色のカラー設定にした時







以上で改造完了です。

▼改造後の設定画面



▲トップへ戻る▲



◎関連ページ

◆周回プレイやクリア特典の基礎
┣◆周回プレイ:【場所移動】でタイトル画面に戻って2周目を開始
┣◆周回プレイ:【タイトル画面へ戻る】でタイトル画面に戻って2周目を開始
┣◆サンプルゲームを周回プレイ化してみる
┗◆クリアしたらタイトル画面で「おまけ」が選択できるようにする

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