Jump to content

Goetz

Mitglieder
  • Gesamte Inhalte

    5806
  • Benutzer seit

  • Letzter Besuch

Alle erstellten Inhalte von Goetz

  1. Meine Vermutung ist, dass du den Youtube Link an unterschiedlichen Stellen kopiert hast. Je nachdem, wo du ihn hernimmst, hast du entweder die youtu.be oder die youtube.com Adresse bekommen. Fällt nicht auf, wenn man nicht darauf achtet. (sorry für die Themenabweichung)
  2. Das liegt erstens an der Schreibweise der Adresse - youtu.be wird nicht eingebettet. und zweitens kann man als Ersteller eines Videos das Einbetten erlauben/verweigern.
  3. Ich bin felsenfest überzeugt: Wer auf so kreative Weise einen Vogel dazu bringen kann mit den Flügeln zu schlagen wie du, Koriander, der kann auch einen solchen Vogel in Blender bauen und richtig animieren.
  4. Okay. In Lua kann ein Tabellenfeld entweder durch eine Nummer oder durch einen Namen identifiziert sein. Beides schreibt man in eckige Klammern. Eine Zahl ist in diesem Fall eindeutig erkennbar. Aber Namen muss Lua von Variablen unterscheiden können. Deshalb muss man Namen als String angeben. Weißt du, was ein String ist? Tabelle ["x"] ist das Feld mit Namen x in der Tabelle. Tabelle[x] sucht nach einer Variablen namens x um ihren Inhalt (Zahl oder String) als Bezeichner für das Feld zu verwenden for x = 1, 10 do print(Tabelle[x]) end gibt nacheinander alle Felder der Tabelle von 1 bis 10 aus. Der Bezeichner hinter einem Punkt ist eine alternative, vereinfachte Schreibweise. Tabelle.x bedeutet also dasselbe wie Tabelle["x"] Die vereinfachte Schreibweise erlaubt keine Sonderzeichen, Leerzeichen, Satzzeichen etc. im Namen. Und (wichtiger noch!) sie erlaubt keine Variablen, welche die Bezeichner enthalten. Deshalb gibt es in Lua beide Schreibweisen. Bitte frag, wenn dir solche Dinge unklar sind. Man kann sich unmöglich alles merken. Erst recht nicht, wenn einem die Zusammenhänge fehlen. Programmiersprachen kann man nur lernen, indem man ihre Mechanismen versteht.
  5. Wenn man sie zur Verfügung hat. Hast du da eine gute Quelle parat?
  6. Hast du denn nur mit Freude festgestellt, dass es funktioniert? Oder hast du auch verstanden, warum es so (und nur so) funktioniert?
  7. x ist ein Bezeichner und somit ein String. Außerdem ist es ein kleines x Diese beiden Schreibweisen funktionieren: local l = $("Gleis01").size["x"] local l = $("Gleis01").size.x
  8. Dann nimm doch auch gleich diese "Objektsuche per Namen" aus den einzelnen Ereignissen. Das ist doch Unsinn die immer wieder neu anzustoßen, wenn sie sich nie ändert. Geh im Basisskript hin und such beim Start einmal zu jedem STOP Kontakt das zugehörige Signal (per Namen) . Das gefundene Objekt speicherst du in einer Variablen im Kontakt. Dann kannst du im Betrieb direkt auf diese Variable zugreifen.
  9. So viel kann ich bislang (nach einem ersten ernsthaften Probelauf) sagen: Zweimal ist der Betrieb aus dem Ruder gelaufen und in beiden Fällen war der Grund identisch. Im Signal FSSig0010 war der benötigte Eintrag für den Zug leer. Ich habe die Testläufe im Video aufgezeichnet und dabei das Ereignsprotokoll neben der Anlage geöffnet. So konnte ich die Fehlermeldung sehen, dass beim verzögerten Aufruf von "Ein Signal mit Schlagwort BREMSSIGNAL schaltet" in Zeile 7 des Skripts ein leerer Index das Problem verursacht hat. Im Protokoll sah ich, dass Signal 10 das angesprochene Signal war. Beim zweiten Testlauf habe ich daher die Variablen von Signal 10 anzeigen lassen. Es dauerte diesmal wesentlich länger, bis derselbe Fehler auftrat. Aber der Fehler war dann identisch. Es gibt offenbar eine Konstellation, in der der Zugname im Signal 10 vorzeitig gelöscht wird. Ob ich mittels Aufzeichnung herausfinde, was genau diese Konstellation ist, muss ich schauen. Generell sind solche Aufzeichnungen sehr hilfreich, weil man so ein "was bisher geschah" verfügbar hat. (Aber da sage ich dir nichts Neues ) Anlagen schalten im Fehlerfall übrigens nur dann auf Pause, wenn das Ereignisprotokoll sichtbar ist. Andernfalls geht der Betrieb weiter, aber vermutlich unter falschen Bedingungen, weil der Rest des Fehler-verursachenden Skripts nicht mehr ausgeführt wurde. Ohne Ereignisprotokoll sieht man also möglicherweise nicht den eigentlichen Fehler, sondern Spätfolgen an anderer Stelle.
  10. Goetz

    Neue kleine Anlage

    Klein, aber stilvoll
  11. Jetzt habe ich mir das Beispiel angesehen und ich finde deinen Weg prima. Das ist eine saubere und verständliche Lösung Und die Anlage ist ein gutes Beispiel dafür, warum sich ein Umstieg auf V5 lohnt.
  12. Niemand "fordert", Feuerfighter. Man gibt dir Tipps. Mehr nicht. Warum reagierst du darauf so überempfindlich? Du musst nichts an deinen Modellen ändern. Aber du kannst, wenn du magst.
  13. Das glaube ich in diesem Fall weniger, FeuerFighter. Drei Reihen Ziegel unter dem Fenstersims sind zu wenig. Das ist keine Geschmacksfrage sondern eine Frage der richtigen Abmessungen. So ein Ziegelstein ist in der Regel ca. 7 Zentimeter hoch. Aber es ist natürlich Geschmacksache (und somit dir überlassen) ob man realistische Proportionen anstrebt oder nicht. Und die Hinweise sollten kein Grund für dich sein, dich mit dem Modellbau zurückzuhalten. Deine Modelle kommen doch gut an und sind populär. Nimm sie als nützliche Tipps an und entscheide dann für dich, ob du sie anwenden willst oder nicht.
  14. Goetz

    Digi's Kompakte

    kann ich nicht entdecken. Aber eine ungewöhnliche Anlage
  15. Vertrau mir, Thomas. Die einzelne Zeile, welche ich dir als Alternative genannt habe, macht genau dasselbe.
  16. statt == nil nimm not local route=vehicle.variables["route"] if not fsignal.variables["R_Alle"] then fsrouten=fsignal.variables[route] else fsrouten=fsignal.variables["R_Alle"] end Aber das geht noch viel schicker: fsrouten = fsignal.variables["R_Alle"] or vehicle.variables["route"] fertig. Das nimmt "R_Alle", wenn es existiert und ansonsten "route"
  17. Da hast du einen Dreher drin. Wenn deine Liste ungleich nil ist, also existiert, dann nimmst du die Route. Existiert sie hingegen nicht, dann nimmst du die Liste Schmeiß den Vergleich ganz raus. Der ist eh überflüssig.
  18. Mit if if Liste1 then print("Die Liste existiert, kann aber leer sein") else print("Liste? Ich weiß von keiner Liste! Wer soll das sein?") end
  19. Wenn die Liste existiert? Oder wenn Elemente in der Liste existieren? Das ist nämlich nicht dasselbe. Wenn du T1 und T2 löscht, dann existiert Liste1 als leere Liste. Willst du (in dem Glauben, alles sei vorhanden) auf T1 zugreifen, dann bekommst du die Fehlermeldung, dass dieses Feld nicht existiert.
  20. Dafür habe ich sehr viel Verständnis, Kutscher. Und du hast meine Hochachtung, weil du dich in deinem Alter weiter darum bemühst, solche Dinge zu lernen. Meine Hinweise waren nicht böse gemeint. Ich hoffe, dass du sie nicht als "Schimpf" empfunden hast. Ich möchte dich nur vor weiterem Frust bewahren. Das Lernen fällt schwerer, wenn man bei den eigenen Versuchen über solche "Unsauberkeiten" stolpert. Weil es nur schwer auseinanderzuhalten ist, ob man etwas falsch verstanden hat oder nur bei der Umsetzung unachtsam war.
  21. Nach einem ersten Blick in die EV möchte ich meinen Rat wiederholen: Beginne mit einem Oval, an dem nur ein Signal steht. Und sonst nichts! In deinem Bahnhof Daudieck liegt ein Gleiskontakt mit Namen "Gleiskontakt stop Daudiek N". Soweit, so gut. Zu diesem Kontakt hast du ein Ereignis namens "Wiedmarschen" in deiner EV. Und in diesem Ereignis speicherst du den Zug, der den Kontakt in Daudieck überfährt, in einem Signal, welches in "Wiedmarschen" steht. Also weit weg, auf der gegenüberliegenden Seite der Anlage. Hier ist der EV Eintrag. Oben habe ich die beiden relevanten Hinweise eingerahmt. Im weiteren Verlauf hat die EV noch mehr Einträge, die unsinnig sind. "Fahrzeuggeschwindigkeit setzen" ist doppelt vorhanden. Einmal stoppt es alle Fahrzeuge auf der Anlage. Und einmal stoppt es nur das Fahrzeug, welches über den Kontakt gefahren ist. Der nachfolgende "Animation abspielen" Eintrag hat kein Zielobjekt und keine Animation. An der Stelle steigt die EV dann aus und führt die nachfolgenden Befehle nicht mehr aus. Die anschließende Verzögerung wird also nie gestartet. Deshalb kann dein Zug nicht wieder losfahren. Aber wenn sie gestartet würde, dann kämen darunter weitere Einträge, die "leer" sind. Das sind keine Folgen von Verständnisproblemen, Kutscher. Das ist einfach nur sehr unordentlich. Sorry, wenn ich dir das so unverblümt sage. Deshalb rate ich zum kleinen Oval mit nur einem Signal. Weil du dann nicht so leicht an solcher Unordnung scheiterst. Weil du die EV dann besser konzentriert angehen kannst.
  22. Okay, dann schau ich mir heute mal die richtige an.
  23. Ich hab jetzt erst im zweiten Anlauf gesehen, dass das Signal "Hauptsignal 1" ... ... zu einem halbfertigen Oval gehört, welches unter den beiden Modulen Aheim und Bedorf hindurch läuft. Das Signal "Ausfahrt Süd" hast du zwischen den Modulen Aheim und Bedorf aufgestellt Wozu soll es an dieser Stelle dienen? Dort stehen doch schon zwei Signale. Und wozu schwebt die kleine Dampflok über deinem Hauptsignal in der Luft? Warum speicherst du den Zug, der einen Kontakt in Aheim überfährt, im Signal unten auf dem kleinen (unfertigen) Oval? Sorry, Kutscher, aber du musst bitte erst einmal aufräumen. Und dann klar sagen, was du genau erreichen willst. So hat niemand eine Chance dir zu helfen.
  24. Du hast so viele Signale auf dieser kleinen Anlage, dass du sie leider an manchen Stellen in deiner EV verwechselst. Den Zug speicherst du in "Hauptsignal 1". Aber die Ausfahrt bestimmst du mit dem Signal "Ausfahrt Süd". Und in diesem Signal suchst du dann auch den Zug. Aber da steht er nicht drin. Ich möchte dir empfehlen, das Prinzip zuerst mit einem einzigen Signal an einem Oval (ohne Bahnhof) auszuprobieren. Dann kannst du dich darauf konzentrieren die richtige Methode zu lernen und musst nicht frustriert aufgeben, nur weil du zwei Signale verwechselt hast. Du hast mit Aheim und Bedorf zu viele Baustellen auf einmal.
  25. Ne, du hattest im Kontakt Stop0003 die Variable "signal" falsch benannt. Der hat stattdessen ein "o_signal" Das Schlagwort "Stop" war kein Hindernis. Der Kontakt wurde ja trotzdem erkannt und die EV hat reagiert. Um Groß/klein zu korrigieren, mach einen Zwischenschritt: Lösch einen Buchstaben. Oder füge einen hinzu. Und Schlagworte sowie Variablennamen immer aus der Auswahlliste nehmen! Dann sind Schreibfehler ausgeschlossen.
×
×
  • Neu erstellen...