Handhabung von Strings, Tabellen, Integer #1

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
  • Moinsen zusammen,


    wollte mal ein kleineres Tutorial schreiben um mal zu erklären wie man im Mta mit Datentypen arbeitet.
    Leider gibt es hier noch keinen Lua Highlight BB Code weshalb ich versuch ihn mit Pawn etwas "einzufärben"


    String, Integer
    _______________________________________________________________________________________________


    Bsp. wir gehen mal von einem Objekt aus, einer Wand oder nem Zaun...


    setElementData(Zaun, "Objektid", 11000)
    setElementData(Zaun, "Objektname", "Zaun")


    In den ersten Datensatz haben wir eine Integer eingespeist, in den zweiten Datensatz "Objektname" einen String.
    Doch der Datensatz wird wie vermutet nicht als Integer (Beispiel 1) gesicht sondern in einen String umgewandelt.
    Folgendes falsches Beispiel soll mal zeigen was damit gemeint ist...


    local integer_wert//Eine Variable
    blablabla = 12345 //Wir geben der Variable den Wert 12345
    local string_wert
    string_wert = "blablabla" //Die Variable beinhaltet nun den String "blablabla"
    if(integer_wert> string_wert)then


    Ab diesem Punkt wird euer Server nicht funktionieren, bzw. nach der if-Abfrage kommende nicht mehr einlesen.
    Es ist wichtig das sich jeder direkt ab Anfang an, keinen dieser Fehler erlaubt, da hilft auch keine Luac.exe (Standalone Compiler mit Cmd.exe)
    nichts mehr, sie gibt euch diesen Fehler nicht an! (Clientseitig bis heute kein Consolenprint bekommen, Serverseitig unbekannt, sollte aber auch so sein)
    Wieso ?
    Hier versucht der Benutzer einen Integer mit String zu vergleichen, klare Sache ist unmöglich...
    Mögliche Lösung:


    if(tonumber(string_wert) > integer_wert)then


    Man muss einen der Werte ins richtige Format bringen, wobei hier die Frage ist was ein konvertierter Buchstabe als Wert herausgibt, bzw. wie hoch dieser Wert
    dann sein müsste. Ich erinner mich dunkel daran das A bei 90-98 beginnt, B = A+1 usw.


    Tabellen
    _______________________________________________________________________________________________


    Man könnte hier seitenlange Reden schwingen, wofür ich keine Zeit habe :sleeping:
    Ich fang mal mit der Grunddefinition einer Tabelle an...


    Tabelle = {} //Tabelle erstellen


    Nun geben wir der Tabelle einen String-Wert...


    String = "Lua" //Nun geben wir einem String den Wert "Lua"


    Nun führen wir einen neuen Wert mit dem Schlüssel String und dem Wert 12345


    Tabelle[String] = 12345 //Neue Einführung


    Neue Einführung


    Tabelle[20] = "Resource"


    Nun fragen und geben wir einen Wert der Serverconsole zurück...


    print(Tabelle["Lua"]) //Gibt in diesem Fall für die den Schlüssel für die Tabellen Defintion zurück also 12345

    Nun führen wir eine Zunahme des Schlüssel´s der Tabellevariable "Tabelle" aus


    Tabelle["Lua"] =Tabelle["Lua"] -24690 // Gibt den Wert -12345 zurück


    Und ein kleines Beispiel wie man eine Tabelle "auspackt" in diesem Fall färben wir den Namenstag ein


    local tabelle = { 255,255,255 } //RGB Farben Code sollte weiß sein
    setPlayerNametagColor ( player, unpack(tabelle))

    [align=center]
    Mta Script Editor - Work in Progress

  • Wollte ich ehrlich gesagt einbauen, jetzt wo du nachhackst seh ich´s.



    local nummer = 12345
    outputChatBox(tostring(nummer))


    Werde später auch ne kleine Erklärung schreiben, jetzt erstmal essen und ins Bett :sleeping:
    @Danke Mike für den Hinweis

    [align=center]
    Mta Script Editor - Work in Progress