スポンサーリンク

用意されている関数

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

敵が遠ければ近づく、などの処理をするためには、
敵がどこにいるのか、座標を調べる必要があります。

何度も使うことになる基本的な処理は、
簡単に使えるように関数として用意されています。

これらの関数をif文などと組み合わせることで、
自由自在にホムの動きを制御できるわけです。

基本関数の一覧と説明

TraceAI (string)

デバッグ用。

ゲーム内のチャットに /traceai と入力すると、
TraceAI.txt というテキストファイルが生成され、文字列が出力されます。

もう一度入力すると停止。

変数の値を出力するときは、string.format を使います。

TraceAI ("文字はダブルクォーテーションで囲む")

MoveToOwner (MyID)

ホムを主人の近辺(適当な位置)に移動させる。
Move()とは違って、ちょっとした障害物なら避けてくれるので便利。

Move (MyID, x, y)

ホムを指定した座標に移動させる。
途中に障害物があると動かない。

Attack (MyID, MOBのID)

ホムに通常攻撃をさせる。
ただし、手が届く距離でなければ失敗する。

GetV (V_***, 対象のid)

対象のいろんな情報を取得するための関数。

GetV (7, MyID) のように、
取得したい情報の種類を数値で指定できるのですが、
後で見たとき、何の情報を取得しているのか思い出すのが大変です。

そこで、Const.lua のブロック2で定数を用意することで、
GetV (V_HOMUNTYPE, MyID) のように書けるようにしています。

これなら一目でホムの種類を取得してるとわかりますね。

情報の種類(V_***)は以下の通り。

GetV (V_OWNER, MyID)
-- 主人のID
X, Y = GetV (V_POSITION, id)
-- 対象の座標
GetV (V_TYPE, id)
-- 種類 (未実装)
GetV (V_MOTION, id)
-- 対象のモーション
GetV (V_ATTACKRANGE, id)
-- 対象の通常攻撃の射程距離 (未実装。現在は1セルに固定)
GetV (V_TARGET, id)
-- 対象が狙っている相手のIDを取得できる
GetV (V_SKILLATTACKRANGE, id)
-- 対象のスキル攻撃の射程距離 (未実装)
GetV (V_HOMUNTYPE, MyID)
-- ホムンクルスの種類
GetV (V_HP, id)
-- HP (ホムンクルスと主人のみ)
GetV (V_SP, id)
-- SP (ホムンクルスと主人のみ)
GetV (V_MAXHP, id)
-- 最大 HP (ホムンクルスと主人のみ)
GetV (V_MAXSP, id)
-- 最大 SP (ホムンクルスと主人のみ)

GetActors ()

主人の視界内のすべての物体のIDを取得する。
最後から二番目はホムのID、最後は主人のIDになる。

おもに索敵の処理で使われる。
ひとつずつ取り出して v に代入するのを繰り返す処理で、敵のIDかどうか調べる。

GetTick ()

現在の時間を取得する。(ミリ秒)
ゲームを起動してからではなく、パソコンを起動してからの時間。

GetMsg (MyID)

Alt + 右クリック でホムに命令したときの必要な情報が返ってくる。

命令の種類によってどんな情報が返ってくるかは、
Const.lua の一番下に複数行コメントアウトでメモ書きされています。

GetResMsg (MyID)

Alt + Shift + 右クリック で予約命令を出したときの必要な情報が返ってくる。

GetMsg() と同じ。

SkillObject (MyID, level, skill, target)

対象指定スキルを実行する。

SkillGround (MyID, level, skill, x, y)

地面指定スキルを実行する。
ただし、地面指定スキルが存在しないので未実装とも言える。

IsMonster (id)

対象のIDがモンスターかどうかを調べる。
MOBなら 1 、そうでなければ 0 が返ってくる。

追加関数

上の基本関数を見ると、
物体の座標を取得する関数はあるのですが、
2つの物体の距離を取得する関数はありません。

GetDistance2 (id1, id2) のように、
必要な情報を入れると欲しい情報が返ってくる関数を、
Util.lua のブロック2で作っています。

GetDistance (x1,y1,x2,y2)

2つの座標の距離を取得する

GetDistance2 (id1, id2)

2つの物体の距離を取得する

GetOwnerPosition (MyID)

主人の座標を取得

GetDistanceFromOwner (id)

主人と物体の距離を取得

IsOutOfSight (主人のID,id)

物体が視界内にまだ存在するか (いる:true / いない:false)
2つの物体の距離が21以上なら false

IsInAttackSight (MyID,id)

ホムの攻撃が物体に届くか (Yes:true / No:false)

スポンサーリンク

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

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