Jump to content

verzögerte Ausführung [Lua]


Andy

Empfohlene Beiträge

Hallo,
ich habe da eine Frage bezüglich defer und deferredCall.
Ich habe ein Päckchen zurechtgemacht um mehrere Drehscheiben mit unterschiedlich vielen Zufahrten und Lokschuppen zu steuern.
Durch die unbestimmte Anzahl der Gleise liegen die Stammdaten der Drehscheiben in tables im zugehörigen Modulskript. Das funktioniert wunderbar.
Jetzt habe ich die zugehörigen Funktionen auch dorthin verschoben, um in den 'normalen' Ereignissen die jeweilige Funktion mit dem zugehörigen Table-Parameter aufrufen zu können.
Die sind jetzt auch prima universell verwendbar.
Nun haben aber die meisten dieser Funktionen auch Verzögerungen drin und nun denke ich, beißt sich da was. defer und deferredCall, so verstehe ich's, scheinen eine direkte Bindung mit dem Ereignis einzugehen, in dem sie gerufen werden. Lager ich's aus, ist die Fähigkeit weg. Im Modulskript rührt sich nämlich diesbezüglich nichts mehr. Muß ich den Funktionsaufrufen noch einen Parameter dafür mit auf den Weg geben und mit return wieder abholen? Oder muß ich in der Konfiguration doch auf Timer umstellen.
 

Modulskript:

Drehscheibe_1 = { ... }

function Drehscheibe_Einfahrt(drehs, track, vehicle)
  if not deferredCall then
     ...
     defer("Verzögerung (3)")
  elseif deferredCall == "Verzögerung (3)" then
     ...
  end
end
   
function...   auch mit defer
function...
function...

normales Ereignis:
Zug betritt ...
Aktion: Drehscheibe_Einfahrt(Drehscheibe_1, track, vehicle)

Gruß
   Andy

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Andy,

vor 3 Minuten schrieb Andy:

Muß ich den Funktionsaufrufen noch einen Parameter dafür mit auf den Weg geben und mit return wieder abholen?

ja und nein:

  • Ja: Du musst den Funktionsaufrufen den Parameter deferredCall mitgeben, ansonsten kennen die Funktionen diesen Parameter nicht.
  • Nein: Du musst nichts mit return abholen. Was willst du denn abholen?

Viele Grüße,

Neo

Link zu diesem Kommentar
Auf anderen Seiten teilen

 

vor 14 Minuten schrieb Neo:

Was willst du denn abholen?

tja, z.B. deferredCall. Hätte ich mir vorstellen können, wenn das Ereignis wirklich eine Bindung aufbaut. Ich hätte noch ein wenig herumkombiniert, aber ein offizielles Statement von Dir ist mir da doch lieber! Muß es gleich einbauen. Prima, wieder ein kritisches Ding im Griff.

vielen Dank
  Andy

ps: Klappt alles, Neo!

Bearbeitet von Andy
ps
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo @Neo

... wenn bei " deferredCall" die gleiche Beschreibung wie bei "defer" stehen würde, wäre die Sache vielleicht klarer dargestellt. (und eindeutig, dass beides zusammengehört)
Ich habe auch erst nach der Beschreibung bei "defer" verstanden, wie " deferredCall" einzusetzen ist.

Gruß
EASY

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo EASY,

vor 19 Stunden schrieb EASY:

wenn bei " deferredCall" die gleiche Beschreibung wie bei "defer" stehen würde, wäre die Sache vielleicht klarer dargestellt.

es ist meistens keine gute Idee, Dokumentation zu replizieren, weshalb ich bei deferredCall für weitere Informationen auf defer verweise.

Viele Grüße,

Neo

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...