Beschriftung des neuen ICE4 über lua

Achte bitte darauf, dass Du mit deinem Thema bzw. mit deiner Frage im richtigen Bereich bist.
Die Bereiche sind: Einstellungen im Forum, EEP aktuell ab EEP7 , Splines, Rollmaterialien, Immobilien, Landschaftselemente, Signale und Schaltung, Anlagenvorstellungen, Schnappschüsse Konstrukteure, EEP Treffen , Laberecke, Online - Handbuch EEP Vielen Dank für die Unterstützung das Forum übersichtlich zu halten.
Bilder/Fotos aus dem Internet sind nur als Link gestattet. Eigene Fotos, also Fotos aus dem realen Leben, sind erstens mit Eigenes Bild als Quellenangabe zu kennzeichnen und zweitens nur als Dateianhang im Beitrag zulässig. Bilder ohne Quellenangaben und Bilder dessen Quelle das Internet wie z. B. Google ist, werden gelöscht.
  • Liebe LUA-Experten,

    ich habe versuchsweise die Änderung der Zugnummer an der Außentür über einen Kontaktpunkt steuern wollen, in der Hoffnung, dass dies für den gesamten Zugverband funktioniert.

    Das ist leider nicht der Fall. Wenn ich einen einzigen Wagen über den KP schiebe, funktioniert die Beschriftungsänderung. Gibt es vielleicht noch einen anderen Trick?

    Code
    function ICEText(ICE_Name)
        ICE_Name = string.gsub(ICE_Name,"#","")
        print(ICE_Name)
        EEPRollingstockSetTextureText(ICE_Name,1,"TEST")
    end

    LG
    Schorsch

    -------------------------------------------------------------------------------------------------------------------------
    PC: 64-Bit, Windows 10 Home, Intel(R) Core (TM) i7-8700 K CPU@3,70 GHz, Arbeitsspeicher 32 GB, NVIDIA GeForce GTX 1080 Ti

    Laptop: acer 64 Bit, Win 10, 32 GB RAM, Intel(R) Core (TM) i7-6820 HK 2.7 GHz, NVIDIA GeForce GTX 980
    EEP17.2 - Plug-in 1,2, Modell-Explorer, Zug-Explorer, Modell-Katalog, Tauschmanager, Hugo

  • Alle Rollingstock-Funktionen gelten immer für genau ein Fahrzeug (also für einen Wagen). Mit deinem Code änderst du die Beschriftung für genau den Wagen, der so heißt wie der gesamte Zugverband (minus das #, das du ersetzt).

    Wenn du die Beschriftung an mehreren Wagen ändern willst, musst du die auch die SetTextureText-Funktion mehrfach aufrufen (z.B. in einer Schleife).

    Vom Kontaktpunkt kriegst du den Namen des Zugverbands.

    Damit kannst du die Namen der darin enthaltenen Fahrzeuge abfragen (dazu müsste es ab EEP 15 eine Funktion geben, wenn ich mich nicht vertue).

    Mit diesen Fahrzeug-Namen kannst du dann die Beschriftung (an diesem Fahrzeug) ändern.

    Viele Grüße

    Benny

  • dazu müsste es ab EEP 15 eine Funktion geben

    Mit EEPGetRollingstockItemName() liest man den Namen eines Waggons aus

    Und mit EEPGetRollingstockItemsCount() bekommt man die Anzahl der Waggons

    Lua
    function ICEText(ICE_Name)
        local Anzahl = EEPGetRollingstockItemsCount(ICE_Name)
        for i = 0, Anzahl-1 do
            local name = EEPGetRollingstockItemName(ICE_Name, i)
            EEPRollingstockSetTextureText(name, 1, "TEST")
        end
    end

    nach Überprüfung korrigiert

    2 Mal editiert, zuletzt von Goetz (28. November 2018 um 02:48)

  • Lieber Benny (BH2) und lieber @Goetz,

    danke. Das teste ich Morgen.

    LG
    Schorsch

    -------------------------------------------------------------------------------------------------------------------------
    PC: 64-Bit, Windows 10 Home, Intel(R) Core (TM) i7-8700 K CPU@3,70 GHz, Arbeitsspeicher 32 GB, NVIDIA GeForce GTX 1080 Ti

    Laptop: acer 64 Bit, Win 10, 32 GB RAM, Intel(R) Core (TM) i7-6820 HK 2.7 GHz, NVIDIA GeForce GTX 980
    EEP17.2 - Plug-in 1,2, Modell-Explorer, Zug-Explorer, Modell-Katalog, Tauschmanager, Hugo

  • @Goetz

    Beginnt die Reihenfolge (Positionsnummer) nicht mit 1? Dann müsste die Schleife doch for i = 1,  EEPGetRollingstockItemsCount(ICE_name) do heißen.

    Falls sie allerdings mit 0 beginnt, dann müsste die Schleife meines Erachtens for i = 0,  (EEPGetRollingstockItemsCount(ICE_name) - 1) do heißen.

    Oder?

    Fried-liche Grüße:aq_1:

    Rentner sein ist wie Urlaub, nur 365 Tage im Jahr.

    Wen es interessiert ...

    PC: AMD Ryzen 5 5600X 6x3,7GHz; 32GB RAM; GeForce RTX3060XC 12GB; 2x 1TB SSD; Windows10Pro 64bit;

    Monitore: 2560x1440 (ASUS) + 1920x1080 (alt)

    Laptop: i7-4710HQ 2,5GHz; 8GB RAM; NVIDIA GeForce GTX860M; 125GB SSD + 1TB HDD; W10Pro64bit

    EEP: Aktuell 15.1.2 Plug-in 1, 17.3.0 Plug-in 1, 2, 3; HN17; AnlVerb17; MK; ME; ZE; TM; ...

  • Beginnt die Reihenfolge (Positionsnummer) nicht mit 1?

    Nein.

    ItemsCount liefert einen Wert, der eins kleiner ist als alle Elemente des Zugverbands. Sozusagen die Anzahl der Waggons. liefert die Anzahl der Elemente im Zugverband.

    Und bei ItemName hat das erste Element des Zugs die Nummer 0

    Die 10 Elemente eines Zugs sind also Item 0 bis 9

    Die 10 Elemente des Zuges sind: Item 0 bis Item Count() - 1

    Danke, Fried, für den Hinweis :aa_1:

    Einmal editiert, zuletzt von Goetz (28. November 2018 um 02:52)

  • Hallo @Goetz

    vielen Dank für die Aufklärung. Davon steht aber mal wieder nichts im Handbuch (wie leider so oft).

    Fried-liche Grüße:aq_1:

    Rentner sein ist wie Urlaub, nur 365 Tage im Jahr.

    Wen es interessiert ...

    PC: AMD Ryzen 5 5600X 6x3,7GHz; 32GB RAM; GeForce RTX3060XC 12GB; 2x 1TB SSD; Windows10Pro 64bit;

    Monitore: 2560x1440 (ASUS) + 1920x1080 (alt)

    Laptop: i7-4710HQ 2,5GHz; 8GB RAM; NVIDIA GeForce GTX860M; 125GB SSD + 1TB HDD; W10Pro64bit

    EEP: Aktuell 15.1.2 Plug-in 1, 17.3.0 Plug-in 1, 2, 3; HN17; AnlVerb17; MK; ME; ZE; TM; ...

  • Davon steht aber mal wieder nichts im Handbuch

    Äh - doch.
    Ich bin mir ziemlich sicher, dass ich es reingeschrieben habe


    Nachtrag:

    Zitat
    Das zweite Argument ist die Positionsnummer des Fahrzeugs im Verband, dessen Namen man

    erfahren möchte. Bitte beachten: Das erste Fahrzeug hat die Nummer 0

  • Äh - doch.
    Ich bin mir ziemlich sicher, dass ich es reingeschrieben habe

    EEPGetRollingstockItemsCount(...)

    Rückgabewert ist die Summe aller Fahrzeuge, aus denen der Fahrzeugverband besteht.

    Zwischen Loks, Tendern, Waggongs und Speziealteilen ... wird nicht unterschieden.

    Fried-liche Grüße:aq_1:

    Rentner sein ist wie Urlaub, nur 365 Tage im Jahr.

    Wen es interessiert ...

    PC: AMD Ryzen 5 5600X 6x3,7GHz; 32GB RAM; GeForce RTX3060XC 12GB; 2x 1TB SSD; Windows10Pro 64bit;

    Monitore: 2560x1440 (ASUS) + 1920x1080 (alt)

    Laptop: i7-4710HQ 2,5GHz; 8GB RAM; NVIDIA GeForce GTX860M; 125GB SSD + 1TB HDD; W10Pro64bit

    EEP: Aktuell 15.1.2 Plug-in 1, 17.3.0 Plug-in 1, 2, 3; HN17; AnlVerb17; MK; ME; ZE; TM; ...

  • Die 10 Elemente eines Zugs sind also Item 0 bis 9

    Ist OK, aber lt. Handbuch liefert ItemsCount 10 und nicht 9. Was stimmt denn nun?

    Fried-liche Grüße:aq_1:

    Rentner sein ist wie Urlaub, nur 365 Tage im Jahr.

    Wen es interessiert ...

    PC: AMD Ryzen 5 5600X 6x3,7GHz; 32GB RAM; GeForce RTX3060XC 12GB; 2x 1TB SSD; Windows10Pro 64bit;

    Monitore: 2560x1440 (ASUS) + 1920x1080 (alt)

    Laptop: i7-4710HQ 2,5GHz; 8GB RAM; NVIDIA GeForce GTX860M; 125GB SSD + 1TB HDD; W10Pro64bit

    EEP: Aktuell 15.1.2 Plug-in 1, 17.3.0 Plug-in 1, 2, 3; HN17; AnlVerb17; MK; ME; ZE; TM; ...

  • Was stimmt denn nun?

    Das Handbuch stimmt. Ich habe es inzwischen ausprobiert.

    EEPGetRollingstockItemsCount() liefert bei einem 10-teiligen Zug den Wert 10.

    Ich habe die Funktion für Schorsch entsprechend korrigiert.

  • Lieber @Goetz,

    das script funktioniert. Vielen Dank. Es sieht jetzt so aus:

    An der Außentür müsste bei der Zugnummer und beim Abfahrtsbahnhof die Anweisung für "linksbündig" eingefügt werden bzw. das "zenriert" entfernt werden. Geht das auch mit LUA?

    Händisch geht es natürlich.

    LG
    Schorsch

    -------------------------------------------------------------------------------------------------------------------------
    PC: 64-Bit, Windows 10 Home, Intel(R) Core (TM) i7-8700 K CPU@3,70 GHz, Arbeitsspeicher 32 GB, NVIDIA GeForce GTX 1080 Ti

    Laptop: acer 64 Bit, Win 10, 32 GB RAM, Intel(R) Core (TM) i7-6820 HK 2.7 GHz, NVIDIA GeForce GTX 980
    EEP17.2 - Plug-in 1,2, Modell-Explorer, Zug-Explorer, Modell-Katalog, Tauschmanager, Hugo

  • Hier ist eine Alternative für dich, Schorsch:

    Diese Zeilen mit den langen EEP Funktionsnamen machen alles unleserlich. Insbesondere die Texte sind so schwer zu finden. Deshalb schreibst du die Texte besser in eine Tabelle. Und zwar genau in der Reihenfolge, in der die Beschriftungsfelder nummeriert sind. Dann kannst du die Texte in einer Schleife aus der Tabelle nehmen und den passenden Textfeldern übergeben.

  • Lieber @Goetz,

    danke. Das ist ja dann schon die Kür.

    Zurzeit bin ich noch auf dem Niveau, lieber mehr Text in den Befehlszeilen auszuschreiben, damit ich das auch nach ein paar Wochen noch verstehe.

    Aber ich habe deinen Vorschlag natürlich "abgespeichert".

    LG
    Schorsch

    -------------------------------------------------------------------------------------------------------------------------
    PC: 64-Bit, Windows 10 Home, Intel(R) Core (TM) i7-8700 K CPU@3,70 GHz, Arbeitsspeicher 32 GB, NVIDIA GeForce GTX 1080 Ti

    Laptop: acer 64 Bit, Win 10, 32 GB RAM, Intel(R) Core (TM) i7-6820 HK 2.7 GHz, NVIDIA GeForce GTX 980
    EEP17.2 - Plug-in 1,2, Modell-Explorer, Zug-Explorer, Modell-Katalog, Tauschmanager, Hugo

  • Lieber @Goetz,

    kann es sein, dass in deiner Zeile 23 am Ende das Komma fehlt?

    LG
    Schorsch

    -------------------------------------------------------------------------------------------------------------------------
    PC: 64-Bit, Windows 10 Home, Intel(R) Core (TM) i7-8700 K CPU@3,70 GHz, Arbeitsspeicher 32 GB, NVIDIA GeForce GTX 1080 Ti

    Laptop: acer 64 Bit, Win 10, 32 GB RAM, Intel(R) Core (TM) i7-6820 HK 2.7 GHz, NVIDIA GeForce GTX 980
    EEP17.2 - Plug-in 1,2, Modell-Explorer, Zug-Explorer, Modell-Katalog, Tauschmanager, Hugo

  • damit ich das auch nach ein paar Wochen noch verstehe.

    Das ist ein Irrtum, dem viele unterliegen.

    Tatsächlich wirst du deine Version nach ein paar Wochen schwerer nachvollziehen können. Natürlich nicht dann, wenn es nur dieses kleine Beispiel ist. Aber dabei bleibt es ja nicht. Dein Weg führt schnell zu endlos langen Skripten mit hunderten von Zeilen, die alle nahezu gleich aussehen. Und die bereiten später viel mehr Mühe. Weil man sich 'nen Wolf sucht nach der einen, speziellen Zeile mit den Werten, die man abändern wollte. Kommentare in großen Mengen verschlimmern diese Situation noch. Ein strukturierter Code braucht kaum Kommentare.

    Dein Beispiel ist geradezu ideal um den Umgang mit einfachen Tabellen zu üben. Und je früher du das tust, desto weniger musst du beim Entwurf von Skripten endlos oft Zeilen kopieren und anpassen.

    Eine Kopie einer Zeile ist okay. Die zweite ist schon verdächtig.

    kann es sein, dass in deiner Zeile 23 am Ende das Komma fehlt?

    Alle Elemente einer Tabelle müssen durch Kommas voneinander getrennt werden. Hinter dem letzten Element muss kein Komma mehr stehen. Aber es ändert auch nichts, wenn man dort eins setzt. Manche machen das aus Prinzip um bei späteren Erweiterungen der Tabellen dieses Komma nicht zu vergessen.