改造ポケモン研究所-そして伝説へ-

改造ポケモンの作成とツールの紹介をしています。

スポンサーサイト  --/--/--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


[ --/--/-- --:-- ]

スクリプト【フラグによる条件分岐】  2009/11/28

複雑そうに見えて結構簡単。

16 RR RR XX XX (フラグNo.への値の代入)のフラグNo.の値が変更された時の条件分岐です。

6A 5A 21 NN NN MM MM 06 04 PP PP PP 08 QQ 6C 02

キャラクターに話しかけた時、セリフを表示するスクリプトから始まらない場合は基本として 6A 5A を前に付けます。そうしないとスクリプトの性質上、話しかけられたキャラクターが【こっちを向いてくれない】+【周りをロックできない】ということになります。なので、フラグによる条件分岐スクリプトを使う際には 6A 5A が必須です。

NN NN
フラグNo.の値を入れます。

MM MM
フラグNo.へ代入した値を入れます。

PP PP PP
MM MM の値が一致したときに飛ぶアドレス。

QQ
MM MM の値が一致していない時に実行されるスクリプト。



■とりあえず流れを説明します。

どこか別の場所で 16 11 40 01 00 (フラグNo.への値の代入) が処理され、 11 40 のフラグNo.に 01 00 という値が代入されたとします。

その場合のスクリプトは
6A 5A 21 11 40 01 00 06 04 PP PP PP 08 QQ 6C 02
となります。

MM MM の値が一致しているので PP PP PP のオフセットに飛びます。仮に 123456 というオフセットに 0F 00 @@ @@ @@ 08 09 04 6C 02 (セリフスクリプト)が格納されているとすれば
6A 5A 21 11 40 01 00 06 04 56 34 12 08 QQ 6C 02
となり、セリフスクリプトが処理されます。

0F 00 @@ @@ @@ 08 09 02 6C 02
ではなく
0F 00 @@ @@ @@ 08 09 04 6C 02
になっている理由は
6A で周りをロックするスクリプトが先頭に入っているので、6A の解除として 6C を使います。この為、セリフスクリプトには 6A 5A と同じ効力を持つ 02 を使う必要がなく 04 で充分だということです。

最後は QQ の値です。フラグNo.への値の代入がされていない場合に処理されます。仮にセリフスクリプトを入れてみましょう。
6A 5A 21 11 40 01 00 06 04 56 34 12 08 0F 00 @@ @@ @@ 08 09 04 6C 02
最終的には↑のようなスクリプトになります。

スクリプトの発動条件がキャラクターに話しかける場合ではないときは 6A 5A を省略しても構いません。その場合はスクリプトが始まる一番最初に 6A を付けて下さい。

ね、簡単でしょ?

[ 2009/11/28 03:33 ]
アクセスカウンタ
掲示板
改造ポケモン研究者たちの掲示板(閉鎖)
カレンダー
09 | 2017/10 | 11
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -
相互リンク


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。