Zitat von
Drunken Officer
Gelöst.
Ich habe aus
_ari_wartezeit ein ari_wartezeit gemacht.
Der _ ist doch lokal. Das script wird via Funkauslöser ausgelöst und nur bei einem Spieler rennt die Wartezeit, da nur ein Spieler == Spieler_3 sein kann. Wieso muß die Variable global sein?
Die Variable
ari_wartezeit soll verhindern, dass das Skript innerhalb der Wartezeit nochmals aufgerufen wird. Dafür muss diese Variable eine globale sein! Ein Skript kann beliebig oft gleichzeitig laufen. Jedes Skript verwendet eigene lokale Variable. Diese lokalen Variablen haben intern natürlich unterschiedliche Identifikationen, wodurch sich die Skripte nicht gegenseitig beeinflussen.
Der "Trick" für das Verhindern eines nochmaligen Aufrufes zur Laufzeit des ersten Skripts:
if (!isNil "ari_wartezeit") exitWith {};
ari_wartezeit = 1;
...
...
ari_wartezeit = nil;
isNil stellt fest ob es die Variable in den Anführungszeichen bereits gibt. Wenn ja, dann wird ein Skript-Aufruf in dieser Zeile beendet (dafür muss die Abfrage
nicht isNil lauten).
ari_wartezeit = 1; erstellt eine solche
globale Variable, die im Skirpt gleich für die Wartezeit verwendet wird (allerdings untauglich in deinem Skript.).
ari_wartezeit = nil; "löscht" die Variable und gibt das Skript für einen neuen Aufruf frei.
Würde man dafür eine lokale Variable verwenden, dann erstellt sich jeder Skript-Aufruf eine eigene solche Variable.