カスタムAI作成方法~AIに使われる命令等

最終更新:

匿名ユーザー

- view
だれでも歓迎! 編集
スマブラXのAIでは2,30の命令を使ってCPの動きを制御しています。
AIScriptpadでは、すでにわかっているコマンドに関してはResourcesフォルダのCommandFormats.txtにしたがって出力します。わかっていないコマンドはRaw関数で表示します。

与える引数は基本的に次のようになります。
~0x18 ゲーム内部の配列インデックス。加減乗除等は配列を介さないと行えません。
0x1000~ ゲーム内関数。キャラの位置や状態などを取得する
0x2000~ ユーザー定義値。AIScriptpadではAddGlobal関数で追加可能。

ただし、ButtonコマンドやLabelコマンドの例外も存在します。

Commands

名前 引数 説明
Raw 第一引数:タイプ
第二引数:コマンドの引数
これはわかっていないコマンドを表示するために使うデフォルトの関数です。
Finish 現在のAIを終わらせる
SetVar 第一引数:インデックス
第二引数:コマンド引数
ゲーム内配列の指定されたインデックスの値を第二引数にセットする。
Label (第一引数:ラベルID) Seekのラベルをセットする
Return 後述
Seek (第一引数:ラベルID) 後述
If 第一引数:条件
以降は可変長
後述
IfNot 第一引数:条件
以降は可変長
条件を満たさないとき、後の処理を行う
Else If,IfNotの処理を行わないとき、代替の処理を行う
EndIf If,IfNotのブロックを終わる。ElseはIf,IfNotの一部として考える
Stick オーバーロード1:第一引数:X
オーバーロード2:第一引数:X、第二引数:Y
スティックの倒し方を-1~1の範囲で指定。人間くさい動きをさせるためなのかたまにミスることあり
Button 第一引数:フラグ 指定されたボタンの入力を行う。引数はフラグで、指定されたボタンは完璧な同時押しがされる。
1ビット目:A、2ビット目:B、3ビット目:XかY、4ビット目:RかL
Add 第一引数:インデックス
第二引数:値
指定したインデックスに格納されている値に第二引数で指定した値を加え、同じインデックスに戻す。プログラミング言語で言う+=
Sub 第一引数:インデックス
第二引数:値
指定したインデックスに格納されている値に第二引数で指定した値を引き、同じインデックスに戻す。プログラミング言語で言う-=
Mul 第一引数:インデックス
第二引数:値
指定したインデックスに格納されている値に第二引数で指定した値を掛け合わせ、同じインデックスに戻す。プログラミング言語で言う*=
Div 第一引数:インデックス
第二引数:値
指定したインデックスに格納されている値に第二引数で指定した値で割り、同じインデックスに戻す。プログラミング言語で言う/=
Jump 後述
Or 第一引数:条件
以降は可変長
後述
OrNot 第一引数:条件
以降は可変長
後述
And 第一引数:条件
以降は可変長
後述
AndNot 第一引数:条件
以降は可変長
後述
CallAI オーバーロード有り 指定した引数のAIにジャンプする。戻ってこない?
TargetStick 第一引数:X 一瞬スティック入力をする。ミスらない
Seek2 (第一引数:ラベルID) Seekとまったく同じ

Return,Seekの挙動について

 Seekは引数もちと引数を持っていないものがあります。引数もちは探したラベルの位置まで即座にジャンプします。Returnをその後に使うとジャンプ元に帰ることができます。一方、引数を持たないものの場合、Jumpを使うとジャンプが可能ですが、帰れません。ちなみに、引数なしのSeekは引数を持っているラベルと持っていないラベルを区別しません。
 Returnは使うといったんAIが停止しし、1フレーム後に再開します。再開前、Seekを使っていた場合には直後のラベル内を、Seekを使わないでReturnを使用した場合、現在のラベル先頭に戻ります。

If,IfNot,Or,OrNot,And,AndNot

 これらは第一引数に条件をとります。条件は以下のようになります。
名前 追加の引数 説明
Distance(0x1001) 第一引数:距離 距離が引数より大きいときtrue
Frames(0x1002) 第一引数:フレーム数 現在のAI開始時から引数のフレームよりフレーム数が経っていたらtrue
IsAttacking(0x1003) 敵が攻撃時にtrue
GT(0x1007) 第一引数:比較元
第二引数:比較対象
比較元が比較対象より大きいときにtrueを返す
LT(0x1008) 第一引数:比較元
第二引数:比較対象
比較元が比較対象より小さいときにtrueを返す
GE(0x1009) 第一引数:比較元
第二引数:比較対象
比較元が比較対象より大きいときか等しいときにtrueを返す
LE(0x100A) 第一引数:比較元
第二引数:比較対象
比較元が比較対象より小さいときか等しいときにtrueを返す
CalledAs(0x100C) 第一引数:AIのID 指定したIDでジャンプしてきたかどうかを返す

ゲーム内関数

名前 説明
CharDirection(0x1002) 自分の向き。左向きだと-1、右向きだと1
oPos(0x1003) 敵が左にいるとき-1、右にいるとき1
Xcoord(0x1004) 自分のX座標
oXcoord(0x1005) 敵のX座標
oEdgeDist(0x1006) 敵の方向にある崖までの自分からの距離
FrameCount(0x1007) 現在のAIが始まってからの経過フレーム数
Ycoord(0x100B) 自分のY座標
oYcoord(0x100C) 敵のY座標
State(0x100F) キャラの状態を表す
(通常キャラ)1:吹っ飛び、2:通常
(多段ジャンプキャラ)4:ジャンプ、5:吹っ飛び、6:通常
EdgeDist(0x1010) 自分が向いているほうにある崖までの距離
oHorizontalVelocity(0x1016) 敵の水平方向の速度
oVerticalVelocity(0x1017) 敵の垂直方向の速度

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

目安箱バナー