1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
Private ['_id','_label','_marker','_markerRanPos','_markers','_randomPos','_searchArea','_sideWin','_size','_task','_taskState','_uav'];
_size = _this select 0;
_label = _this select 1;
_id = _this select 2;
_uav = _this select 3;
_marker = Format["%1%2",_label,_id];
//--- Does the client already have the mission (jip handler, some client joining won't have it running)?
if (((getMarkerPos _marker) select 0) != 0 && ((getMarkerPos _marker) select 1) != 0) exitWith {};
taskHint [format [localize "str_taskNew" + "\n%1",localize 'STR_WF_M_UAV_RetrieveModule'], [1,1,1,1], "taskNew"];
_randomPos = getPos _uav;
//--- Determine the marker random area.
_searchArea = (_size/1.5);
_markerRanPos = [(_randomPos select 0)+random(_searchArea)-random(_searchArea),(_randomPos select 1)+random(_searchArea)-random(_searchArea)];
_task = player createSimpleTask [Format["TSK_M_%1%2",_label,_id]];
_task setSimpleTaskDescription [localize 'STR_WF_M_UAV_RetrieveModule_Description', localize 'STR_WF_M_UAV_RetrieveModule', localize 'STR_WF_M_UAV_RetrieveModule'];
_task setSimpleTaskDestination _markerRanPos;
//--- Marker part.
_markers = [_marker];
createMarkerLocal [_marker, _markerRanPos];
_marker setMarkerColorLocal "ColorYellow";
_marker setMarkerShapeLocal "ELLIPSE";
_marker setMarkerBrushLocal "BORDER";
_marker setMarkerSizeLocal [_size,_size];
_marker = Format["0%1%2",_label,_id];
_markers = _markers + [_marker];
createMarkerLocal [_marker, _markerRanPos];
_marker setMarkerColorLocal "ColorYellow";
_marker setMarkerShapeLocal "ELLIPSE";
_marker setMarkerBrushLocal "FDIAGONAL";
_marker setMarkerSizeLocal [_size,_size];
_marker = Format["00%1%2",_label,_id];
_markers = _markers + [_marker];
createMarkerLocal [_marker, _markerRanPos];
_marker setMarkerColorLocal "ColorYellow";
_marker setMarkerTypeLocal "pickup";
_marker setMarkerSizeLocal [0.5,0.5];
_marker setMarkerTextLocal "UAV Crash Site";
//--- Wait for the result.
waitUntil {sleep 5; _sideWin = _uav getVariable 'side'; !(isNil '_sideWin')};
_taskState = if (side player == (_uav getVariable 'side')) then {"Succeeded"} else {"Failed"};
//--- Wait for mission completion.
waitUntil {sleep 5; (isNull _uav)};
_task setTaskState _taskState;
if (_taskState == 'Succeeded') then {
taskHint [format [localize "str_taskAccomplished" + "\n%1",localize 'STR_WF_M_UAV_RetrieveModule'], [1,1,1,1], "taskDone"];
} else {
taskHint [format [localize "str_taskFailed" + "\n%1",localize 'STR_WF_M_UAV_RetrieveModule'], [1,1,1,1], "taskFailed"];
};
sleep 30;
//--- Remove the task & markers.
player removeSimpleTask _task;
{deleteMarkerLocal _x} forEach _markers;
|