Posts by Goetz

    In meinem Skript steht in der Formel neben der Zahl, die einen ganzen Tag in Sekunden repräsentiert (86400) auch noch der halbe Wert (43200 = 12 Stunden * 60 Minuten * 60 Sekunden)


    Hier folgt die Erklärung, warum diese Zahl notwendig ist:


    Züge können sowohl zu früh als auch zu spät am Bahnhof ankommen. Und diese beiden Fälle muss man unterscheiden, weil ein Zug, der zu früh ankommt, nicht zu früh losfahren soll.




    Da die Uhr einen Kreis formt, muss man festlegen wie weit "zu früh" bzw. "zu spät" reichen und wo der Wechsel stattfindet. Der muss nicht zwingend bei 12 Stunden liegen. Aber er muss außerhalb des Bereichs stattfinden, für den man intuitiv sagen kann: "Das ist zu früh" oder "das ist zu spät".



    Den 12 Stunden Wert habe ich genommen, weil das die einfachste Art war den Kreis in zwei Hälften zu teilen.



    Wenn man das nicht beachtet, dann kann man einen Zug, der 1 Stunde zu spät ist nicht von einem unterscheiden, der 23 Stunden zu früh kommt. Von den 6 Testwerten, die ich mitgegeben habe, wird dann mindestens einer ein falsches Ergebnis liefern.

    in deinem Code fehlt die Funktion neueAbfahrt.

    Diese Funktion wird im ersten Skript erstellt.

    Das zweite Skript für den Testlauf nutzt diese Funktion aus dem ersten Skript.


    Weil der Testlauf nicht zur eigentlich benötigten Funktion gehört, sondern nur demonstriert dass sie in allen Fällen das richtige liefert, habe ich die beiden Skriptteile getrennt. Weil sonst all die Überflieger denken: "Das Skript vom Götz ist mir zu lang" und nicht verstehen, dass nur die ersten 7 Zeilen relevant sind.

    good grief!


    LUA Source Code: Verspätungen
    1. function neueAbfahrt(Abfahrt, Ankunft, Warte)
    2. if(Abfahrt - Ankunft - Warte) % 86400 > 43200 then
    3. return (Ankunft + Warte) % 86400
    4. else
    5. return Abfahrt
    6. end
    7. end

    Mehr als 12 Stunden Verspätung werden als verfrühte Ankunft für den Folgetag gewertet,
    denn es ist sonst nicht eindeutig, ob ein Zug, der um 11 Uhr ankommt, der verfrühte 12 Uhr Zug dieses Tages ist
    oder der verspätete 12 Uhr Zug des Vortages. Diese Halbierung der 24 Stunden ist der Schlüssel!


    Mit dem nachfolgenden Skript könnt ihr überprüfen, dass die Funktion für alle sechs möglichen Konstellationen richtig funktioniert:

    Parameter in Funktionsaufrufen aus Kontaktpunkten sind wirklich wünschenswert.


    Aber wie wäre es, wenn ein Kontakt

    • beliebig viele Variablen haben könnte?
    • und somit Parameter, die änderbar sind?
    • und Namen haben?
    • und wenn er in diesen Variablen Objektadressen speichern könnte?
    • wie beispielsweise das folgende Signal?
    • oder eine ganze Liste von Gleisstücken?
    • die man zuvor einfach mit einem Doppelklick ausgewählt, kopiert und dann mit Strg-C in diese Liste eingefügt hat?
    • oder mehrere Tabellen mit Weichen und ihren Stellungen?
    • für verschiedene Fahrstraßen?
    • die nicht verloren gehen oder durcheinander geraten, wenn man ein Gleis verschiebt?
    • oder Zähler, die mit der Anlage gespeichert werden?
    • und die sich bequem editieren lassen?
    • oder wenn er neben seiner ID und der des auslösenden Fahrzeugs auch noch die Richtung übermitteln würde, in der er überfahren wurde?
    • oder wenn er auf die Zugmitte ebenso reagieren könnte wie auf Zuganfang und Zugende?
    • oder wenn Kontakte per Schlagwort zu kategorisieren wären?
    • damit man eine Funktion für eine ganze Gruppe von Kontakten anlegen könnte?
    • die dann die individuellen Parameter, welche dynamisch in den Objektvariablen hinterlegt werden, berücksichtigt?



    Wie wäre es, wenn man statt mehrerer Wizards

    • farbige Textbausteine hätte?
    • die sich zu einer Funktion zusammensetzen ließen?
    • mit Bedingungen, Wiederholungen, relativen Bezügen?
    • mit Timern?
    • in individuellen, überschaubaren Blöcken?


    Wie wäre es, wenn jedes Objekt auf der Anlage diese Fähigkeiten hätte und nicht nur der Kontakt? Und wenn geeignete Objekte - zum Beispiel Signale, Magnete, Hemmschuhe etc. - zugleich selber ein Kontakt wären?


    Wie wäre es, wenn man mit einem einfachen Rechtsklick direkt zu den Funktionen und den Variablen käme, die zu dem ausgewählten Objekt gehören? Und wenn das Betreten oder Verlassen eines Gleisstücks ebenso ein Auslöser wäre, wie das Betreten oder Verlassen eines Kontakts?


    Wie wäre es, wenn das Ende einer Animation (z.B. "Schranke geschlossen", "Schuppentor geöffnet", "Drehscheibe am Ziel angekommen") einen Funktionsaufruf auslösen könnte?


    Wie wäre es, wenn der zugehörige Lua Editor

    • Schlüsselworte und dergleichen farbig hervorheben würde?
    • eine Liste sämtlicher Funktionen samt Erklärung enthielte?
    • mit automatischer Ergänzung beim Schreiben?
    • mit der Möglichkeit, die grafischen Bauteile in Lua Code umzuwandeln?
    • lokal und individuell?


    Wie wäre es, wenn man per Kontakt nicht nur die Geschwindigkeit eines Zuges ändern könnte, sondern

    • auch seine Bremskraft?
    • oder seine Beschleunigungskraft?
    • oder das sanfte Ankuppeln aktivieren/abschalten?


    Wie wäre es, wenn ein Fahrzeug diese Kontakte "schon von weitem sehen" und auf (dynamische!) Parameter in diesen Kontakten (z.B. "Abbremsen auf ...") vorausschauend reagieren könnte? Unter Berücksichtigung seiner individuellen Bremskraft und Geschwindigkeit? Ohne durcheinander zu geraten, wenn sich vor ihm sowohl ein Kontakt / eine Ampel als auch ein langsameres Fahrzeug befindet?


    Wie wäre es, wenn

    • diese Kontakte Namen haben könnten?
    • und in einer Liste auffindbar wären?
    • und man diese Liste nach Kriterien filtern könnte, die auch Variablennamen, Schlagworte etc. enthalten?

    Wie wäre es, wenn man

    • ausgewählte Objektvariablen während des Betriebs in einem Protokoll beobachten könnte?
    • und diese Parameter über das Protokoll auswählen und ändern könnte?


    Wie wäre es, wenn all das auch dann weiterhin zuverlässig funktionieren würde, wenn man die Anlage im laufenden Betrieb speichert und am nächsten Tag wieder lädt?

    Wenn Du die Dateien benötigst ...

    Das ist sehr nett, hkb-bahn


    Aber ich benötige sie nicht. Forenmitglieder, die anfangen wollen Lua zu lernen, könnten das Tutorial vielleicht gebrauchen. Nicht als Word Datei. Sondern als Link unter "Hilfreiche Seiten" hier im Forum. Wo auch andere Tutorials zu finden sind.


    Die Administration sah das offenbar anders und hat aufgeräumt. Da will ich ihnen mein Tutorial jetzt nicht erneut aufdrängen. Ich wollte nur sicher stellen, dass ich bei der Suche nach den Threads nichts übersehen hatte.

    Anhand dieser Nummer des Fadens thread/6495 muss der Beitrag so 2014 erstellt worden sein, zu EEP10 vermutlich.

    Ja, genau.

    Mit EEP 10 Plugin 2 hielt Lua Einzug in EEP. Kurz darauf habe ich mit der Reihe begonnen, um Interessierten den Einstieg in diese Neuerung zu erleichtern.


    Ihr werdet es mit dem Archiv entsorgt haben.

    Hallo, werte Administratoren,

    es gelingt mir nicht mehr, mein Lua Tutorial (in beiden Fassungen, mit und ohne Diskussion) zu finden.

    Meine gespeicherten Links führen jetzt ins Leere.


    Darf ich euch bitten nachzuschauen, wo die jetzt liegen?

    Vor allem die Version mit Diskussion würde ich gerne wiederfinden, denn die andere Fassung war schon zuvor mittendrin gekappt worden und nur noch unvollständig.


    Vielen Dank

    Götz