Phrontistes Geschrieben 8. Juni Geschrieben 8. Juni Hallo @Neo, gibt es eine Möglichkeit, einen (user-defined) event so zu definieren, dass er ohne weiteres Zutun einmal ausgeführt wird, nachdem die Anlage neu geladen wurde und erstmals gestartet wird? Beste Grüße Phrontistes
Goetz Geschrieben 8. Juni Geschrieben 8. Juni 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
Phrontistes Geschrieben 8. Juni Autor Geschrieben 8. Juni vor 8 Minuten schrieb Goetz: Phrontistes muss leider warten, bis Neo ihm antwortet. Sehr witzig. Nachdem Du Dich andauernd öffentlich darüber beschwerst, dass ich nicht mit Dir rede: Willst Du, dass ich öffentlich begründe, weshalb? Oder wozu soll das sonst gut sein?
Goetz Geschrieben 8. Juni Geschrieben 8. Juni vor 1 Minute schrieb Phrontistes: Nachdem Du Dich andauernd öffentlich darüber beschwerst, dass ich nicht mit Dir rede 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.
Phrontistes Geschrieben 8. Juni Autor Geschrieben 8. Juni vor 4 Minuten schrieb Goetz: dass du meine vorangegangenen Beiträge nicht gelesen hast. Die nächste völlig aus der Luft gegriffene Behauptung. Woher willst Du wissen, was ich lese und was nicht?
Goetz Geschrieben 8. Juni Geschrieben 8. Juni Ein Beispiel: vor 24 Minuten schrieb Phrontistes: Nachdem Du Dich andauernd öffentlich darüber beschwerst 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.
Phrontistes Geschrieben 8. Juni Autor Geschrieben 8. Juni So, das war es jetzt für mich in diesem Forum. Künftig werde ich meine Feature-Wünsche Neo per E-Mail schicken. Und ich habe ihn gebeten, mein Forumprofil zu löschen.
Spurwechsel Geschrieben 8. Juni Geschrieben 8. Juni Moin @Phrontistes, ich würde diesen Schritt sehr bedauern. Liebe Grüße Spurwechsel
Phrontistes Geschrieben 8. Juni Autor Geschrieben 8. Juni Hallo @Spurwechsel, Hallo @streit_ross, das ist nett. Aber was soll ich sonst machen? Obwohl ich seit einem Jahr nicht mit ihm rede und (bis vorhin) auf nichts direkt eingehe, was er schreibt, zerredet er systematisch jeden Beitrag von mir und sogar jeden Thread, den ich erstelle. Da kann ich mich doch nur zurückziehen. Beste Grüße Phrontistes
Cafépause Geschrieben 8. Juni Geschrieben 8. Juni Zwischen Dir lieber @Phrontistes und @Goetz liegen hier im Forum leider oft Welten. Damit meine ich nicht die zwischenmenschliche Kommunikation. Es wird immer Menschen geben mit denen man kann, und Menschen mit denen man nicht kann. Du stellst hier z.B. eine Featurerequest der unnötig ist, weil Dein Wunsch ohne technische Klimmzüge bereits realisierbar ist. Statt den Hinweis anzunehmen, findet hier ein unnötiges Hauen und Stechen statt. Ob dieses Verhalten, das auf Ignoranz beruht, dem Studio, dem Forum, usw. "gut tut" muss jeder für sich selbst entscheiden. Ich behaupte "nein". Ja, Du tüftelst gerne an den Möglichkeiten des Studios und entwickelst pfiffige Lösungen. Aber viele lässt Du alleine mit Deiner Spracheinstellung (Englisch) hier aussen vor. Die Einstellung ist für Dich sicherlich die passende, sonst Du sie sicherlich nicht gewählt. Aber für die breite Masse? Das Studio ist eine weitestgehend deutsche Software, die teilinternationalisiert (hier Englisch) ist. Du veröffentlichst Deine Tipps und Tricks, Deine Screenshots, auch bei offensichtlich "in deutscher Sprache Fragenden", grundsätzlich in Englisch. Erwartest Du, das der Fragesteller dann seine Locale ändert um Deine Wege nachvollziehen zu können? Statt hier die beleidigte Leberwurst zu geben, schau Dir doch einfach einmal selbstkritisch Deinen Videocontent an, und Vergleiche ihn mit dem Content von Goetz. Wo glaubst Du nimmt der User "mehr mit"? Von einem in einer tollen Szenerie (mit tollen Kamerafahrten) aufgegleisten neuem Rollmaterial, oder von "Step by Step" aufgezeigten Lösungen? Auch wenn es oft nur ganz simple Dinge sind ... wie richte ich Fahrstrassen ein? Wendezugsteuerung in Brummis tollen Modulen, usw. Nicht jeder der nicht Dein Claqueur ist, ist automatisch Dein Feind. Aber akzeptiere doch bitte einfach (und neidlos) das hier im Forum echte Skriptkapazitäten gibt, und "nimm mit". Es kostet nichts. Und es verpflichtet zu nichts. VG, Cafépause
Neo Geschrieben 9. Juni Geschrieben 9. Juni Hallo Phrontistes, ein explizites Start-Event gibt es nicht, nur der Weg über Lua, wobei es sich hier auch nicht um ein explizites Starten handelt. Es handelt sich hier um eine Lua-Eigenschaft, bei der ein Skript ausgeführt wird, wenn es kompiliert wird. Und Skripte werden beim Start und nach jeder Änderung in der EV neu kompiliert, dein Start-Code würde daher mehrfach ausgeführt werden. So ein Start-Event hatte ich damals bei der Neuentwicklung der EV bereits im Hinterkopf, habe mich davon zunächst aber wieder distanziert, weil das eventuell Probleme für den Nutzer mitbringen könnte. Der Nutzer würde nach dem Laden einer Anlage diese nicht mehr so wieder vorfinden, wie er sie nach dem Speichern verlassen hat. Bisher vermag ich noch nicht so richtig abzuschätzen, ob und welche negativen Auswirkungen das hat. Vielleicht kannst du aber etwas detaillierter beschreiben, was du mit einem Start-Event vorhast. Viele Grüße, Neo
Phrontistes Geschrieben 9. Juni Autor Geschrieben 9. Juni Hallo @Neo, Danke für die Rückmeldung. vor 15 Minuten schrieb Neo: ein Start-Code würde daher mehrfach ausgeführt werden Das ist natürlich keine Lösung. vor 9 Minuten schrieb Neo: nach dem Laden einer Anlage diese nicht mehr so wieder vorfinden, wie er sie nach dem Speichern verlassen hat. Genau dieses Problem hat mich veranlasst, über einen Start-event nachzudenken: Autos werden von einem Kontakt auf 0 gebremst und tröpfchenweise entlassen (Speed jeweils currentSpeed): Während der Verzögerung wird die Anlage gespeichert. Ein Auto steht auf dem Kontakt. Defer ist natürlich nicht gespeichert. Also muss ich nach dem Laden das erste Auto anschubsen: Das geht natürlich mit einem Schalter, aber automatisch nach dem Laden oder starten wäre halt schöner. Beste Grüße Phrontistes
Neo Geschrieben 9. Juni Geschrieben 9. Juni vor 1 Minute schrieb Phrontistes: Während der Verzögerung wird die Anlage gespeichert. Ein Auto steht auf dem Kontakt. Defer ist natürlich nicht gespeichert. Aktive Verzögerungen werden auch in der Anlage gespeichert und nach dem Start normal weiter ausgeführt. Hast du ein Beispiel, wo das nicht der Fall ist? Viele Grüße, Neo
Phrontistes Geschrieben 9. Juni Autor Geschrieben 9. Juni Hallo @Neo, vor 5 Minuten schrieb Neo: Aktive Verzögerungen werden auch in der Anlage gespeichert und nach dem Start normal weiter ausgeführt. OK, wenn ich darüber nachdenke, kann es nicht anders sein, sonst herrschte Chaos . Ich hatte halt beobachtet, dass manchmal nach dem Laden der Anlage ein Auto auf einem der beiden Kontakte steht und sich nicht bewegt und hatte mir (unsinnig) zusammengereimt, dass es an der Verzögerung liegt. Aber ein Start-Event wäre trotzdem schön. Ich habe z.B. auch diesen (lt. Goetz überflüssigen) Code auf einem Schalter, der sein muss, bis Du das (lt. Goetz bereits behobene) Problem beseitigt hast und den ich auch in einen Start-Event legen würde, so es einen gäbe. local t = layout:getEntitiesByKeyword("Signal with TC") for i, Iter in ipairs(t) do local pos = Iter.transformation.position pos["z"] = pos["z"] + 10 Iter.transformation.position = pos pos["z"] = pos["z"] - 10 Iter.transformation.position = pos end print(#t .. " Signalpositionen repariert") Beste Grüße Phrontistes
liftboy Geschrieben 9. Juni Geschrieben 9. Juni Hallo @Phrontistes, Ich schreibe meinen Initialisierungs Code in das main skript. Der wird dann genau einmal ausgeführt, oder nach neu kompilieren wie @Goetzgeschrieben hat. Dort geht schon alles, bis auf "print()" Grüße vom Liftboy
Phrontistes Geschrieben 9. Juni Autor Geschrieben 9. Juni vor 2 Minuten schrieb liftboy: genau einmal ausgeführt vor 51 Minuten schrieb Neo: nach jeder Änderung in der EV neu kompiliert, dein Start-Code würde daher mehrfach ausgeführt werden "in der EV" gibt es bei mir ständig Änderungen. Ich verstehe Neo so, dass nach jeder Änderung in der EV die gesamte EV (samt Skript) neu kompiliert wird. Dann ist das main script keine Lösung.
liftboy Geschrieben 10. Juni Geschrieben 10. Juni nach meiner Beobachtung wird immer das geänderte Skript neu kompiliert. In einer strukturierten Programmierung gibt es genau ein main-skript, das kann 10 zeilen oder 100 zeilen lang sein, aber man muß es einfach nur manchmal anpassen, aber nicht ständig ändern, weil: es enthält eigentlich keinen Ablaufcode, sonder eben nur Initialisierungscode und der wird ja nicht ständig geändert. Oder habe ich deine Frage nach einem einmaligem Startskript falsch verstanden ?
EASY Geschrieben 10. Juni Geschrieben 10. Juni (bearbeitet) Hallo, vor 2 Stunden schrieb liftboy: Oder habe ich deine Frage nach einem einmaligem Startskript falsch verstanden ? @Phrontistes möchte gerne ein "Korrekturskript" laufen lassen, das mit dem (Neu-) Aufruf der Anlage einmalig gestartet wird... vor 2 Stunden schrieb liftboy: es enthält eigentlich keinen Ablaufcode ... dieses würde eine Ablaufcode enthalten! @Neo verweist darauf, daß dieses Skript mit jeder (gespeicherten) Änderung der EV (nicht nur dieses Skriptes) ausgeführt werden würde (was nach meinen Versuchen auch so ist)... ... es hat also nichts mit einem Initialisierungscode zu tun. Gruß EASY Bearbeitet 10. Juni von EASY
Phrontistes Geschrieben 10. Juni Autor Geschrieben 10. Juni Hallo @EASY, vor 8 Minuten schrieb EASY: was nach meinen Versuchen auch so ist Danke, dass Du es getestet hast. Das Ergebnis entspricht dem, was Neo geantwortet hatte. Die Antwort auf meine Eingangsfrage ist, dass es keinen Event gibt, der ohne weiteres Zutun einmal ausgeführt wird, nachdem die Anlage neu geladen wurde und erstmals gestartet wird. Das "und" gehört auch zu meiner Frage, denn bloßes Laden muss, wie Neo immer betont, dazu führen, dass sich die Anlage exakt im gespeicherten Zustand befindet. Mein Featurerequest war nicht "unnötig" und Goetzens Antwort falsch, seine Häme umso deplatzierter. So, jetzt dürft ihr gerne weiter den "echten Skriptkapazitäten" zujubeln. Ich mische mich nicht mehr ein und wenn ich Vorschläge für die Weiterentwicklung habe, dann bekommt sie Neo direkt. Beste Grüße Phrontistes
Goetz Geschrieben 10. Juni Geschrieben 10. Juni vor 11 Minuten schrieb Phrontistes: Goetzens Antwort falsch Ja, da hatte ich mich geirrt. Tut mir leid.
Neo Geschrieben 11. Juni Geschrieben 11. Juni Am 9.6.2024 um 11:20 schrieb Phrontistes: den ich auch in einen Start-Event legen würde, so es einen gäbe Hast du deinen Reparatur-Code einmal in ein globales Skript gepackt? Dass so ein Skript auch nach einer Änderung in der EV ausgeführt wird, erscheint mir bei deinem Code nicht nachteilig. Unabhängig davon wird so ein Reparatur-Code natürlich auch wieder hinfällig, sobald die Fehler beseitigt wurden. Viele Grüße, Neo
liftboy Geschrieben 11. Juni Geschrieben 11. Juni Hallo @Neo, Nur zu meinem Verständnis: mit "globalen Skript" meinst du das Skript direkt unter "Ereignisse", das wäre das was ich mit "main skript" bezeichne! Zu welchem Zeitpunkt und aus welcher Position wird das ausgeführt wenn ein "print()" Aufruf mit " attempt to call a nil value (global print)" gestempelt wird ? Grüße vom Liftboy
prinz Geschrieben 11. Juni Geschrieben 11. Juni Vielleicht einmal ein anderer Lösungsvorschlag: In meinen Anlagen gibt es einen Start-Timer, der auf 2 Sekunden steht. Nach Ablauf wird ein Start-Event ausgeführt, der nacheinander benutzerdefinierte Events zum Starten des Bahnverkehrs, des Straßenverkehrs und ggf. anderer Belange aufruft. Danach wird der Start-Event deaktiviert. Möchte ich den Start-Event nicht ausführen, setze ich den Starttimer auf Null. Soll z.B. zum Testen nur der Straßenverkehr gestartet werden, setze ich die anderen benutzerdefinierten Ereignisse auf deaktiviert. Ich bin mit dieser Lösung zufrieden. Viele Grüße, Wolfgang
Spurwechsel Geschrieben 11. Juni Geschrieben 11. Juni @prinz Moin Wolfgang, so eine einfache Lösung suche ich noch. Würdest Du mir bitte einen Tipp geben wie Du das realisiert hast. Liebe Grüße Spurwechsel
prinz Geschrieben 11. Juni Geschrieben 11. Juni Definiere einen Timer und einen Event, der bei Ablauf des Timers aktiv wird. Dort rufst Du nacheinander die benutzerdefinierten Events auf, die den Bahnverkehr hochfahren (Eigenschaften der Züge, wie z.B. Animationstexte für Türen öffnen eintragen, Schattenbahnhöfe/Depots starten), den Straßenverkehr (Animationstexte für Blinker etc, Geschwindigkeit setzen, Automatische Beschleunigung/Verzögerung). Details findest Du in meiner Anlage Basissteuerungen (Id gerade nicht greifbar). Meine Anlagen sind immer pausiert, so dass man erst den Play-Button drücken muss. Mir gibt es aber die Gelegenheit, den Starttimer auszuschalten, wenn ich etwas ändern möchte. Viele Grüße, Wolfgang
Empfohlene Beiträge
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 erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden