2

我在指环王在线 (LOTRO) Beta 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

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 语句。

无法测试它。希望它有效。

于 2011-01-16T00:22:28.293 回答
3

如果您有这些值的可能元表列表,则可以使用getmetatable(obj) 函数获取它们的元表,并将它们与您已有的元表进行比较。如果无法访问 LOTRO API,我就不能说更多关于这个主题的内容:我在哪里可以阅读它?

当然,这是假设 GetClassAttributes() 函数返回的表具有自身的元表,并且可以区分它的元表和其他类的属性表。

于 2011-01-12T14:29:58.810 回答