Jump to content

Magnetilo

Mitglieder
  • Gesamte Inhalte

    27
  • Benutzer seit

  • Letzter Besuch

Alle erstellten Inhalte von Magnetilo

  1. Magnetilo

    Parking Place

    Hello @Herman, thanks for the clarification. Your parking place is so cool, I will use both verions in my new layout Wunschhausen (Wishham). Cheers, Magentilo
  2. Magnetilo

    Wunschhausen

    Hallo zusammen, ich möchte Euch gerne mein neues Projekt im MBS V7 vorstellen: Anlage Wunschhausen in der XL-Variante im Maßstab H0. Zunächst die Eckdaten: Anlagenform: U-Form Grundfläche: 8,71 m² Gleislänge: 140,53 m Ebenen: 4 Schattenbahnhof: 3 (inkl. 1x Nebenbahn) Bahnsteiglänge: 194 cm Längster Zug (SBF): 360 cm (Güterzug) Anzahl Züge (max.): 30 inkl. Nebenbahn Die Idee für die Anlage stammt von Guido Meißner vom Meises Modellbahncenter. Eine detaillierte Vorstellung findet ihr hier: Vorstellung: Märklin C-Gleisplan Wunschhausen XL für 30 Züge Zum Abschluss noch ein paar Bilder aus dem Video: Viele Grüße Magnetilo
  3. Magnetilo

    Parking Place

    Hello @Herman, just for my understanding: The V7 version runs in MBS V7 and MBS V8? Then why not keeping this one? Greets, Magentilo
  4. Magnetilo

    Parking Place

    Hello @Herman, where can I find it (in v7)?
  5. Hallo, ich versuche gerade, eine alte Anlage mit einer modernen Steuerung zu versehen. Dabei ist mir folgendes aufgefallen: wenn man einen Zug namentlich in der EV verwendet, dann kommt es zum Absturz falls er sich im Depot befindet. Ist das ein Bug? Freundliche Grüße Magnetilo
  6. Mir ist noch was eingefallen: Die Funktion einfahrt kann ich ja bei jeder Abzweigung auf meiner Anlage einsetzen. Folglich kann ich auch soetwas schreiben: $("seltenBefahreneFahrstrasse").variables["gesperrt"] = (math.random(10) < 7) einfahrt("1_einf_lks") $("seltenBefahreneFahrstrasse").variables["gesperrt"] = false und damit eine Art Lastverteilung erzeugen.
  7. Beispielanlage erweitert um ein vernünftiges Schaltpult und einer Möglichkeit, Fahrstraßen zu sperren. Bahnhof mit zufälliger Ein- und Ausfahrt_V1.1.mbp
  8. Hallo @EASY, Schlagwörter kann ich meines Wissens nach programmtechnisch nicht ändern. Eine Anwendung wäre beispielsweise die Abriegelung eines Bereiches in dem ich dann manuell rangieren kann. Generell möchte ich eine Art Halbautomatikbetrieb erreichen. Gewisse Entscheidungen trifft der Computer, andere ich mit Schaltern. Das geht dann schon in Richtung Stellwerkssimulation. Keine Ahnung, ob mir das Spaß macht, aber alles selber steuern ist mir zu mühsam und nur zuschauen wie alles autromatisch läuft zu langweilig. Viele Grüße Magnetilo
  9. Das ganze ist schon recht tricky. Nicht umsonst muss ich immer mal nachbessern. Momentan überlege ich mir, ob es eine Möglichkeit gibt, Fahrstraßen auf Knopfdruck nicht verfügbar zu machen. So könnte man ganze Bereiche der Anlage vom Fahrverkehr ausschließen. Das Schlagwort der Fahrstraße lässt sich wohl nicht ändern. Aber mit einer Variablen müsste es gehen, oder?
  10. Hallo Götz, vielen Dank für den Hinweis. Meine Tests haben ergeben, dass bei der Funtion canActivate() die gesamte Fahrstraße frei sein muss. Es kann aber sein, dass die Fahrstraßen nach dem Einfahrtsignal ein Stück lang zusammen verlaufen bevor sie sich auffächern. Fährt dort noch ein Zug während ein neuer ans Signal kommt, werden dann alle Fahrstraßen als belegt gekennzeichnet. Mein Code erlaubt dies jedoch (Neue Fahrstraße wird vorgemerkt). not(f.active) verhindert lediglich, dass der wartende Zug auf das gleiche Gleis wie der vorangehende Zug einfährt. Freundliche Grüße Magnetilo
  11. Verbesserte Version der beiden Routinen und Beispielanlage Ich habe nochmals die beiden Routinen leicht verbessert und zur Demonstration eine Beispielanlage mit einer kleinen Erweiterung beigefügt: Beim Einfahrtsignal fahren Personenzüge auf ein zufällig ausgewähltes Gleis im Bahnhof, Güterzüge (Zugtyp="Cargo") fahren direkt am Bahnhof vorbei. function einfahrt(fskeyword) local routes = { } local fs=layout:getRoutesByKeyword(fskeyword) -- alle passenden Fahrstraßen zusammentragen for k,f in ipairs(fs) do -- print("Fahrstraße "..f.name.." gefunden!") -- print("Letztes Gleis: "..f.tracks[#route.tracks].name) -- freies Gleis? if (#layout:getVehiclesOn(f.tracks[#f.tracks]) == 0) and not(f.active) then table.insert(routes, f) end end print(#routes.." freie Fahrstraßen gefunden!") local random_number = 0 local random_route = Nil if #routes == 0 then random_number = math.random(#fs) -- zufällige Fahrstraße auswählen, selbst wenn belegt random_route = fs[random_number] else random_number = math.random(#routes) -- zufällige freie Fahrstraße auswählen random_route = routes[random_number] end --random_route.autoActivate = true -- bestehende Aktivierung aufrecht erhalten random_route.active = true print("Funktion Einfahrt hat Fahrstraße "..random_route.name.." aktiviert") end function ausfahrt(fskeyword) local routes = { } -- alle passenden Fahrstraßen zusammentragen local fs=layout:getRoutesByKeyword(fskeyword) for k,f in ipairs(fs) do -- print("Fahrstraße "..f.name.." gefunden!") -- print("Erstes Gleis: "..f.tracks[1].name) -- steht ein Zug bereit? if #layout:getVehiclesOn(f.tracks[1]) > 0 then table.insert(routes, f) end end print(#routes.." freie Fahrstraßen gefunden!") if #routes == 0 then print("Keine wartenden Züge gefunden!") else -- zufällige Fahrstraße auswählen local random_number = math.random(#routes) local random_route = routes[random_number] random_route.autoActivate = true -- bestehende Aktivierung aufrecht erhalten random_route.active = true print("Funktion Ausfahrt hat Fahrstraße "..random_route.name.." aktiviert") end end Bahnhof mit zufälliger Ein- und Ausfahrt.mbp
  12. Vielen Dank @paul5102 für den Hinweis. Ich habe das korrigiert und noch ein paar Verbesserungen eingefügt: Wenn alles belegt, dann trotzdem eine Fahrstraße auswählen, da der Zug sonst ewig wartet Erst autoactivate und dann active aufrufen, sonst kommt es zu Problemen function einfahrt(fskeyword) local routes = { } local fs=layout:getRoutesByKeyword(fskeyword) -- alle passenden Fahrstraßen zusammentragen for k,f in ipairs(fs) do -- print("Fahrstraße "..f.name.." gefunden!") -- print("Letztes Gleis: "..f.tracks[#route.tracks].name) -- freies Gleis? if #layout:getVehiclesOn(f.tracks[#f.tracks]) == 0 then table.insert(routes, f) end end print(#routes.." freie Fahrstraßen gefunden!") local random_number = 0 local random_route = Nil if #routes == 0 then random_number = math.random(#fs) -- zufällige Fahrstraße auswählen, selbst wenn belegt random_route = fs[random_number] else random_number = math.random(#routes) -- zufällige freie Fahrstraße auswählen random_route = routes[random_number] end random_route.autoActivate = true -- bestehende Aktivierung aufrecht erhalten random_route.active = true print("Funktion Einfahrt hat Fahrstraße "..random_route.name.." aktiviert") end
  13. Dem möchte ich kurz widersprechen. Die Fahrstraßen sind ein absolut geniales Feature. Und der Grund, warum ich noch nicht voll den Durchblick habe, mag daran liegen, dass ich das Modellbahnstudio erst vor ein paar Wochen kennengelernt habe. Aber auf die Fahrstraßen würde ich nicht mehr vberzichten wollen. Absolut empfehlenswert.
  14. Hallo @Goetz, entschuldigung, da habe ich Müll geschrieben. Richtig muss es heißen: Ich möchte, dass auf einen Trigger hin, ein Zug ausfährt. Falls die Fahrstraße noch blockiert ist, dann soll der Zug ausfahren sobald sie frei ist. Also genau das, wofür es AutoActive gibt. Kann ich Dir meinen Kreis mal schicken?
  15. Hallo @Old Grey, füge mal print-Anweisungen hinzu. Dann kannst Du sehen, wann was ausgeführt wird. Viele Grüße Magnetilo
  16. Hallo @Goetz, ich möchte, dass auf einen Trigger hin, ein Zug ausfährt, auch wenn die Fahrstraße noch blockiert ist. Das gelingt mir nur, wenn autoActive zuerst kommt. Aus meiner Sicht ein Fehler. Ich kann das an einem einfachen Kreis, mit einer Lok, zwei Fahrstraßen und zwei Signalen, die jeweils den nächsten Halbkreis aktivieren nachvollziehen. Bei fs.active = true fs.autoActivate = true sind irgendwann beide Signale immer offen, weil komischerweise die letzte Fahrstraße vorzeitig aktiviert wird. Bei fs.autoActivate = true fs.active = true habe ich das erwartete Verhalten. Viele Grüße Magnetilo
  17. Was ist der Unterschied zwischen fs.active = true fs.autoActivate = true und fs.autoActivate = true fs.active = true Nur letzteres funktioniert bei mir wie gewünscht. Im ersten Fall wird zusätzlich eine zuletzt gefahre Fahrstraße wieder aktiv.
  18. Vielen Dank an alle. Ich habe nun den finalen Code mit einer kleinen Änderung, die sich beim Testen ergab (Autoaktivierung) in einen separaten Eintrag geposted.
  19. Folgendes Skriptmodul dient zur Steuerung einer Ausfahrt aus einem Bahnhof von einem zufälligem Gleis bzw. Einfahrt in Bahnhof auf ein zufälliges freies Gleis. 1. Definiere Fahrstraßen mit Schlagwort "Ausf_lks" bzw. "Einf_lks" von jedem Gleis im Schattenbahnhof bis zum ersten Signal 2. Aktionen im Trigger (beispielsweise Zug fährt ein, Taster oder Timer): ausfahrt("Ausf_lks") bzw. einfahrt("Einf_lks") 3. Code im Modul function ausfahrt(fskeyword) local routes = { } -- alle passenden Fahrstraßen zusammentragen local fs=layout:getRoutesByKeyword(fskeyword) for k,f in ipairs(fs) do print("Fahrstraße "..f.name.." gefunden!") -- print("Erstes Gleis: "..f.tracks[1].name) -- steht ein Zug bereit? if #layout:getVehiclesOn(f.tracks[1]) > 0 then table.insert(routes, f) end end -- zufällige Fahrstraße auswählen local random_number = math.random(#routes) local random_route = routes[random_number] random_route.active = true -- bestehende Aktivierung aufrecht erhalten random_route.autoActivate = true print("Funktion Ausfahrt hat Fahrstraße "..random_route.name.." aktiviert") end function einfahrt(fskeyword) local routes = { } -- alle passenden Fahrstraßen zusammentragen local fs=layout:getRoutesByKeyword(fskeyword) for k,f in ipairs(fs) do print("Fahrstraße "..f.name.." gefunden!") -- print("Letztes Gleis: "..f.tracks[#route.tracks].name) -- freies Gleis? if #layout:getVehiclesOn(f.tracks[#route.tracks]) = 0 then table.insert(routes, f) end end -- zufällige Fahrstraße auswählen local random_number = math.random(#routes) local random_route = routes[random_number] random_route.active = true -- bestehende Aktivierung aufrecht erhalten random_route.autoActivate = true print("Funktion Einfahrt hat Fahrstraße "..random_route.name.." aktiviert") end Idee von Ruud Boer für EEP, Umsetzung für 3D-Modellbahnstudio ist von mir. Viel Spaß damit!
  20. Und noch eine zweite Lösung mit einem etwas anderem Ansatz: 1. Definiere Fahrstraßen mit Schlagwort "2_Ausf_lks" von jedem Gleis im Schattenbahnhof bis zum ersten Signal 2. Aktionen im Trigger (hier für 3 Gleise) ausfahrt("2_Ausf_lks") 3. Code im Modul function ausfahrt(fskeyword) local routes = { } local fs=layout:getRoutesByKeyword(fskeyword) for k,f in ipairs(fs) do print("Fahrstraße "..f.name.." gefunden!") print("Erstes Gleis: "..f.tracks[1].name) if #layout:getVehiclesOn(f.tracks[1]) > 0 then table.insert(routes, f) end -- Gleis belegt? end local random_number = math.random(#routes) local random_route = routes[random_number] random_route.active = true print("Funktion Ausfahrt hat Fahrstraße "..random_route.name.." aktiviert") end Vielleicht sogar einfacher und eleganter?! Trotzdem komisch, dass man Fahrstraßen nicht mit dem Namen ansprechen kann. Und warum über Schlagwort und nicht über Kategorie?
  21. Hallo @Goetz, das Ansprechen der Fahrstraße mit ihrem Namen war für mich einfach der intuitive Ansatz. Genauso mache ich das ja auch mit Gleisen, Signalen, Gleiskontakten usw. Das konkrete Problem war: Ausfahrt von einem Schattenbahnhof von einem zufälligem Gleis 1. Definiere Fahrstraßen mit Schlagwort "Route" von jedem Gleis im Schattenbahnhof bis zum ersten Signal 2. Aktionen im Trigger (hier für 3 Gleise) local items = { {["gleis"]="2_Sgl_lks_1", ["route"]="N1-S1" }, {["gleis"]="2_Sgl_lks_2", ["route"]="N2-S1" }, {["gleis"]="2_Sgl_lks_3", ["route"]="N3-S1" }, } ausfahrt(items) 3. Code im Modul function ausfahrt(arr) local routes = { } for k,v in pairs(arr) do if #layout:getVehiclesOn(layout:getEntityByName(v.gleis)) > 0 then table.insert(routes, v.route) end -- Gleis belegt? end local random_number = math.random(#routes) local random_route = routes[random_number] setRouteActive(random_route) print("Funktion Ausfahrt hat Fahrstraße "..random_route.." aktiviert") end function setRouteActive(name) local fs=layout:getRoutesByKeyword("Route")-- Fahrstraßen mit Schlagwort "Route" einlesen for k,f in ipairs(fs) do -- Für alle Fahrstraßen... if f.name==name then f.active = true end end end
  22. Hallo @Goetz, vielen Dank für Deine Hilfe. Dein erstes Skript würde gut passen, erzeugt aber leider eine Fehlermeldung: unexpected symbol near "$" Soweit ich verstehe, funktioniert $ nicht mit Variablen. PS: Das Schlagwort benutze ich momentan nur, weil es anders nicht geht. Brauche ich aber eigentlich nicht.
  23. Hallo @Goetz, durch die Fahrstraßen vereinfacht sich mein Problem drastisch. Das Ganze lässt sich nun mit ein paar Zeilen Code realisieren. Unschlüssig bin ich noch beim Aktivieren von Fahrstraßen. Ist dies so guter Code? function setRouteActive(name) local fs=layout:getRoutesByKeyword("Route")-- Fahrstraßen mit Schlagwort "Route" einlesen for k,f in ipairs(fs) do -- Für alle Fahrstraßen... if f.name==name then f.active = true end end end Ich spreche die Fahrstraßen über den Namen an. Wann würde man ein Schlagwort und wann eine Kategorie setzen?
  24. Hallo @Goetz, vielen Dank für die Links. Ich brauche jetzt mal ein bisschen Pause nachdem ich ewig über einer Steuerung gesessen habe, die nicht funktioniert hat. Ursache war dann die fälschliche Benamung der Geraden, statt der Weiche daneben. Liebe Grüße Magnetilo
×
×
  • Neu erstellen...