Können Sie die „Typen“ von Tabellen oder Metatables in Lua vergleichen?
Frage
Ich rufe eine API-Funktion in der Herr der Ringe Online (HdRO) Beta Lua Scripting-Funktion. Die API-Methode gibt einen „Typen“ genannt ClassAttributes, die auf den gegebenen Klasse Attribut „Typen“ sein werden. Ich sage „Typ“, denn wenn ich type()
auf dem Rückgabewert nennen, es sagt es ist ein Tisch.
Gibt es eine Möglichkeit für mich, die Art oder Metatabelle Typen zu überprüfen? z.
local returnedTable = player:GetClassAttributes();
if (returnedTable.Name == "CaptainClassAttributes")
print("You are playing a captain");
end
UPDATE Der folgende Code ist, was ich benutze:
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
und hier ist die Ausgabe:
Spieler: GetClass (): 24
Turbine.Gameplay.Class.Captain: 24
Du spielst einen Kapitän
Lösung
Die API-Dokumentation ist etwas verwirrend, obwohl ich glaube, fand ich, was Sie suchen. Der folgende Code sollte Ihnen sagen, wenn der Spieler ein Kapitän:
local player = Turbine.Gameplay.Player
if (player:GetClass() == Turbine.Gameplay.Class.Captain) then
print("You are playing a captain")
end
Kapitän ist ein Mitglied der Gameplay.Class Tabelle, die nur eine ganzzahlige Zahl ist, wie in der Dokumentenlese.
. Hinweis: Sie brauchen nicht einen Lua Satz mit einem beenden „“
konnte nicht testen. Hoffe, dass es funktioniert.
Andere Tipps
Wenn Sie eine Liste der möglichen Metatables für diese Werte haben, können Sie ihre Metatables mit der getmetatable (obj) Funktion und vergleichen sie Sie bereits auf diejenigen. Ohne Zugriff auf die HdRO-API kann ich nicht sagen, mehr über das Thema: wo kann ich es lesen
Das ist natürlich, wird unter der Annahme, dass die Tabelle durch das GetClassAttributes () zurück Funktion hat eine Metatabelle von selbst, und dass es möglich ist zu unterscheiden zwischen ihm Metatabelle ist und die anderen Klassen Attribute Tabellen.