quest register_account begin
state start begin
when login or letter begin
cmdchat("Register "..q.getcurrentquestindex())
end
when button or info begin
say_title("Account-Manager")
say("")
say_reward("- Mindestens 4 Zeichen lang")
say_reward("- Maximal 16 Zeichen lang. ")
say_reward("- Keine Leer und Sonderzeichen")
say_reward("")
say(" Benutzer-ID: ")
local id = tostring(input())
if string.len(id) < 4 then
chat("<Account-Manager> Registrieren fehlgeschlagen, Benutzer-ID muss mindestens 4 Zeichen lang sein. ")
return
elseif string.len(id) > 16 then
chat("<Account-Manager> Registrieren fehlgeschlagen, Benutzer-ID ist zu lang. (max. 16 Zeichen) ")
return
else
local AcEx = mysql_query("SELECT login FROM account.account WHERE login='"..id.."';")
local result = AcEx[1][1]
if result == nil or not result then
chat("test -> Kein Eintrag NIL ")
return
end
if result == id then
chat("<Account-Manager> Registrierung fehlgeschlagen, Benutzer-ID ist bereits vergeben. ")
else
say_title("Account-Manager")
say("Account wurde erfolgreich erstellt. ")
say("")
say_reward("Benutzer-ID: "..id.."")
say_reward("Passwort: 12345")
say_reward("Löschcode: 1234567")
end
end
end
end
end
Nach jetzt gefühlten 100 Versuchen mir alle möglichen Varianten ausgeben zu lassen, bekomme ich ständig diese Fehlermeldung in der Konsole:
Code:
RunState: LUA_ERROR: [string "register_account"]:17: attempt to index field `?' (a nil value)
Ich habe es mit vielen anderen if Bedingungen versucht wie z.B tostring,if not result, if result == false usw.
Ich möchte erreichen, dass meine Testfunktion ausgeführt wird, sobald in der Datenbank kein Eintrag gefunden wird, ich verstehe nicht wieso er diese NIL value nicht ignoriert obwohl ich eine Bedingung gestellt habe, dass er gerade dann was in den chat schreiben soll.
Kann mir bitte jemand sagen warum ich diese Meldung kriege und wie ich des am besten beseitigen kann? Diese MySQL Query Funktion hat generell Probleme, mit dem Rückgabewert 0 und deswegen habe ich als Fixx auch das hier in meiner Questlib drin:
Code:
function split(str, delim, maxNb)
if str == nil then return str end
if string.find(str, delim) == nil then return { str } end
if maxNb == nil or maxNb < 1 then maxNb = 0 end
local result = {}
local pat = "(.-)" .. delim .. "()"
local nb = 0
local lastPos
for part, pos in string.gfind(str, pat) do
nb = nb + 1
result[nb] = part
lastPos = pos
if nb == maxNb then break end
end
if nb ~= maxNb then result[nb + 1] = string.sub(str, lastPos) end
return result
end
Doch scheint leider immernoch das selbe Problem zu sein.
Ich würde mich über jede Hilfe riesig freuen
€: if result == "" then funktioniert leider auch nicht.
quest register_account begin
state start begin
when login or letter begin
cmdchat("Register "..q.getcurrentquestindex())
end
when button or info begin
say_title("Account-Manager")
say("")
say_reward("- Mindestens 4 Zeichen lang")
say_reward("- Maximal 16 Zeichen lang. ")
say_reward("- Keine Leer und Sonderzeichen")
say_reward("")
say(" Benutzer-ID: ")
local id = tostring(input())
if string.len(id) < 4 then
chat("<Account-Manager> Registrieren fehlgeschlagen, Benutzer-ID muss mindestens 4 Zeichen lang sein. ")
return
elseif string.len(id) > 16 then
chat("<Account-Manager> Registrieren fehlgeschlagen, Benutzer-ID ist zu lang. (max. 16 Zeichen) ")
return
else
local AcEx = mysql_query("SELECT login FROM account.account WHERE login='"..id.."';")
local result = AcEx[1][1]
if result == nil or not result then
chat("test -> Kein Eintrag NIL ")
return
end
if result == id then
chat("<Account-Manager> Registrierung fehlgeschlagen, Benutzer-ID ist bereits vergeben. ")
else
say_title("Account-Manager")
say("Account wurde erfolgreich erstellt. ")
say("")
say_reward("Benutzer-ID: "..id.."")
say_reward("Passwort: 12345")
say_reward("Löschcode: 1234567")
end
end
end
end
end
Nach jetzt gefühlten 100 Versuchen mir alle möglichen Varianten ausgeben zu lassen, bekomme ich ständig diese Fehlermeldung in der Konsole:
Code:
RunState: LUA_ERROR: [string "register_account"]:17: attempt to index field `?' (a nil value)
Ich habe es mit vielen anderen if Bedingungen versucht wie z.B tostring,if not result, if result == false usw.
Ich möchte erreichen, dass meine Testfunktion ausgeführt wird, sobald in der Datenbank kein Eintrag gefunden wird, ich verstehe nicht wieso er diese NIL value nicht ignoriert obwohl ich eine Bedingung gestellt habe, dass er gerade dann was in den chat schreiben soll.
Kann mir bitte jemand sagen warum ich diese Meldung kriege und wie ich des am besten beseitigen kann? Diese MySQL Query Funktion hat generell Probleme, mit dem Rückgabewert 0 und deswegen habe ich als Fixx auch das hier in meiner Questlib drin:
Code:
function split(str, delim, maxNb)
if str == nil then return str end
if string.find(str, delim) == nil then return { str } end
if maxNb == nil or maxNb < 1 then maxNb = 0 end
local result = {}
local pat = "(.-)" .. delim .. "()"
local nb = 0
local lastPos
for part, pos in string.gfind(str, pat) do
nb = nb + 1
result[nb] = part
lastPos = pos
if nb == maxNb then break end
end
if nb ~= maxNb then result[nb + 1] = string.sub(str, lastPos) end
return result
end
Doch scheint leider immernoch das selbe Problem zu sein.
Ich würde mich über jede Hilfe riesig freuen
€: if result == "" then funktioniert leider auch nicht.
Gruß, Endless
Wieso greifst du nicht über z.b. Navicat auf die DB zu und erstellst dir so einen Account? Ich würde Querys direkt im Source machen da funktioniert das dann auch.
Mit lua kenn ich mich nicht aus ich kann dir aber ein beispiel zeigen wie du es im source machen kannst
Wieso greifst du nicht über z.b. Navicat auf die DB zu und erstellst dir so einen Account? Ich würde Querys direkt im Source machen da funktioniert das dann auch.
Mit lua kenn ich mich nicht aus ich kann dir aber ein beispiel zeigen wie du es im source machen kannst
In C++ bin ich leider nicht sehr gut, ich wüsste z.B nicht wo ich das genau rein tun soll und wie ich ein Client Button damit verknüpfe. Wäre der compiler nicht so lahm, würde ich des problemlos ausprobieren können aber diese Methode wäre evtl. sehr zeitaufwändig bis die mal funktioniert
Daher will ich lieber ne Query in die Db einspielen welche bloß davor ein paar Werte prüfen soll und zwar nur obs diese ID schon gibt. Wenn er eine findet, gibt er mir auch meine eigene ID aus, was auch richtig ist, nur jedesmal bei der nil value hat es Probleme.
In C++ bin ich leider nicht sehr gut, ich wüsste z.B nicht wo ich das genau rein tun soll und wie ich ein Client Button damit verknüpfe. Wäre der compiler nicht so lahm, würde ich des problemlos ausprobieren können aber diese Methode wäre evtl. sehr zeitaufwändig bis die mal funktioniert
Daher will ich lieber ne Query in die Db einspielen welche bloß davor ein paar Werte prüfen soll und zwar nur obs diese ID schon gibt. Wenn er eine findet, gibt er mir auch meine eigene ID aus, was auch richtig ist, nur jedesmal bei der nil value hat es Probleme.
Ich danke dir trotzdem für die Information.
wenn du dir nur einen account erstellen willst dann brauchst du garnix ingame machen sondern nur beim server nachdem die connection zur db aufgebaut wurde direkt die query nachschicken die einfachste methode wäre aber immer noch über z.b. navicat
Kann dir auch einfach deine Homepage zum laufen bringen anstatt mit solch einem Müll rum zu spielen.
Discord: xAmnezia#6479
Guten Abend, Amnezia
vielen Dank für deine Hilfsbereitschaft Ich hab dies mittlerweile in Griff bekommen und diese Quest nur als vorübergehende Methode verwendet.
Ursache des Problems waren fehlende PHP module auf apache2 die ich nachinstallieren musste. Falls ich aber Fragen haben sollte, werde ich mich bei dir melden.
Ansonsten kann dieser Thread als gelöst markiert werden
Kleine Frage an die MySQL-Profis ^^ || MySQL Query 05/27/2014 - Web Development - 7 Replies Hallo,
da ich gerade dabei bin ein Script für meine Webseite umzuschreiben und die Registration einfach nicht klappt, habe ich das Script mal auseinandergenommen und angeschaut.
Bei der Registration macht das Script / die Query folgendes :
Also Theoretisch:
[Quest] MySQL Query Ergebnisse in Quest ausgeben lassen 12/13/2013 - Metin2 Private Server - 5 Replies Hey Leute,
ich hab mich heut an einer Kopfgeld Quest versucht und stehe nun vor folgendem Problem:
Ich habe per mysql_query Command alle Spieler suchen lassen, die in der Spalte kopfgeld_exist (ja, so heißt die Spalte, in der eingetragen wird, ob der Spieler ein Kopfgeld hat oder nicht) eine 1 stehen haben.
Dafür habe ich folgenden Command benutzt:
mysql_query("SELECT name, kopfgeld from player.player where kopfgeld_exist = '1';")
Nun würde ich gerne ingame in einer Tabelle folgendes...
PHP/MySQL Help - Is this MySQL Query correct? 09/23/2011 - CO2 Programming - 1 Replies $rank = mysql_query("SELECT Name,Level,Class,Online FROM entities ORDER BY Level DESC LIMIT $limit");
I'm pretty sure that is right... whenever I do
while ($row = mysql_fetch_array($rank)) { ... }
It always gives me a mysql_fetch_array error. I've checked and the database is populated, the columns exist, so what could be the issue?