

ElFerrocarrilero
Mitglieder-
Gesamte Inhalte
23 -
Benutzer seit
Letzte Besucher des Profils
Der "Letzte Profil-Besucher"-Block ist deaktiviert und wird anderen Benutzern nicht angezeigt.
-
Anlagennachbau nach Herstellerplan
ElFerrocarrilero antwortete auf prinzs Thema in Anleitungen und Tutorials
Hallo Wolfgang, vielen Dank für die schnelle Antwort und den Link! Leider kann diese Anlage (v.8.5.2) unter v.8.2. nicht geladen werden; es erscheint ein Prompt, man möge updaten*. Die PDF-Dokumente tuns aber bestens auch für v.8.2! (Ich hoffe nur, es werden im Tutorial nicht zu viele neue Features von v.8.5 oder 9 verwendet; aber zunächst gehts ja auch erstmal nur um die Grundzüge.) Und es ist wirklich sehr nützlich, alle Aspekte einer Anlage, vom Gleisplan bis zur Vegetation, mal in einem Tutorial versammelt kennenlernen zu können. Cheers, Martin * Irgendwann werde ich das sicher auch tun. Aber v.8 läuft auf meinem jetzigen System sehr gut, und ich möchte deshalb erstmal nicht die sicherlich höheren Ressourcen-Anforderungen einer neueren Version riskieren. Abgesehen davon, dass man ja dann gleich noch mehr Features lernen müsste. -
Anlagennachbau nach Herstellerplan
ElFerrocarrilero antwortete auf prinzs Thema in Anleitungen und Tutorials
Hallo, spät, aber nicht zu spät, habe ich dieses hervorragende Tutorial von Wolfgang (@prinz) zum "Anlagennachbau nach Herstellerplan" entdeckt. Ganz genau das, was der Einsteiger braucht, um mal einen besseren Überblick zu bekommen und statt einzelner MBS-Bäume und Lua-Sträucher den ganzen Anlagen-Wald zu sehen. Großen Respekt und Dank an den Verfasser für diese umfassende und gründliche Dokumentation! (wie alle Entwickler wissen, immer das mühseligste und daher gern "vergessene" Geschäft...). Kleines Randproblem: Die im Tutorial Teil 1 und hier im Forum erwähnten Anlagen werden bei mir im Online-Kartalog weder unter der ID noch unter ihrem (vermuteten) Titel noch unter dem Namen "prinz" gefunden; es geht um: 741AF992-2B29-48ED-B6B8-6C416AF9A1EC "Basissteuerungen" / "Steuerung der Standardthemen" EF05FEDD-DAAD-4B46-8911-166B97B13408 Stand zu verschiedenen Zeiten, ab dem 27.2.2024, und später dann fertige Anlage Hier im Forum-Thread erwähnt niemand ein solches Problem -- suche ich da falsch, oder ist das vielleicht eine Versions-Sache (ich habe MBS v.8.2.2)? (Andere Anlagen von prinz kann ich sehen.) Danke für alle Tips! Cheers, El Ferrocarrilero -
Hier zur Ergänzung (und für nachfolgende Generationen, die diesen Thread studieren) noch eine Mikro-"Anlage" (es gibt nicht mal Schienen!), welche die Umsetzung von Götz' Hinweisen demonstriert. Einzelheiten stehen in der "Anlagen"-Beschreibung. Cheers, El Ferrocarrilero Demo_zentrale_Funktionen.mbp
-
Hallo Götz, aha! Wieder was gelernt; den "benutzerdefinierten Ereignissen" war ich bisher eher aus dem Wege gegangen, werde sie mir aber nun mit Interesse genauer ansehen. Das ist (vor allem am Anfang) immer etwas das Problem: man weiß oft nicht so recht, soll man bei der "allgemeinen" Lua-Sprache weitersuchen* oder geht es um etwas MBS-Spezifisches. Vielen Dank für die schnelle und hilfreiche Antwort! Cheers, El Ferrocarrillero * wo ich z.B. nun lernen konnte/musste/durfte , dass der # Operator mit nicht-numerisch indiziertenTabellen nicht funktioniert...
-
Greetings, Um eine Funktion für mehrere Ereignisse benutzen zu können, habe ich versucht, sie in einer Tabelle unterzubringen, die dann zu einer Ereignis-Variablen gemacht wird. Das gelingt aber nicht, siehe Demo-Code mit Kommentaren. Geht das wirklich nicht, oder übersehe ich da was? Danke für alle Tips. Cheers, El Ferrocarrilero --[[ Funktionen als Tabellen-Elemente *in einer Ereignis-Variablen* ? (als auslösendes Ereignis dient Betätigung eines Schalters) --]] tb = { eins = 111, zwei = 222, doSomething = function(etwas) print("Funktion tb.doSomething: " .. tostring(etwas)) end, drei = 333 } n = 0 for _ in pairs(tb) do n = n + 1 end -- (Anscheinend die einzige Art, die Länge einer Tabelle mit nicht-numerischen Indices -- zu bestimmen; #tb funktioniert _nicht_ (learned it the hard way...:-/ ) print(">>>> Einträge in lokaler Tabelle tb: " .. tostring(n)) --> 4 OK print(tb.doSomething("Hallo!")) --> Funktion tb.doSomething: Hallo! OK -- mit einer Tabelle direkt im Skript geht es also. So weit, so gut. -- nun die Tabelle mit enthaltener Funktion zu Ereignis-Variabler machen: -- (geht wohl nicht in der grafischen EV. I think. -- Dort z.B. als "Text (mehrzeilig)" eingegebene Funktion funktioniert (logischerweise) nicht.) $("Ereignisse").variables.tbNEU = tb --> Module-Var. wird gesetzt --> Ereignisse, "tbNEU", {3 Elemente} -- sollten 4 Elemente sein, aber Inspektion in der EV zeigt, dass die Funktion fehlt n2 = 0 for _ in pairs($("Ereignisse").variables.tbNEU) do n2 = n2 + 1 end print(">>>>> Einträge in Ereignis-Variable (Tabelle) tbNEU: " .. n2) --> 3 korrekt, weil die Funktion fehlt z = $("Ereignisse").variables.tbNEU.drei print("tbNEU.drei: " .. z) --> tbNEU.drei: 333 OK, "normale" Einträge tuns also... -- ... die Funktion aber nicht: out = $("Ereignisse").variables.tbNEU.doSomething("Huhu!") --> Skriptfehler: attempt to call a nil value (field 'doSomething') -- (traurig aber logisch, da Funktion gar nicht in die Ereignis-Var. übernommen wurde) print(out) -- Sorry, Dave, I can't do that...
-
"Umgebung" von Lua-Skripten in der EV? (Ereignisparameter?)
ElFerrocarrilero antwortete auf ElFerrocarrileros Thema in Fragen zur Steuerung
Vielen Dank an @Goetz für die ausführliche und hilfreiche Erläuterung! Eine wichtige Information; mich hat etwas die Vorstellung beunruhigt, es gebe da womöglich wer weiß wieviele andere, die sehr nützlich wären, wenn man nur von ihnen wüsste. (Jedem Programmierer bekanntes Problem, besonders auf neuem Gebiet: Man programmiert mühsam und garantiert "nicht-performant" um ein Problem herum, das sich mit Hilfe eines dieser leider noch unbekannten Elemente ganz leicht lösen ließe. ) Aha! Genau das war der Stolperstein für mich. Da war mir was bei der Info-Jagd durch die Lappen gegangen. Zwar hatte ich die Lektion von neulich nicht vergessen und es auch hier mit Strg+Leertaste probiert, war dabei aber dem (falschen) Eindruck erlegen, dass die dann erscheinende Liste immer dieselbe ist, indem sie alle nur denkbaren MBS-Lua-Elemente (Eigenschaften, Funktionen, Variablen usw, plus Lua-Schlüsselwörter) auflistet. Beim neuerlichen Versuch, aufgrund der Hinweise hier, sehe ich jetzt aber, dass das nicht stimmt: die Liste ist in der Tat spezifisch für das jeweilige Ereignis, und die Ereignis-Parameter ganz am Anfang enthalten auch die jeweils speziellen Namen, die ich da also auch ohne "Vorkenntnisse" finden kann. Prima, alles klar, nochmals vielen Dank für alle Antworten, und schönes Wochenende! Cheers, El Ferrocarrilero -
"Umgebung" von Lua-Skripten in der EV? (Ereignisparameter?)
ElFerrocarrilero antwortete auf ElFerrocarrileros Thema in Fragen zur Steuerung
Vielen Dank @Phrontistes für die schnellen Antworten! (Die Beispielanlage läuft bei mir allerdings nicht; ich werde ermuntert MBS upzudaten. Vermutlich ist die Anlage für v.9, während ich noch v.8 habe.) Abgesehen davon war die Zielrichtung meiner Frage aber auch ein bisschen anders: Ich kann mittlerweile track, oldTrack und newTrack erfolgreich verwenden. Und hatte mir auch schon zusammengereimt, dass im Ereignis-Protokoll die Werte von oldTrack und newTrack auftauchen. Was mich aber darüber hinaus interessiert ist die Frage, ob/wo diese Dinge dokumentiert sind? Also zum einen, dass es so etwas wie controller oder oldTrack etc. überhaupt gibt, und zum anderen, welche Eigenschaften diese Objekte haben. XYZ.name funktioniert vermutlich immer, XYZ.state vielleicht ja auch, aber oldTrack.crane vermutlich nicht (oder?). So etwas kann ich (als Einsteiger) derzeit nur durch Studium von anderen Anlagen (oft sehr schön. aber für mich noch zu kompliziert) herausfinden, oder durch Versuch & Irrtum -- falls ich zumindest den Namen des betreffenden Objekts/Ereignisparameters schon kenne. Außer track, oldTrack, newTrack und controller gibt es aber sicher noch viele andere. Cheers, El Ferrocarrilero -
"Umgebung" von Lua-Skripten in der EV? (Ereignisparameter?)
ElFerrocarrilero hat Thema erstellt in Fragen zur Steuerung
Hallo, eine allgemeine (Einsteiger-)Verständnisfrage zu Lua-Skripten im MBS: [Kurzfassung: Vielleicht läuft die Frage einfach nur darauf hinaus, was genau "Ereignisparameter" sind, und wo man sich darüber informieren kann? ] In der grafischen Oberfläche für die Ereignisverwaltung (EV) kann ein Ereignistyp (z.B. "Zug betritt ein Gleis") und ein "Auslöser" (z.B. "Gleis_42") festgelegt werden. Im Skript-Editor lässt sich dann Lua-Code für dieses Ereignis schreiben. Aber dieser Code betrifft dann (natürlich) nur, was "im Innern" des Ereignisses vorgehen soll. Es muss aber ja einen Rahmen / eine Umgebung geben, in der das alles abläuft (z.B. so etwas wie ein "EventListener" für Gleis_42, der aufpasst ob dieses Gleis betreten wird). Wie kann man sich diesen "Rahmen" ansehen (nicht ändern!)? Über reine Neugier hinaus ist das auch eine praktische Frage: Man kann z.B ein Objekt* track verwenden, das auf das Gleis zeigt, welches durch ein Fahrzeug betreten wird, z.B. bei print(track.name). Dieses Objekt brauche ich in meinem Lua-Skript nicht zu definieren, das ist offenbar schon in der Umgebung erfolgt. Durch Zufall** habe ich dann im Lua-Code einer alten Anlage von BahnLand noch Objekte namens oldTrack und newTrack gefunden, und (für mich) überraschenderweise konnte ich die im eigenen Skript verwenden, ohne sie erst definieren oder mit Parametern versehen zu müssen.* Vermutlich gibt es da, wo die herkommen, auch noch andere nützliche Dinge? In einer Anlage von Goetz fand ich z.B. controller, was auch interessant aussieht, aber ist es wie track ein in der Umgebung definiertes Objekt, das ich ohne Weiteres benutzen kann, oder kommt es nur in speziell dieser Anlage vor? Wo könnte man sich über diese "Umgebung" informieren? Gibt es eine Art Programmierschnittstelle (API) oder Ähnliches für MBS-Lua? oldTrack und newTrack beispielsweise konnte ich bisher weder in der MBS-Hilfe, noch im Wiki, noch in den Foren finden**. (Das Objekt track wird in der Hilfe zwar in verschiedenen Beispielen verwendet, aber nicht selbst dokumentiert.) Oder geht diese Frage womöglich am gesamten Konzept von MBS-Lua-Skripten vorbei? Cheers, El Ferrocarrilero * "Objekt" hier immer in ganz allgemeiner Bedeutung, wie auch immer die betreffende "entity" (Wesenheit?) in Lua heißt ("property", "function", usw.). ** Wenn man im Editor "ol" schreibt, erscheint allerdings in der Tat ein Popup das "oldTrack" als "Ereignisparameter" anbietet. Nur muss man dazu den Namen natürlich schon kennen. Für Info über Eigenschaften und Methoden kann man dann "oldTrack." bzw "oldTrack:" tippen, aber die dann erscheinenden Listen umfassen wohl immer alle bestehenden Eigenschaften und Methoden, nicht nur die, welche für dieses spezielle Objekt auch wirklich "Sinn machen". Oder? -
Lua Dokumentation speziell für MBS?
ElFerrocarrilero antwortete auf ElFerrocarrileros Thema in Fragen zur Steuerung
Gute Tips, danke @gmd! Wahrscheinlich nicht... (Ich hab selber mal auf eigenem PC mit AI Modellen experimentiert, für Bilderkennung. Ergebnis unter anderem: wenn man in einem Bild mit 1024 Pixeln ein (1) Pixel an der "richtigen" Stelle ändert, wird ein vorher korrekt erkanntes Schiff nun als Flugzeug angesprochen... Passiert nicht immer, aber kann immer passieren. Bei den neueren Large Language Models (LLMs) gibt es noch viel schönere Beispiele (runter scrollen zu "Fake it until, well, just keep faking it")... Zurück zum Topic: unten angehängt ist nun auch noch die englische Version. Cheers, El Ferrocarrilero Lua_English_Toc_alternativ.zip -
Lua Dokumentation speziell für MBS?
ElFerrocarrilero antwortete auf ElFerrocarrileros Thema in Fragen zur Steuerung
Schönes Layout! Ich hatte etwas Ähnliches in Angriff genommen, das hätte aber weitere zwei bis drei Monate gebraucht bis zu einem halbwegs präsentablen Ergebnis... Statt dessen hab ich mir die Freiheit genommen (kühn das Einverständnis von @gmd voraussetzend* ) das Inhaltsverzeichnis seiner HTML-Seite (deutsche Version) wieder "side-by-side" mit den Beschreibungstexten zu positionieren, so dass es also nun wieder jederzeit sichtbar ist. Das Original-Layout hat das auch gut vertragen. * @Adminfalls nicht einverstanden, bitte die ZIP-Datei gleich wieder unzugänglich machen... Ausserdem einige kleinere kosmetische Änderungen (Farbe und Fontgröße); ist natürlich Geschmackssache und lässt sich auch bei Nicht-Gefallen/Nicht-Einverständnis leicht wieder rückgängig machen (der Original-Code ist noch im File enthalten, nur auskommentiert.) Was hier nicht geht, ist das Ein- und Ausblenden der Unterkapitel ("items") zu jeder Haupt-"Category", weil diese items hier keine Linkadresse enthalten. Ist vielleicht aber auch ohnehin Overkill, da man sich innerhalb der Kategorien eigentlich leicht zurechtfindet. Dann noch eine Frage aus reiner technischer Neugier: Wie wurde die ursprüngliche Kombination aus XML + XSLT denn zu HTML konvertiert? Wieder via Word, also mit dem workflow XML+XSLT ---> importieren nach Word, Inhaltsverzeichnis erstellen ---> exportieren nach HTML. Oder geht das auch anders? Die XML+XSLT-Kombination lässt sich zwar auch direkt in den (meisten) Browsern darstellen, aber eine Methode (außer der obigen), daraus eine echte HTML-Seite zu generieren, habe ich bisher nirgends gefunden. Cheers, El Ferrocarrilero Lua_Deutsch_Toc_alternativ.zip -
Lua Dokumentation speziell für MBS?
ElFerrocarrilero antwortete auf ElFerrocarrileros Thema in Fragen zur Steuerung
Danke für den Tip, leider habe ich nur LibreOffice. Der LO Writer erlaubt wahrscheinlich Entsprechendes (LO-Dokumente verwenden intern selber XML), man muss aber anscheinend erstmal eigenhändig XSLT-"Filter" bauen für die Übersetzung zu und von den jeweiligen LO-Stilen; also ein weiteres faszinierendes Bastelprojekt. The Quest widens... Praktisch vielleicht wichtigerer Punkt: Wäre es nicht besser, das Dokument (wenn es denn mal fertig werden sollte) direkt als Webseite online zur Verfügung zu stellen? Das würde sicherstellen, dass die Benutzer, die sich dafür interessieren, immer die aktuelle Version sehen; bei einem herunterladbaren PDF müssten sie sich selber drum kümmern (was sie erfahrungsgemäß aber oft nicht tun ). Und die Webseite könnte dann ja jeder immer noch selber als PDF "ausdrucken". Cheers, El Ferrocarrilero -
Lua Dokumentation speziell für MBS?
ElFerrocarrilero antwortete auf ElFerrocarrileros Thema in Fragen zur Steuerung
Dazu ein Hinweis zur Warnung (um Anderen Zeit zu sparen): Ich bastle (als XSLT-Newbie) sei zwei Tagen an einem XSLT-Stylesheet, das sich direkt auf die Original-XML-Dateien anwenden lässt (und vor allem auch die "Beschreibungen" besser formatieren kann). Das Problem sind die HTML-Tags dieser Beschreibungen (in CDATA-Wrapper), die im Brauser standardmäßig nicht interpretiert werden. Bisher also noch kein Erfolg. Abgesehen von dem CDATA-Wrapper (der wohl entfernt werden muss(?)) ließe sich das Problem an sich relativ leicht mit einem XSLT-Konstrukt (disable-output-escaping="yes") lösen. Jedoch gibt es eine Falle, vor der dieser Hinweis warnen soll: Firefox (und andere "Gecko"-basierte Brauser) unterstützen dieses Konstrukt nicht (aus Prinzip, kein Bug! 23 Jahre(!) alte Diskussion hier). Da der FF (den ich normalerweise ausschließlich benutze) aber keinen Hinweis darauf gibt, sondern die HTML-Tags einfach nur als Text darstellt, kann man dann sehr viel Zeit auf die Suche nach dem (nicht existenten) Fehler seines Stylesheets ver(sch)wenden. Bis man dann widerwillig mal den MS Edge probiert, und da geht es dann... Alle möglichen Work-arounds für den FF haben bisher auch nicht geholfen. The Quest continues... Cheers, El Ferrocarrilero -
Lua Dokumentation speziell für MBS?
ElFerrocarrilero antwortete auf ElFerrocarrileros Thema in Fragen zur Steuerung
Hier noch eine weitere Variante des "stand-alone"-Dokuments. Sie beruht auf dem ursprünglichen "2 html files, simple formatting " von gmd, siehe oben Post vom 10.1.2025 "01:36 PM". Zu dem Zeitpunkt war von "KI" noch keine Rede; demzufolge sollten wohl noch keine der "KI"-üblichen Halluzinationen (a.k.a. Bullshit ) enthalten sein. Einige (wenige) Checks ergaben Übereinstimmung mit dem originalen XML-Text. Auch der von EASY gefundene Problemeintrag (Post vom 11.01.2025 "10:10 AM") findet sich in gmd's Original-HTML (und auch im XML-Text) überhaupt nicht. Einschränkungen: hergestellt in kleinteiliger Handarbeit, also alles andere als eine (sinnvollere) automatische Konvertiering von XML... deshalb auch nur die deutsche Version... grauslicher Kludge* (Kulturschock-Gefahr für Profis die unvorsichtigerweise den Code ansehen...) * gmd's HTML > LibreOffice zur Erstellung des Inhaltsverzeichnisses, dann Export > HTML > Geradebiegen/Erweiterung von CSS, Javascript, etc. größter Nachteil: eigentlicher Beschreibungstext nach wie vor nicht formatiert! "Layout" nicht optimiert für Tablets, Handys, Smarte Armbanduhren, Intelligente Kühlschränke etc. (Auf Handys empfiehlt sich "landscape" = Querformat.) Die HTML-Webseite lässt sich nicht korrekt auf Papier ausdrucken (Drucker verstehen das Layout nicht). Selling Points: "normales" HTML, "sollte" also in allen Brausern funktionieren (getestet aber nur im aktuellen Firefox) größter Vorteil/SP: erlaubt "Navigation": Inhaltsverzeichnis stets sichtbar neben dem Beschreibungstext. Alle Überschriften im Inhaltsverzeichnis sind Links zum entsprechenden Beschreibungstext. Mit Klick auf die Hauptkapitel-Überschriften können außerdem die jeweiligen Unterkapitel-Überschriften ein- und ausgeblendet werden, auch diese sind Links zum Text. Hope it helps. Cheers, El Ferrocarrilero LuaDefs_interactive.zip -
Lua Dokumentation speziell für MBS?
ElFerrocarrilero antwortete auf ElFerrocarrileros Thema in Fragen zur Steuerung
Daher "wohlweislich"... Cheers, El Ferrocarrilero