Jump to content

Goetz

Mitglieder
  • Gesamte Inhalte

    6150
  • Benutzer seit

  • Letzter Besuch

Alle erstellten Inhalte von Goetz

  1. ... möchte @Phrontistes vermeiden. Und wenn du dir meine Beispiele angeschaut hättest, dann wüsstest du, dass er die auch nicht braucht. Aber da ihr beide ignoriert, was ich an Tipps und Hilfen anbiete ... ach egal. Dreht euch im Kreis. Redet aneinander vorbei. Ich amüsiere mich.
  2. ... gibt es nicht, wenn ein Signal umschaltet. Weil kein Fahrzeug an dem Ereignis "Signal schaltet" beteiligt ist.. Auslöser sind immer nur die Objekte, welche ein Ereignis bewirkt haben. Viele Grüße Götz
  3. Die ist nur eine andere Darstellung derselben Anlage. Du musst es leider noch einmal bauen.
  4. Nein, das geht leider nicht. In der Datei einer V8.5 Anlage stehen Informationen, die V6 nicht kennen kann (weil sie sich auf Dinge beziehen, die erst später hinzu kamen.) Deshalb kannst du Anlagen aus älteren Versionen in neueren laden, aber nicht umgekehrt. Viele Grüße Götz
  5. und gefallen dir meine drei Lösungsvorschläge, @Hawkeye?
  6. Okay, dann hatte ich mich bei meinen Versuchen verfummelt. Tut mir leid! Nachtrag: Ich hatte nur signal.connection probiert. Und ich hatte bei meiner Erklärung dazu connection und link verwechselt. Danke für die Berichtigung.
  7. Drei Lösungsansätze Version 1 (mit Lua) Skriptbedingung: return #layout:getVehiclesOn(signal) > 0 Skriptaktion: local vehicles = layout:getVehiclesOn(signal) for _, vehicle in pairs(vehicles) do if vehicle:hasEngine() then vehicle.engine.active = true vehicle.targetSpeedAbs = 180 end end Über die Variable "signal" erreiche ich in Lua Skripten das auslösende Signal. Und da es mit dem Kontakt eine Einheit bildet, kann ich über diese Variable auch die Fahrzeuge auf dem zugehörigen Kontakt erreichen. Variante 2 (benutzerdefiniertes Ereignis) In benutzerdefinierten Ereignissen stehen die Parameter an jeder Stelle als Auslöser zur Verfügung! Variante 3 (Beschleunigung im Signal aktivieren und deaktivieren) Diese Version würde ich bevorzugen, weil sie garantiert dass der Zug auf dem Kontakt auch dann angesprochen wird, wenn das angetriebene Fahrzeug an anderer Stelle steht. Also beispielsweise ein geschobener Beiwagen auf dem Signalkontakt steht. Und die Prüfung, ob überhaupt ein Zug auf dem Kontakt steht, entfällt hier auch. Wichtig ist bei dieser Methode, dass die Beschleunigung im Signal deaktiviert wird, bevor die Signalstellung auf Halt wechselt! Beispielanlage: delay after signal change three examples.mbp (Variante 3 ist im Beispiel aktiviert) Viele Grüße Götz
  8. ... weil du die Verbindung des Fahrzeugs prüfst. Prüf die Verbindung des Signals und du wirst nicht das bekommen, was du erwartest. Denn darüber findest du ein verbundenes Signal (falls es das gibt). Beispielsweise das Vorsignal zum Signal.
  9. Auch nicht. Und ich lag ebenfalls falsch als ich schrieb, dass du so das Gleis bekommen würdest! Denn mit connection ist etwas anderes gemeint. connection würde dir das zugehörige Signal liefern, wenn du im Gleiskontakt eine Verbindung zu einem Signal herstellst. Ihr zwei denkt noch viel zu kompliziert. Das geht alles viel einfacher
  10. Damit bekommst du das Gleis und nicht den Kontakt, @Hawkeye
  11. Das ist nicht das, was Phrontistes sucht, @Hawkeye Er möchte gerne generisch das Signal angeben, welches das Ereignis ausgelöst hat.
  12. Doch, das geht. Sowohl per Lua, als auch mit der grafischen EV. Aber wer nicht fragt, bleibt ... unwissend.
  13. Beides kannst du schon jetzt haben, Phrontistes. Da du aber in der Vergangenheit alle meine Vorschläge konsequent ignoriert hast, warte ich diesmal ab ob du mich fragst, wie es geht. Viele Grüße Götz
  14. Und du denkst, wir könnten deiner kleinen, funktionierenden Anlage ansehen, warum es auf der großen nicht funktioniert? Da muss ich dich leider enttäuschen. Trotzdem kann ich dir einen Tipp geben (der aber mit deinem eigentlichen Problem nichts zu tun hat!) Die zweite Bedingung ist überflüssig, denn alles unterhalb der Trennlinie wird genau dann ausgeführt, wenn die Bedingung oben nicht erfüllt ist. Dafür ist der Bereich unterhalb der Trennlinie da. Du musst innerhalb des Kastens kein weiteres Mal prüfen, ob die Bedingung nicht erfüllt ist. Und zu diesem Punkt habe ich auch eine Vermutung: Wenn du ein Ziel zuweist, dann dürfen zwischen der aktuellen Position und dem Zielpunkt nicht mehr als 7 Abzweigungen liegen. Andernfalls wird das gewünschte Ziel ignoriert und kein Ziel eingetragen. In solchen Fällen musst du noch ein Zwischenziel angeben. Bedenke bitte dabei, dass der Weg durch eine Kreuzung über mehrere Abzweigungen führt. Du hast bei der Einfahrt in die Kreuzung eine Abzweigung und bei der Ausfahrt aus der Kreuzung eine weitere (weil hier Straßen wieder zusammengeführt werden). Viele Grüße Götz
  15. Was ich noch sagen wollte: Dafür hast du meinen Respekt!
  16. Hallo @jloos, ein bisschen muss ich das noch erweitern: Ohne das Schlüsselwort local gilt GKT über dieses Skript hinaus in allen Skripten dieser Anlage. So, wie eine Modul- oder Objektvariable auch. Aber im Gegensatz zu Modul- und Objektvariablen geht sie beim Beenden der Anlage verloren und wird nicht mit der Anlage gespeichert. Wenn du also in anderen Skripten derselben Anlage denselben Variablennamen wieder verwendest, dann überschreibst du den Inhalt dieser Variablen und bekommst bei verzögerten Aufrufen falsche Ergebnisse! Viele Grüße Götz
  17. korrekt
  18. Hallo @jloos, dein Problem wird durch die falsche Verwendung des local Schlüsselwortes verursacht. Öffne bitte die Seite Lua: demo in deinem Browser und gibt dort das folgende Skript ein: for i = 1, 3 do if i == 1 then local test = "Hallo" print(test) elseif i == 2 then print(test) else print(test) end end Du wirst sehen, dass du im Ergebnis nur einmal das Wort Hallo und zweimal nil bekommst. Entferne das Schlüsselwort local in der dritten Zeile Diesmal bekommst du dreimal das Wort Hallo als Ausgabe Begründung: local schränkt die Gültigkeit einer Variablen auf den Block ein, in welchem die Variable deklariert wird. Wenn du eine Variable local innerhalb eines Zweiges deiner if-Verzweigung definierst, dann gilt diese Variable auch nur innerhalb dieses einen Zweiges. In den anderen Zweigen derselben if-Verzweigung ist die Variable nicht bekannt. Deshalb steht in meinem Beispielskript für deinen Lokschuppen vor dem Variablennamen GKT nicht das local Schlüsselwort. Viele Grüße Götz
  19. Hast du überlesen, was ich dir dazu geschrieben habe?
  20. Eine Fehlermeldung findet man darin nicht, stimmt. Aber einen nützlichen Hinweis: Die Animation startet und sie stoppt anschließend sofort wieder. (Siehe @Hawkeyes Antwort über meiner) Weil die Tore den Befehl zum Öffnen und gleich danach den Befehl zum Schließen bekommen. Der Schließbefehl steht außerhalb deiner Verzögerungen und wird sofort ausgeführt Deine "deferred calls" werden alle ignoriert, denn die Bedingung für "if not deferred call" ist schon "false". Du hast ja vor dem Skript eine Verzögerung stehen und damit ist alles danach schon der Fall "deferred call" Des weiteren haben die Fälle alle denselben Namen "Verzögerung" und können daher nicht unterschieden werden. (Siehe @Hawkeyes Hinweis auf die Hilfe zu defer) Du hattest insofern recht, als du schriebst: Aber das konnte ich erst erkennen, nachdem ich anhand des Protokolls erkannt habe, was genau falsch läuft. Hier ist ein funktionierendes Skript (einschließlich Drehscheibe): Bitte beachte, dass die Variable GKT nicht local definiert ist. Sie ginge sonst beim wiederholten Aufruf verloren, weil sie innerhalb der if-Verzweigung deklariert wird und somit local nur innerhalb des einen Zweiges Gültigkeit hätte if not deferredCall then --[[ Auswahl einer Lok im Lokschuppen --]] local AuswahlListe = {} local GKTListe = {$("GKT Lokschuppen Gl 01"), $("GKT Lokschuppen Gl 02"), $("GKT Lokschuppen Gl 03"), $("GKT Lokschuppen Gl 04"), $("GKT Lokschuppen Gl 05"), $("GKT Lokschuppen Gl 06")} for i, GKT in ipairs(GKTListe) do if #layout:getVehiclesOn(GKT) > 0 then table.insert(AuswahlListe, GKT) end end local Anzahl = #AuswahlListe if Anzahl == 0 then return end -- wenn es nichts zu tun gibt, beende die Nummer hier! local Zufall = math.random(1, Anzahl) GKT = AuswahlListe[Zufall] $("Drehscheibe 7186").state = GKT.variables["Drehscheibenstellung"] defer(3, "Verzögerung (1)") elseif deferredCall == "Verzögerung (1)" then --[[ Öffnen der Tore --]] GKT.variables["LokschuppenObjekt"].animations["Tore"]:play(-1, 1) --[[ Wartezeit bis zum Starten der Lok --]] defer(3, "Verzögerung (2)") elseif deferredCall == "Verzögerung (2)" then --[[ ausgewählte Lok starten --]] if GKT.variables["Zug"]:hasEngine() then GKT.variables["Zug"].engine.active = true GKT.variables["Zug"].targetSpeed = 7 end --[[ Wartezeit bis Schließen der Tore --]] defer(15, "Verzögerung (3)") elseif deferredCall == "Verzögerung (3)" then --[[ Schließen der Tore --]] GKT.variables["LokschuppenObjekt"].animations["Tore"]:play(-1, -1) end Du musst die 3 Sekunden Verzögerung über dem Skript (in der grafischen EV) bitte löschen! Die ist jetzt in dieses Skript integriert, damit die einzelnen Verzögerungen unterschieden werden können. Viele Grüße Götz
  21. Hallo Jürgen, hast du im Protokoll eine Fehlermeldung, die du mit uns teilen möchtest? Vermutlich steckt das Problem in deinen Variablen im jeweiligen Schuppen. Aber die sehe ich hier nicht und kann daher auch nichts genaues dazu sagen. Die Fehlermeldung könnte eventuell Aufschluss darüber geben.
  22. Wenn man weiß, wo man hinschauen muss und zudem die Wartezeit so ändert, dass man auch genügend Zeit hat, es zu sehen, dann ...
  23. Jeder Kunde ist "nur Anlagenbauer", da das der Zweck dieser Software ist, Opax.
  24. Würdest du bitte noch möglichst präzise beschreiben, was in der aktuellen Version falsch läuft? Was sollte passieren? Und was passiert stattdessen? Am rechten Ende der Anlage öffnen die Türen der Züge in den beiden mittleren Spuren auf der falschen Seite. Ich empfehle für den Test die Wartezeit am Bahnsteig zu verlängern. Sonst hat man kaum genügend Zeit die vier Züge zu betrachten.
  25. Ganz ehrlich, Paul? Die Texturen finde ich persönlich furchtbar. Zu verwaschen. Und die Spiegelung der halben Textur auf der Frontseite tut mir richtig weh.
×
×
  • Neu erstellen...