【ウディタ】カーソル選択している敵の能力を表示する①

レビニアですの。今回は「戦闘中にカーソル選択している敵の能力を表示する方法」を解説するわ。


これが完成例、敵の属性耐性と状態異常耐性を表示させたものよ。テキストのみで味気ないけどそこはあくまで例だからね……。

そもそも戦闘中の敵の能力はどこに格納されているのか

それじゃやり方を説明していくけど、そもそもウディタの基本システムにおいて「現在戦っている敵の情報」というものが一体どこに格納されているのか、そこから説明していきましょう。


戦闘中の敵情報は可変DB10番「戦闘一時ステータス」から並んでいる一連のDBタイプに格納されているわ。10番には敵の名前やHPなどの基本的なステータスが入っているわね。


11番「属性耐性計算結果」には名前の通り属性耐性の値が入っているわ。初期値ではID10番までしかないけど、これは敵の出現数によって自動で増やされるようになっているから気にしないでいいわ。


12番「 状態耐性計算結果」には状態異常に対する耐性値が。


13番「状態リスト」に入っているのは状態異常の残りターン数。現在かかっている状態異常があとどのくらいで効果が切れるのかが入っているわ。

こんな感じで、戦闘中の敵味方の各種ステータスや耐性などの情報は、この一連の可変DB項目に格納されているの。このDBとコモンイベントがやり取りすることで、基本システムの戦闘イベントが実行されているわ。

つまり、敵の情報を表示したいならこの一連のDB項目から読み取ってピクチャ表示すればいいわけ。

カーソル選択中の敵スロットはどこでわかる?

でもそのためには「現在カーソル選択しているのがどの敵なのか」が分からないといけないわよね? 


ID10番~が敵用のスロットと説明したわね。このスロットの何番を今カーソル選択しているかをどうやって判別するのかというと、


それは基本システムのコモン162番「X[戦]敵対象選択実行」の47行目、ここのセルフ変数12「一時変数A」に格納されているわ。この中の値がズバリ敵スロットの番号よ。

つまりこのコモンのセルフ変数12番の値に従って可変DBを参照すれば、カーソル選択中の敵がだれでどんな能力をしているのかを表示することができるというわけ。

前置きが長くなったけどここまでが事前説明よ。なんとなくやることが見えてきたかしら?

敵情報を表示するコモンを作成する

それじゃ実際にカーソル選択中の敵能力を表示するための改造を解説していくわ。前置きは長かったけど改造自体は割と簡単よ。

ちなみに冒頭の例と同じく、今回は敵の属性耐性と状態異常耐性を表示する方法で作成していくからね。


改造するコモンは前述のとおりコモン162番「X[戦]敵対象選択実行」なのだけど、まず先に敵情報を読み取って表示するコモンを別に作成してしまいましょう。
→コモン作成:名前「〇ターゲット情報表示」、起動条件「呼び出しのみ」


入力値としてセルフ変数0番と1番を使用するからこのように名前と初期値を入力してね。

数値2の初期値は「1600012」よ。前述のコモン162番「X[戦]敵対象選択実行」のセルフ変数12番を読み込むための変数呼び出し値ね。


このコモンは敵情報を表示させる時と消去させる時に呼び出すから、どちらの処理を行わせるかを入力数値1番で選択できるようにしてね。


セルフ変数にはこんな感じで名前をつけておいてね。敵情報をピクチャ表示するための設定値に使うわ。


最初にピクチャ表示するための設定値を変数に格納するわ。こうやって最初にセルフ変数で設定してしまえば、後で変更するのが楽だからね。基本的手法よ。
→■変数操作: CSelf10[ピクチャNo.] = 13000 + 0
→■変数操作: CSelf11[表示位置X] = 160 + 0
→■変数操作: CSelf12[表示位置Y] = 20 + 0
→■変数操作: CSelf13[フォントサイズ] = 8 + 0

※この値はあくまで例だから好きに調整していいわよ。


次に表示されている敵情報を消去する処理を作るわ(入力値「消去」でコモンを呼び出した場合の処理ね)。まずは条件分岐を作成。
→■条件分岐(変数): 【1】 CSelf0[表示/消去] が 1 と同じ
→-◇分岐: 【1】 [ CSelf0[表示/消去] が 1 と同じ ]の場合↓
→|■
→◇分岐終了◇


条件分岐の中にはピクチャ消去とイベント処理中断を入力
→■ピクチャ消去:CSelf10[ピクチャNo.] / 0(0)フレーム
→■イベント処理中断


消去するピクチャのピクチャ番号には、変数呼び出し値でセルフ変数10番を指定するのよ。


ここからは敵情報を表示するための処理よ。まずは表示内容をセルフ文字列5番に格納。
→■文字列操作:CSelf5[表示内容] = “\f[\cself[13]]\udb[7:0:0]:\cdb[11:\cself[1]:0] \udb[7:1:0]:\cdb[11:\cself[1]:1] \udb[7:2:0]:\cdb[11:…”


※入力する文字列
\f[\cself[13]]\udb[7:0:0]:\cdb[11:\cself[1]:0] \udb[7:1:0]:\cdb[11:\cself[1]:1] \udb[7:2:0]:\cdb[11:\cself[1]:2] \udb[7:3:0]:\cdb[11:\cself[1]:3] \udb[7:4:0]:\cdb[11:\cself[1]:4] \udb[7:5:0]:\cdb[11:\cself[1]:5]
\udb[8:0:0]:\cdb[12:\cself[1]:0] \udb[8:1:0]:\cdb[12:\cself[1]:1] \udb[8:2:0]:\cdb[12:\cself[1]:2] \udb[8:3:0]:\cdb[12:\cself[1]:3] \udb[8:4:0]:\cdb[12:\cself[1]:4]

この長ったらしい呪文の意味はわかるかしら?


いわゆる「特殊文字」ね。特殊文字を使って各DB項目とセルフ変数を入れ子にして読み取っているの。


ユーザーDB7番「属性名の設定」には属性の名前が格納されているわ。特殊文字「\udb[7:0:0]」なら「物理攻撃」が読み込まれるわ。


ユーザーDB8番「状態設定」は状態異常が設定されている項目ね。「\udb[8:1:0]」を読み込めば「眠り」になるわ。こうやって属性名と状態異常名を読み込んでいるのね。


そして実際の属性耐性と状態異常耐性の値が格納されているのは、前述の通り可変DB11番と12番だったわね。

この値を、選択中の敵スロット番号が格納されているセルフ変数1番を指定する「\cself[1]」と入れ子にして「\cdb[11:\cself[1]:0]」のように記述することで、現在カーソル選択されている敵の耐性値を読み込んでいるというわけ。難しい?

とまぁこんな感じで表示する内容をセルフ文字列5番に格納して、


それをピクチャ表示する。
→■ピクチャ表示:CSelf10[ピクチャNo.] [中心]文字列[\cself[5]] X:CSelf11[表示位置X] Y:CSelf12[表示位置Y] / 0(0)フレーム / パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]


こんな感じ。変数呼び出し値でセルフ変数とセルフ文字列を指定してピクチャ表示しているわ。

これで敵情報を表示するためのコモンはできたわ。なんか説明ばかりで長くなっちゃったから今回はここまで。次回は実際にこのコモンを呼び出して敵情報表示させる処理を作成するわ。

↓前回 続きよー。敵情報を表示させるコモンはできたから、あとはそれを基本システムのコモンから呼び出して実行させるように改造するわ。 コモンイベントを改造してカーソル...