Einzelnen Beitrag anzeigen
Alt 09.02.2013, 12:55   #5 (permalink)
Vienna
SQF Zauberer 10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Vienna
 
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
Standard

Zitat von Drunken Officer Beitrag anzeigen

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.
Vienna ist offline