【ウディタ】万能ウィンドウ活用:ワープポイントの登録と実行①

今回はワープポイントを作成するわ。仕様は↓のとおりよ。

  • チェックするとその地点がワープポイントとして登録される
  • 登録後は他の登録済みワープポイントと行き来ができる
  • ワープポイントは複数登録できる

市販ゲームでいうと女神転生シリーズのターミナルのようなものよ。あれはセーブ機能もあったから、同じようにセーブ画面も呼び出せるようにしてもいいかもね。

可変DBにワープ先登録用DBを作成する


まずはワープ地点を登録するための入れ物を可変DBに作成するわ。以下のように空きIDへ作成して頂戴。
→名前:ワープ先登録
→データ数:とりあえず12くらいで


各項目の入力設定はこんな感じ。データIDを「最初の文字列データと同じ」にしておいてね。
→データIDの設定方法:最初の文字列データと同じ
→項目0:名前「マップ名」、種類「文字列」
→項目1:名前「マップID」、種類「変数」
→項目2:名前「座標X」、種類「変数」
→項目3:名前「座標Y」、種類「変数」

これでワープ地点を登録するための可変DBは準備OKよ。後はワープ先を登録するためのコモンと、登録した地点にワープさせるコモンを作成すればいいわね。

ワープ地点を登録するコモンを作成する


まずはワープ地点登録用のコモンを作りましょうか。開いてるIDへ以下のように作成して頂戴。
→名前:〇ワープ登録
→起動条件:呼び出しのみ


セルフ変数とセルフ文字列にはこんな感じで名前を付けておいて。


まずは可変DBへの登録に必要な値を取得しましょう。マップIDとXY座標、あとは選択用のマップ名があればいいわね。ちなみに登録するワープ地点は「呼び出し元マップイベント(ワープポイント)の1歩下」にするわ(同じ座標だとマップイベントと被るからね)。
→変数操作+:セルフ変数11番に「現在のマップID]を入力
→変数操作+:セルフ変数12番に「呼び出し元マップイベントのX座標(標準)を入力
→変数操作+:セルフ変数13番に「呼び出し元マップイベントのY座標(標準)を入力
→変数操作:セルフ変数13番を+1する(一歩下にするためよ)
→システムDB読込:セルフ文字列6番に「マップ設定-(セルフ変数11番)のデータ名」を代入

取得する座標は「精密」ではなく「標準」だから間違えないようにね。

次は取得したワープ地点の情報を可変DBに書込む処理よ。


流れとしては「ID0番から順に調べて開いていたらそこに書き込み、登録済だったら次のIDが開いているか調べる」になるわ、だからまずは空きIDを上から順に調べるための準備(ループ)を作りしょう。
→変数操作:セルフ変数10番に「0」を入力
→イベント制御:「ループ(繰り返し)」を作成
→可変DB読込:セルフ文字列5番に「ワープ先登録-(セルフ変数10番)-マップ名」を代入


次は条件分岐で、セルフ文字列5番に取得したマップ名が空白か判別するのよ。
→条件分岐:「セルフ文字列5番が(空白)と同じ」を作成


可変DBから取得したマップ名が空白ということは、そのデータIDは未使用(まだ登録されていない)ということよね。登録していいIDだからワープ地点を書き込みましょう。
→可変DB書込:「ワープ先登録-(セルフ変数10番)-マップ名」にセルフ文字列6番を代入
→可変DB書込:「ワープ先登録-(セルフ変数10番)-マップID」にセルフ変数11番を代入
→可変DB書込:「ワープ先登録-(セルフ変数10番)-座標X」にセルフ変数12番を代入
→可変DB書込:「ワープ先登録-(セルフ変数10番)-座標Y」にセルフ変数13番を代入

これでワープポイント(呼び出し元マップイベントの1歩下)が可変DBに書込まれたわ。


登録後は「ワープ地点を登録しましたよ」的なメッセージとエフェクトを入力してループ中断。「ポンポロピーン」でも「ファファファファーン」でも好きな演出をするといいわ。
→「ワープ地点を登録しましたよ」的なメッセージとエフェクトを入力
→イベント制御:「ループ中断」を入力

あと調べたマップ名が空白じゃなかった場合の処理だけど、


可変DBから取得したマップ名が空白じゃないということは、そのデータIDは既に登録済みということよね。次の格納先を調べるためにデータIDに+1してループ継続させるわ。
→変数操作:セルフ変数10番に+1する

これでワープ地点登録用コモンの作成は終了よ。あとは可変DBの値を読み込んで実際にワープさせるコモンを作ればいいわね。

そこそこ長くなっちゃったから続きは次の投稿にしましょう。万能ウィンドウは次で使うからね。

前回の投稿↓ 続きなのよ。前回はワープ先を登録するためのコモンを作成したから、次は登録した地点にワープさせるコモンを作っていくわね。 今回は万能ウィンドウを活用...