Der Spieler ist eingeloggt!

  • Vio Lite/Extended
  • Der Spieler ist eingeloggt!

    Guten Morgen Hier der Fehlercode

    [03:47:04] ERROR: venox/register_login/register_login_server.lua:776: attempt to index local 'dsatz' (a nil value)
    [03:47:04] WARNING: venox/register_login/register_login_server.lua:772: dbExec failed; (1364) Field 'Spezial' doesn't have a default value
    [03:47:18] QUIT: ImoJimPro left the game
    [03:47:18] ERROR: venox/skills/skills_data_server.lua:16: attempt to compare nil with boolean

    Hier von den Zeilen 769 bis 780

    LUA-Quellcode: register_login_server

    1. local dsatz
    2. local result = dbPoll ( dbQuery ( handler, "SELECT * from inventar WHERE UID = ?", playerUID[pname] ), -1 )
    3. if not result or not result[1] then
    4. dbExec ( handler, "INSERT INTO inventar (UID) VALUES (?)", playerUID[pname] )
    5. result = dbPoll ( dbQuery ( handler, "SELECT * from inventar WHERE UID = ?", playerUID[pname] ), -1 )
    6. end
    7. dsatz = result[1]
    8. if dsatz["Wuerfel"] then
    9. vioSetElementData ( player, "dice", tonumber ( dsatz["Wuerfel"] ) )
    10. else
    11. vioSetElementData ( player, "dice", 0 )
    12. end
    Alles anzeigen
  • Neu

    Sind denn alle Leute die irgendwas mit Venox haben so drauf?

    Anscheind hast du die tabels in der Datenbank nicht erstellt. (Nil value = nicht gegeben ) oder die dsatz value ist nicht gegeben -> mit dem Datenbank Server verbunden?


    P.s
    Zudem ist das Script viel zuverbuggt und ich würde dir empfehlen ein anderes zunehmen.





    - ohne freien cultus
    "Wieso ich das Projekt verlassen habe?
    Die wollten unbedingt Profis, Profis machen aber nicht bei jedem Kindergarten mit."

    -----------------------------------------------------

    -----------------------------------------------------

  • Neu

    Damit hier auch mal eine etwas qualifiziertere Antwort ist...

    Deine 'dsatz' Variable ist nil. Diese sollte eigentlich in Zeile 7 (aus deinem Auszug) vom vorherigen result beschrieben werden. Jetzt kommt es scheinbar für neue Spieler zu dem Fall, dass in der Datenbank in der Tabelle 'inventar' noch kein Wert für den Spieler existiert. Deswegen ist da eine Abfrage, welche dies dann erstellen soll (Zeile 3 - 6). Allerdings wird dort dbExec genutzt, was zwar Grundsätzlich nicht verkehrt ist, aber in deinem Fall mit dem nachfolgenden Script Probleme macht. Denn dbExec läuft Asynchron. Das heißt dein Script läuft weiter und wartet nicht auf eine Antwort vom Datenbank Server. Während also dein Datenbank Server noch gar nichts von deinem INSERT INTO mit dbExec in Zeile 4 mitbekommen hat, fragt das Script schon danach in Zeile 5.
    Lange Rede kurzer Sinn, dbExec zu dbQuery ändern und mögliche Anpassungen vornehmen.

    Das wird dein Problem allerdings noch nicht vollständig beheben. Denn deine Query wird nicht durchgehen bzw. keinen Eintrag erstellen, da die Spalte "Spezial" keinen Standardwert (default value) hat. Entweder schreibst du in deine Query was da rein soll oder vergibst der Spalte einfach einen Standardwert. Eventuell ist das auch das einzige Problem und das dbExec passt seltsamerweise.
  • Neu

    PewX schrieb:

    Damit hier auch mal eine etwas qualifiziertere Antwort ist...
    Qualifizierte Antwort auf eine Aufforderung wie "Hier Hund such den Stock" ?

    Ich frage mich wieso sowas überhaupt unterstützt wird.





    - ohne freien cultus
    "Wieso ich das Projekt verlassen habe?
    Die wollten unbedingt Profis, Profis machen aber nicht bei jedem Kindergarten mit."

    -----------------------------------------------------

    -----------------------------------------------------

  • Neu

    The0ne schrieb:

    Qualifizierte Antwort auf eine Aufforderung wie "Hier Hund such den Stock" ?
    Füchse apportieren nicht.
    Behalte den Stock.


    Das Thema ist doch schon als erledigt markiert?

    Falls dir der Fuchs weitergeholfen hat bedanke dich doch bei Ihm mit einem Like für seine Hilfe.
    Schwierigkeiten beim posten von
    Codezeilen?









    Dein persönlicher GTA Soundtrack

  • Neu

    PewX schrieb:

    Damit hier auch mal eine etwas qualifiziertere Antwort ist...

    Deine 'dsatz' Variable ist nil. Diese sollte eigentlich in Zeile 7 (aus deinem Auszug) vom vorherigen result beschrieben werden. Jetzt kommt es scheinbar für neue Spieler zu dem Fall, dass in der Datenbank in der Tabelle 'inventar' noch kein Wert für den Spieler existiert. Deswegen ist da eine Abfrage, welche dies dann erstellen soll (Zeile 3 - 6). Allerdings wird dort dbExec genutzt, was zwar Grundsätzlich nicht verkehrt ist, aber in deinem Fall mit dem nachfolgenden Script Probleme macht. Denn dbExec läuft Asynchron. Das heißt dein Script läuft weiter und wartet nicht auf eine Antwort vom Datenbank Server. Während also dein Datenbank Server noch gar nichts von deinem INSERT INTO mit dbExec in Zeile 4 mitbekommen hat, fragt das Script schon danach in Zeile 5.
    Lange Rede kurzer Sinn, dbExec zu dbQuery ändern und mögliche Anpassungen vornehmen.

    Das wird dein Problem allerdings noch nicht vollständig beheben. Denn deine Query wird nicht durchgehen bzw. keinen Eintrag erstellen, da die Spalte "Spezial" keinen Standardwert (default value) hat. Entweder schreibst du in deine Query was da rein soll oder vergibst der Spalte einfach einen Standardwert. Eventuell ist das auch das einzige Problem und das dbExec passt seltsamerweise.
    Ich küss einfach deine Augen PewX <3
    Kenne mich sehr gut mit "Vio Extended" und "Vio Ultimate" aus.

    Dream Reallife Scripter