Posts by Benny (BH2)

    Um einen Resourcen-Ordner zu erstellen, der nur die Grundmodelle von EEP15 enthält, kannst du den ResourcenKopierer von meiner Homepage benutzen.


    Deinen ersten Beitrag habe ich aber eher so verstanden, als wolltest du eine Kopie deines aktuellen Resourcenordners, minus die veralteten Modelle.

    Dazu frage ich einfach mal: Wieso? Welchen Vorteil erhoffst du dir davon? Die veralteten Modelle werden dir in EEP standardmäßig eh nicht angezeigt.


    Viele Grüße

    Benny

    es werden auch Modelle [bei "zuletzt installierte Modelle"] angezeigt die ich eigentlich schon habe. Sind die modifiziert?

    Vermutlich nicht.

    Auch wenn du sie schon zuvor installiert hattest, werden die mitgelieferten Modelle nochmal installiert (und je nach Zeitstempel überschrieben oder nicht), und gelten dann als "zuletzt installiert".

    In EEP 6 musst du für Splines nicht neu scannen, sondern EEP neu starten.

    Hast du das auch gemacht?

    Sonst fällt mir nichts ein, woran es liegen könnte.

    Bisher hat sich auch niemand beschwert (damit will ich nicht sagen, dass dein Problem nicht existiert, sondern nur, dass es kein generelles Problem ist)


    Viele Grüße

    Benny

    Hallo Botho,

    ich denke, die Schrebergärten würden noch besser aussehen, wenn der vordere Zaun dem gebogenen Straßenverlauf folgen würde.


    Aber auch so gefallen mir die Schrebergärten (genau wie die restliche Anlage) schon sehr gut! :bp_1:


    Viele Grüße

    Benny

    "Kann ihn nicht setzen" ist keine sehr genaue Fehlerbeschreibung, da kann ich leider nicht helfen.

    Ich weiß nur, dass die Gleismauern selbst (beim Grasspline bin ich mir nicht sicher) schon erfolgreich in konvertierter Form in Shop-Anlagen eingesetzt wurden.

    Prinzipiell ist es also möglich.


    Meine Splines haben offizielle IDs, da sollte es also keine Probleme mit Doppelbelegungen geben.


    Viele Grüße

    Benny

    Allerdings musst Du so wie Du es handhabst, für alle Objekte jeweils eine komplette Tabelle neu anlegen.

    Richtig. Das ist aber auch genau der Grund, warum es funktioniert. Das Problem von Götz war ja, dass alle Tabellen "heimlich" auf die gleiche Tabelle zugegriffen haben, und somit die Änderung eines Objekts alle anderen Objekte mitgeändert hat.


    Mit dem Ändern des Elternelements kann man natürlich auch rasch alle Kindelemente ändern. Wenn man weis, was man tut, ist das eine feine Sache.

    Ich habe bisher noch nicht erlebt, dass man zur Laufzeit des Programms sowas global ändern will.

    Wenn man einen Bug entdeckt oder den Default-Wert ändern will, kann man das auch mit meiner Lösung zentral an einer Stelle tun.


    Ich will die metatables nicht verteufeln. Für manche Dinge (insbesondere solche, die sich nicht ändern), sind sie sinnvoll.

    Für Werte, die sich ändern können (die ich nur mit einem Default-Wert belegen will), ziehe ich aber die Konstruktor-Funktion vor. Man kann natürlich auch beides kombinieren:


    Den zusätzlichen (geringen) Speicherbedarf betrachte ich als gute Investition, wenn dadurch schwer zu findende Probleme vermieden werden.


    Viele Grüße

    Benny

    Die Metatabelle selbst wird ja nicht überschrieben. Aber wenn in der Metatabelle eine weitere Tabelle gespeichert ist, kann diese Tabelle geändert werden.


    Man kann schon verhindern, dass neue Tabellenplätze angelegt werden, die es vorher nicht gab. Dann könnte man aber gar nichts mehr machen, weil in der originalen Tabelle gar kein Tabellenplatz existiert (weil alles in der Metatable steht).


    Ich weiß nicht genau, was du in dem Zusammenhang mit Vererbung meinst, aber mit meiner Methode ist der Code genauso schlank.


    Zum Vergleich, was ich meine (keine Garantie für korrekte Syntax):



    Viele Grüße

    Benny

    Um das Problem zu sehen, ist vielleicht ein tieferes Verständnis hilfreich von dem, was wirklich abgeht.

    Ich hoffe, dass das folgende wirklich stimmt. Ich kann es gerade leider nicht ausprobieren.


    Die Zeile, die hier Probleme macht, sieht vermutlich etwa so aus:

    Tabelle[a][b] = c

    Mit fiktiven get- und set-Funktionen würde das so aussehen:

    Tabelle:get(a):set(b, c)

    Also: Erst wird der Tabellenplatz a der Tabelle herausgesucht. Weil in Tabelle selbst kein a definiert ist, wird in der metatable nachgeschaut. Dort ist unter a eine weitere Tabelle gespeichert. Und in diese weitere Tabelle wird nun an die Stelle b der Wert c hineingeschrieben.

    Und damit haben wir die Tabelle verändert, die in der metatable drinsteht, wodurch auch alle anderen Tabellen, die auf diese metatable zugreifen, die geänderten Werte sehen.


    Ich kann mich daran erinnern, dass ich vor langer Zeit mal in ähnliche Probleme gelaufen bin. Deshalb bin ich von metatables wieder abgekommen, und schreibe lieber eine Funktion, die mir eine neue Tabelle erzeugt und mit den gewünschten Default-Werten bestückt.

    Metatables würde ich höchstens für Dinge wie Funktionen nutzen, die nicht überschrieben werden. Auf keinen Fall für verschachtelte Tabellen, deren Werte geändert werden.


    Viele Grüße

    Benny

    Mir fallen gleich drei mögliche Ansätze ein.

    Allen ist gemein, dass ein Auto dann auf die linke Spur geschickt wird, wenn der Abstand zum davor fahrenden Auto zu klein ist. Aber was heißt zu klein? Mir fallen drei Möglichkeiten ein:

    1. Ein konstanter Wert, z.B. 60m wie in deinem Beispiel
    2. Ein Wert, der von der Geschwindigkeit des aktuellen Autos abhängt (je schneller man fährt, desto größer soll der Abstand zum Vordermann sein. Die Faustregel, die ich in der Fahrschule gelernt habe, lautet "halber Tacho")
    3. Ein Wert, der von der Geschwindigkeitsdifferenz beider Autos abhängt, also berechnet, wann der hintere auf den vorderen Wagen auffahren würde (bzw. wann er bremsen müsste). Wenn mein Vordermann nur einen km/h langsamer fährt als ich, muss ich bei 100m Abstand noch nicht überholen. Wenn mein Vordermann aber nur halb so schnell fährt, werde ich zumindest bald überholen müssen.

    Letztendlich gilt das, was ich fast immer sage: Ja, es geht bestimmt. Aber erstmal musst du dir genau klar werden, was du eigentlich willst. Also nach welchen Kriterien was passieren soll.


    Viele Grüße

    Benny