Jump to content

Startevent?


Recommended Posts

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

Link to comment
Share on other sites

Das Skript, welches man hier einrichten kann ...

StartSkript.jpg.7096467a862e5404b0062538262aa06d.jpg

... 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. :D
Götz

Link to comment
Share on other sites

vor 8 Minuten schrieb Goetz:

Phrontistes muss leider warten, bis Neo ihm antwortet. :D

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?

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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?

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

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 

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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):

Screenshot2024-06-09104922.jpg.c7090bc321128b3ab138c68550521f41.jpg

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:

Screenshot2024-06-09104952.jpg.11f94ec56465fc82165c713decc2aab4.jpg

Das geht natürlich mit einem Schalter, aber automatisch nach dem Laden oder starten wäre halt schöner.

Beste Grüße

Phrontistes

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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 ?

 

Link to comment
Share on other sites

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

Edited by EASY
Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...