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 : カテゴリ [Lua ]
トラックバック
このエントリーのトラックバックURL:
http://merchant-murmur.info/mt/mt-tb.cgi/388
※トラックバックを行った際タイムアウト(HTTP error: 500)が起こる場合もありますがトラックバックは正常に行えている場合があります。
エラーが発生した場合はお手数ですが、一度トラックバックを行ったこちらのページをご確認ください。
※トラックバック重複防止用のプラグインを導入しています。
重複ではないのにトラックバックが行えない場合はお手数ですがご連絡いただけますようお願いします。
コメント
つ「エミュ鯖のプログラム」
この鯖プログラムのDB郡の中に、普通にMOBのIDとかアイテムのIDとか普通に出ていたりしますよ。
No, 1 投稿者 いつも見てる人 : 2006年04月05日 16:51
まぁ、ウチはそこまでがりがりとMobを判別したいとかはないのでそこまではせんとです。
実際ゲーム内で出現させられるMobですし、あと、あくまでもエミュレータですから本来のサーバとIDが同じかどうかは分かりませんしね。
そのモノ自体を探す手間を考えるとしんどいですしね。
一応ウチは本家本元でしかやってないので…申し訳ないんですがまぁそぉいう話題はお控えくださいませ。
※いろいろあるのでサーバの名前伏せさせていただきました。
No, 2 投稿者 なかのひと : 2006年04月05日 19:18
実はエミュ鯖の鯖プログラム持ってたりすr(1/20
記事中の草のMOBIDを手持ちの鯖プログラムのDBに照らし合わせた結果、
同じでしt(ry
と言うことで抜けていたので、
つ「白い草:MOBID1082」
No, 3 投稿者 いつも見てる人 : 2006年04月05日 20:48
白草は手書きメモの時点でぬけてたようです、フェイで調べてきました。
会社にいたときは書いてたつもりだったんですが、帰宅してから確認したらぬけてましたとさ。
えーと
情報を寄せていただいてて大変申し訳ないんですが、
内容の良し悪しの区別なくエミュレータ関連の発言は止めていただきたく思います。
すみませんがよろしくお願いします。
※ここのコメントは時期をみて削除します、ご了承ください
No, 4 投稿者 中の人 : 2006年04月05日 22:18

