おはようございます。
紋章の竜姫パッチを作ってる時に地獄を見た命令群があったのでここに記しておきます。もっと賢い書き方はあると思うので、知っている方は教えていただけると幸いです。
分岐イベなんて二度とやらねえわ…
— ちきふく (@Tikihuku) 2021年1月12日
こんなことつぶやいてるけど
はい。問題の命令群ですね。
これは分岐メニューを出し、選択した側のルートに進む方式です。エイリーク編・エフラム編と原理は同じ。
まあ画像で出すのはかんたんなのですが…これを組むのに死ぬほど時間をかけました。
たかが2時間
この命令の内容を文字で示すなら
分岐メニューを出す
↓
選択した側(ベルンなら1、グラドなら0)を判定
↓
本当にそっちにするかを問う
↓
「はい」なら確定、「いいえ」もしくはBボタンでメニューに戻る
・・・という流れなのですが、こんなのを組むのに手間取っていたわけですね。
あはは。
てこずった訳としては
条件IDの設定が難解であること。
LavelとGotoの配置に悩みました。こんなのかんたんやん!と思うでしょう。
私には難しかったわけですよ。
なぜ苦労したのか、それはGotoを間違えて配置して選択肢に関係なくメニューに逆戻りしたり、イベントが終わったら戦闘マップに逆戻りしたり、分岐したのに、もう片方が作動してしまったりなど・・・
まあ分かりにくい、もしくはわからない!という方のために、私のにわか知識でもふりまいとこうかなと思います。
まずBEQとBNEですが、
BEQは一致しているなら、ラベルへ飛びます。
BNEは一致していないなら、ラベルへ飛びます。
このラベルへ飛びます。の意味はラベルへ飛んだらそのラベルの上にあるイベントをBEQ、BNE命令の下から、LABELまでを順番にこなしていきます。
逆に、BEQで一致していない、BNEで一致しているなら、LABELまで飛んだあと、その下のイベントを順番にこなします。
一致とか言われてもなんやねん!! という方にちょっと補足。
例えばチキというユニットが神竜石というアイテムを持っているか、というイベントを組もうと思います。
持っていること前提でイベント組むならBEQの一致する命令、持っていないこと前提でイベントを組むならBNEの一致しない命令で組めばいいわけです。
だいたいはこう組めばいいですね。テンプレートにもあるけど
判定する命令
BEQもしくはBNE(条件IDを指定する)
イベントの中身
条件がTかFでイベントが変わるならGotoのIDを上で指定したもの以外にする
2番目に指定した条件ID
Fだった時のイベント
Gotoの条件IDと同じにする
文字じゃ分かりにくいと思うので画像でも。
このイベントの内容としては、
・ユニットID0x1のチキが、アイテムID0x68の神竜石を持っているか判定する
・BEQ(持っているならLABEL0x0の上のイベントを作動する)
XのメモリスロットはCで固定です。変えてはいけません。
・持っているならテキスト0x8C4を表示し、チキがたいまつを手に入れる。
・持っていないならテキスト0x8C6を表示するだけで終了する。
というものです。尺が長すぎましたね。
Imm BEQ(BNE)は直前に決定した数値を判定します。
ぶっちゃけこれに関しては私もにわか知識をふりまけるほどでもないです。
テキストに使うエスケープシーケンス@0018のYes/No分岐の時、Imm BNEを使い、0x1を判定値に使ったら
「はい」を選択したら一致する、「いいえ」を選択したら不一致という意味になります。はいは0、いいえは1です。
これはいっぱい使って慣れましょう
後半どうでもいいことばかり並べてしまいましたが、前半の苦労を重ねた画像だけでも見ていただければ幸いございます・・・・
紋章の竜姫のパッチはもうしばしお待ちいただきたい。