2006/04/04

ごにょごにょやってて気づいたこと #002


寝落ち姫の所をみて発覚したこと。
GetVに渡すパラメータでV_HOMUNTYPEとホムのIDを渡すとホムの種類が返るんですが、
IDにMobのIDを渡すとMobの種類を示すIDが返るそうな。

今の時点で欲しいのは草とプラントボトル・マインボトルのIDが欲しいので早速やってみることに!
デフォルトAIのOnATTACK_OBJECT_CMD 関数の中にTraceAIで関数に渡されたidに対して
GetV関数で情報を取得してTraceAIでファイルに保存。

結果、とれました(・ω・)なんてザルな実装だ!

とりあえず取れたものを定数にしても良かったんですが、配列にして添え字でIDを参照するようにしました。

--草のIDを求めるための定数 GRASS_NOT = 0 -- 草じゃない GRASS_GREEN = 1 -- 緑草 GRASS_RED = 2 -- 赤草 GRASS_YELLOW = 3 -- 黄草 GRASS_WHITE = 4 -- 白草 GRASS_BLUE = 5 -- 青草 GRASS_SHINE = 6 -- 輝く草 --ボトル系MobのIDを求めるための定数 BOTTLE_NOT = 0 -- ボトル系Mobじゃない BOTTLE_P01 = 1 -- マンドラゴラ BOTTLE_P02 = 2 -- ヒドラ BOTTLE_P03 = 3 -- フローラ BOTTLE_P04 = 4 -- フェアリーフ BOTTLE_P05 = 5 -- ジオグラファー BOTTLE_M01 = 6 -- マリンスフィアー -- 草のID -- 草のID local ID_GRASS = { -- 草(枝Mobは異なるらしい?) [GRASS_GREEN] = 1080, -- 緑草 [GRASS_RED] = 1078, -- 赤草 [GRASS_YELLOW] = 1081, -- 黄草 [GRASS_WHITE] = 1082, -- 白草 [GRASS_BLUE] = 1079, -- 青草 [GRASS_SHINE] = 1083 -- 輝く草 } -- プラント・マインボトルMobのID local ID_BOTTLE = { -- ボトル系Mob(プラント、マイン) [BOTTLE_P01] = 1589, -- マンドラゴラ [BOTTLE_P02] = 1579, -- ヒドラ [BOTTLE_P03] = 1575, -- フローラ [BOTTLE_P04] = 1555, -- フェアリーフ [BOTTLE_P05] = 1590, -- ジオグラファー [BOTTLE_M01] = 1142 -- マリンスフィアー }
配列をlocal宣言しているのは関数作って判定だけさせるので直接この値を他のファイルから呼び出す必要はないかなと思って。 で、作った関数がこれ
--配列内(table)の値と渡された値(value)がマッチするか --マッチしたときはそのときの添え字を返す、見つからなかった場合defvalueに設定された値を返す --配列が空の場合-1を返す --配列の途中にnilがあると処理が終了してしまうので注意 local function isCheck(value, table, defvalue) local i, v local result = defvalue if (table == nil) then result = -1 else for i, v in ipairs(table) do if (value == v) then result = i break end end end return result end --対象のidが草がどうかチェック、渡すidはGetV関数のV_HOMUNTYPEで取得した値 --草の場合どの草かを返す、0は草じゃない function isGrass(id) return isCheck(id, ID_GRASS, GRASS_NOT) end --対象のidがプラントボトル・マインボトルのMobかチェック、渡すidはGetV関数のV_HOMUNTYPEで取得した値 --草の場合どのMobかを返す、0はプラントのMobではない function isBottle(id) return isCheck(id, ID_BOTTLE, BOTTLE_NOT) end
汎用の配列内の値をチェックする関数と草かプラントかを返す関数。 これで草を殴ったりプラントのMobを殴らない設定ができますね(・ω・) ※2006/04/06 白い草関連の定数と値を追加、ぬけてました

-- 注意 --

ここでごそごそとやってるコードはあくまで評価用とか実験用です。
ご自身のコードに貼り付けたりするのは自由ですが、貼り付けたプログラムを第三者に配布する場合は、
大変お手数とは思いますが、事前にご一報頂きますようお願いします。
また、プログラムを利用したことで損害や障害が発生したとしても、
当方では一切の責任を負いかねますのでよろしくお願いします。


投稿者 Merchant : 23:08 | コメント (4) | トラックバック(0) | カテゴリ [Lua ]

ごにょごにょやってて気づいたこと #001

どうやら関数外の場所で宣言したlocal変数や配列のスコープはそのファイルの中全体のもよう。
しかも値を保持してるっぽいので変数の実態をいじらせることはさせずにできそう。
ただ、宣言を再度通すと値が吹っ飛んでいるっぽい。

ためしに書いてみたもの
local MyStatus = {} -- ステータスを保持する配列 MY_STATE = 0 -- 現在のステータス MY_ID = 1 -- ホムンクルスのID MY_OWNERID = 2 -- ホムンクルス召喚者のID MY_ENEMY = 3 -- 攻撃対象MobのID MY_POSX = 4 -- 現在の位置X MY_POSY = 5 -- 現在の位置Y MY_PATX = 6 -- パトロール先X MY_PATY = 7 -- パトロール先Y MY_SKILL = 8 -- 使用するスキル MY_SKILLLV = 9 -- 使用するスキルのレベル --ステータス用配列から値を取得 --引数indexには取り出したい値の添字を与える --値がnilの場合はnilを返す function GetMyStatus(index) return MyStatus[index] end --ステータス用配列へ値を設定 --引数indexには設定したい配列の添字、valueには値を与える --返り値は設定した値、添え字がnilの場合nilを返す function SetMyStatus(index, value) if (index ~= nil) then MyStatus[index] = value return MyStatus[index] end return nil end --添字MY_IDにセットされた値を返す --値がnilの場合はnilを返す function GetMyID() return GetMyStatus(MY_ID) end
これを単一のファイルにしてai.luaとかでインポートするとちゃんとGet,Setの関数が値を出し入れできてるので良い感じ。 個人的にはグローバル変数とかで直接入れるのもいいと思うけど、 スペルミスすると結構デバックに時間食ったりするのであんまり好きじゃないので。

-- 注意 --

ここでごそごそとやってるコードはあくまで評価用とか実験用です。
ご自身のコードに貼り付けたりするのは自由ですが、貼り付けたプログラムを第三者に配布する場合は、
大変お手数とは思いますが、事前にご一報頂きますようお願いします。
また、プログラムを利用したことで損害や障害が発生したとしても、
当方では一切の責任を負いかねますのでよろしくお願いします。


投稿者 Merchant : 01:46 | コメント (0) | トラックバック(0) | カテゴリ [Lua ]

そっとふれるもの もとめることに夢中で 運命さえまだ知らない いたいけな瞳

というわけでヽ(・ω・)ノ

中の人がちょろっとデフォルトAIをいじってあまえんぼこゆきに変身しました。
常に1セルとなりくらいについてくるように(*'ω')
まぁ、ラグとかなんとかで離れる事はありますが、そのときは私が待ちますよ!
マップ移動や呼び出したときに1セルずれてくれるようになったのでポーションピッチャーとかやりやすいです。

中|ω・)<デフォルトのコードはよーわからん
中|ω・)<それにしても、全画面でLuaのエラー画面が出ると大変ですね、エラー解消するまでクライアントの画面真っ黒です。
中|ω・)<それでも/hoai打てばデフォルトAIに切り替わるんですが、デバック中はウィンドウモードで起動しないとだめですねー

はい、というわけで、育成です。
別に戦闘部分に手を入れているわけではないので普通に私が殴ったのをつっつくか、命令して突っつかせるかなんですが。

レベルが上がってちょっと強くなりましたね。

追尾のテストをやりながら突かせているとレベルアップしましたよ、Lv16ですね。

こゆきさんや、ウチで生活するならAspdとFleeを上げなきゃいかんよ?
こゆき|・ω・)

んで、昨日気が付いたんですが…

「疎疎しい」から「気まずい」になってました、結構エサやったなぁーガレット大体170位?
それにしても、生まれてきたときは猜疑心の塊ですかっ、ホムたちはっ。

投稿者 Merchant : 01:08 | コメント (3) | トラックバック(0) | カテゴリ [2.1.こゆき, 2.ゆみ ]



(c)2006 Gravity Corp. & Lee Myoungjin(studio DTDS). All Rights Reserved.
(c)2006 GungHo Online Entertainment, Inc. All Rights Reserved.
当コンテンツの再利用(再転載・配布など)は、禁止しています。