Einzelnen Beitrag anzeigen
Alt 30.05.2011, 18:58   #14 (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

Funktioniert recht gut. Müsste auch in MP klappen.

Der Namen Manager könnte man noch als Parameter in der Aktion übergeben.

Ich habe das Skript in eine kommentierte Form umgeschrieben:

Code:
//////////////////////////////////////////////////////////////////
// Function file for Armed Assault
// Created by: UAV_Test_Für_Host Ghost [AUT]
//////////////////////////////////////////////////////////////////

private ["_terminal","_player","_manager","_gruppe","_drohne","_timeout"];

_terminal = _this select 0; //Drohnen-Terminal
_player   = _this select 1; //Spieler für die Drohnen-Kontrolle
_manager  = Manager;        //Globaler Name des Drohnen-Managers

UAV = true;                 //Globalae Variable, sperrt weiteren Zugriff auf die Aktion des Terminals
publicVariable "UAV";

//Drohne erstellen
_drohne = createVehicle ["MQ9PredatorB_US_EP1", position _Terminal, [], 0, "FLY"];
_gruppe = createGroup West;
"US_Soldier_Pilot_EP1" createUnit [_terminal, _gruppe, "this moveindriver _drohne", 1,"FROM"]; //Dummy-Pilot  für Drohne
"US_Soldier_Pilot_EP1" createUnit [_terminal, _gruppe, "this moveingunner _drohne", 1,"FROM"]; //Dumme-Gunner für Drohne
_drohne flyInHeight 250; //Drohnen Flughöhe

sleep 2;

//Synchronisation mit dem Drohnen-Manager
_manager synchronizeObjectsAdd [_player,_terminal,_drohne];

TitleText["Die UAV Übertragung ist nun Aktiv!\n\nSicht-Aktion beim UVA-Terminal vorhanden!","plain down"];

_timeout = time + 300; //Zeit in Sekunden bis zur Zerstörung der Drohne

//Warten auf Ereignis (ohne sleep 2; spinnt das Programm)
waitUntil {sleep 2;!alive _drohne OR !alive _player OR _timeout < time};

//Synchronisation beenden
_manager synchronizeObjectsRemove [_player,_terminal,_drohne];
//Dummys löschen
{deleteVehicle _x} forEach units _gruppe;

TitleText["Die Drohne ist zerstört!","plain down",2];

sleep 2;

UAV = false;  // Zugriff auf die Drohnen-Aktion wieder freigeben
publicVariable "UAV";


//Drohne nach 60 Sekunden löschen
sleep 60;
deleteVehicle _drohne;
Interessant ist die Zeile mit waitUntil. Wenn man dort das eingebundene sleep 2; weglässt, dann spinnt die Routine.
Vienna ist offline