2011-01-12 4 views
2

私は、Lord of the Rings Online(LOTRO)のBeta Luaスクリプト機能でAPI関数を呼び出しています。 APIメソッドは、指定されたクラス属性 "型"の上にあるClassAttributesと呼ばれる "型"を返します。返り値にtype()を呼び出すと、それはテーブルと呼ばれるので、私は "型"と言う。Luaのテーブルまたはメタテーブルの "タイプ"を比較できますか?

タイプまたはメタタイプを確認する方法はありますか?例えば:

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 

、ここで出力されます::

local returnedTable = player:GetClassAttributes(); 

if (returnedTable.Name == "CaptainClassAttributes") 
    print("You are playing a captain"); 
end 

UPDATE 次のコードは、私が使用するものです

プレーヤー:のGetClass():24
タービン.Gameplay.Class.Captain:24
あなたはキャプテンをプレイしています

答えて

3

APIドキュメントはちょっと混乱しますが、探しているものが見つかったと思います。

local player = Turbine.Gameplay.Player 
if (player:GetClass() == Turbine.Gameplay.Class.Captain) then 
    print("You are playing a captain") 
end 

キャプテンは、ドキュメントからの読み取りと同じくらい整数であるGameplay.Classテーブルのメンバーである:プレイヤーはキャプテンである場合 次のコードは、あなたを教えてください。

注:Lua文を ";"で終了する必要はありません。

テストできませんでした。それがうまくいくことを望みます。

+0

私はセミコロンが必要ないことを知っています、私はそれが好きです。 PHPで始まってC#に移行しました:D –

+0

これはうまくいったと思いますが、少し後でテストします... –

+0

これはうまくいきました!ありがとう! –

3

これらの値の可能なメタテーブルのリストがある場合は、getmetatable(obj) functionでメタテーブルを取得し、既存のものと比較することができます。 LOTRO APIにアクセスすることなく、私はそのテーマについてもっと詳しく言えません。どこで読むことができますか?

もちろん、GetClassAttributes()関数によって返されたテーブルはそれ自身のメタテーブルを持ち、メタテーブルと他のクラスの属性テーブルを区別することができます。

+0

ここに、APIドキュメントのバージョンがあります:http://www.lotrointerface.com/wiki/LocalPlayer –

+0

私は聞いていることは、それが可能でないかもしれないということですか?それはLuaの新人として私にとってかなり驚きです! –

+0

(beta)APIをダウンロードするためのフォーラムポストがあります。 –

関連する問題