ESX (LUA) - Fehler beim Auslesen von Spieler-Variablen in einer Function

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Ich habe kleines Problem und habe keine Ahnung, was ich falsch mache.


    Bei es_extended in player.lua habe ich admin hinzugefügt. Ich habe es auch geprintet, wird alles korrekt aus der Datenbank geladen, admin wird korrekt in DEBUG-LOGIN 1 (Siehe Auszug Script) geprintet.

    Ich habe eine Function erstellt, um den Wert von admin überall innerhalb des Ressourcen auslesen zu können.


    Auszug Script


    Um das im Script zu testen, habe ich ein Befehl erstellt, der mir den Wert von admin zurück gibt


    Problem:

    @es_extended/server/commands.lua: attempt to index a nil value (local 'xPlayer')

    -> ref (@es_extended/server/commands.lua:25)

    .. Sprich, der Wert in xPlayer.getAdmin() ist null. Wenn ich jedoch getAdmin mit bspw. 2 statt der Variable self.admin returne, dann funktioniert es.

    Ich bin ratlos weil paar Zeilen vorher wird self.admin korrekt angezeigt und ist nicht null.


    Was ist verkehrt? :/

    Wer PALWAL-Sternchen vergibt, bekommt aus Prinzip ein Like 😏


    @palwal Donald Trump ist einer der besten Präsidenten welche die USA je hatte, meine Meinung.

  • Das ist dein Problem. Das ist eine lokale Variable. Außerhalb von der Funktion existieren diese Daten nicht mehr.

    Wie genau meinst du? self ist eine locale Array, aber deshalb wird sie ja in der Function gespeichert, die dann mit xPlayer getriggert werden kann.


    Weiter unten ist

    Code
    rTable.getMoney = function()
            return self.money
        end

    wo man money vom Spieler mit xPlayer.getMoney() auch auslesen kann..


    Wie kann ich es beheben? Ich habe leider keine Lösungsansätze :/ .. ?(

    Wer PALWAL-Sternchen vergibt, bekommt aus Prinzip ein Like 😏


    @palwal Donald Trump ist einer der besten Präsidenten welche die USA je hatte, meine Meinung.

  • Mach das mal so:

    self.getAdmin = function() return self.admin end

    Denn wenn du rTable deklarierst, bezieht sich der Kontext "self" in der Funktion auf rTable und der ist immer null, da dort kein Admin deklariert ist.


    und lösch oben das local self = {}


    Denn self ist ein Keyword in lua, das bezieht sich schon auf die Funktion selbst. Also da bedarf es keiner Deklaration, finde ich merkwürdig, dass er das überhaupt zulässt. Aber ich habe noch nie mit LUA gearbeitet (rate hier nur) 😅

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Ich habe statt local self = {} nun in self = {} abgeändert (Ohne self zu deklarieren, funktionierte nichts mehr) .. aber das Problem bleibt bestehen. Und stimmt, xPlayer.getMoney gibt ebenfalls nil zurück.


    Wobei in anderen Ressourcen

    etc aufgerufen wird und es scheinbar funktioniert! Was ist das für eine sch**ße ...

    Wer PALWAL-Sternchen vergibt, bekommt aus Prinzip ein Like 😏


    @palwal Donald Trump ist einer der besten Präsidenten welche die USA je hatte, meine Meinung.

  • Interessant...


    Also hast du die getAdmin Funktion mal da getestet, wo auch getMoney funktioniert?


    funktionieren da beide?


    Dann stimmt evtl einfach mit dem scope oder dem source etwas nicht, von wo aus du das aufrufst...

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Sag mir einmal bitte welches ESX du benutzt, das spielt nämlich eine große Rolle.