2

ロードオブザリングオンライン(LOTRO)ベータLuaスクリプト機能で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

そしてここに出力があります:

player:GetClass():24
Turbine.Gameplay.Class.Captain:24
あなたはキャプテンを演じています

4

2 に答える 2

3

これらの値に使用できるメタテーブルのリストがある場合は、getmetatable(obj)関数を使用してそれらのメタテーブルを取得し、既存のメタテーブルと比較できます。LOTRO APIにアクセスできないと、このテーマについてこれ以上言うことはできません。どこで読むことができますか?

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

于 2011-01-12T14:29:58.810 に答える
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の文を「;」で終わらせる必要はありません。

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

于 2011-01-16T00:22:28.293 に答える