2016-05-15 9 views
2
--The view of the table 
local originalStats = { 
    Info = {Visit = false, Name = "None", Characters = 1}, 
    Stats = {Levels = 0, XP = 0, XP2 = 75, Silver = 95}, 
    Inventory = { 
     Hats = {"NoobHat"}, 
     Robes = {"NoobRobe"}, 
     Boots = {"NoobBoot"}, 
     Weapons = {"NoobSword"} 
     } 
    } 
local tempData = {} 

--The arrangement here 
function Module:ReadAll(player) 
    for k,v in pairs(tempData[player]) do 
    if type(v) == 'table' then 
     for k2, v2 in pairs(v) do 
      print(k2) print(v2) 
      if type(v2) == 'table' then   
       for k3, v3 in pairs(v2) do 
        print(k3) print(v3) 
       end 
      else 
       print(k2) print(v2) 
      end 
     end 
    else 
     print(k) print(v) 
    end 
    end 
end 
nicht herausfinden

Es tut mir leid, aber ich kann nicht scheinen, herauszufinden, wie diese 'ReadAll' Funktion zu ordnen, wo es alle richtigen Statistiken in den richtigen Reihenfolgen zeigen wird . Der Ausgang so etwas wie diese:Kann diese Tabelle Anordnung

Boots 
table: 1A73CF10 
1 
NoobBoot 
Weapons 
table: 1A7427F0 
1 
NoobSword 
Robes 
table: 1A743D50 
1 
NoobRobe 
Hats 
table: 1A73C9D0 
1 
NoobHat 
XP2 
75 
XP2 
75 
Levels 
2 
Levels 
2 
XP 
0 
XP 
0 
+0

Was bedeutet "in den richtigen Reihenfolgen"? Welche Reihenfolge ist richtig? Was ist die gewünschte Ausgabe? –

+0

Ich möchte den ganzen Wert in Info, Statistiken, Hüte, Roben, Stiefel, Waffen ausgeben, ohne den gleichen Wert zu wiederholen, wie würde ich es tun? Ich teste es stundenlang, aber das ist alles, was ich habe. –

+0

Geben Sie ein Beispiel für die Eingabetabelle (tempData [player]) und die Ausgabe, die Sie erhalten möchten. –

Antwort

0

Erwarten Sie nicht, Tisch Felder mit pairs() in irgendeiner bestimmten Reihenfolge durchlaufen werden. Intern sind Lua-Tabellen Hashtabellen und die Reihenfolge der darin enthaltenen Felder wird nicht angegeben. Es wird zwischen den Läufen wechseln, Sie können sie nicht in der gleichen Reihenfolge durchlaufen lassen, wie sie gefüllt waren.
Nur Arrays mit aufeinanderfolgenden Ganzzahlindizes behalten die Reihenfolge ihrer Elemente bei.

+0

Wenn dies nicht möglich ist, ist es möglich, einige, wie die Tabelle zurück, wie sie beim Laden von Datastore, wie würde ich es tun? –

+0

Sie laden einfach, was Sie haben, die genaue Reihenfolge ist nicht wichtig. Es ist nur wichtig, einige Felder mit bekannten Namen und erwarteten Inhalten zu haben. – Vlad

+0

Ich habe eine Antwort geschrieben, aber ich frage mich, ob was ich im folgenden getan habe, wird Reihenfolge ändern? Temp = {} Orig = {Info = {Visit = false, Name = 'None'}, Inventar = {Hat = { 'Basic'}, Robe = { 'Basic'} }} Temp = Orig - Wenn ich die Orig-Werte in Temp verschiebe, ändert sich die Reihenfolge? Wie wäre es, wenn ich die Codes speichere und dann lade? –

1

Hier können Sie alle Elemente drucken, ohne dass doppelte oder Tabellenreferenzwerte angezeigt werden. Wie der Name sagt, druckt diese Funktion alle Elemente innerhalb einer Tabelle, egal wie viele verschachtelte Tabellen darin enthalten sind. Ich kann sie im Moment nicht bestellen, aber ich werde meine Antwort aktualisieren, wenn ich einen Weg finde. Sie können auch die leeren Räume in der Druckzeile loswerden, ich habe es einfach benutzt, damit es besser aussieht. Lass mich wissen ob es funktioniert.

function allElementsInTable(table) 
    for k,v in pairs(table) do 
     if type(table[k]) == 'table' then 
      print(k .. ":") 
      allElementsInTable(v) 
     else 
      print(" " .. k .. " = " .. tostring(v)) 
     end 
    end 
end 

--place the name of your table in the parameter for this function 
allElementsInTable(originalStats) 
1

Nach mehr experimentieren, habe ich das, wenn jemand es will, fühlen Sie sich frei, es zu benutzen.

tempData = { Info = {Visit = false, Name = 'None'}, 
    Stats = {LVL = 0, XP = 0, Silver = 75}, 
    Inventory = { Armors = {'BasicArmor'}, 
    Weapons = {'BasicSword'} } 

    } 


    function Read() 
    for i, v in pairs(tempData['Info']) do 
    print(i..'\t',v) 
    end 
    ---------- 
    for i2, v2 in pairs(tempData['Stats']) do 
    print(i2..'\t',v2) 
    end 
    ---------- 
    for i3, v3 in pairs(tempData['Inventory']) do 
    print(i3..':') 
    for i4, v4 in pairs(v3) do 
     print('\t',v4) 
    end 
    end 
    end 

    Read() 
Verwandte Themen