Posts by JuergenSchm

    Hallo S-Bahner ,

    auch ich habe, wie Schmiermax , die Erfahrung gemacht, dass bei meinem, nicht für ein Spiel hochgerüsteten Rechner, das Abschalten der Schatten einiges für die Performance bringt.

    Ich wollte die Schattierung aber nicht ganz abschalten, darum schalte ich gezielt bei bestimmten Modellen die Schattierung aus.

    Z.B. bei Wäldern, Baumgruppen oder Flächen, die sich kaum vom Hinter-/Untergrund abheben.

    Denn da muss gar nicht erst versucht werden, einen Schatten zu berechnen.

    Wie Karl Heinz Dir bereits geraten hat, schau Dir die Frame-Rate bei einem dicht bebauten Anlagenausschnitt an, dann schaltest Du in den Eigenschaften die Schatten aus oder verringerst diese.

    Du siehst an der Änderung der Frame-Rate, welche Auswirkungen dies auf Deinem Rechner hat.

    Hallo Jörg ( Tufftuff ),

    ich wollte mich eigentlich aus diesem Thema raus halten, da Du mich aber zitiert hast, habe ich ein rotes Pünktchen angezeigt bekommen...


    Darum ich doch nochmal ...


    1. Eine als lokal deklarierte Funktion kann nicht in einem Kontaktpunkt aufgerufen werden.

    (kann schon, bringt aber einen Fehler)


    2. Eine lokal deklarierte Variable macht aus keiner globalen Funktion automatisch eine lokale Funktion.

    Was einen eventuellen globalen Aufruf einer Funktion aus der Variablen verhindert, bleibt die lokale Variable.

    (Ich würde Dir ein Beispiel zeigen aber das möchtest Du ja nicht.)

    Ohne dass ich mich zur Notwendigkeit solcher Konstruktionen äußern möchte.


    3. Und was den Index-Fehler der Tabelle "Tueren_Auf_Zu" Beitrag #6 betrifft.

    Ich würde mal überprüfen was in Tueren_Auf_Zu.Tab[] steht bzw. was "gesehen" werden kann.

    In dem konkreten Fall für Gleis 2.

    Hallo Tufftuff ,


    das local bezieht sich nur auf die Variable/Funktion, bei der es angegeben ist.


    In Deinem Beispiel auf die Variable/Tabelle "Abkuppeln".

    Funktionen und andere nicht lokal deklariert Variablen im Modul bleiben global.


    Man könnte aber auch eine Funktion lokal deklarieren

    Code
    1. local function abc()
    2. ...
    3. end


    Die Funktion ist dann nur in dem Block bekannt, in dem sie deklariert wurde.


    Code
    1. if 1 == 1 then
    2. local function abc()
    3. print(1)
    4. end
    5. end
    6. abc()

    Ergibt einen Fehler, da abc() unbekannt ist.


    Code
    1. if 1 == 1 then
    2. local function abc()
    3. print(1)
    4. end
    5. abc()
    6. end

    Ergibt keinen Fehler, da der Aufruf der Funktion abc() im gleichen Block/Modul erfolgte, wie die Deklaration.

    Hallo Silberstern ,

    dieser Fehler hat nichts direkt mit der Anlagengröße zu tun.

    Höchstens, dass das Beenden bei größeren Anlagen länger dauert und man beim Beenden zwischenzeitlich etwas anderes in Windows macht und damit eines der offenen EEP-Fenster wohl den Fokus verliert und das Programm "hängen bleibt".

    Du hast ja die anderen Themen, die sich mit diesem Problem bereits befasst haben, bereits gefunden.


    Wie in den Lösungen beschrieben, aktiviere das EEP-Fenster wieder durch einen Klick in dieses und drücke Alt+F4, danach kannst Du EEP ordnungsgemäß beenden.

    Hallo AdvEe ,

    auch wenn für Dich, wie für viele andere in der Vergangenheit und auch in der Zukunft, erst eine schmerzliche Datenverlust-Erfahrung nötig war, freue ich mich, Dich ab sofort im Kreis der regelmäßigen Datensicherer begrüßen zu dürfen.


    Und auch unbedingt daran denken.

    Daten können nicht nur in EEP verloren gehen, auch in anderer Software gibt es Daten, die regelmäßig gesichert werden sollten!

    Hallo Mobawe ,


    wenn der erste Straßenbahnzug es schafft, die Weiche rechtzeitig nach rechts zu schalten.

    Warum sollte es dann "Lua-geschwindigkeits-mäßig" der zweite Straba-Zug über einen Kontaktpunkt auf gleicher Position nicht schaffen, die Weiche auf gerade zu schalten?


    Bitte überprüfe nochmals Deine Schaltung.

    Eventuell verhindert eine Bedingung in Lua oder auf der Weiche, dass diese geschaltet wird.

    Hallo,

    der von micky053 geheimgehaltene Trick ist sicherlich der mit dem Registry-Eintrag (oder ?).


    Da würde mich MS auch schwer enttäuschen, wenn sich die Maßnahme zur Umsatzförderung so einfach dauerhaft aushebeln ließe.

    Hallo Silberstern ,


    schön, dass das Script nun so funktioniert, wie Du das möchtest.


    Ja, die automatische Freigabe einer, bei Zufahrt gesperrten, FS wäre eine gute Sache.

    Aber, leider ist das bei vielen Automatismen in EEP (das ist eigentlich auch ein Problem vieler anderer Programme) so, dass das dann nicht jeder User, warum auch immer, haben möchte und die Automatik (z.B. einige Gleis/Straße-"EEP-Hilfen" beim Verlegen, das manchmal unnatürliche "Nicken" der Autos in Kurven und noch einige weitere) sich dann nicht deaktivieren lässt und dann wird der Vorteil auch schnell zum Nachteil.

    Und je fitter Du in Lua wirst, um so mehr eigene Script-Schnipsel besitzt Du, die Du un- oder leicht verändert wieder für neue Dinge einsetzen kannst und die dann helfen die neue Aufgabe relativ schnell zu lösen.

    Hallo Silberstern ,


    dass mit dem

    EEPSaveData(8,hData)


    habe ich nicht verstanden.

    hData ist genauso eine Variable, wie FS8.

    Das muss genauso mit der Variablen FS8 funktionieren.

    Was gibt es denn für eine Fehlermeldung?


    Dass nur die 4 im Dataslot gespeichert wird, liegt daran, dass das EEPSaveData sich nur in der if-Bedingung

    if T==4 then

    ...


    befindet.

    Geh doch einfach mal Zeile für Zeile den Weg nach, wenn T gleich 3 ist. Du wirst sehen, dass Du nicht zur EEPSaveData-Zeile kommst.


    Aber, wenn Du in den if's nicht noch irgend etwas anderes machen möchtest, dann brauchst Du diese nicht.


    Wenn Du schreibst

    Code
    1. print("T=" ...
    2. FS8 = T -- das brauchst Du auch
    3. -- nur, wenn FS8 noch
    4. -- woanders gebraucht
    5. -- wird
    6. EEPSaveData(8,FS8)
    7. print("Gespeicherter Wert FS8 ...


    Und wenn Du die if's doch für etwas anderes brauchst, dann müssen die "end" aller if's vor den EEPSaveData-Block "rutschen", damit dieser sich nicht mehr in einem if-Block befindet.

    Hallo Silberstern ,

    sehr gut, dass Du als Erstes selbst versuchst, Deine Lua-Probleme zu lösen und notfalls hier Fragen stellst. Nur das wird dazu führen, dass Dir Lua immer mehr Spaß bringt.


    Was die Funktion zum Löschen des DataSlot betrifft, würde ich Dich bitten zu prüfen, ob Du diese Funktion eventuell beim Freigeben der FS im Script aufrufst und nicht erst durch einen Kontaktpunkt.

    Selbst wenn der Kontaktpunkt dicht hinter dem Signal ist, würde dies ein paar unnötige Versuche sparen, die angemeldete FS nochmals freizugeben.

    Hallo Silberstern ,


    ein paar Anmerkungen zum Lua-Code Deines letzten Beitrages.

    Wie immer von mir kein fertiger Code, da ich der Meinung bin, Anregungen ja, aber durch selber machen (auch durch das selber machen eventueller Fehler), lernt man mehr, als durch das Kopieren von fertigem Quellcode.


    Erstens:

    Ich hätte nicht gedacht, dass folgendes Konstrukt (Definition einer Funktion innerhalb einer Funktion) in Lua funktioniert.

    Ich hab's auf der Seite "Lua Demo" getestet und es funktioniert, nur einen praktischen Nutzen sehe ich darin trotzdem nicht.



    In Deinem Lua-Code sieht es aber noch etwas anders aus.


    Dies funktioniert nur fehlerfrei, wenn FS8 == 4 ist, denn sonst wird die Funktion bbb() nicht definiert.


    Die Funktion aaa() entspricht Deiner Funktion Abzweig8()

    Die Funktion bbb() entspricht Deiner Funktion EEPOnSignal_8(StatusFS8)


    Ist dieses Konstrukt wirklich so von Dir gewollt?


    Ich bezweifle, dass die globale Variable FS8 unter jeder Bedingung, beim Aufruf der Funktion EEPOnSignal_8 immer den gewünschten Wert hat und dieser nicht durch den erneuten Aufruf innerhalb der EEPMain() verändert wurde.

    Z.B. wird die Variable in der Funktion Warteschleife() nicht mit dem aktuellen Wert belegt, aber durch diese Funktion könnte EEPOnSignal_8 ebenfalls ausgelöst werden.



    Zweitens:

    Dein Konstrukt mit den

    if (T==2) then bzw. (T==3) bzw. (T==4)


    ist nicht erforderlich.

    Weise der globalen Variable FS8 den Wert von T zu

    FS8 = T


    Oder verwende die Variable T, statt der Variable FS8 in EEPSetSignal(...)



    Drittens:

    Wie Du bereits vermutet hast, wird die Funktion EEPOnSignal_8 nicht aufgerufen, wenn das Signal nicht geschaltet wird/nicht geschaltet werden kann.

    Aber die Funktion Warteschleife() wird natürlich in der EEPMain() im Sekundentakt ausgeführt, unabhängig von der Funktion EEPOnSignal_8.



    Viertens:

    Das registrieren des Signales 8 für EEPOnSignal_8 muss nur einmalig gemacht werden und nicht bei jedem Aufruf der Funktion Abzweig8().



    Fünftens:

    In dem von Dir gezeigten Code geht es nur um das Signal 8.

    In der Funktion Warteschleife() werden aber die Dataslots für 50 FS-Signale geprüft, soll es da noch eine Erweiterung geben?

    (Ich gebe zu, ich habe auch nicht alle Beiträge des Thred gelesen, die mir eventuell die Frage beantwortet hätten.)



    Sechstens:

    Bis der Zug den Kontaktpunkt mit der Funktion DataSlot8Nil() erreicht hat, wird weiterhin im Sekundentakt versucht, die Fahrstraße zu schalten.

    Hallo,

    ich finde es gut, dass die Türachsen der alten ICEs jetzt, nach "so vielen Jahren" nicht mehr "geupdatet" werden.

    Denn sonst müsste ich alle Tür-Steuerungen der betreffenden ICEs meiner Anlagen, die an die damalig verwendeten Bezeichnungen angepasst sind, wieder ändern.

    Updates von Fehlern sollten immer relativ zeitnah erfolgen. Und wenn dann noch ein Kon. betroffen ist, der, aus bisheriger Erfahrung, nicht besonders "updatefreundlich" ist, dann versucht man das Problem anders zu lösen.

    Hallo,

    Jetzt, wo anscheinend auch noch der Sauerstoff zum Atmen knapp wird, weil die Bahn ihre Strecken nicht genug elektrifiziert ...

    ich vermisse Eure Diskussionen über EEP.