不具合・対策まとめ

目次

はじめに

説明

スクロールバーを見ていただければ分かると思いますが、このページは分量が多いです。
そのため、知りたいことを目次の利用やブラウザの検索機能(Ctrl+F)を用いて探すことをオススメします。
間違いや抜けているものなどを発見された場合は画面右上のCONTACTからお知らせください。

不具合(エラー落ちや意図したとおりに動かないなど)の原因の探し方

不具合の予防

エラー落ち

エラーが発生しMUGENが落ちたとしても多くの場合はエラーメッセージが表示されます。

エラーメッセージ基礎

下から順に読んでいけば多くの場合は問題の箇所と内容が分かるかと思います。
  • error_message.png(2505 byte)

    例:ステートコントローラー誤表記

↑の画像例では下から順に
どのプレイヤーにあるエラーか
どこに保存されているキャラか
どのファイルか
どのStatedefか
どのStateか
どのようなエラーか(空白の事もある)
を表記しています。
この場合はplaysndと書くところをplaysnとしか書いていないため発生したエラーでした。
基本的にこのような単純な記述ミスによるエラーは上で紹介したcnslintで原因が特定できます。
記述ミス以外のエラーとしては以下のようなものがあります。

特殊なエラーメッセージ

1行の256文字以降は無視されるため存在しないトリガーを書いたとみなされます。
256文字まででちょうど記述として問題がない場合はエラー落ちしないが想定外の動作の原因になりえますので、ご注意ください。
また新MUGENではこの制限が緩和されています。

CommandNameが127種類以上ある。
error_message_126command.png(2370 byte)

Player has too many commands. Only 128 unique commands labels allowed.

[Command]は128ラベルまで、と表示されますが実際は126ラベルまでしか使えません。

ラベルはCommandNameであり、CommandNameが同一のものは1ラベルとして数えられます。

(数が合わないのは隠しCommandNameが2つ存在する?)

Float型の数値に/または%演算を行う。
error_message1.png(2021 byte)

Type mismatch detected

winMUGENでは問題の箇所が表示されないので、/または%で検索して確認、

または新MUGENでは問題の箇所まで表示されるので新MUGENで起動、

といった方法で問題の箇所を探すのが良いと思われます。

1フレーム内に個別StateDefを2502回以上読み込む。
error_message_2500loops.png(2431 byte)

State machine stuck in loop (stopped after [StateNo] for [name])
Check your states for infinite ChangeState loops.
画像はStateDef200に原因があることを示しています。

ただし、後述のStateDef52とStateDef140の仕様が関係している場合のみ1F内にStateDefを何度読み込んでもエラーメッセージが出ません。
参考:StateDef52とStateDef140の仕様による無限ループによるフリーズ。
常時監視ステート以外のStateDefで513以上のStateを読み込む
error_message_512controllers.png(1502 byte)

state [StateNo] can only have max of 512 controllers
画像はStateDef200に原因があることを示しています。

一部のパラメータでトリガーリダイレクトの()内に数字以外を使う。
下記のエラメが出ずに強制終了する事があるようです。

補足:エラー落ち発生の例
Hitdefで、
damage = Enemy(!1),win , 0

damage = Target(var(3)),win , 0

damage = PlayerID(56+1),win , 0
などとするとエラー落ちします。
ただし、このdamageの場合はgetpowerとgivepowerがあればエラー落ちが防げます。

error_message_parameter_redirect.png(2267 byte)

Fatal: Player [name] ([PlayerID]) in state [StateNo]: malformed expression
画像はStateDef200に原因があります。

このエラーの原因となるパラメータはHitDef、Projectile、ReversalDefとWidthの下記に示す一部のパラメータのみです。

ただし原因となるパラメータに対応したパラメータを全て書くことでこのエラーを防げるようです。

このエラーの理由は推測ですが、省略した場合は対応したパラメータが原因のパラメータから値を決定するため、参照時にエラーが起きているのではないかと思われます。


折りたたみに、このエラーを起こすパラメータと防ぐパラメータを載せています。
ここをクリックすると折りたたみを開閉します。
HitDef
原因のパラメータ 対応したパラメータ
damage(第1引数のみ) getpower
givepower
pausetime guard.pausetime
ground.slidetime guard.slidetime
guard.slidetime guard.ctrltime
ground.hittime guard.hittime
guard.ctrltim airguard.ctrltime
ground.velocity(第1引数のみ) guard.velocity
guard.velocity ground.cornerpush.veloff
air.velocity airguard.velocity
down.velocity
ground.cornerpush.veloff air.cornerpush.veloff
down.cornerpush.veloff
guard.cornerpush.veloff
guard.cornerpush.veloff airguard.cornerpush.veloff
fall なし

Projectile
(Hitdefと同じパラメータはHitDefの項目を参照。)
原因のパラメータ 対応したパラメータ
projhitanim projremanim
projremanim projcancelanim

ReversalDef
(他のHitdefと同じパラメータはHitDefの項目を参照。)
原因のパラメータ 対応したパラメータ
pausetime guard.pausetime

Width
原因のパラメータ 対応したパラメータ
value なし

HitDef,Projectile(,ReversalDef)のfallとWidthのvalueには
対応したパラメータが見つかりませんでした。

ただし、Widthは代替書式のvalueではなく、通常の書式であるedgeとplayerではこのエラーが発生しなかったため、こちらを利用すると良いでしょう。

fallに関する小ネタ(折りたたみ)
意味は無いですが、fallが原因でこのエラー落ちをする時、
air.fallパラメータを、
air.fall=0+enemy(!1),life*0
のように
air.fall=x[+-*/%]リダイレクト(変数or演算),トリガー[+-*/%]y
の形式で書いていると、
エラーメッセージを出させずエラー落ちします。

Assert failure簡易一覧

エラーメッセージに「Assert failur ~と表示される場合の一覧です。
エラーメッセージ 原因
Assert failure in array line 100 animelemtime(0) >= 0 を使っている
Assert failure in array line 110 存在しないアニメ番号を指定した
Assert failure in spr-lib.c line 437 詳細不明
Assert failure in array.c line 437[lunaの倉庫]
Assert failure in array.c line 437[虹格な海底宝物庫]
Assert failure in array.c line 437続き[lunaの倉庫]
Assert failure in spr-lib.c line 516 詳細不明
Assert failure in spr-lib.c line 560 assert failure in spr-lib.c line 560の正体[lunaの倉庫]
Assert failure in spr-lib.c line 601 詳細不明
Assert failure in charsel.c line 3162 cfgファイルのAI.RandomColor=1とした状態で
defファイルのPal.Defaultsを指定していないキャラが
アーケードまたはサバイバルに出現

フリーズ

「複数のターゲットを保持した状態」でTarget~のステコン(ただしTargetDropを除く)のパラメータにtargetリダイレクトを使用するとフリーズ。
(TargetFacingのIDではこのバグは発生しないが、これは単にこのパラメータが機能していないため。)
対策1:targetリダイレクトの値を一度変数に保存し、パラメータにはその変数を使う。
対策2:triggerにNumTarget=1を入れることで複数ターゲット所持時は実行しないようにする。
対策3:TargetDropで保持しているターゲットを指定の1つのみにしておく。

ヘルパーがDestroySelfを実行した直後にそのヘルパーがヘルパーもしくはExplodを出すとフリーズ。
原因:DestroySelf実行後の記述も実行されるため。
対策1:なるべくDestroySelfをそのStateDefの一番下に書く。
対策2:DestroySelf以下のステコンのトリガーにPlayerIDExist(ID)を加える。

HitDefのsnapパラメータに変数や演算子を使用している時にShift+F4でリロードするとフリーズ。
通常の読み込み時は正常に読み込めますが、デバッグなどが面倒になるのでオススメしません。
TargetBindなどを使ったほうが良いでしょう。

StateDef52とStateDef140の仕様による無限ループによるフリーズ。
これらに限らずMUGENにデフォルトで存在するcommon1.cnsに書いてあるステートは特殊な仕様が多いので、下手に弄ると不具合が生じます。
原因:StateDef52とStateDef140の仕様が関係している場合のみ2500ループエラー落ちしません。
フリーズはこのループから抜け出ることが出来ないため起きます。
説明:仕様によるループは下表の3種類の自動ステート読み込みにより起きます。

自動ステート移動(読み込み)の条件 読み込み先StateDef ESC
F12
ループ中の
PrevStateNo
timeが
リセット
Physics = A && Pos y >= 0 && Vel y >= 0 52 無効 52
StateNo = 140 && StateType = S,C,A &&
経過Time >= 「その時点でのAnimの総表示時間」以上
StateTypeに応じて0,11,51 有効 140 される
StateNo = 140 && StateType=L &&
経過Time >= 「その時点でのAnimの総表示時間」以上
140 無効 140に来る前の
StateNo
されない

1番目:キャラが空中状態(Physics = A)かつ地面より下にいる(pos y >= 0)かつ下に落ちている(vel y >= 0)を満たす場合、自動的にStateNo = 52に移動しStateDef 52を読み込みます。
デフォルトの通りStateDef52のPhysicsをA以外にすることで対策出来ます。
2番目:読み込み先は140から移動する際のStateTypeで決まり、立ち(S)なら0へ、しゃがみ(C)なら11へ、空中(A)なら51へ移動し読み込みます。
他の2つと異なり移動した先から140に戻るようなステート移動のステコンが無ければ起きないので、発生した際は140に戻るステート移動が無いかを調べてください。
3番目:条件が2番目のものと似ていますが、140を読み込み直し、Timeが0にリセットされず、ESCキーとF12キーが効かないという違いがあります。

「その時点でのAnimの総表示時間」などのより細かい部分は折りたたみ内で説明しています。
  ここをクリックで折りたたみを開閉します。
折りたたみ内で2番目と3番目の条件である「その時点でのAnimの総表示時間」について説明します。
  ここをクリックで折りたたみを開閉します。
Animの総表示時間は基本的にAirファイルで設定した各ElemのTimeの合計ですが、
-1がある場合は-1を含めてそれ以降のElemのみのTimeの合計になります。
この値よりStateNo = 140での経過Timeが大きければ条件を満たすので、値が0以下だとTime = 0でも移動条件を満たす事になります。
なお、この「その時点でのAnimの総表示時間」はデバッグ情報の3段目のTIMEの2番目の数字に表示されています。
また実際に表示されるElemは、Time設定が負数のElemは表示されず、それ以下のElemのTimeが1以上なら0まで引く効果もあります。
わかりにくいと思うので下に例を示します。(食らい判定は省略しています。)
[Begin Action 140] 120 ,0, 0,0, 3; 3F
200 ,0, 0,0, 1; 1F
210 ,0, 0,0, -4;
9000,0, 0,0, 3;
400 ,0, 0,0, -1;
9000,1, 0,0, 3; 1F
210 ,3, 0,0, -1;
200 ,2, 0,0, 2; 1F
230 ,0, 0,0, -4;
410 ,0, 0,0, 10; 6F
この場合、「その時点でのAnimの総表示時間」は-1+2-4+10=7となります。
つまり、StateNo = 140でこのアニメを表示している際に経過Timeが7を超えていれば、条件をみたす事になります。
また、実際に表示されるElemのTimeはコメントの部分に書いたフレーム数になります。(表示されないものは省略)
(ちなみに、AnimTime = 0を満たすのは最後の410,0の1F目です。)

折りたたみ内で各無限ループを実行しかかった時間を簡単に計測した結果を示します。
  ここをクリックで折りたたみを開閉します。
記述が多ければ時間がかかるようなので、なるべく早くなるように可能な限り記述を省略しています。
1番目:かかった時間は約4秒
検証に使用した記述
[Statedef 52]
physics = A
[state ]
type = changestate
value = 210
trigger1 = var(3) := var(3) + 1
trigger1 = var(3) > 10000000
trigger1 = var(3) := 0 || 1
2番目:4~5秒
検証に使用した記述(140への移行前のStateでAnim総表示時間が-1のAnimに変更しておく)
[Statedef 0]
[state ]
type = ChangeState
value = 140
trigger1 = PrevStateNo = 140
trigger1 = var(3) := var(3) + 1
[Statedef 140]
[state ]
type = ChangeState
value = 210
trigger1 = var(3) := var(3) + 1
trigger1 = var(3) > 10000000
trigger1 = var(3) :=0 || 1
3番目:3~4秒
検証に使用した記述(140への移行前のStateでAnim総表示時間が-1のAnimに変更しておく)
[Statedef 140]
type = L
[state ]
type = changestate
value = 210
trigger1 = var(3) := var(3) + 1
trigger1 = var(3) > 10000000
trigger1 = var(3) :=0 || 1

3番目が一番軽いように感じられましたが、処理を増やして重くなった場合は変わるかもしれません。

2番目の条件でステート移動を確認する場合の注意点。
Type=C&&Ctrl=1&&下キー入力無しの状態で1F経過すると別の仕様により12に移動するため11へ移動しません。
(1F経過が必要なため無限ループは起きません。)
StateNo=12に移動する条件を満たしている場合はフレームの最初に12に移動?
  検証例を開閉します
下記の記述で実験した所、
Time=0ならデバッグ情報ではStateNo=200→StateNo=52となりvar(3)=160になったので、200→140→52と読み込んだことが分かる。
Time=1ならデバッグ情報ではStateNo=200→StateNo=140(1F)→StateNo=12となりvar(3)=140であったので、200→140→(1F経過)→12と読み込んだことが分かる。
よって、StateNo=12に移動する条件を満たしている場合はフレームの最初に移動していると思われる。
[Statedef 200]
anim = 200
[State ]
type = ChangeState
ctrl = 1
value = 140
trigger1 = AnimTime = 0
[Statedef 140]
type = C
physics = S
ctrl = 1
anim = 140 ;(Anim=140は140,0,0,0,5)
[State ]
type = null
trigger1 = var(3) := 140
[State ]
type = StateTypeSet
physics = A
trigger1 = Time = 0 or 1 ;ここを変更して実験
trigger1 = var(3) := 160
[Statedef 11]
physics = A
[State ]
type = null
trigger1 = var(3) := 150
[Statedef 12]
type = S
physics = S
anim = 12
[State ]
type = ChangeState
trigger1 = AnimTime = 0
value = 0

2番目の条件を満たしループする場合、52の自動ステート読み込みは条件を満たしていても働かない?
  検証例を開閉します
下記の記述で実験した所、
physics = Aならデバッグ情報ではStateNo=200→StateNo=210となりvar(3)も210だったので、52へ移動すること無く、200→140→51→140→51→210と移動したことがわかります。
[Statedef 200]
anim = 200
[State ]
type = ChangeState
trigger1 = AnimTime = 0
value = 140
[Statedef 140]
type = A
physics = A
anim = 140 ;(Anim140はElemが140,0,0,0,-1)
[State ]
type = Null
trigger1 = PrevStateNo = 200
trigger1 = var(3) := 140
trigger2 = PrevStateNo = 51
trigger2 = var(3) := 210
[Statedef 51]
type = A
physics = A
[State ]
type = changestate
value=var(3)
trigger1 = var(3) = 140 || var(3) = 210
[Statedef 52]
type = S
physics = S
ctrl = 0
anim = 47
[State ]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1

キャラのdefファイルによるエラーメッセージ

defファイル基礎
  • selectファイル登録するキャラのdefファイルの拡張子は必ずdefでなければMUGENに読み込まれない。
  • 半角スペースとTab文字は空白として扱われる。
  • [Info]、[Files]、[Arcade]の3分類を書く順番を変えても問題ない。
  • さらにこれらの分類の中のままなら、項目の並び順を変えても問題がない。
  • 下記の表の項目と異なる行に「;」無しでコメントなどを自由に書いてもエラー落ちしないがオススメはしない。
defファイルの項目によるエラー落ち
同タイミングでのエラー落ちの場合は、表の上にある方のエラメが優先的に表示される。
(項目を書く順番を変えてもエラメが表示される順番は変わらなかった。)
項目名 MUGEN起動時落下 項目を作らなかった時
(試合開始時落下)
備考
[Info] Can't access Info
name displaynameが書かれておらず、""が存在しない
String value for name must be in quotes
Cannot find parameter: name
displayname ""が存在しない
String value for displayname must be in quotes
displaynameの項目を作らなかった場合
nameがそのまま表示される
versiondate キャラ選択時
先頭文字が半角数字以外だとエラメなしで落ちる
mugenversion キャラ選択時
先頭文字が半角数字以外だとエラメなしで落ちる
author
pal.defaults 先頭文字が半角数字以外だとエラメなしで落ちる cfgファイル
[Arcade]
AI.RandomColor=0
に設定時
各種アーケード・サバイバルモードで試合開始時に、
Assert failure in charsel.c line 3162
[Files] 項目を作らなかった場合
エラメなし
以下ファイル名が違う時のエラメ
(試合開始時落下)
st0 while precaching
st9 while precaching
cmd while precaching Can't open file
cns while precaching Can't open file
st while precaching Can't open file
stcommon while precaching
sprite 項目を作らなかった場合
エラメなし
(拡張子がsff以外の時も)
Can't load ファイル名
anim while precaching Can't load ファイル名
sound (拡張子がsnd以外の時も)
Can't load ファイル名
pal1 Can't load ファイル名
pal12 Can't load ファイル名
ai
[Arcade]
intro.storyboard
ending.storyboard

その他のエラー落ち原因

[StateDef ~]は"["から"]"を"[" "]"含めて64バイト文字(半角なら64文字)以内でなければ起動時にエラメ無しで終了。
(なお新MUGENなら130バイト以内)

AirファイルにElemが一切登録されていないAnimが存在する。
このAnimをChangeAnimなどで呼び出した場合、Assert failure in array.h line 110でエラー落ちしますが、
このようなAnimが存在するだけで読み込み時に強制終了することがあります。
落ちないこともあるので細かい条件は不明ですが、なるべくこのようなAnimは消しておいたほうがいいです。

ステートコントローラの必須パラメータを省略。
省略した場合落ちるステートコントローラはステートコントローラの必須パラメータ一覧を参照してください。

ParentVarAdd、ParentVarSet、VarAdd、VarSetでVar(x)やFvar(x)。
パラメータの場合のvar(x)やfvar(x)は↑のように先頭の文字を大文字にするとエラー落ちします。
VarAdd、VarSetにあるSysvar(x)とSysvar(x)は問題ありません。(Parent系ではsys系を扱えません。) (トリガーでのVar(x)やFvar(x)は問題ありません。)
同じ内容:大文字を使えないパラメータ

TeamModeトリガーの引数Single、Simul,Turnの後ろに半角スペースがなしで演算子。
上記の引数の後ろに&や|などの記号を使う場合、半角スペースが無ければ演算子も含めて引数だと判断されてしまいエラー落ちする。
ただし、(TeamMode = Single)の用に半角カッコで囲んでいる場合は半角スペースが無くてもエラー落ちしない。

主な参考元

熄 癈人氏の熄の箱庭を参考にさせていただきました。
また勝手ながら折りたたみに上記のリンク先の補足を書いています。
ここをクリックすると開閉します
5.valueにtargetのリダイレクトを使う
補足先:「複数のターゲットを保持した状態」でTarget~のステコン(ただしTargetDropを除く)のパラメータにtargetリダイレクトを使用するとフリーズ。
Target~以外のステコンでは確認できず、しかしTarget~の機能している全パラメータで確認出来ました。

7.ループ(statedef 140,52)
補足先:StateDef52とStateDef140の仕様による無限ループによるフリーズ。
StateDef52のループ条件はPhysics = A && Pos Y >= 0 &&Vel Y >= 0。
StateType = Lだと異なるループをする。

8.elemの存在しないアニメの実行
補足先:AirファイルにElemが一切登録されていないAnimが存在する。
不安定ながらも読み込み時に強制終了することがありました。

22.Hitdefのパラメータにて複数のリダイレクトを使う
補足先:一部のパラメータでトリガーリダイレクトの()内に数字以外を使う。
細かい条件と対策があります。

23.DisplayToClipboard及びAppendToClipboardでProjContactを使うかProjのIDを指定しない
パターン1.の原因はProjContactの書式はIDを省略する形でも「ProjContact = 値 」の形で使わなければならないためです。
つまりパターン1もパターン2もToClipboard系とは関係無く、トリガーの書式に沿っていないことによるものです。

デバッグ表示

Ctrl+Dで画面左下にdebug_0.png(1101 byte) のように出ます(cfgファイルの設定で最初から表示)。
下で各項目の解説をしていますが、1行目を除きそれ以降の行は対象としたプレイヤーの情報を表示します。
最初はp1プレイヤーですが、Ctrl+Dを押す毎にp2(>p3)(>p4)(>ヘルパー)>表示消去とトグルします。

デバッグ情報の内容

1段目:MUGEN自体の情報
FRAMES:GameTimeを表示。()内の数字はFPS値です(初期状態なら60FPSが普通)。
VRET:垂直同期のON/OFF。Ctrl+Vでトグル。
SPEED:SpeedupのON/OFF。Ctrl+Sでトグル。cfgファイルの[Debug]のSpeedupで初期設定。
SKIP:描画フレームのスキップ数。Aは「Auto」の意。Ctrl+Fでトグル。
2段目:対象としているプレイヤーを表示
NameとID(このIDはトリガーのIDとは別物)を表示。
3段目:プレイヤーの情報を表示
ACTIONID:プレイヤーの現在のAnimを表示
SPR:現在表示されているスプライトのSFFファイルでのグループと番号
ELEMNO:現在のAnimのAnimeElemNoと最大値
TIME:現在のAnimのTimeと最大値
4段目:プレイヤーの情報を表示
STATE NO:StateNo
CTRL:Ctrl
Type:StateType
MoveType:MoveType
TIME:現在のStateで経過したTime
5段目(、6段目):クリップボード表示
DisplayToClipboardやAppendToClipboardを使うことで任意の情報を表示することが出来ます。

クリップボード

クリップボード基礎
現在はクリップボードを利用せずとも窓無限の十徳ナイフを利用することで全変数を手軽に確認できます。
このため数の制限や書き直しなどの手間という点でクリップボードは劣りますが、好きなタイミングの変数を確認することができるという利点があります。
これはデバッグの際に不具合により変数の値が変わらず、そもそもそのステートを読み込んでいるのかを確認する際に、そのステートの直下からクリップボード表示することで確認が出来ます。
なので知っておいて損はありません。

クリップボードは最大1行76文字の2段表示できます。(77文字を超えると自動改行されます。)
DisplayToClipBoardとAppendToClipboardを使うことで、
文字列、変数やトリガーやそれらを用いた計算結果などの値を表示できます。

DisplayToClipBoardとAppendToClipboardの違いは、
前者は使用するたびにクリップボードを上書きしますが、
後者はクリップボードに追加します。
また、ClearClipboardを使うとクリップボードの文字を全て消去します。
表示できる数値は1つのステコンでは最大5つまでの制限がありますが、
AppendToClipboardを複数使うことで6以上表示することができます。
改行する場合は改行したい箇所で\nを入力してください。
デフォルトのフォントでは小文字も大文字で表記されます。
クリップボード表示例
例:var(1)、fvar(1)、プレイヤーのPalNo、プレイヤーのScreenPosを表示
[State -2, DisplayToClipBoard]
type = DisplayToClipBoard
text = "var(1) = %d , fvar(1) = %f\nPalNo = %d , ScreenPos = %f\n"
params = var(1) , fvar(1) , PalNo , ScreenPos y
trigger1 = 1
ignorehitpause = 1

注意事項:
場合によってはステートの位置やトリガーを変える必要があります。
(不具合を調べる場合は怪しいと思う[state ]の直下でDisplay(Append)ToClipBoardを使用する、 Target,IDの様にリダイレクト参照する場合は警告文の発生を防ぐためtriggerに警告文にあるようなトリガーを追加する
など。)

textで用いられている%dや%fの位置に数値が表示されます。
%dはint型(整数)の数値を、%fはfloat型(小数)の数値を表示する場合に使います。
誤った型で表示しようとした場合、その数値とそれ以降の数値が正常に表示されない場合があります。

表示できない文字としては「"」、「%」、「;」の3種類の記号があり、
「\」は\\とtextに書く事で表示できますが、この直後が最後の"だとエラー落ちします。(\は日本語環境では¥)

クリップボード豆知識
豆知識は知ってたら多少便利なことがあるかも?程度で長いため折りたたんでいます。
開閉はここをクリックしてください。
\t
textパラメータでの\nが改行するように空白を表示する特殊な文字です。
効果はテキストエディタでTabを使われている方は分かると思いますが、
半角スペースと同じように空白を表示します。
ただし空白の終わりが必ず行頭から数えて4文字の整数倍になります。
つまり、text = "a\ta"とするとa aと3文字空きますが、text = "aaa\ta"とするとaaa aと1文字しか空きません。
一応表示を揃えるのに便利かもしれませんがあまり意味はありません。

デバッグ文字の色変更
[State -2,デバッグ文字色変更]
Type = AllPalFX
Trigger1 = !Ishelper
Time = 1
Color = 256
Add = 0,0,-256
Ignorehitpause = 1
これを常時監視ステート(StateDef-1,-2,-3)に入れるとwinMUGENではデバッグの文字色のみ変わります。
triggerを調整することで指定した時のみ色を変えることで気づきやすくすることもできます。
Addの数値を変更することで色を変更可能です。
ただし、第1引数(赤)は画面全体にかかるため極端な値にすると画面が見えなくなります。
(新MUGENでは第2,3引数も画面全体に作用してしまいます) 白文字では見づらいと思った場合はご利用ください。

C言語を使っている方や学んだ方は察しが付くと思いますが、ほぼprintf()関数と同じです。
フォーマット指定子
フォーマット指定子は上で書いた
%d(decimal number):int型。
%f (floating-point representation):float型。
以外にも、
%o(octal number):int型。8進数表示(MUGEN1.0では使用不可能)
%x、%X(hexadecimal number):int型。16進数表示(MUGEN1.0では使用不可能)
%e、%E(exponent notation):float型。10の乗数表示
%g、%G:float型。%fか%eと同様のなるべく短い表記になる。
や、
%i(integer):int型。%dと同じ
%u(unsigned):int型。負の値は補数表現。(MUGEN1.0では使用不可能)
%c、%C(character):整数値を文字で表示。参考:ASCII文字コード(MUGEN1.0では使用不可能)
%p(pointer):ポインタ表示。16進数。(MUGEN1.0では使用不可能)
%n:バグの元(MUGEN1.0では使用不可能)
があります。
場合によっては分かりやすくなることもありますが、基本的には必要ないでしょう。
(他の文字はそのまま文字が表示されますので意味がありません。)
(例外:%w,%Fは文字も表示されず、%s,%Sはエラメなしのエラー落ち)
(%sの落ちる理由が気になる方はこちらへ:%s[製作日記])

フォーマット指定子オプション
フォーマット指定子にはオプションを設定することができます。
%[フラグ][最小フィールド][ . ][精度][h | l | L]フォーマット指定子
まず最小フィールドは表示する最小桁数を指定します。
例えば%5dとすると5桁未満の数値は5桁になるように左に空白が入ることで右詰め表示になります。
そしてフラグは「-」、「+」、「0」、「 」、「#」があり、一部を除き組み合わせることができます。
「-」は最小フィールドが指定されている場合、空白が右に入り左詰め表示となります。
「0」は最小フィールドが指定されている場合、空白ではなく0で埋めます。
ただし[-]が指定されている場合は「-」が優先され、「0」は反映されません。
「+」は符号付き数値が正の場合でも数値の前に+付きで表示します。
「 」は半角スペースですが、符号付き数値が正の場合でも数値の前に空白を1つ入れて表示します。
ただし、「+」が指定されている場合が「+」が優先され、「 」は反映されません。
「#」はフォーマット指定子が%oの時は数値の前にoを、%xと%Xの時は0xをつけます。
性質上MUGEN1.0では使えません。
最後に精度はフォーマット指定子によって効果が変わります。
%dでは指定数値未満の桁数の場合左に0を埋めます。つまり%05dと%.5dは同等です。
%fや%eや%Eでは小数点以下の表示桁数を指定します。
%gや%Gでは全体の最大桁数を指定します。

フォーマット指定子に関するその他
残りのh(short)、lとL(long)は%hd、%ld、%Ldのように使えるのですがMUGENでは使う意味が無さそうです。(MUGEN1.0では使用不可能)
int型は-2147483648~2147483647(%h*は-32768~32767)
float型は有効数字5桁?
%fはデフォルトでは小数点第桁6位まで表示、%45fで小数点第桁45位まで表示可能。
%e、%E、%g、%Gは小数点第39位までは正常に表示できることもある(小数点第40位まで0が続くと表示が狂う)

警告文

人によって呼び方が変わる場合もありますが、
ここではエラーメッセージはMUGENが動作を停止した際に表示にされるメッセージで、
警告文は対戦画面でデバッグ表示をした際に左上に表示されることのあるメッセージのことです。

警告文を見ることで動作していない記述に気がつくこともできます。
例えば、存在しないStateNoを指定しているせいで外見では分からないが正常に動いていない、など。
他の警告文を大量に出しているとそういった動作に関わる部分にも気が付けなくなります。
また大量に表示している場合は処理が重くなることもあります。
警告文を出していなければ、すぐに気づく事ができるのでなるべく警告文は消しましょう。

警告文は
[GameTime]: WARNING: PLAYER [Name{'s HELPER}] ([Player ID]) IN STATE [StateNo]:
警告文の原因表示
の2行で表示されます。({}内はヘルパーのステートの時のみ表示)
注意点
  • 警告文は最後に改行されないため、次の警告がそのまま続けて表示されます。 そのため前の警告文と[GameTime]が繋がって見える事に注意してください。
  • 常時監視ステート(-1、-2、-3)による警告文は、現在いるStateNoが表示されます。
    なので表示されているStateNoに原因が見つからない場合は常時監視ステートを見ましょう。
  • 新しい警告文は下から順に追加され、最大8行まで表示されます。
  • 全プレイヤーのものが共通で表示されます。
    そのため相手が出しているように見えて、自分のミスが原因で出していることがあります。ご注意ください。
  • 一度表示された警告文はMUGEN自体を終了するかF8キーでのみ消去できます。
主な警告文一覧
表示される警告文 原因や対策など
HAS NO ROOT 原因:
本体がRootをリダイレクト参照している。
対策:
本体用とヘルパー用のステートを分けて作る。
Root,リダイレクトを使用する前にtriggerで!IsHelperを実行し、
Rootが存在しないならRoot,リダイレクトを使用しないようにする。
注意:ヘルパーから召喚されたヘルパーがRoot,リダイレクトを使う際に、その親ヘルパーが消去されていた場合もRoot,リダイレクト出来ない。
(注意:&&を使用して同じ行にまとめてしまうと判断する前に参照してしまうので警告文が出る。)
対策例
例1:trigger1=!IsHelper
   trigger1=Root,palno
例2:triggerall=!IsHelper
   value=Root,var(10)
HAS NO PARENT 原因:
Parentをリダイレクト参照しているが存在しない。
対策:
本体用とヘルパー用のステートを分けて作る。
Parent,リダイレクトを使用する前にtriggerでParentDist x || ParentDist yを実行し、
Parentが存在しないならParent,リダイレクトを使用しないようにする。
この対策法の注意点:親と子ヘルパーが完全に重なった時Parent,リダイレクト出来なくなる。
(注意:&&を使用して同じ行にまとめてしまうと判断する前に参照してしまうので警告文が出る。)
対策例はRoot,リダイレクトの場合を参考に。
HAS NO HELPER [ID] 原因:
Helper(ID),リダイレクトで参照しているがそのIDを持つHelper存在しない。
またはHelperが存在しない場合にHelper,リダイレクトを用いると、HAS NO HELPER 0となる。
対策:
Helper(ID)を使用する前にtriggerでNumHelper(ID)を実行し、
Helper(ID)が存在しないならHelper(ID),リダイレクトを使用しないようにする。
(注意:&&を使用して同じ行にまとめてしまうと判断する前に参照してしまうので警告文が出る。)
対策例はRoot,リダイレクトの場合を参考に。
HAS NO TARGET WITH HIT ID [ID] 原因:
Target(ID)をリダイレクト参照しているが存在しない。
対策:
Target(ID),リダイレクトを使用する前にtriggerでNumTarget(ID)を実行し、
Target(ID)が存在しないならTarget(ID),リダイレクトを使用しないようにする。
(注意:&&を使用して同じ行にまとめてしまうと判断する前に参照してしまうので警告文が出る。)
対策例はRoot,リダイレクトの場合を参考に。
HAS NO 0-TH ENEMY 原因:
Enemy(0)、EnemyNear(0)をリダイレクト参照しているが存在しない。
通常の対戦時は出ないが、常時監視ステートで使っているとサバイバルのリザルト画面で発生する。
対策:
Enemy(0),、Enemy,またはEnemyNear(0),、EnemyNear,リダイレクトを使用する前にtriggerでNumEnemy>0を実行し、
Enemy(0)、EnemyNear(0)が存在しないなら上記のリダイレクトを使用しないようにする。
(注意:&&を使用して同じ行にまとめてしまうと判断する前に参照してしまうので警告文が出る。)
対策例はRoot,リダイレクトの場合を参考に。
HAS NO 1-TH ENEMY 原因:
Enemy(1)、EnemyNear(1)をリダイレクト参照しているが存在しない。
よくある原因としてはタッグ用の記述がシングル戦でも読み込まれ発生している。
対策:
Enemy(1)、EnemyNear(1)リダイレクトを使用する前にtriggerでNumEnemy=2を実行し、
Enemy(1)、EnemyNear(1)が存在しないならEnemy(1)、EnemyNear(1),リダイレクトを使用しないようにする。
(注意:&&を使用して同じ行にまとめてしまうと判断する前に参照してしまうので警告文が出る。)
対策例はRoot,リダイレクトの場合を参考に。
HAS NO 0-TH PARTNER 原因:
Partnerをリダイレクト参照しているが存在しない。
対策:
Partner,リダイレクトを使用する前にtriggerでNumPartnerを実行し、
Partnerが存在しないならPartner,リダイレクトを使用しないようにする。
(注意:&&を使用して同じ行にまとめてしまうと判断する前に参照してしまうので警告文が出る。)
対策例はRoot,リダイレクトの場合を参考に。
TRIED TO ACCESS NON-EXISTENT PLAYER WITH ID [ID] 原因:
Playerをリダイレクト参照しているが存在しない。
対策:
PlayerID(ID),リダイレクトを使用する前にtriggerでPlayerIDExistを実行し、
PlayerID(ID)が存在しないならPlayerID(ID),リダイレクトを使用しないようにする。
(注意:&&を使用して同じ行にまとめてしまうと判断する前に参照してしまうので警告文が出る。)
対策例はRoot,リダイレクトの場合を参考に。
VAR INDEX OUT OF RANGE 原因:トリガーのvarで番号を0~59以外で使用している。
FVAR INDEX OUT OF RANGE 原因:トリガーのfvarで番号を0~39以外で使用している。
DIVISION BY ZERO 原因:/または%使用時に0で割っている。
EXPRESSION TRUNCATED TO INTEGER 原因:ステートコントローラのオプションのInt型を使用する箇所でFloat型を使用している。
TRIGGER ARG TRUNCATED TO INT 原因:トリガーの引数としてInt型を使用する箇所でFloat型を使用している。
CHANGED TO INVALID STATE ~ 原因: 指定したStateNo~が存在しない。
CHANGED TO INVALID ACTION ~ 原因: 指定したAnim~が存在しない。

以下ステートコントローラパラメータに関する警告文です。
表示される警告文 原因
AfterImage
ILLEGAL TIME FOR AFTERIMAGE TIMEに-2以下
ILLEGAL FRAMEGAP FOR AFTERIMAGE FrameGapに0以下
ILLEGAL TIMEGAP FOR AFTERIMAGE TimeGapに0以下
ILLEGAL LENGTH FOR AFTERIMAGE Lengthに0以下
AfterImageTime
SET ILLEGAL AFTERIMAGETIME Timeに-2以下
AllPalFX、BGPalFX、PalFX
INVALID PALFX TIME Timeに-2以下
INVALID PALFX COLOR Colorに-1以下、257以上
INVALID PALFX MUL VALUE MULに-1以下
BindToTarget、TargetBind
Set ILLEGAL TARGET BINDTIME Timeに-2以下
ChangeAnim、ChangeAnim2
CHANGED TO NEGATIVE ANIMELEM ELEMに-1以下
ChangeState
ATTEMPTED CHANGE TO NEGATIVE STATE Valueに-1以下
ATTEMPTED CHANGE TO NEGATIVE ANIME Animに-2以下
EnvColor
SET ILLEGAL ENVCOLORTIME Timeに-3以下または2147483647以上
EnvShake
NEGATIVE FREQ FOR ENVSHAKE Freqに-1以下
Explod
ILLEGAL EXPLOD ANIMNO Animに-1以下
NEGATIVE EXPLOD ID IDに-1以下
ILLEGAL POSBINDTIME FOR EXPLOD BindTimeに-2以下
NEGATIVE EXPLOD RANDOM PARAM Randomに-1以下
ILLEGAL REMOVETIME FOR EXPLOD RemoveTimeに-3以下
ILLEGAL SHADOW COLOR Colorに-2以下
ExplodBindTime
ILLEGAL ID TO EXPLODBONDTIME IDに-2以下
ILLEGAL EXPLODBINDTIME BindTimeに-2以下
GameMakeAnim
MADE NEGATIVE GAMEANIM Valueに-1以下
NEGATIVE RANDOM PARAM FOR GAMEMAKEANIM Randomに-1以下
Helper
NEGATIVE HELPER ID IDに-1以下
ILLEGAL HELPER STATENO StateNoに-1以下
ILLEGAL SUPERMOVETIME SuperMoveTimeに-1以下
(mugen1.0では警告文が出ないが機能していない)
ILLEGAL PAUSEMOVETIME PauseMoveTimeに-1以下
(mugen1.0では警告文が出ないが機能していない)
HitDef、Projectile(HitDefと重複したもの)、ReversalDef
ASSIGNED NEGATIVE HITID IDに-1以下
SPECIFIED NEGATIVE HIT PRIORITY Priorityに-1以下
SPECIFIED NEGATIVE PAUSETIME PauseTime第1引数に-1以下
SPECIFIED NEGATIVE P2SHAKETIME PauseTime第2引数に-1以下
NEGATIVE GUARD.P1PAUSETIME Guard.PauseTIME第1引数に-1以下
NEGATIVE GUARD.P2SHAKETIME Guard.PauseTIME第2引数に-1以下
ILLEGAL SPARK NO SparkNoに-3以下
ILLEGAL GSPARK NO Guard.SparkNoに-3以下
SPECIFIED ILLEGAL SOUND GROUP HitSound第1引数に-2以下
SPECIFIED ILLEGAL SOUND NO HitSound第2引数に-2以下
SPECIFIED ILLEGAL GSOUND GROUP GuardSound第1引数に-2以下
SPECIFIED ILLEGAL GSOUND NO GuardSound第2引数に-2以下
NEGATIVE GROUND.P2SLIDTIME Ground.SlideTimeに-1以下
NEGATIVE GUARD.P2SLIDTIME Guard.SlideTimeに-1以下
NEGATIVE GROUND.P2HITTIME Ground.HitTimeに-1以下
NEGATIVE GUARD.P2HITTIME Guard.HitTimeに-1以下
NEGATIVE AIR.P2HITTIME Air.HitTimeに-1以下
NEGATIVE GUARD.P2CTRLTIME Guard.CtrlTimeに-1以下
SPECIFIED ILLEGAL P2BINDTIME snapの第4引数に-2以下
NEGATIVE AIR.P2CTRLTIME Air.CtrlTimeに-1以下
SPECIFIED NEGATIVE P1STATENO P1SteteNoに-2以下
SPECIFIED NEGATIVE P2STATENO P2SteteNoに-2以下
SPECIFIED NEGATIVE RECOVERTIME RecoverTimeに-1以下
NEGATIVE DOWN.P2HITTIME DownHitTimeに-1以下
SPECIFIED NEGATIVE CHAINID ChainIDに-2以下
SPECIFIED NEGATIVE NOCHAINID NoChainID第1引数に-2以下
SPECIFIED NEGATIVE NOCHAINID2 NoChainID第2引数に-2以下
INVALID PALFX TIME Palfx.Timeに-2以下
INVALID PALFX MUL VALUE PalFX.Mulに-1以下
NEGATIVE FREQ FOR ENVSHAKE EnvShake.Freqに-1以下
NEGATIVE FREQ FOR ENVSHAKE Fall.EnvShake.Freqに-1以下
HitOverRide
ILLEGAL OVERRIDE SLOT 0 ASSUMED Slotに-1以下、8以上
ILLEGAL HITOVERRIDE TIME Timeに-2以下
ILLEGAL HITOVERRIDE STATENO. StateNoに-2以下
MakeDus
MAKEDUST SPACING <= 0 Spacingに0以下
ModifyExplod
ILLEGAL POSBINDTIME FOR EXPLOD BindTimeに-2以下
NEGATIVE EXPLOD RANDOM PARAM Randomに-1以下
ILLEGAL REMOVETIME FOR EXPLOD RemoveTimeに-3以下
ILLEGAL SHADOW COLOR Colorに-2以下
ParentVarAdd、ParentVarSet
SET PARENTVAR OUT OF RANGE varなら-1以下または60以上、fvarなら-1以下または40以上に値を代入
(対象がfvarであっても警告文にはVARと表示される。)
Pause
SET ILLEGAL PAUSETIME Timeに0以下
SET ILLEGAL PAUSEMOVETIME MoveTimeに -1以下またはパラメータのTime+1以上
SET ILLEGAL ENDCMDBUFTIME EndCmdBufTimeに-1以下
PlaySnd
ILLEGAL PLAYSND GROUPNO Value第1引数に-2以下
ILLEGAL PLAYSND SNDNO Value第2引数に-2以下
ILLEGAL PLAYSND CHANNEL. Channelに-2以下、32以上
NON-POSITIVE FREQMUL. FreqMulに0以下
Projectileのみ
NEGATIVE PROJECTILE ID ProjIDに-1以下
ILLIGAL PROJANIM ProjAnimに-2以下
ILLIGAL PROJHIT ACTIONID ProjHitAnimに-2以下
ILLIGAL PROJREMOVE ACTIONID ProjRemAnimに-2以下
ILLIGAL PROJCANCEL ACTIONID ProjCanselAnimに-2以下
ILLIGAL PROJREMOVETIME ProjRemoveTimeに-2以下
NEGATIVE # OF PROJECTILE HITS ProjHitsに0以下
NEGATIVE PROJECTILE MISS TIME ProjMissTimeに-1以下
ILLEGAL SHADOWCOLOR ProjShdowに-2以下、256以上
RemoveExplod
REMOVAL OF ILLEGAL EXPLOD ID IDに-2以下
SelfState
ATTEMPTED SELFSTATE TO NEGATIVE STATE Valueに-1以下
ATTEMPTED CHANGE TO NEGATIVE STATE Animに-2以下
SndPan
ATTEMTED TO PAN ILLEGAL CHANNEL NUMBER -1 Channelに-1以下、32以上。
(最後の数値は指定した数値が表示される)
StopSnd
STOPPED ILLEGAL CHANNEL NUMBER -2 Channelに-2以下、32以上。
(最後の数値は指定した数値が表示される)
SuperPause
SET ILLEGAL PAUSETIME Timeに0以下
NEGATIVE SPARK ANIMENO IGNORE Animeに-2以下
SET ILLEGAL PAUSEMOVETIME MoveTimeに -1以下またはパラメータのTime+1以上
NEGATIVE P2DEFMUL FOR SUPERPAUSE P2DefMulに0未満
SET ILLEGAL ENDCMDBUFTIME EndCmdBufTimeに-1以下
TagIn
ATTEMPTED CHANGE TO NEGATIVE ANI PartnerStateNoに-1以下
TargetState
ATTEMPTED TARGETSTATE TO NEGATIVE Valueに-1以下
VarAdd、VarSet
SET VAR OUT OF RANGE VAR(-1) varなら-1以下または60以上、fvarなら-1以下または40以上の番号に値を代入
(対象がfvarであっても警告文にはVARと表示される。)
(最後の数値は指定した数値が表示される)
VarRandom
RANDOMIZED VAR OUT OF RANGE (-1) vに-1以下、60以上
(最後の数値は指定した数値が表示される)
VarRangeSet
SET ILLEGAL VAR RANGE (-1-59) First以上Last以下が-1以下または60以上に被る
(最後の数値は指定した数値が表示される)


かませ氏がかませの究極系で公開されているキャラ「GogetaLSSJ」に同梱の「エラメ.txt」を参考にさせてもらいました。

ステートコントローラに関する不具合など

ステートコントローラの必須パラメータ一覧

省略時の欄の「エラメ:」はエラー落ち、「強制終了」は強制終了、を読み込み時に起こします。
ステコン名 必須パラメータ 省略時
AfterImageTime Time 1
AngleAdd Value 0
AngleMul Value 0
AngleSet Value 0
AppendToClipboard Text エラメ:Text not specified for appendtoclipboard
AssertSpecial Flag エラメ:AssertSpecial flag parameter missing
AttackDist Value エラメ:汎用
AttackMulSet Value エラメ:汎用
ChangeAnim Value エラメ:汎用
ChangeAnim2 Value エラメ:汎用
ChangeState Value エラメ:汎用
CtrlSet Value エラメ:汎用
DefenceMulSet Value エラメ:汎用
DisplayToClipboard Text エラメ:Text not specified for displaytoclipboard
EnvShake Time 0
Explod Anim 0
HitAdd Value エラメ:汎用
HitBy Value エラメ:汎用
HitDef Attr 動作しない
HitDef HitFlag MAF
HitDef GuardFlag ガード不可能
HitOverride Attr 動作しない
LifeAdd Value エラメ:汎用
LifeSet Value エラメ:汎用
NotHitBy Value/Value2 エラメ:汎用
ParentVarAdd Value/var(番号)/fvar(番号) 強制終了
ParentVarAdd V/FV Valueを読み込まない
ParentVarSet Value/var(番号)/fvar(番号) 強制終了
ParentVarSet V/FV Valueを読み込まない
Pause Time 1
PlayerPush Value エラメ:汎用
PlaySnd Value エラメ:汎用
PowerAdd Value エラメ:汎用
PowerSet Value エラメ:汎用
Projectile Attr 動作しない
ReversalDef Reversal.Attr エラメ:Missing reversal.attr parameter
SelfState Value エラメ:汎用
SndPan Channel エラメ:Missing channel parameter
SprPriority Value 0
StopSnd Channel エラメ:Missing channel parameter
TagIn StateNo エラメ:汎用
TargetFacing Value 0
TargetLifeAdd Value エラメ:汎用
TargetPowerAdd Value エラメ:汎用
TargetState Value エラメ:汎用
Trans Trans Default?
VarAdd value/var(番号)/fvar(番号) 強制終了
VarAdd v/fv valueを読み込まない
VarRandom v エラメ:汎用
VarRangeSet Value/FValue エラメ:VarRangeSet value not specified.
VarSet Value/var(番号)/fvar(番号) 強制終了
VarSet V/FV Valueを読み込まない
Width Edge/Player/value エラメ:汎用

読み込みに条件のあるステートコントローラ

ステートコントローラ 条件
AfterImageTime AfterImage実行中
BindToParent 実行者がヘルパー
BindToRoot 実行者がヘルパー
BindToTarget ターゲット所持中
ModifyExplod Explodが存在
ParentVarAdd 実行者がヘルパー
ParentVarSet 実行者がヘルパー
TagIn パートナーが存在(存在しない場合TagOutに似た動作になる)
TargetBind ターゲット所持中
TargetDrop ターゲット所持中
TargetFacing ターゲット所持中
TargetLifeAdd ターゲット所持中
TargetPowerAdd ターゲット所持中
TargetState ターゲット所持中
TargetVelAdd ターゲット所持中
TargetVelSet ターゲット所持中

読み込みに条件のあるパラメータ(ID指定を除く)

ステートコントローラ 条件のあるパラメータ 条件
ModifyExplod Pos、Facing、VFacing、Vel、Accel、Random PosTypeを指定している。
(FacingとVFacingは読みこむが、
Facingは-1、VFacingは-1へのみ変更可)
SndPan Pan、AbsPan 指定ChannelでPlaySnd実行中

大文字を使えないパラメータ

ParentVarAdd、ParentVarSet、VarAdd、VarSetの代替書式であるvar(x)/fvar(x)は、
それぞれ先頭の文字に大文字を使うとエラーメッセージを出して終了します。
ただし、2文字目以降は大文字を使えるのでvAR(x)やfVAR(x)は可能です。
なお、VarAdd、VarSetのみで扱えるSysvar(x)/Sysfvar(x)は大文字を問題なく使えます。
また、var(x)/fva(x)/sysvar(x)/sysfva(x)をトリガーとして使う際は問題ありません。
(ちなみにAfterImageTimeやExplodBindTimeやWidthの代替書式のvalueも大文字でも問題ありません。)

その他の不具合の原因

StateNo移動原因

ステートコントローラの使用によるStateNo移動
(ステートコントローラ自体の説明は省略させてもらいます。)
ChangeState、SelfState
実行者Valueで指定したStateNoに移動
HitDef、Projectile(、ReversalDef)
Hit時に実行者P1StateNoで指定したStateNoに移動
Hit時に対象者P2StateNoで指定したStateNoに移動
Hit時にP2StateNoが指定されていない場合、対象者がStateType=LかつPos Y=0なら5080に移動
Hit時にP2StateNoが指定されていない場合、Ground.TypeがHighもしくはLowの時、対象者がStateType=Sなら5000、Cなら5010、Lなら5070に移動(またCtrl=0になる)
Hit時にP2StateNoが指定されていない場合、Air.TypeがHighもしくはLowの時、対象者がStateType=Aなら5020に移動
Hit時にP2StateNoが指定されていない場合、Ground.Type(Air.Type)がTripの時、対象者5070に移動
HitOverride
Hit時に実行者StateNoで指定したStateNoに移動
TargetState
対象者Valueで指定したStateNoに移動
TagIn
実行者StateNoで指定したStateNoに移動
対象者PartnerStateNoで指定したStateNoに移動
内部処理によるStateNo移動
特定StateNoでのみ起きるStateNo移動
  • [条件]
    StateNo=140 && 経過Time>=「その時点でのAnimの総表示時間」以上 && StateType=S,C,A
    [移動先]
    StateType=Sなら0、Cなら11、Aなら51
  • [条件]
    StateNo=140 && 経過Time>=「その時点でのAnimの総表示時間」以上 && StateType=L
    [移動先]
    140
  • [条件]
    StateNo = 20 && FもしくはBキーの入力無しの状態で1F経過( && HelperならKeyCtrl = 1)
    [移動先]
    0
  • [条件]
    StateNo=5110 && 残り倒れ時間が0になる
    [移動先]
    5120
    [備考1]残り倒れ時間
    倒れ時間とは、最大がそのキャラのConst(Data.LieDown.Time)で設定される時間である。
    倒れ時間はStateNo=5110 && MoveType=Hを満たしている際に1F毎に1減少する。
    つまりStateNo=5110にいてもMoveType!=HならStateNo=5120に移動しない。
    ただしConst(Data.LieDown.Time)=0であれば残り倒れ時間が常に0なのでMoveTypeに関わらずStateNo=5110からStateNo=5120即座に移動。
    また残り時間はMoveType!=Hになる度にリセットされる。
    [備考2]残り倒れ時間の短縮
    StateType=L なら移動するまでの残り時間が、
    キーを押す度に (押した時の残り時間-押した時の経過フレーム+1)*3/4
    キーを離す度に (離した時の残り時間-離した時の経過フレーム)*3/4
    に短縮される。
    移動するまでの残り時間の短縮が起きるのはMoveType=H && StateType=LならStateNoに関わらず発生する。
    つまりStateNo=5110以外のStateNoで残り倒れ時間が短縮された場合でも、MoveType=Hを満たしたまま最終的にStateNo=5110に移動するとこの短縮は有効である。
  • [条件]
    トレーニングモード && StateNo=5150
    [移動先]
    90F経過で5120に移動
キー入力によるStateNo移動
  • [共通条件]
    StateType=S && Ctrl=1( && HelperならKeyCtrl=1)
    [入力キーと移動先]
    /$D, 10
    /F , 20
    /B , 20
    /$U, 40
  • [条件]
    StateType=A && Ctrl=1 && 現在の空中ジャンプ回数がConst(Data.AirJump.Num)以下 ( && HelperならKeyCtrl=1)
    [入力キーと移動先]
    /$U, 45
    [備考]
    回数リセットはStateType=Sになった時?
  • [条件]
    StateType!=L && Movetype=I && Ctrl = 1 && InGuardDist && AssertSpecialのNo~Guard系無し
    [入力キーと移動先]
    /$B, 120
その他の原因によるStateNo移動
  • [条件]
    StateType=C && Ctrl=1 && $Dキー入力無しの状態で1F経過
    [移動先]
    12
  • [条件]
    Physics=A && Pos y>=0 && Vel y>=0
    [移動先]
    52
  • [条件]
    ガードした時
    [移動先]
    StateType=Sなら150、Cなら152、Aなら154
    [備考]
    Ctrl=0になる
  • [条件]
    Life=0 かつ MoveType!=H
    [移動先]
    5030
  • ラウンド開始時はStateNo=5900
  • RoundState=2になってからライフバーのctrl.time経過後、StateNo=0に移動
  • RoundState=4になってからライフバーのover.wintime経過後StateNoは、勝利時180、引き分け時175、敗北時(&&alive!=0)170に移動
  • コンティニュー画面開始時はStateNo=5500
  • デバッグキーのCtrl+IでStateNo=0に移動

その他

Randomは同一フレームでも一つ一つが違う値になります。(同じ値を使いたい場合は変数に保存。)
イントロをスキップするとそれまでに出ていたヘルパーやExplodやProjectileなどがすべて消去されます。

inserted by FC2 system