SSブログ

メイプルのことがんばって更新します。たまに他のことも更新

スクリプトの組み方2 人IDと人NOについて [ポケモンROM改造]

人IDと人NOについて話す前に
まず最初に理解していただきたいのが人IDと人NOは別物ということです

ではどう違うのかというと
人IDというものがポケモンの世界全体の中でつけられた番号で
人NOというものは一つのマップの中でつけられた番号です

これから実例を用いてお話します

2fcf8e0bb98f6dbc.jpg

上の画像はオーキド博士の情報を見ています
見ていただけると分かるように人IDが002C、人NOが3ですね

●基本的なこと●
マップ上にあるイベントのことをオブジェクトと呼びますが
基本的にオブジェクトといえば人のことだと考えていただいて結構です

●人IDについて●
ファイアレッドを最初に始めた時はマップ中央にいるオーキド博士は見えないですよね?
これは人IDがオフになっているからです
基本ゲームを始めたときは人IDは全てオンの状態です
これをオフにしたりオンにしたりしてゲームに彩りを加えるわけです
※オブジェクトが見えている状態をオン,見えていない状態をオフ(人IDが消えている)と呼んでいます
※オーキド博士はマップスクリプト(これに関しては難しすぎます よほど根気がないと習得不可だと思われます)
  で人IDがあらかじめオフになっています

●人NOについて●
またファイアレッドの話になるのですが、オーキドが主人公を研究所に連れて行くシーンがありますよね?
それは一致する人NOのオブジェクトを動かすというスクリプトを使っています

このように人IDと人NOには役割の違いが見られます
これで基本的な違いは分かっていただけたと思います


では人IDや人NOを用いたスクリプトの使い方を説明します

●基本的なこと●
hh hh と書かれているところには人IDを逆順で入力します
※例えば人IDが 1503なら[15 03]→[15←→03]→03 15と入力
hnと書かれているところには人NOを16進数で入力
※例えば3なら03と入力
※新しい人IDを使いたいなら1000番台を使ってください

●オブジェクトの消去の仕方●
基本はこの 29 hh hh 02 というスクリプトを使います
このスクリプトは一致する人IDを消去するスクリプトです
ですがこのスクリプトは画面内に消したいオブジェクトがあると
一回画面を切り替えてからでないと反映されません
だからこのスクリプトは消したいオブジェクトが違うマップにいるときに使います

では画面内に消したいオブジェクトがあるときはどうするかというと
53 hn 00 02 というスクリプトを使います
このスクリプトは一致する人NOのオブジェクトを即座に消去するスクリプトです
※人IDを設定している場合は同じIDの物も消去対象になります

●オブジェクトの復活の仕方●
2A hh hh 02を使います
これは実行しているスクリプトが終わると復活します
他に55 hn 00 02 というスクリプトを使うときがあります
これは一時的に復活させるときに使います

ここまでは基本編です
これからは応用的な使い方を話そうかと思います

●オブジェクトの移動●
4F hn 00 MV MV MV 08 51 00 00 02というスクリプトを使います
MV MV MV は移動コードが書かれているオフセットを逆順に入力してください
移動コードは全部書くのは大変なので某研究所を参考にしてください
※hnをFFにすると主人公が移動します

●人IDを利用した条件分岐●
人IDは人だけにつけるものではありません
人につけていない(つけていても可能)IDをオンにしたりオフにしたりして、条件分岐ができます
2B hh hh 06 01 SS SS SS 08 ss 02 というスクリプトを使います
人IDがオンならssのスクリプトを実行してオフならSS SS SSのスクリプトを実行します
※ssには任意のスクリプトを入れてください
※SS SS SSには実行させたいスクリプトのオフセットを逆順に入力してください


スクリプトを組むにあたって
まず聞く前に使ってみてください
案ずるより生むが易しと昔の人が言っていたように
実際に使ってみないと分かる物も分かりません
色々と試行錯誤しながらがんばってください!

 

人IDは値によって効果が違うのでその解説

ID 005C これは全国図鑑の入手を指している
     ちなみに図鑑を全国図鑑にするには
     これ25 6F 01 02をつかう
     なのでこのIDを消しても全国図鑑には
     ならない
     このIDはレインボーパスの入手フラグ

ID 0034 フジ救出で消滅
ID 00AD オツキミ山~アジトロケット団共通ID
ID 0053 アジトサカキ・シルフ共通ID(初めからきえている)

ID 1000 普通のIDで未使用
~1FFF
ID 2000 ある程度歩くとランダムに復活エメラルドなどの
~2FFF  きのみに使われてる
ID 3000 しらべてない
ID 4000 レポートをで復活する
~4FFF  (その画面に復活させたIDがあっても画面を切り替えるまで復活しない)
ID 5000 画面切り替えで復活する
~5FFF  画面の切り替えのスクリプトは97 ss 02
     ssには↓の数値を
    00 暗くなった画面を元に戻す。
    01 画面を暗くする。
    02 画面がフラッシュする。
    03 画面が白くなる。
ID A000 ID C000 ID F000 レポートで復活(ID 4000と一緒)
ID 7000 ID D000 画面切り替えで復活(ID 5000と一緒)

漏れている可能性があるので要注意

4/8追記:あやめさんの言うとおりです
      ちなみにとは1000番台は全部OK
      ということです。
      すなわち、ID 1000は1FFFまで
      使えるというわけです
2/28追記:記事の一部を書き換え 

 

改造関連だぜ!

29 hh hh 02
これは人IDを消去するスクリプトです
具体的には人を消して二度と出てこないようにします
hh hhは人IDです(人IDについては今度ふれます)

これを応用すると
ランニングシューズやジムバッジの
入手ができます

ランシュ
29 2F 08 02

バッジ
20 08 グレーバッジ
21 08 ブルーバッジ
22 08 オレンジバッジ
23 08 レインボーバッジ
24 08 ピンクバッジ
25 08 ゴールドバッジ
26 08 クリムゾンバッジ
27 08 グリーンバッジ

この値をhh hhの部分にいれてください!

あ!、それとスクリプトを合体させるときは
最後の02はけしてねMA=K"からのおねがいだよ!

例.台詞+グリーンバッジ入手
0F 00 SS SS SS 08 09 02 29 27 08 02

SS SS SSは台詞のオフセットを逆順に!
ちなみに台詞単体のスクリプトは
0F 00 SS SS SS 08 09 02 02

となるから覚えておこう!


nice!(0)  トラックバック(0) 
共通テーマ:ゲーム

nice! 0

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。