【ウディタ解説】万能ウィンドウ活用:戦闘テストコモンを作る①【改造】

今回のウディタ解説は「戦闘テストコモンの作成」よ。どういうものかというと、


ユーザーデータベース13番「敵グループ」に設定されている内容を読み込んで、


こんな風に表示して、


選択した敵グループと戦闘ができるというものよ。ゲーム制作中の戦闘テスト用にこういうものがあったら便利よね。

むずかしそう? 大丈夫。基本システムの機能を使えば割と簡単に実現可能だったりするのよ。

万能ウィンドウとは?

戦闘テストコモンの作成には、基本システムに使われている「万能ウィンドウ」という機能を利用するわ。

万能ウィンドウとはなんぞや? というと簡単に言えば「選択肢コマンドの高機能版」といったところかしら。

※詳細はウディタ解説サイト「YADOT-WOLF」さんが「万能ウィンドウについて」で詳しく説明してくださっているわ。

機能や設定方法だけ見るとすごく複雑そうに感じるのだけどそうでもないわ。処理の流れを要約すれば、

  1. 表示する位置やサイズ、項目数なんかをガーっと設定する
  2. 表示する項目や選択した際の戻り値をグーっと設定する
  3. コモンを呼び出して万能ウィンドウをゴーっと実行する

これだけのことよ。今回作るコモンだってコメント含めて50行程度だし。

ちなみに設定は「専用の可変DBに書き込む」という方法で行うの。


ウィンドウサイズなんかの見た目の設定は「基本システム用変数」に設定項目があって、


実際に表示する項目の名前や選択した際の戻り値なんかは「万能ウィンドウ用一時DB」というところに書き込むの。これらに書き込んだ内容を実行用コモンが読み取って動作するという仕組みなのね。

……言葉で言うとやっぱりわかりづらいわね。まぁ説明を聞くよりもまぁ実際やってみた方が分かりやすいと思うわ。

万能ウィンドウを使って戦闘テストコモンを作成する


それじゃコモンを作っていきましょう。新規コモンを作成して頂戴。
→名前:〇戦闘テストコモン
→起動条件:呼び出しのみ


セルフ変数の設定はこちら。使うのは4つだけよ。前述の通り万能ウィンドウは「可変DBに設定内容を書き込んで実行する」という仕様だから、セルフ変数をあまり使う必要がないの。

では入力していきましょう。


まず最初に行うのは「万能ウィンドウ用可変DBの初期化」よ。最初に初期化しておかないと、直前に使用した万能ウィンドウの設定が残ってしまうの(万能ウィンドウはアイテム欄やお店の処理でも使われているわ)。
→可変DB書込:「万能ウィンドウ一時DB」を全データ初期化する


初期化の仕方はこんな感じよ。


それじゃ万能ウィンドウの初期設定に入りましょう。ウィンドウサイズや表示位置、項目の数(縦と横=行数と列数)等を設定するのよ。
→可変DB書込:基本システム用変数ー万能ウィンドウ表示Xに「0」を入力
→可変DB書込:基本システム用変数ー万能ウィンドウ表示Yに「0」を入力
→可変DB書込:基本システム用変数ー万能ウィンドウ横サイズに「140」を入力
→可変DB書込:基本システム用変数ー万能ウィンドウ縦サイズに「240」を入力
→可変DB書込:基本システム用変数ー万能ウィンドウ横項目数に「1」を入力
→可変DB書込:基本システム用変数ー万能ウィンドウ縦項目数に「15」を入力
→可変DB書込:基本システム用変数ー万能ウィンドウ横スクロール位置に「0」を入力

「座標X0Y0、サイズ横140縦240、列数1行数15」で表示するということね。ちなみにスクロール位置というのは「スクロールバーの位置」のことだから、とりあえず「0」を入れておけばいいわ。


次に「表示する項目の総数」を設定するわ。今回作るのは「ユーザーDBの敵グループから選択実行する戦闘テストコモン」だから、総数は「ユーザーDBで設定されている敵グループのデータ数」になるわね。
→ユーザーDB読込:「敵グループ」のデータ数をセルフ変数30番に代入する
→可変DB書込:基本システム用変数ー万能ウィンドウ項目個数にセルフ変数30番を入力

「データの数なんてどうやって読み込むの?」というと、こんな感じよ↓


DB操作には「データ数取得」というチェックボックスがあるからこれを使えばOKよ。

ここまでが「万能ウィンドウのガワ(外側)」の設定。次からはその中身の部分(項目名などのデータ)を設定していくわ。ちょっとややこしくなってくるからがんばって。


同じく可変DBへ書込んでいくのだけど、まずは敵グループIDの初期値(0)を設定して、
→変数操作:セルフ変数25番に「0」を入力


敵グループの総数が分かっているのだから、DB書込はその総数だけループして処理するのがスマートよね。
→回数付きループ:回数にセルフ変数30番を指定


※呼び出し値を使えばループさせる回数にも変数を使うことができるわ。

それじゃ、ループの中に万能ウィンドウの設定(可変DB書込)を入力していきましょう。


まずは表示する項目名(敵グループ名)を書込むわ。DBからDBへの書込は多分できないから、一度セルフ文字列を経由してね。あとデータ番号にはセルフ変数25番を指定すること。
→ユーザーDB読込:「敵グループ」のデータ名をセルフ文字列5番に代入する
→可変DB書込:万能ウィンドウ一時DBー(セルフ変数25番)ー項目文にセルフ文字列5番を入力


データ名の取得はこのチェックボックスよ。さっき使った「データ数取得」と同じ方法ね。

次に書込むのは項目コード。要は「項目を選択した時に返ってくる値(戻り値)」のことね。


選択した敵グループ名に従って戦闘を発生させるのだから、戻り値はその敵グループIDということになるわね。変数呼び出し値で指定してあげればいいわ。
→可変DB書込:万能ウィンドウ一時DBー(セルフ変数25番)ー項目コードにセルフ変数25番を入力

次に設定するのは「その項目が選択できるか不可か」よ。表示はするけど選べないようにすることもできるということね。

ここで一工夫してみましょう。サンプルゲームの敵グループ設定を見てみると、


空白のデータや区切りに使っているデータがあるわね。こういう部分は実際に敵グループが設定されているわけじゃないし、選択項目から除外しちゃいましょう。


空白と区切り文の部分を選択項目から除外するには、文字列の条件分岐を使えばいいわ。
→条件分岐(文字列):「(空白)と同じ」「-が先頭にある」「上記以外」を入力


3つの条件分岐に可変DB書込を入力
して頂戴。上2つを0(選択不可)、上記以外を1(選択可)にするのよ。
→【分岐1と2】可変DB書込:万能ウィンドウ一時DBー(セルフ変数25番)ー選択可能状態[1=可]に「0」を入力
→【分岐3】可変DB書込:万能ウィンドウ一時DBー(セルフ変数25番)ー選択可能状態[1=可]に「1」を入力

これで空白と区切り分にの敵グループは選択できないようになったわ。


あとは仕上げにループの最後に敵グループIDを+1
→変数操作:セルフ変数25番に+1する

これで次のループでは1つ後の敵グループIDでDB書込みが行われるわ。そしてループ回数=敵グループの総データ数だから、全ての敵グループが順番に可変DBに書込まれていくというわけ。

ここまでで万能ウィンドウの初期設定は終了。「DBの内容をループで読み込んで処理していく」ということをしたから、ちょっと難しかったかもしれないわね。

後は実行(描画/入力)の処理になるけど、長くなったから続きは次回にしましょう。

↓前回の投稿 引き続き万能ウィンドウを使った戦闘テストコモン作成を解説していくわね。前回は初期設定までをすませたから、次は実際に描画して操作する部分の作成よ。 ...