2006/04/04
ごにょごにょやってて気づいたこと #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 : カテゴリ [Lua ]
トラックバック
このエントリーのトラックバックURL:
http://merchant-murmur.info/mt/mt-tb.cgi/387
※トラックバックを行った際タイムアウト(HTTP error: 500)が起こる場合もありますがトラックバックは正常に行えている場合があります。
エラーが発生した場合はお手数ですが、一度トラックバックを行ったこちらのページをご確認ください。
※トラックバック重複防止用のプラグインを導入しています。
重複ではないのにトラックバックが行えない場合はお手数ですがご連絡いただけますようお願いします。

