前回の投稿↓
続きなのよ。前回はワープ先を登録するためのコモンを作成したから、次は登録した地点にワープさせるコモンを作っていくわね。
今回は万能ウィンドウを活用するのよ。万能ウィンドウについては以前の投稿でも解説しているから、そちらを読んでもらえると理解がスムーズだと思うわ。
登録した地点へワープさせるコモンを作成する
それじゃコモン作成をはじめましょう。空きIDへ以下のように新規コモンイベントを作って頂戴。
→名前:〇ワープ実行
→起動条件:呼び出しのみ
ちなみに処理の流れだけど、ザックリいうとこんな感じになるわ。
- 万能ウィンドウ用DBの初期化
- 万能ウィンドウ(外枠等)の設定
- 万能ウィンドウ(表示項目)の設定
- 万能ウィンドウの表示→実行→消去
- ワープの実行(もしくはキャンセル)
というわけでまずは初期化。
→可変DB書込:「万能ウィンドウ一時DB」を全データ初期化する
次はガワの設定。ウィンドウサイズや表示位置、項目の数(縦と横=行数と列数)等を決めるわ。
→可変DB書込:基本システム用変数ー万能ウィンドウ表示Xに「30」を入力
→可変DB書込:基本システム用変数ー万能ウィンドウ表示Yに「60」を入力
→可変DB書込:基本システム用変数ー万能ウィンドウ横サイズに「240」を入力
→可変DB書込:基本システム用変数ー万能ウィンドウ縦サイズに「120」を入力
→可変DB書込:基本システム用変数ー万能ウィンドウ横項目数に「2」を入力
→可変DB書込:基本システム用変数ー万能ウィンドウ縦項目数に「6」を入力
→可変DB書込:基本システム用変数ー万能ウィンドウ横スクロール位置に「0」を入力
※「座標X30Y60、サイズ横240縦120、列数2行数6」で表示するけど、ここは好みで調整していただいてもOKよ。
総項目数は可変DB「ワープ先登録」のデータ総数を読み込んで設定するわ。戦闘テスト作成の時と同じね。
→可変DB読込:「ワープ先登録」のデータ数をセルフ変数30番に代入する
→可変DB書込:基本システム用変数ー万能ウィンドウ項目個数にセルフ変数30番を入力
次は万能ウィンドウ内に表示する選択項目(登録されているワープ地点)の読み込みと万能ウィンドウへの設定よ。
処理はループで行うわ。さっき読み込んだデータ総数分だけループさせて、データID0番から順番に読み込んでいくのよ。
→変数操作:セルフ変数25番に「0」を入力
→回数付きループ:回数にセルフ変数30番を指定
次は「そのデータIDにワープ先が登録されているか」を条件分岐で判別するわ。まずはセルフ文字列5番へ該当IDに格納されているマップ名を代入。
→可変DB読込:「ワープ先登録-(セルフ変数10番)-マップ名」をセルフ文字列5番に代入
そしてマップ名が空白以外(登録あり)か空白(登録なし)かをチェック。
→条件分岐:「セルフ文字列5番が(空白)以外」と「セルフ文字列5番が(空白)と同じ」を作成
「マップ名が空白以外(登録あり)」の分岐には、登録内容を万能ウィンドウに設定(書込み)する処理を入力するわ。項目名はセルフ文字列に読み込んだマップ名、戻り値はデータIDを指定。項目選択可能にするのも忘れないでね。
→可変DB書込:万能ウィンドウ一時DBー(セルフ変数25番)ー項目文にセルフ文字列5番を入力
→可変DB書込:万能ウィンドウ一時DBー(セルフ変数25番)ー項目コードにセルフ変数25番を入力
→可変DB書込:万能ウィンドウ一時DBー(セルフ変数25番)ー選択可能状態[1=可]に「1」を入力
「マップ名が空白(登録なし)」の分岐はまだワープ地点の登録がないデータIDだから、項目名は「?????」にして選択不可にしておきましょう。
→可変DB書込:万能ウィンドウ一時DBー(セルフ変数25番)ー項目文に「?????」を入力
→可変DB書込:万能ウィンドウ一時DBー(セルフ変数25番)ー項目コードにセルフ変数25番を入力
→可変DB書込:万能ウィンドウ一時DBー(セルフ変数25番)ー選択可能状態[1=可]に「0」を入力
最後に次のループのために読み取り先データIDを+1。
→変数操作:セルフ変数25番に+1する
これで万能ウィンドウに必要な設定はすべて完了したから、次は実行ね。
万能ウィンドウの処理に必要な各コモンを呼び出していくわ。
→コモン呼び出し:「X[共]万能ウィンドウ描画処理」を「表示モード」で呼び出す
→コモン呼び出し:「X[共]万能ウィンドウ選択実行」を「選択を終えるまでループ」「結果をセルフ変数10番に代入」で呼び出す
→コモン呼び出し:「X[共]万能ウィンドウ描画処理」を「消去モード」で呼び出す
※この部分(描画/実行)については、以前投稿した「万能ウィンドウ活用:戦闘テストコモンの作成②」に詳しく載せているから、そちらを参照して頂戴。
あとは万能ウィンドウで選択した項目の戻り値に従った処理の実行(選択した地点にワープさせる)ね。とその前に、
キャンセルした場合の中断処理を先に入力しておきましょう。
→条件分岐:「セルフ変数10番が-100と同じ」を入力
→分岐1:イベント制御「イベント処理中断」を入力
ワープは当然「場所移動」コマンドで行うわ。選択した戻り値=登録先可変DBのデータIDだから、そのデータIDに格納されている情報をまず読み込むわね。
→可変DB読込:「ワープ先登録-(セルフ変数10番)-マップID」をセルフ変数11番を代入
→可変DB読込:「ワープ先登録-(セルフ変数10番)-座標X」をセルフ変数12番を代入
→可変DB読込:「ワープ先登録-(セルフ変数10番)-座標Y」をセルフ変数13番を代入
あとは読み込んだワープ地点のIDと座標を指定して「場所移動」を実行させればOK。一応「ワープしましたよ」的な演出も入れておきましょうか。
→「ワープしましたよ」的なエフェクトとかSEとかを入力
→場所移動:(後述)
場所移動コマンドはこんな感じよ。対象は当然だけど主人公、移動先には変数呼び出し値でセルフ変数を指定してね。移動時オプションはトランジション(暗転あり)にした方がワープっぽくなると思うわ。
→対象:主人公
→移動先マップ:「1600011」を入力
→移動先位置X:「1600012」を入力
→移動先位置Y:「1600013」を入力
→場所移動時オプション:トランジションを行う(暗転有り・遅い)を指定
これでワープを実行するコモンの作成は完了よ。
サンプルゲームでワープコモンを試してみる
それじゃ実際にワープコモンを試してみましょうか。ワープの実行も登録もマップイベントからコモンを呼び出して起動するわね。
こんな感じのマップイベント(ワープポイント)を各マップに設置するわ。セルフ変数を操作して、最初にチェックした時はそのポイントをワープ先として登録し、2回目以降は登録済ワープ先を選択させるのよ。
マップイベントの準備ができたらサンプルゲームを起動して、ワープポイントをチェック(決定キー)して頂戴。
これはサンプルマップAに設置したのワープポイント。最初にワープ先が登録されて、
次からはワープ先が表示される。選択すればこのワープポイント(の1歩下)に場所移動が実行されるわ(まだ登録先が1つだから意味ないけどね)。
こっちのワープポイントも登録されたわね。もちろん行き来が可能よ。マップAを選択すれば、
マップAのワープポイントに移動。こちらからマップBを選択すれば戻ることもできるわ。
3地点すべて登録されてそれぞれワープで行き来が可能になったわ。うまくできたかしら?
ちなみにこのワープコモン、マップ名を選択項目として取得する仕様上「同じマップ内に複数のワープポイントを設置すると、どっちがどっちか分からなくなる」という問題があるわ。
もし同じマップ内で複数設置したいのならコモンを修正して頂戴。登録用のマップ名を「システムDBのマップ名を代入」ではなく、「コモン呼び出し時に直接入力」に変えればいいわ。
ワープポイント作成の解説は以上よ。お疲れ様でした。