Abfrage liefert keine Resultate

  • Moin,


    ich versuche eine Datenbank Abfrage zu machen, ob dem Spieler Leaderrechte gegeben wurden. Wenn dies der Fall sein sollte ist das also 1 ( als String ), wenn nicht dann 0.
    Irgend wie kriege ich aber nur "hasLeaderrechte(): Irgend etwas ist schief gelaufen..." aus dem Debugscript.
    Hier versuche ich es mit der UID. Über den Name gehts leider nicht, da dieser eventuell eckige Klammern beinhält und MariaDB dann heult weil ich den nicht in ' ' setzen kann.

    Naja, MfG

  • https://wiki.multitheftauto.com/wiki/AddCommandHandler


    lies dir das mal richtig durch und benutz dann parameter richtig
    ansonsten lässt du dir mal die einzelnen Ausgaben von der Datenbank in ne Chatbox anzeigen und dann weißt du wo es hapert

  • Guten Morgen,
    ich hab mir mal dein geposteten Code angeschaut.
    getPlayerFromName ist in diesem Fall unnötig da der Spieler durch die Variable 'player' gegeben ist.

    getPlayerName wäre in diesem Fall richtig, da diese Funktion den Namen als String zurück gibt und nicht den Spieler als Objekt.


    Kannst dich jetzt hinter deiner Mauer aus passiv aggressiven Klassikern wie "mimimi" oder "typisch Com" natürlich wie der Boss fühlen, weil du es jetzt allen mal so richtig gegeben hast

  • Habe ich mal ausprobiert,
    bekommt leider trotzdem den Irgend etwas ist schief gelaufen... im Debugscript und kein false oder true.
    Irgendwas scheint jedoch an der Abfrage zu sein, denn wenn ich das Script folgend umbaue:


    Lua: mysql_functions
    function hasLeaderrechte(player)
    local player = getPlayerName(player)
    if dbPoll ( dbQuery ( handler, "SELECT Leaderrechte FROM userdata WHERE UID = ?", playerUID[player] ), -1 ) == "1" then
    outputDebugString("hasLeaderrechte(): true")
    return true
    end
    outputDebugString("hasLeaderrechte(): false")
    return false
    end
    addCommandHandler("checkleader", hasLeaderrechte)

    kriege ich halt false aus dem Debugscript und nicht true, was ja eigentlich kommen sollte da in der Datenbank auch "1" als varchar drinne ist.

  • also nochmal, schau dir die Parameter von addCommandHandler an
    du prüfst dauernd nur dich ab.......


    außerdem lässt du dir jetzt (z. 538) von dem Namen, den Namen zurückgeben ?! - das funktioniert so nicht..
    https://wiki.multitheftauto.com/wiki/GetPlayerName
    du müsstest dafür bereits den Spieler als Element haben


    dementsprechend müsstest du player danach als irg ein bullshit deklariert haben
    was zur Folge hat, dass deine DB Abfrage kompletter nonsense wird


    Lua
    function hasLeaderrechte(_,_,player)
    if dbPoll ( dbQuery ( handler, "SELECT Leaderrechte FROM userdata WHERE UID = ?", playerUID[player] ), -1 ) == "1" then
    outputDebugString("hasLeaderrechte(): true")
    return true
    end
    outputDebugString("hasLeaderrechte(): false")
    return false
    end
    addCommandHandler("checkleader", hasLeaderrechte)

    jenachdem, was die Funktion "playerUID[player]" für ein Wert braucht, entweder ein String oder eben ein Element
    wenn die Funktion das Element braucht, musst du wieder die Funktion getPlayerFromName benutzen

  • du prüfst dauernd nur dich ab.......

    So sollte es auch sein, da der Befehl nur zum debuggen da ist.......



    Aktuell habe ich das folgendermaßen aufgebaut


    Lua
    function hasLeaderrechte(player)
    local thePlayer = getPlayerName(player)
    if dbPoll ( dbQuery ( handler, "SELECT Leaderrechte FROM userdata WHERE UID = ?", playerUID[thePlayer] ), -1 ) == "1" then
    outputDebugString("hasLeaderrechte(): true")
    return true
    end
    outputDebugString("hasLeaderrechte(): false")
    return false
    end
    addCommandHandler("checkleader", hasLeaderrechte)

    und es kommt immernoch false raus..

  • sind wir eigentlich alle SO blöd
    wo hast du die Query her? selber gemacht?

    Lua
    dbPoll ( dbQuery ( handler, "SELECT ?? FROM ?? WHERE ?? = ?", "Leaderrechte", "userdata", "UID", playerUID[thePlayer] ), -1 )

    ( die abfrage =="1" ist glaube auch falsch, dbPoll gibt dir eig ne Tabelle aus, kein String ansich )

  • du sollst dbPoll nicht weglassen... du solllst deine Query mit meiner ersetzen, schau dir die doch mal genau an
    du hast nen völlig falschen Syntax benutzt


    oder hab ich mir jetzt mein eigenes Grab geschaufelt?
    MEIN GOTT BIN ICH BLÖD EH
    bis in nen halbes Jahr dann tschau

  • Hatte ewig nix mehr mit MTA zu tun (sorry falls etwas falsch ist)
    Aber in Zeile 538 holst du dir den Spieler von dem Spieler, welcher den Command auslöst. Also kann man das dann nicht einfach weglassen?
    Zu Zeile 539 du nutzt als index von playerUID (gehe davon aus dass das ein array ist?) das player Objekt, müsste dort nicht ein Integer angegeben werden? Wieso kein funktion um die UID vom Player zubekommen z.B. getUIDFromPlayer(player) => gibt dann die UID des Players wieder. Liege wahrscheinlich eher falsch aber keine Ahnung vielleicht kannst du ja irgendwas mit meinem geistigem Dünnschiss anfangen.

  • Naja, geistiger Dünnschiss ist es nicht :D


    Das habe ich im letzten schon korrigiert, dort fragt er dann nach dem String. Der String kommt dann in playerUID und müsste die UID ausgeben, welche dann beim ? bei der Query eingesetzt wird.
    Wo der Fehler ist weis ich nicht, bekomm halt nur im DebugScript false raus.. :/

  • Aber in Zeile 538 holst du dir den Spieler von dem Spieler, welcher den Command auslöst. Also kann man das dann nicht einfach weglassen?

    Nicht ganz, er bekommt durch das Parameter in der Funktion nur den Spieler als Element durch die Variable "player" ermittelt er lediglich den Namen des Elements.


    Zu Zeile 539 du nutzt als index von playerUID (gehe davon aus dass das ein array ist?) das player Objekt, müsste dort nicht ein Integer angegeben werden? Wieso kein funktion um die UID vom Player zubekommen z.B. getUIDFromPlayer(player) => gibt dann die UID des Players wieder. Liege wahrscheinlich eher falsch aber keine Ahnung vielleicht kannst du ja irgendwas mit meinem geistigem Dünnschiss anfangen.

    Ich bin mir nicht zu hundert Prozent sicher, aber ich glaube das die UID über den Namen ermittelt wird.


    Edit: https://wiki.multitheftauto.com/wiki/DbPoll Ließ dir das mal durch, sollte dein Problem lösen.


    Liebe Grüße

  • Edit: wiki.multitheftauto.com/wiki/DbPoll Ließ dir das mal durch, sollte dein Problem lösen.

    Bin mir immer noch nicht ganz sicher. Ich muss doch als erstes Argument den dbQuery handler angeben und als zweites wie lange ich warten möchte bis ein Ergebnis da ist, also -1 weil ich ja kein Zeitlimit setze

  • Lua
    function hasLeaderrechte(player)
    local player = getPlayerName(player)
    if dbPoll ( dbQuery ( handler, "SELECT Leaderrechte FROM userdata WHERE UID = ?", playerUID[player] ), -1 ) == "1" then
    outputDebugString("hasLeaderrechte(): true")
    return true
    end
    outputDebugString("hasLeaderrechte(): false")
    return false
    end
    addCommandHandler("checkleader", hasLeaderrechte)

    Okay, dann zweiter Versuch :thumbsup: .
    Sind Leaderrechte und UID überhaupt in der Tabelle vorhanden? Hast du schon mal versucht einfach nur das Ergebnis der Query auszugeben um zu schauen ob überhaupt "1" oder etwas der gleichen zurückgegeben wird?
    Schon mal daran gedacht das "1" dort vielleicht nicht als String sondern als Integer zurückgegeben wird?

  • Lass dich nicht verwirren.
    Eine Variable kann man immer mit anderem Zeug überschreiben.


    Probiere mal das.. und zeig was in der Debugbox angezeigt wird


    Kannst dich jetzt hinter deiner Mauer aus passiv aggressiven Klassikern wie "mimimi" oder "typisch Com" natürlich wie der Boss fühlen, weil du es jetzt allen mal so richtig gegeben hast

  • Also die Querys sehen für mich Identisch aus, nur habe ich thePlayer noch hinzugefügt weil ja von mir das Element kommt und nicht der String da ich ja kein Argument angebe

    Lua
    dbPoll ( dbQuery ( handler, "SELECT ?? FROM ?? WHERE ?? = ?", "Leaderrechte", "userdata", "UID", playerUID[thePlayer] ), -1 )

    ist nicht das gleiche wie das



    Lua
    dbPoll ( dbQuery ( handler, "SELECT Leaderrechte FROM userdata WHERE UID = ?", playerUID[player] ), -1 )

    und ich bin mir eben nicht sicher, ob du mit beiden das gleiche bewirkst^^

  • Lua
    dbPoll ( dbQuery ( handler, "SELECT ?? FROM ?? WHERE ?? = ?", "Leaderrechte", "userdata", "UID", playerUID[thePlayer] ), -1 )

    ist nicht das gleiche wie das


    Lua
    dbPoll ( dbQuery ( handler, "SELECT Leaderrechte FROM userdata WHERE UID = ?", playerUID[player] ), -1 )

    und ich bin mir eben nicht sicher, ob du mit beiden das gleiche bewirkst^^

    Kommt das selbe raus, nur diesmal "0x71ea5d0" bei table

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!