Lua lernen mit PeterAH , jetzt mit "Hello World"-Trecker :-))

  • Peter, welches Character Encoding hast du bei dir in Notepad++ eingestellt? Weil Umlaute wurden bei mir in der Datei nicht erkannt. Ist zwar kein Beinbruch, aber wäre von Vorteil wenn jeder das selbe sehen kann und dadurch dann auch nicht evtl. ein Fehler auftritt.

    Moin moin!

    Wenn die Kodierung bei dir nicht richtig erkannt wird, dann hast Du bei Deinem Notepadd++ unter Einstellungen > Optionen > Diverses wahrscheinlich "Kodierung automatisch erkennen" nicht eingeschaltet.

    Aber davon mal abgesehen hast du völlig recht, es war als Ansi codiert, hätte aber UTF-8 sein sollen. Ich habe den Trecker neu hochgeladen, jetzt mit korrekter UTF-8-Kodierung. Bitte nur diejenigen den Trecker neu runterladen die mit der Zeichendarstellung Probleme haben, alle anderen nicht, sonst jaulen nachher noch welche rum das UTF-8 bei denen nicht richtig dargestellt wird.^^

  • Ja richtig, in Zeile 38. Mit "renderText()" kannst Du Dir beliebigen Text auf dem Bildschirm anzeigen lassen, dass eignet sich auch gut zum Debuggen (Variablenwerte ausgeben lassen) falls mal etwas nicht so läuft wie geplant.

    In Zeile 36 und 37 steht, was die 4 Parameter von renderText zu bedeuten haben.

  • Moin Martin,

    aufgrund der Eintragung in der modDesk wird zuerst nur die scriptRegister.lua geladen und ausgeführt. Die scriptRegister.lua wiederum schnappt sich die script.lua und baut sie überall ein, z.B. in alle Fahrzeuge mit Motor oder was auch immer, dass kann der Programmierer in der scriptRegister.lua festlegen, wo diese die script.lua einbauen soll.

    Die helloWorld.lua beispielsweise ist ja direkt in einen Trecker eingebaut, in den Case den ihr hier downloaden könnt. Die Lua ist auch nur in diesem Trecker drin, nicht in den anderen. Jetzt könnte man eine helloWorldRegister.lua schreiben, die dieses Script in alle Trecker einfügt. Die Register.lua übernimmt dann die gleiche Aufgabe wie der Code in der modDesk zum Hinzufügen eines Scripts, jedoch gleich auf einen Schlag für alle Fahrzeuge.

    LG, Peter

  • Nabend Peter.

    Finde es super das du einen Lua Kurs ins leben gerufen hast. Gibt es so etwas wie ein Leidpfaden, was du uns alles vermitteln möchtest ?

    Mich würde sehr interessieren wie sich Lua Werte aus dem Spiel holt ...

    Bis dahin ... bleib gesund

  • Moin Schwefer,

    einen Leitfaden gibt es nicht, weil sonst hinterher alle Fragen, warum ich mich denn nicht an den Leitfaden halte.^^

    Wie sich die Lua Werte aus dem Spiel holt, da gibt es im Hallo-World-Trecker schon ein erstes Beispiel, der holt sich nämlich die aktuelle Motordrehzahl aus dem Spiel, siehe Beitrag #17, Zeile 40.

    Die traurige Wahrheit: Man muss sich jeden Wert, den man aus dem Spiel holt, selbst erarbeiten. Der Lichtblick: Variablennamen haben in der LuaDoc häufig den gleichen Namen wie in den XMLs, dadurch kann man die dort dann auch mit der Suchen-Funktion finden.

    Findest Du z.B. in einer Fahrzeug-XML eine Secialization <honk>, dann wirst Du in der LuaDoc (Links dahin siehe im Beitrag #1) unter "Specializations" diese unter dem gleichen Namen "Honk" finden. Dort kannst Du dann sehen, wie die entsprechende Specializations funktioniert und die Parameter aus der XML verarbeitet.

    Eure erste Anlaufstelle ist der erste Beitrag #1 in diesem Thread, wo ich Materialien verlinke. Vieles werdet Ihr Euch selbst erarbeiten müssen, weil jedes Script dass ihr erstellen möchtet, wieder andere Herausforderungen mit sich bringt, und ihr kommt da im Zusammenspiel mit der LuaDoc sehr schnell in Gebiete, wo vor Euch noch nie jemand gewesen ist...8)

    LG, Peter

  • Moin LS19_Gamer,

    ich hatte in letzter Zeit privat ziemlich viel um die Ohren, aber aufgrund deiner Nachfrage geht es genau jetzt weiter, jedoch wegen Zeitmangel wieder mal unterstützt durch ein "Fremdvideo".^^

    In dem unten verlinkten Video geht es um den "geheimnisvollen Doppelpunkt".

    Wenn ihr euch die "helloWorld"-Lua in Beitrag #17 anschaut (oder eine andere Lua), dann werdet ihr feststellen, dass einige Funktionsnamen einen Punkt enthalten und andere einen Doppelpunkt.

    Der Unterschied in Kurzform erklärt:

    Der Doppelpunkt übergibt unsichtbar als ersten Parameter "self", so dass der erste sichtbare Parameter eigentlich schon der zweite Parameter ist. "self" ist ein bestimmter "table" in der Lua-Tabellenstruktur, im LS beispielsweise der table eines Treckers, Anhängers oder einer Maschine. Da sich häufig lang verschachtelte Tabellennamen ergeben, wird für die Tabelle des eigenen Gerätes einfach "self" verwendet. Dadurch wird der Code übersichtlicher, Tippfehler werden unwahrscheinlicher und Funktionen können flexibler eingesetzt werden.

    Lua ist eine stark tabellenorientierte Programmiersprache und aus dem Video lässt sich auch einiges aus dem Umgang mit Tabellen lernen. Anfänger müssen sich das Video vielleicht auch zwei Mal anschauen, um den größten Teil zu verstehen. Es geht dabei um das Erlernen von Lua allgemein, also nicht LS-Spezifisch.

    Schönen Sonntag noch!

    Externer Inhalt youtu.be
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

  • Moin Schwefer,

    um Teile eines Scripts zu deaktivieren kannst du sie mit den doppelten eckigen Klammern auskommentieren, hier ein Beispiel:

    Code
    --[[
        Hier könnten jede Menge
        Code-Zeilen drin stehen
    ]]

    Du kannst auch bei den registerEventListeners() einzelne Zeilen deaktivieren, die jeweiligen Funktionen werden dann nicht mehr aufgerufen.

    Mit print() kannst du zum besseren Verständnis den Inhalt von Variablen in die Log schreiben (sinnvoll bei onLoad()) und mit renderText() kannst du den Inhalt von Variablen auf dem Bildschirm ausgeben (sinnvoll bei onUpdate()).

    Der Aufwand ein fremdes Script zu verstehen hängt stark von der Länge des Scripts ab und auch davon, ob der Scripter sich Mühe gegeben hat, das Script verständlich zu schreiben und die Variablen verständlich zu benennen. Und natürlich von deinen eigenen Vorkenntnissen.

    Wenn das Skript unleserlich formatiert ist, kannst du über Google nach einem lua code formatter oder lua code beautifier suchen und den Code dann online in ein leserliches Format formatieren lassen.

    Liebe Grüße

    Peter

  • Hello Peter

    Know you’re very busy. We have developed 20 new hardwood tree species not in game for new map.

    We have learned that every specie must have unique SPLITTYPE number which appears in the i3d xml of the tree. Can this dynamic SPLITTYPE table be updated with script?

    Secondly, when tree is felled, a script changes its filltype to WOOD. Can a script be written to change filltype to tree name? Example FILLTYPE=“IRONWOOD”. Meaning then we can sell trees by specie name.

    Any comments appreciated.

  • Hello Peter

    Know you’re very busy. We have developed 20 new hardwood tree species not in game for new map.

    We have learned that every specie must have unique SPLITTYPE number which appears in the i3d xml of the tree. Can this dynamic SPLITTYPE table be updated with script?

    Secondly, when tree is felled, a script changes its filltype to WOOD. Can a script be written to change filltype to tree name? Example FILLTYPE=“IRONWOOD”. Meaning then we can sell trees by specie name.

    Any comments appreciated.

    Sorry, until now I made scripts only for vehicles, so I don't know anything about scripting for maps or trees.

  • Hi Peter

    Don’t know if there is better place to communicate with you. Anycase, I have solved first phase of my project HOW TO ADD NEW TREE SPECIES.

    for second part, I need to design custom TRIGGER and icon. I can do that, but:

    How do I link trigger action to LUA?

    cant find examples

    Can you help?