Jump to content

Goetz

Mitglieder
  • Gesamte Inhalte

    5774
  • Benutzer seit

  • Letzter Besuch

Alle erstellten Inhalte von Goetz

  1. Du musst an jeder Einfahrt in diesen Bereich wissen, wo der Zug ausfahren soll. Keinesfalls darfst du in solchen Gleisbildern Weichen spontan oder sogar zufällig dann schalten, wenn du sie erreichst. Wenn du bei der Einfahrt den Weg bis zur Ausfahrt kennst, dann weißt du auch, welche Weichen du in welche Stellung bringen musst. Bei diesen Weichen setzt du eine Variable "verriegelt" auf true. Eine Weiche darf nur umgeschaltet werden, wenn sie nicht verriegelt ist. Du verriegelst Weichen nur dann, wenn sie in der richtigen Lage sind. Eine Weiche darf nur umgeschaltet werden, wenn alle Signale, die diese Weiche decken, auf Halt stehen. Weichen werden entriegelt, wenn der Konfliktpunkt (= meistens die Weiche selbst) verlassen wurde. Ein Signal geht erst dann auf Fahrt, wenn alle Weichen richtig liegen und verriegelt sind. Dafür musst du im Signal für jeden Weg die Weichen mit ihren Lagen speichern. Das wäre (aus dem Kopf) das Regelwerk, mit dem ich es versuchen würde. Wenn die Kreuzung keine DKW, sondern eine einfache Kreuzung ist, dann musst du sie wie eine Weiche behandeln. Also "verriegeln", wenn sie zum Weg gehört und die Verriegelung aufheben, wenn du sie verlässt.
  2. Das freut mich mächtig, Aloys
  3. Dann musst du alle drei Namensschilder in eine Liste eintragen. Außerdem brauchst du einen Zähler. Mit jedem Waggon, der über deinen Gleiskontakt fährt, addierst du zum Zähler eins hinzu. So hast du immer den richtigen Listenplatz für die nächste Beschriftung verfügbar. Du wählst das Schild aus der Liste aus, indem du den Zähler als Index benutzt.
  4. sorry, ich hatte keine Ahnung um welche Kinderschar es da ging. Na, dann hast du ja jetzt genügend Ansporn um zu lernen, wie es geht Und die Kinder lernen dabei auch etwas sehr nützliches: Geduld.
  5. das neue Portal ist eine willkommene Verbesserung
  6. lesen die nicht mit? Und wenn doch - ist das kein Ansporn für sie, das nötige Wissen zu erwerben, damit sie ihren Wunsch umsetzen können? Erst benutzen und dann lernen ist die falsche Reihenfolge. Das geht weder beim Autofahren noch beim MBS.
  7. Es tut mir leid, Aloys, aber deine Beschreibung ist zu dürftig, um dir den richtigen Tipp zu geben. Wenn alle Wagen dasselbe Kontaktgleis überfahren, woran kann man dann unterscheiden, welcher Wagen welches Textfeld beschreiben soll? Willst du die Felder 1, 2 und 3 einfach der Reihe nach beschreiben? Erster Waggon ins erste Feld, zweiter Waggons ins zweite und dritter ins dritte? Oder fahren sie anschließend zu drei verschiedenen Zielen mit zugehörigen Textfeldern? Ich sehe deine Anlage nicht, Aloys.
  8. Ja, das geht. Aber ich habe das Beispiel bewusst einfach und sehr übersichtlich gehalten, damit du es studieren kannst. Du sollst ja nicht nur sehen, dass es geht sondern vor allem auch daraus lernen, wie es geht. Und erst, wenn dir das Wie in allen Punkten klar ist, solltest du dir Gedanken über den Einsatz in größeren Umfeldern machen. Der dürfte dann auch keine Hürde mehr darstellen.
  9. Das macht keinen Unterschied. Du kannst trotzdem den <> Knopf dafür verwenden und den Helfern damit entgegenkommen. Ich meine damit den <> Knopf hier in der Kopfzeile des Eingabefeldes. Nicht den in der EV. Ein Screenshot der EV ist nicht hilfreich, weil dann niemand deinen Code kopieren und eventuell abändern könnte, um dir eine Lösung zu präsentieren. Mit dem <> aus der Kopfzeile sähe dein Beispiel so aus: local ZugName = "RE 1111“ local AusgabeText = ZugName $("txt-Gleis-1").text = AusgabeText und for i 1,3 do local ZugName = "RE 1111“ local AusgabeText = ZugName local GleisName = "txt-Gleis-" .. i (GleisName).text = AusgabeText end Und mit Neos Vorschlag dann so: for i 1,3 do local ZugName = "RE 1111“ local AusgabeText = ZugName local Textfeld = layout:getEntityByName("txt-Gleis-" .. i) Textfeld.text = AusgabeText end
  10. Bitte, Siggi - pack deine Code Beispiele in den dafür vorgesehenen Kasten. Du siehst doch bei anderen, wie viel lesbarer das ist? Der Knopf dafür ist dieser hier: <>
  11. Und die Erkenntnis daraus? Kopieren und Vergleichen ersetzt kein Begreifen.
  12. Ich habe ein kleines Beispiel für dich gebaut und als Entwurf hochgeladen. Die ID ist: B48D6FB2-F857-47B7-95A1-D66DB8FE4337
  13. Ergänzend zu Brummis Hinweis Das stimmt nicht ganz, Tjakrkheinrich. Es wird nur dem auslösenden Fahrzeug die Geschwindigkeit zugewiesen - egal, auf welchem Gleis oder Kontakt es gerade steht. Das würde selbst dann keine Fehler verursachen, wenn an mehreren Stellen Bremskontakte dasselbe Schlagwort hätten. Der Befehl geht immer an denjenigen, der den Kontakt gerade verlassen und somit dieses Ereignis ausgelöst hat. Niemanden sonst. Viele Grüße Götz
  14. mit der grafischen EV geht es meines Wissens nicht. Aber wenn du für diesen Part zu Lua wechselst, dann kannst du mit dem Befehl table.insert() Elemente an eine Liste anhängen oder an einer bestimmten Position einfügen.
  15. Ja, in V6 können sie das jetzt. Deine Idee lässt sich also genau so umsetzen.
  16. Hallo Joachim, In der V6 wird deutlicher als zuvor zwischen Simulations- und Planungsmodus unterschieden. Im Planungsmodus kannst du die Signale mit den Pfeiltasten verschieben. Im Simulationsmodus kannst du sie mit den Pfeiltasten umschalten. Gruß Götz
  17. Das unterstrichene Wort ist mit einer URL zum Video versehen
  18. the unfinished (!) layout from the video may be found with this content ID: 1E7C5CDD-7DF4-46CD-974D-A5F8B153F69E
  19. 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
  20. 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.
  21. perfekt Weil die Variable nur eine Adresse enthält und nicht den Namen. Hast du es schon mit Gleis.name versucht?
  22. 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.
  23. 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
  24. 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.
×
×
  • Neu erstellen...