Jump to content

Anlagendesigner

Mitglieder
  • Gesamte Inhalte

    92
  • Benutzer seit

  • Letzter Besuch

Letzte Besucher des Profils

Der "Letzte Profil-Besucher"-Block ist deaktiviert und wird anderen Benutzern nicht angezeigt.

  1. Na dann perfekt. Wenig Code für eine ganze Anlage. Jetzt fehlt nur noch das Türen öffnen und schließen, Lichtwechsel etc. beim Halt Und dann kann ich mir die Bushaltrestelle und die S-Bahn-Halterstelle in der ganzen anlage durchkopieren.
  2. Allerdings habe ich direkt das nächste Problem gefunden. Innerhalb des Scripts wird natürlich auch ein festes objekt/Variable verwiesen. Kann man in einem Script auf einen generischen Auslöser wie einen Gleiskontakt verlinken? Also statt: local t = $("Gleiskontakt Kaserne (Zuganzeige)").variables["Abfahrzeiten"] local x = t[1] table.insert(t, x) table.remove(t,1) $("Gleiskontakt Kaserne (Zuganzeige)").variables["Abfahrzeiten"] = t eher so etwas: local t = $([variabler Gleiskontakt]).variables["Abfahrzeiten"] local x = t[1] table.insert(t, x) table.remove(t,1) $([variabler Gleiskontakt]).variables["Abfahrzeiten"] = t Ebenfalls erledigt: Es muss heißen: local t = contact.variables["Abfahrzeiten"] local x = t[1] table.insert(t, x) table.remove(t,1) contact.variables["Abfahrzeiten"] = t Damit wird die Liste/Tabelle die dem jeweiligen Gleiskontakt zugeordnet ist hochgeschoben und die Anzeige aktualisiert ohne eine andere Zuganzeige zu ändern. Einzige Fehlerquelle ist jetzt noch, dass die EV-Funktion exakt zeitgleich von zwei unterschiedlichen Gleiskontakten ausgelöst wird. Ich denke aber das ist eher zu vernachlässigen da bei den heutigen Rechengeschwindigkeiten höscht unwahrscheinlich.
  3. So, jetzt bräuchte ich aber noch mal Hilfe zum ursprünglichen Thema. Ich befülle ja meine Anzeigeelemente aus der Liste die ich als Objektvariable an den Gleiskontakt gehängt habe. Das funktioniert auch so wie es soll, solange ich den Gleiskontakt bzw. die Variable per Objekt fest auswähle (wie hier im Screenshot). Jetzt möchte ich das Ganze aber gerne generisch bauen um die gesamte Anlage mit einer Funktion bedienen zu können. Darum habe ich ja auch die Objektnamen der Anzeigeelemente ebenfalls als Variable (Typ Objekt) an den Gleiskontakt gehangen. So brauche ich - nach meiner Logik - nur die Variablenwerte des jeweiligen Gleiskontaktes (dieser wird per Schlagwort ausgelöst) zu ändern, nachdem ich ihn an eine andere Haltestelle kopiert habe. Leider funktioniert das Befüllen mit der grafischen EV nicht wie ich es mir gedacht habe (siehe Screenshot). Es wird nichts übertragen. Ich verweise zuerst auf ein Listenobjekt, dann auf ein inneres Listenobjekt und anschließend uf eine erweiterte Variable um an den Auslöser zu kommen. Wo ist der Fehler? GEFUNDEN: Man sollte in den Variablen auch die richtigen Objekte hinteregen.
  4. Aus Sicht anderer Programmiersprachen ist es eigentlich logisch. Das remove bedeutet löschen, nicht ausschneiden. Was gelöscht ist kann nirgendwo mehr hingeschrieben/eingefügt werden. Die Variable X2 dürfte also nie einen Wert gehabt haben. Das ist in jeder mir bekannten Programmiersprache so, deshalb stellte sich mir die Frage ja überhaupt. Aber da muss sich @Neo zu äußern, wie das im Studio genau umgesetzt ist.
  5. @EASY @Goetz Danke für die Hilfe. Mit Easy's letztem Script funktioniert das Neureihen der Tabelle mit Auslösetastern perfekt. Jetzt werde ich es mal in Verbindung mit dem Gleiskontakt und der Aktualisierung der Anzeigetafel probieren. Damit hat sich der Export wohl auch erledigt - mach ich lieber mal wenn alles in weiter zukunft irgendwann fertig wird. Leider lasse ich mich bei der neuen Studio-Version dazu verleiten die neuen Funktionen einzuarbeiten und baue deshalb oft wieder um.
  6. Muss das Schlüsselwort local beim befüllen von Variablen immer voran gestellt werden?
  7. @EASYDer Unterschied besteht quasi nur darin, das du die erste Zeile erst kopierst und hinten anfügst und dann erst löschst. Sehe ich das richtig?
  8. N'abend, also ich kann definitiv sagen, das es mit dem Export an x liegt. Wenn ich x mit was anderem manuell befülle, wird dies an die Tabelle angehangen, nur wenn ich deinen Code nutze und x einzig mit der remove-Funktion befülle wird nichts angehängt. Das deutet für mich darauf hin, dass x keinen Inhalt hat - warum auch immer. Werde Morgen mal schauen ob ich die Anlage exportiert bekomme, dann kannst du selbst reinschauen und nach dem Fehler sehen. Ich werde Morgen - wenn ich dazu komme - mal das Prozedere mit einer neuen, leeren Anlage nachstellen. Nicht das am Ende nicht nur das Ereignis/Ereignisverwaltung als Unterschied ist. Die Anlage habe ich glaube ich seit V6 immer wieder in die neuen Versionen übertragen und weiterbearbeitet. Wie kann ich dir die Anlage denn am besten zur Verfügung stellen?
  9. Hatte es missverstanden. In Zeile 2 steht das t für die zu bearbeitende Tabelle/Liste und nicht um den einzufügenden Inhalt und somit ist es natürlich richtig. Aber das Einfügen funktioniert nicht, das kann ich reproduzieren. Habe zwischenzeitlich mal probiert die Zeile in zwei einzelne Befehle aufzusplitten wie du weiter oben geschrieben hattes: x = table.remove(t, 1) table.insert(t, x) Alternativ habe ich auch versucht einen Index anzugeben, doch dann läuft es wieder in einen Fehler. Kann es sein, dass es Probleme mit dem Inhalt von X gibt? Das da ein einzelner Wert und keine Listenzeile mit mehreren Werten erwartet wird? In der Codedefinition steht nichts dazu, da ist lediglich von einfügen allgemein die Rede. Aber alles andere funktioniert ja. Kann es sein, dass der Fehler auch im remove-Befehl steckt? remove löscht die Tabellenzeile und gleichzeitig übergibt er sie an "x"? Was übergibt die Funktion wenn die Werte gelöscht werden? Ist "x" nicht einfach leer und wird deshalb nicht eingefügt? Gibt es eine Möglichkeit um den Inhalt von X vor dem Einfügen anzeigen zu lassen?
  10. So, habe mir mal die Funktion näher angesehen und je, es entsteht keine Fehlermeldung. Dennoch ist ein Fehler enthalten, denn es wird zwar die erste Zeile gelöscht, die gelöschte aber nicht hinten eingefügt. Das Listenobjekt wird bei jedem Durchlauf eine Zeile kürzer. Aktuell sieht der angepasste Lua-Code folgendermaßen aus: local t = $("Gleiskontakt Beschriftung_S-Bahn-Station (Kaserne)").variables["Abfahrzeiten"] table.insert(t, table.remove(t, 1)) $("Gleiskontakt Beschriftung_S-Bahn-Station (Kaserne)").variables["Abfahrzeiten"] = t Hat es eigentlich einen besonderen Grund das t als Variable zu nutzen? Und einmal das t in der Listen-Editierung (Zeile 2) zu verwenden und gleichzeitig in der Ausschneiden/Einfügen-Funktion (Zeile 1 und 3) gibt keine kollisionen? Wie gesagt ist mein Lua-Wissen recht bescheiden, ich kann nur aus der Erfahrung mit anderen Programmiersprachen Rückschlüsse ziehen. Gibt es eine Möglichkeit Lua-code Zeilenweise auszuführen oder mit Haltepunkten zu versehen um den Ablauf besser testen zu können?
  11. Also der Code läuft Fehlerfrei druch, allerdings ergibt es noch nicht das richtige Ergebnis. Irgendwie wird anscheinend immer die gleiche Zeile unten angehangen und nicht die oberste aus der Anzeige. Muss ich Morgen noch mal genauer unter die Lupe nehmen.
  12. Ok, in einer neuen Anlage steht da tatsächlich nur noch Ereignisse und nicht wie bei mir Ereignisverwaltung. Hab es angepasst und jetzt bleibt es beim speichern auch erhalten. Allerdings ist es ja noch nicht ganz korrekt, da in deinem Beispiel auf eine Modulvariable verwiesen wird. Ich nutze ja eine Objektvariable, also müsste die ganze Zeile doch eigentlich anders lauten, oder nicht? Müsste jetzt statt Ereignis/Ereignisverwaltung der Name des Objektes dort stehen? Also in meinem Fall: local t = $("Gleiskontakt Beschriftung_S-Bahn-Station (Kaserne)").variables["Abfahrzeiten"] und fürs zurückschreiben: $("Gleiskontakt Beschriftung_S-Bahn-Station (Kaserne)").variables["Abfahrzeiten"] = t
  13. @Goetz Also ich sehe in der EV keinen Eintrag "Ereignisse", nur "Ereignisverwaltung" mit den einzelnen Einträgen bzw. Ordnern. (Siehe Screenshot1) Meine Liste habe ich an einen Gleiskontakt als Modulvariable hintelegt. Dort gibt es ebenfalls 4 Objektvariablen für die Anzeigeelemente. So bin ich generisch und brauche nur den Gleiskontakt zu kopieren und alles zu editieren. Nur das "durchreihen" nach oben in der Anzeige fehlt noch. Ich habe deinen Lua-Code 1:1 eingefügt und lediglich das "Beatles" durch "abfahrzeiten" (den Namen der Objektvariable) ersetzt. Aber das bringt wohl nichts wenn sich dies auf eine Modulvariable bezieht statt auf eine Objektvariable. Das "Ereignisse" hat mir Lua komplett gelöscht weil es diesen Namen nicht wohl findet.
  14. @Goetz Ich habe mir noch mal dein Lua-Beispiel vom Anfang angesehen, muss aber gestehen, dass ich nicht wirklich damit zurecht komme. Die funktion ist mir schon klar, aber ich habe Probleme mit den Bezeichnern. Wofür steht das "Ereignisse"? Ich behme an das "Beatles" steht für den Namen der Objektvariable, oder? Im Prinzip müsste ja die erste Zeile gelöscht und am Ende wieder angehangen werden. Ist es möglich, die Nummern der Liste per Script zu ändern, also 1->x, 2->1, 3->2, 4->3, x->4 (wobei x ein Zwischenspeicher ist)
  15. Beim Objektnamen habe ich das Problem, das nach meinem jetzigen Stand, der nicht eindeutig genug ist. Der Objektname ist ja zb ICE4 Triebwagen, ich brauche aber die Zugnummer, also zb ICE 12. Im Regioverkehr ist es ja noch schlimmer, da ändert sich die Zugnummer je nach Richtung und Zeit wobei die Linienbezeichnung ja gleich bleibt und das Modell auch den selben Modellnamen hat, da ja identisch mit den anderen Zügen der Linie ist. Und mit der eindeutigen ID des Modells kann ich im GBS oder Anzeigeelementen ja wenig bis gar nichts anfangen. Ich hoffe ich drücke mich soweit verständlich aus und man kann begreifen worum es mir geht. @GoetzDas mit dem vehicle ist mir nicht klar. Bezieht sich das automatisch sobad ein Auslöser mit einem Fahrzeug interagiert oder wie genau? @PhrontistesAktuell geht es mir um eine S-Bahn mit der Linienbezeichnung. Die kann dem Modell als Beschriftung beigefügt werden, so dass sie vorne und seitlich angezeigt wird. Diese Bezeichnung (zb S3 oder S16 wie in Köln) entspricht ja nicht dem Objektnamen, sonst käme es spätestens bei Zugverbünden mit mehreren angetriebenen Modellen zu Problemen. Bei mir entspricht aktuell der Modellname der (keine Ahnung wie man die nennt) Wagennummer der DB-Bezeichnung also im Regioverkehr der 440-3215-5 beispielsweise. Die ist einmalig.
×
×
  • Neu erstellen...