Jump to content
Zum Start hinzufügen

Weitere Informationen

3D-Modellbahn Studio

Eine Vollbild-App auf Ihrem Startbildschirm mit Push-Benachrichtigungen und mehr.

So installieren Sie diese App auf iOS und iPadOS
  1. Tippen Sie auf das Teilen-Symbol in Safari
  2. Scrollen Sie durch das Menü und tippen Sie auf Zum Startbildschirm hinzufügen.
  3. Tippen Sie oben rechts auf Hinzufügen.
So installieren Sie diese App auf Android
  1. Tippen Sie auf das 3-Punkte-Menü (⋮) in der oberen rechten Ecke des Browsers.
  2. Tippen Sie auf Zum Startbildschirm hinzufügen oder App installieren.
  3. Bestätigen Sie durch Tippen auf Installieren.

Empfohlene Beiträge

Geschrieben

Hallo, noch eine Frage vor den Festtagen:
Wie spreche ich eine Benutzerdefiniertes Ereignis mit einer Variablen an? Wie das mit einem Objekt geht weiß ich inzwischen.

-- Objekt mit einer Variable ansprechen
local i = 1
local objWeiche = layout:getEntityByName("Weiche "..i)
objWeiche.state = 1

-- Benutzerdefiniertes Ereignis mit einer Variable auslösen ??

$("BD Ausfahrt Gleis 1"):invoke()

Ich möchte den Bezeichner "BD Ausfahrt Gleis 1" in Zeile 8 durch eine Variable ersetzen.

Gruß Siggi

Geschrieben

Hallo Siggi,

Du willst den Namen des benutzerdefinierten Ereignisses, welches zu auslösen willst, einer Variablen entnehmen?

Die Ereignisse werden (ebenso wie auch Objekte) nicht direkt über ihren Namen referenziert. Hinter allen Angaben mit vorangestelltem Dollar-Zeichen verbergen sich Adressen (die nur zur besseren Lesbarkeit namentlich dargestellt werden.) Du kannst daher den Namen nicht einfach durch eine Variable ersetzen, sondern müsstest zunächst anhand des Namens die Adresse des benutzerdefinierten Ereignisses ermitteln. Ähnlich, wie du es auch schon in der dritten Zeile für das Weichenobjekt tust.

Das scheint mir aber überhaupt nicht sinnvoll.
Kannst du bitte mal beschreiben, worauf du letztlich aus bist? Vielleicht gibt es einen eleganteren Weg als den Ereignisnamen per Variable zu übergeben.

Du könntest beispielsweise für alle Fälle ein und dasselbe Ereignis verwenden und in der Klammer (hinter invoke) ein Argument übergeben, anhand dessen du im Ereignis unterscheidest, welchen Weg du einschlagen willst.

Gruß
Götz

Geschrieben
  • Autor
vor 10 Stunden schrieb Goetz:

Kannst du bitte mal beschreiben, worauf du letztlich aus bist? Vielleicht gibt es einen eleganteren Weg als den Ereignisnamen per Variable zu übergeben.

Guten Morgen Götz,

danke für deine Antwort!
Ich habe 3 Gleise im Bahnhof und für jedes Gleis die Aktionen zur Abfahrt des Zuges in ein Benutzerdefiniertes Ereignis gepackt (Weichen, Signal stellen, Variablen belegen..). In bestimmten Situationen wird nun ein entsprechendes Gleis freigegeben. Ich dachte, es gibt in Lua eine Methode, ähnlich wie für die Objekte, auch für Ereignisse.
Die Übergabe über das Argument <Voke> kenne ich auch, nur dann müsste ich wieder im Ereignis über <if then> die Wege trennen und das wollte ich vermeiden. Leider gibt es in Lua nicht die <select case> Methode.
Aber jetzt feiern wir erst mal Weihnachten!
Die und deiner Familie besinnliches Feiertage.

Siggi

Geschrieben

Warum rufst du nicht in einem übergeordneten Ereignis, und einem Übergabe Parameter die einzelnen Ereignisse mit if then auf?  Das sollte doch kein großer Aufwand sein. 

Gruß Thomas 

Geschrieben
vor 2 Stunden schrieb siggi:

Leider gibt es in Lua nicht die <select case> Methode.

Aber es gibt Tabellen. Wenn du also dein "select" Argument so gestaltest, dass du es als Tabellenindex verwenden kannst, dann musst du keine Fallunterscheidung treffen. Dann nimmst du einfach das, was in der Tabelle steht. 

Du kannst beispielsweise die unterschiedlichen Wege tabellarisch anlegen. 

Tabellen sind der Schlüssel zu Lua. 

Geschrieben
  • Autor

Danke für eure Antworten,

im aktuellen Fall habe ich es nach dem ersten Vorschlag von Götz gelöst.

vor 13 Stunden schrieb Goetz:

Du könntest beispielsweise für alle Fälle ein und dasselbe Ereignis verwenden und in der Klammer (hinter invoke) ein Argument übergeben, anhand dessen du im Ereignis unterscheidest, welchen Weg du einschlagen willst.

 

 

vor 6 Minuten schrieb Goetz:

Tabellen sind der Schlüssel zu Lua. 

Ich habe auch schon viel mit Tabellen gelöst, nur noch nicht Ereignisse in Tabellen das werde ich dann als nächsten lernen.

Euch noch schöne Feiertage.
 

Siggi

 

Geschrieben
vor 36 Minuten schrieb siggi:

Ereignisse in Tabellen

sind im 3D-MBS ganz bequem und für deinen Zweck vermutlich genau die richtige Lösung:

EreignisListe.thumb.jpg.870c6aab15436fd1712dbb329509684c.jpg

Geschrieben

Hallo @Goetz

Wo liegt der Fehler?

Ereignis aufrufen.mbp

Bearbeitet von HaNNoveraNer

Geschrieben
vor einer Stunde schrieb HaNNoveraNer:

Wo liegt der Fehler?

in der falschen Adressierung. SelectCase ist keine Lua Tabelle. Sie gehört dem MBS.

$("Ereignisse").variables["SelectCase"][1]:invoke()      

korrigierte Fassung:   Ereignis umschalten.mbp

Bearbeitet von Goetz

Geschrieben

Achja, danke, ist ja eine Variable...

Geschrieben
vor 3 Minuten schrieb HaNNoveraNer:

ist ja eine Variable...

... eine Modul-Variable. Das ist das entscheidende

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Push-Benachrichtigungen konfigurieren

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.