Jump to content

Blinken über Trigger


Empfohlene Beiträge

Hallo zusammen,

mich gibt's auch noch - bzw. wieder. Nach längerer Pause hab ich mal wieder ein neues Projekt im Sinn. Aber gleich zu Anfang bin ich auf ein Problem gestoßen:

Ich möchte lediglich, dass die Lok beim Betreten jedes Gleises den Schalter betätigt. Das hab ich über eine "Trigger-Variable" versucht. Nun ist es aber so, dass nur eines der Gleise diesen Effekt auslöst - obwohl alle Gleise den gleichen Variablennamen "Kreisgleis" haben.

Mit "Triggerdingen" hab ich bislang keine Erfahrung. Meinen (offensichtlich falschen) Lösungsansatz seht Ihr in der Ereignisverwaltung der angehängten Anlage. Kann mir jemand weiterhelfen?

Viele Grüße von Koriander

Blinken.mbp

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Koriander,

1292620303_VerschiedeneTrigger.jpg.594975f3677193a95033f79344fac1a5.jpg

das Problem liegt hier in der Bedingung. "_Trigger2" repräsentiert stets jenes Gleis, das gerade "betreten" wurde. Und da nur eines dieser Gleise eine Objekt-Variable "2210.Kreisgleis" besitzt, wird der SChalter auch nur bei diesem einen Gleis umgelegt. Dass auch alle anderen Gleise denselben Namen "2210" besitzen, spielt hier keine Rolle, da sich die "_Trigger"-Variablen immer auf das jeweilige Objekt und nicht auf dessen Namen beziehen Auch die Variable "2210.Kreiskleis" ist nur diesem einen Gleisstück zugeordnet).

Viele Grüße
BahnLand

Link zu diesem Kommentar
Auf anderen Seiten teilen

Moin,
eiei BahnLand - jedes der Gleise hat eine 'Kreisgleis'-OV. Insgesamt wird aber offensichtlich nur eine generiert (siehe Variablenliste) - insofern stimmt's mit der Objektbindung natürlich. Deshalb schaltet er jetzt auch nur auf einem Gleis (vermutlich das Erste, was ins Leben gerufen wurde).
Das Heiße ist: löschst Du dem Gleis die OV, dann schaltet's gleich nirgendwo mehr, obwohl noch drei 'Kreisgleis' da sind und auch noch eine in der Variablenliste angezeigt wird. Aber - die aufgelöste Objektbindung wird offensichtlich nicht weitergereicht. Naja, man kann ja nicht erwarten, dass hinterlistige Tricks auch noch unterstützt werden. :P
Also Koriander: einfach noch unterschiedliche Buchstaben an die 2210s dranhängen und alles lebt. Identische Objektnamen sind da tödlich.

Gruß
  Andy

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Andy und Koriander,

vor 40 Minuten schrieb Andy:

eiei BahnLand - jedes der Gleise hat eine 'Kreisgleis'-OV

ich habe natürlich "auf die Schnelle" nur in die "Variablenliste" der EV geschaut, und da steht - natürlich (o.O) - nur eine Variable drin, weil die Liste hier Objekte mit gleichem Namen nicht unterscheidet. Sorry für die Fehlinterpretation :x ! Zumindest für solche Objekte eindeutige Namen zu verwenden, die in der EV behandelt werden, ist eigentlich ein zwingendes Muss - was man hier an diesem Beispiel besonders gut nachvollziehen kann.

Viele Grüße
BahnLand

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo BahnLand und Andy

danke für die schnellen Rückmeldungen. Habt Ihr denn eine andere Idee, wie ich das lösen könnte? In dem Beispiel sind es ja nur 4 Gleise. In der geplanten Anlage wären es aber viel, viel mehr. Ein EV-Eintrag pro Gleis würde daher einen riesen Aufwand bedeuten.

@Andy Du hast doch in Deiner schlauen Geschwindigkeitssteuerung ((y)(y)) auch mehrere Gleise mit einem EV-Eintrag angesteuert - oder???

Viele Grüße
Koriander

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Koriander,
kleines Mißverständnis hier! Du mußt nur die Namen der Gleise unterschiedlich wählen und alles funktioniert. An der EV mußt Du nichts machen, die ist schon vollkommen richtig so! Und alle Ehre für das Verfahren gebührt BahnLand!
Ich will nur darauf hinweisen, dass man das alles nicht zu ekzessiv nutzen sollte, denn natürlich muß die EV letztlich irgendwie alle Gleise daraufhin abklappern, auch wenn das nicht gerade offensichtlich ist. Wenn Fahrzeuge anfangen zu hüpfen, weiß man, dass man das etwas zu häufig genutzt hat. Das Problem habe ich leider ziemlich intensiv auf meiner Anlage - und kann da nicht mehr zurück, wegen dem 'Softwaredesign'. Da hat's mich schon ganz schön in den Hintern gekniffen. Die Rechenzeit knappt er von der Grafik ab und das hat nicht mal was mit der FPS zu tun.

Grüße
  Andy

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo zusammen,

jetzt habe ich noch eine Variablen-Frage: Kann ich den Wert einer Variable durch den Wert einer anderen Variable teilen und das Ergebnis als dritte Variable ausgeben?
Also in der folgenden Art:
Name: Variable3
Wert: =$Variable1/$Variable2

(das geht allerdings nicht - ich hab schon ziemlich rumprobiert...)

Sorry dafür: 9_9

Viele Grüße von Koriander

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Koriander,
eigentlich kannst Du es doch in zwei Aktionen so machen:
Name: Variable3  Wert: $Variable1
Name: Variable3  Wert: /$Variable2

Du kannst auch eine Zwischenvariable nehmen, wenn Du Bedenken hast, dass - wie auch immer - für die Zuweisung an Variable3 zwei 'Variable wird gesetzt'-Ereignisse generiert werden.
Variable: tmp    Wert: $Variable1
Variable: tmp    Wert: /$Variable2
Variable: Variable3 Wert: $tmp
Da Du sicherlich kein Ereignis für tmp programmiert hast, dürfte das unproblematisch sein. Vergiß nicht, tmp in der Liste ins Leben zu rufen. Und paß auf, dass Variable2 nicht Null wird ;)

Gruß
  Andy

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Andy,

nochmals vielen Dank - so gehts :). Ich wollte die Rechenfunktion (excelmäßig) in einer Zeile unterbringen - aber da hatte ich wohl falsch gedacht.

Jetzt habe ich noch ein drittes Problem (scheinbar übersteigt die Anlage meinen Horizont :/): Gibt es eine Möglichkeit, das Ergebnis - also die Variable - zu runden? Auf oder ab wäre egal - es würde also genügen, einfach die Nachkommastellen wegzulassen.

Viele Grüße

Koriander

Bearbeitet von Koriander
Link zu diesem Kommentar
Auf anderen Seiten teilen

Moinmoin,
Frank hat recht. Es kann sogar noch viel schlimmer kommen. Sowie Du rechnest, kannst Du selbst einer Null nicht trauen, dass sie wirklich eine runde Null ist.
Denn sie wird dann bereits gerundet angezeigt. Tatsächlich kann sie irgendwas mit E(xponent) minus sonstwas sein, also sehr knapp an der Null.
Wenn Du nun als Ereignis 'Variable wird gesetzt' Wert: 0, bzw. als Bedingung 'Variable besitzt den Wert' Wert: 0 verwendest, dann drück' mal die Daumen.
Also, den Wert ggf. mit '>' und '<' eingrenzen. Außer +-*/ haben wir keine mathematische Funktion und Textwandler gar keine.

Gruß
  Andy

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 8 Stunden schrieb fzonk:

was genau willst du damit bezwecken?

Hallo fzonk und Andy,

erst mal vielen Dank für Eure Unterstützung. Gut, dass nun die Sinnfrage gestellt ist. Darauf hatte ich schon gehofft ;).

Nun ja, oftmals entstehen Pläne ja aus den völlig verschlungenen Denkwindungen eines verwirrten MBS-Bauers. Manche völlig sinnlose Aufgabe mit viel Aufwand, Vernunft und Struktur zu lösen, ist wohl so eine Spezialität der MBS-Gemeinde. Dass einem dann auch noch liebe Menschen helfen, die wohl auch an den Sinn des Sinnlosen glauben, mag ich so an diesem Programm und der MBS-Gemeinde.

Doch zurück zum Thema: Der "Zweck" des Rundungswunsches ist, dass eine gerade entstehende MBS-Spielbox den Wert des Glücksrades durch den Wert der Glückstrommel teilen muss, um damit den Gewinn in MBS-Mark zu errrechnen, der dann auch prompt ausgeschüttet wird.

Meine Lösung ist nun: Ich addiere zum Ergebnis 0,001 dazu (damit vermeide ich gerade Beträge, die dann ohne Komma dargestellt würden) und decke alles, was hinter der zweiten Kommastelle ist, mit einem Grundkörper ab. So macht's der Grobmathematiker. :D

Liebe Grüße von Koriander

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hört sich nach einem Interessanten Projekt an :D

Du könntest aber auch mit „<“ & „>“ deine Ergebnis auswerten lassen und entsprechend dann eine weitere Variable mit vollen Zahlen das Ergeben wiedergeben lassen und dies dann auch in einem Textfeld ohne Bastelei anzeigen lassen ;)

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...