Jump to content

Kai Brendel

Mitglieder
  • Gesamte Inhalte

    53
  • Benutzer seit

  • Letzter Besuch

Beiträge erstellt von Kai Brendel

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

    Schalten & Walten.mbp

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

     

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

  4. 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 :-)

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

     

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

     

     

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

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

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

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

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

     

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

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

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

    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

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

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

     

     

×
×
  • Neu erstellen...