Ihr Code
local players = {
name = {
isPlayer = true,
isBlocking = false,
username = "yes"
}
}
entspricht
local players = {}
players.name = {
isPlayer = true,
isBlocking = false,
username = "yes"
}
So kein Index 0 oder 1 ist, daher players[0]
und players[1]
sind gleich Null. players[0].username
und players[1].username
verursachen einen Fehler beim Indexieren von Nullwerten.
Um das erste Element einer Tabelle unbekannten Schlüssel zu bekommen einfach dies zu tun:
local key, value = next(someTable)
https://www.lua.org/manual/5.3/manual.html#pdf-next
Wenn mit nil als zweiten Argumente aufgerufen wird, gibt neben einen anfänglichen Index und seine assoziierter Wert.
Beachten Sie, dass:
Die Reihenfolge, in der die Indizes aufgezählt wird nicht angegeben ist, auch für numerischen Indizes.
Wenn Sie sicherstellen möchten, sollten Sie Ihre Datenstrukturen entsprechend ändern. Aber ich kann dir hier nicht viel Rat geben, da ich den Zweck nicht kenne.
Sie könnten eine kleine Funktion wie (vereinfachter) haben:
local function addPlayerToList(playerList, playerLookUpTable, player)
table.insert(playerList, player)
playerLookUpTable[player.name] = #playerList
end
lesen etwas über OOP in Lua für schönere und modernere Ideen.
dort kein Array. Sie können 'players.name.username' erhalten. – moteus
@moteus aber der "Name" kann zu etwas anderem wechseln. Wie soll ich das dann nennen? –
Bitte geben Sie ein genaueres Beispiel an. Kann vorschlagen, z.B. 'players = {{Name = {Benutzername =" Ja ",}}}; print (players [1] .name.username 'Aber nicht sicher, was du brauchst. – moteus