■Stateファイル【ステート定義ファイル】
動作を決定するステートの定義を行うファイル。
Commonステートを管理するStCommonもStateファイルの一種。
Common用合わせて12個+1個(Cmdファイル)のファイルまで指定できる。
※読み込むファイルの中にはステート記述が1つも無い場合、エラーで落ちる。
Stateファイルの中身
- ステートの種類
- 番号ステート:0以上のステートのこと。
- キャラ全員はT-/StateNoを持つ
- 基本毎フレーム、当する番号のステートを読み込む。
- ステート番号はInt形数値として扱われているので上限値は恐らく2147483647。
- 常時監視ステート:-3,-2,-1ステートのこと。詳しくは該当ページ参照。
- StateNoとは関係なく、基本毎フレーム番号ステートの前に読み込む。
- ステートを奪われている場合は、-3,-1ステートは読み込まない。
- ※Pause,SuperPauseでの停止中などの処理については検証不足
- 多分、キャラの処理がスキップされ、一切読み込まれない?
■ステート定義
- [Statedef XXX]でXXXに書かれた番号のステートの宣言を行う。
- もちろん数字以外使えない。また-3以上の番号しか使えない。(上限不明)
- 同じ番号のステートが複数ある場合、上側にあるステートの記述のみが使われる。
- 別々のファイルで同じ番号のステートがある場合、ファイルごとの優先度に従う。ファイルの一覧参照。
- ステートの範囲は宣言行から他のステート宣言などが行われるか、
そのファイルの終わりまで。一応[command]の宣言でも終わる。
- ステートには必ず1個以上ステートコントローラーを記述しなければならない。
- なおStファイルには必ず1個以上のステートを記述しなければならない。
- Statedefのオプション
- このオプションにはほぼ全て対応するステートコントローラーがある。
- 内容の詳しいことは該当ページを参照。
- これらはステート移動の実行後番号ステート読み込み時に1度だけ読み込む。
- ステート移動が起きればその都度読み込むが、ステート移動をしなければ読み込まない。
- 性質上常時監視ステートでは使えない。
- Type=U:T-/StateTypeの指定。省略時:Sのため、省略しないほうが良い。
- S、C、A、L:それぞれのStatetypeになる。
- U:変更せず、直前までのStateTypeを継続させる。
- Movetype=U:T-/Movetypeの指定。省略時:I、攻撃・くらいステートでは要注意。。
- I、A、H:それぞれのMovetypeになる。
- U:変更せず、直前までのMoveTypeを継続させる。
- Physics=U:Physicsの指定。省略時:N。通常、基本的に省略しない。
- S、C、A、N:それぞれのPhysicsになる。詳しくはVelとPhysicsのページ参照。
- U:変更せず、直前までのPhysicsを継続させる。
- Type(StateType)、MoveType、Physicsは、SC-/StateTypeSetとほぼ同じ。
- Persist系・直前のステートの情報を維持する。省略時0
■Lv1-記述例・補足・注意点
- ステートの番号が重複した場合
- 同じファイル同士での重複は先に、上側に記述されている方が優先される。
- ファイル同士の場合は「St」「St0~9」「Cmd」「StCommon」の順で優先。
- Common1.cnsを読み込んでも、同じ番号のステートをStで書いておけば、
Commonステートを使わずキャラ側の固有Commonを使用できる。
- 優先されたステート1組のみを読み込み、それ以外の重複ステートは無視される。
- StateDefのオプション読み込みのタイミング
- StateDefのオプションはステート移動した後1度だけ読み込む.
- 攻撃のPauseTimeでの停止中は読み込みが保留される。
- PauseTime適応中にステートを移動した場合、PauseTime終了後に実行される。
- その関係上T-/MoveContact系のリセットタイミングはPauseTime終了後になる。
- ステート番号が変更される処理
- 詳しくはフレーム処理のページも参照。
- 試合開始時点で「StateNo=0、Ctrl=1」になる。詳しくははFile-/MUGEN設定ファイルを参照。
- RoundState=2(試合中)であっても厳密にはこの処理が行われるまでは試合開始前。
- この移動処理はステート処理の開始時点・キャラの処理の前に行われる。
- 特定の状況においてMUGEN側の処理で変更される。詳しくはCommonステートを参照。
- ステート処理の開始時点・キャラの処理の前に行われるもの
- Ctrl=1での基本動作処理。立ち・歩き・屈み・ジャンプ・空中ジャンプ。
- 試合終了後の勝利・敗北・引分けステートへの移動処理。
- StateNo=5110での起き上がり処理。
- 攻撃の処理時点で行われるもの
- 攻撃をくらった時の汎用くらいステートへの移動処理。
- そのキャラのステート処理終了時点で行われるもの
※ステート移動後ステート処理を再度行う※
- ステートコントローラーの実行による移動処理。
- ステートコントローラーの機能発動による移動処理。
※攻撃を受ける側は汎用くらいステートへ飛んだ後にステート変更をする※
- ※検証不足
- 番号ステートでのChangeStateでも自動振り向きが発生する関係上、
- オプションのtype指定などを省略してしまうと、
- 自動振り向きの条件が満たされることがあり、思いがけず振り向くケースがある。
- 特に迂回専用のステートで起きやすいため、注意したい。
+
|
記述例・Common |
記述例・Common
[Statedef 0] type = S physics = S sprpriority = 0
[State 0, 1] type = ChangeAnim trigger1 = Anim != 0 && Anim != 5 trigger2 = Anim = 5 && AnimTime = 0 ;Turn anim over value = 0
[State 0, 2] type = VelSet trigger1 = Time = 0 y = 0
[State 0, 3] ;Stop moving if low velocity or 4 ticks pass type = VelSet trigger1 = abs(vel x) < 2 trigger2 = Time = 4 x = 0
[State 0, 4] ;Are you dead? type = ChangeState trigger1 = !alive value = 5050
- StateDefのオプションで、Type=S、Physics=Sを指定。
- Movetypeが省略されているため、Movetype=Iになる。
- ステートコントローラーは4つ指定されている。
- ちなみに、[State X, X]はそれぞれの数値に設定する必要はない。
- ただし構文のエラーで落ちた場合、
そこに書かれた名称が表示されることもあるため、 なるべく区別しやすいように名前をつけておくと良い。
なおステートが次のステートの宣言やファイルの終わりまで続くのと同様、
ステートコントローラー自体も、次の宣言までが範囲となっている。
分かりやすいよう記述はまとめるべきだが。
|
最終更新:2015年09月29日 16:51