WalterW Geschrieben 19. Juli 2023 Geschrieben 19. Juli 2023 Hallo @Goetz, ich habe ein Lua-Problem, bei dem ich deine Hilfe zur Lösung benötige. Nachstehend das Skript, dass bei der Erstellung keine Fehler meldet, aber zur Laufzeit abbricht. Ich habe auch selbst versucht die richtige Syntax, bzw. die richtige Anweisung herauszubekommen, aber leider erfolglos. Offensichtlich definiert Lua "char" als Variable und damit beginnt offensichtlich das Problem. ------------------------------------------------------------------------------------------------------------------------------------------------ -- Für die richtige Reihenfolge der Zug-Entladung ist es notwendig -- zu wissen, an welcher Position im Zug welche Wagen-Nr steht. if $("Taste ▀").state == 1 then $("Ereignisse").variables["LfdNr"] = 0 local t = layout:getVehicleGroup($("Zug Holz A"), 3) -- Es werden nur die Wagen des Zuges ohne Antrieb ermittelt. for i, Fahrzeug in ipairs(t) do $("Ereignisse").variables["LfdNr"] = $("Ereignisse").variables["LfdNr"] + 1 -- Die LfdNr stellt die Reihenfolge der Fahrzeuge im Zug dar. -- Die LfdNr 1 ist der 1.Wagen direkt nach der Lok, in der Mitte ist der 2.Wagen -- nach der Lok und am Ende ist der 3.Wagen. -- Jeder Wagen mit seiner jeweiligen WagenNr (erweiterte Objekt-Variable). -- Somit ist bekannt, welche WagenNr an welcher Zug-Position ist. $("Ereignisse").variables["Aktueller Zug-Wagen"] = Fahrzeug if $("Ereignisse").variables["LfdNr"] == 1 then $("Ereignisse").variables["Zug-Wagen 1 Nr"] = $("Ereignisse").variables["Aktueller Zug-Wagen"].variables["WagenNr"] else if $("Ereignisse").variables["LfdNr"] == 2 then $("Ereignisse").variables["Zug-Wagen 2 Nr"] = $("Ereignisse").variables["Aktueller Zug-Wagen"].variables["WagenNr"] else if $("Ereignisse").variables["LfdNr"] == 3 then $("Ereignisse").variables["Zug-Wagen 3 Nr"] = $("Ereignisse").variables["Aktueller Zug-Wagen"].variables["WagenNr"] end end end end $("Ereignisse").variables["WagenReihenfolge"] = char ($("Ereignisse").variables["Zug-Wagen 1 Nr"], -- IN DIESER ZEILE ERFOLGT DER ABBRUCH $("Ereignisse").variables["Zug-Wagen 2 Nr"], $("Ereignisse").variables["Zug-Wagen 3 Nr"]) $("Taste ▀").state = 0 end --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -- Ich habe gehofft, dass mit der Anweisung eine Charakter-Verknüpfung der drei Variablen in einer erfolgt. -- In dieser Variablen $("Ereignisse").variables["WagenReihenfolge"] sollen die Werte "123" oder "oder "213" oder anderen Reihenfolgekombinationen -- der Wagen-Nummern stehen. Im unteren Protokollbeispiel wäre es "312" --Nachstehend der Protokolltext. --[14:48:17] Schalter wird betätigt (2) --[14:48:17] Modul-Variable wird gesetzt -> Ereignisse, "LfdNr", 0 --[14:48:17] Modul-Variable wird gesetzt -> Ereignisse, "LfdNr", 1 --[14:48:17] Modul-Variable wird gesetzt -> Ereignisse, "Aktueller Zug-Wagen", Zug Holz Wagen 3 --[14:48:17] Modul-Variable wird gesetzt -> Ereignisse, "Zug-Wagen 1 Nr", "3" --[14:48:17] Modul-Variable wird gesetzt -> Ereignisse, "LfdNr", 2 --[14:48:17] Modul-Variable wird gesetzt -> Ereignisse, "Aktueller Zug-Wagen", Zug Holz Wagen 1 --[14:48:17] Modul-Variable wird gesetzt -> Ereignisse, "Zug-Wagen 2 Nr", "1" --[14:48:17] Modul-Variable wird gesetzt -> Ereignisse, "LfdNr", 3 --[14:48:17] Modul-Variable wird gesetzt -> Ereignisse, "Aktueller Zug-Wagen", Zug Holz Wagen 2 --[14:48:17] Modul-Variable wird gesetzt -> Ereignisse, "Zug-Wagen 3 Nr", "2" --[14:48:17] Skriptfehler (35): attempt to call a nil value (global 'char') --[14:49:25] Ereignisprotokollierung gestoppt --[14:55:20] Ereignisprotokollierung gestartet Bitte hilf mir. Danke im Voraus. Freundliche Grüße Walter
Hawkeye Geschrieben 19. Juli 2023 Geschrieben 19. Juli 2023 (bearbeitet) vor einer Stunde schrieb WalterW: ich habe ein Lua-Problem, Hallo @WalterW, bin zwar nicht Götz. Aber ich denke ich kann dir auch einen Lösungsvorschlag machen. Habe dein Skript etwas vereinfacht. Aber statt char verwende tostring (Wert1 .. Wert2 .. Wert3 ) (die zwei Punkte zwischen den Werten sind wichtig!) dann klappt es auch mit "321" als Ergebnis. VG, Hawkeye Bearbeitet 19. Juli 2023 von Hawkeye
Goetz Geschrieben 19. Juli 2023 Geschrieben 19. Juli 2023 vor einer Stunde schrieb WalterW: Offensichtlich definiert Lua "char" als Variable Mit den runden Klammern dahinter sieht Lua dein char als Funktionsnamen an. Ohne Klammern würde es als Name einer Variable betrachtet. Denn eine Methode char(), die die von dir gewünschte Wandlung vornimmt, gibt es in Lua nicht. Hawkeye hat dir eine gute Alternative genannt. eine weitere Möglichkeit wäre string.format()
WalterW Geschrieben 19. Juli 2023 Autor Geschrieben 19. Juli 2023 Hallo Hawkeye und Götz, vielen Dank für die Antworten und Hilfe. Freundliche Grüße Walter
WalterW Geschrieben 19. Juli 2023 Autor Geschrieben 19. Juli 2023 Hallo @Hawkeye und @Goetz, was nicht ganz unwichtig ist, bei der Ermittlung der Wagenreihenfolge: Die Reihenfolge ist abhängig von der Fahrtrichtung ! Fährt die Lok vorwärts, dann beginnt die Zählung direkt hinter Lok bis zum Zugende. Im umgekehrten Fall, dass die Lok rückwärts fährt, beginnt die Zählung am Ende des Zuges bis zur Lok. Bin aber erst jetzt, nachdem ich eine Lösung für die Feststellung der Reihenfolge dank eurer Hilfe habe, darauf gekommen. Freundliche Grüße Walter
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren
Du musst ein Benutzerkonto besitzen, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen.
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden