rendered paste body////////////////////////////////////////////////////////////////////////////////
/// <header>
/// This SQF Function created using Project: JADE v0.6 on 2007-04-28 08:41:30Z
///
/// <author>Sickboy</author>
/// <filename>fCreateObjective.sqf</filename>
/// <version>1.0.0</version>
///
/// <summary>
/// This function will create a objective
/// </summary>
///
/// <parameters>
/// [_obj,_sub,_side,_pside,_pos,_basepos]
///
/// </parameters>
///
/// <returns>{Edit Me}</returns>
/// </header>
////////////////////////////////////////////////////////////////////////////////
private ["_basepos","_conf","_obj","_objId","_pos","_ps","_pside","_s","_side","_sub","_caller"];
_obj=_this select 0;
_sub=_this select 1;
_side=_this select 2;
_pside=_this select 3;
_pos=_this select 4;
_basepos=_this select 5;
if(count _this>6)then{_conf=_this select 6;}else{_conf=[];};
_caller=["CALLER:","caller:",(group server),_conf] call six_fgetArg;
_s=call compile (six_sides select _side);
_ps=call compile (six_sides select _pside);
if(six_debug_miss&&six_isClient)then{server globalChat format["Creating Objective Type %1, Subtype %2, Side: %3, PlayerSide: %4, Position: %5",_obj,_sub,_s,_ps,_pos];};
if(isNil "six_aim_objGen")then{six_aim_objGen=0;}else{six_aim_objGen=six_aim_objGen+1;};_objId=six_aim_objGen;
_obj call compile preprocessFile (SIX_AIM_P+"c\cfg_Objectives.sqf");
// This is from the above mentioned cfg_Objectives.sqf:
// from fCreateObjective: private ["_basepos","_conf","_obj","_objC","_objId","_pos","_ps","_pside","_s","_side","_sub","_caller"];
private ["_ar","_objC","_units","_u","_trg","_i","_grp","_am"];
_ar=[];_objC=0;
six_aim_objtypes=["Rescue","Recover","Destroy"];
six_aim_objsubs=[["Captives","Civilian"],["Documents","Vehicles"],["Tanks","APCs","Buildings"]];
if(str(_caller)==str(group server))then{_caller="ALL";};
switch _this do
{
case 0:
{
// Rescue
switch _sub do
{
case 0:
{
// Captives
_units=[21,_conf select 2] call six_fGetCfg;
};
case 1:
{
// Civilian
_units=[1,300] call six_fGetCfg;
};
};
_grp=createGroup _ps;_i=0;_am=(_conf select 0) call six_fRndInt;
while{_i<_am}do
{
_u=[_grp,_units call six_fRndSelect,_pos,six_ranks_inf call six_fRndSelect] call six_fCreateUnit;
_ar=_ar+[_u];
removeAllWeapons _u;
_u setCaptive true;
_u disableAI "MOVE";
_objC=_objC+1;
_i=_i+1;
};
[_ar,[format["six_aim_obj%1_",_objId]],["RANDOM","GLOBAL"]] call six_fSetVarName;
call compile format["six_aim_obj%1_ar=_ar;[] spawn { while{({alive _x}count six_aim_obj%1_ar)>0}do{{if(!alive _x)then{six_aim_obj%1_ar=six_aim_obj%1_ar-[_x];};sleep 1;}forEach six_aim_obj%1_ar;sleep 60;};};",_objId];
_units=[1,_conf select 1] call six_fGetCfg;
_grp=createGroup _s;_am=_am*4;_i=0;
while{_i<_am}do{_u=[_grp,_units call six_fRndSelect,_pos,six_ranks_inf call six_fRndSelect] call six_fCreateUnit;_i=_i+1;};
_trg=createTrigger ["EmptyDetector", _pos ];
_trg setTriggerActivation [str(_ps), "PRESENT", true];
_trg setTriggerArea [5, 5, 0, false ];
_trg setTriggerStatements ["this", format["d=[%1,%2,%3,[thisList,%4]] spawn six_fObjHandler",_obj,_objId,_objC,_basepos], ""];
_trg setTriggerTimeout [10, 10, 10, false ];
[format["six_aim_obj%1_m",_objId], _pos, "ICON", [1,1], "GLOBAL", "TEXT:", format["OBJ%1: %2 %3 (%4)",_objId,six_aim_objtypes select _obj,((six_aim_objsubs select _obj) select _sub),_caller], "TYPE:", "PickUp", "COLOR:", "ColorRed"] call six_fCreateMarker;
[format["six_aim_obj%1_e",_objId], _basepos, "ICON", [1,1], "GLOBAL", "TEXT:", format["OBJ%1: End (%2)",_objId,_caller], "TYPE:", "End", "COLOR:", "ColorBlack"] call six_fCreateMarker;
call compile format["six_aim_obj%1_d=false;publicVariable 'six_aim_obj%1_d'; six_aim_obj%1_trg=_trg",_objId];
};
case 1:
{
// Recover
switch _sub do
{
case 0:
{
// Documents
_units=["DOCUMENT_PLACEHOLDER"];
};
case 1:
{
// Vehicles
_units=[3,_conf select 1] call six_fGetCfg;
};
};
_i=0;_am=(_conf select 0) call six_fRndInt;
while{_i<_am}do
{
_u=(_units call six_fRndSelect) createVehicle _pos;
_u lock false;
_ar=_ar+[_u];
_objC=_objC+1;
_i=_i+1;
};
[_ar,[format["six_aim_obj%1_",_objId]],["RANDOM"]] call six_fSetVarName;
call compile format["six_aim_obj%1_ar=_ar;[] spawn { while{({alive _x}count six_aim_obj%1_ar)>0}do{{if(!alive _x)then{six_aim_obj%1_ar=six_aim_obj%1_ar-[_x];};sleep 1;}forEach six_aim_obj%1_ar;sleep 60;};};",_objId];
_units=[1,_conf select 1] call six_fGetCfg;
_grp=createGroup _s;_am=_am*4;_i=0;
while{_i<_am}do{_u=[_grp,_units call six_fRndSelect,_pos,six_ranks_inf call six_fRndSelect] call six_fCreateUnit;_i=_i+1;};
_trg=createTrigger ["EmptyDetector", _pos ];
_trg setTriggerActivation ["ANY", "PRESENT", true];
_trg setTriggerArea [20, 20, 0, false ];
_trg setTriggerStatements ["this", format["d=[%1,%2,%3,[thisList,%4]] spawn six_fObjHandler",_obj,_objId,_objC,_basepos], ""];
_trg setTriggerTimeout [10, 10, 10, false ];
[format["six_aim_obj%1_m",_objId], _pos, "ICON", [1,1], "GLOBAL", "TEXT:", format["OBJ%1: %2 %3 (%4)",_objId,six_aim_objtypes select _obj,((six_aim_objsubs select _obj) select _sub),_caller], "TYPE:", "PickUp", "COLOR:", "ColorRed"] call six_fCreateMarker;
[format["six_aim_obj%1_e",_objId], _basepos, "ICON", [1,1], "GLOBAL", "TEXT:", format["OBJ%1: End (%2)",_objId,_caller], "TYPE:", "End", "COLOR:", "ColorBlack"] call six_fCreateMarker;
call compile format["six_aim_obj%1_d=false;publicVariable 'six_aim_obj%1_d'; six_aim_obj%1_trg=_trg",_objId];
};
case 2:
{
// Destroy
switch _sub do
{
case 0:
{
// Tanks
_units=[3,_conf select 1] call six_fGetCfg;
};
case 1:
{
// APCs
_units=[2,_conf select 1] call six_fGetCfg;
};
case 2:
{
// Buildings
_units=[22,_conf select 1] call six_fGetCfg;
};
};
_i=0;_am=(_conf select 0) call six_fRndInt;
while{_i<_am}do
{
_u=(_units call six_fRndSelect) createVehicle _pos;
_u lock true;
_ar=_ar+[_u];
_objC=_objC+1;
_i=_i+1;
};
[_ar,[format["six_aim_obj%1_",_objId]],["RANDOM"]] call six_fSetVarName;
call compile format["six_aim_obj%2_ar=_ar;[] spawn { private['_y'];_y=six_aim_obj%2_ar;while{({alive _x}count _y)>0}do{{if(!alive _x)then{_y=_y-[_x];};sleep 1;}forEach _y;sleep 60;};[%1,%2,%3,[thisList,%4]] spawn six_fObjHandler};",_obj,_objId,_objC,_basepos];
_units=[1,_conf select 1] call six_fGetCfg;
_grp=createGroup _s;_am=_am*4;_i=0;
while{_i<_am}do{_u=[_grp,_units call six_fRndSelect,_pos,six_ranks_inf call six_fRndSelect] call six_fCreateUnit;_i=_i+1;};
[format["six_aim_obj%1_m",_objId], _pos, "ICON", [1,1], "GLOBAL", "TEXT:", format["OBJ%1: %2 %3 (%4)",_objId,six_aim_objtypes select _obj,((six_aim_objsubs select _obj) select _sub),_caller], "TYPE:", "Destroy", "COLOR:", "ColorRed"] call six_fCreateMarker;
[format["six_aim_obj%1_e",_objId], _basepos, "ICON", [1,1], "GLOBAL", "TEXT:", format["OBJ%1: End (%2)",_objId,_caller], "TYPE:", "End", "COLOR:", "ColorBlack"] call six_fCreateMarker;
call compile format["six_aim_obj%1_d=false;publicVariable 'six_aim_obj%1_d';",_objId];
};
};