-
Gesamte Inhalte
5983 -
Benutzer seit
-
Letzter Besuch
Alle erstellten Inhalte von Goetz
-
Autopilot with cars
Goetz antwortete auf raf.sonnevilles Thema in [International] Problems and solutions
the unfinished (!) layout from the video may be found with this content ID: 1E7C5CDD-7DF4-46CD-974D-A5F8B153F69E -
Ein erweitertes Studienobjekt für dich: local GleisName = Gleis.name local Zug = layout:getVehiclesOn(Gleis) local ZugName = "" local ZugListe = {} local ZugTeile = "" local Loks = 0 local Wagen = 0 local AusgabeText = "" local TextMuster = [[ Ort: %s Zug: %s %s Loks: %d Wagen: %d Gesamt: %d]] for k, v in ipairs(Zug) do table.insert(ZugListe, v.name) if v:hasEngine() then ZugName = v.name Loks = Loks + 1 else Wagen = Wagen + 1 end end ZugTeile = table.concat(ZugListe, "\n ") AusgabeText = TextMuster:format(GleisName, ZugName, ZugTeile, Loks, Wagen, Loks+Wagen) $("GBS_txt-Gleisbelegung").text = AusgabeText hasEngine() ist eine Methode im MBS, welche true zurück gibt, wenn das Objekt einen Motor enthält, ansonsten false Zur Verwendung des Doppelpunktes in Lua Skripten habe ich vor einer Weile ein kurzes Video aufgenommen
-
Ich hatte meine Vermutung zwischenzeitlich korrigiert, weil ich in eigenen Versuchen neue Erkenntnisse gewonnen habe. Schau mal bitte, was da jetzt steht. Das wird dir weiter helfen.
-
perfekt Weil die Variable nur eine Adresse enthält und nicht den Namen. Hast du es schon mit Gleis.name versucht?
-
möglicherweise durch Einrückungen in deinem Code? Im mehrzeiligen String dürfen die natürlich nicht stehen, weil Lua sie dort nicht als Einrückungen, sondern als Teil des Textes versteht. Die entstehen durch den Zeilenumbruch im Textblock. Der fügt (aus mir unbekanntem Grund) noch einen Tab-Sprung ein. Bei der Auflistung machst du den Zeilenumbruch mit \r. Wenn du da noch ein \t dahinter setzt, stehst alles auf einer Höhe. Der Name eines Objekts ist eine Eigenschaft namens "name". Und der Inhalt dieser Variablen ist ein String. Das ist die Reihenfolge, in der das Modellbahn Studio die Fahrzeuge auf dem Gleis liefert. Viel lieber hätte ich gelesen, dass du sie studiert und verstanden hast. Im Übrigen musst du nicht jedes Mal mein gesamtes Posting zitieren, um darauf zu antworten.
-
Hallo Siggi, Dann möchte ich dir gerne noch eine (bessere) Alternative anbieten. Du kannst Strings in Lua erstens mehrzeilig anlegen und zweitens mit Platzhaltern (für Namen, Nummern etc.) versehen. Der Befehl string.format() setzt dann der Reihe nach die Daten dort ein, wo die Platzhalter stehen. Ein mehrzeiliger String wird in doppelte eckige Klammern anstelle der Anführungszeichen eingebettet. Platzhalter markiert man mit einem vorangestellten % Zeichen. Der nachfolgende Buchstabe deklariert dann den Typen, der hier eingesetzt werden soll. %s ist der Platzhalter für einen String, %d ist der Platzhalter für eine Ganzzahl. local TextMuster = [[ Zug: %s %s Loks: %d Wagen: %d Gesamt: %d ]] local AusgabeText = string.format(TextMuster, Zugname, Zugteile, Loks, Wagen, Loks+Wagen) $("Versuchstext").text = AusgabeText Wie du siehst, sind die Zeilenumbrüche hier einfach im Textmuster enthalten. Der Steuercode für eine neue Zeile entfällt damit. Das wäre in Lua der "amtliche" Umgang mit Textbausteinen. Viele Grüße Götz
-
Für deinen Ausgabetext würde ich dir gerne eine Hilfe anbieten: local AusgabeText = { "Zug: "..Zugname, Zugteile, "\rLoks: "..Loks, "Wagen: "..Wagen, "Gesamt: "..Loks+Wagen } $("GBS_txt-Gleisbelegung").text = table.concat(AusgabeText, "\r") das ist noch ungeprüft. Kann also Fehler enthalten. Beachte bitte, dass ein \r von table.concat eingesetzt wird und deshalb nur Loks einen (zweiten) \r enthält. Ich finde, dass diese Form leichter anzupassen ist, wenn man Texte ändern möchte. table.concat fügt alle Zellen einer Liste als Text aneinander. Das zweite Argument bestimmt, was als Trennzeichen zwischen die Zellinhalte kommt. Statt des \r vor Loks hätte ich auch einen leeren String einfügen können. Dann entspräche die Tabelle optisch noch mehr dem Ausgabetext.
-
You may also use the "Animation has come to a halt" event to respond to the turntable reaching it's destination. Split the event in two, handle each part separately. Better still: three events send train to turntable turntable entered - send it around turntable destination reached - send off whoever occupies turntable
-
Must be, because Simons says it leaves the turntable when he sets it in motion manually. And yet, you may still be right. Because if the 2 seconds delay is too short, the track isn't connected yet, when the speed command is issued. Have you tried a longer delay too? Remember that the delay begins after you issued the turn command, not after the turntable reached it's destination. in a funnier way than you may have realised, because a "Plattenspieler" is a record player. Your original title is hilarious
-
Turner and Hooch vielleicht?
-
Ich dachte, C.Fuchs meinte diesen Film.
-
Straßenbahn Steuerung mittels Lua - als Video auf YouTube
Goetz antwortete auf Goetzs Thema in Anleitungen und Tutorials
wow - ganz herzlichen Dank für dein Lob, Klaus -
Ah, okay - das ist eine interessante Idee
-
Die zeigt auch nur einmal mehr, dass du keinerlei gestalterisches Talent besitzt. Tut mir leid, Tec, aber das sieht in allen Farben gleichermaßen furchtbar aus.
-
Ich möchte dir nicht den Spaß verderben, TalentRaspel, aber ein kannst du auch mit der im Studio enthaltenen Ereignisverwaltung zum Leben erwecken. Hier findest du ein Beispiel: 1E7C5CDD-7DF4-46CD-974D-A5F8B153F69E Dort findest du ein weiteres:
-
Selbstverständlich nicht, denn eine Einmündung ist nicht der Beginn eines Blockabschnitts, sondern eine Ausfahrt. Da verrennst du dich irgendwie. Wenn ein Zug den letzten Blockabschnitt vor der Einmündung betritt, dann ist doch schon klar dass er diesen Abschnitt über die Einmündung wieder verlassen will. Ab jetzt kannst du also diesen Weg vormerken. Die Gleisführung in deinem Screenshot finde ich übrigens klasse. Sehr interessant.
-
Im Prinzip, ja. Nur so kannst du bei zwei Zügen entscheiden, wer zuerst dran kommt. Ob du die Züge in einer Liste festhältst oder die Signale, an denen eventuell ein Zug warten könnte, ist für das Prinzip egal. Ich würde die Signale bevorzugen, weil diese Liste sich nicht ändert. Jetzt schaust du: "Steht am Signal 1 ein Zug?" Wenn ja: Gib den Weg für diesen Zug frei. Wenn nein, dann schaust du: "Steht an Signal 2 ein Zug?" Eine Einmündung ist im Prinzip identisch mit einer Bahnhofsausfahrt. Deshalb stehen dort auch (wie an der Ausfahrt) Hauptsperrsignale (= die mit den zwei roten Lampen) Mehrere Gleise treffen zusammen und du musst entscheiden, welcher Weg wann frei gegeben wird ...
-
Bremskontakte nur für ausgewählte Fahrzeuge
Goetz antwortete auf oberrrrrollers Thema in Fragen zur Steuerung
So ist es. Aber ein Zug kann auf dem Weg dorthin einen Kontakt überfahren, mit dem du dann untersuchst, welche Art Zug es ist und dann entsprechend das Abbremsen auf 0 km/h an- oder abschaltest. Sinnvollerweise wäre dieser Kontakt das Signal, welches zuletzt überfahren wurde. Denn hinter diesem Signal kann nur ein Zug unterwegs zum Bremskontakt sein. Der Zug, welcher es eben überfahren hat. Beispielanlage: Nah- und Fernverkehr.mbp -
Bremskontakte nur für ausgewählte Fahrzeuge
Goetz antwortete auf oberrrrrollers Thema in Fragen zur Steuerung
geht es nicht, nein. Dafür ist die Ereignisverwaltung ja da: Damit du Ereignisse (wie z..B. Kontakt wird betreten) verwalten und mit komplexeren Verhaltensmustern reagieren kannst. -
Das ist doch in etwa dasselbe wie eine Schiebebühne ...
-
no, Dad. "Stop" must be the default condition and an approaching train may request one signal to change to "Clear". Not vice versa.
-
und das darfst du bitte nicht tun. In diesem Fall müssen beide Signale auf "Halt" bleiben, bis ein Zug den einen oder anderen Weg beansprucht. Nicht nur frei von Hindernissen, sondern auch konfliktfrei und abgesichert (Flankenschutz!). Das bedeutet die Stellung "Fahrt". Deine Probleme zeigen deutlich, warum bei der Bahn niemals zwei Signale auf Fahrt stehen, die denselben Streckenabschnitt decken. In dem Video, auf das du dich beziehst, wollte ich lediglich zum Ausdruck bringen dass ein Zug nicht zwingend losfahren muss, nur weil ein Signal auf Fahrt schaltet. Das Abfahrsignal bekommt der Lokführer auf anderem Wege und es müssen weitere Bedingungen erfüllt sein, damit das Signal zur Abfahrt gegeben wird.
-
Dieser Zustand darf niemals eintreten, Ralf. Wenn zwei Signale denselben Abschnitt decken, dann dürfen sie unter keinen Umständen beide Fahrt zeigen!
-
gute Idee
-
Darauf habe ich auch noch keine Antwort. Einer der Gründe, weshalb von mir bislang kein Vorschlag kam. Aber für den Weg mit Lua kann ich eine Alternative anbieten: Anstatt immer wieder sein Glück zu versuchen, bis man zufällig ein besetztes Gleis erwischt, überträgt man zuerst alle Signale, deren Gleise besetzt sind, in eine zweite, temporäre (= lokale) Tabelle. Dann kann man mit einem einzigen, zufälligen Griff in diese Tabelle zielsicher ein Signal rausfischen, das garantiert zu einem besetzten Gleis gehört. Shantymans Beispielanlage modifiziert: Signalschaltung per Zufall - Lua.mbp In dieser Version findet eine echte "Gleis besetzt" Prüfung statt. Damit entfallen die An/Aus Knöpfe an jedem Gleis. In jedem Signal ist die Adresse des zugehörigen Wartegleises in einer Variablen gespeichert.