LUAのテーブルやメタテーブルの「タイプ」を比較できますか?
質問
Lord of the Rings Online(Lotro)Beta Lua Scripting機能のAPI関数を呼んでいます。 APIメソッドは、指定されたクラス属性「タイプ」にあるClassAttributesと呼ばれる「タイプ」を返します。私が電話するとき、私は「タイプ」と言います type()
返品値については、テーブルが表示されます。
私がタイプ、またはメタテイター型のタイプをチェックする方法はありますか?例えば:
local returnedTable = player:GetClassAttributes();
if (returnedTable.Name == "CaptainClassAttributes")
print("You are playing a captain");
end
アップデート次のコードは私が使用するものです:
player = Turbine.Gameplay.LocalPlayer.GetInstance();
Turbine.Shell.WriteLine("player:GetClass():" .. player:GetClass());
Turbine.Shell.WriteLine("Turbine.Gameplay.Class.Captain:" .. Turbine.Gameplay.Class.Captain);
if (player:GetClass() == Turbine.Gameplay.Class.Captain) then
Turbine.Shell.WriteLine("You are playing a captain");
end
そして、これが出力です:
プレーヤー:getClass():24
Turbine.gameplay.class.captain:24
あなたはキャプテンを演じています
解決
APIドキュメントは少し混乱していますが、あなたが探しているものを見つけたと思います。次のコードは、プレーヤーがキャプテンであるかどうかを伝える必要があります。
local player = Turbine.Gameplay.Player
if (player:GetClass() == Turbine.Gameplay.Class.Captain) then
print("You are playing a captain")
end
CaptainはGamePlay.classテーブルのメンバーです。これは、ドキュメントから読んでいる整数数です。
注: ";"でlua文を終了する必要はありません。
テストできませんでした。それがうまくいくことを願っています。
他のヒント
これらの値に対して可能なメタテーブルのリストがある場合は、 GetTatuatable(OBJ)関数 そして、それらをすでに持っているものと比較してください。 Lotro APIにアクセスしなければ、このテーマについて詳しくは言えません。どこで読むことができますか?
それは、もちろん、getClassattributes()関数によって返されたテーブルがそれ自体がメタテイブルであると仮定しており、そのメタテイブルと他のクラスの属性テーブルを区別することが可能であると仮定しています。