Lua Script Support Group

  • *hi*

    Wäre es nicht sinnvoll, eine Lua Script Anwender Gruppe zu starten?

    Gut, mir ist schon bewusst, dass die Entwickler Lua Scripte nicht aus Spaß erstellen, sondern damit auch ihren Lebensunterhalt gestalten und insofern aus nachvollziehbaren Gründen sicher Null Interesse haben können, Wissen für Lau weiterzugeben. Verständlich!


    Aber ansonsten gibt es doch oft Kleinigkeiten, die sich mit einem zusätzlichen Lua Script schnell beheben ließen – wenn man denn wüsste wie.


    Als da wäre (Beispiele):

    • Was braucht man, um mit Lua Script anzufangen?
    • Wie bindet man eine zusätzliche Lua-Datei in die Engine.bin?
    • Wo gibt es schon aktive Lua-Script Gruppen?
    • Usw.

    Es sollte somit im idealsten Fall eine Begegnungsstätte für absolute Beginner, Normalos, Fortgeschrittene und Nerds sein.


    Wie zweckmäßig wäre dieser Ansatz? Bisher ist es ja so (meine Erfahrung meistens), man stellt eine Frage zu Lua im Forum und dann passiert NICHTS – zumindest nicht im Forum. Meist hatte ich dann jedoch das Glück, dass ein User über PN seine Hilfe angeboten hat und ich das Angebot dankbar nutzen konnte. Meine Kenntnisse in Lua sind sehr bescheiden, wenn es noch Abstufungen unterhalb von rudimentär geben sollte, so dann darunter irgendwo im Keller.


    Wiki Einträge zu Lua:


    Meine bisherigen Lua-Script Projekte:

    wurden mit Lua realisiert, jedoch nur unter tatkräftiger Unterstützung anderer User. Die Scripte sind nicht verschlüsselt.


    Noch einmal die Frage von ganz oben, sollte es eine Lua Gruppe geben hier im Forum?


    Gruß

  • Vielen Dank für das Interesse!

    Wenn ich eins bedauern muss, so zum Beispiel meine Ignoranz und Gleichgültigkeit gegenüber Programmiersprachen. Mein Apell daher, lernt bei Zeiten und lasst es nicht schleifen wie ich. Heute habe ich über eine Stunde gebraucht, um zu realisieren, welchen Fehler ich verbastelt hatte und somit immer komische Phänomene sich daraus ergaben. Mal ließ sich die PZB nicht einschalten , dann die ZZA nicht nicht schalten usw. Der Fehler war ein fehlendes Leerzeichen zwischen einem Minuszeichen und einer Ziffer.


    So falsch: -1


    So funktioniert es nun wieder: - 1


    Notepad++ zeigt leider diesen falschen Code nicht als Fehler, obwohl als Sprache Lua eingestellt war.

  • Super Tipp, habe Visual Studio Code installiert.

    Welche Extensions sind denn notwendig / sinnvoll? Sieht schonmal nicht schlecht aus *ja*


    Warte mal mit den Plugins.


    Gruß


    Edit:

    Hi Oliver ,

    habe da ne Frage, "Call" wird als unbekannt deklariert, kann man das irgendwo eintragen, dass das nicht als Fehler angezeigt wird?

    Gruß

  • Ich arbeite in VS Code mit der Lua Erweiterung von Tencent. Dazu ergänzend habe ich noch einen Formatter installiert, damit der Code auch immer schön aussieht. Damit komme ich ziemlich gut klar. Aber meine Empfehlung wäre da einfach mal ein paar Erweiterungen durchzuprobieren. Zum Debuggen ist außerdem eine Kombination aus Print- Ausgaben und Log-Mate mit einem Tail Programm zu empfehlen. Ich nutze dafür BareTail (https://www.baremetalsoft.com/baretail/). Damit kann man dann eigentlich schon ziemlich gut seine Scripte debuggen und quasi Live sehen was passiert. Ist zwar immer noch keine volle Debug-Funktion mit Breakpoints usw, aber schon ziemlich hilfreich.


    Ansonsten noch als Ergänzung zu der Link-Liste von Cotten Eye Joe :

    Ich würde als Scripting Referenz noch die "Scripting Function Reference" DTG empfehlen. Zu finden unter folgendem Link: http://tscdevdocs.co.uk/

    Dort ist eigentlich alles beschrieben, was man als Programmierer wissen muss. Auch deutlich ausführlicher als bei Rail-Sim im Wiki. Wobei das eher weniger Tutorials sind, sondern Entwickler-Dokumentationen. Heißt, man wird dort nicht wirklich an die Hand genommen, sondern bekommt nur den Werkzeugkasten beschrieben. Umsetzen muss man das aber selber.

    3 Mal editiert, zuletzt von TobiasM () aus folgendem Grund: Tippfehler korrigiert

  • Den Wert des Zustandes der Türen auslesen, wie geht das?

    Geschlossen = 0, Öffnen / Schließen = 1, Offen = 2

    jedoch wo oder wie kann man diese Werte auslesen?


    In der Engine.bin der DTG DB BR648 ist ein >DoorsCount< Eintrag, der gibt die Werte 0,1,2 zurück - so konnte ich diesen schonmal verwenden.


    Vielleicht hat jemand einen Plan und Zeit und kann Tipps dazu geben. Es soll eine rudimentäre Traktionssperre werden. Also, wenn Türwert = 2 dann TrainBrakeControl = 0.9
    Brauche also einen Eintrag in der Engine.bin, der die Türwerte zurückgeben kann.

    Vielleicht geht das mit mit >DoorsOpenClose<, da bekommt man die Werte 0 + 1 und man könnte dann die 1 für die Traktionssperre nehmen?

  • Ja, mit "DoorsOpenCloseRight" bzw. "DoorsOpenCloseLeft" geht das. Wenn der Wert >0 ist, sind die Türen nicht zu. Ich müsste jetzt erst nachsehen, aber bekommt man wirklich nur die Werte "0" und "1" zurück?

    "wir müssen unbedingt immer so weiter machen wie immer"

    Einmal editiert, zuletzt von Mistral ()

  • ..

    Ich könnte dir morgen schreiben welche ich da genau verwende.

    ..

    Oliver


    Köntest Du diese Plugins hier bitte noch einmal öffentlich im Thread benennen?

    Die entsprechende Seite mit den Erweiterungen ist da für Anfänger wie mich sehr unübersichtlich.

    Vielen Dank!

    Stefan

    "Bitte beachten Sie unsere unverbindliche Abfahrtsempfehlung!"

    k Route Add-On

  • Ich müsste jetzt erst nachsehen, aber bekommt man wirklich nur die Werte "0" und "1" zurück?

    Ja, tut man. Aber das sollte für eine Traktionssperre ja an Information reichen. Du prüft den Wert der DoorsOpenCloseRight und DoorsOpenCloseLeft Control-Values und wenn die den Wert eins haben setzt du halt deine Traktionssperre, indem du den entsprechenden Brems- Control-Value setzt.

  • Stimmt - gerade nochmal nachgesehen. Der Wert springt auf "1", sobald der Tastendruck "T" erfolgt, und wieder auf "0", sobald sich die Türen beginnen zu schließen. Wenn man also eine eher langsame Türanimation hat, wird die Traktionssperre deaktiviert, bevor die Türen wirklich zu sind. Besser kontrollieren kann man das dann natürlich mit einer geskripteten Türanimation.

    "wir müssen unbedingt immer so weiter machen wie immer"

  • Sorry das es so lange gedauert hat, bis ich antworten konnte, haben heute noch eine etwas längere Coding session gemacht, aber für euch bin ich noch etwas sitzen geblieben.

    Hier sind meine Plugins schön aufgelistet:


    Um etwas tiefer in lua einzusteigen und vor allem zu verstehen was Variablen, integer, if, string usw. ist könnt ihr euch mal auf der Seite https://www.maschinennah.de/lua2021-01/ umschauen, dort wird das grundlegenste mal in kurzen Videos und Übungen gezeigt.

    Wie gesagt meine Hauptsprachen sind php, HTML und java.

    Bin aber gern bereit, mal über euren Code zu schauen wenn es meine Zeit zulässt.
    Hab mir auch mal die docs für den TSC besorgt.


    So jetzt aber Gute Nacht.

  • Benötige Hilfe für (es gibt im Code Anzeige Fenster keine Option für "Lua" ?):


    Eine Bedingung soll nur "WAHR" sein > wenn die entsprechend Taste für eine Funktion auf der Tastatur betätigt wird.


    Beispiel: Die LZB (B) Bereitschaft soll / darf sich nur aktivieren lassen, wenn die PZB schon aktiviert ist

    und die LZB (U) Übertragung sich nur aktivieren, wenn LZB (B) Bereitschaft schon aktiviert ist


    Dieser Code funktioniert nicht (sonst alles andere - was hier ausgeschnitten ist - funktioniert einwandfrei), muss irgendwo ein Fehler sein. Falls jemand Zeit und Lust hat, vielleicht mal anschauen oder vielleicht weiß schon gleich jemand, woran es liegt.


    PZB = An+85, 70, 55, Aus

    LZB_Auto (B)

    LZB (U)


    sollte eigentlich so sein:


    C#
            elseif(p.PZB >= 0.5 and p.LZB_Auto >= 0.5) then
                if( [TASTATUREINGABE FÜR LZB = ON] or [WENN SCHIENE LZB EINSCHALTET] ) then
                    Call("SetControlValue", "LZB", 0, 1)
                end
            end
            p.lastValue_PZB = p.PZB
        end
        --<<
    end

    also, suche diesen Syntax in Lua, wenn Spieler die LZB Übertragung über Taste aktiviert, aber auch den Syntax, wenn die Schiene (bzw. der dort verbaute Marker) die LZB Übertragung aktiviert.

    Wobei ja jetzt schon der Marker in der Schiene die LZB (U) einschaltet - könnte sich beißen.

    Schon mal richtig viel Danke und


    Gruß

  • Cotten Eye Joe
    Guten Abend, bin zwar sehr lange vom Programieren weg, aber eins ist mir immer noch ganz genau bekannt:
    Umlaute egal welche auch immer in Funktionnamen nicht verwenden.

    if( [TASTATUREINGABE FÜR LZB = ON] or denke das Ü mal dur UE ersetzen.

    Gruß Andreas

    Wer Tippfehler findet darf sie behalten. Auf diesen Fehlern liegt kein (C).
    Auch ist das Repainten derartiger Fehler erlaubt und sogar erwünscht. *closed*