-
Gesamte Inhalte
53 -
Benutzer seit
-
Letzter Besuch
Beiträge erstellt von Kai Brendel
-
-
Hallo Gerhard,
ich weiß nicht was dein Ziel ist, Vollautomatik oder Handbetrieb, nur ICH würde nicht die Signale über die Schalter einfach auf "Go" schalten, sondern immer eine Fahrstraße aktivieren. Der Zug steht vor dem Signal und fährt erst los wenn die Fahrstraße grünes Licht gibt, spricht der Weg durch den Bahnhof kann ohne Gefahr durchfahren werden.
Zweitens sehe ich keine Blocksteuerung das sich Züge auf dem selben nicht hinten reinfahren.
Und nu der Punkt an dem ich für mich am meisten getüftelt habe, der Zug entscheidet auf welches Gleis er möchte, in der Realität fährt die Bimmelbahn ja auch nicht auf das IC-Gleis und umgekehrt. Im Grunde sieht das so aus: Ein Signal bekommt den Namen "SIGGI" und von dort aus werden zwei Fahrstraßen angelegt, "SIGGI > Sig 01" und "SIGGI > Sig 02". Vor "SIGGI" platziere ich einen Gleiskontakt, damit im Idealfall der Zug nicht halten muss, den nenne ich "GK SIGGI". Jede Lok bekommt eine Variable vom Typ Fahrstraße mit dem Namen "GK SIGGI" und mit der Fahrstraße Eins oder Zwei. Nun ein Ereignis zum Gleiskontakt, das MUSS "GK SIGGI" heissen, in dem Code passiert folgendes:
if vehicle.variables[self.name] ~= nil then vehicle.variables[self.name].autoActivate = true vehicle.variables[self.name].active = true return end vehicle.engine.active = false
Das Skript prüft ob die Lok eine Variable hat die genauso wie das Ereignis heißt und schaltet die dort hinterlegte Fahrstraße frei. thats all :-)
Blocksteuerung und Fahrstraßen findest du in der Beispielanlage wieder. Jeder der drei Züge fährt immer wieder "sein" Gleis an...
Gruß, Kai
-
Am 12.3.2025 um 09:16 schrieb Goetz:
Für mich übrigens der faszinierendste Aspekt der KI: dass sie lügt!
Damit eignet sie sich zwar kaum für sinnvolle Einsätze. Aber dass sie das kann, ist bemerkenswert.Die AI lügt nicht, die erzählt nur den Stuss der im letzten ELSE Zweig Zustande kommt... Lügen würde Vorsatz bedeuten und das Intelligenz, es gibt aber keine KI's auf diesem Planeten *lol*
Lies mal: https://www.krimi-couch.de/titel/15872-hologrammatica/
-
Verflixtes Lua... Nach 35 Jahren Entwicklung ist mir sowas noch nicht untergekommen
Stand letztens vor der Wahl für ein Embedded-System für Delphi: Lua vs Python... Bin froh das der Entscheid für Python fiel :-)
Vielen Dank
-
Moin,
ich wollte Code von Ereignissen in einem Unterprogramm vereinheitlichen, in dem ich ein Unterprogramm (Benutzerdefiniertes Ereignis) aufrufe, aber
$("Benutzerdefiniert").invoke(self.name)
klappt nicht, kommt immer NULL an...
Beispiel-Anlage anbei...
-
Moin...
früher, auf den realen Platten hatten wir immer so kleine Sockel mit einer Glühlampe in die Häuser gestellt, um diese zu beleuchten. Es gibt zwar diese Straßenlaternen, mit einem Lichtkegel nach unten, und auch diese Leuchtwürfel, die aber kein Licht abstrahlen, aber etwas das man in ein Haus stellt und leuchtet habe ich nicht gefunden. (Voraus gesetzt das Haus/Gebäude hat Fenster)
Jemand da eine Idee ob es sowas gibt?
Gruß, Kai
-
Am 26.9.2024 um 11:15 schrieb Neo:
Ja, da Züge Ereignisse auslösen und somit für den Anlagenablauf relevant sind, können diese nicht übersprungen werden, wenn sie den Bildschirm verlassen.
Also macht es doch Sinn, Schattenbahnhöfe in Depots umzuwandeln, da damit die Züge ja von der Anlage verschwinden? Genauso wie lange Tunnelstrecken durch Depots zu ersetzen, wo die Züge nach der ansonsten benötigten Fahrdauer wieder hinten rauskommen? Um zumindest einen Teil der Züge im Nirvana verschwinden zu lassen?
Weißt du was da seeeehr hilfreiche wäre? Wenn die Portale einen Zeitfaktor bekämen. Also: Wenn Zeit > 0 dann erst komplett einfahren und nach Zeit wieder rauskommen? Damit könnte man an langen Strecken mal ebend die Gleise löschen und durch zwei Portale verbinden, mit der Zeitverzögerung ein Mini-Schattenbahnhof ohne Programmieraufwand :-)
-
Am 19.5.2024 um 23:37 schrieb SY-DU:
Ich bin's nochmal...
Gerade habe etwas recherchiert und in Wiki das Thema Arbeiten mit den Ebenen gefunden. Es ist sehr gut erklärt und ich habe es verstanden. Es wird für mich eine große Hilfe sein.
Aber das mit dem Selektieren und auseinanderfallen der Gleise bleibt für mich ein Rätsel.
Gruß. Eddie.
Guckst du:
-
vor 18 Minuten schrieb Neo:
Hier kommt es drauf an, welcher Bereich den Eingabefokus besitzt. Ist die 3D-Szene aktiv, werden bei STRG+A alle Objekte markiert. Ist die Strukturansicht aktiv, werden nur die gefilterten Einträge markiert. Zu überlegen ist, ob das vereinheitlicht wird, ob also ein aktiver Filter in der Strukturansicht Vorrang hat, egal wo der Tastaturfokus liegt.
Die Struktur-Ansicht ist Aktiv! Ist genau wie bei Shift+Pfeil-Runter greifen beide, Struktur und 3D-View (Auch 2D etc etc), die Tastendrücke ab. Umgekehrt aber nicht, hat die 3D-View den Fokus wird ein Shift-Arrow nicht an die Struktur weiter gegeben.
Könnte mir vorstellen das das jedem PopUp passiert, je nach Art des Ermitteln des Key-Hits passiert. Die Combox-Box für die Variation gibt die Tastendrücke nicht weiter, aber weiss welche eswürden?
Btw: Wenn man sich mit Shift-Arrow in der aufgeklappten ComboBox bewegt ist das schnarchig langsam, da er die Variation an alle markierten Objekte sofort weiter gibt, da lohnt es sich mal das Event "OnCloseUp" anzusehen, also erst übernehmen wenn die ComboBox sich wieder schließt :-)
Gruß, Kai
-
Also, Gedanke ist alle Gleise vom Typ "XYZ" die Textur zu ändern. "Info zum Gleis" > ContentId kopiert und in der Struktur als Suchbegriff eingegeben, es werden 514/1156 Objekte angezeigt, das erste angeklickt, "Eigenschaften" zeigt korrekt an, Strg-Klick ein zweites, die Eigenschaften zeigen nur noch Variation und Tauschtextur an, dito bei 3.. 4.. 5.. soweit so gut...
Bug 1: Strg+A für alle Objekte. Es werden scheinbar ALLE Objekte ausgewählt, auch die nicht im Filter sind, es bekommt zumindest alles in der Ansicht einen Markierungsrahmen, aber in der Struktur zeigt er 514 Objekte (883 ausgewählt) ???? Eigenschaften zeigt das keine Verfügbar sind.
Bug 2: Da Strg+A nicht geht, erstes Objekt markiert und mit Umsch+Pfeil-Runter die Objekte in der Ansicht markieren, klappt gut, die Eigenschaften bleiben erhalten und die Anzahl der Ausgewählten steigt. ABER, alle Gleise werden parallel zum Markieren bei jedem Tastaturklick auch auf der Anlage verschoben :-(
Bis ich das vorhin merkte, konnte ich meine Anlage nur durch "Nicht Speichern" retten.
Gruß, Kai
-
Guten Morgen,
im Grunde tendiere ich dazu die Pinsel im Studio zu haben, sie sind mein Gedankengut und meine Art & Weise etwas zu bemalen, und die Dinger hätte ich gerne in jeder meiner Anlagen schnell und unkompliziert zur Verfügung. Und wer durch einen Crash alle MBS-Daten verloren hat, der hat auch seine Anlagen verloren :-) Dazu gibt es den Punkt Datensicherung, ich habe z.B. meinen MBS-Order ins OneDrive verschoben, nutze ihn gerade im Urlaub auf dem Notebook.
Allerdings finde ich den Weg über die Community auch sehr reizvoll, gerade in Bezug auf Fragen "Wie hast du dies oder das angemalt?". Aber als Antwort "Lade Anlage XY und kopiere dir Pinsel AB heraus", nicht angenehm. Zumal dabei sichergestellt werden muss das in der Zielanlage die Textur vorhanden ist. Einen Pinsel im Katalog abzulegen, finde ich recht gut, aber irgendwie oversized, zumal der Pinsel beim importieren auch bei Bedarf die Textur mit laden müsste. Von dem Wust an Daten mal ganz abgesehen, irgendwann gibt es zu "Schottern" hunderte von Pinseln, was dann wiederum völlig sinnbefreit ist.
Dahingehend klingt der Ansatz von Gmd ganz gut, aber über eine etwas aufgebohrte Struktur:
- Ein weiterer Filter "Werkzeuge", vlt. gibt es irgendwann noch etwas anderes als Pinsel.
-
Es gibt ja "Kopieren/Einfügen", das aber in einem Untermenü "Datenaustausch"
-
In die Zwischenablage kopieren
- Allerdings als JSON-String
- Mehrfachauswahl (JSON-Array)
-
Als Datei speichern
- Dito JSON-String
- Mehrfachauswahl (JSON-Array)
- Kopieren/Speichern auch als Einfügen/Laden
-
In die Zwischenablage kopieren
- Bringt mit sich das ich jedes Objekt via Community an andere weitergeben kann. Als Datei oder einfach nur als JSON-String, Copy im MBS und Paste im Forum, vorzugsweise als "Code". Aber String ist String.
- Allerdings muss das Pinsel-Fenster ein wenig aufgebohrt werden. Wenn ein Pinsel eine Textur enthält, sei es ContentId oder Dateiname, muss diese automatisch geladen werden.
- Die Textur als Base64-Encoded Bitmap (JPeg, oder oder) mit dem Pinsel zu hinterlegen bläht das ganze wohl auf!?!? Weiß nicht ob es da bereits ein Limit gibt?
Gruß, Kai
-
Moin,
vielen Dank für den Hinweis, das hat gut funktioniert. Das habe ich gemacht, damit auch andere was davon haben :-)
Ein Zug/Fahrzeug betritt virtuelles Depot "Depot Reisenhofen"
local target = $("Depot Blumenbach 1") if vehicle.variables[self.name] ~= nil then target = vehicle.variables[self.name] end $("ReleaseFromDepot"):invoke(target, vehicle)
Ein benutzerdefiniertes Ereignis ReleaseFromDepot: Parameter target, vehicle (Beide Typ "Objekt")
if not deferredCall then target:add(vehicle) defer(60, "Delay") elseif deferredCall == "Delay" then if target.count > 0 then target:release(0) end end
Das mit dem wahlfreien Depot klappt natürlich nur, wenn die einfahrende Lok eine Variable (Depot Reisenhofen) hat die genauso heißt wie das Ereignis, damit self.name greift, und diese Variable vom Typ Objekt und auf das andere Depot zeigt.
Gruß, Kai
-
Da das so wie oben beschrieben funktioniert, wollte ich das Ereignis erweitern, und zwar kann eine Lok bei der Einfahrt in das Depot entscheiden wo sie rauskommen möchte, gelöst über eine Objekt-Variable zur Lok.
if not deferredCall then if vehicle.variables[self.name] ~= nil then target = vehicle.variables[self.name] else target = $("Depot Blumenbach 1") end target:add(vehicle) defer(60, "Delay") elseif deferredCall == "Delay" then if target.count > 0 then target:release(0) end end
Die Krux daran ist, das "target" global sein muss, sonst klappt das "release" nach 60s nicht. "target" kann aber auch nicht neu ermittelt werden, da im zweiten Aufruf die Variable "vehicle" nicht mehr bekannt ist.
Zu Problemen würde das führen:
- Wenn während der 60s Wartezeit eine zweite Lok einfährt und "target" ändert.
-
Der gleiche Code in einem anderen Depot verwendet wird.
- Gut, kann man mit einer anderen globalen Variablen lösen
Jemand eine Idee dazu?
Mfg, Kai Brendel
-
Moin...
Gerade mit Einrastfunktion und den Pinseln macht es sich echt gut, Gleise zu "schottern". Ich gehe erst mit einem 11px breiten weichen runden Pinsel mit am Pfad ausrichten und einer grauen Schottertextur über die Gleise, dann einen 6px mit anderer Rotbrauner Textur über die Gleise für den Rostabrieb des Betriebes. Weitere Pinsel mit/ohne einrasten für das Gelände und noch weitere für allmöglichen "immer wiederkehrenden" Malerarbeiten an der Platte...
Es wäre seeeehr schön wenn man einen eingestellten Pinsel mit einer Benutzer definierten Bezeichnung speichern könnte. Bei der Pinselauswahl dann eine Combobox zur Auswahl und rechts daneben Save/Delete Buttons. Save sollte bei vorhandenem Caption überschreiben oder entsprechend neu Anlegen.
Pinsel sollten überall verwendet werden können, ob bestimmte Einstellungen gerade verwendet werden könnten oder nicht. Damit meine ich das beim Malen die Textur mit am Pinsel hängt, dieser Pinsel auch für Geländeverformungen verwendet werden kann, dort die Textur aber einfach ignoriert... So, wie Grenze der Verformung nicht beim Malen interessiert...
-
Moin... Ich habe immer wieder Ausnahmen wenn ich an Gleiskontakten arbeite, am meisten direkt nach dem einsetzen aus dem Katalog. Ich schreibe das hier, weil es mir leider noch nicht gelungen ist ein bestimmtes Verhalten/Exception reproduzierbar zu machen, das Übel aller Entwickler...
@Neo Gibt es detailliertes (Debug) Logfile, das ich mal senden könnte wenn es auftritt?
(Da gibt es zwar die Möglichkeit zu einem Online-Formular zu kommen, aber was hilft es wenn ich immer eines mit "Fehler beim Gleiskontakt" zu sende?)
PS: Bin froh das es nur eine Meldung ist und ansonsten alle tutti bleibt...
Gruß, Kai
-
Hallo,
da ich auch erst seit Kurzem dabei bin, kann ich dir nur empfehlen, kleine Aufgaben vor den Augen zu haben und versuchen diese zu lösen. Dazu eine kleine neue Anlage und nach der Aufgabe benennen. Dabei helfen dir die oben genannten Hinweise etwas zu finden was dich zu deiner Lösung bringt...
Die Aufgaben sollten insbesondere darin bestehen, wie automatisiere ich auf einer Anlage etwas, zum Beispiel eine Lok im Kreis fahren lassen und in jeder Runde hält diese für Sekunden an einem Hauptsignal an. Dann sich die Fahrstraßen angucken und wie kann man zwei Züge fahren lassen, und auf zwei Gleisen im BHF stehen bleiben?
Klingt irgendwie trivial, aber als absoluter Neuling in Sachen EV kann ziemlich frickelig werden :-)
Gruß, Kai
-
Danke für den Hinweis, das hat geklappt...
-
Hallo Götz,
deine Erklärung macht es nicht wirklich besser
Habe mir gerade mal den "Ansatz" von OOP auf Lua.org (https://www.lua.org/pil/16.html) angesehen, das ist ja nicht mal wirklich OOP, mehr Structs/Unions/Records, mit Function Members, aber egal, LUA ist für das was es tun soll verdammt schnell, thats it...
-
Moin...
hatte es grundsätzlich richtig, mir war nur nicht bewusst das es bei Lua einen Punkt (.) und Doppelpunkt (:) gibt. Vor allem nicht das die damit Properties und Methods unterscheiden, kannte ich bisher so nicht... Gerade den Doppelpunkt kannte ich bisher nur von Inheritance...
-
Schon mal Danke für die Anlage, werde ich mir später mal angucken. Manchmal sieht man den Wald ja vor lauter Bäumen nicht
-
Moin,
habe jetzt schon viel rum probiert mit Ereignissen und Lua, komme aber noch zu keinem Endergebnis...
-
Zug fährt in Depot A ein
-
Ereignis wird ausgelöst
- Zug wird nach Depot B verschoben
- Verzögerung z.B. 30s
- Zug fährt aus Depot B wieder aus
-
Ereignis wird ausgelöst
Bis zu dem Punkt das der Zug nach Depot B verschoben wird, komme ich... Eine automatische, verzögerte Ausfahrt nicht.
Grundsätzlich könnte man das ja auch mit Portalen lösen, möchte mir aber die langen Gleise für die Pause sparen, und wenn man dann mehrere Züge reinschickt, gibt das Stau in Blöcken davor/dahinter... Na ja, das wäre dann halt ein Schattenbahnhof mit Parallelgleisen, und genau das soll ja nicht :-)
Gruß Kai
-
Zug fährt in Depot A ein
-
In den "Ebenen" gibt es oben gezeigte Befehle. Wofür ist das und wie kann ich das nutzen, ist immer ausgegraut..
Gruß, Kai
-
Hallo @Roter Brummer,
hast du da schon was gemacht? Würde mich sehr über Licht an diesem Modell freuen
-
Hallo Neo,
schon klar, daher ja auch das "OnFocus" > STOP EV und erst nach "Speichern" > START EV... Oder bei einem "OnBeforeChange" kommt, ein STOP EV.. Oder alles auf Read-Only bis das man auf "Bearbeiten" geklickt hat...
So hätte man wenigstens mal zwischen durch beim LUA Coding die Möglichkeit nach zuschauen, wie heißt jetzt nochmal dieses oder jene Objekt?
-
Moin...
da ich mit 3 Monitoren arbeite, habe ich mir die Fenster gelöst und auf die beiden äußeren Monitore gezogen, dieser Zustand wird auch wieder hergestellt, nur leider sind erstmal alle Fenster geschlossen, wäre nett wenn das wieder hergestellt würde :-)
Ach ja, warum ist das EV-Fenster Modal?
Wenn es den Focus bekommt, die EV anhalten und erst nach »Speichern« (anstelle von Schließen) die Änderungen übernehmen und die EV wieder starten... Ein Zusätzlicher »Verwerfen« Button wäre dann gut.
Gruß, Kai
Temporäres Verzeichnis im Online-Katalog
in Feature-Wünsche
Geschrieben
Moin,
und was ist mit dem Ansatz die Texturen in die Anlage einzubetten, oder einer SideCar-Datei für "Externes" ?
Gruß, Kai