Jump to content

Goetz

Mitglieder
  • Gesamte Inhalte

    6150
  • Benutzer seit

  • Letzter Besuch

Alle erstellten Inhalte von Goetz

  1. Ein Beispiel: Ich habe das gerade zweimal (kurz hintereinander) gemacht. Das waren die einzigen beiden Male. Das wüsstest du, wenn du meine Beiträge aufmerksam lesen würdest.
  2. Das tue ich doch nicht. Niemand muss mir mir reden, wenn er es nicht möchte. Aber ich will deutlich machen, warum du oftmals Beiträge schreibst die erkennen lassen, dass du meine vorangegangenen Beiträge nicht gelesen hast.
  3. table.remove() übergibt das, was in der Zelle stand bevor sie gelöscht wird. Die Funktion legt den Inhalt lokal in einen Zwischenspeicher, löscht die Zelle und gibt dann den Inhalt des Zwischenspeichers aus. Dabei ist es Lua ganz egal, welchen Typ dieser Inhalt hatte. Aus dem, was du mir zeigst kann ich leider nicht erkennen, warum es bei dir nicht funktioniert. Wenn du mir einen Blick auf deine Anlage gewährst, kann ich nach Ursachen wie z.B. Schreibfehlern fahnden. Viele Grüße Götz
  4. Das Skript, welches man hier einrichten kann ... ... wird einmal abgearbeitet, nachdem die Anlage neu geladen wurde. Es wird außerdem einmal abgearbeitet, nachdem man Änderungen im Skript vorgenommen hat. Wer es lieber grafisch möchte, der legt ein Benutzerdefiniertes Ereignis an und löst dieses Ereignis dann mit einer Befehlszeile im oben genannten Skript aus: $("my Startevent"):invoke() Viele Grüße an alle interessierten Mitleser. Phrontistes muss leider warten, bis Neo ihm antwortet. Götz
  5. t für table Neo benutzt diesen Namen, wenn man grafische Elemente wandelt. Ich habe einfach seine Schreibweise übernommen, damit das einheitlich ist. Warum sollte es? Es handelt sich an allen Positionen um dieselbe Tabelle. Deshalb muss es derselbe Name sein. Das hat auch nichts speziell mit Lua zu tun. Kannst du in Python, Java etc, genauso handhaben.
  6. Du kannst und ich habe dir weiter oben auch gezeigt, wie. Dein Pech, dass du mich ignorierst.
  7. Ich fürchte, da irrst du dich. Fahrstraßen und BÜs sind zwei voneinander unabhängige Systeme. Ich habe mich da erst neulich bei einem aktiven Fdl und guten Bekannten erkundigt.
  8. Oder man schließt zuerst den BÜ und aktiviert dann die Fahrstraße, wenn dieser Vorgang beendet ist. Bei der realen Bahn wird ein BÜ nicht durch das Einlaufen einer Fahrstraße geschlossen. Man schließt zuerst den BÜ. Und dann lässt man die Fahrstraße einlaufen.
  9. ja, genau. Schreib einfach nur das $ und nutze dann die Listen, welche dir angeboten werden für die Auswahl des richtigen Objekts.
  10. genau das tut die mittlere Zeile in meinem Beispielskript: x = table.remove(t, 1) -- entfernt das erste Element aus der Liste t und übergibt es an x -- alle nachfolgenden Elemente rücken damit automatisch einen Platz nach oben. table.insert(t, x) -- hängt x ans Ende der Liste t an --[[ den Zwischenträger x kann man sich sparen, indem man die eine Funktion direkt als Argument in die zweite Funktion einsetzt: ]] table.insert(t, table.remove(t, 1)) Beachte bitte, das Listen in Lua mit 1 beginnend durchnummeriert werden und nicht ab 0, wie sonst üblich.
  11. Starte mal bitte eine frische Anlage und schau, was dort links in der leeren EV steht. Eventuell hieß das Modul in früheren Versionen anders? Es ist aber auch ganz egal, wie das Modul heißt solange du nur diesen Namen beibehältst. Das heißt: Wenn das Modul bei dir einen anderen Namen hat, kannst du meinen Code nicht 1:1 übernehmen, sondern musst den Namen natürlich anpassen.
  12. Der Auslöser interagiert nicht mit einem Fahrzeug, sondern das Fahrzeug selbst ist bei bestimmten Ereignissen (z.B. Zug betritt Kontakt) ein Auslöser. Wenn ein Fahrzeug einen Kontakt betritt, dann lösen diese beiden Objekte (durch ihr Zusammentreffen) das Ereignis "Zug betritt Kontakt" aus. Ereignisse werden durch Objekte aus unterschiedlichen Kategorien ausgelöst. Zug betritt Gleis -> 3 Auslöser, Fahrzeug und altes Gleisstück und neues Gleisstück, Lua Namen vehicle und oldTrack und track Signal schaltet -> 2 Auslöser, Signal und Stellung, Lua Namen signal und state Schalter wird betätigt -> 2 Auslöser, Schalter und Stellung, Lua Namen controller und state Fahrstraße wird aktiviert -> 2 Auslöser, Fahrstraße und Stellung, Lua Namen route und state Kran hat Transportgut aufgenommen -> 3 Auslöser, Kran, Transportgut, Aktion, Lua Namen crane, target, state etc. (nur ein paar Beispiele zum besseren Verständnis des Prinzips.) Wähle die Auslöser in der grafischen EV, wandle den Befehl in Lua und du siehst, welche Namen Neo den Auslösern aus verschiedenen Kategorien zugewiesen hat.
  13. Schau mal bitte in eine beliebige EV. Dort siehst du links, dass alles in einem Ordner (richtiger: Modul) namens "Ereignisse" steht. In diesem Modul kannst du Variablen hinterlegen. Beatles ist in meinem Beispiel eine Variable (in diesem Fall eine Liste) im Modul Ereignisse. Neo nennt es dann eine Modulvariable. Eine Objektvariable wäre es, wenn die Variable in einem Haus, einem Fahrzeug oder einem anderen Modell stecken würde. Diese Struktur ist von Neo im 3D-Modellbahnstudio angelegt worden. Mit Lua hat das nur insofern zu tun, als dass Neo dir ermöglicht mittels Lua darauf zuzugreifen. Insbesondere die Bezeichner mit dem vorangestellten $ Zeichen sind ein Entwurf außerhalb von Lua. Hinter diesen Bezeichnern stecken Objektadressen. Wenn du den Namen eines Objekts im Studio änderst wirst du feststellen, dass sich auch der Bezeichner im Skript mit ändert. Denn die Objekte werden nicht mittels Namen angesprochen. Die Namen sollen dir nur helfen zu erkennen, welches Objekt hinter dem Bezeichner steckt. Die wahre Objektadresse wäre kryptisch und hätte wenig Aussagekraft.
  14. Ich fürchte, ja. Eine FS reserviert und sichert den ganzen Abschnitt ab einem Signal. Sie garantiert, dass sich in diesem Abschnitt kein anderes Rollmaterial befindet, dass alle Weichen korrekt gestellt sind und dass keine andere Fahrstraße, die einen Konflikt bedeutet, aktiviert werden kann. Wenn der Zug, für den diese Fahrstraße eingelaufen ist, Freie Fahrt erhält, kann er den Abschnitt bis zum Endpunkt sicher befahren. Der Endpunkt ist in aller Regel das Signal, welches den folgenden Abschnitt deckt. Wenn die Spitze des Zuges das Ende der FS erreicht hat, hat die Fahrstraße ihren Dienst getan und wird nicht mehr benötigt. Sie kann auch nicht erneut einlaufen, weil der Zug selbst noch immer ein Hindernis darstellt.
  15. Eine Fahrstraße sichert den voraus liegenden Abschnitt. Deshalb wird sie aufgelöst, wenn die Zugspitze den Endpunkt erreicht.
  16. Dort, wo in meinem Beispielbild das Wort "Beispiel" steht Also auf einem beschriftbaren Texturfeld:
  17. Der Name, ja. Aber nicht die Beschriftungen. Und um die geht es hier.
  18. das kommt auf den Auslöser an. Wenn es sich um ein Fahrzeug handelt, dann benutzt du anstelle des Objektbezeichners vehicle $("Textfeld").text = vehicle.labels["Fahrzeugnummer"].text Du kannst solche Schreibweisen ganz leicht herausfinden, indem du Befehle aus der grafischen EV in Lua wandelst. Die Sprache Lua schreibt man übrigens bitte nicht in Versalien, weil die Buchstaben keine Abkürzung sind. siehe hier "What's in the name?"
  19. Hallo @Anlagendesigner, Mit Phrontistes Vorschlag bist du fast am Ziel. Du musst nur noch das, was er vor das = Zeichen gesetzt hat, stattdessen dahinter setzen um den Text wie gewünscht auszulesen. Der folgende Code übertrug die Fahrzeugnummer des Triebwagens auf das Textfeld daneben $("Textfeld").text = $("BR 628.4").labels["Fahrzeugnummer"].text Viele Grüße Götz
  20. Hallo @Phrontistes, Es fehlt nur "FS wurde vorgemerkt". Und wenn du eine FS für die Ausfahrt aus dem Bahnhof vormerkst, kannst du auch zugleich den BÜ gegen das Öffnen absichern. Alternativ kannst du vor Öffnen des BÜ den Status der FS für die Bahnhofsausfahrt prüfen: Viele Grüße Götz
  21. Eine kleine Beispielanlage zum Thema in der Kategorie "Tutorials": 24166EEB-60A7-4817-8925-8DBE75B4BCB1
  22. ... zu dem Punkt, an dem dieser Zug anhalten soll. Eine Fahrstraße darf auch an einem Kontakt enden.
  23. Zum besseren Verständnis: ... sind Gruppen. Wenn ein Objekt in einer Gruppe die gesuchte Eigenschaft enthält, dann wird die Gruppe angezeigt (damit man Zugriff auf die Objekte darin hat), aber durchgestrichen, weil die Gruppe selbst nicht diese Eigenschaft enthält. Der Grund ist, dass es Eigenschaften gibt die auch für Gruppen gelten können. Sichtbarkeit zum Beispiel. Viele Grüße Götz
  24. Dann ist die FS für den ersten Zug zu früh angefordert worden. Wenn die FS für Zug 1 eingelaufen ist, kann ihn kein anderer Zug mehr überholen. Weder in der Realität, noch im 3D-Modellbahn Studio. Wenn Zug 2 als erstes einfahren soll, musst du seine FS auch zuerst aktivieren.
  25. Im Prinzip, ja. Und genau so geschieht es ja auch, wenn die Fahrstraße bei Erreichen des Ziels aufgelöst wird. Wenn man aber die FS manuell oder per EV deaktiviert, liegt ein Sonderfall vor. Dann möchte man ganz offensichtlich keine aktive FS haben. Da wäre es kontraproduktiv, wenn eine alte Vormerkung einem in die Suppe spuckt und dieselbe FS gleich wieder aktiviert.
×
×
  • Neu erstellen...