スポンサーリンク

AI.lua

↓よろしければボタンをご利用ください。

構造

まず、大まかなブロックに分けると次のようになります。

AI.lua

解説

ブロック1

次のブロック2に「ホムが何の行動中かを記憶しておくためのフラグ用変数 MyState」があるのですが、
MyState = 3 と書かれているのを見て何をしているときの数字だったか思い出すのは大変です。

MyState = ATTACK_ST と書いてあれば、戦闘中を表す 3 が入っているのがすぐにわかりますよね。
見やすくするためのひと工夫です。

ちなみに MyState は、if文で条件分岐させてホムの行動を切り替えるために使います。
一番下の関数 AI(myid) の中にあります。

OnATTACK_ST () の戦闘処理の中に、
敵を倒して姿が見当たらなくなったら、次はif文で敵を探す行動をさせるため、
MyState = IDLE_ST と変更する処理があります。

ブロック2

必要な情報を入れておくための変数。
グローバルなのでどこからでも値を変更できます。

グローバルとかプライベートってなんだ、という方は、
プログラム言語自体の話になるので勉強してきてね。

ブロック3

「Alt + 右クリック」などの、プレイヤーが手動で命令したときの処理が書かれてます。

ブロック4

状況によって、どんな行動をすればいいか書いてある部分。
ブロック1の説明にあるMyStateの部分を見てください。

ブロック5

敵を探す処理が書いてある部分。

リーフとアミストルなら非先行型、フィーリルとバニルミルトなら先行型の関数を呼ぶ
A 非先行型(ホムを狙っていれば敵とする)
B 先行型(敵を探す)

ホムの種類に関係なく勝手に戦闘しないようにするなら、
GetMyEnemy (myid) を変更すればよいのです。

ブロック6

ホムンクルスAIのメイン部分。

ROの本体(クライアント)はホムを召喚すると、
このメイン関数だけをひたすら繰り返し実行します。

最低でもこの関数だけ書いてあれば、エラーが出ることなくホムを召喚できます。

他の関数はどうするのかというと、このメイン関数の中から呼び出して使います。

ちなみに、C言語で作ったソフトウェアのexeを起動すると、
Main() という関数を繰り返し実行しています。

詳しくはコチラ
プログラムの仕組み

ブロック1の説明にもありますが、
MyState を使って条件分岐することでホムの行動を切り替えています。

スポンサーリンク

↓よろしければボタンをご利用ください。

↓更新情報のチェックにご利用ください。