Beiträge von sRec

    @^Nike: Wer sagt das?
    Im richtigen Einsatz sind ElementDatas überhaupt nicht unsicher.

    --

    Du brauchst folgende Funktionen/Events:

    Lua
    onElementClicked/onClientClick
    getElementData/setElementData
    gui-Funktionen
    createObject

    Ein Inventar zu scripten ist eine der leichten Aufgaben. Da kann man fast nichts falsch machen.

    Du hast anscheinend falsche Benutzerdaten in deiner DB-Connection.

    Und im PHPMyAdmin hast du keine Datenbank ausgewählt.

    Edit: Sorry, sehe gerade, dass das Thema als erledigt markiert war.

    Ehrlich gesagt habe ich keine Ahnung warum es nicht klappt.
    Hier der Code den ich für meine GameModes nutze.


    An dem Punkt aufzugeben ist ja sehr pessimistisch...

    Hast du überhaupt ein Konzept?
    Wieso fügst du in den Datensatz Fraktionen beim Command fkasse immer wieder ein?
    Warum ist das Feld ID frei? Normalerweise ist ID doch ein AUTO-INCREMENT.
    Warum ist die Fraktionskasse = das Geld des Spielers?

    Du solltest serverseitig überprüfen wie der Spieler heißt und das dann einfach per triggerClientEvent ausführen.
    Allerdings lohnt sich das bei einem einfachen Namen nicht.
    Außerdem ist der PlayerName kaum eine sinnvolle Sicherheitsvorkehrung. Du solltest da lieber die ACL-Rechte abfragen oder ein eigenes Admin-System entwickeln.

    String-Verarbeitung
    In diesem Tutorial möchte ich euch die String-Verarbeitung etwas näher bringen.

    Um erst einmal klarzustellen, wofür man überhaupt so etwas braucht, hier ein paar Beispiele:

    • Ihr wollt für euren Server einen Newsletter anfertigen, allerdings geben die Spieler ständig falsche E-Mails an bzw. Texte, die dem E-Mail pattern nicht entsprechen
    • Ihr möchtet, dass der Spielername ein bestimmtes Pattern haben muss, beispielsweise: Vorname_Nachname
    • Ihr möchtet beispielsweise eine Art Tabelle im MySQL-speichern, die Berechtigungen oder Optionen darstellt (|Option1|Option2|Option3|..|)
    • Ihr möchtet nur x Nachkommastellen anzeigen

    Fangen wir mal an:


    string.find(text, pattern): Hiermit kann man, wie die Funktion eigentlich schon heißt, herausfinden an welcher Stelle ein Muster/Text vorhanden ist.
    Beispiel:

    Lua
    print(string.find("Hallo Welt", "Welt"))
    > 7 10


    Nun wissen wir, dass in dem String, dass Wort "Welt" an der 7 Stelle anfängt und an der 10 endet.

    string.match(text, pattern): Mit string.match können wir bestimmte Teile aus einem String extrahieren.
    Beispiel:

    Lua
    print(string.match("Hallo Welt 123", "%d"))
    > 1
    print(string.match("Hallo Welt 123", "%d+")
    > 123



    Im ersten Beispiel wurde uns die Zahl 1 ausgegeben. Das liegt daran, dass als Pattern "%d" angegeben wurde. Das bedeutet, dass die erste Dezimalzahl, die gefunden wird, ausgegeben wird.
    Im zweiten Beispiel spielt das "+" den entscheidenden Faktor, da es angibt, dass beliebig viele Dezimalzahlen dahinter auch ausgegeben werden.

    string.gmatch(text, pattern): Der Unterschied zwischen string.match und string.gmatch ist, dass in gmatch ein Iterator nach jeder Instanz, die dem Pattern entspricht sucht. Bei einem Iterator müssen wird dran denken, dass wir eine Schleife benutzen.
    Beispiel:

    Lua
    for option in string.gmatch("|1|2|f|3|", "%d") do
        print(option)
    end
    > 1
    > 2
    > 3


    In diesem Beispiel sind wir durch jedes Zeichen durchgegangen und haben nach einer Zahl gesucht. Sobald eine gefunden wurde, wurde diese ausgegeben.

    string.gsub(text, pattern, replacewith): Mit string.gsub können wir Teile aus Strings finden und diese mit einem Text ersetzen. Das eignet sich beispielsweise für einen Beleidigungsfilter.
    Beispiel:

    Lua
    print(string.gsub("Hallo", "l", "L"))
    > HaLLo    2


    Hier haben wir jedes kleine "l" in unserem String mit einem großen "L" ersetzt. Doch jetzt steht dahinter noch eine 2. Das liegt daran, dass ausgegeben wird, wie viele matches es letztendlich gab. In Hallo haben wir 2 "l"'s also wird logischerweise eine 2 ausgegeben.
    Allerdings können wir das folgendermaßen umgehen:

    Lua
    string.gsub("Gebe das was in {Schweif}[klammern] ist {aus}.", "{(.-)}", function(z) print(z) end)
    > Schweif
    > aus

    string.byte(char): Hiermit können wir die ASCII-Nummer eines Buchstaben herausfinden. Das könnte nützlich sein, um das gleiche wie in string.gmatch zu bezwecken.
    Beispiel:

    Lua
    print(gettok("|1|2|3|", 2, string.byte("|")))
    > 2


    Angenommen wir verändern das zweite Argument, so könnten wir auch die anderen Zahlen ausgeben lassen. Um alle ausgeben zu lassen empfiehlt sich eine for-Schleife.

    string.len(text): Gibt uns einfach die Länge eines Strings aus.
    Beispiel:

    Lua
    print(string.len("Hallo"))
    > 5

    string.lower(text): Verwandelt alle Buchstaben in Kleinbuchstaben.
    Beispiel:

    Lua
    print(string.lower("HaLLo"))
    > hallo

    string.format(pattern, text): Damit können wir unseren String formatieren. Beispielsweise können wir die Anzahl der Nachkommastellen angeben.
    Beispiel:

    Lua
    print(string.format("%.3f", 1.23456789))
    > 1.235


    Rundet auf die 3 Nachkommastelle auf.

    Anwendung in MTA:

    Beispiele:

    Lua
    assert(string.find(NAME, "%u%l*_%u%l*"),"Der String NAME besitzt ein ungültiges Format")


    Dieses Script bietet sich für allem für Roleplays an, da dieses Script eine Art Vorname_Nachname-String benötigt.
    Doch was bedeutet jetzt das Pattern?
    %u - Ein Uppercase-Buchstabe wird benötigt
    %l - Darauf soll ein lowercase-Buchstabe folgen
    * - Nun können beliebig viele Zeichen folgen
    _ - Jetzt ein Unterstrich
    Und das gleiche nochmal.

    Patterns:

    Code
    %d - Dezimalzahl
    %a - Buchstabe
    %w+ - Wörter
    %l - Kleinbuchstaben
    %u - Großbuchstaben
    %s - Leerzeichen
    %e - Exponent
    %q - Anführungszeichen
    %f - Float

    Weiteres folgt später.

    Verbesserungsvorschläge und Ergänzungen bitte posten!