Alle erstellten Inhalte von Goetz
-
Versuche MBS-V5 von EASY
Na klar kannst du das beheben - das hatte ich bei dir auch nicht anders erwartet. Gute Idee mit der "vorne" Markierung. Ein weniger deutlicher, aber ebenso zuverlässiger Indikator ist die weiße Fensterscheibe vom Abort.
-
Modelle von fex
ist die B-Säule Das Bild erweckt in mir den Eindruck, dass die Proportionen insgesamt eher freihändig und freizügig gewählt wurden und nicht nach Originalmaßen. Wobei man sich auch fragen muss: Welche Originalmaße? Es gab mehrere Mercedes mit Heckflosse
-
Versuche MBS-V5 von EASY
Feine Sache, Easy. Sehr schlau, dass du die Geschwindigkeit zuerst von km/h in m/s umformst. Deshalb bekommst du vernünftige Werte für den Bremsweg, wo ich nur mit Fantasiezahlen hantiere. Den absoluten Wert brauchst du in diesem Fall zwar nicht, weil du den Wert anschließend eh quadrierst. Aber es schadet auch nicht. Mit oder ohne math.abs() stoppt der Zug aber falsch, wenn du den Triebwagen vorne umkehrst und mit negativer Geschwindigkeit über den Kontakt fährst. Denn mit gedrehtem Triebwagen werden die Elemente des Zugverbands in umgekehrter Reihenfolge gelistet. Mir ist das nur aufgefallen, weil ich testen wollte ob man auf math.abs() verzichten könnte oder nicht. Deine Schleife zum Sammeln der Waggonlängen ist übrigens ein schönes Beispiel für die spezielle in ipairs() Funktion, die Lua anbietet. for k, v in ipairs(g) do l[k] = v.length if v.name == "WagenHalt" then hpos = k end end k und v (für "key" und "value") bekommen den Index und den Inhalt einer Zelle. Das k ist also dein i und v ist dein g[ i ]. Im Grunde ist es nur eine andere Schreibweise für dein for i = 1, #g do Interessanter wird es, wenn deine Tabelle namentliche Indexe enthält. Dann musst du das i von ipairs weglassen (weil es für iterator steht). Mit k, v in pairs(Tabelle) do bekommst du die Namen und Inhalte aller Zellen paarweise. Und diese Wertepaare kannst du ohne in pairs nur sehr schwer auslesen. Drum lohnt es sich meines Erachtens, dieses in pairs bzw. in ipairs kennenzulernen. Gruß Götz
-
forum schrift wird immer kleiner
Ein einfaches "Danke" tut es auch, Schlagerfuzzi.
-
forum schrift wird immer kleiner
Mit gedrückter Strg-Taste und dem Mausrad kannst du die Schriftgröße in deinem Browser für alle Websites verändern. Ist dir da vielleicht aus Versehen beim Scrollen passiert? Und irgendwo in den Optionen gibt es dafür auch eine % Angabe, wenn du wieder auf 100% zurück möchtest. Beim Edge Browser von Microsoft (Standard bei Windows 10) findest du die Einstellung oben rechts bei den drei Pünktchen.
-
Aufbau einer ersten Anlage mit Hang zur Weiterentwicklung
Ganz bestimmt geht Sbf - so, wie bei der realen Bahn der Rangierbahnhof ja auch mit Rbf abgekürzt wird und der Güterbahnhof mit Gbf
-
Aufbau einer ersten Anlage mit Hang zur Weiterentwicklung
Im realen Maßstab stehen Vorsignale auf Hauptstrecken ca. 1 Meter vor dem Hauptsignal. Und bei diesen Größenordnungen stehen Block- und Streckensignale oft 2 km und mehr auseinander. Wenn du das jetzt auf deine Größenverhältnisse umdenkst, dann sind die Vorsignale etwa auf halber Strecke zwischen dem vorherigen und dem folgenden Hauptsignal gut aufgehoben. Es sei denn, dass der Abstand zwischen zwei Hauptsignalen klein ist (wie rechts unten auf deiner Anlage zwischen Einmündung und Einfahrt in den Bahnhof). Da kannst du auf ein Vorsignal ganz verzichten. Direkt vor einem Hauptsignal stehen die Vorsignale übrigens nur in besonderen Fällen. Und dann wird die Schaltung kompliziert, weil diese Vorsignale nicht "Fahrt" zeigen dürfen, wenn das Hauptsignal am selben Platz "Halt" zeigt. Weil man keine zwei widersprüchlichen Aussagen am selben Signalort haben will. Du verzichtest also anfangs besser auf diese spezielle Kombination von Vor- und Hauptsignal am selben Ort.
-
Gleiskontakt - Bug oder zukünftiges Feature
-
Gleiskontakt - Bug oder zukünftiges Feature
Da das angesprochene Bild fehlt, kann ich nur raten: Weil dir nur motorisierte Fahrzeuge angeboten werden. Denn nur die motorisierten Fahrzeuge können meines Wissens einen Kontakt auslösen. Um einen Kontakt auszulösen, muss das Fahrzeug nämlich drüber fahren. Und das kann es nur mit Motor.
-
Aufbau einer ersten Anlage mit Hang zur Weiterentwicklung
Es gibt kein Signal, dass nicht an ein Stellwerk angeschlossen ist. Jeder Streckenabschnitt wird von mindestens einem Stellwerk überwacht. Stellwerke müssen nicht zwingend in einem Bahnhof stehen. Weichen sind ebenfalls alle an Stellwerke angeschlossen, mit Ausnahme von Handweichen (die einen großen Hebel mit Gewicht daran besitzen). Solche Handweichen werden oftmals mit einem Schloss gesichert und so kann durch die Schlüsselübergabe garantiert werden, dass die Weiche nur dann umgelegt wird, wenn es wirklich zulässig ist. Die Aufsicht über solch einen Schlüssel hat dann ebenfalls ein Fahrdienstleiter. Er überwacht also auch die Weichen, welche im Handbetrieb bedient werden.
-
Aufbau einer ersten Anlage mit Hang zur Weiterentwicklung
Finde ich gut. Ich habe es auch durch die Beschäftigung mit Programmen wie dem 3D MBS gelernt (und lerne noch immer) Die Fahrpläne gibt es, aber sie schalten nichts selbständig. Sondern Fahrdienstleiter regeln den gesamten Verkehr an jedem Punkt. Sie richten sich dabei nach den Fahrplänen. Sie wissen anhand der Pläne, wer wann wo zu erwarten ist. Und sie überblicken ständig, wer sich gerade wo befindet. Außerdem stehen sie per Funk mit den Lokführern in Verbindung und geben Anweisungen. Fahrdienstleiter greifen also nicht nur in Ausnahmefällen ein, sondern steuern ständig alles. Wie ein Dirigent.
-
Aufbau einer ersten Anlage mit Hang zur Weiterentwicklung
Es geht weniger um die späte Sicht als vielmehr um den Bremsweg. Wenn der Zugführer die Stellung des Hauptsignals erkennen kann, dann ist es - auch auf gerader Strecke und bei guter Sicht - zum Bremsen viel zu spät. Das Vorsignal sagt also "Brems!" und das Hauptsignal sagt nur noch "und warte hier, bis du weiter darfst." Der typische reale Abstand des Vorsignals zum Hauptsignal beträgt meist 800 bis 1000 Meter (= 1 Kilometer). "Notlösungen" wie einen Rechts-vor-Links-Verkehr oder andere Vorfahrtregeln gibt es bei der Bahn nicht. Niemand fährt ohne explizite Erlaubnis irgendwo hin. Nur so kann Sicherheit gewährleistet werden.
-
Aufbau einer ersten Anlage mit Hang zur Weiterentwicklung
Ich denke, dass streit_ross da nur das Verhalten auf seiner Anlage beschreiben wollte und nicht die Regeln bei der realen Bahn. Vorfahrtregeln kann es bei der Bahn natürlich nicht geben, wie Andy ganz richtig sagt. Aber Engpässe gibt es ständig und dann hängt es vermutlich von den örtlichen Gegebenheiten und weiteren Faktoren ab, wen der Fahrdienstleiter zuerst durchlässt. Folgt kurz hinter der Einmündung ein Haltepunkt, dann kann es sinnvoll sein den Güterzug vorzulassen, weil der diesen Haltepunkt durchfährt, der Personenzug hingegen nicht. Ist der Personenzug aber ein Schnellzug, der den Haltepunkt ebenfalls ohne Stopp passiert, dann wird man ihm vielleicht den Vorzug geben. Im Modellbahn Studio regeln viele User den Verkehr durch Einträge in der Ereignisverwaltung. Und wenn man die Abläufe so automatisiert, dann muss man selbst Regeln festlegen, nach denen entschieden wird. Solch eine Regel hat streit_ross für sich entworfen und auf die bezieht sich seine Aussage.
-
inspirierende Videos
Reale Bahnfahrten mit Lokführer-Perspektive finde ich inspirierend. Man sieht zum Beispiel, wie sich Gleise zum Bahnhof hin auffächern, wo welche Signale stehen, wie Oberleitungen aufgespannt sind, was typischerweise links und rechts neben Bahnstrecken angesiedelt ist und vielerlei mehr. Mein besonderer Favorit bei YouTube nennt sich Ananas747. Er zeigt viel Geschick beim Umgang mit seiner Videokamera und bietet oft sehenswert gute Aufnahmen. Drum wollte ich hier gerne auf seinen Kanal aufmerksam machen. Ich hoffe, das ist okay?
-
Neue Beta-Version V5
@Andy Alle Skripte, die direkt im Hauptmodul oder einem der Untermodule angelegt sind, werden gleich nach dem Start der EV einmal komplett abgearbeitet. @Neo Zu diesem Zeitpunkt stehen die Library Funktionen von Lua noch nicht zur Verfügung. Beispielsweise führt ein print() oder ein layout:getEntityByName() im Skript zu der Fehlermeldung, dass diese globale Funktion nicht definiert sei. Somit akzeptieren diese Skripte auch noch keine Objekte. Ein $("Dingsbums") liefert nil zurück. Ich kann also eine Tabelle Dinge = { "Dings 1", "Dings 2", "Dings 3", "Dings 4" } im Hauptskript anlegen und sie steht mir anschließend zur Verfügung. Aber eine Tabelle Dinge = { $("Dings 1"), $("Dings 2"), $("Dings 3"), $("Dings 4") } bleibt leer, weil die Funktion $() zu diesem Zeitpunkt noch nichts zurück gibt.
-
Erste Versuche mit V5
Das halte ich - anders als Tom - für den besseren Weg. Es ist wie beim Erlernen von Sprachen. Die ständige Übersetzerei wird schnell zum Hindernis. Die Muttersprache hat man auch nicht mit einem Vokabelheft gelernt sondern dadurch, dass man sie unvoreingenommen benutzt hat. Erst im Kleinen und dann in zunehmend komplexeren Zusammenhängen. Durch Probieren, Aufnahme von Hinweise zu Verbesserungsmöglichkeiten, Mut zur Lücke und vor allen Dingen viel Freude an jedem kleinen Erfolg! Das ist die Methode, mit der Kinder so bewundernswert schnell und gut lernen.
-
Lua-Tables in V5
Ich weiß es ehrlich nicht, aber meine Vermutung ist, dass es keinen Unterschied macht. Weil eben in einer Tabelle nur Adressen liegen. Da dürfte auch eine Schnitzeljagd über mehrere gestaffelte Adressen keine Belastung darstellen. Auch dann nicht, wenn diese Adressen während des Programmablaufs dynamisch gebildet werden.
-
Lua-Tables in V5
Der Doppelpunkt gibt den Teil links davon als erstes Argument an den Funktionsaufruf, der rechts vom Doppelpunkt steht. Diese Schreibweise ist dann sinnvoll, wenn die Funktion in derselben Tabelle steht wie die Daten, welche die Funktion nutzen soll. Im MBS sind viele Funktionen Teil der jeweiligen Modelle. Ein Riesenrad enthält je eine Funktion play und eine Funktion stop für jede darin verbaute Achse. Deshalb wandelt das MBS diesen Eintrag in der EV in diesen Lua Code um: $("Riesenrad").animations["Rad drehen"]:play(0, 1) Ich habe lediglich in meinem Beispiel den langen Adressteil links vom Doppelpunkt zuerst in einem kurzen Namen zusammengefasst und dann die Funktion aufgerufen. Sonst werden mir die Zeilen zu lang und unleserlich. Die Funktionen play und stop sind im MBS Teil einer Klassendefinition. Deshalb muss man beim Aufruf der Funktionen die Adresse des Objekts und seiner Achse als Argument mit übergeben. Neo hat sich bei solchen Funktionsaufrufen an die in Lua übliche Schreibweise gehalten. Lua kennt zwar keine Klassen, aber die Tabellen kommen dem schon recht nahe.
-
Lua-Tables in V5
Ich würde dir gerne helfen, es zu verstehen. Denn das ist der Zweck, den ich damit verfolge. Ich mag keine langen if-Konstrukte. Ein if ist gut, wenn ich einen ja/nein Fall habe. Aber wenn ich viele mögliche Werte habe, auf die ich unterschiedlich reagieren will, dann klappere ich die nicht gerne mit if-Ketten ab. Insbesondere die Tabellen, die Lua bietet, sind da ein bequemerer Weg. Wenn ich die möglichen Werte, die ich zur Auswahl bekomme, als Tabellenindexe (Indizes?) nutze und unter diesen Adressen das ablege, was ich im Falle des jeweiligen Wertes brauche, dann kann ich den entstandenen Wert direkt nutzen, um aus der Tabelle das passende rauszupicken. Anhand eines Beispiels kann ich es vielleicht besser verdeutlichen. Nehmen wir ein Signal mit vier Stellungen und die Geschwindigkeiten, die der Zug fahren darf: Stellung 0 - HP0 - Geschwindigkeit 0 Stellung 1 - HP1 - Geschwindigkeit 120 (nur für dieses Beispiel. HP1 bedeutet "Fahrt") Stellung 2 - HP2 - Geschwindigkeit 40 Stellung 3 - SH1 - Geschwindigkeit 25 Ich kann jetzt die Stellung auslesen und dann alle Möglichkeiten durchtesten: Stellung = signal.state if Stellung == 0 then vehicle.targetSpeed = 0 elseif Stellung = 1 then vehicle.targetSpeed = 120 elseif Stellung = 2 then vehicle.targetSpeed = 40 elseif Stellung = 3 then vehicle.targetSpeed = 25 end Oder ich weise die Geschwindigkeiten in einer Tabelle den Signalstellungen zu: Stellung = signal.state SpeedTable = { [0] = 0, [1] = 120, [2] = 40, [3] = 25 } vehicle.targetSpeed = SpeedTable[Stellung] Ich benutze hier die Signalstellung als Index, um mir aus der Tabelle den passenden Wert rauszupicken. Die Nummern vorne in den eckigen Klammern wären nicht nötig. Bis auf eine: die Null. Wenn man keinen Index vergibt, dann bekommt das erste Element in einer Tabelle die Nummer 1. Deshalb habe ich die Null in eckige Klammern als Index vorgeben müssen. Und dann habe ich das Prinzip für die übrigen Werte beibehalten. Alternativ ginge es auch so: Stellung = signal.state SpeedTable = {0, 120, 40, 25} vehicle.targetSpeed = SpeedTable[Stellung + 1] aber die erste Form macht deutlicher, was wozu gehört. Man kann dieses Prinzip auf die Spitze treiben, indem man an passenden Stellen keine Werte in der Tabelle ablegt, sondern ganze Funktionen. Lua macht da keinen Unterschied, weil es eigentlich immer nur Pointer sind, die an diesen Stellen liegen. Also Adressen. Ob dann an dieser Adresse eine Zahl, ein Text, eine weitere Tabelle oder eine Funktionsdefinition hinterlegt ist, spielt für den Tabelleneintrag keine Rolle.
-
Lua-Tables in V5
Es ist zwar sicher nicht ganz das, was du damit gemeint hast, aber ich habe eine alternative Version deiner Demo gebaut. Animationstabelle Version Goetz.mbp
-
Video zur EV in V5
Die Anlage aus der gestrigen Sendung (die ich als sogenanntes Highlight dauerhaft bei Twitch gespeichert habe) hänge ich mal hier an. Dann ist sie in diesem Stadium konserviert, auch wenn ich sie demnächst weiterbaue. MaerklinMagazin 2015 5 Bahnhof Trossingen.mbp
-
Video zur EV in V5
Genau - das ist der Fehler, der da bemängelt wird. Eine schließende Klammer fehlt noch. Sehr gut erkannt. Die Anlage, auf die du dich in den Screenshots beziehst, ist schon im Bereich "Entwurf" hochgeladen. Hier ist die Content-ID: 9967751A-FA43-45BE-88AF-B9A0E28E00F9 Die Funktionsweise hast du im Übrigen genau richtig verstanden. Ich habe eine Idee, wie das gehen könnte. Aber ich möchte es erst selbst ausprobieren, bevor ich es hier erläutere.
-
Neue Beta-Version V5
Yes, it does. The translation is literal, to be safe that it stays true to the original. The resulting code cannot be reproduced 1:1 from scratch in V5. And there is no reason why anyone should write new code in this old, cumbersome way when generating a new bit of EV. The effect that the code has can be reproduced perfectly and in a much better (= simpler) form, as Andy has shown. Andy and others are giving their best to achieve just that. You may want to be a bit more grateful for that, even if you don't immediately understand all the answers. Also, please note that we're all still learning. And that this is early on in the beta phase. So nothing's "urgent" yet. Take it easy, André.
-
Neue Beta-Version V5
Try the cog wheel next to the field. If the triggering object can be referenced, you'll find "Trigger" in the context menu attached to that cog.
-
Neue Beta-Version V5
und eine variable Schriftgröße (Strg + Mausrad)