ich würde gerne einen Timer programmieren, welcher mir die Zeit bzw. Dauer angibt, wie lang z.B. eine Variable auf „true“ gesetzt ist. Bei „false“ soll der Timer dann Stoppen.
Wollte es mit einem while Befehl versuchen aber da komme ich nach 30 Sekunden zu einem Fehler: (wobei mir gerade auffällt, dass ich in der Bedingung noch einmal den Status der Variable abrufen müsste. Ändert aber nichts daran das diese Idee nicht funktioniert)
erstmal Danke für deine Antwort. Ich suche eine Möglichkeit einen Timer zu erstellen der hochzählt.
z.B.: Wenn ich eine Boole-Variable auf true setzte soll irgendwie gezählt werden wie lange diese auf true gewesen ist. So dass ich u.a. die Nutzungsdauer von bestimmten Sachen erhalten kann.
//EDIT Und wie genau soll das sein? Ansonsten einfach mit nem Skripttimer lösen, das Skript ruft sich solange selber auf bis die Variable false ist. Gibt da viele Möglichkeiten…
Du brauchst nur mit „IPS_GetVariable“ schauen, wann jeweils die Variable zuletzt geändert wurde. Dann diesen Unix-Timestamp von „time()“ abziehen und du hast die Differenz. Das kannst du dann direkt verarbeiten oder in einer Hilfsvariable zwischenspeichern und weiter addieren…
Hier gibt’s es viele Skript-Beispiele, da kannst du dir alles mögliche zusammen suchen. Auch die Geschichte mit „time()“. IP-Symcon - Wie kann ich… 2.0
Danke euch beiden. Auf die Idee mit Unix-Time wäre ich nicht gekommen. Habe es ausprobiert und soweit funktioniert es auch. Nur leider bekomme ich den Wert nicht gespeichert wie ich es gerne hätte. Mein Versuch:
Das Skript wird im Moment jedes Sekunde zyklisch ausgeführt. Das muss ich noch ändern das der Zyklus nur dann stattfindet wenn der Boolwert auf true ist.
Aber was ich nicht hin bekomme ist, dass wenn der Zustand von der Bool Variablen (44071) von fals auf true geht die Variable (28401) wieder auf Null gesetzt wird. Ich möchte natürlich das der Wert sich immer weiter aufaddiert. Was genau setzt meine Zeit beim erneuten Auslösen auf 0? Und wie könnte ich das verhindern?
Lieben Gruß
Snook
PS: Aus Neugier, was ist der unterschied zwischen IF ($1 == 1) und IF ($1 === 1)?
//Edit: habe den Fehler gefunden… Ich ziehe im letzten Schritt ja wieder den gesamten Wert ab und somit beginnt es natürlich von neu an zu Zählen. Aber eine Lösung habe ich leider für das Problem nicht. Wenn ich es nicht abziehe wird nicht mehr in Sekunden rauf gezählt, sondern gesprungen da er immer die Unix Differens auf den aktuellen Wert addiert.
Kannst du das nicht über ein Trigger-Event lösen? Wenn nicht, dann direkt als 1. im Skript fragen:
if (GetValue($Var) === false)
{
return; // Beendet das Skript leise und schmerzlos
}
.............
== und === … wozu Google fragen, wenn es im Forum länger dauert
== >> Prüft z.B., ob 1 = 1 ist
=== >> Prüft z.B., ob 1 = 1 ist und auch der „Typ“ identisch ist (also beide Integer und nicht eins Bool oder sonstiges)