11.07.2008, 17:18 | #1 (permalink) |
Einfache Check-Schleife (sqf)
Hallo ich möchte einen einfachen "Check" ahben der alle paar sekunden checkt ob ein bestimmtes Fahrzeug (welches respawnt) noch am Leben ist, und wenn nicht dann einfach eine Hint message rausgibt.
Folgendes ist meine Version: Code:
if (!isServer) exitWith {}; while {true} do { if (!alive specialvehicle || !alive special_einheit) then { hint localize ""STRS_einheit_destroyed""; specialvehicle setdamage 1; special_einheit setdamage 1; }; sleep 2; }; Wie mache ich es, dass die Nachright nur einmal erscheint aber TROTZDEM beim nächsten möglichen "tod" der Einheit wieder enazeigt? |
|
11.07.2008, 17:53 | #3 (permalink) |
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
Du mußt natürlich aus der Schleife raus, wenn sie ihren Zweck erfüllt hat.
Würde so gehen: while (alive specialvehicle AND alive special_einheit) do {sleep 2}; Üblich ist aber so (ausser du willst nur alle 2 Sekunden abfragen): waitUntil {!alive specialvehicle OR !alive special_einheit}; hint localize ""STRS_einheit_destroyed""; specialvehicle setdamage 1; special_einheit setdamage 1; Hier könntest du noch anfügen, dass die Objekte z.B. nach 5 Minuten vollständig aus dem Spiel entfernt werden. sleep 300; deleteVehicle specialvehicle; deleteVehicle special_einheit; Bei der while Schleife ist zu beachten, dass sie nach 10.000 Durchläufen in ArmA automatisch beendet wird. |
12.07.2008, 03:26 | #4 (permalink) |
Code:
waitUntil {!alive specialvehicle OR !alive special_einheit}; hint localize ""STRS_einheit_destroyed""; specialvehicle setdamage 1; special_einheit setdamage 1; Bist du dir mit den 10.000 durchläufen sicher? Sahrani-Life zb läuft manchmal 3000 minuten und dort sind massiv 1 sekündige while-schleifen im einsatz... |
|
12.07.2008, 11:39 | #5 (permalink) |
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
Das Skript läuft nur so lange, bis eines der Objekte zerstört ist.
Wenn du die Variablenamen wieder für neue Objekte verwendest, dann mußt du das Skript neu starten. Das ist so auch am sichersten, weil die "Schleife" die neuen Objekte in den Variablen möglicherweise nicht erkennt! Die beiden Objekte übergibst du als Parameter, so ersparst du dir zwei globale Variable (falls du sie sonst nicht benötigest) und du kannst das Skript auch noch für andere Objekte verwenden. Zu While ... do Note (Applies to 1.85-1.97): Maximum repeat count for loop is 10000. If condition is still true after loop was repeated 10000 times, loop is terminated and error message is shown. Das war bei ArmA zu Beginn noch so. Möglich das sich da inzwischen was geändert hat. Ist ja leicht auszutesten. Bis jetzt hat man eine unbegrenzte Endlosschleife so ausgeführt: Code:
for [{_i=0},{_i<1},{_i=_i}] do { ...; ...; sleep 0.01; //Schleife verlassen? if(???)then(_i=1); }; Die Grenzen der While und For Schleife Geändert von Vienna (12.07.2008 um 13:49 Uhr). |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
Themen-Optionen | |
Ansicht | |
|
|
Ähnliche Themen | ||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
Einfache Reskins aus BIS Pickups | Mr.g-c | Mods & Addons | 4 | 06.07.2008 17:26 |
Check ob Fahrzeug zerstört | Angelo85 | Editing | 6 | 08.12.2006 10:09 |