ctrl入る前に、 RoundState = 2 になるんだよね。
だから、 stateno = 0 && !ctrl なんてトリガーにしてるとフライングの原因になるという・・・
多分バグ(・ω・`)ライフバー依存かもね → ライフバー依存でした
修正:ctrlが入るフレームはライフバー依存で、ctrl.timeがその時間を表す。
RoundState = 2についてだが、スキップをするかどうかでstatenoが変わる。
・スキップしない場合
stateno=5900>あとのステートは[statedef 5900]内のchangestate次第
changestateがない場合は,そのまま
・スキップした場合
stateno=0
ラウンド開始コールとともにstateno = 0 & ctrl = 1になる
スキップしないときのstatenoは最近知ってちょっとびっくりした。今更考えると当たり前感
フライング防止としては、
[state -3,ctrl確認]
type = varset
trigger1 = var(*任意の数字*) = 0
trigger1 = ctrl && RoundState = 2
var(*任意の数字*) = 1
[state -3,ctrl確認リセット]
type = varset
trigger1 = var(*任意の数字*) = 1
trigger1 = RoundState != 2
var(*任意の数字*) = 0
こんな感じに変数作って、この変数をトリガーに追加すること。
変数1つ使っちゃうんで難しいところなんだけど、確実。
置く場所は、常時監視ステート(-1~-3)か常駐ヘルパーのステートかなー
常時ステートなら確実性がある。
常駐ヘルパーはヘルパーが出ないときがあるかもしれないから確実性は減るけど、本体の変数を使わないからお得。
以前書いたような書いてないような。とりあえず載せておく
追記
ctrl確認の変数をトリガーに追加するのは、 stateno = 0 && !ctrl がトリガーに入っているものと、type = ctrlset のステコンに付ければ十分なはず
AI作るときに、ガードとかにstateno = 0だけを付けてしまわないように注意。
付けるなら、上記の変数を作って、条件に加えましょう。
PR
この記事にコメントする