diff --git a/@ExileServer/addons/custom_server/Missions/Static/Code/GMS_fnc_sm_spawnMission.sqf b/@ExileServer/addons/custom_server/Missions/Static/Code/GMS_fnc_sm_spawnMission.sqf new file mode 100644 index 0000000..1864483 --- /dev/null +++ b/@ExileServer/addons/custom_server/Missions/Static/Code/GMS_fnc_sm_spawnMission.sqf @@ -0,0 +1,55 @@ +/* + Run scripts exported from M3EDEN Editor plug in for Arma 3 or other map addons. + Add addons to the arrays for Epoch or Exile as appropriate. + Arrays should contain ["mapname", "name of folder within mapaddons","name of file to execute"] + by Ghostrider-DbD- + for DBD Clan + 11/12/16 + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ +if (!isServer) exitWith{}; +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +params["_mission"]; +// Spawn landscape +// params["_objects"]; +[_missionLandscape] call blck_fnc_sm_spawnObjects; +uiSleep 10; // Let the objects 'settle' before placing anything on or around them. + + +// Spawn Air Patrols +// params["_airPatrols","_noAirPatrols","_heliTypes","_center","_difficulty","_uniforms","_headGear"]; +[_airPatrols,_noAirPatrols,_aircraftTypes,_missionCenter,_difficulty,_uniforms,_headgear,_weapons] call blck_fnc_sm_spawnAirPatrols; +//uiSleep 1; + +// Spawn Vehicle Patrols +// params["_coords","_noVehiclePatrols","_vehiclePatrolSpawns","_aiDifficultyLevel","_uniforms","_headGear",["_missionType","unspecified"]]; +[_missionCenter,_noVehiclePatrols,_vehiclePatrolParameters,_difficulty,_uniforms,_headGear] call blck_fnc_sm_spawnVehiclePatrols; +//uiSleep 1; + + +// spawn infantry +// params["_patrols","_coords",["_minNoAI",3],["_maxNoAI",6],["_aiDifficultyLevel","red"],["_weapons",blck_WeaponList_Orange],["_uniforms",blck_SkinList],["_headGear",blck_BanditHeadgear]]; +[_aiGroupParameters, _missionCenter,_minNoAI,_maxNoAI,_difficulty,_weapons,_uniforms,_headGear] call blck_fnc_sm_spawnInfantryPatrols; +//uiSleep 1; + +// spawn loot vehicles +// params["_objects","_coords","_loot","_lootCounts"]; +[_missionLootVehicles,_missionCenter,_crateLoot,_lootCounts] call blck_fnc_sm_spawnLootContainers; + +// Spawn static weapons +// params["_missionEmplacedWeapons","_noEmplacedWeapons","_aiDifficultyLevel","_coords","_uniforms","_headGear"]; +[_missionEmplacedWeapons,_noEmplacedWeapons,_difficulty,_missionCenter,_uniforms,_headGear] call blck_fnc_sm_spawnEmplaced; + +// spawn loot chests +[_missionLootBoxes,_missionCenter,_crateLoot,_lootCounts] call blck_fnc_sm_spawnLootContainers; + +_blck_localMissionMarker = ["",_missionCenter,"","",_markerColor,_markerType]; +[_blck_localMissionMarker] execVM "debug\spawnMarker.sqf"; + +diag_log format["[blckeagls] Static Mission Spawner: Mission %1 spawned",_mission]; + diff --git a/@ExileServer/addons/custom_server/Missions/Static/Code/GMS_sm_checkForPlayerNearMission.sqf b/@ExileServer/addons/custom_server/Missions/Static/Code/GMS_sm_checkForPlayerNearMission.sqf new file mode 100644 index 0000000..b24b4ef --- /dev/null +++ b/@ExileServer/addons/custom_server/Missions/Static/Code/GMS_sm_checkForPlayerNearMission.sqf @@ -0,0 +1,23 @@ +/* + Run scripts exported from M3EDEN Editor plug in for Arma 3 or other map addons. + Add addons to the arrays for Epoch or Exile as appropriate. + Arrays should contain ["mapname", "name of folder within mapaddons","name of file to execute"] + by Ghostrider-DbD- + for DBD Clan + 11/12/16 + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ + +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +{ + private ["_missionCenter"]; + _missionCenter = _x select 0; + if ([_missionCenter,2000] call blck_fnc_playerInRange then ([_missionCenter] execVM format["%1", _x select 1]; +} forEach blck_staticMissions; + + diff --git a/@ExileServer/addons/custom_server/Missions/Static/Code/GMS_sm_init_functions.sqf b/@ExileServer/addons/custom_server/Missions/Static/Code/GMS_sm_init_functions.sqf new file mode 100644 index 0000000..e21b877 --- /dev/null +++ b/@ExileServer/addons/custom_server/Missions/Static/Code/GMS_sm_init_functions.sqf @@ -0,0 +1,28 @@ +/* + Run scripts exported from M3EDEN Editor plug in for Arma 3 or other map addons. + Add addons to the arrays for Epoch or Exile as appropriate. + Arrays should contain ["mapname", "name of folder within mapaddons","name of file to execute"] + by Ghostrider-DbD- + for DBD Clan + 11/12/16 + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ + +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; + +//blck_fnc_sm_checkForPlayerNearMission = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\StaticMissions_checkForPlayerNearMission.sqf"; +blck_fnc_sm_spawnAirPatrols = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_sm_spawnAirPatrols.sqf"; +blck_fnc_sm_spawnEmplaced = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_sm_spawnEmplaced.sqf"; +blck_fnc_sm_spawnInfantryPatrols = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_sm_spawnInfantryPatrols.sqf"; +blck_fnc_sm_spawnLootContainers = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_sm_spawnLootContainers.sqf"; +blck_fnc_sm_spawnObjects = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_sm_spawnObjects.sqf"; +blck_fnc_sm_spawnVehiclePatrols = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_sm_spawnVehiclePatrols.sqf"; + +diag_log "[blckeagls] GMS_sm_init_functions.sqf "; + +blck_sm_functionsLoaded = true; \ No newline at end of file diff --git a/@ExileServer/addons/custom_server/Missions/Static/Code/GMS_sm_spawnAirPatrols.sqf b/@ExileServer/addons/custom_server/Missions/Static/Code/GMS_sm_spawnAirPatrols.sqf new file mode 100644 index 0000000..422affe --- /dev/null +++ b/@ExileServer/addons/custom_server/Missions/Static/Code/GMS_sm_spawnAirPatrols.sqf @@ -0,0 +1,54 @@ +/* + Run scripts exported from M3EDEN Editor plug in for Arma 3 or other map addons. + Add addons to the arrays for Epoch or Exile as appropriate. + Arrays should contain ["mapname", "name of folder within mapaddons","name of file to execute"] + by Ghostrider-DbD- + for DBD Clan + 11/12/16 + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ + +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; + +/* +_coords = _this select 0; +_skillAI = _this select 1; +_weapons = _this select 2; +_uniforms = _this select 3; +_headGear = _this select 4; +_helis = _this select 5; +*/ + +params["_airPatrols","_noAirPatrols","_heliTypes","_center","_difficulty","_uniforms","_headGear","_weapons"]; +diag_log format["_sm_spawnAirPatrols:: _this = %1",_this]; +diag_log format["_sm_spawnAirPatrols:: _airPatrols = %1",_airPatrols]; +if (_airPatrols isEqualTo []) then +{ + for "_i" from 1 to _noAirPatrols do + { + /* + _coords = _this select 0; + _skillAI = _this select 1; + _weapons = _this select 2; + _uniforms = _this select 3; + _headGear = _this select 4; + _helis = _this select 5; + */ + [_center,_difficulty,_weapons,_uniforms,_headGear,_heliTypes,0] call blck_fnc_spawnMissionHeli; + }; +} else { + { + /* + /*[aircraft classname, position, difficulty(blue, red etc)]*/ + _aircraft = _x select 0; + _pos = _x select 1; + _difficulty = _x select 2; + [_pos,_difficulty,_weapons,_uniforms,_headGear,_aircraft] call blck_fnc_spawnMissionHeli; + }forEach _airPatrols; +}; + diff --git a/@ExileServer/addons/custom_server/Missions/Static/Code/GMS_sm_spawnEmplaced.sqf b/@ExileServer/addons/custom_server/Missions/Static/Code/GMS_sm_spawnEmplaced.sqf new file mode 100644 index 0000000..2747727 --- /dev/null +++ b/@ExileServer/addons/custom_server/Missions/Static/Code/GMS_sm_spawnEmplaced.sqf @@ -0,0 +1,62 @@ +/* + Run scripts exported from M3EDEN Editor plug in for Arma 3 or other map addons. + Add addons to the arrays for Epoch or Exile as appropriate. + Arrays should contain ["mapname", "name of folder within mapaddons","name of file to execute"] + by Ghostrider-DbD- + for DBD Clan + 11/12/16 + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ + +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; + +params["_missionEmplacedWeapons","_noEmplacedWeapons","_aiDifficultyLevel","_coords","_uniforms","_headGear"]; +private["_return","_emplacedWeps","_emplacedAI","_wep","_units","_gunner","_abort","_pos","_mode"]; +_emplacedWeps = []; +_emplacedAI = []; +_units = []; +_abort = false; +_pos = []; + +//diag_log format["_sm_spawnEmplaced :: _missionEmplacedWeapons = %1",_missionEmplacedWeapons]; +// Define _missionEmplacedWeapons if not already configured. +if (_missionEmplacedWeapons isEqualTo []) then +{ + _missionEmplacedWeaponPositions = [_coords,_noEmplacedWeapons,35,50] call blck_fnc_findPositionsAlongARadius; + { + _static = selectRandom blck_staticWeapons; + //diag_log format["_fnc_spawnEmplacedWeaponArray: creating spawn element [%1,%2]",_static,_x]; + _missionEmplacedWeapons pushback [_static,_coords vectorAdd _x,_aiDifficultyLevel]; + //diag_log format["_fnc_spawnEmplacedWeaponArray: _mi updated to %1",_missionEmplacedWeapons]; + } forEach _missionEmplacedWeaponPositions; +}; +//diag_log format["_sm_spawnEmplaced:: _missionEmplacedWeapons = %1",_missionEmplacedWeapons]; +{ + _wepnClassName = _x select 0; + _pos = _x select 1; + _difficulty = _x select 2; + + // params["_pos", ["_numai1",5], ["_numai2",10], ["_skillLevel","red"], "_center", ["_minDist",20], ["_maxDist",35], ["_uniforms",blck_SkinList], ["_headGear",blck_headgear] ]; + _empGroup = [_pos,1,1,_difficulty,_pos,1,2,_uniforms,_headGear,false] call blck_fnc_spawnGroup; + _empGroup setcombatmode "RED"; + _empGroup setBehaviour "COMBAT"; + [_pos,0.01,0.02,_empGroup,"random","SAD","emplaced"] spawn blck_fnc_setupWaypoints; + //if (isNull _empGroup) exitWith {_abort = _true}; + _wep = [_wepnClassName,[0,0,0],false] call blck_fnc_spawnVehicle; + _empGroup setVariable["groupVehicle",_wep]; + _wep setVariable["vehicleGroup",_empGroup]; + _wep setVariable["DBD_vehType","emplaced"]; + _wep setPosATL _pos; + [_wep,false] call blck_fnc_configureMissionVehicle; + _units = units _empGroup; + _gunner = _units select 0; + _gunner moveingunner _wep; +} forEach _missionEmplacedWeapons; +blck_monitoredVehicles append _emplacedWeps; + +true diff --git a/@ExileServer/addons/custom_server/Missions/Static/Code/GMS_sm_spawnInfantryPatrols.sqf b/@ExileServer/addons/custom_server/Missions/Static/Code/GMS_sm_spawnInfantryPatrols.sqf new file mode 100644 index 0000000..eb0aa5d --- /dev/null +++ b/@ExileServer/addons/custom_server/Missions/Static/Code/GMS_sm_spawnInfantryPatrols.sqf @@ -0,0 +1,39 @@ +/* + + Spawns infantry patrols for static missions. + + by Ghostrider-DbD- + 8/15/17 + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ + +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; + +// params["_coords",["_minNoAI",3],["_maxNoAI",6],["_aiDifficultyLevel","red"],["_uniforms",blck_SkinList],["_headGear",blck_BanditHeadgear]]; +params["_patrols","_coords",["_minNoAI",3],["_maxNoAI",6],["_aiDifficultyLevel","red"],["_weapons",blck_WeaponList_Orange],["_uniforms",blck_SkinList],["_headGear",blck_BanditHeadgear]]; +//diag_log format["_sm_spawnInfantryPatrols:: _this = %1",_this]; +//diag_log format["_sm_spawnInfantryPatrols:: patrols = %1",_patrols]; +if (_patrols isEqualTo []) then +{ + // Use the random spawn logic from the regular dyanmic mission system. + [_coords,_minNoAI,_maxNoAI,_aiDifficultyLevel,_uniforms,_headGear] call blck_fnc_spawnMissionAI +} else { + { + //diag_log format["_sm_spawnInfantryPatrols.sqf:: _x = %1",_x]; + // Use the pre-defined spawn positions and other parameters for each group. + // [[22819.4,16929.5,5.33892],"red",4, 75] + private["_pos","_difficulty","_noAI","_patrolRadius"]; + _pos = _x select 0; // Position at which to spawn the group + _difficulty = _x select 1; // AI difficulty setting (blue, green etc) + _noAI = _x select 2; // Number of AI to spawn with the group + _patrolRadius = _x select 3; // Radius within which AI should patrol + // params["_pos", ["_numai1",5], ["_numai2",10], ["_skillLevel","red"], "_center", ["_minDist",20], ["_maxDist",35], ["_uniforms",blck_SkinList], ["_headGear",blck_headgear],["_configureWaypoints",true] ]; + [_pos,_noAI,_noAI,_difficulty,_pos,_patrolRadius,_patrolRadius,_uniforms,_headGear,true] call blck_fnc_spawnGroup; + }forEach _patrols; +}; + diff --git a/@ExileServer/addons/custom_server/Missions/Static/Code/GMS_sm_spawnLootContainers.sqf b/@ExileServer/addons/custom_server/Missions/Static/Code/GMS_sm_spawnLootContainers.sqf new file mode 100644 index 0000000..f8ad82e --- /dev/null +++ b/@ExileServer/addons/custom_server/Missions/Static/Code/GMS_sm_spawnLootContainers.sqf @@ -0,0 +1,45 @@ +/* + Run scripts exported from M3EDEN Editor plug in for Arma 3 or other map addons. + Add addons to the arrays for Epoch or Exile as appropriate. + Arrays should contain ["mapname", "name of folder within mapaddons","name of file to execute"] + by Ghostrider-DbD- + for DBD Clan + 11/12/16 + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ + +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; + +params["_objects","_coords","_loot","_lootCounts"]; +private["_object"]; +//diag_log format["_sm_spawnLootContainers:: _this = %1",_this]; +//diag_log format["_sm_spawnLootContainers:: _objects = %1",_objects]; + +if !(_objects isEqualTo []) exitWith +{ // Spawn loot crates where specified in _objects using the information for loot parameters provided for each location. + { + private _object = (_x select 0) createVehicle [0,0,0]; + _object setPosASL (_x select 1); + _object setVectorDirAndUp (_x select 2); + _object enableSimulationGlobal ((_x select 3) select 0); + _object allowDamage ((_x select 3) select 1); + _loot = _x select 4; // A bit slower this way because you have to allocate memory and transfer the information but more clear for coding. + _lootCounts = _x select 5; + [_object, _loot, _lootCounts] call blck_fnc_fillBoxes; + } forEach _objects; +}; + +// In the case where no loot crate parameters are defined in _objects just spawn 1 at the center of the mission. +if (_objects isEqualTo []) then +{ + + _crateType = selectRandom blck_crateTypes; + _crate = [_coords,_crateType] call blck_fnc_spawnCrate; + [_crate,_loot,_lootCounts] call blck_fnc_fillBoxes; +}; + diff --git a/@ExileServer/addons/custom_server/Missions/Static/Code/GMS_sm_spawnObjects.sqf b/@ExileServer/addons/custom_server/Missions/Static/Code/GMS_sm_spawnObjects.sqf new file mode 100644 index 0000000..ad688cd --- /dev/null +++ b/@ExileServer/addons/custom_server/Missions/Static/Code/GMS_sm_spawnObjects.sqf @@ -0,0 +1,41 @@ +/* + Run scripts exported from M3EDEN Editor plug in for Arma 3 or other map addons. + Add addons to the arrays for Epoch or Exile as appropriate. + Arrays should contain ["mapname", "name of folder within mapaddons","name of file to execute"] + by Ghostrider-DbD- + for DBD Clan + 11/12/16 + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ + +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; + +params["_objects"]; +diag_log format["_sm_spawnObjects:: _objects = %1",_objects]; +private["_objects","_object"]; + +{ + //diag_log format["_sm_spawnObjects:: spawning object of type %1 with parameters of %2",_x select 0, _x]; + private _object = (_x select 0) createVehicle [0,0,0]; + _object setPosASL (_x select 1); + _object setVectorDirAndUp (_x select 2); + _object enableSimulationGlobal ((_x select 3) select 0); + _object allowDamage ((_x select 3) select 1); +} forEach _objects; + + +/* +if (_objects isEqualTo [] and (count _this isEqualTo 4) then +{ + +} else { + _crateType = selectRandom blck_crateTypes; + _crate = [_coords,_crateType] call blck_fnc_spawnCrate; + [_crate,_loot,_lootCounts] call blck_fnc_fillBoxes; +}; + diff --git a/@ExileServer/addons/custom_server/Missions/Static/Code/GMS_sm_spawnVehiclePatrols.sqf b/@ExileServer/addons/custom_server/Missions/Static/Code/GMS_sm_spawnVehiclePatrols.sqf new file mode 100644 index 0000000..2d8dec0 --- /dev/null +++ b/@ExileServer/addons/custom_server/Missions/Static/Code/GMS_sm_spawnVehiclePatrols.sqf @@ -0,0 +1,54 @@ +/* + Run scripts exported from M3EDEN Editor plug in for Arma 3 or other map addons. + Add addons to the arrays for Epoch or Exile as appropriate. + Arrays should contain ["mapname", "name of folder within mapaddons","name of file to execute"] + by Ghostrider-DbD- + for DBD Clan + 11/12/16 + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ + +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; + + +params["_coords","_noVehiclePatrols","_vehiclePatrolSpawns","_aiDifficultyLevel","_uniforms","_headGear",["_missionType","unspecified"]]; +diag_log format["_sm_spawnVehiclePatrols:: _vehiclePatrolSpawns = %1",_vehiclePatrolSpawns]; +private["_vehGroup","_patrolVehicle","_missionAI","_missiongroups","_vehicles","_return","_vehiclePatrolSpawns","_randomVehicle","_return","_abort"]; + +if (_vehiclePatrolSpawns isEqualTo []) then +{ + private["_spawnPoints","_vehType"]; + _spawnPoints = [_coords,_noVehiclePatrols,75,100] call blck_fnc_findPositionsAlongARadius; + { + // ["B_G_Offroad_01_armed_F",[22819.4,16929.5,3.17413],"red", 600], + _vehType = selectRandom blck_AIPatrolVehicles; + _vehiclePatrolSpawns pushBack [_vehType, _x, _aiDifficultyLevel, 150]; + } forEach _spawnPoints; +}; + +{ + private ["_vehicle","_spawnPos","_difficulty","_patrolRadius"]; + _vehicle = _x select 0; + _spawnPos = _x select 1; + _difficulty = _x select 2; + _patrolRadius = _x select 3; + _vehGroup = [_spawnPos,3,3,_difficulty,_spawnPos,1,2,_uniforms,_headGear,false] call blck_fnc_spawnGroup; + + //params["_center","_pos",["_vehType","I_G_Offroad_01_armed_F"],["_minDis",30],["_maxDis",45],["_group",grpNull]]; + _patrolVehicle = [_spawnPos,_spawnPos,_vehicle,_patrolRadius,_patrolRadius,_vehGroup] call blck_fnc_spawnVehiclePatrol; + _vehGroup setVariable["groupVehicle",_vehicle]; + + if !(isNull _patrolVehicle) then + { + _patrolVehicle setVariable["vehicleGroup",_vehGroup]; + }; +} forEach _vehiclePatrolSpawns; + +true + + diff --git a/@ExileServer/addons/custom_server/Missions/Static/GMS_StaticMissions_Lists.sqf b/@ExileServer/addons/custom_server/Missions/Static/GMS_StaticMissions_Lists.sqf new file mode 100644 index 0000000..dded2f5 --- /dev/null +++ b/@ExileServer/addons/custom_server/Missions/Static/GMS_StaticMissions_Lists.sqf @@ -0,0 +1,27 @@ +/* + Run scripts exported from M3EDEN Editor plug in for Arma 3 or other map addons. + Add addons to the arrays for Epoch or Exile as appropriate. + Arrays should contain ["mapname", "name of folder within mapaddons","name of file to execute"] + by Ghostrider-DbD- + 8/15/17 + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ + +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; + +if (!isServer) exitWith{}; + +private ["_staticMissions"]; + +_staticMissions = [ + // [mod (Epoch, Exile), map (Altis, Tanoa etc), mission center, eg [10445,2014,0], filename.sqf (name of static mission template for that mission)]; + //["Epoch","Altis","\q\addons\custom_server\Missions\Static\staticMissionExample1.sqf"], + //["Exile","Altis","\q\addons\custom_server\Missions\Static\missions\staticMissionExample1.sqf"] +]; + +diag_log "[blckeagls] GMS_StaticMissions_Lists.sqf "; diff --git a/@ExileServer/addons/custom_server/Missions/Static/GMS_StaticMissions_init.sqf b/@ExileServer/addons/custom_server/Missions/Static/GMS_StaticMissions_init.sqf new file mode 100644 index 0000000..b33e800 --- /dev/null +++ b/@ExileServer/addons/custom_server/Missions/Static/GMS_StaticMissions_init.sqf @@ -0,0 +1,55 @@ +/* + Run scripts exported from M3EDEN Editor plug in for Arma 3 or other map addons. + Add addons to the arrays for Epoch or Exile as appropriate. + Arrays should contain ["mapname", "name of folder within mapaddons","name of file to execute"] + by Ghostrider-DbD- + for DBD Clan + 11/12/16 + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ +if (!isServer) exitWith{}; + +diag_log "[blckeagls] GMS_StaticMissions_init.sqf "; + +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +#include "\q\addons\custom_server\Missions\Static\GMS_StaticMissions_Lists.sqf"; +[] execVM "\q\addons\custom_server\Missions\Static\Code\GMS_sm_init_functions.sqf"; +//while{ (isNil "blck_sm_functionsLoaded"; uiSleep 0.1]; +uiSleep 3; +private["_mod","_map","_missionMod","_missionMap","_missionLocation","_missionDataFile"]; +diag_log "[blckeagls] GMS_StaticMissions_init.sqf "; +_mod = call blck_fnc_getModType; +diag_log format["[blckeagls] GMS_StaticMissions_init.sqf ",_mod]; +diag_log "[blckeagls] GMS_StaticMissions_init.sqf "; +_map = toLower worldName; +diag_log format["[blckeagls] GMS_StaticMissions_init.sqf ",_map]; +blck_staticMissions = []; +diag_log format["[blckeagls] GMS_StaticMissions_init.sqf <_staticMissions = %1>",_staticMissions]; +{ + diag_log format["[blckeagls] GMS_StaticMissions_init.sqf ",_x]; + [] execVM format["%1",(_x select 2)]; + uiSleep 15; +}forEach _staticMissions; +/* +{ + _missionMod = _x select 0; + _missionMap = _x select 1; + //_missionLocation = _x select 2; + _missionDataFile = _x select 2; + diag_log format["blckegls] Static Mission System: ",_x]; + if (_mod isEqualTo _missionMod && _map isEqualTo _missionMap) then {blck_staticMissions pusback [_missionDataFile]; +}forEach _staticMissions; + +diag_log "[blckeagls] GMS_StaticMissions_init.sqf "; +{ + diag_log format["[blckeagls] Static Mission System: Initializing Mission %1", (_x select 0)]; + [_x select 0] execVM format["%1", _x select 0]; +} forEach blck_staticMissions; +*/ +diag_log "[blckeagls] GMS_StaticMissions_init.sqf "; + diff --git a/@ExileServer/addons/custom_server/Missions/Static/missions/staticMissionExample1.sqf b/@ExileServer/addons/custom_server/Missions/Static/missions/staticMissionExample1.sqf new file mode 100644 index 0000000..0c847d2 --- /dev/null +++ b/@ExileServer/addons/custom_server/Missions/Static/missions/staticMissionExample1.sqf @@ -0,0 +1,66 @@ +/* + This is a simple mission using randomly placed AI infantry, static weapons and vehicle patrols. + Please see staticMissionExample2.sqf for a more complete overview of how to configure static missions. +*/ +private ["_markerLabel","_endMsg","_startMsg","_lootCounts","_crateLoot","_markerMissionName","_missionLandscapeMode","_missionLandscape", + "_missionLootBoxes","_missionLootVehicles","_missionEmplacedWeapons","_minNoAI","_maxNoAI","_noAIGroups","_noVehiclePatrols","_noEmplacedWeapons", + "_uniforms","_headgear","_chanceReinforcements","_noPara","_helipatrol","_endCondition","_markerColor","_markerType","_useMines"]; + +_mission = "static mission example 1"; +_missionCenter = [24415,18909,0]; // I pulled this from the position of the marker. +_difficulty = "red"; // Skill level of AI (blue, red, green etc) +_crateLoot = blck_BoxLoot_Red; +_lootCounts = blck_lootCountsRed; + +_markerLabel = ""; +_markerType = ["ELIPSE",[200,200],"GRID"]; +// An alternative would be: +// _markerType = ["mil_triangle",[0,0]]; // You can replace mil_triangle with any other valid Arma 3 marker type https://community.bistudio.com/wiki/cfgMarkers +_markerColor = "ColorRed"; // This can be any valid Arma Marker Color +_markerMissionName = "Bad Guys Town"; +_missionLandscapeMode = "precise"; // acceptable values are "random","precise" + // In precise mode objects will be spawned at the relative positions specified. + // In the random mode, objects will be randomly spawned within the mission area. +_missionLandscape = [ + +]; // list of objects to spawn as landscape +_missionLootBoxes = []; // Parameters are "Box Item Code", array defining the loot to be spawned, and position. +// If this array is empty a single loot chest will be added at the center. If you add items loot chest(s) will be spawned in specific positions. +// +// [["box_classname1",_customLootArray1,[px,py,pz],["box_classname2",_customLootArray2,[px2,py2,pz2]] +// where _customLootArray follows the same format as blck_BoxLoot_Red and the other pre-defined arrays and +// where _customlootcountsarray1 also follows the same format as the predefined arrays like blck_lootCountsRed + +_missionLootVehicles = []; // [ ["vehicleClassName", [px, py, pz] /* possition at which to spawn*/, _loot /* pointer to array of loot (see below)]; +// When blank nothing is spawned. +// You can use the same format used for _missionLootBoxes to add vehicles with/without loot. + +_noEmplacedWeapons = [2,3]; +_missionEmplacedWeapons = []; // example [ ["emplacedClassName",[px, py, pz] /* position to spawn weapon */, difficulty /* difficulty of AI manning weapon (blue, red etc)] ]; + // can be used to define the precise placement of static weapons [[1,2,3] /*loc 1*/, [2,3,4] /*loc 2*/]; if blank random locations will be used + // If the number of possible locations exceeds the number of emplaced weapons specified above then only some of the locations in the array will have emplaced weapons spawned. + // If you leave this array blank then emplaced weapons will be spawned at random locations around the mission using the default list of emplace weapons. + +_minNoAI = blck_MinAI_Red; // Modify as needed +_maxNoAI = blck_MaxAI_Red; // Modify as needed. +_noAIGroups = blck_AIGrps_Red; // Modify as needed +_aiGroupParameters = []; + +_noVehiclePatrols = blck_SpawnVeh_Red; // Modified as needed; can be a numberic value (e.g. 3) or range presented as [2,4] +_vehiclePatrolParameters = []; //[ ["vehicleClassName",[px,py,pz] /* center of patrol area */, difficulty /* blue, red etc*/] ] + // When empty vehicle patrols will be scattered randomely around the mission. + // Allows you to define the location of the center of the patrol, vehicle type spawned, radius to patrol, and AI difficulty (blue, red, green etc). + // If _noVehiclePatrols is less than the number of locations specified only _noVehiclePatrols patrols will be spawned. +_noEmplacedWeapons = blck_SpawnEmplaced_Red; // Modified as needed; can be a numberic value (e.g. 3) or range presented as [2,4] + +_aircraftTypes = blck_patrolHelisRed; // You can use one of the pre-defined lists in blck_configs or your own custom array. +_noAirPatrols = blck_noPatrolHelisRed; // You can use one of the pre-defined values or a custom one. acceptable values are integers (1,2,3) or a range such as [2,4]; +_airPatrols = []; + +// Change _useMines to true/false below to enable mission-specific settings. +_useMines = blck_useMines; +_uniforms = blck_SkinList; // You can replace this list with a custom list of uniforms if you like. +_headgear = blck_headgear; // You can replace this list with a custom list of headgear. +_weapons = blck_WeaponList_Orange; // You can replace this list with a customized list of weapons, or another predifined list from blck_configs_epoch or blck_configs_exile as appropriate. + +#include "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnMission.sqf"; diff --git a/@ExileServer/addons/custom_server/Missions/Static/missions/staticMissionExample2.sqf b/@ExileServer/addons/custom_server/Missions/Static/missions/staticMissionExample2.sqf new file mode 100644 index 0000000..4674729 --- /dev/null +++ b/@ExileServer/addons/custom_server/Missions/Static/missions/staticMissionExample2.sqf @@ -0,0 +1,131 @@ +/* + This is a simple mission using precisely placed loot crates and infantry, static weapons and vehicle patrols. + See the accompanying example mission in the exampleMission folder to get an idea how I laid this out. + Note that I exported the mission using the exportAll function of M3EDEN editor. +*/ +private ["_markerLabel","_endMsg","_startMsg","_lootCounts","_crateLoot","_markerMissionName","_missionLandscapeMode","_missionLandscape", + "_missionLootBoxes","_missionLootVehicles","_missionEmplacedWeapons","_minNoAI","_maxNoAI","_noAIGroups","_noVehiclePatrols","_noEmplacedWeapons", + "_uniforms","_headgear","_chanceReinforcements","_noPara","_helipatrol","_endCondition","_markerColor","_markerType","_useMines"]; + +_mission = "static mission example #2"; // Included for additional documentation. Not intended to be spawned as a mission per se. +_missionCenter = [22907,16789,0]; // I pulled this from the position of the marker. +_difficulty = "red"; // Skill level of AI (blue, red, green etc) +_crateLoot = blck_BoxLoot_Orange; // You can use a customized _crateLoot configuration by defining an array here. It must follow the following format shown for a hypothetical loot array called _customLootArray + /* + _customLootArray = + // Loot is grouped as [weapons],[magazines],[items] in order to be able to use the correct function to load the item into the crate later on. + // Each item consist of the following information ["ItemName",minNum, maxNum] where min is the smallest number added and min+max is the largest number added. + + [ + [// Weapons + + ["srifle_DMR_06_olive_F","20Rnd_762x51_Mag"] + ], + [//Magazines + ["10Rnd_93x64_DMR_05_Mag" ,1,5] + ], + [ // Optics + ["optic_KHS_tan",1,3] + ], + [// Materials and supplies + ["Exile_Item_MetalScrews",3,10] + // + ], + [//Items + ["Exile_Item_MountainDupe",1,3] + ], + [ // Backpacks + ["B_OutdoorPack_tan",1,2] + ] + ]; + */ + +_lootCounts = blck_lootCountsRed; // You can use a customized set of loot counts or one that is predefined but it must follow the following format: + // values are: number of things from the weapons, magazines, optics, materials(cinder etc), items (food etc) and backpacks arrays to add, respectively. + // blck_lootCountsOrange = [[6,8],[24,32],[5,10],[25,35],16,1]; // Orange + +_markerLabel = ""; +//_markerType = ["ELIPSE",[200,200],"GRID"]; +// An alternative would be: +_markerType = ["mil_triangle",[0,0]]; // You can replace mil_triangle with any other valid Arma 3 marker type https://community.bistudio.com/wiki/cfgMarkers +_markerColor = "ColorRed"; // This can be any valid Arma Marker Color +_markerMissionName = "Bad People Live Here"; +_missionLandscapeMode = "precise"; // acceptable values are "random","precise" + // In precise mode objects will be spawned at the relative positions specified. + // In the random mode, objects will be randomly spawned within the mission area. +_missionLandscape = [ // Paste appropriate lines from M3EDEN output here. + ["Land_Cargo_HQ_V2_F",[22894.7,16766,3.19],[[0,1,0],[0,0,1]],[true,false]], + ["Land_Cargo_HQ_V1_F",[22918.1,16761.9,3.18151],[[0,1,0],[0,0,1]],[true,false]], + ["Land_Cargo_HQ_V3_F",[22907.6,16740.3,3.17544],[[0,1,0],[0,0,1]],[true,false]], + ["Land_Dome_Small_F",[22908.2,16808.8,3.19],[[0,1,0],[0,0,1]],[true,false]] +]; // list of objects to spawn as landscape using output from M3EDEN editor. + +_missionLootBoxes = [ // Paste appropriate lines from M3EDEN editor output here, then add the appropriate lootArray + // [["box_classname1",_customLootArray1,[px,py,pz],...,_customLootArray1],["box_classname2",,[px2,py2,pz2],...,_customLootArray2] + // where _customLootArray follows the same format as blck_BoxLoot_Red and the other pre-defined arrays and + // where _customlootcountsarray1 also follows the same format as the predefined arrays like blck_lootCountsRed + ["Box_NATO_Ammo_F",[22917.4,16763,6.30803],[[0,1,0],[0,0,1]],[true,false], _crateLoot, [[1,2],[4,6],[2,6],[5,8],6,1] ], + ["Box_NATO_Ammo_F",[22893,16766.8,6.31652],[[0,1,0],[0,0,1]],[true,false], _crateLoot, _lootCounts], + ["Box_NATO_Ammo_F",[22904.8,16742.5,6.30195],[[0,1,0],[0,0,1]],[true,false], _crateLoot, _lootCounts] +]; // If this array is empty a single loot chest will be added at the center. If you add items loot chest(s) will be spawned in specific positions. + + + +_missionLootVehicles = [ // Paste appropriate lines from the output of M3EDEN Editor here and add the loot crate type and loot counts at the end of each entry as shown in the example below. + // Many vehicles have less inventory capacity than crates so you may have to modify _lootcounts to avoid having stuff spawned all over the ground. + ["Exile_Car_Van_Box_Guerilla02",[22896.8,16790.1,3.18987],[[0,1,0],[0,0,1]],[true,false], _crateLoot, [[1,2],[4,6],[2,6],[5,8],6,1]], + ["Exile_Car_Van_Fuel_Guerilla02",[22919,16782.7,3.18132],[[0,1,0],[0.00129187,0,0.999999]],[true,false],_crateLoot, _lootCounts] +]; // [ ["vehicleClassName", [px, py, pz] /* possition at which to spawn*/, _loot /* pointer to array of loot (see below)]; +// When blank nothing is spawned. +// You can use the same format used for _missionLootBoxes to add vehicles with/without loot. + +_noEmplacedWeapons = blck_SpawnEmplaced_Red; // Modified as needed; can be a numberic value (e.g. 3) or range presented as [2,4] +//format: _noEmplacedWeapons = [2,3]; // a range of values +// or _noEmplacedWeapons = 3; // a constant number of emplaced weps per misison +// Note that this value is ignored if you define static weapon positions and types in the array below. +_missionEmplacedWeapons = [ + ["B_G_Mortar_01_F",[22867.3,16809.1,3.17968],"red"], + ["B_G_Mortar_01_F",[22944.3,16820.5,3.14243],"green"] +]; // example [ ["emplacedClassName",[px, py, pz] /* position to spawn weapon */, difficulty /* difficulty of AI manning weapon (blue, red etc)] ]; + // can be used to define the precise placement of static weapons [[1,2,3] /*loc 1*/, [2,3,4] /*loc 2*/]; if blank random locations will be used + // If the number of possible locations exceeds the number of emplaced weapons specified above then only some of the locations in the array will have emplaced weapons spawned. + // If you leave this array blank then emplaced weapons will be spawned at random locations around the mission using the default list of emplace weapons. + +_minNoAI = blck_MinAI_Red; // Modify as needed +_maxNoAI = blck_MaxAI_Red; // Modify as needed. +_noAIGroups = blck_AIGrps_Red; // Modify as needed; note that these values are ignored of you specify AI patrols in the array below. +_aiGroupParameters = [ + // [ [px, py, pz] /* position*/, "difficulty", 4 /*Number to Spawn*/, 150 /*radius of patrol*/] + [[22920.4,16887.3,3.19144],"red",4, 75], + [[22993.3,16830.8,5.6292],"red",4, 75], + [[22947.8,16717,6.80305],"red",4, 75], + [[22849,16720.4,7.33123],"red",4, 75], + [[22832.9,16805.6,4.59315],"red",4, 75], + [[22909.8,16778.6,3.19144],"red",4, 75], + [[22819.4,16929.5,5.33892],"red",4, 75], + [[22819.4,16929.5,5.33892],"red",4, 75] +]; + +_noVehiclePatrols = blck_SpawnVeh_Red; // Modified as needed; can be a numberic value (e.g. 3) or range presented as [2,4]; + // Note that this value is ignored if you define vehicle patrols in the array below. +_vehiclePatrolParameters = [ + ["B_G_Offroad_01_armed_F",[22819.4,16929.5,3.17413],"red", 600], + ["B_G_Offroad_01_repair_F",[22809.5,16699.2,8.78706],"green", 600] +]; //[ ["vehicleClassName",[px,py,pz] /* center of patrol area */, difficulty /* blue, red etc*/, patrol radius] ] + // When this array is empty, vehicle patrols will be scattered randomely around the mission. + // Allows you to define the location of the center of the patrol, vehicle type spawned, radius to patrol, and AI difficulty (blue, red, green etc). + +_aircraftTypes = blck_patrolHelisRed; // You can use one of the pre-defined lists in blck_configs or your own custom array. +_noAirPatrols = blck_noPatrolHelisRed; // You can use one of the pre-defined values or a custom one. acceptable values are integers (1,2,3) or a range such as [2,4]; + // Note: this value is ignored if you specify air patrols in the array below. +_airPatrols = [ + ["Exile_Chopper_Huey_Armed_Green",[22923.4,16953,3.19],"red"], + ["Exile_Chopper_Hellcat_FIA",[22830.2,16618.1,11.4549],"green"] +]; +// Change _useMines to true/false below to enable mission-specific settings. +_useMines = blck_useMines; // Set to false if you have vehicles patrolling nearby. +_uniforms = blck_SkinList; // You can replace this list with a custom list of uniforms if you like. +_headgear = blck_headgear; // You can replace this list with a custom list of headgear. +_weapons = blck_WeaponList_Orange; // You can replace this list with a customized list of weapons, or another predifined list from blck_configs_epoch or blck_configs_exile as appropriate. + +#include "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnMission.sqf"; diff --git a/@ExileServer/addons/custom_server/init/blck_init.sqf b/@ExileServer/addons/custom_server/init/blck_init.sqf index fa9ae97..f303465 100644 --- a/@ExileServer/addons/custom_server/init/blck_init.sqf +++ b/@ExileServer/addons/custom_server/init/blck_init.sqf @@ -23,10 +23,6 @@ _blck_loadingStartTime = diag_tickTime; #include "\q\addons\custom_server\init\build.sqf"; diag_log format["[blckeagls] Loading version %1 Build %2",_blck_versionDate,_blck_version]; -#ifdef DBDserver -diag_log "[blckegls] Running DBD Clan Version"; -#endif - call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\blck_variables.sqf"; waitUntil {(isNil "blck_variablesLoaded") isEqualTo false;}; waitUntil{blck_variablesLoaded}; @@ -108,6 +104,10 @@ diag_log "[blckegls] dynamic simulation manager enabled"; diag_log "[blckegls] blckegls simulation manager enabled"; #endif +// Initialize static missions +[] execVM "\q\addons\custom_server\Missions\Static\GMS_StaticMissions_init.sqf"; +uiSleep 1.0; + //Start the mission timers if (blck_enableOrangeMissions > 0) then { diff --git a/@ExileServer/addons/custom_server/init/build.sqf b/@ExileServer/addons/custom_server/init/build.sqf index 0a77ecd..8e3e490 100644 --- a/@ExileServer/addons/custom_server/init/build.sqf +++ b/@ExileServer/addons/custom_server/init/build.sqf @@ -1,3 +1,3 @@ private ["_version","_versionDate"]; -_blck_version = "6.61 Build 72"; -_blck_versionDate = "8-15-17 9:00 PM"; +_blck_version = "6.70 Build 73"; +_blck_versionDate = "8-16-17 11:00 PM"; diff --git a/@epochhive/addons/custom_server/Missions/Static/Code/GMS_fnc_sm_spawnMission.sqf b/@epochhive/addons/custom_server/Missions/Static/Code/GMS_fnc_sm_spawnMission.sqf new file mode 100644 index 0000000..1864483 --- /dev/null +++ b/@epochhive/addons/custom_server/Missions/Static/Code/GMS_fnc_sm_spawnMission.sqf @@ -0,0 +1,55 @@ +/* + Run scripts exported from M3EDEN Editor plug in for Arma 3 or other map addons. + Add addons to the arrays for Epoch or Exile as appropriate. + Arrays should contain ["mapname", "name of folder within mapaddons","name of file to execute"] + by Ghostrider-DbD- + for DBD Clan + 11/12/16 + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ +if (!isServer) exitWith{}; +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +params["_mission"]; +// Spawn landscape +// params["_objects"]; +[_missionLandscape] call blck_fnc_sm_spawnObjects; +uiSleep 10; // Let the objects 'settle' before placing anything on or around them. + + +// Spawn Air Patrols +// params["_airPatrols","_noAirPatrols","_heliTypes","_center","_difficulty","_uniforms","_headGear"]; +[_airPatrols,_noAirPatrols,_aircraftTypes,_missionCenter,_difficulty,_uniforms,_headgear,_weapons] call blck_fnc_sm_spawnAirPatrols; +//uiSleep 1; + +// Spawn Vehicle Patrols +// params["_coords","_noVehiclePatrols","_vehiclePatrolSpawns","_aiDifficultyLevel","_uniforms","_headGear",["_missionType","unspecified"]]; +[_missionCenter,_noVehiclePatrols,_vehiclePatrolParameters,_difficulty,_uniforms,_headGear] call blck_fnc_sm_spawnVehiclePatrols; +//uiSleep 1; + + +// spawn infantry +// params["_patrols","_coords",["_minNoAI",3],["_maxNoAI",6],["_aiDifficultyLevel","red"],["_weapons",blck_WeaponList_Orange],["_uniforms",blck_SkinList],["_headGear",blck_BanditHeadgear]]; +[_aiGroupParameters, _missionCenter,_minNoAI,_maxNoAI,_difficulty,_weapons,_uniforms,_headGear] call blck_fnc_sm_spawnInfantryPatrols; +//uiSleep 1; + +// spawn loot vehicles +// params["_objects","_coords","_loot","_lootCounts"]; +[_missionLootVehicles,_missionCenter,_crateLoot,_lootCounts] call blck_fnc_sm_spawnLootContainers; + +// Spawn static weapons +// params["_missionEmplacedWeapons","_noEmplacedWeapons","_aiDifficultyLevel","_coords","_uniforms","_headGear"]; +[_missionEmplacedWeapons,_noEmplacedWeapons,_difficulty,_missionCenter,_uniforms,_headGear] call blck_fnc_sm_spawnEmplaced; + +// spawn loot chests +[_missionLootBoxes,_missionCenter,_crateLoot,_lootCounts] call blck_fnc_sm_spawnLootContainers; + +_blck_localMissionMarker = ["",_missionCenter,"","",_markerColor,_markerType]; +[_blck_localMissionMarker] execVM "debug\spawnMarker.sqf"; + +diag_log format["[blckeagls] Static Mission Spawner: Mission %1 spawned",_mission]; + diff --git a/@epochhive/addons/custom_server/Missions/Static/Code/GMS_sm_checkForPlayerNearMission.sqf b/@epochhive/addons/custom_server/Missions/Static/Code/GMS_sm_checkForPlayerNearMission.sqf new file mode 100644 index 0000000..b24b4ef --- /dev/null +++ b/@epochhive/addons/custom_server/Missions/Static/Code/GMS_sm_checkForPlayerNearMission.sqf @@ -0,0 +1,23 @@ +/* + Run scripts exported from M3EDEN Editor plug in for Arma 3 or other map addons. + Add addons to the arrays for Epoch or Exile as appropriate. + Arrays should contain ["mapname", "name of folder within mapaddons","name of file to execute"] + by Ghostrider-DbD- + for DBD Clan + 11/12/16 + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ + +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +{ + private ["_missionCenter"]; + _missionCenter = _x select 0; + if ([_missionCenter,2000] call blck_fnc_playerInRange then ([_missionCenter] execVM format["%1", _x select 1]; +} forEach blck_staticMissions; + + diff --git a/@epochhive/addons/custom_server/Missions/Static/Code/GMS_sm_init_functions.sqf b/@epochhive/addons/custom_server/Missions/Static/Code/GMS_sm_init_functions.sqf new file mode 100644 index 0000000..e21b877 --- /dev/null +++ b/@epochhive/addons/custom_server/Missions/Static/Code/GMS_sm_init_functions.sqf @@ -0,0 +1,28 @@ +/* + Run scripts exported from M3EDEN Editor plug in for Arma 3 or other map addons. + Add addons to the arrays for Epoch or Exile as appropriate. + Arrays should contain ["mapname", "name of folder within mapaddons","name of file to execute"] + by Ghostrider-DbD- + for DBD Clan + 11/12/16 + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ + +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; + +//blck_fnc_sm_checkForPlayerNearMission = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\StaticMissions_checkForPlayerNearMission.sqf"; +blck_fnc_sm_spawnAirPatrols = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_sm_spawnAirPatrols.sqf"; +blck_fnc_sm_spawnEmplaced = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_sm_spawnEmplaced.sqf"; +blck_fnc_sm_spawnInfantryPatrols = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_sm_spawnInfantryPatrols.sqf"; +blck_fnc_sm_spawnLootContainers = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_sm_spawnLootContainers.sqf"; +blck_fnc_sm_spawnObjects = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_sm_spawnObjects.sqf"; +blck_fnc_sm_spawnVehiclePatrols = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_sm_spawnVehiclePatrols.sqf"; + +diag_log "[blckeagls] GMS_sm_init_functions.sqf "; + +blck_sm_functionsLoaded = true; \ No newline at end of file diff --git a/@epochhive/addons/custom_server/Missions/Static/Code/GMS_sm_spawnAirPatrols.sqf b/@epochhive/addons/custom_server/Missions/Static/Code/GMS_sm_spawnAirPatrols.sqf new file mode 100644 index 0000000..422affe --- /dev/null +++ b/@epochhive/addons/custom_server/Missions/Static/Code/GMS_sm_spawnAirPatrols.sqf @@ -0,0 +1,54 @@ +/* + Run scripts exported from M3EDEN Editor plug in for Arma 3 or other map addons. + Add addons to the arrays for Epoch or Exile as appropriate. + Arrays should contain ["mapname", "name of folder within mapaddons","name of file to execute"] + by Ghostrider-DbD- + for DBD Clan + 11/12/16 + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ + +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; + +/* +_coords = _this select 0; +_skillAI = _this select 1; +_weapons = _this select 2; +_uniforms = _this select 3; +_headGear = _this select 4; +_helis = _this select 5; +*/ + +params["_airPatrols","_noAirPatrols","_heliTypes","_center","_difficulty","_uniforms","_headGear","_weapons"]; +diag_log format["_sm_spawnAirPatrols:: _this = %1",_this]; +diag_log format["_sm_spawnAirPatrols:: _airPatrols = %1",_airPatrols]; +if (_airPatrols isEqualTo []) then +{ + for "_i" from 1 to _noAirPatrols do + { + /* + _coords = _this select 0; + _skillAI = _this select 1; + _weapons = _this select 2; + _uniforms = _this select 3; + _headGear = _this select 4; + _helis = _this select 5; + */ + [_center,_difficulty,_weapons,_uniforms,_headGear,_heliTypes,0] call blck_fnc_spawnMissionHeli; + }; +} else { + { + /* + /*[aircraft classname, position, difficulty(blue, red etc)]*/ + _aircraft = _x select 0; + _pos = _x select 1; + _difficulty = _x select 2; + [_pos,_difficulty,_weapons,_uniforms,_headGear,_aircraft] call blck_fnc_spawnMissionHeli; + }forEach _airPatrols; +}; + diff --git a/@epochhive/addons/custom_server/Missions/Static/Code/GMS_sm_spawnEmplaced.sqf b/@epochhive/addons/custom_server/Missions/Static/Code/GMS_sm_spawnEmplaced.sqf new file mode 100644 index 0000000..2747727 --- /dev/null +++ b/@epochhive/addons/custom_server/Missions/Static/Code/GMS_sm_spawnEmplaced.sqf @@ -0,0 +1,62 @@ +/* + Run scripts exported from M3EDEN Editor plug in for Arma 3 or other map addons. + Add addons to the arrays for Epoch or Exile as appropriate. + Arrays should contain ["mapname", "name of folder within mapaddons","name of file to execute"] + by Ghostrider-DbD- + for DBD Clan + 11/12/16 + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ + +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; + +params["_missionEmplacedWeapons","_noEmplacedWeapons","_aiDifficultyLevel","_coords","_uniforms","_headGear"]; +private["_return","_emplacedWeps","_emplacedAI","_wep","_units","_gunner","_abort","_pos","_mode"]; +_emplacedWeps = []; +_emplacedAI = []; +_units = []; +_abort = false; +_pos = []; + +//diag_log format["_sm_spawnEmplaced :: _missionEmplacedWeapons = %1",_missionEmplacedWeapons]; +// Define _missionEmplacedWeapons if not already configured. +if (_missionEmplacedWeapons isEqualTo []) then +{ + _missionEmplacedWeaponPositions = [_coords,_noEmplacedWeapons,35,50] call blck_fnc_findPositionsAlongARadius; + { + _static = selectRandom blck_staticWeapons; + //diag_log format["_fnc_spawnEmplacedWeaponArray: creating spawn element [%1,%2]",_static,_x]; + _missionEmplacedWeapons pushback [_static,_coords vectorAdd _x,_aiDifficultyLevel]; + //diag_log format["_fnc_spawnEmplacedWeaponArray: _mi updated to %1",_missionEmplacedWeapons]; + } forEach _missionEmplacedWeaponPositions; +}; +//diag_log format["_sm_spawnEmplaced:: _missionEmplacedWeapons = %1",_missionEmplacedWeapons]; +{ + _wepnClassName = _x select 0; + _pos = _x select 1; + _difficulty = _x select 2; + + // params["_pos", ["_numai1",5], ["_numai2",10], ["_skillLevel","red"], "_center", ["_minDist",20], ["_maxDist",35], ["_uniforms",blck_SkinList], ["_headGear",blck_headgear] ]; + _empGroup = [_pos,1,1,_difficulty,_pos,1,2,_uniforms,_headGear,false] call blck_fnc_spawnGroup; + _empGroup setcombatmode "RED"; + _empGroup setBehaviour "COMBAT"; + [_pos,0.01,0.02,_empGroup,"random","SAD","emplaced"] spawn blck_fnc_setupWaypoints; + //if (isNull _empGroup) exitWith {_abort = _true}; + _wep = [_wepnClassName,[0,0,0],false] call blck_fnc_spawnVehicle; + _empGroup setVariable["groupVehicle",_wep]; + _wep setVariable["vehicleGroup",_empGroup]; + _wep setVariable["DBD_vehType","emplaced"]; + _wep setPosATL _pos; + [_wep,false] call blck_fnc_configureMissionVehicle; + _units = units _empGroup; + _gunner = _units select 0; + _gunner moveingunner _wep; +} forEach _missionEmplacedWeapons; +blck_monitoredVehicles append _emplacedWeps; + +true diff --git a/@epochhive/addons/custom_server/Missions/Static/Code/GMS_sm_spawnInfantryPatrols.sqf b/@epochhive/addons/custom_server/Missions/Static/Code/GMS_sm_spawnInfantryPatrols.sqf new file mode 100644 index 0000000..eb0aa5d --- /dev/null +++ b/@epochhive/addons/custom_server/Missions/Static/Code/GMS_sm_spawnInfantryPatrols.sqf @@ -0,0 +1,39 @@ +/* + + Spawns infantry patrols for static missions. + + by Ghostrider-DbD- + 8/15/17 + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ + +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; + +// params["_coords",["_minNoAI",3],["_maxNoAI",6],["_aiDifficultyLevel","red"],["_uniforms",blck_SkinList],["_headGear",blck_BanditHeadgear]]; +params["_patrols","_coords",["_minNoAI",3],["_maxNoAI",6],["_aiDifficultyLevel","red"],["_weapons",blck_WeaponList_Orange],["_uniforms",blck_SkinList],["_headGear",blck_BanditHeadgear]]; +//diag_log format["_sm_spawnInfantryPatrols:: _this = %1",_this]; +//diag_log format["_sm_spawnInfantryPatrols:: patrols = %1",_patrols]; +if (_patrols isEqualTo []) then +{ + // Use the random spawn logic from the regular dyanmic mission system. + [_coords,_minNoAI,_maxNoAI,_aiDifficultyLevel,_uniforms,_headGear] call blck_fnc_spawnMissionAI +} else { + { + //diag_log format["_sm_spawnInfantryPatrols.sqf:: _x = %1",_x]; + // Use the pre-defined spawn positions and other parameters for each group. + // [[22819.4,16929.5,5.33892],"red",4, 75] + private["_pos","_difficulty","_noAI","_patrolRadius"]; + _pos = _x select 0; // Position at which to spawn the group + _difficulty = _x select 1; // AI difficulty setting (blue, green etc) + _noAI = _x select 2; // Number of AI to spawn with the group + _patrolRadius = _x select 3; // Radius within which AI should patrol + // params["_pos", ["_numai1",5], ["_numai2",10], ["_skillLevel","red"], "_center", ["_minDist",20], ["_maxDist",35], ["_uniforms",blck_SkinList], ["_headGear",blck_headgear],["_configureWaypoints",true] ]; + [_pos,_noAI,_noAI,_difficulty,_pos,_patrolRadius,_patrolRadius,_uniforms,_headGear,true] call blck_fnc_spawnGroup; + }forEach _patrols; +}; + diff --git a/@epochhive/addons/custom_server/Missions/Static/Code/GMS_sm_spawnLootContainers.sqf b/@epochhive/addons/custom_server/Missions/Static/Code/GMS_sm_spawnLootContainers.sqf new file mode 100644 index 0000000..f8ad82e --- /dev/null +++ b/@epochhive/addons/custom_server/Missions/Static/Code/GMS_sm_spawnLootContainers.sqf @@ -0,0 +1,45 @@ +/* + Run scripts exported from M3EDEN Editor plug in for Arma 3 or other map addons. + Add addons to the arrays for Epoch or Exile as appropriate. + Arrays should contain ["mapname", "name of folder within mapaddons","name of file to execute"] + by Ghostrider-DbD- + for DBD Clan + 11/12/16 + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ + +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; + +params["_objects","_coords","_loot","_lootCounts"]; +private["_object"]; +//diag_log format["_sm_spawnLootContainers:: _this = %1",_this]; +//diag_log format["_sm_spawnLootContainers:: _objects = %1",_objects]; + +if !(_objects isEqualTo []) exitWith +{ // Spawn loot crates where specified in _objects using the information for loot parameters provided for each location. + { + private _object = (_x select 0) createVehicle [0,0,0]; + _object setPosASL (_x select 1); + _object setVectorDirAndUp (_x select 2); + _object enableSimulationGlobal ((_x select 3) select 0); + _object allowDamage ((_x select 3) select 1); + _loot = _x select 4; // A bit slower this way because you have to allocate memory and transfer the information but more clear for coding. + _lootCounts = _x select 5; + [_object, _loot, _lootCounts] call blck_fnc_fillBoxes; + } forEach _objects; +}; + +// In the case where no loot crate parameters are defined in _objects just spawn 1 at the center of the mission. +if (_objects isEqualTo []) then +{ + + _crateType = selectRandom blck_crateTypes; + _crate = [_coords,_crateType] call blck_fnc_spawnCrate; + [_crate,_loot,_lootCounts] call blck_fnc_fillBoxes; +}; + diff --git a/@epochhive/addons/custom_server/Missions/Static/Code/GMS_sm_spawnObjects.sqf b/@epochhive/addons/custom_server/Missions/Static/Code/GMS_sm_spawnObjects.sqf new file mode 100644 index 0000000..ad688cd --- /dev/null +++ b/@epochhive/addons/custom_server/Missions/Static/Code/GMS_sm_spawnObjects.sqf @@ -0,0 +1,41 @@ +/* + Run scripts exported from M3EDEN Editor plug in for Arma 3 or other map addons. + Add addons to the arrays for Epoch or Exile as appropriate. + Arrays should contain ["mapname", "name of folder within mapaddons","name of file to execute"] + by Ghostrider-DbD- + for DBD Clan + 11/12/16 + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ + +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; + +params["_objects"]; +diag_log format["_sm_spawnObjects:: _objects = %1",_objects]; +private["_objects","_object"]; + +{ + //diag_log format["_sm_spawnObjects:: spawning object of type %1 with parameters of %2",_x select 0, _x]; + private _object = (_x select 0) createVehicle [0,0,0]; + _object setPosASL (_x select 1); + _object setVectorDirAndUp (_x select 2); + _object enableSimulationGlobal ((_x select 3) select 0); + _object allowDamage ((_x select 3) select 1); +} forEach _objects; + + +/* +if (_objects isEqualTo [] and (count _this isEqualTo 4) then +{ + +} else { + _crateType = selectRandom blck_crateTypes; + _crate = [_coords,_crateType] call blck_fnc_spawnCrate; + [_crate,_loot,_lootCounts] call blck_fnc_fillBoxes; +}; + diff --git a/@epochhive/addons/custom_server/Missions/Static/Code/GMS_sm_spawnVehiclePatrols.sqf b/@epochhive/addons/custom_server/Missions/Static/Code/GMS_sm_spawnVehiclePatrols.sqf new file mode 100644 index 0000000..2d8dec0 --- /dev/null +++ b/@epochhive/addons/custom_server/Missions/Static/Code/GMS_sm_spawnVehiclePatrols.sqf @@ -0,0 +1,54 @@ +/* + Run scripts exported from M3EDEN Editor plug in for Arma 3 or other map addons. + Add addons to the arrays for Epoch or Exile as appropriate. + Arrays should contain ["mapname", "name of folder within mapaddons","name of file to execute"] + by Ghostrider-DbD- + for DBD Clan + 11/12/16 + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ + +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; + + +params["_coords","_noVehiclePatrols","_vehiclePatrolSpawns","_aiDifficultyLevel","_uniforms","_headGear",["_missionType","unspecified"]]; +diag_log format["_sm_spawnVehiclePatrols:: _vehiclePatrolSpawns = %1",_vehiclePatrolSpawns]; +private["_vehGroup","_patrolVehicle","_missionAI","_missiongroups","_vehicles","_return","_vehiclePatrolSpawns","_randomVehicle","_return","_abort"]; + +if (_vehiclePatrolSpawns isEqualTo []) then +{ + private["_spawnPoints","_vehType"]; + _spawnPoints = [_coords,_noVehiclePatrols,75,100] call blck_fnc_findPositionsAlongARadius; + { + // ["B_G_Offroad_01_armed_F",[22819.4,16929.5,3.17413],"red", 600], + _vehType = selectRandom blck_AIPatrolVehicles; + _vehiclePatrolSpawns pushBack [_vehType, _x, _aiDifficultyLevel, 150]; + } forEach _spawnPoints; +}; + +{ + private ["_vehicle","_spawnPos","_difficulty","_patrolRadius"]; + _vehicle = _x select 0; + _spawnPos = _x select 1; + _difficulty = _x select 2; + _patrolRadius = _x select 3; + _vehGroup = [_spawnPos,3,3,_difficulty,_spawnPos,1,2,_uniforms,_headGear,false] call blck_fnc_spawnGroup; + + //params["_center","_pos",["_vehType","I_G_Offroad_01_armed_F"],["_minDis",30],["_maxDis",45],["_group",grpNull]]; + _patrolVehicle = [_spawnPos,_spawnPos,_vehicle,_patrolRadius,_patrolRadius,_vehGroup] call blck_fnc_spawnVehiclePatrol; + _vehGroup setVariable["groupVehicle",_vehicle]; + + if !(isNull _patrolVehicle) then + { + _patrolVehicle setVariable["vehicleGroup",_vehGroup]; + }; +} forEach _vehiclePatrolSpawns; + +true + + diff --git a/@epochhive/addons/custom_server/Missions/Static/GMS_StaticMissions_Lists.sqf b/@epochhive/addons/custom_server/Missions/Static/GMS_StaticMissions_Lists.sqf new file mode 100644 index 0000000..dded2f5 --- /dev/null +++ b/@epochhive/addons/custom_server/Missions/Static/GMS_StaticMissions_Lists.sqf @@ -0,0 +1,27 @@ +/* + Run scripts exported from M3EDEN Editor plug in for Arma 3 or other map addons. + Add addons to the arrays for Epoch or Exile as appropriate. + Arrays should contain ["mapname", "name of folder within mapaddons","name of file to execute"] + by Ghostrider-DbD- + 8/15/17 + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ + +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; + +if (!isServer) exitWith{}; + +private ["_staticMissions"]; + +_staticMissions = [ + // [mod (Epoch, Exile), map (Altis, Tanoa etc), mission center, eg [10445,2014,0], filename.sqf (name of static mission template for that mission)]; + //["Epoch","Altis","\q\addons\custom_server\Missions\Static\staticMissionExample1.sqf"], + //["Exile","Altis","\q\addons\custom_server\Missions\Static\missions\staticMissionExample1.sqf"] +]; + +diag_log "[blckeagls] GMS_StaticMissions_Lists.sqf "; diff --git a/@epochhive/addons/custom_server/Missions/Static/GMS_StaticMissions_init.sqf b/@epochhive/addons/custom_server/Missions/Static/GMS_StaticMissions_init.sqf new file mode 100644 index 0000000..b33e800 --- /dev/null +++ b/@epochhive/addons/custom_server/Missions/Static/GMS_StaticMissions_init.sqf @@ -0,0 +1,55 @@ +/* + Run scripts exported from M3EDEN Editor plug in for Arma 3 or other map addons. + Add addons to the arrays for Epoch or Exile as appropriate. + Arrays should contain ["mapname", "name of folder within mapaddons","name of file to execute"] + by Ghostrider-DbD- + for DBD Clan + 11/12/16 + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ +if (!isServer) exitWith{}; + +diag_log "[blckeagls] GMS_StaticMissions_init.sqf "; + +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +#include "\q\addons\custom_server\Missions\Static\GMS_StaticMissions_Lists.sqf"; +[] execVM "\q\addons\custom_server\Missions\Static\Code\GMS_sm_init_functions.sqf"; +//while{ (isNil "blck_sm_functionsLoaded"; uiSleep 0.1]; +uiSleep 3; +private["_mod","_map","_missionMod","_missionMap","_missionLocation","_missionDataFile"]; +diag_log "[blckeagls] GMS_StaticMissions_init.sqf "; +_mod = call blck_fnc_getModType; +diag_log format["[blckeagls] GMS_StaticMissions_init.sqf ",_mod]; +diag_log "[blckeagls] GMS_StaticMissions_init.sqf "; +_map = toLower worldName; +diag_log format["[blckeagls] GMS_StaticMissions_init.sqf ",_map]; +blck_staticMissions = []; +diag_log format["[blckeagls] GMS_StaticMissions_init.sqf <_staticMissions = %1>",_staticMissions]; +{ + diag_log format["[blckeagls] GMS_StaticMissions_init.sqf ",_x]; + [] execVM format["%1",(_x select 2)]; + uiSleep 15; +}forEach _staticMissions; +/* +{ + _missionMod = _x select 0; + _missionMap = _x select 1; + //_missionLocation = _x select 2; + _missionDataFile = _x select 2; + diag_log format["blckegls] Static Mission System: ",_x]; + if (_mod isEqualTo _missionMod && _map isEqualTo _missionMap) then {blck_staticMissions pusback [_missionDataFile]; +}forEach _staticMissions; + +diag_log "[blckeagls] GMS_StaticMissions_init.sqf "; +{ + diag_log format["[blckeagls] Static Mission System: Initializing Mission %1", (_x select 0)]; + [_x select 0] execVM format["%1", _x select 0]; +} forEach blck_staticMissions; +*/ +diag_log "[blckeagls] GMS_StaticMissions_init.sqf "; + diff --git a/@epochhive/addons/custom_server/Missions/Static/missions/staticMissionExample1.sqf b/@epochhive/addons/custom_server/Missions/Static/missions/staticMissionExample1.sqf new file mode 100644 index 0000000..0c847d2 --- /dev/null +++ b/@epochhive/addons/custom_server/Missions/Static/missions/staticMissionExample1.sqf @@ -0,0 +1,66 @@ +/* + This is a simple mission using randomly placed AI infantry, static weapons and vehicle patrols. + Please see staticMissionExample2.sqf for a more complete overview of how to configure static missions. +*/ +private ["_markerLabel","_endMsg","_startMsg","_lootCounts","_crateLoot","_markerMissionName","_missionLandscapeMode","_missionLandscape", + "_missionLootBoxes","_missionLootVehicles","_missionEmplacedWeapons","_minNoAI","_maxNoAI","_noAIGroups","_noVehiclePatrols","_noEmplacedWeapons", + "_uniforms","_headgear","_chanceReinforcements","_noPara","_helipatrol","_endCondition","_markerColor","_markerType","_useMines"]; + +_mission = "static mission example 1"; +_missionCenter = [24415,18909,0]; // I pulled this from the position of the marker. +_difficulty = "red"; // Skill level of AI (blue, red, green etc) +_crateLoot = blck_BoxLoot_Red; +_lootCounts = blck_lootCountsRed; + +_markerLabel = ""; +_markerType = ["ELIPSE",[200,200],"GRID"]; +// An alternative would be: +// _markerType = ["mil_triangle",[0,0]]; // You can replace mil_triangle with any other valid Arma 3 marker type https://community.bistudio.com/wiki/cfgMarkers +_markerColor = "ColorRed"; // This can be any valid Arma Marker Color +_markerMissionName = "Bad Guys Town"; +_missionLandscapeMode = "precise"; // acceptable values are "random","precise" + // In precise mode objects will be spawned at the relative positions specified. + // In the random mode, objects will be randomly spawned within the mission area. +_missionLandscape = [ + +]; // list of objects to spawn as landscape +_missionLootBoxes = []; // Parameters are "Box Item Code", array defining the loot to be spawned, and position. +// If this array is empty a single loot chest will be added at the center. If you add items loot chest(s) will be spawned in specific positions. +// +// [["box_classname1",_customLootArray1,[px,py,pz],["box_classname2",_customLootArray2,[px2,py2,pz2]] +// where _customLootArray follows the same format as blck_BoxLoot_Red and the other pre-defined arrays and +// where _customlootcountsarray1 also follows the same format as the predefined arrays like blck_lootCountsRed + +_missionLootVehicles = []; // [ ["vehicleClassName", [px, py, pz] /* possition at which to spawn*/, _loot /* pointer to array of loot (see below)]; +// When blank nothing is spawned. +// You can use the same format used for _missionLootBoxes to add vehicles with/without loot. + +_noEmplacedWeapons = [2,3]; +_missionEmplacedWeapons = []; // example [ ["emplacedClassName",[px, py, pz] /* position to spawn weapon */, difficulty /* difficulty of AI manning weapon (blue, red etc)] ]; + // can be used to define the precise placement of static weapons [[1,2,3] /*loc 1*/, [2,3,4] /*loc 2*/]; if blank random locations will be used + // If the number of possible locations exceeds the number of emplaced weapons specified above then only some of the locations in the array will have emplaced weapons spawned. + // If you leave this array blank then emplaced weapons will be spawned at random locations around the mission using the default list of emplace weapons. + +_minNoAI = blck_MinAI_Red; // Modify as needed +_maxNoAI = blck_MaxAI_Red; // Modify as needed. +_noAIGroups = blck_AIGrps_Red; // Modify as needed +_aiGroupParameters = []; + +_noVehiclePatrols = blck_SpawnVeh_Red; // Modified as needed; can be a numberic value (e.g. 3) or range presented as [2,4] +_vehiclePatrolParameters = []; //[ ["vehicleClassName",[px,py,pz] /* center of patrol area */, difficulty /* blue, red etc*/] ] + // When empty vehicle patrols will be scattered randomely around the mission. + // Allows you to define the location of the center of the patrol, vehicle type spawned, radius to patrol, and AI difficulty (blue, red, green etc). + // If _noVehiclePatrols is less than the number of locations specified only _noVehiclePatrols patrols will be spawned. +_noEmplacedWeapons = blck_SpawnEmplaced_Red; // Modified as needed; can be a numberic value (e.g. 3) or range presented as [2,4] + +_aircraftTypes = blck_patrolHelisRed; // You can use one of the pre-defined lists in blck_configs or your own custom array. +_noAirPatrols = blck_noPatrolHelisRed; // You can use one of the pre-defined values or a custom one. acceptable values are integers (1,2,3) or a range such as [2,4]; +_airPatrols = []; + +// Change _useMines to true/false below to enable mission-specific settings. +_useMines = blck_useMines; +_uniforms = blck_SkinList; // You can replace this list with a custom list of uniforms if you like. +_headgear = blck_headgear; // You can replace this list with a custom list of headgear. +_weapons = blck_WeaponList_Orange; // You can replace this list with a customized list of weapons, or another predifined list from blck_configs_epoch or blck_configs_exile as appropriate. + +#include "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnMission.sqf"; diff --git a/@epochhive/addons/custom_server/Missions/Static/missions/staticMissionExample2.sqf b/@epochhive/addons/custom_server/Missions/Static/missions/staticMissionExample2.sqf new file mode 100644 index 0000000..4674729 --- /dev/null +++ b/@epochhive/addons/custom_server/Missions/Static/missions/staticMissionExample2.sqf @@ -0,0 +1,131 @@ +/* + This is a simple mission using precisely placed loot crates and infantry, static weapons and vehicle patrols. + See the accompanying example mission in the exampleMission folder to get an idea how I laid this out. + Note that I exported the mission using the exportAll function of M3EDEN editor. +*/ +private ["_markerLabel","_endMsg","_startMsg","_lootCounts","_crateLoot","_markerMissionName","_missionLandscapeMode","_missionLandscape", + "_missionLootBoxes","_missionLootVehicles","_missionEmplacedWeapons","_minNoAI","_maxNoAI","_noAIGroups","_noVehiclePatrols","_noEmplacedWeapons", + "_uniforms","_headgear","_chanceReinforcements","_noPara","_helipatrol","_endCondition","_markerColor","_markerType","_useMines"]; + +_mission = "static mission example #2"; // Included for additional documentation. Not intended to be spawned as a mission per se. +_missionCenter = [22907,16789,0]; // I pulled this from the position of the marker. +_difficulty = "red"; // Skill level of AI (blue, red, green etc) +_crateLoot = blck_BoxLoot_Orange; // You can use a customized _crateLoot configuration by defining an array here. It must follow the following format shown for a hypothetical loot array called _customLootArray + /* + _customLootArray = + // Loot is grouped as [weapons],[magazines],[items] in order to be able to use the correct function to load the item into the crate later on. + // Each item consist of the following information ["ItemName",minNum, maxNum] where min is the smallest number added and min+max is the largest number added. + + [ + [// Weapons + + ["srifle_DMR_06_olive_F","20Rnd_762x51_Mag"] + ], + [//Magazines + ["10Rnd_93x64_DMR_05_Mag" ,1,5] + ], + [ // Optics + ["optic_KHS_tan",1,3] + ], + [// Materials and supplies + ["Exile_Item_MetalScrews",3,10] + // + ], + [//Items + ["Exile_Item_MountainDupe",1,3] + ], + [ // Backpacks + ["B_OutdoorPack_tan",1,2] + ] + ]; + */ + +_lootCounts = blck_lootCountsRed; // You can use a customized set of loot counts or one that is predefined but it must follow the following format: + // values are: number of things from the weapons, magazines, optics, materials(cinder etc), items (food etc) and backpacks arrays to add, respectively. + // blck_lootCountsOrange = [[6,8],[24,32],[5,10],[25,35],16,1]; // Orange + +_markerLabel = ""; +//_markerType = ["ELIPSE",[200,200],"GRID"]; +// An alternative would be: +_markerType = ["mil_triangle",[0,0]]; // You can replace mil_triangle with any other valid Arma 3 marker type https://community.bistudio.com/wiki/cfgMarkers +_markerColor = "ColorRed"; // This can be any valid Arma Marker Color +_markerMissionName = "Bad People Live Here"; +_missionLandscapeMode = "precise"; // acceptable values are "random","precise" + // In precise mode objects will be spawned at the relative positions specified. + // In the random mode, objects will be randomly spawned within the mission area. +_missionLandscape = [ // Paste appropriate lines from M3EDEN output here. + ["Land_Cargo_HQ_V2_F",[22894.7,16766,3.19],[[0,1,0],[0,0,1]],[true,false]], + ["Land_Cargo_HQ_V1_F",[22918.1,16761.9,3.18151],[[0,1,0],[0,0,1]],[true,false]], + ["Land_Cargo_HQ_V3_F",[22907.6,16740.3,3.17544],[[0,1,0],[0,0,1]],[true,false]], + ["Land_Dome_Small_F",[22908.2,16808.8,3.19],[[0,1,0],[0,0,1]],[true,false]] +]; // list of objects to spawn as landscape using output from M3EDEN editor. + +_missionLootBoxes = [ // Paste appropriate lines from M3EDEN editor output here, then add the appropriate lootArray + // [["box_classname1",_customLootArray1,[px,py,pz],...,_customLootArray1],["box_classname2",,[px2,py2,pz2],...,_customLootArray2] + // where _customLootArray follows the same format as blck_BoxLoot_Red and the other pre-defined arrays and + // where _customlootcountsarray1 also follows the same format as the predefined arrays like blck_lootCountsRed + ["Box_NATO_Ammo_F",[22917.4,16763,6.30803],[[0,1,0],[0,0,1]],[true,false], _crateLoot, [[1,2],[4,6],[2,6],[5,8],6,1] ], + ["Box_NATO_Ammo_F",[22893,16766.8,6.31652],[[0,1,0],[0,0,1]],[true,false], _crateLoot, _lootCounts], + ["Box_NATO_Ammo_F",[22904.8,16742.5,6.30195],[[0,1,0],[0,0,1]],[true,false], _crateLoot, _lootCounts] +]; // If this array is empty a single loot chest will be added at the center. If you add items loot chest(s) will be spawned in specific positions. + + + +_missionLootVehicles = [ // Paste appropriate lines from the output of M3EDEN Editor here and add the loot crate type and loot counts at the end of each entry as shown in the example below. + // Many vehicles have less inventory capacity than crates so you may have to modify _lootcounts to avoid having stuff spawned all over the ground. + ["Exile_Car_Van_Box_Guerilla02",[22896.8,16790.1,3.18987],[[0,1,0],[0,0,1]],[true,false], _crateLoot, [[1,2],[4,6],[2,6],[5,8],6,1]], + ["Exile_Car_Van_Fuel_Guerilla02",[22919,16782.7,3.18132],[[0,1,0],[0.00129187,0,0.999999]],[true,false],_crateLoot, _lootCounts] +]; // [ ["vehicleClassName", [px, py, pz] /* possition at which to spawn*/, _loot /* pointer to array of loot (see below)]; +// When blank nothing is spawned. +// You can use the same format used for _missionLootBoxes to add vehicles with/without loot. + +_noEmplacedWeapons = blck_SpawnEmplaced_Red; // Modified as needed; can be a numberic value (e.g. 3) or range presented as [2,4] +//format: _noEmplacedWeapons = [2,3]; // a range of values +// or _noEmplacedWeapons = 3; // a constant number of emplaced weps per misison +// Note that this value is ignored if you define static weapon positions and types in the array below. +_missionEmplacedWeapons = [ + ["B_G_Mortar_01_F",[22867.3,16809.1,3.17968],"red"], + ["B_G_Mortar_01_F",[22944.3,16820.5,3.14243],"green"] +]; // example [ ["emplacedClassName",[px, py, pz] /* position to spawn weapon */, difficulty /* difficulty of AI manning weapon (blue, red etc)] ]; + // can be used to define the precise placement of static weapons [[1,2,3] /*loc 1*/, [2,3,4] /*loc 2*/]; if blank random locations will be used + // If the number of possible locations exceeds the number of emplaced weapons specified above then only some of the locations in the array will have emplaced weapons spawned. + // If you leave this array blank then emplaced weapons will be spawned at random locations around the mission using the default list of emplace weapons. + +_minNoAI = blck_MinAI_Red; // Modify as needed +_maxNoAI = blck_MaxAI_Red; // Modify as needed. +_noAIGroups = blck_AIGrps_Red; // Modify as needed; note that these values are ignored of you specify AI patrols in the array below. +_aiGroupParameters = [ + // [ [px, py, pz] /* position*/, "difficulty", 4 /*Number to Spawn*/, 150 /*radius of patrol*/] + [[22920.4,16887.3,3.19144],"red",4, 75], + [[22993.3,16830.8,5.6292],"red",4, 75], + [[22947.8,16717,6.80305],"red",4, 75], + [[22849,16720.4,7.33123],"red",4, 75], + [[22832.9,16805.6,4.59315],"red",4, 75], + [[22909.8,16778.6,3.19144],"red",4, 75], + [[22819.4,16929.5,5.33892],"red",4, 75], + [[22819.4,16929.5,5.33892],"red",4, 75] +]; + +_noVehiclePatrols = blck_SpawnVeh_Red; // Modified as needed; can be a numberic value (e.g. 3) or range presented as [2,4]; + // Note that this value is ignored if you define vehicle patrols in the array below. +_vehiclePatrolParameters = [ + ["B_G_Offroad_01_armed_F",[22819.4,16929.5,3.17413],"red", 600], + ["B_G_Offroad_01_repair_F",[22809.5,16699.2,8.78706],"green", 600] +]; //[ ["vehicleClassName",[px,py,pz] /* center of patrol area */, difficulty /* blue, red etc*/, patrol radius] ] + // When this array is empty, vehicle patrols will be scattered randomely around the mission. + // Allows you to define the location of the center of the patrol, vehicle type spawned, radius to patrol, and AI difficulty (blue, red, green etc). + +_aircraftTypes = blck_patrolHelisRed; // You can use one of the pre-defined lists in blck_configs or your own custom array. +_noAirPatrols = blck_noPatrolHelisRed; // You can use one of the pre-defined values or a custom one. acceptable values are integers (1,2,3) or a range such as [2,4]; + // Note: this value is ignored if you specify air patrols in the array below. +_airPatrols = [ + ["Exile_Chopper_Huey_Armed_Green",[22923.4,16953,3.19],"red"], + ["Exile_Chopper_Hellcat_FIA",[22830.2,16618.1,11.4549],"green"] +]; +// Change _useMines to true/false below to enable mission-specific settings. +_useMines = blck_useMines; // Set to false if you have vehicles patrolling nearby. +_uniforms = blck_SkinList; // You can replace this list with a custom list of uniforms if you like. +_headgear = blck_headgear; // You can replace this list with a custom list of headgear. +_weapons = blck_WeaponList_Orange; // You can replace this list with a customized list of weapons, or another predifined list from blck_configs_epoch or blck_configs_exile as appropriate. + +#include "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnMission.sqf"; diff --git a/@epochhive/addons/custom_server/init/blck_init.sqf b/@epochhive/addons/custom_server/init/blck_init.sqf index fa9ae97..f303465 100644 --- a/@epochhive/addons/custom_server/init/blck_init.sqf +++ b/@epochhive/addons/custom_server/init/blck_init.sqf @@ -23,10 +23,6 @@ _blck_loadingStartTime = diag_tickTime; #include "\q\addons\custom_server\init\build.sqf"; diag_log format["[blckeagls] Loading version %1 Build %2",_blck_versionDate,_blck_version]; -#ifdef DBDserver -diag_log "[blckegls] Running DBD Clan Version"; -#endif - call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\blck_variables.sqf"; waitUntil {(isNil "blck_variablesLoaded") isEqualTo false;}; waitUntil{blck_variablesLoaded}; @@ -108,6 +104,10 @@ diag_log "[blckegls] dynamic simulation manager enabled"; diag_log "[blckegls] blckegls simulation manager enabled"; #endif +// Initialize static missions +[] execVM "\q\addons\custom_server\Missions\Static\GMS_StaticMissions_init.sqf"; +uiSleep 1.0; + //Start the mission timers if (blck_enableOrangeMissions > 0) then { diff --git a/@epochhive/addons/custom_server/init/build.sqf b/@epochhive/addons/custom_server/init/build.sqf index 0a77ecd..8e3e490 100644 --- a/@epochhive/addons/custom_server/init/build.sqf +++ b/@epochhive/addons/custom_server/init/build.sqf @@ -1,3 +1,3 @@ private ["_version","_versionDate"]; -_blck_version = "6.61 Build 72"; -_blck_versionDate = "8-15-17 9:00 PM"; +_blck_version = "6.70 Build 73"; +_blck_versionDate = "8-16-17 11:00 PM"; diff --git a/README.md b/README.md index 5635f22..e4124e9 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -Blckegls mission system Version-6.60-Build-69 +Blckegls mission system Version-6.61-Build-72 Included is an updated version of blckeagls mission system. This began as an effort to fix bugs in and upgrade version 2.0.2 as updated by Narines and has now evolved to a complete reworking of almost all code. diff --git a/StaticMissions-HowTo.txt b/StaticMissions-HowTo.txt new file mode 100644 index 0000000..b051dfc --- /dev/null +++ b/StaticMissions-HowTo.txt @@ -0,0 +1,35 @@ +This update includes an optional ability to spawn static missions. +This can be done by laying out everything for your static mission in the editor, +then using a simple copy - paste - edit strategy. + +I have provided one example editor mission (staticMissionExamples.Altis) +which I have used to configure a static mission ( ). +My approach to doing this as follows: + +1) Start Arma with the following mods: @epoch;@exile;@m3eden editor. +2) Start the Eden Editor. +3) Lay out your static mission. You should: + place a marker indicating where it will spawn (save your work) + Place all buldings, sandbags, etc (save your work) + Place any vehicle or air patrols - note that they will patrol using the postion at which you place them as the centerpoint of their patrol. + (save your work). + Place any static weapons. + (save your work). + Place a unit at each location you wish to have a group patrol. + Place some sort of ammo box, cardboard box, or other loot container. + Save your work. + + Note the postion of your marker. + Export all of the objects, units, and vehicles using the function supplied by M3EDEN Editor. + You want to use the export absolute position functions for this. + + Now, create a copy of one of the example missions. + Set the mission center to the position of your marker. + Carefully copy the data for your structures into the appropriate array. + Do the same for all other objects, vehicles, loot vehicles and so forth. + Note that for some things you will have to do a little editing to add or remove things from the data output by the editor. + + Once you have done this, add the file to the custom_server\Missions\Static\missions directory then + add an entry for your static mission to GMS_StaticMissionLists.sqf + + in order to specify additional options. Use the information provided in the example static missions to guide you. \ No newline at end of file diff --git a/changeLog.sqf b/changeLog.sqf index c3aa702..bb4d921 100644 --- a/changeLog.sqf +++ b/changeLog.sqf @@ -5,8 +5,14 @@ Contributions by Narines: bug fixes, testing, infinite ammo fix. Ideas or code from that by Vampire and KiloSwiss have been used for certain functions. Significant Changes: +8/16/17 Version 6.70 Build 73 +[Added] Optional Static Missions. See the How To and th eexample missions for guidance on using this. +[Fixed] Mission completion was sometimes not triggered by a player nearby. +[Reverte] There is one active, unresolved bug which is that the mission system glitches if you proved a range (e.g. [2,4] for numbers of vehicle patrols, air patrols, or emplaced weapons. -8/13/17 Version 6.61 Build 71 +8/13/17 Version 6.61 Build 72 +Bug fixes. +Note: do not use the ranges of values for numbers of vehicle, air or statics. [Added] Most parameters for numbers of loot, AI, and vehicle patrols can be defined as either a scalar value or range. Note that there is backwards compatability to prior versions so you need make no changes to your configs if you do not wish to. diff --git a/staticMissionExamples.Altis/mission.sqm b/staticMissionExamples.Altis/mission.sqm new file mode 100644 index 0000000..00c1330 --- /dev/null +++ b/staticMissionExamples.Altis/mission.sqm @@ -0,0 +1,984 @@ +version=53; +class EditorData +{ + moveGridStep=1; + angleGridStep=0.2617994; + scaleGridStep=1; + autoGroupingDist=10; + toggles=1; + class ItemIDProvider + { + nextID=46; + }; + class MarkerIDProvider + { + nextID=1; + }; + class Camera + { + pos[]={22899.496,174.8044,16773.877}; + dir[]={-0.023318131,-0.99969721,0.0098161744}; + up[]={-0.92136741,0.025255598,0.38786465}; + aside[]={0.38799548,4.6566129e-010,0.9216761}; + }; +}; +binarizationWanted=0; +addons[]= +{ + "A3_Structures_F_Mil_Cargo", + "A3_Structures_F_Research", + "A3_Structures_F_Argo", + "A3_Characters_F", + "A3_Characters_F_Mark", + "exile_client", + "A3_Soft_F_Offroad_01", + "A3_Static_F_Mortar_01", + "A3_Weapons_F_Ammoboxes", + "A3_Characters_F_Exp_Civil", + "A3_Ui_F" +}; +class AddonsMetaData +{ + class List + { + items=11; + class Item0 + { + className="A3_Structures_F_Mil"; + name="Arma 3 - Military Buildings and Structures"; + author="Bohemia Interactive"; + url="https://www.arma3.com"; + }; + class Item1 + { + className="A3_Structures_F"; + name="Arma 3 - Buildings and Structures"; + author="Bohemia Interactive"; + url="https://www.arma3.com"; + }; + class Item2 + { + className="A3_Structures_F_Argo"; + name="Arma 3 Malden - Buildings and Structures"; + author="Bohemia Interactive"; + url="https://www.arma3.com"; + }; + class Item3 + { + className="A3_Characters_F"; + name="Arma 3 Alpha - Characters and Clothing"; + author="Bohemia Interactive"; + url="https://www.arma3.com"; + }; + class Item4 + { + className="A3_Characters_F_Mark"; + name="Arma 3 Marksmen - Characters and Clothing"; + author="Bohemia Interactive"; + url="https://www.arma3.com"; + }; + class Item5 + { + className="exile_client"; + name="exile_client"; + }; + class Item6 + { + className="A3_Soft_F"; + name="Arma 3 Alpha - Unarmored Land Vehicles"; + author="Bohemia Interactive"; + url="https://www.arma3.com"; + }; + class Item7 + { + className="A3_Static_F"; + name="Arma 3 Alpha - Turrets"; + author="Bohemia Interactive"; + url="https://www.arma3.com"; + }; + class Item8 + { + className="A3_Weapons_F"; + name="Arma 3 Alpha - Weapons and Accessories"; + author="Bohemia Interactive"; + url="https://www.arma3.com"; + }; + class Item9 + { + className="A3_Characters_F_Exp"; + name="Arma 3 Apex - Characters and Clothing"; + author="Bohemia Interactive"; + url="https://www.arma3.com"; + }; + class Item10 + { + className="A3_Ui_F"; + name="Arma 3 - User Interface"; + author="Bohemia Interactive"; + url="https://www.arma3.com"; + }; + }; +}; +randomSeed=7660971; +class ScenarioData +{ + author="GhostRider=DbD="; +}; +class Mission +{ + class Intel + { + timeOfChanges=1800.0002; + startWeather=0.30000001; + startWind=0.1; + startWaves=0.1; + forecastWeather=0.30000001; + forecastWind=0.1; + forecastWaves=0.1; + forecastLightnings=0.1; + year=2035; + month=6; + day=24; + hour=12; + minute=0; + startFogDecay=0.014; + forecastFogDecay=0.014; + }; + class Entities + { + items=30; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={22894.729,7.0654001,16766.041}; + }; + side="Empty"; + flags=5; + class Attributes + { + }; + id=0; + type="Land_Cargo_HQ_V2_F"; + }; + class Item1 + { + dataType="Object"; + class PositionInfo + { + position[]={22918.068,7.0569134,16761.93}; + }; + side="Empty"; + flags=5; + class Attributes + { + }; + id=1; + type="Land_Cargo_HQ_V1_F"; + atlOffset=-0.00030064583; + }; + class Item2 + { + dataType="Object"; + class PositionInfo + { + position[]={22907.625,7.050838,16740.32}; + }; + side="Empty"; + flags=5; + class Attributes + { + }; + id=2; + type="Land_Cargo_HQ_V3_F"; + atlOffset=-0.0010612011; + }; + class Item3 + { + dataType="Object"; + class PositionInfo + { + position[]={22908.232,10.160803,16808.834}; + }; + side="Empty"; + flags=5; + class Attributes + { + }; + id=3; + type="Land_Dome_Small_F"; + }; + class Item4 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={22920.396,3.1914392,16887.289}; + }; + side="West"; + flags=7; + class Attributes + { + isPlayer=1; + }; + id=5; + type="B_G_Soldier_AR_F"; + atlOffset=2.3841858e-007; + }; + }; + class Attributes + { + }; + id=4; + atlOffset=2.3841858e-007; + }; + class Item5 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={22993.307,5.6292014,16830.838}; + }; + side="West"; + flags=7; + class Attributes + { + }; + id=7; + type="B_G_Soldier_AR_F"; + atlOffset=-7.4863434e-005; + }; + }; + class Attributes + { + }; + id=6; + atlOffset=-7.4863434e-005; + }; + class Item6 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={22947.846,6.8030457,16717.049}; + }; + side="West"; + flags=7; + class Attributes + { + }; + id=9; + type="B_G_Sharpshooter_F"; + atlOffset=5.2452087e-006; + }; + }; + class Attributes + { + }; + id=8; + atlOffset=5.2452087e-006; + }; + class Item7 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={22849.02,7.3312287,16720.404}; + }; + side="West"; + flags=7; + class Attributes + { + }; + id=11; + type="B_G_Soldier_AR_F"; + atlOffset=0.00015115738; + }; + }; + class Attributes + { + }; + id=10; + atlOffset=0.00015115738; + }; + class Item8 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={22832.918,4.5931487,16805.607}; + }; + side="West"; + flags=7; + class Attributes + { + }; + id=13; + type="B_G_Soldier_AR_F"; + atlOffset=0.00066709518; + }; + }; + class Attributes + { + }; + id=12; + atlOffset=0.00066709518; + }; + class Item9 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={22909.783,3.1914389,16778.561}; + }; + side="West"; + flags=7; + class Attributes + { + }; + id=15; + type="B_G_Sharpshooter_F"; + }; + }; + class Attributes + { + }; + id=14; + }; + class Item10 + { + dataType="Group"; + side="West"; + class Entities + { + items=2; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={22819.432,3.1759031,16929.529}; + angles[]={6.2818484,0,0.0026520467}; + }; + side="West"; + flags=4; + class Attributes + { + }; + id=18; + type="B_G_Soldier_F"; + atlOffset=3.8146973e-006; + }; + class Item1 + { + dataType="Object"; + class PositionInfo + { + position[]={22819.426,5.3403568,16929.568}; + angles[]={6.2818484,0,0.0026520467}; + }; + side="West"; + flags=2; + class Attributes + { + }; + id=19; + type="B_G_Soldier_F"; + atlOffset=2.1644206; + }; + }; + class Attributes + { + }; + class CrewLinks + { + class LinkIDProvider + { + nextID=2; + }; + class Links + { + items=2; + class Item0 + { + linkID=0; + item0=18; + item1=17; + class CustomData + { + role=1; + }; + }; + class Item1 + { + linkID=1; + item0=19; + item1=17; + class CustomData + { + role=2; + turretPath[]={0}; + }; + }; + }; + }; + id=16; + atlOffset=3.8146973e-006; + }; + class Item11 + { + dataType="Object"; + class PositionInfo + { + position[]={22819.426,5.3389177,16929.518}; + angles[]={6.2818484,0,0.0026520467}; + }; + side="West"; + flags=6; + class Attributes + { + }; + id=17; + type="B_G_Offroad_01_armed_F"; + atlOffset=3.8146973e-006; + }; + class Item12 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={22976.006,6.480876,16755.035}; + angles[]={0.018663859,0,6.2658563}; + }; + side="West"; + flags=6; + class Attributes + { + }; + id=22; + type="B_G_Soldier_F"; + atlOffset=-5.7220459e-005; + }; + }; + class Attributes + { + }; + class CrewLinks + { + class LinkIDProvider + { + nextID=1; + }; + class Links + { + items=1; + class Item0 + { + linkID=0; + item0=22; + item1=21; + class CustomData + { + role=1; + }; + }; + }; + }; + id=20; + atlOffset=-5.7220459e-005; + }; + class Item13 + { + dataType="Object"; + class PositionInfo + { + position[]={22976.033,8.0898438,16755.045}; + angles[]={0.018663859,0,6.2658563}; + }; + side="West"; + flags=6; + class Attributes + { + }; + id=21; + type="B_G_Offroad_01_repair_F"; + atlOffset=-5.7220459e-005; + }; + class Item14 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={22809.504,8.7892027,16699.213}; + angles[]={0.013332055,0,6.2698536}; + }; + side="West"; + flags=6; + class Attributes + { + }; + id=25; + type="B_G_Soldier_F"; + atlOffset=1.4305115e-005; + }; + }; + class Attributes + { + }; + class CrewLinks + { + class LinkIDProvider + { + nextID=1; + }; + class Links + { + items=1; + class Item0 + { + linkID=0; + item0=25; + item1=24; + class CustomData + { + role=1; + }; + }; + }; + }; + id=23; + atlOffset=1.4305115e-005; + }; + class Item15 + { + dataType="Object"; + class PositionInfo + { + position[]={22809.525,10.39857,16699.215}; + angles[]={0.013332055,0,6.2698536}; + }; + side="West"; + flags=6; + class Attributes + { + }; + id=24; + type="B_G_Offroad_01_repair_F"; + atlOffset=1.4305115e-005; + }; + class Item16 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={22867.262,3.9027469,16809.193}; + angles[]={-0,0,0.0012918708}; + }; + side="West"; + flags=2; + class Attributes + { + }; + id=28; + type="B_G_Soldier_F"; + atlOffset=0.72162294; + }; + }; + class Attributes + { + }; + class CrewLinks + { + class LinkIDProvider + { + nextID=1; + }; + class Links + { + items=1; + class Item0 + { + linkID=0; + item0=28; + item1=27; + class CustomData + { + role=2; + turretPath[]={0}; + }; + }; + }; + }; + id=26; + atlOffset=-2.3841858e-006; + }; + class Item17 + { + dataType="Object"; + class PositionInfo + { + position[]={22867.262,3.9013081,16809.143}; + angles[]={-0,0,0.0012918708}; + }; + side="West"; + flags=6; + class Attributes + { + }; + id=27; + type="B_G_Mortar_01_F"; + atlOffset=-2.3841858e-006; + }; + class Item18 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={22944.338,3.8654788,16820.549}; + angles[]={6.2805333,0,6.2765174}; + }; + side="West"; + flags=2; + class Attributes + { + }; + id=31; + type="B_G_Soldier_F"; + atlOffset=0.72163272; + }; + }; + class Attributes + { + }; + class CrewLinks + { + class LinkIDProvider + { + nextID=1; + }; + class Links + { + items=1; + class Item0 + { + linkID=0; + item0=31; + item1=30; + class CustomData + { + role=2; + turretPath[]={0}; + }; + }; + }; + }; + id=29; + atlOffset=-2.8610229e-006; + }; + class Item19 + { + dataType="Object"; + class PositionInfo + { + position[]={22944.338,3.8640399,16820.498}; + angles[]={6.2805333,0,6.2765174}; + }; + side="West"; + flags=6; + class Attributes + { + }; + id=30; + type="B_G_Mortar_01_F"; + atlOffset=-2.8610229e-006; + }; + class Item20 + { + dataType="Object"; + class PositionInfo + { + position[]={22917.426,6.5920844,16763}; + }; + side="Empty"; + flags=4; + class Attributes + { + }; + id=32; + type="Box_NATO_Ammo_F"; + }; + class Item21 + { + dataType="Object"; + class PositionInfo + { + position[]={22892.98,6.6005716,16766.787}; + }; + side="Empty"; + flags=4; + class Attributes + { + }; + id=33; + type="Box_NATO_Ammo_F"; + }; + class Item22 + { + dataType="Object"; + class PositionInfo + { + position[]={22904.779,6.5860085,16742.465}; + }; + side="Empty"; + flags=4; + class Attributes + { + }; + id=34; + type="Box_NATO_Ammo_F"; + }; + class Item23 + { + dataType="Group"; + side="Civilian"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={22896.83,3.1914389,16790.141}; + }; + side="Civilian"; + flags=6; + class Attributes + { + }; + id=37; + type="C_man_1"; + }; + }; + class Attributes + { + }; + class CrewLinks + { + class LinkIDProvider + { + nextID=1; + }; + class Links + { + items=1; + class Item0 + { + linkID=0; + item0=37; + item1=36; + class CustomData + { + role=1; + }; + }; + }; + }; + id=35; + }; + class Item24 + { + dataType="Object"; + class PositionInfo + { + position[]={22896.83,5.0616264,16790.111}; + }; + side="Civilian"; + flags=6; + class Attributes + { + }; + id=36; + type="Exile_Car_Van_Box_Guerilla02"; + }; + class Item25 + { + dataType="Group"; + side="Civilian"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={22918.988,3.1827838,16782.699}; + angles[]={-0,0,6.2818937}; + }; + side="Civilian"; + flags=6; + class Attributes + { + }; + id=40; + type="C_man_1"; + atlOffset=-2.6226044e-006; + }; + }; + class Attributes + { + }; + class CrewLinks + { + class LinkIDProvider + { + nextID=1; + }; + class Links + { + items=1; + class Item0 + { + linkID=0; + item0=40; + item1=39; + class CustomData + { + role=1; + }; + }; + }; + }; + id=38; + atlOffset=-2.6226044e-006; + }; + class Item26 + { + dataType="Object"; + class PositionInfo + { + position[]={22918.99,5.039814,16782.658}; + angles[]={-0,0,6.2818937}; + }; + side="Civilian"; + flags=6; + class Attributes + { + }; + id=39; + type="Exile_Car_Van_Fuel_Guerilla02"; + atlOffset=-2.6226044e-006; + }; + class Item27 + { + dataType="Marker"; + position[]={22907.893,3.1900001,16789.203}; + name="marker_0"; + type="mil_triangle"; + id=41; + }; + class Item28 + { + dataType="Object"; + class PositionInfo + { + position[]={22923.447,5.4388428,16953.004}; + }; + side="Empty"; + flags=4; + class Attributes + { + }; + id=43; + type="Exile_Chopper_Huey_Armed_Green"; + }; + class Item29 + { + dataType="Object"; + class PositionInfo + { + position[]={22830.188,13.307643,16618.127}; + angles[]={0.10098849,0,6.253859}; + }; + side="Empty"; + flags=4; + class Attributes + { + }; + id=45; + type="Exile_Chopper_Hellcat_FIA"; + }; + }; +};