Einen bestimmten Zug per Signal aus dem Depot holen

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.
  • An Michael

    Wie ich Schlingo schon schrieb, kenne ich mich mit LUA nicht soweit aus um solche Codes aus dem Aermel zu schuetteln.

    Um so mehr muss ich mich bei dir bedanken das du mir so viel hilfst!!!

    Ich habe den neuen Script eingesetzt und es funktioniert!!!

    Alles weitere (2. Depot an dem anderen Ende der Strecke) werde ich schon hinbekommen!!!

    Nochmal viiiiielen Dank fuer deine Hilfe!!! :be_1:

    Schoene Gruesse nach Germany

    und immer schoen aufpassen!!!

    Wolfgang

    EEP 13.2 Expert Patch 1

    EEP 14.1 Expert Patch 2

    EEP 15.1 Expert Patch 2

    Windows 10, INTEL i7-7700 CPU 3,6 GHz,

    16GB RAM, Geforce 1080

  • Hallo Michael,

    vielen Dank für das Bereitstellen von Lua Skript Bestimmten.......Zug....holen.

    Bei mir werden die Tipptexte über den Signalen nicht angezeigt. Habe bei der Zuordnung der Signale im Skript bestimmt etwas verkehrt gemacht.

    vielen Dank für die Hilfe

    Lothar (DB54)

    EEP6, EEP17.2 - PC: Win 11 Pro 64 bit , SSD 2,5 SA3 Samsung 850 EVO, MB Asus Z390-F Gaming , CPU Intel Core i9- 9900k Coffee Lake, ASP 64 GB RAM , GK GeForce RTX 2080Ti Gaming Pro

  • DB54 (LW2)

    Du hast zweimal das for k = 1,#Signale do durch for k = 44,109 do ersetzt. Das ist der (oder zumindest ein) Fehler.

    Die richtige Variante geht bereits die gesamte Tabelle durch (erster bis letzter (=#Signale) Tabellenplatz). Da es die Tabellenplätze 44 aufwärts nicht gibt, funktioniert dein Code so nicht.

    Viele Grüße

    Benny

  • Hallo Lothar,

    in Deiner for k = 44,109 do Schleife wird von 44 in einer Schritten bis 109 gezählt. Das ist aber nicht der Sinn.

    Es soll nur die Anzahl der eingetragenen Signale (Stückzahl, nicht ID-Nummern) gezählt werden.

    Muß also heissen for k = 1,#Signale do

    bedeutet für die Variable k nimm den ersten Eintrag aus der Tabelle #Signale

    arbeite die Schleife durch bis zum letzten Eintrag in der Tabelle #Signale.

    Da beim ersten Durchlauf k = 1 ist ergibt sich im folgenden dann bei

    Signale[k][1] bedeutet In der Tabelle Signale vom ersten Eintrag der erste Wert. Und das ist in Deiner Tabelle das Signal 109.

    beim nächsten Durchlauf der Schleife ist k dann ja zwei und das bedeutet aus Deiner Tabelle Signal 108.

    Auch in der function Depot auslesen muss es heissen

    for k = 1,#Signale do dann sollte es eigentlich funktionieren.

    Gruß

    Michael

    EEP 6.1

    EEP 15.1 Expert(x64), EEP 17.2 Expert(x64)Patch 1
    PC: AMD Phenom(tm) II X4 955 Processor 3.20 GHz 16,00 GB 64-Bit WIN10 Pro,22H2.19045.3448, Grafikkarte: AMD Radeon HD 6700
    Laptop: Intel(R) Core(TM) i7-6700HQ CPU 2.6GHz 2.59GHz 16,00 GB 64-Bit WIN10 Pro,22H2.19045.3448, Grafikkarte: Intel(R) HD Graphics 530, NVIDIA GeForce GTX 960M

  • Hallo,

    erst einmal vielen Dank euch beiden.

    Leider Ich kapiere die Eintragungen für Signale[k][1] immer noch nicht bzw was da eingetragen wird.

    da es immer noch nicht funktioniert habe bestimmt wieder alles falsch gemacht.

    EEP6, EEP17.2 - PC: Win 11 Pro 64 bit , SSD 2,5 SA3 Samsung 850 EVO, MB Asus Z390-F Gaming , CPU Intel Core i9- 9900k Coffee Lake, ASP 64 GB RAM , GK GeForce RTX 2080Ti Gaming Pro

  • Hallo Lothar,

    Du brauchst nur die beiden Zeilen for k = 44,109 do

    ändern in for k = 1,#Signale dowie es auch im Original-Script war.

    Am einfachsten ist Du nimmst das Original Script und trägst da in die Tabelle Signale deine Signal IDs ein.

    Am restlichen Script brauchst Du nichts zu ändern.

    Gruß

    Michael

    EEP 6.1

    EEP 15.1 Expert(x64), EEP 17.2 Expert(x64)Patch 1
    PC: AMD Phenom(tm) II X4 955 Processor 3.20 GHz 16,00 GB 64-Bit WIN10 Pro,22H2.19045.3448, Grafikkarte: AMD Radeon HD 6700
    Laptop: Intel(R) Core(TM) i7-6700HQ CPU 2.6GHz 2.59GHz 16,00 GB 64-Bit WIN10 Pro,22H2.19045.3448, Grafikkarte: Intel(R) HD Graphics 530, NVIDIA GeForce GTX 960M

  • Hallo Michael,

    vielen Dank, ich glaube am Anfang hatte ich es schon so gehabt mit dem original Skript von Dir. Es hatte da nicht funktioniert. Ich werde es jetzt noch einmal mit dem original Skript versuchen.

    Melde mich gleich wieder.

    VG

    Lothar

    EEP6, EEP17.2 - PC: Win 11 Pro 64 bit , SSD 2,5 SA3 Samsung 850 EVO, MB Asus Z390-F Gaming , CPU Intel Core i9- 9900k Coffee Lake, ASP 64 GB RAM , GK GeForce RTX 2080Ti Gaming Pro

  • Hallo Michael,

    ich habe jetzt wieder Dein original Skript genommen, meine Signale zugewiesen, aber die Signale zeigen bei Einfahrt eines Zuges in das Depot keinen Text. Im Signal ist Tipp Text anzeigen aktiviert.

    VG

    Lothar

    EEP6, EEP17.2 - PC: Win 11 Pro 64 bit , SSD 2,5 SA3 Samsung 850 EVO, MB Asus Z390-F Gaming , CPU Intel Core i9- 9900k Coffee Lake, ASP 64 GB RAM , GK GeForce RTX 2080Ti Gaming Pro

  • Hallo Lothar,

    wenn ich das auf dem Foto richtig sehe


    hat Dein Depot die Nr 6.

    In meinem Script wird aber das Depot 1 abgefragt.

    Das muss im Script auch angepasst werden. Hab das hier mal mit Deinen Signalen für Depot 6 vorbereitet.

    Gruß

    Michael

    EEP 6.1

    EEP 15.1 Expert(x64), EEP 17.2 Expert(x64)Patch 1
    PC: AMD Phenom(tm) II X4 955 Processor 3.20 GHz 16,00 GB 64-Bit WIN10 Pro,22H2.19045.3448, Grafikkarte: AMD Radeon HD 6700
    Laptop: Intel(R) Core(TM) i7-6700HQ CPU 2.6GHz 2.59GHz 16,00 GB 64-Bit WIN10 Pro,22H2.19045.3448, Grafikkarte: Intel(R) HD Graphics 530, NVIDIA GeForce GTX 960M

  • Hallo Michael,

    super jetzt werden die Züge im Depot 6 angezeigt. Muss mal schauen wo Du das mein Depot Nr6 im Skript angepasst hast. Ich habe auf der Anlage 2 Depots ( 2 Gleisige Strecke) für Züge, das Depot 6 und das Depot 5. so müsste ich noch das Depot 5 im Skript eintragen.

    VG

    Lothar

    EEP6, EEP17.2 - PC: Win 11 Pro 64 bit , SSD 2,5 SA3 Samsung 850 EVO, MB Asus Z390-F Gaming , CPU Intel Core i9- 9900k Coffee Lake, ASP 64 GB RAM , GK GeForce RTX 2080Ti Gaming Pro

  • Hallo Michael,

    erst einmal vielen Dank für deine Mühen.

    Wenn ich Dich ganz nett darum bitten würde, könntest Du das Skript noch mit dem Depot 5 anzupassen. Das wäre wirklich phänomenal.

    Ich sage schon einmal vielen Dank für deine Hilfe.

    Die erste Zeile der Signale im Skript sind dem Depot 6 zugeordnet, die zweite Zeile der Signal wären für das Depot 5

    Viele Grüße

    Lothar

    EEP6, EEP17.2 - PC: Win 11 Pro 64 bit , SSD 2,5 SA3 Samsung 850 EVO, MB Asus Z390-F Gaming , CPU Intel Core i9- 9900k Coffee Lake, ASP 64 GB RAM , GK GeForce RTX 2080Ti Gaming Pro

  • Hallo Michael,

    hier noch einmal die Fehlermeldung beim Laden vom Skript.

    Viele Grüße

    Lothar

    EEP6, EEP17.2 - PC: Win 11 Pro 64 bit , SSD 2,5 SA3 Samsung 850 EVO, MB Asus Z390-F Gaming , CPU Intel Core i9- 9900k Coffee Lake, ASP 64 GB RAM , GK GeForce RTX 2080Ti Gaming Pro

  • hier noch einmal die Fehlermeldung beim Laden vom Skript.

    Hallo Lothar :)

    wenn das das Originalskript aus Beitrag #14 ist, ist die Ursache relativ eindeutig. In Zeile 10 wird über mehrere Zeilen die Tabelle Signale definiert, die mit einer schweifenden Klammer { beginnt. Das Pendant (die schließende Klammer }) befindet sich im Originalskript in Zeile 12. Dir fehlt entweder diese schließende Klammer oder eine in Zeile 11. Stell doch bitte Dein Skript hier ein, aber bitte so wie EmKo als Code, dann können wir uns das mal ansehen.

    Gruß Ingo

  • Hallo Ingo,

    Michael hatte mir ein neueb Skript für zwei Depots geschrieben. Das ist das Skript

    clearlog()

    print("Bestimmten_Zug_aus_Depot_holen")

    function EEPMain()

    return 1

    end

    -----------------------------------------------------------------------------------------------------

    -- Tabelle der Signale für die einzelnen Züge. erster Wert = Signal ID, zweiter Wert = Zugname --

    Depot = { --

    {

    {102,""},{101,""},{100,""},{99,""},{98,""},{97,""},{96,""},{69,""},{68,""},{44,""}, -- Depot 5

    }

    {

    {109,""},{108,""},{107,""},{106,""},{105,""},{104,""},{103,""},{45,""},{70,""},{71,""}, -- Depot 6

    }

    }

    ------------------------------------------------------------------------------------------------------

    for i = 1,#Depot do -- Schleife bis Ende Anzahl Depot

    for k = 1,#Depot[i] do -- Schleife bis Ende Anzahl der Signale in einem Depot

    EEPRegisterSignal(Depot[i][k][1]) -- Signal das den Zug auslösen soll registrieren

    _ENV["EEPOnSignal_"..Depot[i][k][1]] = function (Status) -- Wenn das Signal k in der Tabelle Depot i schaltet und

    if Status ~= 0 then -- es nicht auf Halt steht dann

    Anzahl = EEPGetTrainyardItemsCount(i+4) -- Wieviele Züge sind im Depot i

    for n = 1,Anzahl do -- Schleife bis Anzahl Züge im Depot

    Name = EEPGetTrainyardItemName(i+4, n) -- Name von Zug auf Platz n

    if string.sub(Name,1,9) == string.sub(Depot[i][k][2],1,9) then -- wenn die ersten neun Zeichen mit dem gesuchten übereinstimmen

    EEPGetTrainFromTrainyard(i+4, "", n, 0) -- holt den Zug auf Platz n heraus (0 an vierter Stelle = in Fahrtrichtung wie gespeichert, 1 = vorwärts, 2 = rückwärts 3 = entgegen der gespeicherten)

    EEPShowInfoSignal(Depot[i][k][1], false) -- TippText von Signal k ausschalten

    end

    end

    end

    end

    end

    end

    function Depot_auslesen (Zugname) -- ein Zug fährt ins Depot und übergibt seinen Namen und die Depotnummer

    for i = 1,#Depot do -- Schleife bis Ende Anzahl Depot

    for k = 1,#Depot[i] do -- Schleife bis Ende Anzahl der Signale in Depot i

    EEPChangeInfoSignal(Depot[i][k][1], "") -- und TippTexteintrag löschen und

    EEPShowInfoSignal(Depot[i][k][1], false) -- TippText von Signal k ausschalten

    end

    for n = 1,#Depot[i] do -- Schleife bis Ende Anzahl der Signale in Depot i

    if EEPGetTrainyardItemStatus(i, Depot[i][n][2], 0) ~= 0 then -- wenn der Zug im Depot ist dann

    Anzahl = EEPGetTrainyardItemsCount(i+4) -- Wieviele Züge sind im Depot i

    for k = 1,Anzahl do -- Schleife bis Anzahl Züge im Depot

    Name = EEPGetTrainyardItemName(i+4, k) -- Name von Zug auf Platz k

    if string.sub(Name,1,9) == string.sub(Depot[i][n][2],1,9) then -- wenn die ersten neun Zeichen mit dem gesuchten übereinstimmen

    EEPChangeInfoSignal(Depot[i][n][1], Depot[i][n][2]) -- ändere den TippTexteintrag am Signal

    EEPShowInfoSignal(Depot[i][n][1], true) -- TippText von Signal k einschalten

    end

    end

    end

    end

    end

    end

    -- Beim Neustart von Lua oder Programmstart werden die Depots ausgelesen und die Tabelle Depot gefüllt.

    for i = 1,#Depot do -- Schleife bis Ende Anzahl Depot

    Depot_auslesen(Zugname)

    end

    Sorry, da kann man nichts erkennen. Wie stellt man den ein Skript hier korrekt ein

    VG

    Lothar

    EEP6, EEP17.2 - PC: Win 11 Pro 64 bit , SSD 2,5 SA3 Samsung 850 EVO, MB Asus Z390-F Gaming , CPU Intel Core i9- 9900k Coffee Lake, ASP 64 GB RAM , GK GeForce RTX 2080Ti Gaming Pro

  • Hallo Lothar,

    Sorry konnte das Script nicht testen. Da habe ich eine geschweifte Klammer vergessen.

    Und auch noch andere Kleinigkeiten passten nicht.

    Passiert halt wenn man es nur so aus dem Kopf versucht.

    Sorry.

    Gruß

    Michael

    EEP 6.1

    EEP 15.1 Expert(x64), EEP 17.2 Expert(x64)Patch 1
    PC: AMD Phenom(tm) II X4 955 Processor 3.20 GHz 16,00 GB 64-Bit WIN10 Pro,22H2.19045.3448, Grafikkarte: AMD Radeon HD 6700
    Laptop: Intel(R) Core(TM) i7-6700HQ CPU 2.6GHz 2.59GHz 16,00 GB 64-Bit WIN10 Pro,22H2.19045.3448, Grafikkarte: Intel(R) HD Graphics 530, NVIDIA GeForce GTX 960M

  • Guten Morgen Michael,

    Juchhu:ap_1:, jetzt passt alles. Ich bewundere Leute (wie Dich) die so etwas (Lua) hinbekommen. Um Gottes willen, Du brauchst Dich doch nicht entschuldigen, Ich muss mich bei Dir entschuldigen, das ich Dich mit meinen Anliegen derart in Beschlag genommen habe. Noch einmal vielen Dank hierfür und für das Skript.

    Viele Grüße

    Lothar (DB54)

    EEP6, EEP17.2 - PC: Win 11 Pro 64 bit , SSD 2,5 SA3 Samsung 850 EVO, MB Asus Z390-F Gaming , CPU Intel Core i9- 9900k Coffee Lake, ASP 64 GB RAM , GK GeForce RTX 2080Ti Gaming Pro

  • da kann man nichts erkennen

    Hallo Lothar :)

    richtig. Deshalb hatte ich Dich ja gebeten, das Skript als Code einzustellen.

    Wie stellt man den ein Skript hier korrekt ein

    Füge es in einen Codeblock ein...

    ...und definiere den Code als Lua.

    Gruß Ingo

  • Hallo Ingo,

    vielen Dank für die Info zum Einstellen von einem Skript.

    Michael hat das Skript angepasst, nun passt alles.

    Viele Grüße

    Lothar

    EEP6, EEP17.2 - PC: Win 11 Pro 64 bit , SSD 2,5 SA3 Samsung 850 EVO, MB Asus Z390-F Gaming , CPU Intel Core i9- 9900k Coffee Lake, ASP 64 GB RAM , GK GeForce RTX 2080Ti Gaming Pro

  • Hallo zusammen,

    ich bin auch gerade an einen ähnlichen Skript zugange, bei dem ich bisher nicht erfolgreich bin.

    Über eine Aufgleisung soll der Einfahrtskontaktpunkt (EKP) die Züge im Depot 1 und in Lua registriert werden. Die Züge sollen so lange im Depot warten, bis das Anlagenstartsignal 1 auf Fahrt gestellt wird.

    Wenn die Anlage nun startet, sollen alle Züge der Reihe nach (sortiert nach Listenplatz, nach Reihenfolge der Aufgleisung) im 2-Minutentakt ausgefahren werden.

    An den Streckenenden sind weitere EKPs ausgelegt, bei denen die Züge NICHT in die Startausfahrt eingereiht werden, sondern ins Depot einfahren, 1,5 Minuten (also 90 Sekunden) warten und dann mit Vorrang zur Startausfahrt (falls sie noch läuft), ausfahren. Wichtig ist mir hierbei, dass die Züge wirklich unabhängig voneinander ihre Aufenthaltszeiten abwarten.
    Beide Arten der Depotausfahrt sollen, für den Fall, dass doch mal zwei Züge zeitlich dicht zusammen oder sogar gleichzeitig ausfahren sollten, durch das Signal 2 abgesichert werden. Wenn Signal 2 besetzt ist, stellen sich die anderen Züge, in der Reihenfolge, in der sie sonst auch ausfahren würden, an. Wenn der Zug den Block dann passiert hat, fährt der nächste Zug aus dem Depot und wartet wieder vorm Signal - und so weiter, bis kein Verspäteter (innerhalb des Depots) mehr vorhanden ist.

    Ich hoffe, dass das Konzept verständlich ist. Vielleicht könntet ihr mir ein paar Tipps geben, wie ich das Skript von oben richtig anpasse, oder noch besser gleich die angepasste Version hier hochladen?

    Gruß,

    Frieder

    EEP-Version: 15.1

  • ich bin auch gerade an einen ähnlichen Skript zugange

    Hallo Frieder :)

    bitte hänge auch Du nicht nicht an alte, längst gelöste Themen, die mit Deinem Problem nichts zu tun haben, sondern erstelle für jede Frage ein eigenes Thema. Vielen Dank für die Unterstützung, das Forum übersichtlich zu halten.

    Gruß Ingo