;10:48 2012/01/15 2を製作開始。 ;18:17 2012/01/15 基本形はできた。 ;18:49 2012/01/15 start→s ;19:14 2012/01/15 細かい部分の修正完了 ; 5:23 2012/01/16 テンプレのままだとsボタンで63f用設定のが暴発してしまうようになってた; ;17:43 2012/03/08 ループステートの不備修正 ; 3:13 2012/06/18 Commandを読み込み過ぎると処理落ちが発生するため対応策を追加。少々面倒になりました。 ;22:18 2013/01/04 turnについてちょい追加 ;19:09 2013/01/05 ★おまけ1・2追加(一回転テンプレ+タメテンプレ) ;■■■■■ ;■■■■■ 先行入力システム用のヘルパー記述 bit管理方式 改良版 ;■■■■■ ; ※上級者向けテンプレ ですが以前の[cmd-helper.txt]よりはマシになったかもしれない。 ; ※bitの処理記述はほぼ触れずに使えます。 ; ■ やってること ; やってる事自体は、DHQ氏が紹介してるCommand一つに対してVar一つ使う方式と一緒です。 ;  ただしbit演算で1つのVarに5〜6個詰めています。違う点はそれだけです。 ; Varで代替コマンドを入力させているようなイメージ ; ; ■ やらせてること ; 設定したコマンドが入力された時に、Varに設定数値分代入、毎F設定数値を0になるまで減算。 ; 本体ではそのVarに代入した数値が残っている場合もCommandが入ったものとして扱う。 ; ; ■ bit管理方式でしかできないこと ; 100個以上に及ぶの大量のコマンド判定を作れる。 ; 作ってどうする? …知らん。 ; ; ; ★ さらにできること ; 代替タメコマンド(調整すればある程度は対応できるかと。) ; 自由な1回転コマンド(3/4回転、烙印コマンド可)を作れる。2回転・3回転も多分可。4回転は無い。(追加はできるけど。) ; ; ; 使い方さえ分かれば、DHQ氏のより楽かもしれないと思ったけど別にそんなことはなかったぜ。 ; : ※Commandの書かれたステートは1Fに付き300回参照します。 : ※例えば100個のCommand書かれている場合、計3万回参照することになります。 ; ※それを複数キャラで同じ回数してしまい数万回Commandを参照すると処理落ちが発生してきます。 : ※少々面倒ですが、読み込み回数抑制用の記述を追加してください。 ; ※ループステート内で1Fに読み込む数を最大20個程度に抑えれば処理落ちはほとんど起きないかと。環境にもよりますが。 ;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ [Statedef 62900];これは不要 ;(1*9)は、9のヘルパーがあったら他の数値に置換。 ;62000〜62999も既にあるなら置換。 [State -1];-1ステートへ置く。 Type = ChangeState Trigger1 = Ishelper(1*9) value = 62000+200 ;減算処理ステート ctrl = 0 [State -1,先行入力認識];-1ステートへ置く。 Type = Helper Trigger1 = !NumHelper(1*9) ID = (1*9) Pos = 0,0; StateNo = 62000 ; OwnPal = 1 KeyCtrl = 1 Size.XScale = 0 Size.YScale = 0 SuperMoveTime = 999999999 ;SuperPause中に動ける時間 PauseMoveTime = 999999999 ;Pause中に動ける時間 ;↓を適当なcnsの中に入れる ;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ [Statedef 62000] type =S ctrl =0 anim =170 ;判定の無い適当なアニメ [State a];汎用的なコマンドの確認他 Type = null TriggerAll =1||(var(1):=0)&&(var(2):=0)&&(var(3):=0)&&(var(4):=0)&&(var(5):=0)&&(var(6):=0)&&(var(7):=0)&&(var(8):=0) Trigger1 = 1 || var(1) := (Command = "holddown")+(Command = "holdback")*2+(Command = "holdfwd")*4+(Command = "holdup")*8 Trigger1 = 1 || var(1) := var(1) + (Command = "a")* 16+(Command = "b")* 32+(Command = "c")* 64 Trigger1 = 1 || var(1) := var(1) + (Command = "x")*128+(Command = "y")*256+(Command = "z")*512 Trigger1 = 1 || var(1) := var(1) + (Command = "s")*1024 ;レバーホールド代替 ;(var(1)&1) ;holddown ;(var(1)&2) ;holdback ;(var(1)&4) ;holdfwd ;(var(1)&8) ;holdup ;ボタン単一代替※同時押し代替は不可。||で「どちらか」の条件なら認識可能。 ;(var(1)&16) ;a ;(var(1)&32) ;b ;(var(1)&64) ;c ;(var(1)&128) ;x ;(var(1)&256) ;y ;(var(1)&512) ;z ;(var(1)&1024) ;s ;★この代替記述を、Command条件の前にあるTriggerAllなどに置くことで読み込む回数を減らしてください。 ;★どうせなら追加しても良いです。別々のCommandで同じ技を管理している場合などはここでまとめておく方が良いです。 [State a];★もしくはこちらで全て指定して、認識ステートに書くものを全て代替記述にしても良いです。 Type = null ; (↓)この部分が代替記述。 Trigger1 = 1 || var(2) := var(2) ;+ (Command = "")* 1 ;(var(2)&1 ) ; Trigger1 = 1 || var(2) := var(2) ;+ (Command = "")* 2 ;(var(2)&2 ) ; Trigger1 = 1 || var(2) := var(2) ;+ (Command = "")* 4 ;(var(2)&4 ) ; Trigger1 = 1 || var(2) := var(2) ;+ (Command = "")* 8 ;(var(2)&8 ) ; Trigger1 = 1 || var(2) := var(2) ;+ (Command = "")* 16;(var(2)&16 ) ; Trigger1 = 1 || var(2) := var(2) ;+ (Command = "")* 32;(var(2)&32 ) ; Trigger1 = 1 || var(2) := var(2) ;+ (Command = "")* 64;(var(2)&64 ) ; Trigger1 = 1 || var(2) := var(2) ;+ (Command = "")*128;(var(2)&128) ; Trigger1 = 1 || var(2) := var(2) ;+ (Command = "")*256;(var(2)&256) ; Trigger1 = 1 || var(2) := var(2) ;+ (Command = "")*512;(var(2)&512) ; ; Trigger1 = 1 || var(2) := var(2) ;+ (Command = "")*1024 ;(var(2)&1024 ) ; Trigger1 = 1 || var(2) := var(2) ;+ (Command = "")*2048 ;(var(2)&2048 ) ; Trigger1 = 1 || var(2) := var(2) ;+ (Command = "")*4096 ;(var(2)&4096 ) ; Trigger1 = 1 || var(2) := var(2) ;+ (Command = "")*8192 ;(var(2)&8192 ) ; Trigger1 = 1 || var(2) := var(2) ;+ (Command = "")*16384 ;(var(2)&16384 ) ; Trigger1 = 1 || var(2) := var(2) ;+ (Command = "")*32768 ;(var(2)&32768 ) ; Trigger1 = 1 || var(2) := var(2) ;+ (Command = "")*65536 ;(var(2)&65536 ) ; Trigger1 = 1 || var(2) := var(2) ;+ (Command = "")*131072;(var(2)&131072) ; Trigger1 = 1 || var(2) := var(2) ;+ (Command = "")*262144;(var(2)&262144) ; Trigger1 = 1 || var(2) := var(2) ;+ (Command = "")*524288;(var(2)&524288) ; ; Trigger1 = 1 || var(2) := var(2) ;+ (Command = "")*1048576 ;(var(2)&1048576 ) ; Trigger1 = 1 || var(2) := var(2) ;+ (Command = "")*2097152 ;(var(2)&2097152 ) ; Trigger1 = 1 || var(2) := var(2) ;+ (Command = "")*4194304 ;(var(2)&4194304 ) ; Trigger1 = 1 || var(2) := var(2) ;+ (Command = "")*8388608 ;(var(2)&8388608 ) ; Trigger1 = 1 || var(2) := var(2) ;+ (Command = "")*16777216 ;(var(2)&16777216 ) ; Trigger1 = 1 || var(2) := var(2) ;+ (Command = "")*33554432 ;(var(2)&33554432 ) ; Trigger1 = 1 || var(2) := var(2) ;+ (Command = "")*67108864 ;(var(2)&67108864 ) ; Trigger1 = 1 || var(2) := var(2) ;+ (Command = "")*134217728;(var(2)&134217728) ; Trigger1 = 1 || var(2) := var(2) ;+ (Command = "")*268435456;(var(2)&268435456) ; Trigger1 = 1 || var(2) := var(2) ;+ (Command = "")*536870912;(var(2)&536870912) ; ;★おまけ1(調整して崩し可の一回転コマンドなどに使う用。) ;fvar(1x);コマンドの入力後の時間 [State a];コマンド入力感知 Type = null TriggerAll = 0 ;★通常使わない※おまけ2を利用する場合も1に。 Trigger1 = 1 || fvar(11) := 9999*(!fvar(10)) + ( fvar(11) + 1 )* !( (var(1)&15)=3 );後下 Trigger1 = 2 || fvar(12) := 9999*(!fvar(10)) + ( fvar(12) + 1 )* !( (var(1)&15)=1 ); 下 Trigger1 = 3 || fvar(13) := 9999*(!fvar(10)) + ( fvar(13) + 1 )* !( (var(1)&15)=5 );前下 ;-------------------------------------------------------------; Trigger1 = 4 || fvar(14) := 9999*(!fvar(10)) + ( fvar(14) + 1 )* !( (var(1)&15)=2 );後 Trigger1 = 5 || fvar(15) := 9999*(!fvar(10)) + ( fvar(15) + 1 )* !( (var(1)&15)=0 );ニュートラル Trigger1 = 6 || fvar(16) := 9999*(!fvar(10)) + ( fvar(16) + 1 )* !( (var(1)&15)=4 );前 ;-------------------------------------------------------------; Trigger1 = 7 || fvar(17) := 9999*(!fvar(10)) + ( fvar(17) + 1 )* !( (var(1)&15)=10);後上 Trigger1 = 8 || fvar(18) := 9999*(!fvar(10)) + ( fvar(18) + 1 )* !( (var(1)&15)=8 ); 上 Trigger1 = 9 || fvar(19) := 9999*(!fvar(10)) + ( fvar(19) + 1 )* !( (var(1)&15)=12);前上 Trigger1 =10 || fvar(10) := 1 ;フラグ管理し一切入力されてない状態で↓などが起動しないようにする Trigger1 = 0 Trigger2 = 0 ;★通常封印:一回転 Trigger2 =20 || fvar(1) := 45 ;猶予 Trigger2 =20 || fvar(20) := ( fvar(12) <= fvar(1) && fvar(14) <= fvar(1) && fvar(16) <= fvar(1) && fvar(18) <= fvar(1) ) ;一回転コマンド ;上下左右のコマンド入力が45F以内の探知。helper(1*9),fvar(10) && command=""で自由な3/4回転+攻撃を確認可能 ;左右どちらかの回転でなければならない場合は別途調整すること。 Trigger2 = 0 ;★通常封印:二回転 Trigger2 = fvar(20) || fvar(21) ; Trigger2 = 1 || fvar(0) := fvar(12) Trigger2 = 1 || fvar(0) := Ifelse( fvar(0) > fvar(14) , fvar(0) , fvar(14) ) Trigger2 = 1 || fvar(0) := Ifelse( fvar(0) > fvar(16) , fvar(0) , fvar(16) ) Trigger2 = 1 || fvar(0) := Ifelse( fvar(0) > fvar(18) , fvar(0) , fvar(18) ) Trigger2 = 1 || fvar(21) := fvar(21) + 1 + (fvar(0))*(fvar(21)=0) ;合計F数 Trigger2 = 1 || fvar(22) := ( Floor(fvar(22))| (1*((var(1)&15)=1)) | (2*((var(1)&15)=2)) | (4*((var(1)&15)=4)) | (8*((var(1)&15)=8)) ) ;それぞれの入力が入ったかどうか。 Trigger2 = 0 ;helper(1*9),fvar(22) = 15 ;で2回転目確認、のはず。※未確認 Trigger3 = fvar(21) = 0 || fvar(21) > 80 ;猶予※自由2回転コマンドを使いたい場合、↑のfvar(20)で使ってるfvar(1)の猶予も調整すべきってか別個にすべき。 Trigger3 = (fvar(21) := 0) && (fvar(22) := 0) Trigger4 = 0 ;root,StateNo = xxx ;2回転コマンドの受付のリセット条件を入れる。猶予が技の動作Fより短いとボタン連打で再度出てしまうので必要です。 Trigger4 = (fvar(21) := 0) && (fvar(22) := 0) ;■三回転用 Trigger5 = 0 ;★通常封印:三回転 Trigger5 =20 || fvar(1) := 120 ;猶予 Trigger5 = fvar(22) = 15 || fvar(23);2回転コマンド成立中 Trigger5 = 1 || fvar(23) := fvar(23) + 1 + (fvar(21))*(fvar(23)=0) ;合計F数 Trigger5 = 1 || fvar(24) := ( Floor(fvar(24))| (1*((var(1)&15)=1)) | (2*((var(1)&15)=2)) | (4*((var(1)&15)=4)) | (8*((var(1)&15)=8)) ) ;それぞれの入力が入ったかどうか。 Trigger5 = 0 ;helper(1*9),fvar(24) = 15 ;で2回転目確認、のはず。※未確認 Trigger6 = fvar(23) = 0 || fvar(23) > 120 ;猶予 Trigger6 = (fvar(23) := 0) && (fvar(24) := 0) Trigger7 = 0 ;root,StateNo = xxx ;3回転コマンドの受付のリセット条件を入れる。猶予が技の動作Fより短いとボタン連打で再度出てしまうので必要です。 Trigger7 = (fvar(23) := 0) && (fvar(24) := 0) ;helper(1*9),fvar(20) && command="";で自由な3/4回転+ボタン ;helper(1*9),fvar(22)=15 && command = "";で自由な1+3/4回転+ボタン ;helper(1*9),fvar(24)=15 && command = "";で自由な2+3/4回転+ボタン ;★おまけ2(溜めコマンド用) (Helper(1*9),Var(9)&x)=x ;タメコマンド認識※方向はbit処理なので注意 ;fvar(1x);コマンドのホールド時間 [State a];コマンド入力感知 Type = varset var(9) = (var(1)&15) + Floor(fvar(29):=fvar(1))*0 TriggerAll = 0 ;★通常使わない TriggerAll = 1 || fvar(29) := fvar(29) - 1 TriggerAll = 1 || var(9) := var(9) * (fvar(29)>0) TriggerAll = 1 || fvar(0) := 40 ;溜め時間 TriggerAll = 1 || fvar(1) := 30 ;溜め放し後・猶予 TriggerAll = 1 || fvar(2) := !( 0 ) ;←タメをリセットする条件を入れたいなら0を変更※!()はそのまま。 Trigger1 = 1 || fvar(31) := ( fvar(31) + 1 ) * ( (var(1)&15)=3 ) * fvar(2);後下 Trigger2 = 2 || fvar(32) := ( fvar(32) + 1 ) * ( (var(1)&15)=1 ) * fvar(2); 下 Trigger3 = 3 || fvar(33) := ( fvar(33) + 1 ) * ( (var(1)&15)=5 ) * fvar(2);前下 ;-------------------------------------------------------------------------; Trigger4 = 4 || fvar(34) := ( fvar(34) + 1 ) * ( (var(1)&15)=2 ) * fvar(2);後 Trigger5 = 5 || fvar(35) := ( fvar(35) + 1 ) * ( (var(1)&15)=0 ) * fvar(2);ニュートラル Trigger6 = 6 || fvar(36) := ( fvar(36) + 1 ) * ( (var(1)&15)=4 ) * fvar(2);前 ;-------------------------------------------------------------------------; Trigger7 = 7 || fvar(37) := ( fvar(37) + 1 ) * ( (var(1)&15)=10) * fvar(2);後上 Trigger8 = 8 || fvar(38) := ( fvar(38) + 1 ) * ( (var(1)&15)=8 ) * fvar(2); 上 Trigger9 = 9 || fvar(39) := ( fvar(39) + 1 ) * ( (var(1)&15)=12) * fvar(2);前上 ;★斜め入力で複合入力が可能なケースの場合は、上下前後の&15を=xの数値に変えるといい。 ;★加えて前後同時押しなどに反応させないようにしたい場合は&15を、上下は&9に、前後は&6にする。(=反対側の要素が無い) ;★タメ分割を再現したい場合は↑の(var(1)&15)=xをfvar(1x)<猶予Fにし、+1を+((var(1)&15)=x)に変えるとできる、かな? Trigger1 = fvar(31) > fvar(0) Trigger2 = fvar(32) > fvar(0) Trigger3 = fvar(33) > fvar(0) Trigger4 = fvar(34) > fvar(0) Trigger5 = fvar(35) > fvar(0) Trigger6 = fvar(36) > fvar(0) Trigger7 = fvar(37) > fvar(0) Trigger8 = fvar(38) > fvar(0) Trigger9 = fvar(39) > fvar(0) Trigger10 = fvar(2) = 0 Trigger10 = 0 && var(9) := 0 && fvar(29) := 0 [State a];コマンド入力をおこなっていない場合 type = ChangeState Value = 62100 ;待機ステートへ TriggerAll = 1 ; Trigger1 = !(var(1)) ;代替系無し Trigger1 = !(Command = "a"||Command = "b"||Command = "c"||Command = "x"||Command = "y"||Command = "z" ||Command = "s" ) ;★holdaなどがある場合は、↑aなどをそちらに差し替えてください。 ;★最後にレバー放し・ボタン放しで入力が成立するコマンドがある場合、そのCommand条件も加えてください。滅多に無いと思いますが。 [State a]; type=changeState Trigger1 = 1||fvar(0) := 101 ;処理用1:最初に認識させる項目 Trigger1 = 1||fvar(1) := 0 ;処理用2 value=62001 ;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ [Statedef 62001];コマンド関係認識ステート type =S ;☆スロットの使い方について☆ ;bit演算することで1つのVarに ; 0〜31まで記録できる6つのスロットか ; 0〜63まで記録できる5つのスロットに分割して使っているだけで、 ;イメージとしては効率的に使ってVarスロットを増やしてるって思っていただければおk。 ; Var(xx)=「 31 31 31 31 31 31 」とVar(xx)=「 63 63 63 63 63 」って感じです。 ; Var(xx)=「 00 12 03 29 07 02 」ってイメージ。 ; ※ 最大31Fは、「本体の入力1F」を合せて、最大32F分の認識がされることになります。 ; ※ 最大63Fはなら最大64F分。 ;;演算についての細かい話は[bit.txt/ビット演算のメモ]をどうぞ。 ;☆Helperで管理するメリット・デメリット☆ ; ○ Varを大量に使えるので細かい技ごとに設定が可能 ; ○ 本体とは別々にCommandを認識しているので、本体のステートが奪われていてもCommand処理が暴発しない。 ; × Helperを余計に使うのでヘルパー数を圧迫する ;☆bit演算で管理するメリット・デメリット☆ ; ○ 沢山設定できるだけ ; × 記述が煩雑になってややこしい ; × 100個未満ならVar1つに1個の技の方が分かりやすい ;■Slot確認■ (fvar(0)= 101 ) ; fvar(0)=XXZ → XX=指定するVarスロット、Z=bitのスロット(上記のはVar(10)の1番目に記録) ; XXは重複さえしていなければ10~59まで全て使えます。0は処理用。1~9も処理用の予定。 ;  最大31F用のZは6まで 最大63F用のZは5まで使えます。 ; ( Commandの認識処理を一ヶ所にまとめる為にこうなりました。 ) ; ちなみにfvarは0~6まで仕様。あとは現状空きです。 ;■持続タイプ■ (fvar(1):= 1 ) ;(fvar(1):= x )部分は「どの技の分類か」を指定しています。※設定は0以外の最大7桁までの数字で※ ; fvar(1)= 1 なら「通常技関係」 ; fvar(1)= 4 なら「特殊技関係」 ; fvar(1)= 7 なら「必殺技関係」 8は半回転用 ; fvar(1)=10 なら「超必殺技系」 という感じの処理を↓の方でやってます。変更可能。 ;■コマンド■  Command = "a" ; Commandをキャラに合せて調整して使います。 ;  >例えば"236a"は"波動a"とか"hadou_a"とか"QCF-a"とか、固有のに変更する。 ; ※使えないCommandは「 0; Command = 」という記述に変えること 【※安易な行削除は絶対ダメ※】 ;  >使えないのを別のコマンドに差し替える("236x"→"623a"に入れ替え)のもアリです。 ;   ※ただしfvar(0)とHelper(1*9),Var(xx)の関係は絶対に替えないこと。Commandとfvar(1)のみ替えること。 ;  >削除する場合Var一種の指定(fvar(0)=XXzのXXの部分が同じ集り)をまるごと消してください。 ;■CMDに追加する記述■  ||(Helper(1*9),var(10)&31) ; ;CMD記述へ ;TriggerAll = Command = "236a" ||(Helper(1*9),var(11)&31) ;という感じに追加して使います。Command記述が他の条件式と複雑に構成されてる場合は注意。 ; > var(11)&31? :単一の&と|はbit演算という計算式です。細かいことは[bit.txt/ビット演算のメモ]を見てください。 ; > これらの数値は基本コピペするだけなので、覚える必要はありません。と言うか覚えられません。 ; > ヒットポーズの入力持続も制限したい場合は、Helper(1*9),Command=""にするとヒットポーズによる入力の持続がなくなります。 ;  >リダイレクトでヒットポーズしないヘルパー側のCommandを参照するので。Varと違いCommandへのリダイレクトは処理順による遅延は無いです。 ; ※並べ替える場合、fvar(0)へ代入する番号とHelper(1*9),Var(xx)の関係は絶対に崩さないこと。 ; ※仕組みを理解してきたなら挙動がおかしくならない程度にいじってもいいけども。 ;※★処理の軽量化について★ ;※同じボタンで発動記述は、別々のステートコントローラーに分けて、 ;※ TriggerAllで単一ボタン代替記述の条件を追加しておくと、内部のCommandを読み込む回数を減らせます。 ;※1Fに読み込む数は多くても30個以下にした方が良いです。できれば20個以下がベスト。(毎F9000回〜6000回未満) ; ;☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆ ;★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★ ;☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆ ;★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★ ;☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆ ; ★☆★ ここでCMDなどを設定 ★☆★ ;■ それぞれについての説明は↑を参照 ;■ 持続タイプ(fvar(1)) と コマンド 部分を調整して、 ;■  本体のCommand条件の横に追加する記述を加えるだけです。 ;■ 使えないコマンドは「&& 0;Command」って感じに「0;」でコメントアウト。 ; デフォルトで一度に読み込むCommandの個数は常時6個にボタン押しで+7個。13個*300回に収まってます。 [State a];0~63Fまで用/超必殺技系 type = ChangeState Value = 62020 ;処理ステート2へ TriggerAll = (var(1)&16) || (var(1)&32) || (var(1)&64) || (var(1)&128) || (var(1)&256) || (var(1)&512) ;abcxyzどれか ;     ■Slot確認■  ■持続タイプ■  ■コマンド■  ■CMDに追加する記述■     ■ ||より右をコピペで Trigger1 =(fvar(0)= 401 )&&(fvar(1):=10 )&&(Command="236236a"||Command="236236b"||Command="236236c"); ||(Helper(1*9),var(40)&63) ;真空+XorYorZ Trigger2 = ( Command = "236236x" || Command = "236236y" || Command = "236236z" ) ;こういう記述でも一応可 Trigger2 =(fvar(0)= 402 )&&(fvar(1):=10 )&& 1 ; ||(Helper(1*9),var(40)&4032) ;真空+XorYorZ Trigger3 =(fvar(0)= 403 )&&(fvar(1):=10 )&& 0;■ Command = "214214abc" ; ||(Helper(1*9),var(40)&258048) ;※コメントアウト※ Trigger4 =(fvar(0)= 404 )&&(fvar(1):=10 )&& 0;■ Command = "214214xyz" ; ||(Helper(1*9),var(40)&16515072) ;※ Trigger5 =(fvar(0)= 405 )&&(fvar(1):=20 )&& 0;■ Command = "26842684c" ; ||(Helper(1*9),var(40)&1056964608);※使わない/使えないのは0;でコメントアウト。 ;     ■Slot確認■  ■持続タイプ■  ■コマンド■                  ■ Trigger6 =(fvar(0)= 411 )&&(fvar(1):= 1 )&& 0;command = "s" ; ||(Helper(1*9),var(41)&63) ; Trigger7 =(fvar(0)= 412 )&&(fvar(1):= 1 )&& 0;command = "s" ; ||(Helper(1*9),var(41)&4032) ; Trigger8 =(fvar(0)= 413 )&&(fvar(1):= 1 )&& 0;command = "s" ; ||(Helper(1*9),var(41)&258048) ; Trigger9 =(fvar(0)= 414 )&&(fvar(1):= 1 )&& 0;command = "s" ; ||(Helper(1*9),var(41)&16515072) ; Trigger10=(fvar(0)= 415 )&&(fvar(1):= 1 )&& 0;command = "s" ; ||(Helper(1*9),var(41)&1056964608); ;特殊技系は別々にしてあります。(30〜34に) [State a];0~31Fまで用 type = ChangeState Value = 62010 ;処理ステートへ TriggerAll = (var(1)&16) ;a ;     ■Slot確認■  ■持続タイプ■  ■コマンド■  ■CMDに追加する記述■     ■ ||より右をコピペで Trigger1 =(fvar(0)= 101 )&&(fvar(1):= 1 )&& Command = "a" ; ||(Helper(1*9),var(10)&31) ;単一 Trigger2 =(fvar(0)= 102 )&&(fvar(1):= 7 )&& Command = "236a" ; ||(Helper(1*9),var(10)&992) ;波動 Trigger3 =(fvar(0)= 103 )&&(fvar(1):= 7 )&& Command = "623a" ; ||(Helper(1*9),var(10)&31744) ;昇竜 Trigger4 =(fvar(0)= 104 )&&(fvar(1):= 7 )&& Command = "214a" ; ||(Helper(1*9),var(10)&1015808) ;逆波動 Trigger5 =(fvar(0)= 105 )&&(fvar(1):= 7 )&& Command = "421a" ; ||(Helper(1*9),var(10)&32505856) ;逆昇竜 Trigger6 =(fvar(0)= 106 )&&(fvar(1):= 7 )&& Command = "22a" ; ||(Helper(1*9),var(10)&1040187392);↓↓ [State a];0~31Fまで用 type = ChangeState Value = 62010 ;処理ステートへ TriggerAll = (var(1)&32) ;b ;     ■Slot確認■  ■持続タイプ■  ■コマンド■  ■CMDに追加する記述■     ■ ||より右をコピペで Trigger1 =(fvar(0)= 111 )&&(fvar(1):= 1 )&& Command = "b" ; ||(Helper(1*9),var(11)&31) ;単一 Trigger2 =(fvar(0)= 112 )&&(fvar(1):= 7 )&& Command = "236b" ; ||(Helper(1*9),var(11)&992) ;波動 Trigger3 =(fvar(0)= 113 )&&(fvar(1):= 7 )&& Command = "623b" ; ||(Helper(1*9),var(11)&31744) ;昇竜 Trigger4 =(fvar(0)= 114 )&&(fvar(1):= 7 )&& Command = "214b" ; ||(Helper(1*9),var(11)&1015808) ;逆波動 Trigger5 =(fvar(0)= 115 )&&(fvar(1):= 7 )&& Command = "421b" ; ||(Helper(1*9),var(11)&32505856) ;逆昇竜 Trigger6 =(fvar(0)= 116 )&&(fvar(1):= 7 )&& Command = "22b" ; ||(Helper(1*9),var(11)&1040187392);↓↓ [State a];0~31Fまで用 type = ChangeState Value = 62010 ;処理ステートへ TriggerAll = (var(1)&64) ;c ;     ■Slot確認■  ■持続タイプ■  ■コマンド■  ■CMDに追加する記述■     ■ ||より右をコピペで Trigger1 =(fvar(0)= 121 )&&(fvar(1):= 1 )&& Command = "c" ; ||(Helper(1*9),var(12)&31) ;単一 Trigger2 =(fvar(0)= 122 )&&(fvar(1):= 7 )&& Command = "236c" ; ||(Helper(1*9),var(12)&992) ;波動 Trigger3 =(fvar(0)= 123 )&&(fvar(1):= 7 )&& Command = "623c" ; ||(Helper(1*9),var(12)&31744) ;昇竜 Trigger4 =(fvar(0)= 124 )&&(fvar(1):= 7 )&& Command = "214c" ; ||(Helper(1*9),var(12)&1015808) ;逆波動 Trigger5 =(fvar(0)= 125 )&&(fvar(1):= 7 )&& Command = "421c" ; ||(Helper(1*9),var(12)&32505856) ;逆昇竜 Trigger6 =(fvar(0)= 126 )&&(fvar(1):= 7 )&& Command = "22c" ; ||(Helper(1*9),var(12)&1040187392);↓↓ [State a];0~31Fまで用 type = ChangeState Value = 62010 ;処理ステートへ TriggerAll = (var(1)&128) ;x ;     ■Slot確認■  ■持続タイプ■  ■コマンド■  ■CMDに追加する記述■     ■ ||より右をコピペで Trigger1 =(fvar(0)= 131 )&&(fvar(1):= 1 )&& Command = "x" ; ||(Helper(1*9),var(13)&31) ;単一 Trigger2 =(fvar(0)= 132 )&&(fvar(1):= 7 )&& Command = "236x" ; ||(Helper(1*9),var(13)&992) ;波動 Trigger3 =(fvar(0)= 133 )&&(fvar(1):= 7 )&& Command = "623x" ; ||(Helper(1*9),var(13)&31744) ;昇竜 Trigger4 =(fvar(0)= 134 )&&(fvar(1):= 7 )&& Command = "214x" ; ||(Helper(1*9),var(13)&1015808) ;逆波動 Trigger5 =(fvar(0)= 135 )&&(fvar(1):= 7 )&& Command = "421x" ; ||(Helper(1*9),var(13)&32505856) ;逆昇竜 Trigger6 =(fvar(0)= 136 )&&(fvar(1):= 7 )&& Command = "22x" ; ||(Helper(1*9),var(13)&1040187392);↓↓ [State a];0~31Fまで用 type = ChangeState Value = 62010 ;処理ステートへ TriggerAll = (var(1)&256) ;y ;     ■Slot確認■  ■持続タイプ■  ■コマンド■  ■CMDに追加する記述■     ■ ||より右をコピペで Trigger1 =(fvar(0)= 141 )&&(fvar(1):= 1 )&& Command = "y" ; ||(Helper(1*9),var(14)&31) ;単一 Trigger2 =(fvar(0)= 142 )&&(fvar(1):= 7 )&& Command = "236y" ; ||(Helper(1*9),var(14)&992) ;波動 Trigger3 =(fvar(0)= 143 )&&(fvar(1):= 7 )&& Command = "623y" ; ||(Helper(1*9),var(14)&31744) ;昇竜 Trigger4 =(fvar(0)= 144 )&&(fvar(1):= 7 )&& Command = "214y" ; ||(Helper(1*9),var(14)&1015808) ;逆波動 Trigger5 =(fvar(0)= 145 )&&(fvar(1):= 7 )&& Command = "421y" ; ||(Helper(1*9),var(14)&32505856) ;逆昇竜 Trigger6 =(fvar(0)= 146 )&&(fvar(1):= 7 )&& Command = "22y" ; ||(Helper(1*9),var(14)&1040187392);↓↓ [State a];0~31Fまで用 type = ChangeState Value = 62010 ;処理ステートへ TriggerAll = (var(1)&512) ;z ;     ■Slot確認■  ■持続タイプ■  ■コマンド■  ■CMDに追加する記述■     ■ ||より右をコピペで Trigger1 =(fvar(0)= 151 )&&(fvar(1):= 1 )&& Command = "z" ; ||(Helper(1*9),var(15)&31) ;単一 Trigger2 =(fvar(0)= 152 )&&(fvar(1):= 7 )&& Command = "236z" ; ||(Helper(1*9),var(15)&992) ;波動 Trigger3 =(fvar(0)= 153 )&&(fvar(1):= 7 )&& Command = "623z" ; ||(Helper(1*9),var(15)&31744) ;昇竜 Trigger4 =(fvar(0)= 154 )&&(fvar(1):= 7 )&& Command = "214z" ; ||(Helper(1*9),var(15)&1015808) ;逆波動 Trigger5 =(fvar(0)= 155 )&&(fvar(1):= 7 )&& Command = "421z" ; ||(Helper(1*9),var(15)&32505856) ;逆昇竜 Trigger6 =(fvar(0)= 156 )&&(fvar(1):= 7 )&& Command = "22z" ; ||(Helper(1*9),var(15)&1040187392);↓↓ ;     ■Slot確認■  ■持続タイプ■  ■コマンド■                  ■ ; ;特殊技系は別々にしてあります。(30〜34に) [State a];0~31Fまで用 type = ChangeState Value = 62010 ;処理ステートへ ;     ■Slot確認■  ■持続タイプ■  ■コマンド■  ■CMDに追加する記述■     ■ ||より右をコピペで Trigger1 =(var(1)&16) ;a Trigger1 =(fvar(0)= 161 )&&(fvar(1):= 8 )&& Command = "41236a" ; ||(Helper(1*9),var(16)&31) ;半回転 Trigger2 =(var(1)&32) ;b Trigger2 =(fvar(0)= 162 )&&(fvar(1):= 8 )&& Command = "41236b" ; ||(Helper(1*9),var(16)&992) ; Trigger3 =(var(1)&64) ;c Trigger3 =(fvar(0)= 163 )&&(fvar(1):= 8 )&& Command = "41236c" ; ||(Helper(1*9),var(16)&31744) ; Trigger4 =(var(1)&128) ;x Trigger4 =(fvar(0)= 164 )&&(fvar(1):= 8 )&& Command = "41236x" ; ||(Helper(1*9),var(16)&1015808) ; Trigger5 =(var(1)&256) ;y Trigger5 =(fvar(0)= 165 )&&(fvar(1):= 8 )&& Command = "41236y" ; ||(Helper(1*9),var(16)&32505856) ; Trigger6 =(var(1)&512) ;z Trigger6 =(fvar(0)= 166 )&&(fvar(1):= 8 )&& Command = "41236z" ; ||(Helper(1*9),var(16)&1040187392); ;     ■Slot確認■  ■持続タイプ■  ■コマンド■                  ■ Trigger7 =(var(1)&16) ;a Trigger7 =(fvar(0)= 171 )&&(fvar(1):= 8 )&& 0;■ Command = "63214a" ; ||(Helper(1*9),var(17)&31) ;逆半回転※初期コメントアウト Trigger8 =(var(1)&32) ;b Trigger8 =(fvar(0)= 172 )&&(fvar(1):= 8 )&& 0;■ Command = "63214b" ; ||(Helper(1*9),var(17)&992) ; Trigger9 =(var(1)&64) ;c Trigger9 =(fvar(0)= 173 )&&(fvar(1):= 8 )&& 0;■ Command = "63214c" ; ||(Helper(1*9),var(17)&31744) ; Trigger10=(var(1)&128) ;x Trigger10=(fvar(0)= 174 )&&(fvar(1):= 8 )&& 0;■ Command = "63214x" ; ||(Helper(1*9),var(17)&1015808) ; Trigger11=(var(1)&256) ;y Trigger11=(fvar(0)= 175 )&&(fvar(1):= 8 )&& 0;■ Command = "63214y" ; ||(Helper(1*9),var(17)&32505856) ; Trigger12=(var(1)&512) ;z Trigger12=(fvar(0)= 176 )&&(fvar(1):= 8 )&& 0;■ Command = "63214z" ; ||(Helper(1*9),var(17)&1040187392);コマンドが存在しない場合、不要な場合は←のように0;でコメントアウトして下さい。 ;レバーホールド代替 ;Trigger1 =(var(1)&1) ;holddown ;Trigger1 =(var(1)&2) ;holdback ;Trigger1 =(var(1)&4) ;holdfwd ;Trigger1 =(var(1)&8) ;holdup ;単一ボタン代替 ;Trigger1 =(var(1)&16) ;a ;Trigger1 =(var(1)&32) ;b ;Trigger1 =(var(1)&64) ;c ;Trigger1 =(var(1)&128) ;x ;Trigger1 =(var(1)&256) ;y ;Trigger1 =(var(1)&512) ;z ;×;Trigger1 = Command!="holdfwd"&&Command!="holdback"&&Command!="holddown" ; ;Trigger1 = (var(1)&7) = 0 ;追加用※↑にある通常のabcxyz系に!hold系の条件が必要なら追加して下さい。 ;記述が煩雑なので分けました ;処理軽量化のためにCommand条件を全て代替記述に差し替えました。 ; ※キーがすれてても(2系で3へ入力しても)入力出来る場合、説明に従って調整してください。 ;  >Command != "holdup" が必要なら( (var(1)&8)=0 )を追加してください ;  >ぶっちゃけabcxyz+hold系なら、abcxyzだけ↑にある通常のabcxyz用のを追加すれば良いけどね。 ; ※専用のコマンド("6b"とか"Dx"とか)がある場合は、テンプレをコピペして別々に記述してください。 ;  >↓の記述を変えてもいいですが、管理が面倒になります。 [State a];0~31Fまで用/特殊技用 6(fwd) type = ChangeState Value = 62010 ;処理ステートへ TriggerAll = (var(1)&7) = 4 ;Command ="holdfwd" && Command!="holddown" && Command!="holdback" Triggerall = (var(1)&4) ;holdfwd条件のみでいい場合↑の行をコメントアウト Trigger1 =(fvar(0)= 301 )&&(fvar(1):= 3 )&& (var(1)&16) ; ||(Helper(1*9),var(30)&31) ;6a Trigger2 =(fvar(0)= 302 )&&(fvar(1):= 3 )&& (var(1)&32) ; ||(Helper(1*9),var(30)&992) ;6b Trigger3 =(fvar(0)= 303 )&&(fvar(1):= 3 )&& (var(1)&64) ; ||(Helper(1*9),var(30)&31744) ;6c Trigger4 =(fvar(0)= 304 )&&(fvar(1):= 3 )&& (var(1)&128) ; ||(Helper(1*9),var(30)&1015808) ;6z Trigger5 =(fvar(0)= 305 )&&(fvar(1):= 3 )&& (var(1)&256) ; ||(Helper(1*9),var(30)&32505856) ;6y Trigger6 =(fvar(0)= 306 )&&(fvar(1):= 3 )&& (var(1)&512) ; ||(Helper(1*9),var(30)&1040187392);6x  ;     ■Slot確認■  ■持続タイプ■  ■コマンド■                  ■ ||より右をコピペで [State a];0~31Fまで用/特殊技用 3(fwd + down) type = ChangeState Value = 62010 ;処理ステートへ TriggerAll = (var(1)&7) = 5 ;Command ="holdfwd" && Command ="holddown" && Command!="holdback" triggerall = (var(1)&5) ;fwd || down でも良い場合↑をコメントアウト Trigger1 =(fvar(0)= 311 )&&(fvar(1):= 3 )&& (var(1)&16) ; ||(Helper(1*9),var(31)&31) ;3a Trigger2 =(fvar(0)= 312 )&&(fvar(1):= 3 )&& (var(1)&32) ; ||(Helper(1*9),var(31)&992) ;3b Trigger3 =(fvar(0)= 313 )&&(fvar(1):= 3 )&& (var(1)&64) ; ||(Helper(1*9),var(31)&31744) ;3c Trigger4 =(fvar(0)= 314 )&&(fvar(1):= 3 )&& (var(1)&128) ; ||(Helper(1*9),var(31)&1015808) ;3z Trigger5 =(fvar(0)= 315 )&&(fvar(1):= 3 )&& (var(1)&256) ; ||(Helper(1*9),var(31)&32505856) ;3y Trigger6 =(fvar(0)= 316 )&&(fvar(1):= 3 )&& (var(1)&512) ; ||(Helper(1*9),var(31)&1040187392);3x ;     ■Slot確認■  ■持続タイプ■  ■コマンド■                  ■ ||より右をコピペで [State a];0~31Fまで用/特殊技用 2(down) 持続タイプ:通常技系 type = ChangeState Value = 62010 ;処理ステートへ TriggerAll = (var(1)&7) = 1 ;Command!="holdfwd" && Command ="holddown" && Command!="holdback" Triggerall = (var(1)&1) ;holddown条件のみでいい場合↑の行をコメントアウト Trigger1 =(fvar(0)= 321 )&&(fvar(1):= 1 )&& (var(1)&16) ; ||(Helper(1*9),var(32)&31) ;2a Trigger2 =(fvar(0)= 322 )&&(fvar(1):= 1 )&& (var(1)&32) ; ||(Helper(1*9),var(32)&992) ;2b Trigger3 =(fvar(0)= 323 )&&(fvar(1):= 1 )&& (var(1)&64) ; ||(Helper(1*9),var(32)&31744) ;2c Trigger4 =(fvar(0)= 324 )&&(fvar(1):= 1 )&& (var(1)&128) ; ||(Helper(1*9),var(32)&1015808) ;2z Trigger5 =(fvar(0)= 325 )&&(fvar(1):= 1 )&& (var(1)&256) ; ||(Helper(1*9),var(32)&32505856) ;2y Trigger6 =(fvar(0)= 326 )&&(fvar(1):= 1 )&& (var(1)&512) ; ||(Helper(1*9),var(32)&1040187392);2x ;     ■Slot確認■  ■持続タイプ■  ■コマンド■                  ■ ||より右をコピペで [State a];0~31Fまで用/特殊技用 1(down + back) type = ChangeState Value = 62010 ;処理ステートへ TriggerAll = (var(1)&7) = 3 ;Command!="holdfwd" && Command ="holddown" && Command ="holdback" triggerall = (var(1)&3) ;back || down でも良い場合↑をコメントアウト Trigger1 =(fvar(0)= 331 )&&(fvar(1):= 3 )&& (var(1)&16) ; ||(Helper(1*9),var(33)&31) ;1a Trigger2 =(fvar(0)= 332 )&&(fvar(1):= 3 )&& (var(1)&32) ; ||(Helper(1*9),var(33)&992) ;1b Trigger3 =(fvar(0)= 333 )&&(fvar(1):= 3 )&& (var(1)&64) ; ||(Helper(1*9),var(33)&31744) ;1c Trigger4 =(fvar(0)= 334 )&&(fvar(1):= 3 )&& (var(1)&128) ; ||(Helper(1*9),var(33)&1015808) ;1z Trigger5 =(fvar(0)= 335 )&&(fvar(1):= 3 )&& (var(1)&256) ; ||(Helper(1*9),var(33)&32505856) ;1y Trigger6 =(fvar(0)= 336 )&&(fvar(1):= 3 )&& (var(1)&512) ; ||(Helper(1*9),var(33)&1040187392);1x ;     ■Slot確認■  ■持続タイプ■  ■コマンド■                  ■ ||より右をコピペで [State a];0~31Fまで用/特殊技用 4(back) type = ChangeState Value = 62010 ;処理ステートへ TriggerAll = (var(1)&7) = 2 ;Command!="holdfwd" && Command!="holddown" && Command ="holdback" Triggerall = (var(1)&2) ;holdback条件のみでいい場合↑の行をコメントアウト Trigger1 =(fvar(0)= 341 )&&(fvar(1):= 3 )&& (var(1)&16) ; ||(Helper(1*9),var(34)&31) ;4a Trigger2 =(fvar(0)= 342 )&&(fvar(1):= 3 )&& (var(1)&32) ; ||(Helper(1*9),var(34)&992) ;4b Trigger3 =(fvar(0)= 343 )&&(fvar(1):= 3 )&& (var(1)&64) ; ||(Helper(1*9),var(34)&31744) ;4c Trigger4 =(fvar(0)= 344 )&&(fvar(1):= 3 )&& (var(1)&128) ; ||(Helper(1*9),var(34)&1015808) ;4z Trigger5 =(fvar(0)= 345 )&&(fvar(1):= 3 )&& (var(1)&256) ; ||(Helper(1*9),var(34)&32505856) ;4y Trigger6 =(fvar(0)= 346 )&&(fvar(1):= 3 )&& (var(1)&512) ; ||(Helper(1*9),var(34)&1040187392);4x ;     ■Slot確認■  ■持続タイプ■  ■コマンド■                  ■ ||より右をコピペで ;★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★ ;☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆ ;★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★ ;☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆ ;★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★ ;↓のテンプレをコピペしてfvar(0)のXXZのXX数値とcmdに追加する奴のvar(xx)を ;  このHelperで使っていないVarに変えればスロットを増やせます。 [State a];テンプレ2 type = ChangeState TriggerAll = 0 ;記述を増やす際のコピペ用です。 ;     ■Slot確認■  ■持続タイプ■  ■コマンド■  ■CMDに追加する記述■     ■ Trigger1 =(fvar(0)= 581 )&&(fvar(1):= 1 )&& Command = "holdup" ; ||(Helper(1*9),var(58)&63) ;1 最大63F用 Trigger2 =(fvar(0)= 582 )&&(fvar(1):= 1 )&& Command = "holddown" ; ||(Helper(1*9),var(58)&4032) ;2 Trigger3 =(fvar(0)= 583 )&&(fvar(1):= 1 )&& Command = "holdfwd" ; ||(Helper(1*9),var(58)&258048) ;3 Trigger4 =(fvar(0)= 584 )&&(fvar(1):= 1 )&& Command = "holdback" ; ||(Helper(1*9),var(58)&16515072) ;4 Trigger5 =(fvar(0)= 585 )&&(fvar(1):= 1 )&& Command = "s" ; ||(Helper(1*9),var(58)&1056964608);5 Value = 62020 ;処理ステート2へ(最大63F用) [State a];テンプレ1 type = ChangeState TriggerAll = 0 ;記述を増やす際のコピペ用です。 ;     ■Slot確認■  ■持続タイプ■  ■コマンド■  ■CMDに追加する記述■     ■ Trigger1 =(fvar(0)= 591 )&&(fvar(1):= 1 )&& Command = "a" ; ||(Helper(1*9),var(59)&31) ;1最大31F用 Trigger2 =(fvar(0)= 592 )&&(fvar(1):= 1 )&& Command = "b" ; ||(Helper(1*9),var(59)&992) ;2 Trigger3 =(fvar(0)= 593 )&&(fvar(1):= 1 )&& Command = "c" ; ||(Helper(1*9),var(59)&31744) ;3 Trigger4 =(fvar(0)= 594 )&&(fvar(1):= 1 )&& Command = "x" ; ||(Helper(1*9),var(59)&1015808) ;4 Trigger5 =(fvar(0)= 595 )&&(fvar(1):= 1 )&& Command = "y" ; ||(Helper(1*9),var(59)&32505856) ;5 Trigger6 =(fvar(0)= 596 )&&(fvar(1):= 1 )&& Command = "z" ; ||(Helper(1*9),var(59)&1040187392);6 Value = 62010 ;処理ステートへ(最大31F用) [State a];代替記述の記述の裏ワザ type = ChangeState TriggerAll = 0 ; ;     ■Slot確認■  ■持続タイプ■  ■コマンド■  ■CMDに追加する記述■     ■ Trigger1 =(var(1)&16) ;a ;代替記述の行が先になるようにすれば、このように行の順番がバラバラになっても大丈夫です。一応。 Trigger2 =(var(1)&32) ;b Trigger3 =(var(1)&64) ;c Trigger4 =(var(1)&128) ;x Trigger5 =(var(1)&256) ;y Trigger6 =(var(1)&512) ;z Trigger1 =(fvar(0)= 571 )&&(fvar(1):= 1 )&& Command = "a" ; ||(Helper(1*9),var(59)&31) ;1最大31F用 Trigger2 =(fvar(0)= 572 )&&(fvar(1):= 1 )&& Command = "b" ; ||(Helper(1*9),var(59)&992) ;2 Trigger3 =(fvar(0)= 573 )&&(fvar(1):= 1 )&& Command = "c" ; ||(Helper(1*9),var(59)&31744) ;3 Trigger4 =(fvar(0)= 574 )&&(fvar(1):= 1 )&& Command = "x" ; ||(Helper(1*9),var(59)&1015808) ;4 Trigger5 =(fvar(0)= 575 )&&(fvar(1):= 1 )&& Command = "y" ; ||(Helper(1*9),var(59)&32505856) ;5 Trigger6 =(fvar(0)= 576 )&&(fvar(1):= 1 )&& Command = "z" ; ||(Helper(1*9),var(59)&1040187392);6 Value = 62010 ;処理ステートへ(最大31F用) [State a];何もなかったらコチラへ type = ChangeState Value = 62090 ;ループ管理ステートへ Trigger1 = 1 ;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ [Statedef 62010];処理ステート1:最大31F用 type =S [State a]; Type = Null Trigger1 = 1 || fvar(2) := 0 ;代入数値リセット ;☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆ ;★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★ ;☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆ ;★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★ ;☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆ ; ★☆★ ここでタイプ毎の持続時間を設定 ★☆★ ;■ ↑のコマンド設定の部分で設定したfvar(1)の持続タイプに従って代入する数値(持続F)をfvar(2)に入力する。 [State a];★★★★★  Type = Null TriggerAll = fvar(1) = 1 ;通常技用 Trigger1 = 0 && fvar(2):= 0 ;基本,0F Trigger2 = root,movecontact || root,movetype = H ;ヒット時・くらい時,5F Trigger2 = 0 && fvar(2) := 5 ; [State a];★★★★★ Type = Null TriggerAll = fvar(1) = 4 ;特殊技用 Trigger1 = 0 && fvar(2):= 3 ;基本,3F Trigger2 = root,movecontact ;ヒット時,5F Trigger2 = 0 && fvar(2) := 5 ; Trigger3 = root,movetype = H ;くらい時,8F Trigger3 = 0 && fvar(2) := 8 ; [State a];★★★★★ Type = Null TriggerAll = fvar(1) = 7 ;必殺技用 Trigger1 = 0 && fvar(2):= 5 ;基本,5F Trigger2 = root,movecontact ;ヒット時,8F Trigger2 = 0 && fvar(2) := 8 ; Trigger3 = root,movetype = H ;くらい時,11F Trigger3 = 0 && fvar(2) :=11 ; [State a];★★★★★ Type = Null TriggerAll = fvar(1) = 8 ;必殺技用・半回転系 Trigger1 = 0 && fvar(2):= 7 ;基本,7F Trigger2 = root,movecontact ;ヒット時,11F Trigger2 = 0 && fvar(2) :=11 ; Trigger3 = root,movetype = H ;くらい時,14F Trigger3 = 0 && fvar(2) :=14 ; [State a];★★★★★ Type = Null TriggerAll = fvar(1) = 10 ;超必殺技用 Trigger1 = 0 && fvar(2):= 9 ;基本,9F Trigger2 = root,movecontact && root,stateno < 1000;通常技・ヒット時,12F Trigger2 = 0 && fvar(2) :=12 ; Trigger3 = root,movecontact && root,stateno >=1000;通常技以外・ヒット時,15F Trigger3 = 0 && fvar(2) :=15 ; Trigger4 = root,movetype = H ;くらい時,40F Trigger4 = 0 && fvar(2) :=40 ; ; fvar(1)= 1 なら「通常技関係」 ; fvar(1)= 4 なら「特殊技関係」 ; fvar(1)= 7 なら「必殺技関係」 8は半回転用 ; fvar(1)=10 なら「超必殺技系」 という感じ ;■ ■■ 先行入力の持続について ■■ ;■ ;■ 同じ技でキャンセルできる素早い攻撃で10Fなどに設定すると、入力が持続して勝手に連打してしまう可能性があります。 ;■ また他にも持続が長いと技が暴発してしまうなどの問題が出てくるかと。 ;■ ;■ ↑の例では基本も数Fの猶予が付いてますが「ジャンプからの最速の行動」が非常に楽になってしまいます。注意。 ;■ ;■ 特定条件で持続をリセットさせたい場合は、↓の方の待機ステートでやってください。 ;■ ;■ ちなみに、最大31Fでfvar(2):=40をした場合、補正して31にします。63も64以上だと63に。 ;■ ;■ ■■ :=代入、Triggerの読み込みについて ■■ ;■ ;■ :=代入は「読み込まれた時に代入」です。 ;■  処理はまずTriggerAllが無いか・有っても条件が真なら、Trigger1を参照。 ;■  番号Triggerは ;■   > その行が真だったら→次の同じ番号Triggerを参照 ;■    > 処理していって同じ番号Triggerが全て真の場合、ステートコントローラーを実行。Triggerの読み込みを終了。 ;■   > ある行が偽だったら→同じ番号のTriggerの参照を終了 ;■    > 調べていた番号から+1したTriggerがあれば、その番号Triggerを参照。以下繰り返し。 ;■詳しい例は[Var.txt/Varの初歩]の中ほどを参照。 ;■ ;■ 基本的な処理では上にある方が処理の優先度が高いですが、 ;■  ↑の例では常に:=代入時に偽を出して、次のトリガーも参照させています。 ;■  そのため番号の大きい方がfvar(2)の優先度が高く、低いほうがfvar(2)の優先度が低いという状況です。 ;■ 最終的に目的の設定FをFvar(2)に指定できるなら、ifelseとかでもなんでもok。 ;★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★ ;☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆ ;★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★ ;☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆ ;★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★ ;■↑で設定したことを後は↓で勝手に代入してくれます。キチンと目的の位置に合せて [State a]; Type = Null Trigger1 = PrevStateNo!= 62020 Trigger1 = fvar(4) := 31 ;入れる範囲 Trigger2 = PrevStateNo = 62020 ;63F指定時 Trigger2 = fvar(4) := 63 ;入れる範囲 [State a];最大値補正 Type = Null Trigger1 = fvar(2) > fvar(4) ;入れる量が多い。 Trigger1 =1 || fvar(2) := Floor(fvar(4)) ;最大値に Trigger2 = fvar(2) < 0 ; 0未満 Trigger2 = fvar(2) := 0 ;0に [State a];自動代入処理 31でも63でも可 Type = Null TriggerAll = 1 || fvar(5) := Floor( floor(fvar(0))/10 ) ; Var( Floor(fvar(5)) ) の TriggerAll = 1 || fvar(6) := floor(fvar(0))%10 ; fvar(6)番目のbitスロットへ TriggerAll = var(0) := Floor(fvar(4)) ;管理処理 Trigger1 = 1 || var(0) := var(0) * 1 Trigger1 = fvar(6) = 1 Trigger1 = 1 || var( Floor(fvar(5)) ) := var( Floor(fvar(5)) ) - (var( Floor(fvar(5)) )&var(0)) + (Floor(fvar(2)))*(var(0)/Floor(fvar(4))) Trigger2 = 1 || var(0) := var(0) * Floor(fvar(4)+1) ;入れる項目分ズラす Trigger2 = fvar(6) = 2 Trigger2 = 1 || var( Floor(fvar(5)) ) := var( Floor(fvar(5)) ) - (var( Floor(fvar(5)) )&var(0)) + (Floor(fvar(2)))*(var(0)/Floor(fvar(4))) Trigger3 = 1 || var(0) := var(0) * Floor(fvar(4)+1) ;入れる項目分ズラす Trigger3 = fvar(6) = 3 Trigger3 = 1 || var( Floor(fvar(5)) ) := var( Floor(fvar(5)) ) - (var( Floor(fvar(5)) )&var(0)) + (Floor(fvar(2)))*(var(0)/Floor(fvar(4))) Trigger4 = 1 || var(0) := var(0) * Floor(fvar(4)+1) ;入れる項目分ズラす Trigger4 = fvar(6) = 4 Trigger4 = 1 || var( Floor(fvar(5)) ) := var( Floor(fvar(5)) ) - (var( Floor(fvar(5)) )&var(0)) + (Floor(fvar(2)))*(var(0)/Floor(fvar(4))) Trigger5 = 1 || var(0) := var(0) * Floor(fvar(4)+1) ;入れる項目分ズラす Trigger5 = fvar(6) = 5 Trigger5 = 1 || var( Floor(fvar(5)) ) := var( Floor(fvar(5)) ) - (var( Floor(fvar(5)) )&var(0)) + (Floor(fvar(2)))*(var(0)/Floor(fvar(4))) Trigger6 = PrevStateNo != 62020 ;63f用でない。 Trigger6 = 1 || var(0) := var(0) * Floor(fvar(4)+1) ;入れる項目分ズラす Trigger6 = fvar(6) = 6 Trigger6 = 1 || var( Floor(fvar(5)) ) := var( Floor(fvar(5)) ) - (var( Floor(fvar(5)) )&var(0)) + (Floor(fvar(2)))*(var(0)/Floor(fvar(4))) ;var(0)は処理管理。 [State a]; type = ChangeState Value = 62090 ;ループ管理ステートへ Trigger1 = 1 [Statedef 62020];処理ステート2:最大63F用※迂回してるだけ↑で処理させてます。 type =S [State a];フラグ立て Type = Null TriggerAll = 1 || fvar(5) := Floor( floor(fvar(0))/10 ) ;入れるスロット参照 Trigger1 = var( Floor(fvar(5)) ) := ( var( Floor(fvar(5)) ) | 1073741824 ) ;63F処理フラグ ;--bit-31 =(1073741824)= 5分割時フラグ [State a]; type = ChangeState Value = 62010 ;処理ステートへ Trigger1 = 1 ;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ [Statedef 62090];ループ管理ステート type =S [State a]; type = ChangeState Value = 62001 ;コマンド認識ステートへ TriggerAll =1 || fvar(0) := Floor(fvar(0)+1) Trigger1 = Floor(fvar(0))%10 = [1,6] ;bit指定・範囲内 Trigger2 =1 || fvar(0) := Floor(fvar(0)+10) - (Floor(fvar(0))%10) + 1 ;bit指定範囲外ならvar側を加算し、1に。 Trigger2 = fvar(0) < 60*10 ;Var上限 ;ここで制御してること解説 ; fvar(0)で「調査する項目(VarSlot+bitSlot)」を指定。 ;  >62001,ステートで該当の項目のコマンドが入力されていないか確認。 ;   >入力されていれば62010のステートで代入それぞれ処理。 ; その後コチラに戻ってきて再び指定して、↑へループ。 ; 指定が600以上になったら処理停止。↓へ。 ;★var上限は、使用するVarの上限に合わせておくとループ回数を減らせて処理の軽減ができます。 [State a]; type = ChangeState Value = 62100 ;待機ステートへ Trigger1 = 1 ;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ [Statedef 62100];待機ステート type =S [State a];とりあえず常時適応 type = turn Trigger1 = root,facing!=facing ; ★ 応用編 ★ ;↑の振り向き処理をさせず、認識するコマンドの方向全てをHelperのCommandにし向きによって左右を切り替えると、 ; 振り向き後に振り向いた後のコマンドが発動するようになります。全てのコマンドに適応する必要がありますが。 ;例:真空波動コマンドを入力中に振り向き最後のボタンを押すと、mugenの仕様上真空波動コマンドがそのまま出る。 ; 一見便利に見えるが「振り向く直前からダッシュコマンドを入力」すると、mugenの仕様上 ;  ダッシュの方向が反転してしまい、バクステのつもりが前ダッシュになるという事もある。 ; それを防ぎたい場合、コマンド認識用Helperの向きを固定し、 ;triggerAll = (helper(3),command = "FF"&&facing=1||helper(3),command = "BB"&&facing=-1) ;★command = "FF" ;triggerAll = (helper(3),command = "BB"&&facing=1||helper(3),command = "FF"&&facing=-1) ;★command = "BB" ; といった記述でダッシュコマンドを管理する必要がある。 ;キャンセル用の先行入力関係で「本体側で向きを確認する」か「先行入力装置側でも向き判別・保存する」かは好みによる。 ;先行入力側で向きを保存した場合、振り向き直前に入力すると上記のバクステのつもりが前ステになるケースが出る。 ;ただ振り向き前に入力を完了しておけばそっちが出る〜という仕様にしたいなら装置側でも判別させてもいい。 [State a] type = posset Trigger1 = 1 X = floor(root,pos X) Y = floor(root,pos Y) [State 60000, AssertSpecial] Type = AssertSpecial Trigger1 = 1 flag = Invisible ;インヴィシブル 見えなくする。 flag2 = Noshadow ;ノーシャドウ 影を表示しない。 ignorehitpause=1 [State 60000, NotHitBy];攻撃に当たらないよう。 Type = NotHitBy Value = SCA Trigger1 = 1 IgnoreHitPause = 1 [State a];リセット用 type = varrangeset Trigger1 = 0 ;基本使わない Trigger1 = root,Ctrl && root,time > 1 ;コントロールが戻った時とか(Time>1は戻った直後・行動できる直前に反応させないため。) value = 0 ;リセット first= 10 last = 59 ;特定Varの特定スロットをリセットしたい場合は、 ; Cmdに追加する記述→ ||(Helper(1*9),var(11)&992) ;の&xxxx部分を使って ;var(zz) = ( var(zz) | xxxx ) - xxxx ;という代入を行えば特定のスロットをリセットできます。 ;varsetのステコンでもnullステコンの:=でも。 ;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ [Statedef 62200];減算ステート・開始 type =S [State a]; type = ChangeState Value = 62201 ;ループステートへ Trigger1 = 1 || fvar(0) := 10 ;開始Var番号※とりあえず10番から [Statedef 62201];減算ステート・ループ用 type =S [State a]; Type = Null Trigger1 =( var( floor(fvar(0)) ) & 1073741824 );63F用フラグ確認 Trigger1 = fvar(4) := 63 ;調査範囲,63F用 Trigger2 = fvar(4) := 31 ;調査範囲,31F用 ;--bit-31 =(1073741824)= 5分割時このbitを代入しておき、減算処理時に、このbitがある場合5分割用の処理に。 [State a];減算処理 31でも63でも可 Type = Null TriggerAll = 1 || fvar(5) := floor(fvar(0)) ;置換が面倒なので代入 TriggerAll = var(0) := Floor(fvar(4)) ;管理処理 Trigger1 =1|| var(0) := var(0) * 1 Trigger1 =0&& var( Floor(fvar(5)) ) := var( Floor(fvar(5)) ) - ((var( Floor(fvar(5)) )&var(0))!=0) *(var(0)/Floor(fvar(4))) Trigger2 =1|| var(0) := var(0) * Floor(fvar(4)+1) ;ズラす Trigger2 =0&& var( Floor(fvar(5)) ) := var( Floor(fvar(5)) ) - ((var( Floor(fvar(5)) )&var(0))!=0) *(var(0)/Floor(fvar(4))) Trigger3 =1|| var(0) := var(0) * Floor(fvar(4)+1) ;ズラす Trigger3 =0&& var( Floor(fvar(5)) ) := var( Floor(fvar(5)) ) - ((var( Floor(fvar(5)) )&var(0))!=0) *(var(0)/Floor(fvar(4))) Trigger4 =1|| var(0) := var(0) * Floor(fvar(4)+1) ;ズラす Trigger4 =0&& var( Floor(fvar(5)) ) := var( Floor(fvar(5)) ) - ((var( Floor(fvar(5)) )&var(0))!=0) *(var(0)/Floor(fvar(4))) Trigger5 =1|| var(0) := var(0) * Floor(fvar(4)+1) ;ズラす Trigger5 =0&& var( Floor(fvar(5)) ) := var( Floor(fvar(5)) ) - ((var( Floor(fvar(5)) )&var(0))!=0) *(var(0)/Floor(fvar(4))) Trigger6 =!( var( floor(fvar(0)) ) & 1073741824 );63f用でない。 Trigger6 =1|| var(0) := var(0) * Floor(fvar(4)+1) ;ズラす Trigger6 =0&& var( Floor(fvar(5)) ) := var( Floor(fvar(5)) ) - ((var( Floor(fvar(5)) )&var(0))!=0) *(var(0)/Floor(fvar(4))) ;■ここでやってること ; >指定したVarにbit演算で「特定の範囲に数値があるか」を調べ、ある場合はその範囲を-1する。 ; >それを繰り返し、全ての59までのVarを調査する。 [State a]; type = ChangeState Value = 62201 ;ループ Trigger1 = 1 || fvar(0) := floor(fvar(0)+1) Trigger1 = fvar(0) < 60 [State a]; type = ChangeState Value = 62000 ;初期ステートへ Trigger1 = 1 ;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ;メモ ;使用Var ;var(0) = Temp用 ;var(1) = Command代替 ;var(2〜8) = 空き,temp処理 ;var(9) = 代替タメコマンド ;var(10〜) = 全て先行入力管理Var(上限を減らせば後ろのVarを開けることは可能。) ;fvar(0~9) = 代替Temp用 ;fvar(1x) = 一回転コマンド用 ;fvar(2x) = 一回転〜タメコマンド処理用 ;fvar(3x) = タメコマンド用