AIの常時起動方法




AIスイッチの仕様

MUGENにはプレイヤー操作とCPUを区別するトリガーが存在しない。
そのため現在では、コマンド入力を監視し、その結果からキャラ独自のAIを起動するといった手法がAIスイッチの主流となっているが、
コマンド入力を監視する関係上、AIが起動するまでに避けることが出来ないタイムラグが発生する。

よって、トナメ動画用に対戦を撮影する際などに、AIが起動していない状態が長いとキャラの良さを発揮出来なかったり、
特にチーム戦では先に勝ち残りAIが起動しているキャラが、後続のAIが入ってない相手を無双してしまう場合がある。
このような事態を避けたい場合は常時AIONにしてから撮影すると良いだろう。

なお、プレイヤー操作とCPUを区別するトリガーを無視するので、当然プレイヤー操作が行えなくなるため注意すること

常時AION化

オプションを弄る

常時AION化をオプションとして設定しているキャラもいる。このようなキャラは指示に従えば、AIを常時起動させることができる。

例えばCMDファイルにtriggerにAIコマンドの書かれている欄の最後の部分に
trigger○○ = 1
という風に追加すればOK

トリガーを弄る(通常AIスイッチ)

注意:[StateDef -3]、[StateDef -2]、[StateDef -1]にkeyctrl=1が指定されたType=Helperのステコンがあるキャラは
ヘルパー式AIスイッチを併用している場合があります。下記のヘルパー式AIの項目も読んで下さい。

1. 常時AION化したいキャラのcmdファイルを開く

2. "AI**"や"CPU**"といった名前のコマンドが羅列されているので
 そのコマンド名でCNSファイル内の[StateDef -1]、[StateDef -2]、[StateDef -3]を検索する。
("AI**"や"CPU**"といったコマンド名が無い場合は下記の トリガーを弄る(ヘルパー式AIスイッチ) へ)

3. トリガーにcommand="AI**"が指定されているType=VarSetのステコンがあるので
 最も大きいtrigger(n)に+1した
  trigger(n+1)=1
 または
  trigger(n+1)=roundstate=2
  trigger(n+1)=ctrl
 を作成する
基本的には前者でいいが、分身が発生する場合は後者を試してみよう。
また後者の方法でも分身が発生するようなら、
  triggerall = !ishelper
を加えることで解決することもある。

例:
[STATE AIスイッチ]
type=VarSet
trigger1=command="AI1"||command="AI2"||command="AI3"||command="AI4"||command="AI5"
trigger2=command="AI6"||command="AI7"||command="AI8"||command="AI9"||command="AI10"
trigger3=command="AI11"||command="AI12"||command="AI13"||command="AI14"||command="AI15"
trigger4=1
var(59)=1

トリガーを弄る(ヘルパー式AIスイッチ)


"AI**"や"CPU**"のコマンドが存在しないキャラのAIスイッチは、ヘルパー式のAIスイッチを利用しています。

1. 常時AION化したいキャラのcmd、またはcnsファイルのAI記述を開く。
 (たいていの場合は[StateDef -1]または[StateDef -3]に記述されている)

2. 全てのAI記述に共通したvar(**)を探す。
例:
[STATE AI]
type=ChangeState
value=200
triggerall= var(59)
trigger1=random<100
trigger1=ctrl&&StateType=S
trigger1=p2bodydist x<90

3. 「var(**)」か、「v = **」でCNSファイルを検索すると、トリガーに
   command="a"!=root,command="a"
  のように、基本的なコマンドを比較しているType=VarSetか、Type=ParentVarSetのステコンがあるので
  最も大きいtrigger(n)に+1した
   trigger(n+1)=1
  を作成する
例:
[STATE AI]
type=ParentVarSet
trigger1=parent,command="a"!=command="a"
trigger2=parent,command="b"!=command="b"
trigger3=parent,command="c"!=command="c"
trigger4=parent,command="x"!=command="x"
trigger5=parent,command="y"!=command="y"
trigger6=parent,command="z"!=command="z"
trigger7=parent,command="start"!=command="start"
trigger8=1
v=59
value=1