ich habe hier eine Frage bezüglich einer Tabelle in einer Quest.
Meine Tabelle ([MAPINDEX] = {MOB, X}:
PHP Code:
[1] = {101, 1}
[21] = {101, 1}
[41] = {101, 1}
Nun möchte ich bei jedem Kill abfragen, ob der Mapindex einem der Mapindexe der Tabelle entspricht (Die Tabelle wird vorraussichtlich noch sehr viel länger werden). Wenn ja, soll gecheckt werden, ob "npc.get_race()" = Der Mob ist. Wenn auch dies stimmt, soll in die Variable "bsp" X gespeichert werden.
ich habe hier eine Frage bezüglich einer Tabelle in einer Quest.
Meine Tabelle ([MAPINDEX] = {MOB, X}:
PHP Code:
[1] = {101, 1} [21] = {101, 1} [41] = {101, 1}
Nun möchte ich bei jedem Kill abfragen, ob der Mapindex einem der Mapindexe der Tabelle entspricht (Die Tabelle wird vorraussichtlich noch sehr viel länger werden). Wenn ja, soll gecheckt werden, ob "npc.get_race()" = Der Mob ist. Wenn auch dies stimmt, soll in die Variable "bsp" X gespeichert werden.
Wer kann mir helfen?
MfG
Hey,
auf die schnelle haett ich es jetzt so gemacht:
PHP Code:
when kill begin local tab = { [1] = {102, 1}, [21] = {103, 1}, [41] = {101, 1} } local mapIndex = pc.get_map_index() if tab[mapIndex] and npc.get_race() == tab[mapIndex][1] then pc.setqf("VARIABLEX",tab[mapIndex][2]) -- variable X speichern else chat("Der Mapindex/Mob ist nicht in der Tabelle vorhanden!") end end
Werde ich mal testen Was ist, wenn ich den MapIndex 2 mal habe?
MfG
Dann wird denke mal der erste aus der Table genommen.
Ich hab die Quest jetzt nur so nach der Tabelle gemacht.
Dachte du gibst pro Mapindex nur eine Mobvnum und eine "variable x" an.
when kill begin local tab = { [1] = {101, 1}, [21] = {101, 1}, [41] = {101, 1} } table.foreach(tab, function(i, p) if i == pc.get_map_index() then if p[1] == npc.get_race() then local bsp = p[1] end end end) end
Die 2 if's kanste natürlich auch zusammenpacken.
Er geht bei table.foreach jede Position der Tabelle durch und "i" nimmt dabei den Wort des Schlüssels an (das was in den [ ] steht).
Sobald i (und damit der jeweilie Map-Index) mit dem Map-Index des SPielers übereinstimmt überprüft er noch ob "p[1]" (der 1. Wert der aktuellen Position) der Mob-Vnum übereinstimmt und speichert diese wenn ja.
table.foreach ist nicht einfach zu verstehen, ich werds hier jetzt aber auch nicht ausführlich erklären...
EDIT: Da du in einer Tabelle nicht 2x (oder öfters) den selben Schlüssel vergeben darfst, rate ich dir die "Mapgruppen" in Tabellen zu sammeln, mit diesem Tabellendesign sähe die Abfrage so aus:
PHP Code:
when kill begin local tab = { [1] = { {101, 1} }, [21] = { {101, 1}, {102, 1} }, [41] = { {101, 1}, [103, 1} } } table.foreach(tab, function(i, p) if i == pc.get_map_index() then for e = 1, table.getn(p), 1 do if p[e][1] == npc.get_race() then local bsp = p[e][1] end end end end) end
for i = 1, table.getn(tab[pc.get_map_index()]) do
if npc.get_race() == tab[pc.get_map_index()][1] then
local bsp = tab[pc.get_map_index()][1]
local x = tab[pc.get_map_index()][2]
end
end
chat('Mobvnum: '..bsp)
chat('Name: '..mob_name(bsp))
chat('X = '..x)
Sicher, dass es da keine Probleme geben wird?
Immerhin sind es lokale Variablen und nur im dem Block definiert.
quest testbsp begin state start begin when kill begin local tab = { [1] = { {192, 1} }, [21] = { {192, 1} }, [41] = { {192, 1} }, [3] = { {591, 1} }, [23] = { {591, 1} }, [43] = { {591, 1} }, [64] = { {691, 1} }, [63] = { {2192, 1} }, [62] = { {2291, 2}, {2206, 1} }, [61] = { {1901, 1} }, [65] = { {1304, 1} }, [68] = { {230, 1} }, [104] = { {2091, 1} }, [71] = { {2093, 1} }, [72] = { {1192, 1} }, [73] = { {2491, 1}, {2492, 2}, {2493, 2} } } table.foreach(tab, function(i, p) if i == pc.get_map_index() then for e = 1, table.getn(p), 1 do if p[e][1] == npc.get_race() then local bsp = p[e][1] end end end ) chat(bsp) end end end
Code:
testbsp.quest:68:syntax error : [string "start"]:62: unexpected symbol near `)'
Error occured on compile testbsp.quest
Kann niemand helfen?
MfG
Hey, bei deiner Quest fehlt ein end.
Du musst die function auch wieder beenden, sollte dann compilen ohne Error.
- nun wird aber nichts im chat ausgegeben wahrscheinlich.
Dazu lesen wir noch .Remix. sein Beitrag:
Quote:
Originally Posted by .Remix.
Code:
for i = 1, table.getn(tab[pc.get_map_index()]) do
if npc.get_race() == tab[pc.get_map_index()][1] then
local bsp = tab[pc.get_map_index()][1]
local x = tab[pc.get_map_index()][2]
end
end
chat('Mobvnum: '..bsp)
chat('Name: '..mob_name(bsp))
chat('X = '..x)
Sicher, dass es da keine Probleme geben wird?
Immerhin sind es lokale Variablen und nur im dem Block definiert.
Wo er recht hat, hat er recht.
Was in dem Block ist bleibt im Block. Also definieren wir die vorher und zack wuerde deine Quest so aussehen:
PHP Code:
quest testbsp begin state start begin when kill begin local tab = { [1] = { {192, 1} }, [21] = { {192, 1} }, [41] = { {192, 1} }, [3] = { {591, 1} }, [23] = { {591, 1} }, [43] = { {591, 1} }, [64] = { {691, 1} }, [63] = { {2192, 1} }, [62] = { {2291, 2}, {2206, 1} }, [61] = { {1901, 1} }, [65] = { {1304, 1} }, [68] = { {230, 1} }, [104] = { {2091, 1} }, [71] = { {2093, 1} }, [72] = { {1192, 1} }, [73] = { {2491, 1}, {2492, 2}, {2493, 2} } } local bsp = nil table.foreach(tab, function(i, p) if i == pc.get_map_index() then for e = 1, table.getn(p), 1 do if p[e][1] == npc.get_race() then bsp = p[e][1] end end end end) chat(bsp) end end end
Hast du deine Quest mal selbst getestet?
Die kann nicht funktionieren.
Die spricht doch nichtmal die richtigen tabellenwerte an, bzw kommt nichtmal bis dahin und wenn sie bis dahin kommen wuerde und sie in deinen variablen speichert, wird nichts ausgegeben!
so waere deine quest richtig!:
PHP Code:
quest testbsp begin state start begin when kill begin local tab = { [1] = { {192, 1} }, [21] = { {192, 1} }, [41] = { {192, 1} }, [3] = { {591, 1} }, [23] = { {591, 1} }, [43] = { {591, 1} }, [64] = { {691, 1} }, [63] = { {2192, 1} }, [62] = { {2291, 2}, {2206, 1} }, [61] = { {1901, 1} }, [65] = { {1304, 1} }, [68] = { {230, 1} }, [104] = { {2091, 1} }, [71] = { {2093, 1} }, [72] = { {1192, 1} }, [73] = { {2491, 1}, {2492, 2}, {2493, 2} }, } local bsp = nil local x = nil for i = 1, table.getn(tab[pc.get_map_index()]) do if npc.get_race() == tab[pc.get_map_index()][i][1] then bsp = tab[pc.get_map_index()][i][1] x = tab[pc.get_map_index()][i][2] end end chat('Mobvnum: '..bsp) chat('Name: '..mob_name(bsp)) chat('X = '..x) end end end
Quote:
Originally Posted by Sp0ngeb0b ist cool
Ja in diesem Fall ist es aber eine Schleife & keine Funktion.
Probiers einfach!
Und hier das selbe beispiel mit einer for schleife:
Stimmt da hast du recht! Hab auch seit einigen Monaten nichts mehr mit Lua gemacht, aber gerade geht es auch um die variablen. Ich meine, dass ginge, ohne vorherige Zuordnung. Und den Variabeln nil (kein Wert) zuzuordnen ist ja wohl mehr als schwachsinnig. Eine Variable dient dazu Werte zu speichern & wozu soll man bitte "keinen Wert" speichern?
Selbst wenn das mit den Variabeln in der for-Schleife nicht ginge, würde ein
local bsp,x völlig ausreichen
Datenbank Quest Tabelle. 11/03/2011 - Metin2 Private Server - 5 Replies Einen Wunderschönen Guten Morgen liebe Com.
Und zwar es geht um die Quest Tabelle in der Datenbank ich habe ein kleines
Problem.
In dieser Quest Tabelle wird ja alles geloggt die ganzen States usw.
Sagen wir mal ich lasse den Server über 2 Wochen Online ohne zu rebooten.
Skyfire Quest tabelle 07/17/2011 - WoW Private Server - 5 Replies Hey,
kann mir wer sagen wo ich in skyfire die quest tabelle finde ?
Grüße.....
Für was ist die Quest Tabelle 06/21/2011 - Metin2 Private Server - 4 Replies Für was ist die Quest Tabelle und was passiert,wenn man sie löscht
Brauche die quest Tabelle 11/06/2010 - Metin2 Private Server - 0 Replies Bitte closen#
hat sich schon erledigt danke
Mfg zagrosX
quest tabelle 02/19/2010 - Metin2 Private Server - 3 Replies Hi, kann mir ma kurz jmd ne Kopie von seiner Quest Tabelle in der DB schicken bzw. eine hochladen? hab meine gelöscht