2011-01-12 3 views
2

Я вызываю функцию API в функции создания скриптов Lord of the Rings Online (LOTRO) Beta Lua. Метод API возвращает «тип», называемый ClassAttributes, который будет включен в данный тип «Типы» класса. Я говорю «типы», потому что, когда я вызываю type() на возвращаемое значение, он говорит о своей таблице.Можете ли вы сравнить «типы» таблиц или метаданных в Lua?

Есть ли способ проверить тип или металируемый тип? например:

local returnedTable = player:GetClassAttributes(); 

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

UPDATE Следующий код является то, что я использую:

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
Вы играете капитан

ответ

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

Если у вас есть список возможных метаданных для этих значений, вы можете получить их metatables с помощью getmetatable(obj) function и сравнить их с теми, которые у вас уже есть. Без доступа к API LOTRO я не могу сказать больше о предмете: где я могу его прочитать?

Это, конечно же, предполагает, что таблица, возвращаемая функцией GetClassAttributes(), имеет метатебель сам по себе и что существует возможность различать ее метатебель и таблицы атрибутов других классов.

+0

Вот версия документов API: http://www.lotrointerface.com/wiki/LocalPlayer –

+0

Так что я слышу, что это может быть невозможно? Это очень удивительно для меня, как новичок в Lua! –

+0

Вот сообщение в форуме, чтобы загрузить (бета) API. –