Jump to content

Empfohlene Beiträge

Geschrieben (bearbeitet)

Hallo Alle,

trotz gründlicher Suche gelingt es mir nicht, eine (möglichst) vollständige Dokumentation (API*, Handbuch, Reference o.ä.) der MBS-spezifischen Lua-Komponenten (Befehle, Funktionen, eventuelle Einschränkungen, usw) zu finden (für MBS V8).

Das Tutorial von Goetz behandelt mehr die allgemeinen Grundlagen der Lua-Programmierung; die Wiki-Seite zur Ereignisverwaltung mit Lua beschreibt die Möglichkeit, Lua zu nutzen, geht aber nicht auf Einzelheiten ein, bis auf den Hinweis "Alle Befehle, die 3D-Modellbahn Studio unterstützt, sind in der automatischen Hilfe (Autovervollständigung) dokumentiert." Aber auch das hilft ja nur, wenn man zumindest den Anfang des betreffenden Befehls bereits kennt... :$
Hier im Forum finden sich viele schöne und hilfreiche Beispiele, oft mit Demo-Anlagen; und ich weiß auch, dass Programmierung in der grafischen Ereignisverwaltung als Skript gesehen werden kann.

Das alles hilft bei speziellen Problemen und gezielter Suche, aber nicht so recht für breitere Orientierung und Überblick beim Einstieg, und zum Nachschlagen.

Übersehe ich da was? Gibt es so eine Dokumentation, und wo wäre sie zu finden?

Viele Dank für alle Tips!
El Ferrocarrilero

 

Bearbeitet von ElFerrocarrilero
typo
Geschrieben

Hallo El Ferrocarrilero und Willkommen im Forum!

Eine Auflistung aller Lua-Befehle gibt es wie von dir bereits erkannt direkt im Programm. Du musst dafür aber nicht den Anfangsbuchstaben kennen, sondern nur die Grundprinzipien:

  • STRG + Leertaste listet dir alle globalen Funktionen und Variablen auf
  • . (Punkt) listet dir alle zur Verfügung stehenden Objekteigenschaften auf
  • : (Doppelpunkt) listet dir alle zur Verfügung stehendenen Objektmethoden auf

Alle wichtigen Informationen findest du in dieser Programmierhilfe.

Viele Grüße,

Neo

Geschrieben (bearbeitet)

Hallo neo,

ahaa! Besten Dank für die schnelle Antwort und diesen Hinweis, das hilft in der Tat erheblich weiter, da auch die MBS-spezifischen Dinge aufgeführt werden.

Dazu noch eine Anregung und ein Wunsch, wenn es dem (Wieder-)Neueinsteiger gestattet ist.

Anregung: Deinen Hinweis habe ich sonst nirgendwo gefunden (falls nicht übersehen); es wäre sicher gut, wenn der auch auf der o.g. Wiki-Seite stünde, wo ja nur von Autovervollständigung die Rede ist. Sollte sich doch leicht machen lassen?

Wunsch: Falls vom (Source-)Format und vom Umfang her machbar (was ich natürlich nicht beurteilen kann), wäre es sehr nützlich, diese Programmierhilfen auch als ein "stand-alone" Dokument zu haben (PDF? HTML/Webseite?). Sollte doch auch möglich sein?
(Nothing is impossible for the man who does not have to do it. Ich volontiere aber, falls gewünscht...)

Zum einen, weil man dies Thema vielleicht nicht nur "in game" studieren möchte.
(Oder vielleicht Lua-Skripte erstmal "extern" schreiben will, in Notepad++ o.ä.)

Zum anderen, weil das User Interface des EV-Editors zum Nachschlagen gut funktioniert, zum "erstmal einen Überblick gewinnen" aber nicht so ganz optimal ist ("IMHO":)): Das Fenster lässt sich nicht maximieren in der Größe ändern (gerade beim Verifizieren meiner Behauptung erst entdeckt), die Größe des relativ kleinen Dropdown-Fensters für die Programmierhilfen scheint das aber nicht zu beeinflussen, man muss also fleißig scrollen.
Alles trotzdem sehr hilfreich und ganz sicher kein "Showstopper", aber die Information auch als "out of game"-Dokument zu haben wäre halt doch nützlich.

Nichtsdestoweniger kanns nun weitergehen, nochmals vielen Dank für die schnelle Hilfe!

El Ferrocarrilero

Bearbeitet von ElFerrocarrilero
typo
Geschrieben
vor 44 Minuten schrieb ElFerrocarrilero:

Deinen Hinweis habe ich sonst nirgendwo gefunden

Jedes Lua Skript im MBS beginnt mit diesem Text:

LuaHinweistext.jpg.e0eb569803d310085a9ad2837e2ea65d.jpg

Geschrieben

Hallo El Ferrocarrilero,

ich habe das Wiki um die Informationen bezüglich des Punktes und Doppelpunktes erweitert.

Ich selber bin kein großer Freund von einer Dokumentation außerhalb des Studios, weil diese schnell veraltet und es doppelten Aufwand bedeutet, sie zu pflegen. Nichtsdestotrotz steht es dir natürlich frei, so eine Dokumentation zu erstellen, und ich kann dir die gesamten Lua-Befehle auch als strukturierte XML-Datei zusenden, aber das warten und pflegen so einer Dokumentation möchte ich selber nicht übernehmen.

Viele Grüße,

Neo

Geschrieben
21 minutes ago, Goetz said:

Jedes Lua Skript im MBS beginnt mit diesem Text:

LuaHinweistext.jpg.e0eb569803d310085a9ad2837e2ea65d.jpg

Aargh, sorry. :$.
"(falls nicht übersehen)". Also doch. Vermutlich zu oft gesehen um noch drauf zu achten, aber leider bevor das Info "verinnerlicht" war...

Cheers,
El Ferrocarrilero

Geschrieben
10 minutes ago, Neo said:

ich habe das Wiki um die Informationen bezüglich des Punktes und Doppelpunktes erweitert.

(y) Danke!

12 minutes ago, Neo said:

Dokumentation außerhalb des Studios, weil diese schnell veraltet und es doppelten Aufwand bedeutet, sie zu pflegen.
[...] das warten und pflegen so einer Dokumentation möchte ich selber nicht übernehmen

Ja klar, das ist natürlich immer der Haken.

14 minutes ago, Neo said:

Nichtsdestotrotz steht es dir natürlich frei, so eine Dokumentation zu erstellen, und ich kann dir die gesamten Lua-Befehle auch als strukturierte XML-Datei zusenden

Keine Garantie, aber das wäre nett und einen Versuch wert, wenn der Aufwand für dich nicht zu groß ist.
Idealerweise müsste man eine automatische Konvertierung "XML zu irgendwas" (z.B. HTML) haben.
(Ich befürchte also XSLT, kenne das aber bisher nur mehr oder weniger vom Hörensagen, nicht aus direktem Zweikampf.)
Schau mer ma, dann sehn mer scho (wie m.W. Zenmeister Beckenbauer zu sagen pflegte).
Hat dieses Forum "Private messages", oder kannst du (als Admin, wie ich vermute) meine Email-Adresse der Benutzerliste entnehmen?

Cheers,
El Ferrocarrilero

Geschrieben
12 minutes ago, Phrontistes said:

 

2025-01-10 13_40_42-NVIDIA GeForce Overlay DT.jpg

Danke!
gloeckchen.jpg.627d1eae4afeb79c5db7e201a9fd2e97.jpg

Aber hmm, bei mir gibts nur das Glöckchen, vielleicht weil der Account eben erst eingerichet wurde (und man womöglich erst "street cred.s" sammeln muss, wie bei anderen Foren)?
Oder ich muss meine Einstellungen (also die von meinem Account :)) nochmal überprüfen.

Cheers,
El Ferrocarrilero

Geschrieben

Hallo El Ferrocarrilero,

deine E-Mail sehe ich, die Listen (in beiden Sprachen) hänge ich aber hier als Dateianhang an, eventuell gibt es auch andere Nutzer, die sich an einer automatischen Transformation mit XLST versuchen möchten. Sollte eine verünftige PDF daraus entstehen, kann ich diese gern anschließend im Wiki verlinken.

Private Nachrichten können nur Nutzer der Professional-Version schreiben.

Viele Grüße,

Neo

ScriptDefs.zip

Geschrieben
1 hour ago, Neo said:

hier als Dateianhang

Vielen Dank!

1 hour ago, Neo said:

Private Nachrichten können nur Nutzer der Professional-Version schreiben.

Das erklärt es, zur Abwechslung also mal nicht User Error. :D
Ich habe zwar die Pro-Version, aber unter anderer Email-Adresse (und anderem Passwort) gekauft, und einen Forum-Account neu und separat registriert.
Laut Begrüßungs-Email nach dem Kauf wäre das "Kauf-Passwort" wohl auch für Community/Forums-Zugang zu benutzen, aber das war mir ein bisschen suspekt. So habe ich hier im Forum also wohl nur Amateur-Status.

Nochmal Dank an Alle für die schnelle Hilfe!

Cheers,
El Ferrocarrilero

Geschrieben
vor 24 Minuten schrieb ElFerrocarrilero:

Ich habe zwar die Pro-Version, aber unter anderer Email-Adresse

Ich kann deine Accounts gern zusammenlegen, wenn du das wünschst.

vor einer Stunde schrieb gmd:

2 html files, simple formatting

Die Formatierung ist sehr rudimentär, Listen oder Zeilenumbrüche gehen verloren. Auch wäre ein Inhaltsverzeichnis mit Sprungpunkten nicht schlecht. Vielleicht hat ja jemand Lust per XSLT eine komplexere Formatierung vorzunehmen, dann wäre das auch etwas fürs Wiki.

Viele Grüße,

Neo

Geschrieben (bearbeitet)

Hier eine etwas bessere version. 
Habe 3 file formate im zip mht fuer browser use ohne page breaks, docx zum nachbearbeiten wenn jemand lust hat die table of contents aktiv zu machen (word hat automatische TOC, die header sind ja gesetzt), und ein pdf mit page breaks. Ich bevorzuge die mht version da sie am besten zu lesen ist und compakt. 
Ich habe den AI noch etwas gekitzelt mir ein besseres ergebnis abzuliefern, aber zu mehr habe ich viel zeit (lust) muss ich sagen. 
Dieses ergebnis is ok, meiner meinung gemessen an der zeit die ich damit verbracht habe .. 
Werde noch die englische version machen ..
Fuers Wiki muesste es noch etwas huebscher werden, aber vielleicht findet sich ja jemand ..
Gruss
Gmd

 

Script Definitions_LUA_Deutsch.zip

Bearbeitet von gmd
Geschrieben

Und hier die englische version
Wenn jemand lust hat selbst einen versuch zu machen, ich habe das mi ChatGpt 4o gemacht .. die freie version ist 4omini, habe keine ahnung was die version macht. 
Jedenfalls 4o kommt nach etwas insistieren zu einem halbwegs brauchbaren ergebnis. 
Gruss
Gmd

 

Script Definitions_LUA_English.zip

Geschrieben
18 hours ago, Neo said:

Ich kann deine Accounts gern zusammenlegen, wenn du das wünschst.

Danke, aber ist nicht nötig; mir passen getrennte Accounts für Foren und "Geschäftliches" ganz gut (verschiedene "Sicherheits-Level").

Zum Thema: Mittlerweile hatte ich zwar auch einen Formatierungsanlauf genommen, aber wie man sieht, ist das Tempo von gmd und Phronistes unschlagbar, vielen Dank für eure Arbeit! Auf die Idee mit "AI" für die (knifflige) Auto-Formatierung des eigentlichen Textes war ich auch gekommen, hab aber (wohlweislich) keine Erfahrung damit; umso interessanter sind die von gmd erzielten Ergebnisse.

9 hours ago, gmd said:

Ich bevorzuge die mht version

Benötigt allerdings wohl Microsoft Internet Explorer oder Edge(?). Zumindest Firefox kann mit MHT nichts (mehr; früher gings wohl mal) anfangen; es gab zwar Erweiterungen dafür, die funktionieren aber nicht mit neueren Firefox-Versionen .

Cheers,
El Ferrocarrilero

Geschrieben

Hallo @gmd, @Neo,

in Deiner Version findet sich unter "Ereignisse"...

3.1 Event - OnStart
Beschreibung:
Das Ereignis OnStart wird aufgerufen, wenn das Layout gestartet wird.
Beispiel:
lua
Copy code
function layout:onStart()
    print("Layout gestartet.")
end
________________________________________
3.2 Event - OnStop
Beschreibung:
Das Ereignis OnStop wird aufgerufen, wenn das Layout gestoppt wird.
Beispiel:
lua
Copy code
function layout:onStop()
    print("Layout gestoppt.")
end
________________________________________

3.3 Event - OnObjectAdded
Beschreibung:
Das Ereignis wird aufgerufen, wenn ein Objekt dem Layout hinzugefügt wird.
Beispiel:
lua
Copy code
function layout:onObjectAdded(object)
    print("Objekt hinzugefügt: " .. object.name)
end
________________________________________
3.4 Event - OnObjectRemoved
Beschreibung:
Wird ausgelöst, wenn ein Objekt aus dem Layout entfernt wird.
Beispiel:
lua
Copy code
function layout:onObjectRemoved(object)
    print("Objekt entfernt: " .. object.name)
end

... wenn ich die Funktionen versuche zu setzen ("Copy code"), gibt es eine Fehlermeldung, da diese Ereignisse eigentlich nicht existieren...
... woher stammen die Informationen für diese Ereignisse? (in der originalen .xml von Neo kann ich sie nicht finden...) (... oder habe ich etwas übersehen?)

Gruß
EASY

Geschrieben

Ich wuerde mal sagen das hat der AI getraeumt.
Ich habe den inhalt nicht geprueft ob er wirklich dem original entspricht, h atte mich nur ueber die lanege gewundert aber nicht weiter darueber
nachgedacht.
Deckt sich mit den anderen erfahrungen mit dem AI , man braucht manchmal viele anlaeufe bis was vernueftiges rauskommt. 
Also wahrscheinlich doch besser mit XLST. 
Danke Easy das du das aufgedeckt hast ...
Und entschuldigung dass ich da nicht sorgfaeltiger war.
gruss
Gmd

Geschrieben

Ich habe den AI nochmals befragt woher das dokument kommt das er ausgespuckt hat als formatierung fue das XML.
Hier ist die Antwort ..
Ich glaube wir haben aus versehen die dokumentation der EEP implementierung bekommen.
Hmmm... ich denke das alleine ist eine diskussion wert ueber sinn und unsinn eines AI.
Dann habe ich die Frage gestellt:
How does that compare with 3D Modellbahn Studio
und die antwort is unten angeheftet

Und falls das zuviel fremdwerbung ist, kann Neo den thread ja loeschen, fuer mich ist allerdings weder EEP noch RocRail wirklich konkurrenz.
Wow, wieder was gelernt ... und fakten sorgfaeltiger checken 

gruss
Gmd


 

The provided Table of Contents (TOC) has some overlap with both EEP (Eisenbahn-Experten-Programm) and Rocrail, but the overall structure aligns more closely with EEP Lua scripting. Here’s a comparison:


1. EEP (Eisenbahn-Experten-Programm)

  • Key Indicators:

    • EEP uses onStart, onStop, onObjectAdded, and other event-driven Lua functions.
    • Extensive use of layout objects like Vehicle, Signal, Track, Switch, and Block.
    • Lua scripting with defer(), toTime(), and playSound() is characteristic of EEP's simulation scripting environment.
    • EEP has UI-related functions such as showPopup, playEffect, and safety-related controls (enableEmergencyBrake).
  • Matching Sections:

    • Event Parameters, Global Variables/Functions, Events, Layout Objects, Vehicle Properties, Signal Settings, Functions for Event Scripts, and Animation Control are all common in EEP.
    • Depot-related and contact settings (e.g., triggeredBy, isActive) also appear frequently in EEP.

2. Rocrail

  • Key Indicators:

    • Rocrail supports Lua scripting for automation but is more focused on integration with MQTT, network communication, and event-based commands for train control.
    • Rocrail typically emphasizes train schedules and actions but may not have as many animation functions (e.g., playEffect, setCamera) as listed in your TOC.
    • Rocrail tends to focus more on track feedback, occupancy detection, and external control using scripts.
  • Matching Sections:

    • Network-related commands, event registrations, and vehicle tracking (trackVehicle, stopTrackingVehicle) do align with Rocrail.
    • Functions like getConnectedBlocks, sendCommandToVehicle, and external communication (connectToServer) match Rocrail's architecture.

Conclusion:

Based on the structure and variety of features like UI effects, signal and contact functions, and the animation controls listed in your document, this TOC matches EEP's Lua scripting environment more closely. If you’re using EEP, this makes sense. Rocrail’s scripting is more focused on command-based control rather than UI animations and vehicle properties in such detail.

Let me know if you’d like a detailed example comparison, or if I should extract additional details to confirm!
 

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 

 

Comparison with 3D Modellbahn Studio Lua Scripting:

3D Modellbahn Studio is a sophisticated 3D model railway simulation software that supports Lua scripting for layout automation, similar to EEP and Rocrail. Here’s how the features in your table of contents compare with 3D Modellbahn Studio's capabilities:


Similarities:

  1. Event System:

    • 3D Modellbahn Studio supports event-based triggers like onSimulationStart, onObjectAdded, and onObjectRemoved, similar to your "Events" section (3.1 OnStart, 3.3 OnObjectAdded).
    • Lua scripts in 3D Modellbahn Studio can listen to events related to vehicles, signals, contacts, and switches, matching the types in your "Layout Objects" (5.x) section.
  2. Object References and Properties:

    • Your TOC mentions Vehicle, Signal, Track, Switch, Camera, Depot, etc., which are also core simulation elements in 3D Modellbahn Studio.
    • Properties like currentSpeed, maxSpeed, and stateCount (sections 7.x and 8.x) are typical in both 3D Modellbahn Studio and EEP for controlling vehicle behaviors and signal states.
  3. Functions for Event Scripts:

    • Functions like print(), math.random(), and wait() are standard Lua functions used in 3D Modellbahn Studio for script debugging, randomness, and delays (sections 6.x).
    • The ability to control objects (playSound, setSignalState, spawnVehicle, etc.) appears in both environments.
  4. UI and Animation Controls:

    • Both EEP and 3D Modellbahn Studio support animations (playAnimation, setCamera, showPopup), indicating that visual storytelling and camera effects are part of the simulation scripting.

Differences:

  1. Focus on 3D Visualization:

    • 3D Modellbahn Studio emphasizes immersive 3D layout visualization and has detailed animation controls (startAnimation, stopAnimation), which are noted in your document.
    • Some UI controls like showMessage, showAlert, and resetCamera may be more relevant to interactive user interfaces rather than purely automation-focused scripting like Rocrail.
  2. Network and External Communication:

    • The "Network Communication" and "External Communication" sections in your TOC align more with Rocrail’s network-centric approach but may have some support in 3D Modellbahn Studio for cloud-based layout sharing rather than MQTT communication.
  3. Schedule and Depot Management:

    • The sections on schedules (12.x) and depots (10.x) indicate a system with train management logic, which 3D Modellbahn Studio supports in simpler form but may not be as extensive as EEP’s detailed timetable and depot functions.

Conclusion:

  • Your TOC is highly aligned with 3D Modellbahn Studio, especially for event-based control, animations, vehicle properties, and user-defined variables.
  • Some parts, such as detailed network synchronization (35.x) and statistics export (30.x), may indicate additional features beyond 3D Modellbahn Studio's primary focus, pointing more toward EEP or Rocrail.
  • If your simulation includes detailed schedules and train operations, EEP remains a strong contender.

Would you like me to dig deeper into specific sections or assist with more detailed examples from 3D Modellbahn Studio?

 

Geschrieben
7 minutes ago, ElFerrocarrilero said:

Daher "wohlweislich"... :D

Cheers,
El FErrocarrilero

Da hast du wohl recht. Ich verwende den AI zum programmieren und das ist ein 100% factcheck, entweder es geht oder es geht nicht .. 
und zum texten fuer webseiten.. das kann man ja auch selbts korrigierenn .. der rest ist fragwuerdig
gruss
Gmd

 

Geschrieben

Die KI-Antwort ist leider nicht zu gebrauchen, das Dokument ist ein Mischmasch aus verschiedenen Programmen und hat mit der Original-XML-Datei nicht viel gemeinsam. Ich denke zumindest ChatGPT braucht hier noch ein bisschen Training.

Geschrieben
40 minutes ago, Neo said:

Die KI-Antwort ist leider nicht zu gebrauchen, das Dokument ist ein Mischmasch aus verschiedenen Programmen und hat mit der Original-XML-Datei nicht viel gemeinsam. Ich denke zumindest ChatGPT braucht hier noch ein bisschen Training.

Haha, da hast du wohl recht .. 
Aber ein fundus an ideen .. :) 
gruss

Gmd

 

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto besitzen, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen.

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...