ENEMY.lstを作る

ちょっと応用編。CPUを作って対戦を充実させましょう。 Distance--100--Command--------------------------------------------------COMMENT 100 100 C080[E010[111@]]C020[46p+k#]C030[(4646456p+k+P+K)@]# ; 200 100 E010[111@]C230[(lp+k)@]C032[(k+P+K)@]C130[(N6K)464646@]# ;ガード、受け身、バースト、投げ抜け、よろけ回復 300 100 9 ; Distance ・・・ 相手との距離感。160で相手の中心から自分の中心まで160ドットの距離。 上記の場合、画面半分中距離ぐらい離れている時にこのコマンドを行う。 100 ・・・ 確率だが、『下行との差が実際の数字』となるので注意!  縦に20、30、70、80と並んでいたら、下の行は100-80で20%、上の行は70-30で40%となる。  この場合、実は上の数字が少なくなっている方のコマンドが行われる確率が高くなる。  同じ距離なのに下の確率のほうが低い場合や、途中で別距離が記述されていた場合などは無視される。  同じ距離内で一番下に100%が無い場合は、一番下の行の確率は、100 - その数字 となる。  一番上の行は、その数字 - 0(%) とデフォルトで決まっているようなので、そのままの数字が確率となる。  一行しか書いてない場合で確率を70にしても、必然的に100に強制補正される。 Command 1・・・左下  2・・・下  3・・・右下  4・・・後ろ移動  5・・・1Fディレイ  6・・・前移動  7・・・後ろジャンプ  8・・・垂直ジャンプ  9・・・前方ジャンプ  U,u・・・上方向の後ろ/垂直/前方のいずれか。UP(アップ)の略。小文字も同意味。  R,r・・・前方向のしゃがみ/前/ジャンプのいずれか。RIGHT(ライト)の略。小文字も同意味。  L,l・・・後方向のしゃがみ/後/ジャンプのいずれか。LEFT(レフト)の略。小文字も同意味。  D,d・・・下方向の後ろ/真下/前方のいずれか。DOWN(ダウン)の略。小文字も同意味。  N・・・10フレーム待ち。  n・・・5フレーム待機。行動記号と違い、大文字とは別意味の効果なので注意!  p・・・弱パンチ  P・・・強パンチ  k・・・弱キック  K・・・強キック  +・・・ボタン同時押し  ~・・・ボタン離している状態  !・・・ボタン離した瞬間  _・・・ボタン押している状態  ?・・・何かの行動  ;・・・;以降の文字はコメントとなる ここまではコマンドリストと一緒。この後がアルファ分追加  #・・・#以降のコマンドができるまで待つ  @・・・@以降のコマンドを省略する  ()・・・()以内のコマンドを1F以内で行う。めちゃくちゃなコマンドの場合、最後の文字が実行コマンドとなる  []・・・条件で絞る行動を[]内のもののみとする  E・・・エネミーの動きを指定して条件分岐する。E以降の3個の数字は特別な意味を持つ  C・・・自キャラの動きを指定して条件分岐する E、C後の3つの数字の意味 ・1文字目の「1」:地上にいる ・1文字目の「2」:空中にいる ・1文字目の「3」:立っている ・1文字目の「4」:しゃがんでいる ・2文字目の「1」:攻撃状態 ・2文字目の「2」:防御状態 ・2文字目の「3」:食らい状態 ・2文字目の「4」:非無敵状態 ・2文字目の「5」:打撃攻撃判定有り ・2文字目の「6」:上中段打撃攻撃判定有り ・2文字目の「7」:下段打撃攻撃判定有り ・2文字目の「8」:必殺技キャンセル(2〜4番)或いは通常技が出せる。 ・2文字目の「9」:それ以外のキャンセル(〜1番)或いは通常技が出せる。 ・3文字目の「1」:超必ゲージが1以上ある場合 ・3文字目の「2」:超必ゲージがMAXの時 その他の文字や全角文字、半角カタカナなどは無視されます。 ・エネミーにコンボさせたい場合------------------------------------------------------------ 例 80 80 5P#2KnKN6P ;連続技 motion.lstの方で 立ち大パンチ  の発生が8F、持続が3F、硬直が4F、攻撃レベルが1、キャンセル受付は無し、 しゃがみ大キックの発生が4F、持続が7F、硬直が4F、攻撃レベルが2、キャンセル受付が持続から7F、 立ち大キック  の発生が8F、持続が8F、硬直が8F、攻撃レベルが4、キャンセル受付が持続から12F 立特殊パンチ  の発生が3F、持続が7F、硬直が2F、攻撃レベルが3、キャンセル受付は無し だとしましょう。するとまずmotion.lst内はこうなります。(Mito氏のパズーをサンプルとしています) 260 -1 2 310 0 40 9 0 1 0 0 9 -1 0 0 0 0 0000 10C03900A000 114068014000 000000000000 ;大P 261 -1 2 311 0 40 9 0 0 0 0 9 -1 0 0 0 0 0000 10C03900A000 11406802300A 000000000000 ; 262 -1 2 312 0 40 9 130 3 0 0 9 -1 0 0 0 0 0000 10C03900A000 119062014000 000000000000 ; 263 -1 1 313 0 40 9 0 0 0 0 9 -1 0 0 0 0 0000 10C03900A000 119062019000 000000000000 ; 264 -1 1 314 0 40 9 0 0 0 0 9 -1 0 0 0 0 0000 10C03900A000 119062017000 000000000000 ; 265 -1 3 315 0 40 9 0 0 0 0 4 1 U 5 0 1 0000 10C05F00A000 10E04502A000 10304B02E029 ; 266 -1 2 314 0 40 9 0 0 0 0 9 -1 0 0 0 0 0000 10C03900A000 119062017000 000000000000 ; 267 1 2 313 0 40 9 0 0 0 0 9 -1 0 0 0 0 0000 10C03900A000 119062019000 000000000000 ; 320 -1 4 360 0 41 9 0 1 0 0 9 -1 0 0 0 0 0000 11803A005000 10E014029000 000000000000 ;屈大K 321 -1 7 361 0 41 9 60 0 0 0 3 2 D 5 0 1 0000 10D03A010000 001012045000 000014047000 ; 322 30 4 360 0 41 9 0 0 0 0 9 -1 0 0 0 9 0000 11803A005000 10E014029000 000000000000 ; 370 -1 4 50 0 40 9 130 3 0 0 9 -1 0 0 0 0 0000 10C03900A000 114068014000 000000000000 ;コンボ大K 371 -1 4 331 0 40 9 0 0 0 0 9 -1 0 0 0 0 0000 10E038009000 11C065014000 000000000000 ; 372 -1 8 332 0 40 9 0 1 0 0 2 4 U 2 375 1 0020 118065009000 105036032017 107037034000 ; 373 -1 4 331 0 40 9 0 0 0 0 2 -1 0 0 0 0 0000 10E038009000 11C065014000 000000000000 ; 374 1 4 50 0 40 9 130 3 0 0 9 -1 0 0 0 0 0000 10C03900A000 114068014000 000000000000 ; 375 -1 15 221 0 52 9 0 1 100 0 9 -1 0 0 0 9 0000 10D03700A000 000000000000 000000000000 ;相手操作 376 120 30 221 0 53 9 0 1 0 0 9 -1 0 0 0 9 0000 10D03700A000 000000000000 000000000000 ;永久防止 380 -1 1 310 0 40 9 60 1 0 0 9 -1 0 0 0 0 0000 10C03900A000 114068014000 000000000000 ;コンボ大P 381 -1 1 311 0 40 9 0 0 0 0 9 -1 0 0 0 0 0000 10C03900A000 11406802300A 000000000000 ; 382 -1 1 312 0 40 9 130 3 0 0 9 -1 0 0 0 0 0000 10C03900A000 119062014000 000000000000 ; 383 -1 7 330 0 40 9 0 0 0 0 9 3 U 15 385 1 0020 10C03900A000 102059028000 00C04F02E000 ; 384 1 2 312 0 40 9 0 0 0 0 9 -1 0 0 0 0 0000 10C03900A000 119062014000 000000000000 ; 385 -1 10 221 0 52 9 -600 0 0 1 9 -1 0 0 387 9 1000 10D03700A000 000000000000 000000000000 ;相手操作(吹っ飛び 386 120 10 224 0 52 9 0 0 0 0 9 -1 0 0 0 9 0000 139016031000 000000000000 000000000000 ; 387 -1 10 999 0 43 9 0 8 0 0 9 -1 0 0 0 0 0000 000000000000 000000000000 0000A3008000 ;壁 388 1150 20 999 0 43 9 0 8 0 0 9 3 H 5 389 1 0020000004 000000000000 000000000000 0000A3008000 ; 389 840 1 221 0 53 9 80 1 0 0 9 -1 0 0 0 9 0003 10D03700A000 000000000000 000000000000 ;相手操作(跳ね返り 立ち大パンチ>しゃがみ大キック>立ち大キック>立ち特殊パンチ のように繋がる場合、エネミーにさせる連続技の記述は 80 80 5P#2KnKN6P ;連続技 となります。(距離や%とコメントはどうでもいいですが) ここでそれぞれ何故こうなるのか簡単に解説します。 立ち大パンチ>しゃがみ大キック はキャンセル受付がありませんが、 攻撃レベルと立ち大パンチの硬直、しゃがみ大キックの発生のの関係上、最速で繋がるため 『#』を入れておくと、立ち大パンチが終わったらすぐ2K(しゃがみ大キック) をしてくれます。 しゃがみ大キック>立ち大キック は2KnKとなりますが、nは5Fの待機となります。 しゃがみ大キックの発生が4Fで、(キックボタンを押した瞬間から)5フレ目でキャンセル受付があるので ここでKボタンを押すために、Kとあります。 立ち大キック>立ち特殊パンチ の部分はKN6Pです。Nは10Fの待機となります。 立ち大キックの発生は8Fです。9F目から攻撃となりますが、余裕を持って10F待っています。 10F目ではキャンセル受付が始まっていますので、ここで6Pさせれば、キャンセルしてコンボしてくれます。 『C090#』というのが、「自分が何かキャンセルできる状態になるまで待ち、なったらこの後の行動をする」 というのが理論上そうなるのですが、あまりに列が長くなると何故かしてくれないことがあるため、 エネミーにコンボさせるには、motion.lstを見つつ 発生が何フレであるかを直に見ていかなければなりません。 相手が食らったときのみコンボを続けてほしいのであれば、 『E030』などを使えばいいです。余談ですが、『E030#』としますと、 ミスった場合エネミーが止まってしまう可能性がありますので注意してください。
エネミーは基本的に、食らった時やガードした時にデフォルトの位置に戻って始まります。 例え行動中であっても、途中でエネミーの読み込みを中断されない限りは入力されていきます。 なので、目的の行動に移らない場合は、行動のフレーム中に入力されていることになっていないか、確かめて下さいね。 『C090#』でコンボを継続したい場合は、後の入力が1文字だと受け付けられないことがあるので、 『C090#[(55kk)]』などして、入力を持続させましょう。 ■上手いエネミーの作り方として 画面の長さは320ですが、前提としてキャラの基本衝突矩形が112060012000で、 後ろに16+2、前に16+2で合計36使っていて、四捨五入すると40分の距離を 既に使っていることとなります。 なので、実質使える距離は、320からこの40分を差し引いた280までと、 密着時の自分と相手の前方分16+2を2個足した40からなので、 40〜280となります。 ここから、実質使える280-40=240分を、 近距離、中距離、遠距離の3パターンに区分けした80分を、密着40から足した結果を四捨五入して、 100(下段、中段、投げ、近距離攻撃)、 200(遠距離攻撃)、 300(飛び道具、前方ジャンプ)とすれば、 場合分けした強いエネミーを簡単に作れるでしょう。 ■まとめ(よく使う拡張機能) C100#[5P] ;着地待ち C020[l6p+k] ;ガード中(ガーキャン) C030[lp+k@] ;食らい中(受け身) C080#[236p] ;本体自由待ちorヒットorガード時キャンセル C090#[(624k)] ;コンボ、連携、キャンセル C001[2624P] ;ゲージ確認、超必 E200[(623P)] ;相手空中(対空) E010[111] ;相手攻撃中(ガード) E030[999] ;エリアル 個人的にはC090#をよく使い、超必時にはE030と組み合わせて使います。 どーしてもわからない!メンドくさい場合は、よっとまんさんのてきとーえねみーを使いましょう。 enemy.lstを自動生成してくれます。