From f85432a23efa89242711bd89ca5905794c840154 Mon Sep 17 00:00:00 2001 From: Scruffy Date: Mon, 28 Aug 2023 17:59:33 +0200 Subject: [PATCH] -added mission to Lybor terrain (https://steamcommunity.com/sharedfiles/filedetails/?id=3013515917) --- Configs/CSLA.json | 14 + Configs/CUP.json | 28 + Configs/CWR3.json | 21 + Configs/GM.json | 14 + Configs/IFA3.json | 14 + Configs/OPTRE.json | 7 + Configs/RHS.json | 14 + Configs/SFP.json | 7 + Configs/SPE.json | 14 + Configs/config.json | 45 + .../PositionGenerator.sqf | 35 + .../Scripts/DRN/CommonLib/CommonLib.sqf | 724 +++++ .../Escape/BuildCommunicationCenter.sqf | 292 ++ .../buildall.sqf | 28 + .../init.sqf | 1 + .../mission.sqm | 2466 +++++++++++++++++ .../PositionGenerator.sqf | 35 + .../TE_PatrolBoatMarkers.VTF_Lybor/init.sqf | 1 + .../mission.sqm | Bin 0 -> 3641 bytes .../mission.sqm.oldBackup | 226 ++ .../scripts/DRN/CommonLib/CommonLib.sqf | 724 +++++ .../PositionGenerator.sqf | 35 + .../TE_VillageMarkers.VTF_Lybor/init.sqf | 1 + .../TE_VillageMarkers.VTF_Lybor/mission.sqm | 1285 +++++++++ .../scripts/DRN/CommonLib/CommonLib.sqf | 724 +++++ Islands/Lybor/CommunicationCenterMarkers.sqf | 26 + Islands/Lybor/PatrolBoatMarkers.sqf | 3 + Islands/Lybor/VillageMarkers.sqf | 85 + Islands/Lybor/WorldConfig.sqf | 7 + Missions/Lybor/mission.sqm | 1243 +++++++++ 30 files changed, 8119 insertions(+) create mode 100644 Editing_and_Porting/Porting/Marker Missions/TE_BuildCommunicationCenter.VTF_Lybor/PositionGenerator.sqf create mode 100644 Editing_and_Porting/Porting/Marker Missions/TE_BuildCommunicationCenter.VTF_Lybor/Scripts/DRN/CommonLib/CommonLib.sqf create mode 100644 Editing_and_Porting/Porting/Marker Missions/TE_BuildCommunicationCenter.VTF_Lybor/Scripts/Escape/BuildCommunicationCenter.sqf create mode 100644 Editing_and_Porting/Porting/Marker Missions/TE_BuildCommunicationCenter.VTF_Lybor/buildall.sqf create mode 100644 Editing_and_Porting/Porting/Marker Missions/TE_BuildCommunicationCenter.VTF_Lybor/init.sqf create mode 100644 Editing_and_Porting/Porting/Marker Missions/TE_BuildCommunicationCenter.VTF_Lybor/mission.sqm create mode 100644 Editing_and_Porting/Porting/Marker Missions/TE_PatrolBoatMarkers.VTF_Lybor/PositionGenerator.sqf create mode 100644 Editing_and_Porting/Porting/Marker Missions/TE_PatrolBoatMarkers.VTF_Lybor/init.sqf create mode 100644 Editing_and_Porting/Porting/Marker Missions/TE_PatrolBoatMarkers.VTF_Lybor/mission.sqm create mode 100644 Editing_and_Porting/Porting/Marker Missions/TE_PatrolBoatMarkers.VTF_Lybor/mission.sqm.oldBackup create mode 100644 Editing_and_Porting/Porting/Marker Missions/TE_PatrolBoatMarkers.VTF_Lybor/scripts/DRN/CommonLib/CommonLib.sqf create mode 100644 Editing_and_Porting/Porting/Marker Missions/TE_VillageMarkers.VTF_Lybor/PositionGenerator.sqf create mode 100644 Editing_and_Porting/Porting/Marker Missions/TE_VillageMarkers.VTF_Lybor/init.sqf create mode 100644 Editing_and_Porting/Porting/Marker Missions/TE_VillageMarkers.VTF_Lybor/mission.sqm create mode 100644 Editing_and_Porting/Porting/Marker Missions/TE_VillageMarkers.VTF_Lybor/scripts/DRN/CommonLib/CommonLib.sqf create mode 100644 Islands/Lybor/CommunicationCenterMarkers.sqf create mode 100644 Islands/Lybor/PatrolBoatMarkers.sqf create mode 100644 Islands/Lybor/VillageMarkers.sqf create mode 100644 Islands/Lybor/WorldConfig.sqf create mode 100644 Missions/Lybor/mission.sqm diff --git a/Configs/CSLA.json b/Configs/CSLA.json index 56ac2e6d..48c8d22b 100644 --- a/Configs/CSLA.json +++ b/Configs/CSLA.json @@ -534,6 +534,13 @@ "replace" : {}, "name" : "co10_Escape_CSLA_US_vs_CSLA_and_FIA" }, + { + "island" : "Lybor", + "sqm": "Lybor", + "mod" : "CSLA CSLA", + "replace" : {}, + "name" : "co10_Escape_CSLA_US_vs_CSLA_and_FIA" + }, { "island" : "Altis", "sqm": "Altis", @@ -1023,6 +1030,13 @@ "mod" : "CSLA US", "replace" : {}, "name" : "co10_Escape_CSLA_vs_US_and_FIA" + }, + { + "island" : "Lybor", + "sqm": "Lybor", + "mod" : "CSLA US", + "replace" : {}, + "name" : "co10_Escape_CSLA_vs_US_and_FIA" } ], "Addons" : [ diff --git a/Configs/CUP.json b/Configs/CUP.json index 4f4aea03..29a063dd 100644 --- a/Configs/CUP.json +++ b/Configs/CUP.json @@ -2633,6 +2633,34 @@ "mod" : "CUP Woodland RU vs USMC-RACS", "replace" : {}, "name" : "co10_Escape_CUP_Woodland_RU_vs_USMC_and_RACS" + }, + { + "island" : "Lybor", + "sqm": "Lybor", + "mod" : "CUP Woodland SLA vs USMC-NAPA", + "replace" : {}, + "name" : "co10_Escape_CUP_Woodland_SLA_vs_USMC_and_NAPA" + }, + { + "island" : "Lybor", + "sqm": "Lybor", + "mod" : "CUP Woodland RU vs BAF-ION PMC", + "replace" : {}, + "name" : "co10_Escape_CUP_Woodland_RU_vs_BAF_and_ION_PMC" + }, + { + "island" : "Lybor", + "sqm": "Lybor", + "mod" : "CUP Woodland USMC vs RU-NAPA", + "replace" : {}, + "name" : "co10_Escape_CUP_Woodland_USMC_vs_RU_and_NAPA" + }, + { + "island" : "Lybor", + "sqm": "Lybor", + "mod" : "CUP Woodland RU vs USMC-RACS", + "replace" : {}, + "name" : "co10_Escape_CUP_Woodland_RU_vs_USMC_and_RACS" } ], "Addons" : [ diff --git a/Configs/CWR3.json b/Configs/CWR3.json index 195c6f06..97888436 100644 --- a/Configs/CWR3.json +++ b/Configs/CWR3.json @@ -582,6 +582,13 @@ "replace" : {}, "name" : "co10_Escape_CWR3_SOV_vs_US" }, + { + "island" : "Lybor", + "sqm": "Lybor", + "mod" : "CWR3-US", + "replace" : {}, + "name" : "co10_Escape_CWR3_SOV_vs_US" + }, { "island" : "Altis", "sqm": "Altis", @@ -1100,6 +1107,13 @@ "replace" : {}, "name" : "co10_Escape_CWR3_SOV_vs_USMC" }, + { + "island" : "Lybor", + "sqm": "Lybor", + "mod" : "CWR3-USMC", + "replace" : {}, + "name" : "co10_Escape_CWR3_SOV_vs_USMC" + }, { "island" : "Altis", "sqm": "Altis", @@ -1575,6 +1589,13 @@ "mod" : "CWR3-SOV", "replace" : {}, "name" : "co10_Escape_CWR3_US_vs_SOV" + }, + { + "island" : "Lybor", + "sqm": "Lybor", + "mod" : "CWR3-SOV", + "replace" : {}, + "name" : "co10_Escape_CWR3_US_vs_SOV" } ], "Addons" : [ diff --git a/Configs/GM.json b/Configs/GM.json index e40f7b62..8c711478 100644 --- a/Configs/GM.json +++ b/Configs/GM.json @@ -595,6 +595,13 @@ "replace" : {}, "name" : "co10_Escape_GM_NVA_vs_BW" }, + { + "island" : "Lybor", + "sqm": "Lybor", + "mod" : "GM BW", + "replace" : {}, + "name" : "co10_Escape_GM_NVA_vs_BW" + }, { "island" : "Altis", "sqm": "Altis", @@ -1063,6 +1070,13 @@ "mod" : "GM NVA", "replace" : {}, "name" : "co10_Escape_GM_BW_vs_NVA" + }, + { + "island" : "Lybor", + "sqm": "Lybor", + "mod" : "GM NVA", + "replace" : {}, + "name" : "co10_Escape_GM_BW_vs_NVA" } ], "Addons" : [ diff --git a/Configs/IFA3.json b/Configs/IFA3.json index 90a7ed6c..535c3e93 100644 --- a/Configs/IFA3.json +++ b/Configs/IFA3.json @@ -524,6 +524,13 @@ "replace" : {}, "name" : "co10_Escape_IFA3_SOV_vs_GER" }, + { + "island" : "Lybor", + "sqm": "Lybor", + "mod" : "IFA3", + "replace" : {}, + "name" : "co10_Escape_IFA3_SOV_vs_GER" + }, { "island": "Staszow", "sqm": "Staszow", @@ -958,6 +965,13 @@ "replace" : {}, "name" : "co10_Escape_IFA3_GER_vs_SOV" }, + { + "island" : "Lybor", + "sqm": "Lybor", + "mod" : "IFA3-GER", + "replace" : {}, + "name" : "co10_Escape_IFA3_GER_vs_SOV" + }, { "island": "Staszow", "sqm": "Staszow", diff --git a/Configs/OPTRE.json b/Configs/OPTRE.json index f0c0d6ff..81bf6d63 100644 --- a/Configs/OPTRE.json +++ b/Configs/OPTRE.json @@ -698,6 +698,13 @@ "mod" : "OPTRE Woodland", "replace" : {}, "name" : "co10_Escape_OPTRE_INNIE_vs_UNSC Woodland" + }, + { + "island" : "Lybor", + "sqm": "Lybor", + "mod" : "OPTRE Woodland", + "replace" : {}, + "name" : "co10_Escape_OPTRE_INNIE_vs_UNSC Woodland" } ], "Addons" : [ diff --git a/Configs/RHS.json b/Configs/RHS.json index 78b16ad5..ed9e6e93 100644 --- a/Configs/RHS.json +++ b/Configs/RHS.json @@ -1362,6 +1362,20 @@ "mod" : "RHS-US w", "replace" : {}, "name" : "co10_Escape_RHS_RU_vs_US" + }, + { + "island" : "Lybor", + "sqm": "Lybor", + "mod" : "RHS d", + "replace" : {}, + "name" : "co10_Escape_RHS_US_vs_RU" + }, + { + "island" : "Lybor", + "sqm": "Lybor", + "mod" : "RHS-US w", + "replace" : {}, + "name" : "co10_Escape_RHS_RU_vs_US" } ], "Addons" : [ diff --git a/Configs/SFP.json b/Configs/SFP.json index 0001845e..8d05b3b8 100644 --- a/Configs/SFP.json +++ b/Configs/SFP.json @@ -661,6 +661,13 @@ "mod" : "SFP", "replace" : {}, "name" : "co10_Escape_SFP_LDF_vs_SF_and_FDF" + }, + { + "island" : "Lybor", + "sqm": "Lybor", + "mod" : "SFP", + "replace" : {}, + "name" : "co10_Escape_SFP_LDF_vs_SF_and_FDF" } ], "Addons" : [ diff --git a/Configs/SPE.json b/Configs/SPE.json index e25b9f32..1bc73fed 100644 --- a/Configs/SPE.json +++ b/Configs/SPE.json @@ -483,6 +483,13 @@ "replace" : {}, "name" : "co10_Escape_SPE_US_vs_GER" }, + { + "island" : "Lybor", + "sqm": "Lybor", + "mod" : "SPE_USvsGER", + "replace" : {}, + "name" : "co10_Escape_SPE_US_vs_GER" + }, { "island": "Staszow", "sqm": "Staszow", @@ -924,6 +931,13 @@ "replace" : {}, "name" : "co10_Escape_SPE_GER_vs_US" }, + { + "island" : "Lybor", + "sqm": "Lybor", + "mod" : "SPE_GERvsUS", + "replace" : {}, + "name" : "co10_Escape_SPE_GER_vs_US" + }, { "island": "Staszow", "sqm": "Staszow", diff --git a/Configs/config.json b/Configs/config.json index ceb7a4c7..458d868a 100644 --- a/Configs/config.json +++ b/Configs/config.json @@ -1015,6 +1015,16 @@ "ISLANDNAME" : "Zagorsk Big Lakes" } }, + { + "name" : "Lybor", + "class" : "VTF_Lybor", + "path" : "./Islands/Lybor/", + "replace" : + { + "ISLAND" : "Lybor", + "ISLANDNAME" : "Lybor" + } + }, { "name" : "Staszow", "class" : "Staszow", @@ -2656,6 +2666,41 @@ "mod" : "Vanilla US", "replace" : {}, "name" : "co10_Escape_BIS_CSAT_vs_NATO" + }, + { + "island" : "Lybor", + "sqm": "Lybor", + "mod" : "Vanilla", + "replace" : {}, + "name" : "co10_Escape_BIS_NATO_vs_CSAT" + }, + { + "island" : "Lybor", + "sqm": "Lybor", + "mod" : "Vanilla Apex", + "replace" : {}, + "name" : "co10_Escape_APEX_NATO_vs_CSAT" + }, + { + "island" : "Lybor", + "sqm": "Lybor", + "mod" : "Vanilla Apex US", + "replace" : {}, + "name" : "co10_Escape_APEX_CSAT_vs_NATO" + }, + { + "island" : "Lybor", + "sqm": "Lybor", + "mod" : "Vanilla Contact US", + "replace" : {}, + "name" : "co10_Escape_Contact_CSAT_vs_NATO" + }, + { + "island" : "Lybor", + "sqm": "Lybor", + "mod" : "Vanilla US", + "replace" : {}, + "name" : "co10_Escape_BIS_CSAT_vs_NATO" } ], "Addons" : [ diff --git a/Editing_and_Porting/Porting/Marker Missions/TE_BuildCommunicationCenter.VTF_Lybor/PositionGenerator.sqf b/Editing_and_Porting/Porting/Marker Missions/TE_BuildCommunicationCenter.VTF_Lybor/PositionGenerator.sqf new file mode 100644 index 00000000..2e9630c9 --- /dev/null +++ b/Editing_and_Porting/Porting/Marker Missions/TE_BuildCommunicationCenter.VTF_Lybor/PositionGenerator.sqf @@ -0,0 +1,35 @@ +private ["_markerBaseName", "_arrayName", "_markerStartNo"]; +private ["_markerNo", "_markerName", "_i", "_isIcon"]; + +_markerBaseName = "a3e_var_communicationCenter_"; +_arrayName = "a3e_communicationCenterMarkers"; +_markerStartNo = 1; + +_markerNo = _markerStartNo; +_markerName = _markerBaseName + str _markerNo; + +diag_log ("""" + _arrayName + " = [];"""); + +_isIcon = false; +if (markerShape _markerName == "ICON") then { + _isIcon = true; +}; + +_i = 0; +while {[_markerName] call drn_fnc_CL_MarkerExists} do { + if (_isIcon) then { + diag_log ("""" + _arrayName + " set [" + str _i + ", [" + str (getMarkerPos _markerName) + ", " + str markerDir _markerName + "]];"""); + } + else { + diag_log ("""" + _arrayName + " set [" + str _i + ", [" + str (getMarkerPos _markerName) + ", " + str markerDir _markerName + ", """ + markerShape _markerName + """, " + str markerSize _markerName + "]];"""); + }; + + _markerNo = _markerNo + 1; + _markerName = _markerBaseName + str _markerNo; + _i = _i + 1; +}; + +//diag_log ("""" + _arrayName + "Initialized = true;"""); +//diag_log ("""publicVariable """ + _arrayName + "Initialized"";"""); + +player sideChat (str _i + " markers generated."); diff --git a/Editing_and_Porting/Porting/Marker Missions/TE_BuildCommunicationCenter.VTF_Lybor/Scripts/DRN/CommonLib/CommonLib.sqf b/Editing_and_Porting/Porting/Marker Missions/TE_BuildCommunicationCenter.VTF_Lybor/Scripts/DRN/CommonLib/CommonLib.sqf new file mode 100644 index 00000000..5af03fcc --- /dev/null +++ b/Editing_and_Porting/Porting/Marker Missions/TE_BuildCommunicationCenter.VTF_Lybor/Scripts/DRN/CommonLib/CommonLib.sqf @@ -0,0 +1,724 @@ +/* CommonLib v1.04 + * Author: Engima of Ostgota Ops + * History: + * 2011-01-25: Created. + * 2011-11-19: Updated to v1.01 - New version of function drn_fnc_CL_PositionIsInsideMarker. Still backward compatible with v1.00. + * 2011-12-17: Added debug methods and method ShowTitleTextAllClients. + * 2011-12-23: Added method drn_fnc_CL_InitParams + */ + +/******************************************************************************************/ +/* Variables */ + +// Set this variable to true if you want debug info to show only in RTF-file (and not on player's screens). +drn_var_CL_SilentDebugMode = false; + +/******************************************************************************************/ +/* Functions */ + +/* + * Summary: Initializes the paramsArray with default values if played in single player. + */ +drn_fnc_CL_InitParams = { + if (isNil "paramsArray") then + { + private ["_c", "_i", "_paramName"]; + paramsArray=[]; + + if (isClass (missionConfigFile/"Params")) then + { + _c=count (missionConfigFile/"Params"); + for [ {_i=0}, {_i<_c}, {_i=_i+1} ] do + { + _paramName = (configName ((missionConfigFile >> "Params") select _i)); + paramsArray=paramsArray+[ getNumber (missionConfigFile >> "Params" >> _paramName >> "default") ]; + }; + }; + _c=count paramsArray; + if (isNil "param1" && _c>0)then{param1=paramsArray select 0}; + if (isNil "param2" && _c>1)then{param2=paramsArray select 1}; + }; +}; + +/* + * Summary: Checks if a marker exists. + * Arguments: + * _marker: Marker name of marker to test. + * Returns: true if marker exists, else false. + */ +drn_fnc_CL_MarkerExists = { + private ["_exists", "_marker"]; + + _marker = _this select 0; + + _exists = false; + if (((getMarkerPos _marker) select 0) != 0 || ((getMarkerPos _marker) select 1 != 0)) then { + _exists = true; + }; + _exists +}; + +/* + * Summary: Gets a random marker that fulfulls specified name expression and is within a specified range from a reference position. + * Remarks: Markers sought must have name format 'markerPreNameX', where X is an integer value. Marker number must start with + * 1 and be an unbroken ascending sequence. + * Arguments: + * _markerPreName: Marker name except the ending integer value. + * _position: Reference position. + * _minDistance: Marker's minimum distance from reference position. + * _maxDistance: Marker's maximum distance from reference position. + * Returns: Name of found marker. Empty string ("") if no marker was found. + */ +drn_fnc_CL_GetMarkerWithinRange = { + private ["_markerPreName", "_markerNo", "_markerName", "_minDistance", "_maxDistance", "_markersWithinRange", "_markersOutsideRange", "_position", "_returnValue"]; + + _markerPreName = _this select 0; + _position = _this select 1; + _minDistance = _this select 2; + _maxDistance = _this select 3; + + _markersWithinRange = []; + _markersOutsideRange = []; + _returnValue = ""; + + _markerNo = 1; + _markerName = _markerPreName + str _markerNo; + + while {[_markerName] call drn_fnc_CL_MarkerExists} do { + if (_position distance (getMarkerPos _markerName) > _minDistance && _position distance (getMarkerPos _markerName) < _maxDistance) then { + _markersWithinRange set [count _markersWithinRange, _markerName]; + } + else { + if (_position distance (getMarkerPos _markerName) > _minDistance) then { + _markersOutsideRange set [count _markersOutsideRange, _markerName]; + }; + }; + + _markerNo = _markerNo + 1; + _markerName = _markerPreName + str _markerNo; + }; + + if (count _markersWithinRange > 0) then { + _returnValue = _markersWithinRange select floor (random count _markersWithinRange); + } + else { + if (count _markersOutsideRange > 0) then { + _returnValue = _markersOutsideRange select floor (random count _markersOutsideRange); + }; + }; + + _returnValue +}; + +/* + * Summary: Gets the marker closest to a reference position. + * Remarks: Markers sought must have name format 'markerPreNameX' or format 'markerPreNameX_Y', where X is an integer value + * specifying a marker number and Y is an integer value specifying a sub marker. Marker number must start with 1 and be an unbroken + * ascending sequence. The same applies for all submarker sequences. + * Arguments: + * _position: Reference position. + * _markerPreName: Marker name except the ending integer value. + * [_isTwoDimensional]: true if the marker sequence has sub markers, else false. + * Returns: Marker name of closest marker. Empty string ("") if no marker was found. + */ +drn_fnc_CL_GetClosestMarker = { + private ["_position", "_markerPreName", "_isTwoDimensional", "_returnMarkerName"]; + private ["_closestDistance", "_markerNo", "_subMarkerNo", "_markerName", "_distance"]; + + _position = _this select 0; + _markerPreName = _this select 1; + if (count _this > 2) then {_isTwoDimensional = _this select 2;} else {_isTwoDimensional = false}; + + _markerNo = 1; + _subMarkerNo = 1; + _closestDistance = 1000000; + _returnMarkerName = ""; + + if (_isTwoDimensional) then { + _markerName = _markerPreName + str _markerNo + "_" + str _subMarkerNo; + } + else { + _markerName = _markerPreName + str _markerNo; + }; + + while {[_markerName] call drn_fnc_CL_MarkerExists} do { + if (_isTwoDimensional) then { + while {[_markerName] call drn_fnc_CL_MarkerExists} do { + + _distance = (GetMarkerPos _markerName) distance _position; + if (_distance < _closestDistance) then { + _closestDistance = _distance; + _returnMarkerName = _markerName; + }; + + _subMarkerNo = _subMarkerNo + 1; + _markerName = _markerPreName + str _markerNo + "_" + str _subMarkerNo; + }; + + // Get next marker + _markerNo = _markerNo + 1; + _subMarkerNo = 1; + _markerName = _markerPreName + str _markerNo + "_" + str _subMarkerNo; + } + else { + _distance = (GetMarkerPos _markerName) distance _position; + if (_distance < _closestDistance) then { + _closestDistance = _distance; + }; + }; + }; + + _returnMarkerName +}; + +/* + * Summary: Rotates a position around a center position. + * Arguments: + * _centerPos: Center position to rotate around. + * _pos: Position that will be rotated. + * _dir: Direction (angle) to rotate. + */ +drn_fnc_CL_RotatePosition = { + private ["_centerPos", "_pos", "_dir"]; + private ["_px", "_py", "_mpx", "_mpy", "_ma", "_rpx", "_rpy"]; + + _centerPos = _this select 0; + _pos = _this select 1; + _dir = _this select 2; + + _px = _pos select 0; + _py = _pos select 1; + _mpx = _centerPos select 0; + _mpy = _centerPos select 1; + _ma = _dir; + + //Now, rotate point + _rpx = ( (_px - _mpx) * cos(_ma) ) + ( (_py - _mpy) * sin(_ma) ) + _mpx; + _rpy = (-(_px - _mpx) * sin(_ma) ) + ( (_py - _mpy) * cos(_ma) ) + _mpy; + + [_rpx, _rpy, 0] +}; + +/* + * Summary: Gets a random position inside a marker of shape RECTANGLE or ELLIPSE with any angle. + * Arguments: + * _markerName: Name of marker to get a random position inside. + * Returns: A position (array) inside current marker. If marker doesn't exist, [0, 0, 0] is returned. + * History: + * Created in CommonLib v1.00. + * Updated in CommonLib v1.01 - Function now supports RECTANGLE and ELLIPSE at any angle, previously only RECTANGLEs with angle 0. + */ +drn_fnc_CL_GetRandomMarkerPos = { + private ["_markerName"]; + private ["_isInside", "_px", "_py", "_mpx", "_mpy", "_msx", "_msy", "_ma", "_rpx", "_rpy", "_i"]; + + _markerName = _this select 0; + + _isInside = false; + _i = 0; + while {!_isInside} do { + _mpx = (getMarkerPos _markerName) select 0; + _mpy = (getMarkerPos _markerName) select 1; + _msx = (getMarkerSize _markerName) select 0; + _msy = (getMarkerSize _markerName) select 1; + _ma = (markerDir _markerName); + + _px = _mpx -_msx + random (_msx * 2); + _py = _mpy -_msy + random (_msy * 2); + + //Now, rotate point as marker is rotated + _rpx = ( (_px - _mpx) * cos(_ma) ) + ( (_py - _mpy) * sin(_ma) ) + _mpx; + _rpy = (-(_px - _mpx) * sin(_ma) ) + ( (_py - _mpy) * cos(_ma) ) + _mpy; + + if ([[_rpx, _rpy, 0], _markerName] call drn_fnc_CL_PositionIsInsideMarker) then { + _isInside = true; + }; + + _i = _i + 1; + if (_i > 1000) exitWith { + _rpx = 0; + _rpy = 0; + }; + }; + + [_rpx, _rpy, 0] +}; + +/* + * Summary: Checks if a position is inside a marker. + * Remarks: Marker can be of shape "RECTANGLE" or "ELLIPSE" and at any angle. + * Arguments: + * _markerName: Name of current marker. + * _pos: Position to test. + * Returns: true if position is inside marker. Else false. + * History: + * Created in CommonLib v1.00 + * Updated in CommonLib v1.01 - Function now supports RECTANGLE and ELLIPSE at any angle, previously only RECTANGLEs with angle 0. + */ +drn_fnc_CL_PositionIsInsideMarker = { + private ["_markerName", "_pos"]; + private ["_isInside", "_px", "_py", "_mpx", "_mpy", "_msx", "_msy", "_ma", "_xmin", "_xmax", "_ymin", "_ymax", "_rpx", "_rpy", "_res"]; + + _pos = _this select 0; + _markerName = _this select 1; + + _px = _pos select 0; + _py = _pos select 1; + _mpx = (getMarkerPos _markerName) select 0; + _mpy = (getMarkerPos _markerName) select 1; + _msx = (getMarkerSize _markerName) select 0; + _msy = (getMarkerSize _markerName) select 1; + _ma = -(markerDir _markerName); + + _xmin = _mpx - _msx; + _xmax = _mpx + _msx; + _ymin = _mpy - _msy; + _ymax = _mpy + _msy; + + //Now, rotate point to investigate around markers center in order to check against a nonrotated marker + _rpx = ( (_px - _mpx) * cos(_ma) ) + ( (_py - _mpy) * sin(_ma) ) + _mpx; + _rpy = (-(_px - _mpx) * sin(_ma) ) + ( (_py - _mpy) * cos(_ma) ) + _mpy; + + _isInside = false; + + if (markerShape _markerName == "RECTANGLE") then { + if (((_rpx > _xmin) && (_rpx < _xmax)) && ((_rpy > _ymin) && (_rpy < _ymax))) then + { + _isInside = true; + }; + }; + + if (markerShape _markerName == "ELLIPSE") then { + _res = (((_rpx-_mpx)^2)/(_msx^2)) + (((_rpy-_mpy)^2)/(_msy^2)); + if ( _res < 1 ) then + { + _isInside = true; + }; + }; + + _isInside +}; + +drn_CL_ShowCommandTextEventArgs = []; // [unit, text] + +"drn_CL_ShowCommandTextEventArgs" addPublicVariableEventHandler { + drn_CL_ShowCommandTextEventArgs call drn_fnc_CL_ShowCommandTextLocal; +}; + +/* + * Summary: Shows a text as command text on the local client. + * Arguments: + * _text: Text to show. + */ +drn_fnc_CL_ShowCommandTextLocal = { + private ["_text"]; + _text = _this select 0; + + if (!isNull player) then { + player globalChat _text; + }; + + diag_log ("Title text: " + _text); +}; + +/* + * Summary: Shows a text as command text on all clients. + * Arguments: + * _text: Text to show. + */ +drn_fnc_CL_ShowCommandTextAllClients = { + private ["_text"]; + _text = _this select 0; + + drn_CL_ShowCommandTextEventArgs = [_text]; + publicVariable "drn_CL_ShowCommandTextEventArgs"; + drn_CL_ShowCommandTextEventArgs call drn_fnc_CL_ShowCommandTextLocal; +}; + +drn_CL_ShowTitleTextEventArgs = []; // [text] + +"drn_CL_ShowTitleTextEventArgs" addPublicVariableEventHandler { + drn_CL_ShowTitleTextEventArgs call drn_fnc_CL_ShowTitleTextLocal; +}; + +/* + * Summary: Shows a text as a title text on the local client. + * Arguments: + * _text: Text to show. + * [_showAsSubTitle]: Optional. true if the text are to be shown as a sub title. false if it's to be shown in the middle of the screen. + */ +drn_fnc_CL_ShowTitleTextLocal = { + private ["_text", "_showAsSubTitle"]; + _text = _this select 0; + if (count _this > 1) then {_showAsSubTitle = _this select 1;} else {_showAsSubTitle = false}; + + if (!isNull player) then { + if (_showAsSubTitle) then { + titleText [_text, "PLAIN DOWN"]; + } + else { + titleText [_text, "PLAIN"]; + }; + }; + + diag_log ("Title text: " + _text); +}; + +/* + * Summary: Shows a text as a title text on all clients. + * Arguments: + * _text: Text to show. + * [_showAsSubTitle]: Optional. true if the text are to be shown as a sub title. false if it's to be shown in the middle of the screen. + */ +drn_fnc_CL_ShowTitleTextAllClients = { + private ["_text", "_showAsSubTitle"]; + _text = _this select 0; + if (count _this > 1) then {_showAsSubTitle = _this select 1;} else {_showAsSubTitle = false}; + + drn_CL_ShowTitleTextEventArgs = [_text, _showAsSubTitle]; + publicVariable "drn_CL_ShowTitleTextEventArgs"; + drn_CL_ShowTitleTextEventArgs call drn_fnc_CL_ShowTitleTextLocal; +}; + +drn_CL_AddScoreEventArgs = []; // [vehicleVarName, score] + +"drn_CL_AddScoreEventArgs" addPublicVariableEventHandler { + if (isServer) then { + drn_CL_AddScoreEventArgs call drn_fnc_CL_AddScoreServer; + }; +}; + +drn_fnc_CL_AddScoreServer = { + drn_CL_AddScoreEventArgs call compile format ["%1 addScore %2;", drn_CL_AddScoreEventArgs select 0, drn_CL_AddScoreEventArgs select 1]; +}; + +/* + * Summary: Adds score to a player. + * Arguments: + * _vehicleVarName: Vehicle variable name of unit to add score to. + * _score: The score to be added. + */ +drn_fnc_CL_AddScore = { + private ["_unit", "_score"]; + private ["_vehicleVarName"]; + + _unit = _this select 0; + _score = _this select 1; + + _vehicleVarName = vehicleVarName _unit; + drn_CL_AddScoreEventArgs = [_vehicleVarName, _score]; + + if (isServer) then { + drn_CL_AddScoreEventArgs call drn_fnc_CL_AddScoreServer; + } + else { + publicVariable "drn_CL_AddScoreEventArgs"; + }; +}; + +/* + * Summary: Adds units to garbage collector. Units added to garbage collector (dead or alive) are deleted when on "clean up distance" from reference group. + * Arguments: + * _this: Array of units to add to garbage collector. + */ +drn_fnc_CL_AddUnitsToGarbageCollector = { + private ["_units"]; + _units = _this; + + if (isNil "drn_var_CL_GarbageCollectorUnits") then { + drn_var_CL_GarbageCollectorUnits = []; + }; + + drn_var_CL_GarbageCollectorUnits = drn_var_CL_GarbageCollectorUnits + _units; +}; + +/* + * Summary: Starts the garbage collector. Garbage collector removes empty groups and units added by function drn_fnc_CL_AddUnitsToGarbageCollector every 10 seconds. + * Remarks: + * This function must be spawned (not called). + * Arguments: + * _referenceGroup: When distance is at least "clean up distance" to every unit in this group (preferrably player group), objects relevant to garbage collector will be garbage collected. + * [_cleanUpDistance]: Optional. Distance in meters at which objects will be garbage collected. + * [_debug]: Optional. true to enable debug mode, else false. + */ +drn_fnc_CL_RunGarbageCollector = { + private ["_referenceGroup", "_cleanUpDistance", "_debug"]; + private ["_emptyGroups", "_groupsToDelete", "_unitsToDelete"]; + + _referenceGroup = _this select 0; + if (count _this > 1) then {_cleanUpDistance = _this select 1;} else {_cleanUpDistance = 750}; + if (count _this > 2) then { _debug = _this select 2; } else { _debug = false; }; + + if (_debug) then { + ["Garbage collector started."] call drn_fnc_CL_ShowDebugTextAllClients; + }; + + if (isNil "drn_var_CL_GarbageCollectorUnits") then { + drn_var_CL_GarbageCollectorUnits = []; + }; + + _emptyGroups = []; + + while {true} do { + + // Find empty groups + { + if (count units _x <= 0) then { + _emptyGroups set [count _emptyGroups, _x]; + }; + } foreach allGroups; + + if (_debug) then { + sleep 1; + } + else { + sleep 10; + }; + + // Delete empty groups if they are still empty + _groupsToDelete = []; + { + if (count units _x <= 0) then { + _groupsToDelete set [count _groupsToDelete, _x]; + }; + } foreach _emptyGroups; + + _emptyGroups = _emptyGroups - _groupsToDelete; + + // Delete the groups + { + if (_debug) then { + ["Group '" + str _x + "' garbage collected."] call drn_fnc_CL_ShowDebugTextAllClients; + }; + + deleteGroup _x; + } foreach _groupsToDelete; + + // Delete units that are far away + _unitsToDelete = []; + { + private ["_unit", "_farAway"]; + + _unit = _x; + _farAway = true; + + { + if (_x distance _unit < _cleanUpDistance) then { + _farAway = false; + }; + } foreach units _referenceGroup; + + if (_farAway) then { + _unitsToDelete set [count _unitsToDelete, _unit]; + }; + } foreach drn_var_CL_GarbageCollectorUnits; + + drn_var_CL_GarbageCollectorUnits = drn_var_CL_GarbageCollectorUnits - _unitsToDelete; + + { + private ["_group"]; + + _group = group _x; + + if (_debug) then { + ["Unit '" + str _x + "' garbage collected."] call drn_fnc_CL_ShowDebugTextAllClients; + }; + deleteVehicle _x; + + if (str _group != "") then { + if (count units _group == 0) then { + if (_debug) then { + ["Group '" + str _group + "' garbage collected."] call drn_fnc_CL_ShowDebugTextAllClients; + }; + + deleteGroup _group; + }; + }; + } foreach _unitsToDelete; + }; +}; + +/******************************************************************************************/ +// Debug stuff + +drn_CL_DebugTextEventArgs = []; // Empty +drn_CL_DebugMarkerEventArgs = []; // [name, position, size, direction, shape ("RECTANGLE" or "ELLIPSE"), markerColor, markerText (optional)] or alternatively [name, position, type, markerColor (optional), markerText (optional)] +drn_CL_DeleteDebugMarkerEventArgs = []; // [name] + +"drn_CL_DebugTextEventArgs" addPublicVariableEventHandler { + drn_CL_DebugTextEventArgs call drn_fnc_CL_ShowDebugTextLocal; +}; + +"drn_CL_DebugMarkerEventArgs" addPublicVariableEventHandler { + drn_CL_DebugMarkerEventArgs call drn_fnc_CL_SetDebugMarkerLocal; +}; + +"drn_CL_DeleteDebugMarkerEventArgs" addPublicVariableEventHandler { + drn_CL_DeleteDebugMarkerEventArgs call drn_fnc_CL_DeleteDebugMarkerLocal; +}; + +/* + * Summary: Shows debug text on local client. + * Remarks: + * if global variable "drn_var_CL_SilentDebugMode" is set to true, debug text will only be written to RTF-file and not shown on screen. + * Arguments: + * _text: Debug text. + */ +drn_fnc_CL_ShowDebugTextLocal = { + private ["_minutes", "_seconds"]; + + if (!isNull player) then { + if (!drn_var_CL_SilentDebugMode) then { + player sideChat (_this select 0); + }; + }; + + _minutes = floor (time / 60); + _seconds = floor (time - (_minutes * 60)); + diag_log ((str _minutes + ":" + str _seconds) + " Debug: " + (_this select 0)); +}; + +/* + * Summary: Shows debug text on all clients. + * Remarks: + * if global variable "drn_var_CL_SilentDebugMode" is set to true, debug text will only be written to RTF-file and not shown on screen. + * Arguments: + * _text: Debug text. + */ +drn_fnc_CL_ShowDebugTextAllClients = { + drn_CL_DebugTextEventArgs = _this; + publicVariable "drn_CL_DebugTextEventArgs"; + drn_CL_DebugTextEventArgs call drn_fnc_CL_ShowDebugTextLocal; +}; + +/* + * Summary: Shows debug marker on local client. + * Remarks: + * if global variable "drn_var_CL_SilentDebugMode" is set to true, debug marker will not shown. + * Arguments alternative #1 (Marker representing an area): + * _markerName: Marker's name. (must be global unique). + * _position: Marker's position. + * _size: Marker's size on array format [x, y]. + * _direction: Marker's direction. + * _shape: "RECTANGLE" or "ELLIPSE". + * _markerColor: Marker's color ("Default", "ColorRed", "ColorYellow" etc.). + * [_markerText]: Optional. Marker's text. + * Arguments alternative #2 (Marker representing an icon). + * _markerName: Marker's name. (must be global unique). + * _position: Marker's position. + * _type: Markers icon type (applies to icons in cfgIcons, like "Warning", "Dot" etc.). + * [_markerColor]: Optional. Marker's color ("Default", "ColorRed", "ColorYellow" etc.). + * [_markerText]. Optional. Marker's text. + */ +drn_fnc_CL_SetDebugMarkerLocal = { + private ["_markerName", "_position", "_size", "_direction", "_type", "_shape", "_markerColor", "_markerText"]; + private ["_marker"]; + + if (!isNull player) then { + if (!drn_var_CL_SilentDebugMode) then { + _markerName = _this select 0; + _position = _this select 1; + _markerColor = "Default"; + _markerText = ""; + + if (count _this == 6) then { + _size = _this select 2; + _direction = _this select 3; + _shape = _this select 4; + _markerColor = _this select 5; + }; + if (count _this == 7) then { + _size = _this select 2; + _direction = _this select 3; + _shape = _this select 4; + _markerColor = _this select 5; + _markerText = _this select 6; + }; + if (count _this == 3) then { + _type = _this select 2; + _shape = "ICON"; + }; + if (count _this == 4) then { + _type = _this select 2; + _shape = "ICON"; + _markerColor = _this select 3; + }; + if (count _this == 5) then { + _type = _this select 2; + _shape = "ICON"; + _markerColor = _this select 3; + _markerText = _this select 4; + }; + + // Delete old marker + if ([_markerName] call drn_fnc_CL_MarkerExists) then { + deleteMarkerLocal _markerName; + }; + + // Set new marker + _marker = createMarkerLocal [_markerName, _position]; + _marker setMarkerShapeLocal _shape; + _marker setMarkerColorLocal _markerColor; + _marker setMarkerTextLocal _markerText; + + if (count _this == 6 || count _this == 7) then { + _marker setMarkerSizeLocal _size; + _marker setMarkerDirLocal _direction; + }; + if (count _this == 3 || count _this == 4 || count _this == 5) then { + _marker setMarkerTypeLocal _type; + }; + }; + }; +}; + +/* + * Summary: Shows debug marker on all clients. + * Remarks: + * if global variable "drn_var_CL_SilentDebugMode" is set to true, debug marker will not shown. + * Arguments alternative #1 (Marker representing an area): + * _markerName: Marker's name. (must be global unique). + * _position: Marker's position. + * _size: Marker's size on array format [x, y]. + * _direction: Marker's direction. + * _shape: "RECTANGLE" or "ELLIPSE". + * _markerColor: Marker's color ("Default", "ColorRed", "ColorYellow" etc.). + * [_markerText]: Optional. Marker's text. + * Arguments alternative #2 (Marker representing an icon). + * _markerName: Marker's name. (must be global unique). + * _position: Marker's position. + * _type: Markers icon type (applies to icons in cfgIcons, like "Warning", "Dot" etc.). + * [_markerColor]: Optional. Marker's color ("Default", "ColorRed", "ColorYellow" etc.). + * [_markerText]. Optional. Marker's text. + */ +drn_fnc_CL_SetDebugMarkerAllClients = { + drn_CL_DebugMarkerEventArgs = _this; + publicVariable "drn_CL_DebugMarkerEventArgs"; + drn_CL_DebugMarkerEventArgs call drn_fnc_CL_SetDebugMarkerLocal; +}; + +/* + * Summary: Deletes a debug marker on local client. + * Arguments: + * _markerName: Name of marker to delete. + */ +drn_fnc_CL_DeleteDebugMarkerLocal = { + private ["_markerName"]; + _markerName = _this select 0; + deleteMarkerLocal _markerName; +}; + +/* + * Summary: Deletes a debug marker on all clients. + * Arguments: + * _markerName: Name of marker to delete. + */ +drn_fnc_CL_DeleteDebugMarkerAllClients = { + drn_CL_DeleteDebugMarkerEventArgs = _this; + publicVariable "drn_CL_DeleteDebugMarkerEventArgs"; + drn_CL_DeleteDebugMarkerEventArgs call drn_fnc_CL_DeleteDebugMarkerLocal; +}; + +drn_var_CL_CommonLibVersion = 1.04; +drn_var_commonLibInitialized = true; + diff --git a/Editing_and_Porting/Porting/Marker Missions/TE_BuildCommunicationCenter.VTF_Lybor/Scripts/Escape/BuildCommunicationCenter.sqf b/Editing_and_Porting/Porting/Marker Missions/TE_BuildCommunicationCenter.VTF_Lybor/Scripts/Escape/BuildCommunicationCenter.sqf new file mode 100644 index 00000000..9bae70ae --- /dev/null +++ b/Editing_and_Porting/Porting/Marker Missions/TE_BuildCommunicationCenter.VTF_Lybor/Scripts/Escape/BuildCommunicationCenter.sqf @@ -0,0 +1,292 @@ +private ["_centerPos", "_rotateDir", "_staticWeaponClasses", "_parkedVehicleClasses", "_index"]; +private ["_pos", "_dir", "_posX", "_posY", "_sectionDir", "_guns", "_gun", "_vehicle", "_powerGenerator"]; +private ["_fnc_CreateObject"]; +private ["_obj"]; + + +_centerPos = _this select 0; +_rotateDir = _this select 1; + +if (count _this > 2) then { _staticWeaponClasses = _this select 2; } else { _staticWeaponClasses = []; }; +if (count _this > 3) then { _parkedVehicleClasses = _this select 3; } else { _parkedVehicleClasses = []; }; + +_fnc_CreateObject = { + private ["_className", "_relativePos", "_relativeDir", "_centerPos", "_rotateDir"]; + private ["_object", "_realPos", "_realDir"]; + + _className = _this select 0; + _relativePos = _this select 1; + _relativeDir = _this select 2; + _centerPos = _this select 3; + _rotateDir = _this select 4; + + _realPos = ([_centerPos, [(_centerPos select 0) + (_relativePos select 0), (_centerPos select 1) + (_relativePos select 1)], _rotateDir] call drn_fnc_CL_RotatePosition); + _realDir = _relativeDir + _rotateDir; + _object = createVehicle [_className, _realPos, [], 0, "CAN_COLLIDE"]; + _object setDir _realDir; + //_object lock true; + _object +}; + +_fnc_CreateVehicle = { + private ["_className", "_relativePos", "_relativeDir", "_centerPos", "_rotateDir"]; + private ["_object", "_realPos", "_realDir"]; + + _className = _this select 0; + _relativePos = _this select 1; + _relativeDir = _this select 2; + _centerPos = _this select 3; + _rotateDir = _this select 4; + + _realPos = ([_centerPos, [(_centerPos select 0) + (_relativePos select 0), (_centerPos select 1) + (_relativePos select 1)], _rotateDir] call drn_fnc_CL_RotatePosition); + _realDir = _relativeDir + _rotateDir; + //_object = _className createVehicle _realpos; + _object = createVehicle [_className, _realpos, [], 0, "NONE"]; + _object setDir _realDir; + //_object lock true; + _object +}; + +/// Bagfence + +/* +// (North western corner) +_pos = [-18, 16.5]; +_dir = 90; +["Land_fort_bagfence_corner", _pos, _dir, _centerPos, _rotateDir] call _fnc_CreateObject; +*/ + +//(North western wall) +_pos = [-18, 15.15]; +_dir = 0; +["Land_BagFence_Long_F", _pos, _dir, _centerPos, _rotateDir] call _fnc_CreateObject; + +// (Western wall) +_posX = -19.2; +_sectionDir = 270; + +_pos = [_posX, 14]; +_dir = _sectionDir; +["Land_BagFence_Long_F", _pos, _dir, _centerPos, _rotateDir] call _fnc_CreateObject; + +_pos = [_posX, -4]; +_dir = _sectionDir; +["Land_BagFence_Long_F", _pos, _dir, _centerPos, _rotateDir] call _fnc_CreateObject; + +_pos = [_posX, -1]; +_dir = _sectionDir; +["Land_BagFence_Long_F", _pos, _dir, _centerPos, _rotateDir] call _fnc_CreateObject; + +_pos = [_posX, 2]; +_dir = _sectionDir; +["Land_BagFence_Long_F", _pos, _dir, _centerPos, _rotateDir] call _fnc_CreateObject; + +_pos = [_posX, 5]; +_dir = _sectionDir; +["Land_BagFence_Long_F", _pos, _dir, _centerPos, _rotateDir] call _fnc_CreateObject; + +_pos = [_posX, 8]; +_dir = _sectionDir; +["Land_BagFence_Long_F", _pos, _dir, _centerPos, _rotateDir] call _fnc_CreateObject; + +_pos = [_posX, 11]; +_dir = _sectionDir; +["Land_BagFence_Long_F", _pos, _dir, _centerPos, _rotateDir] call _fnc_CreateObject; + +_pos = [_posX, -7]; +_dir = _sectionDir; +["Land_BagFence_Long_F", _pos, _dir, _centerPos, _rotateDir] call _fnc_CreateObject; + +_pos = [_posX, -10]; +_dir = _sectionDir; +["Land_BagFence_Long_F", _pos, _dir, _centerPos, _rotateDir] call _fnc_CreateObject; + +// (Southern wall) +_posY = -11.2; + +_pos = [-18, _posY]; +_dir = 0; +["Land_BagFence_Long_F", _pos, _dir, _centerPos, _rotateDir] call _fnc_CreateObject; + +_pos = [-15, _posY]; +_dir = 0; +["Land_BagFence_Long_F", _pos, _dir, _centerPos, _rotateDir] call _fnc_CreateObject; + +_pos = [-12, _posY]; +_dir = 0; +["Land_BagFence_Long_F", _pos, _dir, _centerPos, _rotateDir] call _fnc_CreateObject; + +_pos = [-9, _posY]; +_dir = 0; +["Land_BagFence_Long_F", _pos, _dir, _centerPos, _rotateDir] call _fnc_CreateObject; + +_pos = [-6, _posY]; +_dir = 0; +["Land_BagFence_Long_F", _pos, _dir, _centerPos, _rotateDir] call _fnc_CreateObject; + +_pos = [-3, _posY]; +_dir = 0; +["Land_BagFence_Long_F", _pos, _dir, _centerPos, _rotateDir] call _fnc_CreateObject; + +_pos = [0, _posY]; +_dir = 0; +["Land_BagFence_Long_F", _pos, _dir, _centerPos, _rotateDir] call _fnc_CreateObject; + +_pos = [3, _posY]; +_dir = 0; +["Land_BagFence_Long_F", _pos, _dir, _centerPos, _rotateDir] call _fnc_CreateObject; + +_pos = [6, _posY]; +_dir = 0; +["Land_BagFence_Long_F", _pos, _dir, _centerPos, _rotateDir] call _fnc_CreateObject; + +_pos = [9, _posY]; +_dir = 0; +["Land_BagFence_Long_F", _pos, _dir, _centerPos, _rotateDir] call _fnc_CreateObject; + +_pos = [12, _posY]; +_dir = 0; +["Land_BagFence_Long_F", _pos, _dir, _centerPos, _rotateDir] call _fnc_CreateObject; + +_pos = [15, _posY]; +_dir = 0; +["Land_BagFence_Long_F", _pos, _dir, _centerPos, _rotateDir] call _fnc_CreateObject; + +_pos = [18, _posY]; +_dir = 0; +["Land_BagFence_Long_F", _pos, _dir, _centerPos, _rotateDir] call _fnc_CreateObject; + +// (Eastern wall) +_posX = 19.2; +_sectionDir = 90; + +_pos = [_posX, -10]; +_dir = _sectionDir; +["Land_BagFence_Long_F", _pos, _dir, _centerPos, _rotateDir] call _fnc_CreateObject; + +_pos = [_posX, -7]; +_dir = _sectionDir; +["Land_BagFence_Long_F", _pos, _dir, _centerPos, _rotateDir] call _fnc_CreateObject; + +_pos = [_posX, -4]; +_dir = _sectionDir; +["Land_BagFence_Long_F", _pos, _dir, _centerPos, _rotateDir] call _fnc_CreateObject; + +_pos = [_posX, -1]; +_dir = _sectionDir; +["Land_BagFence_Long_F", _pos, _dir, _centerPos, _rotateDir] call _fnc_CreateObject; + +_pos = [_posX, 2]; +_dir = _sectionDir; +["Land_BagFence_Long_F", _pos, _dir, _centerPos, _rotateDir] call _fnc_CreateObject; + +_pos = [_posX, 5]; +_dir = _sectionDir; +["Land_BagFence_Long_F", _pos, _dir, _centerPos, _rotateDir] call _fnc_CreateObject; + +_pos = [_posX, 8]; +_dir = _sectionDir; +["Land_BagFence_Long_F", _pos, _dir, _centerPos, _rotateDir] call _fnc_CreateObject; + +_pos = [_posX, 11]; +_dir = _sectionDir; +["Land_BagFence_Long_F", _pos, _dir, _centerPos, _rotateDir] call _fnc_CreateObject; + +_pos = [_posX, 14]; +_dir = _sectionDir; +["Land_BagFence_Long_F", _pos, _dir, _centerPos, _rotateDir] call _fnc_CreateObject; + +// (North eastern wall) +_pos = [18, 15.15]; +_dir = 180; +["Land_BagFence_Long_F", _pos, _dir, _centerPos, _rotateDir] call _fnc_CreateObject; + +// Barracks + +_pos = [-13, -3]; +_dir = 0; +["Land_Cargo_Patrol_V1_F", _pos, _dir, _centerPos, _rotateDir] call _fnc_CreateObject; +//"Land_Cargo20_military_green_F" +// Power Generator +_pos = [4, -7]; +_dir = 90; +["Land_Communication_F", _pos, _dir, _centerPos, _rotateDir] call _fnc_CreateObject; + + +// Antennas + +_pos = [0, -9]; +_dir = 90; +_obj = ["Land_PowerGenerator_F", _pos, _dir, _centerPos, _rotateDir] call _fnc_CreateObject; +//[[_obj, "Hijack", "Scripts\Escape\Hijack.sqf"], "a3e_fnc_addHijackAction", nil, false] spawn BIS_fnc_MP; +_obj allowDamage false; + +_pos = [13, 1]; +_dir = 90; +_obj = ["Land_Medevac_House_V1_F", _pos, _dir, _centerPos, _rotateDir] call _fnc_CreateObject; +//[[_obj, "Heal at medical building", "Scripts\Escape\HealAtMedicalBuilding.sqf"], "a3e_fnc_addHealAtMedicalBuildingAction", nil, false] spawn BIS_fnc_MP; + +_pos = [10, -5]; +_dir = 180; +["Land_Cargo_House_V1_F", _pos, _dir, _centerPos, _rotateDir] call _fnc_CreateObject; + +// Toilet + +_pos = [-8, -9]; +_dir = 180; +["Land_ToiletBox_F", _pos, _dir, _centerPos, _rotateDir] call _fnc_CreateObject; +_pos = [-6.7, -9]; +_dir = 180; +["Land_ToiletBox_F", _pos, _dir, _centerPos, _rotateDir] call _fnc_CreateObject; + +// Fuel Tank +_pos = [-14, 10]; +_dir = 90; +["Land_Tank_rust_F", _pos, _dir, _centerPos, _rotateDir] call _fnc_CreateObject; + +// Camo Nets + + + + +// Flag +_pos = [0, 10]; +_dir = 0; +["Flag_CSAT_F", _pos, _dir, _centerPos, _rotateDir] call _fnc_CreateObject; + +if (count _staticWeaponClasses > 0) then { + // Statics + _pos = [-17, 13.5]; + _dir = 0; + + _gun = _staticWeaponClasses select floor random count _staticWeaponClasses; + [_gun, _pos, _dir, _centerPos, _rotateDir] call _fnc_CreateObject; + + _pos = [17, -9.5]; + _dir = 135; + + //_guns = ["DSHkM_Mini_TriPod", "AGS_Ins", "DSHKM_Ins"]; + _guns = ["O_HMG_01_high_F"]; + _gun = _guns select floor random count _guns; + [_gun, _pos, _dir, _centerPos, _rotateDir] call _fnc_CreateObject; +}; + +if (count _parkedVehicleClasses > 0) then { + // Cars + _pos = [11.5, 12]; + _dir = 270; + + _vehicle = _parkedVehicleClasses select floor random count _parkedVehicleClasses; + [_vehicle, _pos, _dir, _centerPos, _rotateDir] call _fnc_CreateVehicle; + //_object = _vehicle createVehicle [_realPos, [], 0, "CAN_COLLIDE"]; + + _pos = [11.5, 6.5]; + _dir = 270; + + _vehicle = _parkedVehicleClasses select floor random count _parkedVehicleClasses; + [_vehicle, _pos, _dir, _centerPos, _rotateDir] call _fnc_CreateObject; +}; + + + + diff --git a/Editing_and_Porting/Porting/Marker Missions/TE_BuildCommunicationCenter.VTF_Lybor/buildall.sqf b/Editing_and_Porting/Porting/Marker Missions/TE_BuildCommunicationCenter.VTF_Lybor/buildall.sqf new file mode 100644 index 00000000..02e17797 --- /dev/null +++ b/Editing_and_Porting/Porting/Marker Missions/TE_BuildCommunicationCenter.VTF_Lybor/buildall.sqf @@ -0,0 +1,28 @@ +//Execute with +//_nil = [] execVM "buildall.sqf"; +private ["_markerCoreName"]; +private ["_comCenNo", "_markerName"]; + +_comCenNo = 1; +_markerCoreName = "a3e_var_communicationCenter_"; +_markerName = _markerCoreName + str _comCenNo; + + + +_i = 0; +while {[_markerName] call drn_fnc_CL_MarkerExists} do { + + drn_comCen = _markername; + _nil = [getMarkerPos drn_comCen, markerDir drn_comCen] execVM "Scripts\Escape\BuildCommunicationCenter.sqf"; + + _pos = getmarkerpos drn_comCen; + _marker = createMarker ["drn_CommunicationCenterMapMarker" + str _comCenNo, _pos]; + _marker setMarkerShape "ICON"; + _marker setMarkerType "flag_CSAT"; + + _comCenNo = _comCenNo + 1; + _markerName = _markerCoreName + str _comCenNo; + _i = _i + 1; +}; + +player sideChat (str _i + " ComCenters built."); \ No newline at end of file diff --git a/Editing_and_Porting/Porting/Marker Missions/TE_BuildCommunicationCenter.VTF_Lybor/init.sqf b/Editing_and_Porting/Porting/Marker Missions/TE_BuildCommunicationCenter.VTF_Lybor/init.sqf new file mode 100644 index 00000000..e451d539 --- /dev/null +++ b/Editing_and_Porting/Porting/Marker Missions/TE_BuildCommunicationCenter.VTF_Lybor/init.sqf @@ -0,0 +1 @@ +call compile preprocessFileLineNumbers "Scripts\DRN\CommonLib\CommonLib.sqf"; diff --git a/Editing_and_Porting/Porting/Marker Missions/TE_BuildCommunicationCenter.VTF_Lybor/mission.sqm b/Editing_and_Porting/Porting/Marker Missions/TE_BuildCommunicationCenter.VTF_Lybor/mission.sqm new file mode 100644 index 00000000..2c724fca --- /dev/null +++ b/Editing_and_Porting/Porting/Marker Missions/TE_BuildCommunicationCenter.VTF_Lybor/mission.sqm @@ -0,0 +1,2466 @@ +version=54; +class EditorData +{ + moveGridStep=1; + angleGridStep=0.2617994; + scaleGridStep=1; + autoGroupingDist=10; + toggles=1; + class ItemIDProvider + { + nextID=484; + }; + class Camera + { + pos[]={1459.9008,278.39572,4592.5181}; + dir[]={-0.84203726,-0.37027767,0.39225972}; + up[]={-0.33564487,0.9289211,0.15635882}; + aside[]={0.42227453,0,0.90646803}; + }; +}; +binarizationWanted=0; +sourceName="TE_BuildCommunicationCenter"; +addons[]= +{ + "A3_Modules_F", + "A3_Ui_F", + "A3_Characters_F" +}; +class AddonsMetaData +{ + class List + { + items=3; + class Item0 + { + className="A3_Modules_F"; + name="Arma 3 Alpha - Scripted Modules"; + author="Bohemia Interactive"; + url="https://www.arma3.com"; + }; + class Item1 + { + className="A3_Ui_F"; + name="Arma 3 - User Interface"; + author="Bohemia Interactive"; + url="https://www.arma3.com"; + }; + class Item2 + { + className="A3_Characters_F"; + name="Arma 3 Alpha - Characters and Clothing"; + author="Bohemia Interactive"; + url="https://www.arma3.com"; + }; + }; +}; +randomSeed=4799051; +class ScenarioData +{ + author="Scruffy"; +}; +class Mission +{ + class Intel + { + resistanceWest=0; + resistanceEast=1; + timeOfChanges=1800.0002; + startWeather=0.30000001; + startWind=0.1; + startWaves=0.1; + forecastWeather=0; + forecastWind=0.1; + forecastWaves=0.1; + forecastLightnings=0.1; + year=1944; + month=7; + day=25; + hour=8; + minute=0; + startFogDecay=0.014; + forecastFogDecay=0.014; + }; + class Entities + { + items=120; + class Item0 + { + dataType="Trigger"; + position[]={-2452.9866,408.25568,4593.5645}; + class Attributes + { + text="Build ComCenter1"; + onActivation="drn_comCen = ""a3e_var_communicationCenter_1"";_nil = [getMarkerPos drn_comCen, markerDir drn_comCen] execVM ""Scripts\Escape\BuildCommunicationCenter.sqf"";"; + interuptable=1; + activationBy="ALPHA"; + isRectangle=1; + }; + id=0; + type="EmptyDetector"; + }; + class Item1 + { + dataType="Trigger"; + position[]={-2455.9392,397.07629,4455.4316}; + class Attributes + { + text="Export all ComCenter positions to .rpt"; + onActivation="_nil = [] execVM ""PositionGenerator.sqf"";"; + interuptable=1; + activationBy="BRAVO"; + isRectangle=1; + }; + id=1; + type="EmptyDetector"; + }; + class Item2 + { + dataType="Trigger"; + position[]={-2196.8137,375.35922,4026.1907}; + class Attributes + { + sizeA=20; + sizeB=15; + sizeC=20; + isRectangle=1; + }; + id=2; + type="EmptyDetector"; + }; + class Item3 + { + dataType="Logic"; + class PositionInfo + { + position[]={-2196.8137,375.35922,4026.1907}; + angles[]={6.1806712,0,0.035384554}; + }; + areaSize[]={25,0,25}; + flags=1; + id=3; + type="ModuleHideTerrainObjects_F"; + class CustomAttributes + { + class Attribute0 + { + property="#filter"; + expression="_this setVariable [""#filter"",_value]"; + class Value + { + class data + { + singleType="SCALAR"; + value=15; + }; + }; + }; + class Attribute1 + { + property="#hideLocally"; + expression="_this setVariable [""#hideLocally"",_value]"; + class Value + { + class data + { + singleType="BOOL"; + value=0; + }; + }; + }; + nAttributes=2; + }; + }; + class Item4 + { + dataType="Marker"; + position[]={-2383.9773,407.74451,4593.4316}; + name="tip1"; + text="0-0-1: Builds 1 ComCenter. Change markername in activation field to build another specific ComCenter"; + type="Empty"; + id=4; + }; + class Item5 + { + dataType="Marker"; + position[]={-2372.2761,397.07919,4458.0352}; + name="tip2"; + text="0-0-2: Exports all ComCenter positions to the .rpt file"; + type="Empty"; + id=5; + }; + class Item6 + { + dataType="Marker"; + position[]={-2315.6941,200.58551,2917.9675}; + name="tip4_3"; + text="Check if the positions work with the flying cam"; + type="Empty"; + id=6; + }; + class Item7 + { + dataType="Marker"; + position[]={-2179.0017,363.25851,3848.7893}; + name="tip"; + text="copy these two"; + type="hd_arrow"; + id=7; + }; + class Item8 + { + dataType="Marker"; + position[]={-2196.8123,375.35916,4026.1897}; + name="a3e_var_communicationCenter"; + type="Empty"; + colorName="ColorRed"; + a=0.94999999; + b=0.75; + id=8; + }; + class Item9 + { + dataType="Marker"; + position[]={-2334.6042,187.10794,2801.8079}; + name="tip4_4"; + text="Get back to the editor and push around markers"; + type="Empty"; + id=9; + }; + class Item10 + { + dataType="Marker"; + position[]={-2280.5759,229.51698,3152.989}; + name="tip4_1"; + text="Hit ""Preview"" and create ComCenters using Radio 0-0-0"; + type="Empty"; + id=10; + atlOffset=-1.5258789e-005; + }; + class Item11 + { + dataType="Marker"; + position[]={-2302.1873,217.42044,3044.9324}; + name="tip4_2"; + text="Hit Escape and start BIS ""Camera"""; + type="Empty"; + id=11; + }; + class Item12 + { + dataType="Marker"; + position[]={-2375.6189,392.09793,4397.8574}; + name="tip2_1"; + text="marker name has to be ""a3e_var_communicationCenter_1"" with rising number"; + type="Empty"; + id=12; + }; + class Item13 + { + dataType="Marker"; + position[]={-2275.1736,254.25119,3252.9397}; + name="tip4"; + text="Place markers where you think a ComCenter should be"; + type="Empty"; + id=13; + }; + class Item14 + { + dataType="Marker"; + position[]={-2365.5896,383.75439,4277.5039}; + name="tip3"; + text="Radio 0-0-0: Builds all ComCenters."; + type="Empty"; + id=14; + }; + class Item15 + { + dataType="Marker"; + position[]={-2196.8123,375.35928,4026.1907}; + name="area"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorRed"; + a=20; + b=15; + id=15; + }; + class Item16 + { + dataType="Marker"; + position[]={-2350.8123,184.98691,2680.2449}; + name="tip4_5"; + text="Repeat until finished..."; + type="Empty"; + id=16; + }; + class Item17 + { + dataType="Marker"; + position[]={-2177.8352,358.10303,3794.3}; + name="tip_1"; + text="the area marker just helps with placement, isn't needed"; + type="Empty"; + id=17; + }; + class Item18 + { + dataType="Trigger"; + position[]={-2452.9084,384.56915,4280.2617}; + class Attributes + { + text="Build all ComCenters"; + onActivation="_nil = [] execVM ""buildall.sqf"";"; + interuptable=1; + activationBy="JULIET"; + isRectangle=1; + }; + id=18; + type="EmptyDetector"; + atlOffset=3.0517578e-005; + }; + class Item19 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={1226.864,324.39737,5881.6567}; + angles[]={0.056601029,0,0.43388885}; + }; + side="West"; + flags=6; + class Attributes + { + skill=0.60000002; + isPlayer=1; + isPlayable=1; + }; + id=251; + type="B_Soldier_GL_F"; + class CustomAttributes + { + class Attribute0 + { + property="speaker"; + expression="_this setspeaker _value;"; + class Value + { + class data + { + singleType="STRING"; + value="Male07ENG"; + }; + }; + }; + class Attribute1 + { + property="pitch"; + expression="_this setpitch _value;"; + class Value + { + class data + { + singleType="SCALAR"; + value=0.99000001; + }; + }; + }; + nAttributes=2; + }; + }; + }; + class Attributes + { + }; + id=19; + }; + class Item20 + { + dataType="Trigger"; + position[]={950.61896,1.1267694,2255.0308}; + angle=1.0115144; + class Attributes + { + sizeA=20; + sizeB=15; + sizeC=20; + isRectangle=1; + }; + id=380; + type="EmptyDetector"; + }; + class Item21 + { + dataType="Logic"; + class PositionInfo + { + position[]={950.61896,1.1267694,2255.0308}; + angles[]={6.2798738,1.0120388,0}; + }; + areaSize[]={25,0,25}; + flags=1; + id=381; + type="ModuleHideTerrainObjects_F"; + class CustomAttributes + { + class Attribute0 + { + property="#filter"; + expression="_this setVariable [""#filter"",_value]"; + class Value + { + class data + { + singleType="SCALAR"; + value=15; + }; + }; + }; + class Attribute1 + { + property="#hideLocally"; + expression="_this setVariable [""#hideLocally"",_value]"; + class Value + { + class data + { + singleType="BOOL"; + value=0; + }; + }; + }; + nAttributes=2; + }; + }; + class Item22 + { + dataType="Marker"; + position[]={950.6189,1.1267639,2255.0291}; + name="a3e_var_communicationCenter_1"; + type="Empty"; + colorName="ColorRed"; + a=0.94999999; + b=0.75; + angle=57.955505; + id=382; + }; + class Item23 + { + dataType="Marker"; + position[]={950.61975,1.1267651,2255.0295}; + name="area_1"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorRed"; + a=20; + b=15; + angle=57.955505; + id=383; + }; + class Item24 + { + dataType="Trigger"; + position[]={2035.4252,58.926777,2358.0461}; + angle=2.8825684; + class Attributes + { + sizeA=20; + sizeB=15; + sizeC=20; + isRectangle=1; + }; + id=384; + type="EmptyDetector"; + }; + class Item25 + { + dataType="Logic"; + class PositionInfo + { + position[]={2035.4252,58.926777,2358.0461}; + angles[]={0.026657995,2.8839507,0.02666023}; + }; + areaSize[]={25,0,25}; + flags=1; + id=385; + type="ModuleHideTerrainObjects_F"; + class CustomAttributes + { + class Attribute0 + { + property="#filter"; + expression="_this setVariable [""#filter"",_value]"; + class Value + { + class data + { + singleType="SCALAR"; + value=15; + }; + }; + }; + class Attribute1 + { + property="#hideLocally"; + expression="_this setVariable [""#hideLocally"",_value]"; + class Value + { + class data + { + singleType="BOOL"; + value=0; + }; + }; + }; + nAttributes=2; + }; + }; + class Item26 + { + dataType="Marker"; + position[]={2035.4235,58.926716,2358.0466}; + name="a3e_var_communicationCenter_2"; + type="Empty"; + colorName="ColorRed"; + a=0.94999999; + b=0.75; + angle=165.159; + id=386; + }; + class Item27 + { + dataType="Marker"; + position[]={2035.4237,58.92675,2358.0457}; + name="area_2"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorRed"; + a=20; + b=15; + angle=165.159; + id=387; + }; + class Item28 + { + dataType="Trigger"; + position[]={1842.597,1.207113,2595.3569}; + angle=4.2889724; + class Attributes + { + sizeA=20; + sizeB=15; + sizeC=20; + isRectangle=1; + }; + id=388; + type="EmptyDetector"; + }; + class Item29 + { + dataType="Logic"; + class PositionInfo + { + position[]={1842.597,1.207113,2595.3569}; + angles[]={6.2798557,4.2902565,0.02666023}; + }; + areaSize[]={25,0,25}; + flags=1; + id=389; + type="ModuleHideTerrainObjects_F"; + class CustomAttributes + { + class Attribute0 + { + property="#filter"; + expression="_this setVariable [""#filter"",_value]"; + class Value + { + class data + { + singleType="SCALAR"; + value=15; + }; + }; + }; + class Attribute1 + { + property="#hideLocally"; + expression="_this setVariable [""#hideLocally"",_value]"; + class Value + { + class data + { + singleType="BOOL"; + value=0; + }; + }; + }; + nAttributes=2; + }; + }; + class Item30 + { + dataType="Marker"; + position[]={1842.5973,1.2071235,2595.3586}; + name="a3e_var_communicationCenter_3"; + type="Empty"; + colorName="ColorRed"; + a=0.94999999; + b=0.75; + angle=245.74001; + id=390; + atlOffset=1.1920929e-007; + }; + class Item31 + { + dataType="Marker"; + position[]={1842.5964,1.2071022,2595.3582}; + name="area_3"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorRed"; + a=20; + b=15; + angle=245.74001; + id=391; + }; + class Item32 + { + dataType="Trigger"; + position[]={1786.0521,1.36,2991.156}; + angle=4.3086057; + class Attributes + { + sizeA=20; + sizeB=15; + sizeC=20; + isRectangle=1; + }; + id=392; + type="EmptyDetector"; + }; + class Item33 + { + dataType="Logic"; + class PositionInfo + { + position[]={1786.0521,1.36,2991.156}; + angles[]={-0,4.3100042,0}; + }; + areaSize[]={25,0,25}; + flags=1; + id=393; + type="ModuleHideTerrainObjects_F"; + class CustomAttributes + { + class Attribute0 + { + property="#filter"; + expression="_this setVariable [""#filter"",_value]"; + class Value + { + class data + { + singleType="SCALAR"; + value=15; + }; + }; + }; + class Attribute1 + { + property="#hideLocally"; + expression="_this setVariable [""#hideLocally"",_value]"; + class Value + { + class data + { + singleType="BOOL"; + value=0; + }; + }; + }; + nAttributes=2; + }; + }; + class Item34 + { + dataType="Marker"; + position[]={1786.0525,1.36,2991.1577}; + name="a3e_var_communicationCenter_4"; + type="Empty"; + colorName="ColorRed"; + a=0.94999999; + b=0.75; + angle=246.86491; + id=394; + }; + class Item35 + { + dataType="Marker"; + position[]={1786.0515,1.36,2991.1575}; + name="area_4"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorRed"; + a=20; + b=15; + angle=246.86491; + id=395; + }; + class Item36 + { + dataType="Trigger"; + position[]={2616.0752,1.24,3544.1616}; + angle=0.83777291; + class Attributes + { + sizeA=20; + sizeB=15; + sizeC=20; + isRectangle=1; + }; + id=396; + type="EmptyDetector"; + }; + class Item37 + { + dataType="Logic"; + class PositionInfo + { + position[]={2616.0752,1.24,3544.1616}; + angles[]={-0,0.8374716,0}; + }; + areaSize[]={25,0,25}; + flags=1; + id=397; + type="ModuleHideTerrainObjects_F"; + class CustomAttributes + { + class Attribute0 + { + property="#filter"; + expression="_this setVariable [""#filter"",_value]"; + class Value + { + class data + { + singleType="SCALAR"; + value=15; + }; + }; + }; + class Attribute1 + { + property="#hideLocally"; + expression="_this setVariable [""#hideLocally"",_value]"; + class Value + { + class data + { + singleType="BOOL"; + value=0; + }; + }; + }; + nAttributes=2; + }; + }; + class Item38 + { + dataType="Marker"; + position[]={2616.0754,1.24,3544.1599}; + name="a3e_var_communicationCenter_5"; + type="Empty"; + colorName="ColorRed"; + a=0.94999999; + b=0.75; + angle=48.000851; + id=398; + }; + class Item39 + { + dataType="Marker"; + position[]={2616.0762,1.24,3544.1606}; + name="area_5"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorRed"; + a=20; + b=15; + angle=48.000851; + id=399; + }; + class Item40 + { + dataType="Trigger"; + position[]={2546.946,4.9199634,3680.8347}; + angle=3.1403959; + class Attributes + { + sizeA=20; + sizeB=15; + sizeC=20; + isRectangle=1; + }; + id=400; + type="EmptyDetector"; + }; + class Item41 + { + dataType="Logic"; + class PositionInfo + { + position[]={2546.946,4.9199634,3680.8347}; + angles[]={6.2731905,3.1403718,6.2531958}; + }; + areaSize[]={25,0,25}; + flags=1; + id=401; + type="ModuleHideTerrainObjects_F"; + class CustomAttributes + { + class Attribute0 + { + property="#filter"; + expression="_this setVariable [""#filter"",_value]"; + class Value + { + class data + { + singleType="SCALAR"; + value=15; + }; + }; + }; + class Attribute1 + { + property="#hideLocally"; + expression="_this setVariable [""#hideLocally"",_value]"; + class Value + { + class data + { + singleType="BOOL"; + value=0; + }; + }; + }; + nAttributes=2; + }; + }; + class Item42 + { + dataType="Marker"; + position[]={2546.9446,4.9200182,3680.8357}; + name="a3e_var_communicationCenter_6"; + type="Empty"; + colorName="ColorRed"; + a=0.94999999; + b=0.75; + angle=179.93129; + id=402; + }; + class Item43 + { + dataType="Marker"; + position[]={2546.9446,4.9200072,3680.8347}; + name="area_6"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorRed"; + a=20; + b=15; + angle=179.93129; + id=403; + }; + class Item44 + { + dataType="Trigger"; + position[]={3410.2659,19.92927,3721.3774}; + angle=3.1479294; + class Attributes + { + sizeA=20; + sizeB=15; + sizeC=20; + isRectangle=1; + }; + id=408; + type="EmptyDetector"; + }; + class Item45 + { + dataType="Logic"; + class PositionInfo + { + position[]={3410.2659,19.92927,3721.3774}; + angles[]={0.036649179,3.1479006,6.2698536}; + }; + areaSize[]={25,0,25}; + flags=1; + id=409; + type="ModuleHideTerrainObjects_F"; + class CustomAttributes + { + class Attribute0 + { + property="#filter"; + expression="_this setVariable [""#filter"",_value]"; + class Value + { + class data + { + singleType="SCALAR"; + value=15; + }; + }; + }; + class Attribute1 + { + property="#hideLocally"; + expression="_this setVariable [""#hideLocally"",_value]"; + class Value + { + class data + { + singleType="BOOL"; + value=0; + }; + }; + }; + nAttributes=2; + }; + }; + class Item46 + { + dataType="Marker"; + position[]={3410.2644,19.929262,3721.3784}; + name="a3e_var_communicationCenter_7"; + type="Empty"; + colorName="ColorRed"; + a=0.94999999; + b=0.75; + angle=180.36307; + id=410; + }; + class Item47 + { + dataType="Marker"; + position[]={3410.2644,19.929289,3721.3774}; + name="area_7"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorRed"; + a=20; + b=15; + angle=180.36307; + id=411; + }; + class Item48 + { + dataType="Trigger"; + position[]={2067.0955,50.3232,2948.7095}; + angle=1.5616789; + class Attributes + { + sizeA=20; + sizeB=15; + sizeC=20; + isRectangle=1; + }; + id=412; + type="EmptyDetector"; + }; + class Item49 + { + dataType="Logic"; + class PositionInfo + { + position[]={2067.0955,50.3232,2948.7095}; + angles[]={6.2531939,1.5652758,0.019999012}; + }; + areaSize[]={25,0,25}; + flags=1; + id=413; + type="ModuleHideTerrainObjects_F"; + class CustomAttributes + { + class Attribute0 + { + property="#filter"; + expression="_this setVariable [""#filter"",_value]"; + class Value + { + class data + { + singleType="SCALAR"; + value=15; + }; + }; + }; + class Attribute1 + { + property="#hideLocally"; + expression="_this setVariable [""#hideLocally"",_value]"; + class Value + { + class data + { + singleType="BOOL"; + value=0; + }; + }; + }; + nAttributes=2; + }; + }; + class Item50 + { + dataType="Marker"; + position[]={2067.0945,50.323135,2948.708}; + name="a3e_var_communicationCenter_8"; + type="Empty"; + colorName="ColorRed"; + a=0.94999999; + b=0.75; + angle=89.477608; + id=414; + }; + class Item51 + { + dataType="Marker"; + position[]={2067.0955,50.323158,2948.708}; + name="area_8"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorRed"; + a=20; + b=15; + angle=89.477608; + id=415; + }; + class Item52 + { + dataType="Trigger"; + position[]={2590.9719,341.75262,522.95386}; + angle=-2.0176985; + class Attributes + { + sizeA=20; + sizeB=15; + sizeC=20; + isRectangle=1; + }; + id=416; + type="EmptyDetector"; + }; + class Item53 + { + dataType="Logic"; + class PositionInfo + { + position[]={2590.9719,341.75262,522.95386}; + angles[]={6.1934304,4.266366,6.1604733}; + }; + areaSize[]={25,0,25}; + flags=1; + id=417; + type="ModuleHideTerrainObjects_F"; + class CustomAttributes + { + class Attribute0 + { + property="#filter"; + expression="_this setVariable [""#filter"",_value]"; + class Value + { + class data + { + singleType="SCALAR"; + value=15; + }; + }; + }; + class Attribute1 + { + property="#hideLocally"; + expression="_this setVariable [""#hideLocally"",_value]"; + class Value + { + class data + { + singleType="BOOL"; + value=0; + }; + }; + }; + nAttributes=2; + }; + }; + class Item54 + { + dataType="Marker"; + position[]={2590.9722,341.75278,522.95563}; + name="a3e_var_communicationCenter_9"; + type="Empty"; + colorName="ColorRed"; + a=0.94999999; + b=0.75; + angle=244.40707; + id=418; + }; + class Item55 + { + dataType="Marker"; + position[]={2590.9712,341.75284,522.9552}; + name="area_9"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorRed"; + a=20; + b=15; + angle=244.40707; + id=419; + }; + class Item56 + { + dataType="Trigger"; + position[]={1600.1652,158.74554,1361.6697}; + angle=6.0631804; + class Attributes + { + sizeA=20; + sizeB=15; + sizeC=20; + isRectangle=1; + }; + id=420; + type="EmptyDetector"; + }; + class Item57 + { + dataType="Logic"; + class PositionInfo + { + position[]={1600.1652,158.74554,1361.6697}; + angles[]={6.1408243,6.0643387,6.2000442}; + }; + areaSize[]={25,0,25}; + flags=1; + id=421; + type="ModuleHideTerrainObjects_F"; + class CustomAttributes + { + class Attribute0 + { + property="#filter"; + expression="_this setVariable [""#filter"",_value]"; + class Value + { + class data + { + singleType="SCALAR"; + value=15; + }; + }; + }; + class Attribute1 + { + property="#hideLocally"; + expression="_this setVariable [""#hideLocally"",_value]"; + class Value + { + class data + { + singleType="BOOL"; + value=0; + }; + }; + }; + nAttributes=2; + }; + }; + class Item58 + { + dataType="Marker"; + position[]={1600.1667,158.74535,1361.6691}; + name="a3e_var_communicationCenter_10"; + type="Empty"; + colorName="ColorRed"; + a=0.94999999; + b=0.75; + angle=347.39465; + id=422; + }; + class Item59 + { + dataType="Marker"; + position[]={1600.1666,158.74548,1361.67}; + name="area_10"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorRed"; + a=20; + b=15; + angle=347.39465; + id=423; + }; + class Item60 + { + dataType="Trigger"; + position[]={889.64087,45.627071,1281.9821}; + angle=0.65391248; + class Attributes + { + sizeA=20; + sizeB=15; + sizeC=20; + isRectangle=1; + }; + id=424; + type="EmptyDetector"; + }; + class Item61 + { + dataType="Logic"; + class PositionInfo + { + position[]={889.64087,45.627071,1281.9821}; + angles[]={0.013332055,0.65301603,0.036649179}; + }; + areaSize[]={25,0,25}; + flags=1; + id=425; + type="ModuleHideTerrainObjects_F"; + class CustomAttributes + { + class Attribute0 + { + property="#filter"; + expression="_this setVariable [""#filter"",_value]"; + class Value + { + class data + { + singleType="SCALAR"; + value=15; + }; + }; + }; + class Attribute1 + { + property="#hideLocally"; + expression="_this setVariable [""#hideLocally"",_value]"; + class Value + { + class data + { + singleType="BOOL"; + value=0; + }; + }; + }; + nAttributes=2; + }; + }; + class Item62 + { + dataType="Marker"; + position[]={889.64142,45.627113,1281.9803}; + name="a3e_var_communicationCenter_11"; + type="Empty"; + colorName="ColorRed"; + a=0.94999999; + b=0.75; + angle=37.466427; + id=426; + }; + class Item63 + { + dataType="Marker"; + position[]={889.64203,45.627125,1281.9812}; + name="area_11"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorRed"; + a=20; + b=15; + angle=37.466427; + id=427; + }; + class Item64 + { + dataType="Trigger"; + position[]={1155.0531,215.46048,3659.0281}; + angle=3.2524364; + class Attributes + { + sizeA=20; + sizeB=15; + sizeC=20; + isRectangle=1; + }; + id=428; + type="EmptyDetector"; + }; + class Item65 + { + dataType="Logic"; + class PositionInfo + { + position[]={1155.0531,215.46048,3659.0281}; + angles[]={0.30970502,3.2541139,6.2731848}; + }; + areaSize[]={25,0,25}; + flags=1; + id=429; + type="ModuleHideTerrainObjects_F"; + class CustomAttributes + { + class Attribute0 + { + property="#filter"; + expression="_this setVariable [""#filter"",_value]"; + class Value + { + class data + { + singleType="SCALAR"; + value=15; + }; + }; + }; + class Attribute1 + { + property="#hideLocally"; + expression="_this setVariable [""#hideLocally"",_value]"; + class Value + { + class data + { + singleType="BOOL"; + value=0; + }; + }; + }; + nAttributes=2; + }; + }; + class Item66 + { + dataType="Marker"; + position[]={1155.0518,215.46002,3659.0293}; + name="a3e_var_communicationCenter_12"; + type="Empty"; + colorName="ColorRed"; + a=0.94999999; + b=0.75; + angle=186.44698; + id=430; + }; + class Item67 + { + dataType="Marker"; + position[]={1155.0516,215.46037,3659.0283}; + name="area_12"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorRed"; + a=20; + b=15; + angle=186.44698; + id=431; + }; + class Item68 + { + dataType="Trigger"; + position[]={1840.4926,319.81049,5440.4326}; + angle=-1.7074785; + class Attributes + { + sizeA=20; + sizeB=15; + sizeC=20; + isRectangle=1; + }; + id=432; + type="EmptyDetector"; + }; + class Item69 + { + dataType="Logic"; + class PositionInfo + { + position[]={1840.4926,319.81049,5440.4326}; + angles[]={0.0066592805,4.5792294,6.276526}; + }; + areaSize[]={25,0,25}; + flags=1; + id=433; + type="ModuleHideTerrainObjects_F"; + class CustomAttributes + { + class Attribute0 + { + property="#filter"; + expression="_this setVariable [""#filter"",_value]"; + class Value + { + class data + { + singleType="SCALAR"; + value=15; + }; + }; + }; + class Attribute1 + { + property="#hideLocally"; + expression="_this setVariable [""#hideLocally"",_value]"; + class Value + { + class data + { + singleType="BOOL"; + value=0; + }; + }; + }; + nAttributes=2; + }; + }; + class Item70 + { + dataType="Marker"; + position[]={1840.4934,319.81049,5440.4341}; + name="a3e_var_communicationCenter_13"; + type="Empty"; + colorName="ColorRed"; + a=0.94999999; + b=0.75; + angle=262.16867; + id=434; + }; + class Item71 + { + dataType="Marker"; + position[]={1840.4924,319.81049,5440.4341}; + name="area_13"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorRed"; + a=20; + b=15; + angle=262.16867; + id=435; + }; + class Item72 + { + dataType="Trigger"; + position[]={3890.7883,200.05165,4613.792}; + angle=3.8461154; + class Attributes + { + sizeA=20; + sizeB=15; + sizeC=20; + isRectangle=1; + }; + id=436; + type="EmptyDetector"; + }; + class Item73 + { + dataType="Logic"; + class PositionInfo + { + position[]={3890.7883,200.05165,4613.792}; + angles[]={6.2166181,3.8453493,6.2099824}; + }; + areaSize[]={25,0,25}; + flags=1; + id=437; + type="ModuleHideTerrainObjects_F"; + class CustomAttributes + { + class Attribute0 + { + property="#filter"; + expression="_this setVariable [""#filter"",_value]"; + class Value + { + class data + { + singleType="SCALAR"; + value=15; + }; + }; + }; + class Attribute1 + { + property="#hideLocally"; + expression="_this setVariable [""#hideLocally"",_value]"; + class Value + { + class data + { + singleType="BOOL"; + value=0; + }; + }; + }; + nAttributes=2; + }; + }; + class Item74 + { + dataType="Marker"; + position[]={3890.7878,200.05179,4613.7935}; + name="a3e_var_communicationCenter_14"; + type="Empty"; + colorName="ColorRed"; + a=0.94999999; + b=0.75; + angle=220.36618; + id=438; + }; + class Item75 + { + dataType="Marker"; + position[]={3890.7871,200.05182,4613.793}; + name="area_14"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorRed"; + a=20; + b=15; + angle=220.36618; + id=439; + }; + class Item76 + { + dataType="Trigger"; + position[]={3898.0647,552.62061,5590.1401}; + angle=1.6062276; + class Attributes + { + sizeA=20; + sizeB=15; + sizeC=20; + isRectangle=1; + }; + id=440; + type="EmptyDetector"; + }; + class Item77 + { + dataType="Logic"; + class PositionInfo + { + position[]={3898.0647,552.62061,5590.1401}; + angles[]={6.2631893,1.6100267,0.016659101}; + }; + areaSize[]={25,0,25}; + flags=1; + id=441; + type="ModuleHideTerrainObjects_F"; + class CustomAttributes + { + class Attribute0 + { + property="#filter"; + expression="_this setVariable [""#filter"",_value]"; + class Value + { + class data + { + singleType="SCALAR"; + value=15; + }; + }; + }; + class Attribute1 + { + property="#hideLocally"; + expression="_this setVariable [""#hideLocally"",_value]"; + class Value + { + class data + { + singleType="BOOL"; + value=0; + }; + }; + }; + nAttributes=2; + }; + }; + class Item78 + { + dataType="Marker"; + position[]={3898.0637,552.62048,5590.1387}; + name="a3e_var_communicationCenter_15"; + type="Empty"; + colorName="ColorRed"; + a=0.94999999; + b=0.75; + angle=92.030067; + id=442; + }; + class Item79 + { + dataType="Marker"; + position[]={3898.0647,552.62054,5590.1387}; + name="area_15"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorRed"; + a=20; + b=15; + angle=92.030067; + id=443; + }; + class Item80 + { + dataType="Trigger"; + position[]={5097.5537,19.339241,3846.4873}; + angle=0.63719279; + class Attributes + { + sizeA=20; + sizeB=15; + sizeC=20; + isRectangle=1; + }; + id=444; + type="EmptyDetector"; + }; + class Item81 + { + dataType="Logic"; + class PositionInfo + { + position[]={5097.5537,19.339241,3846.4873}; + angles[]={6.1934266,0.63625932,0.099669173}; + }; + areaSize[]={25,0,25}; + flags=1; + id=445; + type="ModuleHideTerrainObjects_F"; + class CustomAttributes + { + class Attribute0 + { + property="#filter"; + expression="_this setVariable [""#filter"",_value]"; + class Value + { + class data + { + singleType="SCALAR"; + value=15; + }; + }; + }; + class Attribute1 + { + property="#hideLocally"; + expression="_this setVariable [""#hideLocally"",_value]"; + class Value + { + class data + { + singleType="BOOL"; + value=0; + }; + }; + }; + nAttributes=2; + }; + }; + class Item82 + { + dataType="Marker"; + position[]={5097.5537,19.339109,3846.4858}; + name="a3e_var_communicationCenter_16"; + type="Empty"; + colorName="ColorRed"; + a=0.94999999; + b=0.75; + angle=36.508457; + id=446; + }; + class Item83 + { + dataType="Marker"; + position[]={5097.5547,19.339315,3846.4868}; + name="area_16"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorRed"; + a=20; + b=15; + angle=36.508457; + id=447; + }; + class Item84 + { + dataType="Trigger"; + position[]={4696.52,80.682709,3548.0474}; + angle=0.49895614; + class Attributes + { + sizeA=20; + sizeB=15; + sizeC=20; + isRectangle=1; + }; + id=448; + type="EmptyDetector"; + atlOffset=7.6293945e-006; + }; + class Item85 + { + dataType="Logic"; + class PositionInfo + { + position[]={4696.52,80.682709,3548.0474}; + angles[]={0.013327583,0.49783871,0}; + }; + areaSize[]={25,0,25}; + flags=1; + id=449; + type="ModuleHideTerrainObjects_F"; + atlOffset=7.6293945e-006; + class CustomAttributes + { + class Attribute0 + { + property="#filter"; + expression="_this setVariable [""#filter"",_value]"; + class Value + { + class data + { + singleType="SCALAR"; + value=15; + }; + }; + }; + class Attribute1 + { + property="#hideLocally"; + expression="_this setVariable [""#hideLocally"",_value]"; + class Value + { + class data + { + singleType="BOOL"; + value=0; + }; + }; + }; + nAttributes=2; + }; + }; + class Item86 + { + dataType="Marker"; + position[]={4696.5215,80.682732,3548.0457}; + name="a3e_var_communicationCenter_17"; + type="Empty"; + colorName="ColorRed"; + a=0.94999999; + b=0.75; + angle=28.588081; + id=450; + atlOffset=7.6293945e-006; + }; + class Item87 + { + dataType="Marker"; + position[]={4696.522,80.682724,3548.0464}; + name="area_17"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorRed"; + a=20; + b=15; + angle=28.588081; + id=451; + atlOffset=7.6293945e-006; + }; + class Item88 + { + dataType="Trigger"; + position[]={5701.3145,118.88577,4098.1289}; + class Attributes + { + sizeA=20; + sizeB=15; + sizeC=20; + isRectangle=1; + }; + id=452; + type="EmptyDetector"; + }; + class Item89 + { + dataType="Logic"; + class PositionInfo + { + position[]={5701.3145,118.88577,4098.1289}; + angles[]={6.1806712,0,0.035384554}; + }; + areaSize[]={25,0,25}; + flags=1; + id=453; + type="ModuleHideTerrainObjects_F"; + class CustomAttributes + { + class Attribute0 + { + property="#filter"; + expression="_this setVariable [""#filter"",_value]"; + class Value + { + class data + { + singleType="SCALAR"; + value=15; + }; + }; + }; + class Attribute1 + { + property="#hideLocally"; + expression="_this setVariable [""#hideLocally"",_value]"; + class Value + { + class data + { + singleType="BOOL"; + value=0; + }; + }; + }; + nAttributes=2; + }; + }; + class Item90 + { + dataType="Marker"; + position[]={5701.3154,118.8857,4098.1279}; + name="a3e_var_communicationCenter_18"; + type="Empty"; + colorName="ColorRed"; + a=0.94999999; + b=0.75; + id=454; + }; + class Item91 + { + dataType="Marker"; + position[]={5701.3154,118.88579,4098.1289}; + name="area_18"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorRed"; + a=20; + b=15; + id=455; + }; + class Item92 + { + dataType="Trigger"; + position[]={4996.5283,313.81357,833.32043}; + angle=-1.0891305; + class Attributes + { + sizeA=20; + sizeB=15; + sizeC=20; + isRectangle=1; + }; + id=456; + type="EmptyDetector"; + }; + class Item93 + { + dataType="Logic"; + class PositionInfo + { + position[]={4996.5283,313.81357,833.32043}; + angles[]={6.2665157,5.198595,6.2798557}; + }; + areaSize[]={25,0,25}; + flags=1; + id=457; + type="ModuleHideTerrainObjects_F"; + class CustomAttributes + { + class Attribute0 + { + property="#filter"; + expression="_this setVariable [""#filter"",_value]"; + class Value + { + class data + { + singleType="SCALAR"; + value=15; + }; + }; + }; + class Attribute1 + { + property="#hideLocally"; + expression="_this setVariable [""#hideLocally"",_value]"; + class Value + { + class data + { + singleType="BOOL"; + value=0; + }; + }; + }; + nAttributes=2; + }; + }; + class Item94 + { + dataType="Marker"; + position[]={4996.5293,313.81357,833.32086}; + name="a3e_var_communicationCenter_19"; + type="Empty"; + colorName="ColorRed"; + a=0.94999999; + b=0.75; + angle=297.5957; + id=458; + }; + class Item95 + { + dataType="Marker"; + position[]={4996.5288,313.81357,833.32123}; + name="area_19"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorRed"; + a=20; + b=15; + angle=297.5957; + id=459; + }; + class Item96 + { + dataType="Trigger"; + position[]={3565.5479,494.89383,1155.984}; + angle=1.3818706; + class Attributes + { + sizeA=20; + sizeB=15; + sizeC=20; + isRectangle=1; + }; + id=460; + type="EmptyDetector"; + }; + class Item97 + { + dataType="Logic"; + class PositionInfo + { + position[]={3565.5479,494.89383,1155.984}; + angles[]={6.2465296,1.3845255,6.2365575}; + }; + areaSize[]={25,0,25}; + flags=1; + id=461; + type="ModuleHideTerrainObjects_F"; + class CustomAttributes + { + class Attribute0 + { + property="#filter"; + expression="_this setVariable [""#filter"",_value]"; + class Value + { + class data + { + singleType="SCALAR"; + value=15; + }; + }; + }; + class Attribute1 + { + property="#hideLocally"; + expression="_this setVariable [""#hideLocally"",_value]"; + class Value + { + class data + { + singleType="BOOL"; + value=0; + }; + }; + }; + nAttributes=2; + }; + }; + class Item98 + { + dataType="Marker"; + position[]={3565.5471,494.89383,1155.9824}; + name="a3e_var_communicationCenter_20"; + type="Empty"; + colorName="ColorRed"; + a=0.94999999; + b=0.75; + angle=79.175354; + id=462; + }; + class Item99 + { + dataType="Marker"; + position[]={3565.5481,494.8938,1155.9825}; + name="area_20"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorRed"; + a=20; + b=15; + angle=79.175354; + id=463; + }; + class Item100 + { + dataType="Trigger"; + position[]={3164.5884,66.74765,2956.0935}; + angle=1.5943325; + class Attributes + { + sizeA=20; + sizeB=15; + sizeC=20; + isRectangle=1; + }; + id=464; + type="EmptyDetector"; + }; + class Item101 + { + dataType="Logic"; + class PositionInfo + { + position[]={3164.5884,66.74765,2956.0935}; + angles[]={-0,1.5977346,0.02999169}; + }; + areaSize[]={25,0,25}; + flags=1; + id=465; + type="ModuleHideTerrainObjects_F"; + class CustomAttributes + { + class Attribute0 + { + property="#filter"; + expression="_this setVariable [""#filter"",_value]"; + class Value + { + class data + { + singleType="SCALAR"; + value=15; + }; + }; + }; + class Attribute1 + { + property="#hideLocally"; + expression="_this setVariable [""#hideLocally"",_value]"; + class Value + { + class data + { + singleType="BOOL"; + value=0; + }; + }; + }; + nAttributes=2; + }; + }; + class Item102 + { + dataType="Marker"; + position[]={3164.5874,66.747627,2956.092}; + name="a3e_var_communicationCenter_21"; + type="Empty"; + colorName="ColorRed"; + a=0.94999999; + b=0.75; + angle=91.350563; + id=466; + }; + class Item103 + { + dataType="Marker"; + position[]={3164.5884,66.74765,2956.092}; + name="area_21"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorRed"; + a=20; + b=15; + angle=91.350563; + id=467; + }; + class Item104 + { + dataType="Trigger"; + position[]={3752.7241,257.60309,2123.1357}; + angle=5.5384908; + class Attributes + { + sizeA=20; + sizeB=15; + sizeC=20; + isRectangle=1; + }; + id=468; + type="EmptyDetector"; + }; + class Item105 + { + dataType="Logic"; + class PositionInfo + { + position[]={3752.7241,257.60309,2123.1357}; + angles[]={0.039977662,5.5424628,6.1802187}; + }; + areaSize[]={25,0,25}; + flags=1; + id=469; + type="ModuleHideTerrainObjects_F"; + class CustomAttributes + { + class Attribute0 + { + property="#filter"; + expression="_this setVariable [""#filter"",_value]"; + class Value + { + class data + { + singleType="SCALAR"; + value=15; + }; + }; + }; + class Attribute1 + { + property="#hideLocally"; + expression="_this setVariable [""#hideLocally"",_value]"; + class Value + { + class data + { + singleType="BOOL"; + value=0; + }; + }; + }; + nAttributes=2; + }; + }; + class Item106 + { + dataType="Marker"; + position[]={3752.7258,257.60287,2123.136}; + name="a3e_var_communicationCenter_22"; + type="Empty"; + colorName="ColorRed"; + a=0.94999999; + b=0.75; + angle=317.33215; + id=470; + }; + class Item107 + { + dataType="Marker"; + position[]={3752.7251,257.60291,2123.1367}; + name="area_22"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorRed"; + a=20; + b=15; + angle=317.33215; + id=471; + }; + class Item108 + { + dataType="Trigger"; + position[]={4174.7261,1.9372951,3373.8582}; + angle=1.8817523; + class Attributes + { + sizeA=20; + sizeB=15; + sizeC=20; + isRectangle=1; + }; + id=472; + type="EmptyDetector"; + atlOffset=1.1920929e-007; + }; + class Item109 + { + dataType="Logic"; + class PositionInfo + { + position[]={4174.7261,1.9372951,3373.8582}; + angles[]={0.013332055,1.8863981,0.053282689}; + }; + areaSize[]={25,0,25}; + flags=1; + id=473; + type="ModuleHideTerrainObjects_F"; + atlOffset=1.1920929e-007; + class CustomAttributes + { + class Attribute0 + { + property="#filter"; + expression="_this setVariable [""#filter"",_value]"; + class Value + { + class data + { + singleType="SCALAR"; + value=15; + }; + }; + }; + class Attribute1 + { + property="#hideLocally"; + expression="_this setVariable [""#hideLocally"",_value]"; + class Value + { + class data + { + singleType="BOOL"; + value=0; + }; + }; + }; + nAttributes=2; + }; + }; + class Item110 + { + dataType="Marker"; + position[]={4174.7246,1.9372267,3373.8574}; + name="a3e_var_communicationCenter_23"; + type="Empty"; + colorName="ColorRed"; + a=0.94999999; + b=0.75; + angle=107.81646; + id=474; + atlOffset=1.1920929e-007; + }; + class Item111 + { + dataType="Marker"; + position[]={4174.7256,1.9372658,3373.8572}; + name="area_23"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorRed"; + a=20; + b=15; + angle=107.81646; + id=475; + atlOffset=1.1920929e-007; + }; + class Item112 + { + dataType="Trigger"; + position[]={5467.2222,22.75992,3871.8708}; + angle=-2.0157068; + class Attributes + { + sizeA=20; + sizeB=15; + sizeC=20; + isRectangle=1; + }; + id=476; + type="EmptyDetector"; + }; + class Item113 + { + dataType="Logic"; + class PositionInfo + { + position[]={5467.2222,22.75992,3871.8708}; + angles[]={0.036650803,4.2673836,0.023328418}; + }; + areaSize[]={25,0,25}; + flags=1; + id=477; + type="ModuleHideTerrainObjects_F"; + class CustomAttributes + { + class Attribute0 + { + property="#filter"; + expression="_this setVariable [""#filter"",_value]"; + class Value + { + class data + { + singleType="SCALAR"; + value=15; + }; + }; + }; + class Attribute1 + { + property="#hideLocally"; + expression="_this setVariable [""#hideLocally"",_value]"; + class Value + { + class data + { + singleType="BOOL"; + value=0; + }; + }; + }; + nAttributes=2; + }; + }; + class Item114 + { + dataType="Marker"; + position[]={5467.2222,22.75984,3871.873}; + name="a3e_var_communicationCenter_24"; + type="Empty"; + colorName="ColorRed"; + a=0.94999999; + b=0.75; + angle=244.50156; + id=478; + }; + class Item115 + { + dataType="Marker"; + position[]={5467.2217,22.759836,3871.8726}; + name="area_24"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorRed"; + a=20; + b=15; + angle=244.50156; + id=479; + }; + class Item116 + { + dataType="Trigger"; + position[]={1420.9662,216.06882,4520.9595}; + angle=0.2859275; + class Attributes + { + sizeA=20; + sizeB=15; + sizeC=20; + isRectangle=1; + }; + id=480; + type="EmptyDetector"; + }; + class Item117 + { + dataType="Logic"; + class PositionInfo + { + position[]={1420.9662,216.06882,4520.9595}; + angles[]={0.16839354,0.29012474,6.1277814}; + }; + areaSize[]={25,0,25}; + flags=1; + id=481; + type="ModuleHideTerrainObjects_F"; + class CustomAttributes + { + class Attribute0 + { + property="#filter"; + expression="_this setVariable [""#filter"",_value]"; + class Value + { + class data + { + singleType="SCALAR"; + value=15; + }; + }; + }; + class Attribute1 + { + property="#hideLocally"; + expression="_this setVariable [""#hideLocally"",_value]"; + class Value + { + class data + { + singleType="BOOL"; + value=0; + }; + }; + }; + nAttributes=2; + }; + }; + class Item118 + { + dataType="Marker"; + position[]={1420.9674,216.06879,4520.9585}; + name="a3e_var_communicationCenter_25"; + type="Empty"; + colorName="ColorRed"; + a=0.94999999; + b=0.75; + angle=16.651649; + id=482; + }; + class Item119 + { + dataType="Marker"; + position[]={1420.9677,216.06857,4520.9595}; + name="area_25"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorRed"; + a=20; + b=15; + angle=16.651649; + id=483; + }; + }; +}; diff --git a/Editing_and_Porting/Porting/Marker Missions/TE_PatrolBoatMarkers.VTF_Lybor/PositionGenerator.sqf b/Editing_and_Porting/Porting/Marker Missions/TE_PatrolBoatMarkers.VTF_Lybor/PositionGenerator.sqf new file mode 100644 index 00000000..9fe51b6d --- /dev/null +++ b/Editing_and_Porting/Porting/Marker Missions/TE_PatrolBoatMarkers.VTF_Lybor/PositionGenerator.sqf @@ -0,0 +1,35 @@ +private ["_markerBaseName", "_arrayName", "_markerStartNo"]; +private ["_markerNo", "_markerName", "_i", "_isIcon"]; + +_markerBaseName = "a3e_boatmarker_"; +_arrayName = "a3e_patrolBoatMarkers"; +_markerStartNo = 1; + +_markerNo = _markerStartNo; +_markerName = _markerBaseName + str _markerNo; + +diag_log ("""" + _arrayName + " = [];"""); + +_isIcon = false; +if (markerShape _markerName == "ICON") then { + _isIcon = true; +}; + +_i = 0; +while {[_markerName] call drn_fnc_CL_MarkerExists} do { + if (_isIcon) then { + diag_log ("""" + _arrayName + " set [" + str _i + ", [" + str (getMarkerPos _markerName) + ", " + str markerDir _markerName + "]];"""); + } + else { + diag_log ("""" + _arrayName + " set [" + str _i + ", [" + str (getMarkerPos _markerName) + ", " + str markerDir _markerName + ", """ + markerShape _markerName + """, " + str markerSize _markerName + "]];"""); + }; + + _markerNo = _markerNo + 1; + _markerName = _markerBaseName + str _markerNo; + _i = _i + 1; +}; + +//diag_log ("""" + _arrayName + "Initialized = true;"""); +//diag_log ("""publicVariable """ + _arrayName + "Initialized"";"""); + +player sideChat (str _i + " boat markers generated."); diff --git a/Editing_and_Porting/Porting/Marker Missions/TE_PatrolBoatMarkers.VTF_Lybor/init.sqf b/Editing_and_Porting/Porting/Marker Missions/TE_PatrolBoatMarkers.VTF_Lybor/init.sqf new file mode 100644 index 00000000..e451d539 --- /dev/null +++ b/Editing_and_Porting/Porting/Marker Missions/TE_PatrolBoatMarkers.VTF_Lybor/init.sqf @@ -0,0 +1 @@ +call compile preprocessFileLineNumbers "Scripts\DRN\CommonLib\CommonLib.sqf"; diff --git a/Editing_and_Porting/Porting/Marker Missions/TE_PatrolBoatMarkers.VTF_Lybor/mission.sqm b/Editing_and_Porting/Porting/Marker Missions/TE_PatrolBoatMarkers.VTF_Lybor/mission.sqm new file mode 100644 index 0000000000000000000000000000000000000000..c1d8ed78262f9dfcb0b31689d6d38e4523b00981 GIT binary patch literal 3641 zcmd^CZ-`V?6hHT^?yg!cD2O8F%P%72>h7k5|JFBu+(u^IZD&;|W4bf%&dk*}?>_Il zv%AxmL?w_ultQ#Zm|sGJB0mTbiW=^R3QHoXq%ty4`jQku2nn5g-^}dHW(E1tf!#Ux z+;h+QopaBhJ0R&W;HMM+*3HL%^N2OZWXOdN>-9#`g(OyhgFZ(yy_&R zEXLS?0A&vJ6GHu>H_baX_vI~wgn8P;tI1WA7?7e8aKD(~p~B;~Lo6kVcs>N8 zF{BhLrxL?bjB%GqI7pBeg`|o5y5`0)bdthpq_yKfh~={hl}bP-vW&1ncZJ|T*i*-!x?_(jYU3w}&sf+;H1ZbnrJ)8w-&S2ovK+;>~nbPUf# z0tF#io`y4yHMr9!8?5^rPV-_(`RIF1t5s!G!Z#hd_R7LnC1}SxCYDR9u-H%~EOqG8 zWQ2N~C?*g`6@I@rx`~jwu@<&*-Kxbx>B>m@iYt!3h}jU;=ffEp?LKtWYfHzvR$G_# zMpRp#W^1w+7UIPivJV#M?yR{_!uxY;FNw~@&u zi>Al{`wxelDSw-&RSE55*&KH5vgz7b4H023toZ? zU(bMf^UF^i6ZG~bn4^*xi>S6apj+D~FBALc1u$X6tr_o<6M>M**3&e)j?h-Z?v{bF3*6KFQTUE-mDF5q*5{tR z*?#VMn@zC%u0eanaP8Iyn2#d{?RAIy3oABie{~101d8U29*xd4U85;h1t&fHv=b%T z>?Zfk)I(V_Ja#iZ`WofDM`vY|^Y374n!tXKe3PeEJ=ygDGYPyFs(4CE>S5PNhN0YE z3=cpZf66ZixQCL>mWfsHC^j!sIZbw#&8gYFfm&-pk7YB$b2*dxwGpp`N|c*U2s~jh zkmhSWag`>>t*JskIrjFPq}B?vvGMKWo(IQ|FX<S=xiSvK|5y5xzf)D9<4Ij zqkRvD4UM}7l36w)uB}4bbi~%eDa~o%>VefJf_{S&O<;qxjX)qpz$BJp7%+-YEwsWW z0?DF>P}WohmRoJt&W=&6(2W4Q^f&y9wzPgcrNa&cX|uL;jP*mv)P81kB(-Azh0JMe zCm!qRO(Mt0Hlql*%9s8DgV~#jAViB%)FT9k>gyQ@;!fJZ0Fwy8o>vd{n^RFr&1=e< z=y}yrnlB9ONsv>A&Ril_r*1Y{NK3EF;!Qn3x65361BZAH?))}_UC+EAVR_eyxXFC% z94!@o`o-!+-KOC`V862TZi4*s*t?gAe0+QIzAZZ2`#`Xlue@%Wbo*OR#ppABmU=e*qmRExiB$ literal 0 HcmV?d00001 diff --git a/Editing_and_Porting/Porting/Marker Missions/TE_PatrolBoatMarkers.VTF_Lybor/mission.sqm.oldBackup b/Editing_and_Porting/Porting/Marker Missions/TE_PatrolBoatMarkers.VTF_Lybor/mission.sqm.oldBackup new file mode 100644 index 00000000..16bf66dc --- /dev/null +++ b/Editing_and_Porting/Porting/Marker Missions/TE_PatrolBoatMarkers.VTF_Lybor/mission.sqm.oldBackup @@ -0,0 +1,226 @@ +version=12; +class Mission +{ + addOns[]= + { + "A3_Characters_F_BLUFOR", + "a3_characters_f", + "a3_map_stratis" + }; + addOnsAuto[]= + { + "A3_Characters_F_BLUFOR", + "a3_characters_f", + "a3_map_stratis" + }; + randomSeed=3651801; + class Intel + { + timeOfChanges=1800.0002; + startWeather=0.1; + startWind=0.1; + startWaves=0.1; + forecastWeather=0.1; + forecastWind=0.1; + forecastWaves=0.1; + forecastLightnings=0.1; + year=2008; + month=6; + day=24; + hour=15; + startFogDecay=0.013; + forecastFogDecay=0.013; + }; + class Groups + { + items=1; + class Item0 + { + side="WEST"; + class Vehicles + { + items=1; + class Item0 + { + position[]={1739.407,5.5,5398.9058}; + special="NONE"; + id=0; + side="WEST"; + vehicle="B_Soldier_F"; + player="PLAYER COMMANDER"; + leader=1; + rank="MAJOR"; + skill=0.59999996; + text="drn_player1"; + }; + }; + }; + }; + class Markers + { + items=6; + class Item0 + { + position[]={1431.7748,-0.099211901,6676.5396}; + name="a3e_boatmarker"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=150; + b=150; + }; + class Item1 + { + position[]={1450.9272,0.062506095,6505.5898}; + name="abc123"; + text="copy this one, so it adds _number"; + type="hd_arrow"; + }; + class Item2 + { + position[]={2506.6421,-0.074735269,6677.3877}; + name="a3e_boatmarker_1"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=300; + b=500; + angle=24.27368; + }; + class Item3 + { + position[]={1290.7546,0.04016003,3484.8535}; + name="a3e_boatmarker_2"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=200; + b=500; + }; + class Item4 + { + position[]={4125.0127,0.068663649,1920.1982}; + name="a3e_boatmarker_3"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=500; + b=200; + angle=-50.134159; + }; + class Item5 + { + position[]={7296.3325,-0.00024572387,5083.4717}; + name="a3e_boatmarker_4"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=600; + b=400; + angle=-82.087852; + }; + }; + class Sensors + { + items=1; + class Item0 + { + position[]={1732.9492,5.5,5449.8682}; + activationBy="ALPHA"; + interruptable=1; + age="UNKNOWN"; + text="Export Boatmarkers to .rpt file"; + expActiv="_nil = [] execVM ""PositionGenerator.sqf"";"; + class Effects + { + }; + }; + }; +}; +class Intro +{ + addOns[]= + { + "a3_map_stratis" + }; + addOnsAuto[]= + { + "a3_map_stratis" + }; + randomSeed=11538662; + class Intel + { + timeOfChanges=1800.0002; + startWeather=0.1; + startWind=0.1; + startWaves=0.1; + forecastWeather=0.1; + forecastWind=0.1; + forecastWaves=0.1; + forecastLightnings=0.1; + year=2008; + month=6; + day=24; + hour=15; + startFogDecay=0.013; + forecastFogDecay=0.013; + }; +}; +class OutroWin +{ + addOns[]= + { + "a3_map_stratis" + }; + addOnsAuto[]= + { + "a3_map_stratis" + }; + randomSeed=914852; + class Intel + { + timeOfChanges=1800.0002; + startWeather=0.1; + startWind=0.1; + startWaves=0.1; + forecastWeather=0.1; + forecastWind=0.1; + forecastWaves=0.1; + forecastLightnings=0.1; + year=2008; + month=6; + day=24; + hour=15; + startFogDecay=0.013; + forecastFogDecay=0.013; + }; +}; +class OutroLoose +{ + addOns[]= + { + "a3_map_stratis" + }; + addOnsAuto[]= + { + "a3_map_stratis" + }; + randomSeed=7945035; + class Intel + { + timeOfChanges=1800.0002; + startWeather=0.1; + startWind=0.1; + startWaves=0.1; + forecastWeather=0.1; + forecastWind=0.1; + forecastWaves=0.1; + forecastLightnings=0.1; + year=2008; + month=6; + day=24; + hour=15; + startFogDecay=0.013; + forecastFogDecay=0.013; + }; +}; diff --git a/Editing_and_Porting/Porting/Marker Missions/TE_PatrolBoatMarkers.VTF_Lybor/scripts/DRN/CommonLib/CommonLib.sqf b/Editing_and_Porting/Porting/Marker Missions/TE_PatrolBoatMarkers.VTF_Lybor/scripts/DRN/CommonLib/CommonLib.sqf new file mode 100644 index 00000000..5af03fcc --- /dev/null +++ b/Editing_and_Porting/Porting/Marker Missions/TE_PatrolBoatMarkers.VTF_Lybor/scripts/DRN/CommonLib/CommonLib.sqf @@ -0,0 +1,724 @@ +/* CommonLib v1.04 + * Author: Engima of Ostgota Ops + * History: + * 2011-01-25: Created. + * 2011-11-19: Updated to v1.01 - New version of function drn_fnc_CL_PositionIsInsideMarker. Still backward compatible with v1.00. + * 2011-12-17: Added debug methods and method ShowTitleTextAllClients. + * 2011-12-23: Added method drn_fnc_CL_InitParams + */ + +/******************************************************************************************/ +/* Variables */ + +// Set this variable to true if you want debug info to show only in RTF-file (and not on player's screens). +drn_var_CL_SilentDebugMode = false; + +/******************************************************************************************/ +/* Functions */ + +/* + * Summary: Initializes the paramsArray with default values if played in single player. + */ +drn_fnc_CL_InitParams = { + if (isNil "paramsArray") then + { + private ["_c", "_i", "_paramName"]; + paramsArray=[]; + + if (isClass (missionConfigFile/"Params")) then + { + _c=count (missionConfigFile/"Params"); + for [ {_i=0}, {_i<_c}, {_i=_i+1} ] do + { + _paramName = (configName ((missionConfigFile >> "Params") select _i)); + paramsArray=paramsArray+[ getNumber (missionConfigFile >> "Params" >> _paramName >> "default") ]; + }; + }; + _c=count paramsArray; + if (isNil "param1" && _c>0)then{param1=paramsArray select 0}; + if (isNil "param2" && _c>1)then{param2=paramsArray select 1}; + }; +}; + +/* + * Summary: Checks if a marker exists. + * Arguments: + * _marker: Marker name of marker to test. + * Returns: true if marker exists, else false. + */ +drn_fnc_CL_MarkerExists = { + private ["_exists", "_marker"]; + + _marker = _this select 0; + + _exists = false; + if (((getMarkerPos _marker) select 0) != 0 || ((getMarkerPos _marker) select 1 != 0)) then { + _exists = true; + }; + _exists +}; + +/* + * Summary: Gets a random marker that fulfulls specified name expression and is within a specified range from a reference position. + * Remarks: Markers sought must have name format 'markerPreNameX', where X is an integer value. Marker number must start with + * 1 and be an unbroken ascending sequence. + * Arguments: + * _markerPreName: Marker name except the ending integer value. + * _position: Reference position. + * _minDistance: Marker's minimum distance from reference position. + * _maxDistance: Marker's maximum distance from reference position. + * Returns: Name of found marker. Empty string ("") if no marker was found. + */ +drn_fnc_CL_GetMarkerWithinRange = { + private ["_markerPreName", "_markerNo", "_markerName", "_minDistance", "_maxDistance", "_markersWithinRange", "_markersOutsideRange", "_position", "_returnValue"]; + + _markerPreName = _this select 0; + _position = _this select 1; + _minDistance = _this select 2; + _maxDistance = _this select 3; + + _markersWithinRange = []; + _markersOutsideRange = []; + _returnValue = ""; + + _markerNo = 1; + _markerName = _markerPreName + str _markerNo; + + while {[_markerName] call drn_fnc_CL_MarkerExists} do { + if (_position distance (getMarkerPos _markerName) > _minDistance && _position distance (getMarkerPos _markerName) < _maxDistance) then { + _markersWithinRange set [count _markersWithinRange, _markerName]; + } + else { + if (_position distance (getMarkerPos _markerName) > _minDistance) then { + _markersOutsideRange set [count _markersOutsideRange, _markerName]; + }; + }; + + _markerNo = _markerNo + 1; + _markerName = _markerPreName + str _markerNo; + }; + + if (count _markersWithinRange > 0) then { + _returnValue = _markersWithinRange select floor (random count _markersWithinRange); + } + else { + if (count _markersOutsideRange > 0) then { + _returnValue = _markersOutsideRange select floor (random count _markersOutsideRange); + }; + }; + + _returnValue +}; + +/* + * Summary: Gets the marker closest to a reference position. + * Remarks: Markers sought must have name format 'markerPreNameX' or format 'markerPreNameX_Y', where X is an integer value + * specifying a marker number and Y is an integer value specifying a sub marker. Marker number must start with 1 and be an unbroken + * ascending sequence. The same applies for all submarker sequences. + * Arguments: + * _position: Reference position. + * _markerPreName: Marker name except the ending integer value. + * [_isTwoDimensional]: true if the marker sequence has sub markers, else false. + * Returns: Marker name of closest marker. Empty string ("") if no marker was found. + */ +drn_fnc_CL_GetClosestMarker = { + private ["_position", "_markerPreName", "_isTwoDimensional", "_returnMarkerName"]; + private ["_closestDistance", "_markerNo", "_subMarkerNo", "_markerName", "_distance"]; + + _position = _this select 0; + _markerPreName = _this select 1; + if (count _this > 2) then {_isTwoDimensional = _this select 2;} else {_isTwoDimensional = false}; + + _markerNo = 1; + _subMarkerNo = 1; + _closestDistance = 1000000; + _returnMarkerName = ""; + + if (_isTwoDimensional) then { + _markerName = _markerPreName + str _markerNo + "_" + str _subMarkerNo; + } + else { + _markerName = _markerPreName + str _markerNo; + }; + + while {[_markerName] call drn_fnc_CL_MarkerExists} do { + if (_isTwoDimensional) then { + while {[_markerName] call drn_fnc_CL_MarkerExists} do { + + _distance = (GetMarkerPos _markerName) distance _position; + if (_distance < _closestDistance) then { + _closestDistance = _distance; + _returnMarkerName = _markerName; + }; + + _subMarkerNo = _subMarkerNo + 1; + _markerName = _markerPreName + str _markerNo + "_" + str _subMarkerNo; + }; + + // Get next marker + _markerNo = _markerNo + 1; + _subMarkerNo = 1; + _markerName = _markerPreName + str _markerNo + "_" + str _subMarkerNo; + } + else { + _distance = (GetMarkerPos _markerName) distance _position; + if (_distance < _closestDistance) then { + _closestDistance = _distance; + }; + }; + }; + + _returnMarkerName +}; + +/* + * Summary: Rotates a position around a center position. + * Arguments: + * _centerPos: Center position to rotate around. + * _pos: Position that will be rotated. + * _dir: Direction (angle) to rotate. + */ +drn_fnc_CL_RotatePosition = { + private ["_centerPos", "_pos", "_dir"]; + private ["_px", "_py", "_mpx", "_mpy", "_ma", "_rpx", "_rpy"]; + + _centerPos = _this select 0; + _pos = _this select 1; + _dir = _this select 2; + + _px = _pos select 0; + _py = _pos select 1; + _mpx = _centerPos select 0; + _mpy = _centerPos select 1; + _ma = _dir; + + //Now, rotate point + _rpx = ( (_px - _mpx) * cos(_ma) ) + ( (_py - _mpy) * sin(_ma) ) + _mpx; + _rpy = (-(_px - _mpx) * sin(_ma) ) + ( (_py - _mpy) * cos(_ma) ) + _mpy; + + [_rpx, _rpy, 0] +}; + +/* + * Summary: Gets a random position inside a marker of shape RECTANGLE or ELLIPSE with any angle. + * Arguments: + * _markerName: Name of marker to get a random position inside. + * Returns: A position (array) inside current marker. If marker doesn't exist, [0, 0, 0] is returned. + * History: + * Created in CommonLib v1.00. + * Updated in CommonLib v1.01 - Function now supports RECTANGLE and ELLIPSE at any angle, previously only RECTANGLEs with angle 0. + */ +drn_fnc_CL_GetRandomMarkerPos = { + private ["_markerName"]; + private ["_isInside", "_px", "_py", "_mpx", "_mpy", "_msx", "_msy", "_ma", "_rpx", "_rpy", "_i"]; + + _markerName = _this select 0; + + _isInside = false; + _i = 0; + while {!_isInside} do { + _mpx = (getMarkerPos _markerName) select 0; + _mpy = (getMarkerPos _markerName) select 1; + _msx = (getMarkerSize _markerName) select 0; + _msy = (getMarkerSize _markerName) select 1; + _ma = (markerDir _markerName); + + _px = _mpx -_msx + random (_msx * 2); + _py = _mpy -_msy + random (_msy * 2); + + //Now, rotate point as marker is rotated + _rpx = ( (_px - _mpx) * cos(_ma) ) + ( (_py - _mpy) * sin(_ma) ) + _mpx; + _rpy = (-(_px - _mpx) * sin(_ma) ) + ( (_py - _mpy) * cos(_ma) ) + _mpy; + + if ([[_rpx, _rpy, 0], _markerName] call drn_fnc_CL_PositionIsInsideMarker) then { + _isInside = true; + }; + + _i = _i + 1; + if (_i > 1000) exitWith { + _rpx = 0; + _rpy = 0; + }; + }; + + [_rpx, _rpy, 0] +}; + +/* + * Summary: Checks if a position is inside a marker. + * Remarks: Marker can be of shape "RECTANGLE" or "ELLIPSE" and at any angle. + * Arguments: + * _markerName: Name of current marker. + * _pos: Position to test. + * Returns: true if position is inside marker. Else false. + * History: + * Created in CommonLib v1.00 + * Updated in CommonLib v1.01 - Function now supports RECTANGLE and ELLIPSE at any angle, previously only RECTANGLEs with angle 0. + */ +drn_fnc_CL_PositionIsInsideMarker = { + private ["_markerName", "_pos"]; + private ["_isInside", "_px", "_py", "_mpx", "_mpy", "_msx", "_msy", "_ma", "_xmin", "_xmax", "_ymin", "_ymax", "_rpx", "_rpy", "_res"]; + + _pos = _this select 0; + _markerName = _this select 1; + + _px = _pos select 0; + _py = _pos select 1; + _mpx = (getMarkerPos _markerName) select 0; + _mpy = (getMarkerPos _markerName) select 1; + _msx = (getMarkerSize _markerName) select 0; + _msy = (getMarkerSize _markerName) select 1; + _ma = -(markerDir _markerName); + + _xmin = _mpx - _msx; + _xmax = _mpx + _msx; + _ymin = _mpy - _msy; + _ymax = _mpy + _msy; + + //Now, rotate point to investigate around markers center in order to check against a nonrotated marker + _rpx = ( (_px - _mpx) * cos(_ma) ) + ( (_py - _mpy) * sin(_ma) ) + _mpx; + _rpy = (-(_px - _mpx) * sin(_ma) ) + ( (_py - _mpy) * cos(_ma) ) + _mpy; + + _isInside = false; + + if (markerShape _markerName == "RECTANGLE") then { + if (((_rpx > _xmin) && (_rpx < _xmax)) && ((_rpy > _ymin) && (_rpy < _ymax))) then + { + _isInside = true; + }; + }; + + if (markerShape _markerName == "ELLIPSE") then { + _res = (((_rpx-_mpx)^2)/(_msx^2)) + (((_rpy-_mpy)^2)/(_msy^2)); + if ( _res < 1 ) then + { + _isInside = true; + }; + }; + + _isInside +}; + +drn_CL_ShowCommandTextEventArgs = []; // [unit, text] + +"drn_CL_ShowCommandTextEventArgs" addPublicVariableEventHandler { + drn_CL_ShowCommandTextEventArgs call drn_fnc_CL_ShowCommandTextLocal; +}; + +/* + * Summary: Shows a text as command text on the local client. + * Arguments: + * _text: Text to show. + */ +drn_fnc_CL_ShowCommandTextLocal = { + private ["_text"]; + _text = _this select 0; + + if (!isNull player) then { + player globalChat _text; + }; + + diag_log ("Title text: " + _text); +}; + +/* + * Summary: Shows a text as command text on all clients. + * Arguments: + * _text: Text to show. + */ +drn_fnc_CL_ShowCommandTextAllClients = { + private ["_text"]; + _text = _this select 0; + + drn_CL_ShowCommandTextEventArgs = [_text]; + publicVariable "drn_CL_ShowCommandTextEventArgs"; + drn_CL_ShowCommandTextEventArgs call drn_fnc_CL_ShowCommandTextLocal; +}; + +drn_CL_ShowTitleTextEventArgs = []; // [text] + +"drn_CL_ShowTitleTextEventArgs" addPublicVariableEventHandler { + drn_CL_ShowTitleTextEventArgs call drn_fnc_CL_ShowTitleTextLocal; +}; + +/* + * Summary: Shows a text as a title text on the local client. + * Arguments: + * _text: Text to show. + * [_showAsSubTitle]: Optional. true if the text are to be shown as a sub title. false if it's to be shown in the middle of the screen. + */ +drn_fnc_CL_ShowTitleTextLocal = { + private ["_text", "_showAsSubTitle"]; + _text = _this select 0; + if (count _this > 1) then {_showAsSubTitle = _this select 1;} else {_showAsSubTitle = false}; + + if (!isNull player) then { + if (_showAsSubTitle) then { + titleText [_text, "PLAIN DOWN"]; + } + else { + titleText [_text, "PLAIN"]; + }; + }; + + diag_log ("Title text: " + _text); +}; + +/* + * Summary: Shows a text as a title text on all clients. + * Arguments: + * _text: Text to show. + * [_showAsSubTitle]: Optional. true if the text are to be shown as a sub title. false if it's to be shown in the middle of the screen. + */ +drn_fnc_CL_ShowTitleTextAllClients = { + private ["_text", "_showAsSubTitle"]; + _text = _this select 0; + if (count _this > 1) then {_showAsSubTitle = _this select 1;} else {_showAsSubTitle = false}; + + drn_CL_ShowTitleTextEventArgs = [_text, _showAsSubTitle]; + publicVariable "drn_CL_ShowTitleTextEventArgs"; + drn_CL_ShowTitleTextEventArgs call drn_fnc_CL_ShowTitleTextLocal; +}; + +drn_CL_AddScoreEventArgs = []; // [vehicleVarName, score] + +"drn_CL_AddScoreEventArgs" addPublicVariableEventHandler { + if (isServer) then { + drn_CL_AddScoreEventArgs call drn_fnc_CL_AddScoreServer; + }; +}; + +drn_fnc_CL_AddScoreServer = { + drn_CL_AddScoreEventArgs call compile format ["%1 addScore %2;", drn_CL_AddScoreEventArgs select 0, drn_CL_AddScoreEventArgs select 1]; +}; + +/* + * Summary: Adds score to a player. + * Arguments: + * _vehicleVarName: Vehicle variable name of unit to add score to. + * _score: The score to be added. + */ +drn_fnc_CL_AddScore = { + private ["_unit", "_score"]; + private ["_vehicleVarName"]; + + _unit = _this select 0; + _score = _this select 1; + + _vehicleVarName = vehicleVarName _unit; + drn_CL_AddScoreEventArgs = [_vehicleVarName, _score]; + + if (isServer) then { + drn_CL_AddScoreEventArgs call drn_fnc_CL_AddScoreServer; + } + else { + publicVariable "drn_CL_AddScoreEventArgs"; + }; +}; + +/* + * Summary: Adds units to garbage collector. Units added to garbage collector (dead or alive) are deleted when on "clean up distance" from reference group. + * Arguments: + * _this: Array of units to add to garbage collector. + */ +drn_fnc_CL_AddUnitsToGarbageCollector = { + private ["_units"]; + _units = _this; + + if (isNil "drn_var_CL_GarbageCollectorUnits") then { + drn_var_CL_GarbageCollectorUnits = []; + }; + + drn_var_CL_GarbageCollectorUnits = drn_var_CL_GarbageCollectorUnits + _units; +}; + +/* + * Summary: Starts the garbage collector. Garbage collector removes empty groups and units added by function drn_fnc_CL_AddUnitsToGarbageCollector every 10 seconds. + * Remarks: + * This function must be spawned (not called). + * Arguments: + * _referenceGroup: When distance is at least "clean up distance" to every unit in this group (preferrably player group), objects relevant to garbage collector will be garbage collected. + * [_cleanUpDistance]: Optional. Distance in meters at which objects will be garbage collected. + * [_debug]: Optional. true to enable debug mode, else false. + */ +drn_fnc_CL_RunGarbageCollector = { + private ["_referenceGroup", "_cleanUpDistance", "_debug"]; + private ["_emptyGroups", "_groupsToDelete", "_unitsToDelete"]; + + _referenceGroup = _this select 0; + if (count _this > 1) then {_cleanUpDistance = _this select 1;} else {_cleanUpDistance = 750}; + if (count _this > 2) then { _debug = _this select 2; } else { _debug = false; }; + + if (_debug) then { + ["Garbage collector started."] call drn_fnc_CL_ShowDebugTextAllClients; + }; + + if (isNil "drn_var_CL_GarbageCollectorUnits") then { + drn_var_CL_GarbageCollectorUnits = []; + }; + + _emptyGroups = []; + + while {true} do { + + // Find empty groups + { + if (count units _x <= 0) then { + _emptyGroups set [count _emptyGroups, _x]; + }; + } foreach allGroups; + + if (_debug) then { + sleep 1; + } + else { + sleep 10; + }; + + // Delete empty groups if they are still empty + _groupsToDelete = []; + { + if (count units _x <= 0) then { + _groupsToDelete set [count _groupsToDelete, _x]; + }; + } foreach _emptyGroups; + + _emptyGroups = _emptyGroups - _groupsToDelete; + + // Delete the groups + { + if (_debug) then { + ["Group '" + str _x + "' garbage collected."] call drn_fnc_CL_ShowDebugTextAllClients; + }; + + deleteGroup _x; + } foreach _groupsToDelete; + + // Delete units that are far away + _unitsToDelete = []; + { + private ["_unit", "_farAway"]; + + _unit = _x; + _farAway = true; + + { + if (_x distance _unit < _cleanUpDistance) then { + _farAway = false; + }; + } foreach units _referenceGroup; + + if (_farAway) then { + _unitsToDelete set [count _unitsToDelete, _unit]; + }; + } foreach drn_var_CL_GarbageCollectorUnits; + + drn_var_CL_GarbageCollectorUnits = drn_var_CL_GarbageCollectorUnits - _unitsToDelete; + + { + private ["_group"]; + + _group = group _x; + + if (_debug) then { + ["Unit '" + str _x + "' garbage collected."] call drn_fnc_CL_ShowDebugTextAllClients; + }; + deleteVehicle _x; + + if (str _group != "") then { + if (count units _group == 0) then { + if (_debug) then { + ["Group '" + str _group + "' garbage collected."] call drn_fnc_CL_ShowDebugTextAllClients; + }; + + deleteGroup _group; + }; + }; + } foreach _unitsToDelete; + }; +}; + +/******************************************************************************************/ +// Debug stuff + +drn_CL_DebugTextEventArgs = []; // Empty +drn_CL_DebugMarkerEventArgs = []; // [name, position, size, direction, shape ("RECTANGLE" or "ELLIPSE"), markerColor, markerText (optional)] or alternatively [name, position, type, markerColor (optional), markerText (optional)] +drn_CL_DeleteDebugMarkerEventArgs = []; // [name] + +"drn_CL_DebugTextEventArgs" addPublicVariableEventHandler { + drn_CL_DebugTextEventArgs call drn_fnc_CL_ShowDebugTextLocal; +}; + +"drn_CL_DebugMarkerEventArgs" addPublicVariableEventHandler { + drn_CL_DebugMarkerEventArgs call drn_fnc_CL_SetDebugMarkerLocal; +}; + +"drn_CL_DeleteDebugMarkerEventArgs" addPublicVariableEventHandler { + drn_CL_DeleteDebugMarkerEventArgs call drn_fnc_CL_DeleteDebugMarkerLocal; +}; + +/* + * Summary: Shows debug text on local client. + * Remarks: + * if global variable "drn_var_CL_SilentDebugMode" is set to true, debug text will only be written to RTF-file and not shown on screen. + * Arguments: + * _text: Debug text. + */ +drn_fnc_CL_ShowDebugTextLocal = { + private ["_minutes", "_seconds"]; + + if (!isNull player) then { + if (!drn_var_CL_SilentDebugMode) then { + player sideChat (_this select 0); + }; + }; + + _minutes = floor (time / 60); + _seconds = floor (time - (_minutes * 60)); + diag_log ((str _minutes + ":" + str _seconds) + " Debug: " + (_this select 0)); +}; + +/* + * Summary: Shows debug text on all clients. + * Remarks: + * if global variable "drn_var_CL_SilentDebugMode" is set to true, debug text will only be written to RTF-file and not shown on screen. + * Arguments: + * _text: Debug text. + */ +drn_fnc_CL_ShowDebugTextAllClients = { + drn_CL_DebugTextEventArgs = _this; + publicVariable "drn_CL_DebugTextEventArgs"; + drn_CL_DebugTextEventArgs call drn_fnc_CL_ShowDebugTextLocal; +}; + +/* + * Summary: Shows debug marker on local client. + * Remarks: + * if global variable "drn_var_CL_SilentDebugMode" is set to true, debug marker will not shown. + * Arguments alternative #1 (Marker representing an area): + * _markerName: Marker's name. (must be global unique). + * _position: Marker's position. + * _size: Marker's size on array format [x, y]. + * _direction: Marker's direction. + * _shape: "RECTANGLE" or "ELLIPSE". + * _markerColor: Marker's color ("Default", "ColorRed", "ColorYellow" etc.). + * [_markerText]: Optional. Marker's text. + * Arguments alternative #2 (Marker representing an icon). + * _markerName: Marker's name. (must be global unique). + * _position: Marker's position. + * _type: Markers icon type (applies to icons in cfgIcons, like "Warning", "Dot" etc.). + * [_markerColor]: Optional. Marker's color ("Default", "ColorRed", "ColorYellow" etc.). + * [_markerText]. Optional. Marker's text. + */ +drn_fnc_CL_SetDebugMarkerLocal = { + private ["_markerName", "_position", "_size", "_direction", "_type", "_shape", "_markerColor", "_markerText"]; + private ["_marker"]; + + if (!isNull player) then { + if (!drn_var_CL_SilentDebugMode) then { + _markerName = _this select 0; + _position = _this select 1; + _markerColor = "Default"; + _markerText = ""; + + if (count _this == 6) then { + _size = _this select 2; + _direction = _this select 3; + _shape = _this select 4; + _markerColor = _this select 5; + }; + if (count _this == 7) then { + _size = _this select 2; + _direction = _this select 3; + _shape = _this select 4; + _markerColor = _this select 5; + _markerText = _this select 6; + }; + if (count _this == 3) then { + _type = _this select 2; + _shape = "ICON"; + }; + if (count _this == 4) then { + _type = _this select 2; + _shape = "ICON"; + _markerColor = _this select 3; + }; + if (count _this == 5) then { + _type = _this select 2; + _shape = "ICON"; + _markerColor = _this select 3; + _markerText = _this select 4; + }; + + // Delete old marker + if ([_markerName] call drn_fnc_CL_MarkerExists) then { + deleteMarkerLocal _markerName; + }; + + // Set new marker + _marker = createMarkerLocal [_markerName, _position]; + _marker setMarkerShapeLocal _shape; + _marker setMarkerColorLocal _markerColor; + _marker setMarkerTextLocal _markerText; + + if (count _this == 6 || count _this == 7) then { + _marker setMarkerSizeLocal _size; + _marker setMarkerDirLocal _direction; + }; + if (count _this == 3 || count _this == 4 || count _this == 5) then { + _marker setMarkerTypeLocal _type; + }; + }; + }; +}; + +/* + * Summary: Shows debug marker on all clients. + * Remarks: + * if global variable "drn_var_CL_SilentDebugMode" is set to true, debug marker will not shown. + * Arguments alternative #1 (Marker representing an area): + * _markerName: Marker's name. (must be global unique). + * _position: Marker's position. + * _size: Marker's size on array format [x, y]. + * _direction: Marker's direction. + * _shape: "RECTANGLE" or "ELLIPSE". + * _markerColor: Marker's color ("Default", "ColorRed", "ColorYellow" etc.). + * [_markerText]: Optional. Marker's text. + * Arguments alternative #2 (Marker representing an icon). + * _markerName: Marker's name. (must be global unique). + * _position: Marker's position. + * _type: Markers icon type (applies to icons in cfgIcons, like "Warning", "Dot" etc.). + * [_markerColor]: Optional. Marker's color ("Default", "ColorRed", "ColorYellow" etc.). + * [_markerText]. Optional. Marker's text. + */ +drn_fnc_CL_SetDebugMarkerAllClients = { + drn_CL_DebugMarkerEventArgs = _this; + publicVariable "drn_CL_DebugMarkerEventArgs"; + drn_CL_DebugMarkerEventArgs call drn_fnc_CL_SetDebugMarkerLocal; +}; + +/* + * Summary: Deletes a debug marker on local client. + * Arguments: + * _markerName: Name of marker to delete. + */ +drn_fnc_CL_DeleteDebugMarkerLocal = { + private ["_markerName"]; + _markerName = _this select 0; + deleteMarkerLocal _markerName; +}; + +/* + * Summary: Deletes a debug marker on all clients. + * Arguments: + * _markerName: Name of marker to delete. + */ +drn_fnc_CL_DeleteDebugMarkerAllClients = { + drn_CL_DeleteDebugMarkerEventArgs = _this; + publicVariable "drn_CL_DeleteDebugMarkerEventArgs"; + drn_CL_DeleteDebugMarkerEventArgs call drn_fnc_CL_DeleteDebugMarkerLocal; +}; + +drn_var_CL_CommonLibVersion = 1.04; +drn_var_commonLibInitialized = true; + diff --git a/Editing_and_Porting/Porting/Marker Missions/TE_VillageMarkers.VTF_Lybor/PositionGenerator.sqf b/Editing_and_Porting/Porting/Marker Missions/TE_VillageMarkers.VTF_Lybor/PositionGenerator.sqf new file mode 100644 index 00000000..49092158 --- /dev/null +++ b/Editing_and_Porting/Porting/Marker Missions/TE_VillageMarkers.VTF_Lybor/PositionGenerator.sqf @@ -0,0 +1,35 @@ +private ["_markerBaseName", "_arrayName", "_markerStartNo"]; +private ["_markerNo", "_markerName", "_i", "_isIcon"]; + +_markerBaseName = "a3e_village_"; +_arrayName = "a3e_villageMarkers"; +_markerStartNo = 1; + +_markerNo = _markerStartNo; +_markerName = _markerBaseName + str _markerNo; + +diag_log ("""" + _arrayName + " = [];"""); + +_isIcon = false; +if (markerShape _markerName == "ICON") then { + _isIcon = true; +}; + +_i = 0; +while {[_markerName] call drn_fnc_CL_MarkerExists} do { + if (_isIcon) then { + diag_log ("""" + _arrayName + " set [" + str _i + ", [" + str (getMarkerPos _markerName) + ", " + str markerDir _markerName + "]];"""); + } + else { + diag_log ("""" + _arrayName + " set [" + str _i + ", [" + str (getMarkerPos _markerName) + ", " + str markerDir _markerName + ", """ + markerShape _markerName + """, " + str markerSize _markerName + ", """ + markerColor _markerName + """]];"""); + }; + + _markerNo = _markerNo + 1; + _markerName = _markerBaseName + str _markerNo; + _i = _i + 1; +}; + +//diag_log ("""" + _arrayName + "Initialized = true;"""); +//diag_log ("""publicVariable """ + _arrayName + "Initialized"";"""); + +player sideChat (str _i + " village markers generated."); diff --git a/Editing_and_Porting/Porting/Marker Missions/TE_VillageMarkers.VTF_Lybor/init.sqf b/Editing_and_Porting/Porting/Marker Missions/TE_VillageMarkers.VTF_Lybor/init.sqf new file mode 100644 index 00000000..e451d539 --- /dev/null +++ b/Editing_and_Porting/Porting/Marker Missions/TE_VillageMarkers.VTF_Lybor/init.sqf @@ -0,0 +1 @@ +call compile preprocessFileLineNumbers "Scripts\DRN\CommonLib\CommonLib.sqf"; diff --git a/Editing_and_Porting/Porting/Marker Missions/TE_VillageMarkers.VTF_Lybor/mission.sqm b/Editing_and_Porting/Porting/Marker Missions/TE_VillageMarkers.VTF_Lybor/mission.sqm new file mode 100644 index 00000000..521bf65c --- /dev/null +++ b/Editing_and_Porting/Porting/Marker Missions/TE_VillageMarkers.VTF_Lybor/mission.sqm @@ -0,0 +1,1285 @@ +version=54; +class EditorData +{ + moveGridStep=1; + angleGridStep=0.2617994; + scaleGridStep=1; + autoGroupingDist=10; + toggles=1537; + class ItemIDProvider + { + nextID=390; + }; + class Camera + { + pos[]={4709.5322,45.458771,2838.6394}; + dir[]={-0.074074343,-0.61510384,0.78495979}; + up[]={-0.057788849,0.78844684,0.61238354}; + aside[]={0.99557787,-1.717126e-009,0.093949758}; + }; +}; +binarizationWanted=0; +sourceName="TE_VillageMarkers"; +addons[]= +{ + "A3_Characters_F", + "A3_Ui_F" +}; +class AddonsMetaData +{ + class List + { + items=2; + class Item0 + { + className="A3_Characters_F"; + name="Arma 3 Alpha - Characters and Clothing"; + author="Bohemia Interactive"; + url="https://www.arma3.com"; + }; + class Item1 + { + className="A3_Ui_F"; + name="Arma 3 - User Interface"; + author="Bohemia Interactive"; + url="https://www.arma3.com"; + }; + }; +}; +randomSeed=6248515; +class ScenarioData +{ + author="Scruffy"; +}; +class Mission +{ + class Intel + { + resistanceWest=0; + resistanceEast=1; + timeOfChanges=1800.0002; + startWeather=0.30000001; + startWind=0.1; + startWaves=0.1; + forecastWeather=0; + forecastWind=0.1; + forecastWaves=0.1; + forecastLightnings=0.1; + year=1944; + month=7; + day=25; + hour=8; + minute=0; + startFogDecay=0.014; + forecastFogDecay=0.014; + }; + class Entities + { + items=88; + class Item0 + { + dataType="Trigger"; + position[]={-1585.4418,46.295959,6919.6597}; + class Attributes + { + text="Export Village markers to .rpt"; + onActivation="_nil = [] execVM ""PositionGenerator.sqf"";"; + interuptable=1; + activationBy="ALPHA"; + }; + id=2; + type="EmptyDetector"; + atlOffset=-379.65463; + }; + class Item1 + { + dataType="Group"; + side="West"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={2638.4543,87.690483,2386.3057}; + }; + side="West"; + flags=7; + class Attributes + { + isPlayer=1; + }; + id=303; + type="B_soldier_AR_F"; + }; + }; + class Attributes + { + }; + id=302; + }; + class Item2 + { + dataType="Marker"; + position[]={-1978.4319,-210.26517,2157.9243}; + name="tip1"; + text="copy this one, so it adds _number"; + type="hd_arrow"; + id=304; + atlOffset=-333.13788; + }; + class Item3 + { + dataType="Marker"; + position[]={-1990.0675,168.8524,2559.3792}; + name="a3e_village"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=100; + b=100; + id=305; + }; + class Item4 + { + dataType="Marker"; + position[]={212.06992,1.3584803,1747.2128}; + name="a3e_village_1"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=21.943741; + b=17.999329; + id=306; + }; + class Item5 + { + dataType="Marker"; + position[]={416.49802,1.0628009,1973.0096}; + name="a3e_village_2"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=240.71582; + b=45.172195; + angle=335.31812; + id=307; + atlOffset=-0.0052726269; + }; + class Item6 + { + dataType="Marker"; + position[]={825.31525,1.1700106,2199.4375}; + name="a3e_village_3"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=75.56163; + b=173.43065; + angle=37.046638; + id=308; + atlOffset=-0.14915943; + }; + class Item7 + { + dataType="Marker"; + position[]={1326.2401,2.081759,2610.3804}; + name="a3e_village_4"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=52.718933; + b=180.17722; + angle=39.484917; + id=309; + atlOffset=0.63716483; + }; + class Item8 + { + dataType="Marker"; + position[]={1771.4169,1.36,2889.7253}; + name="a3e_village_5"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=84.396614; + b=270.04721; + angle=344.99759; + id=310; + }; + class Item9 + { + dataType="Marker"; + position[]={1549.3708,1.24,3018.062}; + name="a3e_village_6"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorBlue"; + a=18.760948; + b=19.555674; + angle=350.40494; + id=311; + atlOffset=-0.0020691156; + }; + class Item10 + { + dataType="Marker"; + position[]={2176.5483,1.547063,3381.5706}; + name="a3e_village_7"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=100; + b=100; + id=312; + }; + class Item11 + { + dataType="Marker"; + position[]={2270.7969,1.3326637,3148.2454}; + name="a3e_village_8"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorBlue"; + a=149.23178; + b=21.321976; + angle=356.9791; + id=313; + atlOffset=0.26097608; + }; + class Item12 + { + dataType="Marker"; + position[]={2526.512,77.027199,2421.3867}; + name="a3e_village_9"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=81.274902; + b=56.464111; + angle=317.1925; + id=314; + }; + class Item13 + { + dataType="Marker"; + position[]={1614.0214,229.13353,190.203}; + name="a3e_village_10"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=20.362; + b=36.653931; + angle=23.599545; + id=315; + }; + class Item14 + { + dataType="Marker"; + position[]={2392.3323,368.99005,627.32391}; + name="a3e_village_11"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=38.161133; + b=52.858948; + angle=18.074144; + id=316; + atlOffset=4.3018799; + }; + class Item15 + { + dataType="Marker"; + position[]={5156.0532,475.75,586.52765}; + name="a3e_village_12"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=19.76123; + b=34.534485; + angle=38.952778; + id=317; + }; + class Item16 + { + dataType="Marker"; + position[]={6067.4585,181.91119,1307.6237}; + name="a3e_village_13"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorBlue"; + a=30.095928; + b=26.792849; + angle=316.85086; + id=318; + atlOffset=8.480484; + }; + class Item17 + { + dataType="Marker"; + position[]={6021.9409,106.71294,1872.3499}; + name="a3e_village_14"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=59.532425; + b=32.636253; + angle=58.966183; + id=319; + atlOffset=-0.37232971; + }; + class Item18 + { + dataType="Marker"; + position[]={5369.0645,11.856874,2543.8711}; + name="a3e_village_15"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=49.553955; + b=26.303101; + angle=21.06992; + id=320; + atlOffset=1.9073486e-006; + }; + class Item19 + { + dataType="Marker"; + position[]={5220.3096,10.831311,2605.9871}; + name="a3e_village_16"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=38.551514; + b=62.425049; + angle=341.24884; + id=321; + }; + class Item20 + { + dataType="Marker"; + position[]={5405.9458,7.4480047,2678.3823}; + name="a3e_village_17"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=96.678467; + b=28.171509; + angle=29.805336; + id=322; + atlOffset=-4.7683716e-007; + }; + class Item21 + { + dataType="Marker"; + position[]={5947.189,14.841351,2521.7976}; + name="a3e_village_18"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=53.083008; + b=152.18469; + angle=52.645245; + id=323; + atlOffset=0.40581608; + }; + class Item22 + { + dataType="Marker"; + position[]={4748.875,66.133118,2738.4468}; + name="a3e_village_19"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorBlue"; + a=11.362606; + b=18.553495; + angle=55.640797; + id=324; + atlOffset=-0.21935272; + }; + class Item23 + { + dataType="Marker"; + position[]={4574.8501,3.1289999,3146.0405}; + name="a3e_village_20"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorBlue"; + a=391.08792; + b=51.730568; + angle=35.916679; + id=325; + atlOffset=1.2626975; + }; + class Item24 + { + dataType="Marker"; + position[]={4230.4609,69.809998,3021.2661}; + name="a3e_village_21"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorBlue"; + a=96.95874; + b=42.065674; + id=326; + }; + class Item25 + { + dataType="Marker"; + position[]={3640.6858,100.03187,2867.6394}; + name="a3e_village_22"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=30.433716; + b=16.879395; + id=327; + }; + class Item26 + { + dataType="Marker"; + position[]={3253.1663,67.209999,2991.7051}; + name="a3e_village_23"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorBlue"; + a=75.994629; + b=84.64978; + id=328; + atlOffset=0.010002136; + }; + class Item27 + { + dataType="Marker"; + position[]={2823.1987,3.3830216,3399.3735}; + name="a3e_village_24"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=98.643684; + b=29.626719; + angle=312.65729; + id=329; + atlOffset=0.13294101; + }; + class Item28 + { + dataType="Marker"; + position[]={2559.6875,1.566,3536.2771}; + name="a3e_village_25"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorBlue"; + a=178.71733; + b=105.1076; + angle=320.57092; + id=330; + atlOffset=0.14600003; + }; + class Item29 + { + dataType="Marker"; + position[]={2012.7383,45.660797,3672.3132}; + name="a3e_village_26"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=12.535461; + b=20.969482; + angle=324.63257; + id=331; + atlOffset=6.631237; + }; + class Item30 + { + dataType="Marker"; + position[]={2308.4158,17.721363,3630.4785}; + name="a3e_village_27"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=20.058666; + b=30.004272; + angle=25.454407; + id=332; + atlOffset=-0.26524162; + }; + class Item31 + { + dataType="Marker"; + position[]={2399.2998,28.734856,3955.6199}; + name="a3e_village_28"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=18.71167; + b=28.123779; + angle=344.51492; + id=333; + atlOffset=1.9073486e-006; + }; + class Item32 + { + dataType="Marker"; + position[]={2704.9988,208.24306,4161.1362}; + name="a3e_village_29"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=16.976074; + b=28.449841; + angle=353.97833; + id=334; + atlOffset=16.333054; + }; + class Item33 + { + dataType="Marker"; + position[]={3257.9956,46.76516,4173.729}; + name="a3e_village_30"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=24.258585; + b=13.193998; + angle=70.776924; + id=335; + atlOffset=0.088996887; + }; + class Item34 + { + dataType="Marker"; + position[]={3540.0364,2.9884653,4073.0967}; + name="a3e_village_31"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=27.522745; + b=17.37793; + angle=3.571492; + id=336; + }; + class Item35 + { + dataType="Marker"; + position[]={3878.5254,188.85417,4329.3042}; + name="a3e_village_32"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorBlue"; + a=14.46228; + b=14.454346; + id=337; + atlOffset=0.01373291; + }; + class Item36 + { + dataType="Marker"; + position[]={4232.9365,103.40562,4163.8135}; + name="a3e_village_33"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=35.411079; + b=20.049805; + angle=316.42471; + id=338; + atlOffset=5.6855698; + }; + class Item37 + { + dataType="Marker"; + position[]={3657.9941,247.97897,4611.0303}; + name="a3e_village_34"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorBlue"; + a=14.486942; + b=14.500463; + angle=1.4707274; + id=339; + atlOffset=1.0989685; + }; + class Item38 + { + dataType="Marker"; + position[]={4555.0161,110.31001,4269.1152}; + name="a3e_village_35"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=38.80957; + b=44.032959; + id=340; + atlOffset=7.6293945e-006; + }; + class Item39 + { + dataType="Marker"; + position[]={4514.1768,155.30827,4442.8154}; + name="a3e_village_36"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorBlue"; + a=34.011688; + b=14.561751; + angle=38.528534; + id=341; + atlOffset=19.065582; + }; + class Item40 + { + dataType="Marker"; + position[]={4871.8672,74.644287,4218.8584}; + name="a3e_village_37"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=25.526855; + b=38.063477; + angle=334.94928; + id=342; + atlOffset=13.252525; + }; + class Item41 + { + dataType="Marker"; + position[]={5990.7568,43.544476,4282.7192}; + name="a3e_village_38"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=57.79034; + b=147.39644; + angle=342.37747; + id=343; + atlOffset=3.5297279; + }; + class Item42 + { + dataType="Marker"; + position[]={5585.2441,129.35144,4133.6729}; + name="a3e_village_39"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=53.640251; + b=42.168781; + angle=27.623451; + id=344; + atlOffset=10.01078; + }; + class Item43 + { + dataType="Marker"; + position[]={5856.6367,28.861374,3825.0105}; + name="a3e_village_40"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=95.884872; + b=43.850838; + angle=325.86081; + id=345; + atlOffset=-0.018625259; + }; + class Item44 + { + dataType="Marker"; + position[]={4926.5381,15.740001,3890.5874}; + name="a3e_village_41"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorBlue"; + a=48.485973; + b=48.707867; + angle=11.715212; + id=346; + atlOffset=9.5367432e-007; + }; + class Item45 + { + dataType="Marker"; + position[]={4673.7231,80.698502,3552.4639}; + name="a3e_village_42"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=225.41895; + b=32.580769; + angle=28.416298; + id=347; + atlOffset=-0.00054931641; + }; + class Item46 + { + dataType="Marker"; + position[]={3909.4941,1.5099121,3833.9734}; + name="a3e_village_43"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=152.7906; + b=71.92041; + angle=332.04254; + id=348; + }; + class Item47 + { + dataType="Marker"; + position[]={3346.3018,1.1109999,3867.5281}; + name="a3e_village_44"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorBlue"; + a=167.09615; + b=100; + id=349; + atlOffset=0.065719247; + }; + class Item48 + { + dataType="Marker"; + position[]={2852.1892,2.2515676,3691.4724}; + name="a3e_village_45"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=55.173946; + b=121.62903; + angle=25.491915; + id=350; + atlOffset=-0.051135063; + }; + class Item49 + { + dataType="Marker"; + position[]={3310.1895,65.830887,3242.7307}; + name="a3e_village_46"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=29.990723; + b=19.745361; + id=351; + atlOffset=2.0729866; + }; + class Item50 + { + dataType="Marker"; + position[]={3459.269,37.863918,3269.8513}; + name="a3e_village_47"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=25.626709; + b=36.820923; + angle=306.20062; + id=352; + atlOffset=3.8146973e-006; + }; + class Item51 + { + dataType="Marker"; + position[]={3541.3635,31.459963,3352.1133}; + name="a3e_village_48"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=21.554096; + b=32.437561; + angle=332.89664; + id=353; + atlOffset=0.0027656555; + }; + class Item52 + { + dataType="Marker"; + position[]={3847.9839,3.0687866,3605.321}; + name="a3e_village_49"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=38.269539; + b=62.606667; + angle=51.955048; + id=354; + atlOffset=0.99585938; + }; + class Item53 + { + dataType="Marker"; + position[]={4131.231,4.0291786,3535.801}; + name="a3e_village_50"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorBlue"; + a=34.291527; + b=23.23703; + angle=343.55804; + id=355; + atlOffset=2.0860975; + }; + class Item54 + { + dataType="Marker"; + position[]={4225.145,5.7969999,3658.804}; + name="a3e_village_51"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorBlue"; + a=57.500999; + b=16.139999; + angle=31.843464; + id=356; + atlOffset=0.59024191; + }; + class Item55 + { + dataType="Marker"; + position[]={4799.4155,2.7187378,3209.3398}; + name="a3e_village_52"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=199.50392; + b=48.307735; + angle=34.46936; + id=357; + atlOffset=0.17674804; + }; + class Item56 + { + dataType="Marker"; + position[]={1814.9532,318.815,5396.4116}; + name="a3e_village_53"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorBlue"; + a=14.187378; + b=61.972237; + angle=352.89511; + id=358; + atlOffset=0.66851807; + }; + class Item57 + { + dataType="Marker"; + position[]={895.92755,250.08649,4429.4448}; + name="a3e_village_54"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=3.0602417; + b=2.7478027; + id=359; + atlOffset=15.947113; + }; + class Item58 + { + dataType="Marker"; + position[]={3452.7783,411.92422,5617.4258}; + name="a3e_village_55"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=35.192505; + b=23.459961; + angle=325.85959; + id=360; + }; + class Item59 + { + dataType="Marker"; + position[]={5026.1724,349.65717,5173.1777}; + name="a3e_village_56"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=3.0141602; + b=3.0480957; + id=361; + }; + class Item60 + { + dataType="Marker"; + position[]={5932.6196,46.900467,4769.7573}; + name="a3e_village_57"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=13.593506; + b=22.750977; + angle=33.484314; + id=362; + }; + class Item61 + { + dataType="Marker"; + position[]={5896.1665,40.953728,4513.9351}; + name="a3e_village_58"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=23.623535; + b=48.508789; + angle=334.64938; + id=363; + atlOffset=-3.8146973e-006; + }; + class Item62 + { + dataType="Marker"; + position[]={4249.019,173.09161,4488.8979}; + name="a3e_village_59"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=21.497559; + b=55.935848; + angle=317.11288; + id=364; + atlOffset=0.5740509; + }; + class Item63 + { + dataType="Marker"; + position[]={4087.9077,181.28044,4530.9629}; + name="a3e_village_60"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=32.093506; + b=19.557129; + angle=348.75848; + id=365; + }; + class Item64 + { + dataType="Marker"; + position[]={666.66119,19.750814,2243.4141}; + name="a3e_village_61"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=36.417358; + b=31.927246; + id=366; + atlOffset=1.9073486e-006; + }; + class Item65 + { + dataType="Marker"; + position[]={3642.3386,73.883369,2990.6658}; + name="a3e_village_62"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=35.332642; + b=27.657471; + id=367; + }; + class Item66 + { + dataType="Marker"; + position[]={3643.8081,67.814247,3087.6667}; + name="a3e_village_63"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=37.455322; + b=19.492554; + id=368; + atlOffset=0.13198853; + }; + class Item67 + { + dataType="Marker"; + position[]={5910.7954,140.63115,1904.4084}; + name="a3e_village_64"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=29.990723; + b=30.11908; + id=369; + atlOffset=1.7624359; + }; + class Item68 + { + dataType="Marker"; + position[]={1834.2703,342.60718,5438.3271}; + name="a3e_village_65"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorBlue"; + a=37.280762; + b=23.210554; + angle=356.34473; + id=370; + atlOffset=22.682678; + }; + class Item69 + { + dataType="Marker"; + position[]={3919.509,574.10303,5575.2144}; + name="a3e_village_66"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=25.790161; + b=48.096596; + angle=285.61603; + id=371; + atlOffset=22.163025; + }; + class Item70 + { + dataType="Marker"; + position[]={5941.5137,32.646732,3939.6167}; + name="a3e_village_67"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=23.919189; + b=61.864746; + angle=12.692241; + id=372; + }; + class Item71 + { + dataType="Marker"; + position[]={4913.3306,84.158401,3464.6479}; + name="a3e_village_68"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=74.240456; + b=60.981682; + angle=58.139885; + id=373; + atlOffset=2.8121185; + }; + class Item72 + { + dataType="Marker"; + position[]={3800.3977,1.590199,3896.0728}; + name="a3e_village_69"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorBlue"; + a=123.37764; + b=70.638252; + angle=357.5274; + id=374; + atlOffset=-0.26074338; + }; + class Item73 + { + dataType="Marker"; + position[]={4254.9458,1.8669541,3928.8413}; + name="a3e_village_70"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorBlue"; + a=17.029369; + b=10.148237; + angle=339.74677; + id=375; + }; + class Item74 + { + dataType="Marker"; + position[]={1918.1172,2.7815576,3355.9502}; + name="a3e_village_71"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorBlue"; + a=14.936401; + b=16.919067; + id=376; + atlOffset=1.4552819; + }; + class Item75 + { + dataType="Marker"; + position[]={2474.1396,16.406807,3735.1155}; + name="a3e_village_72"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=56.959473; + b=36.927212; + angle=352.37366; + id=377; + atlOffset=6.0278101; + }; + class Item76 + { + dataType="Marker"; + position[]={5040.0303,4.2343411,2788.4204}; + name="a3e_village_73"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=27.021561; + b=43.269402; + angle=20.847023; + id=378; + atlOffset=0.68297768; + }; + class Item77 + { + dataType="Marker"; + position[]={3332.9443,19.569502,3714.2598}; + name="a3e_village_74"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=24.285034; + b=18.858154; + id=379; + atlOffset=0.022163391; + }; + class Item78 + { + dataType="Marker"; + position[]={3104.0793,2.6108556,3746.0154}; + name="a3e_village_75"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=40.641876; + b=66.884705; + angle=298.52902; + id=380; + atlOffset=0.0049304962; + }; + class Item79 + { + dataType="Marker"; + position[]={3573.1912,511.31384,1236.9093}; + name="a3e_village_76"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=5.7102051; + b=4.9711914; + id=381; + atlOffset=16.404358; + }; + class Item80 + { + dataType="Marker"; + position[]={3299.8416,403.89044,1989.1185}; + name="a3e_village_77"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorBlue"; + a=10.608649; + b=10.618963; + angle=33.605968; + id=382; + atlOffset=0.2154541; + }; + class Item81 + { + dataType="Marker"; + position[]={3838.0652,443.29175,1029.9407}; + name="a3e_village_78"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorBlue"; + a=0.63964844; + b=0.67791748; + id=383; + atlOffset=3.6704712; + }; + class Item82 + { + dataType="Marker"; + position[]={4372.4702,9.0418892,3572.3362}; + name="a3e_village_79"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorBlue"; + a=13.547527; + b=9.7156639; + angle=32.959404; + id=384; + atlOffset=-0.00032234192; + }; + class Item83 + { + dataType="Marker"; + position[]={4531.7148,6.4069214,3408.6169}; + name="a3e_village_80"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorBlue"; + a=61.122921; + b=22.739258; + angle=32.951488; + id=385; + atlOffset=2.9972765; + }; + class Item84 + { + dataType="Marker"; + position[]={4835.2671,2.0037587,3277.3777}; + name="a3e_village_81"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorBlue"; + a=19.458529; + b=12.363593; + angle=32.388115; + id=386; + atlOffset=0.044570327; + }; + class Item85 + { + dataType="Marker"; + position[]={5027.1133,5.0817475,3080.6387}; + name="a3e_village_82"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorBlue"; + a=24.663239; + b=13.264641; + angle=30.104836; + id=387; + atlOffset=0.31438684; + }; + class Item86 + { + dataType="Marker"; + position[]={5032.9976,3.9502614,2988.7988}; + name="a3e_village_83"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorBlue"; + a=27.143677; + b=16.34025; + angle=122.15826; + id=388; + atlOffset=-0.025768995; + }; + class Item87 + { + dataType="Marker"; + position[]={5159.2593,5.565043,2879.5466}; + name="a3e_village_84"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorBlue"; + a=35.155083; + b=22.661528; + angle=30.104832; + id=389; + atlOffset=-0.0065464973; + }; + }; +}; diff --git a/Editing_and_Porting/Porting/Marker Missions/TE_VillageMarkers.VTF_Lybor/scripts/DRN/CommonLib/CommonLib.sqf b/Editing_and_Porting/Porting/Marker Missions/TE_VillageMarkers.VTF_Lybor/scripts/DRN/CommonLib/CommonLib.sqf new file mode 100644 index 00000000..5af03fcc --- /dev/null +++ b/Editing_and_Porting/Porting/Marker Missions/TE_VillageMarkers.VTF_Lybor/scripts/DRN/CommonLib/CommonLib.sqf @@ -0,0 +1,724 @@ +/* CommonLib v1.04 + * Author: Engima of Ostgota Ops + * History: + * 2011-01-25: Created. + * 2011-11-19: Updated to v1.01 - New version of function drn_fnc_CL_PositionIsInsideMarker. Still backward compatible with v1.00. + * 2011-12-17: Added debug methods and method ShowTitleTextAllClients. + * 2011-12-23: Added method drn_fnc_CL_InitParams + */ + +/******************************************************************************************/ +/* Variables */ + +// Set this variable to true if you want debug info to show only in RTF-file (and not on player's screens). +drn_var_CL_SilentDebugMode = false; + +/******************************************************************************************/ +/* Functions */ + +/* + * Summary: Initializes the paramsArray with default values if played in single player. + */ +drn_fnc_CL_InitParams = { + if (isNil "paramsArray") then + { + private ["_c", "_i", "_paramName"]; + paramsArray=[]; + + if (isClass (missionConfigFile/"Params")) then + { + _c=count (missionConfigFile/"Params"); + for [ {_i=0}, {_i<_c}, {_i=_i+1} ] do + { + _paramName = (configName ((missionConfigFile >> "Params") select _i)); + paramsArray=paramsArray+[ getNumber (missionConfigFile >> "Params" >> _paramName >> "default") ]; + }; + }; + _c=count paramsArray; + if (isNil "param1" && _c>0)then{param1=paramsArray select 0}; + if (isNil "param2" && _c>1)then{param2=paramsArray select 1}; + }; +}; + +/* + * Summary: Checks if a marker exists. + * Arguments: + * _marker: Marker name of marker to test. + * Returns: true if marker exists, else false. + */ +drn_fnc_CL_MarkerExists = { + private ["_exists", "_marker"]; + + _marker = _this select 0; + + _exists = false; + if (((getMarkerPos _marker) select 0) != 0 || ((getMarkerPos _marker) select 1 != 0)) then { + _exists = true; + }; + _exists +}; + +/* + * Summary: Gets a random marker that fulfulls specified name expression and is within a specified range from a reference position. + * Remarks: Markers sought must have name format 'markerPreNameX', where X is an integer value. Marker number must start with + * 1 and be an unbroken ascending sequence. + * Arguments: + * _markerPreName: Marker name except the ending integer value. + * _position: Reference position. + * _minDistance: Marker's minimum distance from reference position. + * _maxDistance: Marker's maximum distance from reference position. + * Returns: Name of found marker. Empty string ("") if no marker was found. + */ +drn_fnc_CL_GetMarkerWithinRange = { + private ["_markerPreName", "_markerNo", "_markerName", "_minDistance", "_maxDistance", "_markersWithinRange", "_markersOutsideRange", "_position", "_returnValue"]; + + _markerPreName = _this select 0; + _position = _this select 1; + _minDistance = _this select 2; + _maxDistance = _this select 3; + + _markersWithinRange = []; + _markersOutsideRange = []; + _returnValue = ""; + + _markerNo = 1; + _markerName = _markerPreName + str _markerNo; + + while {[_markerName] call drn_fnc_CL_MarkerExists} do { + if (_position distance (getMarkerPos _markerName) > _minDistance && _position distance (getMarkerPos _markerName) < _maxDistance) then { + _markersWithinRange set [count _markersWithinRange, _markerName]; + } + else { + if (_position distance (getMarkerPos _markerName) > _minDistance) then { + _markersOutsideRange set [count _markersOutsideRange, _markerName]; + }; + }; + + _markerNo = _markerNo + 1; + _markerName = _markerPreName + str _markerNo; + }; + + if (count _markersWithinRange > 0) then { + _returnValue = _markersWithinRange select floor (random count _markersWithinRange); + } + else { + if (count _markersOutsideRange > 0) then { + _returnValue = _markersOutsideRange select floor (random count _markersOutsideRange); + }; + }; + + _returnValue +}; + +/* + * Summary: Gets the marker closest to a reference position. + * Remarks: Markers sought must have name format 'markerPreNameX' or format 'markerPreNameX_Y', where X is an integer value + * specifying a marker number and Y is an integer value specifying a sub marker. Marker number must start with 1 and be an unbroken + * ascending sequence. The same applies for all submarker sequences. + * Arguments: + * _position: Reference position. + * _markerPreName: Marker name except the ending integer value. + * [_isTwoDimensional]: true if the marker sequence has sub markers, else false. + * Returns: Marker name of closest marker. Empty string ("") if no marker was found. + */ +drn_fnc_CL_GetClosestMarker = { + private ["_position", "_markerPreName", "_isTwoDimensional", "_returnMarkerName"]; + private ["_closestDistance", "_markerNo", "_subMarkerNo", "_markerName", "_distance"]; + + _position = _this select 0; + _markerPreName = _this select 1; + if (count _this > 2) then {_isTwoDimensional = _this select 2;} else {_isTwoDimensional = false}; + + _markerNo = 1; + _subMarkerNo = 1; + _closestDistance = 1000000; + _returnMarkerName = ""; + + if (_isTwoDimensional) then { + _markerName = _markerPreName + str _markerNo + "_" + str _subMarkerNo; + } + else { + _markerName = _markerPreName + str _markerNo; + }; + + while {[_markerName] call drn_fnc_CL_MarkerExists} do { + if (_isTwoDimensional) then { + while {[_markerName] call drn_fnc_CL_MarkerExists} do { + + _distance = (GetMarkerPos _markerName) distance _position; + if (_distance < _closestDistance) then { + _closestDistance = _distance; + _returnMarkerName = _markerName; + }; + + _subMarkerNo = _subMarkerNo + 1; + _markerName = _markerPreName + str _markerNo + "_" + str _subMarkerNo; + }; + + // Get next marker + _markerNo = _markerNo + 1; + _subMarkerNo = 1; + _markerName = _markerPreName + str _markerNo + "_" + str _subMarkerNo; + } + else { + _distance = (GetMarkerPos _markerName) distance _position; + if (_distance < _closestDistance) then { + _closestDistance = _distance; + }; + }; + }; + + _returnMarkerName +}; + +/* + * Summary: Rotates a position around a center position. + * Arguments: + * _centerPos: Center position to rotate around. + * _pos: Position that will be rotated. + * _dir: Direction (angle) to rotate. + */ +drn_fnc_CL_RotatePosition = { + private ["_centerPos", "_pos", "_dir"]; + private ["_px", "_py", "_mpx", "_mpy", "_ma", "_rpx", "_rpy"]; + + _centerPos = _this select 0; + _pos = _this select 1; + _dir = _this select 2; + + _px = _pos select 0; + _py = _pos select 1; + _mpx = _centerPos select 0; + _mpy = _centerPos select 1; + _ma = _dir; + + //Now, rotate point + _rpx = ( (_px - _mpx) * cos(_ma) ) + ( (_py - _mpy) * sin(_ma) ) + _mpx; + _rpy = (-(_px - _mpx) * sin(_ma) ) + ( (_py - _mpy) * cos(_ma) ) + _mpy; + + [_rpx, _rpy, 0] +}; + +/* + * Summary: Gets a random position inside a marker of shape RECTANGLE or ELLIPSE with any angle. + * Arguments: + * _markerName: Name of marker to get a random position inside. + * Returns: A position (array) inside current marker. If marker doesn't exist, [0, 0, 0] is returned. + * History: + * Created in CommonLib v1.00. + * Updated in CommonLib v1.01 - Function now supports RECTANGLE and ELLIPSE at any angle, previously only RECTANGLEs with angle 0. + */ +drn_fnc_CL_GetRandomMarkerPos = { + private ["_markerName"]; + private ["_isInside", "_px", "_py", "_mpx", "_mpy", "_msx", "_msy", "_ma", "_rpx", "_rpy", "_i"]; + + _markerName = _this select 0; + + _isInside = false; + _i = 0; + while {!_isInside} do { + _mpx = (getMarkerPos _markerName) select 0; + _mpy = (getMarkerPos _markerName) select 1; + _msx = (getMarkerSize _markerName) select 0; + _msy = (getMarkerSize _markerName) select 1; + _ma = (markerDir _markerName); + + _px = _mpx -_msx + random (_msx * 2); + _py = _mpy -_msy + random (_msy * 2); + + //Now, rotate point as marker is rotated + _rpx = ( (_px - _mpx) * cos(_ma) ) + ( (_py - _mpy) * sin(_ma) ) + _mpx; + _rpy = (-(_px - _mpx) * sin(_ma) ) + ( (_py - _mpy) * cos(_ma) ) + _mpy; + + if ([[_rpx, _rpy, 0], _markerName] call drn_fnc_CL_PositionIsInsideMarker) then { + _isInside = true; + }; + + _i = _i + 1; + if (_i > 1000) exitWith { + _rpx = 0; + _rpy = 0; + }; + }; + + [_rpx, _rpy, 0] +}; + +/* + * Summary: Checks if a position is inside a marker. + * Remarks: Marker can be of shape "RECTANGLE" or "ELLIPSE" and at any angle. + * Arguments: + * _markerName: Name of current marker. + * _pos: Position to test. + * Returns: true if position is inside marker. Else false. + * History: + * Created in CommonLib v1.00 + * Updated in CommonLib v1.01 - Function now supports RECTANGLE and ELLIPSE at any angle, previously only RECTANGLEs with angle 0. + */ +drn_fnc_CL_PositionIsInsideMarker = { + private ["_markerName", "_pos"]; + private ["_isInside", "_px", "_py", "_mpx", "_mpy", "_msx", "_msy", "_ma", "_xmin", "_xmax", "_ymin", "_ymax", "_rpx", "_rpy", "_res"]; + + _pos = _this select 0; + _markerName = _this select 1; + + _px = _pos select 0; + _py = _pos select 1; + _mpx = (getMarkerPos _markerName) select 0; + _mpy = (getMarkerPos _markerName) select 1; + _msx = (getMarkerSize _markerName) select 0; + _msy = (getMarkerSize _markerName) select 1; + _ma = -(markerDir _markerName); + + _xmin = _mpx - _msx; + _xmax = _mpx + _msx; + _ymin = _mpy - _msy; + _ymax = _mpy + _msy; + + //Now, rotate point to investigate around markers center in order to check against a nonrotated marker + _rpx = ( (_px - _mpx) * cos(_ma) ) + ( (_py - _mpy) * sin(_ma) ) + _mpx; + _rpy = (-(_px - _mpx) * sin(_ma) ) + ( (_py - _mpy) * cos(_ma) ) + _mpy; + + _isInside = false; + + if (markerShape _markerName == "RECTANGLE") then { + if (((_rpx > _xmin) && (_rpx < _xmax)) && ((_rpy > _ymin) && (_rpy < _ymax))) then + { + _isInside = true; + }; + }; + + if (markerShape _markerName == "ELLIPSE") then { + _res = (((_rpx-_mpx)^2)/(_msx^2)) + (((_rpy-_mpy)^2)/(_msy^2)); + if ( _res < 1 ) then + { + _isInside = true; + }; + }; + + _isInside +}; + +drn_CL_ShowCommandTextEventArgs = []; // [unit, text] + +"drn_CL_ShowCommandTextEventArgs" addPublicVariableEventHandler { + drn_CL_ShowCommandTextEventArgs call drn_fnc_CL_ShowCommandTextLocal; +}; + +/* + * Summary: Shows a text as command text on the local client. + * Arguments: + * _text: Text to show. + */ +drn_fnc_CL_ShowCommandTextLocal = { + private ["_text"]; + _text = _this select 0; + + if (!isNull player) then { + player globalChat _text; + }; + + diag_log ("Title text: " + _text); +}; + +/* + * Summary: Shows a text as command text on all clients. + * Arguments: + * _text: Text to show. + */ +drn_fnc_CL_ShowCommandTextAllClients = { + private ["_text"]; + _text = _this select 0; + + drn_CL_ShowCommandTextEventArgs = [_text]; + publicVariable "drn_CL_ShowCommandTextEventArgs"; + drn_CL_ShowCommandTextEventArgs call drn_fnc_CL_ShowCommandTextLocal; +}; + +drn_CL_ShowTitleTextEventArgs = []; // [text] + +"drn_CL_ShowTitleTextEventArgs" addPublicVariableEventHandler { + drn_CL_ShowTitleTextEventArgs call drn_fnc_CL_ShowTitleTextLocal; +}; + +/* + * Summary: Shows a text as a title text on the local client. + * Arguments: + * _text: Text to show. + * [_showAsSubTitle]: Optional. true if the text are to be shown as a sub title. false if it's to be shown in the middle of the screen. + */ +drn_fnc_CL_ShowTitleTextLocal = { + private ["_text", "_showAsSubTitle"]; + _text = _this select 0; + if (count _this > 1) then {_showAsSubTitle = _this select 1;} else {_showAsSubTitle = false}; + + if (!isNull player) then { + if (_showAsSubTitle) then { + titleText [_text, "PLAIN DOWN"]; + } + else { + titleText [_text, "PLAIN"]; + }; + }; + + diag_log ("Title text: " + _text); +}; + +/* + * Summary: Shows a text as a title text on all clients. + * Arguments: + * _text: Text to show. + * [_showAsSubTitle]: Optional. true if the text are to be shown as a sub title. false if it's to be shown in the middle of the screen. + */ +drn_fnc_CL_ShowTitleTextAllClients = { + private ["_text", "_showAsSubTitle"]; + _text = _this select 0; + if (count _this > 1) then {_showAsSubTitle = _this select 1;} else {_showAsSubTitle = false}; + + drn_CL_ShowTitleTextEventArgs = [_text, _showAsSubTitle]; + publicVariable "drn_CL_ShowTitleTextEventArgs"; + drn_CL_ShowTitleTextEventArgs call drn_fnc_CL_ShowTitleTextLocal; +}; + +drn_CL_AddScoreEventArgs = []; // [vehicleVarName, score] + +"drn_CL_AddScoreEventArgs" addPublicVariableEventHandler { + if (isServer) then { + drn_CL_AddScoreEventArgs call drn_fnc_CL_AddScoreServer; + }; +}; + +drn_fnc_CL_AddScoreServer = { + drn_CL_AddScoreEventArgs call compile format ["%1 addScore %2;", drn_CL_AddScoreEventArgs select 0, drn_CL_AddScoreEventArgs select 1]; +}; + +/* + * Summary: Adds score to a player. + * Arguments: + * _vehicleVarName: Vehicle variable name of unit to add score to. + * _score: The score to be added. + */ +drn_fnc_CL_AddScore = { + private ["_unit", "_score"]; + private ["_vehicleVarName"]; + + _unit = _this select 0; + _score = _this select 1; + + _vehicleVarName = vehicleVarName _unit; + drn_CL_AddScoreEventArgs = [_vehicleVarName, _score]; + + if (isServer) then { + drn_CL_AddScoreEventArgs call drn_fnc_CL_AddScoreServer; + } + else { + publicVariable "drn_CL_AddScoreEventArgs"; + }; +}; + +/* + * Summary: Adds units to garbage collector. Units added to garbage collector (dead or alive) are deleted when on "clean up distance" from reference group. + * Arguments: + * _this: Array of units to add to garbage collector. + */ +drn_fnc_CL_AddUnitsToGarbageCollector = { + private ["_units"]; + _units = _this; + + if (isNil "drn_var_CL_GarbageCollectorUnits") then { + drn_var_CL_GarbageCollectorUnits = []; + }; + + drn_var_CL_GarbageCollectorUnits = drn_var_CL_GarbageCollectorUnits + _units; +}; + +/* + * Summary: Starts the garbage collector. Garbage collector removes empty groups and units added by function drn_fnc_CL_AddUnitsToGarbageCollector every 10 seconds. + * Remarks: + * This function must be spawned (not called). + * Arguments: + * _referenceGroup: When distance is at least "clean up distance" to every unit in this group (preferrably player group), objects relevant to garbage collector will be garbage collected. + * [_cleanUpDistance]: Optional. Distance in meters at which objects will be garbage collected. + * [_debug]: Optional. true to enable debug mode, else false. + */ +drn_fnc_CL_RunGarbageCollector = { + private ["_referenceGroup", "_cleanUpDistance", "_debug"]; + private ["_emptyGroups", "_groupsToDelete", "_unitsToDelete"]; + + _referenceGroup = _this select 0; + if (count _this > 1) then {_cleanUpDistance = _this select 1;} else {_cleanUpDistance = 750}; + if (count _this > 2) then { _debug = _this select 2; } else { _debug = false; }; + + if (_debug) then { + ["Garbage collector started."] call drn_fnc_CL_ShowDebugTextAllClients; + }; + + if (isNil "drn_var_CL_GarbageCollectorUnits") then { + drn_var_CL_GarbageCollectorUnits = []; + }; + + _emptyGroups = []; + + while {true} do { + + // Find empty groups + { + if (count units _x <= 0) then { + _emptyGroups set [count _emptyGroups, _x]; + }; + } foreach allGroups; + + if (_debug) then { + sleep 1; + } + else { + sleep 10; + }; + + // Delete empty groups if they are still empty + _groupsToDelete = []; + { + if (count units _x <= 0) then { + _groupsToDelete set [count _groupsToDelete, _x]; + }; + } foreach _emptyGroups; + + _emptyGroups = _emptyGroups - _groupsToDelete; + + // Delete the groups + { + if (_debug) then { + ["Group '" + str _x + "' garbage collected."] call drn_fnc_CL_ShowDebugTextAllClients; + }; + + deleteGroup _x; + } foreach _groupsToDelete; + + // Delete units that are far away + _unitsToDelete = []; + { + private ["_unit", "_farAway"]; + + _unit = _x; + _farAway = true; + + { + if (_x distance _unit < _cleanUpDistance) then { + _farAway = false; + }; + } foreach units _referenceGroup; + + if (_farAway) then { + _unitsToDelete set [count _unitsToDelete, _unit]; + }; + } foreach drn_var_CL_GarbageCollectorUnits; + + drn_var_CL_GarbageCollectorUnits = drn_var_CL_GarbageCollectorUnits - _unitsToDelete; + + { + private ["_group"]; + + _group = group _x; + + if (_debug) then { + ["Unit '" + str _x + "' garbage collected."] call drn_fnc_CL_ShowDebugTextAllClients; + }; + deleteVehicle _x; + + if (str _group != "") then { + if (count units _group == 0) then { + if (_debug) then { + ["Group '" + str _group + "' garbage collected."] call drn_fnc_CL_ShowDebugTextAllClients; + }; + + deleteGroup _group; + }; + }; + } foreach _unitsToDelete; + }; +}; + +/******************************************************************************************/ +// Debug stuff + +drn_CL_DebugTextEventArgs = []; // Empty +drn_CL_DebugMarkerEventArgs = []; // [name, position, size, direction, shape ("RECTANGLE" or "ELLIPSE"), markerColor, markerText (optional)] or alternatively [name, position, type, markerColor (optional), markerText (optional)] +drn_CL_DeleteDebugMarkerEventArgs = []; // [name] + +"drn_CL_DebugTextEventArgs" addPublicVariableEventHandler { + drn_CL_DebugTextEventArgs call drn_fnc_CL_ShowDebugTextLocal; +}; + +"drn_CL_DebugMarkerEventArgs" addPublicVariableEventHandler { + drn_CL_DebugMarkerEventArgs call drn_fnc_CL_SetDebugMarkerLocal; +}; + +"drn_CL_DeleteDebugMarkerEventArgs" addPublicVariableEventHandler { + drn_CL_DeleteDebugMarkerEventArgs call drn_fnc_CL_DeleteDebugMarkerLocal; +}; + +/* + * Summary: Shows debug text on local client. + * Remarks: + * if global variable "drn_var_CL_SilentDebugMode" is set to true, debug text will only be written to RTF-file and not shown on screen. + * Arguments: + * _text: Debug text. + */ +drn_fnc_CL_ShowDebugTextLocal = { + private ["_minutes", "_seconds"]; + + if (!isNull player) then { + if (!drn_var_CL_SilentDebugMode) then { + player sideChat (_this select 0); + }; + }; + + _minutes = floor (time / 60); + _seconds = floor (time - (_minutes * 60)); + diag_log ((str _minutes + ":" + str _seconds) + " Debug: " + (_this select 0)); +}; + +/* + * Summary: Shows debug text on all clients. + * Remarks: + * if global variable "drn_var_CL_SilentDebugMode" is set to true, debug text will only be written to RTF-file and not shown on screen. + * Arguments: + * _text: Debug text. + */ +drn_fnc_CL_ShowDebugTextAllClients = { + drn_CL_DebugTextEventArgs = _this; + publicVariable "drn_CL_DebugTextEventArgs"; + drn_CL_DebugTextEventArgs call drn_fnc_CL_ShowDebugTextLocal; +}; + +/* + * Summary: Shows debug marker on local client. + * Remarks: + * if global variable "drn_var_CL_SilentDebugMode" is set to true, debug marker will not shown. + * Arguments alternative #1 (Marker representing an area): + * _markerName: Marker's name. (must be global unique). + * _position: Marker's position. + * _size: Marker's size on array format [x, y]. + * _direction: Marker's direction. + * _shape: "RECTANGLE" or "ELLIPSE". + * _markerColor: Marker's color ("Default", "ColorRed", "ColorYellow" etc.). + * [_markerText]: Optional. Marker's text. + * Arguments alternative #2 (Marker representing an icon). + * _markerName: Marker's name. (must be global unique). + * _position: Marker's position. + * _type: Markers icon type (applies to icons in cfgIcons, like "Warning", "Dot" etc.). + * [_markerColor]: Optional. Marker's color ("Default", "ColorRed", "ColorYellow" etc.). + * [_markerText]. Optional. Marker's text. + */ +drn_fnc_CL_SetDebugMarkerLocal = { + private ["_markerName", "_position", "_size", "_direction", "_type", "_shape", "_markerColor", "_markerText"]; + private ["_marker"]; + + if (!isNull player) then { + if (!drn_var_CL_SilentDebugMode) then { + _markerName = _this select 0; + _position = _this select 1; + _markerColor = "Default"; + _markerText = ""; + + if (count _this == 6) then { + _size = _this select 2; + _direction = _this select 3; + _shape = _this select 4; + _markerColor = _this select 5; + }; + if (count _this == 7) then { + _size = _this select 2; + _direction = _this select 3; + _shape = _this select 4; + _markerColor = _this select 5; + _markerText = _this select 6; + }; + if (count _this == 3) then { + _type = _this select 2; + _shape = "ICON"; + }; + if (count _this == 4) then { + _type = _this select 2; + _shape = "ICON"; + _markerColor = _this select 3; + }; + if (count _this == 5) then { + _type = _this select 2; + _shape = "ICON"; + _markerColor = _this select 3; + _markerText = _this select 4; + }; + + // Delete old marker + if ([_markerName] call drn_fnc_CL_MarkerExists) then { + deleteMarkerLocal _markerName; + }; + + // Set new marker + _marker = createMarkerLocal [_markerName, _position]; + _marker setMarkerShapeLocal _shape; + _marker setMarkerColorLocal _markerColor; + _marker setMarkerTextLocal _markerText; + + if (count _this == 6 || count _this == 7) then { + _marker setMarkerSizeLocal _size; + _marker setMarkerDirLocal _direction; + }; + if (count _this == 3 || count _this == 4 || count _this == 5) then { + _marker setMarkerTypeLocal _type; + }; + }; + }; +}; + +/* + * Summary: Shows debug marker on all clients. + * Remarks: + * if global variable "drn_var_CL_SilentDebugMode" is set to true, debug marker will not shown. + * Arguments alternative #1 (Marker representing an area): + * _markerName: Marker's name. (must be global unique). + * _position: Marker's position. + * _size: Marker's size on array format [x, y]. + * _direction: Marker's direction. + * _shape: "RECTANGLE" or "ELLIPSE". + * _markerColor: Marker's color ("Default", "ColorRed", "ColorYellow" etc.). + * [_markerText]: Optional. Marker's text. + * Arguments alternative #2 (Marker representing an icon). + * _markerName: Marker's name. (must be global unique). + * _position: Marker's position. + * _type: Markers icon type (applies to icons in cfgIcons, like "Warning", "Dot" etc.). + * [_markerColor]: Optional. Marker's color ("Default", "ColorRed", "ColorYellow" etc.). + * [_markerText]. Optional. Marker's text. + */ +drn_fnc_CL_SetDebugMarkerAllClients = { + drn_CL_DebugMarkerEventArgs = _this; + publicVariable "drn_CL_DebugMarkerEventArgs"; + drn_CL_DebugMarkerEventArgs call drn_fnc_CL_SetDebugMarkerLocal; +}; + +/* + * Summary: Deletes a debug marker on local client. + * Arguments: + * _markerName: Name of marker to delete. + */ +drn_fnc_CL_DeleteDebugMarkerLocal = { + private ["_markerName"]; + _markerName = _this select 0; + deleteMarkerLocal _markerName; +}; + +/* + * Summary: Deletes a debug marker on all clients. + * Arguments: + * _markerName: Name of marker to delete. + */ +drn_fnc_CL_DeleteDebugMarkerAllClients = { + drn_CL_DeleteDebugMarkerEventArgs = _this; + publicVariable "drn_CL_DeleteDebugMarkerEventArgs"; + drn_CL_DeleteDebugMarkerEventArgs call drn_fnc_CL_DeleteDebugMarkerLocal; +}; + +drn_var_CL_CommonLibVersion = 1.04; +drn_var_commonLibInitialized = true; + diff --git a/Islands/Lybor/CommunicationCenterMarkers.sqf b/Islands/Lybor/CommunicationCenterMarkers.sqf new file mode 100644 index 00000000..9ba0f62d --- /dev/null +++ b/Islands/Lybor/CommunicationCenterMarkers.sqf @@ -0,0 +1,26 @@ +a3e_communicationCenterMarkers = []; +a3e_communicationCenterMarkers set [0, [[950.619,2255.03,0], 57.9555]]; +a3e_communicationCenterMarkers set [1, [[2035.42,2358.05,0], 165.159]]; +a3e_communicationCenterMarkers set [2, [[1842.6,2595.36,0], 245.74]]; +a3e_communicationCenterMarkers set [3, [[1786.05,2991.16,0], 246.865]]; +a3e_communicationCenterMarkers set [4, [[2616.08,3544.16,0], 48.0009]]; +a3e_communicationCenterMarkers set [5, [[2546.94,3680.84,0], 179.931]]; +a3e_communicationCenterMarkers set [6, [[3410.26,3721.38,0], 180.363]]; +a3e_communicationCenterMarkers set [7, [[2067.09,2948.71,0], 89.4776]]; +a3e_communicationCenterMarkers set [8, [[2590.97,522.956,0], 244.407]]; +a3e_communicationCenterMarkers set [9, [[1600.17,1361.67,0], 347.395]]; +a3e_communicationCenterMarkers set [10, [[889.641,1281.98,0], 37.4664]]; +a3e_communicationCenterMarkers set [11, [[1155.05,3659.03,0], 186.447]]; +a3e_communicationCenterMarkers set [12, [[1840.49,5440.43,0], 262.169]]; +a3e_communicationCenterMarkers set [13, [[3890.79,4613.79,0], 220.366]]; +a3e_communicationCenterMarkers set [14, [[3898.06,5590.14,0], 92.0301]]; +a3e_communicationCenterMarkers set [15, [[5097.55,3846.49,0], 36.5085]]; +a3e_communicationCenterMarkers set [16, [[4696.52,3548.05,0], 28.5881]]; +a3e_communicationCenterMarkers set [17, [[5701.32,4098.13,0], 0]]; +a3e_communicationCenterMarkers set [18, [[4996.53,833.321,0], 297.596]]; +a3e_communicationCenterMarkers set [19, [[3565.55,1155.98,0], 79.1754]]; +a3e_communicationCenterMarkers set [20, [[3164.59,2956.09,0], 91.3506]]; +a3e_communicationCenterMarkers set [21, [[3752.73,2123.14,0], 317.332]]; +a3e_communicationCenterMarkers set [22, [[4174.72,3373.86,0], 107.816]]; +a3e_communicationCenterMarkers set [23, [[5467.22,3871.87,0], 244.502]]; +a3e_communicationCenterMarkers set [24, [[1420.97,4520.96,0], 16.6516]]; \ No newline at end of file diff --git a/Islands/Lybor/PatrolBoatMarkers.sqf b/Islands/Lybor/PatrolBoatMarkers.sqf new file mode 100644 index 00000000..cbb6e493 --- /dev/null +++ b/Islands/Lybor/PatrolBoatMarkers.sqf @@ -0,0 +1,3 @@ +a3e_patrolBoatMarkers = []; +a3e_patrolBoatMarkers set [0, [[881.115,1814.15,0], 316.118, "ELLIPSE", [1214.64,210.949]]]; +a3e_patrolBoatMarkers set [1, [[1992.86,3234.09,0], 4.30389, "ELLIPSE", [434.306,46.1553]]]; \ No newline at end of file diff --git a/Islands/Lybor/VillageMarkers.sqf b/Islands/Lybor/VillageMarkers.sqf new file mode 100644 index 00000000..292ed684 --- /dev/null +++ b/Islands/Lybor/VillageMarkers.sqf @@ -0,0 +1,85 @@ +a3e_villageMarkers = []; +a3e_villageMarkers set [0, [[212.07,1747.21,0], 0, "ELLIPSE", [21.9437,17.9993], "ColorBlue"]]; +a3e_villageMarkers set [1, [[416.498,1973.01,0], 335.318, "ELLIPSE", [240.716,45.1722], "ColorBlue"]]; +a3e_villageMarkers set [2, [[825.315,2199.44,0], 37.0466, "ELLIPSE", [75.5616,173.431], "ColorBlue"]]; +a3e_villageMarkers set [3, [[1326.24,2610.38,0], 39.4849, "ELLIPSE", [52.7189,180.177], "ColorBlue"]]; +a3e_villageMarkers set [4, [[1771.42,2889.73,0], 344.998, "ELLIPSE", [84.3966,270.047], "ColorBlue"]]; +a3e_villageMarkers set [5, [[1549.37,3018.06,0], 350.405, "RECTANGLE", [18.7609,19.5557], "ColorBlue"]]; +a3e_villageMarkers set [6, [[2176.55,3381.57,0], 0, "ELLIPSE", [100,100], "ColorBlue"]]; +a3e_villageMarkers set [7, [[2270.8,3148.25,0], 356.979, "RECTANGLE", [149.232,21.322], "ColorBlue"]]; +a3e_villageMarkers set [8, [[2526.51,2421.39,0], 317.193, "ELLIPSE", [81.2749,56.4641], "ColorBlue"]]; +a3e_villageMarkers set [9, [[1614.02,190.203,0], 23.5995, "ELLIPSE", [20.362,36.6539], "ColorBlue"]]; +a3e_villageMarkers set [10, [[2392.33,627.324,0], 18.0741, "ELLIPSE", [38.1611,52.8589], "ColorBlue"]]; +a3e_villageMarkers set [11, [[5156.05,586.528,0], 38.9528, "ELLIPSE", [19.7612,34.5345], "ColorBlue"]]; +a3e_villageMarkers set [12, [[6067.46,1307.62,0], 316.851, "RECTANGLE", [30.0959,26.7928], "ColorBlue"]]; +a3e_villageMarkers set [13, [[6021.94,1872.35,0], 58.9662, "ELLIPSE", [59.5324,32.6363], "ColorBlue"]]; +a3e_villageMarkers set [14, [[5369.06,2543.87,0], 21.0699, "ELLIPSE", [49.554,26.3031], "ColorBlue"]]; +a3e_villageMarkers set [15, [[5220.31,2605.99,0], 341.249, "ELLIPSE", [38.5515,62.425], "ColorBlue"]]; +a3e_villageMarkers set [16, [[5405.95,2678.38,0], 29.8053, "ELLIPSE", [96.6785,28.1715], "ColorBlue"]]; +a3e_villageMarkers set [17, [[5947.19,2521.8,0], 52.6452, "ELLIPSE", [53.083,152.185], "ColorBlue"]]; +a3e_villageMarkers set [18, [[4748.88,2738.45,0], 55.6408, "RECTANGLE", [11.3626,18.5535], "ColorBlue"]]; +a3e_villageMarkers set [19, [[4574.85,3146.04,0], 35.9167, "RECTANGLE", [391.088,51.7306], "ColorBlue"]]; +a3e_villageMarkers set [20, [[4230.46,3021.27,0], 0, "RECTANGLE", [96.9587,42.0657], "ColorBlue"]]; +a3e_villageMarkers set [21, [[3640.69,2867.64,0], 0, "ELLIPSE", [30.4337,16.8794], "ColorBlue"]]; +a3e_villageMarkers set [22, [[3253.17,2991.71,0], 0, "RECTANGLE", [75.9946,84.6498], "ColorBlue"]]; +a3e_villageMarkers set [23, [[2823.2,3399.37,0], 312.657, "ELLIPSE", [98.6437,29.6267], "ColorBlue"]]; +a3e_villageMarkers set [24, [[2559.69,3536.28,0], 320.571, "RECTANGLE", [178.717,105.108], "ColorBlue"]]; +a3e_villageMarkers set [25, [[2012.74,3672.31,0], 324.633, "ELLIPSE", [12.5355,20.9695], "ColorBlue"]]; +a3e_villageMarkers set [26, [[2308.42,3630.48,0], 25.4544, "ELLIPSE", [20.0587,30.0043], "ColorBlue"]]; +a3e_villageMarkers set [27, [[2399.3,3955.62,0], 344.515, "ELLIPSE", [18.7117,28.1238], "ColorBlue"]]; +a3e_villageMarkers set [28, [[2705,4161.14,0], 353.978, "ELLIPSE", [16.9761,28.4498], "ColorBlue"]]; +a3e_villageMarkers set [29, [[3258,4173.73,0], 70.7769, "ELLIPSE", [24.2586,13.194], "ColorBlue"]]; +a3e_villageMarkers set [30, [[3540.04,4073.1,0], 3.57149, "ELLIPSE", [27.5227,17.3779], "ColorBlue"]]; +a3e_villageMarkers set [31, [[3878.53,4329.3,0], 0, "RECTANGLE", [14.4623,14.4543], "ColorBlue"]]; +a3e_villageMarkers set [32, [[4232.94,4163.81,0], 316.425, "ELLIPSE", [35.4111,20.0498], "ColorBlue"]]; +a3e_villageMarkers set [33, [[3657.99,4611.03,0], 1.47073, "RECTANGLE", [14.4869,14.5005], "ColorBlue"]]; +a3e_villageMarkers set [34, [[4555.02,4269.12,0], 0, "ELLIPSE", [38.8096,44.033], "ColorBlue"]]; +a3e_villageMarkers set [35, [[4514.18,4442.82,0], 38.5285, "RECTANGLE", [34.0117,14.5618], "ColorBlue"]]; +a3e_villageMarkers set [36, [[4871.87,4218.86,0], 334.949, "ELLIPSE", [25.5269,38.0635], "ColorBlue"]]; +a3e_villageMarkers set [37, [[5990.76,4282.72,0], 342.377, "ELLIPSE", [57.7903,147.396], "ColorBlue"]]; +a3e_villageMarkers set [38, [[5585.24,4133.67,0], 27.6235, "ELLIPSE", [53.6403,42.1688], "ColorBlue"]]; +a3e_villageMarkers set [39, [[5856.64,3825.01,0], 325.861, "ELLIPSE", [95.8849,43.8508], "ColorBlue"]]; +a3e_villageMarkers set [40, [[4926.54,3890.59,0], 11.7152, "RECTANGLE", [48.486,48.7079], "ColorBlue"]]; +a3e_villageMarkers set [41, [[4673.72,3552.46,0], 28.4163, "ELLIPSE", [225.419,32.5808], "ColorBlue"]]; +a3e_villageMarkers set [42, [[3909.49,3833.97,0], 332.043, "ELLIPSE", [152.791,71.9204], "ColorBlue"]]; +a3e_villageMarkers set [43, [[3346.3,3867.53,0], 0, "RECTANGLE", [167.096,100], "ColorBlue"]]; +a3e_villageMarkers set [44, [[2852.19,3691.47,0], 25.4919, "ELLIPSE", [55.1739,121.629], "ColorBlue"]]; +a3e_villageMarkers set [45, [[3310.19,3242.73,0], 0, "ELLIPSE", [29.9907,19.7454], "ColorBlue"]]; +a3e_villageMarkers set [46, [[3459.27,3269.85,0], 306.201, "ELLIPSE", [25.6267,36.8209], "ColorBlue"]]; +a3e_villageMarkers set [47, [[3541.36,3352.11,0], 332.897, "ELLIPSE", [21.5541,32.4376], "ColorBlue"]]; +a3e_villageMarkers set [48, [[3847.98,3605.32,0], 51.955, "ELLIPSE", [38.2695,62.6067], "ColorBlue"]]; +a3e_villageMarkers set [49, [[4131.23,3535.8,0], 343.558, "RECTANGLE", [34.2915,23.237], "ColorBlue"]]; +a3e_villageMarkers set [50, [[4225.15,3658.8,0], 31.8435, "RECTANGLE", [57.501,16.14], "ColorBlue"]]; +a3e_villageMarkers set [51, [[4799.42,3209.34,0], 34.4694, "ELLIPSE", [199.504,48.3077], "ColorBlue"]]; +a3e_villageMarkers set [52, [[1814.95,5396.41,0], 352.895, "RECTANGLE", [14.1874,61.9722], "ColorBlue"]]; +a3e_villageMarkers set [53, [[895.928,4429.44,0], 0, "ELLIPSE", [3.06024,2.7478], "ColorBlue"]]; +a3e_villageMarkers set [54, [[3452.78,5617.43,0], 325.86, "ELLIPSE", [35.1925,23.46], "ColorBlue"]]; +a3e_villageMarkers set [55, [[5026.17,5173.18,0], 0, "ELLIPSE", [3.01416,3.0481], "ColorBlue"]]; +a3e_villageMarkers set [56, [[5932.62,4769.76,0], 33.4843, "ELLIPSE", [13.5935,22.751], "ColorBlue"]]; +a3e_villageMarkers set [57, [[5896.17,4513.94,0], 334.649, "ELLIPSE", [23.6235,48.5088], "ColorBlue"]]; +a3e_villageMarkers set [58, [[4249.02,4488.9,0], 317.113, "ELLIPSE", [21.4976,55.9358], "ColorBlue"]]; +a3e_villageMarkers set [59, [[4087.91,4530.96,0], 348.758, "ELLIPSE", [32.0935,19.5571], "ColorBlue"]]; +a3e_villageMarkers set [60, [[666.661,2243.41,0], 0, "ELLIPSE", [36.4174,31.9272], "ColorBlue"]]; +a3e_villageMarkers set [61, [[3642.34,2990.67,0], 0, "ELLIPSE", [35.3326,27.6575], "ColorBlue"]]; +a3e_villageMarkers set [62, [[3643.81,3087.67,0], 0, "ELLIPSE", [37.4553,19.4926], "ColorBlue"]]; +a3e_villageMarkers set [63, [[5910.8,1904.41,0], 0, "ELLIPSE", [29.9907,30.1191], "ColorBlue"]]; +a3e_villageMarkers set [64, [[1834.27,5438.33,0], 356.345, "RECTANGLE", [37.2808,23.2106], "ColorBlue"]]; +a3e_villageMarkers set [65, [[3919.51,5575.21,0], 285.616, "ELLIPSE", [25.7902,48.0966], "ColorBlue"]]; +a3e_villageMarkers set [66, [[5941.51,3939.62,0], 12.6922, "ELLIPSE", [23.9192,61.8647], "ColorBlue"]]; +a3e_villageMarkers set [67, [[4913.33,3464.65,0], 58.1399, "ELLIPSE", [74.2405,60.9817], "ColorBlue"]]; +a3e_villageMarkers set [68, [[3800.4,3896.07,0], 357.527, "RECTANGLE", [123.378,70.6383], "ColorBlue"]]; +a3e_villageMarkers set [69, [[4254.95,3928.84,0], 339.747, "RECTANGLE", [17.0294,10.1482], "ColorBlue"]]; +a3e_villageMarkers set [70, [[1918.12,3355.95,0], 0, "RECTANGLE", [14.9364,16.9191], "ColorBlue"]]; +a3e_villageMarkers set [71, [[2474.14,3735.12,0], 352.374, "ELLIPSE", [56.9595,36.9272], "ColorBlue"]]; +a3e_villageMarkers set [72, [[5040.03,2788.42,0], 20.847, "ELLIPSE", [27.0216,43.2694], "ColorBlue"]]; +a3e_villageMarkers set [73, [[3332.94,3714.26,0], 0, "ELLIPSE", [24.285,18.8582], "ColorBlue"]]; +a3e_villageMarkers set [74, [[3104.08,3746.02,0], 298.529, "ELLIPSE", [40.6419,66.8847], "ColorBlue"]]; +a3e_villageMarkers set [75, [[3573.19,1236.91,0], 0, "ELLIPSE", [5.71021,4.97119], "ColorBlue"]]; +a3e_villageMarkers set [76, [[3299.84,1989.12,0], 33.606, "RECTANGLE", [10.6086,10.619], "ColorBlue"]]; +a3e_villageMarkers set [77, [[3838.07,1029.94,0], 0, "ELLIPSE", [0.639648,0.677917], "ColorBlue"]]; +a3e_villageMarkers set [78, [[4372.47,3572.34,0], 32.9594, "RECTANGLE", [13.5475,9.71566], "ColorBlue"]]; +a3e_villageMarkers set [79, [[4531.71,3408.62,0], 32.9515, "RECTANGLE", [61.1229,22.7393], "ColorBlue"]]; +a3e_villageMarkers set [80, [[4835.27,3277.38,0], 32.3881, "RECTANGLE", [19.4585,12.3636], "ColorBlue"]]; +a3e_villageMarkers set [81, [[5027.11,3080.64,0], 30.1048, "RECTANGLE", [24.6632,13.2646], "ColorBlue"]]; +a3e_villageMarkers set [82, [[5033,2988.8,0], 122.158, "RECTANGLE", [27.1437,16.3403], "ColorBlue"]]; +a3e_villageMarkers set [83, [[5159.26,2879.55,0], 30.1048, "RECTANGLE", [35.1551,22.6615], "ColorBlue"]]; \ No newline at end of file diff --git a/Islands/Lybor/WorldConfig.sqf b/Islands/Lybor/WorldConfig.sqf new file mode 100644 index 00000000..4998517b --- /dev/null +++ b/Islands/Lybor/WorldConfig.sqf @@ -0,0 +1,7 @@ +A3E_MinComCenterDistance = 2200; +A3E_WorldName = "Lybor"; +A3E_ComCenterCount = 4; +A3E_AmmoDepotCount = 6; +A3E_CrashSiteCountMax = 3; +A3E_MortarSiteCountMax = 6; +A3E_MortarSiteCountMin = 2; diff --git a/Missions/Lybor/mission.sqm b/Missions/Lybor/mission.sqm new file mode 100644 index 00000000..065dcd94 --- /dev/null +++ b/Missions/Lybor/mission.sqm @@ -0,0 +1,1243 @@ +version=54; +class EditorData +{ + moveGridStep=1; + angleGridStep=0.2617994; + scaleGridStep=1; + autoGroupingDist=10; + toggles=1537; + class ItemIDProvider + { + nextID=184; + }; + class Camera + { + pos[]={147.37778,463.54916,5012.2363}; + dir[]={-0.5768283,-0.39824665,0.71321017}; + up[]={-0.25043646,0.91727835,0.30964816}; + aside[]={0.77752858,0,0.6288476}; + }; +}; +binarizationWanted=0; +sourceName="co10_Escape"; +addons[]= +{ + {* REQUIRE *} + "A3_Ui_F", + "A3_Modules_F", + "A3_Characters_F", + "A3_Boat_F_Boat_Transport_01", + "A3_Boat_F_Gamma_Boat_Civil_01", + "A3_Boat_F_Exp_Boat_Transport_02" +}; +class AddonsMetaData +{ + class List + { + items=6; + class Item0 + { + className="A3_Ui_F"; + name="Arma 3 - User Interface"; + author="Bohemia Interactive"; + url="https://www.arma3.com"; + }; + class Item1 + { + className="A3_Modules_F"; + name="Arma 3 Alpha - Scripted Modules"; + author="Bohemia Interactive"; + url="https://www.arma3.com"; + }; + class Item2 + { + className="A3_Characters_F"; + name="Arma 3 Alpha - Characters and Clothing"; + author="Bohemia Interactive"; + url="https://www.arma3.com"; + }; + class Item3 + { + className="A3_Boat_F"; + name="Arma 3 Alpha - Boats and Submersibles"; + author="Bohemia Interactive"; + url="https://www.arma3.com"; + }; + class Item4 + { + className="A3_Boat_F_Gamma"; + name="Arma 3 - Boats and Submersibles"; + author="Bohemia Interactive"; + url="https://www.arma3.com"; + }; + class Item5 + { + className="A3_Boat_F_Exp"; + name="Arma 3 Apex - Boats and Submersibles"; + author="Bohemia Interactive"; + url="https://www.arma3.com"; + }; + }; +}; +dlcs[]= +{ + "Expansion" +}; +randomSeed=14355827; +class ScenarioData +{ + author="Cpt. P.Star and Scruffy"; +}; +class Mission +{ + class Intel + { + briefingName="{* MISSION *} {* ISLANDNAME *} {* MOD *} {* VERSION *}"; + timeOfChanges=1800.0002; + startWeather=0.36000001; + startFog=0.059999999; + startWind=0.23999999; + startWindDir=90; + startWaves=0.1; + startGust=0.56; + forecastWeather=0.36000001; + forecastFog=0.059999999; + forecastWind=0.23999999; + forecastWaves=0.1; + forecastLightnings=0.1; + forecastGust=0.56; + forecastWindDir=90; + wavesForced=1; + windForced=1; + year=2023; + month=6; + day=23; + minute=0; + startFogDecay=0.014; + forecastFogDecay=0.014; + }; + class Entities + { + items=79; + class Item0 + { + dataType="Marker"; + position[]={2990.4543,271.09875,2992.6301}; + name="center"; + type="Empty"; + colorName="ColorGreen"; + id=2; + atlOffset=204.82913; + }; + class Item1 + { + dataType="Marker"; + position[]={3098.3669,211.76495,3014.3398}; + name="drn_insurgentAirfieldMarker"; + type="Empty"; + id=3; + atlOffset=144.91174; + }; + class Item2 + { + dataType="Marker"; + position[]={3268.6062,225.36253,3037.1619}; + name="drn_searchChopperStartPosMarker"; + type="Empty"; + id=4; + atlOffset=158.4276; + }; + class Item3 + { + dataType="Marker"; + position[]={3281.5537,216.87828,2996.3147}; + name="drn_dropChopperStartPosMarker"; + type="Empty"; + id=5; + atlOffset=149.67828; + }; + class Item4 + { + dataType="Marker"; + position[]={3564.1499,812.60101,1215.405}; + name="A3E_HeliExtractionPos4"; + type="Empty"; + colorName="ColorPink"; + angle=224.89098; + id=12; + atlOffset=318.16656; + }; + class Item5 + { + dataType="Marker"; + position[]={3573.5549,805.09003,1145.4659}; + name="A3E_HeliExtractionPos4_1"; + type="Empty"; + colorName="ColorPink"; + angle=232.60695; + id=13; + atlOffset=310.71078; + }; + class Item6 + { + dataType="Marker"; + position[]={4713.208,80.861,3531.7671}; + name="A3E_HeliExtractionPos2_1"; + type="Empty"; + colorName="ColorPink"; + angle=357.54092; + id=16; + atlOffset=6.1035156e-005; + }; + class Item7 + { + dataType="Marker"; + position[]={4680.9028,80.714996,3545.843}; + name="A3E_HeliExtractionPos2"; + type="Empty"; + colorName="ColorPink"; + angle=4.395; + id=17; + atlOffset=-3.0517578e-005; + }; + class Item8 + { + dataType="Marker"; + position[]={2036.494,259.03,5056.6631}; + name="A3E_HeliExtractionPos1"; + type="Empty"; + colorName="ColorPink"; + id=19; + atlOffset=0.00015258789; + }; + class Item9 + { + dataType="Marker"; + position[]={1961.5861,253.075,5111.3291}; + name="A3E_HeliExtractionPos1_1"; + type="Empty"; + colorName="ColorPink"; + id=20; + atlOffset=0.00018310547; + }; + class Item10 + { + dataType="Logic"; + class PositionInfo + { + position[]={3007.0227,65.776428,2985.7053}; + angles[]={6.2033567,0,0}; + }; + name="server"; + id=24; + type="Logic"; + }; + class Item11 + { + dataType="Trigger"; + position[]={1997.4465,253.91985,5082.3594}; + class Attributes + { + }; + id=39; + type="EmptyDetectorAreaR50"; + }; + class Item12 + { + dataType="Trigger"; + position[]={4698.4189,80.756493,3541.3506}; + class Attributes + { + }; + id=40; + type="EmptyDetectorAreaR50"; + }; + class Item13 + { + dataType="Trigger"; + position[]={3568.084,495.16403,1179.683}; + angle=0.54298937; + class Attributes + { + }; + id=42; + type="EmptyDetectorAreaR50"; + }; + class Item14 + { + dataType="Marker"; + position[]={3075.6179,599.30798,3088.5942}; + name="A3E_ExclusionZone"; + markerType="RECTANGLE"; + type="ellipse"; + colorName="ColorRed"; + fillName="DiagGrid"; + a=472.53912; + b=214.32715; + id=70; + atlOffset=542.75177; + }; + class Item15 + { + dataType="Logic"; + class PositionInfo + { + position[]={2993.1194,66.346725,2993.9456}; + angles[]={6.2232571,0,0}; + }; + name="center"; + id=25; + type="Logic"; + atlOffset=-7.6293945e-006; + }; + class Item16 + { + dataType="Marker"; + position[]={34.488388,9.6856499,1586.9619}; + name="TrafficMarker_West"; + type="Empty"; + colorName="ColorCIV"; + id=101; + atlOffset=7.9411902; + }; + class Item17 + { + dataType="Marker"; + position[]={6093.9194,16.00359,2559.9475}; + name="TrafficMarker_East"; + type="Empty"; + colorName="ColorCIV"; + id=102; + }; + class Item18 + { + dataType="Marker"; + position[]={3575.7854,492.73486,6115.1382}; + name="TrafficMarker_North"; + type="Empty"; + colorName="ColorCIV"; + id=103; + atlOffset=6.4130554; + }; + class Item19 + { + dataType="Marker"; + position[]={6114.6938,96.992859,5285.1455}; + name="TrafficMarker_NorthEast"; + type="Empty"; + colorName="ColorCIV"; + id=104; + atlOffset=39.543209; + }; + class Item20 + { + dataType="Marker"; + position[]={15.63583,456.55533,5000.9819}; + name="TrafficMarker_NorthWest"; + type="Empty"; + colorName="ColorCIV"; + id=105; + atlOffset=51.119537; + }; + class Item21 + { + dataType="Marker"; + position[]={3379.0464,522.83667,23.384766}; + name="TrafficMarker_South"; + type="Empty"; + colorName="ColorCIV"; + id=106; + atlOffset=156.03397; + }; + class Item22 + { + dataType="Marker"; + position[]={5370.3076,337.63165,19.320923}; + name="TrafficMarker_SouthEast"; + type="Empty"; + colorName="ColorCIV"; + id=107; + }; + class Item23 + { + dataType="Marker"; + position[]={20.412857,100.20846,449.75464}; + name="TrafficMarker_SouthWest"; + type="Empty"; + colorName="ColorCIV"; + id=108; + }; + class Item24 + { + dataType="Logic"; + class PositionInfo + { + position[]={5963.4019,300.87018,5786.0859}; + }; + name="NorthEast"; + description="limits used area of the map, together with SouthWest logic"; + id=109; + type="Logic"; + }; + class Item25 + { + dataType="Logic"; + class PositionInfo + { + position[]={255.76601,221.08617,212.267}; + }; + name="SouthWest"; + description="limits used area of the map, together with NorthEast logic"; + id=110; + type="Logic"; + }; + class Item26 + { + dataType="Group"; + side="{* PLAYERSIDE *}"; + class Entities + { + items=10; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={97.240005,450.24161,6016.1196}; + angles[]={6.2332296,0,6.2000442}; + }; + side="{* PLAYERSIDE *}"; + flags=6; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + init="{* PLAYER_INIT *}"; + name="p1"; + isPlayer=1; + isPlayable=1; + }; + id=112; + type="{* PLAYERUNIT_1 *}"; + }; + class Item1 + { + dataType="Object"; + class PositionInfo + { + position[]={95.357193,450.30676,6014.3267}; + angles[]={6.2332296,0,6.2033591}; + }; + side="{* PLAYERSIDE *}"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="LIEUTENANT"; + init="{* PLAYER_INIT *}"; + name="p4"; + isPlayable=1; + }; + id=113; + type="{* PLAYERUNIT_2 *}"; + atlOffset=3.0517578e-005; + }; + class Item2 + { + dataType="Object"; + class PositionInfo + { + position[]={94.650162,450.48611,6016.8735}; + angles[]={6.2332287,0,6.2066646}; + }; + side="{* PLAYERSIDE *}"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="LIEUTENANT"; + init="{* PLAYER_INIT *}"; + name="p2"; + isPlayable=1; + }; + id=114; + type="{* PLAYERUNIT_3 *}"; + }; + class Item3 + { + dataType="Object"; + class PositionInfo + { + position[]={94.564224,450.42761,6015.5063}; + angles[]={6.236547,0,6.2033582}; + }; + side="{* PLAYERSIDE *}"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="LIEUTENANT"; + init="{* PLAYER_INIT *}"; + name="p3"; + isPlayable=1; + }; + id=115; + type="{* PLAYERUNIT_4 *}"; + }; + class Item4 + { + dataType="Object"; + class PositionInfo + { + position[]={96.476334,450.17453,6013.5688}; + angles[]={6.2332287,0,6.1934204}; + }; + side="{* PLAYERSIDE *}"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="LIEUTENANT"; + init="{* PLAYER_INIT *}"; + name="p5"; + isPlayable=1; + }; + id=116; + type="{* PLAYERUNIT_5 *}"; + }; + class Item5 + { + dataType="Object"; + class PositionInfo + { + position[]={97.931412,450.04926,6013.6157}; + angles[]={6.2265739,0,6.2000446}; + }; + side="{* PLAYERSIDE *}"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="LIEUTENANT"; + init="{* PLAYER_INIT *}"; + name="p6"; + isPlayable=1; + }; + id=117; + type="{* PLAYERUNIT_6 *}"; + atlOffset=3.0517578e-005; + }; + class Item6 + { + dataType="Object"; + class PositionInfo + { + position[]={99.419693,449.93976,6013.9712}; + angles[]={6.2265754,0,6.1868148}; + }; + side="{* PLAYERSIDE *}"; + flags=4; + class Attributes + { + skill=0.59000003; + rank="LIEUTENANT"; + init="{* PLAYER_INIT *}"; + name="p7"; + isPlayable=1; + }; + id=118; + type="{* PLAYERUNIT_7 *}"; + }; + class Item7 + { + dataType="Object"; + class PositionInfo + { + position[]={100.46266,449.89059,6014.811}; + angles[]={6.223249,0,6.1901226}; + }; + side="{* PLAYERSIDE *}"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="LIEUTENANT"; + init="{* PLAYER_INIT *}"; + name="p8"; + isPlayable=1; + }; + id=119; + type="{* PLAYERUNIT_8 *}"; + }; + class Item8 + { + dataType="Object"; + class PositionInfo + { + position[]={101.28297,449.86917,6015.9048}; + angles[]={6.2299004,0,6.1967416}; + }; + side="{* PLAYERSIDE *}"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="LIEUTENANT"; + init="{* PLAYER_INIT *}"; + name="p9"; + isPlayable=1; + }; + id=120; + type="{* PLAYERUNIT_9 *}"; + }; + class Item9 + { + dataType="Object"; + class PositionInfo + { + position[]={101.90407,449.87326,6016.9907}; + angles[]={6.2299004,0,6.1967416}; + }; + side="{* PLAYERSIDE *}"; + flags=4; + class Attributes + { + skill=0.60000002; + rank="LIEUTENANT"; + init="{* PLAYER_INIT *}"; + name="p10"; + isPlayable=1; + }; + id=121; + type="{* PLAYERUNIT_10 *}"; + }; + }; + class Attributes + { + }; + id=111; + }; + class Item27 + { + dataType="Marker"; + position[]={3310.4504,133.55139,3034.3213}; + name="drn_russianSearchChopperStartPosMarker"; + type="Empty"; + id=122; + atlOffset=66.355797; + }; + class Item28 + { + dataType="Marker"; + position[]={6093.8096,347.58054,5889.8496}; + name="Boot_Hill"; + type="Empty"; + id=123; + atlOffset=69.674988; + }; + class Item29 + { + dataType="Marker"; + position[]={6081.9702,347.83698,5883.582}; + name="Respawn_east"; + type="Empty"; + colorName="ColorRed"; + id=124; + atlOffset=70.487518; + }; + class Item30 + { + dataType="Marker"; + position[]={75.278519,446.36972,6027.6362}; + name="Respawn_west"; + type="Empty"; + colorName="ColorBlue"; + id=125; + atlOffset=-5.8876953; + }; + class Item31 + { + dataType="Marker"; + position[]={6090.9863,158.10068,5245.9707}; + name="RoadBlockNullRoad"; + type="Empty"; + colorName="ColorRed"; + id=126; + atlOffset=101.93583; + }; + class Item32 + { + dataType="Marker"; + position[]={2367.6101,63.749001,2786.407}; + name="A3E_HeliExtractionPos3"; + type="Empty"; + colorName="ColorPink"; + id=127; + atlOffset=4.7546043; + }; + class Item33 + { + dataType="Marker"; + position[]={2379.415,64,2734.436}; + name="A3E_HeliExtractionPos3_1"; + type="Empty"; + colorName="ColorPink"; + id=128; + atlOffset=2.8398895; + }; + class Item34 + { + dataType="Marker"; + position[]={-665.492,2.079,1036.335}; + name="A3E_HeliExtractionSpawnPos3"; + type="Empty"; + colorName="ColorPink"; + angle=60.594997; + id=129; + atlOffset=7.168304; + }; + class Item35 + { + dataType="Marker"; + position[]={2062.021,201.722,7054.6768}; + name="A3E_HeliExtractionSpawnPos1"; + type="Empty"; + colorName="ColorPink"; + angle=186.98798; + id=130; + atlOffset=-0.00051879883; + }; + class Item36 + { + dataType="Trigger"; + position[]={2375.855,60.126404,2761.2771}; + angle=5.0078034; + class Attributes + { + }; + id=131; + type="EmptyDetectorAreaR50"; + }; + class Item37 + { + dataType="Marker"; + position[]={2117.6609,106.171,1985.636}; + name="A3E_HeliExtractionPos5"; + type="Empty"; + colorName="ColorPink"; + angle=286.92599; + id=132; + atlOffset=-0.00029754639; + }; + class Item38 + { + dataType="Marker"; + position[]={2086.9719,105.529,1946.3621}; + name="A3E_HeliExtractionPos5_1"; + type="Empty"; + colorName="ColorPink"; + angle=286.92599; + id=133; + atlOffset=-0.00040435791; + }; + class Item39 + { + dataType="Marker"; + position[]={3789.7629,457.73199,-828.98499}; + name="A3E_HeliExtractionSpawnPos5"; + type="Empty"; + colorName="ColorPink"; + angle=328.55295; + id=134; + atlOffset=0.00042724609; + }; + class Item40 + { + dataType="Trigger"; + position[]={2102.5967,106.18034,1968.1816}; + class Attributes + { + }; + id=135; + type="EmptyDetectorAreaR50"; + }; + class Item41 + { + dataType="Marker"; + position[]={7038.6348,95.060997,5183.6069}; + name="A3E_HeliExtractionSpawnPos2"; + type="Empty"; + colorName="ColorPink"; + angle=237.23595; + id=136; + atlOffset=-0.00016784668; + }; + class Item42 + { + dataType="Marker"; + position[]={3000.282,435.86499,-1497.358}; + name="A3E_HeliExtractionSpawnPos4"; + type="Empty"; + colorName="ColorPink"; + angle=12.242; + id=139; + atlOffset=110.08035; + }; + class Item43 + { + dataType="Marker"; + position[]={6023.6396,80.13031,4283.3491}; + name="A3E_CarExtractionPos1"; + type="Empty"; + colorName="ColorBrown"; + id=144; + atlOffset=42.063446; + }; + class Item44 + { + dataType="Marker"; + position[]={6027.437,119.4192,4324.2944}; + name="A3E_CarExtractionPos1_1"; + type="Empty"; + colorName="ColorBrown"; + id=145; + atlOffset=80.919113; + }; + class Item45 + { + dataType="Marker"; + position[]={5345.9849,12.32995,2550.0911}; + name="A3E_CarExtractionPos2"; + type="Empty"; + colorName="ColorBrown"; + id=146; + }; + class Item46 + { + dataType="Marker"; + position[]={5359.7598,12.107362,2547.8103}; + name="A3E_CarExtractionPos2_1"; + type="Empty"; + colorName="ColorBrown"; + id=147; + }; + class Item47 + { + dataType="Marker"; + position[]={6117.7178,17.855995,2107.207}; + name="A3E_CarExtractionSpawnPos2"; + type="Empty"; + colorName="ColorBrown"; + id=148; + }; + class Item48 + { + dataType="Marker"; + position[]={6095.0439,151.94873,5255.4473}; + name="A3E_CarExtractionSpawnPos1"; + type="Empty"; + colorName="ColorBrown"; + id=149; + atlOffset=94.9767; + }; + class Item49 + { + dataType="Marker"; + position[]={732.67664,4.1669745,2033.0037}; + name="A3E_BoatExtractionPos1_1"; + type="Empty"; + colorName="ColorBlue"; + id=150; + atlOffset=8.8530579; + }; + class Item50 + { + dataType="Marker"; + position[]={763.96539,21.762453,2023.7928}; + name="A3E_BoatExtractionPos1"; + type="Empty"; + colorName="ColorBlue"; + id=151; + atlOffset=26.745209; + }; + class Item51 + { + dataType="Marker"; + position[]={-964.46173,4.9038081,696.31543}; + name="A3E_BoatExtractionSpawnPos1"; + type="Empty"; + colorName="ColorBlue"; + id=152; + atlOffset=9.931263; + }; + class Item52 + { + dataType="Marker"; + position[]={1710.6329,26.049044,2788.0767}; + name="A3E_BoatExtractionPos2_1"; + type="Empty"; + colorName="ColorBlue"; + id=153; + atlOffset=31.049044; + }; + class Item53 + { + dataType="Marker"; + position[]={1698.368,47.066895,2817.3601}; + name="A3E_BoatExtractionPos2"; + type="Empty"; + colorName="ColorBlue"; + id=154; + atlOffset=52.066895; + }; + class Item54 + { + dataType="Marker"; + position[]={-357.81323,142.12793,1215.2467}; + name="A3E_BoatExtractionSpawnPos2"; + type="Empty"; + colorName="ColorBlue"; + id=155; + atlOffset=146.7973; + }; + class Item55 + { + dataType="Marker"; + position[]={4862.5454,17.52002,3015.3193}; + name="A3E_BoatExtractionPos3"; + type="Empty"; + colorName="ColorBlue"; + id=160; + atlOffset=22.52002; + }; + class Item56 + { + dataType="Marker"; + position[]={6121.9458,141.80371,2240.9028}; + name="A3E_BoatExtractionSpawnPos3"; + type="Empty"; + colorName="ColorBlue"; + id=161; + atlOffset=147.27361; + }; + class Item57 + { + dataType="Marker"; + position[]={4906.8853,17.52002,2977.1636}; + name="A3E_BoatExtractionPos3_1"; + type="Empty"; + colorName="ColorBlue"; + id=162; + atlOffset=22.52002; + }; + class Item58 + { + dataType="Object"; + class PositionInfo + { + position[]={4855.8389,1.2432523,3017.0569}; + angles[]={0,0.65704662,0}; + }; + side="Empty"; + class Attributes + { + presence=0.65755075; + }; + id=163; + type="C_Rubberboat"; + atlOffset=4.9619999; + }; + class Item59 + { + dataType="Object"; + class PositionInfo + { + position[]={4693.812,1.2970161,3222.583}; + angles[]={0,3.9635727,0}; + }; + side="Empty"; + class Attributes + { + presence=0.69412553; + }; + id=164; + type="C_Boat_Civil_01_F"; + atlOffset=5; + }; + class Item60 + { + dataType="Object"; + class PositionInfo + { + position[]={4319.978,1.2429857,3408.342}; + angles[]={0,3.5446415,0}; + }; + side="Empty"; + class Attributes + { + presence=0.47749236; + }; + id=165; + type="C_Rubberboat"; + atlOffset=1.675; + }; + class Item61 + { + dataType="Object"; + class PositionInfo + { + position[]={3945.229,1.2433276,3767.6689}; + }; + side="Empty"; + class Attributes + { + presence=0.48311919; + }; + id=166; + type="C_Rubberboat"; + atlOffset=0.82499999; + }; + class Item62 + { + dataType="Object"; + class PositionInfo + { + position[]={3347.9221,1.243682,3971.428}; + angles[]={0,2.4634275,0}; + }; + side="Empty"; + class Attributes + { + presence=0.57314837; + }; + id=167; + type="C_Rubberboat"; + atlOffset=1.197; + }; + class Item63 + { + dataType="Object"; + class PositionInfo + { + position[]={2833.823,1.2968802,3573.2019}; + angles[]={0,5.5021853,0}; + }; + side="Empty"; + class Attributes + { + presence=0.6772449; + }; + id=168; + type="C_Boat_Civil_01_F"; + atlOffset=4.8039999; + }; + class Item64 + { + dataType="Object"; + class PositionInfo + { + position[]={2820.5249,1.2430353,3463.585}; + angles[]={0,1.5674976,0}; + }; + side="Empty"; + class Attributes + { + presence=0.68568504; + }; + id=169; + type="C_Rubberboat"; + atlOffset=3.7709999; + }; + class Item65 + { + dataType="Object"; + class PositionInfo + { + position[]={2383.2629,1.2972255,3266.9241}; + angles[]={0,6.0624886,0}; + }; + side="Empty"; + class Attributes + { + presence=0.6322307; + }; + id=170; + type="C_Boat_Civil_01_F"; + atlOffset=4.8979998; + }; + class Item66 + { + dataType="Object"; + class PositionInfo + { + position[]={1681.379,1.3190708,2886.7971}; + angles[]={0,3.0978198,0}; + }; + side="Empty"; + class Attributes + { + presence=0.44373161; + }; + id=171; + type="C_Boat_Transport_02_F"; + atlOffset=5; + }; + class Item67 + { + dataType="Object"; + class PositionInfo + { + position[]={1689.874,1.2970161,2851.7971}; + angles[]={0,5.9654307,0}; + }; + side="Empty"; + class Attributes + { + presence=0.65192413; + }; + id=172; + type="C_Boat_Civil_01_F"; + atlOffset=5; + }; + class Item68 + { + dataType="Object"; + class PositionInfo + { + position[]={1534.634,1.2436836,2006.1071}; + angles[]={0,4.6994562,0}; + }; + side="Empty"; + class Attributes + { + presence=0.70537883; + }; + id=173; + type="C_Rubberboat"; + atlOffset=1.403; + }; + class Item69 + { + dataType="Object"; + class PositionInfo + { + position[]={758.36102,1.3185208,2039.123}; + angles[]={0,2.6881561,0}; + }; + side="Empty"; + class Attributes + { + presence=0.41841081; + }; + id=174; + type="C_Boat_Transport_02_F"; + atlOffset=2.9159999; + }; + class Item70 + { + dataType="Object"; + class PositionInfo + { + position[]={766.48029,1.2435327,2033.0691}; + angles[]={0,5.9436784,-0}; + }; + side="Empty"; + class Attributes + { + }; + id=175; + type="C_Rubberboat"; + atlOffset=4.7528768; + }; + class Item71 + { + dataType="Object"; + class PositionInfo + { + position[]={1042.083,1.2430742,1388.095}; + angles[]={0,4.7720795,0}; + }; + side="Empty"; + class Attributes + { + presence=0.78978139; + }; + id=176; + type="C_Rubberboat"; + atlOffset=0.74899989; + }; + class Item72 + { + dataType="Object"; + class PositionInfo + { + position[]={5414.585,1.2433208,2645.9761}; + }; + side="Empty"; + class Attributes + { + presence=0.64911062; + }; + id=177; + type="C_Rubberboat"; + atlOffset=0.80299985; + }; + class Item73 + { + dataType="Marker"; + position[]={2227.2048,400.76062,9.3449707}; + name="A3E_CarExtractionSpawnPos3"; + type="Empty"; + colorName="ColorBrown"; + id=178; + }; + class Item74 + { + dataType="Marker"; + position[]={2410.1704,367.30347,598.96545}; + name="A3E_CarExtractionPos3"; + type="Empty"; + colorName="ColorBrown"; + id=179; + atlOffset=3.0517578e-005; + }; + class Item75 + { + dataType="Marker"; + position[]={2384.8748,368.95877,598.33057}; + name="A3E_CarExtractionPos3_1"; + type="Empty"; + colorName="ColorBrown"; + id=180; + }; + class Item76 + { + dataType="Marker"; + position[]={545.49902,291.461,4901.8799}; + name="A3E_CarExtractionPos4"; + type="Empty"; + colorName="ColorBrown"; + id=181; + atlOffset=-3.0517578e-005; + }; + class Item77 + { + dataType="Marker"; + position[]={508.67499,297.983,4868.4199}; + name="A3E_CarExtractionPos4_1"; + type="Empty"; + colorName="ColorBrown"; + id=182; + atlOffset=3.0517578e-005; + }; + class Item78 + { + dataType="Marker"; + position[]={5.8131456,427.67993,5191.3335}; + name="A3E_CarExtractionSpawnPos4"; + type="Empty"; + colorName="ColorBrown"; + id=183; + }; + }; +};