Hawkeye Geschrieben 7. Juli 2023 Geschrieben 7. Juli 2023 Hallo @Goetz, brauche mal deine Hilfe zum Verständnis von einer Lua-Anweisung. Folgende Anweisung läuft völlig unproblematisch: Aber von meinem Verständnis her ist eine "Verneinung" nicht notwendig, daher wollte ich die Anweisung ändern auf: Diese Änderung erzeugt aber in weiteren Verlauf an der Stelle 15 einen Fehler. Dieser Fehler wird in der "Verneinungsanweisung" (siehe oben) nicht erzeugt. Warum? Wo ist der Unterschied zwischen eine Variable ist "nicht wahr" und eine Variable ist "falsch". Das ist mir schon an mehreren Stellen aufgefallen, habe es aber bisher immer ignoriert, weil die Verneinung ja funktioniert. Gibt es dafür eine sinnvolle Erklärung? VG, Hawkeye
Neo Geschrieben 7. Juli 2023 Geschrieben 7. Juli 2023 Hallo Hawkeye, bin zwar nicht Götz, aber ich kann genau so schlau tun if not vehicle.variables["Wartezeit"] == true then ist nicht das gleiche wie if vehicle.variables["Wartezeit"] == false then denn wenn eine Variable nicht existiert, ist sie nil, und nicht false. Du kannst mit false nicht auf die Existenz einer Variable prüfen. Der erste Ausdruck funktioniert, weil: Eine nicht existierende Variable ist nil not nil wird zu true true == true Um deine Variable zu initialisieren, falls sie noch nicht existiert, solltest du folgende Zeile nutzen: if vehicle.variables["Wartezeit"] == nil then Viele Grüße, Neo
Hawkeye Geschrieben 7. Juli 2023 Autor Geschrieben 7. Juli 2023 (bearbeitet) Hallo Neo, vor 2 Stunden schrieb Neo: Der erste Ausdruck funktioniert, weil: danke für die schnelle Antwort, das habe ich jetzt verstanden. Wenn der Bremskontakt betreten wird, wird die Variable "Wartezeit" an dieser Stelle in der EV temporär erst neu gesetzt. Muss das Fahrzeug halten, fängt die Zeit an zu zählen. Verlässt das Fahrzeug den "Bremskontakt", weil die Strecke frei ist, wird diese Variable auch wieder komplett gelöscht. Sie existiert also beim "Betreten" des Bremskontaktes nicht. vor 2 Stunden schrieb Neo: Um deine Variable zu initialisieren, falls sie noch nicht existiert, solltest du folgende Zeile nutzen: if vehicle.variables["Wartezeit"] == nil then Soll das so aussehen ? Welchen Unterschied macht das jetzt? Es funktioniert auch ohne. VG, Hawkeye Bearbeitet 7. Juli 2023 von Hawkeye
Goetz Geschrieben 7. Juli 2023 Geschrieben 7. Juli 2023 (bearbeitet) nein, nicht so, sondern nur die innere Abfrage. Das if not == true außen rum kannst du dir sparen. Neos Vorschlag ist der Ersatz dafür und keine Ergänzung. --[[--------------------------------------------- Prüfung ... ------------------------------------------------]] if vehicle.variables["Wartezeit"] == nil then vehicle.variables["Wartezeit"] = 0 end if contact.variables[Fahrweg ist frei] == true then ... Bearbeitet 7. Juli 2023 von Goetz
Hawkeye Geschrieben 7. Juli 2023 Autor Geschrieben 7. Juli 2023 vor 9 Minuten schrieb Goetz: nein, nicht so, sondern nur die innere Abfrage. Das if not == true außen rum kannst du dir sparen. Neos Vorschlag ist der Ersatz dafür und keine Ergänzung. Danke Götz, vor 2 Stunden schrieb Neo: solltest du folgende Zeile nutzen: Das „stattdessen“ habe ich überlesen 🙄, kann man aber auch rauslesen. 😂 VG, Hawkeye
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