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.