From 1aeb55df9857d958f9426e72817c90efed71c5cb Mon Sep 17 00:00:00 2001 From: Jochem Date: Thu, 3 Sep 2015 18:06:28 +0200 Subject: [PATCH 01/17] First upload --- Baked_AIS/Baked_AIS_fnc.sqf | 251 + Baked_AIS/Baked_AIS_init.sqf | 176 + CHVD/CfgFunctions.hpp | 19 + CHVD/dialog.hpp | 722 ++ CHVD/fn_addonInit.sqf | 53 + CHVD/fn_init.sqf | 51 + CHVD/fn_localize.sqf | 37 + CHVD/fn_onCheckedChanged.sqf | 25 + CHVD/fn_onEBinput.sqf | 81 + CHVD/fn_onEBterrainInput.sqf | 33 + CHVD/fn_onLBSelChanged.sqf | 23 + CHVD/fn_onSliderChange.sqf | 73 + CHVD/fn_openDialog.sqf | 73 + CHVD/fn_selTerrainQuality.sqf | 20 + CHVD/fn_updateSettings.sqf | 61 + CHVD/fn_updateTerrain.sqf | 27 + Description.ext | 56 + Functions/AI/arty.sqf | 43 + Functions/AI/jetMonitor.sqf | 34 + Functions/AI/mineField.sqf | 18 + Functions/AI/patrol.sqf | 37 + Functions/AI/radar.sqf | 41 + Functions/AI/radioTower.sqf | 26 + Functions/AI/spawnAirfield.sqf | 71 + Functions/AI/spawnZone.sqf | 144 + Functions/AI/taskJet.sqf | 36 + Functions/BFT/manager.sqf | 61 + Functions/Caching/cache.sqf | 35 + Functions/Caching/cacheGroup.sqf | 23 + Functions/Caching/cacheInit.sqf | 51 + Functions/Caching/unCache.sqf | 32 + Functions/Commander/attack.sqf | 111 + Functions/Commander/convoy.sqf | 0 Functions/Commander/heli.sqf | 31 + Functions/Commander/manager.sqf | 13 + Functions/Commander/officers.sqf | 16 + Functions/Init/initAA.sqf | 67 + Functions/Init/initAirfields.sqf | 12 + Functions/Init/initArty.sqf | 8 + Functions/Init/initBases.sqf | 3 + Functions/Init/initMines.sqf | 10 + Functions/Init/initPatrols.sqf | 8 + Functions/Init/initRadio.sqf | 8 + Functions/Init/initTowns.sqf | 11 + Functions/Loadouts/arsenal.sqf | 210 + Functions/Loadouts/master.sqf | 25 + Functions/Logistics/Building/crateInit.sqf | 14 + Functions/Logistics/Building/keypress.sqf | 31 + Functions/Logistics/Building/placeObject.sqf | 20 + Functions/Logistics/Fob/fobDeploy.sqf | 21 + Functions/Logistics/Fob/fobInit.sqf | 9 + Functions/Logistics/Fob/fobManager.sqf | 19 + Functions/Logistics/Fob/fobUndeploy.sqf | 12 + Functions/Logistics/crateInit.sqf | 11 + Functions/Logistics/fn_logistics_compile.sqf | 14 + Functions/Performance/bodyRemove.sqf | 0 Functions/Performance/itemRemove.sqf | 0 Functions/Performance/loop.sqf | 0 Functions/Performance/vehicleRemove.sqf | 0 Functions/Player/button.sqf | 13 + Functions/Player/click.sqf | 37 + Functions/Player/playerLoop.sqf | 13 + Functions/Tasks/Functions/attack.sqf | 37 + Functions/Tasks/Functions/bleedOut.sqf | 14 + Functions/Tasks/Functions/chat.sqf | 7 + Functions/Tasks/Functions/clean.sqf | 36 + Functions/Tasks/Functions/countdown.sqf | 14 + Functions/Tasks/Functions/download.sqf | 20 + Functions/Tasks/Functions/extract.sqf | 32 + Functions/Tasks/Functions/meeting.sqf | 15 + Functions/Tasks/boat.sqf | 49 + Functions/Tasks/convoy.sqf | 0 Functions/Tasks/crashedChopper.sqf | 99 + Functions/Tasks/escort.sqf | 35 + Functions/Tasks/fn_task_compile.sqf | 10 + Functions/Tasks/kill.sqf | 75 + Functions/Tasks/meeting.sqf | 0 Functions/Tasks/nuke.sqf | 118 + Functions/Tasks/rescue.sqf | 77 + Functions/Tasks/taskManager.sqf | 62 + Functions/Tasks/uav.sqf | 70 + Functions/Towns/indTown.sqf | 28 + Functions/Towns/monitor.sqf | 45 + Functions/Towns/occupy.sqf | 81 + Functions/Vehicle/Tow/attach.sqf | 16 + Functions/Vehicle/Tow/detach.sqf | 10 + Functions/Vehicle/cdu.sqf | 60 + Functions/Vehicle/handleDamage.sqf | 57 + Functions/Vehicle/service.sqf | 29 + Functions/Vehicle/tow.sqf | 36 + Functions/Vehicle/vehInit.sqf | 92 + Functions/Vehicle/vehicle_respawn.sqf | 40 + Functions/fn_compile.sqf | 74 + Sounds/cookoff.wav | Bin 0 -> 173684 bytes Zen_FrameworkFunctions/Legal.txt | 18 + .../Zen_DataFunctions/Zen_ArrayAppend.sqf | 21 + .../Zen_ArrayAppendNested.sqf | 27 + .../Zen_DataFunctions/Zen_ArrayCopy.sqf | 22 + .../Zen_ArrayFilterCondition.sqf | 31 + .../Zen_ArrayFilterValues.sqf | 25 + .../Zen_ArrayFindAverage.sqf | 19 + .../Zen_ArrayFindExtremum.sqf | 43 + .../Zen_DataFunctions/Zen_ArrayFindSum.sqf | 23 + .../Zen_ArrayGetDelimitedSlice.sqf | 39 + .../Zen_ArrayGetIndexedSlice.sqf | 32 + .../Zen_ArrayGetNestedIndex.sqf | 37 + .../Zen_ArrayGetNestedValue.sqf | 39 + .../Zen_DataFunctions/Zen_ArrayGetRandom.sqf | 34 + .../Zen_ArrayGetRandomSequence.sqf | 42 + .../Zen_DataFunctions/Zen_ArrayGetType.sqf | 37 + .../Zen_DataFunctions/Zen_ArrayInsert.sqf | 24 + .../Zen_ArrayInsertSlice.sqf | 35 + .../Zen_DataFunctions/Zen_ArrayRemoveDead.sqf | 43 + .../Zen_ArrayRemoveDuplicates.sqf | 24 + .../Zen_ArrayRemoveIndex.sqf | 21 + .../Zen_ArrayRemoveIndexedSlice.sqf | 27 + .../Zen_ArrayRemoveNonLocal.sqf | 27 + .../Zen_ArrayRemoveValue.sqf | 28 + .../Zen_ArrayRemoveValuedSlice.sqf | 36 + .../Zen_ArrayReplaceSlice.sqf | 36 + .../Zen_ArrayReplaceValue.sqf | 23 + .../Zen_ArrayReplaceValueNested.sqf | 27 + .../Zen_DataFunctions/Zen_ArrayReverse.sqf | 21 + .../Zen_DataFunctions/Zen_ArraySearch.sqf | 67 + .../Zen_DataFunctions/Zen_ArrayShuffle.sqf | 28 + .../Zen_DataFunctions/Zen_ArraySort.sqf | 166 + .../Zen_DataFunctions/Zen_ArraySwapValues.sqf | 21 + .../Zen_ConfigGetLocations.sqf | 36 + .../Zen_ConfigGetVehicleClasses.sqf | 187 + .../Zen_ConvertToGroupArray.sqf | 69 + .../Zen_ConvertToObjectArray.sqf | 74 + .../Zen_ConvertToPosition.sqf | 61 + .../Zen_DataFunctionsCompile.sqf | 54 + .../Zen_FrameworkLibrary.sqf | 191 + .../Zen_DataFunctions/Zen_StandardLibrary.sqf | 155 + .../Zen_StringCapitalizeLetter.sqf | 31 + .../Zen_StringFindReplace.sqf | 66 + .../Zen_StringGenerateRandom.sqf | 60 + .../Zen_StringGetDelimitedPart.sqf | 39 + .../Zen_StringIsInString.sqf | 56 + .../Zen_StringRemoveWhiteSpace.sqf | 26 + .../Zen_ValueFindInArray.sqf | 33 + .../Zen_DataFunctions/Zen_ValueIsInArray.sqf | 62 + .../Zen_DataFunctions/Zen_ValuesAreEqual.sqf | 22 + .../Zen_ValuesAreInArray.sqf | 32 + .../Zen_ValuesAreNotInArray.sqf | 32 + .../Zen_AddFireSupportAction.sqf | 34 + .../Zen_CreateFireSupport.sqf | 95 + .../Zen_FireSupportMenu.hpp | 12 + .../Zen_FireSupportSystemCompile.sqf | 180 + .../Zen_FrameworkLibrary.sqf | 191 + .../Zen_GetFireSupportActionData.sqf | 28 + .../Zen_GetFireSupportData.sqf | 28 + .../Zen_GetUnitFireSupportActions.sqf | 23 + .../Zen_FireSupportSystem/Zen_GuideRound.sqf | 50 + .../Zen_InvokeFireSupport.sqf | 172 + .../Zen_InvokeFireSupportAction.sqf | 67 + .../Zen_RemoveFireSupport.sqf | 26 + .../Zen_RemoveFireSupportAction.sqf | 37 + .../Zen_StandardLibrary.sqf | 155 + .../Zen_UpdateFireSupport.sqf | 111 + .../Zen_UpdateFireSupportAction.sqf | 62 + .../Zen_FrameworkLibrary.sqf | 191 + Zen_FrameworkFunctions/Zen_InitHeader.sqf | 88 + .../Zen_AddGiveMagazine.sqf | 29 + .../Zen_AddLoadoutDialog.sqf | 44 + .../Zen_AddRepackMagazines.sqf | 29 + .../Zen_CreateLoadout.sqf | 34 + .../Zen_FrameworkLibrary.sqf | 191 + .../Zen_GetLoadoutData.sqf | 34 + .../Zen_GetUnitLoadout.sqf | 66 + .../Zen_LoadoutFunctions/Zen_GiveLoadout.sqf | 57 + .../Zen_GiveLoadoutBlufor.sqf | 688 ++ .../Zen_GiveLoadoutCargo.sqf | 147 + .../Zen_GiveLoadoutCustom.sqf | 229 + .../Zen_GiveLoadoutIndfor.sqf | 689 ++ .../Zen_GiveLoadoutOpfor.sqf | 664 ++ .../Zen_LoadoutFunctions/Zen_GiveMagazine.sqf | 91 + .../Zen_LoadoutDialog.hpp | 103 + .../Zen_LoadoutDialogEquip.sqf | 42 + .../Zen_LoadoutFunctionsCompile.sqf | 41 + .../Zen_RemoveLoadout.sqf | 25 + .../Zen_RepackMagazines.sqf | 103 + .../Zen_ShowLoadoutDialog.sqf | 29 + .../Zen_StandardLibrary.sqf | 155 + .../Zen_UpdateLoadout.sqf | 27 + .../Zen_MathFunctions/Zen_ExtendPosition.sqf | 33 + .../Zen_MathFunctions/Zen_ExtendRay.sqf | 20 + .../Zen_MathFunctions/Zen_Find2dDistance.sqf | 17 + .../Zen_MathFunctions/Zen_FindDirection.sqf | 17 + .../Zen_FindDistanceToPolyEdge.sqf | 73 + .../Zen_MathFunctions/Zen_FindInRange.sqf | 34 + .../Zen_MathFunctions/Zen_FindMaxDistance.sqf | 31 + .../Zen_MathFunctions/Zen_FindMinDistance.sqf | 31 + .../Zen_FindRayIntersection.sqf | 69 + .../Zen_MathFunctions/Zen_FindTrigAngle.sqf | 16 + .../Zen_FrameworkLibrary.sqf | 191 + .../Zen_MathFunctions/Zen_IsAngleInSector.sqf | 58 + .../Zen_MathFunctions/Zen_IsPointInPoly.sqf | 69 + .../Zen_MathFunctions/Zen_IsRayInPoly.sqf | 42 + .../Zen_MathFunctionsCompile.sqf | 19 + .../Zen_MathFunctions/Zen_StandardLibrary.sqf | 155 + .../Zen_MiscFunctions/Zen_AddEject.sqf | 27 + .../Zen_MiscFunctions/Zen_AddFastRope.sqf | 27 + .../Zen_MiscFunctions/Zen_CheckArguments.sqf | 78 + .../Zen_MiscFunctions/Zen_ExecuteCommand.sqf | 86 + .../Zen_FrameworkLibrary.sqf | 191 + .../Zen_MiscFunctionsCompile.sqf | 18 + .../Zen_MiscFunctions/Zen_MultiplyDamage.sqf | 57 + .../Zen_MiscFunctions/Zen_PrintError.sqf | 24 + .../Zen_MiscFunctions/Zen_SetViewDistance.sqf | 52 + .../Zen_MiscFunctions/Zen_SetWeather.sqf | 124 + .../Zen_MiscFunctions/Zen_ShowHideMarkers.sqf | 72 + .../Zen_MiscFunctions/Zen_SpawnMarker.sqf | 73 + .../Zen_MiscFunctions/Zen_StandardLibrary.sqf | 155 + .../Zen_ObjectFunctions/Zen_AreInArea.sqf | 55 + .../Zen_ObjectFunctions/Zen_AreInVehicle.sqf | 32 + .../Zen_ObjectFunctions/Zen_AreIndoors.sqf | 26 + .../Zen_ObjectFunctions/Zen_AreLocal.sqf | 23 + .../Zen_ObjectFunctions/Zen_AreNotInArea.sqf | 51 + .../Zen_AreNotInVehicle.sqf | 32 + .../Zen_ObjectFunctions/Zen_AreNotIndoors.sqf | 26 + .../Zen_ObjectFunctions/Zen_AreNotLocal.sqf | 23 + .../Zen_FrameworkLibrary.sqf | 191 + .../Zen_ObjectFunctions/Zen_GetAllInArea.sqf | 57 + .../Zen_GetAllInBuilding.sqf | 37 + .../Zen_ObjectFunctions/Zen_GetFreeSeats.sqf | 76 + .../Zen_ObjectFunctions/Zen_GetSide.sqf | 28 + .../Zen_ObjectFunctions/Zen_GetSideColor.sqf | 28 + .../Zen_GetTurretPaths.sqf | 99 + .../Zen_ObjectFunctions/Zen_IsFacing.sqf | 32 + .../Zen_ObjectFunctions/Zen_IsReady.sqf | 25 + .../Zen_ObjectFunctions/Zen_IsSeen.sqf | 31 + .../Zen_ObjectFunctions/Zen_IsVisible.sqf | 34 + .../Zen_ObjectFunctions/Zen_MoveAsSet.sqf | 37 + .../Zen_ObjectFunctions/Zen_MoveInVehicle.sqf | 120 + .../Zen_ObjectFunctionsCompile.sqf | 104 + .../Zen_ObjectFunctions/Zen_RotateAsSet.sqf | 40 + .../Zen_ObjectFunctions/Zen_SetAISkill.sqf | 107 + .../Zen_StandardLibrary.sqf | 155 + .../Zen_ObjectFunctions/Zen_TrackGroups.sqf | 215 + .../Zen_ObjectFunctions/Zen_TrackInfantry.sqf | 122 + .../Zen_ObjectFunctions/Zen_TrackVehicles.sqf | 185 + .../Zen_TransformObject.sqf | 45 + .../Zen_CreateObjective.sqf | 180 + .../Zen_FrameworkLibrary.sqf | 191 + .../Zen_ObjectiveCreateTask.sqf | 78 + .../Zen_ObjectiveSpawnMarker.sqf | 26 + .../Zen_ObjectiveSystemCompile.sqf | 13 + .../Zen_ObjectiveSystem/Zen_SpawnMortar.sqf | 49 + .../Zen_ObjectiveSystem/Zen_SpawnOfficer.sqf | 43 + .../Zen_ObjectiveSystem/Zen_SpawnPOW.sqf | 55 + .../Zen_ObjectiveSystem/Zen_SpawnWreck.sqf | 63 + .../Zen_StandardLibrary.sqf | 155 + .../Zen_FrameworkLibrary.sqf | 191 + .../Zen_OrderAircraftPatrol.sqf | 132 + .../Zen_OrderBoatPatrol.sqf | 121 + .../Zen_OrderExtraction.sqf | 80 + .../Zen_OrdersFunctions/Zen_OrderFastRope.sqf | 169 + .../Zen_OrderHelicopterLand.sqf | 138 + .../Zen_OrderInfantryMove.sqf | 41 + .../Zen_OrderInfantryPatrol.sqf | 179 + .../Zen_OrderInfantryPatrolBuilding.sqf | 66 + .../Zen_OrderInsertion.sqf | 159 + .../Zen_OrderSlingLoad.sqf | 66 + .../Zen_OrderVehicleDrop.sqf | 94 + .../Zen_OrderVehicleMove.sqf | 95 + .../Zen_OrderVehiclePatrol.sqf | 121 + .../Zen_OrdersFunctionsCompile.sqf | 19 + .../Zen_StandardLibrary.sqf | 155 + .../Zen_CalculatePositionMarker.sqf | 107 + .../Zen_CalculatePositionObject.sqf | 94 + .../Zen_CheckPosition.sqf | 185 + .../Zen_FindAveragePosition.sqf | 25 + .../Zen_FindBuildingPositions.sqf | 77 + .../Zen_FindCenterPosition.sqf | 47 + .../Zen_FindGroundPosition.sqf | 238 + .../Zen_FindNearHeight.sqf | 49 + .../Zen_FindPositionPoly.sqf | 46 + .../Zen_FindRoadDirection.sqf | 75 + .../Zen_FindTerrainGradient.sqf | 33 + .../Zen_FindTerrainSlope.sqf | 33 + .../Zen_FindValidDirection.sqf | 54 + .../Zen_FrameworkLibrary.sqf | 191 + .../Zen_GetAmbientClutterCount.sqf | 35 + .../Zen_GetArguments.sqf | 181 + .../Zen_IsForestArea.sqf | 69 + .../Zen_PositionFunctions/Zen_IsHillArea.sqf | 73 + .../Zen_PositionFunctions/Zen_IsIsland.sqf | 34 + .../Zen_IsNearTerrain.sqf | 54 + .../Zen_PositionFunctions/Zen_IsUrbanArea.sqf | 78 + .../Zen_PositionFunctions/Zen_IsWaterArea.sqf | 70 + .../Zen_PositionFunctionsCompile.sqf | 29 + .../Zen_PositionObject.sqf | 16 + .../Zen_QuantizeAngles.sqf | 61 + .../Zen_StandardLibrary.sqf | 155 + .../Zen_FrameworkLibrary.sqf | 191 + .../Zen_SpawnAircraft.sqf | 60 + .../Zen_SpawnAmbientVehicles.sqf | 52 + .../Zen_SpawnAmmoBox.sqf | 54 + .../Zen_SpawningFunctions/Zen_SpawnBoat.sqf | 58 + .../Zen_SpawningFunctions/Zen_SpawnCamp.sqf | 37 + .../Zen_SpawningFunctions/Zen_SpawnConvoy.sqf | 88 + .../Zen_SpawnFortification.sqf | 50 + .../Zen_SpawnGroundVehicle.sqf | 60 + .../Zen_SpawningFunctions/Zen_SpawnGroup.sqf | 51 + .../Zen_SpawnHelicopter.sqf | 60 + .../Zen_SpawnInfantry.sqf | 83 + .../Zen_SpawnInfantryGarrison.sqf | 33 + .../Zen_SpawnItemsOnTable.sqf | 43 + .../Zen_SpawnParachute.sqf | 49 + .../Zen_SpawnVehicle.sqf | 101 + .../Zen_SpawnVehicleCrew.sqf | 159 + .../Zen_SpawningFunctionsCompile.sqf | 22 + .../Zen_StandardLibrary.sqf | 155 + .../Zen_StandardLibrary.sqf | 155 + .../Zen_TaskSystem/Zen_AreTasksComplete.sqf | 34 + .../Zen_AreUnitsTasksComplete.sqf | 55 + .../Zen_CleanGlobalTaskArray.sqf | 19 + .../Zen_CleanLocalTaskArray.sqf | 12 + .../Zen_TaskSystem/Zen_FrameworkLibrary.sqf | 191 + .../Zen_TaskSystem/Zen_GetCurrentTask.sqf | 41 + .../Zen_TaskSystem/Zen_GetTaskDataGlobal.sqf | 34 + .../Zen_TaskSystem/Zen_GetTaskDataLocal.sqf | 23 + .../Zen_TaskSystem/Zen_GetUnitTasks.sqf | 23 + .../Zen_TaskSystem/Zen_InvokeTask.sqf | 69 + .../Zen_TaskSystem/Zen_InvokeTaskBriefing.sqf | 40 + .../Zen_TaskSystem/Zen_InvokeTaskClient.sqf | 89 + .../Zen_TaskSystem/Zen_ReassignTask.sqf | 56 + .../Zen_TaskSystem/Zen_RemoveTask.sqf | 45 + .../Zen_TaskSystem/Zen_RemoveTaskClient.sqf | 52 + .../Zen_TaskSystem/Zen_SetTaskCurrent.sqf | 37 + .../Zen_SetTaskCurrentClient.sqf | 42 + .../Zen_TaskSystem/Zen_SetTaskTarget.sqf | 31 + .../Zen_SetTaskTargetClient.sqf | 32 + .../Zen_TaskSystem/Zen_StandardLibrary.sqf | 155 + .../Zen_TaskSystem/Zen_TaskNotifications.hpp | 14 + .../Zen_TaskSystem/Zen_TaskSystemCompile.sqf | 29 + .../Zen_TaskSystem/Zen_UpdateTask.sqf | 128 + .../Zen_TaskSystem/Zen_UpdateTaskClient.sqf | 67 + .../Zen_FrameworkLibrary.sqf | 191 + .../Zen_StandardLibrary.sqf | 155 + .../Zen_TriggerAreDead.sqf | 50 + .../Zen_TriggerAreNear.sqf | 86 + .../Zen_TriggerAreRescued.sqf | 94 + .../Zen_TriggerAreaClear.sqf | 60 + .../Zen_TriggerAreaSecure.sqf | 73 + .../Zen_TriggerFunctionsCompile.sqf | 11 + Zen_FrameworkFunctions/copyLibraries.bat | 28 + init.sqf | 22 + initPlayerLocal.sqf | 22 + mission.sqm | 6179 +++++++++++++++++ missionInit.sqf | 93 + onPlayerRespawn.sqf | 14 + 354 files changed, 30654 insertions(+) create mode 100644 Baked_AIS/Baked_AIS_fnc.sqf create mode 100644 Baked_AIS/Baked_AIS_init.sqf create mode 100644 CHVD/CfgFunctions.hpp create mode 100644 CHVD/dialog.hpp create mode 100644 CHVD/fn_addonInit.sqf create mode 100644 CHVD/fn_init.sqf create mode 100644 CHVD/fn_localize.sqf create mode 100644 CHVD/fn_onCheckedChanged.sqf create mode 100644 CHVD/fn_onEBinput.sqf create mode 100644 CHVD/fn_onEBterrainInput.sqf create mode 100644 CHVD/fn_onLBSelChanged.sqf create mode 100644 CHVD/fn_onSliderChange.sqf create mode 100644 CHVD/fn_openDialog.sqf create mode 100644 CHVD/fn_selTerrainQuality.sqf create mode 100644 CHVD/fn_updateSettings.sqf create mode 100644 CHVD/fn_updateTerrain.sqf create mode 100644 Description.ext create mode 100644 Functions/AI/arty.sqf create mode 100644 Functions/AI/jetMonitor.sqf create mode 100644 Functions/AI/mineField.sqf create mode 100644 Functions/AI/patrol.sqf create mode 100644 Functions/AI/radar.sqf create mode 100644 Functions/AI/radioTower.sqf create mode 100644 Functions/AI/spawnAirfield.sqf create mode 100644 Functions/AI/spawnZone.sqf create mode 100644 Functions/AI/taskJet.sqf create mode 100644 Functions/BFT/manager.sqf create mode 100644 Functions/Caching/cache.sqf create mode 100644 Functions/Caching/cacheGroup.sqf create mode 100644 Functions/Caching/cacheInit.sqf create mode 100644 Functions/Caching/unCache.sqf create mode 100644 Functions/Commander/attack.sqf create mode 100644 Functions/Commander/convoy.sqf create mode 100644 Functions/Commander/heli.sqf create mode 100644 Functions/Commander/manager.sqf create mode 100644 Functions/Commander/officers.sqf create mode 100644 Functions/Init/initAA.sqf create mode 100644 Functions/Init/initAirfields.sqf create mode 100644 Functions/Init/initArty.sqf create mode 100644 Functions/Init/initBases.sqf create mode 100644 Functions/Init/initMines.sqf create mode 100644 Functions/Init/initPatrols.sqf create mode 100644 Functions/Init/initRadio.sqf create mode 100644 Functions/Init/initTowns.sqf create mode 100644 Functions/Loadouts/arsenal.sqf create mode 100644 Functions/Loadouts/master.sqf create mode 100644 Functions/Logistics/Building/crateInit.sqf create mode 100644 Functions/Logistics/Building/keypress.sqf create mode 100644 Functions/Logistics/Building/placeObject.sqf create mode 100644 Functions/Logistics/Fob/fobDeploy.sqf create mode 100644 Functions/Logistics/Fob/fobInit.sqf create mode 100644 Functions/Logistics/Fob/fobManager.sqf create mode 100644 Functions/Logistics/Fob/fobUndeploy.sqf create mode 100644 Functions/Logistics/crateInit.sqf create mode 100644 Functions/Logistics/fn_logistics_compile.sqf create mode 100644 Functions/Performance/bodyRemove.sqf create mode 100644 Functions/Performance/itemRemove.sqf create mode 100644 Functions/Performance/loop.sqf create mode 100644 Functions/Performance/vehicleRemove.sqf create mode 100644 Functions/Player/button.sqf create mode 100644 Functions/Player/click.sqf create mode 100644 Functions/Player/playerLoop.sqf create mode 100644 Functions/Tasks/Functions/attack.sqf create mode 100644 Functions/Tasks/Functions/bleedOut.sqf create mode 100644 Functions/Tasks/Functions/chat.sqf create mode 100644 Functions/Tasks/Functions/clean.sqf create mode 100644 Functions/Tasks/Functions/countdown.sqf create mode 100644 Functions/Tasks/Functions/download.sqf create mode 100644 Functions/Tasks/Functions/extract.sqf create mode 100644 Functions/Tasks/Functions/meeting.sqf create mode 100644 Functions/Tasks/boat.sqf create mode 100644 Functions/Tasks/convoy.sqf create mode 100644 Functions/Tasks/crashedChopper.sqf create mode 100644 Functions/Tasks/escort.sqf create mode 100644 Functions/Tasks/fn_task_compile.sqf create mode 100644 Functions/Tasks/kill.sqf create mode 100644 Functions/Tasks/meeting.sqf create mode 100644 Functions/Tasks/nuke.sqf create mode 100644 Functions/Tasks/rescue.sqf create mode 100644 Functions/Tasks/taskManager.sqf create mode 100644 Functions/Tasks/uav.sqf create mode 100644 Functions/Towns/indTown.sqf create mode 100644 Functions/Towns/monitor.sqf create mode 100644 Functions/Towns/occupy.sqf create mode 100644 Functions/Vehicle/Tow/attach.sqf create mode 100644 Functions/Vehicle/Tow/detach.sqf create mode 100644 Functions/Vehicle/cdu.sqf create mode 100644 Functions/Vehicle/handleDamage.sqf create mode 100644 Functions/Vehicle/service.sqf create mode 100644 Functions/Vehicle/tow.sqf create mode 100644 Functions/Vehicle/vehInit.sqf create mode 100644 Functions/Vehicle/vehicle_respawn.sqf create mode 100644 Functions/fn_compile.sqf create mode 100644 Sounds/cookoff.wav create mode 100644 Zen_FrameworkFunctions/Legal.txt create mode 100644 Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayAppend.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayAppendNested.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayCopy.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayFilterCondition.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayFilterValues.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayFindAverage.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayFindExtremum.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayFindSum.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayGetDelimitedSlice.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayGetIndexedSlice.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayGetNestedIndex.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayGetNestedValue.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayGetRandom.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayGetRandomSequence.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayGetType.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayInsert.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayInsertSlice.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayRemoveDead.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayRemoveDuplicates.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayRemoveIndex.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayRemoveIndexedSlice.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayRemoveNonLocal.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayRemoveValue.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayRemoveValuedSlice.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayReplaceSlice.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayReplaceValue.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayReplaceValueNested.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayReverse.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArraySearch.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayShuffle.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArraySort.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArraySwapValues.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ConfigGetLocations.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ConfigGetVehicleClasses.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ConvertToGroupArray.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ConvertToObjectArray.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ConvertToPosition.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DataFunctions/Zen_DataFunctionsCompile.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DataFunctions/Zen_FrameworkLibrary.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DataFunctions/Zen_StandardLibrary.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DataFunctions/Zen_StringCapitalizeLetter.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DataFunctions/Zen_StringFindReplace.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DataFunctions/Zen_StringGenerateRandom.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DataFunctions/Zen_StringGetDelimitedPart.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DataFunctions/Zen_StringIsInString.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DataFunctions/Zen_StringRemoveWhiteSpace.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ValueFindInArray.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ValueIsInArray.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ValuesAreEqual.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ValuesAreInArray.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ValuesAreNotInArray.sqf create mode 100644 Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_AddFireSupportAction.sqf create mode 100644 Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_CreateFireSupport.sqf create mode 100644 Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_FireSupportMenu.hpp create mode 100644 Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_FireSupportSystemCompile.sqf create mode 100644 Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_FrameworkLibrary.sqf create mode 100644 Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_GetFireSupportActionData.sqf create mode 100644 Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_GetFireSupportData.sqf create mode 100644 Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_GetUnitFireSupportActions.sqf create mode 100644 Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_GuideRound.sqf create mode 100644 Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_InvokeFireSupport.sqf create mode 100644 Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_InvokeFireSupportAction.sqf create mode 100644 Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_RemoveFireSupport.sqf create mode 100644 Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_RemoveFireSupportAction.sqf create mode 100644 Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_StandardLibrary.sqf create mode 100644 Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_UpdateFireSupport.sqf create mode 100644 Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_UpdateFireSupportAction.sqf create mode 100644 Zen_FrameworkFunctions/Zen_FrameworkLibrary.sqf create mode 100644 Zen_FrameworkFunctions/Zen_InitHeader.sqf create mode 100644 Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_AddGiveMagazine.sqf create mode 100644 Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_AddLoadoutDialog.sqf create mode 100644 Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_AddRepackMagazines.sqf create mode 100644 Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_CreateLoadout.sqf create mode 100644 Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_FrameworkLibrary.sqf create mode 100644 Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_GetLoadoutData.sqf create mode 100644 Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_GetUnitLoadout.sqf create mode 100644 Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_GiveLoadout.sqf create mode 100644 Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_GiveLoadoutBlufor.sqf create mode 100644 Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_GiveLoadoutCargo.sqf create mode 100644 Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_GiveLoadoutCustom.sqf create mode 100644 Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_GiveLoadoutIndfor.sqf create mode 100644 Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_GiveLoadoutOpfor.sqf create mode 100644 Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_GiveMagazine.sqf create mode 100644 Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_LoadoutDialog.hpp create mode 100644 Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_LoadoutDialogEquip.sqf create mode 100644 Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_LoadoutFunctionsCompile.sqf create mode 100644 Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_RemoveLoadout.sqf create mode 100644 Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_RepackMagazines.sqf create mode 100644 Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_ShowLoadoutDialog.sqf create mode 100644 Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_StandardLibrary.sqf create mode 100644 Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_UpdateLoadout.sqf create mode 100644 Zen_FrameworkFunctions/Zen_MathFunctions/Zen_ExtendPosition.sqf create mode 100644 Zen_FrameworkFunctions/Zen_MathFunctions/Zen_ExtendRay.sqf create mode 100644 Zen_FrameworkFunctions/Zen_MathFunctions/Zen_Find2dDistance.sqf create mode 100644 Zen_FrameworkFunctions/Zen_MathFunctions/Zen_FindDirection.sqf create mode 100644 Zen_FrameworkFunctions/Zen_MathFunctions/Zen_FindDistanceToPolyEdge.sqf create mode 100644 Zen_FrameworkFunctions/Zen_MathFunctions/Zen_FindInRange.sqf create mode 100644 Zen_FrameworkFunctions/Zen_MathFunctions/Zen_FindMaxDistance.sqf create mode 100644 Zen_FrameworkFunctions/Zen_MathFunctions/Zen_FindMinDistance.sqf create mode 100644 Zen_FrameworkFunctions/Zen_MathFunctions/Zen_FindRayIntersection.sqf create mode 100644 Zen_FrameworkFunctions/Zen_MathFunctions/Zen_FindTrigAngle.sqf create mode 100644 Zen_FrameworkFunctions/Zen_MathFunctions/Zen_FrameworkLibrary.sqf create mode 100644 Zen_FrameworkFunctions/Zen_MathFunctions/Zen_IsAngleInSector.sqf create mode 100644 Zen_FrameworkFunctions/Zen_MathFunctions/Zen_IsPointInPoly.sqf create mode 100644 Zen_FrameworkFunctions/Zen_MathFunctions/Zen_IsRayInPoly.sqf create mode 100644 Zen_FrameworkFunctions/Zen_MathFunctions/Zen_MathFunctionsCompile.sqf create mode 100644 Zen_FrameworkFunctions/Zen_MathFunctions/Zen_StandardLibrary.sqf create mode 100644 Zen_FrameworkFunctions/Zen_MiscFunctions/Zen_AddEject.sqf create mode 100644 Zen_FrameworkFunctions/Zen_MiscFunctions/Zen_AddFastRope.sqf create mode 100644 Zen_FrameworkFunctions/Zen_MiscFunctions/Zen_CheckArguments.sqf create mode 100644 Zen_FrameworkFunctions/Zen_MiscFunctions/Zen_ExecuteCommand.sqf create mode 100644 Zen_FrameworkFunctions/Zen_MiscFunctions/Zen_FrameworkLibrary.sqf create mode 100644 Zen_FrameworkFunctions/Zen_MiscFunctions/Zen_MiscFunctionsCompile.sqf create mode 100644 Zen_FrameworkFunctions/Zen_MiscFunctions/Zen_MultiplyDamage.sqf create mode 100644 Zen_FrameworkFunctions/Zen_MiscFunctions/Zen_PrintError.sqf create mode 100644 Zen_FrameworkFunctions/Zen_MiscFunctions/Zen_SetViewDistance.sqf create mode 100644 Zen_FrameworkFunctions/Zen_MiscFunctions/Zen_SetWeather.sqf create mode 100644 Zen_FrameworkFunctions/Zen_MiscFunctions/Zen_ShowHideMarkers.sqf create mode 100644 Zen_FrameworkFunctions/Zen_MiscFunctions/Zen_SpawnMarker.sqf create mode 100644 Zen_FrameworkFunctions/Zen_MiscFunctions/Zen_StandardLibrary.sqf create mode 100644 Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_AreInArea.sqf create mode 100644 Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_AreInVehicle.sqf create mode 100644 Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_AreIndoors.sqf create mode 100644 Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_AreLocal.sqf create mode 100644 Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_AreNotInArea.sqf create mode 100644 Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_AreNotInVehicle.sqf create mode 100644 Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_AreNotIndoors.sqf create mode 100644 Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_AreNotLocal.sqf create mode 100644 Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_FrameworkLibrary.sqf create mode 100644 Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_GetAllInArea.sqf create mode 100644 Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_GetAllInBuilding.sqf create mode 100644 Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_GetFreeSeats.sqf create mode 100644 Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_GetSide.sqf create mode 100644 Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_GetSideColor.sqf create mode 100644 Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_GetTurretPaths.sqf create mode 100644 Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_IsFacing.sqf create mode 100644 Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_IsReady.sqf create mode 100644 Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_IsSeen.sqf create mode 100644 Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_IsVisible.sqf create mode 100644 Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_MoveAsSet.sqf create mode 100644 Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_MoveInVehicle.sqf create mode 100644 Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_ObjectFunctionsCompile.sqf create mode 100644 Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_RotateAsSet.sqf create mode 100644 Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_SetAISkill.sqf create mode 100644 Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_StandardLibrary.sqf create mode 100644 Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_TrackGroups.sqf create mode 100644 Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_TrackInfantry.sqf create mode 100644 Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_TrackVehicles.sqf create mode 100644 Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_TransformObject.sqf create mode 100644 Zen_FrameworkFunctions/Zen_ObjectiveSystem/Zen_CreateObjective.sqf create mode 100644 Zen_FrameworkFunctions/Zen_ObjectiveSystem/Zen_FrameworkLibrary.sqf create mode 100644 Zen_FrameworkFunctions/Zen_ObjectiveSystem/Zen_ObjectiveCreateTask.sqf create mode 100644 Zen_FrameworkFunctions/Zen_ObjectiveSystem/Zen_ObjectiveSpawnMarker.sqf create mode 100644 Zen_FrameworkFunctions/Zen_ObjectiveSystem/Zen_ObjectiveSystemCompile.sqf create mode 100644 Zen_FrameworkFunctions/Zen_ObjectiveSystem/Zen_SpawnMortar.sqf create mode 100644 Zen_FrameworkFunctions/Zen_ObjectiveSystem/Zen_SpawnOfficer.sqf create mode 100644 Zen_FrameworkFunctions/Zen_ObjectiveSystem/Zen_SpawnPOW.sqf create mode 100644 Zen_FrameworkFunctions/Zen_ObjectiveSystem/Zen_SpawnWreck.sqf create mode 100644 Zen_FrameworkFunctions/Zen_ObjectiveSystem/Zen_StandardLibrary.sqf create mode 100644 Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_FrameworkLibrary.sqf create mode 100644 Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderAircraftPatrol.sqf create mode 100644 Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderBoatPatrol.sqf create mode 100644 Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderExtraction.sqf create mode 100644 Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderFastRope.sqf create mode 100644 Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderHelicopterLand.sqf create mode 100644 Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderInfantryMove.sqf create mode 100644 Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderInfantryPatrol.sqf create mode 100644 Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderInfantryPatrolBuilding.sqf create mode 100644 Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderInsertion.sqf create mode 100644 Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderSlingLoad.sqf create mode 100644 Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderVehicleDrop.sqf create mode 100644 Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderVehicleMove.sqf create mode 100644 Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderVehiclePatrol.sqf create mode 100644 Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrdersFunctionsCompile.sqf create mode 100644 Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_StandardLibrary.sqf create mode 100644 Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_CalculatePositionMarker.sqf create mode 100644 Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_CalculatePositionObject.sqf create mode 100644 Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_CheckPosition.sqf create mode 100644 Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_FindAveragePosition.sqf create mode 100644 Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_FindBuildingPositions.sqf create mode 100644 Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_FindCenterPosition.sqf create mode 100644 Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_FindGroundPosition.sqf create mode 100644 Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_FindNearHeight.sqf create mode 100644 Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_FindPositionPoly.sqf create mode 100644 Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_FindRoadDirection.sqf create mode 100644 Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_FindTerrainGradient.sqf create mode 100644 Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_FindTerrainSlope.sqf create mode 100644 Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_FindValidDirection.sqf create mode 100644 Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_FrameworkLibrary.sqf create mode 100644 Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_GetAmbientClutterCount.sqf create mode 100644 Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_GetArguments.sqf create mode 100644 Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_IsForestArea.sqf create mode 100644 Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_IsHillArea.sqf create mode 100644 Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_IsIsland.sqf create mode 100644 Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_IsNearTerrain.sqf create mode 100644 Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_IsUrbanArea.sqf create mode 100644 Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_IsWaterArea.sqf create mode 100644 Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_PositionFunctionsCompile.sqf create mode 100644 Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_PositionObject.sqf create mode 100644 Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_QuantizeAngles.sqf create mode 100644 Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_StandardLibrary.sqf create mode 100644 Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_FrameworkLibrary.sqf create mode 100644 Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnAircraft.sqf create mode 100644 Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnAmbientVehicles.sqf create mode 100644 Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnAmmoBox.sqf create mode 100644 Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnBoat.sqf create mode 100644 Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnCamp.sqf create mode 100644 Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnConvoy.sqf create mode 100644 Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnFortification.sqf create mode 100644 Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnGroundVehicle.sqf create mode 100644 Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnGroup.sqf create mode 100644 Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnHelicopter.sqf create mode 100644 Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnInfantry.sqf create mode 100644 Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnInfantryGarrison.sqf create mode 100644 Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnItemsOnTable.sqf create mode 100644 Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnParachute.sqf create mode 100644 Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnVehicle.sqf create mode 100644 Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnVehicleCrew.sqf create mode 100644 Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawningFunctionsCompile.sqf create mode 100644 Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_StandardLibrary.sqf create mode 100644 Zen_FrameworkFunctions/Zen_StandardLibrary.sqf create mode 100644 Zen_FrameworkFunctions/Zen_TaskSystem/Zen_AreTasksComplete.sqf create mode 100644 Zen_FrameworkFunctions/Zen_TaskSystem/Zen_AreUnitsTasksComplete.sqf create mode 100644 Zen_FrameworkFunctions/Zen_TaskSystem/Zen_CleanGlobalTaskArray.sqf create mode 100644 Zen_FrameworkFunctions/Zen_TaskSystem/Zen_CleanLocalTaskArray.sqf create mode 100644 Zen_FrameworkFunctions/Zen_TaskSystem/Zen_FrameworkLibrary.sqf create mode 100644 Zen_FrameworkFunctions/Zen_TaskSystem/Zen_GetCurrentTask.sqf create mode 100644 Zen_FrameworkFunctions/Zen_TaskSystem/Zen_GetTaskDataGlobal.sqf create mode 100644 Zen_FrameworkFunctions/Zen_TaskSystem/Zen_GetTaskDataLocal.sqf create mode 100644 Zen_FrameworkFunctions/Zen_TaskSystem/Zen_GetUnitTasks.sqf create mode 100644 Zen_FrameworkFunctions/Zen_TaskSystem/Zen_InvokeTask.sqf create mode 100644 Zen_FrameworkFunctions/Zen_TaskSystem/Zen_InvokeTaskBriefing.sqf create mode 100644 Zen_FrameworkFunctions/Zen_TaskSystem/Zen_InvokeTaskClient.sqf create mode 100644 Zen_FrameworkFunctions/Zen_TaskSystem/Zen_ReassignTask.sqf create mode 100644 Zen_FrameworkFunctions/Zen_TaskSystem/Zen_RemoveTask.sqf create mode 100644 Zen_FrameworkFunctions/Zen_TaskSystem/Zen_RemoveTaskClient.sqf create mode 100644 Zen_FrameworkFunctions/Zen_TaskSystem/Zen_SetTaskCurrent.sqf create mode 100644 Zen_FrameworkFunctions/Zen_TaskSystem/Zen_SetTaskCurrentClient.sqf create mode 100644 Zen_FrameworkFunctions/Zen_TaskSystem/Zen_SetTaskTarget.sqf create mode 100644 Zen_FrameworkFunctions/Zen_TaskSystem/Zen_SetTaskTargetClient.sqf create mode 100644 Zen_FrameworkFunctions/Zen_TaskSystem/Zen_StandardLibrary.sqf create mode 100644 Zen_FrameworkFunctions/Zen_TaskSystem/Zen_TaskNotifications.hpp create mode 100644 Zen_FrameworkFunctions/Zen_TaskSystem/Zen_TaskSystemCompile.sqf create mode 100644 Zen_FrameworkFunctions/Zen_TaskSystem/Zen_UpdateTask.sqf create mode 100644 Zen_FrameworkFunctions/Zen_TaskSystem/Zen_UpdateTaskClient.sqf create mode 100644 Zen_FrameworkFunctions/Zen_TriggerFunctions/Zen_FrameworkLibrary.sqf create mode 100644 Zen_FrameworkFunctions/Zen_TriggerFunctions/Zen_StandardLibrary.sqf create mode 100644 Zen_FrameworkFunctions/Zen_TriggerFunctions/Zen_TriggerAreDead.sqf create mode 100644 Zen_FrameworkFunctions/Zen_TriggerFunctions/Zen_TriggerAreNear.sqf create mode 100644 Zen_FrameworkFunctions/Zen_TriggerFunctions/Zen_TriggerAreRescued.sqf create mode 100644 Zen_FrameworkFunctions/Zen_TriggerFunctions/Zen_TriggerAreaClear.sqf create mode 100644 Zen_FrameworkFunctions/Zen_TriggerFunctions/Zen_TriggerAreaSecure.sqf create mode 100644 Zen_FrameworkFunctions/Zen_TriggerFunctions/Zen_TriggerFunctionsCompile.sqf create mode 100644 Zen_FrameworkFunctions/copyLibraries.bat create mode 100644 init.sqf create mode 100644 initPlayerLocal.sqf create mode 100644 mission.sqm create mode 100644 missionInit.sqf create mode 100644 onPlayerRespawn.sqf diff --git a/Baked_AIS/Baked_AIS_fnc.sqf b/Baked_AIS/Baked_AIS_fnc.sqf new file mode 100644 index 0000000..b948ea8 --- /dev/null +++ b/Baked_AIS/Baked_AIS_fnc.sqf @@ -0,0 +1,251 @@ +// FILE : Baked_AIS_fnc.sqf +// AUTHOR : Bakerman +// LAST EDIT : 15/09/2013 +// Version : 0.1.3 +// DESCRIPTION : APS functions for Baked_AIS (Armor Improvement System) +// LICENSE : GO CRAZY - USE IT - ABUSE IT - CREDIT IF YOU WISH + +// Called on "fired" event +FNC_BAPS_FIRED = +{ + private ["_unit","_weapon","_projectile"]; + _unit = _this Select 0; + _weapon = _this Select 1; + _projectile = _this select 6; + + // Check if weapon used is a launcher + for "_i" from 0 to ((count baps_weapons) - 1) do + { + if (_weapon == (baps_weapons select _i)) then + { + [_projectile, _unit] call FNC_BAPS_SCAN; + }; + }; +}; + +// Projectile scanning for targets +FNC_BAPS_SCAN = +{ + private ["_projectile","_unit","_vehicleType","_defender","_block","_i","_weaponDir","_weaponDeg","_vehicleDir","_turretDir","_relativeDir","_dir","_fov","_dis"]; + _projectile = _this Select 0; + _unit = _this Select 1; + for "_i" from 0 to ((count baps_vehiclelist) - 1) do + { + _defender = baps_vehiclelist select _i; + + if (!alive _defender) exitWith {}; + if (count (crew _defender) == 0) exitWith {}; + + // By default any vehicle with APS may block + _block = "true"; + // Specific duel APS code for Merkava Mk4 + _vehicleType = typeOf _defender; + if (_vehicleType == "B_MBT_01_cannon_F") then + { + // Get the direction of the tank's turret + _weaponDir = _defender weaponDirection "cannon_120mm"; + _weaponDeg = (_weaponDir select 0) atan2 (_weaponDir select 1); + if (_weaponDeg < 0) then { _weaponDeg = _weaponDeg + 360; }; + _vehicleDir = direction _defender; + _turretDir = _weaponDeg - _vehicleDir; + if (_turretDir < 0) then { _turretDir = _turretDir + 360; }; + _relativeDir = [_defender, _projectile] call BIS_fnc_relativeDirTo; + _relativeDir = _relativeDir - _turretDir; + if (_relativeDir < 0) then { _relativeDir = _relativeDir + 360; }; + // Remove the default blocking + _block = "false"; + // Set blocking direction and angle limitations + if (_relativeDir > 0 && _relativeDir < 170) then + { + _block = "right"; + }; + if (_relativeDir > 190 && _relativeDir < 360) then + { + _block = "left"; + }; + }; + + if (_block != "false") then + { + _count = 0; + // Set the field of fiew of the projectile scanner + _fov = 1; + while {_count < 10} do + { + // Scan for vehicles infront of the projectile + _dir = [_projectile, _defender] call BIS_fnc_relativeDirTo; + if (_dir > 330) then + { + _dir = 360 - _dir; + if (_dir < 0) then { _dir = _dir + 360; }; + }; + _dis = _defender distance _projectile; + if (_dis < 50) then { _fov = 20 }; + if (_dis < 25) then { _fov = 30 }; + if (_dir > -_fov && _dir < _fov) then + { + [_defender, _projectile, _unit, _block] spawn FNC_BAPS_BLOCK; + _count = 11; + } else + { + _fov = _fov + 1; + }; + _count = _count + 1; + sleep 0.03; + } + }; + }; +}; + +// Threat elimination functions for vehicles +FNC_BAPS_BLOCK = +{ + private ["_defender","_projectile","_unit","_block","_canBlock","_canBlockLeft","_canBlockRight","_speed","_time","_defendDistance","_wait","_sleep","_reloading","_listed","_ammo","_ammoLeft","_ammoRight", "_reloadLeft", "_reloadRight"]; + _defender = _this Select 0; + _projectile = _this Select 1; + _unit = _this Select 2; + _block = _this Select 3; + + // By default the vehicle can block from all directions + _canBlock = true; + _canBlockLeft = true; + _canBlockRight = true; + + // Get defender damage + _damage = getDammage _defender + 1; + + _do = 1; + while {_do == 1} do + { + _speed = speed _projectile; + if (_speed != 0 && alive _projectile) then + { + // Calculate the flight time of the projectile + _dis = _defender distance _projectile; + _time = _dis / 1000 / _speed * 60 * 60; + // Ajust defend distance based on speed + _speedAdjustment = _speed / 110; + // Constant minimum distance to defend + _defendConstant = 10; + // Degrade performance for damage + _degradeDamage = _damage * _damage; + if (_degradeDamage > 1) then { _degradeDamage = _degradeDamage * 0.6 }; + // Calculate defence distance + _defendDistance = (_speedAdjustment + _defendConstant) / _degradeDamage; + // Calculate time to wait to reach _defendDistance + _wait = _defendDistance / 1000 / _speed * 60 * 60; + // Set sleep time + _sleep = _time - _wait; + + + + // Only activate once the flight time is longer than the wait time + if (_wait > _sleep) then + { + // Get ammo count + _ammoLeft = _defender getVariable "ammo_left"; + _ammoRight = _defender getVariable "ammo_right"; + + // Get reloading timers + _reloadLeft = _defender getVariable "reloading_left"; + _reloadRight = _defender getVariable "reloading_right"; + + // Check if the vehicle's APS is reloading on default/left side + if ((_block == "left" || _block == "true") && _reloadLeft == 1) then + { + _canBlock = false; + }; + // Check if the vehicle's APS is reloading on right side + if (_block == "right" && _reloadRight == 1) then + { + _canBlock = false; + }; + // Check if the vehicles's default/left APS has ammo left + if (_canBlock && (_block == "left" || _block == "true")) then + { + if (_ammoLeft < 1) then + { + _canBlock = false; + }; + if (_ammoLeft > 0) then + { + _defender setVariable ["ammo_left", (_ammoLeft-1), true]; + // Degrade performance for every use + if (_ammoLeft < 4) then + { + _dDis = (5 / _ammoLeft); + _degradeUses = (_dDis * _dDis) / 1000 / _speed * 60 * 60; + _sleep = _sleep + _degradeUses; + }; + }; + }; + // Check if the vehicles's right APS has ammo left + if (_canBlock && _block == "right" ) then + { + if (_ammoRight < 1) then + { + _canBlock = false; + }; + if (_ammoRight > 0) then + { + _defender setVariable ["ammo_right", (_ammoRight-1), true]; + // Degrade performance for every use + if (_ammoRight < 4) then + { + _dDis = (5 / _ammoRight); + _degradeUses = (_dDis * _dDis) / 1000 / _speed * 60 * 60; + _sleep = _sleep + _degradeUses; + }; + }; + }; + + // Check that threat is not more than 10m from top + _defenderAlt = getPosASL _defender select 2; + _projectileAlt = getPosASL _projectile select 2; + if ((_projectileAlt - _defenderAlt) > 14) then + { + _canBlock = false; + }; + + // Destroy the threat + if (alive _projectile && _canBlock) then + { + // Wait until threat is in range + sleep _sleep; + // Remove the threat and create FX + deleteVehicle _projectile; + _sfx = createVehicle ["SmallSecondary", position _projectile, [], 0, "CAN_COLLIDE"]; + // Do reload and ammo functions + if (_block == "true" || _block == "left") then + { + [_defender] spawn + { + _defender = _this Select 0; + _defender setVariable ["reloading_left", 1, true]; + sleep 1.2; + _defender setVariable ["reloading_left", 0, true]; + }; + }; + if (_block == "right") then + { + [_defender] spawn + { + _defender = _this Select 0; + _defender setVariable ["reloading_right", 1, true]; + sleep 1.2; + _defender setVariable ["reloading_right", 0, true]; + }; + }; + // AI behavior + _defender setBehaviour "DANGER"; + if (_defender != player) then + { + [_defender, _unit] spawn { sleep 0.5 ; (_this Select 0) doWatch (_this Select 1); }; + }; + }; + _do = 0; + }; + }; + sleep 0.01; + }; +}; \ No newline at end of file diff --git a/Baked_AIS/Baked_AIS_init.sqf b/Baked_AIS/Baked_AIS_init.sqf new file mode 100644 index 0000000..c33b118 --- /dev/null +++ b/Baked_AIS/Baked_AIS_init.sqf @@ -0,0 +1,176 @@ +// FILE : Baked_AIS_init.sqf +// AUTHOR : Bakerman +// LAST EDIT : 15/09/2013 +// Version : 0.1.3 +// DESCRIPTION : APS Initialization for Baked_AIS (Armor Improvement System) +// LICENSE : GO CRAZY - USE IT - ABUSE IT - CREDIT IF YOU WISH + +// ************************************************************* +// Call with +// call compile preprocessFile "Baked_AIS\Baked_AIS_init.sqf"; +// ************************************************************* + +// Make sure to only run once +if !(isnil "baps_running") exitwith {hintSilent "!WARNING! CANNOT RUN MULTIPLE INSTANCES OF AIS-APS";}; + +// Run only on server +if (isServer) then +{ + // Get config values + baps_startHint = 1; // Show hint on startup? + baps_startDelay = 10; // Delay script for x seconds + baps_enabledFor = 0; // Enable for types? 0 = M2A1, 1 = ALL TANKS, 2 = ALL ARMOR, 3 = ALL NATO ARMOR, 4 = ALL CSAT ARMOR + + // Revert to default values if nil + if (isNil "baps_startHint") then { _startHint = 0 }; + if (isNil "baps_startDelay") then { _startDelay = 0 }; + if (isNil "baps_enabledFor") then { _enabledFor = 0 }; + + // Broadcast Variables + publicVariable "baps_startHint"; + publicVariable "baps_startDelay"; + publicVariable "baps_enabledFor"; + + onPlayerConnected "[] spawn FNC_ADD_ACTIONS"; +}; + +// Run only on clients +if (!isServer) then +{ + // Revert to default values if nil + if (isNil "baps_startHint") then { _startHint = 0 }; + if (isNil "baps_startDelay") then { _startDelay = 0 }; + if (isNil "baps_enabledFor") then { _enabledFor = 0 }; +}; + +// Pause script for x seconds +sleep baps_startDelay; + +// Call & cache functions +call compile preprocessFile "Baked_AIS\Baked_AIS_fnc.sqf"; + +// List of weapons/launchers +baps_weapons = [ +"missiles_titan", +"launch_RPG32_F", +"launch_Titan_short_F", +"launch_B_Titan_short_F", +"launch_O_Titan_short_F", +"launch_I_Titan_short_F", +"launch_Titan_F", +"launch_B_Titan_F", +"launch_O_Titan_F", +"launch_I_Titan_F", +"launch_NLAW_F", +"missiles_DAGR", +"missiles_ASRAAM", +"missiles_SCALPEL", +"rockets_Skyfire", +"Rhs_weap_TOW_Launcher", +"rhs_weap_r73_Launcher", +"rhs_weap_rpg18", +"rhs_weap_rpg26", +"rhs_weap_rpg7", +"rhs_weap_rpg7_1pn93", +"rhs_weap_rpg7_pgo", +"rhs_weap_rshg2", +"rhs_weap_fgm148", +"rhs_weap_HellfireLauncher"]; + +// List of vehicles that defend +baps_defenders = []; +if (baps_enabledFor == 0) then { // FOR M2A1 SLAMMER ONLY + baps_defenders = [ + "B_MBT_01_cannon_F"]; // Merkava Mk4 +}; +if (baps_enabledFor == 1) then { // FOR MBT ONLY + baps_defenders = [ + "B_MBT_01_cannon_F", // Merkava Mk4 + "O_MBT_02_cannon_F"]; // T-100 +}; +if (baps_enabledFor == 2) then { // FOR ALL ARMORED VEHICLES + baps_defenders = [ + "B_APC_Tracked_01_rcws_F", + "B_APC_Wheeled_01_cannon_F", + "B_APC_Tracked_01_CRV_F", + "B_APC_Tracked_01_AA_F", + "B_MBT_01_cannon_F", + "B_MBT_01_arty_F", + "B_MBT_01_mlrs_F", + "O_MBT_02_cannon_F", + "O_MBT_02_arty_F", + "O_APC_Tracked_02_AA_F", + "O_APC_Tracked_02_cannon_F", + "O_APC_Wheeled_02_rcws_F", + "I_APC_Wheeled_03_cannon_F"]; +}; +if (baps_enabledFor == 3) then { // BLUFOR / NATO ONLY + baps_defenders = [ + "B_APC_Tracked_01_rcws_F", + "B_APC_Wheeled_01_cannon_F", + "B_APC_Tracked_01_CRV_F", + "B_APC_Tracked_01_AA_F", + "B_MBT_01_cannon_F", + "B_MBT_01_arty_F", + "B_MBT_01_mlrs_F"]; +}; +if (baps_enabledFor == 4) then { // OPFOR / CSAT ONLY + baps_defenders = [ + "O_MBT_02_cannon_F", + "O_MBT_02_arty_F", + "O_APC_Tracked_02_AA_F", + "O_APC_Tracked_02_cannon_F", + "O_APC_Wheeled_02_rcws_F"]; +}; + +// Get an array of every land vehicle and assign ammo count +// Add actions for all units and vehicles +baps_vehiclelist = []; +[] spawn +{ + while { true } do + { + { + if (!(_x in baps_vehiclelist) && (alive _x) && ((typeOf _x) in baps_defenders)) then + { + baps_vehiclelist set [count baps_vehiclelist, _x]; + _x setVariable ["ammo_left", 4, true]; + _x setVariable ["ammo_right", 4, true]; + _x setVariable ["reloading_left", 0, true]; + _x setVariable ["reloading_right", 0, true]; + }; + } forEach vehicles; + [] spawn FNC_ADD_ACTIONS; + sleep 10; + }; +}; + +baps_unitsActionList = []; +baps_vehiclesActionsList = []; + +FNC_ADD_ACTIONS = +{ + { + if (!(_x in baps_unitsActionList)) then + { + _x addEventHandler ["Fired",{_this spawn FNC_BAPS_FIRED}]; + baps_unitsActionList set [count baps_unitsActionList, _x]; + }; + } forEach allUnits; + + { + if (!(_x in baps_vehiclesActionsList)) then + { + _x addEventHandler ["Fired",{_this spawn FNC_BAPS_FIRED}]; + baps_vehiclesActionsList set [count baps_vehiclesActionsList, _x]; + }; + } forEach vehicles; +}; + +// Hint that system is active +if (baps_startHint == 1) then { + hintSilent "AIS-APS SCRIPT ACTIVE"; +}; + +// AIS-APS is active has run +baps_running = true; \ No newline at end of file diff --git a/CHVD/CfgFunctions.hpp b/CHVD/CfgFunctions.hpp new file mode 100644 index 0000000..8134c3d --- /dev/null +++ b/CHVD/CfgFunctions.hpp @@ -0,0 +1,19 @@ +class CHVD +{ + tag = "CHVD"; + class script + { + file = "CHVD"; + class onCheckedChanged {}; + class onSliderChange {}; + class onLBSelChanged {}; + class onEBinput {}; + class onEBterrainInput {}; + class selTerrainQuality {}; + class updateTerrain {}; + class updateSettings {}; + class openDialog {}; + class localize {}; + class init {postInit = 1;}; + }; +}; \ No newline at end of file diff --git a/CHVD/dialog.hpp b/CHVD/dialog.hpp new file mode 100644 index 0000000..36db18b --- /dev/null +++ b/CHVD/dialog.hpp @@ -0,0 +1,722 @@ +#define GUI_GRID_X (0) +#define GUI_GRID_Y (0) +#define GUI_GRID_W (0.025) +#define GUI_GRID_H (0.04) +#define GUI_GRID_WAbs (1) +#define GUI_GRID_HAbs (1) + +class CHVD_rscXSliderH +{ + style="0x400 + 0x10"; + shadow=0; + x=0; + y=0; + h=0.029412; + w=0.40000001; + color[]={1,1,1,0.60000002}; + colorActive[]={1,1,1,1}; + colorDisabled[]={1,1,1,0.2}; + arrowEmpty="\A3\ui_f\data\gui\cfg\slider\arrowEmpty_ca.paa"; + arrowFull="\A3\ui_f\data\gui\cfg\slider\arrowFull_ca.paa"; + border="\A3\ui_f\data\gui\cfg\slider\border_ca.paa"; + thumb="\A3\ui_f\data\gui\cfg\slider\thumb_ca.paa"; + tooltipColorText[]={1,1,1,1}; + tooltipColorBox[]={1,1,1,1}; + tooltipColorShade[]={0,0,0,0.64999998}; +}; +class CHVD_rscCheckbox +{ + type=77; + style=0; + checked=0; + x="0.375 * safezoneW + safezoneX"; + y="0.36 * safezoneH + safezoneY"; + w="0.025 * safezoneW"; + h="0.04 * safezoneH"; + color[]={1,1,1,0.69999999}; + colorFocused[]={1,1,1,1}; + colorHover[]={1,1,1,1}; + colorPressed[]={1,1,1,1}; + colorDisabled[]={1,1,1,0.2}; + colorBackground[]={0,0,0,0}; + colorBackgroundFocused[]={0,0,0,0}; + colorBackgroundHover[]={0,0,0,0}; + colorBackgroundPressed[]={0,0,0,0}; + colorBackgroundDisabled[]={0,0,0,0}; + textureChecked="\A3\Ui_f\data\GUI\RscCommon\RscCheckBox\CheckBox_checked_ca.paa"; + textureUnchecked="\A3\Ui_f\data\GUI\RscCommon\RscCheckBox\CheckBox_unchecked_ca.paa"; + textureFocusedChecked="\A3\Ui_f\data\GUI\RscCommon\RscCheckBox\CheckBox_checked_ca.paa"; + textureFocusedUnchecked="\A3\Ui_f\data\GUI\RscCommon\RscCheckBox\CheckBox_unchecked_ca.paa"; + textureHoverChecked="\A3\Ui_f\data\GUI\RscCommon\RscCheckBox\CheckBox_checked_ca.paa"; + textureHoverUnchecked="\A3\Ui_f\data\GUI\RscCommon\RscCheckBox\CheckBox_unchecked_ca.paa"; + texturePressedChecked="\A3\Ui_f\data\GUI\RscCommon\RscCheckBox\CheckBox_checked_ca.paa"; + texturePressedUnchecked="\A3\Ui_f\data\GUI\RscCommon\RscCheckBox\CheckBox_unchecked_ca.paa"; + textureDisabledChecked="\A3\Ui_f\data\GUI\RscCommon\RscCheckBox\CheckBox_checked_ca.paa"; + textureDisabledUnchecked="\A3\Ui_f\data\GUI\RscCommon\RscCheckBox\CheckBox_unchecked_ca.paa"; + tooltipColorText[]={1,1,1,1}; + tooltipColorBox[]={1,1,1,1}; + tooltipColorShade[]={0,0,0,0.64999998}; + soundEnter[]= + { + "", + 0.1, + 1 + }; + soundPush[]= + { + "", + 0.1, + 1 + }; + soundClick[]= + { + "", + 0.1, + 1 + }; + soundEscape[]= + { + "", + 0.1, + 1 + }; +}; +class CHVD_rscButton +{ + type=16; + style="0x02 + 0xC0"; + default=0; + shadow=0; + x=0; + y=0; + w=0.095588997; + h=0.039216001; + animTextureNormal="#(argb,8,8,3)color(1,1,1,1)"; + animTextureDisabled="#(argb,8,8,3)color(1,1,1,1)"; + animTextureOver="#(argb,8,8,3)color(1,1,1,1)"; + animTextureFocused="#(argb,8,8,3)color(1,1,1,1)"; + animTexturePressed="#(argb,8,8,3)color(1,1,1,1)"; + animTextureDefault="#(argb,8,8,3)color(1,1,1,1)"; + colorBackground[]={0,0,0,0.80000001}; + colorBackgroundFocused[]={1,1,1,1}; + colorBackground2[]={0.75,0.75,0.75,1}; + color[]={1,1,1,1}; + colorFocused[]={0,0,0,1}; + color2[]={0,0,0,1}; + colorText[]={1,1,1,1}; + colorDisabled[]={1,1,1,0.25}; + period=1.2; + periodFocus=1.2; + periodOver=1.2; + size="( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + sizeEx="( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + tooltipColorText[]={1,1,1,1}; + tooltipColorBox[]={1,1,1,1}; + tooltipColorShade[]={0,0,0,0.64999998}; + font="PuristaLight"; + class TextPos + { + left="0.25 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; + top="( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) - ( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)) / 2"; + right=0.0049999999; + bottom=0; + }; + class Attributes + { + font="PuristaLight"; + color="#E5E5E5"; + align="left"; + shadow="false"; + }; + class ShortcutPos + { + left="(6.25 * ( ((safezoneW / safezoneH) min 1.2) / 40)) - 0.0225 - 0.005"; + top=0.0049999999; + w=0.022500001; + h=0.029999999; + }; + soundEnter[]= + { + "\A3\ui_f\data\sound\RscButtonMenu\soundEnter", + 0.090000004, + 1 + }; + soundPush[]= + { + "\A3\ui_f\data\sound\RscButtonMenu\soundPush", + 0.090000004, + 1 + }; + soundClick[]= + { + "\A3\ui_f\data\sound\RscButtonMenu\soundClick", + 0.090000004, + 1 + }; + soundEscape[]= + { + "\A3\ui_f\data\sound\RscButtonMenu\soundEscape", + 0.090000004, + 1 + }; + textureNoShortcut="#(argb,8,8,3)color(0,0,0,0)"; + class HitZone + { + left=0; + top=0; + right=0; + bottom=0; + }; + class AttributesImage + { + font="PuristaMedium"; + color="#E5E5E5"; + align="left"; + }; +}; +class CHVD_rscText +{ + type = 0; + x=0; + y=0; + h=0.037; + w=0.30000001; + style=0; + shadow=0; + colorShadow[]={0,0,0,0.5}; + font="PuristaMedium"; + size="( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + SizeEx="( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + colorText[]={1,1,1,1}; + colorBackground[]={0,0,0,0}; + linespacing=1; + tooltipColorText[]={1,1,1,1}; + tooltipColorBox[]={1,1,1,1}; + tooltipColorShade[]={0,0,0,0.64999998}; + text = ""; +}; +class CHVD_rscTextRight +{ + type = 0; + x=0; + y=0; + h=0.037; + w=0.30000001; + style=0x01; + shadow=0; + colorShadow[]={0,0,0,0.5}; + font="PuristaMedium"; + size="( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + SizeEx="( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + colorText[]={1,1,1,1}; + colorBackground[]={0,0,0,0}; + linespacing=1; + tooltipColorText[]={1,1,1,1}; + tooltipColorBox[]={1,1,1,1}; + tooltipColorShade[]={0,0,0,0.64999998}; + text = ""; +}; +class CHVD_rscFrame +{ + type = 0; + idc = -1; + style = 0; + shadow = 1; + colorBackground[] = + { + 0, + 0, + 0, + 0 + }; + colorText[] = + { + 1, + 1, + 1, + 1 + }; + font = "PuristaMedium"; + sizeEx = 0.02; + text = ""; +}; +class CHVD_rscXListBox +{ + deletable = 0; + fade = 0; + idc = -1; + type = 42; + x = 0.1; + y = 0.1; + color[] = {1, 1, 1, 0.6}; + colorActive[] = {1, 1, 1, 1}; + colorDisabled[] = {1, 1, 1, 0.25}; + colorSelect[] = {0.95, 0.95, 0.95, 1}; + colorText[] = {1, 1, 1, 1}; + soundSelect[] = {"\A3\ui_f\data\sound\RscListbox\soundSelect", 0.09, 1}; + colorPicture[] = {1, 1, 1, 1}; + colorPictureSelected[] = {1, 1, 1, 1}; + colorPictudeDisabled[] = {1, 1, 1, 0.25}; + tooltipColorText[] = {1, 1, 1, 1}; + tooltipColorBox[] = {1, 1, 1, 1}; + tooltipColorShade[] = {0, 0, 0, 0.65}; + style = "0x400 + 0x02 + 0x10"; + shadow = 2; + arrowEmpty = "\A3\ui_f\data\gui\cfg\slider\arrowEmpty_ca.paa"; + arrowFull = "\A3\ui_f\data\gui\cfg\slider\arrowFull_ca.paa"; + border = "\A3\ui_f\data\gui\cfg\slider\border_ca.paa"; + w = 0.14706; + h = 0.039216; + font = "PuristaMedium"; + sizeEx = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + colorPictureDisabled[] = {1, 1, 1, 1}; +}; +class CHVD_rscEdit +{ + type=2; + style="0x40"; + autocomplete = ""; + font="PuristaMedium"; + shadow=2; + sizeEx="( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + colorBackground[]={0,0,0,1}; + colorText[]={0.94999999,0.94999999,0.94999999,1}; + colorDisabled[]={1,1,1,0.25}; + colorSelection[]= + { + "(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])", + "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])", + "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])", + 1 + }; + canModify=1; + tooltipColorText[]={1,1,1,1}; + tooltipColorBox[]={1,1,1,1}; + tooltipColorShade[]={0,0,0,0.64999998}; + text = ""; +}; +class CHVD_dialog +{ + idd = 2900; + movingEnable = false; + moving = 1; + onLoad = "[_this] call CHVD_fnc_localize"; + onUnload = ""; + + class controlsBackground + { + class CHVD_rscBackground: CHVD_rscFrame + { + idc = 1800; + + x = 7 * GUI_GRID_W + GUI_GRID_X; + y = 1.6 * GUI_GRID_H + GUI_GRID_Y; + w = 24.5 * GUI_GRID_W; + h = 19.7 * GUI_GRID_H; + colorBackground[] = {0,0,0,0.7}; + }; + class CHVD_rscTitle: CHVD_rscText + { + idc = 1000; + + text = "VIEW DISTANCE SETTINGS"; //--- ToDo: Localize; + x = 7 * GUI_GRID_W + GUI_GRID_X; + y = 0.5 * GUI_GRID_H + GUI_GRID_Y; + w = 24.5 * GUI_GRID_W; + h = 1 * GUI_GRID_H; + colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])","(profilenamespace getvariable ['GUI_BCG_RGB_A',0.7])"}; + }; + class CHVD_rscFootHeaderText: CHVD_rscTextRight + { + idc = 1001; + + text = "ON FOOT"; //--- ToDo: Localize; + x = 7 * GUI_GRID_W + GUI_GRID_X; + y = 2 * GUI_GRID_H + GUI_GRID_Y; + w = 7 * GUI_GRID_W; + h = 1 * GUI_GRID_H; + colorBackground[] = {0,0,0,1}; + }; + class CHVD_rscFootViewText: CHVD_rscTextRight + { + idc = 1002; + + text = "VIEW:"; //--- ToDo: Localize; + x = 7.5 * GUI_GRID_W + GUI_GRID_X; + y = 3.5 * GUI_GRID_H + GUI_GRID_Y; + w = 6.5 * GUI_GRID_W; + h = 1 * GUI_GRID_H; + }; + class CHVD_rscFootObjText: CHVD_rscTextRight + { + idc = 1003; + + text = "OBJECT:"; //--- ToDo: Localize; + x = 7.5 * GUI_GRID_W + GUI_GRID_X; + y = 5 * GUI_GRID_H + GUI_GRID_Y; + w = 6.5 * GUI_GRID_W; + h = 1 * GUI_GRID_H; + }; + class CHVD_rscFootTerrainText: CHVD_rscTextRight + { + idc = 1005; + + text = "TERRAIN:"; //--- ToDo: Localize; + x = 7.5 * GUI_GRID_W + GUI_GRID_X; + y = 6.5 * GUI_GRID_H + GUI_GRID_Y; + w = 6.5 * GUI_GRID_W; + h = 1 * GUI_GRID_H; + }; + class CHVD_rscCarHeaderText: CHVD_rscTextRight + { + idc = 1008; + + text = "IN CAR"; //--- ToDo: Localize; + x = 7 * GUI_GRID_W + GUI_GRID_X; + y = 8.5 * GUI_GRID_H + GUI_GRID_Y; + w = 7 * GUI_GRID_W; + h = 1 * GUI_GRID_H; + colorBackground[] = {0,0,0,1}; + }; + class CHVD_rscCarSyncText: CHVD_rscTextRight + { + idc = 1009; + + text = "Sync object with view"; //--- ToDo: Localize; + x = 17 * GUI_GRID_W + GUI_GRID_X; + y = 8.5 * GUI_GRID_H + GUI_GRID_Y; + w = 12.5 * GUI_GRID_W; + h = 1 * GUI_GRID_H; + }; + class CHVD_rscCarViewText: CHVD_rscTextRight + { + idc = 1010; + + text = "VIEW:"; //--- ToDo: Localize; + x = 7.5 * GUI_GRID_W + GUI_GRID_X; + y = 10 * GUI_GRID_H + GUI_GRID_Y; + w = 6.5 * GUI_GRID_W; + h = 1 * GUI_GRID_H; + }; + class CHVD_rscAirObjText: CHVD_rscTextRight + { + idc = 1011; + + text = "OBJECT:"; //--- ToDo: Localize; + x = 7.5 * GUI_GRID_W + GUI_GRID_X; + y = 18 * GUI_GRID_H + GUI_GRID_Y; + w = 6.5 * GUI_GRID_W; + h = 1 * GUI_GRID_H; + }; + class CHVD_rscCarTerrainText: CHVD_rscTextRight + { + idc = 1012; + + text = "TERRAIN:"; //--- ToDo: Localize; + x = 7.5 * GUI_GRID_W + GUI_GRID_X; + y = 13 * GUI_GRID_H + GUI_GRID_Y; + w = 6.5 * GUI_GRID_W; + h = 1 * GUI_GRID_H; + }; + class CHVD_rscFootSyncText: CHVD_rscTextRight + { + idc = 1004; + + text = "Sync object with view"; //--- ToDo: Localize; + x = 17 * GUI_GRID_W + GUI_GRID_X; + y = 2 * GUI_GRID_H + GUI_GRID_Y; + w = 12.5 * GUI_GRID_W; + h = 1 * GUI_GRID_H; + }; + class CHVD_rscAirHeaderText: CHVD_rscTextRight + { + idc = 1015; + + text = "IN AIR"; //--- ToDo: Localize; + x = 7 * GUI_GRID_W + GUI_GRID_X; + y = 15 * GUI_GRID_H + GUI_GRID_Y; + w = 7 * GUI_GRID_W; + h = 1 * GUI_GRID_H; + colorBackground[] = {0,0,0,1}; + }; + class CHVD_rscAirViewText: CHVD_rscTextRight + { + idc = 1016; + + text = "VIEW:"; //--- ToDo: Localize; + x = 7.5 * GUI_GRID_W + GUI_GRID_X; + y = 16.5 * GUI_GRID_H + GUI_GRID_Y; + w = 6.5 * GUI_GRID_W; + h = 1 * GUI_GRID_H; + }; + class CHVD_rscAirTerrainText: CHVD_rscTextRight + { + idc = 1019; + + text = "TERRAIN:"; //--- ToDo: Localize; + x = 7.5 * GUI_GRID_W + GUI_GRID_X; + y = 19.5 * GUI_GRID_H + GUI_GRID_Y; + w = 6.5 * GUI_GRID_W; + h = 1 * GUI_GRID_H; + }; + class CHVD_rscAirSyncText: CHVD_rscTextRight + { + idc = 1020; + + text = "Sync object with view"; //--- ToDo: Localize; + x = 17 * GUI_GRID_W + GUI_GRID_X; + y = 15 * GUI_GRID_H + GUI_GRID_Y; + w = 12.5 * GUI_GRID_W; + h = 1 * GUI_GRID_H; + }; + class CHVD_rscCarObjText: CHVD_rscTextRight + { + idc = 1021; + + text = "OBJECT:"; //--- ToDo: Localize; + x = 7.5 * GUI_GRID_W + GUI_GRID_X; + y = 11.5 * GUI_GRID_H + GUI_GRID_Y; + w = 6.5 * GUI_GRID_W; + h = 1 * GUI_GRID_H; + }; + }; + class controls + { + class CHVD_rscFootViewSlider: CHVD_rscXSliderH + { + idc = 1900; + type = 43; + onSliderPosChanged = "['CHVD_foot', _this select 0, _this select 1, 1006, 'CHVD_footObj', 1901, 1007, 'CHVD_footSyncObj'] call CHVD_fnc_onSliderChange"; + + x = 14 * GUI_GRID_W + GUI_GRID_X; + y = 3.5 * GUI_GRID_H + GUI_GRID_Y; + w = 12.5 * GUI_GRID_W; + h = 1 * GUI_GRID_H; + }; + class CHVD_rscFootObjSlider: CHVD_rscXSliderH + { + idc = 1901; + type = 43; + onSliderPosChanged = "['CHVD_footObj', _this select 0, _this select 1, 1007] call CHVD_fnc_onSliderChange"; + + x = 14 * GUI_GRID_W + GUI_GRID_X; + y = 5 * GUI_GRID_H + GUI_GRID_Y; + w = 12.5 * GUI_GRID_W; + h = 1 * GUI_GRID_H; + }; + class CHVD_rscCarViewSlider: CHVD_rscXSliderH + { + idc = 1902; + type = 43; + onSliderPosChanged = "['CHVD_car', _this select 0, _this select 1, 1013, 'CHVD_carObj', 1903, 1014, 'CHVD_carSyncObj'] call CHVD_fnc_onSliderChange"; + + x = 14 * GUI_GRID_W + GUI_GRID_X; + y = 10 * GUI_GRID_H + GUI_GRID_Y; + w = 12.5 * GUI_GRID_W; + h = 1 * GUI_GRID_H; + }; + class CHVD_rscCarObjSlider: CHVD_rscXSliderH + { + idc = 1903; + type = 43; + onSliderPosChanged = "['CHVD_carObj', _this select 0, _this select 1, 1014] call CHVD_fnc_onSliderChange"; + + x = 14 * GUI_GRID_W + GUI_GRID_X; + y = 11.5 * GUI_GRID_H + GUI_GRID_Y; + w = 12.5 * GUI_GRID_W; + h = 1 * GUI_GRID_H; + }; + class CHVD_rscAirViewSlider: CHVD_rscXSliderH + { + idc = 1904; + type = 43; + onSliderPosChanged = "['CHVD_air', _this select 0, _this select 1, 1017, 'CHVD_airObj', 1905, 1018, 'CHVD_airSyncObj'] call CHVD_fnc_onSliderChange"; + + x = 14 * GUI_GRID_W + GUI_GRID_X; + y = 16.5 * GUI_GRID_H + GUI_GRID_Y; + w = 12.5 * GUI_GRID_W; + h = 1 * GUI_GRID_H; + }; + class CHVD_rscAirObjSlider: CHVD_rscXSliderH + { + idc = 1905; + type = 43; + onSliderPosChanged = "['CHVD_airObj', _this select 0, _this select 1, 1018] call CHVD_fnc_onSliderChange"; + + x = 14 * GUI_GRID_W + GUI_GRID_X; + y = 18 * GUI_GRID_H + GUI_GRID_Y; + w = 12.5 * GUI_GRID_W; + h = 1 * GUI_GRID_H; + }; + class CHVD_rscFootViewDistance: CHVD_rscEdit + { + idc = 1006; + onKeyDown = "['CHVD_foot', 1900, _this select 0, 'CHVD_footObj', 1901, 1007, 'CHVD_footSyncObj'] call CHVD_fnc_onEBinput"; + maxChars = 5; + + x = 27 * GUI_GRID_W + GUI_GRID_X; + y = 3.5 * GUI_GRID_H + GUI_GRID_Y; + w = 3.5 * GUI_GRID_W; + h = 1 * GUI_GRID_H; + }; + class CHVD_rscFootObjDistance: CHVD_rscEdit + { + idc = 1007; + onKeyDown = "['CHVD_footObj', 1901, _this select 0] call CHVD_fnc_onEBinput"; + maxChars = 5; + + x = 27 * GUI_GRID_W + GUI_GRID_X; + y = 5 * GUI_GRID_H + GUI_GRID_Y; + w = 3.5 * GUI_GRID_W; + h = 1 * GUI_GRID_H; + }; + class CHVD_rscCarViewDistance: CHVD_rscEdit + { + idc = 1013; + onKeyDown = "['CHVD_car', 1902, _this select 0, 'CHVD_carObj', 1903, 1014, 'CHVD_carSyncObj'] call CHVD_fnc_onEBinput"; + maxChars = 5; + + x = 27 * GUI_GRID_W + GUI_GRID_X; + y = 10 * GUI_GRID_H + GUI_GRID_Y; + w = 3.5 * GUI_GRID_W; + h = 1 * GUI_GRID_H; + }; + class CHVD_rscCarObjDistance: CHVD_rscEdit + { + idc = 1014; + onKeyDown = "['CHVD_carObj', 1903, _this select 0] call CHVD_fnc_onEBinput"; + maxChars = 5; + + x = 27 * GUI_GRID_W + GUI_GRID_X; + y = 11.5 * GUI_GRID_H + GUI_GRID_Y; + w = 3.5 * GUI_GRID_W; + h = 1 * GUI_GRID_H; + }; + class CHVD_rscAirViewDistance: CHVD_rscEdit + { + idc = 1017; + onKeyDown = "['CHVD_air', 1904, _this select 0, 'CHVD_airObj', 1905, 1018, 'CHVD_airSyncObj'] call CHVD_fnc_onEBinput"; + maxChars = 5; + + x = 27 * GUI_GRID_W + GUI_GRID_X; + y = 16.5 * GUI_GRID_H + GUI_GRID_Y; + w = 3.5 * GUI_GRID_W; + h = 1 * GUI_GRID_H; + }; + class CHVD_rscAirObjDistance: CHVD_rscEdit + { + idc = 1018; + onKeyDown = "['CHVD_airObj', 1905, _this select 0] call CHVD_fnc_onEBinput"; + maxChars = 5; + + x = 27 * GUI_GRID_W + GUI_GRID_X; + y = 18 * GUI_GRID_H + GUI_GRID_Y; + w = 3.5 * GUI_GRID_W; + h = 1 * GUI_GRID_H; + }; + class CHVD_rscClose: CHVD_rscButton + { + idc = 1612; + onButtonClick = "closeDialog 2900"; + + text = "Close"; //--- ToDo: Localize; + x = 7 * GUI_GRID_W + GUI_GRID_X; + y = 21.4 * GUI_GRID_H + GUI_GRID_Y; + w = 24.5 * GUI_GRID_W; + h = 1 * GUI_GRID_H; + }; + class CHVD_rscFootSyncCheckbox: CHVD_rscCheckbox + { + idc = 2800; + onCheckedChanged = "[_this select 1, 'CHVD_footSyncObj', 1901, 1007, 1900, 'CHVD_footObj'] call CHVD_fnc_onCheckedChanged"; + + x = 29.2 * GUI_GRID_W + GUI_GRID_X; + y = 1.88 * GUI_GRID_H + GUI_GRID_Y; + w = 1.45 * GUI_GRID_W; + h = 1.25 * GUI_GRID_H; + sizeEx = 0 * (0.04) * (0.04) * (0.04) * (0.04) * (0.04) * (0.04) * GUI_GRID_H; + }; + class CHVD_rscCarSyncCheckbox: CHVD_rscCheckbox + { + idc = 2801; + onCheckedChanged = "[_this select 1, 'CHVD_carSyncObj', 1903, 1014, 1902, 'CHVD_carObj'] call CHVD_fnc_onCheckedChanged"; + + x = 29.2 * GUI_GRID_W + GUI_GRID_X; + y = 8.39 * GUI_GRID_H + GUI_GRID_Y; + w = 1.45 * GUI_GRID_W; + h = 1.25 * GUI_GRID_H; + sizeEx = 0 * (0.04) * (0.04) * (0.04) * (0.04) * (0.04) * (0.04) * GUI_GRID_H; + }; + class CHVD_rscAirSyncCheckbox: CHVD_rscCheckbox + { + idc = 2802; + onCheckedChanged = "[_this select 1, 'CHVD_airSyncObj', 1905, 1018, 1904, 'CHVD_airObj'] call CHVD_fnc_onCheckedChanged"; + + x = 29.2 * GUI_GRID_W + GUI_GRID_X; + y = 14.85 * GUI_GRID_H + GUI_GRID_Y; + w = 1.45 * GUI_GRID_W; + h = 1.25 * GUI_GRID_H; + sizeEx = 0 * (0.04) * (0.04) * (0.04) * (0.04) * (0.04) * (0.04) * GUI_GRID_H; + }; + class CHVD_footTerrainListbox: CHVD_rscXListBox + { + idc = 1500; + + x = 14 * GUI_GRID_W + GUI_GRID_X; + y = 6.5 * GUI_GRID_H + GUI_GRID_Y; + w = 12.5 * GUI_GRID_W; + h = 1 * GUI_GRID_H; + }; + class CHVD_carTerrainListbox: CHVD_rscXListBox + { + idc = 1501; + + x = 14 * GUI_GRID_W + GUI_GRID_X; + y = 13 * GUI_GRID_H + GUI_GRID_Y; + w = 12.5 * GUI_GRID_W; + h = 1 * GUI_GRID_H; + }; + class CHVD_airTerrainListbox: CHVD_rscXListBox + { + idc = 1502; + + x = 14 * GUI_GRID_W + GUI_GRID_X; + y = 19.5 * GUI_GRID_H + GUI_GRID_Y; + w = 12.5 * GUI_GRID_W; + h = 1 * GUI_GRID_H; + }; + class CHVD_footTerrainEdit: CHVD_rscEdit + { + idc = 1400; + onKeyDown = "['CHVD_footTerrain', _this select 0, 1500] call CHVD_fnc_onEBterrainInput"; + maxChars = 5; + + x = 27 * GUI_GRID_W + GUI_GRID_X; + y = 6.5 * GUI_GRID_H + GUI_GRID_Y; + w = 3.5 * GUI_GRID_W; + h = 1 * GUI_GRID_H; + }; + class CHVD_carTerrainEdit: CHVD_rscEdit + { + idc = 1401; + onKeyDown = "['CHVD_carTerrain', _this select 0, 1501] call CHVD_fnc_onEBterrainInput"; + maxChars = 5; + + x = 27 * GUI_GRID_W + GUI_GRID_X; + y = 13 * GUI_GRID_H + GUI_GRID_Y; + w = 3.5 * GUI_GRID_W; + h = 1 * GUI_GRID_H; + }; + class CHVD_airTerrainEdit: CHVD_rscEdit + { + idc = 1402; + onKeyDown = "['CHVD_airTerrain', _this select 0, 1502] call CHVD_fnc_onEBterrainInput"; + maxChars = 5; + + x = 27 * GUI_GRID_W + GUI_GRID_X; + y = 19.5 * GUI_GRID_H + GUI_GRID_Y; + w = 3.5 * GUI_GRID_W; + h = 1 * GUI_GRID_H; + }; + }; +}; \ No newline at end of file diff --git a/CHVD/fn_addonInit.sqf b/CHVD/fn_addonInit.sqf new file mode 100644 index 0000000..ec93a88 --- /dev/null +++ b/CHVD/fn_addonInit.sqf @@ -0,0 +1,53 @@ +[] spawn { + //Wait for mission init, in case there are variables defined some place else + waitUntil {time > 0}; + + CHVD_scriptRunning = if (isNil "CHVD_scriptRunning") then {false} else {CHVD_scriptRunning}; + if (CHVD_scriptRunning) exitWith {systemChat "CHVD script is running. Addon disabled"}; + + //Define variables, load from profileNamespace + CHVD_allowNoGrass = if (isNil "CHVD_allowNoGrass") then {true} else {CHVD_allowNoGrass}; + CHVD_maxView = if (isNil "CHVD_maxView") then {12000} else {CHVD_maxView}; + CHVD_maxObj = if (isNil "CHVD_maxObj") then {12000} else {CHVD_maxObj}; + + CHVD_footSyncObj = profileNamespace getVariable ["CHVD_footSyncObj",false]; + CHVD_carSyncObj = profileNamespace getVariable ["CHVD_carSyncObj",false]; + CHVD_airSyncObj = profileNamespace getVariable ["CHVD_airSyncObj",false]; + + CHVD_foot = (profileNamespace getVariable ["CHVD_foot",viewDistance]) min CHVD_maxView; + CHVD_car = (profileNamespace getVariable ["CHVD_car",viewDistance]) min CHVD_maxView; + CHVD_air = (profileNamespace getVariable ["CHVD_air",viewDistance]) min CHVD_maxView; + + CHVD_footObj = (profileNamespace getVariable ["CHVD_footObj",viewDistance]) min CHVD_maxObj; + CHVD_carObj = (profileNamespace getVariable ["CHVD_carObj",viewDistance]) min CHVD_maxObj; + CHVD_airObj = (profileNamespace getVariable ["CHVD_airObj",viewDistance]) min CHVD_maxObj; + + CHVD_footTerrain = if (CHVD_allowNoGrass) then {profileNamespace getVariable ["CHVD_footTerrain",25]} else {(profileNamespace getVariable ["CHVD_footTerrain",25]) min 48.99 max 3.125}; + CHVD_carTerrain = if (CHVD_allowNoGrass) then {profileNamespace getVariable ["CHVD_carTerrain",25]} else {(profileNamespace getVariable ["CHVD_carTerrain",25]) min 48.99 max 3.125}; + CHVD_airTerrain = if (CHVD_allowNoGrass) then {profileNamespace getVariable ["CHVD_airTerrain",25]} else {(profileNamespace getVariable ["CHVD_airTerrain",25]) min 48.99 max 3.125}; + + //Begin initialization + waitUntil {!isNull player}; + waitUntil {!isNull findDisplay 46}; + + _actionText = if (isLocalized "STR_chvd_title") then {localize "STR_chvd_title"} else {"View Distance Settings"}; + player addAction [_actionText, CHVD_fnc_openDialog, [], -99, false, true]; + player addEventHandler ["Respawn", format ["player addAction ['%1', CHVD_fnc_openDialog, [], -99, false, true]", _actionText]]; + + //Detect when to change setting type + [] spawn { + for "_i" from 0 to 1 step 0 do { + [nil, false] call CHVD_fnc_updateSettings; + _currentVehicle = vehicle player; + waitUntil {_currentVehicle != vehicle player}; + }; + }; + [] spawn { + for "_i" from 0 to 1 step 0 do { + waitUntil {UAVControl (getConnectedUAV player) select 1 != ""}; + [nil, true] call CHVD_fnc_updateSettings; + waitUntil {UAVControl (getConnectedUAV player) select 1 == ""}; + [nil, false] call CHVD_fnc_updateSettings; + }; + }; +}; \ No newline at end of file diff --git a/CHVD/fn_init.sqf b/CHVD/fn_init.sqf new file mode 100644 index 0000000..cdd19e2 --- /dev/null +++ b/CHVD/fn_init.sqf @@ -0,0 +1,51 @@ +[] spawn { + CHVD_scriptRunning = true; + //Wait for mission init, in case there are variables defined some place else + waitUntil {time > 0}; + + //Define variables, load from profileNamespace + CHVD_allowNoGrass = if (isNil "CHVD_allowNoGrass") then {true} else {CHVD_allowNoGrass}; + CHVD_maxView = if (isNil "CHVD_maxView") then {12000} else {CHVD_maxView}; + CHVD_maxObj = if (isNil "CHVD_maxObj") then {12000} else {CHVD_maxObj}; + + CHVD_footSyncObj = profileNamespace getVariable ["CHVD_footSyncObj",false]; + CHVD_carSyncObj = profileNamespace getVariable ["CHVD_carSyncObj",false]; + CHVD_airSyncObj = profileNamespace getVariable ["CHVD_airSyncObj",false]; + + CHVD_foot = (profileNamespace getVariable ["CHVD_foot",viewDistance]) min CHVD_maxView; + CHVD_car = (profileNamespace getVariable ["CHVD_car",viewDistance]) min CHVD_maxView; + CHVD_air = (profileNamespace getVariable ["CHVD_air",viewDistance]) min CHVD_maxView; + + CHVD_footObj = (profileNamespace getVariable ["CHVD_footObj",viewDistance]) min CHVD_maxObj; + CHVD_carObj = (profileNamespace getVariable ["CHVD_carObj",viewDistance]) min CHVD_maxObj; + CHVD_airObj = (profileNamespace getVariable ["CHVD_airObj",viewDistance]) min CHVD_maxObj; + + CHVD_footTerrain = if (CHVD_allowNoGrass) then {profileNamespace getVariable ["CHVD_footTerrain",25]} else {(profileNamespace getVariable ["CHVD_footTerrain",25]) min 48.99 max 3.125}; + CHVD_carTerrain = if (CHVD_allowNoGrass) then {profileNamespace getVariable ["CHVD_carTerrain",25]} else {(profileNamespace getVariable ["CHVD_carTerrain",25]) min 48.99 max 3.125}; + CHVD_airTerrain = if (CHVD_allowNoGrass) then {profileNamespace getVariable ["CHVD_airTerrain",25]} else {(profileNamespace getVariable ["CHVD_airTerrain",25]) min 48.99 max 3.125}; + + //Begin initialization + waitUntil {!isNull player}; + waitUntil {!isNull findDisplay 46}; + + _actionText = if (isLocalized "STR_chvd_title") then {localize "STR_chvd_title"} else {"View Distance Settings"}; + player addAction [_actionText, CHVD_fnc_openDialog, [], -99, false, true]; + player addEventHandler ["Respawn", format ["player addAction ['%1', CHVD_fnc_openDialog, [], -99, false, true]", _actionText]]; + + //Detect when to change setting type + [] spawn { + for "_i" from 0 to 1 step 0 do { + [nil, false] call CHVD_fnc_updateSettings; + _currentVehicle = vehicle player; + waitUntil {_currentVehicle != vehicle player}; + }; + }; + [] spawn { + for "_i" from 0 to 1 step 0 do { + waitUntil {UAVControl (getConnectedUAV player) select 1 != ""}; + [nil, true] call CHVD_fnc_updateSettings; + waitUntil {UAVControl (getConnectedUAV player) select 1 == ""}; + [nil, false] call CHVD_fnc_updateSettings; + }; + }; +}; \ No newline at end of file diff --git a/CHVD/fn_localize.sqf b/CHVD/fn_localize.sqf new file mode 100644 index 0000000..108b72e --- /dev/null +++ b/CHVD/fn_localize.sqf @@ -0,0 +1,37 @@ +_display = (_this select 0) select 0; + +if (isLocalized "STR_chvd_title") then { + (_display displayCtrl 1000) ctrlSetText (toUpper (localize "STR_chvd_title")); +}; +if (isLocalized "STR_chvd_foot") then { + (_display displayCtrl 1001) ctrlSetText (localize "STR_chvd_foot"); +}; +if (isLocalized "STR_chvd_car") then { + (_display displayCtrl 1008) ctrlSetText (localize "STR_chvd_car"); +}; +if (isLocalized "STR_chvd_air") then { + (_display displayCtrl 1015) ctrlSetText (localize "STR_chvd_air"); +}; +if (isLocalized "STR_chvd_view") then { + (_display displayCtrl 1002) ctrlSetText (localize "STR_chvd_view"); + (_display displayCtrl 1010) ctrlSetText (localize "STR_chvd_view"); + (_display displayCtrl 1016) ctrlSetText (localize "STR_chvd_view"); +}; +if (isLocalized "STR_chvd_object") then { + (_display displayCtrl 1003) ctrlSetText (localize "STR_chvd_object"); + (_display displayCtrl 1011) ctrlSetText (localize "STR_chvd_object"); + (_display displayCtrl 1021) ctrlSetText (localize "STR_chvd_object"); +}; +if (isLocalized "STR_chvd_terrain") then { + (_display displayCtrl 1005) ctrlSetText (localize "STR_chvd_terrain"); + (_display displayCtrl 1012) ctrlSetText (localize "STR_chvd_terrain"); + (_display displayCtrl 1019) ctrlSetText (localize "STR_chvd_terrain"); +}; +if (isLocalized "STR_chvd_sync") then { + (_display displayCtrl 1009) ctrlSetText (localize "STR_chvd_sync"); + (_display displayCtrl 1004) ctrlSetText (localize "STR_chvd_sync"); + (_display displayCtrl 1020) ctrlSetText (localize "STR_chvd_sync"); +}; +if (isLocalized "STR_chvd_close") then { + (_display displayCtrl 1612) ctrlSetText (localize "STR_chvd_close"); +}; \ No newline at end of file diff --git a/CHVD/fn_onCheckedChanged.sqf b/CHVD/fn_onCheckedChanged.sqf new file mode 100644 index 0000000..464ca26 --- /dev/null +++ b/CHVD/fn_onCheckedChanged.sqf @@ -0,0 +1,25 @@ +_state = [_this, 0, 0, [0]] call BIS_fnc_param; +_syncVar = [_this, 1, "", [""]] call BIS_fnc_param; +_slider = [_this, 2, controlNull, [0, controlNull]] call BIS_fnc_param; +_text = [_this, 3, controlNull, [0, controlNull]] call BIS_fnc_param; +_sliderView = [_this, 4, controlNull, [0, controlNull]] call BIS_fnc_param; +_varType = [_this, 5, "", [""]] call BIS_fnc_param; + +if (_state == 1) then { + call compile format ["%1 = true",_syncVar]; + call compile format ["profileNamespace setVariable ['%1',%1]", _syncVar]; + ctrlEnable [_slider, false]; + ctrlEnable [_text, false]; + + ctrlSetText [_text, str round ((sliderPosition _sliderView) min CHVD_maxObj)]; + sliderSetPosition [_slider, (sliderPosition _sliderView) min CHVD_maxObj]; + + call compile format ["%1 = %2", _varType, (sliderPosition _sliderView) min CHVD_maxObj]; + call compile format ["profileNamespace setVariable ['%1',%1]", _varType]; + [3] call CHVD_fnc_updateSettings; +} else { + call compile format ["%1 = false",_syncVar]; + call compile format ["profileNamespace setVariable ['%1',%1]", _syncVar]; + ctrlEnable [_slider, true]; + ctrlEnable [_text, true]; +}; \ No newline at end of file diff --git a/CHVD/fn_onEBinput.sqf b/CHVD/fn_onEBinput.sqf new file mode 100644 index 0000000..b07294a --- /dev/null +++ b/CHVD/fn_onEBinput.sqf @@ -0,0 +1,81 @@ +private ["_textValue","_updateType"]; +_varType1 = [_this, 0, "", [""]] call BIS_fnc_param; +_slider1 = [_this, 1, controlNull, [0, controlNull]] call BIS_fnc_param; +_text1 = [_this, 2, controlNull, [0, controlNull]] call BIS_fnc_param; +_varType2 = [_this, 3, "", [""]] call BIS_fnc_param; +_slider2 = [_this, 4, controlNull, [0, controlNull]] call BIS_fnc_param; +_text2 = [_this, 5, controlNull, [0, controlNull]] call BIS_fnc_param; +_syncVar = [_this, 6, "", [""]] call BIS_fnc_param; + +if (count _this < 7) then { + _updateType = 2; +} else { + if (call compile _syncVar) then { + _updateType = 3; + } else { + _updateType = 1; + }; +}; + +switch (_updateType) do { + case 1: { + _textValue = [ctrlText _text1, "0123456789"] call BIS_fnc_filterString; + _textValue = if (_textValue == "") then {0} else {call compile _textValue min 12000 max 0}; + + sliderSetPosition [_slider1, _textValue min CHVD_maxView]; + //ctrlSetText [_text1, str round (_textValue min CHVD_maxView)]; + sliderSetRange [_slider2, 0, _textValue min CHVD_maxView]; + + call compile format ["%1 = %2", _varType1, _textValue min CHVD_maxView]; + call compile format ["profileNamespace setVariable ['%1',%1]", _varType1]; + + if ((call compile _varType2) > _textValue) then { + sliderSetPosition [_slider2, _textValue min CHVD_maxObj]; + ctrlSetText [_text2, str round (_textValue min CHVD_maxObj)]; + + call compile format ["%1 = %2", _varType2, _textValue min CHVD_maxObj]; + call compile format ["profileNamespace setVariable ['%1',%1]", _varType2]; + }; + + [_updateType] call CHVD_fnc_updateSettings; + }; + case 2: { + _textValue = [ctrlText _text1, "0123456789"] call BIS_fnc_filterString; + _textValue = if (_textValue == "") then {0} else {call compile _textValue min 12000 max 0}; + + sliderSetPosition [_slider1, _textValue min CHVD_maxObj]; + //ctrlSetText [_text1, str round (_textValue min CHVD_maxObj)]; + + call compile format ["%1 = %2", _varType1, _textValue min CHVD_maxObj]; + call compile format ["profileNamespace setVariable ['%1',%1]", _varType1]; + + [_updateType] call CHVD_fnc_updateSettings; + }; + case 3: { + _textValue = [ctrlText _text1, "0123456789"] call BIS_fnc_filterString; + _textValue = if (_textValue == "") then {0} else {call compile _textValue min 12000 max 0}; + + sliderSetPosition [_slider1, _textValue min CHVD_maxView]; + //ctrlSetText [_text1, str round (_textValue min CHVD_maxView)]; + sliderSetRange [_slider2, 0, _textValue min CHVD_maxView]; + + call compile format ["%1 = %2", _varType1, _textValue min CHVD_maxView]; + call compile format ["profileNamespace setVariable ['%1',%1]", _varType1]; + + if ((call compile _varType2) > _textValue) then { + sliderSetPosition [_slider2, _textValue min CHVD_maxObj]; + ctrlSetText [_text2, str round (_textValue min CHVD_maxObj)]; + + call compile format ["%1 = %2", _varType2, _textValue min CHVD_maxObj]; + call compile format ["profileNamespace setVariable ['%1',%1]", _varType2]; + }; + + sliderSetPosition [_slider2, _textValue min CHVD_maxObj]; + ctrlSetText [_text2, str round (_textValue min CHVD_maxObj)]; + + call compile format ["%1 = %2", _varType2, _textValue min CHVD_maxObj]; + call compile format ["profileNamespace setVariable ['%1',%1]", _varType2]; + + [_updateType] call CHVD_fnc_updateSettings; + }; +}; \ No newline at end of file diff --git a/CHVD/fn_onEBterrainInput.sqf b/CHVD/fn_onEBterrainInput.sqf new file mode 100644 index 0000000..89250d5 --- /dev/null +++ b/CHVD/fn_onEBterrainInput.sqf @@ -0,0 +1,33 @@ +private ["_textValue"]; +_varType = [_this, 0, "", [""]] call BIS_fnc_param; +_textCtrl = [_this, 1, controlNull, [0, controlNull]] call BIS_fnc_param; +_listbox = [_this, 2, controlNull, [0, controlNull]] call BIS_fnc_param; + +_textValue = [ctrlText _textCtrl, "0123456789."] call BIS_fnc_filterString; +_textValue = if (_textValue == "") then {50} else {call compile _textValue min 50 max 3.125}; + + +if (!CHVD_allowNoGrass) then { + _textValue = _textValue min 48.99; +}; + +//update listbox +_listboxCtrl = (finddisplay 2900) displayCtrl _listbox; +//remove EH not to cause huge lag +_listboxCtrl ctrlRemoveAllEventHandlers "LBSelChanged"; +_sel = [_textValue] call CHVD_fnc_selTerrainQuality; +if (CHVD_allowNoGrass) then { + _listboxCtrl lbSetCurSel _sel; +} else { + _listboxCtrl lbSetCurSel (_sel - 1); +}; +//add EH again +_listboxCtrl ctrlSetEventHandler ["LBSelChanged", + format ["[_this select 1, '%1', %2] call CHVD_fnc_onLBSelChanged", _varType, _textCtrl] +]; + +//ctrlSetText [_textCtrl, str _textValue]; +call compile format ["%1 = %2",_varType, _textValue]; +call compile format ["profileNamespace setVariable ['%1',%1]", _varType]; + +[] call CHVD_fnc_updateTerrain; \ No newline at end of file diff --git a/CHVD/fn_onLBSelChanged.sqf b/CHVD/fn_onLBSelChanged.sqf new file mode 100644 index 0000000..7838bcb --- /dev/null +++ b/CHVD/fn_onLBSelChanged.sqf @@ -0,0 +1,23 @@ +private ["_index","_terrainGrid"]; +_index = _this select 0; +_varType = _this select 1; +_text = _this select 2; + +if (!CHVD_allowNoGrass) then { + _index = _index + 1; +}; + +switch (_index) do { + case 0: {_terrainGrid = 50}; + case 1: {_terrainGrid = 25}; + case 2: {_terrainGrid = 12.5}; + case 3: {_terrainGrid = 3.125}; +}; + +if (!CHVD_allowNoGrass) then { + _terrainGrid = _terrainGrid min 48.99; +}; +ctrlSetText [_text, str _terrainGrid]; +call compile format ["%1 = %2",_varType, _terrainGrid]; +call compile format ["profileNamespace setVariable ['%1',%1]", _varType]; +[] call CHVD_fnc_updateTerrain; \ No newline at end of file diff --git a/CHVD/fn_onSliderChange.sqf b/CHVD/fn_onSliderChange.sqf new file mode 100644 index 0000000..78f0948 --- /dev/null +++ b/CHVD/fn_onSliderChange.sqf @@ -0,0 +1,73 @@ +private ["_sliderPos","_updateType"]; +_varType1 = [_this, 0, "", [""]] call BIS_fnc_param; +_slider1 = ctrlIDC ([_this, 1, 0, [0, controlNull]] call BIS_fnc_param); +_sliderPos = [_this, 2, 0, [0]] call BIS_fnc_param; +_text1 = [_this, 3, 0, [0, controlNull]] call BIS_fnc_param; +_varType2 = [_this, 4, "", [""]] call BIS_fnc_param; +_slider2 = [_this, 5, 0, [0, controlNull]] call BIS_fnc_param; +_text2 = [_this, 6, 0, [0, controlNull]] call BIS_fnc_param; +_syncVar = [_this, 7, "", [""]] call BIS_fnc_param; + +if (count _this < 8) then { + _updateType = 2; +} else { + if (call compile _syncVar) then { + _updateType = 3; + } else { + _updateType = 1; + }; +}; + +switch (_updateType) do { + case 1: { + sliderSetPosition [_slider1, _sliderPos min CHVD_maxView]; + ctrlSetText [_text1, str round (_sliderPos min CHVD_maxView)]; + sliderSetRange [_slider2, 0, _sliderPos min CHVD_maxView]; + + call compile format ["%1 = %2", _varType1, _sliderPos min CHVD_maxView]; + call compile format ["profileNamespace setVariable ['%1',%1]", _varType1]; + + if ((call compile _varType2) > _sliderPos) then { + sliderSetPosition [_slider2, _sliderPos min CHVD_maxObj]; + ctrlSetText [_text2, str round (_sliderPos min CHVD_maxObj)]; + + call compile format ["%1 = %2", _varType2, _sliderPos min CHVD_maxObj]; + call compile format ["profileNamespace setVariable ['%1',%1]", _varType2]; + }; + + [_updateType] call CHVD_fnc_updateSettings; + }; + case 2: { + sliderSetPosition [_slider1, _sliderPos min CHVD_maxObj]; + ctrlSetText [_text1, str round (_sliderPos min CHVD_maxObj)]; + + call compile format ["%1 = %2", _varType1, _sliderPos min CHVD_maxObj]; + call compile format ["profileNamespace setVariable ['%1',%1]", _varType1]; + + [_updateType] call CHVD_fnc_updateSettings; + }; + case 3: { + sliderSetPosition [_slider1, _sliderPos min CHVD_maxView]; + ctrlSetText [_text1, str round (_sliderPos min CHVD_maxView)]; + sliderSetRange [_slider2, 0, _sliderPos min CHVD_maxView]; + + call compile format ["%1 = %2", _varType1, _sliderPos min CHVD_maxView]; + call compile format ["profileNamespace setVariable ['%1',%1]", _varType1]; + + if ((call compile _varType2) > _sliderPos) then { + sliderSetPosition [_slider2, _sliderPos min CHVD_maxObj]; + ctrlSetText [_text2, str round (_sliderPos min CHVD_maxObj)]; + + call compile format ["%1 = %2", _varType2, _sliderPos min CHVD_maxObj]; + call compile format ["profileNamespace setVariable ['%1',%1]", _varType2]; + }; + + sliderSetPosition [_slider2, _sliderPos min CHVD_maxObj]; + ctrlSetText [_text2, str round (_sliderPos min CHVD_maxObj)]; + + call compile format ["%1 = %2", _varType2, _sliderPos min CHVD_maxObj]; + call compile format ["profileNamespace setVariable ['%1',%1]", _varType2]; + + [_updateType] call CHVD_fnc_updateSettings; + }; +}; \ No newline at end of file diff --git a/CHVD/fn_openDialog.sqf b/CHVD/fn_openDialog.sqf new file mode 100644 index 0000000..68a01d4 --- /dev/null +++ b/CHVD/fn_openDialog.sqf @@ -0,0 +1,73 @@ +_dialog = createDialog "CHVD_dialog"; +if (!_dialog) exitWith {systemChat "Error: Can't open 'CH View Distance' dialog."}; +disableSerialization; + +{ + ctrlSetText _x; +} forEach [[1006, str round CHVD_foot],[1007, str round CHVD_footObj],[1013, str round CHVD_car],[1014, str round CHVD_carObj],[1017, str round CHVD_air],[1018, str round CHVD_airObj],[1400, str CHVD_footTerrain],[1401, str CHVD_carTerrain],[1402, str CHVD_airTerrain]]; + +{ + sliderSetRange [_x select 0, 0, _x select 2]; + sliderSetRange [_x select 3, 0, (_x select 5) min (_x select 1)]; + sliderSetSpeed [_x select 0, 500, 500]; + sliderSetSpeed [_x select 3, 500, 500]; + sliderSetPosition [_x select 0, _x select 1]; + sliderSetPosition [_x select 3, (_x select 4) min (_x select 1)]; +} forEach [[1900,CHVD_foot,CHVD_maxView,1901,CHVD_footObj,CHVD_maxObj],[1902,CHVD_car,CHVD_maxView,1903,CHVD_carObj,CHVD_maxObj],[1904,CHVD_air,CHVD_maxView,1905,CHVD_airObj,CHVD_maxObj]]; + +{ + ((finddisplay 2900) displayCtrl (_x select 0)) cbSetChecked (_x select 1); +} forEach [[2800,CHVD_footSyncObj],[2801,CHVD_carSyncObj],[2802,CHVD_airSyncObj]]; + +{ + _ctrl = ((finddisplay 2900) displayCtrl (_x select 0)); + if (CHVD_allowNoGrass) then { + _textLow = if (isLocalized "STR_chvd_low") then {localize "STR_chvd_low"} else {"Low"}; + _ctrl lbAdd _textLow; + }; + _textStandard = if (isLocalized "STR_chvd_standard") then {localize "STR_chvd_standard"} else {"Standard"}; + _ctrl lbAdd _textStandard; + _textHigh = if (isLocalized "STR_chvd_high") then {localize "STR_chvd_high"} else {"High"}; + _ctrl lbAdd _textHigh; + _textVeryHigh = if (isLocalized "STR_chvd_veryHigh") then {localize "STR_chvd_veryHigh"} else {"Very High"}; + _ctrl lbAdd _textVeryHigh; + + _sel = [_x select 1] call CHVD_fnc_selTerrainQuality; + if (CHVD_allowNoGrass) then { + _ctrl lbSetCurSel _sel; + } else { + _ctrl lbSetCurSel (_sel - 1); + }; +} forEach [[1500,CHVD_footTerrain],[1501,CHVD_carTerrain],[1502,CHVD_airTerrain]]; + +{ + _ctrl = ((finddisplay 2900) displayCtrl (_x select 0)); + _handle = _ctrl ctrlSetEventHandler ["LBSelChanged", + format ["[_this select 1, '%1', %2] call CHVD_fnc_onLBSelChanged", _x select 1, _x select 2] + ]; +} forEach [[1500,"CHVD_footTerrain",1400],[1501,"CHVD_carTerrain",1401],[1502,"CHVD_airTerrain",1402]]; + + +if (CHVD_footSyncObj) then { + ctrlEnable [1901,false]; + ctrlEnable [1007,false]; +} else { + ctrlEnable [1901,true]; + ctrlEnable [1007,true]; +}; + +if (CHVD_carSyncObj) then { + ctrlEnable [1903,false]; + ctrlEnable [1014,false]; +} else { + ctrlEnable [1903,true]; + ctrlEnable [1014,true]; +}; + +if (CHVD_airSyncObj) then { + ctrlEnable [1905,false]; + ctrlEnable [1018,false]; +} else { + ctrlEnable [1905,true]; + ctrlEnable [1018,true]; +}; \ No newline at end of file diff --git a/CHVD/fn_selTerrainQuality.sqf b/CHVD/fn_selTerrainQuality.sqf new file mode 100644 index 0000000..0853b83 --- /dev/null +++ b/CHVD/fn_selTerrainQuality.sqf @@ -0,0 +1,20 @@ +private ["_output"]; +_terrainGrid = _this select 0; +switch (true) do { + case (_terrainGrid >= 49): { + _output = 0; + }; + case (_terrainGrid >= 25): { + _output = 1; + }; + case (_terrainGrid >= 12.5): { + _output = 2; + }; + case (_terrainGrid >= 3.125): { + _output = 3; + }; + default { + _output = 0; + }; +}; +_output \ No newline at end of file diff --git a/CHVD/fn_updateSettings.sqf b/CHVD/fn_updateSettings.sqf new file mode 100644 index 0000000..e80bb0d --- /dev/null +++ b/CHVD/fn_updateSettings.sqf @@ -0,0 +1,61 @@ +_updateType = [_this, 0, 0, [0]] call BIS_fnc_param; // 1 - view, 2 - obj, 3 - both, 0 - both and terrain +_inUAV = if (isNil {_this select 1}) then {UAVControl (getConnectedUAV player) select 1 != ""} else {_this select 1}; + +if (_inUAV) then { + switch (true) do { + case (getConnectedUAV player isKindOf "LandVehicle" || getConnectedUAV player isKindOf "Ship"): { + if (_updateType == 1 || _updateType == 0 || _updateType == 3) then { + setViewDistance CHVD_car; + }; + if (_updateType == 2 || _updateType == 0 || _updateType == 3) then { + setObjectViewDistance CHVD_carObj; + }; + }; + case (getConnectedUAV player isKindOf "Man"): { + if (_updateType == 1 || _updateType == 0 || _updateType == 3) then { + setViewDistance CHVD_foot; + }; + if (_updateType == 2 || _updateType == 0 || _updateType == 3) then { + setObjectViewDistance CHVD_footObj; + }; + }; + default { + if (_updateType == 1 || _updateType == 0 || _updateType == 3) then { + setViewDistance CHVD_air; + }; + if (_updateType == 2 || _updateType == 0 || _updateType == 3) then { + setObjectViewDistance CHVD_airObj; + }; + }; + }; +} else { + switch (true) do { + case (vehicle player isKindOf "LandVehicle" || vehicle player isKindOf "Ship"): { + if (_updateType == 1 || _updateType == 0 || _updateType == 3) then { + setViewDistance CHVD_car; + }; + if (_updateType == 2 || _updateType == 0 || _updateType == 3) then { + setObjectViewDistance CHVD_carObj; + }; + }; + case (vehicle player isKindOf "Air"): { + if (_updateType == 1 || _updateType == 0 || _updateType == 3) then { + setViewDistance CHVD_air; + }; + if (_updateType == 2 || _updateType == 0 || _updateType == 3) then { + setObjectViewDistance CHVD_airObj; + }; + }; + default { + if (_updateType == 1 || _updateType == 0 || _updateType == 3) then { + setViewDistance CHVD_foot; + }; + if (_updateType == 2 || _updateType == 0 || _updateType == 3) then { + setObjectViewDistance CHVD_footObj; + }; + }; + }; +}; +if (_updateType == 0) then { + [_inUAV] call CHVD_fnc_updateTerrain; +}; \ No newline at end of file diff --git a/CHVD/fn_updateTerrain.sqf b/CHVD/fn_updateTerrain.sqf new file mode 100644 index 0000000..0e5515a --- /dev/null +++ b/CHVD/fn_updateTerrain.sqf @@ -0,0 +1,27 @@ +_inUAV = if (isNil {_this select 0}) then {UAVControl (getConnectedUAV player) select 1 != ""} else {_this select 0}; + +if (_inUAV) then { + switch (true) do { + case (getConnectedUAV player isKindOf "LandVehicle" || getConnectedUAV player isKindOf "Ship"): { + setTerrainGrid CHVD_carTerrain; + }; + case (getConnectedUAV player isKindOf "Man"): { + setTerrainGrid CHVD_footTerrain; + }; + default { + setTerrainGrid CHVD_airTerrain; + }; + }; +} else { + switch (true) do { + case (vehicle player isKindOf "LandVehicle" || vehicle player isKindOf "Ship"): { + setTerrainGrid CHVD_carTerrain; + }; + case (vehicle player isKindOf "Air"): { + setTerrainGrid CHVD_airTerrain; + }; + default { + setTerrainGrid CHVD_footTerrain; + }; + }; +}; \ No newline at end of file diff --git a/Description.ext b/Description.ext new file mode 100644 index 0000000..2b31cb9 --- /dev/null +++ b/Description.ext @@ -0,0 +1,56 @@ +author = "Jochem"; +OnLoadName = "Gemini"; +OnLoadMission = "WIP, about 60% complete"; +respawn = 3; +respawndelay = 5; +respawnOnStart = 1; +respawnVehicleDelay = 0; +disabledAI = true; +enableDebugConsole = 1; +showGroupIndicator = 0; +wreckManagerMode = 1; + +corpseManagerMode = 1; +corpseLimit = 50; +corpseRemovalMinTime = 180; +corpseRemovalMaxTime = 600; + +#include "CHVD\dialog.hpp" + +class Header +{ + gameType = Coop; // MP misison type + minPlayers = 1; //min # of players the mission supports + maxPlayers = 50; //max # of players the mission supports +}; + +class CfgFunctions +{ + #include "CHVD\CfgFunctions.hpp" +}; + +class CfgSounds +{ + sounds[] = {cookOff}; + class cookOff + { + // how the sound is referred to in the editor (e.g. trigger effects) + name = "cookOffSound"; + // filename, volume, pitch + sound[] = {"Sounds\cookoff.wav", 1, 1}; + }; +}; + +class CfgSFX +{ + sounds[] = {cookOff}; + + class cookOff + { + name = "cookOff"; + sounds[]={sound}; + sound[] = {"Sounds\cookoff.wav", db-0,1,1,5,1.2,1.2}; + empty[]= {, , , , 1 , 5, 20}; + }; +}; + diff --git a/Functions/AI/arty.sqf b/Functions/AI/arty.sqf new file mode 100644 index 0000000..caff698 --- /dev/null +++ b/Functions/AI/arty.sqf @@ -0,0 +1,43 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +//Set up var +_count = _this select 0; +_name = [5] call Zen_StringGenerateRandom; + +_marker = format["mrk_aaZone_%1",_count]; + +//Get position +_location = [_marker,0,[airfieldMarkers + blackMarkers,["mrk_area"],[]],1,0,0,0,0,0,[1,10,50],[1,0,60]] call Zen_FindGroundPosition; + +//Create marker +_marker = createMarker [_name, _location]; +_name setMarkerType "o_art"; + +//Spawn arty +_dir = round random 360; +_locationS = [_location, random 60, random 60] call BIS_fnc_relPos; +_arty1 = [_locationS, "rhs_2s3_tv"] call Zen_SpawnVehicle; +createVehicleCrew _arty1; +_arty1 addEventHandler["fired", {(_this select 0) setVehicleAmmo 1}]; +_arty1 setFuel 0; +_arty1 setVariable["JOC_caching_disabled",true]; +zeusMod addCuratorEditableObjects [[_arty1],false]; + +_dir = round random 360; +_locationS = [_location, random 60, random 60] call BIS_fnc_relPos; +_arty2 = [_locationS, "rhs_2s3_tv"] call Zen_SpawnVehicle; +createVehicleCrew _arty2; +_arty2 addEventHandler["fired", {(_this select 0) setVehicleAmmo 1}]; +_arty2 setFuel 0; +_arty2 setVariable["JOC_caching_disabled",true]; +zeusMod addCuratorEditableObjects [[_arty2],false]; + +[_arty2] join (group _arty1); + +//Spawn enemy's +_trg = createTrigger ["EmptyDetector",_location,true]; +_trg setTriggerArea [600,600,600,false]; +_trg setTriggerActivation ["WEST","PRESENT", false]; +_trg setTriggerStatements ["(!((typeOf (thisList select 0)) in jetArray)) OR ((count thisList) > 1)","[getPos thisTrigger,350,[4,true],[0,false],[0,false],[0,false],[0,false],[0,false,""cas""],[0,false]] call JOC_spawnZone;",""]; +_trg setTriggerTimeout [5,5,5,true]; \ No newline at end of file diff --git a/Functions/AI/jetMonitor.sqf b/Functions/AI/jetMonitor.sqf new file mode 100644 index 0000000..ab66abb --- /dev/null +++ b/Functions/AI/jetMonitor.sqf @@ -0,0 +1,34 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +private["_targetC"]; + +_targetC = jetTargets select 0; +targetC = _targetC; +_j = 0; +while{(alive (units jetG select 0)) OR (alive (units jetG select 1))}do { + scopeName "loop1"; + while{((count crew _targetC) == 0) or !(alive (crew _targetC select 0))}do{ + _j = _j + 1; + if(count jetTargets <= _j)then{ + _airfieldID = [false,airfieldOccup]call Zen_ValueFindInArray; + (vehicle (units jetG select 0)) landAt _airfieldID; + (vehicle (units jetG select 0)) addEventHandler["LandedTouchDown",{deleteVehicle ((crew (_this select 0)) select 0);deleteVehicle (_this select 0);}]; + (vehicle (units jetG select 1)) landAt _airfieldID; + (vehicle (units jetG select 1)) addEventHandler["LandedTouchDown",{deleteVehicle ((crew (_this select 0)) select 0);deleteVehicle (_this select 0);}]; + breakOut "loop1"; + }else{ + _targetC = jetTargets select _j; + }; + }; + [jetG,(position _targetC)] call BIS_fnc_taskAttack; + [jetG, 1] setWPPos (position _targetC); + deleteWaypoint [jetG, 2]; + jetG reveal _targetC; + Sleep 10; + targetC = _targetC; +}; + +Sleep 1800; + +jetActive = false; \ No newline at end of file diff --git a/Functions/AI/mineField.sqf b/Functions/AI/mineField.sqf new file mode 100644 index 0000000..4e510ac --- /dev/null +++ b/Functions/AI/mineField.sqf @@ -0,0 +1,18 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +private["_location"]; + +_j = 0; +_location = [0,0,airfieldMarkers,1,[1,1400]] call Zen_FindGroundPosition; + +_mine = createMine ["ATMine", _location, [], 0]; +zeusMod addCuratorEditableObjects [[_mine],false]; +east revealMine _mine; + +while{_j < 15}do{ + _mine = createMine ["APERSBoundingMine", _location, [], 75]; + zeusMod addCuratorEditableObjects [[_mine],false]; + east revealMine _mine; + _j = _j + 1; +}; \ No newline at end of file diff --git a/Functions/AI/patrol.sqf b/Functions/AI/patrol.sqf new file mode 100644 index 0000000..9a2086d --- /dev/null +++ b/Functions/AI/patrol.sqf @@ -0,0 +1,37 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +//Get position +_location = [0,0,[blackMarkers,["mrk_area"],[]],1,[1,700]] call Zen_FindGroundPosition; + +//Spawn vehicle +_veh = [_location,((apcPool + carPool) call BIS_fnc_selectRandom),0,0] call Zen_SpawnVehicle; +createVehicleCrew _veh; +_veh addEventHandler["fired", {(_this select 0) setVehicleAmmo 1}]; +zeusMod addCuratorEditableObjects [[_veh],false]; +zeusMod addCuratorEditableObjects [(crew _veh),false]; + +//Spawn infantry +_count = (_veh emptyPositions "cargo"); +_groupV = [[0,0,0], east, "infantry", (_count - 1),"Basic"] call Zen_SpawnInfantry; +zeusMod addCuratorEditableObjects [(units _groupV),false]; + +[_groupV,_veh] spawn Zen_MoveInVehicle; + +sleep 2; +{ + if(vehicle _x != _veh)then{ + deleteVehicle _x; + }; +}forEach (units _groupV); +(units _groupV) joinSilent (group (driver _veh)); + +{ + _x setVariable ["patrol", ["mrk_area"], true]; +}forEach (units (group (driver _veh))); + +_veh setVariable ["patrol",[_veh, "mrk_area"],true]; +_veh setCombatMode "RED"; +_veh setBehaviour "COMBAT"; + +[[(group (driver _veh))]]call JOC_cacheGroup; \ No newline at end of file diff --git a/Functions/AI/radar.sqf b/Functions/AI/radar.sqf new file mode 100644 index 0000000..4c662c7 --- /dev/null +++ b/Functions/AI/radar.sqf @@ -0,0 +1,41 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +private["_radar","_task","_list"]; +_radar = _this select 0; +_location = getPosASL _radar; +_locationO = getPos _radar; + +sleep 1; + +_trg = createTrigger ["EmptyDetector",_location]; +_trg setTriggerArea [6000,6000,6000,false]; +_trg setTriggerActivation ["WEST","PRESENT", true]; +_trg setTriggerStatements ["this","",""]; + +trgT = _trg; + +sleep 10; + +while{(count (_locationO nearObjects ["rhs_p37",50]) >= 1)}do{ + _list = list _trg; + + _task = false; + _targets = []; + + { + if((typeOf _x) in radarTArray)then{ + if(!(terrainIntersectASL [getPosASL _x, _location]))then{ + _task = true; [_targets,count _targets,_x] call Zen_ArrayInsert; + }; + }; + }forEach _list; + + if(_task)then{ + [_targets] spawn JOC_taskJet; + }; + + sleep 5; +}; + +deleteVehicle _trg; \ No newline at end of file diff --git a/Functions/AI/radioTower.sqf b/Functions/AI/radioTower.sqf new file mode 100644 index 0000000..a00ff2d --- /dev/null +++ b/Functions/AI/radioTower.sqf @@ -0,0 +1,26 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +_count = _this select 0; +_name = [5] call Zen_StringGenerateRandom; + +_marker = format["mrk_aaZone_%1",_count]; + +//Get location +_location = [_marker,0,[airfieldMarkers + blackMarkers,["mrk_area"],[]],1,0,0,0,0,0,[1,10,50],[1,0,20]] call Zen_FindGroundPosition; + +//Spawn tower +_tower = [_location, "Land_TTowerBig_2_F"] call Zen_SpawnVehicle; +zeusMod addCuratorEditableObjects [[_tower],false]; + +//Create marker +_marker = createMarker [_name, _location]; +_name setMarkerType "loc_Transmitter"; +_name setMarkerColor "ColorOPFOR"; + +//Spawn enemy's +_trg = createTrigger ["EmptyDetector",_location,true]; +_trg setTriggerArea [600,600,600,false]; +_trg setTriggerActivation ["WEST","PRESENT", false]; +_trg setTriggerStatements ["(!((typeOf (thisList select 0)) in jetArray)) OR ((count thisList) > 1)","[getPos thisTrigger,600,[4,true],[0,false],[0,false],[1,false],[0,false],[0,false,""cas""],[0,false]] call JOC_spawnZone;",""]; +_trg setTriggerTimeout [5,5,5,true]; \ No newline at end of file diff --git a/Functions/AI/spawnAirfield.sqf b/Functions/AI/spawnAirfield.sqf new file mode 100644 index 0000000..2432531 --- /dev/null +++ b/Functions/AI/spawnAirfield.sqf @@ -0,0 +1,71 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +_marker = _this select 0; +_id = _this select 1; +_location = getMarkerPos _marker; +_size = getMarkerSize _marker; + +//Create activation trigger +_trg = createTrigger ["EmptyDetector",_location,true]; +_trg setTriggerArea [(_size select 0)*4,(_size select 1)*4,1200,false]; +_trg setTriggerActivation ["WEST","PRESENT", false]; +_trg setTriggerStatements ["this","[getPos thisTrigger,1600,[11,true],[4,false],[0,false],[3,false],[2,false],[0,false,""cas""],[0,false]] call JOC_spawnZone;deleteVehicle thisTrigger;",""]; +_trg setTriggerTimeout [5,5,5,true]; +_trg setDir (markerDir _marker); + +//Spawn AA-defences +_ok = 0; +_count = 0; +while{_ok == 0}do{ + _marker = format["mrk_airfield_%1_aa_%2",_id,_count]; + markerT = _marker; + if(getMarkerColor _marker == "")then{ + _ok = 1; + }else{ + _aa = [getMarkerPos _marker,"O_APC_Tracked_02_AA_F",0,(markerDir _marker)] call Zen_SpawnVehicle; + [_aa,east] call Zen_SpawnVehicleCrew; + _aa setFuel 0; + sleep 2; + [_aa] joinSilent airfieldGroup; + (crew _aa) joinSilent airfieldGroup; + zeusMod addCuratorEditableObjects [[_aa],false]; + zeusMod addCuratorEditableObjects [(crew _aa),false]; + }; + _count = _count + 1; +}; + +//Spawn empty helicopter-jets +_ok = 0; +_count = 0; +while{_ok == 0}do{ + _marker = format["mrk_airfield_%1_hangar_%2",_id,_count]; + markerT = _marker; + if(getMarkerColor _marker == "")then{ + _ok = 1; + }else{ + _heli = [getMarkerPos _marker,((airPool + casPool) call BIS_fnc_selectRandom),1,(markerDir _marker)] call Zen_SpawnVehicle; + _heli enableSimulationGlobal false; + _heli allowDamage false; + sleep 2; + _heli enableSimulationGlobal true; + _heli allowDamage true; + zeusMod addCuratorEditableObjects [[_heli],false]; + }; + _count = _count + 1; +}; + +//Create activation trigger +_trgO = createTrigger ["EmptyDetector",_location,true]; +_trgO setTriggerArea [(_size select 0),(_size select 1),1200,false]; +_trgO setTriggerActivation ["EAST","PRESENT", false]; +_trgO setTriggerStatements ["this","",""]; +_trgO setTriggerTimeout [5,5,5,true]; +_trgO setDir (markerDir _marker); + +waitUntil{sleep 30;list _trgO >= 1}; +waitUntil{sleep 30;list _trgO <= 5}; + +deleteMarker _trgO; + +[airfieldOccup,_id,true] call Zen_ArrayInsert; \ No newline at end of file diff --git a/Functions/AI/spawnZone.sqf b/Functions/AI/spawnZone.sqf new file mode 100644 index 0000000..8829e64 --- /dev/null +++ b/Functions/AI/spawnZone.sqf @@ -0,0 +1,144 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// + +//[amount(SCALAR),patrol(BOOLEAN)] heli:[amount(SCALAR),patrol(BOOLEAN),type(STRING)] +private["_location","_radius","_inf","_car","_apc","_ifv","_tank","_heli","_boat"]; +_location = _this select 0; +_radius = _this select 1; +_inf = _this select 2; +_car = _this select 3; +_apc = _this select 4; +_ifv = _this select 5; +_tank = _this select 6; +_heli = _this select 7; +_boat = _this select 8; + +//if(_radius < 1)exitWith{}; + +//Spawn infantry +_j = 0; +if((_inf select 0) > 0)then{ + while{_j < (_inf select 0)} do{ + _locationS = [_location,[0,_radius],0,1] call Zen_FindGroundPosition; + _locationS = [_locationS,1,1] call Zen_ExtendPosition; + _groupV = [_locationS, east, "infantry", 4,"Basic"] call Zen_SpawnInfantry; + zeusMod addCuratorEditableObjects [(units _groupV),false]; + if(_inf select 1)then{ + [_groupV,_location,[0,_radius],[0,360],"limited","safe"] spawn Zen_OrderInfantryPatrol; + (leader _groupV) setVariable ["patrol",[_location,[0,_radius],[0,360],"limited","safe"],true]; + }; + _j = _j + 1; + }; +}; + +//Spawn cars +_j = 0; +if((_car select 0) > 0)then{ + while{_j < (_car select 0)} do{ + _locationS = [_location,[0,_radius],0,1,[1,_radius]] call Zen_FindGroundPosition; + _veh = [_locationS,(carPool call BIS_fnc_selectRandom)] call Zen_SpawnVehicle; + createVehicleCrew _veh; + zeusMod addCuratorEditableObjects [[_veh],false]; + _count = (_veh emptyPositions "cargo"); + _groupV = [[0,0,0], east, "infantry", (_count - 1),"Basic"] call Zen_SpawnInfantry; + _units = (units _groupV); + zeusMod addCuratorEditableObjects [(units _groupV),false]; + [_units,_veh] spawn Zen_MoveInVehicle; + if(_car select 1)then{ + [_veh, _location, _radius,[0,360],"limited",true] spawn Zen_OrderVehiclePatrol; + _veh setVariable ["patrol",[_location, _radius,[0,360],"limited",true],true]; + }; + _j = _j + 1; + }; +}; + +//Spawn apc's +_j = 0; +if((_apc select 0) > 0)then{ + while{_j < (_apc select 0)} do{ + _locationS = [_location,[0,_radius],0,1,[1,_radius]] call Zen_FindGroundPosition; + _veh = [_locationS,(apcPool call BIS_fnc_selectRandom)] call Zen_SpawnVehicle; + createVehicleCrew _veh; + zeusMod addCuratorEditableObjects [[_veh],false]; + zeusMod addCuratorEditableObjects [(crew _veh),false]; + if(_apc select 1)then{ + [_veh, _location, _radius,[0,360],"limited",true] spawn Zen_OrderVehiclePatrol; + _veh setVariable ["patrol",[_location, _radius,[0,360],"limited",true],true]; + }; + _j = _j + 1; + }; +}; + +//Spawn ifv's +_j = 0; +if((_ifv select 0) > 0)then{ + while{_j < (_ifv select 0)} do{ + _locationS = [_location,[0,_radius],0,1,[1,_radius]] call Zen_FindGroundPosition; + _veh = [_locationS,(ifvPool call BIS_fnc_selectRandom)] call Zen_SpawnVehicle; + createVehicleCrew _veh; + zeusMod addCuratorEditableObjects [[_veh],false]; + zeusMod addCuratorEditableObjects [(crew _veh),false]; + if(_ifv select 1)then{ + [_veh, _location, _radius,[0,360],"limited",true] spawn Zen_OrderVehiclePatrol; + _veh setVariable ["patrol",[_location, _radius,[0,360],"limited",true],true]; + }; + _j = _j + 1; + }; +}; + +//Spawn tanks +_j = 0; +if((_tank select 0) > 0)then{ + while{_j < (_tank select 0)} do{ + _locationS = [_location,[0,_radius],0,1,[1,_radius]] call Zen_FindGroundPosition; + _veh = [_locationS,(tankPool call BIS_fnc_selectRandom)] call Zen_SpawnVehicle; + createVehicleCrew _veh; + zeusMod addCuratorEditableObjects [[_veh],false]; + zeusMod addCuratorEditableObjects [(crew _veh),false]; + if(_tank select 1)then{ + [_veh, _location, _radius,[0,360],"limited",true] spawn Zen_OrderVehiclePatrol; + _veh setVariable ["patrol",[_location, _radius,[0,360],"limited",true],true]; + }; + _j = _j + 1; + }; +}; + +//Spawn heli's +_heliCount = (_heli select 0); +_heliPatrol = (_heli select 1); +_heliType = (_heli select 2); +_j = 0; +_pool = []; +if(_heliCount > 0)then{ + while{_j < _heliCount} do{ + _locationS = [_location,[0,_radius],0,0,[1,_radius]] call Zen_FindGroundPosition; + if(_heliType == "transport")then{ + _pool = heliPool; + }; + if(_heliType == "cas")then{ + _pool = casPool + }; + _heli = [_locationS,(_pool call BIS_fnc_selectRandom),50] call Zen_SpawnHelicopter; + zeusMod addCuratorEditableObjects [[_heli],false]; + zeusMod addCuratorEditableObjects [(crew _heli),false]; + _j = _j + 1; + }; +}; + +//Spawn boats +_boatCount = (_boat select 0); +_boatPatrol = (_boat select 1); +_j = 0; +if(_boatCount > 0)then{ + while{_j < _boatCount} do{ + _locationS = [_location,[0,_radius],0,2] call Zen_FindGroundPosition; + _boatV = [_locationS,["O_Boat_Armed_01_hmg_F"]] call Zen_SpawnBoat; + zeusMod addCuratorEditableObjects [[_boatV],false]; + zeusMod addCuratorEditableObjects [(crew _boatV),false]; + if(_boatPatrol)then{ + [_boatV, _location, _radius] spawn Zen_OrderBoatPatrol; + }; + _j = _j + 1; + }; +}; \ No newline at end of file diff --git a/Functions/AI/taskJet.sqf b/Functions/AI/taskJet.sqf new file mode 100644 index 0000000..8e05967 --- /dev/null +++ b/Functions/AI/taskJet.sqf @@ -0,0 +1,36 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +//0 = Airbase +//1 = AAC Airfield +//2 = Krya Nera Airstrip +private ["_targetA"]; +_targetA = _this select 0; + +//Check if active +if(jetActive)then{ + jetTargets = jetTargets + _targetA; +}; +if(!(jetActive))then{ + jetActive = true; + + //Get airfield + _airfieldID = [false,airfieldOccup]call Zen_ValueFindInArray; + _mrkN = format ["mrk_jetSpawn_%1",_airfieldID]; + _airfield = getMarkerPos _mrkN; + + //Spawn and take-off + _pilot1 = [_airfield,(jetPool call BIS_fnc_selectRandom),0] call Zen_SpawnAircraft; + _airfield2 = [_airfield,20,270] call Zen_ExtendPosition; + _pilot2 = [_airfield2,(jetPool call BIS_fnc_selectRandom),0] call Zen_SpawnAircraft; + _jet1 = vehicle _pilot1; + _jet2 = vehicle _pilot2; + zeusMod addCuratorEditableObjects [[_jet1,_jet2],false]; + _jet1 setVariable["JOC_caching_disabled",true]; + _jet2 setVariable["JOC_caching_disabled",true]; + jetG = group _pilot1; + [_pilot2] joinSilent jetG; + jetTargets = _targetA; + Sleep 5; + []call JOC_jetMonitor; +}; \ No newline at end of file diff --git a/Functions/BFT/manager.sqf b/Functions/BFT/manager.sqf new file mode 100644 index 0000000..b5bdf73 --- /dev/null +++ b/Functions/BFT/manager.sqf @@ -0,0 +1,61 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +_groups = []; +while{true}do{ + _groups = []; + { + if((side _x == west) and ((count(units _x))>0))then{ + [_groups, (count _groups), _x] call Zen_ArrayInsert; + }; + }forEach allGroups; + + groupT = _groups; + { + _id = (groupId _x); + _leader = (leader _x); + if(!(isNull _leader))then{ + _icon = 0; + //////////////////////////////////////////////// + if((count((getMarkerPos _id) - [0,0,0]))>1)then{ + _id setMarkerPos (getPos _leader); + }else{ + _marker = createMarker [_id, (getPos _leader)]; + }; + + if((vehicle _leader) isKindOf "man")then{ + _icon = "b_inf"; + }; + if((vehicle _leader) isKindOf "LandVehicle")then{ + if((vehicle _leader) isKindOf "car")then{ + _icon = "b_motor_inf"; + }; + if((vehicle _leader) isKindOf "Truck_F")then{ + _icon = "b_motor_inf"; + }; + if((vehicle _leader) isKindOf "tank")then{ + _icon = "b_armor"; + }; + if((typeOf (vehicle _leader)) in motorizedArray)then{ + _icon = "b_mech_inf"; + }; + if((typeOf (vehicle _leader)) in logisticsVehArray)then{ + _icon = "b_maint"; + }; + if((typeOf (vehicle _leader)) == "rhsusf_M1083A1P2_B_M2_d_MHQ_fmtv_usarmy")then{ + _icon = "b_support"; + }; + }; + if((vehicle _leader) isKindOf "Air")then{ + _icon = "b_air"; + }; + if((vehicle _leader) isKindOf "Ship")then{ + _icon = "b_naval"; + }; + /////////////////////////////////////////////////// + _id setMarkerType _icon; + _id setMarkerText _id; + }; + }forEach _groups; + sleep 5; +}; \ No newline at end of file diff --git a/Functions/Caching/cache.sqf b/Functions/Caching/cache.sqf new file mode 100644 index 0000000..4dcad47 --- /dev/null +++ b/Functions/Caching/cache.sqf @@ -0,0 +1,35 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +private ["_location"]; +_location = _this select 0; + +_trg = createTrigger ["EmptyDetector",_location,true]; +_trg setTriggerArea [2000,2000,2000,false]; +_trg setTriggerActivation ["EAST","PRESENT", false]; + +sleep 5; +_list = (list _trg); +hint "cch"; +listT = _list; + +{ + if(isNil{_x getVariable "JOC_disable_caching"})then{ + _x setVariable ["JOC_disable_caching",false,true]; + }; + if(!(_x getVariable "JOC_disable_caching"))then{ + if(_x == (leader(group _x)))then{ + _units = (units(group _x)); + { + _name = [10] call Zen_StringGenerateRandom; + _x setVehicleVarName _name; + _x enableSimulationGlobal false; _x hideObjectGlobal true; + [_x] joinSilent cacheGroup; + }forEach _units; + _x setVariable ["leader",true,true]; + _x setVariable ["units",_units,true]; + }; + }; +}forEach _list; + +deleteVehicle _trg; \ No newline at end of file diff --git a/Functions/Caching/cacheGroup.sqf b/Functions/Caching/cacheGroup.sqf new file mode 100644 index 0000000..0a88ce3 --- /dev/null +++ b/Functions/Caching/cacheGroup.sqf @@ -0,0 +1,23 @@ +//////////////////////// +//Script made by Jochem// +///////////////////////// +private ["_groups"]; +_groups = _this select 0; + +{ + _leader = (leader _x); + if(isNil{_leader getVariable "JOC_disable_caching"})then{ + _leader setVariable ["JOC_disable_caching",false,true]; + }; + if(!(_leader getVariable "JOC_disable_caching"))then{ + _units = (units(group _leader)); + { + _name = [10] call Zen_StringGenerateRandom; + _leader setVehicleVarName _name; + _leader enableSimulationGlobal false; _leader hideObjectGlobal true; + [_leader] joinSilent cacheGroup; + }forEach _units; + _leader setVariable ["leader",true,true]; + _leader setVariable ["units",_units,true]; + }; +}forEach _groups; \ No newline at end of file diff --git a/Functions/Caching/cacheInit.sqf b/Functions/Caching/cacheInit.sqf new file mode 100644 index 0000000..f2c87c4 --- /dev/null +++ b/Functions/Caching/cacheInit.sqf @@ -0,0 +1,51 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +_startloc = [1000,1000,0]; +_hor = 8; +_vert = 8; + +cacheTriggers =[]; +_trgA0 = []; +_trgA1 = []; +_trgA2 = []; +_trgA3 = []; +_trgA4 = []; +_trgA5 = []; +_trgA6 = []; +_trgA7 = []; + +cacheTriggers = [ +_trgA0, +_trgA1, +_trgA2, +_trgA3, +_trgA4, +_trgA5, +_trgA6, +_trgA7 +]; + +_xA = 0; +_yA = 0; +_location = _startloc; +while {_xA < _hor}do{ + while {_yA < _vert}do{ + _array = cacheTriggers select _xA; + _trg = createTrigger ["EmptyDetector",_location,true]; + _trg setTriggerArea [4000,4000,4000,true]; + _trg setTriggerActivation ["WEST","PRESENT", true]; + _trg setTriggerStatements ["this","[getPos thisTrigger] spawn JOC_unCache","[getPos thisTrigger] spawn JOC_cache"]; + _trg setTriggerTimeout [5,5,5,true]; + [_array, _yA, _trg] call Zen_ArrayInsert; + + _yA = _yA + 1; + _location = [_location,2000,0] call Zen_ExtendPosition; + }; + _yA = 0; + _xA = _xA + 1; + _location = [_startLoc,(_xA * 2000),90] call Zen_ExtendPosition; +}; + +cacheGroup = createGroup east; +cachedGroups = []; \ No newline at end of file diff --git a/Functions/Caching/unCache.sqf b/Functions/Caching/unCache.sqf new file mode 100644 index 0000000..d960cd8 --- /dev/null +++ b/Functions/Caching/unCache.sqf @@ -0,0 +1,32 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +private ["_location","_group"]; +_location = _this select 0; + +_trg = createTrigger ["EmptyDetector",_location,true]; +_trg setTriggerArea [2000,2000,2000,false]; +_trg setTriggerActivation ["EAST","PRESENT", false]; + +sleep 5; +_list = (list _trg); + +{ + if(_x getVariable "leader")then{ + _group = createGroup east; + [_x] joinSilent _group; + _group selectLeader _x; + _units = (_x getVariable "units"); + _units joinSilent _group; + if(!(isNil{_x getVariable "patrol"}))then{ + if((vehicle _x) != _x)then{ + ([_x] + (_x getVariable "patrol"))spawn Zen_OrderVehiclePatrol; + }else{ + ([_group] + (_x getVariable "patrol")) spawn Zen_OrderInfantryPatrol; + }; + }; + }; + _x enableSimulationGlobal true; _x hideObjectGlobal false; +}forEach _list; + +deleteVehicle _trg; \ No newline at end of file diff --git a/Functions/Commander/attack.sqf b/Functions/Commander/attack.sqf new file mode 100644 index 0000000..213b05b --- /dev/null +++ b/Functions/Commander/attack.sqf @@ -0,0 +1,111 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +//Find town +_ok = 0; +_dis = 99999; //Needs to be high +_count = 0; +_capitalOcc = false; +_capPrev = false; +_targetTown = 0; +_startTown = 0; +while{_ok == 0}do{ + hint "loop"; + if(_capitalOcc)then{ + _count = 0; + _capPrev = true; + }; + + _lastOcc = bluTowns select ((count bluTowns - 1) - _count); + _capitalOcc = ((capitalName in opTownsN) and _capPrev); + + if(_capitalOcc)then{ + _targetTown = ((nearestLocations [getPosATL player, ["NameCityCapital"], 35000])select 0); + }else{ + _targetTown = _lastOcc; + }; + + targetT = _targetTown; + + { + _disP = (getPos _targetTown) distance (getPos _x); + if(_disP <= _dis)then{ + _dis = _disP; + _startTown = _x; + targetS = _startTown; + }; + }forEach opTowns; + + if(_dis <= 3000)then{ + _ok = 1; + }; + + _count = _count + 1; +}; +_targetP = getPos _targetTown; + +//Inform players +[["IntelAdded",[format ["The enemy is preparing to attack %1.", (text _targetTown)]]],"BIS_fnc_showNotification",west] call BIS_fnc_MP; //Notification +_name = [5] call Zen_StringGenerateRandom; +_marker = createMarker [_name, _targetP];//Marker +_name setMarkerType "mil_warning"; +_name setMarkerColor "ColorOPFOR"; +_name setMarkerText "Under attack"; + +//Spawn attack +_truckCount = 0; +_apcCount = 0; +if(_targetTown in (nearestLocations [getPosATL player, ["NameCityCapital"], 35000]))then{ + _truckCount = 10; + _apcCount = 6; +}; +if(_targetTown in (nearestLocations [getPosATL player, ["NameCity"], 35000]))then{ + _truckCount = 6; + _apcCount = 4; +}; +if(_targetTown in (nearestLocations [getPosATL player, ["NameVillage"], 35000]))then{ + _truckCount = 3; + _apcCount = 1; +}; + +sleep 600; + +//Get spawn location +_locationSpawn = getPos _startTown; + +_x = 0; +//cars +while{_x < _truckCount} do{ + _locationS = [_locationSpawn,[0,400],0,1,[1,400]] call Zen_FindGroundPosition; + _veh = [_locationS,(truckPool call BIS_fnc_selectRandom)] call Zen_SpawnVehicle; + [_veh,east] call Zen_SpawnVehicleCrew; + _count = (_veh emptyPositions "cargo") - 2; + _group = [_locationS, east, "infantry", _count,"Basic"] call Zen_SpawnInfantry; + zeusMod addCuratorEditableObjects [(units _group),false]; + [_group,_veh] call Zen_MoveInVehicle; + zeusMod addCuratorEditableObjects [[_veh],false]; + zeusMod addCuratorEditableObjects [(crew _veh),false]; + [_veh, _targetP,300,[0,360],"full"] spawn Zen_OrderVehiclePatrol; + _veh setDamage 0; + _x = _x + 1; +}; + +_x = 0; +//APC +while{_x < _apcCount} do{ + _locationS = [_locationSpawn,[0,400],0,1,[1,400]] call Zen_FindGroundPosition; + _veh = [_locationS,(apcPool call BIS_fnc_selectRandom)] call Zen_SpawnVehicle; + [_veh,east] call Zen_SpawnVehicleCrew; + _count = (_veh emptyPositions "cargo"); + _group = [_locationS, east, "infantry", _count,"Basic"] call Zen_SpawnInfantry; + [_group,_veh] call Zen_MoveInVehicle; + zeusMod addCuratorEditableObjects [[_veh],false]; + zeusMod addCuratorEditableObjects [(crew _veh),false]; + [_veh, _targetP,300,[0,360],"full"] spawn Zen_OrderVehiclePatrol; + _veh setDamage 0; + _x = _x + 1; +}; + +sleep 1200; +deleteMarker _name; +cmdAttack = true; \ No newline at end of file diff --git a/Functions/Commander/convoy.sqf b/Functions/Commander/convoy.sqf new file mode 100644 index 0000000..e69de29 diff --git a/Functions/Commander/heli.sqf b/Functions/Commander/heli.sqf new file mode 100644 index 0000000..4adb77d --- /dev/null +++ b/Functions/Commander/heli.sqf @@ -0,0 +1,31 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +while{true}do{ + //Get airfield loc + _airfieldID = [false,airfieldOccup]call Zen_ValueFindInArray; + _mrkN = format ["mrk_heliSpawn_%1",_airfieldID]; + _airfield = getMarkerPos _mrkN; + + _heli1 = [_airfield,(casPool call BIS_fnc_selectRandom),50] call Zen_SpawnHelicopter; + zeusMod addCuratorEditableObjects [[_heli1],false]; + zeusMod addCuratorEditableObjects [(crew _heli1),false]; + _heli2 = [_airfield,(airPool call BIS_fnc_selectRandom),0] call Zen_SpawnHelicopter; + (vehicle _heli1) setVariable["JOC_caching_disabled",true]; + (vehicle _heli2) setVariable["JOC_caching_disabled",true]; + _count = (_heli2 emptyPositions "cargo"); + _groupV = [_airfield, east, "infantry", (_count - 1),"Basic"] call Zen_SpawnInfantry; + zeusMod addCuratorEditableObjects [[_heli2],false]; + zeusMod addCuratorEditableObjects [(crew _heli2),false]; + zeusMod addCuratorEditableObjects [(units _groupV),false]; + [_groupV,_heli2] spawn Zen_MoveInVehicle; + [[_heli1,_heli2],"mrk_area",[],[0,360],"full"]spawn Zen_OrderVehiclePatrol; + + waitUntil{sleep 60; (((fuel _heli1 <= 0.1) or (fuel _heli2 <= 0.1)) or ((!alive _heli1) and (!alive _heli2)))}; + if((fuel _heli1 <= 0.1) or (fuel _heli2 <= 0.1))then{ + [_heli1, _airfield,"full",100,false,true]spawn Zen_OrderHelicopterLand; + [_heli2, _airfield,"full",100,false,true]spawn Zen_OrderHelicopterLand; + }; + + sleep 1200; +}; \ No newline at end of file diff --git a/Functions/Commander/manager.sqf b/Functions/Commander/manager.sqf new file mode 100644 index 0000000..e074011 --- /dev/null +++ b/Functions/Commander/manager.sqf @@ -0,0 +1,13 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +[]spawn JOC_cmdHeli; + +while{true}do{ + waitUntil{sleep 60;(count bluTowns >= 1)}; + sleep (3600/((count opTowns)/2)); + if((count bluTowns >= 1) && cmdAttack)then{ + []spawn JOC_cmdAttack; + cmdAttack = false; + }; +}; \ No newline at end of file diff --git a/Functions/Commander/officers.sqf b/Functions/Commander/officers.sqf new file mode 100644 index 0000000..18d420d --- /dev/null +++ b/Functions/Commander/officers.sqf @@ -0,0 +1,16 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +//Spawn general +_groupOfficer = createGroup east; +_officer = _groupOfficer createUnit ["O_officer_F",_locationS, [], 0, "NONE"]; +_officer allowFleeing 0; + +_s = 0; +while{_s < officerCount}do{ + _groupOfficer = createGroup east; + _officer = _groupOfficer createUnit ["O_officer_F",_locationS, [], 0, "NONE"]; + _officer allowFleeing 0; + + _s = _s + 1; +}; \ No newline at end of file diff --git a/Functions/Init/initAA.sqf b/Functions/Init/initAA.sqf new file mode 100644 index 0000000..9405b00 --- /dev/null +++ b/Functions/Init/initAA.sqf @@ -0,0 +1,67 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +radarBlacklist = []; +tankBlacklist = []; + +//Set radars +_radar = 0; +while {_radar < (aaCount / 2)} do +{ + _marker = format["mrk_aaZone_%1",_radar]; + _location = [_marker,0,[radarBlacklist + blackMarkers,["mrk_area"],[]],1,0,0,0,0,0,[1,10,50],[1,0,20]] call Zen_FindGroundPosition; + _dish = "rhs_p37" createVehicle _location; + zeusMod addCuratorEditableObjects [[_dish],false]; + + [_dish] spawn JOC_radar; + + _nameM = [5] call Zen_StringGenerateRandom; + _marker = createMarker [_nameM, _location]; + _nameM setMarkerShape "ELLIPSE"; + _nameM setMarkerSize [3000,3000]; + _nameM setMarkerBrush "Border"; + _nameM setMarkerColor "ColorOPFOR"; + //_nameM setMarkerAlpha 0; + + _name = [5] call Zen_StringGenerateRandom; + _marker = createMarker [_name, _location]; + _name setMarkerType "o_installation"; + + [radarBlacklist,count radarBlacklist,_nameM] call Zen_ArrayInsert; + + _radar = _radar + 1; +}; + +//Place AA-tanks +_tank = 0; +_count = 0; +while {_tank < aaCount} do +{ + if(_count == (aaCount / 2))then{_count = 0}; + _marker = format["mrk_aaZone_%1",_count]; + + _location = [_marker,0,[tankBlacklist + blackMarkers,["mrk_area"],[]],1,0,0,0,0,0,[1,10,50],[1,0,20]] call Zen_FindGroundPosition; + _aaTank = "rhs_zsu234_aa" createVehicle _location; + createVehicleCrew _aaTank; + _aaTank setFuel 0; + _aaTank addEventHandler["fired", {(_this select 0) setVehicleAmmo 1}]; + _aaTank setVariable["JOC_caching_disabled",true]; + zeusMod addCuratorEditableObjects [[_aaTank],false]; + zeusMod addCuratorEditableObjects [(crew _aaTank),false]; + + _name = [5] call Zen_StringGenerateRandom; + _marker = createMarker [_name, _location]; + _name setMarkerType "o_mortar"; + + _nameM = [5] call Zen_StringGenerateRandom; + _marker = createMarker [_nameM, _location]; + _nameM setMarkerShape "RECTANGLE"; + _nameM setMarkerSize [1500,1500]; + _nameM setMarkerBrush "Border"; + _nameM setMarkerColor "ColorOPFOR"; + //_nameM setMarkerAlpha 0; + [tankBlacklist,count tankBlacklist,_nameM] call Zen_ArrayInsert; + + _tank = _tank + 1; + _count = _count + 1; +}; \ No newline at end of file diff --git a/Functions/Init/initAirfields.sqf b/Functions/Init/initAirfields.sqf new file mode 100644 index 0000000..25d743e --- /dev/null +++ b/Functions/Init/initAirfields.sqf @@ -0,0 +1,12 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +_airfields = airfieldMarkers; +airfieldGroup = createGroup east; + +_s = 0; +while{_s < count _airfields}do{ + [(_airfields select _s),_s]spawn JOC_spawnAirfield; + airfieldT = (_airfields select _s); + _s = _s + 1; +}; \ No newline at end of file diff --git a/Functions/Init/initArty.sqf b/Functions/Init/initArty.sqf new file mode 100644 index 0000000..0602475 --- /dev/null +++ b/Functions/Init/initArty.sqf @@ -0,0 +1,8 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +_s = 0; +while{_s < artyCount}do{ + [_s]call JOC_arty; + _s = _s + 1; +}; \ No newline at end of file diff --git a/Functions/Init/initBases.sqf b/Functions/Init/initBases.sqf new file mode 100644 index 0000000..812901b --- /dev/null +++ b/Functions/Init/initBases.sqf @@ -0,0 +1,3 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// diff --git a/Functions/Init/initMines.sqf b/Functions/Init/initMines.sqf new file mode 100644 index 0000000..d1dfbae --- /dev/null +++ b/Functions/Init/initMines.sqf @@ -0,0 +1,10 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +sleep 10; + +_s = 0; +while{_s < mineCount}do{ + []spawn JOC_mineField; + _s = _s + 1; +}; \ No newline at end of file diff --git a/Functions/Init/initPatrols.sqf b/Functions/Init/initPatrols.sqf new file mode 100644 index 0000000..869c3b7 --- /dev/null +++ b/Functions/Init/initPatrols.sqf @@ -0,0 +1,8 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +_s = 0; +while{_s < patrolCount}do{ + []call JOC_patrol; + _s = _s + 1; +}; \ No newline at end of file diff --git a/Functions/Init/initRadio.sqf b/Functions/Init/initRadio.sqf new file mode 100644 index 0000000..744b372 --- /dev/null +++ b/Functions/Init/initRadio.sqf @@ -0,0 +1,8 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +_s = 0; +while{_s < radioCount}do{ + [_s]call JOC_radioTower; + _s = _s + 1; +}; \ No newline at end of file diff --git a/Functions/Init/initTowns.sqf b/Functions/Init/initTowns.sqf new file mode 100644 index 0000000..dc63b94 --- /dev/null +++ b/Functions/Init/initTowns.sqf @@ -0,0 +1,11 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +_j = 0; +//Occupy towns +while{_j < townCount}do{ + [] spawn JOC_occupy; + _j = _j + 1; + Sleep 0.01; +}; +[] call JOC_indTown; \ No newline at end of file diff --git a/Functions/Loadouts/arsenal.sqf b/Functions/Loadouts/arsenal.sqf new file mode 100644 index 0000000..22238d2 --- /dev/null +++ b/Functions/Loadouts/arsenal.sqf @@ -0,0 +1,210 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +private["_box","_unit","_uniforms","_vests","_helmets","_backpacks"]; +_box = _this select 0; + +_weapons = [ + "arifle_MX_F", + "arifle_MXC_F", + "RH_m4_ris", + "RH_m4a1_ris", + "RH_m16a4", + "", + "RH_m9", + "tf47_at4_HEDP" +]; + +_magazines = [ + "30Rnd_556x45_Stanag", + "30Rnd_556x45_Stanag_Tracer_Red", + "RH_30Rnd_556x45_Mk262" +]; +_uniforms = [ + "TRYK_U_B_MARPAT_Wood_Tshirt", + "TRYK_U_B_MARPAT_Wood", + "TRYK_U_B_WOOD_MARPAT_CombatUniformTshirt", + "TRYK_U_B_WOOD_MARPAT_CombatUniform", + "TRYK_B_USMC_R_ROLL", + "TRYK_B_USMC_R", + "TRYK_T_camo_wood_marpat_BG", + "TRYK_hoodie_FR", + "TRYK_U_B_C01_Tsirt" + +]; +_vests = [ + "TRYK_V_ArmorVest_Brown2", + "TRYK_V_ArmorVest_Brown" +]; +_helmets = [ + "TRYK_H_Helmet_MARPAT_Wood", + "TRYK_H_Booniehat_MARPAT_WOOD" +]; +_backpacks = [ + "TRYK_B_AssaultPack_MARPAT_Wood", + "TRYK_B_Kitbag_Base" +]; +_items = [ + "ACE_EarPlugs", + "ACE_atropine", + "ACE_fieldDressing", + "ACE_elasticBandage", + "ACE_quikclot", + "ACE_bloodIV", + "ACE_bloodIV_500", + "ACE_bloodIV_250", + "ACE_bodyBag", + "ACE_epinephrine", + "ACE_morphine", + "ACE_packingBandage", + "ACE_personalAidKit", + "ACE_plasmaIV", + "ACE_plasmaIV_500", + "ACE_plasmaIV_250", + "ACE_salineIV", + "ACE_salineIV_500", + "ACE_salineIV_250", + "ACE_surgicalKit", + "ACE_tourniquet", + "ACE_SpareBarrel", + "ACE_IR_Strobe_Item", + "ACE_CableTie", + "ACE_Clacker", + "ACE_M26_Clacker", + "ACE_DefusalKit", + "ACE_HandFlare_White", + "ACE_HandFlare_Red", + "ACE_HandFlare_Green", + "ACE_HandFlare_Yellow", + "ACE_M84", + + "SMA_eotech552", + "SMA_eotech552_3XDOWN", + "RH_compm4s", + "RH_ta01nsn", + "RH_ta31rmr", + "optic_MRCO", + "optic_Hamr", + "muzzle_snds_H", + "RH_fa556" + +]; +weaponsT = _weapons; +magazinesT = _magazines; +backpacksT = _backpacks; +//Tank +if(player in [anv1,anv2,anv3])then{ + _weapons = (_weapons + []); + _magazines = (_magazines + []); + _uniforms = (_uniforms + []); + _vests = (_vests + []); + _helmets = (_helmets + []); + _backpacks = (_backpacks + []); + _items = (_items + []); +}; + +//Pilot +if(player in [s1,s2,v1,v2,rip1,rip2])then{ + _weapons = ["hgun_PDW2000_F","hgun_Pistol_Signal_F"]; + _magazines = ["30Rnd_9x21_Mag","6Rnd_GreenSignal_F"]; + _uniforms = ["U_B_PilotCoveralls","U_B_HeliPilotCoveralls"]; + _vests = ["V_TacVest_oli"]; + _helmets = ["H_PilotHelmetFighter_B","H_PilotHelmetHeli_B"]; + _backpacks = ["B_Parachute"]; + _items = (_items + []); +}; + +//Command +if(player in [cmd1,cmd2])then{ + _weapons = (_weapons + []); + _magazines = (_magazines + []); + _uniforms = (_uniforms + []); + _vests = (_vests + []); + _helmets = (_helmets + []); + _backpacks = (_backpacks + []); + _items = (_items + []); +}; + +//Recon +if(player in [r1,r2,r3,r4])then{ + _weapons = (_weapons + ["rhs_weap_m4a1_carryhandle_grip2","SMA_Mk17_black","RH_Hk416"]); + _magazines = (_magazines + []); + _uniforms = []; + _vests = []; + _helmets = []; + _backpacks = []; + _items = (_items + ["rhsusf_acc_nt4_black","SMA_spSCAR_762"]); +}; + +//Autorifleman +if(player in [a5,b5,c5])then{ + _weapons = (_weapons + ["LMG_Mk200_F","RH_M27IAR"]); + _magazines = (_magazines + ["200Rnd_65x39_Belt","200Rnd_65x39_Belt_Tracer_Red","rhs_200rnd_556x45_M_SAW","RH_60Rnd_556x45_M855A1"]); + _uniforms = (_uniforms + []); + _vests = (_vests + []); + _helmets = (_helmets + []); + _backpacks = (_backpacks + []); + _items = (_items + []); +}; + +//Marksman +if(player in [a3,b3,c3,r2])then{ + _weapons = (_weapons + ["arifle_MX_SW_F","RH_m110","RH_sr25ec","srifle_EBR_F"]); + _magazines = (_magazines + ["RH_20Rnd_762x51_AR10","RH_20Rnd_762x51_M80A1"]); + _uniforms = (_uniforms + []); + _vests = (_vests + []); + _helmets = (_helmets + []); + _backpacks = (_backpacks + []); + _items = (_items + ["RH_leu_mk4","RH_m110sd","optic_SOS","optic_DMS","optic_LRPS"]); +}; + +//AT(rifleman) +if(player in [r1,r2,r3,r4])then{ + _weapons = (_weapons + ["tf47_m3maaws","tf47_at4_HE","tf47_at4_HEDP","tf47_at4_HEAT"]); + _magazines = (_magazines + ["tf47_m3maaws_HEDP"]); + _uniforms = (_uniforms + []); + _vests = (_vests + []); + _helmets = (_helmets + []); + _backpacks = (_backpacks + []); + _items = (_items + []); +}; + +//HAT +if(player in [h2,h3])then{ + _weapons = (_weapons + ["tf47_m3maaws","rhs_weap_fgm148"]); + _magazines = (_magazines + ["tf47_m3maaws_ILLUM","tf47_m3maaws_SMOKE","tf47_m3maaws_HE","tf47_m3maaws_HEDP","tf47_m3maaws_HEAT","rhs_fgm148_magazine_AT"]); + _uniforms = (_uniforms + []); + _vests = (_vests + []); + _helmets = (_helmets + []); + _backpacks = (_backpacks + []); + _items = (_items + ["tf47_optic_m3maaws"]); +}; + +//Leader +if(player in [a1,a2,b1,b2,c1,c2])then{ + _weapons = (_weapons + ["RH_m16a4gl","RH_m4_ris_m203 ","RH_m4a1_ris_m203"]); + _magazines = (_magazines + []); + _uniforms = (_uniforms + []); + _vests = (_vests + []); + _helmets = (_helmets + []); + _backpacks = (_backpacks + []); + _items = (_items + []); +}; + +//Radio operator +if(player in [r1,r2,r3,r4])then{ + _weapons = (_weapons + []); + _magazines = (_magazines + []); + _uniforms = (_uniforms + []); + _vests = (_vests + []); + _helmets = (_helmets + []); + _backpacks = (_backpacks + []); + _items = (_items + []); +}; + + + +[_box,_weapons,false,true] call BIS_fnc_addVirtualWeaponCargo; +[_box,_magazines,false,true] call BIS_fnc_addVirtualMagazineCargo; +[_box,_backpacks,false,true] call BIS_fnc_addVirtualBackpackCargo; +[_box,(_uniforms + _vests + _helmets + _items),false,true] call BIS_fnc_addVirtualItemCargo; \ No newline at end of file diff --git a/Functions/Loadouts/master.sqf b/Functions/Loadouts/master.sqf new file mode 100644 index 0000000..04d1620 --- /dev/null +++ b/Functions/Loadouts/master.sqf @@ -0,0 +1,25 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// + +//Check for special +if(!(player in [r1,r2,r3,r4,s1,s2,v1,v2,rip1,rip2,cmd1,cmd2]))then{ + + removeAllWeapons player; + removeAllItems player; + removeAllAssignedItems player; + removeUniform player; + removeVest player; + removeBackpack player; + removeHeadgear player; + removeGoggles player; + + player forceAddUniform "TRYK_U_B_MARPAT_Wood_Tshirt"; + player addVest "TRYK_V_ArmorVest_Brown2"; + player addHeadgear "TRYK_H_Helmet_MARPAT_Wood"; + + player linkItem "ItemMap"; + player linkItem "ItemCompass"; + player linkItem "tf_microdagr"; + player linkItem "tf_anprc152_1"; +}; \ No newline at end of file diff --git a/Functions/Logistics/Building/crateInit.sqf b/Functions/Logistics/Building/crateInit.sqf new file mode 100644 index 0000000..f939b4a --- /dev/null +++ b/Functions/Logistics/Building/crateInit.sqf @@ -0,0 +1,14 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +_crate = _this select 0; + +if(!isServer)exitWith{}; + +//Add addaction +[[[_crate],{_action = (_this select 0) addAction["Concrete wall",{["Land_CncWall4_F"]spawn JOC_buildPlaceObject},"",1,true,true,"","(format[""%1"",_this]) in logisticsArray"];}],"BIS_fnc_spawn",true,true] call BIS_fnc_MP; +[[[_crate],{_action = (_this select 0) addAction["H-barrier",{["Land_HBarrierWall4_F"]spawn JOC_buildPlaceObject},"",1,true,true,"","(format[""%1"",_this]) in logisticsArray"];}],"BIS_fnc_spawn",true,true] call BIS_fnc_MP; +[[[_crate],{_action = (_this select 0) addAction["Sandbag",{["Land_BagFence_Long_F"]spawn JOC_buildPlaceObject},"",1,true,true,"","(format[""%1"",_this]) in logisticsArray"];}],"BIS_fnc_spawn",true,true] call BIS_fnc_MP; +[[[_crate],{_action = (_this select 0) addAction["Razorwire",{["Land_Razorwire_F"]spawn JOC_buildPlaceObject},"",1,true,true,"","(format[""%1"",_this]) in logisticsArray"];}],"BIS_fnc_spawn",true,true] call BIS_fnc_MP; +[[[_crate],{_action = (_this select 0) addAction["Bunker",{["Land_HBarrierTower_F"]spawn JOC_buildPlaceObject},"",1,true,true,"","(format[""%1"",_this]) in logisticsArray"];}],"BIS_fnc_spawn",true,true] call BIS_fnc_MP; +[[[_crate],{_action = (_this select 0) addAction["Watchtower",{["Land_Cargo_Patrol_V1_F"]spawn JOC_buildPlaceObject},"",1,true,true,"","(format[""%1"",_this]) in logisticsArray"];}],"BIS_fnc_spawn",true,true] call BIS_fnc_MP; \ No newline at end of file diff --git a/Functions/Logistics/Building/keypress.sqf b/Functions/Logistics/Building/keypress.sqf new file mode 100644 index 0000000..887c898 --- /dev/null +++ b/Functions/Logistics/Building/keypress.sqf @@ -0,0 +1,31 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +_object = (attachedObjects player select 0); + +switch (_this select 1) do +{ + //UP -> increase height + case 200: + { + hint "up"; + detach _object; + //_object setPosASL [getPosASL player select 0,getPosASL _object select 1,((getPosASL _object select 2) + 0.25)]; + //_relpos = player modelToWorld getPosASL _object; + //_object attachTo [player,[0,5,(((getPosASL _object select 2) - (getPosASL player select 2)) + 0.25)]]; + _object attachTo [player,[0,5,((_object getVariable "buildHeight") + 0.25)]]; + _object setVariable ["buildHeight",((_object getVariable "buildHeight") + 0.25)]; + }; + //DOWN -> decrease height + case 208: + { + hint "down"; + detach _object; + //_object setPosASL [getPosASL player select 0,getPosASL _object select 1,((getPosASL _object select 2) - 0.25)]; + //_object attachTo [player,[0,5,(((getPosASL _object select 2) - (getPosASL player select 2)) - 0.25)]]; + _object attachTo [player,[0,5,((_object getVariable "buildHeight") - 0.25)]]; + _object setVariable ["buildHeight",((_object getVariable "buildHeight") - 0.25)]; + }; + //Ignore all others + default{}; +}; \ No newline at end of file diff --git a/Functions/Logistics/Building/placeObject.sqf b/Functions/Logistics/Building/placeObject.sqf new file mode 100644 index 0000000..9642f9b --- /dev/null +++ b/Functions/Logistics/Building/placeObject.sqf @@ -0,0 +1,20 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +disableSerialization; //_display var doesn't work otherwise +_class = _this select 0; + +_object = _class createVehicle getPos player; + +_object attachTo [player,[0,5,0]]; +player setVariable["building",true,true]; +_object setVariable ["buildHeight",0]; + +//Add buttons to change height and rotation +//_display = findDisplay 46; +//_display displaySetEventHandler ["KeyDown","_this call JOC_buildKeypress"]; + +player addAction ["Place", {_object = (attachedObjects player select 0); detach _object; removeAllActions player;[[[_object],{_action = (_this select 0) addAction["Remove",{deleteVehicle (_this select 0)},"",1,true,true,"","(format[""%1"",_this]) in logisticsArray"];}],"BIS_fnc_spawn",true,true] call BIS_fnc_MP;}]; +player addAction ["Cancel", {_object = (attachedObjects player select 0); detach _object; deleteVehicle _object; removeAllActions player;}]; + +_id = ["KeyDown", "_this call JOC_buildKeypress"] call CBA_fnc_addDisplayHandler; \ No newline at end of file diff --git a/Functions/Logistics/Fob/fobDeploy.sqf b/Functions/Logistics/Fob/fobDeploy.sqf new file mode 100644 index 0000000..5987a00 --- /dev/null +++ b/Functions/Logistics/Fob/fobDeploy.sqf @@ -0,0 +1,21 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +private ["_truck"]; + +_truck = _this select 0; +[[[_truck],{removeAllActions (_this select 0);(_this select 0) setVehicleLock "LOCKED";}],"BIS_fnc_spawn",true,true] call BIS_fnc_MP; + +{ + _x action ["eject", _truck] +} forEach (crew _truck); + +_spawnPos= [(getPos _truck),3,((direction _truck) + 90)] call Zen_ExtendPosition; +_marker = createMarker ["mrk_FOB", (_spawnPos)]; +_marker setMarkerType "flag_NATO"; +_marker setMarkerText "FOB"; + +[["RespawnAdded",["DEPLOYMENT POINT",format ["HQ deployed at grid %1", mapGridPosition (getPos _truck)],"\A3\ui_f\data\map\markers\nato\b_hq.paa"]],"BIS_fnc_showNotification",west] call BIS_fnc_MP; //Notification +[[[_truck],{_action = (_this select 0) addAction["Dismantle FOB",{[(_this select 0)] spawn JOC_fobUndeploy;},"",1,true,true,"","(side _this == west) && (speed _target < 1)"];}],"BIS_fnc_spawn",true,true] call BIS_fnc_MP; +[[[_truck],{_action = (_this select 0) addAction["Return to base",{(_this select 1) setPosASL getPosASL respawn_obj;},"",1,true,true,"","(side _this == west) && (speed _target < 1)"];}],"BIS_fnc_spawn",true,true] call BIS_fnc_MP; +[{flagPole addAction ["Go to FOB", {(_this select 1) setPosASL getMarkerPos "mrk_FOB"}];},"BIS_fnc_spawn",true,true] call BIS_fnc_MP; \ No newline at end of file diff --git a/Functions/Logistics/Fob/fobInit.sqf b/Functions/Logistics/Fob/fobInit.sqf new file mode 100644 index 0000000..fa94a43 --- /dev/null +++ b/Functions/Logistics/Fob/fobInit.sqf @@ -0,0 +1,9 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +private ["_truck"]; + +_truck = _this select 0; +_truck setVariable ["ace_medical_medicClass", 1]; +[["RespawnAdded",["DEPLOYMENT POINT","A new FOB is available at base","\A3\ui_f\data\map\markers\nato\b_hq.paa"]],"BIS_fnc_showNotification",west] call BIS_fnc_MP; //Notification +[[[_truck],{_action = (_this select 0) addAction["Deploy FOB",{[(_this select 0)] spawn JOC_fobDeploy;},"",1,true,true,"","(side _this == west) && (speed _target < 1)"];}],"BIS_fnc_spawn",true,true] call BIS_fnc_MP; \ No newline at end of file diff --git a/Functions/Logistics/Fob/fobManager.sqf b/Functions/Logistics/Fob/fobManager.sqf new file mode 100644 index 0000000..e739293 --- /dev/null +++ b/Functions/Logistics/Fob/fobManager.sqf @@ -0,0 +1,19 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +_fobCount = -1; + +while{true}do{ + _truck = "rhsusf_M1083A1P2_B_M2_d_MHQ_fmtv_usarmy" createVehicle [16000,16000,0]; + _truck setDir getDir fobSpawn; + _truck setPosASL getPosASL fobSpawn; + _truck setDamage 0; + zeusMod addCuratorEditableObjects [[_truck],false]; + [_truck] call JOC_fobInit; + + _fobCount = _fobCount + 1; + + waitUntil {Sleep 60;((_fobCount < (count bluTowns)) && (!(alive _truck)))}; + deleteVehicle _truck; + Sleep 5; +}; \ No newline at end of file diff --git a/Functions/Logistics/Fob/fobUndeploy.sqf b/Functions/Logistics/Fob/fobUndeploy.sqf new file mode 100644 index 0000000..a8def38 --- /dev/null +++ b/Functions/Logistics/Fob/fobUndeploy.sqf @@ -0,0 +1,12 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +private ["_truck"]; + +_truck = _this select 0; + +deleteMarker "mrk_FOB"; + +[[[_truck],{(_this select 0) setVehicleLock "UNLOCKED";removeAllActions (_this select 0);removeAllActions flagPole;}],"BIS_fnc_spawn",true,true] call BIS_fnc_MP; +[["RespawnAdded",["DEPLOYMENT POINT",format ["HQ dismantled at grid %1", mapGridPosition (getPos _truck)],"\A3\ui_f\data\map\markers\nato\b_hq.paa"]],"BIS_fnc_showNotification",west] call BIS_fnc_MP; //Notification +[[[_truck],{_action = (_this select 0) addAction["Deploy FOB",{[(_this select 0)] spawn JOC_fobDeploy;},"",1,true,true,"","(side _this == west) && (speed _target < 1)"];}],"BIS_fnc_spawn",true,true] call BIS_fnc_MP; \ No newline at end of file diff --git a/Functions/Logistics/crateInit.sqf b/Functions/Logistics/crateInit.sqf new file mode 100644 index 0000000..a8919a8 --- /dev/null +++ b/Functions/Logistics/crateInit.sqf @@ -0,0 +1,11 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// + +_crate = _this select 0; +_cratetype = typeOf _crate; + +//FOB crate +if(_cratetype == "B_Slingload_01_Cargo_F")then{ + [_crate]spawn JOC_buildCrateInit; +}; \ No newline at end of file diff --git a/Functions/Logistics/fn_logistics_compile.sqf b/Functions/Logistics/fn_logistics_compile.sqf new file mode 100644 index 0000000..2376fdb --- /dev/null +++ b/Functions/Logistics/fn_logistics_compile.sqf @@ -0,0 +1,14 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// + +//Building +JOC_buildCrateInit = compileFinal preprocessFileLineNumbers "Functions\Logistics\Building\crateInit.sqf"; +JOC_buildPlaceObject = compileFinal preprocessFileLineNumbers "Functions\Logistics\Building\placeObject.sqf"; +JOC_buildKeypress = compileFinal preprocessFileLineNumbers "Functions\Logistics\Building\keypress.sqf"; + +//Fob +JOC_fobDeploy = compileFinal preprocessFileLineNumbers "Functions\Logistics\Fob\fobDeploy.sqf"; +JOC_fobUndeploy = compileFinal preprocessFileLineNumbers "Functions\Logistics\Fob\fobUndeploy.sqf"; +JOC_fobInit = compileFinal preprocessFileLineNumbers "Functions\Logistics\Fob\fobInit.sqf"; +JOC_fobManager = compileFinal preprocessFileLineNumbers "Functions\Logistics\Fob\fobManager.sqf"; \ No newline at end of file diff --git a/Functions/Performance/bodyRemove.sqf b/Functions/Performance/bodyRemove.sqf new file mode 100644 index 0000000..e69de29 diff --git a/Functions/Performance/itemRemove.sqf b/Functions/Performance/itemRemove.sqf new file mode 100644 index 0000000..e69de29 diff --git a/Functions/Performance/loop.sqf b/Functions/Performance/loop.sqf new file mode 100644 index 0000000..e69de29 diff --git a/Functions/Performance/vehicleRemove.sqf b/Functions/Performance/vehicleRemove.sqf new file mode 100644 index 0000000..e69de29 diff --git a/Functions/Player/button.sqf b/Functions/Player/button.sqf new file mode 100644 index 0000000..2a3f268 --- /dev/null +++ b/Functions/Player/button.sqf @@ -0,0 +1,13 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +switch (_this select 1) do +{ + case 210: + { + hint "insert"; + []spawn JOC_vehCDU; + }; + //Ignore all others + default{}; +}; \ No newline at end of file diff --git a/Functions/Player/click.sqf b/Functions/Player/click.sqf new file mode 100644 index 0000000..0b04f79 --- /dev/null +++ b/Functions/Player/click.sqf @@ -0,0 +1,37 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +private["_prevDis","_groupIdG","_group","_position"]; + +onMapSingleClick{ + _prevDis = 999; + _groupIdG = ""; + _group = 0; + _position = _pos; + _markers = allMapMarkers; + { + _distance = ((getMarkerPos _x) distance _position); + if((_distance < 10) and (_distance < _prevDis))then{ + hint _x; + _prevDis = _distance; + _groupIdG = _x; + }; + }forEach _markers; + testVv = _groupIdG; + if(!(_groupIdG == ""))then{ + { + if((groupId _x) == _groupIdG)then{ + _group = _x; + }; + }forEach allGroups; + testG = _group; + _unitsG = (units _group); + _unitText = ""; + { + _unitText = composeText [_unitText, lineBreak, (name _x)]; + }forEach _unitsG; + _text = parseText format["%1",_groupIdG]; + _text = composeText [_text, lineBreak, _unitText]; + hint _text; + }; +}; \ No newline at end of file diff --git a/Functions/Player/playerLoop.sqf b/Functions/Player/playerLoop.sqf new file mode 100644 index 0000000..8e1918a --- /dev/null +++ b/Functions/Player/playerLoop.sqf @@ -0,0 +1,13 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +while{alive player}do{ + player setDamage 0; + player addRating 2000; + if((count (nearestObjects [player, ["Land_TTowerBig_2_F"], 2000])) >= 1)then{ + player setVariable ["tf_sendingDistanceMultiplicator", 0.2]; + }else{ + player setVariable ["tf_sendingDistanceMultiplicator", 1]; + }; + Sleep 60; +}; \ No newline at end of file diff --git a/Functions/Tasks/Functions/attack.sqf b/Functions/Tasks/Functions/attack.sqf new file mode 100644 index 0000000..789d96f --- /dev/null +++ b/Functions/Tasks/Functions/attack.sqf @@ -0,0 +1,37 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +_location = position uav; + +//Spawn enemies +_groupCount = 6; +_lightCount = 3; + +//Get spawn location +_locationSpawn = [_location,[1800,2000],["mrk_safeZone"]] call Zen_FindGroundPosition; + +_x = 0; +//infantry +while{_x < _groupCount} do{ + _locationS = [_locationSpawn, random 10, random 10] call BIS_fnc_relPos; + _locationS = [_locationS,1,1] call Zen_ExtendPosition; + _group = [_locationS, east, "infantry", 5,"Basic"] call Zen_SpawnInfantry; + [_group,_location,[0,300],[0,360],"full"] spawn Zen_OrderInfantryPatrol; + _x = _x + 1; +}; + +_x = 0; + +//IFV +while{_x < _lightCount} do{ + _locationS = [_locationSpawn, random 50, random 50] call BIS_fnc_relPos; + _veh = [_locationS,(apcPool call BIS_fnc_selectRandom)] call Zen_SpawnVehicle; + [_veh,east] call Zen_SpawnVehicleCrew; + _locationS = [_locationS,10,10] call Zen_ExtendPosition; + _group = [_locationS, east, "infantry", 8,"Basic"] call Zen_SpawnInfantry; + [_group,_veh] call Zen_MoveInVehicle; + [_veh, _location,300,[0,360],"limited"] spawn Zen_OrderVehiclePatrol; + _x = _x + 1; +}; + +Sleep 450; \ No newline at end of file diff --git a/Functions/Tasks/Functions/bleedOut.sqf b/Functions/Tasks/Functions/bleedOut.sqf new file mode 100644 index 0000000..8a5316f --- /dev/null +++ b/Functions/Tasks/Functions/bleedOut.sqf @@ -0,0 +1,14 @@ +_time = _this select 0; +_x = 0; +Crossroads = [West,"HQ"]; + +while{_x != _time && pilotRescued == 0 && pilotDead == 0}do{ + Sleep 1; + _x = _x + 1; +}; +Sleep 1; + +if(pilotRescued == 0 && pilotDead == 0)then{ + Crossroads sideChat "The pilot bled out, mission failed"; + pilotDead = 1; +}; \ No newline at end of file diff --git a/Functions/Tasks/Functions/chat.sqf b/Functions/Tasks/Functions/chat.sqf new file mode 100644 index 0000000..be0375c --- /dev/null +++ b/Functions/Tasks/Functions/chat.sqf @@ -0,0 +1,7 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +_text = _this select 0; + +_Crossroads = [West,"HQ"]; +_Crossroads sideChat _text; \ No newline at end of file diff --git a/Functions/Tasks/Functions/clean.sqf b/Functions/Tasks/Functions/clean.sqf new file mode 100644 index 0000000..1f6617d --- /dev/null +++ b/Functions/Tasks/Functions/clean.sqf @@ -0,0 +1,36 @@ +groupsT = _this select 0; +veh = _this select 1; +x = 0; +y = 0; +groupCount = (count groupsT); +vehCount = (count veh); + +//Groups +while{groupCount > x}do{ + groupT = groupsT select x; + unitCount = (count units groupT); + while{unitCount > y}do{ + unit = units groupT select 0; + deleteVehicle unit; + Sleep 3; + y = y + 1; + }; + waitUntil{count units groupT == 0}; + Sleep 3; + x = x + 1; + y = 0; +}; + + +x = 0; +y = 0; + +hint "veh"; + +//Vehicles +while{vehCount > x}do{ + _veh = veh select x; + deleteVehicle _veh; + x = x + 1; + Sleep 1; +}; \ No newline at end of file diff --git a/Functions/Tasks/Functions/countdown.sqf b/Functions/Tasks/Functions/countdown.sqf new file mode 100644 index 0000000..4c133c3 --- /dev/null +++ b/Functions/Tasks/Functions/countdown.sqf @@ -0,0 +1,14 @@ +_time = _this select 0; +_x = 0; +Crossroads = [West,"HQ"]; + +while{_x != _time && disabled == 0 && destroyed == 0}do{ + Sleep 1; + _text = format["%1 seconds until launch",_time - _x]; + Crossroads sideChat _text;//Needs global + _x = _x + 1; +}; + +Sleep 1; + +launched = 1; \ No newline at end of file diff --git a/Functions/Tasks/Functions/download.sqf b/Functions/Tasks/Functions/download.sqf new file mode 100644 index 0000000..155b4d8 --- /dev/null +++ b/Functions/Tasks/Functions/download.sqf @@ -0,0 +1,20 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +[]spawn JOC_taskUavAttack; + +_trg = _this select 0; +_time = 600; + +_x = 0; +while{_x < 600 and destroyed == 0}do{ + _text = format["%1/100 files received",(_x / 6)]; + [[[_text],JOC_taskGlobalChat],"BIS_fnc_spawn",true,true ] call BIS_fnc_MP; + + _x = _x + 6; + Sleep 6; + + waitUntil{count(list _trg) > 0}; +}; + +hacked = 1; \ No newline at end of file diff --git a/Functions/Tasks/Functions/extract.sqf b/Functions/Tasks/Functions/extract.sqf new file mode 100644 index 0000000..b182f16 --- /dev/null +++ b/Functions/Tasks/Functions/extract.sqf @@ -0,0 +1,32 @@ +_location = getPos officer; +_location = [_location,0,0,1,[1,50]] call Zen_FindGroundPosition; + + +_startLoc = getMarkerPos "mrk_heliSpawn"; + + +_marker = createMarker ["test", _startLoc]; +"test" setMarkerType "hd_objective"; +"test" setMarkerColor "ColorOPFOR"; + +Sleep 60; + +_heliA1 = [_startLoc,casPool,0] call Zen_SpawnHelicopter; +_startLoc = [_startLoc,50,100] call Zen_ExtendPosition; +_heliT = [_startLoc,airPool,0] call Zen_SpawnHelicopter; +_startLoc = [_startLoc,50,100] call Zen_ExtendPosition; +_heliA2 = [_startLoc,casPool,0] call Zen_SpawnHelicopter; + +[(group _heliA1),_location] call BIS_fnc_taskAttack; +Sleep 15; + +_locationE = [_location,0,0,1,[1,700]] call Zen_FindGroundPosition; +_locEnd = getMarkerPos "mrk_end"; + +[_heliT,[_locationE,_locEnd],officer] spawn Zen_OrderExtraction; + +_heliA2 joinSilent (group _heliT); + +Sleep 15; + +[(group _heliA2),_location] call BIS_fnc_taskAttack; \ No newline at end of file diff --git a/Functions/Tasks/Functions/meeting.sqf b/Functions/Tasks/Functions/meeting.sqf new file mode 100644 index 0000000..820b976 --- /dev/null +++ b/Functions/Tasks/Functions/meeting.sqf @@ -0,0 +1,15 @@ +_time = 10; +_x = 0; +Crossroads = [West,"HQ"]; + +while{_x != _time && dead == 0}do{ + Sleep 1; + _x = _x + 1; +}; + +Sleep 1; + +if(dead == 0)then{ + Crossroads sideChat "Meeting is over, proceed with mission"; + meeting = 1; +}; \ No newline at end of file diff --git a/Functions/Tasks/boat.sqf b/Functions/Tasks/boat.sqf new file mode 100644 index 0000000..4d4bbba --- /dev/null +++ b/Functions/Tasks/boat.sqf @@ -0,0 +1,49 @@ +//var +_name = [5] call Zen_StringGenerateRandom; +explP = false; + + +//Set location for triggers +_missionDropoffzone = getMarkerPos "mrk_return"; + + +//location +_location = ["mrk_area",0,0,2,[3,500],[0,360],[0,0,0],[0,0,0],[0,0],[1,15,300]] call Zen_FindGroundPosition; + +//Create marker +_marker = createMarker [_name, _location]; +_name setMarkerType "mil_objective"; +_name setMarkerColor "ColorOPFOR"; + +//Spawn cache and wreck +cache = "Box_IND_AmmoVeh_F" createVehicle _location; +publicVariable "cache";//Global to add action +_locationW = [_location,10,10] call Zen_ExtendPosition; +_wreck = "Land_Wreck_Plane_Transport_01_F" createVehicle ([_locationW, random 50, random 50] call BIS_fnc_relPos); + + +//Create task +_task = [west,"A C-130 was shot down overseas and dropped an experimental weapons cache. Dive down to the wreckage and return the cache to base","Return sunken cache",_location,true,"",_name] call Zen_InvokeTask; + + +//Spawn enemies +[_location,600,[0,false],[0,false],[0,false],[0,false],[0,false],[3,false,"cas"],[6,true]] spawn JOC_spawnZone; + + +[{cache addAction ["Set explosives", {[{{explP = true};},"BIS_fnc_spawn",true,true] call BIS_fnc_MP;}];},"BIS_fnc_spawn",true,true] call BIS_fnc_MP; + +waitUntil{explP}; + +Sleep 60; + +"Bo_GBU12_LGB" createVehicle (getPos cache); + +sleep 5; + +[_name, "succeeded"] call Zen_UpdateTask; + + +//Cleanup +deleteVehicle cache; +deleteVehicle _wreck; +taskActive = 0; \ No newline at end of file diff --git a/Functions/Tasks/convoy.sqf b/Functions/Tasks/convoy.sqf new file mode 100644 index 0000000..e69de29 diff --git a/Functions/Tasks/crashedChopper.sqf b/Functions/Tasks/crashedChopper.sqf new file mode 100644 index 0000000..6f48d35 --- /dev/null +++ b/Functions/Tasks/crashedChopper.sqf @@ -0,0 +1,99 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +//Set up var +_name = [5] call Zen_StringGenerateRandom; +pilotRescued = 0; +pilotDead = 0; +_ok = 0; + + +//Get position +while{_ok == 0}do{ + _location = [0,0,0,1,0,0,[1,0,10],0,0,[1,5,5],[1,[0,0,0],10]] call Zen_FindGroundPosition; + _nearestPlayers = []; + { + if (isPlayer _x && _x distance _location < 1000) then { + _nearestPlayers pushBack _x; + }; + } forEach (playableUnits + switchableUnits); + if(count _nearestPlayers == 0)then{_ok = 1; locationT = _location;}; +}; + +_location = locationT; + +_dropLocation = getMarkerPos "mrk_return"; + +//Create marker +_marker = createMarker [_nameM, _location]; +_nameM setMarkerType "mil_objective"; +_nameM setMarkerColor "ColorOPFOR"; + + +//Spawn chopper + crew +_chopper = [_location, "Land_Wreck_Heli_Attack_01_F"] call Zen_SpawnVehicle; + +_locationP= [_location, random 20, random 20] call BIS_fnc_relPos; +_groupPilot = createGroup west; +Sleep 20; +pilot = _groupPilot createUnit ["B_Helipilot_F",_locationP, [], 0, "NONE"]; +pilot setCaptive true; +[pilot, true, 9999] call ace_medical_fnc_setUnconscious; + + +//Create task markers +_location= [_location, random 150, random 150] call BIS_fnc_relPos; +_marker = createMarker [_name, _location]; +_name setMarkerShape "RECTANGLE"; +_name setMarkerSize [200,200]; +_name setMarkerBrush "Solid"; +_name setMarkerColor "ColorBLUFOR"; + +//Create task +_task = [west,"An experimental Comanche helicopter was shot down by OPFOR forces and made an emergency landing. Satellites spotted enemy forces assembling at the airfield witch are due to leave for the crash site. +Secure the crash site and extract the pilot","Secure downed Comanche",_location,true,"",_name] call Zen_InvokeTask; + + +[1800]spawn JOC_taskCrashBleedOut; + +_x = 0; + +//Spawn enemy's +_trg = createTrigger ["EmptyDetector",_location,true]; +_trg setTriggerArea [900,900,900,false]; +_trg setTriggerActivation ["WEST","PRESENT", false]; +_trg setTriggerStatements ["(!((typeOf (thisList select 0)) in jetArray)) OR ((count thisList) > 1)","[getPos thisTrigger,300,[4,true],[3,false],[0,false],[0,false],[0,false],[0,false,""cas""],[0,false]] spawn JOC_spawnZone;[getPos thisTrigger,600] spawn JOC_monitorTown;",""]; + + +//Spawn complete trigger +_trgdrop = createTrigger ["EmptyDetector",_dropLocation]; +_trgdrop setTriggerArea [10,10,10,false]; +_trgdrop setTriggerActivation ["BLUFOR","PRESENT", false]; +_trgdrop setTriggerStatements ["{[thisTrigger, _x]call BIS_fnc_inTrigger}count [pilot, blu_hostage_2] > 0","pilotRescued = 1",""]; + +//Spawn dead trigger +_trgdead = createTrigger ["EmptyDetector",_dropLocation]; +_trgdead setTriggerStatements ["!alive pilot","pilotDead = 1",""]; + +pilot allowDamage true; + +waitUntil {pilotRescued == 1 or pilotDead == 1}; + + +//Complete task +if(pilotRescued == 1) then{ + [_name, "succeeded"] call Zen_UpdateTask; +}; + +if(pilotDead == 1) then{ + [_name, "failed"] call Zen_UpdateTask; +}; + +Sleep 5; + +taskActive = 1; + + +//Cleanup +deleteMarker _marker; +deleteVehicle pilot; \ No newline at end of file diff --git a/Functions/Tasks/escort.sqf b/Functions/Tasks/escort.sqf new file mode 100644 index 0000000..37a770d --- /dev/null +++ b/Functions/Tasks/escort.sqf @@ -0,0 +1,35 @@ +//Set up var +arrived = 0; +dead = 0; +_x = 0; +_y = 0; +_ok = 0; +_name = [5] call Zen_StringGenerateRandom; + + +//Get location +_location = [0,0,["mrk_safeZone"],1,0,0,[1,0,10],0,0,[1,5,5],[1,[0,0,0],10]] call Zen_FindGroundPosition; + + +//Create task +_task = [west,"A VIP needs escorting to an evacuation location. Once at the location, SOF will take further care off him.","Escort VIP",_location,true,"",_name] call Zen_InvokeTask; + + +//Spawn vip +_groupVip = createGroup west; +vip = _groupVip createUnit ["B_officer_F",getMarkerPos "mrk_return", [], 0, "NONE"]; +vip allowFleeing 0; + + +//Spawn dropoff trigger +_trgdrop = createTrigger ["EmptyDetector",_location]; +_trgdrop setTriggerArea [50,50,50,false]; +_trgdrop setTriggerActivation ["CIV","PRESENT", false]; +_trgdrop setTriggerStatements ["crate distance thistrigger < 20","arrived = 1",""]; + + +//Spawn dead trigger +_trgdead = createTrigger ["EmptyDetector",_missionDropoffzone]; +_trgdead setTriggerStatements ["!alive CIV","dead = 1",""]; + + diff --git a/Functions/Tasks/fn_task_compile.sqf b/Functions/Tasks/fn_task_compile.sqf new file mode 100644 index 0000000..b8f5827 --- /dev/null +++ b/Functions/Tasks/fn_task_compile.sqf @@ -0,0 +1,10 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// + +//Building +JOC_taskCrashBleedOut = compileFinal preprocessFileLineNumbers "Functions\Tasks\Functions\bleedOut.sqf"; +JOC_taskUavDownload = compileFinal preprocessFileLineNumbers "Functions\Tasks\Functions\download.sqf"; +JOC_taskUavAttack = compileFinal preprocessFileLineNumbers "Functions\Tasks\Functions\attack.sqf"; +JOC_taskGlobalChat = compileFinal preprocessFileLineNumbers "Functions\Tasks\Functions\chat.sqf"; +JOC_taskKillExtract = compileFinal preprocessFileLineNumbers "Functions\Tasks\Functions\extract.sqf"; \ No newline at end of file diff --git a/Functions/Tasks/kill.sqf b/Functions/Tasks/kill.sqf new file mode 100644 index 0000000..0e0b7a3 --- /dev/null +++ b/Functions/Tasks/kill.sqf @@ -0,0 +1,75 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +//var +_name = [5] call Zen_StringGenerateRandom; +detected = 0; +dead = 0; +evac = 0; +_ok = 0; + + +//location +_targetTown = opTownMarkers call BIS_fnc_selectRandom; +_location = getMarkerPos (_targetTown); + +//Create task +_task = [west,"Intel shows the location of an enemy HVT. Move in, execute kill order and return to base.","Kill officer",_location,true,"",_name] call Zen_InvokeTask; + + +//Create marker +_marker = createMarker [_name, _location]; +_name setMarkerType "mil_objective"; +_name setMarkerColor "ColorOPFOR"; + +//Spawn officer +_locationS = [_location,[0,50],0,1,[1,150]] call Zen_FindGroundPosition; + +_groupOfficer = createGroup east; +officer = _groupOfficer createUnit ["O_officer_F",_locationS, [], 0, "NONE"]; +officer allowFleeing 0; + +//Personal protection +_group = [_locationS, east, "infantry", 3,"basic"] call Zen_SpawnInfantry; +officer joinSilent _group; +officer setLeader _group; + + +//Spawn dead trigger +_trgdead = createTrigger ["EmptyDetector",_location]; +_trgdead setTriggerStatements ["!alive officer","dead = 1",""]; + +//Spawn extract trigger +_trg = createTrigger ["EmptyDetector",_location]; +_trg setTriggerArea [450,450,450,false]; +_trg setTriggerActivation ["WEST","EAST D", false]; +_trg setTriggerStatements ["this","detected = 1",""]; + +//Spawn fail trigger +_trgdrop = createTrigger ["EmptyDetector",(getMarkerPos "mrk_end")]; +_trgdrop setTriggerArea [500,500,500,false]; +_trgdrop setTriggerActivation ["EAST","PRESENT", false]; +_trgdrop setTriggerStatements ["(officer distance thistrigger < 200)","evac = 1",""]; + +//Wait until complete or failed +waitUntil {dead == 1 or detected == 1}; + +if (detected == 1) then{ + []spawn JOC_taskKillExtract; +}; + +waitUntil {dead == 1 or evac == 1}; +if ( evac == 1) then{ + [_name, "failed"] call Zen_UpdateTask; +}; + +if ( dead == 1) then{ + [_name, "succeeded"] call Zen_UpdateTask; +}; +sleep 15; + + +//Cleanup +deleteVehicle officer; +deleteMarker _marker; +taskActive = 0; \ No newline at end of file diff --git a/Functions/Tasks/meeting.sqf b/Functions/Tasks/meeting.sqf new file mode 100644 index 0000000..e69de29 diff --git a/Functions/Tasks/nuke.sqf b/Functions/Tasks/nuke.sqf new file mode 100644 index 0000000..2131927 --- /dev/null +++ b/Functions/Tasks/nuke.sqf @@ -0,0 +1,118 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +//var +disabled = 0; +launched = 0; +destroyed = 0; +_name = [5] call Zen_StringGenerateRandom; + + +//location +_location = getMarkerPos "mrk_jetSpawn";//[0,0,occupiedMarkers,1,0,0,[1,0,10],0,0,[1,5,5],[1,[10,-1,-1],120]] call Zen_FindGroundPosition; + + +//Create task +_text = "Russian forces are preparing a nuclear attack. ROE on the vehicle is hold fire, since it is likely the nuke will go off if it gets blown up"; +_task = [west,_text,"Prevent launch",_location,true,"",_name] call Zen_InvokeTask; + +//Create marker +_marker = createMarker [_name, _location]; +_name setMarkerType "hd_objective"; +_name setMarkerColor "ColorOPFOR"; + +//Spawn icbm +icbm = [_location, "rhs_9k79_B"] call Zen_SpawnVehicle; +[icbm,east] call Zen_SpawnVehicleCrew; +Sleep 1; +[icbm,1] spawn rhs_fnc_ss21_AI_prepare; + + + +//Spawn enemy's +_groupCount = 7; +_garrisonCount = 10; +_carCount = 5; +_lightCount = 2; +_tankCount = 3; +_helicopterCount = 3; + +_x = 0; + +//infantry +while{_x < _groupCount} do{ + _locationS = [_location, random 200, random 200] call BIS_fnc_relPos; + _locationS = [_locationS,1,1] call Zen_ExtendPosition; + _group = [_locationS, east, "infantry", 4,"Basic"] call Zen_SpawnInfantry; + [_group,_location,[0,300],[0,360],"limited","safe"] spawn Zen_OrderInfantryPatrol; + _x = _x + 1; +}; + +_x = 0; + +//IFV +while{_x < _lightCount} do{ + _locationS = [_location, random 300, random 300] call BIS_fnc_relPos; + _locationS = [_locationS,0,0,1,[1,700]] call Zen_FindGroundPosition; + _veh = [_locationS,(ifvPool call BIS_fnc_selectRandom)] call Zen_SpawnVehicle; + [_veh,east] call Zen_SpawnVehicleCrew; + _x = _x + 1; +}; + +_x = 0; + +//tanks +while{_x < _tankCount} do{ + _locationS = [_location, random 300, random 300] call BIS_fnc_relPos; + _locationS = [_locationS,1,1] call Zen_ExtendPosition; + _locationS = [_locationS,0,0,1,[1,700]] call Zen_FindGroundPosition; + _veh = [_locationS,(tankPool call BIS_fnc_selectRandom)] call Zen_SpawnVehicle; + [_veh,east] call Zen_SpawnVehicleCrew; + _x = _x + 1; +}; + +_x = 0; + +//Helicopters +while{_x < _helicopterCount} do{ + _locationS = [_location, random 500, random 500] call BIS_fnc_relPos; + _heliA = [_locationS,casPool,50] call Zen_SpawnHelicopter; + _x = _x + 1; + +}; + + + +//Spawn fail trigger +_trg = createTrigger ["EmptyDetector",_location]; +_trg setTriggerStatements ["!alive icbm","destroyed = 1",""]; + + +//Spawn complete trigger +_trg2 = createTrigger ["EmptyDetector",_location]; +_trg2 setTriggerStatements ["!alive (crew icbm select 0) && !alive (crew icbm select 1)","disabled = 1",""]; + + +[600]execVM "Tasks\functions\countdown.sqf"; + +//Wait until complete +waitUntil{disabled == 1 or launched == 1 or destroyed == 1}; + +if (disabled == 1) then{ + [_name, "succeeded"] call Zen_UpdateTask; +}; + +if (launched == 1) then{ + [_name, "failed"] call Zen_UpdateTask; + icbm doTarget targetNuke; +}; + +if (destroyed == 1) then{ + [_name, "failed"] call Zen_UpdateTask; + [_location,10000,1000] call rhs_fnc_ss21_nuke +}; + +sleep 15; + +deleteMarker _marker; +taskActive = 0; diff --git a/Functions/Tasks/rescue.sqf b/Functions/Tasks/rescue.sqf new file mode 100644 index 0000000..0da7a77 --- /dev/null +++ b/Functions/Tasks/rescue.sqf @@ -0,0 +1,77 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +//Set up var +rescued = 0; +dead = 0; +_x = 0; +_y = 0; +_ok = 0; +_name = [5] call Zen_StringGenerateRandom; + + +//Get position +_targetTown = opTownMarkers call BIS_fnc_selectRandom; +_location = getMarkerPos (_targetTown); + +//Set location for triggers +_missionDropoffzone = getMarkerPos "mrk_return"; + + +//Create task +_task = [west, "A journalist Journalist has been taken hostage by enemy SOF. Attempts to negotiate with them have unfortunately failed and plans are made to move him to Iran. This could have a big influence on public opinions, something we cannot afford at all. Rescue him and return him to the Return point","Rescue journalist",_location,true,"",_name] call Zen_InvokeTask; + + +//Create marker +_marker = createMarker [_name, _location]; +_name setMarkerType "mil_objective"; +_name setMarkerColor "ColorOPFOR"; + + +//Spawn hostage +_locationS = [_location,[0,50],0,1,[1,150]] call Zen_FindGroundPosition; + +_groupHostage = createGroup civilian; +CIV = _groupHostage createUnit ["C_journalist_F",_locationS, [], 0, "NONE"]; +CIV allowFleeing 0; +_locationHostage = _locationS +CIV setPos _locationHostage; + +//Hostage set behaviour +CIV setBehaviour "Careless"; +doStop CIV; +commandStop CIV; +CIV switchMove "AmovPercMstpSsurWnonDnon"; + +//Spawn enemy +[_locationHostage, east, "sof", 4,"SF"] call Zen_SpawnInfantry; + +//Spawn dropoff trigger +_trgdrop = createTrigger ["EmptyDetector",_missionDropoffzone]; +_trgdrop setTriggerArea [50,50,50,false]; +_trgdrop setTriggerActivation ["CIV","PRESENT", false]; +_trgdrop setTriggerStatements ["{[thisTrigger, _x]call BIS_fnc_inTrigger}count [CIV, blu_hostage_2] > 0","rescued = 1",""]; + + +//Spawn dead trigger +_trgdead = createTrigger ["EmptyDetector",_missionDropoffzone]; +_trgdead setTriggerStatements ["!alive CIV","dead = 1",""]; + + +//Wait until complete or failed +waitUntil {dead == 1 or rescued == 1}; + +if ( dead == 1) then{ + [_name, "failed"] call Zen_UpdateTask; +}; + +if ( rescued == 1) then{ + [_name, "succeeded"] call Zen_UpdateTask; +}; +sleep 15; + + +//Cleanup +deleteVehicle CIV; +deleteMarker _marker; +taskActive = 0; \ No newline at end of file diff --git a/Functions/Tasks/taskManager.sqf b/Functions/Tasks/taskManager.sqf new file mode 100644 index 0000000..d934695 --- /dev/null +++ b/Functions/Tasks/taskManager.sqf @@ -0,0 +1,62 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +taskActive = 0; + +convoy = 0; +crash = 0; +kill = 0; +nuke = 0; +rescue = 0; +uavM = 0; + +_tasks = ["crash","kill","rescue","uav"];//All (almost)finished tasks are in here + +sleep 60; + +while{true}do{ + _task = _tasks call BIS_fnc_selectRandom; + + if(_task == "convoy" and convoy < 1) then{ + []execVM "Tasks\convoy.sqf"; + taskActive = 1; + convoy = 5; + }; + if(_task == "crash" and crash < 1) then{ + []spawn JOC_taskCrash; + taskActive = 1; + crash = 4; + }; + if(_task == "kill" and kill < 1) then{ + []spawn JOC_taskKill; + taskActive = 1; + kill = 4; + }; + if(_task == "nuke" and nuke < 1) then{ + []execVM "Tasks\nuke.sqf"; + taskActive = 1; + nuke = 8; + }; + if(_task == "rescue" and rescue < 1) then{ + []spawn JOC_taskRescue; + taskActive = 1; + rescue = 3; + }; + if(_task == "uav" and uavM < 1) then{ + []spawn JOC_taskUav; + taskActive = 1; + uavM = 3; + }; + + if(taskActive == 1)then{ + convoy = convoy - 1; + crash = crash - 1; + kill = kill - 1; + nuke = nuke - 1; + rescue = rescue - 1; + uavM = uavM - 1; + }; + + waitUntil{sleep 60;taskActive == 0;}; + Sleep 1200; +}; \ No newline at end of file diff --git a/Functions/Tasks/uav.sqf b/Functions/Tasks/uav.sqf new file mode 100644 index 0000000..75be70d --- /dev/null +++ b/Functions/Tasks/uav.sqf @@ -0,0 +1,70 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +//Set up var +_name = [5] call Zen_StringGenerateRandom; +hacked = 0; +destroyed = 0; +uavStart = 0; + + +//Get position +_location = [0,0,opTownMarkers,1,0,0,[1,0,10],0,0,[1,5,5],[1,[0,0,0],10]] call Zen_FindGroundPosition; + + +//Create task markers +_locationM= [_location, random 450, random 450] call BIS_fnc_relPos; +_marker = createMarker [_name, _locationM]; +_name setMarkerShape "ELLIPSE"; +_name setMarkerSize [500,500]; +_name setMarkerBrush "Solid"; +_name setMarkerColor "ColorOPFOR"; + +//Create marker +_marker = createMarker [_nameM, _location]; +_nameM setMarkerType "mil_objective"; +_nameM setMarkerColor "ColorOPFOR"; + + +//Create task +_task = [west,"An enemy UAV has crash-landed somewhere near the marked location. It is believed to contain valuable intel. Find and secure the UAV, hack it, and then destroy it.","Hack UAV",_locationM,true,"",_name] call Zen_InvokeTask; + + +//Spawn uav + configure +uav = [_location, "O_UAV_02_F"] call Zen_SpawnVehicle; +uav setDamage 0.5; +uav setFuel 0; + + +//Spawn dead trigger +_trgdead = createTrigger ["EmptyDetector",_location]; +_trgdead setTriggerStatements ["!alive uav","destroyed = 1",""]; + +_trgD = createTrigger ["EmptyDetector",_location]; +_trgD setTriggerArea [10,10,10,false]; +_trgD setTriggerActivation ["WEST","PRESENT", true]; +_trgD setTriggerStatements ["this","",""]; + +waitUntil {sleep 5;count (list _trgD) > 0}; + +[_trgD]spawn JOC_taskUavDownload; + +waitUntil {hacked == 1 or destroyed == 1}; + +if(hacked == 1)then{ + waitUntil {!alive uav}; + [_name, "succeeded"] call Zen_UpdateTask; +}; + +if(destroyed == 1 and hacked == 0)then{ + [_name, "failed"] call Zen_UpdateTask; +}; + + +//Cleanup +taskActive = 0; + +Sleep 15; + +deleteMarker _marker; +deleteVehicle uav; \ No newline at end of file diff --git a/Functions/Towns/indTown.sqf b/Functions/Towns/indTown.sqf new file mode 100644 index 0000000..1de65be --- /dev/null +++ b/Functions/Towns/indTown.sqf @@ -0,0 +1,28 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +_villages = nearestLocations [getPosATL player, ["NameVillage"], 35000]; +_villagesT = [_villages,opTowns] call Zen_ArrayFilterValues; +_villagesT = [_villagesT,blackTowns] call Zen_ArrayFilterValues; + +_x = 0; +while{_x < count _villagesT}do{ + _village = _villagesT select _x; + _name = text _village; + _location = position (_village); + + _marker = createMarker [_name, _location]; + _name setMarkerShape "ELLIPSE"; + _name setMarkerSize [300,300]; + _name setMarkerBrush "SolidBorder"; + _name setMarkerColor "ColorCIV"; + + _trg = createTrigger ["EmptyDetector",_location,true]; + _trg setTriggerArea [300,300,300,false]; + _trg setTriggerActivation ["WEST","PRESENT", false]; + _trg setTriggerStatements ["this","deleteVehicle thisTrigger;[getPos thisTrigger,300] spawn JOC_monitorTown",""]; + _trg setTriggerTimeout [10,10,10,true]; + + _x = _x + 1; + Sleep 0.01; +}; \ No newline at end of file diff --git a/Functions/Towns/monitor.sqf b/Functions/Towns/monitor.sqf new file mode 100644 index 0000000..82abec6 --- /dev/null +++ b/Functions/Towns/monitor.sqf @@ -0,0 +1,45 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +private["_location","size"]; +_location = _this select 0; +_size = _this select 1; + +_town = (nearestLocations [_location, ["NameCityCapital","NameCity","NameVillage"], 100]) select 0; +_nameT = text _town; + +_owner = 1; //0 = BLUFOR|1 = OPFOR + +sleep 10; + +//Side triggers +_trgO = createTrigger ["EmptyDetector",_location]; +_trgO setTriggerArea [_size,_size,_size,false]; +_trgO setTriggerActivation ["EAST","PRESENT", false]; +_trgO setTriggerStatements ["this","",""]; + +_trgB = createTrigger ["EmptyDetector",_location]; +_trgB setTriggerArea [_size,_size,_size,false]; +_trgB setTriggerActivation ["WEST","PRESENT", false]; +_trgB setTriggerStatements ["this","",""]; + +Sleep 10; + +while{true}do{ + if((count list _trgO <= 5) and _owner == 1)then{ + _nameT setMarkerColor "ColorBLUFOR"; + [bluTownsN,count bluTownsN,_nameT] call Zen_ArrayInsert; [bluTowns,count bluTowns,_town] call Zen_ArrayInsert; + opTowns = opTowns - [_town]; + opTownsN = opTownsN - [_nameT]; + _owner = 0; + }; + if(((count list _trgB <= 3) and (count list _trgO >= 5)) and _owner == 0)then{ + _nameT setMarkerColor "ColorOPFOR"; + [opTownsN,count opTownsN,_nameT] call Zen_ArrayInsert; [opTowns,count opTowns,_town] call Zen_ArrayInsert; + bluTowns = bluTowns - [_town]; + bluTownsN = bluTownsN - [_nameT]; + _owner = 1; + }; + + Sleep 10; +}; \ No newline at end of file diff --git a/Functions/Towns/occupy.sqf b/Functions/Towns/occupy.sqf new file mode 100644 index 0000000..43d46ad --- /dev/null +++ b/Functions/Towns/occupy.sqf @@ -0,0 +1,81 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +_ok = 0; + +//Get location of town +_capitals = nearestLocations [getPosATL player, ["NameCityCapital"], 35000]; +_capitalName = capitalName; +_towns = nearestLocations [getPosATL player, ["NameCity"], 35000]; +_villages = nearestLocations [getPosATL player, ["NameVillage"], 35000]; + + +_targetTown = 0; +_townName = 0; +while{_ok == 0}do{ + _targetTown = _villages select (floor (random (count _villages))); + if((count _towns + count _capitals) > count opTownsN)then{_targetTown = _towns select ((count opTownsN) - count _capitals);}; + if((count _capitals) > count opTownsN)then{_targetTown = _capitals select (count opTownsN);}; + _townName = text _targetTown; + if (!(_townName in opTownsN) && !(_townName in blackTowns))then{_ok = 1; [opTownsN,count opTownsN,_townName] call Zen_ArrayInsert; [opTowns,count opTowns,_targetTown] call Zen_ArrayInsert;}; + Sleep 1; +}; + +if(_targetTown in _towns)then{ + _location = position (_targetTown); + _nameT = _townName; + + _trg = createTrigger ["EmptyDetector",_location,true]; + _trg setTriggerArea [900,900,900,false]; + _trg setTriggerActivation ["WEST","PRESENT", false]; + _trg setTriggerStatements ["this","[getPos thisTrigger,550,[11,true],[5,false],[0,false],[3,false],[1,false],[0,false,""cas""],[0,false]] call JOC_spawnZone;[getPos thisTrigger,600] spawn JOC_monitorTown;deleteVehicle thisTrigger;",""]; + _trg setTriggerTimeout [5,5,5,true]; + + _marker = createMarker [_nameT, _location]; + _nameT setMarkerShape "ELLIPSE"; + _nameT setMarkerSize [550,550]; + _nameT setMarkerBrush "SolidBorder"; + _nameT setMarkerColor "ColorOPFOR"; + + [opTownMarkers,count opTownMarkers,_nameT] call Zen_ArrayInsert; +}; + +if(_targetTown in _villages)then{ + _location = position (_targetTown); + _nameT = _townName; + + _location = position (_targetTown); + _trg = createTrigger ["EmptyDetector",_location,true]; + _trg setTriggerArea [700,700,700,false]; + _trg setTriggerActivation ["WEST","PRESENT", false]; + _trg setTriggerStatements ["this","[getPos thisTrigger,300,[7,true],[2,false],[0,false],[0,false],[0,false],[0,false,""cas""],[0,false]] call JOC_spawnZone;[getPos thisTrigger,400] spawn JOC_monitorTown; deleteVehicle thisTrigger;",""]; + _trg setTriggerTimeout [5,5,5,true]; + + _marker = createMarker [_nameT, _location]; + _nameT setMarkerShape "ELLIPSE"; + _nameT setMarkerSize [300,300]; + _nameT setMarkerBrush "SolidBorder"; + _nameT setMarkerColor "ColorOPFOR"; + + [opTownMarkers,count opTownMarkers,_nameT] call Zen_ArrayInsert; +}; + +if(_targetTown in _capitals)then{ + _location = position (_targetTown); + _nameT = _townName; + + _location = position (_targetTown); + _trg = createTrigger ["EmptyDetector",_location,true]; + _trg setTriggerArea [1200,1200,1200,false]; + _trg setTriggerActivation ["WEST","PRESENT", false]; + _trg setTriggerStatements ["this","[getPos thisTrigger,700,[15,true],[7,false],[0,false],[5,false],[2,false],[0,false,""cas""],[0,false]] call JOC_spawnZone;[getPos thisTrigger,800] spawn JOC_monitorTown;deleteVehicle thisTrigger;",""]; + _trg setTriggerTimeout [5,5,5,true]; + + _marker = createMarker [_nameT, _location]; + _nameT setMarkerShape "ELLIPSE"; + _nameT setMarkerSize [700,700]; + _nameT setMarkerBrush "SolidBorder"; + _nameT setMarkerColor "ColorOPFOR"; + + [opTownMarkers,count opTownMarkers,_nameT] call Zen_ArrayInsert; +}; \ No newline at end of file diff --git a/Functions/Vehicle/Tow/attach.sqf b/Functions/Vehicle/Tow/attach.sqf new file mode 100644 index 0000000..c81756f --- /dev/null +++ b/Functions/Vehicle/Tow/attach.sqf @@ -0,0 +1,16 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +_driver = _this select 0; +_vehicle = vehicle _driver; +_target = (nearestObjects [_vehicle, towableObjects, 20]) select 0; + +vehicleT = _vehicle; + +_vehicle setVariable ["towing", true, true]; +removeAllActions _driver; + +//Attach with rope +rope = ropeCreate [_vehicle, [0,-4.4,0.45], _target, [0,3,-1.5], 7]; + +_driver addAction ["Detach", {[_this select 0]call JOC_towDetach;}]; \ No newline at end of file diff --git a/Functions/Vehicle/Tow/detach.sqf b/Functions/Vehicle/Tow/detach.sqf new file mode 100644 index 0000000..d4d39c9 --- /dev/null +++ b/Functions/Vehicle/Tow/detach.sqf @@ -0,0 +1,10 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +_driver = _this select 0; +_vehicle = vehicle _driver; +_target = (nearestObjects [_vehicle, towableObjects, 20]) select 0; + +ropeDestroy rope; +removeAllActions (driver _vehicle); +_vehicle setVariable ["towing", false, true]; \ No newline at end of file diff --git a/Functions/Vehicle/cdu.sqf b/Functions/Vehicle/cdu.sqf new file mode 100644 index 0000000..47207c7 --- /dev/null +++ b/Functions/Vehicle/cdu.sqf @@ -0,0 +1,60 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +_veh = (vehicle player); +//if(cduEnabled)then{cduEnabled = false}; +if(cduEnabled or (player != (commander _veh)))exitWith{cduEnabled = false}; +if(!cduEnabled)then{ +cduEnabled = true; +while{cduEnabled}do{ + //Ammo + _magazines = magazinesAmmo _veh; + _magazinesD = magazinesDetail _veh; + _magazineNames = []; + _magazineAmmo = []; + _magazineStrings = []; + + { + _name = _x select 0; + _ammo = _x select 1; + + _string = (_magazinesD select _forEachIndex); + _stringId = _string find "("; + _stringD = _string select [_stringId]; + _string = [_string,_stringD,""]call Zen_StringFindReplace; + + if(!(_name in _magazineNames))then{ + [_magazineNames,count _magazineNames,_name] call Zen_ArrayInsert; + [_magazineAmmo,count _magazineAmmo,_ammo] call Zen_ArrayInsert; + [_magazineStrings,count _magazineStrings,_string] call Zen_ArrayInsert; + }else{ + _id = (_magazineNames find _name); + _ammoN = ((_magazineAmmo select _id) + _ammo); + _magazineAmmo set [_id, _ammoN]; + }; + }forEach _magazines; + + _ammoText = ""; + { + _ammoText = composeText [_ammoText, lineBreak, (_magazineStrings select _forEachIndex),"(",(str(_magazineAmmo select _forEachIndex)),")"]; + }forEach _magazineNames; + + //APS + _statusL = ""; + _statusR = ""; + _statusLO = (_veh getVariable "reloading_left"); + _statusRO = ( _veh getVariable "reloading_right"); + if(_statusLO == 0)then{_statusL = parseText "Ready";}else{_statusL = parseText "Reloading";}; + if(_statusRO == 0)then{_statusR = parseText "Ready";}else{_statusR = parseText "Reloading";}; + _aps_leftA = parseText format["APS left(%1)",(_veh getVariable "ammo_left")]; + _aps_rightA = parseText format["APS right(%1)",(_veh getVariable "ammo_right")]; + _apsText = composeText [_aps_leftA, " | Status: ", _statusL, lineBreak, _aps_rightA, " | Status: ", _statusR]; + //Misc + _miscText = ""; + + _text = composeText [_ammoText, lineBreak, "-------------", lineBreak, _apsText, lineBreak, "-------------", _miscText]; + + hintSilent _text; + sleep 0.1; +}; +}; \ No newline at end of file diff --git a/Functions/Vehicle/handleDamage.sqf b/Functions/Vehicle/handleDamage.sqf new file mode 100644 index 0000000..ce13a73 --- /dev/null +++ b/Functions/Vehicle/handleDamage.sqf @@ -0,0 +1,57 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +private["_fireEffect"]; +_tank = _this select 0; +_part = _this select 1; +_damage = _this select 2; + +_text = format["%1,%2",_part,_damage,(_tank getHit _part)]; +hint _text; + +_tank setHit[_part,((_damage * tankMuliplier) + (_tank getHit _part))]; + +if((_tank getHitPointDamage "HitEngine") > 0.8)then{ + if(!(_tank getVariable "burning"))then{ + _tank setVariable["burning",true,true]; + _fireEffect = "test_EmptyObjectForFireBig" createVehicle position _tank; + if((typeOf _tank) == "B_MBT_01_cannon_F")then{ + _fireEffect attachTo[_tank,[0,1.5,-0.7]]; + }else{ + _fireEffect attachTo[_tank,[0,-4,0]]; + }; + [_tank]spawn{ + _tank = _this select 0; + while{alive _tank}do{ + if(_tank getVariable "burning")then{ + _tank setDamage ((damage _tank) + 0.05); + sleep 0.5; + }; + }; + }; + [_tank]spawn{ + _tank = _this select 0; + _crew = []; + while{alive _tank}do{ + if(_tank getVariable "burning")then{ + _crew = (crew _tank); + { + []spawn{ + [] call BIS_fnc_flamesEffect; + player setDamage ((damage player) + 0.05); + }; + }forEach _crew; + sleep 0.4; + }; + }; + }; + }; +}; + +if(!alive _tank)then{ + { + _obj = _x; + detach _obj; + _obj setPos [999999,999999,999999]; + }forEach (attachedObjects _tank); +}; \ No newline at end of file diff --git a/Functions/Vehicle/service.sqf b/Functions/Vehicle/service.sqf new file mode 100644 index 0000000..34e472f --- /dev/null +++ b/Functions/Vehicle/service.sqf @@ -0,0 +1,29 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +private ["_veh"]; +_veh = _this select 0; + +_veh vehicleChat "Servicing, please wait..."; +_veh setFuel 0; +Sleep 5; + +_veh vehicleChat "Repairing..."; +Sleep 5; +_veh setDamage 0; + +_veh vehicleChat "Rearming..."; +Sleep 5; +_veh setVehicleAmmo 1; +if(typeOf _veh == "B_MBT_01_cannon_F")then{ + _x setVariable ["ammo_left", 4, true]; + _x setVariable ["ammo_right", 4, true]; + _x setVariable ["reloading_left", 0, true]; + _x setVariable ["reloading_right", 0, true]; +}; + +_veh vehicleChat "Refueling..."; +Sleep 5; +_veh setFuel 1; + +_veh vehicleChat "Done!"; \ No newline at end of file diff --git a/Functions/Vehicle/tow.sqf b/Functions/Vehicle/tow.sqf new file mode 100644 index 0000000..0d9a41b --- /dev/null +++ b/Functions/Vehicle/tow.sqf @@ -0,0 +1,36 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +private ["_vehicle","_active"]; +_vehicle = _this select 0; +_active = 0; +_vehicle setVariable ["towing", false, true]; + +//if(isServer)exitWith{}; +hint "tow init"; + +while{alive _vehicle}do{ + waitUntil{sleep 5;typeOf (vehicle player) == "B_APC_Tracked_01_CRV_F"}; //You cant tow when not in the right vehicle(duh) + + hint "check"; + + _targetC = (nearestObjects [_vehicle, towableObjects, 10]) select 0; + + targetT = _targetC; + + _positionT = getPosASL _targetC; + _positionV = getPosASL _vehicle; + _positionR = []; + if((count (_positionT - [0,0,0])) > 0)then{ + _positionR = [_positionT,8,(getDir _targetC),"Compass",((getPosASL _targetC) select 2)] call Zen_ExtendPosition; + }; + + if((_positionV distance _positionR) < 2) then{ + (driver _vehicle) addAction ["Attach vehicle", {[_this select 1]spawn JOC_towAttach;}]; + waitUntil{_positionT = getPosASL _targetC;_positionV = getPosASL _vehicle;!((_positionV distance _positionR) < 2)}; + }; + + waitUntil{sleep 1;(!(_vehicle getVariable "towing"))}; + removeAllActions (driver _vehicle); + sleep 1; +}; \ No newline at end of file diff --git a/Functions/Vehicle/vehInit.sqf b/Functions/Vehicle/vehInit.sqf new file mode 100644 index 0000000..ff7ef78 --- /dev/null +++ b/Functions/Vehicle/vehInit.sqf @@ -0,0 +1,92 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +private["_vehicle"]; + +_vehicle = _this select 0; +_vehicletype = typeOf _vehicle; +_time = 0; + +sleep 1; + +_vehicle setDamage 0; + +//Blackhwk +if(_vehicletype == "RHS_UH60M")then{ + _time = 600; +}; + +//Apache +if(_vehicletype == "RHS_AH64D_wd_AA")then{ + _time = 1800; +}; + +//Medical heli +if(_vehicletype == "RHS_UH60M_MEV")then{ + _time = 1800; + _vehicle setVariable ["ace_medical_medicClass", 1]; +}; + +//LittleBird +if(_vehicletype == "MELB_AH6M_M")then{ + _time = 1800; +}; + +//Chinook +if(_vehicletype == "B_Heli_Transport_03_unarmed_F" or _vehicletype == "RHS_CH_47F")then{ + _time = 600; +}; + +//Tank +if(_vehicletype == "B_MBT_01_cannon_F" or _vehicletype == "rhsusf_m1a2sep1tuskiiwd_usarmy")then{ + _vehicle addEventHandler ["HandleDamage" , {[(_this select 0),(_this select 1), (_this select 2)]call JOC_handleVehDamage;}]; + _vehicle setVariable["burning",false,true]; +}]; + cduEnabled = false; + _time = 1800; +}; + +//IFV +if(_vehicletype == "RHS_M2A3_BUSKIII_wd" or _vehicleType == "RHS_M6_wd")then{ + _time = 1800; +}; + +//MRAP +if(_vehicletype == "rhsusf_rg33_m2_wd")then{ + _time = 600; +}; + +//HMVEE +if(_vehicletype == "rhsusf_m1025_w_s_m2" or _vehicletype == "rhsusf_m1025_w_s_Mk19")then{ + _time = 300; +}; + +//APC +if(_vehicletype == "rhsusf_m113_usarmy")then{ + _time = 600; +}; + +//Bulldozer +if(_vehicletype == "B_APC_Tracked_01_CRV_F")then{ + [_vehicle]spawn JOC_tow; + _time = 600; +}; + +//Support trucks +if(_vehicletype == "B_Truck_01_fuel_F" or _vehicletype == "B_Truck_01_ammo_F" or _vehicletype == "B_Truck_01_Repair_F")then{ + _time = 600; +}; + +//Transport truck +if(_vehicletype == "rhsusf_M1078A1P2_B_M2_wd_fmtv_usarmy")then{ + _time = 600; +}; + +//Ammo container +if(_vehicletype == "B_Slingload_01_Ammo_F" or _vehicletype == "B_Slingload_01_Fuel_F" or _vehicletype == "B_Slingload_01_Medevac_F" or _vehicletype == "B_Slingload_01_Cargo_F" or _vehicletype == "B_Slingload_01_Repair_F" or _vehicletype == "B_CargoNet_01_ammo_F")then{ + [_vehicle]spawn JOC_crateInit; + _time = 300; +}; + +zeusMod addCuratorEditableObjects [[_vehicle],false]; +[_vehicle,_time] spawn JOC_vehRespawn; \ No newline at end of file diff --git a/Functions/Vehicle/vehicle_respawn.sqf b/Functions/Vehicle/vehicle_respawn.sqf new file mode 100644 index 0000000..fb61317 --- /dev/null +++ b/Functions/Vehicle/vehicle_respawn.sqf @@ -0,0 +1,40 @@ +// [EVO] Dan's vehicle respawn script +// Its very basic, but that should hopefully improve performance +// Takes into account changes that have been made to the scripting library +// Will run only on the server, as it only needs to run in one place, but obviously can be used in both singleplayer and multiplayer +private["_vehicle","_respawntime"]; + +_vehicle = _this select 0; //get vehicle's details +_respawntime = _this select 1; //get the init set respawn time +_facingofvehicle = getDir _vehicle; //get original facing +_positionofvehicle = getPosATL _vehicle; //get original position +_vehicletype = typeOf _vehicle; //get the vehicle type +_n = 1; + +if(isServer) then{ + while{_n == 1} do{ + if(!alive _vehicle) then { //true if vehicle is not alive or it cannot move + + sleep _respawntime; + deleteVehicle _vehicle; //clear up old vehicle + { + _obj = _x; + detach _obj; + _obj setPos [999999,999999,999999]; + }forEach (attachedObjects _vehicle); + sleep 30; + _vehicle = _vehicletype createVehicle _positionofvehicle; // create a new vehicle of same type at starting position + _vehicle setPosATL _positionofvehicle; //set correct position + _vehicle setDir _facingofvehicle; //set correct facing of the vehicle + // [[[_vehicle,_respawntime],"Functions\Misc\vehicle_respawn.sqf"],"BIS_fnc_execVM",false,false] spawn BIS_fnc_MP; //replacement for the old setVehicleInit, this does the same and causes the new vehicle to have the respawn script when created + + _nameV = [6] call Zen_StringGenerateRandom; + _vehicle setVehicleVarName _nameV; + + [[[_vehicle],"JOC_vehRespawn"],"BIS_fnc_spawn",true,true ] call BIS_fnc_MP; + + _n = 0; // break out condition + }; + sleep 60; // sleep for a bit in order to reduce processing calls (increase this to whatever you like, longer gives better performance but also increases response delay) + }; +}; \ No newline at end of file diff --git a/Functions/fn_compile.sqf b/Functions/fn_compile.sqf new file mode 100644 index 0000000..1948fb9 --- /dev/null +++ b/Functions/fn_compile.sqf @@ -0,0 +1,74 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// + +//AI +JOC_spawnZone = compileFinal preprocessFileLineNumbers "Functions\AI\spawnZone.sqf"; +JOC_spawnAirfield = compileFinal preprocessFileLineNumbers "Functions\AI\spawnAirfield.sqf"; +JOC_taskJet = compileFinal preprocessFileLineNumbers "Functions\AI\taskJet.sqf"; +JOC_jetMonitor = compileFinal preprocessFileLineNumbers "Functions\AI\jetMonitor.sqf"; +JOC_radar = compileFinal preprocessFileLineNumbers "Functions\AI\radar.sqf"; +JOC_mineField = compileFinal preprocessFileLineNumbers "Functions\AI\mineField.sqf"; +JOC_radioTower = compileFinal preprocessFileLineNumbers "Functions\AI\radioTower.sqf"; +JOC_arty = compileFinal preprocessFileLineNumbers "Functions\AI\arty.sqf"; +JOC_patrol = compileFinal preprocessFileLineNumbers "Functions\AI\patrol.sqf"; + +//Bluforce tracking +JOC_bftManager = compileFinal preprocessFileLineNumbers "Functions\BFT\manager.sqf"; + +//Caching +JOC_cacheInit = compileFinal preprocessFileLineNumbers "Functions\Caching\cacheInit.sqf"; +JOC_cache = compileFinal preprocessFileLineNumbers "Functions\Caching\cache.sqf"; +JOC_unCache = compileFinal preprocessFileLineNumbers "Functions\Caching\unCache.sqf"; +JOC_cacheGroup = compileFinal preprocessFileLineNumbers "Functions\Caching\cacheGroup.sqf"; + +//Commander +JOC_cmdManager = compileFinal preprocessFileLineNumbers "Functions\Commander\manager.sqf"; +JOC_cmdAttack = compileFinal preprocessFileLineNumbers "Functions\Commander\attack.sqf"; +JOC_cmdHeli = compileFinal preprocessFileLineNumbers "Functions\Commander\heli.sqf"; + +//Init +JOC_initAA = compileFinal preprocessFileLineNumbers "Functions\Init\initAA.sqf"; +JOC_initTowns = compileFinal preprocessFileLineNumbers "Functions\Init\initTowns.sqf"; +JOC_initAirfields = compileFinal preprocessFileLineNumbers "Functions\Init\initAirfields.sqf"; +JOC_initMines = compileFinal preprocessFileLineNumbers "Functions\Init\initMines.sqf"; +JOC_initArty = compileFinal preprocessFileLineNumbers "Functions\Init\initArty.sqf"; +JOC_initRadio = compileFinal preprocessFileLineNumbers "Functions\Init\initRadio.sqf"; +JOC_initPatrols = compileFinal preprocessFileLineNumbers "Functions\Init\initPatrols.sqf"; + +//Loadouts +JOC_arsenal = compileFinal preprocessFileLineNumbers "Functions\Loadouts\arsenal.sqf"; +JOC_loadoutMaster = compileFinal preprocessFileLineNumbers "Functions\Loadouts\master.sqf"; + +//Logistics +#include "Logistics\fn_logistics_compile.sqf"; +JOC_crateInit = compileFinal preprocessFileLineNumbers "Functions\Logistics\crateInit.sqf"; + +//Player +JOC_playerLoop = compileFinal preprocessFileLineNumbers "Functions\Player\playerLoop.sqf"; +JOC_playerClick = compileFinal preprocessFileLineNumbers "Functions\Player\click.sqf"; +JOC_playerButton = compileFinal preprocessFileLineNumbers "Functions\Player\button.sqf"; + +//Tasks +#include "Tasks\fn_task_compile.sqf"; +JOC_taskManager = compileFinal preprocessFileLineNumbers "Functions\Tasks\taskManager.sqf"; +JOC_task_boat = compileFinal preprocessFileLineNumbers "Functions\Tasks\boat.sqf"; +JOC_taskCrash = compileFinal preprocessFileLineNumbers "Functions\Tasks\crashedChopper.sqf"; +JOC_taskKill = compileFinal preprocessFileLineNumbers "Functions\Tasks\kill.sqf"; +JOC_taskRescue = compileFinal preprocessFileLineNumbers "Functions\Tasks\rescue.sqf"; +JOC_taskUav = compileFinal preprocessFileLineNumbers "Functions\Tasks\uav.sqf"; + +//Towns +JOC_occupy = compileFinal preprocessFileLineNumbers "Functions\Towns\occupy.sqf"; +JOC_indTown = compileFinal preprocessFileLineNumbers "Functions\Towns\indTown.sqf"; +JOC_monitorTown = compileFinal preprocessFileLineNumbers "Functions\Towns\monitor.sqf"; + +//vehicle +JOC_vehInit = compileFinal preprocessFileLineNumbers "Functions\Vehicle\vehInit.sqf"; +JOC_vehRespawn = compileFinal preprocessFileLineNumbers "Functions\Vehicle\vehicle_respawn.sqf"; +JOC_tow = compileFinal preprocessFileLineNumbers "Functions\Vehicle\tow.sqf"; +JOC_service = compileFinal preprocessFileLineNumbers "Functions\Vehicle\service.sqf"; +JOC_handleVehDamage = compileFinal preprocessFileLineNumbers "Functions\Vehicle\handleDamage.sqf"; +JOC_towAttach = compileFinal preprocessFileLineNumbers "Functions\Vehicle\Tow\attach.sqf"; +JOC_towDetach = compileFinal preprocessFileLineNumbers "Functions\Vehicle\Tow\detach.sqf"; +JOC_vehCDU = compileFinal preprocessFileLineNumbers "Functions\vehicle\cdu.sqf"; \ No newline at end of file diff --git a/Sounds/cookoff.wav b/Sounds/cookoff.wav new file mode 100644 index 0000000000000000000000000000000000000000..169986617b648b59d90906f4b794dab4deb3a6b2 GIT binary patch literal 173684 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

xC5)U1Nb@GOY_K9H$f0wLP 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

>54QM`pdB$^;3A)LK# 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

mZfwt}rj_$@MF8 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 q+d%BH-J%&gZOVQQu%I=2iMcR$dLe 0) then { + _array pushBack _x; + }; +} forEach _this; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayAppendNested.sqf b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayAppendNested.sqf new file mode 100644 index 0000000..e02086f --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayAppendNested.sqf @@ -0,0 +1,27 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_ArrayAppendNested", _this] call Zen_StackAdd; +private ["_array"]; + +if !([_this, [["ARRAY"], ["VOID"], ["VOID"], ["VOID"], ["VOID"], ["VOID"], ["VOID"]], [], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_array = _this select 0; + +{ + if (_forEachIndex > 0) then { + if (typeName _x == "ARRAY") then { + { + _array pushBack _x; + } forEach _x; + } else { + _array pushBack _x; + }; + }; +} forEach _this; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayCopy.sqf b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayCopy.sqf new file mode 100644 index 0000000..471d280 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayCopy.sqf @@ -0,0 +1,22 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_ArrayCopy", _this] call Zen_StackAdd; +private ["_array", "_newData"]; + +if !([_this, [["ARRAY"], ["ARRAY"]], [], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_array = _this select 0; +_newData = _this select 1; + +{ + _array set [_forEachIndex, _x]; +} forEach _newData; + +_array resize (count _newData); + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayFilterCondition.sqf b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayFilterCondition.sqf new file mode 100644 index 0000000..bceab94 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayFilterCondition.sqf @@ -0,0 +1,31 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_ArrayFilterCondition", _this] call Zen_StackAdd; +private ["_array", "_condition", "_bool", "_returnArray"]; + +if !([_this, [["ARRAY"], ["CODE"]], [], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (0) +}; + +_array = _this select 0; +_condition = _this select 1; + +_returnArray = []; + +{ + _bool = (_x call _condition); + if ((isNil "_bool" ) || {(typeName _bool != "BOOL")}) exitWith { + 0 = ["Zen_ArrayFilterCondition", "Given condition does not resolve to a boolean", _this] call Zen_PrintError; + call Zen_StackPrint; + }; + + if !(_bool) then { + _returnArray pushBack _x; + }; +} forEach _array; + +call Zen_StackRemove; +(_returnArray) diff --git a/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayFilterValues.sqf b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayFilterValues.sqf new file mode 100644 index 0000000..a59afaa --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayFilterValues.sqf @@ -0,0 +1,25 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_ArrayFilterValues", _this] call Zen_StackAdd; +private ["_array", "_blacklist", "_returnArray"]; + +if !([_this, [["ARRAY"], ["ARRAY"]], [], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (0) +}; + +_array = _this select 0; +_blacklist = _this select 1; + +_returnArray = []; + +{ + if !([_x, _blacklist] call Zen_ValueIsInArray) then { + _returnArray pushBack _x; + }; +} forEach _array; + +call Zen_StackRemove; +(_returnArray) diff --git a/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayFindAverage.sqf b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayFindAverage.sqf new file mode 100644 index 0000000..eed96e2 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayFindAverage.sqf @@ -0,0 +1,19 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_ArrayFindAverage", _this] call Zen_StackAdd; +private ["_array", "_sum", "_count"]; + +if !([_this, [["ARRAY"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (0) +}; + +_array = _this select 0; + +_sum = [_array] call Zen_ArrayFindSum; +_count = {typeName _x == "SCALAR"} count _array; + +call Zen_StackRemove; +(if (_count == 0) then {0} else {(_sum / _count)}) diff --git a/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayFindExtremum.sqf b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayFindExtremum.sqf new file mode 100644 index 0000000..aa99bc7 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayFindExtremum.sqf @@ -0,0 +1,43 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_ArrayFindExtremum", _this] call Zen_StackAdd; +private ["_array", "_function", "_return", "_returnHash", "_tempHash", "_i"]; + +if !([_this, [["ARRAY"], ["CODE"]], [], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (0) +}; + +_array = _this select 0; +_function = _this select 1; + +if (count _array == 0) exitWith { + (0) +}; + +if (count _array == 1) exitWith { + (_array select 0) +}; + +_i = 0; +_return = 0; +for "_i" from 0 to (count _array - 1) do { + _return = (_array select _i); + _returnHash = _return call _function; + if (typeName _returnHash == "SCALAR") exitWith {}; +}; + +for "_j" from _i to (count _array - 1) do { + _tempHash = (_array select _j) call _function; + if (typeName _tempHash == "SCALAR") then { + if (_tempHash > _returnHash) then { + _return = (_array select _j); + _returnHash = _tempHash; + }; + }; +}; + +call Zen_StackRemove; +(_return) diff --git a/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayFindSum.sqf b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayFindSum.sqf new file mode 100644 index 0000000..98a98a3 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayFindSum.sqf @@ -0,0 +1,23 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_ArrayFindSum", _this] call Zen_StackAdd; +private ["_array", "_sum"]; + +if !([_this, [["ARRAY"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (0) +}; + +_array = _this select 0; +_sum = 0; + +{ + if (typeName _x == "SCALAR") then { + _sum = _sum + _x; + }; +} forEach _array; + +call Zen_StackRemove; +(_sum) diff --git a/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayGetDelimitedSlice.sqf b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayGetDelimitedSlice.sqf new file mode 100644 index 0000000..6379097 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayGetDelimitedSlice.sqf @@ -0,0 +1,39 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_ArrayGetDelimitedSlice", _this] call Zen_StackAdd; +private ["_totalArray", "_returnArray", "_startIndex", "_startDelimiter", "_endDelimiter", "_i"]; + +if !([_this, [["ARRAY"], ["VOID"], ["VOID"]], [], 3] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + ([]) +}; + +_totalArray = _this select 0; +_startDelimiter = _this select 1; +_endDelimiter = _this select 2; + +_returnArray = []; +_startIndex = -1; + +if (count _totalArray > 2) then { + { + if ([_x, _startDelimiter] call Zen_ValuesAreEqual) then { + _startIndex = _forEachIndex; + }; + } forEach _totalArray; + + if (_startIndex >= 0) then { + for "_i" from (_startIndex + 1) to (count _totalArray - 1) do { + if ([(_totalArray select _i), _endDelimiter] call Zen_ValuesAreEqual) exitWith {}; + _returnArray pushBack (_totalArray select _i); + }; + }; +} else { + 0 = ["Zen_ArrayGetDelimitedSlice", "The given array is too short, minimum 3 elements", _this] call Zen_PrintError; + call Zen_StackPrint; +}; + +call Zen_StackRemove; +(_returnArray) diff --git a/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayGetIndexedSlice.sqf b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayGetIndexedSlice.sqf new file mode 100644 index 0000000..909225a --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayGetIndexedSlice.sqf @@ -0,0 +1,32 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" + +_Zen_stack_Trace = ["Zen_ArrayGetIndexedSlice", _this] call Zen_StackAdd; +private ["_i", "_arrayPart", "_array", "_indexEnd", "_indexStart"]; + +if !([_this, [["ARRAY"], ["SCALAR"], ["SCALAR"]], [], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + ([]) +}; + +_array = _this select 0; +_indexStart = _this select 1; + +ZEN_STD_Parse_GetArgumentDefault(_indexEnd, 2, (count _array) - 1) + +_arrayPart = []; + +if ((_indexStart >= (count _array)) || (_indexEnd >= (count _array))) then { + 0 = ["Zen_ArrayGetIndexedSlice", "One or more given indexes are out of bounds", _this] call Zen_PrintError; + call Zen_StackPrint; +} else { + for "_i" from _indexStart to _indexEnd do { + _arrayPart pushBack (_array select _i); + }; +}; + +call Zen_StackRemove; +(_arrayPart) diff --git a/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayGetNestedIndex.sqf b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayGetNestedIndex.sqf new file mode 100644 index 0000000..79bed10 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayGetNestedIndex.sqf @@ -0,0 +1,37 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_ArrayGetNestedIndex", _this] call Zen_StackAdd; +private ["_givenSearchValue", "_givenSearchArray", "_desiredIndex", "_indexes", "_currentIndex"]; + +if !([_this, [["ARRAY"], ["VOID"], ["SCALAR"]], [], 3] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (0) +}; + +_givenSearchArray = _this select 0; +_givenSearchValue = _this select 1; +_desiredIndex = _this select 2; + +_indexes = []; + +{ + _currentIndex = _forEachIndex; + if (typeName _x == "ARRAY") then { + if (_desiredIndex != -1) then { + if ((_x select _desiredIndex) isEqualTo _givenSearchValue) then { + _indexes pushBack _currentIndex; + }; + } else { + { + if (_x isEqualTo _givenSearchValue) exitWith { + _indexes pushBack _currentIndex; + }; + } forEach _x; + }; + }; +} forEach _givenSearchArray; + +call Zen_StackRemove; +(_indexes) diff --git a/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayGetNestedValue.sqf b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayGetNestedValue.sqf new file mode 100644 index 0000000..10ca180 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayGetNestedValue.sqf @@ -0,0 +1,39 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_ArrayGetNestedValue", _this] call Zen_StackAdd; +private ["_givenSearchValue", "_givenSearchArray", "_desiredIndex", "_returnNestedArray", "_nestedArray"]; + +if !([_this, [["ARRAY"], ["VOID"], ["SCALAR"]], [], 3] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + ([]) +}; + +_givenSearchArray = _this select 0; +_givenSearchValue = _this select 1; +_desiredIndex = _this select 2; + +scopeName "main"; +_returnNestedArray = []; + +{ + if (typeName _x == "ARRAY") then { + if (_desiredIndex != -1) then { + if ([(_x select _desiredIndex), _givenSearchValue] call Zen_ValuesAreEqual) then { + _returnNestedArray = _x; + }; + } else { + _nestedArray = _x; + { + if ([_x, _givenSearchValue] call Zen_ValuesAreEqual) then { + _returnNestedArray = _nestedArray; + breakTo "main"; + }; + } forEach _nestedArray; + }; + }; +} forEach _givenSearchArray; + +call Zen_StackRemove; +(_returnNestedArray) diff --git a/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayGetRandom.sqf b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayGetRandom.sqf new file mode 100644 index 0000000..79b9d56 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayGetRandom.sqf @@ -0,0 +1,34 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" + +_Zen_stack_Trace = ["Zen_ArrayGetRandom", _this] call Zen_StackAdd; +private ["_array", "_returnElement", "_remove", "_randomIndex"]; + +if !([_this, [["VOID"], ["BOOL"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + ([]) +}; + +_array = _this select 0; +ZEN_STD_Parse_GetArgumentDefault(_remove, 1, false) + +if (typeName _array == "ARRAY") then { + if (count _array == 0) then { + _returnElement = []; + } else { + _randomIndex = ZEN_STD_Array_RandIndex(_array); + _returnElement = _array select _randomIndex; + + if (_remove) then { + _array deleteAt _randomIndex; + }; + }; +} else { + _returnElement = _array; +}; + +call Zen_StackRemove; +(_returnElement) diff --git a/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayGetRandomSequence.sqf b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayGetRandomSequence.sqf new file mode 100644 index 0000000..6bf9523 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayGetRandomSequence.sqf @@ -0,0 +1,42 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf"; +#include "Zen_FrameworkLibrary.sqf"; + +_Zen_stack_Trace = ["Zen_ArrayGetRandomSequence", _this] call Zen_StackAdd; +private ["_array", "_number", "_iterator", "_return", "_remove"]; + +if !([_this, [["ARRAY"], ["SCALAR"], ["BOOL"]], [], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + ([]) +}; + +_array = _this select 0; +_number = _this select 1; +ZEN_STD_Parse_GetArgumentDefault(_remove, 2, false) + +_iterator = []; +for "_i" from 0 to (count _array - 1) do { + _iterator pushBack _i; +}; + +0 = [_iterator] call Zen_ArrayShuffle; +_return = []; + +for "_i" from 1 to _number do { + _return pushBack (_array select (_iterator select (_i - 1))); +}; + +if (_remove) then { + _iterator resize _number; + _iterator = [_iterator, {_this}, "hash"] call Zen_ArraySort; + + { + 0 = [_array, _x - _forEachIndex] call Zen_ArrayRemoveIndex; + } forEach _iterator; +}; + +call Zen_StackRemove; +(_return) diff --git a/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayGetType.sqf b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayGetType.sqf new file mode 100644 index 0000000..1b48f88 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayGetType.sqf @@ -0,0 +1,37 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_ArrayGetType", _this] call Zen_StackAdd; +private ["_array", "_type", "_return"]; + +if !([_this, [["ARRAY"], ["VOID"]], [], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + ([]) +}; + +_array = _this select 0; +_type = _this select 1; + +if (typeName _type != "STRING") then { + _type = typeName _type; +} else { + if (_type == "") then { + _type = "STRING"; + }; +}; + +_return = []; + +{ + if ((_type != "ARRAY") && {(typeName _x == "ARRAY")}) then { + 0 = [_x, _type] call Zen_ArrayGetType; + } else { + if (typeName _x == _type) then { + _return pushBack _x; + }; + }; +} forEach _array; + +call Zen_StackRemove; +(_return) diff --git a/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayInsert.sqf b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayInsert.sqf new file mode 100644 index 0000000..2fdd68d --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayInsert.sqf @@ -0,0 +1,24 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_ArrayInsert", _this] call Zen_StackAdd; +private ["_array", "_index", "_value", "_i"]; + +if !([_this, [["ARRAY"], ["SCALAR"], ["VOID"]], [], 3] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_array = _this select 0; +_index = _this select 1; +_value = _this select 2; + +for "_i" from count _array to _index step -1 do { + if (_i > 0) then { + _array set [_i, (_array select (_i - 1))]; + }; +}; + +_array set [_index, _value]; +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayInsertSlice.sqf b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayInsertSlice.sqf new file mode 100644 index 0000000..93a8897 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayInsertSlice.sqf @@ -0,0 +1,35 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_ArrayInsertSlice", _this] call Zen_StackAdd; +private ["_array", "_index", "_value", "_i"]; + +if !([_this, [["ARRAY"], ["SCALAR"], ["VOID"]], [], 3] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_array = _this select 0; +_index = _this select 1; +_value = _this select 2; + +if (typeName _value != "ARRAY") then { + _value = [_value]; +}; + +_tempArray = []; + +for "_i" from 0 to (_index - 1) do { + _tempArray set [_i, (_array select _i)]; +}; + +{ + _tempArray pushBack _x; +} forEach _value; + +for "_i" from _index to (count _array - 1) do { + _tempArray pushBack (_array select _i); +}; + +call Zen_StackRemove; +(_tempArray) diff --git a/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayRemoveDead.sqf b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayRemoveDead.sqf new file mode 100644 index 0000000..1ddf4d1 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayRemoveDead.sqf @@ -0,0 +1,43 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_ArrayRemoveDead", _this] call Zen_StackAdd; +private ["_array", "_returnObjectArray", "_nestedObjects"]; + +if !([_this, [["ARRAY"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + ([]) +}; + +_array = _this select 0; +_returnObjectArray = []; + +{ + switch (typeName _x) do { + case "OBJECT": { + if (!(isNull _x) && {(alive _x)}) then { + _returnObjectArray pushBack _x; + }; + }; + case "GROUP": { + if (!(isNull _x) && {(({alive _x} count units _x) > 0)}) then { + _returnObjectArray pushBack _x; + }; + }; + case "ARRAY": { + if (count _x > 0) then { + _nestedObjects = [_x] call Zen_ArrayRemoveDead; + if (count _nestedObjects > 0) then { + _returnObjectArray pushBack _nestedObjects; + }; + }; + }; + default { + _returnObjectArray pushBack _x; + }; + }; +} forEach _array; + +call Zen_StackRemove; +(_returnObjectArray) diff --git a/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayRemoveDuplicates.sqf b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayRemoveDuplicates.sqf new file mode 100644 index 0000000..6cab1cc --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayRemoveDuplicates.sqf @@ -0,0 +1,24 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_ArrayRemoveDuplicates", _this] call Zen_StackAdd; +private ["_givenArray", "_returnArray"]; + +if !([_this, [["ARRAY"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + ([]) +}; + +_givenArray = _this select 0; +_returnArray = []; + +_returnArray = []; +{ + if !([_x, _returnArray] call Zen_ValueIsInArray) then { + _returnArray pushBack _x; + }; +} forEach _givenArray; + +call Zen_StackRemove; +(_returnArray) diff --git a/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayRemoveIndex.sqf b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayRemoveIndex.sqf new file mode 100644 index 0000000..05b37b1 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayRemoveIndex.sqf @@ -0,0 +1,21 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_ArrayRemoveIndex", _this] call Zen_StackAdd; +private ["_array", "_index", "_i"]; + +if !([_this, [["ARRAY"], ["SCALAR"]], [], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_array = _this select 0; +_index = _this select 1; + +for "_i" from _index to ((count _array) - 2) do { + _array set [_i, (_array select (_i + 1))]; +}; + +_array resize ((count _array - 1) max 0); +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayRemoveIndexedSlice.sqf b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayRemoveIndexedSlice.sqf new file mode 100644 index 0000000..fbbe023 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayRemoveIndexedSlice.sqf @@ -0,0 +1,27 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_ArrayRemoveIndexedSlice", _this] call Zen_StackAdd; +private ["_array", "_indexL", "_indexR", "_i", "_tempArray"]; + +if !([_this, [["ARRAY"], ["SCALAR"], ["SCALAR"]], [], 3] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_array = _this select 0; +_indexL = _this select 1; +_indexR = _this select 2; + +_tempArray = []; + +for "_i" from 0 to (_indexL - 1) do { + _tempArray set [_i, (_array select _i)]; +}; + +for "_i" from (_indexR + 1) to (count _array - 1) do { + _tempArray pushBack (_array select _i); +}; + +call Zen_StackRemove; +(_tempArray) diff --git a/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayRemoveNonLocal.sqf b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayRemoveNonLocal.sqf new file mode 100644 index 0000000..cc0b5e5 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayRemoveNonLocal.sqf @@ -0,0 +1,27 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_ArrayRemoveNonLocal", _this] call Zen_StackAdd; +private ["_objectArray", "_returnObjectArray"]; + +if !([_this, [["VOID"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + ([]) +}; + +_objectArray = [(_this select 0)] call Zen_ConvertToObjectArray; +_returnObjectArray = []; + +{ + if ((typeName _x == "OBJECT") && {(local _x)}) then { + _returnObjectArray pushBack _x; + } else { + if (typeName _x == "ARRAY") then { + _returnObjectArray pushBack ([_x] call Zen_ArrayRemoveNonLocal); + }; + }; +} forEach _objectArray; + +call Zen_StackRemove; +(_returnObjectArray) diff --git a/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayRemoveValue.sqf b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayRemoveValue.sqf new file mode 100644 index 0000000..c69d039 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayRemoveValue.sqf @@ -0,0 +1,28 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_ArrayRemoveValue", _this] call Zen_StackAdd; +private ["_array", "_value", "_indexArray"]; + +if !([_this, [["ARRAY"], ["VOID"]], [], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_array = _this select 0; +_value = _this select 1; + +_indexArray = []; + +{ + if ([_x, _value] call Zen_ValuesAreEqual) then { + _indexArray pushBack _forEachIndex; + }; +} forEach _array; + +{ + 0 = [_array, _x - _forEachIndex] call Zen_ArrayRemoveIndex; +} forEach _indexArray; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayRemoveValuedSlice.sqf b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayRemoveValuedSlice.sqf new file mode 100644 index 0000000..e0fb40a --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayRemoveValuedSlice.sqf @@ -0,0 +1,36 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_ArrayRemoveValuedSlice", _this] call Zen_StackAdd; +private ["_keyArray", "_totalArray", "_keyIsInTotal", "_stringPiece"]; + +if !([_this, [["ARRAY"], ["ARRAY"]], [], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_totalArray = _this select 0; +_keyArray = _this select 1; + +_keyIsInTotal = false; + +if ((count _keyArray) <= (count _totalArray)) then { + { + if ((count _keyArray) > ((count _totalArray) - _forEachIndex)) exitWith {}; + + if ([_x, (_keyArray select 0)] call Zen_ValuesAreEqual) then { + _stringPiece = [_totalArray, _forEachIndex, ((count _keyArray) - 1 + _forEachIndex)] call Zen_ArrayGetIndexedSlice; + _keyIsInTotal = _stringPiece isEqualTo _keyArray; + }; + + if (_keyIsInTotal) exitWith { + _totalArray = [_totalArray, _forEachIndex, ((count _keyArray) - 1 + _forEachIndex)] call Zen_ArrayRemoveIndexedSlice; + }; + } forEach _totalArray; +} else { + 0 = ["Zen_ArrayRemoveValuedSlice", "Given array to search for is larger than the array to remove from", _this] call Zen_PrintError; + call Zen_StackPrint; +}; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayReplaceSlice.sqf b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayReplaceSlice.sqf new file mode 100644 index 0000000..5d013f0 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayReplaceSlice.sqf @@ -0,0 +1,36 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_ArrayReplaceSlice", _this] call Zen_StackAdd; +private ["_array", "_startIndex", "_endIndex", "_replaceArray", "_tempArray"]; + +if !([_this, [["ARRAY"], ["SCALAR"], ["SCALAR"], ["ARRAY"]], [], 4] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_array = _this select 0; +_startIndex = _this select 1; +_endIndex = _this select 2; +_replaceArray = _this select 3; + +_tempArray = []; + +if (_startIndex > 0) then { + for "_i" from 0 to (_startIndex - 1) do { + _tempArray pushBack (_array select _i); + }; +}; + +{ + _tempArray pushBack _x; +} forEach _replaceArray; + +if (_endIndex < (count _array - 1)) then { + for "_i" from (_endIndex + 1) to (count _array - 1) do { + _tempArray pushBack (_array select _i); + }; +}; + +call Zen_StackRemove; +(_tempArray) diff --git a/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayReplaceValue.sqf b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayReplaceValue.sqf new file mode 100644 index 0000000..9e48bb3 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayReplaceValue.sqf @@ -0,0 +1,23 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_ArrayReplaceValue", _this] call Zen_StackAdd; +private ["_array", "_searchValue", "_replaceValue", "_replaceIndex"]; + +if !([_this, [["ARRAY"], ["VOID"], ["VOID"]], [], 3] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_array = _this select 0; +_searchValue = _this select 1; +_replaceValue = _this select 2; + +{ + if ([_x, _searchValue] call Zen_ValuesAreEqual) then { + _array set [_forEachIndex, _replaceValue]; + }; +} forEach _array; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayReplaceValueNested.sqf b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayReplaceValueNested.sqf new file mode 100644 index 0000000..3d6de9e --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayReplaceValueNested.sqf @@ -0,0 +1,27 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_ArrayReplaceValueNested", _this] call Zen_StackAdd; +private ["_array", "_searchValue", "_replaceValue"]; + +if !([_this, [["ARRAY"], ["VOID"], ["VOID"]], [], 3] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_array = _this select 0; +_searchValue = _this select 1; +_replaceValue = _this select 2; + +{ + if (typeName _x == "ARRAY") then { + 0 = [_x, _searchValue, _replaceValue] call Zen_ArrayReplaceValue; + } else { + if ([_x, _searchValue] call Zen_ValuesAreEqual) then { + _array set [_forEachIndex, _replaceValue]; + }; + }; +} forEach _array; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayReverse.sqf b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayReverse.sqf new file mode 100644 index 0000000..b8eedbd --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayReverse.sqf @@ -0,0 +1,21 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_ArrayReverse", _this] call Zen_StackAdd; +private ["_array", "_tempArray", "_i"]; + +if !([_this, [["ARRAY"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_array = _this select 0; + +_tempArray = []; + +for "_i" from (count _array - 1) to 0 step -1 do { + _tempArray pushBack (_array select _i); +}; + +call Zen_StackRemove; +(_tempArray) diff --git a/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArraySearch.sqf b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArraySearch.sqf new file mode 100644 index 0000000..61147a7 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArraySearch.sqf @@ -0,0 +1,67 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" + +_Zen_stack_Trace = ["Zen_ArraySearch(", _this] call Zen_StackAdd; +private ["_arrays", "_indexes", "_ranges", "_hashes", "_counts", "_returnIndexes", "_arrayIndex", "_array", "_checksPassed", "_element", "_range", "_hashFunc", "_elementHash", "_lowerBound", "_upperBound"]; + +if !([_this, [["ARRAY"], ["ARRAY"], ["ARRAY"], ["ARRAY"]], [["ARRAY"], ["SCALAR"], ["ARRAY"], ["CODE", "STRING"]], 4] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (-1) +}; + +_arrays = _this select 0; +_indexes = _this select 1; +_ranges = _this select 2; +_hashes = _this select 3; + +_counts = [count _indexes, count _ranges, count _hashes]; +0 = [_counts, count _indexes] call Zen_ArrayRemoveValue; +if (count _counts != 0) exitWith { + 0 = ["Zen_ArraySearch", "Given index, value range, and hash function arrays are different lengths.", _this] call Zen_PrintError; + call Zen_StackRemove; + ([]) +}; + +{ + if ((_x select 0) > (_x select 1)) then { + 0 = [_x, 0, 1] call Zen_ArraySwapValues; + }; +} forEach _ranges; + +_returnIndexes = []; +{ + _arrayIndex = _forEachIndex; + _array = _x; + _checksPassed = 0; + { + if (_x >= count _array) exitWith { + 0 = ["Zen_ArraySearch", format ["Index %1 is out of bounds for nested array at %2.", _forEachIndex, _arrayIndex], _this] call Zen_PrintError; + }; + + _element = _array select _x; + _range = _ranges select _forEachIndex; + _hashFunc = _hashes select _forEachIndex; + + if (typeName _hashFunc == "CODE") then { + _elementHash = _element call _hashFunc; + } else { + _elementHash = _element call (missionNamespace getVariable _hashFunc); + }; + + _lowerBound = _range select 0; + _upperBound = _range select 1; + + if !((_elementHash >= _lowerBound) && {(_elementHash <= _upperBound)}) exitWith {}; + _checksPassed = _checksPassed + 1; + } forEach _indexes; + + if (_checksPassed == count _indexes) then { + _returnIndexes pushBack _arrayIndex; + }; +} forEach _arrays; + +call Zen_StackRemove; +(_returnIndexes) diff --git a/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayShuffle.sqf b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayShuffle.sqf new file mode 100644 index 0000000..d5cd18f --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayShuffle.sqf @@ -0,0 +1,28 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" + +_Zen_stack_Trace = ["Zen_ArrayShuffle", _this] call Zen_StackAdd; +private ["_array", "_i", "_j"]; + +if !([_this, [["ARRAY"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (_this select 0) +}; + +_array = _this select 0; + +for "_i" from 0 to (count _array - 1) do { + _j = [_i, (count _array) - 1, true] call Zen_FindInRange; + 0 = [_array, _i, _j] call Zen_ArraySwapValues; +}; + +for "_i" from 0 to (count _array - 1) do { + _j = [_i, (count _array) - 1, true] call Zen_FindInRange; + 0 = [_array, _i, _j] call Zen_ArraySwapValues; +}; + +call Zen_StackRemove; +(_array) diff --git a/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArraySort.sqf b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArraySort.sqf new file mode 100644 index 0000000..d034c2f --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArraySort.sqf @@ -0,0 +1,166 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_FrameworkLibrary.sqf" +#define INSERT_CUTOFF 7 +#define EVAL(X) (X call _comparator) +#define COMP(X, Y) ([X, Y] call _comparator) + +_Zen_stack_Trace = ["Zen_ArraySort", _this] call Zen_StackAdd; +private ["_array", "_comparator", "_insertionSort", "_shellSort", "_quickSort", "_comparatorType", "_hashedArray"]; + +if !([_this, [["ARRAY"], ["CODE"], ["STRING"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_array = _this select 0; + +_comparator = {_this}; +_comparatorType = "hash"; + +if (count _this > 1) then { + _comparator = _this select 1; + _comparatorType = "compare"; +}; + +if (count _this > 2) then { + _comparatorType = toLower (_this select 2); +}; + +_insertionSort = { + private ["_i", "_j", "_count", "_array", "_value", "_valueOrder"]; + + _array = _this; + if (count _array < 2) exitWith {}; + + _count = count _array - 1; + + for "_i" from 1 to _count step 1 do { + scopeName "forI"; + _value = _array select _i; + if (_comparatorType == "hash") then { + _valueOrder = EVAL(_value); + }; + + for [{_j = _i}, {_j >= 1}, {_j = _j - 1}] do { + if (_comparatorType == "hash") then { + if (_valueOrder > EVAL(_array select (_j - 1))) then { + breakTo "forI"; + }; + } else { + if (COMP(_value, (_array select (_j - 1))) > 0) then { + breakTo "forI"; + }; + }; + + _array set [_j, _array select (_j - 1)]; + }; + + _array set [_j, _value]; + }; + if (true) exitWith {}; +}; + +/* +_shellSort = { + private ["_gaps", "_i", "_j", "_valueOrder", "_count", "_array", "_valueOrder"]; + + _array = _this; + _gaps = [701, 301, 132, 57, 23, 10, 4, 1]; + _count = count _array - 1; + + { + for "_i" from _x to _count step 1 do { + if (_i <= _count) then { + scopeName "if"; + _value = _array select _i; + _valueOrder = EVAL(_value); + for [{_j = _i}, {_j >= _x}, {_j = _j - _x}] do { + if (_comparatorType == "hash") then { + if (_valueOrder > EVAL(_array select (_j - _x))) then { + breakTo "if"; + }; + } else { + if (COMP(_value, (_array select (_j - _x))) > 0) then { + breakTo "if"; + }; + }; + + _array set [_j, _array select (_j - _x)]; + }; + + _array set [_j, _value]; + }; + }; + } forEach _gaps; + if (true) exitWith {}; +}; +// */ + +_quickSort = { + private ["_array", "_pivot", "_less", "_greater", "_equal", "_pivotValue", "_value"]; + + _array = _this; + + _pivotArray = [_array select 0, _array select (count _array - 1), _array select ((count _array) / 2)]; + 0 = [_pivotArray] call _insertionSort; + _pivot = _pivotArray select 1; + + _less = []; + _equal = []; + _greater = []; + + if (_comparatorType == "hash") then { + _pivotValue = EVAL(_pivot); + { + _value = EVAL(_x); + if (_value < _pivotValue) then { + _less pushBack _x; + } else { + if (_value == _pivotValue) then { + _equal pushBack _x; + } else { + _greater pushBack _x; + }; + }; + } forEach _array; + } else { + { + switch (COMP(_x, _pivot)) do { + case -1: { + _less pushBack _x; + }; + case 0: { + _equal pushBack _x; + }; + case 1: { + _greater pushBack _x; + }; + }; + } forEach _array; + }; + + if (count _less < INSERT_CUTOFF) then { + 0 = _less call _insertionSort; + } else { + _less = _less call _quickSort; + }; + + if (count _greater < INSERT_CUTOFF) then { + 0 = _greater call _insertionSort; + } else { + _greater = _greater call _quickSort; + }; + + (_less + _equal + _greater) +}; + +if (count _array < 15) then { + 0 = _array call _insertionSort; +} else { + _array = _array call _quickSort; +}; + +call Zen_StackRemove; +(_array) diff --git a/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArraySwapValues.sqf b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArraySwapValues.sqf new file mode 100644 index 0000000..546860f --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArraySwapValues.sqf @@ -0,0 +1,21 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_ArraySwapValues", _this] call Zen_StackAdd; +private ["_array", "_index1", "_index2", "_temp"]; + +if !([_this, [["ARRAY"], ["SCALAR"], ["SCALAR"]], [], 3] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_array = _this select 0; +_index1 = _this select 1; +_index2 = _this select 2; + +_temp = _array select _index1; +_array set [_index1, (_array select _index2)]; +_array set [_index2, _temp]; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ConfigGetLocations.sqf b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ConfigGetLocations.sqf new file mode 100644 index 0000000..d23ea5e --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ConfigGetLocations.sqf @@ -0,0 +1,36 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_ConfigGetLocations", _this] call Zen_StackAdd; +private ["_locMarkers", "_locTypes", "_locConfig", "_locClass", "_locType", "_locMk", "_i"]; + +if !([_this, [["STRING", "ARRAY"]], [["STRING"]], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + ([]) +}; + +_locTypes = _this select 0; + +_locMarkers = []; +_locConfig = configFile >> "CfgWorlds" >> worldName >> "Names"; + +if (count (missionNamespace getVariable [(format ["Zen_ConfigGetLocations_%1", _locTypes]), []]) != 0) exitWith { + call Zen_StackRemove; + (missionNamespace getVariable (format ["Zen_ConfigGetLocations_%1", _locTypes])) +}; + +for "_i" from 0 to (count _locConfig - 1) do { + _locClass = _locConfig select _i; + _locType = getText (_locClass >> "type"); + + if ([_locType, _locTypes] call Zen_ValueIsInArray) then { + _locMk = [(getArray (_locClass >> "position")), "", "colorBlack", [(getNumber (_locClass >> "radiusB")), (getNumber (_locClass >> "radiusA"))], "ellipse", 0, 0] call Zen_SpawnMarker; + _locMarkers pushBack _locMk; + }; +}; + +missionNamespace setVariable [(format ["Zen_ConfigGetLocations_%1", _locTypes]), _locMarkers]; + +call Zen_StackRemove; +(_locMarkers) diff --git a/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ConfigGetVehicleClasses.sqf b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ConfigGetVehicleClasses.sqf new file mode 100644 index 0000000..f4c0ead --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ConfigGetVehicleClasses.sqf @@ -0,0 +1,187 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_FrameworkLibrary.sqf" +#include "Zen_StandardLibrary.sqf" + +#define LW(X) if (typeName X == "STRING") then { \ + X = toLower X; \ + } + +#define LWA(X) { \ + X set [_forEachIndex, (toLower _x)]; \ + } forEach X; + +_Zen_stack_Trace = ["Zen_ConfigGetVehicleClasses", _this] call Zen_StackAdd; +private ["_classType", "_side", "_faction", "_parents", "_subType", "_weaponState", "_dlcType", "_returnClasses", "_cfgVehicles", "_class", "_vehicleClass", "_weapons", "_magazines", "_vehicleSide", "_vehicleFaction", "_uniqueFilterArgs", "_sideString", "_textSingular"]; + +if !([_this, [["ARRAY", "STRING"], ["SIDE", "STRING"], ["ARRAY", "STRING"], ["ARRAY", "STRING"], ["STRING"], ["ARRAY", "STRING"]], [["STRING"], [], ["STRING"], ["STRING"], ["STRING"], [], ["STRING"]], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + ([]) +}; + +ZEN_STD_Parse_GetArgumentDefault(_classType, 0, "All") + +_side = "all"; +_subType = "all"; +_faction = "all"; +_parents = ["all"]; +_weaponState = "both"; +_dlcType = "All"; +_sideString = "#"; + +if (count _this > 1) then { + _side = _this select 1; +}; + +if (count _this > 2) then { + _subType = _this select 2; +}; + +if (count _this > 3) then { + _faction = _this select 3; +}; + +if (count _this > 4) then { + _parents = _this select 4; + ZEN_STD_Parse_ToArray(_parents); +}; + +if (count _this > 5) then { + _weaponState = toLower (_this select 5); +}; + +if (count _this > 6) then { + _dlcType = _this select 6; +}; + +LW(_side); +LW(_classType) else { + LWA(_classType) +}; +LW(_subType) else { + LWA(_subType) +}; +LW(_faction) else { + LWA(_faction) +}; +LW(_dlcType) else { + LWA(_dlcType) +}; + +switch (_side) do { + case West: { + _sideString = "nato"; + }; + case East: { + _sideString = "east"; + }; + case Resistance: { + _sideString = "ind"; + }; + case "all": { + _sideString = "#"; + }; +}; + +_uniqueFilterArgs = format ["%1%2%3%4%5%6%7", _classType, _side, _subType, _faction, _parents, _weaponState, _dlcType]; + +if (count (missionNamespace getVariable [(format ["Zen_ConfigGetVehicleClasses_%1", _uniqueFilterArgs]), []]) != 0) exitWith { + call Zen_StackRemove; + (missionNamespace getVariable (format ["Zen_ConfigGetVehicleClasses_%1", _uniqueFilterArgs])) +}; + +_returnClasses = []; +_cfgVehicles = configFile >> "CfgVehicles"; + +{ + scopeName "for"; + _vehicleClass = toLower getText (_x >> "vehicleClass"); + if (([_vehicleClass, "All"] call Zen_ValuesAreEqual) || {([_vehicleClass, _classType] call Zen_ValueIsInArray)}) then { + _class = configName _x; + _vehicleSide = [_class] call Zen_GetSide; + + if (_vehicleSide == sideLogic) then { + breakTo "for"; + }; + + if !(([_side, "All"] call Zen_ValuesAreEqual) || {([_side, _vehicleSide] call Zen_ValuesAreEqual)}) then { + if !(["ammo", _classType] call Zen_ValueIsInArray) then { + breakTo "for"; + }; + }; + + _vehicleFaction = toLower getText (_x >> "faction"); + if !(([_faction, "All"] call Zen_ValuesAreEqual) || {([_faction, _vehicleFaction] call Zen_ValueIsInArray)}) then { + breakTo "for"; + }; + + _textSingular = toLower getText (_x >> "textSingular"); + if !(([_subType, "All"] call Zen_ValuesAreEqual) || {([_textSingular, _subType] call Zen_ValueIsInArray)}) then { + breakTo "for"; + }; + + if !([_parents, "All"] call Zen_ValuesAreEqual) then { + { + if !(_class isKindOf _x) then { + breakTo "for"; + }; + } forEach _parents; + }; + + _vehDLC = toLower getText (_x >> "DLC"); + if !(([_dlcType, "All"] call Zen_ValuesAreEqual) || {([_vehDLC, _dlcType] call Zen_ValueIsInArray)}) then { + breakTo "for"; + }; + + if (([_vehicleClass, ["men", "menRecon", "menDiver", "menSniper"]] call Zen_ValueIsInArray) && {((["UAV", _class] call Zen_StringIsInString) || (["underwear", _class] call Zen_StringIsInString))}) then { + breakTo "for"; + }; + + if ((["ammo", _classType] call Zen_ValueIsInArray) && {(!([_sideString, _class] call Zen_StringIsInString))}) then { + breakTo "for"; + }; + + #define FILTER_TURRETS \ + _turretWeapons = []; \ + 0 = [_turretWeapons, getArray (_x >> "weapons")] call Zen_ArrayAppendNested; \ + { \ + 0 = [_turretWeapons, getArray (_x >> "weapons")] call Zen_ArrayAppendNested; \ + } forEach ("true" configClasses (_x >> "turrets")); \ + { \ + _turretWeapons = [_turretWeapons, ZEN_FMW_ZAF_String(_x)] call Zen_ArrayFilterCondition; \ + } forEach ["smoke", "horn", "laser", "flare", "throw", "put"]; \ + + switch (_weaponState) do { + case "both": {}; + case "all": {}; + case "armed": { + FILTER_TURRETS + if (count _turretWeapons == 0) then { + breakTo "for"; + }; + }; + case "unarmed": { + FILTER_TURRETS + if (count _turretWeapons != 0) then { + breakTo "for"; + }; + }; + default { + 0 = ["Zen_ConfigGetVehicleClasses", "Invalid armament status given", _this] call Zen_PrintError; + call Zen_StackPrint; + }; + }; + + _returnClasses pushBack _class; + }; +} forEach ("(getNumber (_x >> 'scope')) == 2" configClasses (configFile >> "CfgVehicles")); + +if (["ammo", _classType] call Zen_ValueIsInArray) then { + _returnClasses = [_returnClasses, ["box_ind_ammoveh_f", "box_east_ammoveh_f", "box_nato_ammoveh_f"]] call Zen_ArrayFilterValues; +}; + +missionNamespace setVariable [(format ["Zen_ConfigGetVehicleClasses_%1", _uniqueFilterArgs]), _returnClasses]; +call Zen_StackRemove; +(_returnClasses) diff --git a/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ConvertToGroupArray.sqf b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ConvertToGroupArray.sqf new file mode 100644 index 0000000..bdb7f86 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ConvertToGroupArray.sqf @@ -0,0 +1,69 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_ConvertToGroupArray", _this] call Zen_StackAdd; +private ["_dataToConvert", "_returnArray", "_allGroups"]; + +_dataToConvert = _this select 0; + +if (count _this > 1) then { + _dataToConvert = _this; +}; + +_returnArray = []; + +switch (typeName _dataToConvert) do { + case "OBJECT": { + if (!(isNull _dataToConvert) && (alive _dataToConvert)) then { + _returnArray = [(group _dataToConvert)]; + }; + }; + case "GROUP": { + if !(isNull _dataToConvert) then { + _returnArray = [_dataToConvert]; + }; + }; + case "SIDE": { + _allGroups =+ allGroups; + { + if !(isNull _x) then { + if ([(side _x), _dataToConvert] call Zen_ValuesAreEqual) then { + _returnArray pushBack _x; + }; + }; + } forEach _allGroups; + }; + case "ARRAY": { + { + switch (typeName _x) do { + case "OBJECT": { + if !(isNull _x) then { + _returnArray pushBack (group _x); + }; + }; + case "ARRAY": { + 0 = [_returnArray, (_x call Zen_ConvertToGroupArray)] call Zen_ArrayAppendNested; + }; + case "GROUP": { + if !(isNull _x) then { + _returnArray pushBack _x; + }; + }; + case "SIDE": { + 0 = [_returnArray, ([_x] call Zen_ConvertToGroupArray)] call Zen_ArrayAppendNested; + }; + }; + } forEach _dataToConvert; + }; + default { + _returnArray = _dataToConvert; + 0 = ["Zen_ConvertToGroupArray", "Given value cannot be converted to an array of groups", _this] call Zen_PrintError; + call Zen_StackPrint; + }; +}; + +_returnArray = [_returnArray] call Zen_ArrayRemoveDuplicates; + +call Zen_StackRemove; +(_returnArray) diff --git a/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ConvertToObjectArray.sqf b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ConvertToObjectArray.sqf new file mode 100644 index 0000000..562466b --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ConvertToObjectArray.sqf @@ -0,0 +1,74 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_ConvertToObjectArray", _this] call Zen_StackAdd; +private ["_dataToConvert", "_returnArray", "_allUnits", "_tempArray"]; + +_dataToConvert = _this select 0; + +if (count _this > 1) then { + _dataToConvert = _this; +}; + +_returnArray = []; + +switch (typeName _dataToConvert) do { + case "OBJECT": { + if !(isNull _dataToConvert) then { + _returnArray = [_dataToConvert]; + }; + }; + case "GROUP": { + if !(isNull _dataToConvert) then { + _tempArray = units _dataToConvert; + { + if !(isNull _x) then { + _returnArray pushBack _x; + }; + } forEach _tempArray; + }; + }; + case "SIDE": { + _allUnits = +allUnits; + { + if !(isNull _x) then { + if ([(side _x), _dataToConvert] call Zen_ValuesAreEqual) then { + _returnArray pushBack _x; + }; + }; + } forEach _allUnits; + }; + case "ARRAY": { + { + switch (typeName _x) do { + case "OBJECT": { + if !(isNull _x) then { + _returnArray pushBack _x; + }; + }; + case "ARRAY": { + 0 = [_returnArray, (_x call Zen_ConvertToObjectArray)] call Zen_ArrayAppendNested; + }; + case "GROUP": { + if !(isNull _x) then { + 0 = [_returnArray, (units _x)] call Zen_ArrayAppendNested; + }; + }; + case "SIDE": { + 0 = [_returnArray, ([_x] call Zen_ConvertToObjectArray)] call Zen_ArrayAppendNested; + }; + }; + } forEach _dataToConvert; + }; + default { + _returnArray = _dataToConvert; + 0 = ["Zen_ConvertToObjectArray", "Given value cannot be converted to an array of objects", _this] call Zen_PrintError; + call Zen_StackPrint; + }; +}; + +_returnArray = [_returnArray] call Zen_ArrayRemoveDuplicates; + +call Zen_StackRemove; +(_returnArray) diff --git a/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ConvertToPosition.sqf b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ConvertToPosition.sqf new file mode 100644 index 0000000..6008239 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ConvertToPosition.sqf @@ -0,0 +1,61 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_ConvertToPosition", _this] call Zen_StackAdd; +private ["_dataToConvert", "_returnPosition"]; + +if !([_this, [["VOID"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + ([0,0,0]) +}; + +_dataToConvert = _this select 0; +_returnPosition = [0,0,0]; + +switch (typeName _dataToConvert) do { + case "OBJECT": { + _returnPosition = getPosATL _dataToConvert; + }; + case "STRING": { + if ([_dataToConvert, allMapMarkers] call Zen_ValueIsInArray) then { + _returnPosition = getMarkerPos _dataToConvert; + } else { + 0 = ["Zen_ConvertToPosition", "Given marker does not exist", _this] call Zen_PrintError; + call Zen_StackPrint; + }; + }; + case "GROUP": { + _returnPosition = getPosATL (leader _dataToConvert); + }; + case "ARRAY": { + switch (count _dataToConvert) do { + case 2: { + _returnPosition = [(_dataToConvert select 0), (_dataToConvert select 1), 0]; + }; + case 3: { + _returnPosition =+ _dataToConvert; + }; + default { + 0 = ["Zen_ConvertToPosition", "Given array is not in [x,y] or [x,y,z] format", _this] call Zen_PrintError; + call Zen_StackPrint; + }; + }; + + { + if (typeName _x != "SCALAR") exitWith { + _returnPosition = [0,0,0]; + 0 = ["Zen_ConvertToPosition", "Given array does not contain valid x,y,z numerical coordinates", _this] call Zen_PrintError; + call Zen_StackPrint; + }; + } forEach _returnPosition; + }; + default { + _returnPosition = _dataToConvert; + 0 = ["Zen_ConvertToPosition", "Given value does not represent a position in space", _this] call Zen_PrintError; + call Zen_StackPrint; + }; +}; + +call Zen_StackRemove; +(_returnPosition) diff --git a/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_DataFunctionsCompile.sqf b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_DataFunctionsCompile.sqf new file mode 100644 index 0000000..11e83e7 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_DataFunctionsCompile.sqf @@ -0,0 +1,54 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +Zen_ArrayAppend = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DataFunctions\Zen_ArrayAppend.sqf"; +Zen_ArrayAppendNested = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DataFunctions\Zen_ArrayAppendNested.sqf"; +Zen_ArrayCopy = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DataFunctions\Zen_ArrayCopy.sqf"; +Zen_ArrayFilterCondition = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DataFunctions\Zen_ArrayFilterCondition.sqf"; +Zen_ArrayFilterValues = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DataFunctions\Zen_ArrayFilterValues.sqf"; +Zen_ArrayFindAverage = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DataFunctions\Zen_ArrayFindAverage.sqf"; +Zen_ArrayFindExtremum = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DataFunctions\Zen_ArrayFindExtremum.sqf"; +Zen_ArrayGetDelimitedSlice = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DataFunctions\Zen_ArrayGetDelimitedSlice.sqf"; +Zen_ArrayGetIndexedSlice = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DataFunctions\Zen_ArrayGetIndexedSlice.sqf"; +Zen_ArrayGetNestedIndex = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DataFunctions\Zen_ArrayGetNestedIndex.sqf"; +Zen_ArrayGetNestedValue = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DataFunctions\Zen_ArrayGetNestedValue.sqf"; +Zen_ArrayGetRandom = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DataFunctions\Zen_ArrayGetRandom.sqf"; +Zen_ArrayGetRandomSequence = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DataFunctions\Zen_ArrayGetRandomSequence.sqf"; +Zen_ArrayGetType = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DataFunctions\Zen_ArrayGetType.sqf"; +Zen_ArrayInsert = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DataFunctions\Zen_ArrayInsert.sqf"; +Zen_ArrayInsertSlice = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DataFunctions\Zen_ArrayInsertSlice.sqf"; +Zen_ArrayRemoveDead = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DataFunctions\Zen_ArrayRemoveDead.sqf"; +Zen_ArrayRemoveDuplicates = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DataFunctions\Zen_ArrayRemoveDuplicates.sqf"; +Zen_ArrayRemoveIndex = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DataFunctions\Zen_ArrayRemoveIndex.sqf"; +Zen_ArrayRemoveIndexedSlice = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DataFunctions\Zen_ArrayRemoveIndexedSlice.sqf"; +Zen_ArrayRemoveNonLocal = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DataFunctions\Zen_ArrayRemoveNonLocal.sqf"; +Zen_ArrayRemoveValue = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DataFunctions\Zen_ArrayRemoveValue.sqf"; +Zen_ArrayRemoveValuedSlice = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DataFunctions\Zen_ArrayRemoveValuedSlice.sqf"; +Zen_ArrayReplaceSlice = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DataFunctions\Zen_ArrayReplaceSlice.sqf"; +Zen_ArrayReplaceValue = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DataFunctions\Zen_ArrayReplaceValue.sqf"; +Zen_ArrayReplaceValueNested = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DataFunctions\Zen_ArrayReplaceValueNested.sqf"; +Zen_ArrayReverse = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DataFunctions\Zen_ArrayReverse.sqf"; +Zen_ArraySearch = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DataFunctions\Zen_ArraySearch.sqf"; +Zen_ArrayShuffle = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DataFunctions\Zen_ArrayShuffle.sqf"; +Zen_ArraySort = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DataFunctions\Zen_ArraySort.sqf"; +Zen_ArraySwapValues = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DataFunctions\Zen_ArraySwapValues.sqf"; +Zen_ArrayFindSum = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DataFunctions\Zen_ArrayFindSum.sqf"; +Zen_ConfigGetLocations = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DataFunctions\Zen_ConfigGetLocations.sqf"; +Zen_ConfigGetVehicleClasses = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DataFunctions\Zen_ConfigGetVehicleClasses.sqf"; +Zen_ConvertToGroupArray = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DataFunctions\Zen_ConvertToGroupArray.sqf"; +Zen_ConvertToObjectArray = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DataFunctions\Zen_ConvertToObjectArray.sqf"; +Zen_ConvertToPosition = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DataFunctions\Zen_ConvertToPosition.sqf"; +Zen_StringCapitalizeLetter = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DataFunctions\Zen_StringCapitalizeLetter.sqf"; +Zen_StringFindReplace = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DataFunctions\Zen_StringFindReplace.sqf"; +Zen_StringGenerateRandom = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DataFunctions\Zen_StringGenerateRandom.sqf"; +Zen_StringGetDelimitedPart = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DataFunctions\Zen_StringGetDelimitedPart.sqf"; +Zen_StringIsInString = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DataFunctions\Zen_StringIsInString.sqf"; +Zen_StringRemoveWhiteSpace = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DataFunctions\Zen_StringRemoveWhiteSpace.sqf"; +Zen_ValueFindInArray = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DataFunctions\Zen_ValueFindInArray.sqf"; +Zen_ValueIsInArray = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DataFunctions\Zen_ValueIsInArray.sqf"; +Zen_ValuesAreEqual = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DataFunctions\Zen_ValuesAreEqual.sqf"; +Zen_ValuesAreInArray = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DataFunctions\Zen_ValuesAreInArray.sqf"; +Zen_ValuesAreNotInArray = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DataFunctions\Zen_ValuesAreNotInArray.sqf"; + +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_FrameworkLibrary.sqf b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_FrameworkLibrary.sqf new file mode 100644 index 0000000..7af8176 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_FrameworkLibrary.sqf @@ -0,0 +1,191 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#define ZEN_FMW_Array_RemoveIndexes(A, I) \ + { \ + 0 = [A, _x - _forEachIndex] call Zen_ArrayRemoveIndex; \ + } forEach I; + +#define ZEN_FMW_CFG_VehicleWeapons(V) \ + _Zen_WeaponsArray = []; \ + 0 = [_Zen_WeaponsArray, getArray (V >> "weapons")] call Zen_ArrayAppendNested; \ + { \ + 0 = [_Zen_WeaponsArray, getArray (V >> "weapons")] call Zen_ArrayAppendNested; \ + } forEach ("true" configClasses (V >> "turrets")); \ + { \ + _Zen_WeaponsArray = [_Zen_WeaponsArray, ZEN_FMW_ZAF_String(V)] call Zen_ArrayFilterCondition; \ + } forEach ["smoke", "horn", "laser", "flare", "throw", "put"]; + +#define ZEN_FMW_Code_ErrorExitVoid(F, D) \ + 0 = [F, D, _this] call Zen_PrintError; \ + call Zen_StackPrint; \ + call Zen_StackRemove; + +#define ZEN_FMW_Code_ErrorExitValue(F, D, V) \ + 0 = [F, D, _this] call Zen_PrintError; \ + call Zen_StackPrint; \ + call Zen_StackRemove; \ + V + +#define ZEN_FMW_Code_Error(F, D) \ + 0 = [F, D, _this] call Zen_PrintError; \ + call Zen_StackPrint; + +#define ZEN_FMW_Code_GiveLoadoutsOrdered(U, L, S) \ + { \ + 0 = [_x, S, (L select (_forEachIndex % (count L)))] call Zen_GiveLoadout; \ + } forEach ([U] call Zen_ConvertToObjectArray); + +#define ZEN_FMW_Code_Insertion(U, V, S, E) \ + _Zen_Vehicle = [S, V, (if (V isKindOf "Air") then {40} else {0})] call Zen_SpawnVehicle; \ + 0 = [_Zen_Vehicle] call Zen_SpawnVehicleCrew; \ + 0 = [U, _Zen_Vehicle] call Zen_MoveInVehicle; \ + 0 = [_Zen_Vehicle, [E, S], U] spawn Zen_OrderInsertion; + +#define ZEN_FMW_Code_InsertionPatrol(G, T, S, M) \ + _Zen_Vehicle = [S, T] call Zen_SpawnVehicle; \ + 0 = [_Zen_Vehicle] call Zen_SpawnVehicleCrew; \ + 0 = [G, _Zen_Vehicle] call Zen_MoveInVehicle; \ + 0 = [_Zen_Vehicle, [([M] call Zen_FindGroundPosition), _Zen_HeliStart], G, "normal", 40, "fastrope", true] spawn Zen_OrderInsertion; \ + 0 = [G, M] spawn { \ + waitUntil { \ + sleep 5; \ + ([_this select 0] call Zen_AreNotInVehicle) \ + }; \ + 0 = [_this select 0, _this select 1] spawn Zen_OrderInfantryPatrol; \ + }; + +#define ZEN_FMW_Code_SpawnMarker(M, N, S) \ + _Zen_GrpsArray = []; \ + for "_Z" from 1 to N do { \ + _Zen_Pos = [ M ] call Zen_FindGroundPosition; \ + _Zen_Group = [_Zen_Pos, S, "infantry", [4,6]] call Zen_SpawnInfantry; \ + _Zen_GrpsArray pushBack _Zen_Group; \ + }; \ + 0 = [_Zen_GrpsArray, S, ZEN_FMW_Loadout_StdInfantryPreset, false] call Zen_GiveLoadout; \ + 0 = [_Zen_GrpsArray, M] spawn Zen_OrderInfantryPatrol; + +#define ZEN_FMW_Code_SpawnPoint(C, D, N, S) \ + _Zen_GrpsArray = []; \ + for "_Z" from 1 to N do { \ + _Zen_Pos = [C, [0, D]] call Zen_FindGroundPosition; \ + _Zen_Group = [_Zen_Pos, S, "infantry", [4,6]] call Zen_SpawnInfantry; \ + _Zen_GrpsArray pushBack _Zen_Group; \ + }; \ + 0 = [_Zen_GrpsArray, S, ZEN_FMW_Loadout_StdInfantryPreset, false] call Zen_GiveLoadout; \ + 0 = [_Zen_GrpsArray, C, [0, D]] spawn Zen_OrderInfantryPatrol; + +#define ZEN_FMW_Code_SpawnPointBehind(START, END, MIND, MAXD, N, S) \ + _Zen_DirToSpawn = [START, END] call Zen_FindDirection; \ + _Zen_GrpsArray = []; \ + for "_i" from 1 to N do { \ + _Zen_SpawnPos = [END, [MIND, MAXD], 0, 1, 0, [_Zen_DirToSpawn - 90, _Zen_DirToSpawn + 90, "trig"]] call Zen_FindGroundPosition; \ + _Zen_Group = [_Zen_SpawnPos, S, "infantry", [4, 6]] call Zen_SpawnInfantry; \ + _Zen_GrpsArray pushBack _Zen_Group; \ + }; \ + 0 = [_Zen_GrpsArray, S, ZEN_FMW_Loadout_StdInfantryPreset, false] call Zen_GiveLoadout; \ + 0 = [_Zen_GrpsArray, END, [1, MAXD]] spawn Zen_OrderInfantryPatrol; \ + _Zen_DirToSpawn = nil; + +#define ZEN_FMW_Code_WaitDistanceGreater(A, B, D) \ + waitUntil { \ + sleep 2; \ + (([A, B] call Zen_Find2dDistance) > D) \ + }; + +#define ZEN_FMW_Code_WaitDistanceLess(A, B, D) \ + waitUntil { \ + sleep 2; \ + (([A, B] call Zen_Find2dDistance) < D) \ + }; + +#define ZEN_FMW_MP_REAll(F, A, I) \ + A I (missionNamespace getVariable F); \ + if (isMultiplayer) then { \ + Zen_MP_Closure_Packet = [F, A]; \ + publicVariable "Zen_MP_Closure_Packet"; \ + }; + +#define ZEN_FMW_MP_REClient(F, A, I, O) \ + if (local O) then { \ + A I (missionNamespace getVariable F); \ + } else { \ + if (isMultiplayer) then { \ + Zen_MP_Closure_Packet = [F, A]; \ + (owner O) publicVariableClient "Zen_MP_Closure_Packet"; \ + }; \ + }; + +#define ZEN_FMW_MP_RENonDedicated(F, A, I) \ + if (isMultiplayer) then { \ + Zen_MP_Closure_Packet = [F, A]; \ + publicVariable "Zen_MP_Closure_Packet"; \ + }; \ + if !(isDedicated) then { \ + A I (missionNamespace getVariable F); \ + }; + +#define ZEN_FMW_MP_REServerOnly(F, A, I) \ + if (isServer) then { \ + A I (missionNamespace getVariable F); \ + } else { \ + if (isMultiplayer) then { \ + Zen_MP_Closure_Packet = [F, A]; \ + publicVariableServer "Zen_MP_Closure_Packet"; \ + }; \ + }; + +#define ZEN_FMW_Math_DistLess2D(A, B, D) (([A, B] call Zen_Find2dDistance) < D) +#define ZEN_FMW_Math_DistGreater3D(A, B, D) ((([A] call Zen_ConvertToPosition) distance ([B] call Zen_ConvertToPosition)) > D) +#define ZEN_FMW_Math_DistGreater2D(A, B, D) (([A, B] call Zen_Find2dDistance) > D) +#define ZEN_FMW_Math_DistLess3D(A, B, D) ((([A] call Zen_ConvertToPosition) distance ([B] call Zen_ConvertToPosition)) < D) +#define ZEN_FMW_Math_RandomPoint(C, R) ([C, random R, random 360] call Zen_ExtendPosition) +#define ZEN_FMW_Math_RandomPointMin(C, S, E) ([C, S + random abs (E - S), random 360] call Zen_ExtendPosition) + +#define ZEN_FMW_Math_TerrainParallelCart(P, I) \ + _Zen_3dGradPolar = [1, [P] call Zen_FindTerrainGradient, 90 - ([P] call Zen_FindTerrainSlope)]; \ + I = ZEN_STD_Math_VectPolarCart(_Zen_3dGradPolar); + +#define ZEN_FMW_Math_TerrainGradientCart(P, I) \ + _Zen_2dGradCyl = [tan ([P] call Zen_FindTerrainSlope), [P] call Zen_FindTerrainGradient, 0]; \ + I = ZEN_STD_Math_VectCylCart(_Zen_2dGradCyl); + +#define ZEN_FMW_OBJ_DeleteDead(D) \ + { \ + _Zen_DeadUnit = _x; \ + _Zen_Delete = true; \ + { \ + if (isPlayer _x) then { \ + if ((_x distanceSqr _Zen_DeadUnit) < D*D) then { \ + _Zen_Delete = false; \ + }; \ + }; \ + } forEach allUnits; \ + if (_Zen_Delete) then { \ + deleteVehicle _x; \ + }; \ + } forEach allDead; + +#define ZEN_FMW_ZAS_ArrayLength {if (count (_this select 0) < count (_this select 1)) exitWith {-1}; (if (count (_this select 0) == count (_this select 1)) then {0} else {1})} +#define ZEN_FMW_ZAS_AlphaNumeric ({_2a = toArray (_this select 1); _c = 0; {if (_x < (_2a select _forEachIndex)) exitWith {_c = -1}; if (_x > (_2a select _forEachIndex)) exitWith {_c = 1};} forEach (toArray (_this select 0)); (_c)}) +#define ZEN_FMW_ZAS_DistFarNear(C) (compile format ["if ((_this select 0) distance %1 > (_this select 1) distance %1) exitWith {-1}; (if ((_this select 0) distance %1 == (_this select 1) distance %1) then {0} else {1})", C]) +#define ZEN_FMW_ZAS_DistNearFar(C) (compile format ["if ((_this select 0) distance %1 < (_this select 1) distance %1) exitWith {-1}; (if ((_this select 0) distance %1 == (_this select 1) distance %1) then {0} else {1})", C]) +#define ZEN_FMW_ZAS_IntInArray(I) (compile format["if (((_this select 0) select %1) < ((_this select 1) select %1)) exitWith {-1}; (if (((_this select 0) select %1) == ((_this select 1) select %1)) then {0} else {1})", I]) +#define ZEN_FMW_ZAS_StringLength {if (count toArray (_this select 0) < count toArray (_this select 1)) exitWith {-1}; (if (count toArray (_this select 0) == count toArray (_this select 1)) then {0} else {1})} + +#define ZEN_FMW_ZAF_NotString(S) (compile format ["(if (typeName _this == 'STRING') then {!(['%1', _this] call Zen_StringIsInString)} else {false})", S]) +#define ZEN_FMW_ZAF_String(S) (compile format ["(if (typeName _this == 'STRING') then {(['%1', _this] call Zen_StringIsInString)} else {false})", S]) +#define ZEN_FMW_ZAF_Type(T) (compile format ["((toLower typeName _this) == '%1')", (toLower T)]) + +#define ZEN_FMW_ZFGP_Beach 1, [3,50], 0, 0, 0, [2,30], [1,10], 0, [1,10,10] +#define ZEN_FMW_ZFGP_DeepSea 2, 0, 0, 0, 0, 0, 0, 0, [1, -50] +#define ZEN_FMW_ZFGP_Flat 1, 0, 0, 0, 0, 0, [1,10] +#define ZEN_FMW_ZFGP_Forest 1, [3,100], 0, [1,0,20], 0, [1,50], 0, [2,[4, -1, -1], 20] +#define ZEN_FMW_ZFGP_Hill 1, 0, 0, 0, 0, [1,25], [2,20], 0, [2,25,10] +#define ZEN_FMW_ZFGP_LandingZone 1, [1,100], 0, [1,0,20], 0, [1,25], [1,20], [1,[0, 1, -1], 20] +#define ZEN_FMW_ZFGP_NotForest 1, 0, 0, 0, 0, 0, 0, [1,[1, -1, -1], 20] +#define ZEN_FMW_ZFGP_Urban 1, [2, 0], 0, [2,1,25], 0, [1,100], 0, [1,[1,-1,-1], 20] + +#define ZEN_FMW_Loadout_DefaultPreset (["Rifleman", "AT Rifleman", "Assistant AA", "Assistant AT", "Assistant AR", "Team Leader", "Squad Leader", "Grenadier", "Auto Rifleman", "Marksman", "Medic", "AA Specialist", "AT Specialist", "Sapper", "Miner", "EOD Specialist"]) +#define ZEN_FMW_Loadout_StdInfantryPreset (["Rifleman", "Rifleman", "Rifleman", "AT Rifleman", "Assistant AR", "Team Leader", "Squad Leader", "Grenadier", "Grenadier", "Auto Rifleman", "Auto Rifleman", "Marksman", "Medic"]) diff --git a/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_StandardLibrary.sqf b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_StandardLibrary.sqf new file mode 100644 index 0000000..4a13a58 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_StandardLibrary.sqf @@ -0,0 +1,155 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#define ZEN_STD_Array_LastElement(A) (A select (count A - 1)) +#define ZEN_STD_Array_RandIndex(A) (floor random count A) +#define ZEN_STD_Array_RandElement(A) (A select (floor random count A)) +#define ZEN_STD_Array_UnorderedRemove(A, I) \ + A set [I, A select (count A - 1)]; \ + A resize (count A - 1); + +#define ZEN_STD_Code_WaitScript(S) \ + waitUntil { \ + sleep 1; \ + (scriptDone S) \ + }; + +#define ZEN_STD_Code_SleepFrames(F) sleep (F / diag_fps); + +#define ZEN_STD_Code_SwapVars(X, Y) \ + _Zen_tempVar = X; \ + X = Y; \ + Y = _Zen_tempVar; \ + _Zen_tempVar = nil; + +#define ZEN_STD_Math_RandNegativePositive() (if (random 1 > 0.5) then {1} else {-1}) + +#define ZEN_STD_Math_MarkerArea(M) \ + (if (toLower markerShape M == "ellipse") then { \ + (((markerSize M) select 0) * ((markerSize M) select 1) * pi) \ + } else { \ + (((markerSize M) select 0) * ((markerSize M) select 1) * 4) \ + }) + +#define ZEN_STD_Math_VectCartCyl(V) ([(vectorMagnitude [(V select 0), (V select 1), 0]), (V select 1) atan2 (V select 0), (V select 2)]) +#define ZEN_STD_Math_VectCartPolar(V) ([(vectorMagnitude V), (V select 1) atan2 (V select 0), acos ((V select 2) / (vectorMagnitude V))]) + +#define ZEN_STD_Math_VectCylCart(V) ([(V select 0) * cos (V select 1), (V select 0) * sin (V select 1), (V select 2)]) +#define ZEN_STD_Math_VectCylPolar(V) ([(vectorMagnitude [(V select 0), 0, (V select 2)]), (V select 1), (V select 0) atan2 (V select 2)]) + +#define ZEN_STD_Math_VectPolarCart(V) ([(V select 0) * cos (V select 1) * sin (V select 2), (V select 0) * sin (V select 1) * sin (V select 2), (V select 0) * cos (V select 2)]) +#define ZEN_STD_Math_VectPolarCyl(V) ([(V select 0) * sin (V select 2), (V select 1), (V select 0) * cos (V select 2)]) + +#define ZEN_STD_Math_VectRotateX(P, A) ([(P select 0), (P select 1) * cos A + (P select 2) * sin A, - (P select 1) * sin A + (P select 2) * cos A]) +#define ZEN_STD_Math_VectRotateY(P, A) ([(P select 0) * cos A - (P select 2) * sin A, (P select 1), (P select 0) * sin A + (P select 2) * cos A]) +#define ZEN_STD_Math_VectRotateZ(P, A) ([(P select 0) * cos A + (P select 1) * sin A, - (P select 0) * sin A + (P select 1) * cos A, (P select 2)]) + +#define ZEN_STD_Math_VectTransform(P, X, Y, Z) ([(P select 0) + X, (P select 1) + Y, (P select 2) + Z]) + +#define ZEN_STD_OBJ_ATLPositionZ(O) ((getPosATL O) select 2) +#define ZEN_STD_OBJ_ASLPositionZ(O) ((getPosASL O) select 2) +#define ZEN_STD_OBJ_BBX(O) abs ((((boundingBoxReal O) select 0) select 0) - (((boundingBoxReal O) select 1) select 0)) +#define ZEN_STD_OBJ_BBY(O) abs ((((boundingBoxReal O) select 0) select 1) - (((boundingBoxReal O) select 1) select 1)) +#define ZEN_STD_OBJ_BBZ(O) abs ((((boundingBoxReal O) select 0) select 2) - (((boundingBoxReal O) select 1) select 2)) + +#define ZEN_STD_OBJ_AnimateDoors(V, C) \ + { \ + V animateDoor [(configName _x), C]; \ + } forEach ("((toLower (getText (_x >> 'source'))) == 'door')" configClasses (configFile >> "CfgVehicles" >> (typeOf V) >> "AnimationSources")); + +#define ZEN_STD_OBJ_CountBuildingPos(V, B) \ + V = 0; \ + for "_i" from 0 to 100 do { \ + if ((B buildingPos V) isEqualTo [0,0,0]) exitWith {}; \ + V = V + 1; \ + }; \ + V = V - 1; + +#define ZEN_STD_OBJ_CountCargoSeats(V) (getNumber (configFile >> "CfgVehicles" >> (typeOf V) >> "transportSoldier")) +#define ZEN_STD_OBJ_DeleteVehCrew(V) \ + { \ + deleteVehicle _x; \ + } forEach (crew V + [V]); + +#define ZEN_STD_OBJ_MakePOW(O) \ + O setCaptive true; \ + O disableAI "move"; \ + O setUnitPos "UP"; \ + removeAllWeapons O; \ + removeBackpack O; \ + removeGoggles O; \ + removeHeadgear O; + +#define ZEN_STD_OBJ_OrderGetOut(U, V) \ + U orderGetIn false; \ + { \ + unassignVehicle _x; \ + _x leaveVehicle V; \ + } forEach U; + +#define ZEN_STD_OBJ_OrderGetIn(U, V) \ + { \ + _x assignAsCargo V; \ + } forEach U; \ + U orderGetIn true; + +#define ZEN_STD_OBJ_OrientAircraft(O, P, S) \ + _Zen_vDirToLZ = ((getPosATL O) vectorFromTo P); \ + _Zen_dirToLZ = ZEN_STD_Math_VectCartCyl(_Zen_vDirToLZ) select 1; \ + sleep (5 / diag_fps); \ + O setDir (90 - _Zen_dirToLZ); \ + O setVelocity [S * cos _Zen_dirToLZ, S * sin _Zen_dirToLZ, 0]; + +#define ZEN_STD_OBJ_ParachuteInsertion(O, P, H) \ + _Zen_dir = random 360; \ + { \ + _x setPosATL (P vectorAdd [50 * _forEachIndex * cos _Zen_dir, 50 * _forEachIndex * sin _Zen_dir, H]); \ + removeBackpackGlobal _x; \ + _x addBackpackGlobal "b_parachute"; \ + } forEach O; + +#define ZEN_STD_OBJ_TransformATL(O, X, Y, Z) O setPosATL [((getPosATL O) select 0) + X, ((getPosATL O) select 1) + Y, ((getPosATL O) select 2) + Z]; + +#define ZEN_STD_Parse_GetArgumentDefault(V, I, D) \ + if (count _this > I) then { \ + V = _this select I; \ + } else { \ + V = D; \ + }; + +#define ZEN_STD_Parse_GetSetArgumentDefault(V, I, D, R) \ + if (count _this > I) then { \ + V = _this select I; \ + } else { \ + V = D; \ + }; \ + _this set [I, R]; + +#define ZEN_STD_Parse_GetSetArgumentOptional(V, I, D, R) \ + if (count _this > I) then { \ + V = _this select I; \ + } else { \ + V = D; \ + _this set [I, R]; \ + }; + +#define ZEN_STD_Parse_GetArgument(V, I) \ + if (count _this > I) then { \ + V = _this select I; \ + }; + +#define ZEN_STD_Parse_ToArray(X) \ + if (typeName X != "ARRAY") then { \ + X = [X]; \ + }; + +#define ZEN_STD_Parse_ToString(X) \ + if (typeName X != "STRING") then { \ + X = str X; \ + }; + +#define ZEN_STD_Parse_ToStringLower(X) \ + if (typeName X != "STRING") then { \ + X = toLower str X; \ + }; diff --git a/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_StringCapitalizeLetter.sqf b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_StringCapitalizeLetter.sqf new file mode 100644 index 0000000..0778594 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_StringCapitalizeLetter.sqf @@ -0,0 +1,31 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_StringCapitalizeLetter", _this] call Zen_StackAdd; +private ["_givenString", "_letter", "_index"]; + +if !([_this, [["STRING"], ["SCALAR"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (_this select 0) +}; + +_givenString = toArray (_this select 0); +_index = 0; + +if (count _this > 1) then { + _index = _this select 1; +}; + +if (_index >= (count _givenString)) exitWith { + 0 = ["Zen_StringCapitalizeLetter", "Given index is out of bounds", _this] call Zen_PrintError; + call Zen_StackPrint; + call Zen_StackRemove; + (_givenString) +}; + +_letter = _givenString select _index; +_givenString set [_index, ((toArray (toUpper (toString [_letter]))) select 0)]; + +call Zen_StackRemove; +(toString _givenString) diff --git a/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_StringFindReplace.sqf b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_StringFindReplace.sqf new file mode 100644 index 0000000..ba30a00 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_StringFindReplace.sqf @@ -0,0 +1,66 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_StringFindReplace", _this] call Zen_StackAdd; +private ["_findString", "_replaceString", "_totalString", "_useCase", "_stringPiece", "_char", "_j"]; + +if !([_this, [["STRING"], ["STRING"], ["STRING"], ["BOOL"]], [], 3] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (_this select 0) +}; + +_totalString = _this select 0; +_findString = _this select 1; +_replaceString = _this select 2; + +_useCase = false; + +if (count _this > 3) then { + _useCase = _this select 3; +}; + +if !(_useCase) then { + _findString = toUpper _findString; + _replaceString = toUpper _replaceString; + _totalString = toUpper _totalString; +}; + +_findString = toArray _findString; +_replaceString = toArray _replaceString; +_totalString = toArray _totalString; + +if (_findString isEqualTo _totalString) then { + _totalString = _replaceString; +} else { + if ((count _findString) <= (count _totalString)) then { + for "_j" from 0 to ((count _totalString) - 1) do { + _char = _totalString select _j; + if ((count _findString) > ((count _totalString) - _j)) exitWith {}; + + if (_char == (_findString select 0)) then { + _stringPiece = [_totalString, _j, ((count _findString) - 1 + _j)] call Zen_ArrayGetIndexedSlice; + if (_stringPiece isEqualTo _findString) then { + for "_i" from _j to ((count _findString) - 1 + _j) do { + _totalString set [_i, -1]; + }; + + for "_i" from _j to ((count _replaceString) - 1 + _j) do { + if ((_totalString select _i) != -1) then { + 0 = [_totalString, _i, (_replaceString select (_i - _j))] call Zen_ArrayInsert; + } else { + _totalString set [_i, (_replaceString select (_i - _j))]; + }; + }; + }; + }; + }; + _totalString = _totalString - [-1]; + } else { + 0 = ["Zen_StringFindReplace", "The string to find is longer than the string to search in.", _this] call Zen_PrintError; + call Zen_StackPrint; + }; +}; + +call Zen_StackRemove; +(toString _totalString) \ No newline at end of file diff --git a/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_StringGenerateRandom.sqf b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_StringGenerateRandom.sqf new file mode 100644 index 0000000..25d304e --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_StringGenerateRandom.sqf @@ -0,0 +1,60 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf"; +#include "Zen_FrameworkLibrary.sqf"; + +_Zen_stack_Trace = ["Zen_StringGenerateRandom", _this] call Zen_StackAdd; +private ["_count", "_string", "_i", "_ch", "_set", "_chars", "_characterLimits"]; + +if !([_this, [["SCALAR"], ["STRING"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + ("") +}; + +_count = _this select 0; +ZEN_STD_Parse_GetArgumentDefault(_set, 1, "all") + +_chars = []; +_characterLimits = []; +switch (toLower _set) do { + case "all": { + _characterLimits pushBack [33,126]; + }; + case "alpha": { + _characterLimits pushBack [65,90]; + _characterLimits pushBack [97,122]; + }; + case "alphanumeric": { + _characterLimits pushBack [48,57]; + _characterLimits pushBack [65,90]; + _characterLimits pushBack [97,122]; + }; + case "numeric": { + _characterLimits pushBack [48,57]; + }; +}; + +{ + for "_i" from (_x select 0) to (_x select 1) do { + _chars pushBack _i; + }; +} forEach _characterLimits; + +if (count _chars == 0) exitWith { + ZEN_FMW_Code_ErrorExitValue("Zen_StringGenerateRandom", "Invalid character set given", "") +}; + +_string = []; +for "_i" from 1 to _count do { + _ch = ZEN_STD_Array_RandElement(_chars); + if !(_ch in [34, 39]) then { + _string set [(_i - 1), _ch]; + } else { + _i = _i - 1; + }; +}; + +call Zen_StackRemove; +(toString _string) diff --git a/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_StringGetDelimitedPart.sqf b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_StringGetDelimitedPart.sqf new file mode 100644 index 0000000..d328b3e --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_StringGetDelimitedPart.sqf @@ -0,0 +1,39 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_StringGetDelimitedPart", _this] call Zen_StackAdd; +private ["_patternString", "_totalString", "_returnString", "_startIndex", "_startDelimiter", "_endDelimiter", "_i"]; + +if !([_this, [["STRING"], ["STRING"]], [], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (_this select 0) +}; + +_totalString = toArray (_this select 0); +_startDelimiter = toArray (_this select 1); +_endDelimiter = toArray (_this select 2); + +_returnString = []; +_startIndex = -1; + +if (count _totalString >= (count _startDelimiter + count _endDelimiter + 1)) then { + { + if ((_x == (_startDelimiter select 0)) && {(_startDelimiter isEqualTo ([_totalString, _forEachIndex, (_forEachIndex + (count _startDelimiter - 1)) min (count _totalString - 1)] call Zen_ArrayGetIndexedSlice))}) then { + _startIndex = _forEachIndex + (count _startDelimiter); + }; + } forEach _totalString; + + if (_startIndex > 0) then { + for "_i" from _startIndex to (count _totalString - 1) do { + if (((_totalString select _i) == (_endDelimiter select 0)) && {(_endDelimiter isEqualTo ([_totalString, _i, (_i + (count _endDelimiter - 1)) min (count _totalString - 1)] call Zen_ArrayGetIndexedSlice))}) exitWith {}; + _returnString pushBack (_totalString select _i); + }; + }; +} else { + 0 = ["Zen_StringGetDelimitedPart", "The given string is too short.", _this] call Zen_PrintError; + call Zen_StackPrint; +}; + +call Zen_StackRemove; +(toString _returnString) diff --git a/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_StringIsInString.sqf b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_StringIsInString.sqf new file mode 100644 index 0000000..7991b0b --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_StringIsInString.sqf @@ -0,0 +1,56 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_StringIsInString", _this] call Zen_StackAdd; +private ["_keyString", "_totalString", "_useCase", "_keyIsInTotal", "_stringPiece"]; + +if !([_this, [["STRING"], ["STRING"], ["BOOL"]], [], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (false) +}; + +_keyString = _this select 0; +_totalString = _this select 1; + +_useCase = false; +if ((count _this) > 2) then { + _useCase = _this select 2; +}; + +if !(_useCase) then { + _keyString = toUpper _keyString; + _totalString = toUpper _totalString; +}; + +_keyString = toArray _keyString; +_totalString = toArray _totalString; + +if ((count _keyString == 0) || (count _totalString == 0)) exitWith { + 0 = ["Zen_StringIsInString", "One or more given strings is empty", _this] call Zen_PrintError; + call Zen_StackPrint; + call Zen_StackRemove; + (false) +}; + +_keyIsInTotal = false; + +if ((count _keyString) <= (count _totalString)) then { + { + if ((count _keyString) > ((count _totalString) - _forEachIndex)) exitWith {}; + + if (_x == (_keyString select 0) || ((_keyString select 0) == 35)) then { + _stringPiece = [_totalString, _forEachIndex, ((count _keyString) - 1 + _forEachIndex)] call Zen_ArrayGetIndexedSlice; + { + if (_x == 35) then { + _stringPiece set [_forEachIndex, _x]; + }; + } forEach _keyString; + _keyIsInTotal = _stringPiece isEqualTo _keyString; + }; + if (_keyIsInTotal) exitWith {}; + } forEach _totalString; +}; + +call Zen_StackRemove; +(_keyIsInTotal) diff --git a/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_StringRemoveWhiteSpace.sqf b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_StringRemoveWhiteSpace.sqf new file mode 100644 index 0000000..8efa4a0 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_StringRemoveWhiteSpace.sqf @@ -0,0 +1,26 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_StringRemoveWhiteSpace", _this] call Zen_StackAdd; +private ["_string"]; + +if !([_this, [["STRING"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (_this select 0) +}; + +_string = toArray (_this select 0); + +if (count _string == 0) then { + 0 = ["Zen_StringRemoveWhiteSpace", "Given string is empty", _this] call Zen_PrintError + call Zen_StackPrint; +}; + +_string = _string - [32]; +_string = _string - [9]; +_string = _string - [13]; +_string = _string - [10]; + +call Zen_StackRemove; +(toString _string) diff --git a/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ValueFindInArray.sqf b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ValueFindInArray.sqf new file mode 100644 index 0000000..ef3fe58 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ValueFindInArray.sqf @@ -0,0 +1,33 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_ValueFindInArray", _this] call Zen_StackAdd; +private ["_value", "_array", "_index"]; + +if !([_this, [["VOID"], ["VOID"]], [], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (-1) +}; + +_value = _this select 0; +_array = _this select 1; + +if (typeName _array != "ARRAY") then { + _array = [_array]; +}; + +_index = -1; + +if ((typeName _value) in ["ARRAY", "STRING"]) then { + { + if ([_x, _value] call Zen_ValuesAreEqual) exitWith { + _index = _forEachIndex; + }; + } forEach _array; +} else { + _index = _array find _value; +}; + +call Zen_StackRemove; +(_index) diff --git a/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ValueIsInArray.sqf b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ValueIsInArray.sqf new file mode 100644 index 0000000..58443b3 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ValueIsInArray.sqf @@ -0,0 +1,62 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_ValueIsInArray", _this] call Zen_StackAdd; +private ["_value", "_array", "_isInArray"]; + +if !([_this, [["VOID"], ["VOID"]], [], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (false) +}; + +_value = _this select 0; +_array = _this select 1; + +if (typeName _array != "ARRAY") then { + _array = [_array]; +}; + +_isInArray = false; + +if (typeName _value != "ARRAY") then { + if (typeName _value == "STRING") then { + { + if (typeName _x == "ARRAY") then { + _isInArray = [_value, _x] call Zen_ValueIsInArray; + } else { + _isInArray = [_value, _x] call Zen_ValuesAreEqual; + }; + + if (_isInArray) exitWith {}; + } forEach _array; + } else { + if (_value in _array) exitWith { + _isInArray = true; + }; + + { + if (typeName _x == "ARRAY") then { + _isInArray = [_value, _x] call Zen_ValueIsInArray; + }; + + if (_isInArray) exitWith {}; + } forEach _array; + }; +} else { + { + if (typeName _x == "ARRAY") then { + if ([_value, _x] call Zen_ValuesAreEqual) then { + _isInArray = true; + if (true) exitWith {}; + } else { + _isInArray = [_value, _x] call Zen_ValueIsInArray; + }; + }; + + if (_isInArray) exitWith {}; + } forEach _array; +}; + +call Zen_StackRemove; +(_isInArray) diff --git a/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ValuesAreEqual.sqf b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ValuesAreEqual.sqf new file mode 100644 index 0000000..566db60 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ValuesAreEqual.sqf @@ -0,0 +1,22 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_ValuesAreEqual", _this] call Zen_StackAdd; +private ["_value1", "_value2"]; + +if !([_this, [["VOID"], ["VOID"]], [], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (false) +}; + +_value1 = _this select 0; +_value2 = _this select 1; + +if ((typeName _value1 == "STRING") && (typeName _value2 == "STRING")) then { + _value1 = toLower _value1; + _value2 = toLower _value2; +}; + +call Zen_StackRemove; +(_value1 isEqualTo _value2) diff --git a/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ValuesAreInArray.sqf b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ValuesAreInArray.sqf new file mode 100644 index 0000000..013d253 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ValuesAreInArray.sqf @@ -0,0 +1,32 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_ValuesAreInArray", _this] call Zen_StackAdd; +private ["_value", "_array", "_areInArray"]; + +if !([_this, [["VOID"], ["VOID"]], [], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (false) +}; + +_value = _this select 0; +_array = _this select 1; + +if (typeName _value != "ARRAY") then { + _value = [_value]; +}; + +if (typeName _array != "ARRAY") then { + _array = [_array]; +}; + +_areInArray = false; + +{ + _areInArray = [_x, _array] call Zen_ValueIsInArray; + if !(_areInArray) exitWith {}; +} forEach _value; + +call Zen_StackRemove; +(_areInArray) diff --git a/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ValuesAreNotInArray.sqf b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ValuesAreNotInArray.sqf new file mode 100644 index 0000000..ce00e72 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ValuesAreNotInArray.sqf @@ -0,0 +1,32 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_ValuesAreInArray", _this] call Zen_StackAdd; +private ["_value", "_array", "_areNotInArray"]; + +if !([_this, [["VOID"], ["VOID"]], [], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (false) +}; + +_value = _this select 0; +_array = _this select 1; + +if (typeName _value != "ARRAY") then { + _value = [_value]; +}; + +if (typeName _array != "ARRAY") then { + _array = [_array]; +}; + +_areNotInArray = true; + +{ + _areNotInArray = !([_x, _array] call Zen_ValueIsInArray); + if !(_areNotInArray) exitWith {}; +} forEach _value; + +call Zen_StackRemove; +(_areNotInArray) diff --git a/Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_AddFireSupportAction.sqf b/Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_AddFireSupportAction.sqf new file mode 100644 index 0000000..efa3320 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_AddFireSupportAction.sqf @@ -0,0 +1,34 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" +#include "Zen_FrameworkLibrary.sqf" + +_Zen_stack_Trace = ["Zen_AddFireSupportAction", _this] call Zen_StackAdd; +private ["_units", "_supportString", "_titleString", "_maxCalls", "_guideObj", "_guideType", "_templateArray", "_args", "_sendPacket"]; + +if !([_this, [["VOID"], ["STRING"], ["STRING"], ["SCALAR"], ["OBJECT","STRING"], ["STRING"]], [], 4] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_units = [(_this select 0)] call Zen_ConvertToObjectArray; +_supportString = _this select 1; +_titleString = _this select 2; +_maxCalls = _this select 3; + +ZEN_STD_Parse_GetArgumentDefault(_guideObj, 4, objNull) +ZEN_STD_Parse_GetArgumentDefault(_guideType, 5, "designator") + +_templateArray = [_supportString] call Zen_GetFireSupportData; +if (count _templateArray == 0) exitWith {}; + +_nameString = format ["Zen_fire_support_action_global_%1",([10] call Zen_StringGenerateRandom)]; +Zen_Fire_Support_Action_Array_Global pushBack [_nameString, _units, _titleString, _supportString, _guideObj, _guideType, _maxCalls, 0]; +publicVariable "Zen_Fire_Support_Action_Array_Global"; + +_args = [_nameString, _units, _titleString, _supportString, _guideObj, _guideType, _maxCalls]; +ZEN_FMW_MP_REAll("Zen_AddFireSupportAction_AddAction_MP", _args, call) + +call Zen_StackRemove; +(_nameString) diff --git a/Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_CreateFireSupport.sqf b/Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_CreateFireSupport.sqf new file mode 100644 index 0000000..65feb44 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_CreateFireSupport.sqf @@ -0,0 +1,95 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_CreateFireSupport", _this] call Zen_StackAdd; +private ["_nameString", "_roundType", "_roundsPerSalvo", "_salvos", "_timePerRound", "_timePerSalvo", "_targetArea", "_salvoDrift", "_guided", "_xRadius", "_yRadius", "_shape", "_angle"]; + +if !([_this, [["STRING"], ["ARRAY", "SCALAR"], ["ARRAY", "SCALAR"], ["ARRAY", "SCALAR"], ["ARRAY", "SCALAR"], ["SCALAR", "STRING"], ["ARRAY", "SCALAR"], ["BOOL"]], [[], ["SCALAR"], ["SCALAR"], ["SCALAR"], ["SCALAR"], [], ["SCALAR"]], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + ("") +}; + +_roundType = _this select 0; + +_nameString = format ["Zen_fire_support_%1", ([10] call Zen_StringGenerateRandom)]; +_roundsPerSalvo = 5; +_salvos = 1; +_timePerRound = 5; +_timePerSalvo = 10; + +_xRadius = 100; +_yRadius = 100; +_shape = "ellipse"; +_angle = 0; + +_salvoDrift = 25; +_guided = false; + +if (count _this > 1) then { + _roundsPerSalvo = _this select 1; +}; + +if (count _this > 2) then { + _salvos = _this select 2; +}; + +if (count _this > 3) then { + _timePerRound = _this select 3; +}; + +if (count _this > 4) then { + _timePerSalvo = _this select 4; +}; + +if (count _this > 5) then { + _targetArea = _this select 5; + if (typeName _targetArea == "SCALAR") then { + _xRadius = _targetArea max 1; + _yRadius = _targetArea max 1; + } else { + if ([_targetArea, allMapMarkers] call Zen_ValueIsInArray) then { + _xRadius = getMarkerSize _targetArea select 0; + _yRadius = getMarkerSize _targetArea select 1; + _shape = markerShape _targetArea; + _angle = markerDir _targetArea; + } else { + 0 = ["Zen_CreateFireSupport", "Given marker for fire support shape does not exist", _this] call Zen_PrintError; + call Zen_StackPrint; + }; + }; +}; + +if (count _this > 6) then { + _salvoDrift = _this select 6; +}; + +if (count _this > 7) then { + _guided = _this select 7; +}; + +if (typeName _roundsPerSalvo != "ARRAY") then { + _roundsPerSalvo = [_roundsPerSalvo max 1, _roundsPerSalvo max 1]; +}; + +if (typeName _salvos != "ARRAY") then { + _salvos = [_salvos max 1, _salvos max 1]; +}; + +if (typeName _timePerRound != "ARRAY") then { + _timePerRound = [_timePerRound max 1, _timePerRound max 1]; +}; + +if (typeName _timePerSalvo != "ARRAY") then { + _timePerSalvo = [_timePerSalvo max 1, _timePerSalvo max 1]; +}; + +if (typeName _salvoDrift != "ARRAY") then { + _salvoDrift = [_salvoDrift max 1, _salvoDrift max 1]; +}; + +Zen_Fire_Support_Array_Global pushBack [_nameString, _roundType, _roundsPerSalvo, _salvos, _timePerRound, _timePerSalvo, [_xRadius, _yRadius, _shape, _angle], _salvoDrift, _guided]; +publicVariable "Zen_Fire_Support_Array_Global"; + +call Zen_StackRemove; +(_nameString) diff --git a/Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_FireSupportMenu.hpp b/Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_FireSupportMenu.hpp new file mode 100644 index 0000000..2d79104 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_FireSupportMenu.hpp @@ -0,0 +1,12 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +// class CfgCommunicationMenu { + class Zen_FireSupport { + cursor = "A3\ui_f\data\IGUI\Cfg\Cursors\iconcursorsupport_ca.paa"; + expression = "%1"; + icon = "\A3\ui_f\data\gui\cfg\CommunicationMenu\call_ca.paa"; + text = "%1"; + }; +// }; diff --git a/Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_FireSupportSystemCompile.sqf b/Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_FireSupportSystemCompile.sqf new file mode 100644 index 0000000..2cb90b6 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_FireSupportSystemCompile.sqf @@ -0,0 +1,180 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_FrameworkLibrary.sqf" + +Zen_Fire_Support_Round_Local = objNull; +Zen_Fire_Support_Target_Pos_Local = []; +Zen_Fire_Support_Array_Global = []; +Zen_Fire_Support_Action_Array_Global = []; +Zen_Fire_Support_Action_Array_Local = []; + +Zen_AddFireSupportAction = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_FireSupportSystem\Zen_AddFireSupportAction.sqf"; +Zen_CreateFireSupport = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_FireSupportSystem\Zen_CreateFireSupport.sqf"; +Zen_GetFireSupportActionData = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_FireSupportSystem\Zen_GetFireSupportActionData.sqf"; +Zen_GetFireSupportData = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_FireSupportSystem\Zen_GetFireSupportData.sqf"; +Zen_GetUnitFireSupportActions = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_FireSupportSystem\Zen_GetUnitFireSupportActions.sqf"; +Zen_GuideRound = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_FireSupportSystem\Zen_GuideRound.sqf"; +Zen_InvokeFireSupport = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_FireSupportSystem\Zen_InvokeFireSupport.sqf"; +Zen_InvokeFireSupportAction = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_FireSupportSystem\Zen_InvokeFireSupportAction.sqf"; +Zen_RemoveFireSupport = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_FireSupportSystem\Zen_RemoveFireSupport.sqf"; +Zen_RemoveFireSupportAction = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_FireSupportSystem\Zen_RemoveFireSupportAction.sqf"; +Zen_UpdateFireSupport = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_FireSupportSystem\Zen_UpdateFireSupport.sqf"; +Zen_UpdateFireSupportAction = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_FireSupportSystem\Zen_UpdateFireSupportAction.sqf"; + +Zen_AddFireSupportAction_AddAction_MP = { + if (isDedicated || !hasInterface) exitWith {}; + private ["_nameString", "_units", "_titleString", "_supportString", "_guideObj", "_guideType", "_maxCalls", "_IDs", "_actionID", "_indexes", "_oldData", "_oldUnits", "_oldIDs"]; + + _nameString = _this select 0; + _units = _this select 1; + _titleString = _this select 2; + _supportString = _this select 3; + _guideObj = _this select 4; + _guideType = _this select 5; + _maxCalls = _this select 6; + + _IDs = []; + { + _actionID = _x addAction ["" + _titleString + "", {(_this select 3) spawn Zen_InvokeFireSupportAction}, [_nameString], 1, false, true, "", "(_target == _this)"]; + _IDs pushBack _actionID; + } forEach _units; + + _indexes = [Zen_Fire_Support_Action_Array_Local, _nameString, 0] call Zen_ArrayGetNestedIndex; + if (count _indexes == 0) then { + Zen_Fire_Support_Action_Array_Local pushBack [_nameString, _units, _IDs]; + } else { + _oldData = Zen_Fire_Support_Action_Array_Local select (_indexes select 0); + _oldUnits = _oldData select 1; + _oldIDs = _oldData select 2; + + 0 = [_oldUnits, _units] call Zen_ArrayAppendNested; + 0 = [_oldIDs, _IDs] call Zen_ArrayAppendNested; + }; + + if (true) exitWith {}; +}; + +Zen_InvokeFireSupportAction_CheckCount_Server_MP = { + if !(isServer) exitWith {}; + private ["_nameString", "_indexes", "_data", "_maxCount", "_count"]; + _nameString = _this select 0; + + _indexes = [Zen_Fire_Support_Action_Array_Global, (_this select 0), 0] call Zen_ArrayGetNestedIndex; + _data = Zen_Fire_Support_Action_Array_Global select (_indexes select 0); + _maxCount = _data select 6; + _count = (_data select 7) + 1; + + _data set [7, _count]; + if ((_count >= _maxCount) && {_maxCount != -1}) then { + 0 = [_nameString] call Zen_RemoveFireSupportAction; + } else { + publicVariable "Zen_Fire_Support_Action_Array_Global"; + }; + + if (true) exitWith {}; +}; + +Zen_InvokeFireSupportAction_Fire_MP = { + _supportTemplate = (_this select 0) select 1; + _guideObj = (_this select 0) select 2; + _h_support = (_this select 0) spawn Zen_InvokeFireSupport; + + _threadID = "Zen_FireSupportAction_ID_" + ([5] call Zen_StringGenerateRandom); + missionNamespace setVariable [_threadID, _h_support]; + + _callingUnit = _this select 1; + _args = [_threadID, _guideObj, _supportTemplate]; + ZEN_FMW_MP_REClient("Zen_InvokeFireSupportAction_AddCancelAction_MP", _args, spawn, _callingUnit) +}; + +Zen_InvokeFireSupportAction_AddCancelAction_MP = { + // _threadID = _this select 0; + // _guideObj = _this select 1; + _supportTemplate = _this select 2; + _actionID = player addAction ["Cancel Fire Support", { + player removeAction (_this select 2); + _guideObj = (_this select 3) select 1; + if (isNull _guideObj) then { + ZEN_FMW_MP_REServerOnly("Zen_InvokeFireSupportAction_CancelAction_MP", (_this select 3), spawn) + } else { + ZEN_FMW_MP_REClient("Zen_InvokeFireSupportAction_CancelAction_MP", (_this select 3), spawn, _guideObj) + }; + }, _this, 1, false, true, "", "(_target == _this)"]; + + _templateArray = [_supportTemplate] call Zen_GetFireSupportData; + _roundsPerSalvo = (_templateArray select 2) select 1; + _salvos = (_templateArray select 3) select 1; + _timePerRound = (_templateArray select 4) select 1; + _timePerSalvo = (_templateArray select 5) select 1; + + _fireSupportTime = _timePerSalvo * (_salvos + 1) + _timePerRound * _roundsPerSalvo * _salvos; + sleep _fireSupportTime; + player removeAction _actionID; +}; + +Zen_InvokeFireSupportAction_CancelAction_MP = { + _threadID = _this select 0; + // _guideObj = _this select 1; + + terminate (missionNamespace getVariable _threadID); + missionNamespace setVariable [_threadID, nil]; +}; + +Zen_RemoveFireSupportAction_RemoveAction_MP = { + if (isDedicated || !hasInterface) exitWith {}; + private ["_nameString", "_unitsToRemove", "_unitsRemaining", "_indexes", "_commArray", "_IDs"]; + + _nameString = _this select 0; + _unitsToRemove = _this select 1; + _unitsRemaining = _this select 2; + + _indexes = [Zen_Fire_Support_Action_Array_Local, _nameString, 0] call Zen_ArrayGetNestedIndex; + _commArray = Zen_Fire_Support_Action_Array_Local select (_indexes select 0); + + if (count _unitsRemaining > 0) then { + { + 0 = [_unitsRemaining, _x] call Zen_ArrayRemoveValue; + } forEach _unitsToRemove; + }; + + { + _IDs = _commArray select 2; + if (_x in _unitsToRemove) then { + _x removeAction (_IDs select _forEachIndex); + _IDs set [_forEachIndex, -1]; + }; + } forEach (_commArray select 1); + + 0 = [_IDs, -1] call Zen_ArrayRemoveValue; + if (count _unitsRemaining == 0) then { + 0 = [Zen_Fire_Support_Action_Array_Local, (_indexes select 0)] call Zen_ArrayRemoveIndex; + } else { + _commArray set [1, _unitsRemaining]; + }; +}; + +Zen_InvokeFireSupportAction_SideChat_MP = { + if (isDedicated || !hasInterface) exitWith {}; + private ["_unit", "_side", "_group", "_pos", "_sentTime"]; + + _unit = _this select 0; + _pos = _this select 1; + _sentTime = _this select 2; + + _side = side _unit; + + if (side player != _side) exitWith {}; + + _group = toArray str group _unit; + _group = toString ([_group, 2] call Zen_ArrayGetIndexedSlice); + + _unit sideChat format ["HQ, %1, Request fire support at grid %2, over.", _group, (mapGridPosition _pos)]; + sleep 7; + [_side, "base"] sideChat format ["%1, HQ, Fire support inbound in %2 seconds, out.", _group, _sentTime]; + + if (true) exitWith {}; +}; + +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_FrameworkLibrary.sqf b/Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_FrameworkLibrary.sqf new file mode 100644 index 0000000..7af8176 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_FrameworkLibrary.sqf @@ -0,0 +1,191 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#define ZEN_FMW_Array_RemoveIndexes(A, I) \ + { \ + 0 = [A, _x - _forEachIndex] call Zen_ArrayRemoveIndex; \ + } forEach I; + +#define ZEN_FMW_CFG_VehicleWeapons(V) \ + _Zen_WeaponsArray = []; \ + 0 = [_Zen_WeaponsArray, getArray (V >> "weapons")] call Zen_ArrayAppendNested; \ + { \ + 0 = [_Zen_WeaponsArray, getArray (V >> "weapons")] call Zen_ArrayAppendNested; \ + } forEach ("true" configClasses (V >> "turrets")); \ + { \ + _Zen_WeaponsArray = [_Zen_WeaponsArray, ZEN_FMW_ZAF_String(V)] call Zen_ArrayFilterCondition; \ + } forEach ["smoke", "horn", "laser", "flare", "throw", "put"]; + +#define ZEN_FMW_Code_ErrorExitVoid(F, D) \ + 0 = [F, D, _this] call Zen_PrintError; \ + call Zen_StackPrint; \ + call Zen_StackRemove; + +#define ZEN_FMW_Code_ErrorExitValue(F, D, V) \ + 0 = [F, D, _this] call Zen_PrintError; \ + call Zen_StackPrint; \ + call Zen_StackRemove; \ + V + +#define ZEN_FMW_Code_Error(F, D) \ + 0 = [F, D, _this] call Zen_PrintError; \ + call Zen_StackPrint; + +#define ZEN_FMW_Code_GiveLoadoutsOrdered(U, L, S) \ + { \ + 0 = [_x, S, (L select (_forEachIndex % (count L)))] call Zen_GiveLoadout; \ + } forEach ([U] call Zen_ConvertToObjectArray); + +#define ZEN_FMW_Code_Insertion(U, V, S, E) \ + _Zen_Vehicle = [S, V, (if (V isKindOf "Air") then {40} else {0})] call Zen_SpawnVehicle; \ + 0 = [_Zen_Vehicle] call Zen_SpawnVehicleCrew; \ + 0 = [U, _Zen_Vehicle] call Zen_MoveInVehicle; \ + 0 = [_Zen_Vehicle, [E, S], U] spawn Zen_OrderInsertion; + +#define ZEN_FMW_Code_InsertionPatrol(G, T, S, M) \ + _Zen_Vehicle = [S, T] call Zen_SpawnVehicle; \ + 0 = [_Zen_Vehicle] call Zen_SpawnVehicleCrew; \ + 0 = [G, _Zen_Vehicle] call Zen_MoveInVehicle; \ + 0 = [_Zen_Vehicle, [([M] call Zen_FindGroundPosition), _Zen_HeliStart], G, "normal", 40, "fastrope", true] spawn Zen_OrderInsertion; \ + 0 = [G, M] spawn { \ + waitUntil { \ + sleep 5; \ + ([_this select 0] call Zen_AreNotInVehicle) \ + }; \ + 0 = [_this select 0, _this select 1] spawn Zen_OrderInfantryPatrol; \ + }; + +#define ZEN_FMW_Code_SpawnMarker(M, N, S) \ + _Zen_GrpsArray = []; \ + for "_Z" from 1 to N do { \ + _Zen_Pos = [ M ] call Zen_FindGroundPosition; \ + _Zen_Group = [_Zen_Pos, S, "infantry", [4,6]] call Zen_SpawnInfantry; \ + _Zen_GrpsArray pushBack _Zen_Group; \ + }; \ + 0 = [_Zen_GrpsArray, S, ZEN_FMW_Loadout_StdInfantryPreset, false] call Zen_GiveLoadout; \ + 0 = [_Zen_GrpsArray, M] spawn Zen_OrderInfantryPatrol; + +#define ZEN_FMW_Code_SpawnPoint(C, D, N, S) \ + _Zen_GrpsArray = []; \ + for "_Z" from 1 to N do { \ + _Zen_Pos = [C, [0, D]] call Zen_FindGroundPosition; \ + _Zen_Group = [_Zen_Pos, S, "infantry", [4,6]] call Zen_SpawnInfantry; \ + _Zen_GrpsArray pushBack _Zen_Group; \ + }; \ + 0 = [_Zen_GrpsArray, S, ZEN_FMW_Loadout_StdInfantryPreset, false] call Zen_GiveLoadout; \ + 0 = [_Zen_GrpsArray, C, [0, D]] spawn Zen_OrderInfantryPatrol; + +#define ZEN_FMW_Code_SpawnPointBehind(START, END, MIND, MAXD, N, S) \ + _Zen_DirToSpawn = [START, END] call Zen_FindDirection; \ + _Zen_GrpsArray = []; \ + for "_i" from 1 to N do { \ + _Zen_SpawnPos = [END, [MIND, MAXD], 0, 1, 0, [_Zen_DirToSpawn - 90, _Zen_DirToSpawn + 90, "trig"]] call Zen_FindGroundPosition; \ + _Zen_Group = [_Zen_SpawnPos, S, "infantry", [4, 6]] call Zen_SpawnInfantry; \ + _Zen_GrpsArray pushBack _Zen_Group; \ + }; \ + 0 = [_Zen_GrpsArray, S, ZEN_FMW_Loadout_StdInfantryPreset, false] call Zen_GiveLoadout; \ + 0 = [_Zen_GrpsArray, END, [1, MAXD]] spawn Zen_OrderInfantryPatrol; \ + _Zen_DirToSpawn = nil; + +#define ZEN_FMW_Code_WaitDistanceGreater(A, B, D) \ + waitUntil { \ + sleep 2; \ + (([A, B] call Zen_Find2dDistance) > D) \ + }; + +#define ZEN_FMW_Code_WaitDistanceLess(A, B, D) \ + waitUntil { \ + sleep 2; \ + (([A, B] call Zen_Find2dDistance) < D) \ + }; + +#define ZEN_FMW_MP_REAll(F, A, I) \ + A I (missionNamespace getVariable F); \ + if (isMultiplayer) then { \ + Zen_MP_Closure_Packet = [F, A]; \ + publicVariable "Zen_MP_Closure_Packet"; \ + }; + +#define ZEN_FMW_MP_REClient(F, A, I, O) \ + if (local O) then { \ + A I (missionNamespace getVariable F); \ + } else { \ + if (isMultiplayer) then { \ + Zen_MP_Closure_Packet = [F, A]; \ + (owner O) publicVariableClient "Zen_MP_Closure_Packet"; \ + }; \ + }; + +#define ZEN_FMW_MP_RENonDedicated(F, A, I) \ + if (isMultiplayer) then { \ + Zen_MP_Closure_Packet = [F, A]; \ + publicVariable "Zen_MP_Closure_Packet"; \ + }; \ + if !(isDedicated) then { \ + A I (missionNamespace getVariable F); \ + }; + +#define ZEN_FMW_MP_REServerOnly(F, A, I) \ + if (isServer) then { \ + A I (missionNamespace getVariable F); \ + } else { \ + if (isMultiplayer) then { \ + Zen_MP_Closure_Packet = [F, A]; \ + publicVariableServer "Zen_MP_Closure_Packet"; \ + }; \ + }; + +#define ZEN_FMW_Math_DistLess2D(A, B, D) (([A, B] call Zen_Find2dDistance) < D) +#define ZEN_FMW_Math_DistGreater3D(A, B, D) ((([A] call Zen_ConvertToPosition) distance ([B] call Zen_ConvertToPosition)) > D) +#define ZEN_FMW_Math_DistGreater2D(A, B, D) (([A, B] call Zen_Find2dDistance) > D) +#define ZEN_FMW_Math_DistLess3D(A, B, D) ((([A] call Zen_ConvertToPosition) distance ([B] call Zen_ConvertToPosition)) < D) +#define ZEN_FMW_Math_RandomPoint(C, R) ([C, random R, random 360] call Zen_ExtendPosition) +#define ZEN_FMW_Math_RandomPointMin(C, S, E) ([C, S + random abs (E - S), random 360] call Zen_ExtendPosition) + +#define ZEN_FMW_Math_TerrainParallelCart(P, I) \ + _Zen_3dGradPolar = [1, [P] call Zen_FindTerrainGradient, 90 - ([P] call Zen_FindTerrainSlope)]; \ + I = ZEN_STD_Math_VectPolarCart(_Zen_3dGradPolar); + +#define ZEN_FMW_Math_TerrainGradientCart(P, I) \ + _Zen_2dGradCyl = [tan ([P] call Zen_FindTerrainSlope), [P] call Zen_FindTerrainGradient, 0]; \ + I = ZEN_STD_Math_VectCylCart(_Zen_2dGradCyl); + +#define ZEN_FMW_OBJ_DeleteDead(D) \ + { \ + _Zen_DeadUnit = _x; \ + _Zen_Delete = true; \ + { \ + if (isPlayer _x) then { \ + if ((_x distanceSqr _Zen_DeadUnit) < D*D) then { \ + _Zen_Delete = false; \ + }; \ + }; \ + } forEach allUnits; \ + if (_Zen_Delete) then { \ + deleteVehicle _x; \ + }; \ + } forEach allDead; + +#define ZEN_FMW_ZAS_ArrayLength {if (count (_this select 0) < count (_this select 1)) exitWith {-1}; (if (count (_this select 0) == count (_this select 1)) then {0} else {1})} +#define ZEN_FMW_ZAS_AlphaNumeric ({_2a = toArray (_this select 1); _c = 0; {if (_x < (_2a select _forEachIndex)) exitWith {_c = -1}; if (_x > (_2a select _forEachIndex)) exitWith {_c = 1};} forEach (toArray (_this select 0)); (_c)}) +#define ZEN_FMW_ZAS_DistFarNear(C) (compile format ["if ((_this select 0) distance %1 > (_this select 1) distance %1) exitWith {-1}; (if ((_this select 0) distance %1 == (_this select 1) distance %1) then {0} else {1})", C]) +#define ZEN_FMW_ZAS_DistNearFar(C) (compile format ["if ((_this select 0) distance %1 < (_this select 1) distance %1) exitWith {-1}; (if ((_this select 0) distance %1 == (_this select 1) distance %1) then {0} else {1})", C]) +#define ZEN_FMW_ZAS_IntInArray(I) (compile format["if (((_this select 0) select %1) < ((_this select 1) select %1)) exitWith {-1}; (if (((_this select 0) select %1) == ((_this select 1) select %1)) then {0} else {1})", I]) +#define ZEN_FMW_ZAS_StringLength {if (count toArray (_this select 0) < count toArray (_this select 1)) exitWith {-1}; (if (count toArray (_this select 0) == count toArray (_this select 1)) then {0} else {1})} + +#define ZEN_FMW_ZAF_NotString(S) (compile format ["(if (typeName _this == 'STRING') then {!(['%1', _this] call Zen_StringIsInString)} else {false})", S]) +#define ZEN_FMW_ZAF_String(S) (compile format ["(if (typeName _this == 'STRING') then {(['%1', _this] call Zen_StringIsInString)} else {false})", S]) +#define ZEN_FMW_ZAF_Type(T) (compile format ["((toLower typeName _this) == '%1')", (toLower T)]) + +#define ZEN_FMW_ZFGP_Beach 1, [3,50], 0, 0, 0, [2,30], [1,10], 0, [1,10,10] +#define ZEN_FMW_ZFGP_DeepSea 2, 0, 0, 0, 0, 0, 0, 0, [1, -50] +#define ZEN_FMW_ZFGP_Flat 1, 0, 0, 0, 0, 0, [1,10] +#define ZEN_FMW_ZFGP_Forest 1, [3,100], 0, [1,0,20], 0, [1,50], 0, [2,[4, -1, -1], 20] +#define ZEN_FMW_ZFGP_Hill 1, 0, 0, 0, 0, [1,25], [2,20], 0, [2,25,10] +#define ZEN_FMW_ZFGP_LandingZone 1, [1,100], 0, [1,0,20], 0, [1,25], [1,20], [1,[0, 1, -1], 20] +#define ZEN_FMW_ZFGP_NotForest 1, 0, 0, 0, 0, 0, 0, [1,[1, -1, -1], 20] +#define ZEN_FMW_ZFGP_Urban 1, [2, 0], 0, [2,1,25], 0, [1,100], 0, [1,[1,-1,-1], 20] + +#define ZEN_FMW_Loadout_DefaultPreset (["Rifleman", "AT Rifleman", "Assistant AA", "Assistant AT", "Assistant AR", "Team Leader", "Squad Leader", "Grenadier", "Auto Rifleman", "Marksman", "Medic", "AA Specialist", "AT Specialist", "Sapper", "Miner", "EOD Specialist"]) +#define ZEN_FMW_Loadout_StdInfantryPreset (["Rifleman", "Rifleman", "Rifleman", "AT Rifleman", "Assistant AR", "Team Leader", "Squad Leader", "Grenadier", "Grenadier", "Auto Rifleman", "Auto Rifleman", "Marksman", "Medic"]) diff --git a/Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_GetFireSupportActionData.sqf b/Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_GetFireSupportActionData.sqf new file mode 100644 index 0000000..04889c4 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_GetFireSupportActionData.sqf @@ -0,0 +1,28 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_GetFireSupportActionData", _this] call Zen_StackAdd; +private ["_nameString", "_templateArray"]; + +if !([_this, [["STRING"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + ([]) +}; + +_nameString = _this select 0; +_templateArray = []; + +{ + if ([(_x select 0), _nameString] call Zen_ValuesAreEqual) exitWith { + _templateArray =+ _x; + }; +} forEach Zen_Fire_Support_Action_Array_Global; + +if (count _templateArray == 0) then { + 0 = ["Zen_GetFireSupportActionData", "Given action identifier does not exist.", _this] call Zen_PrintError; + call Zen_StackPrint; +}; + +call Zen_StackRemove; +(_templateArray) diff --git a/Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_GetFireSupportData.sqf b/Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_GetFireSupportData.sqf new file mode 100644 index 0000000..66103ee --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_GetFireSupportData.sqf @@ -0,0 +1,28 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_GetFireSupportData", _this] call Zen_StackAdd; +private ["_nameString", "_templateArray"]; + +if !([_this, [["STRING"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + ([]) +}; + +_nameString = _this select 0; +_templateArray = []; + +{ + if ([(_x select 0), _nameString] call Zen_ValuesAreEqual) exitWith { + _templateArray =+ _x; + }; +} forEach Zen_Fire_Support_Array_Global; + +if (count _templateArray == 0) then { + 0 = ["Zen_GetFireSupportData", "Given template does not exist", _this] call Zen_PrintError; + call Zen_StackPrint; +}; + +call Zen_StackRemove; +(_templateArray) diff --git a/Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_GetUnitFireSupportActions.sqf b/Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_GetUnitFireSupportActions.sqf new file mode 100644 index 0000000..7a58a0e --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_GetUnitFireSupportActions.sqf @@ -0,0 +1,23 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_GetUnitFireSupportActions", _this] call Zen_StackAdd; +private ["_unit", "_unitSupports"]; + +if !([_this, [["OBJECT"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + ([]) +}; + +_unit = _this select 0; +_unitSupports = []; + +{ + if (_unit in (_x select 1)) then { + _unitSupports pushBack (_x select 0); + }; +} forEach Zen_Fire_Support_Action_Array_Global; + +call Zen_StackRemove; +(_unitSupports) diff --git a/Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_GuideRound.sqf b/Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_GuideRound.sqf new file mode 100644 index 0000000..09c101f --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_GuideRound.sqf @@ -0,0 +1,50 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" + +_Zen_stack_Trace = ["Zen_GuideRound", _this] call Zen_StackAdd; +private ["_round", "_guidanceObject", "_guidanceType", "_offTargetDistance", "_angleToTarget", "_roundAdjust", "_roundPosition"]; + +if !([_this, [["VOID"], ["VOID"], ["VOID"]], [], 3] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_round = _this select 0; +_guidanceObject = _this select 1; +_guidanceType = _this select 2; + +if ((_guidanceType == "designator") && {!(local _guidanceObject)}) exitWith { + call Zen_StackRemove; +}; + +scopeName "main"; +while {!(isNull _round) && {(alive _round)}} do { + if (_guidanceType == "designator") then { + if !(isNull laserTarget _guidanceObject) then { + _roundPosition = getPosATL laserTarget _guidanceObject; + } else { + _roundPosition = getPosATL _round; + }; + } else { + _roundPosition = getPosATL _guidanceObject; + }; + + _offTargetDistance = [_roundPosition, _round] call Zen_Find2dDistance; + _angleToTarget = [_round, _roundPosition] call Zen_FindDirection; + + if (_offTargetDistance > 5) then { + _roundAdjust = [_round, 8 + random 4, _angleToTarget, "trig", 0] call Zen_ExtendPosition; + } else { + _roundAdjust = [_round, _offTargetDistance, _angleToTarget, "trig", 0] call Zen_ExtendPosition; + breakTo "main"; + }; + + _round setPosATL [(_roundAdjust select 0), (_roundAdjust select 1), ZEN_STD_OBJ_ATLPositionZ(_round) - 1]; + _round setVelocity [0, 0, -200]; + sleep 0.1; +}; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_InvokeFireSupport.sqf b/Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_InvokeFireSupport.sqf new file mode 100644 index 0000000..b960340 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_InvokeFireSupport.sqf @@ -0,0 +1,172 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" +#include "Zen_FrameworkLibrary.sqf" +#define RNG(ARR) ([(ARR select 0), (ARR select 1)] call Zen_FindInRange) + +_Zen_stack_Trace = ["Zen_InvokeFireSupport", _this] call Zen_StackAdd; +private ["_firePosition", "_nameString", "_templateArray", "_roundType", "_round", "_guided", "_guidanceObject", "_guidanceType", "_artyVehicle", "_roundPosition", "_temp_roundsPerSalvo", "_temp_salvos", "_temp_timePerRound", "_temp_timePerSalvo", "_effectShapeData", "_temp_salvoDrift", "_artyVehicleClass", "_artyMuzzleClass", "_effectMarker", "_artyWeaponMag", "_artyFireMode"]; + +if !([_this, [["VOID"], ["STRING"], ["OBJECT"], ["STRING"]], [], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_firePosition = [(_this select 0)] call Zen_ConvertToPosition; +_nameString = _this select 1; +_guidanceObject = objNull; +_guidanceType = "designator"; + +_templateArray = [_nameString] call Zen_GetFireSupportData; + +if (count _templateArray == 0) exitWith { + 0 = ["Zen_InvokeFireSupport", "Given template does not exist", _this] call Zen_PrintError; + call Zen_StackPrint; + call Zen_StackRemove; +}; + +_roundType = _templateArray select 1; +_temp_roundsPerSalvo = _templateArray select 2; +_temp_salvos = _templateArray select 3; +_temp_timePerRound = _templateArray select 4; +_temp_timePerSalvo = _templateArray select 5; +_effectShapeData = _templateArray select 6; +_temp_salvoDrift = _templateArray select 7; +_guided = _templateArray select 8; + +if (_guided) then { + _guidanceObject = _this select 2; + if (count _this > 3) then { + _guidanceType = toLower (_this select 3); + }; +}; + +_effectMarker = [_firePosition, "", "colorBlack", [_effectShapeData select 0, _effectShapeData select 1], _effectShapeData select 2, _effectShapeData select 3, 0] call Zen_SpawnMarker; +_quantAngles = [_effectMarker, 0, 360] call Zen_QuantizeAngles; + +sleep RNG(_temp_timePerSalvo); +for "_i" from 1 to RNG(_temp_salvos) do { + sleep RNG(_temp_timePerSalvo); + _firePosition = ZEN_FMW_Math_RandomPoint(_firePosition, RNG(_temp_salvoDrift)); + + for "_j" from 1 to RNG(_temp_roundsPerSalvo) do { + sleep RNG(_temp_timePerRound); + _roundPosition = [_effectMarker, _quantAngles] call Zen_FindPositionPoly; + + if !([_roundType, ["Sh_155mm_AMOS", "Sh_82mm_AMOS", "R_230mm_HE", "smoke_120mm_amos", "mine_155mm_amos_range", "cluster_155mm_amos", "at_mine_155mm_amos_range", "flare_82mm_amos_white", "smoke_82mm_amos_white"]] call Zen_ValueIsInArray) then { + Zen_Fire_Support_Round_Local = objNull; + 0 = [_roundPosition, _roundType, 1000, 0, true] spawn { + Zen_Fire_Support_Round_Local = _this call Zen_SpawnVehicle; + }; + + waitUntil { + !(isNull Zen_Fire_Support_Round_Local) + }; + + _round = Zen_Fire_Support_Round_Local; + _round setVelocity [0, 0, -200]; + 0 = _round spawn { + while {alive _this} do { + _this setVectorDirAndUp [[0, 0, -1], [0, 1, 0]]; + }; + }; + } else { + switch (toLower _roundType) do { + case "sh_155mm_amos": { + _artyVehicleClass = "B_MBT_01_arty_F"; + _artyMuzzleClass = "mortar_155mm_amos"; + _artyFireMode = "single1"; + _artyWeaponMag = "32rnd_155mm_mo_shells"; + }; + case "smoke_120mm_amos": { + _artyVehicleClass = "B_MBT_01_arty_F"; + _artyMuzzleClass = "mortar_155mm_amos"; + _artyFireMode = "single1"; + _artyWeaponMag = "6rnd_155mm_mo_smoke"; + }; + case "mine_155mm_amos_range": { + _artyVehicleClass = "B_MBT_01_arty_F"; + _artyMuzzleClass = "mortar_155mm_amos"; + _artyFireMode = "single1"; + _artyWeaponMag = "6rnd_155mm_mo_mine"; + }; + case "cluster_155mm_amos": { + _artyVehicleClass = "B_MBT_01_arty_F"; + _artyMuzzleClass = "mortar_155mm_amos"; + _artyFireMode = "single3"; + _artyWeaponMag = "2rnd_155mm_mo_cluster"; + }; + case "at_mine_155mm_amos_range": { + _artyVehicleClass = "B_MBT_01_arty_F"; + _artyMuzzleClass = "mortar_155mm_amos"; + _artyFireMode = "single4"; + _artyWeaponMag = "6rnd_155mm_mo_at_mine"; + }; + case "sh_82mm_amos": { + _artyVehicleClass = "B_Mortar_01_F"; + _artyMuzzleClass = "mortar_82mm"; + _artyFireMode = "single1"; + _artyWeaponMag = "8rnd_82mm_mo_shells"; + }; + case "flare_82mm_amos_white": { + _artyVehicleClass = "B_Mortar_01_F"; + _artyMuzzleClass = "mortar_82mm"; + _artyFireMode = "single1"; + _artyWeaponMag = "8rnd_82mm_mo_flare_white"; + }; + case "smoke_82mm_amos_white": { + _artyVehicleClass = "B_Mortar_01_F"; + _artyMuzzleClass = "mortar_82mm"; + _artyFireMode = "single1"; + _artyWeaponMag = "8rnd_82mm_mo_smoke_white"; + }; + case "r_230mm_he": { + _artyVehicleClass = "B_MBT_01_mlrs_F"; + _artyMuzzleClass = "rockets_230mm_gat"; + _artyFireMode = "close"; + _artyWeaponMag = "12rnd_230mm_rockets"; + }; + }; + + _artyVehicle = [([[0,0,0], 50 + random 100, random 360] call Zen_ExtendPosition), _artyVehicleClass, 1000, 0, true] call Zen_SpawnVehicle; + 0 = [_artyVehicle] call Zen_SpawnVehicleCrew; + hideObject _artyVehicle; + _artyVehicle allowDamage false; + _artyVehicle setVelocity [0, 0, 200]; + + Zen_Fire_Support_Round_Local = objNull; + _artyVehicle addEventhandler ["fired", { + Zen_Fire_Support_Round_Local = _this select 6; + }]; + _artyVehicle fire [_artyMuzzleClass, _artyFireMode, _artyWeaponMag]; + + waitUntil { + !(isNull Zen_Fire_Support_Round_Local) + }; + _round = Zen_Fire_Support_Round_Local; + + ZEN_STD_OBJ_DeleteVehCrew(_artyVehicle) + 0 = [_round, _roundPosition, 1000, [0, 0, -200], 0, false] call Zen_TransformObject; + 0 = _round spawn { + while {alive _this} do { + _this setVectorDirAndUp [[0, 0, -1], [0, 1, 0]]; + }; + }; + }; + + if (_guided) then { + if (isServer) then { + _round setOwner (owner _guidanceObject); + _args = [_round, _guidanceObject, _guidanceType]; + ZEN_FMW_MP_REClient("Zen_GuideRound", _args, spawn, _guidanceObject) + } else { + 0 = [_round, _guidanceObject, _guidanceType] spawn Zen_GuideRound; + }; + }; + }; +}; + +deleteMarker _effectMarker; +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_InvokeFireSupportAction.sqf b/Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_InvokeFireSupportAction.sqf new file mode 100644 index 0000000..ccd59a4 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_InvokeFireSupportAction.sqf @@ -0,0 +1,67 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" +#include "Zen_FrameworkLibrary.sqf" + +_Zen_stack_Trace = ["Zen_InvokeFireSupportAction", _this] call Zen_StackAdd; +private ["_nameString", "_pos", "_fireSupportTime", "_marker", "_guideType", "_guideObj", "_templateData", "_salvoTime", "_commArray", "_EHID", "_args", "_data", "_supportTemplate"]; + +if !([_this, [["STRING"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_nameString = _this select 0; +_data = [_nameString] call Zen_GetFireSupportActionData; + +_supportTemplate = _data select 3; +_guideObj = _data select 4; +_guideType = _data select 5; + +if (typeName _guideObj == "STRING") then { + _guideObj = player; +}; + +ZEN_FMW_MP_REServerOnly("Zen_InvokeFireSupportAction_CheckCount_Server_MP", [_nameString], call) + +openMap true; +hintSilent "Hold Left-click on the desired fire support target."; +Zen_Fire_Support_Target_Pos_Local = []; +_EHID = "Zen_Fire_Support_Map_EH" + ([10] call Zen_StringGenerateRandom); +0 = [_EHID, "onMapSingleClick", {Zen_Fire_Support_Target_Pos_Local = _pos;}] call BIS_fnc_AddStackedEventHandler; + +waitUntil { + ((count Zen_Fire_Support_Target_Pos_Local) > 0) +}; + +_pos =+ Zen_Fire_Support_Target_Pos_Local; +0 = [_EHID, "onMapSingleClick"] call BIS_fnc_RemoveStackedEventHandler; +hintSilent ""; + +_templateData = [_supportTemplate] call Zen_GetFireSupportData; +if (count _templateData == 0) exitWith {}; + +_salvoTime = _templateData select 4; +_fireSupportTime = 2 * ([_salvoTime select 0, _salvoTime select 1] call Zen_FindInRange); + +_args = [player, _pos, _fireSupportTime]; +ZEN_FMW_MP_REAll("Zen_InvokeFireSupportAction_SideChat_MP", _args) + +_marker = [_pos, "Fire Support Target", "colorRed", [0.6, 0.6], "mil_destroy", 45, 0] call Zen_SpawnMarker; +0 = [_marker, player] call Zen_ShowHideMarkers; + +0 = _marker spawn { + sleep 60; + deleteMarker _this; +}; + +_args = [[_pos, _supportTemplate, _guideObj, _guideType], player]; +if (isNull _guideObj) then { + ZEN_FMW_MP_REServerOnly("Zen_InvokeFireSupportAction_Fire_MP", _args, spawn) +} else { + ZEN_FMW_MP_REClient("Zen_InvokeFireSupportAction_Fire_MP", _args, spawn, _guideObj) +}; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_RemoveFireSupport.sqf b/Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_RemoveFireSupport.sqf new file mode 100644 index 0000000..325eadd --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_RemoveFireSupport.sqf @@ -0,0 +1,26 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_RemoveFireSupport", _this] call Zen_StackAdd; +private ["_fireSupportName", "_indexes"]; + +if !([_this, [["STRING"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_fireSupportName = _this select 0; + +_indexes = [Zen_Fire_Support_Array_Global, _fireSupportName, 0] call Zen_ArrayGetNestedIndex; + +if (count _indexes == 0) exitWith { + 0 = ["Zen_RemoveFireSupport", "Given template does not exist", _this] call Zen_PrintError; + call Zen_StackPrint; + call Zen_StackRemove; +}; + +0 = [Zen_Fire_Support_Array_Global, (_indexes select 0)] call Zen_ArrayRemoveIndex; +publicVariable "Zen_Fire_Support_Array_Global"; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_RemoveFireSupportAction.sqf b/Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_RemoveFireSupportAction.sqf new file mode 100644 index 0000000..8b5d012 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_RemoveFireSupportAction.sqf @@ -0,0 +1,37 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" +#include "Zen_FrameworkLibrary.sqf" + +_Zen_stack_Trace = ["Zen_RemoveFireSupportAction", _this] call Zen_StackAdd; +private ["_nameString", "_indexes", "_globalData", "_IDs", "_unitsToRemove", "_unitsRemaining"]; + +if !([_this, [["STRING"], ["VOID"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_nameString = _this select 0; + +_indexes = [Zen_Fire_Support_Action_Array_Global, _nameString, 0] call Zen_ArrayGetNestedIndex; +if (count _indexes == 0) exitWith { + ZEN_FMW_Code_Error("Zen_RemoveFireSupportAction", "Given action identifier does not exist.") +}; + +_globalData = Zen_Fire_Support_Action_Array_Global select (_indexes select 0); + +if (count _this > 1) then { + _unitsToRemove = [(_this select 1)] call Zen_ConvertToObjectArray; + _unitsRemaining =+ (_globalData select 1); +} else { + _unitsToRemove = _globalData select 1; + _unitsRemaining = []; + _this set [1, _unitsToRemove]; +}; + +_args = [_nameString, _unitsToRemove, _unitsRemaining]; +ZEN_FMW_MP_REAll("Zen_RemoveFireSupportAction_RemoveAction_MP", _args, call) + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_StandardLibrary.sqf b/Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_StandardLibrary.sqf new file mode 100644 index 0000000..4a13a58 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_StandardLibrary.sqf @@ -0,0 +1,155 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#define ZEN_STD_Array_LastElement(A) (A select (count A - 1)) +#define ZEN_STD_Array_RandIndex(A) (floor random count A) +#define ZEN_STD_Array_RandElement(A) (A select (floor random count A)) +#define ZEN_STD_Array_UnorderedRemove(A, I) \ + A set [I, A select (count A - 1)]; \ + A resize (count A - 1); + +#define ZEN_STD_Code_WaitScript(S) \ + waitUntil { \ + sleep 1; \ + (scriptDone S) \ + }; + +#define ZEN_STD_Code_SleepFrames(F) sleep (F / diag_fps); + +#define ZEN_STD_Code_SwapVars(X, Y) \ + _Zen_tempVar = X; \ + X = Y; \ + Y = _Zen_tempVar; \ + _Zen_tempVar = nil; + +#define ZEN_STD_Math_RandNegativePositive() (if (random 1 > 0.5) then {1} else {-1}) + +#define ZEN_STD_Math_MarkerArea(M) \ + (if (toLower markerShape M == "ellipse") then { \ + (((markerSize M) select 0) * ((markerSize M) select 1) * pi) \ + } else { \ + (((markerSize M) select 0) * ((markerSize M) select 1) * 4) \ + }) + +#define ZEN_STD_Math_VectCartCyl(V) ([(vectorMagnitude [(V select 0), (V select 1), 0]), (V select 1) atan2 (V select 0), (V select 2)]) +#define ZEN_STD_Math_VectCartPolar(V) ([(vectorMagnitude V), (V select 1) atan2 (V select 0), acos ((V select 2) / (vectorMagnitude V))]) + +#define ZEN_STD_Math_VectCylCart(V) ([(V select 0) * cos (V select 1), (V select 0) * sin (V select 1), (V select 2)]) +#define ZEN_STD_Math_VectCylPolar(V) ([(vectorMagnitude [(V select 0), 0, (V select 2)]), (V select 1), (V select 0) atan2 (V select 2)]) + +#define ZEN_STD_Math_VectPolarCart(V) ([(V select 0) * cos (V select 1) * sin (V select 2), (V select 0) * sin (V select 1) * sin (V select 2), (V select 0) * cos (V select 2)]) +#define ZEN_STD_Math_VectPolarCyl(V) ([(V select 0) * sin (V select 2), (V select 1), (V select 0) * cos (V select 2)]) + +#define ZEN_STD_Math_VectRotateX(P, A) ([(P select 0), (P select 1) * cos A + (P select 2) * sin A, - (P select 1) * sin A + (P select 2) * cos A]) +#define ZEN_STD_Math_VectRotateY(P, A) ([(P select 0) * cos A - (P select 2) * sin A, (P select 1), (P select 0) * sin A + (P select 2) * cos A]) +#define ZEN_STD_Math_VectRotateZ(P, A) ([(P select 0) * cos A + (P select 1) * sin A, - (P select 0) * sin A + (P select 1) * cos A, (P select 2)]) + +#define ZEN_STD_Math_VectTransform(P, X, Y, Z) ([(P select 0) + X, (P select 1) + Y, (P select 2) + Z]) + +#define ZEN_STD_OBJ_ATLPositionZ(O) ((getPosATL O) select 2) +#define ZEN_STD_OBJ_ASLPositionZ(O) ((getPosASL O) select 2) +#define ZEN_STD_OBJ_BBX(O) abs ((((boundingBoxReal O) select 0) select 0) - (((boundingBoxReal O) select 1) select 0)) +#define ZEN_STD_OBJ_BBY(O) abs ((((boundingBoxReal O) select 0) select 1) - (((boundingBoxReal O) select 1) select 1)) +#define ZEN_STD_OBJ_BBZ(O) abs ((((boundingBoxReal O) select 0) select 2) - (((boundingBoxReal O) select 1) select 2)) + +#define ZEN_STD_OBJ_AnimateDoors(V, C) \ + { \ + V animateDoor [(configName _x), C]; \ + } forEach ("((toLower (getText (_x >> 'source'))) == 'door')" configClasses (configFile >> "CfgVehicles" >> (typeOf V) >> "AnimationSources")); + +#define ZEN_STD_OBJ_CountBuildingPos(V, B) \ + V = 0; \ + for "_i" from 0 to 100 do { \ + if ((B buildingPos V) isEqualTo [0,0,0]) exitWith {}; \ + V = V + 1; \ + }; \ + V = V - 1; + +#define ZEN_STD_OBJ_CountCargoSeats(V) (getNumber (configFile >> "CfgVehicles" >> (typeOf V) >> "transportSoldier")) +#define ZEN_STD_OBJ_DeleteVehCrew(V) \ + { \ + deleteVehicle _x; \ + } forEach (crew V + [V]); + +#define ZEN_STD_OBJ_MakePOW(O) \ + O setCaptive true; \ + O disableAI "move"; \ + O setUnitPos "UP"; \ + removeAllWeapons O; \ + removeBackpack O; \ + removeGoggles O; \ + removeHeadgear O; + +#define ZEN_STD_OBJ_OrderGetOut(U, V) \ + U orderGetIn false; \ + { \ + unassignVehicle _x; \ + _x leaveVehicle V; \ + } forEach U; + +#define ZEN_STD_OBJ_OrderGetIn(U, V) \ + { \ + _x assignAsCargo V; \ + } forEach U; \ + U orderGetIn true; + +#define ZEN_STD_OBJ_OrientAircraft(O, P, S) \ + _Zen_vDirToLZ = ((getPosATL O) vectorFromTo P); \ + _Zen_dirToLZ = ZEN_STD_Math_VectCartCyl(_Zen_vDirToLZ) select 1; \ + sleep (5 / diag_fps); \ + O setDir (90 - _Zen_dirToLZ); \ + O setVelocity [S * cos _Zen_dirToLZ, S * sin _Zen_dirToLZ, 0]; + +#define ZEN_STD_OBJ_ParachuteInsertion(O, P, H) \ + _Zen_dir = random 360; \ + { \ + _x setPosATL (P vectorAdd [50 * _forEachIndex * cos _Zen_dir, 50 * _forEachIndex * sin _Zen_dir, H]); \ + removeBackpackGlobal _x; \ + _x addBackpackGlobal "b_parachute"; \ + } forEach O; + +#define ZEN_STD_OBJ_TransformATL(O, X, Y, Z) O setPosATL [((getPosATL O) select 0) + X, ((getPosATL O) select 1) + Y, ((getPosATL O) select 2) + Z]; + +#define ZEN_STD_Parse_GetArgumentDefault(V, I, D) \ + if (count _this > I) then { \ + V = _this select I; \ + } else { \ + V = D; \ + }; + +#define ZEN_STD_Parse_GetSetArgumentDefault(V, I, D, R) \ + if (count _this > I) then { \ + V = _this select I; \ + } else { \ + V = D; \ + }; \ + _this set [I, R]; + +#define ZEN_STD_Parse_GetSetArgumentOptional(V, I, D, R) \ + if (count _this > I) then { \ + V = _this select I; \ + } else { \ + V = D; \ + _this set [I, R]; \ + }; + +#define ZEN_STD_Parse_GetArgument(V, I) \ + if (count _this > I) then { \ + V = _this select I; \ + }; + +#define ZEN_STD_Parse_ToArray(X) \ + if (typeName X != "ARRAY") then { \ + X = [X]; \ + }; + +#define ZEN_STD_Parse_ToString(X) \ + if (typeName X != "STRING") then { \ + X = str X; \ + }; + +#define ZEN_STD_Parse_ToStringLower(X) \ + if (typeName X != "STRING") then { \ + X = toLower str X; \ + }; diff --git a/Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_UpdateFireSupport.sqf b/Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_UpdateFireSupport.sqf new file mode 100644 index 0000000..320a492 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_UpdateFireSupport.sqf @@ -0,0 +1,111 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_UpdateFireSupport", _this] call Zen_StackAdd; +private ["_nameString", "_roundType", "_roundsPerSalvo", "_salvos", "_timePerRound", "_timePerSalvo", "_targetArea", "_salvoDrift", "_guided", "_templateOld", "_templateNew"]; + +if !([_this, [["STRING"], ["SCALAR", "STRING"], ["ARRAY", "SCALAR"], ["ARRAY", "SCALAR"], ["ARRAY", "SCALAR"], ["ARRAY", "SCALAR"], ["STRING", "SCALAR"], ["ARRAY", "SCALAR"], ["BOOL"]], [[], [], ["SCALAR"], ["SCALAR"], ["SCALAR"], ["SCALAR"], [], ["SCALAR"]], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_nameString = _this select 0; +_roundType = _this select 1; + +_roundsPerSalvo = -1; +_salvos = -1; +_timePerRound = -1; +_timePerSalvo = -1; +_targetArea = -1; +_salvoDrift = -1; +_guided = -1; + +if (count _this > 2) then { + _roundsPerSalvo = _this select 2; +}; + +if (count _this > 3) then { + _salvos = _this select 3; +}; + +if (count _this > 4) then { + _timePerRound = _this select 4; +}; + +if ((count _this) > 5) then { + _timePerSalvo = _this select 5; +}; + +if (count _this > 6) then { + _targetArea = _this select 6; +}; + +if (count _this > 7) then { + _salvoDrift = _this select 7; +}; + +if (count _this > 8) then { + _guided = _this select 8; +}; + +_templateOld = [_nameString] call Zen_GetFireSupportData; +if (count _templateOld == 0) exitWith {}; + +if (_roundType isEqualTo -1) then {_roundType = _templateOld select 1}; +if (_roundsPerSalvo isEqualTo -1) then {_roundsPerSalvo = _templateOld select 2}; +if (_salvos isEqualTo -1) then {_salvos = _templateOld select 3}; +if (_timePerRound isEqualTo -1) then {_timePerRound = _templateOld select 4}; +if (_timePerSalvo isEqualTo -1) then {_timePerSalvo = _templateOld select 5}; +if (_targetArea isEqualTo -1) then {_targetArea = _templateOld select 6}; +if (_salvoDrift isEqualTo -1) then {_salvoDrift = _templateOld select 7}; +if (_guided isEqualTo -1) then {_guided = _templateOld select 8}; + +if (typeName _roundsPerSalvo != "ARRAY") then { + _roundsPerSalvo = [_roundsPerSalvo, _roundsPerSalvo]; +}; + +if (typeName _salvos != "ARRAY") then { + _salvos = [_salvos, _salvos]; +}; + +if (typeName _timePerRound != "ARRAY") then { + _timePerRound = [_timePerRound, _timePerRound]; +}; + +if (typeName _timePerSalvo != "ARRAY") then { + _timePerSalvo = [_timePerSalvo, _timePerSalvo]; +}; + +switch (typeName _targetArea) do { + case "SCALAR": { + (_templateOld select 5) set [0, _targetArea]; + (_templateOld select 5) set [1, _targetArea]; + _targetArea = _templateOld select 5; + }; + case "STRING": { + if ([_targetArea, allMapMarkers] call Zen_ValueIsInArray) then { + _targetArea = getMarkerSize _targetArea + [markerShape _targetArea, markerDir _targetArea]; + } else { + _targetArea = _templateOld select 5; + 0 = ["Zen_UpdateFireSupport", "Given marker for fire support shape does not exist", _this] call Zen_PrintError; + call Zen_StackPrint; + }; + }; + case "ARRAY": {}; +}; + +if (typeName _salvoDrift != "ARRAY") then { + _salvoDrift = [_salvoDrift, _salvoDrift]; +}; + +_templateNew = [_nameString, _roundType, _roundsPerSalvo, _salvos, _timePerRound, _timePerSalvo, _targetArea, _salvoDrift, _guided]; + +{ + if ((_x select 0) == _nameString) then { + Zen_Fire_Support_Array_Global set [_forEachIndex, _templateNew]; + }; +} forEach Zen_Fire_Support_Array_Global; +publicVariable "Zen_Fire_Support_Array_Global"; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_UpdateFireSupportAction.sqf b/Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_UpdateFireSupportAction.sqf new file mode 100644 index 0000000..77c6eec --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_FireSupportSystem/Zen_UpdateFireSupportAction.sqf @@ -0,0 +1,62 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" +#include "Zen_FrameworkLibrary.sqf" + +_Zen_stack_Trace = ["Zen_UpdateFireSupportAction", _this] call Zen_StackAdd; +private ["_nameString", "_unitsToAdd", "_maxCalls", "_supportString", "_guideObj", "_guideType", "_indexes", "_oldData", "_args", "_newSupportTemplateData"]; + +if !([_this, [["STRING"], ["VOID"], ["STRING", "SCALAR"], ["SCALAR", "STRING", "OBJECT"], ["STRING", "SCALAR"], ["SCALAR"]], [], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_nameString = _this select 0; +_unitsToAdd = _this select 1; + +ZEN_STD_Parse_GetArgumentDefault(_supportString, 2, 0) +ZEN_STD_Parse_GetArgumentDefault(_guideObj, 3, 0) +ZEN_STD_Parse_GetArgumentDefault(_guideType, 4, 0) +ZEN_STD_Parse_GetArgumentDefault(_maxCalls, 5, 0) + +if (typeName _unitsToAdd != "SCALAR") then { + _unitsToAdd = [_unitsToAdd] call Zen_ConvertToObjectArray; +}; + +_indexes = [Zen_Fire_Support_Action_Array_Global, _nameString, 0] call Zen_ArrayGetNestedIndex; +if (count _indexes == 0) exitWith { + ZEN_FMW_Code_Error("Zen_UpdateFireSupportAction", "Given action identifier does not exist.") +}; + +_oldData = Zen_Fire_Support_Action_Array_Global select (_indexes select 0); + +if (typeName _unitsToAdd != "SCALAR") then { + _args =+ _oldData; + _args set [1, _unitsToAdd]; + ZEN_FMW_MP_REAll("Zen_AddFireSupportAction_AddAction_MP", _args, call) + + _oldUnits = _oldData select 1; + 0 = [_oldUnits, _unitsToAdd] call Zen_ArrayAppendNested; +}; + +if (typeName _supportString != "SCALAR") then { + _newSupportTemplateData = [_supportString] call Zen_GetFireSupportData; + _oldData set [3, _supportString]; +}; + +if (typeName _guideObj != "SCALAR") then { + _oldData set [4, _guideObj]; +}; + +if (typeName _guideType != "SCALAR") then { + _oldData set [5, _guideType]; +}; + +if (_maxCalls != 0) then { + _oldData set [6, _maxCalls]; +}; + +publicVariable "Zen_Fire_Support_Action_Array_Global"; +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_FrameworkLibrary.sqf b/Zen_FrameworkFunctions/Zen_FrameworkLibrary.sqf new file mode 100644 index 0000000..7af8176 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_FrameworkLibrary.sqf @@ -0,0 +1,191 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#define ZEN_FMW_Array_RemoveIndexes(A, I) \ + { \ + 0 = [A, _x - _forEachIndex] call Zen_ArrayRemoveIndex; \ + } forEach I; + +#define ZEN_FMW_CFG_VehicleWeapons(V) \ + _Zen_WeaponsArray = []; \ + 0 = [_Zen_WeaponsArray, getArray (V >> "weapons")] call Zen_ArrayAppendNested; \ + { \ + 0 = [_Zen_WeaponsArray, getArray (V >> "weapons")] call Zen_ArrayAppendNested; \ + } forEach ("true" configClasses (V >> "turrets")); \ + { \ + _Zen_WeaponsArray = [_Zen_WeaponsArray, ZEN_FMW_ZAF_String(V)] call Zen_ArrayFilterCondition; \ + } forEach ["smoke", "horn", "laser", "flare", "throw", "put"]; + +#define ZEN_FMW_Code_ErrorExitVoid(F, D) \ + 0 = [F, D, _this] call Zen_PrintError; \ + call Zen_StackPrint; \ + call Zen_StackRemove; + +#define ZEN_FMW_Code_ErrorExitValue(F, D, V) \ + 0 = [F, D, _this] call Zen_PrintError; \ + call Zen_StackPrint; \ + call Zen_StackRemove; \ + V + +#define ZEN_FMW_Code_Error(F, D) \ + 0 = [F, D, _this] call Zen_PrintError; \ + call Zen_StackPrint; + +#define ZEN_FMW_Code_GiveLoadoutsOrdered(U, L, S) \ + { \ + 0 = [_x, S, (L select (_forEachIndex % (count L)))] call Zen_GiveLoadout; \ + } forEach ([U] call Zen_ConvertToObjectArray); + +#define ZEN_FMW_Code_Insertion(U, V, S, E) \ + _Zen_Vehicle = [S, V, (if (V isKindOf "Air") then {40} else {0})] call Zen_SpawnVehicle; \ + 0 = [_Zen_Vehicle] call Zen_SpawnVehicleCrew; \ + 0 = [U, _Zen_Vehicle] call Zen_MoveInVehicle; \ + 0 = [_Zen_Vehicle, [E, S], U] spawn Zen_OrderInsertion; + +#define ZEN_FMW_Code_InsertionPatrol(G, T, S, M) \ + _Zen_Vehicle = [S, T] call Zen_SpawnVehicle; \ + 0 = [_Zen_Vehicle] call Zen_SpawnVehicleCrew; \ + 0 = [G, _Zen_Vehicle] call Zen_MoveInVehicle; \ + 0 = [_Zen_Vehicle, [([M] call Zen_FindGroundPosition), _Zen_HeliStart], G, "normal", 40, "fastrope", true] spawn Zen_OrderInsertion; \ + 0 = [G, M] spawn { \ + waitUntil { \ + sleep 5; \ + ([_this select 0] call Zen_AreNotInVehicle) \ + }; \ + 0 = [_this select 0, _this select 1] spawn Zen_OrderInfantryPatrol; \ + }; + +#define ZEN_FMW_Code_SpawnMarker(M, N, S) \ + _Zen_GrpsArray = []; \ + for "_Z" from 1 to N do { \ + _Zen_Pos = [ M ] call Zen_FindGroundPosition; \ + _Zen_Group = [_Zen_Pos, S, "infantry", [4,6]] call Zen_SpawnInfantry; \ + _Zen_GrpsArray pushBack _Zen_Group; \ + }; \ + 0 = [_Zen_GrpsArray, S, ZEN_FMW_Loadout_StdInfantryPreset, false] call Zen_GiveLoadout; \ + 0 = [_Zen_GrpsArray, M] spawn Zen_OrderInfantryPatrol; + +#define ZEN_FMW_Code_SpawnPoint(C, D, N, S) \ + _Zen_GrpsArray = []; \ + for "_Z" from 1 to N do { \ + _Zen_Pos = [C, [0, D]] call Zen_FindGroundPosition; \ + _Zen_Group = [_Zen_Pos, S, "infantry", [4,6]] call Zen_SpawnInfantry; \ + _Zen_GrpsArray pushBack _Zen_Group; \ + }; \ + 0 = [_Zen_GrpsArray, S, ZEN_FMW_Loadout_StdInfantryPreset, false] call Zen_GiveLoadout; \ + 0 = [_Zen_GrpsArray, C, [0, D]] spawn Zen_OrderInfantryPatrol; + +#define ZEN_FMW_Code_SpawnPointBehind(START, END, MIND, MAXD, N, S) \ + _Zen_DirToSpawn = [START, END] call Zen_FindDirection; \ + _Zen_GrpsArray = []; \ + for "_i" from 1 to N do { \ + _Zen_SpawnPos = [END, [MIND, MAXD], 0, 1, 0, [_Zen_DirToSpawn - 90, _Zen_DirToSpawn + 90, "trig"]] call Zen_FindGroundPosition; \ + _Zen_Group = [_Zen_SpawnPos, S, "infantry", [4, 6]] call Zen_SpawnInfantry; \ + _Zen_GrpsArray pushBack _Zen_Group; \ + }; \ + 0 = [_Zen_GrpsArray, S, ZEN_FMW_Loadout_StdInfantryPreset, false] call Zen_GiveLoadout; \ + 0 = [_Zen_GrpsArray, END, [1, MAXD]] spawn Zen_OrderInfantryPatrol; \ + _Zen_DirToSpawn = nil; + +#define ZEN_FMW_Code_WaitDistanceGreater(A, B, D) \ + waitUntil { \ + sleep 2; \ + (([A, B] call Zen_Find2dDistance) > D) \ + }; + +#define ZEN_FMW_Code_WaitDistanceLess(A, B, D) \ + waitUntil { \ + sleep 2; \ + (([A, B] call Zen_Find2dDistance) < D) \ + }; + +#define ZEN_FMW_MP_REAll(F, A, I) \ + A I (missionNamespace getVariable F); \ + if (isMultiplayer) then { \ + Zen_MP_Closure_Packet = [F, A]; \ + publicVariable "Zen_MP_Closure_Packet"; \ + }; + +#define ZEN_FMW_MP_REClient(F, A, I, O) \ + if (local O) then { \ + A I (missionNamespace getVariable F); \ + } else { \ + if (isMultiplayer) then { \ + Zen_MP_Closure_Packet = [F, A]; \ + (owner O) publicVariableClient "Zen_MP_Closure_Packet"; \ + }; \ + }; + +#define ZEN_FMW_MP_RENonDedicated(F, A, I) \ + if (isMultiplayer) then { \ + Zen_MP_Closure_Packet = [F, A]; \ + publicVariable "Zen_MP_Closure_Packet"; \ + }; \ + if !(isDedicated) then { \ + A I (missionNamespace getVariable F); \ + }; + +#define ZEN_FMW_MP_REServerOnly(F, A, I) \ + if (isServer) then { \ + A I (missionNamespace getVariable F); \ + } else { \ + if (isMultiplayer) then { \ + Zen_MP_Closure_Packet = [F, A]; \ + publicVariableServer "Zen_MP_Closure_Packet"; \ + }; \ + }; + +#define ZEN_FMW_Math_DistLess2D(A, B, D) (([A, B] call Zen_Find2dDistance) < D) +#define ZEN_FMW_Math_DistGreater3D(A, B, D) ((([A] call Zen_ConvertToPosition) distance ([B] call Zen_ConvertToPosition)) > D) +#define ZEN_FMW_Math_DistGreater2D(A, B, D) (([A, B] call Zen_Find2dDistance) > D) +#define ZEN_FMW_Math_DistLess3D(A, B, D) ((([A] call Zen_ConvertToPosition) distance ([B] call Zen_ConvertToPosition)) < D) +#define ZEN_FMW_Math_RandomPoint(C, R) ([C, random R, random 360] call Zen_ExtendPosition) +#define ZEN_FMW_Math_RandomPointMin(C, S, E) ([C, S + random abs (E - S), random 360] call Zen_ExtendPosition) + +#define ZEN_FMW_Math_TerrainParallelCart(P, I) \ + _Zen_3dGradPolar = [1, [P] call Zen_FindTerrainGradient, 90 - ([P] call Zen_FindTerrainSlope)]; \ + I = ZEN_STD_Math_VectPolarCart(_Zen_3dGradPolar); + +#define ZEN_FMW_Math_TerrainGradientCart(P, I) \ + _Zen_2dGradCyl = [tan ([P] call Zen_FindTerrainSlope), [P] call Zen_FindTerrainGradient, 0]; \ + I = ZEN_STD_Math_VectCylCart(_Zen_2dGradCyl); + +#define ZEN_FMW_OBJ_DeleteDead(D) \ + { \ + _Zen_DeadUnit = _x; \ + _Zen_Delete = true; \ + { \ + if (isPlayer _x) then { \ + if ((_x distanceSqr _Zen_DeadUnit) < D*D) then { \ + _Zen_Delete = false; \ + }; \ + }; \ + } forEach allUnits; \ + if (_Zen_Delete) then { \ + deleteVehicle _x; \ + }; \ + } forEach allDead; + +#define ZEN_FMW_ZAS_ArrayLength {if (count (_this select 0) < count (_this select 1)) exitWith {-1}; (if (count (_this select 0) == count (_this select 1)) then {0} else {1})} +#define ZEN_FMW_ZAS_AlphaNumeric ({_2a = toArray (_this select 1); _c = 0; {if (_x < (_2a select _forEachIndex)) exitWith {_c = -1}; if (_x > (_2a select _forEachIndex)) exitWith {_c = 1};} forEach (toArray (_this select 0)); (_c)}) +#define ZEN_FMW_ZAS_DistFarNear(C) (compile format ["if ((_this select 0) distance %1 > (_this select 1) distance %1) exitWith {-1}; (if ((_this select 0) distance %1 == (_this select 1) distance %1) then {0} else {1})", C]) +#define ZEN_FMW_ZAS_DistNearFar(C) (compile format ["if ((_this select 0) distance %1 < (_this select 1) distance %1) exitWith {-1}; (if ((_this select 0) distance %1 == (_this select 1) distance %1) then {0} else {1})", C]) +#define ZEN_FMW_ZAS_IntInArray(I) (compile format["if (((_this select 0) select %1) < ((_this select 1) select %1)) exitWith {-1}; (if (((_this select 0) select %1) == ((_this select 1) select %1)) then {0} else {1})", I]) +#define ZEN_FMW_ZAS_StringLength {if (count toArray (_this select 0) < count toArray (_this select 1)) exitWith {-1}; (if (count toArray (_this select 0) == count toArray (_this select 1)) then {0} else {1})} + +#define ZEN_FMW_ZAF_NotString(S) (compile format ["(if (typeName _this == 'STRING') then {!(['%1', _this] call Zen_StringIsInString)} else {false})", S]) +#define ZEN_FMW_ZAF_String(S) (compile format ["(if (typeName _this == 'STRING') then {(['%1', _this] call Zen_StringIsInString)} else {false})", S]) +#define ZEN_FMW_ZAF_Type(T) (compile format ["((toLower typeName _this) == '%1')", (toLower T)]) + +#define ZEN_FMW_ZFGP_Beach 1, [3,50], 0, 0, 0, [2,30], [1,10], 0, [1,10,10] +#define ZEN_FMW_ZFGP_DeepSea 2, 0, 0, 0, 0, 0, 0, 0, [1, -50] +#define ZEN_FMW_ZFGP_Flat 1, 0, 0, 0, 0, 0, [1,10] +#define ZEN_FMW_ZFGP_Forest 1, [3,100], 0, [1,0,20], 0, [1,50], 0, [2,[4, -1, -1], 20] +#define ZEN_FMW_ZFGP_Hill 1, 0, 0, 0, 0, [1,25], [2,20], 0, [2,25,10] +#define ZEN_FMW_ZFGP_LandingZone 1, [1,100], 0, [1,0,20], 0, [1,25], [1,20], [1,[0, 1, -1], 20] +#define ZEN_FMW_ZFGP_NotForest 1, 0, 0, 0, 0, 0, 0, [1,[1, -1, -1], 20] +#define ZEN_FMW_ZFGP_Urban 1, [2, 0], 0, [2,1,25], 0, [1,100], 0, [1,[1,-1,-1], 20] + +#define ZEN_FMW_Loadout_DefaultPreset (["Rifleman", "AT Rifleman", "Assistant AA", "Assistant AT", "Assistant AR", "Team Leader", "Squad Leader", "Grenadier", "Auto Rifleman", "Marksman", "Medic", "AA Specialist", "AT Specialist", "Sapper", "Miner", "EOD Specialist"]) +#define ZEN_FMW_Loadout_StdInfantryPreset (["Rifleman", "Rifleman", "Rifleman", "AT Rifleman", "Assistant AR", "Team Leader", "Squad Leader", "Grenadier", "Grenadier", "Auto Rifleman", "Auto Rifleman", "Marksman", "Medic"]) diff --git a/Zen_FrameworkFunctions/Zen_InitHeader.sqf b/Zen_FrameworkFunctions/Zen_InitHeader.sqf new file mode 100644 index 0000000..7587adf --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_InitHeader.sqf @@ -0,0 +1,88 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +// This folder contains framework source code version 8/5/15 + +#include "Zen_StandardLibrary.sqf" +#include "Zen_FrameworkLibrary.sqf" + +_Zen_Is_JIP = false; +if (!isServer && {isNull player}) then { + _Zen_Is_JIP = true; + waitUntil { + (!(isNull player) && {player == player}) + }; +}; +call compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DataFunctions\Zen_DataFunctionsCompile.sqf"; +call compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_FireSupportSystem\Zen_FireSupportSystemCompile.sqf"; +call compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_LoadoutFunctions\Zen_LoadoutFunctionsCompile.sqf"; +call compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_MathFunctions\Zen_MathFunctionsCompile.sqf"; +call compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_MiscFunctions\Zen_MiscFunctionsCompile.sqf"; +call compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_ObjectFunctions\Zen_ObjectFunctionsCompile.sqf"; +call compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_ObjectiveSystem\Zen_ObjectiveSystemCompile.sqf"; +call compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_OrdersFunctions\Zen_OrdersFunctionsCompile.sqf"; +call compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_PositionFunctions\Zen_PositionFunctionsCompile.sqf"; +call compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_SpawningFunctions\Zen_SpawningFunctionsCompile.sqf"; +call compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_TaskSystem\Zen_TaskSystemCompile.sqf"; +call compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_TriggerFunctions\Zen_TriggerFunctionsCompile.sqf"; +Zen_StackAdd = { + (if (isNil "_Zen_stack_Trace") then { + ([[(_this select 0), (_this select 1), time]]) + } else { + _Zen_stack_Trace pushBack [(_this select 0), (_this select 1), time]; + (_Zen_stack_Trace) + }) +}; +Zen_StackPrint = { + for "_i" from (count _Zen_stack_Trace - 1) to 0 step -1 do { + if (Zen_Print_All_Errors) then { + systemChat str (_Zen_stack_Trace select _i); + }; + diag_log (_Zen_stack_Trace select _i); + }; +}; +Zen_StackRemove = { + _Zen_stack_Trace resize ((count _Zen_stack_Trace) - 1); +}; +Zen_Debug_Arguments = true; +Zen_Print_All_Errors = true; +Zen_MP_Closure_Packet = []; +"Zen_MP_Closure_Packet" addPublicVariableEventHandler { + private ["_this", "_code", "_args"]; + _this = _this select 1; + _code = _this select 0; + if (count _this > 1) then { + _args = _this select 1; + } else { + _args = []; + }; + if ((typeName _code) == "STRING") then { + if !(isNil {(missionNamespace getVariable _code)}) then { + 0 = _args spawn (missionNamespace getVariable _code); + } else { + if (isServer) then { + 0 = ["Zen_MP_Closure_Packet", "Given function string is undefined", _code] call Zen_PrintError; + } else { + Zen_MP_Closure_Packet = ["Zen_PrintError", ["Zen_MP_Closure_Packet", "Given function string is undefined", _code]]; + publicVariableServer "Zen_MP_Closure_Packet"; + }; + }; + } else { + 0 = _args spawn _code; + }; +}; +finishMissionInit; +if ({side _x == east} count allUnits == 0) then { + createCenter east; +}; +if ({side _x == west} count allUnits == 0) then { + createCenter west; +}; +if ({side _x == resistance} count allUnits == 0) then { + createCenter resistance; +}; +if ({side _x == civilian} count allUnits == 0) then { + createCenter civilian; +}; +_Zen_Stack_Trace = ["Init"]; diff --git a/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_AddGiveMagazine.sqf b/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_AddGiveMagazine.sqf new file mode 100644 index 0000000..395ac27 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_AddGiveMagazine.sqf @@ -0,0 +1,29 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" + +_Zen_stack_Trace = ["Zen_AddGiveMagazine", _this] call Zen_StackAdd; +private ["_units", "_sendPacket"]; + +if !([_this, [["VOID"], ["BOOL"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_units = [(_this select 0)] call Zen_ConvertToObjectArray; +ZEN_STD_Parse_GetSetArgumentDefault(_sendPacket, 1, true, false) + +if (!isDedicated && hasInterface) then { + { + 0 = _x addAction ["Give Magazine", Zen_GiveMagazine, 0, 1, false, true, "", "((_target == _this) && !(surfaceIsWater (getPosATL _this)) && (vehicle _this == _this) && {(({(side _x == side _this) && ([_this, _x, 120] call Zen_IsFacing)} count (((getPosATL _target) nearEntities ['Man', 3]) - [_this])) > 0)})"]; + } forEach _units; +}; + +if (isMultiplayer && {_sendPacket}) then { + Zen_MP_Closure_Packet = ["Zen_AddGiveMagazine", (_this)]; + publicVariable "Zen_MP_Closure_Packet"; +}; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_AddLoadoutDialog.sqf b/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_AddLoadoutDialog.sqf new file mode 100644 index 0000000..fc2fd7b --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_AddLoadoutDialog.sqf @@ -0,0 +1,44 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" + +_Zen_stack_Trace = ["Zen_AddLoadoutDialog", _this] call Zen_StackAdd; +private ["_objects", "_kits", "_maxUses", "_sendPacket", "_id"]; + +if !([_this, [["ARRAY", "OBJECT"], ["ARRAY"], ["SCALAR"], ["BOOL"]], [["OBJECT"], ["STRING"]], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_objects = _this select 0; +_kits = _this select 1; + +_maxUses = -1; + +if (count _this > 2) then { + _maxUses = _this select 2; +} else { + _this set [2, -1]; +}; + +ZEN_STD_Parse_GetSetArgumentDefault(_sendPacket, 3, true, false) + +if (typeName _objects != "ARRAY") then { + _objects = [_objects]; +}; + +if (!isDedicated && hasInterface) then { + { + _id = _x addAction ["Select Loadout", Zen_ShowLoadoutDialog, _kits, 1, false, true, "", "(alive _target && {((_target distance _this) < (1 + (((boundingBoxReal _target) select 0) distance ((boundingBoxReal _target) select 1)) / 2))})"]; + Zen_Loadout_Action_Array_Local pushBack [_id, _maxUses, 0]; + } forEach _objects; +}; + +if (isMultiplayer && {_sendPacket}) then { + Zen_MP_Closure_Packet = ["Zen_AddLoadoutDialog", _this]; + publicVariable "Zen_MP_Closure_Packet"; +}; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_AddRepackMagazines.sqf b/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_AddRepackMagazines.sqf new file mode 100644 index 0000000..69649ff --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_AddRepackMagazines.sqf @@ -0,0 +1,29 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" + +_Zen_stack_Trace = ["Zen_AddRepackMagazines", _this] call Zen_StackAdd; +private ["_units", "_sendPacket"]; + +if !([_this, [["VOID"], ["BOOL"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_units = [(_this select 0)] call Zen_ConvertToObjectArray; +ZEN_STD_Parse_GetSetArgumentDefault(_sendPacket, 1, true, false) + +if (!isDedicated && hasInterface) then { + { + 0 = _x addAction ["Repack Magazines", Zen_RepackMagazines, 0, 1, false, true, "", "(_target == _this) && !(surfaceIsWater (getPosATL _this)) && ((vehicle _this) == _this)"]; + } forEach _units; +}; + +if (isMultiplayer && {_sendPacket}) then { + Zen_MP_Closure_Packet = ["Zen_AddRepackMagazines", (_this)]; + publicVariable "Zen_MP_Closure_Packet"; +}; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_CreateLoadout.sqf b/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_CreateLoadout.sqf new file mode 100644 index 0000000..6441ede --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_CreateLoadout.sqf @@ -0,0 +1,34 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_CreateLoadout", _this] call Zen_StackAdd; +private ["_loadoutData", "_nameString", "_oldData"]; + +if !([_this, [["ARRAY"], ["STRING"]], [["ARRAY"]], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + ("") +}; + +_loadoutData = _this select 0; + +if (count _this > 1) then { + _nameString = _this select 1; +} else { + _nameString = format ["Zen_loadout_%1", ([10] call Zen_StringGenerateRandom)]; +}; + +_oldData = [_nameString, false] call Zen_GetLoadoutData; + +if (count _oldData > 0) exitWith { + 0 = ["Zen_CreateLoadout", "Given loadout name is already used, use Zen_UpdateLoadout", _this] call Zen_PrintError; + call Zen_StackPrint; + call Zen_StackRemove; + (_nameString) +}; + +Zen_Loadout_Array_Global pushBack [_nameString, _loadoutData]; +publicVariable "Zen_Loadout_Array_Global"; + +call Zen_StackRemove; +(_nameString) diff --git a/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_FrameworkLibrary.sqf b/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_FrameworkLibrary.sqf new file mode 100644 index 0000000..7af8176 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_FrameworkLibrary.sqf @@ -0,0 +1,191 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#define ZEN_FMW_Array_RemoveIndexes(A, I) \ + { \ + 0 = [A, _x - _forEachIndex] call Zen_ArrayRemoveIndex; \ + } forEach I; + +#define ZEN_FMW_CFG_VehicleWeapons(V) \ + _Zen_WeaponsArray = []; \ + 0 = [_Zen_WeaponsArray, getArray (V >> "weapons")] call Zen_ArrayAppendNested; \ + { \ + 0 = [_Zen_WeaponsArray, getArray (V >> "weapons")] call Zen_ArrayAppendNested; \ + } forEach ("true" configClasses (V >> "turrets")); \ + { \ + _Zen_WeaponsArray = [_Zen_WeaponsArray, ZEN_FMW_ZAF_String(V)] call Zen_ArrayFilterCondition; \ + } forEach ["smoke", "horn", "laser", "flare", "throw", "put"]; + +#define ZEN_FMW_Code_ErrorExitVoid(F, D) \ + 0 = [F, D, _this] call Zen_PrintError; \ + call Zen_StackPrint; \ + call Zen_StackRemove; + +#define ZEN_FMW_Code_ErrorExitValue(F, D, V) \ + 0 = [F, D, _this] call Zen_PrintError; \ + call Zen_StackPrint; \ + call Zen_StackRemove; \ + V + +#define ZEN_FMW_Code_Error(F, D) \ + 0 = [F, D, _this] call Zen_PrintError; \ + call Zen_StackPrint; + +#define ZEN_FMW_Code_GiveLoadoutsOrdered(U, L, S) \ + { \ + 0 = [_x, S, (L select (_forEachIndex % (count L)))] call Zen_GiveLoadout; \ + } forEach ([U] call Zen_ConvertToObjectArray); + +#define ZEN_FMW_Code_Insertion(U, V, S, E) \ + _Zen_Vehicle = [S, V, (if (V isKindOf "Air") then {40} else {0})] call Zen_SpawnVehicle; \ + 0 = [_Zen_Vehicle] call Zen_SpawnVehicleCrew; \ + 0 = [U, _Zen_Vehicle] call Zen_MoveInVehicle; \ + 0 = [_Zen_Vehicle, [E, S], U] spawn Zen_OrderInsertion; + +#define ZEN_FMW_Code_InsertionPatrol(G, T, S, M) \ + _Zen_Vehicle = [S, T] call Zen_SpawnVehicle; \ + 0 = [_Zen_Vehicle] call Zen_SpawnVehicleCrew; \ + 0 = [G, _Zen_Vehicle] call Zen_MoveInVehicle; \ + 0 = [_Zen_Vehicle, [([M] call Zen_FindGroundPosition), _Zen_HeliStart], G, "normal", 40, "fastrope", true] spawn Zen_OrderInsertion; \ + 0 = [G, M] spawn { \ + waitUntil { \ + sleep 5; \ + ([_this select 0] call Zen_AreNotInVehicle) \ + }; \ + 0 = [_this select 0, _this select 1] spawn Zen_OrderInfantryPatrol; \ + }; + +#define ZEN_FMW_Code_SpawnMarker(M, N, S) \ + _Zen_GrpsArray = []; \ + for "_Z" from 1 to N do { \ + _Zen_Pos = [ M ] call Zen_FindGroundPosition; \ + _Zen_Group = [_Zen_Pos, S, "infantry", [4,6]] call Zen_SpawnInfantry; \ + _Zen_GrpsArray pushBack _Zen_Group; \ + }; \ + 0 = [_Zen_GrpsArray, S, ZEN_FMW_Loadout_StdInfantryPreset, false] call Zen_GiveLoadout; \ + 0 = [_Zen_GrpsArray, M] spawn Zen_OrderInfantryPatrol; + +#define ZEN_FMW_Code_SpawnPoint(C, D, N, S) \ + _Zen_GrpsArray = []; \ + for "_Z" from 1 to N do { \ + _Zen_Pos = [C, [0, D]] call Zen_FindGroundPosition; \ + _Zen_Group = [_Zen_Pos, S, "infantry", [4,6]] call Zen_SpawnInfantry; \ + _Zen_GrpsArray pushBack _Zen_Group; \ + }; \ + 0 = [_Zen_GrpsArray, S, ZEN_FMW_Loadout_StdInfantryPreset, false] call Zen_GiveLoadout; \ + 0 = [_Zen_GrpsArray, C, [0, D]] spawn Zen_OrderInfantryPatrol; + +#define ZEN_FMW_Code_SpawnPointBehind(START, END, MIND, MAXD, N, S) \ + _Zen_DirToSpawn = [START, END] call Zen_FindDirection; \ + _Zen_GrpsArray = []; \ + for "_i" from 1 to N do { \ + _Zen_SpawnPos = [END, [MIND, MAXD], 0, 1, 0, [_Zen_DirToSpawn - 90, _Zen_DirToSpawn + 90, "trig"]] call Zen_FindGroundPosition; \ + _Zen_Group = [_Zen_SpawnPos, S, "infantry", [4, 6]] call Zen_SpawnInfantry; \ + _Zen_GrpsArray pushBack _Zen_Group; \ + }; \ + 0 = [_Zen_GrpsArray, S, ZEN_FMW_Loadout_StdInfantryPreset, false] call Zen_GiveLoadout; \ + 0 = [_Zen_GrpsArray, END, [1, MAXD]] spawn Zen_OrderInfantryPatrol; \ + _Zen_DirToSpawn = nil; + +#define ZEN_FMW_Code_WaitDistanceGreater(A, B, D) \ + waitUntil { \ + sleep 2; \ + (([A, B] call Zen_Find2dDistance) > D) \ + }; + +#define ZEN_FMW_Code_WaitDistanceLess(A, B, D) \ + waitUntil { \ + sleep 2; \ + (([A, B] call Zen_Find2dDistance) < D) \ + }; + +#define ZEN_FMW_MP_REAll(F, A, I) \ + A I (missionNamespace getVariable F); \ + if (isMultiplayer) then { \ + Zen_MP_Closure_Packet = [F, A]; \ + publicVariable "Zen_MP_Closure_Packet"; \ + }; + +#define ZEN_FMW_MP_REClient(F, A, I, O) \ + if (local O) then { \ + A I (missionNamespace getVariable F); \ + } else { \ + if (isMultiplayer) then { \ + Zen_MP_Closure_Packet = [F, A]; \ + (owner O) publicVariableClient "Zen_MP_Closure_Packet"; \ + }; \ + }; + +#define ZEN_FMW_MP_RENonDedicated(F, A, I) \ + if (isMultiplayer) then { \ + Zen_MP_Closure_Packet = [F, A]; \ + publicVariable "Zen_MP_Closure_Packet"; \ + }; \ + if !(isDedicated) then { \ + A I (missionNamespace getVariable F); \ + }; + +#define ZEN_FMW_MP_REServerOnly(F, A, I) \ + if (isServer) then { \ + A I (missionNamespace getVariable F); \ + } else { \ + if (isMultiplayer) then { \ + Zen_MP_Closure_Packet = [F, A]; \ + publicVariableServer "Zen_MP_Closure_Packet"; \ + }; \ + }; + +#define ZEN_FMW_Math_DistLess2D(A, B, D) (([A, B] call Zen_Find2dDistance) < D) +#define ZEN_FMW_Math_DistGreater3D(A, B, D) ((([A] call Zen_ConvertToPosition) distance ([B] call Zen_ConvertToPosition)) > D) +#define ZEN_FMW_Math_DistGreater2D(A, B, D) (([A, B] call Zen_Find2dDistance) > D) +#define ZEN_FMW_Math_DistLess3D(A, B, D) ((([A] call Zen_ConvertToPosition) distance ([B] call Zen_ConvertToPosition)) < D) +#define ZEN_FMW_Math_RandomPoint(C, R) ([C, random R, random 360] call Zen_ExtendPosition) +#define ZEN_FMW_Math_RandomPointMin(C, S, E) ([C, S + random abs (E - S), random 360] call Zen_ExtendPosition) + +#define ZEN_FMW_Math_TerrainParallelCart(P, I) \ + _Zen_3dGradPolar = [1, [P] call Zen_FindTerrainGradient, 90 - ([P] call Zen_FindTerrainSlope)]; \ + I = ZEN_STD_Math_VectPolarCart(_Zen_3dGradPolar); + +#define ZEN_FMW_Math_TerrainGradientCart(P, I) \ + _Zen_2dGradCyl = [tan ([P] call Zen_FindTerrainSlope), [P] call Zen_FindTerrainGradient, 0]; \ + I = ZEN_STD_Math_VectCylCart(_Zen_2dGradCyl); + +#define ZEN_FMW_OBJ_DeleteDead(D) \ + { \ + _Zen_DeadUnit = _x; \ + _Zen_Delete = true; \ + { \ + if (isPlayer _x) then { \ + if ((_x distanceSqr _Zen_DeadUnit) < D*D) then { \ + _Zen_Delete = false; \ + }; \ + }; \ + } forEach allUnits; \ + if (_Zen_Delete) then { \ + deleteVehicle _x; \ + }; \ + } forEach allDead; + +#define ZEN_FMW_ZAS_ArrayLength {if (count (_this select 0) < count (_this select 1)) exitWith {-1}; (if (count (_this select 0) == count (_this select 1)) then {0} else {1})} +#define ZEN_FMW_ZAS_AlphaNumeric ({_2a = toArray (_this select 1); _c = 0; {if (_x < (_2a select _forEachIndex)) exitWith {_c = -1}; if (_x > (_2a select _forEachIndex)) exitWith {_c = 1};} forEach (toArray (_this select 0)); (_c)}) +#define ZEN_FMW_ZAS_DistFarNear(C) (compile format ["if ((_this select 0) distance %1 > (_this select 1) distance %1) exitWith {-1}; (if ((_this select 0) distance %1 == (_this select 1) distance %1) then {0} else {1})", C]) +#define ZEN_FMW_ZAS_DistNearFar(C) (compile format ["if ((_this select 0) distance %1 < (_this select 1) distance %1) exitWith {-1}; (if ((_this select 0) distance %1 == (_this select 1) distance %1) then {0} else {1})", C]) +#define ZEN_FMW_ZAS_IntInArray(I) (compile format["if (((_this select 0) select %1) < ((_this select 1) select %1)) exitWith {-1}; (if (((_this select 0) select %1) == ((_this select 1) select %1)) then {0} else {1})", I]) +#define ZEN_FMW_ZAS_StringLength {if (count toArray (_this select 0) < count toArray (_this select 1)) exitWith {-1}; (if (count toArray (_this select 0) == count toArray (_this select 1)) then {0} else {1})} + +#define ZEN_FMW_ZAF_NotString(S) (compile format ["(if (typeName _this == 'STRING') then {!(['%1', _this] call Zen_StringIsInString)} else {false})", S]) +#define ZEN_FMW_ZAF_String(S) (compile format ["(if (typeName _this == 'STRING') then {(['%1', _this] call Zen_StringIsInString)} else {false})", S]) +#define ZEN_FMW_ZAF_Type(T) (compile format ["((toLower typeName _this) == '%1')", (toLower T)]) + +#define ZEN_FMW_ZFGP_Beach 1, [3,50], 0, 0, 0, [2,30], [1,10], 0, [1,10,10] +#define ZEN_FMW_ZFGP_DeepSea 2, 0, 0, 0, 0, 0, 0, 0, [1, -50] +#define ZEN_FMW_ZFGP_Flat 1, 0, 0, 0, 0, 0, [1,10] +#define ZEN_FMW_ZFGP_Forest 1, [3,100], 0, [1,0,20], 0, [1,50], 0, [2,[4, -1, -1], 20] +#define ZEN_FMW_ZFGP_Hill 1, 0, 0, 0, 0, [1,25], [2,20], 0, [2,25,10] +#define ZEN_FMW_ZFGP_LandingZone 1, [1,100], 0, [1,0,20], 0, [1,25], [1,20], [1,[0, 1, -1], 20] +#define ZEN_FMW_ZFGP_NotForest 1, 0, 0, 0, 0, 0, 0, [1,[1, -1, -1], 20] +#define ZEN_FMW_ZFGP_Urban 1, [2, 0], 0, [2,1,25], 0, [1,100], 0, [1,[1,-1,-1], 20] + +#define ZEN_FMW_Loadout_DefaultPreset (["Rifleman", "AT Rifleman", "Assistant AA", "Assistant AT", "Assistant AR", "Team Leader", "Squad Leader", "Grenadier", "Auto Rifleman", "Marksman", "Medic", "AA Specialist", "AT Specialist", "Sapper", "Miner", "EOD Specialist"]) +#define ZEN_FMW_Loadout_StdInfantryPreset (["Rifleman", "Rifleman", "Rifleman", "AT Rifleman", "Assistant AR", "Team Leader", "Squad Leader", "Grenadier", "Grenadier", "Auto Rifleman", "Auto Rifleman", "Marksman", "Medic"]) diff --git a/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_GetLoadoutData.sqf b/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_GetLoadoutData.sqf new file mode 100644 index 0000000..20ddeb6 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_GetLoadoutData.sqf @@ -0,0 +1,34 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_GetLoadoutData", _this] call Zen_StackAdd; +private ["_nameString", "_loadout", "_reportError"]; + +if !([_this, [["STRING"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + ([]) +}; + +_nameString = _this select 0; + +_reportError = true; +if (count _this > 1) then { + _reportError = _this select 1; +}; + +_loadout = []; + +{ + if ([(_x select 0), _nameString] call Zen_ValuesAreEqual) exitWith { + _loadout =+ _x; + }; +} forEach Zen_Loadout_Array_Global; + +if ((count _loadout == 0) && {_reportError}) then { + 0 = ["Zen_GetLoadoutData", "Given loadout does not exist", _this] call Zen_PrintError; + call Zen_StackPrint; +}; + +call Zen_StackRemove; +(_loadout) diff --git a/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_GetUnitLoadout.sqf b/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_GetUnitLoadout.sqf new file mode 100644 index 0000000..8b08c08 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_GetUnitLoadout.sqf @@ -0,0 +1,66 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#define ADD_LOADED_MAG(CMD) _weaponMag = CMD _unit; \ +if (count _weaponMag > 0) then { \ + _magsCargo pushBack [_weaponMag select 0, 1]; \ +}; \ + +_Zen_stack_Trace = ["Zen_GetUnitLoadout", _this] call Zen_StackAdd; +private ["_unit", "_uniqueMags", "_uniqueMagCounts", "_mag", "_magsCargo", "_weaponMag"]; + +if !([_this, [["OBJECT"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + ([]) +}; + +_unit = _this select 0; + +_uniqueMags = []; +_uniqueMagCounts = []; + +{ + _mag = _x; + if !(_x in _uniqueMags) then { + _uniqueMags pushBack _x; + _uniqueMagCounts pushBack ({_x == _mag} count (magazines _unit)); + }; +} forEach (magazines _unit); + +_magsCargo = []; + +{ + if ((_uniqueMagCounts select _forEachIndex) > 0) then { + _magsCargo pushBack [_x, (_uniqueMagCounts select _forEachIndex)]; + }; +} forEach _uniqueMags; + +ADD_LOADED_MAG(primaryWeaponMagazine) +ADD_LOADED_MAG(secondaryWeaponMagazine) +ADD_LOADED_MAG(handgunMagazine) + +{ + if (["Laserdesignator", _x] call Zen_StringIsInString) exitWith { + _magsCargo pushBack ["LaserBatteries", 1]; + }; +} forEach (weapons _unit); + +_loadoutData = [ + (if (uniform _unit != "") then {["uniform", uniform _unit]} else {0}), + (if (vest _unit != "") then {["vest", vest _unit]} else {0}), + (if (backpack _unit != "") then {["backpack", backpack _unit]} else {0}), + (if (headgear _unit != "") then {["headgear", headgear _unit]} else {0}), + (if (goggles _unit != "") then {["goggles", goggles _unit]} else {0}), + (if (count assignedItems _unit > 0) then {["assignedItems", (assignedItems _unit) - ["Binocular", "Rangefinder", "Laserdesignator"]]} else {0}), + (if (count weapons _unit > 0) then {["weapons", weapons _unit]} else {0}), + (if (count _magsCargo > 0) then {["magazines", _magsCargo]} else {0}), + (if (count items _unit > 0) then {["items", (items _unit) - [""]]} else {0}), + (if ({_x != ""} count primaryWeaponItems _unit > 0) then {["primaryAttachments", (primaryWeaponItems _unit) - [""]]} else {0}), + (if ({_x != ""} count secondaryWeaponItems _unit > 0) then {["secondaryAttachments", (secondaryWeaponItems _unit) - [""]]} else {0}), + (if ({_x != ""} count handgunItems _unit > 0) then {["handgunAttachments", (handgunItems _unit) - [""]]} else {0}) +]; + +0 = [_loadoutData, 0] call Zen_ArrayRemoveValue; +call Zen_StackRemove; +(_loadoutData) diff --git a/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_GiveLoadout.sqf b/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_GiveLoadout.sqf new file mode 100644 index 0000000..9b477fc --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_GiveLoadout.sqf @@ -0,0 +1,57 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" +#include "Zen_FrameworkLibrary.sqf" + +_Zen_stack_Trace = ["Zen_GiveLoadout", _this] call Zen_StackAdd; +private ["_units", "_kits", "_givingType", "_side", "_sendPacket"]; + +if !([_this, [["VOID"], ["SIDE", "STRING"], ["ARRAY", "STRING"], ["BOOL", "STRING"], ["BOOL"]], [[], [], ["STRING"]], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_units = _this select 0; +_side = _this select 1; + +_kits = ""; +if (count _this > 2) then { + _kits = _this select 2; + ZEN_STD_Parse_ToArray(_kits) +}; + +if (typeName _side == "SIDE") then { + ZEN_STD_Parse_GetArgumentDefault(_sendPacket, 3, true) + + switch (_side) do { + case west: { + 0 = ([_units] + [_kits, _sendPacket]) call Zen_GiveLoadoutBlufor; + }; + case east: { + 0 = ([_units] + [_kits, _sendPacket]) call Zen_GiveLoadoutOpfor; + }; + case resistance: { + 0 = ([_units] + [_kits, _sendPacket]) call Zen_GiveLoadoutIndfor; + }; + case civilian: { + 0 = [_units, "civilian"] call Zen_GiveLoadoutBlufor; + }; + default { + 0 = ["Zen_GiveLoadout", "Invalid side given", _this] call Zen_PrintError; + call Zen_StackPrint; + }; + }; +} else { + ZEN_STD_Parse_GetArgumentDefault(_givingType, 3, "complete") + ZEN_STD_Parse_GetArgumentDefault(_sendPacket, 4, true) + + if (count _this < 3) then { + ZEN_FMW_Code_Error("Zen_GiveLoadout", "Custom type requires custom loadouts") + } else { + 0 = ([_units] + [_kits, _givingType, _sendPacket]) call Zen_GiveLoadoutCustom; + }; +}; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_GiveLoadoutBlufor.sqf b/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_GiveLoadoutBlufor.sqf new file mode 100644 index 0000000..8cbe70d --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_GiveLoadoutBlufor.sqf @@ -0,0 +1,688 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" +#include "Zen_FrameworkLibrary.sqf" + +#define RECON_VEST ["V_Chestrig_khk", "V_Chestrig_rgr", "V_Chestrig_oli", "V_TacVest_camo", "V_TacVest_khk", "V_TacVest_oli"] +#define RECON_HEADGEAR ["H_MilCap_mcamo", "H_Watchcap_sgg", "H_Bandanna_mcamo", "H_Cap_tan_specops_US", "H_Cap_oli_hs", "H_HelmetB_light_snakeskin", "H_HelmetB_light_desert", "H_HelmetB_light_black", "H_HelmetB_light_sand"] +#define STD_UNIFORM ["U_B_CombatUniform_mcam", "U_B_CombatUniform_mcam_tshirt", "U_B_CombatUniform_mcam_vest", "U_B_CombatUniform_mcam_worn", "U_B_CTRG_1", "U_B_CTRG_2", "U_B_CTRG_3", "U_B_SpecopsUniform_sgg"] +#define STD_VEST ["V_PlateCarrier1_blk", "V_PlateCarrier1_rgr", "V_PlateCarrier2_rgr", "V_PlateCarrier3_rgr", "V_PlateCarrierGL_rgr", "V_PlateCarrierL_CTRG", "V_PlateCarrierH_CTRG"] +#define STD_RUCK ["B_AssaultPack_mcamo", "B_Kitbag_mcamo", "B_Bergen_mcamo", "B_TacticalPack_mcamo", "B_Carryall_mcamo", "B_OutdoorPack_tan", "B_Kitbag_cbr", "B_Carryall_cbr"] +#define STD_HEADGEAR ["H_HelmetB_light", "H_HelmetB_light_snakeskin", "H_HelmetB_light_snakeskin", "H_HelmetB_light_desert", "H_HelmetB_light_black", "H_HelmetB_light_sand"] +#define STD_GOGGLES ["G_Bandanna_oli", "G_Bandanna_khk", "G_Bandanna_tan", "G_Tactical_Clear", "G_Lowprofile", "G_Tactical_Black", "", "", "", "", ""] +#define SMOKE ["SmokeShell", "SmokeShellYellow", "SmokeShellGreen", "SmokeShellRed", "SmokeShellPurple", "SmokeShellOrange", "SmokeShellBlue"] +#define CHEMLIGHT ["Chemlight_green", "Chemlight_red", "Chemlight_blue", "Chemlight_yellow"] + +#define GUER_WEAPON ["arifle_TRG21_F", "arifle_TRG20_F", "srifle_EBR_F", "arifle_Mk20_F", "arifle_Mk20_plain_F", "arifle_Mk20C_plain_F", "LMG_Zafir_F", "LMG_Mk200_F"] +#define GUER_UNIFORM ["U_IG_Guerilla1_1", "U_IG_Guerilla2_2", "U_IG_Guerilla2_3", "U_IG_Guerilla3_1", "U_IG_Guerilla3_2", "U_IG_Guerilla2_1", "U_BG_Guerilla1_1", "U_BG_Guerilla2_1", "U_BG_Guerilla2_2", "U_BG_Guerilla2_3", "U_BG_Guerilla3_1", "U_BG_Guerilla3_2", "U_C_Poor_1", "U_C_Poor_2", "U_C_Poloshirt_burgundy", "U_C_Poloshirt_redwhite", "U_IG_Guerrilla_6_1", "U_BG_leader", "U_I_G_Story_Protagonist_F"] +#define GUER_VEST ["V_BandollierB_khk", "V_BandollierB_cbr", "V_BandollierB_rgr", "V_BandollierB_blk", "V_BandollierB_oli", "V_TacVest_khk", "V_TacVest_brn", "V_TacVest_oli", "V_TacVest_blk", "V_TacVest_camo", "V_TacVest_blk_POLICE", "V_TacVestIR_blk", "V_TacVestCamo_khk", "V_Chestrig_khk", "V_Chestrig_rgr", "V_Chestrig_blk", "V_Chestrig_oli", "V_PlateCarrierIA1_dgtl"] +#define GUER_RUCK ["B_AssaultPack_khk", "B_AssaultPack_rgr", "B_AssaultPack_sgg", "B_AssaultPack_cbr", "B_FieldPack_khk", "B_FieldPack_oli", "B_FieldPack_cbr", "B_OutdoorPack_tan", "B_HuntingBackpack", "B_Kitbag_sgg", "B_Kitbag_cbr", "B_Bergen_sgg", "B_Bergen_mcamo", "B_Bergen_rgr", "B_BergenG", "B_BergenC_grn", "B_Carryall_oli", "B_Carryall_khk", "B_Carryall_cbr", "B_TacticalPack_rgr", "B_TacticalPack_oli"] +#define GUER_HEADGEAR ["H_Booniehat_khk", "H_Booniehat_grn", "H_Booniehat_tan", "H_Booniehat_dirty", "H_Booniehat_khk_hs", "H_MilCap_gry", "H_Cap_red", "H_Cap_blu", "H_Cap_oli", "H_Cap_tan", "H_Cap_blk", "H_Cap_grn", "H_Cap_grn_BI", "H_Cap_blk_Raven", "H_Cap_brn_SERO", "H_Cap_blk_ION", "H_Cap_oli_hs", "H_Shemag_khk", "H_Shemag_tan", "H_Shemag_olive", "H_ShemagOpen_khk", "H_ShemagOpen_tan", "H_Shemag_olive_hs", "H_Beret_blk", "H_Beret_blk_POLICE", "H_Beret_grn", "H_Beret_02", "H_Hat_blue", "H_Hat_brown", "H_Hat_camo", "H_Hat_grey", "H_Hat_checker", "H_Hat_tan", "H_StrawHat", "H_StrawHat_dark", "H_Watchcap_blk", "H_Watchcap_khk", "H_Watchcap_camo", "H_Watchcap_sgg", "H_Bandanna_surfer", "H_Bandanna_khk", "H_Bandanna_cbr", "H_Bandanna_sgg", "H_Bandanna_gry", "H_Bandanna_camo", "H_Bandanna_khk_hs", "H_Cap_press", "H_Cap_marshal", "H_Cap_police", "H_Watchcap_cbr", "H_Booniehat_oli"] +#define GUER_GOGGLES ["G_Bandanna_blk", "G_Bandanna_oli", "G_Bandanna_khk", "G_Bandanna_tan", "G_Bandanna_beast", "G_Bandanna_shades", "G_Bandanna_sport", "G_Bandanna_aviator", "G_Balaclava_blk", "G_Balaclava_oli", "G_Balaclava_combat", "G_Balaclava_lowprofile", "G_Aviator", "G_Tactical_Clear", "G_Tactical_Black"] + +#define CIV_UNIFORM ["U_C_Poloshirt_blue", "U_C_Poloshirt_burgundy", "U_C_Poloshirt_stripped", "U_C_Poloshirt_tricolour", "U_C_Poloshirt_salmon", "U_C_Poloshirt_redwhite", "U_C_Poor_1", "U_C_Poor_2", "U_C_WorkerCoveralls", "U_C_Poor_shorts_1", "U_C_Commoner_shorts", "U_C_ShirtSurfer_shorts", "U_C_TeeSurfer_shorts_1", "U_C_TeeSurfer_shorts_2"] +#define CIV_HEADGEAR ["H_Cap_red", "H_Cap_blu", "H_Cap_brn_SERO", "H_Booniehat_grn", "H_Booniehat_tan", "H_Booniehat_dirty", "H_Booniehat_dgtl", "H_Booniehat_khk", "H_Hat_blue", "H_Hat_brown", "H_Hat_camo", "H_Hat_grey", "H_Hat_checker", "H_Hat_tan", "H_Cap_tan", "H_Cap_blk", "H_Cap_grn", "H_Cap_grn_BI", "H_Cap_surfer", "H_Watchcap_blk", "H_Watchcap_khk", "H_Watchcap_camo", "H_Watchcap_sgg", "H_Bandanna_surfer", "H_Bandanna_khk", "H_Bandanna_cbr", "H_Bandanna_sgg", "H_Bandanna_gry", "H_StrawHat", "H_StrawHat_dark", "H_Cap_press", "H_Watchcap_cbr", "H_Booniehat_oli"] +#define CIV_GOGGLES ["G_Shades_Black", "G_Shades_Blue", "G_Sport_Blackred", "G_Spectacles", "G_Spectacles_Tinted", "G_Shades_Green", "G_Shades_Red", "G_Squares", "G_Squares_Tinted", "G_Sport_BlackWhite", "G_Sport_Blackyellow", "G_Sport_Greenblack", "G_Sport_Checkered", "G_Sport_Red", "G_Aviator"] + +#define GIVE_GOGGLES \ + _goggles = ([STD_GOGGLES] call Zen_ArrayGetRandom); \ + if (_goggles != "") then { \ + _x addGoggles _goggles; \ + }; \ + +_Zen_stack_Trace = ["Zen_GiveLoadoutBlufor", _this] call Zen_StackAdd; +private ["_units", "_kit", "_giveGL", "_i", "_weapon", "_magazine", "_unit", "_goggles", "_kits", "_sendPacket"]; + +if !([_this, [["VOID"], ["ARRAY", "STRING"], ["BOOL"]], [[], ["STRING"]], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_units = [(_this select 0)] call Zen_ConvertToObjectArray; + +ZEN_STD_Parse_GetSetArgumentOptional(_kits, 1, "", "") +ZEN_STD_Parse_GetSetArgumentDefault(_sendPacket, 2, true, false) + +{ + if (local _x) then { + _unit = _x; + _unitAnim = animationState _unit; + if ([_kits, ""] call Zen_ValuesAreEqual) then { + _kit = [["Rifleman", "AT Rifleman", "Assistant AA", "Assistant AT", "Assistant AR", "Team Leader", "Squad Leader", "Grenadier", "Auto Rifleman", "Marksman", "Medic", "AA Specialist", "AT Specialist", "Sapper", "Miner", "EOD Specialist"]] call Zen_ArrayGetRandom; + } else { + _kit = [_kits] call Zen_ArrayGetRandom; + }; + + removeAllWeapons _x; + removeAllContainers _x; + removeAllAssignedItems _x; + removeBackpack _x; + removeVest _x; + removeGoggles _x; + removeHeadgear _x; + + { + _unit linkItem _x; + } forEach ["ItemGPS", "ItemWatch", "ItemRadio", "ItemMap", "ItemCompass", "NVGoggles"]; + + removeUniform _x; + + switch (toLower ([_kit] call Zen_StringRemoveWhiteSpace)) do { + case "recon": { + _x addVest ([RECON_VEST] call Zen_ArrayGetRandom); + + _x addMagazines ["HandGrenade", (1 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (2 + floor random 3)]; + _x addMagazines ["30Rnd_65x39_caseless_mag", (7 + floor random 3)]; + + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear ([RECON_HEADGEAR] call Zen_ArrayGetRandom); + GIVE_GOGGLES + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 1]; + + _x addMagazines [([CHEMLIGHT] call Zen_ArrayGetRandom), 2]; + _x addMagazineGlobal "B_IR_Grenade"; + + _x addWeaponGlobal "Rangefinder"; + _x addWeaponGlobal "arifle_MX_Black_F"; + + _x addPrimaryWeaponItem "muzzle_snds_H"; + _x addPrimaryWeaponItem "optic_Aco"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "rifleman": { + _x addVest ([STD_VEST] call Zen_ArrayGetRandom); + _x addBackpack ([STD_RUCK] call Zen_ArrayGetRandom); + + _x addMagazines ["HandGrenade", (2 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (1 + floor random 2)]; + _x addMagazines ["30Rnd_65x39_caseless_mag", (11 + floor random 4)]; + + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear ([STD_HEADGEAR] call Zen_ArrayGetRandom); + GIVE_GOGGLES + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 2]; + (uniformContainer _x) addItemCargoGlobal ["acc_flashlight", 1]; + + _x addWeaponGlobal "arifle_MX_F"; + + _x addPrimaryWeaponItem "optic_Aco"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "grenadier": { + _x addVest ([STD_VEST] call Zen_ArrayGetRandom); + _x addBackpack ([STD_RUCK] call Zen_ArrayGetRandom); + + _x addMagazines ["HandGrenade", (2 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (1 + floor random 3)]; + _x addMagazines ["30Rnd_65x39_caseless_mag", (10 + floor random 5)]; + _x addMagazines ["1Rnd_HE_Grenade_shell", (11 + floor random 6)]; + + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear ([STD_HEADGEAR] call Zen_ArrayGetRandom); + GIVE_GOGGLES + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 2]; + + _x addWeaponGlobal "arifle_MX_GL_F"; + + _x addPrimaryWeaponItem "optic_Aco"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "autorifleman": { + _x addVest ([STD_VEST] call Zen_ArrayGetRandom); + _x addBackpack ([STD_RUCK] call Zen_ArrayGetRandom); + + _x addMagazines ["HandGrenade", (2 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (1 + floor random 3)]; + _x addMagazines ["100Rnd_65x39_caseless_mag", (7 + floor random 3)]; + + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear ([STD_HEADGEAR] call Zen_ArrayGetRandom); + GIVE_GOGGLES + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 2]; + + _x addWeaponGlobal "arifle_MX_SW_F"; + + _x addPrimaryWeaponItem "optic_Aco"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "marksman": { + _x addVest ([STD_VEST] call Zen_ArrayGetRandom); + + _x addMagazines ["HandGrenade", (2 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (2 + floor random 2)]; + _x addMagazines ["30Rnd_65x39_caseless_mag", (9 + floor random 3)]; + + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear ([STD_HEADGEAR] call Zen_ArrayGetRandom); + GIVE_GOGGLES + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 1]; + + _x addWeaponGlobal "arifle_MXM_F"; + + _x addPrimaryWeaponItem "optic_Hamr"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "teamleader": { + _x addVest ([STD_VEST] call Zen_ArrayGetRandom); + _x addBackpack ([STD_RUCK] call Zen_ArrayGetRandom); + + _giveGL = random 1; + + _x addMagazines ["HandGrenade", (2 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (3 + floor random 2)]; + _x addMagazines ["30Rnd_65x39_caseless_mag", (10 + floor random 4)]; + + if (_giveGL > 0.5) then { + _x addMagazines ["1Rnd_HE_Grenade_shell", (10 + floor random 5)]; + } else { + _x addMagazines ["30Rnd_65x39_caseless_mag", (3 + floor random 2)]; + }; + + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear ([STD_HEADGEAR] call Zen_ArrayGetRandom); + GIVE_GOGGLES + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 2]; + (uniformContainer _x) addItemCargoGlobal ["acc_flashlight", 1]; + + _x addWeaponGlobal "Binocular"; + + if (_giveGL > 0.5) then { + _x addWeaponGlobal "arifle_MX_GL_F"; + } else { + _x addWeaponGlobal "arifle_MX_F"; + }; + + _x addPrimaryWeaponItem "optic_Aco"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "squadleader": { + _x addVest ([STD_VEST] call Zen_ArrayGetRandom); + _x addBackpack ([STD_RUCK] call Zen_ArrayGetRandom); + + _x addMagazines ["HandGrenade", (2 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (4 + floor random 2)]; + _x addMagazines ["30Rnd_65x39_caseless_mag", (10 + floor random 5)]; + _x addMagazines ["1Rnd_HE_Grenade_shell", (10 + floor random 4)]; + _x addMagazines ["1Rnd_smokegreen_Grenade_shell", (5 + floor random 2)]; + + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear ([STD_HEADGEAR] call Zen_ArrayGetRandom); + GIVE_GOGGLES + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 2]; + + _x addWeaponGlobal "rangefinder"; + _x addWeaponGlobal "arifle_MX_GL_F"; + + _x addPrimaryWeaponItem "optic_Hamr"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "atrifleman": { + _x addVest ([STD_VEST] call Zen_ArrayGetRandom); + _x addBackpack ([STD_RUCK] call Zen_ArrayGetRandom); + + _x addMagazines ["HandGrenade", (2 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (1 + floor random 2)]; + _x addMagazines ["30Rnd_65x39_caseless_mag", (9 + floor random 3)]; + _x addMagazines ["NLAW_F", 2]; + + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear ([STD_HEADGEAR] call Zen_ArrayGetRandom); + GIVE_GOGGLES + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 2]; + + _x addWeaponGlobal "arifle_MX_F"; + _x addWeaponGlobal "launch_NLAW_F"; + _x addMagazines ["NLAW_F", 1]; + + _x addPrimaryWeaponItem "optic_Aco"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "atspecialist": { + _x addVest ([STD_VEST] call Zen_ArrayGetRandom); + _x addBackpack ([STD_RUCK] call Zen_ArrayGetRandom); + + _x addMagazines ["HandGrenade", (2 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (2 + floor random 2)]; + _x addMagazines ["30Rnd_65x39_caseless_mag", (8 + floor random 5)]; + _x addMagazines ["Titan_AT", 2]; + _x addMagazines ["Titan_AP", 1]; + + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear ([STD_HEADGEAR] call Zen_ArrayGetRandom); + GIVE_GOGGLES + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 2]; + + _x addWeaponGlobal "arifle_MX_F"; + _x addWeaponGlobal "launch_B_Titan_short_F"; + + _x addMagazines ["Titan_AP", 1]; + + _x addPrimaryWeaponItem "optic_Aco"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "aaspecialist": { + _x addVest ([STD_VEST] call Zen_ArrayGetRandom); + _x addBackpack ([STD_RUCK] call Zen_ArrayGetRandom); + + _x addMagazines ["HandGrenade", (2 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (2 + floor random 2)]; + _x addMagazines ["30Rnd_65x39_caseless_mag", (7 + floor random 5)]; + _x addMagazines ["Titan_AA", 1]; + + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear ([STD_HEADGEAR] call Zen_ArrayGetRandom); + GIVE_GOGGLES + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 2]; + + _x addWeaponGlobal "arifle_MX_F"; + _x addWeaponGlobal "launch_B_Titan_F"; + _x addMagazines ["Titan_AA", 1]; + + _x addPrimaryWeaponItem "optic_Aco"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "assistantaa": { + _x addVest ([STD_VEST] call Zen_ArrayGetRandom); + _x addBackpack ([STD_RUCK] call Zen_ArrayGetRandom); + + _x addMagazines ["HandGrenade", (2 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (2 + floor random 2)]; + _x addMagazines ["30Rnd_65x39_caseless_mag", (8 + floor random 4)]; + _x addMagazines ["Titan_AA", 2]; + + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear ([STD_HEADGEAR] call Zen_ArrayGetRandom); + GIVE_GOGGLES + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 2]; + + _x addWeaponGlobal "arifle_MX_F"; + + _x addPrimaryWeaponItem "optic_Aco"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "assistantat": { + _x addVest ([STD_VEST] call Zen_ArrayGetRandom); + _x addBackpack ([STD_RUCK] call Zen_ArrayGetRandom); + + _x addMagazines ["HandGrenade", (2 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (2 + floor random 2)]; + _x addMagazines ["30Rnd_65x39_caseless_mag", (8 + floor random 4)]; + _x addMagazines ["Titan_AT", 2]; + _x addMagazines ["Titan_AP", 1]; + + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear ([STD_HEADGEAR] call Zen_ArrayGetRandom); + GIVE_GOGGLES + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 2]; + + _x addWeaponGlobal "arifle_MX_F"; + + _x addPrimaryWeaponItem "optic_Aco"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "assistantar": { + _x addVest ([STD_VEST] call Zen_ArrayGetRandom); + _x addBackpack ([STD_RUCK] call Zen_ArrayGetRandom); + + _x addMagazines ["HandGrenade", (2 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (2 + floor random 2)]; + _x addMagazines ["30Rnd_65x39_caseless_mag", (8 + floor random 4)]; + _x addMagazines ["100Rnd_65x39_caseless_mag", (9 + floor random 3)]; + + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear ([STD_HEADGEAR] call Zen_ArrayGetRandom); + GIVE_GOGGLES + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 2]; + + _x addWeaponGlobal "arifle_MX_F"; + + _x addPrimaryWeaponItem "optic_Aco"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "medic": { + _x addVest ([STD_VEST] call Zen_ArrayGetRandom); + _x addBackpack ([STD_RUCK] call Zen_ArrayGetRandom); + + _x addMagazines ["HandGrenade", (2 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (3 + floor random 3)]; + _x addMagazines ["30Rnd_65x39_caseless_mag", (8 + floor random 4)]; + + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear ([STD_HEADGEAR] call Zen_ArrayGetRandom); + GIVE_GOGGLES + + (backpackContainer _x) addItemCargoGlobal ["Medikit", 1]; + (backpackContainer _x) addItemCargoGlobal ["FirstAidKit", 6]; + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 2]; + (uniformContainer _x) addItemCargoGlobal ["acc_flashlight", 1]; + + _x addWeaponGlobal "arifle_MX_F"; + + _x addPrimaryWeaponItem "optic_Aco"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "sapper": { + _x addVest ([STD_VEST] call Zen_ArrayGetRandom); + _x addBackpack ([STD_RUCK] call Zen_ArrayGetRandom); + + _x addMagazines ["HandGrenade", (2 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (2 + floor random 2)]; + _x addMagazines ["30Rnd_65x39_caseless_mag", (8 + floor random 3)]; + _x addMagazines ["SLAMDirectionalMine_Wire_Mag", 3]; + _x addMagazines ["SatchelCharge_Remote_Mag", 2]; + + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear ([STD_HEADGEAR] call Zen_ArrayGetRandom); + GIVE_GOGGLES + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 1]; + + _x addWeaponGlobal "arifle_MX_F"; + + _x addPrimaryWeaponItem "optic_Aco"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "miner": { + _x addVest ([STD_VEST] call Zen_ArrayGetRandom); + _x addBackpack ([STD_RUCK] call Zen_ArrayGetRandom); + + _x addMagazines ["HandGrenade", (2 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (2 + floor random 2)]; + _x addMagazines ["30Rnd_65x39_caseless_mag", (8 + floor random 3)]; + _x addMagazines ["ATMine_Range_Mag", 1]; + _x addMagazines ["APERSBoundingMine_Range_Mag", 2]; + _x addMagazines ["APERSTripMine_Wire_Mag", 2]; + + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear ([STD_HEADGEAR] call Zen_ArrayGetRandom); + GIVE_GOGGLES + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 1]; + + _x addWeaponGlobal "arifle_MX_F"; + + _x addPrimaryWeaponItem "optic_Aco"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "eodspecialist": { + _x addVest ([STD_VEST] call Zen_ArrayGetRandom); + _x addBackpack ([STD_RUCK] call Zen_ArrayGetRandom); + + _x addMagazines ["HandGrenade", (2 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (2 + floor random 2)]; + _x addMagazines ["30Rnd_65x39_caseless_mag", (8 + floor random 3)]; + _x addMagazines ["DemoCharge_Remote_Mag", 3]; + + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear ([STD_HEADGEAR] call Zen_ArrayGetRandom); + GIVE_GOGGLES + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 1]; + (backpackContainer _x) addItemCargoGlobal ["MineDetector", 1]; + (backpackContainer _x) addItemCargoGlobal ["ToolKit", 1]; + + _x addWeaponGlobal "arifle_MX_F"; + + _x addPrimaryWeaponItem "optic_Aco"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "sniper": { + _x addVest ([RECON_VEST] call Zen_ArrayGetRandom); + _x forceAddUniform "U_B_GhillieSuit"; + + _x addMagazines ["11Rnd_45ACP_Mag", 3]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (2 + floor random 2)]; + _x addMagazines ["7Rnd_408_Mag", (8 + floor random 3)]; + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 1]; + + _x addWeaponGlobal "Rangefinder"; + + _x addWeaponGlobal "srifle_LRR_F"; + _x addWeaponGlobal "hgun_Pistol_heavy_01_F"; + + _x addPrimaryWeaponItem "optic_LRPS"; + }; + case "spotter": { + _x addVest ([RECON_VEST] call Zen_ArrayGetRandom); + + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (2 + floor random 2)]; + _x addMagazines ["30Rnd_65x39_caseless_mag", (8 + floor random 2)]; + _x addMagazineGlobal "LaserBatteries"; + + _x forceAddUniform "U_B_GhillieSuit"; + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 1]; + + _x addWeaponGlobal "Laserdesignator"; + + _x addWeaponGlobal "arifle_MX_Black_F"; + + _x addPrimaryWeaponItem "optic_Aco"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "uavoperator": { + _x addVest ([STD_VEST] call Zen_ArrayGetRandom); + _x addBackpack "B_UAV_01_backpack_F"; + + _x addMagazines ["HandGrenade", (2 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (2 + floor random 2)]; + _x addMagazines ["30Rnd_65x39_caseless_mag", (8 + floor random 3)]; + + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear ([STD_HEADGEAR] call Zen_ArrayGetRandom); + GIVE_GOGGLES + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 1]; + _x addWeaponGlobal "arifle_MX_F"; + + _x unlinkItem "itemGPS"; + _x linkItem "B_UAVterminal"; + + _x addPrimaryWeaponItem "optic_Aco"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "crewman": { + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + _x addVest ([RECON_VEST] call Zen_ArrayGetRandom); + + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (2 + random 2)]; + _x addMagazines ["HandGrenade", (2 + random 2)]; + _x addMagazines ["30Rnd_65x39_caseless_mag", (5 + floor random 2)]; + + _x addHeadgear "H_HelmetCrew_B"; + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 1]; + + _x addWeaponGlobal "arifle_MX_F"; + _x addPrimaryWeaponItem "optic_Aco"; + }; + case "officer": { + _x addVest "V_BandollierB_cbr"; + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 1]; + + _x addMagazines ["HandGrenade", 1]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), 1]; + _x addMagazines ["11Rnd_45ACP_Mag", 2]; + _x addMagazines ["30Rnd_65x39_caseless_mag", (5 + floor random 2)]; + + _x addHeadgear "H_MilCap_mcamo"; + + _x addWeaponGlobal "binocular"; + _x addWeaponGlobal "arifle_MX_F"; + _x addWeaponGlobal "hgun_Pistol_heavy_01_F"; + + _x addPrimaryWeaponItem "optic_ACO"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "helicopterpilot": { + _x forceAddUniform "U_B_HeliPilotCoveralls"; + _x addVest ([RECON_VEST] call Zen_ArrayGetRandom); + + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (2 + floor random 3)]; + _x addMagazines ["30Rnd_45ACP_Mag_SMG_01", (6 + floor random 2)]; + + _x addHeadgear "H_PilotHelmetHeli_B"; + + _x addMagazines [([CHEMLIGHT] call Zen_ArrayGetRandom), 2]; + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 1]; + + _x addWeaponGlobal "Binocular"; + _x addWeaponGlobal "SMG_01_F"; + }; + case "helicoptercrew": { + _x forceAddUniform "U_B_HeliPilotCoveralls"; + _x addVest ([RECON_VEST] call Zen_ArrayGetRandom); + + _x addMagazines ["HandGrenade", 1]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (2 + floor random 2)]; + _x addMagazines ["30Rnd_65x39_caseless_mag", (7 + floor random 2)]; + + _x addHeadgear "H_CrewHelmetHeli_B"; + + _x addMagazines [([CHEMLIGHT] call Zen_ArrayGetRandom), 2]; + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 1]; + + _x addWeaponGlobal "arifle_MX_F"; + }; + case "fighterpilot": { + _x forceAddUniform "U_B_PilotCoveralls"; + _x addBackpack "B_Parachute"; + + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), 2]; + _x addMagazines ["11Rnd_45ACP_Mag", (3 + floor random 2)]; + + _x addHeadgear "H_PilotHelmetFighter_B"; + + _x addMagazines [([CHEMLIGHT] call Zen_ArrayGetRandom), 2]; + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 1]; + + _x addWeaponGlobal "Binocular"; + _x addWeaponGlobal "hgun_Pistol_heavy_01_F"; + }; + case "diver": { + _x forceAddUniform "U_B_Wetsuit"; + _x addVest "V_RebreatherB"; + + _x addMagazines ["HandGrenade", (1 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (1 + floor random 2)]; + _x addMagazines ["20Rnd_556x45_UW_mag", (4 + floor random 2)]; + _x addMagazines ["30Rnd_556x45_Stanag", (4 + floor random 2)]; + + _x addGoggles "G_Diving"; + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 1]; + + _x addWeaponGlobal "arifle_SDAR_F"; + }; + case "diversapper": { + _x forceAddUniform "U_B_Wetsuit"; + _x addVest "V_RebreatherB"; + _x addBackpack "B_AssaultPack_blk"; + + _x addMagazines ["HandGrenade", (1 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (1 + floor random 2)]; + _x addMagazines ["20Rnd_556x45_UW_mag", (4 + floor random 2)]; + _x addMagazines ["30Rnd_556x45_Stanag", (4 + floor random 2)]; + _x addMagazines ["SatchelCharge_Remote_Mag", 2]; + + _x addGoggles "G_Diving"; + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 1]; + + _x addWeaponGlobal "arifle_SDAR_F"; + }; + case "diverland": { + _x forceAddUniform "U_B_Wetsuit"; + _x addVest "V_RebreatherB"; + _x addBackpack "B_AssaultPack_blk"; + + _x addMagazines ["HandGrenade", (1 + floor random 3)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (1 + floor random 3)]; + _x addMagazines ["30Rnd_65x39_caseless_mag", (7 + floor random 3)]; + + _x addGoggles "G_Diving"; + + (unitBackpack _x) addItemCargoGlobal [([STD_UNIFORM] call Zen_ArrayGetRandom), 1]; + (unitBackpack _x) addItemCargoGlobal [([STD_VEST] call Zen_ArrayGetRandom), 1]; + (unitBackpack _x) addItemCargoGlobal [([STD_HEADGEAR] call Zen_ArrayGetRandom), 1]; + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 2]; + _x addWeaponGlobal "arifle_MX_Black_F"; + + _x addPrimaryWeaponItem "optic_Aco"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "guerrilla": { + _x unassignItem "NVGoggles"; + _x removeItem "NVGoggles"; + _x unlinkItem "itemGPS"; + + _x addVest ([GUER_VEST] call Zen_ArrayGetRandom); + _x addBackpack ([GUER_RUCK] call Zen_ArrayGetRandom); + + _weapon = ([GUER_WEAPON] call Zen_ArrayGetRandom); + _magazine = (getArray (configFile >> "CfgWeapons" >> _weapon >> "magazines")) select 0; + + _x addMagazines ["HandGrenade", (2 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (2 + floor random 2)]; + _x addMagazines [_magazine, (8 + floor random 4)]; + + _x addHeadgear ([GUER_HEADGEAR] call Zen_ArrayGetRandom); + _x addGoggles ([GUER_GOGGLES] call Zen_ArrayGetRandom); + _x forceAddUniform ([GUER_UNIFORM] call Zen_ArrayGetRandom); + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 1]; + _x addWeaponGlobal _weapon; + }; + case "civilian": { + _x unassignItem "NVGoggles"; + _x removeItem "NVGoggles"; + _x unlinkItem "itemGPS"; + + _x forceAddUniform ([CIV_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear ([CIV_HEADGEAR] call Zen_ArrayGetRandom); + _x addGoggles ([CIV_GOGGLES] call Zen_ArrayGetRandom); + }; + default { + 0 = ["Zen_GiveLoadoutBlufor", "Invalid loadout identifier given", _this] call Zen_PrintError; + call Zen_StackPrint; + }; + }; + + if !((toLower ([_kit] call Zen_StringRemoveWhiteSpace)) in ["guerrilla", "civilian"]) then { + if (sunOrMoon == 1) then { + _x unassignItem "NVGoggles"; + } else { + _x action ["NVGoggles", _x]; + }; + }; + + if (vehicle _unit == _unit) then { + _unit switchMove _unitAnim; + }; + } else { + if (isMultiplayer && {_sendPacket}) then { + _args = [_x, _kits, false]; + Zen_MP_Closure_Packet = ["Zen_GiveLoadoutBlufor", _args]; + (owner _x) publicVariableClient "Zen_MP_Closure_Packet"; + }; + }; +} forEach _units; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_GiveLoadoutCargo.sqf b/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_GiveLoadoutCargo.sqf new file mode 100644 index 0000000..67168d3 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_GiveLoadoutCargo.sqf @@ -0,0 +1,147 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" + +#define GIVE_GEAR_SINGLE(SLOT, COMMAND) _gear = [_loadout, SLOT, 0] call Zen_ArrayGetNestedValue; \ + if !(typeName _gear == typeName [] && {count _gear == 0}) then { \ + _gear = _gear select 1; \ + if !(typeName _gear == typeName [] && {count _gear == 0}) then { \ + _x COMMAND [([_gear] call Zen_ArrayGetRandom), 1]; \ + }; \ + }; + +#define GIVE_GEAR_SET(SLOT, COMMAND) _gear = [_loadout, SLOT, 0] call Zen_ArrayGetNestedValue; \ + if !(typeName _gear == typeName [] && {count _gear == 0}) then { \ + _gear = _gear select 1; \ + if !(typeName _gear == typeName [] && {count _gear == 0}) then { \ + { \ + _unit COMMAND [([_x] call Zen_ArrayGetRandom), 1]; \ + } forEach _gear; \ + }; \ + }; + +#include "Zen_StandardLibrary.sqf" + +_Zen_stack_Trace = ["Zen_GiveLoadoutCargo", _this] call Zen_StackAdd; +private ["_units", "_givenLoadoutArray", "_unit", "_loadout", "_gear", "_weaponsIndexes", "_gearWeapons", "_randomWeaponArrays", "_randomMagCount", "_randomMag", "_magIndex", "_weaponsList", "_weaponArray", "_weapIndex"]; + +if !([_this, [["ARRAY", "OBJECT"], ["ARRAY", "STRING"], ["BOOL"]], [["OBJECT"], ["STRING"]], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_units = _this select 0; +_givenLoadoutArray = _this select 1; + +ZEN_STD_Parse_ToArray(_units) + +{ + _unit = _x; + _loadout = [_givenLoadoutArray] call Zen_ArrayGetRandom; + _loadout = [_loadout, false] call Zen_GetLoadoutData; + + if (count _loadout == 0) exitWith { + 0 = ["Zen_GiveLoadoutCustom", "Given custom loadout does not exist", _this] call Zen_PrintError; + call Zen_StackPrint; + }; + + _loadout = _loadout select 1; + + GIVE_GEAR_SINGLE("uniform", addItemCargoGlobal) + GIVE_GEAR_SINGLE("vest", addItemCargoGlobal) + GIVE_GEAR_SINGLE("backpack", addItemCargoGlobal) + GIVE_GEAR_SINGLE("headgear", addItemCargoGlobal) + GIVE_GEAR_SINGLE("goggles", addItemCargoGlobal) + + GIVE_GEAR_SET("assignedItems", addItemCargoGlobal) + // GIVE_GEAR_SET("items", addItemCargoGlobal) + + _gear = [_loadout, "items", 0] call Zen_ArrayGetNestedValue; + if !((typeName _gear == typeName []) && {count _gear == 0}) then { + _gear = _gear select 1; + if !((typeName _gear == typeName []) && {count _gear == 0}) then { + { + if ((typeName _x == "ARRAY") && {(({typeName _x == "SCALAR"} count _x) > 0)}) then { + _type = [([_x, "STRING"] call Zen_ArrayGetType)] call Zen_ArrayGetRandom; + _count = (([_x, "SCALAR"] call Zen_ArrayGetType) select 0); + _unit addItemCargoGlobal [_type, _count]; + } else { + _unit addItemCargoGlobal [([_x] call Zen_ArrayGetRandom), 1]; + }; + } forEach _gear; + }; + }; + + _randomWeaponArrays = []; + _randomMagCount = 0; + _weaponsIndexes = [_loadout, "weapons", 0] call Zen_ArrayGetNestedIndex; + if (count _weaponsIndexes != 0) then { + _gearWeapons = _loadout select (_weaponsIndexes select 0); + _weaponsList = _gearWeapons select 1; + _randomWeaponArrays = [_weaponsList, "ARRAY"] call Zen_ArrayGetType; + } else { + _gearWeapons = []; + _weaponsList = []; + }; + + _gear = [_loadout, "magazines", 0] call Zen_ArrayGetNestedValue; + if !(typeName _gear == typeName [] && {count _gear == 0}) then { + _gear = _gear select 1; + if !(typeName _gear == typeName [] && {count _gear == 0}) then { + { + if (typeName (_x select 0) == "ARRAY") then { + _magIndex = ZEN_STD_Array_RandIndex(_x); + _randomMag = _x select _magIndex; + + if (count _randomMag > 0) then { + if ((typeName (_randomMag select 0)) == "ARRAY") then { + { + _unit addMagazineCargoGlobal [(_x select 0), (_x select 1)]; + } forEach _randomMag; + } else { + _unit addMagazineCargoGlobal [(_randomMag select 0), (_randomMag select 1)]; + }; + }; + + if (count _randomWeaponArrays > _randomMagCount) then { + _weaponArray = _randomWeaponArrays select _randomMagCount; + + _randomWeapon = _weaponArray select (_magIndex min (count _weaponArray - 1)); + if (typeName _randomWeapon == "STRING") then { + _unit addWeaponCargoGlobal [_randomWeapon, 1]; + } else { + { + _unit addWeaponCargoGlobal [_x, 1]; + } forEach _randomWeapon; + }; + + _weapIndex = [_weaponArray, _weaponsList] call Zen_ValueFindInArray; + _weaponsList set [_weapIndex, 0]; + _randomMagCount = _randomMagCount + 1; + }; + } else { + for "_i" from 1 to (_x select 1) do { + _unit addMagazineCargoGlobal [(_x select 0), 1]; + }; + }; + } forEach _gear; + }; + }; + + 0 = [_weaponsList, 0] call Zen_ArrayRemoveValue; + if !(typeName _gearWeapons == typeName [] && {count _gearWeapons == 0}) then { + if !((typeName _weaponsList == "ARRAY") && {count _weaponsList == 0}) then { + { + _unit addWeaponCargoGlobal [([_x] call Zen_ArrayGetRandom), 1]; + } forEach _weaponsList; + }; + }; + + GIVE_GEAR_SET("primaryAttachments", addItemCargoGlobal) + GIVE_GEAR_SET("secondaryAttachments", addItemCargoGlobal) + GIVE_GEAR_SET("handgunAttachments", addItemCargoGlobal) +} forEach _units; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_GiveLoadoutCustom.sqf b/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_GiveLoadoutCustom.sqf new file mode 100644 index 0000000..24b0aa7 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_GiveLoadoutCustom.sqf @@ -0,0 +1,229 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" + +#define GIVE_GEAR_SINGLE(SLOT, COMMAND) _gear = [_loadout, SLOT, 0] call Zen_ArrayGetNestedValue; \ + if !(typeName _gear == typeName [] && {count _gear == 0}) then { \ + _gear = _gear select 1; \ + if !(typeName _gear == typeName [] && {count _gear == 0}) then { \ + _x COMMAND ([_gear] call Zen_ArrayGetRandom); \ + }; \ + }; + +#define GIVE_GEAR_SET(SLOT, COMMAND) _gear = [_loadout, SLOT, 0] call Zen_ArrayGetNestedValue; \ + if !(typeName _gear == typeName [] && {count _gear == 0}) then { \ + _gear = _gear select 1; \ + if !(typeName _gear == typeName [] && {count _gear == 0}) then { \ + { \ + _unit COMMAND ([_x] call Zen_ArrayGetRandom); \ + } forEach _gear; \ + }; \ + }; + +_Zen_stack_Trace = ["Zen_GiveLoadoutCustom", _this] call Zen_StackAdd; +private ["_units", "_givenLoadoutArray", "_unit", "_givingType", "_loadout", "_gear", "_weaponsIndexes", "_gearWeapons", "_randomWeaponArrays", "_randomMagCount", "_randomMag", "_magIndex", "_weaponsList", "_weapIndex", "_weaponArray", "_uniformStuff", "_vestStuff", "_backpackStuff", "_rifleStuff", "_pistolStuff", "_sendPacket", "_count", "_type", "_NVGType"]; + +if !([_this, [["VOID"], ["ARRAY", "STRING"], ["STRING"], ["BOOL"]], [[], ["STRING"]], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_units = [(_this select 0)] call Zen_ConvertToObjectArray; +_givenLoadoutArray = _this select 1; + +ZEN_STD_Parse_GetSetArgumentOptional(_givingType, 2, "complete", "complete") +ZEN_STD_Parse_GetSetArgumentDefault(_sendPacket, 3, true, false) + +{ + if (local _x) then { + _unit = _x; + _unitAnim = animationState _unit; + + if (toLower _givingType == "complete") then { + removeAllWeapons _x; + removeAllContainers _x; + removeAllAssignedItems _x; + removeUniform _x; + removeBackpack _x; + removeVest _x; + removeGoggles _x; + removeHeadgear _x; + } else { + _uniformStuff = uniformItems _unit; + _vestStuff = vestItems _unit; + _backpackStuff = backpackItems _unit; + _rifleStuff = primaryWeaponItems _unit; + _pistolStuff = handgunItems _unit; + }; + + _loadout = [_givenLoadoutArray] call Zen_ArrayGetRandom; + _loadout = [_loadout, false] call Zen_GetLoadoutData; + + if (count _loadout == 0) exitWith { + 0 = ["Zen_GiveLoadoutCustom", "Given custom loadout does not exist", _this] call Zen_PrintError; + call Zen_StackPrint; + }; + + _loadout = _loadout select 1; + + GIVE_GEAR_SINGLE("uniform", forceAddUniform) + if (toLower _givingType == "additive") then { + _unit addUniform uniform _unit; + { + (uniformContainer _unit) addItemCargoGlobal [_x, 1]; + } forEach _uniformStuff; + }; + + GIVE_GEAR_SINGLE("vest", addVest) + if (toLower _givingType == "additive") then { + _unit addVest vest _unit; + { + (vestContainer _unit) addItemCargoGlobal [_x, 1]; + } forEach _vestStuff; + }; + + GIVE_GEAR_SINGLE("backpack", addBackpack) + if (toLower _givingType == "additive") then { + _unit addBackpack backpack _unit; + { + (backpackContainer _unit) addItemCargoGlobal [_x, 1]; + } forEach _backpackStuff; + }; + + GIVE_GEAR_SINGLE("headgear", addHeadgear) + GIVE_GEAR_SINGLE("goggles", addGoggles) + + GIVE_GEAR_SET("assignedItems", linkItem) + // GIVE_GEAR_SET("items", addItem) + + _gear = [_loadout, "items", 0] call Zen_ArrayGetNestedValue; + if !((typeName _gear == typeName []) && {count _gear == 0}) then { + _gear = _gear select 1; + if !((typeName _gear == typeName []) && {count _gear == 0}) then { + { + if ((typeName _x == "ARRAY") && {(({typeName _x == "SCALAR"} count _x) > 0)}) then { + _type = [([_x, "STRING"] call Zen_ArrayGetType)] call Zen_ArrayGetRandom; + _count = (([_x, "SCALAR"] call Zen_ArrayGetType) select 0); + for "_i" from 1 to _count do { + _unit addItem _type; + }; + } else { + _unit addItem ([_x] call Zen_ArrayGetRandom); + }; + } forEach _gear; + }; + }; + + _randomWeaponArrays = []; + _randomMagCount = 0; + _weaponsIndexes = [_loadout, "weapons", 0] call Zen_ArrayGetNestedIndex; + if (count _weaponsIndexes != 0) then { + _gearWeapons = _loadout select (_weaponsIndexes select 0); + _weaponsList = _gearWeapons select 1; + _randomWeaponArrays = [_weaponsList, "ARRAY"] call Zen_ArrayGetType; + } else { + _gearWeapons = []; + _weaponsList = []; + }; + + _gear = [_loadout, "magazines", 0] call Zen_ArrayGetNestedValue; + if !(typeName _gear == typeName [] && {count _gear == 0}) then { + _gear = _gear select 1; + if !(typeName _gear == typeName [] && {count _gear == 0}) then { + { + if ((typeName (_x select 0)) == "ARRAY") then { + _magIndex = ZEN_STD_Array_RandIndex(_x); + _randomMag = _x select _magIndex; + + if (count _randomMag > 0) then { + if ((typeName (_randomMag select 0)) == "ARRAY") then { + { + _unit addMagazines [(_x select 0), (_x select 1)]; + } forEach _randomMag; + } else { + _unit addMagazines [(_randomMag select 0), (_randomMag select 1)]; + }; + }; + + if (count _randomWeaponArrays > _randomMagCount) then { + _weaponArray = _randomWeaponArrays select _randomMagCount; + + _randomWeapon = _weaponArray select (_magIndex min (count _weaponArray - 1)); + if (typeName _randomWeapon == "STRING") then { + _unit addWeaponGlobal _randomWeapon; + } else { + { + _unit addWeaponGlobal _x; + } forEach _randomWeapon; + }; + + _weapIndex = [_weaponArray, _weaponsList] call Zen_ValueFindInArray; + _weaponsList set [_weapIndex, 0]; + _randomMagCount = _randomMagCount + 1; + }; + } else { + _unit addMagazines [(_x select 0), (_x select 1)]; + }; + } forEach _gear; + }; + }; + + 0 = [_weaponsList, 0] call Zen_ArrayRemoveValue; + if !(typeName _gearWeapons == typeName [] && {count _gearWeapons == 0}) then { + if !((typeName _weaponsList == "ARRAY") && {count _weaponsList == 0}) then { + { + _unit addWeaponGlobal ([_x] call Zen_ArrayGetRandom); + } forEach _weaponsList; + }; + }; + + removeAllPrimaryWeaponItems _unit; + removeAllHandgunItems _unit; + + if (toLower _givingType == "additive") then { + { + if (_x != "") then { + _unit addPrimaryWeaponItem _x; + }; + } forEach _rifleStuff; + { + if (_x != "") then { + _unit addHandgunItem _x; + }; + } forEach _pistolStuff; + }; + + GIVE_GEAR_SET("primaryAttachments", addPrimaryWeaponItem) + GIVE_GEAR_SET("secondaryAttachments", addSecondaryWeaponItem) + GIVE_GEAR_SET("handgunAttachments", addHandgunItem) + + _NVGType = ""; + { + if ((toUpper (toString ([(toArray _x), 0, 2] call Zen_ArrayGetIndexedSlice))) == "NVG") exitWith { + _NVGType = _x; + }; + } forEach (assignedItems _x); + + if (sunOrMoon == 1) then { + _x unassignItem _NVGType; + } else { + if (_NVGType != "") then { + _x action ["NVGoggles", _x]; + }; + }; + + if (vehicle _unit == _unit) then { + _unit switchMove _unitAnim; + }; + } else { + if (isMultiplayer && {_sendPacket}) then { + _args = [_x, _givenLoadoutArray, _givingType, false]; + Zen_MP_Closure_Packet = ["Zen_GiveLoadoutCustom", _args]; + (owner _x) publicVariableClient "Zen_MP_Closure_Packet"; + }; + }; +} forEach _units; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_GiveLoadoutIndfor.sqf b/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_GiveLoadoutIndfor.sqf new file mode 100644 index 0000000..22bb4d6 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_GiveLoadoutIndfor.sqf @@ -0,0 +1,689 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" +#include "Zen_FrameworkLibrary.sqf" + +#define RECON_VEST ["V_Chestrig_khk", "V_Chestrig_rgr", "V_Chestrig_oli", "V_TacVest_camo", "V_TacVest_oli"] +#define RECON_HEADGEAR ["H_MilCap_dgtl", "H_Booniehat_dgtl", "H_Beret_grn", "H_Watchcap_camo", "H_Bandanna_sgg", "H_Bandanna_camo", "H_MilCap_dgtl"] +#define STD_UNIFORM ["U_I_CombatUniform", "U_I_CombatUniform_tshirt", "U_I_CombatUniform_shortsleeve"] +#define STD_VEST ["V_PlateCarrierIA1_dgtl", "V_PlateCarrierIA2_dgtl", "V_PlateCarrierIAGL_dgtl", "V_TacVest_camo", "V_TacVest_oli"] +#define STD_RUCK ["B_FieldPack_oli", "B_Kitbag_sgg", "B_Bergen_rgr", "B_Carryall_oli", "B_TacticalPack_rgr", "B_TacticalPack_oli"] +#define STD_HEADGEAR ["H_HelmetIA", "H_HelmetIA_net", "H_HelmetIA_camo", "H_MilCap_dgtl", "H_Booniehat_dgtl", "H_Watchcap_camo", "H_Bandanna_sgg", "H_Bandanna_camo", "H_MilCap_dgtl"] +#define STD_GOGGLES ["G_Balaclava_blk", "G_Balaclava_oli", "", "", ""] +#define SMOKE ["SmokeShell", "SmokeShellYellow", "SmokeShellGreen", "SmokeShellRed", "SmokeShellPurple", "SmokeShellOrange", "SmokeShellBlue"] +#define CHEMLIGHT ["Chemlight_green", "Chemlight_red", "Chemlight_blue", "Chemlight_yellow"] + +#define GUER_WEAPON ["arifle_TRG21_F", "arifle_TRG20_F", "srifle_EBR_F", "arifle_Mk20_F", "arifle_Mk20_plain_F", "arifle_Mk20C_plain_F", "LMG_Zafir_F", "LMG_Mk200_F"] +#define GUER_UNIFORM ["U_IG_Guerilla1_1", "U_IG_Guerilla2_2", "U_IG_Guerilla2_3", "U_IG_Guerilla3_1", "U_IG_Guerilla3_2", "U_IG_Guerilla2_1", "U_BG_Guerilla1_1", "U_BG_Guerilla2_1", "U_BG_Guerilla2_2", "U_BG_Guerilla2_3", "U_BG_Guerilla3_1", "U_BG_Guerilla3_2", "U_C_Poor_1", "U_C_Poor_2", "U_C_Poloshirt_burgundy", "U_C_Poloshirt_redwhite", "U_IG_Guerrilla_6_1", "U_BG_leader", "U_I_G_Story_Protagonist_F"] +#define GUER_VEST ["V_BandollierB_khk", "V_BandollierB_cbr", "V_BandollierB_rgr", "V_BandollierB_blk", "V_BandollierB_oli", "V_TacVest_khk", "V_TacVest_brn", "V_TacVest_oli", "V_TacVest_blk", "V_TacVest_camo", "V_TacVest_blk_POLICE", "V_TacVestIR_blk", "V_TacVestCamo_khk", "V_Chestrig_khk", "V_Chestrig_rgr", "V_Chestrig_blk", "V_Chestrig_oli", "V_PlateCarrierIA1_dgtl"] +#define GUER_RUCK ["B_AssaultPack_khk", "B_AssaultPack_rgr", "B_AssaultPack_sgg", "B_AssaultPack_cbr", "B_FieldPack_khk", "B_FieldPack_oli", "B_FieldPack_cbr", "B_OutdoorPack_tan", "B_HuntingBackpack", "B_Kitbag_sgg", "B_Kitbag_cbr", "B_Bergen_sgg", "B_Bergen_mcamo", "B_Bergen_rgr", "B_BergenG", "B_BergenC_grn", "B_Carryall_oli", "B_Carryall_khk", "B_Carryall_cbr", "B_TacticalPack_rgr", "B_TacticalPack_oli"] +#define GUER_HEADGEAR ["H_Booniehat_khk", "H_Booniehat_grn", "H_Booniehat_tan", "H_Booniehat_dirty", "H_Booniehat_khk_hs", "H_MilCap_gry", "H_Cap_red", "H_Cap_blu", "H_Cap_oli", "H_Cap_tan", "H_Cap_blk", "H_Cap_grn", "H_Cap_grn_BI", "H_Cap_blk_Raven", "H_Cap_brn_SERO", "H_Cap_blk_ION", "H_Cap_oli_hs", "H_Shemag_khk", "H_Shemag_tan", "H_Shemag_olive", "H_ShemagOpen_khk", "H_ShemagOpen_tan", "H_Shemag_olive_hs", "H_Beret_blk", "H_Beret_blk_POLICE", "H_Beret_grn", "H_Beret_02", "H_Hat_blue", "H_Hat_brown", "H_Hat_camo", "H_Hat_grey", "H_Hat_checker", "H_Hat_tan", "H_StrawHat", "H_StrawHat_dark", "H_Watchcap_blk", "H_Watchcap_khk", "H_Watchcap_camo", "H_Watchcap_sgg", "H_Bandanna_surfer", "H_Bandanna_khk", "H_Bandanna_cbr", "H_Bandanna_sgg", "H_Bandanna_gry", "H_Bandanna_camo", "H_Bandanna_khk_hs", "H_Cap_press", "H_Cap_marshal", "H_Cap_police", "H_Watchcap_cbr", "H_Booniehat_oli"] +#define GUER_GOGGLES ["G_Bandanna_blk", "G_Bandanna_oli", "G_Bandanna_khk", "G_Bandanna_tan", "G_Bandanna_beast", "G_Bandanna_shades", "G_Bandanna_sport", "G_Bandanna_aviator", "G_Balaclava_blk", "G_Balaclava_oli", "G_Balaclava_combat", "G_Balaclava_lowprofile", "G_Aviator", "G_Tactical_Clear", "G_Tactical_Black"] + +#define CIV_UNIFORM ["U_C_Poloshirt_blue", "U_C_Poloshirt_burgundy", "U_C_Poloshirt_stripped", "U_C_Poloshirt_tricolour", "U_C_Poloshirt_salmon", "U_C_Poloshirt_redwhite", "U_C_Poor_1", "U_C_Poor_2", "U_C_WorkerCoveralls", "U_C_Poor_shorts_1", "U_C_Commoner_shorts", "U_C_ShirtSurfer_shorts", "U_C_TeeSurfer_shorts_1", "U_C_TeeSurfer_shorts_2"] +#define CIV_HEADGEAR ["H_Cap_red", "H_Cap_blu", "H_Cap_brn_SERO", "H_Booniehat_grn", "H_Booniehat_tan", "H_Booniehat_dirty", "H_Booniehat_dgtl", "H_Booniehat_khk", "H_Hat_blue", "H_Hat_brown", "H_Hat_camo", "H_Hat_grey", "H_Hat_checker", "H_Hat_tan", "H_Cap_tan", "H_Cap_blk", "H_Cap_grn", "H_Cap_grn_BI", "H_Cap_surfer", "H_Watchcap_blk", "H_Watchcap_khk", "H_Watchcap_camo", "H_Watchcap_sgg", "H_Bandanna_surfer", "H_Bandanna_khk", "H_Bandanna_cbr", "H_Bandanna_sgg", "H_Bandanna_gry", "H_StrawHat", "H_StrawHat_dark"] +#define CIV_GOGGLES ["G_Shades_Black", "G_Shades_Blue", "G_Sport_Blackred", "G_Spectacles", "G_Spectacles_Tinted", "G_Shades_Green", "G_Shades_Red", "G_Squares", "G_Squares_Tinted", "G_Sport_BlackWhite", "G_Sport_Blackyellow", "G_Sport_Greenblack", "G_Sport_Checkered", "G_Sport_Red", "G_Aviator"] + +#define GIVE_GOGGLES \ + _goggles = ([STD_GOGGLES] call Zen_ArrayGetRandom); \ + if (_goggles != "") then { \ + _x addGoggles _goggles; \ + }; \ + +_Zen_stack_Trace = ["Zen_GiveLoadoutIndfor", _this] call Zen_StackAdd; +private ["_units", "_kit", "_giveGL", "_i", "_weapon", "_magazine", "_unit", "_goggles", "_kits", "_sendPacket"]; + +if !([_this, [["VOID"], ["ARRAY", "STRING"], ["BOOL"]], [[], ["STRING"]], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_units = [(_this select 0)] call Zen_ConvertToObjectArray; + +ZEN_STD_Parse_GetSetArgumentOptional(_kits, 1, "", "") +ZEN_STD_Parse_GetSetArgumentDefault(_sendPacket, 2, true, false) + +{ + if (local _x) then { + _unit = _x; + _unitAnim = animationState _unit; + if ([_kits, ""] call Zen_ValuesAreEqual) then { + _kit = [["Rifleman", "AT Rifleman", "Assistant AA", "Assistant AT", "Assistant AR", "Team Leader", "Squad Leader", "Grenadier", "Auto Rifleman", "Marksman", "Medic", "AA Specialist", "AT Specialist", "Sapper", "Miner", "EOD Specialist"]] call Zen_ArrayGetRandom; + } else { + _kit = [_kits] call Zen_ArrayGetRandom; + }; + + removeAllWeapons _x; + removeAllContainers _x; + removeAllAssignedItems _x; + removeBackpack _x; + removeVest _x; + removeGoggles _x; + removeHeadgear _x; + + { + _unit linkItem _x; + } forEach ["ItemGPS", "ItemWatch", "ItemRadio", "ItemMap", "ItemCompass", "NVGoggles_INDEP"]; + + removeUniform _x; + + switch (toLower ([_kit] call Zen_StringRemoveWhiteSpace)) do { + case "recon": { + _x addVest ([RECON_VEST] call Zen_ArrayGetRandom); + + _x addMagazines ["HandGrenade", (1 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (2 + floor random 2)]; + _x addMagazines ["30Rnd_556x45_Stanag", (7 + floor random 3)]; + + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear ([RECON_HEADGEAR] call Zen_ArrayGetRandom); + GIVE_GOGGLES + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 1]; + + _x addMagazines [([CHEMLIGHT] call Zen_ArrayGetRandom), 2]; + _x addMagazineGlobal "I_IR_Grenade"; + + _x addWeaponGlobal "Rangefinder"; + _x addWeaponGlobal "arifle_Mk20_F"; + + _x addPrimaryWeaponItem "muzzle_snds_M"; + _x addPrimaryWeaponItem "optic_Aco_grn"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "rifleman": { + _x addVest ([STD_VEST] call Zen_ArrayGetRandom); + + _x addMagazines ["HandGrenade", (2 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (1 + floor random 2)]; + _x addMagazines ["30Rnd_556x45_Stanag", (11 + floor random 4)]; + + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear ([STD_HEADGEAR] call Zen_ArrayGetRandom); + GIVE_GOGGLES + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 2]; + (uniformContainer _x) addItemCargoGlobal ["acc_flashlight", 1]; + + _x addWeaponGlobal "arifle_Mk20_F"; + + _x addPrimaryWeaponItem "optic_Aco_grn"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "grenadier": { + _x addVest ([STD_VEST] call Zen_ArrayGetRandom); + + _x addMagazines ["HandGrenade", (2 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (1 + floor random 3)]; + _x addMagazines ["30Rnd_556x45_Stanag", (10 + floor random 5)]; + _x addMagazines ["1Rnd_HE_Grenade_shell", (11 + floor random 6)]; + + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear ([STD_HEADGEAR] call Zen_ArrayGetRandom); + GIVE_GOGGLES + + _x addMagazines ["1Rnd_HE_Grenade_shell", 2]; + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 2]; + + _x addWeaponGlobal "arifle_Mk20_GL_F"; + + _x addPrimaryWeaponItem "optic_Aco_grn"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "autorifleman": { + _x addVest ([STD_VEST] call Zen_ArrayGetRandom); + _x addBackpack ([STD_RUCK] call Zen_ArrayGetRandom); + + _x addMagazines ["HandGrenade", (2 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (1 + floor random 3)]; + _x addMagazines ["150Rnd_762x54_Box", (4 + floor random 2.5)]; + + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear ([STD_HEADGEAR] call Zen_ArrayGetRandom); + GIVE_GOGGLES + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 2]; + + _x addWeaponGlobal "LMG_Zafir_F"; + + _x addPrimaryWeaponItem "optic_Aco_grn"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "marksman": { + _x addVest ([STD_VEST] call Zen_ArrayGetRandom); + + _x addMagazines ["HandGrenade", (2 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (2 + floor random 2)]; + _x addMagazines ["20Rnd_762x51_Mag", (9 + floor random 3)]; + + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear ([STD_HEADGEAR] call Zen_ArrayGetRandom); + GIVE_GOGGLES + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 1]; + + _x addWeaponGlobal "srifle_EBR_F"; + + _x addPrimaryWeaponItem "optic_MRCO"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "teamleader": { + _x addVest ([STD_VEST] call Zen_ArrayGetRandom); + _x addBackpack ([STD_RUCK] call Zen_ArrayGetRandom); + + _giveGL = random 1; + + _x addMagazines ["HandGrenade", (2 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (1 + floor random 3)]; + _x addMagazines ["30Rnd_556x45_Stanag", (10 + floor random 4)]; + + if (_giveGL > 0.5) then { + _x addMagazines ["1Rnd_HE_Grenade_shell", (10 + floor random 5)]; + } else { + _x addMagazines ["30Rnd_556x45_Stanag", (3 + floor random 2)]; + }; + + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear ([STD_HEADGEAR] call Zen_ArrayGetRandom); + GIVE_GOGGLES + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 2]; + (uniformContainer _x) addItemCargoGlobal ["acc_flashlight", 1]; + + _x addWeaponGlobal "Binocular"; + + if (_giveGL > 0.5) then { + _x addWeaponGlobal "arifle_Mk20_GL_F"; + } else { + _x addWeaponGlobal "arifle_Mk20_F"; + }; + + _x addPrimaryWeaponItem "optic_Aco_grn"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "squadleader": { + _x addVest ([STD_VEST] call Zen_ArrayGetRandom); + _x addBackpack ([STD_RUCK] call Zen_ArrayGetRandom); + + _x addMagazines ["HandGrenade", (2 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (3 + floor random 3)]; + _x addMagazines ["30Rnd_556x45_Stanag", (10 + floor random 5)]; + _x addMagazines ["1Rnd_HE_Grenade_shell", (11 + floor random 5)]; + _x addMagazines ["1Rnd_smokered_Grenade_shell", (7 + floor random 2)]; + + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear ([STD_HEADGEAR] call Zen_ArrayGetRandom); + GIVE_GOGGLES + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 2]; + + _x addWeaponGlobal "rangefinder"; + _x addWeaponGlobal "arifle_Mk20_GL_F"; + + _x addPrimaryWeaponItem "optic_MRCO"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "atrifleman": { + _x addVest ([STD_VEST] call Zen_ArrayGetRandom); + _x addBackpack ([STD_RUCK] call Zen_ArrayGetRandom); + + _x addMagazines ["HandGrenade", (2 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (1 + floor random 2)]; + _x addMagazines ["30Rnd_556x45_Stanag", (9 + floor random 3)]; + _x addMagazines ["NLAW_F", 2]; + + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear ([STD_HEADGEAR] call Zen_ArrayGetRandom); + GIVE_GOGGLES + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 2]; + + _x addWeaponGlobal "arifle_Mk20_F"; + _x addWeaponGlobal "launch_NLAW_F"; + _x addMagazines ["NLAW_F", 1]; + + _x addPrimaryWeaponItem "optic_Aco_grn"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "atspecialist": { + _x addVest ([STD_VEST] call Zen_ArrayGetRandom); + _x addBackpack ([STD_RUCK] call Zen_ArrayGetRandom); + + _x addMagazines ["HandGrenade", (2 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (2 + floor random 2)]; + _x addMagazines ["30Rnd_556x45_Stanag", (8 + floor random 5)]; + _x addMagazines ["Titan_AT", 2]; + _x addMagazines ["Titan_AP", 1]; + + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear ([STD_HEADGEAR] call Zen_ArrayGetRandom); + GIVE_GOGGLES + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 2]; + + _x addWeaponGlobal "arifle_Mk20_F"; + _x addWeaponGlobal "launch_I_Titan_short_F"; + + _x addMagazines ["Titan_AP", 1]; + + _x addPrimaryWeaponItem "optic_Aco_grn"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "aaspecialist": { + _x addVest ([STD_VEST] call Zen_ArrayGetRandom); + _x addBackpack ([STD_RUCK] call Zen_ArrayGetRandom); + + _x addMagazines ["HandGrenade", (2 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (2 + floor random 2)]; + _x addMagazines ["30Rnd_556x45_Stanag", (7 + floor random 5)]; + _x addMagazines ["Titan_AA", 1]; + + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear ([STD_HEADGEAR] call Zen_ArrayGetRandom); + GIVE_GOGGLES + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 2]; + + _x addWeaponGlobal "arifle_Mk20_F"; + _x addWeaponGlobal "launch_I_Titan_F"; + + _x addMagazines ["Titan_AA", 1]; + + _x addPrimaryWeaponItem "optic_Aco_grn"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "assistantaa": { + _x addVest ([STD_VEST] call Zen_ArrayGetRandom); + _x addBackpack ([STD_RUCK] call Zen_ArrayGetRandom); + + _x addMagazines ["HandGrenade", (2 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (2 + floor random 2)]; + _x addMagazines ["30Rnd_556x45_Stanag", (8 + floor random 4)]; + _x addMagazines ["Titan_AA", 2]; + + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear ([STD_HEADGEAR] call Zen_ArrayGetRandom); + GIVE_GOGGLES + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 2]; + + _x addWeaponGlobal "arifle_Mk20_F"; + + _x addPrimaryWeaponItem "optic_Aco_grn"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "assistantat": { + _x addVest ([STD_VEST] call Zen_ArrayGetRandom); + _x addBackpack ([STD_RUCK] call Zen_ArrayGetRandom); + + _x addMagazines ["HandGrenade", (2 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (2 + floor random 2)]; + _x addMagazines ["30Rnd_556x45_Stanag", (8 + floor random 4)]; + _x addMagazines ["Titan_AT", 2]; + _x addMagazines ["Titan_AP", 1]; + + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear ([STD_HEADGEAR] call Zen_ArrayGetRandom); + GIVE_GOGGLES + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 2]; + + _x addWeaponGlobal "arifle_Mk20_F"; + + _x addPrimaryWeaponItem "optic_Aco_grn"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "assistantar": { + _x addVest ([STD_VEST] call Zen_ArrayGetRandom); + _x addBackpack ([STD_RUCK] call Zen_ArrayGetRandom); + + _x addMagazines ["HandGrenade", (2 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (2 + floor random 2)]; + _x addMagazines ["30Rnd_556x45_Stanag", (8 + floor random 4)]; + _x addMagazines ["150Rnd_762x54_Box", (5 + floor random 2)]; + + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear ([STD_HEADGEAR] call Zen_ArrayGetRandom); + GIVE_GOGGLES + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 2]; + + _x addWeaponGlobal "arifle_Mk20_F"; + + _x addPrimaryWeaponItem "optic_Aco_grn"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "medic": { + _x addVest ([STD_VEST] call Zen_ArrayGetRandom); + _x addBackpack ([STD_RUCK] call Zen_ArrayGetRandom); + + _x addMagazines ["HandGrenade", (2 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (3 + floor random 3)]; + _x addMagazines ["30Rnd_556x45_Stanag", (8 + floor random 4)]; + + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear ([STD_HEADGEAR] call Zen_ArrayGetRandom); + GIVE_GOGGLES + + (backpackContainer _x) addItemCargoGlobal ["Medikit", 1]; + (backpackContainer _x) addItemCargoGlobal ["FirstAidKit", 6]; + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 2]; + (uniformContainer _x) addItemCargoGlobal ["acc_flashlight", 1]; + + _x addWeaponGlobal "arifle_Mk20_F"; + + _x addPrimaryWeaponItem "optic_Aco_grn"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "sapper": { + _x addVest ([STD_VEST] call Zen_ArrayGetRandom); + _x addBackpack ([STD_RUCK] call Zen_ArrayGetRandom); + + _x addMagazines ["HandGrenade", (2 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (2 + floor random 2)]; + _x addMagazines ["30Rnd_556x45_Stanag", (8 + floor random 3)]; + _x addMagazines ["SLAMDirectionalMine_Wire_Mag", 3]; + _x addMagazines ["SatchelCharge_Remote_Mag", 2]; + + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear ([STD_HEADGEAR] call Zen_ArrayGetRandom); + GIVE_GOGGLES + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 1]; + + _x addWeaponGlobal "arifle_Mk20_F"; + + _x addPrimaryWeaponItem "optic_Aco_grn"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "miner": { + _x addVest ([STD_VEST] call Zen_ArrayGetRandom); + _x addBackpack ([STD_RUCK] call Zen_ArrayGetRandom); + + _x addMagazines ["HandGrenade", (2 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (2 + floor random 2)]; + _x addMagazines ["30Rnd_556x45_Stanag", (8 + floor random 3)]; + _x addMagazines ["ATMine_Range_Mag", 1]; + _x addMagazines ["APERSBoundingMine_Range_Mag", 2]; + _x addMagazines ["APERSTripMine_Wire_Mag", 2]; + + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear ([STD_HEADGEAR] call Zen_ArrayGetRandom); + GIVE_GOGGLES + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 1]; + + _x addWeaponGlobal "arifle_Mk20_F"; + + _x addPrimaryWeaponItem "optic_Aco_grn"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "eodspecialist": { + _x addVest ([STD_VEST] call Zen_ArrayGetRandom); + _x addBackpack ([STD_RUCK] call Zen_ArrayGetRandom); + + _x addMagazines ["HandGrenade", (2 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (2 + floor random 2)]; + _x addMagazines ["30Rnd_556x45_Stanag", (8 + floor random 3)]; + _x addMagazines ["DemoCharge_Remote_Mag", 3]; + + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear ([STD_HEADGEAR] call Zen_ArrayGetRandom); + GIVE_GOGGLES + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 1]; + (backpackContainer _x) addItemCargoGlobal ["MineDetector", 1]; + (backpackContainer _x) addItemCargoGlobal ["ToolKit", 1]; + + _x addWeaponGlobal "arifle_Mk20_F"; + + _x addPrimaryWeaponItem "optic_Aco_grn"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "sniper": { + _x addVest ([RECON_VEST] call Zen_ArrayGetRandom); + _x forceAddUniform "U_I_GhillieSuit"; + + _x addMagazines ["9Rnd_45ACP_Mag", 3]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (2 + floor random 2)]; + _x addMagazines ["5Rnd_127x108_Mag", (8 + floor random 3)]; + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 1]; + + _x addWeaponGlobal "Rangefinder"; + + _x addWeaponGlobal "srifle_GM6_F"; + _x addWeaponGlobal "hgun_ACPC2_F"; + + _x addPrimaryWeaponItem "optic_LRPS"; + }; + case "spotter": { + _x addVest ([RECON_VEST] call Zen_ArrayGetRandom); + + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (2 + floor random 2)]; + _x addMagazines ["30Rnd_556x45_Stanag", (8 + floor random 2)]; + _x addMagazineGlobal "LaserBatteries"; + + _x forceAddUniform "U_I_GhillieSuit"; + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 1]; + + _x addWeaponGlobal "Laserdesignator"; + + _x addWeaponGlobal "arifle_Mk20_F"; + + _x addPrimaryWeaponItem "optic_Aco_grn"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "uavoperator": { + _x addVest ([STD_VEST] call Zen_ArrayGetRandom); + _x addBackpack "B_UAV_01_backpack_F"; + + _x addMagazines ["HandGrenade", (2 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (2 + floor random 2)]; + _x addMagazines ["30Rnd_556x45_Stanag", (8 + floor random 3)]; + + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear ([STD_HEADGEAR] call Zen_ArrayGetRandom); + GIVE_GOGGLES + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 1]; + _x addWeaponGlobal "arifle_Mk20_F"; + + _x unlinkItem "itemGPS"; + _x linkItem "I_UAVterminal"; + + _x addPrimaryWeaponItem "optic_Aco_grn"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "crewman": { + _x addVest ([RECON_VEST] call Zen_ArrayGetRandom); + + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (2 + random 2)]; + _x addMagazines ["HandGrenade", (2 + random 2)]; + _x addMagazines ["30Rnd_556x45_Stanag", (5 + floor random 2)]; + + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear "H_HelmetCrew_I"; + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 1]; + + _x addWeaponGlobal "arifle_Mk20_F"; + _x addPrimaryWeaponItem "optic_Aco_grn"; + }; + case "officer": { + _x addVest "V_BandollierB_rgr"; + _x forceAddUniform "U_I_OfficerUniform"; + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 1]; + + _x addMagazines ["HandGrenade", 1]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), 1]; + _x addMagazines ["9Rnd_45ACP_Mag", 2]; + _x addMagazines ["30Rnd_556x45_Stanag", (5 + floor random 2)]; + + _x addHeadgear "H_MilCap_dgtl"; + + _x addWeaponGlobal "binocular"; + _x addWeaponGlobal "arifle_Mk20_F"; + _x addWeaponGlobal "hgun_ACPC2_F"; + + _x addPrimaryWeaponItem "optic_ACO_grn"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "helicopterpilot": { + _x forceAddUniform "U_I_HeliPilotCoveralls"; + _x addVest ([RECON_VEST] call Zen_ArrayGetRandom); + + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (2 + floor random 2)]; + _x addMagazines ["30Rnd_9x21_Mag", (7 + floor random 2)]; + + _x addHeadgear "H_PilotHelmetHeli_I"; + + _x addMagazines [([CHEMLIGHT] call Zen_ArrayGetRandom), 2]; + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 1]; + + _x addWeaponGlobal "Binocular"; + _x addWeaponGlobal "hgun_PDW2000_F"; + }; + case "helicoptercrew": { + _x forceAddUniform "U_I_HeliPilotCoveralls"; + _x addVest ([RECON_VEST] call Zen_ArrayGetRandom); + + _x addMagazines ["HandGrenade", 1]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (2 + floor random 2)]; + _x addMagazines ["30Rnd_556x45_Stanag", (7 + floor random 2)]; + + _x addHeadgear "H_CrewHelmetHeli_I"; + + _x addMagazines [([CHEMLIGHT] call Zen_ArrayGetRandom), 2]; + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 1]; + + _x addWeaponGlobal "arifle_Mk20_F"; + }; + case "fighterpilot": { + _x forceAddUniform "U_I_PilotCoveralls"; + _x addBackpack "B_Parachute"; + + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), 2]; + _x addMagazines ["9Rnd_45ACP_Mag", (3 + floor random 2)]; + + _x addHeadgear "H_PilotHelmetFighter_I"; + + _x addMagazines [([CHEMLIGHT] call Zen_ArrayGetRandom), 2]; + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 1]; + + _x addWeaponGlobal "Binocular"; + _x addWeaponGlobal "hgun_ACPC2_F"; + }; + case "diver": { + _x forceAddUniform "U_I_Wetsuit"; + _x addVest "V_RebreatherIA"; + + _x addMagazines ["HandGrenade", (1 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (1 + floor random 2)]; + _x addMagazines ["20Rnd_556x45_UW_mag", (4 + floor random 2)]; + _x addMagazines ["30Rnd_556x45_Stanag", (4 + floor random 2)]; + + _x addGoggles "G_Diving"; + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 1]; + + _x addWeaponGlobal "arifle_SDAR_F"; + }; + case "diversapper": { + _x forceAddUniform "U_I_Wetsuit"; + _x addVest "V_RebreatherIA"; + _x addBackpack "B_Bergen_blk"; + + _x addMagazines ["HandGrenade", (1 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (1 + floor random 2)]; + _x addMagazines ["20Rnd_556x45_UW_mag", (4 + floor random 2)]; + _x addMagazines ["30Rnd_556x45_Stanag", (4 + floor random 2)]; + _x addMagazines ["SatchelCharge_Remote_Mag", 2]; + + _x addGoggles "G_Diving"; + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 1]; + + _x addWeaponGlobal "arifle_SDAR_F"; + }; + case "diverland": { + _x forceAddUniform "U_I_Wetsuit"; + _x addVest "V_RebreatherIA"; + _x addBackpack "B_Bergen_blk"; + + _x addMagazines ["HandGrenade", (1 + floor random 3)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (1 + floor random 3)]; + _x addMagazines ["30Rnd_556x45_Stanag", (7 + floor random 3)]; + + _x addGoggles "G_Diving"; + + (unitBackpack _x) addItemCargoGlobal [([STD_UNIFORM] call Zen_ArrayGetRandom), 1]; + (unitBackpack _x) addItemCargoGlobal [([RECON_VEST] call Zen_ArrayGetRandom), 1]; + (unitBackpack _x) addItemCargoGlobal [([STD_HEADGEAR] call Zen_ArrayGetRandom), 1]; + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 2]; + _x addWeaponGlobal "arifle_Mk20_F"; + + _x addPrimaryWeaponItem "optic_Aco_grn"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "guerrilla": { + _x unassignItem "NVGoggles"; + _x removeItem "NVGoggles"; + _x unlinkItem "itemGPS"; + + _x addVest ([GUER_VEST] call Zen_ArrayGetRandom); + _x addBackpack ([GUER_RUCK] call Zen_ArrayGetRandom); + + _weapon = ([GUER_WEAPON] call Zen_ArrayGetRandom); + _magazine = (getArray (configFile >> "CfgWeapons" >> _weapon >> "magazines")) select 0; + + _x addMagazines ["HandGrenade", (2 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (2 + floor random 2)]; + _x addMagazines [_magazine, (8 + floor random 4)]; + + _x addHeadgear ([GUER_HEADGEAR] call Zen_ArrayGetRandom); + _x addGoggles ([GUER_GOGGLES] call Zen_ArrayGetRandom); + _x forceAddUniform ([GUER_UNIFORM] call Zen_ArrayGetRandom); + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 1]; + _x addWeaponGlobal _weapon; + }; + case "civilian": { + _x unassignItem "NVGoggles_INDEP"; + _x removeItem "NVGoggles_INDEP"; + _x unlinkItem "itemGPS"; + + _x forceAddUniform ([CIV_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear ([CIV_HEADGEAR] call Zen_ArrayGetRandom); + _x addGoggles ([CIV_GOGGLES] call Zen_ArrayGetRandom); + }; + default { + 0 = ["Zen_GiveLoadoutIndfor", "Invalid loadout identifier given", _this] call Zen_PrintError; + call Zen_StackPrint; + }; + }; + + if !((toLower ([_kit] call Zen_StringRemoveWhiteSpace)) in ["guerrilla", "civilian"]) then { + if (sunOrMoon == 1) then { + _x unassignItem "NVGoggles_INDEP"; + } else { + _x action ["NVGoggles", _x]; + }; + }; + + if (vehicle _unit == _unit) then { + _unit switchMove _unitAnim; + }; + } else { + if (isMultiplayer && {_sendPacket}) then { + _args = [_x, _kits, false]; + Zen_MP_Closure_Packet = ["Zen_GiveLoadoutIndfor", _args]; + (owner _x) publicVariableClient "Zen_MP_Closure_Packet"; + }; + }; +} forEach _units; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_GiveLoadoutOpfor.sqf b/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_GiveLoadoutOpfor.sqf new file mode 100644 index 0000000..474cb42 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_GiveLoadoutOpfor.sqf @@ -0,0 +1,664 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" +#include "Zen_FrameworkLibrary.sqf" + +#define RECON_HEADGEAR ["H_HelmetSpecO_ocamo", "H_MilCap_ocamo", "H_Watchcap_blk", "H_Bandanna_gry"] +#define STD_UNIFORM ["U_O_CombatUniform_ocamo", "U_O_SpecopsUniform_ocamo"] +#define STD_VEST ["V_HarnessO_brn", "V_HarnessOGL_brn", "V_HarnessOSpec_brn", "V_TacVest_brn", "V_TacVest_blk"] +#define STD_RUCK ["B_FieldPack_ocamo", "B_Carryall_ocamo", "B_FieldPack_khk", "B_Carryall_khk"] +#define STD_HEADGEAR ["H_HelmetO_ocamo", "H_HelmetLeaderO_ocamo", "H_HelmetSpecO_ocamo", "H_MilCap_ocamo", "H_Watchcap_blk", "H_Bandanna_gry"] +#define SMOKE ["SmokeShell", "SmokeShellYellow", "SmokeShellGreen", "SmokeShellRed", "SmokeShellPurple", "SmokeShellOrange", "SmokeShellBlue"] +#define CHEMLIGHT ["Chemlight_green", "Chemlight_red", "Chemlight_blue", "Chemlight_yellow"] + +#define GUER_WEAPON ["arifle_TRG21_F", "arifle_TRG20_F", "srifle_EBR_F", "arifle_Mk20_F", "arifle_Mk20_plain_F", "arifle_Mk20C_plain_F", "LMG_Zafir_F", "LMG_Mk200_F"] +#define GUER_UNIFORM ["U_IG_Guerilla1_1", "U_IG_Guerilla2_2", "U_IG_Guerilla2_3", "U_IG_Guerilla3_1", "U_IG_Guerilla3_2", "U_IG_Guerilla2_1", "U_BG_Guerilla1_1", "U_BG_Guerilla2_1", "U_BG_Guerilla2_2", "U_BG_Guerilla2_3", "U_BG_Guerilla3_1", "U_BG_Guerilla3_2", "U_C_Poor_1", "U_C_Poor_2", "U_C_Poloshirt_burgundy", "U_C_Poloshirt_redwhite", "U_IG_Guerrilla_6_1", "U_BG_leader", "U_I_G_Story_Protagonist_F"] +#define GUER_VEST ["V_BandollierB_khk", "V_BandollierB_cbr", "V_BandollierB_rgr", "V_BandollierB_blk", "V_BandollierB_oli", "V_TacVest_khk", "V_TacVest_brn", "V_TacVest_oli", "V_TacVest_blk", "V_TacVest_camo", "V_TacVest_blk_POLICE", "V_TacVestIR_blk", "V_TacVestCamo_khk", "V_Chestrig_khk", "V_Chestrig_rgr", "V_Chestrig_blk", "V_Chestrig_oli", "V_PlateCarrierIA1_dgtl"] +#define GUER_RUCK ["B_AssaultPack_khk", "B_AssaultPack_rgr", "B_AssaultPack_sgg", "B_AssaultPack_cbr", "B_FieldPack_khk", "B_FieldPack_oli", "B_FieldPack_cbr", "B_OutdoorPack_tan", "B_HuntingBackpack", "B_Kitbag_sgg", "B_Kitbag_cbr", "B_Bergen_sgg", "B_Bergen_mcamo", "B_Bergen_rgr", "B_BergenG", "B_BergenC_grn", "B_Carryall_oli", "B_Carryall_khk", "B_Carryall_cbr", "B_TacticalPack_rgr", "B_TacticalPack_oli"] +#define GUER_HEADGEAR ["H_Booniehat_khk", "H_Booniehat_grn", "H_Booniehat_tan", "H_Booniehat_dirty", "H_Booniehat_khk_hs", "H_MilCap_gry", "H_Cap_red", "H_Cap_blu", "H_Cap_oli", "H_Cap_tan", "H_Cap_blk", "H_Cap_grn", "H_Cap_grn_BI", "H_Cap_blk_Raven", "H_Cap_brn_SERO", "H_Cap_blk_ION", "H_Cap_oli_hs", "H_Shemag_khk", "H_Shemag_tan", "H_Shemag_olive", "H_ShemagOpen_khk", "H_ShemagOpen_tan", "H_Shemag_olive_hs", "H_Beret_blk", "H_Beret_blk_POLICE", "H_Beret_grn", "H_Beret_02", "H_Hat_blue", "H_Hat_brown", "H_Hat_camo", "H_Hat_grey", "H_Hat_checker", "H_Hat_tan", "H_StrawHat", "H_StrawHat_dark", "H_Watchcap_blk", "H_Watchcap_khk", "H_Watchcap_camo", "H_Watchcap_sgg", "H_Bandanna_surfer", "H_Bandanna_khk", "H_Bandanna_cbr", "H_Bandanna_sgg", "H_Bandanna_gry", "H_Bandanna_camo", "H_Bandanna_khk_hs", "H_Cap_press", "H_Cap_marshal", "H_Cap_police", "H_Watchcap_cbr", "H_Booniehat_oli"] +#define GUER_GOGGLES ["G_Bandanna_blk", "G_Bandanna_oli", "G_Bandanna_khk", "G_Bandanna_tan", "G_Bandanna_beast", "G_Bandanna_shades", "G_Bandanna_sport", "G_Bandanna_aviator", "G_Balaclava_blk", "G_Balaclava_oli", "G_Balaclava_combat", "G_Balaclava_lowprofile", "G_Aviator", "G_Tactical_Clear", "G_Tactical_Black"] + +#define CIV_UNIFORM ["U_C_Poloshirt_blue", "U_C_Poloshirt_burgundy", "U_C_Poloshirt_stripped", "U_C_Poloshirt_tricolour", "U_C_Poloshirt_salmon", "U_C_Poloshirt_redwhite", "U_C_Poor_1", "U_C_Poor_2", "U_C_WorkerCoveralls", "U_C_Poor_shorts_1", "U_C_Commoner_shorts", "U_C_ShirtSurfer_shorts", "U_C_TeeSurfer_shorts_1", "U_C_TeeSurfer_shorts_2"] +#define CIV_HEADGEAR ["H_Cap_red", "H_Cap_blu", "H_Cap_brn_SERO", "H_Booniehat_grn", "H_Booniehat_tan", "H_Booniehat_dirty", "H_Booniehat_dgtl", "H_Booniehat_khk", "H_Hat_blue", "H_Hat_brown", "H_Hat_camo", "H_Hat_grey", "H_Hat_checker", "H_Hat_tan", "H_Cap_tan", "H_Cap_blk", "H_Cap_grn", "H_Cap_grn_BI", "H_Cap_surfer", "H_Watchcap_blk", "H_Watchcap_khk", "H_Watchcap_camo", "H_Watchcap_sgg", "H_Bandanna_surfer", "H_Bandanna_khk", "H_Bandanna_cbr", "H_Bandanna_sgg", "H_Bandanna_gry", "H_StrawHat", "H_StrawHat_dark"] +#define CIV_GOGGLES ["G_Shades_Black", "G_Shades_Blue", "G_Sport_Blackred", "G_Spectacles", "G_Spectacles_Tinted", "G_Shades_Green", "G_Shades_Red", "G_Squares", "G_Squares_Tinted", "G_Sport_BlackWhite", "G_Sport_Blackyellow", "G_Sport_Greenblack", "G_Sport_Checkered", "G_Sport_Red", "G_Aviator"] + +_Zen_stack_Trace = ["Zen_GiveLoadoutOpfor", _this] call Zen_StackAdd; +private ["_units", "_kit", "_giveGL", "_weapon", "_magazine", "_i", "_unit", "_kits", "_sendPacket"]; + +if !([_this, [["VOID"], ["ARRAY", "STRING"], ["BOOL"]], [[], ["STRING"]], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_units = [(_this select 0)] call Zen_ConvertToObjectArray; + +ZEN_STD_Parse_GetSetArgumentOptional(_kits, 1, "", "") +ZEN_STD_Parse_GetSetArgumentDefault(_sendPacket, 2, true, false) + +{ + if (local _x) then { + _unit = _x; + _unitAnim = animationState _unit; + if ([_kits, ""] call Zen_ValuesAreEqual) then { + _kit = [["Rifleman", "AT Rifleman", "Assistant AA", "Assistant AT", "Assistant AR", "Team Leader", "Squad Leader", "Grenadier", "Auto Rifleman", "Marksman", "Medic", "AA Specialist", "AT Specialist", "Sapper", "Miner", "EOD Specialist"]] call Zen_ArrayGetRandom; + } else { + _kit = [_kits] call Zen_ArrayGetRandom; + }; + + removeAllWeapons _x; + removeAllContainers _x; + removeAllAssignedItems _x; + removeBackpack _x; + removeVest _x; + removeGoggles _x; + removeHeadgear _x; + + { + _unit linkItem _x; + } forEach ["ItemGPS", "ItemWatch", "ItemRadio", "ItemMap", "ItemCompass", "NVGoggles_OPFOR"]; + + removeUniform _x; + + switch (toLower ([_kit] call Zen_StringRemoveWhiteSpace)) do { + case "recon": { + _x addVest ([STD_VEST] call Zen_ArrayGetRandom); + + _x addMagazines ["HandGrenade", (1 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (2 + floor random 2)]; + _x addMagazines ["30Rnd_65x39_caseless_green", (7 + floor random 3)]; + + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear ([RECON_HEADGEAR] call Zen_ArrayGetRandom); + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 1]; + + _x addMagazines [([CHEMLIGHT] call Zen_ArrayGetRandom), 2]; + _x addMagazineGlobal "O_IR_Grenade"; + + _x addWeaponGlobal "Rangefinder"; + _x addWeaponGlobal "arifle_Katiba_F"; + + _x addPrimaryWeaponItem "muzzle_snds_H"; + _x addPrimaryWeaponItem "optic_ACO_grn"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "rifleman": { + _x addVest ([STD_VEST] call Zen_ArrayGetRandom); + + _x addMagazines ["HandGrenade", (2 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (1 + floor random 2)]; + _x addMagazines ["30Rnd_65x39_caseless_green", (11 + floor random 4)]; + + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear ([STD_HEADGEAR] call Zen_ArrayGetRandom); + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 2]; + (uniformContainer _x) addItemCargoGlobal ["acc_flashlight", 1]; + + _x addWeaponGlobal "arifle_Katiba_F"; + + _x addPrimaryWeaponItem "optic_ACO_grn"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "grenadier": { + _x addVest ([STD_VEST] call Zen_ArrayGetRandom); + + _x addMagazines ["HandGrenade", (2 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (1 + floor random 3)]; + _x addMagazines ["30Rnd_65x39_caseless_green", (10 + floor random 5)]; + _x addMagazines ["1Rnd_HE_Grenade_shell", (11 + floor random 6)]; + + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear ([STD_HEADGEAR] call Zen_ArrayGetRandom); + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 2]; + + _x addWeaponGlobal "arifle_Katiba_GL_F"; + + _x addPrimaryWeaponItem "optic_ACO_grn"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "autorifleman": { + _x addVest ([STD_VEST] call Zen_ArrayGetRandom); + _x addBackpack ([STD_RUCK] call Zen_ArrayGetRandom); + + _x addMagazines ["HandGrenade", (2 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (1 + floor random 3)]; + _x addMagazines ["200Rnd_65x39_cased_Box", (3 + floor random 2)]; + + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear ([STD_HEADGEAR] call Zen_ArrayGetRandom); + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 2]; + + _x addWeaponGlobal "LMG_Mk200_F"; + + _x addPrimaryWeaponItem "optic_ACO_grn"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "marksman": { + _x addVest ([STD_VEST] call Zen_ArrayGetRandom); + + _x addMagazines ["HandGrenade", (2 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (2 + floor random 2)]; + _x addMagazines ["10Rnd_762x54_Mag", (9 + floor random 3)]; + + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear ([STD_HEADGEAR] call Zen_ArrayGetRandom); + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 1]; + + _x addWeaponGlobal "srifle_DMR_01_F"; + + _x addPrimaryWeaponItem "optic_DMS"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "teamleader": { + _x addVest ([STD_VEST] call Zen_ArrayGetRandom); + _x addBackpack ([STD_RUCK] call Zen_ArrayGetRandom); + + _giveGL = random 1; + + _x addMagazines ["HandGrenade", (2 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (3 + floor random 2)]; + _x addMagazines ["30Rnd_65x39_caseless_green", (10 + floor random 4)]; + + if (_giveGL > 0.5) then { + _x addMagazines ["1Rnd_HE_Grenade_shell", (10 + floor random 5)]; + } else { + _x addMagazines ["30Rnd_65x39_caseless_green", (3 + floor random 2)]; + }; + + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear ([STD_HEADGEAR] call Zen_ArrayGetRandom); + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 2]; + (uniformContainer _x) addItemCargoGlobal ["acc_flashlight", 1]; + + _x addWeaponGlobal "Binocular"; + + if (_giveGL > 0.5) then { + _x addWeaponGlobal "arifle_Katiba_GL_F"; + } else { + _x addWeaponGlobal "arifle_Katiba_F"; + }; + + _x addPrimaryWeaponItem "optic_ACO_grn"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "squadleader": { + _x addVest ([STD_VEST] call Zen_ArrayGetRandom); + _x addBackpack ([STD_RUCK] call Zen_ArrayGetRandom); + + _x addMagazines ["HandGrenade", (2 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (4 + floor random 2)]; + _x addMagazines ["30Rnd_65x39_caseless_green", (10 + floor random 5)]; + _x addMagazines ["1Rnd_HE_Grenade_shell", (10 + floor random 4)]; + _x addMagazines ["1Rnd_smokeblue_Grenade_shell", (5 + floor random 2)]; + + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear ([STD_HEADGEAR] call Zen_ArrayGetRandom); + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 2]; + + _x addWeaponGlobal "rangefinder"; + _x addWeaponGlobal "arifle_Katiba_GL_F"; + + _x addPrimaryWeaponItem "optic_Arco"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "atrifleman": { + _x addVest ([STD_VEST] call Zen_ArrayGetRandom); + _x addBackpack ([STD_RUCK] call Zen_ArrayGetRandom); + + _x addMagazines ["HandGrenade", (2 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (1 + floor random 2)]; + _x addMagazines ["30Rnd_65x39_caseless_green", (9 + floor random 3)]; + _x addMagazines ["RPG32_F", 1]; + _x addMagazines ["RPG32_HE_F", 1]; + + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear ([STD_HEADGEAR] call Zen_ArrayGetRandom); + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 2]; + + _x addWeaponGlobal "arifle_Katiba_F"; + _x addWeaponGlobal "launch_RPG32_F"; + _x addMagazines ["RPG32_F", 1]; + + _x addPrimaryWeaponItem "optic_ACO_grn"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "atspecialist": { + _x addVest ([STD_VEST] call Zen_ArrayGetRandom); + _x addBackpack ([STD_RUCK] call Zen_ArrayGetRandom); + + _x addMagazines ["HandGrenade", (2 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (2 + floor random 2)]; + _x addMagazines ["30Rnd_65x39_caseless_green", (8 + floor random 5)]; + _x addMagazines ["Titan_AT", 2]; + _x addMagazines ["Titan_AP", 1]; + + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear ([STD_HEADGEAR] call Zen_ArrayGetRandom); + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 2]; + + _x addWeaponGlobal "arifle_Katiba_F"; + _x addWeaponGlobal "launch_O_Titan_short_F"; + + _x addMagazines ["Titan_AP", 1]; + + _x addPrimaryWeaponItem "optic_ACO_grn"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "aaspecialist": { + _x addVest ([STD_VEST] call Zen_ArrayGetRandom); + _x addBackpack ([STD_RUCK] call Zen_ArrayGetRandom); + + _x addMagazines ["HandGrenade", (2 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (2 + floor random 2)]; + _x addMagazines ["30Rnd_65x39_caseless_green", (7 + floor random 5)]; + _x addMagazines ["Titan_AA", 1]; + + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear ([STD_HEADGEAR] call Zen_ArrayGetRandom); + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 2]; + + _x addWeaponGlobal "arifle_Katiba_F"; + _x addWeaponGlobal "launch_O_Titan_F"; + + _x addMagazines ["Titan_AA", 1]; + + _x addPrimaryWeaponItem "optic_ACO_grn"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "assistantaa": { + _x addVest ([STD_VEST] call Zen_ArrayGetRandom); + _x addBackpack ([STD_RUCK] call Zen_ArrayGetRandom); + + _x addMagazines ["HandGrenade", (2 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (2 + floor random 2)]; + _x addMagazines ["30Rnd_65x39_caseless_green", (8 + floor random 4)]; + _x addMagazines ["Titan_AA", 2]; + + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear ([STD_HEADGEAR] call Zen_ArrayGetRandom); + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 2]; + + _x addWeaponGlobal "arifle_Katiba_F"; + + _x addPrimaryWeaponItem "optic_ACO_grn"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "assistantat": { + _x addVest ([STD_VEST] call Zen_ArrayGetRandom); + _x addBackpack ([STD_RUCK] call Zen_ArrayGetRandom); + + _x addMagazines ["HandGrenade", (2 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (2 + floor random 2)]; + _x addMagazines ["30Rnd_65x39_caseless_green", (8 + floor random 4)]; + _x addMagazines ["Titan_AT", 2]; + _x addMagazines ["Titan_AP", 1]; + + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear ([STD_HEADGEAR] call Zen_ArrayGetRandom); + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 2]; + + _x addWeaponGlobal "arifle_Katiba_F"; + + _x addPrimaryWeaponItem "optic_ACO_grn"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "assistantar": { + _x addVest ([STD_VEST] call Zen_ArrayGetRandom); + _x addBackpack ([STD_RUCK] call Zen_ArrayGetRandom); + + _x addMagazines ["HandGrenade", (2 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (2 + floor random 2)]; + _x addMagazines ["30Rnd_65x39_caseless_green", (8 + floor random 4)]; + _x addMagazines ["200Rnd_65x39_cased_Box", (5 + floor random 2)]; + + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear ([STD_HEADGEAR] call Zen_ArrayGetRandom); + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 2]; + + _x addWeaponGlobal "arifle_Katiba_F"; + + _x addPrimaryWeaponItem "optic_ACO_grn"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "medic": { + _x addVest ([STD_VEST] call Zen_ArrayGetRandom); + _x addBackpack ([STD_RUCK] call Zen_ArrayGetRandom); + + _x addMagazines ["HandGrenade", (1 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (3 + floor random 3)]; + _x addMagazines ["30Rnd_65x39_caseless_green", (8 + floor random 4)]; + + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear ([STD_HEADGEAR] call Zen_ArrayGetRandom); + + (backpackContainer _x) addItemCargoGlobal ["Medikit", 1]; + (backpackContainer _x) addItemCargoGlobal ["FirstAidKit", 6]; + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 2]; + (uniformContainer _x) addItemCargoGlobal ["acc_flashlight", 1]; + + _x addWeaponGlobal "arifle_Katiba_F"; + + _x addPrimaryWeaponItem "optic_ACO_grn"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "sapper": { + _x addVest ([STD_VEST] call Zen_ArrayGetRandom); + _x addBackpack ([STD_RUCK] call Zen_ArrayGetRandom); + + _x addMagazines ["HandGrenade", (2 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (2 + floor random 2)]; + _x addMagazines ["30Rnd_65x39_caseless_green", (8 + floor random 3)]; + _x addMagazines ["SLAMDirectionalMine_Wire_Mag", 3]; + _x addMagazines ["SatchelCharge_Remote_Mag", 2]; + + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear ([STD_HEADGEAR] call Zen_ArrayGetRandom); + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 1]; + + _x addWeaponGlobal "arifle_Katiba_F"; + + _x addPrimaryWeaponItem "optic_ACO_grn"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "miner": { + _x addVest ([STD_VEST] call Zen_ArrayGetRandom); + _x addBackpack ([STD_RUCK] call Zen_ArrayGetRandom); + + _x addMagazines ["HandGrenade", (2 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (2 + floor random 2)]; + _x addMagazines ["30Rnd_65x39_caseless_green", (8 + floor random 3)]; + _x addMagazines ["ATMine_Range_Mag", 1]; + _x addMagazines ["APERSBoundingMine_Range_Mag", 2]; + _x addMagazines ["APERSTripMine_Wire_Mag", 2]; + + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear ([STD_HEADGEAR] call Zen_ArrayGetRandom); + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 1]; + + _x addWeaponGlobal "arifle_Katiba_F"; + + _x addPrimaryWeaponItem "optic_ACO_grn"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "eodspecialist": { + _x addVest ([STD_VEST] call Zen_ArrayGetRandom); + _x addBackpack ([STD_RUCK] call Zen_ArrayGetRandom); + + _x addMagazines ["HandGrenade", (2 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (2 + floor random 2)]; + _x addMagazines ["30Rnd_65x39_caseless_green", (8 + floor random 3)]; + _x addMagazines ["DemoCharge_Remote_Mag", 3]; + + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear ([STD_HEADGEAR] call Zen_ArrayGetRandom); + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 1]; + (backpackContainer _x) addItemCargoGlobal ["MineDetector", 1]; + (backpackContainer _x) addItemCargoGlobal ["ToolKit", 1]; + + _x addWeaponGlobal "arifle_Katiba_F"; + + _x addPrimaryWeaponItem "optic_ACO_grn"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "sniper": { + _x addVest ([STD_VEST] call Zen_ArrayGetRandom); + _x forceAddUniform "U_O_GhillieSuit"; + + _x addMagazines ["6Rnd_45ACP_Cylinder", 3]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (2 + floor random 2)]; + _x addMagazines ["5Rnd_127x108_Mag", (8 + floor random 3)]; + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 1]; + + _x addWeaponGlobal "Rangefinder"; + + _x addWeaponGlobal "srifle_GM6_F"; + _x addWeaponGlobal "hgun_Pistol_heavy_02_F"; + + _x addPrimaryWeaponItem "optic_LRPS"; + }; + case "spotter": { + _x addVest ([STD_VEST] call Zen_ArrayGetRandom); + + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (2 + floor random 2)]; + _x addMagazines ["30Rnd_65x39_caseless_green", (8 + floor random 2)]; + _x addMagazineGlobal "LaserBatteries"; + + _x forceAddUniform "U_O_GhillieSuit"; + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 1]; + + _x addWeaponGlobal "Laserdesignator"; + + _x addWeaponGlobal "arifle_Katiba_F"; + + _x addPrimaryWeaponItem "optic_Aco_grn"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "uavoperator": { + _x addVest ([STD_VEST] call Zen_ArrayGetRandom); + _x addBackpack "B_UAV_01_backpack_F"; + + _x addMagazines ["HandGrenade", (2 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (2 + floor random 2)]; + _x addMagazines ["30Rnd_65x39_caseless_green", (8 + floor random 3)]; + + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear ([STD_HEADGEAR] call Zen_ArrayGetRandom); + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 1]; + _x addWeaponGlobal "arifle_Katiba_F"; + + _x unlinkItem "itemGPS"; + _x linkItem "O_UAVterminal"; + + _x addPrimaryWeaponItem "optic_ACO_grn"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "officer": { + _x addVest "V_BandollierB_khk"; + _x forceAddUniform "U_O_OfficerUniform_ocamo"; + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 1]; + + _x addMagazines ["HandGrenade", 1]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), 1]; + _x addMagazines ["6Rnd_45ACP_Cylinder", 2]; + _x addMagazines ["30Rnd_65x39_caseless_green", (5 + floor random 2)]; + + _x addHeadgear "H_MilCap_ocamo"; + + _x addWeaponGlobal "binocular"; + _x addWeaponGlobal "arifle_Katiba_F"; + _x addWeaponGlobal "hgun_Pistol_heavy_02_F"; + + _x addPrimaryWeaponItem "optic_ACO_grn"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "crewman": { + _x addVest ([STD_VEST] call Zen_ArrayGetRandom); + + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (2 + random 2)]; + _x addMagazines ["HandGrenade", (2 + random 2)]; + _x addMagazines ["30Rnd_65x39_caseless_green", (5 + floor random 2)]; + + _x forceAddUniform ([STD_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear "H_HelmetCrew_O"; + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 1]; + + _x addWeaponGlobal "arifle_Katiba_F"; + _x addPrimaryWeaponItem "optic_Aco_grn"; + }; + case "helicopterpilot": { + _x forceAddUniform "U_O_PilotCoveralls"; + + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), 2]; + _x addMagazines ["30Rnd_9x21_Mag", (4 + floor random 2)]; + + _x addHeadgear "H_PilotHelmetHeli_O"; + + _x addMagazines [([CHEMLIGHT] call Zen_ArrayGetRandom), 2]; + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 1]; + + _x addWeaponGlobal "Binocular"; + _x addWeaponGlobal "SMG_02_F"; + + _x addPrimaryWeaponItem "optic_Aco_grn"; + }; + case "helicoptercrew": { + _x forceAddUniform "U_O_PilotCoveralls"; + _x addVest ([STD_VEST] call Zen_ArrayGetRandom); + + _x addMagazines ["HandGrenade", 1]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (2 + floor random 2)]; + _x addMagazines ["30Rnd_65x39_caseless_green", (7 + floor random 2)]; + + _x addHeadgear "H_CrewHelmetHeli_O"; + + _x addMagazines [([CHEMLIGHT] call Zen_ArrayGetRandom), 2]; + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 1]; + + _x addWeaponGlobal "arifle_Katiba_F"; + }; + case "fighterpilot": { + _x forceAddUniform "U_O_PilotCoveralls"; + _x addBackpack "B_Parachute"; + + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), 2]; + _x addMagazines ["6Rnd_45ACP_Cylinder", (3 + floor random 2)]; + + _x addHeadgear "H_PilotHelmetFighter_O"; + + _x addMagazines [([CHEMLIGHT] call Zen_ArrayGetRandom), 2]; + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 1]; + + _x addWeaponGlobal "Binocular"; + _x addWeaponGlobal "hgun_Pistol_heavy_02_F"; + }; + case "diver": { + _x forceAddUniform "U_O_Wetsuit"; + _x addVest "V_RebreatherIR"; + + _x addMagazines ["HandGrenade", (1 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (1 + floor random 2)]; + _x addMagazines ["20Rnd_556x45_UW_mag", (4 + floor random 2)]; + _x addMagazines ["30Rnd_556x45_Stanag", (4 + floor random 2)]; + + _x addGoggles "G_Diving"; + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 1]; + + _x addWeaponGlobal "arifle_SDAR_F"; + }; + case "diversapper": { + _x forceAddUniform "U_O_Wetsuit"; + _x addVest "V_RebreatherIR"; + _x addBackpack "B_FieldPack_blk"; + + _x addMagazines ["HandGrenade", (1 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (1 + floor random 2)]; + _x addMagazines ["20Rnd_556x45_UW_mag", (4 + floor random 2)]; + _x addMagazines ["30Rnd_556x45_Stanag", (4 + floor random 2)]; + _x addMagazines ["SatchelCharge_Remote_Mag", 2]; + + _x addGoggles "G_Diving"; + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 1]; + + _x addWeaponGlobal "arifle_SDAR_F"; + }; + case "diverland": { + _x forceAddUniform "U_O_Wetsuit"; + _x addVest "V_RebreatherIR"; + _x addBackpack "B_FieldPack_blk"; + + _x addMagazines ["HandGrenade", (1 + floor random 3)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (1 + floor random 3)]; + _x addMagazines ["30Rnd_65x39_caseless_green", (7 + floor random 3)]; + + _x addGoggles "G_Diving"; + + (unitBackpack _x) addItemCargoGlobal [([STD_UNIFORM] call Zen_ArrayGetRandom), 1]; + (unitBackpack _x) addItemCargoGlobal [([STD_VEST] call Zen_ArrayGetRandom), 1]; + (unitBackpack _x) addItemCargoGlobal [([STD_HEADGEAR] call Zen_ArrayGetRandom), 1]; + + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 2]; + _x addWeaponGlobal "arifle_Katiba_F"; + + _x addPrimaryWeaponItem "optic_Aco_grn"; + _x addPrimaryWeaponItem "acc_pointer_IR"; + }; + case "guerrilla": { + _x unassignItem "NVGoggles"; + _x removeItem "NVGoggles"; + _x unlinkItem "itemGPS"; + + _x addVest ([GUER_VEST] call Zen_ArrayGetRandom); + _x addBackpack ([GUER_RUCK] call Zen_ArrayGetRandom); + + _weapon = ([GUER_WEAPON] call Zen_ArrayGetRandom); + _magazine = (getArray (configFile >> "CfgWeapons" >> _weapon >> "magazines")) select 0; + + _x addMagazines ["HandGrenade", (2 + floor random 2)]; + _x addMagazines [([SMOKE] call Zen_ArrayGetRandom), (2 + floor random 2)]; + _x addMagazines [_magazine, (8 + floor random 4)]; + + _x addHeadgear ([GUER_HEADGEAR] call Zen_ArrayGetRandom); + _x addGoggles ([GUER_GOGGLES] call Zen_ArrayGetRandom); + _x forceAddUniform ([GUER_UNIFORM] call Zen_ArrayGetRandom); + (uniformContainer _x) addItemCargoGlobal ["FirstAidKit", 1]; + _x addWeaponGlobal _weapon; + }; + case "civilian": { + _x unassignItem "NVGoggles_OPFOR"; + _x removeItem "NVGoggles_OPFOR"; + _x unlinkItem "itemGPS"; + + _x forceAddUniform ([CIV_UNIFORM] call Zen_ArrayGetRandom); + _x addHeadgear ([CIV_HEADGEAR] call Zen_ArrayGetRandom); + _x addGoggles ([CIV_GOGGLES] call Zen_ArrayGetRandom); + }; + default { + 0 = ["Zen_GiveLoadoutOpfor", "Invalid loadout identifier given", _this] call Zen_PrintError; + call Zen_StackPrint; + }; + }; + + if !((toLower ([_kit] call Zen_StringRemoveWhiteSpace)) in ["guerrilla", "civilian"]) then { + if (sunOrMoon == 1) then { + _x unassignItem "NVGoggles_OPFOR"; + } else { + _x action ["NVGoggles", _x]; + }; + }; + + if (vehicle _unit == _unit) then { + _unit switchMove _unitAnim; + }; + } else { + if (isMultiplayer && {_sendPacket}) then { + _args = [_x, _kits, false]; + Zen_MP_Closure_Packet = ["Zen_GiveLoadoutOpfor", _args]; + (owner _x) publicVariableClient "Zen_MP_Closure_Packet"; + }; + }; +} forEach _units; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_GiveMagazine.sqf b/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_GiveMagazine.sqf new file mode 100644 index 0000000..b4f24d1 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_GiveMagazine.sqf @@ -0,0 +1,91 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#define PICK_ANIM(POSE, EMPTY, RIFLE, HAND) case POSE: { \ + switch (true) do { \ + case ((currentWeapon _giver) == (primaryWeapon _giver)): { \ + _giveAnim = RIFLE; \ + }; \ + case ((currentWeapon _giver) == (handgunWeapon _giver)): { \ + _giveAnim = HAND; \ + }; \ + default { \ + _giveAnim = EMPTY; \ + }; \ + }; \ + }; + +if (isDedicated || !hasInterface) exitWith {}; +_Zen_stack_Trace = ["Zen_GiveMagazine", _this] call Zen_StackAdd; +private ["_giver", "_receiver", "_receiverAcceptedMags", "_magName", "_giverMags", "_giveAnim", "_weapon"]; + +if !([_this, [["OBJECT"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_giver = _this select 0; + +_receiver = objNull; +_giveAnim = ""; + +{ + if ((_giver != _x) && ((side _x) == (side _giver)) && ([_giver, _x, 120] call Zen_IsFacing)) exitWith { + _receiver = _x; + }; +} forEach ((getPosATL _giver) nearEntities ["Man", 3]); + +if (isNull _receiver) exitWith { // this should never be true, handled by addAction condition + 0 = ["Zen_GiveMagazine", "Action presented for invalid target (dev error)", _this] call Zen_PrintError; + call Zen_StackPrint; + call Zen_StackRemove; +}; + +_weapon = currentWeapon _receiver; +if (_weapon isEqualTo "") then { + _weapon = primaryWeapon _receiver; +}; + +_receiverAcceptedMags = getArray (configFile >> "CfgWeapons" >> _weapon >> "magazines"); +_giverMags = magazines _giver; + +if (count _giverMags == 0) exitWith { + hint "You have no magazines"; + call Zen_StackRemove; +}; + +_giverMags = [_giverMags] call Zen_ArrayRemoveDuplicates; + +if ([_giverMags, _receiverAcceptedMags] call Zen_ValuesAreNotInArray) exitWith { + hint format ["You have no magazines that match %1's current weapon", (name _receiver)]; + call Zen_StackRemove; +}; + +{ + if (_x in _giverMags) exitWith { + _magName = getText (configFile >> "CfgMagazines" >> _x >> "displayName"); + if (_receiver canAddItemToUniform _x || _receiver canAddItemToVest _x || _receiver canAddItemToBackpack _x) then { + + switch (stance _giver) do { + PICK_ANIM("STAND", "AinvPercMstpSnonWnonDnon_Putdown_AmovPercMstpSnonWnonDnon", "AinvPercMstpSrasWrflDnon_Putdown_AmovPercMstpSrasWrflDnon", "AinvPercMstpSrasWpstDnon_Putdown_AmovPercMstpSrasWpstDnon") + PICK_ANIM("CROUCH", "AinvPknlMstpSnonWnonDnon_Putdown_AmovPknlMstpSnonWnonDnon", "AinvPknlMstpSrasWrflDnon_Putdown_AmovPknlMstpSrasWrflDnon", "AinvPknlMstpSrasWpstDnon_Putdown_AmovPknlMstpSrasWpstDnon") + PICK_ANIM("PRONE", "AinvPpneMstpSnonWnonDnon_Putdown_AmovPpneMstpSnonWnonDnon", "AinvPpneMstpSrasWrflDnon_Putdown_AmovPpneMstpSrasWrflDnon", "AinvPpneMstpSrasWpstDnon_Putdown_AmovPpneMstpSrasWpstDnon") + }; + + _giver playMoveNow _giveAnim; + _giver removeMagazineGlobal _x; + _receiver addMagazineGlobal _x; + hint format ["You have given %1 a %2 magazine", (name _receiver), _magName]; + + if (isMultiplayer) then { + Zen_MP_Closure_Packet = ["Zen_GiveMagazine_ReceiverHint_MP", [_receiver, _giver, _magName]]; + (owner _receiver) publicVariableClient "Zen_MP_Closure_Packet"; + }; + } else { + hint format ["%1 does not have room in his inventory for a %2 magazine", (name _receiver), _magName]; + }; + }; +} forEach _receiverAcceptedMags; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_LoadoutDialog.hpp b/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_LoadoutDialog.hpp new file mode 100644 index 0000000..d7461b0 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_LoadoutDialog.hpp @@ -0,0 +1,103 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +class Zen_SimpleDialog { + type = 0; + style = 0; + sizeEx = 0.03; + font = "puristaMedium"; + text = ""; + colorText[] = {0, 0, 0, 1}; + colorBackground[] = {0, 0, 0, 0.75}; +}; + +class Zen_SimpleButton { + type = 1; + style = "0x02 + 0x100"; + w = 0.1; + h = 0.05; + offsetX = 0.003; + offsetY = 0.003; + offsetPressedX = 0.002; + offsetPressedY = 0.002; + sizeEx = 0.05; + borderSize = 0; + font = "puristaMedium"; + colorText[] = {0.5, 0.5, 0.5, 1}; + colorDisabled[] = {0.4, 0.4, 0.4, 1}; + colorBackground[] = {1, 0.5, 0, 0.5}; + colorBackgroundActive[] = {1, 0.5, 0, 1}; + colorBackgroundDisabled[] = {0.9, 0.9, 0.9, 1}; + colorFocused[] = {1, 0.5, 0, 1}; + colorShadow[] = {0.05, 0, 0.05, 1}; + colorBorder[] = {0.05, 0, 0.05, 1}; + soundEnter[] = {"\a3\ui_f\data\Sound\RscButton\soundClick.wss", 0.1, 1}; + soundPush[] = {"\a3\ui_f\data\Sound\RscButton\soundClick.wss", 0.1, 1}; + soundClick[] = {"\a3\ui_f\data\Sound\RscButton\soundClick.wss", 0.1, 1}; + soundEscape[] = {"\a3\ui_f\data\Sound\RscButton\soundClick.wss", 0.1, 1}; +}; + +class Zen_SimpleList { + type = 5; + style = "0 + 0x10"; + rowHeight = 0.05; + sizeEx = 0.05; + font = "puristaMedium"; + colorText[] = {0.5, 0.5, 0.5, 1}; + colorSelect[] = {0.9, 0.9, 0.9, 1}; + colorDisabled[] = {0.8, 0.8, 0.8, 1}; + class ListScrollBar { + color[] = {0.5, 0.5, 0.5, 1}; + colorActive[] = {0.9, 0.9, 0.9, 1}; + colorDisabled[] = {0.8, 0.8, 0.8, 1}; + shadow = 0; + thumb = "\a3\ui_f\data\gui\cfg\Scrollbar\thumb_ca.paa"; + arrowFull = "\a3\ui_f\data\gui\cfg\Scrollbar\arrowfull_ca.paa"; + arrowEmpty = "\a3\ui_f\data\gui\cfg\Scrollbar\arrowempty_ca.paa"; + border = "\a3\ui_f\data\gui\cfg\Scrollbar\border_ca.paa"; + }; + autoScrollRewind = 0; + autoScrollDelay = 1; + autoScrollSpeed = -1; + maxHistoryDelay = 1.0; + soundSelect[] = {}; +}; + +class Zen_LoadoutsDialog { + idd = 4000; + class controls { + class Zen_LoadoutsDialogBox : Zen_SimpleDialog { + idc = 4001; + x = 0; + y = 0; + w = 0.8; + h = 0.9; + }; + class Zen_DialogList : Zen_SimpleList { + idc = 4002; + x = 0.1; + y = 0.1; + w = 0.5; + h = 0.7; + onlbdblclick = "[] spawn Zen_LoadoutDialogEquip"; + }; + class Zen_OkButton : Zen_SimpleButton { + idc = 4003; + x = 0.65; + y = 0.3; + // text = "OK"; + text = $STR_disp_ok; + onbuttonclick = "[] spawn Zen_LoadoutDialogEquip"; + default = 1; + }; + class Zen_CancelButton : Zen_SimpleButton { + idc = 4004; + x = 0.65; + y = 0.4; + // text = "Cancel"; + text = $STR_disp_cancel; + onbuttonclick = "closeDialog 4000"; + }; + }; +}; diff --git a/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_LoadoutDialogEquip.sqf b/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_LoadoutDialogEquip.sqf new file mode 100644 index 0000000..13f0ec4 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_LoadoutDialogEquip.sqf @@ -0,0 +1,42 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_LoadoutDialogEquip", _this] call Zen_StackAdd; +private ["_kit", "_unit", "_object", "_id", "_index", "_maxCount", "_curCount", "_loadoutData"]; + +_kit = lbData [4002, lbCurSel 4002]; + +if (_kit == "") exitWith { + hint "No loadout selected"; + call Zen_StackRemove; +}; + +_object = player getVariable "Zen_LoadoutsDialogObject"; +_unit = _object getVariable "Zen_LoadoutsDialogUser"; +_id = _object getVariable "Zen_LoadoutsDialogAction"; + +player setVariable ["Zen_LoadoutsDialogObject", nil]; +_object setVariable ["Zen_LoadoutsDialogUser", nil]; + +_index = ([Zen_Loadout_Action_Array_Local, _id, 0] call Zen_ArrayGetNestedIndex) select 0; +_maxCount = (Zen_Loadout_Action_Array_Local select _index) select 1; +_curCount = ((Zen_Loadout_Action_Array_Local select _index) select 2) + 1; + +if ((_maxCount != -1) && {_curCount >= _maxCount}) then { + _object removeAction _id; + 0 = [Zen_Loadout_Action_Array_Local, _index] call Zen_ArrayRemoveIndex; +} else { + Zen_Loadout_Action_Array_Local set [_index, [_id, _maxCount, _curCount]]; +}; + +_loadoutData = [_kit, false] call Zen_GetLoadoutData; +if (count _loadoutData > 0) then { + 0 = [_unit, _kit] call Zen_GiveLoadoutCustom; +} else { + 0 = [_unit, (side _unit), _kit] call Zen_GiveLoadout; +}; + +closeDialog 4000; +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_LoadoutFunctionsCompile.sqf b/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_LoadoutFunctionsCompile.sqf new file mode 100644 index 0000000..e4e6fa7 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_LoadoutFunctionsCompile.sqf @@ -0,0 +1,41 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +Zen_Loadout_Array_Global = []; +Zen_Loadout_Action_Array_Local = []; + +Zen_AddGiveMagazine = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_LoadoutFunctions\Zen_AddGiveMagazine.sqf"; +Zen_AddLoadoutDialog = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_LoadoutFunctions\Zen_AddLoadoutDialog.sqf"; +Zen_AddRepackMagazines = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_LoadoutFunctions\Zen_AddRepackMagazines.sqf"; +Zen_CreateLoadout = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_LoadoutFunctions\Zen_CreateLoadout.sqf"; +Zen_GetLoadoutData = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_LoadoutFunctions\Zen_GetLoadoutData.sqf"; +Zen_GetUnitLoadout = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_LoadoutFunctions\Zen_GetUnitLoadout.sqf"; +Zen_GiveLoadout = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_LoadoutFunctions\Zen_GiveLoadout.sqf"; +Zen_GiveLoadoutBlufor = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_LoadoutFunctions\Zen_GiveLoadoutBlufor.sqf"; +Zen_GiveLoadoutCargo = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_LoadoutFunctions\Zen_GiveLoadoutCargo.sqf"; +Zen_GiveLoadoutCustom = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_LoadoutFunctions\Zen_GiveLoadoutCustom.sqf"; +Zen_GiveLoadoutIndfor = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_LoadoutFunctions\Zen_GiveLoadoutIndfor.sqf"; +Zen_GiveLoadoutOpfor = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_LoadoutFunctions\Zen_GiveLoadoutOpfor.sqf"; +Zen_GiveMagazine = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_LoadoutFunctions\Zen_GiveMagazine.sqf"; +Zen_LoadoutDialogEquip = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_LoadoutFunctions\Zen_LoadoutDialogEquip.sqf"; +Zen_RemoveLoadout = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_LoadoutFunctions\Zen_RemoveLoadout.sqf"; +Zen_RepackMagazines = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_LoadoutFunctions\Zen_RepackMagazines.sqf"; +Zen_ShowLoadoutDialog = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_LoadoutFunctions\Zen_ShowLoadoutDialog.sqf"; +Zen_UpdateLoadout = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_LoadoutFunctions\Zen_UpdateLoadout.sqf"; + +Zen_GiveMagazine_ReceiverHint_MP = { + private ["_receiver", "_giver", "_magazine"]; + + _receiver = _this select 0; + _giver = _this select 1; + _magazine = _this select 2; + + if (player == _receiver) then { + hint format ["%1 has given you a %2 magazine", (name _giver), _magazine]; + }; + + if (true) exitWith {}; +}; + +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_RemoveLoadout.sqf b/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_RemoveLoadout.sqf new file mode 100644 index 0000000..bc8514d --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_RemoveLoadout.sqf @@ -0,0 +1,25 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_RemoveLoadout", _this] call Zen_StackAdd; +private ["_loadoutName", "_indexes"]; + +if !([_this, [["STRING"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_loadoutName = _this select 0; +_indexes = [Zen_Loadout_Array_Global, _loadoutName, 0] call Zen_ArrayGetNestedIndex; + +if (count _indexes == 0) exitWith { + 0 = ["Zen_RemoveLoadout", "Given loadout does not exist", _this] call Zen_PrintError; + call Zen_StackPrint; + call Zen_StackRemove; +}; + +0 = [Zen_Loadout_Array_Global, (_indexes select 0)] call Zen_ArrayRemoveIndex; +publicVariable "Zen_Loadout_Array_Global"; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_RepackMagazines.sqf b/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_RepackMagazines.sqf new file mode 100644 index 0000000..93ddee6 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_RepackMagazines.sqf @@ -0,0 +1,103 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#define MAG_REPACK_ANIM "AinvPknlMstpSlayWrflDnon_medic" + +if (isDedicated || !hasInterface) exitWith {}; +_Zen_stack_Trace = ["Zen_RepackMagazines", _this] call Zen_StackAdd; +private ["_unit", "_magDetailsUnit", "_magTypes", "_magTypeAmmoCaps", "_magAmmoCounts", "_i", "_magType", "_magRepackAnim", "_totalFullMags", "_oddMagOutRoundCount", "_totalAmmo", "_ammoPerMag", "_fullCount", "_curCount", "_partials"]; + +if !([_this, [["OBJECT"], ["OBJECT"]], [], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_unit = _this select 1; + +if (count (magazines _unit) == 0) exitWith { + hint "You have no magazines"; + call Zen_StackRemove; +}; + +_magTypes = []; +_magTypeAmmoCaps = []; +_magAmmoCounts = []; +_partials = 0; + +_magDetailsUnit = magazinesAmmoFull _unit; + +{ + if (_x select 2) then { + _magDetailsUnit set [_forEachIndex, -1]; + }; +} forEach _magDetailsUnit; + +_magDetailsUnit = _magDetailsUnit - [-1]; + +{ + if !((_x select 0) in _magTypes) then { + if (((_x select 3) == -1) && {((getNumber(configFile >> "CfgMagazines" >> (_x select 0) >> "count")) > 4)}) then { + _magTypes pushBack (_x select 0); + _magAmmoCounts pushBack 0; + }; + }; +} forEach _magDetailsUnit; + +if (count _magTypes == 0) exitWith { + hint "You have no magazines that can be repacked"; + call Zen_StackRemove; +}; + +{ + _magTypeAmmoCaps pushBack (getNumber (configFile >> "CfgMagazines" >> _x >> "count")); +} forEach _magTypes; + +for "_i" from 0 to ((count _magTypes) - 1) do { + _fullCount = _magTypeAmmoCaps select _i; + { + if ((_magTypes select _i) == (_x select 0)) then { + _curCount = _x select 1; + if (_curCount < _fullCount) then { + _partials = _partials + 1; + }; + _magAmmoCounts set [_i, ((_magAmmoCounts select _i) + _curCount)]; + }; + } forEach _magDetailsUnit; +}; + +if (_partials == 0) exitWith { + hint "You have no partial magazines to repack"; + call Zen_StackRemove; +}; + +for "_i" from 1 to _partials do { + _unit playMoveNow MAG_REPACK_ANIM; + sleep 2; + waitUntil { + sleep 0.25; + animationState _unit != MAG_REPACK_ANIM; + }; +}; + +for "_i" from 0 to ((count _magTypes) - 1) do { + _magType = _magTypes select _i; + _totalAmmo = _magAmmoCounts select _i; + _ammoPerMag = _magTypeAmmoCaps select _i; + + _unit removeMagazines _magType; + _totalFullMags = floor (_totalAmmo / _ammoPerMag); + _oddMagOutRoundCount = (_totalAmmo % _ammoPerMag); + + if (_totalFullMags != 0) then { + _unit addMagazines [_magType,_totalFullMags]; + }; + + if (_oddMagOutRoundCount != 0) then { + _unit addMagazine [_magType,_oddMagOutRoundCount]; + }; +}; + +hint "All Magazines Repacked"; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_ShowLoadoutDialog.sqf b/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_ShowLoadoutDialog.sqf new file mode 100644 index 0000000..4ceaf7b --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_ShowLoadoutDialog.sqf @@ -0,0 +1,29 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_ShowLoadoutDialog", _this] call Zen_StackAdd; +private ["_object", "_index", "_kitArray", "_user", "_id"]; + +if !([_this, [["OBJECT"], ["OBJECT"], ["SCALAR"], ["ARRAY"]], [], 4] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_object = _this select 0; +_user = _this select 1; +_id = _this select 2; +_kitArray = _this select 3; + +createDialog "Zen_LoadoutsDialog"; +{ + _index = ((findDisplay 4000) displayCtrl 4002) lbAdd _x; + ((findDisplay 4000) displayCtrl 4002) lbSetData [_index, _x]; +} forEach _kitArray; + +lbSetCurSel [4002, 0]; +player setVariable ["Zen_LoadoutsDialogObject", _object]; +_object setVariable ["Zen_LoadoutsDialogAction", _id]; +_object setVariable ["Zen_LoadoutsDialogUser", _user]; + +call Zen_StackRemove; +if (true) exitWith {}; \ No newline at end of file diff --git a/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_StandardLibrary.sqf b/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_StandardLibrary.sqf new file mode 100644 index 0000000..4a13a58 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_StandardLibrary.sqf @@ -0,0 +1,155 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#define ZEN_STD_Array_LastElement(A) (A select (count A - 1)) +#define ZEN_STD_Array_RandIndex(A) (floor random count A) +#define ZEN_STD_Array_RandElement(A) (A select (floor random count A)) +#define ZEN_STD_Array_UnorderedRemove(A, I) \ + A set [I, A select (count A - 1)]; \ + A resize (count A - 1); + +#define ZEN_STD_Code_WaitScript(S) \ + waitUntil { \ + sleep 1; \ + (scriptDone S) \ + }; + +#define ZEN_STD_Code_SleepFrames(F) sleep (F / diag_fps); + +#define ZEN_STD_Code_SwapVars(X, Y) \ + _Zen_tempVar = X; \ + X = Y; \ + Y = _Zen_tempVar; \ + _Zen_tempVar = nil; + +#define ZEN_STD_Math_RandNegativePositive() (if (random 1 > 0.5) then {1} else {-1}) + +#define ZEN_STD_Math_MarkerArea(M) \ + (if (toLower markerShape M == "ellipse") then { \ + (((markerSize M) select 0) * ((markerSize M) select 1) * pi) \ + } else { \ + (((markerSize M) select 0) * ((markerSize M) select 1) * 4) \ + }) + +#define ZEN_STD_Math_VectCartCyl(V) ([(vectorMagnitude [(V select 0), (V select 1), 0]), (V select 1) atan2 (V select 0), (V select 2)]) +#define ZEN_STD_Math_VectCartPolar(V) ([(vectorMagnitude V), (V select 1) atan2 (V select 0), acos ((V select 2) / (vectorMagnitude V))]) + +#define ZEN_STD_Math_VectCylCart(V) ([(V select 0) * cos (V select 1), (V select 0) * sin (V select 1), (V select 2)]) +#define ZEN_STD_Math_VectCylPolar(V) ([(vectorMagnitude [(V select 0), 0, (V select 2)]), (V select 1), (V select 0) atan2 (V select 2)]) + +#define ZEN_STD_Math_VectPolarCart(V) ([(V select 0) * cos (V select 1) * sin (V select 2), (V select 0) * sin (V select 1) * sin (V select 2), (V select 0) * cos (V select 2)]) +#define ZEN_STD_Math_VectPolarCyl(V) ([(V select 0) * sin (V select 2), (V select 1), (V select 0) * cos (V select 2)]) + +#define ZEN_STD_Math_VectRotateX(P, A) ([(P select 0), (P select 1) * cos A + (P select 2) * sin A, - (P select 1) * sin A + (P select 2) * cos A]) +#define ZEN_STD_Math_VectRotateY(P, A) ([(P select 0) * cos A - (P select 2) * sin A, (P select 1), (P select 0) * sin A + (P select 2) * cos A]) +#define ZEN_STD_Math_VectRotateZ(P, A) ([(P select 0) * cos A + (P select 1) * sin A, - (P select 0) * sin A + (P select 1) * cos A, (P select 2)]) + +#define ZEN_STD_Math_VectTransform(P, X, Y, Z) ([(P select 0) + X, (P select 1) + Y, (P select 2) + Z]) + +#define ZEN_STD_OBJ_ATLPositionZ(O) ((getPosATL O) select 2) +#define ZEN_STD_OBJ_ASLPositionZ(O) ((getPosASL O) select 2) +#define ZEN_STD_OBJ_BBX(O) abs ((((boundingBoxReal O) select 0) select 0) - (((boundingBoxReal O) select 1) select 0)) +#define ZEN_STD_OBJ_BBY(O) abs ((((boundingBoxReal O) select 0) select 1) - (((boundingBoxReal O) select 1) select 1)) +#define ZEN_STD_OBJ_BBZ(O) abs ((((boundingBoxReal O) select 0) select 2) - (((boundingBoxReal O) select 1) select 2)) + +#define ZEN_STD_OBJ_AnimateDoors(V, C) \ + { \ + V animateDoor [(configName _x), C]; \ + } forEach ("((toLower (getText (_x >> 'source'))) == 'door')" configClasses (configFile >> "CfgVehicles" >> (typeOf V) >> "AnimationSources")); + +#define ZEN_STD_OBJ_CountBuildingPos(V, B) \ + V = 0; \ + for "_i" from 0 to 100 do { \ + if ((B buildingPos V) isEqualTo [0,0,0]) exitWith {}; \ + V = V + 1; \ + }; \ + V = V - 1; + +#define ZEN_STD_OBJ_CountCargoSeats(V) (getNumber (configFile >> "CfgVehicles" >> (typeOf V) >> "transportSoldier")) +#define ZEN_STD_OBJ_DeleteVehCrew(V) \ + { \ + deleteVehicle _x; \ + } forEach (crew V + [V]); + +#define ZEN_STD_OBJ_MakePOW(O) \ + O setCaptive true; \ + O disableAI "move"; \ + O setUnitPos "UP"; \ + removeAllWeapons O; \ + removeBackpack O; \ + removeGoggles O; \ + removeHeadgear O; + +#define ZEN_STD_OBJ_OrderGetOut(U, V) \ + U orderGetIn false; \ + { \ + unassignVehicle _x; \ + _x leaveVehicle V; \ + } forEach U; + +#define ZEN_STD_OBJ_OrderGetIn(U, V) \ + { \ + _x assignAsCargo V; \ + } forEach U; \ + U orderGetIn true; + +#define ZEN_STD_OBJ_OrientAircraft(O, P, S) \ + _Zen_vDirToLZ = ((getPosATL O) vectorFromTo P); \ + _Zen_dirToLZ = ZEN_STD_Math_VectCartCyl(_Zen_vDirToLZ) select 1; \ + sleep (5 / diag_fps); \ + O setDir (90 - _Zen_dirToLZ); \ + O setVelocity [S * cos _Zen_dirToLZ, S * sin _Zen_dirToLZ, 0]; + +#define ZEN_STD_OBJ_ParachuteInsertion(O, P, H) \ + _Zen_dir = random 360; \ + { \ + _x setPosATL (P vectorAdd [50 * _forEachIndex * cos _Zen_dir, 50 * _forEachIndex * sin _Zen_dir, H]); \ + removeBackpackGlobal _x; \ + _x addBackpackGlobal "b_parachute"; \ + } forEach O; + +#define ZEN_STD_OBJ_TransformATL(O, X, Y, Z) O setPosATL [((getPosATL O) select 0) + X, ((getPosATL O) select 1) + Y, ((getPosATL O) select 2) + Z]; + +#define ZEN_STD_Parse_GetArgumentDefault(V, I, D) \ + if (count _this > I) then { \ + V = _this select I; \ + } else { \ + V = D; \ + }; + +#define ZEN_STD_Parse_GetSetArgumentDefault(V, I, D, R) \ + if (count _this > I) then { \ + V = _this select I; \ + } else { \ + V = D; \ + }; \ + _this set [I, R]; + +#define ZEN_STD_Parse_GetSetArgumentOptional(V, I, D, R) \ + if (count _this > I) then { \ + V = _this select I; \ + } else { \ + V = D; \ + _this set [I, R]; \ + }; + +#define ZEN_STD_Parse_GetArgument(V, I) \ + if (count _this > I) then { \ + V = _this select I; \ + }; + +#define ZEN_STD_Parse_ToArray(X) \ + if (typeName X != "ARRAY") then { \ + X = [X]; \ + }; + +#define ZEN_STD_Parse_ToString(X) \ + if (typeName X != "STRING") then { \ + X = str X; \ + }; + +#define ZEN_STD_Parse_ToStringLower(X) \ + if (typeName X != "STRING") then { \ + X = toLower str X; \ + }; diff --git a/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_UpdateLoadout.sqf b/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_UpdateLoadout.sqf new file mode 100644 index 0000000..4e4cf10 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_UpdateLoadout.sqf @@ -0,0 +1,27 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_UpdateLoadout", _this] call Zen_StackAdd; +private ["_loadoutName", "_loadoutData", "_indexes"]; + +if !([_this, [["STRING"], ["ARRAY"]], [[], ["ARRAY"]], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_loadoutName = _this select 0; +_loadoutData = _this select 1; + +_indexes = [Zen_Loadout_Array_Global, _loadoutName, 0] call Zen_ArrayGetNestedIndex; + +if (count _indexes == 0) exitWith { + 0 = ["Zen_UpdateLoadout", "Given loadout does not exist", _this] call Zen_PrintError; + call Zen_StackPrint; + call Zen_StackRemove; +}; + +Zen_Loadout_Array_Global set [(_indexes select 0), [_loadoutName, _loadoutData]]; +publicVariable "Zen_Loadout_Array_Global"; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_MathFunctions/Zen_ExtendPosition.sqf b/Zen_FrameworkFunctions/Zen_MathFunctions/Zen_ExtendPosition.sqf new file mode 100644 index 0000000..3c3b50e --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_MathFunctions/Zen_ExtendPosition.sqf @@ -0,0 +1,33 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_ExtendPosition", _this] call Zen_StackAdd; +private ["_center", "_dist", "_phi", "_height", "_angleType"]; + +if !([_this, [["VOID"], ["SCALAR"], ["SCALAR"], ["STRING"], ["SCALAR"]], [], 3] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (_this select 0) +}; + +_center = [(_this select 0)] call Zen_ConvertToPosition; +_dist = _this select 1; +_phi = _this select 2; + +_angleType = "Compass"; +_height = 0; + +if (count _this > 3) then { + _angleType = _this select 3; +}; + +if ((count _this) > 4) then { + _height = _this select 4; +}; + +if ([_angleType, "Compass"] call Zen_ValuesAreEqual) then { + _phi = [_phi] call Zen_FindTrigAngle; +}; + +call Zen_StackRemove; +([(_center select 0) + (_dist * (cos _phi)),(_center select 1) + (_dist * (sin _phi)), _height]) diff --git a/Zen_FrameworkFunctions/Zen_MathFunctions/Zen_ExtendRay.sqf b/Zen_FrameworkFunctions/Zen_MathFunctions/Zen_ExtendRay.sqf new file mode 100644 index 0000000..5e8e4ef --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_MathFunctions/Zen_ExtendRay.sqf @@ -0,0 +1,20 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_ExtendRay", _this] call Zen_StackAdd; +private ["_point1", "_point2", "_distance", "_direction"]; + +if !([_this, [["VOID"], ["VOID"], ["SCALAR"]], [], 3] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + ([0,0,0]) +}; + +_point1 = [(_this select 0)] call Zen_ConvertToPosition; +_point2 = [(_this select 1)] call Zen_ConvertToPosition; +_distance = _this select 2; + +_direction = ((_point2 select 1) - (_point1 select 1)) atan2 ((_point2 select 0) - (_point1 select 0)); + +call Zen_StackRemove; +([(_point2 select 0) + (_distance * (cos _direction)),(_point2 select 1) + (_distance * (sin _direction)), 0]) diff --git a/Zen_FrameworkFunctions/Zen_MathFunctions/Zen_Find2dDistance.sqf b/Zen_FrameworkFunctions/Zen_MathFunctions/Zen_Find2dDistance.sqf new file mode 100644 index 0000000..f9d4ba0 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_MathFunctions/Zen_Find2dDistance.sqf @@ -0,0 +1,17 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_Find2dDistance", _this] call Zen_StackAdd; +private ["_point1", "_point2"]; + +if !([_this, [["VOID"], ["VOID"]], [], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (0) +}; + +_point1 = [(_this select 0)] call Zen_ConvertToPosition; +_point2 = [(_this select 1)] call Zen_ConvertToPosition; + +call Zen_StackRemove; +([(_point1 select 0), (_point1 select 1)] distance [(_point2 select 0), (_point2 select 1)]) diff --git a/Zen_FrameworkFunctions/Zen_MathFunctions/Zen_FindDirection.sqf b/Zen_FrameworkFunctions/Zen_MathFunctions/Zen_FindDirection.sqf new file mode 100644 index 0000000..d4682d1 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_MathFunctions/Zen_FindDirection.sqf @@ -0,0 +1,17 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_FindDirection", _this] call Zen_StackAdd; +private ["_point1", "_point2"]; + +if !([_this, [["VOID"], ["VOID"]], [], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (0) +}; + +_point1 = [(_this select 0)] call Zen_ConvertToPosition; +_point2 = [(_this select 1)] call Zen_ConvertToPosition; + +call Zen_StackRemove; +(((_point2 select 1) - (_point1 select 1)) atan2 ((_point2 select 0) - (_point1 select 0))) diff --git a/Zen_FrameworkFunctions/Zen_MathFunctions/Zen_FindDistanceToPolyEdge.sqf b/Zen_FrameworkFunctions/Zen_MathFunctions/Zen_FindDistanceToPolyEdge.sqf new file mode 100644 index 0000000..f1c64d7 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_MathFunctions/Zen_FindDistanceToPolyEdge.sqf @@ -0,0 +1,73 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_FindDistanceToPolyEdge", _this] call Zen_StackAdd; +private ["_centerXYPos", "_phi", "_centerXYPoly", "_XYSizePoly", "_dirPoly", "_shapeType", "_centX", "_centY", "_evalDist", "_evalInt", "_distance", "_finPos", "_lastPos", "_startedInside", "_isInPoly"]; + +if !([_this, [["VOID"], ["SCALAR"], ["VOID"], ["ARRAY"], ["SCALAR"], ["STRING"]], [[], [], [], ["SCALAR"]], 3] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (0) +}; + +_centerXYPos = [(_this select 0)] call Zen_ConvertToPosition; +_phi = _this select 1; + +if ((typeName (_this select 2)) == "STRING") then { + _centerXYPoly = getMarkerPos (_this select 2); + _XYSizePoly = getMarkerSize (_this select 2); + _dirPoly = markerDir (_this select 2); + _shapeType = markerShape (_this select 2); +} else { + _centerXYPoly = [(_this select 2)] call Zen_ConvertToPosition; + _XYSizePoly = _this select 3; + _dirPoly = _this select 4; + _shapeType = _this select 5; +}; + +_startedInside = ([_centerXYPos, _centerXYPoly, _XYSizePoly, _dirPoly, _shapeType] call Zen_IsPointInPoly); + +if (_startedInside) then { + _evalDist = (_XYSizePoly select 0) + (_XYSizePoly select 1); +} else { + _evalDist = [_centerXYPos, _centerXYPoly] call Zen_Find2dDistance; +}; + +if !([_centerXYPos, _evalDist, _phi, _centerXYPoly, _XYSizePoly, _dirPoly, _shapeType] call Zen_IsRayInPoly) exitWith { + call Zen_StackRemove; + (0) +}; + +_evalInt = _evalDist / 20; +_distance = 0; +_centX = _centerXYPos select 0; +_centY = _centerXYPos select 1; + +for "_r" from 0 to _evalDist step _evalInt do { + _finPos = [_centerXYPos, _r, _phi, "trig"] call Zen_ExtendPosition; + _isInPoly = [_finPos, _centerXYPoly, _XYSizePoly, _dirPoly, _shapeType] call Zen_IsPointInPoly; + + if ((_isInPoly && !_startedInside) || (!_isInPoly && _startedInside)) exitWith { + _distance = [_finPos, _centerXYPos] call Zen_Find2dDistance; + }; +}; + +_centX = _finPos select 0; +_centY = _finPos select 1; + +_phi = _phi + 180; +_lastPos = [_finPos, _evalInt, _phi, "trig"] call Zen_ExtendPosition; +_evalDist = [_finPos, _lastPos] call Zen_Find2dDistance; +_evalInt = _evalDist / 20; + +for "_r" from 0 to _evalDist step _evalInt do { + _finPos = [[_centX, _centY], _r, _phi, "trig"] call Zen_ExtendPosition; + _isInPoly = [_finPos, _centerXYPoly, _XYSizePoly, _dirPoly, _shapeType] call Zen_IsPointInPoly; + + if ((!_isInPoly && !_startedInside) || (_isInPoly && _startedInside)) exitWith { + _distance = [_finPos, _centerXYPos] call Zen_Find2dDistance; + }; +}; + +call Zen_StackRemove; +(_distance) diff --git a/Zen_FrameworkFunctions/Zen_MathFunctions/Zen_FindInRange.sqf b/Zen_FrameworkFunctions/Zen_MathFunctions/Zen_FindInRange.sqf new file mode 100644 index 0000000..9795b53 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_MathFunctions/Zen_FindInRange.sqf @@ -0,0 +1,34 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_FindInRange", _this] call Zen_StackAdd; +private ["_rangeMin", "_rangeMax", "_return", "_isWholeNumber", "_maxTemp"]; + +if !([_this, [["SCALAR"], ["SCALAR"], ["BOOL"]], [], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (0) +}; + +_rangeMin = _this select 0; +_rangeMax = _this select 1; + +_isWholeNumber = false; +if (count _this > 2) then { + _isWholeNumber = _this select 2; +}; + +if (_rangeMin > _rangeMax) then { + _maxTemp = _rangeMax; + _rangeMax = _rangeMin; + _rangeMin = _maxTemp; +}; + +_return = _rangeMin + (random (_rangeMax - _rangeMin)); + +if (_isWholeNumber) then { + _return = round _return; +}; + +call Zen_StackRemove; +(_return) diff --git a/Zen_FrameworkFunctions/Zen_MathFunctions/Zen_FindMaxDistance.sqf b/Zen_FrameworkFunctions/Zen_MathFunctions/Zen_FindMaxDistance.sqf new file mode 100644 index 0000000..c39df4e --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_MathFunctions/Zen_FindMaxDistance.sqf @@ -0,0 +1,31 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_FindMaxDistance", _this] call Zen_StackAdd; +private ["_testArray", "_center", "_outElement"]; + +if !([_this, [["ARRAY"], ["VOID"]], [], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (_this select 1) +}; + +_testArray = _this select 0; +_center = [(_this select 1)] call Zen_ConvertToPosition; + +_outElement = 0; + +if (count _testArray > 0) then { + _outElement = _testArray select 0; + { + if (([_x, _center] call Zen_Find2dDistance) > ([_center, _outElement] call Zen_Find2dDistance)) then { + _outElement = _x; + }; + } forEach _testArray; +} else { + 0 = ["Zen_FindMaxDistance", "Given array to compare to the center is empty", _this] call Zen_PrintError; + call Zen_StackPrint; +}; + +call Zen_StackRemove; +(_outElement) diff --git a/Zen_FrameworkFunctions/Zen_MathFunctions/Zen_FindMinDistance.sqf b/Zen_FrameworkFunctions/Zen_MathFunctions/Zen_FindMinDistance.sqf new file mode 100644 index 0000000..eea42e4 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_MathFunctions/Zen_FindMinDistance.sqf @@ -0,0 +1,31 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_FindMinDistance", _this] call Zen_StackAdd; +private ["_testArray", "_center", "_outElement"]; + +if !([_this, [["ARRAY"], ["VOID"]], [], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (_this select 1) +}; + +_testArray = _this select 0; +_center = [(_this select 1)] call Zen_ConvertToPosition; + +_outElement = 0; + +if (count _testArray > 0) then { + _outElement = _testArray select 0; + { + if (([_x, _center] call Zen_Find2dDistance) < ([_center, _outElement] call Zen_Find2dDistance)) then { + _outElement = _x; + }; + } forEach _testArray; +} else { + 0 = ["Zen_FindMinDistance", "Given array to compare to the center is empty", _this] call Zen_PrintError; + call Zen_StackPrint; +}; + +call Zen_StackRemove; +(_outElement) diff --git a/Zen_FrameworkFunctions/Zen_MathFunctions/Zen_FindRayIntersection.sqf b/Zen_FrameworkFunctions/Zen_MathFunctions/Zen_FindRayIntersection.sqf new file mode 100644 index 0000000..3925418 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_MathFunctions/Zen_FindRayIntersection.sqf @@ -0,0 +1,69 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_FindRayIntersection", _this] call Zen_StackAdd; + +if !([_this, [["VOID"], ["VOID"], ["SCALAR"], ["SCALAR"]], [], 4] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + ([0,0,0]) +}; + +// /* Cartesian +private ["_point1", "_point2", "_angleRay1", "_angleRay2", "_slopeRay1", "_slopeRay2", "_xSol", "_point3", "_distP1_P3"]; +_point1 = [(_this select 0)] call Zen_ConvertToPosition; +_point2 = [(_this select 1)] call Zen_ConvertToPosition; +_angleRay1 = _this select 2; +_angleRay2 = _this select 3; + +_slopeRay1 = tan _angleRay1; +_slopeRay2 = tan _angleRay2; + +_xSol = ((_slopeRay1 * (_point1 select 0)) + (_point2 select 1) - (_slopeRay2 * (_point2 select 0)) - (_point1 select 1)) / (_slopeRay1 - _slopeRay2); +_point3 = [_xSol, (_slopeRay1 * (_xSol - (_point1 select 0))) + (_point1 select 1), 0]; + +_distP1_P3 = [_point1, _point3] call Zen_Find2dDistance; + +if !(([([_point1, _distP1_P3, _angleRay1, "trig"] call Zen_ExtendPosition), _point3] call Zen_Find2dDistance) < 5) exitWith { + call Zen_StackRemove; + ([0,0,0]) +}; + +call Zen_StackRemove; +(_point3) +//*/ + +/* Polar +private ["_point1", "_point2", "_angleRay1", "_angleRay2", "_dist_P1toP2", "_angle_P1toP2", "_angle_P2toP1", "_angleP2_P1_P3", "_angleP1_P2_P3", "_angleP1_P3_P2", "_dist_P2toP3", "_point3", "_distP1_P3", "_distP2_P3"]; +_point1 = [(_this select 0)] call Zen_ConvertToPosition; +_point2 = [(_this select 1)] call Zen_ConvertToPosition; +_angleRay1 = ((_this select 2) + 360) % 360; +_angleRay2 = ((_this select 3) + 360) % 360; + +if (_angleRay1 == _angleRay2) exitWith { + call Zen_StackRemove; + ([0,0,0]) +}; + +_dist_P1toP2 = [_point1, _point2] call Zen_Find2dDistance; +_angle_P1toP2 = (([_point1, _point2] call Zen_FindDirection) + 360) % 360; +_angle_P2toP1 = (([_point2, _point1] call Zen_FindDirection) + 360) % 360; + +_angleP2_P1_P3 = ((abs (_angle_P1toP2 - _angleRay1)) min (abs (_angle_P1toP2 + 360 - _angleRay1))) min (abs (_angle_P1toP2 - 360 - _angleRay1)); +_angleP1_P2_P3 = ((abs (_angle_P2toP1 - _angleRay2)) min (abs (_angle_P2toP1 + 360 - _angleRay2))) min (abs (_angle_P2toP1 - 360 - _angleRay2)); + +_angleP1_P3_P2 = 180 - _angleP2_P1_P3 - _angleP1_P2_P3; +_dist_P2toP3 = _dist_P1toP2 * (sin _angleP2_P1_P3) / (sin _angleP1_P3_P2); +_point3 = [_point2, _dist_P2toP3, _angleRay2, "trig"] call Zen_ExtendPosition; + +_distP1_P3 = [_point1, _point3] call Zen_Find2dDistance; +_distP2_P3 = [_point2, _point3] call Zen_Find2dDistance; + +if !((([([_point1, _distP1_P3, _angleRay1, "trig"] call Zen_ExtendPosition), _point3] call Zen_Find2dDistance) < 5) &&((([([_point2, _distP2_P3, _angleRay2, "trig"] call Zen_ExtendPosition), _point3] call Zen_Find2dDistance) < 5))) exitWith { + call Zen_StackRemove; + ([0,0,0]) +}; + +call Zen_StackRemove; +(_point3) +//*/ \ No newline at end of file diff --git a/Zen_FrameworkFunctions/Zen_MathFunctions/Zen_FindTrigAngle.sqf b/Zen_FrameworkFunctions/Zen_MathFunctions/Zen_FindTrigAngle.sqf new file mode 100644 index 0000000..a737b1a --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_MathFunctions/Zen_FindTrigAngle.sqf @@ -0,0 +1,16 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_FindTrigAngle", _this] call Zen_StackAdd; +private ["_angle"]; + +if !([_this, [["SCALAR"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (_this select 0) +}; + +_angle = _this select 0; + +call Zen_StackRemove; +(90 - _angle) diff --git a/Zen_FrameworkFunctions/Zen_MathFunctions/Zen_FrameworkLibrary.sqf b/Zen_FrameworkFunctions/Zen_MathFunctions/Zen_FrameworkLibrary.sqf new file mode 100644 index 0000000..7af8176 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_MathFunctions/Zen_FrameworkLibrary.sqf @@ -0,0 +1,191 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#define ZEN_FMW_Array_RemoveIndexes(A, I) \ + { \ + 0 = [A, _x - _forEachIndex] call Zen_ArrayRemoveIndex; \ + } forEach I; + +#define ZEN_FMW_CFG_VehicleWeapons(V) \ + _Zen_WeaponsArray = []; \ + 0 = [_Zen_WeaponsArray, getArray (V >> "weapons")] call Zen_ArrayAppendNested; \ + { \ + 0 = [_Zen_WeaponsArray, getArray (V >> "weapons")] call Zen_ArrayAppendNested; \ + } forEach ("true" configClasses (V >> "turrets")); \ + { \ + _Zen_WeaponsArray = [_Zen_WeaponsArray, ZEN_FMW_ZAF_String(V)] call Zen_ArrayFilterCondition; \ + } forEach ["smoke", "horn", "laser", "flare", "throw", "put"]; + +#define ZEN_FMW_Code_ErrorExitVoid(F, D) \ + 0 = [F, D, _this] call Zen_PrintError; \ + call Zen_StackPrint; \ + call Zen_StackRemove; + +#define ZEN_FMW_Code_ErrorExitValue(F, D, V) \ + 0 = [F, D, _this] call Zen_PrintError; \ + call Zen_StackPrint; \ + call Zen_StackRemove; \ + V + +#define ZEN_FMW_Code_Error(F, D) \ + 0 = [F, D, _this] call Zen_PrintError; \ + call Zen_StackPrint; + +#define ZEN_FMW_Code_GiveLoadoutsOrdered(U, L, S) \ + { \ + 0 = [_x, S, (L select (_forEachIndex % (count L)))] call Zen_GiveLoadout; \ + } forEach ([U] call Zen_ConvertToObjectArray); + +#define ZEN_FMW_Code_Insertion(U, V, S, E) \ + _Zen_Vehicle = [S, V, (if (V isKindOf "Air") then {40} else {0})] call Zen_SpawnVehicle; \ + 0 = [_Zen_Vehicle] call Zen_SpawnVehicleCrew; \ + 0 = [U, _Zen_Vehicle] call Zen_MoveInVehicle; \ + 0 = [_Zen_Vehicle, [E, S], U] spawn Zen_OrderInsertion; + +#define ZEN_FMW_Code_InsertionPatrol(G, T, S, M) \ + _Zen_Vehicle = [S, T] call Zen_SpawnVehicle; \ + 0 = [_Zen_Vehicle] call Zen_SpawnVehicleCrew; \ + 0 = [G, _Zen_Vehicle] call Zen_MoveInVehicle; \ + 0 = [_Zen_Vehicle, [([M] call Zen_FindGroundPosition), _Zen_HeliStart], G, "normal", 40, "fastrope", true] spawn Zen_OrderInsertion; \ + 0 = [G, M] spawn { \ + waitUntil { \ + sleep 5; \ + ([_this select 0] call Zen_AreNotInVehicle) \ + }; \ + 0 = [_this select 0, _this select 1] spawn Zen_OrderInfantryPatrol; \ + }; + +#define ZEN_FMW_Code_SpawnMarker(M, N, S) \ + _Zen_GrpsArray = []; \ + for "_Z" from 1 to N do { \ + _Zen_Pos = [ M ] call Zen_FindGroundPosition; \ + _Zen_Group = [_Zen_Pos, S, "infantry", [4,6]] call Zen_SpawnInfantry; \ + _Zen_GrpsArray pushBack _Zen_Group; \ + }; \ + 0 = [_Zen_GrpsArray, S, ZEN_FMW_Loadout_StdInfantryPreset, false] call Zen_GiveLoadout; \ + 0 = [_Zen_GrpsArray, M] spawn Zen_OrderInfantryPatrol; + +#define ZEN_FMW_Code_SpawnPoint(C, D, N, S) \ + _Zen_GrpsArray = []; \ + for "_Z" from 1 to N do { \ + _Zen_Pos = [C, [0, D]] call Zen_FindGroundPosition; \ + _Zen_Group = [_Zen_Pos, S, "infantry", [4,6]] call Zen_SpawnInfantry; \ + _Zen_GrpsArray pushBack _Zen_Group; \ + }; \ + 0 = [_Zen_GrpsArray, S, ZEN_FMW_Loadout_StdInfantryPreset, false] call Zen_GiveLoadout; \ + 0 = [_Zen_GrpsArray, C, [0, D]] spawn Zen_OrderInfantryPatrol; + +#define ZEN_FMW_Code_SpawnPointBehind(START, END, MIND, MAXD, N, S) \ + _Zen_DirToSpawn = [START, END] call Zen_FindDirection; \ + _Zen_GrpsArray = []; \ + for "_i" from 1 to N do { \ + _Zen_SpawnPos = [END, [MIND, MAXD], 0, 1, 0, [_Zen_DirToSpawn - 90, _Zen_DirToSpawn + 90, "trig"]] call Zen_FindGroundPosition; \ + _Zen_Group = [_Zen_SpawnPos, S, "infantry", [4, 6]] call Zen_SpawnInfantry; \ + _Zen_GrpsArray pushBack _Zen_Group; \ + }; \ + 0 = [_Zen_GrpsArray, S, ZEN_FMW_Loadout_StdInfantryPreset, false] call Zen_GiveLoadout; \ + 0 = [_Zen_GrpsArray, END, [1, MAXD]] spawn Zen_OrderInfantryPatrol; \ + _Zen_DirToSpawn = nil; + +#define ZEN_FMW_Code_WaitDistanceGreater(A, B, D) \ + waitUntil { \ + sleep 2; \ + (([A, B] call Zen_Find2dDistance) > D) \ + }; + +#define ZEN_FMW_Code_WaitDistanceLess(A, B, D) \ + waitUntil { \ + sleep 2; \ + (([A, B] call Zen_Find2dDistance) < D) \ + }; + +#define ZEN_FMW_MP_REAll(F, A, I) \ + A I (missionNamespace getVariable F); \ + if (isMultiplayer) then { \ + Zen_MP_Closure_Packet = [F, A]; \ + publicVariable "Zen_MP_Closure_Packet"; \ + }; + +#define ZEN_FMW_MP_REClient(F, A, I, O) \ + if (local O) then { \ + A I (missionNamespace getVariable F); \ + } else { \ + if (isMultiplayer) then { \ + Zen_MP_Closure_Packet = [F, A]; \ + (owner O) publicVariableClient "Zen_MP_Closure_Packet"; \ + }; \ + }; + +#define ZEN_FMW_MP_RENonDedicated(F, A, I) \ + if (isMultiplayer) then { \ + Zen_MP_Closure_Packet = [F, A]; \ + publicVariable "Zen_MP_Closure_Packet"; \ + }; \ + if !(isDedicated) then { \ + A I (missionNamespace getVariable F); \ + }; + +#define ZEN_FMW_MP_REServerOnly(F, A, I) \ + if (isServer) then { \ + A I (missionNamespace getVariable F); \ + } else { \ + if (isMultiplayer) then { \ + Zen_MP_Closure_Packet = [F, A]; \ + publicVariableServer "Zen_MP_Closure_Packet"; \ + }; \ + }; + +#define ZEN_FMW_Math_DistLess2D(A, B, D) (([A, B] call Zen_Find2dDistance) < D) +#define ZEN_FMW_Math_DistGreater3D(A, B, D) ((([A] call Zen_ConvertToPosition) distance ([B] call Zen_ConvertToPosition)) > D) +#define ZEN_FMW_Math_DistGreater2D(A, B, D) (([A, B] call Zen_Find2dDistance) > D) +#define ZEN_FMW_Math_DistLess3D(A, B, D) ((([A] call Zen_ConvertToPosition) distance ([B] call Zen_ConvertToPosition)) < D) +#define ZEN_FMW_Math_RandomPoint(C, R) ([C, random R, random 360] call Zen_ExtendPosition) +#define ZEN_FMW_Math_RandomPointMin(C, S, E) ([C, S + random abs (E - S), random 360] call Zen_ExtendPosition) + +#define ZEN_FMW_Math_TerrainParallelCart(P, I) \ + _Zen_3dGradPolar = [1, [P] call Zen_FindTerrainGradient, 90 - ([P] call Zen_FindTerrainSlope)]; \ + I = ZEN_STD_Math_VectPolarCart(_Zen_3dGradPolar); + +#define ZEN_FMW_Math_TerrainGradientCart(P, I) \ + _Zen_2dGradCyl = [tan ([P] call Zen_FindTerrainSlope), [P] call Zen_FindTerrainGradient, 0]; \ + I = ZEN_STD_Math_VectCylCart(_Zen_2dGradCyl); + +#define ZEN_FMW_OBJ_DeleteDead(D) \ + { \ + _Zen_DeadUnit = _x; \ + _Zen_Delete = true; \ + { \ + if (isPlayer _x) then { \ + if ((_x distanceSqr _Zen_DeadUnit) < D*D) then { \ + _Zen_Delete = false; \ + }; \ + }; \ + } forEach allUnits; \ + if (_Zen_Delete) then { \ + deleteVehicle _x; \ + }; \ + } forEach allDead; + +#define ZEN_FMW_ZAS_ArrayLength {if (count (_this select 0) < count (_this select 1)) exitWith {-1}; (if (count (_this select 0) == count (_this select 1)) then {0} else {1})} +#define ZEN_FMW_ZAS_AlphaNumeric ({_2a = toArray (_this select 1); _c = 0; {if (_x < (_2a select _forEachIndex)) exitWith {_c = -1}; if (_x > (_2a select _forEachIndex)) exitWith {_c = 1};} forEach (toArray (_this select 0)); (_c)}) +#define ZEN_FMW_ZAS_DistFarNear(C) (compile format ["if ((_this select 0) distance %1 > (_this select 1) distance %1) exitWith {-1}; (if ((_this select 0) distance %1 == (_this select 1) distance %1) then {0} else {1})", C]) +#define ZEN_FMW_ZAS_DistNearFar(C) (compile format ["if ((_this select 0) distance %1 < (_this select 1) distance %1) exitWith {-1}; (if ((_this select 0) distance %1 == (_this select 1) distance %1) then {0} else {1})", C]) +#define ZEN_FMW_ZAS_IntInArray(I) (compile format["if (((_this select 0) select %1) < ((_this select 1) select %1)) exitWith {-1}; (if (((_this select 0) select %1) == ((_this select 1) select %1)) then {0} else {1})", I]) +#define ZEN_FMW_ZAS_StringLength {if (count toArray (_this select 0) < count toArray (_this select 1)) exitWith {-1}; (if (count toArray (_this select 0) == count toArray (_this select 1)) then {0} else {1})} + +#define ZEN_FMW_ZAF_NotString(S) (compile format ["(if (typeName _this == 'STRING') then {!(['%1', _this] call Zen_StringIsInString)} else {false})", S]) +#define ZEN_FMW_ZAF_String(S) (compile format ["(if (typeName _this == 'STRING') then {(['%1', _this] call Zen_StringIsInString)} else {false})", S]) +#define ZEN_FMW_ZAF_Type(T) (compile format ["((toLower typeName _this) == '%1')", (toLower T)]) + +#define ZEN_FMW_ZFGP_Beach 1, [3,50], 0, 0, 0, [2,30], [1,10], 0, [1,10,10] +#define ZEN_FMW_ZFGP_DeepSea 2, 0, 0, 0, 0, 0, 0, 0, [1, -50] +#define ZEN_FMW_ZFGP_Flat 1, 0, 0, 0, 0, 0, [1,10] +#define ZEN_FMW_ZFGP_Forest 1, [3,100], 0, [1,0,20], 0, [1,50], 0, [2,[4, -1, -1], 20] +#define ZEN_FMW_ZFGP_Hill 1, 0, 0, 0, 0, [1,25], [2,20], 0, [2,25,10] +#define ZEN_FMW_ZFGP_LandingZone 1, [1,100], 0, [1,0,20], 0, [1,25], [1,20], [1,[0, 1, -1], 20] +#define ZEN_FMW_ZFGP_NotForest 1, 0, 0, 0, 0, 0, 0, [1,[1, -1, -1], 20] +#define ZEN_FMW_ZFGP_Urban 1, [2, 0], 0, [2,1,25], 0, [1,100], 0, [1,[1,-1,-1], 20] + +#define ZEN_FMW_Loadout_DefaultPreset (["Rifleman", "AT Rifleman", "Assistant AA", "Assistant AT", "Assistant AR", "Team Leader", "Squad Leader", "Grenadier", "Auto Rifleman", "Marksman", "Medic", "AA Specialist", "AT Specialist", "Sapper", "Miner", "EOD Specialist"]) +#define ZEN_FMW_Loadout_StdInfantryPreset (["Rifleman", "Rifleman", "Rifleman", "AT Rifleman", "Assistant AR", "Team Leader", "Squad Leader", "Grenadier", "Grenadier", "Auto Rifleman", "Auto Rifleman", "Marksman", "Medic"]) diff --git a/Zen_FrameworkFunctions/Zen_MathFunctions/Zen_IsAngleInSector.sqf b/Zen_FrameworkFunctions/Zen_MathFunctions/Zen_IsAngleInSector.sqf new file mode 100644 index 0000000..7e88d2f --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_MathFunctions/Zen_IsAngleInSector.sqf @@ -0,0 +1,58 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_IsAngleInSector", _this] call Zen_StackAdd; +private ["_angle", "_sectorAngles", "_minSector", "_isInSector", "_tempAngleMax", "_maxSector"]; + +if !([_this, [["SCALAR"], ["ARRAY"]], [[], ["SCALAR"]], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (false) +}; + +_angle = _this select 0; +_sectorAngles = _this select 1; + +_minSector = _sectorAngles select 0; +_maxSector = _sectorAngles select 1; + +_isInSector = false; + +if (_minSector > _maxSector) then { + _tempAngleMax = _maxSector; + _maxSector = _minSector; + _minSector = _tempAngleMax; +}; + +if ((_angle < 0) && (_maxSector >= 0) && (_minSector >= 0)) then { + _angle = _angle + 360; +}; + +if ((_angle > 0) && (_maxSector <= 0) && (_minSector <= 0)) then { + _angle = _angle - 360; +}; + +if ((_angle > _maxSector) && (_maxSector >= 0) && (_minSector <= 0) && ((abs _minSector) > (abs _maxSector))) then { + _angle = _angle - 360; +}; + +if ((_angle < _minSector) && (_maxSector >= 0) && (_minSector <= 0) && ((abs _minSector) < (abs _maxSector))) then { + _angle = _angle + 360; +}; + +if (_minSector == _maxSector) then { + if (_angle == _maxSector) then { + _isInSector = true; + }; +} else { + if ((_angle >= _minSector) && (_angle <= _maxSector)) then { + _isInSector = true; + }; +}; + +if (((abs _minSector) + (abs _maxSector)) == 360) then { + _isInSector = true; +}; + +call Zen_StackRemove; +(_isInSector) diff --git a/Zen_FrameworkFunctions/Zen_MathFunctions/Zen_IsPointInPoly.sqf b/Zen_FrameworkFunctions/Zen_MathFunctions/Zen_IsPointInPoly.sqf new file mode 100644 index 0000000..84afc55 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_MathFunctions/Zen_IsPointInPoly.sqf @@ -0,0 +1,69 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_IsPointInPoly", _this] call Zen_StackAdd; +private ["_pos", "_x1", "_y1", "_centX", "_centY", "_radius", "_phi", "_newY", "_newX", "_x2", "_y2", "_radB", "_radA", "_markerShape", "_markerDir", "_XYSizeArray", "_centerXY"]; + +if !([_this, [["VOID"], ["VOID"], ["ARRAY"], ["SCALAR"], ["STRING"]], [[], [], ["SCALAR"]], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (false) +}; + +_pos = [(_this select 0)] call Zen_ConvertToPosition; + +if ((typeName (_this select 1)) == "STRING") then { + _centerXY = getMarkerPos (_this select 1); + _XYSizeArray = getMarkerSize (_this select 1); + _markerDir = markerDir (_this select 1); + _markerShape = markerShape (_this select 1); +} else { + _centerXY = [(_this select 1)] call Zen_ConvertToPosition; + _XYSizeArray = _this select 2; + _markerDir = _this select 3; + _markerShape = _this select 4; +}; + +_radA = _XYSizeArray select 0; +_radB = _XYSizeArray select 1; + +_radius = [_centerXY, _pos] call Zen_Find2dDistance; + +if (_radius < (_radA min _radB)) exitWith { + call Zen_StackRemove; + (true) +}; + +_phi = ([_centerXY, _pos] call Zen_FindDirection) + _markerDir - 90; + +_centX = _centerXY select 0; +_centY = _centerXY select 1; + +if (_radA == 0) then { + _radA = random 1; +}; + +if (_radB == 0) then { + _radB = random 1; +}; + +call Zen_StackRemove; +(switch (toUpper _markerShape) do { + case "RECTANGLE": { + _newX = _centX + (_radius * cos _phi); + _newY = _centY + (_radius * sin _phi); + + _x1 = (_centX - _radB); + _x2 = (_centX + _radB); + _y1 = (_centY - _radA); + _y2 = (_centY + _radA); + + (((_y2 - _newY > 0) && (_y1 - _newY < 0) && (_x2 - _newX > 0) && (_x1 - _newX < 0))) + }; + case "ELLIPSE": { + _x1 = _radius * sin _phi; + _y1 = _radius * cos _phi; + + (((_x1^2 / _radA^2) + (_y1^2 / _radB^2) < 1)) + }; +}) diff --git a/Zen_FrameworkFunctions/Zen_MathFunctions/Zen_IsRayInPoly.sqf b/Zen_FrameworkFunctions/Zen_MathFunctions/Zen_IsRayInPoly.sqf new file mode 100644 index 0000000..11060b3 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_MathFunctions/Zen_IsRayInPoly.sqf @@ -0,0 +1,42 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_IsRayInPoly", _this] call Zen_StackAdd; +private ["_centerXYPos", "_phi", "_centerXYPoly", "_XYSizePoly", "_dirPoly", "_shapeType", "_centX", "_centY", "_rayLength", "_evalInt", "_isThruPoly", "_finPos"]; + +if !([_this, [["VOID"], ["SCALAR"], ["SCALAR"], ["VOID"], ["ARRAY"], ["SCALAR"], ["STRING"]], [[], [], [], [], ["SCALAR"]], 4] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (false) +}; + +_centerXYPos = [(_this select 0)] call Zen_ConvertToPosition; +_rayLength = _this select 1; +_phi = _this select 2; + +if ((typeName (_this select 3)) == "STRING") then { + _centerXYPoly = getMarkerPos (_this select 3); + _XYSizePoly = getMarkerSize (_this select 3); + _dirPoly = markerDir (_this select 3); + _shapeType = markerShape (_this select 3); +} else { + _centerXYPoly = [(_this select 3)] call Zen_ConvertToPosition; + _XYSizePoly = _this select 4; + _dirPoly = _this select 5; + _shapeType = _this select 6; +}; + +_centX = _centerXYPos select 0; +_centY = _centerXYPos select 1; +_evalInt = _rayLength / 75; +_isThruPoly = false; + +for "_r" from 0 to _rayLength step _evalInt do { + _finPos = [_centerXYPos, _r, _phi, "trig"] call Zen_ExtendPosition; + if ([_finPos, _centerXYPoly, _XYSizePoly, _dirPoly, _shapeType] call Zen_IsPointInPoly) exitWith { + _isThruPoly = true; + }; +}; + +call Zen_StackRemove; +(_isThruPoly) diff --git a/Zen_FrameworkFunctions/Zen_MathFunctions/Zen_MathFunctionsCompile.sqf b/Zen_FrameworkFunctions/Zen_MathFunctions/Zen_MathFunctionsCompile.sqf new file mode 100644 index 0000000..45c1e48 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_MathFunctions/Zen_MathFunctionsCompile.sqf @@ -0,0 +1,19 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +Zen_ExtendPosition = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_MathFunctions\Zen_ExtendPosition.sqf"; +Zen_ExtendRay = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_MathFunctions\Zen_ExtendRay.sqf"; +Zen_Find2dDistance = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_MathFunctions\Zen_Find2dDistance.sqf"; +Zen_FindDirection = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_MathFunctions\Zen_FindDirection.sqf"; +Zen_FindDistanceToPolyEdge = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_MathFunctions\Zen_FindDistanceToPolyEdge.sqf"; +Zen_FindInRange = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_MathFunctions\Zen_FindInRange.sqf"; +Zen_FindMaxDistance = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_MathFunctions\Zen_FindMaxDistance.sqf"; +Zen_FindMinDistance = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_MathFunctions\Zen_FindMinDistance.sqf"; +Zen_FindRayIntersection = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_MathFunctions\Zen_FindRayIntersection.sqf"; +Zen_FindTrigAngle = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_MathFunctions\Zen_FindTrigAngle.sqf"; +Zen_IsAngleInSector = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_MathFunctions\Zen_IsAngleInSector.sqf"; +Zen_IsPointInPoly = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_MathFunctions\Zen_IsPointInPoly.sqf"; +Zen_IsRayInPoly = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_MathFunctions\Zen_IsRayInPoly.sqf"; + +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_MathFunctions/Zen_StandardLibrary.sqf b/Zen_FrameworkFunctions/Zen_MathFunctions/Zen_StandardLibrary.sqf new file mode 100644 index 0000000..4a13a58 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_MathFunctions/Zen_StandardLibrary.sqf @@ -0,0 +1,155 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#define ZEN_STD_Array_LastElement(A) (A select (count A - 1)) +#define ZEN_STD_Array_RandIndex(A) (floor random count A) +#define ZEN_STD_Array_RandElement(A) (A select (floor random count A)) +#define ZEN_STD_Array_UnorderedRemove(A, I) \ + A set [I, A select (count A - 1)]; \ + A resize (count A - 1); + +#define ZEN_STD_Code_WaitScript(S) \ + waitUntil { \ + sleep 1; \ + (scriptDone S) \ + }; + +#define ZEN_STD_Code_SleepFrames(F) sleep (F / diag_fps); + +#define ZEN_STD_Code_SwapVars(X, Y) \ + _Zen_tempVar = X; \ + X = Y; \ + Y = _Zen_tempVar; \ + _Zen_tempVar = nil; + +#define ZEN_STD_Math_RandNegativePositive() (if (random 1 > 0.5) then {1} else {-1}) + +#define ZEN_STD_Math_MarkerArea(M) \ + (if (toLower markerShape M == "ellipse") then { \ + (((markerSize M) select 0) * ((markerSize M) select 1) * pi) \ + } else { \ + (((markerSize M) select 0) * ((markerSize M) select 1) * 4) \ + }) + +#define ZEN_STD_Math_VectCartCyl(V) ([(vectorMagnitude [(V select 0), (V select 1), 0]), (V select 1) atan2 (V select 0), (V select 2)]) +#define ZEN_STD_Math_VectCartPolar(V) ([(vectorMagnitude V), (V select 1) atan2 (V select 0), acos ((V select 2) / (vectorMagnitude V))]) + +#define ZEN_STD_Math_VectCylCart(V) ([(V select 0) * cos (V select 1), (V select 0) * sin (V select 1), (V select 2)]) +#define ZEN_STD_Math_VectCylPolar(V) ([(vectorMagnitude [(V select 0), 0, (V select 2)]), (V select 1), (V select 0) atan2 (V select 2)]) + +#define ZEN_STD_Math_VectPolarCart(V) ([(V select 0) * cos (V select 1) * sin (V select 2), (V select 0) * sin (V select 1) * sin (V select 2), (V select 0) * cos (V select 2)]) +#define ZEN_STD_Math_VectPolarCyl(V) ([(V select 0) * sin (V select 2), (V select 1), (V select 0) * cos (V select 2)]) + +#define ZEN_STD_Math_VectRotateX(P, A) ([(P select 0), (P select 1) * cos A + (P select 2) * sin A, - (P select 1) * sin A + (P select 2) * cos A]) +#define ZEN_STD_Math_VectRotateY(P, A) ([(P select 0) * cos A - (P select 2) * sin A, (P select 1), (P select 0) * sin A + (P select 2) * cos A]) +#define ZEN_STD_Math_VectRotateZ(P, A) ([(P select 0) * cos A + (P select 1) * sin A, - (P select 0) * sin A + (P select 1) * cos A, (P select 2)]) + +#define ZEN_STD_Math_VectTransform(P, X, Y, Z) ([(P select 0) + X, (P select 1) + Y, (P select 2) + Z]) + +#define ZEN_STD_OBJ_ATLPositionZ(O) ((getPosATL O) select 2) +#define ZEN_STD_OBJ_ASLPositionZ(O) ((getPosASL O) select 2) +#define ZEN_STD_OBJ_BBX(O) abs ((((boundingBoxReal O) select 0) select 0) - (((boundingBoxReal O) select 1) select 0)) +#define ZEN_STD_OBJ_BBY(O) abs ((((boundingBoxReal O) select 0) select 1) - (((boundingBoxReal O) select 1) select 1)) +#define ZEN_STD_OBJ_BBZ(O) abs ((((boundingBoxReal O) select 0) select 2) - (((boundingBoxReal O) select 1) select 2)) + +#define ZEN_STD_OBJ_AnimateDoors(V, C) \ + { \ + V animateDoor [(configName _x), C]; \ + } forEach ("((toLower (getText (_x >> 'source'))) == 'door')" configClasses (configFile >> "CfgVehicles" >> (typeOf V) >> "AnimationSources")); + +#define ZEN_STD_OBJ_CountBuildingPos(V, B) \ + V = 0; \ + for "_i" from 0 to 100 do { \ + if ((B buildingPos V) isEqualTo [0,0,0]) exitWith {}; \ + V = V + 1; \ + }; \ + V = V - 1; + +#define ZEN_STD_OBJ_CountCargoSeats(V) (getNumber (configFile >> "CfgVehicles" >> (typeOf V) >> "transportSoldier")) +#define ZEN_STD_OBJ_DeleteVehCrew(V) \ + { \ + deleteVehicle _x; \ + } forEach (crew V + [V]); + +#define ZEN_STD_OBJ_MakePOW(O) \ + O setCaptive true; \ + O disableAI "move"; \ + O setUnitPos "UP"; \ + removeAllWeapons O; \ + removeBackpack O; \ + removeGoggles O; \ + removeHeadgear O; + +#define ZEN_STD_OBJ_OrderGetOut(U, V) \ + U orderGetIn false; \ + { \ + unassignVehicle _x; \ + _x leaveVehicle V; \ + } forEach U; + +#define ZEN_STD_OBJ_OrderGetIn(U, V) \ + { \ + _x assignAsCargo V; \ + } forEach U; \ + U orderGetIn true; + +#define ZEN_STD_OBJ_OrientAircraft(O, P, S) \ + _Zen_vDirToLZ = ((getPosATL O) vectorFromTo P); \ + _Zen_dirToLZ = ZEN_STD_Math_VectCartCyl(_Zen_vDirToLZ) select 1; \ + sleep (5 / diag_fps); \ + O setDir (90 - _Zen_dirToLZ); \ + O setVelocity [S * cos _Zen_dirToLZ, S * sin _Zen_dirToLZ, 0]; + +#define ZEN_STD_OBJ_ParachuteInsertion(O, P, H) \ + _Zen_dir = random 360; \ + { \ + _x setPosATL (P vectorAdd [50 * _forEachIndex * cos _Zen_dir, 50 * _forEachIndex * sin _Zen_dir, H]); \ + removeBackpackGlobal _x; \ + _x addBackpackGlobal "b_parachute"; \ + } forEach O; + +#define ZEN_STD_OBJ_TransformATL(O, X, Y, Z) O setPosATL [((getPosATL O) select 0) + X, ((getPosATL O) select 1) + Y, ((getPosATL O) select 2) + Z]; + +#define ZEN_STD_Parse_GetArgumentDefault(V, I, D) \ + if (count _this > I) then { \ + V = _this select I; \ + } else { \ + V = D; \ + }; + +#define ZEN_STD_Parse_GetSetArgumentDefault(V, I, D, R) \ + if (count _this > I) then { \ + V = _this select I; \ + } else { \ + V = D; \ + }; \ + _this set [I, R]; + +#define ZEN_STD_Parse_GetSetArgumentOptional(V, I, D, R) \ + if (count _this > I) then { \ + V = _this select I; \ + } else { \ + V = D; \ + _this set [I, R]; \ + }; + +#define ZEN_STD_Parse_GetArgument(V, I) \ + if (count _this > I) then { \ + V = _this select I; \ + }; + +#define ZEN_STD_Parse_ToArray(X) \ + if (typeName X != "ARRAY") then { \ + X = [X]; \ + }; + +#define ZEN_STD_Parse_ToString(X) \ + if (typeName X != "STRING") then { \ + X = str X; \ + }; + +#define ZEN_STD_Parse_ToStringLower(X) \ + if (typeName X != "STRING") then { \ + X = toLower str X; \ + }; diff --git a/Zen_FrameworkFunctions/Zen_MiscFunctions/Zen_AddEject.sqf b/Zen_FrameworkFunctions/Zen_MiscFunctions/Zen_AddEject.sqf new file mode 100644 index 0000000..76c3517 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_MiscFunctions/Zen_AddEject.sqf @@ -0,0 +1,27 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" + +_Zen_stack_Trace = ["Zen_AddEject", _this] call Zen_StackAdd; +private ["_units", "_sendPacket"]; + +if !([_this, [["VOID"], ["BOOL"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_units = [(_this select 0)] call Zen_ConvertToObjectArray; +ZEN_STD_Parse_GetSetArgumentDefault(_sendPacket, 1, true, false) + +{ + _x addAction ["Eject", {(_this select 1) setPosATL ([(_this select 1), 3, getDir (_this select 1) - 90, "compass", ((getPosATL (_this select 1)) select 2) - 2] call Zen_ExtendPosition); (_this select 1) setVelocity velocity (_this select 0); if (isEngineOn (_this select 0)) then {(_this select 0) engineOn true};}, [], 6, false, true, "", "(_this in _target) && !(_this in (assignedCargo _target))"]; +} forEach _units; + +if (isMultiplayer && {_sendPacket}) then { + Zen_MP_Closure_Packet = ["Zen_AddEject", _this]; + publicVariable "Zen_MP_Closure_Packet"; +}; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_MiscFunctions/Zen_AddFastRope.sqf b/Zen_FrameworkFunctions/Zen_MiscFunctions/Zen_AddFastRope.sqf new file mode 100644 index 0000000..8edbfe3 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_MiscFunctions/Zen_AddFastRope.sqf @@ -0,0 +1,27 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" + +_Zen_stack_Trace = ["Zen_AddFastRope", _this] call Zen_StackAdd; +private ["_vehicles", "_sendPacket"]; + +if !([_this, [["ARRAY", "OBJECT"], ["BOOL"]], [["OBJECT"]], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_vehicles = [(_this select 0)] call Zen_ConvertToObjectArray; +ZEN_STD_Parse_GetSetArgumentDefault(_sendPacket, 1, true, false) + +{ + _x addAction ["Fast Rope", Zen_OrderFastRope, [], 6, false, true, "", "(_this in _target) && (_this != driver _target) && (speed _target < 10) && (((getPosATL _target) select 2) > 5)"]; +} forEach _vehicles; + +if (isMultiplayer && {_sendPacket}) then { + Zen_MP_Closure_Packet = ["Zen_AddFastRope", _this]; + publicVariable "Zen_MP_Closure_Packet"; +}; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_MiscFunctions/Zen_CheckArguments.sqf b/Zen_FrameworkFunctions/Zen_MiscFunctions/Zen_CheckArguments.sqf new file mode 100644 index 0000000..475b7bb --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_MiscFunctions/Zen_CheckArguments.sqf @@ -0,0 +1,78 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#define SPRF call Zen_StackPrint; \ +call Zen_StackRemove; \ +false; + +#define SPM call Zen_StackPrint; \ +_match = false; + +if !(Zen_Debug_Arguments) exitWith {true}; +_Zen_stack_Trace = ["Zen_CheckArguments", (_this select 0)] call Zen_StackAdd; +private ["_checkArray", "_matchTypesArray", "_match", "_matchTypes", "_subTypesArray"]; + +_checkArray = _this select 0; +_matchTypesArray = _this select 1; +_subTypesArray = _this select 2; +_minCount = _this select 3; + +if (isNil "_checkArray") exitWith { + 0 = ["Zen_CheckArguments", "Given argument list is void", _checkArray] call Zen_PrintError; + SPRF +}; + +if (typeName _checkArray != "ARRAY") exitWith { + 0 = ["Zen_CheckArguments", "Given argument is not an array", _checkArray] call Zen_PrintError; + SPRF +}; + +if (count _checkArray < _minCount) exitWith { + 0 = ["Zen_CheckArguments", format ["Too few arguments, %1 given, %2 required", (count _checkArray), _minCount], _checkArray] call Zen_PrintError; + SPRF +}; + +_match = true; +{ + if (isNil "_x") exitWith { + 0 = ["Zen_CheckArguments", format ["Argument %1 is void", (_forEachIndex + 1)], _checkArray] call Zen_PrintError; + SPM + }; + + if (((typeName _x) in ["OBJECT", "GROUP", "TASK", "SCRIPT", "DISPLAY", "CONTROL"]) && {(isNull _x)}) then { + 0 = ["Zen_CheckArguments", format ["Argument %1 is void", (_forEachIndex + 1)], _checkArray] call Zen_PrintError; + SPM + }; + + if (count _matchTypesArray == _forEachIndex) exitWith {}; + _matchTypes = _matchTypesArray select _forEachIndex; + + if ((count _matchTypes == 1) && {"FUNCTION" in _matchTypes}) then { + if (typeName _x != "STRING") exitWith { + 0 = ["Zen_CheckArguments", format ["Argument %1 is the wrong type", (_forEachIndex + 1)], _checkArray] call Zen_PrintError; + SPM + }; + + if (isNil _x) exitWith { + 0 = ["Zen_CheckArguments", format ["Argument %1 is not a defined function", (_forEachIndex + 1)], _checkArray] call Zen_PrintError; + SPM + }; + } else { + if (!("VOID" in _matchTypes) && {!((typeName _x) in _matchTypes)}) exitWith { + 0 = ["Zen_CheckArguments", format ["Argument %1 is the wrong type", (_forEachIndex + 1)], _checkArray] call Zen_PrintError; + SPM + }; + }; + + if ((typeName _x == "ARRAY") && {count _subTypesArray > _forEachIndex}) then { + _subTypes = _subTypesArray select _forEachIndex; + if ((count _subTypes > 0) && (!(({(typeName _x in _subTypes)} count _x) == count _x))) exitWith { + 0 = ["Zen_CheckArguments", format ["Argument %1 contains a wrong type", (_forEachIndex + 1)], _checkArray] call Zen_PrintError; + SPM + }; + }; +} forEach _checkArray; + +call Zen_StackRemove; +(_match) diff --git a/Zen_FrameworkFunctions/Zen_MiscFunctions/Zen_ExecuteCommand.sqf b/Zen_FrameworkFunctions/Zen_MiscFunctions/Zen_ExecuteCommand.sqf new file mode 100644 index 0000000..07868ab --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_MiscFunctions/Zen_ExecuteCommand.sqf @@ -0,0 +1,86 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_ExecuteCommand", _this] call Zen_StackAdd; +private ["_cmd", "_args"]; + +if !([_this, [["STRING"], ["VOID"]], [], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_cmd = _this select 0; +_args = _this select 1; + +switch (toLower _cmd) do { + case "action": { + (_args select 0) action (_args select 1); + }; + case "addaction": { + (_args select 0) addAction (_args select 1); + }; + case "allowdamage": { + (_args select 0) allowDamage (_args select 1); + }; + case "diag_log": { + diag_log (_args select 0); + }; + case "globalchat": { + (_args select 0) globalChat (_args select 1); + }; + case "groupchat": { + (_args select 0) groupChat (_args select 1); + }; + case "hint": { + hint (_args select 0); + }; + case "hintsilent": { + hintSilent (_args select 0); + }; + case "join": { + (_args select 0) join (_args select 1); + }; + case "leavevehicle": { + (_args select 0) leaveVehicle (_args select 1); + }; + case "ordergetin": { + (_args select 0) orderGetIn (_args select 1); + }; + case "setcaptive": { + (_args select 0) setCaptive (_args select 1); + }; + case "setdir": { + (_args select 0) setDir (_args select 1); + }; + case "setgroupid": { + (_args select 0) setGroupID (_args select 1); + }; + case "setvelocity": { + (_args select 0) setVelocity (_args select 1); + }; + case "setvariable": { + (_args select 0) setVariable (_args select 1); + }; + case "setvectorup": { + (_args select 0) setVectorUp (_args select 1); + }; + case "sidechat": { + (_args select 0) sideChat (_args select 1); + }; + case "switchmove": { + (_args select 0) switchMove (_args select 1); + }; + case "titletext": { + titleText (_args select 0); + }; + case "unassignvehicle": { + unassignVehicle (_args select 0); + }; + default { + 0 = ["Zen_ExecuteCommand", "Unsupported command sequence identifier given", _this] call Zen_PrintError; + call Zen_StackPrint; + }; +}; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_MiscFunctions/Zen_FrameworkLibrary.sqf b/Zen_FrameworkFunctions/Zen_MiscFunctions/Zen_FrameworkLibrary.sqf new file mode 100644 index 0000000..7af8176 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_MiscFunctions/Zen_FrameworkLibrary.sqf @@ -0,0 +1,191 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#define ZEN_FMW_Array_RemoveIndexes(A, I) \ + { \ + 0 = [A, _x - _forEachIndex] call Zen_ArrayRemoveIndex; \ + } forEach I; + +#define ZEN_FMW_CFG_VehicleWeapons(V) \ + _Zen_WeaponsArray = []; \ + 0 = [_Zen_WeaponsArray, getArray (V >> "weapons")] call Zen_ArrayAppendNested; \ + { \ + 0 = [_Zen_WeaponsArray, getArray (V >> "weapons")] call Zen_ArrayAppendNested; \ + } forEach ("true" configClasses (V >> "turrets")); \ + { \ + _Zen_WeaponsArray = [_Zen_WeaponsArray, ZEN_FMW_ZAF_String(V)] call Zen_ArrayFilterCondition; \ + } forEach ["smoke", "horn", "laser", "flare", "throw", "put"]; + +#define ZEN_FMW_Code_ErrorExitVoid(F, D) \ + 0 = [F, D, _this] call Zen_PrintError; \ + call Zen_StackPrint; \ + call Zen_StackRemove; + +#define ZEN_FMW_Code_ErrorExitValue(F, D, V) \ + 0 = [F, D, _this] call Zen_PrintError; \ + call Zen_StackPrint; \ + call Zen_StackRemove; \ + V + +#define ZEN_FMW_Code_Error(F, D) \ + 0 = [F, D, _this] call Zen_PrintError; \ + call Zen_StackPrint; + +#define ZEN_FMW_Code_GiveLoadoutsOrdered(U, L, S) \ + { \ + 0 = [_x, S, (L select (_forEachIndex % (count L)))] call Zen_GiveLoadout; \ + } forEach ([U] call Zen_ConvertToObjectArray); + +#define ZEN_FMW_Code_Insertion(U, V, S, E) \ + _Zen_Vehicle = [S, V, (if (V isKindOf "Air") then {40} else {0})] call Zen_SpawnVehicle; \ + 0 = [_Zen_Vehicle] call Zen_SpawnVehicleCrew; \ + 0 = [U, _Zen_Vehicle] call Zen_MoveInVehicle; \ + 0 = [_Zen_Vehicle, [E, S], U] spawn Zen_OrderInsertion; + +#define ZEN_FMW_Code_InsertionPatrol(G, T, S, M) \ + _Zen_Vehicle = [S, T] call Zen_SpawnVehicle; \ + 0 = [_Zen_Vehicle] call Zen_SpawnVehicleCrew; \ + 0 = [G, _Zen_Vehicle] call Zen_MoveInVehicle; \ + 0 = [_Zen_Vehicle, [([M] call Zen_FindGroundPosition), _Zen_HeliStart], G, "normal", 40, "fastrope", true] spawn Zen_OrderInsertion; \ + 0 = [G, M] spawn { \ + waitUntil { \ + sleep 5; \ + ([_this select 0] call Zen_AreNotInVehicle) \ + }; \ + 0 = [_this select 0, _this select 1] spawn Zen_OrderInfantryPatrol; \ + }; + +#define ZEN_FMW_Code_SpawnMarker(M, N, S) \ + _Zen_GrpsArray = []; \ + for "_Z" from 1 to N do { \ + _Zen_Pos = [ M ] call Zen_FindGroundPosition; \ + _Zen_Group = [_Zen_Pos, S, "infantry", [4,6]] call Zen_SpawnInfantry; \ + _Zen_GrpsArray pushBack _Zen_Group; \ + }; \ + 0 = [_Zen_GrpsArray, S, ZEN_FMW_Loadout_StdInfantryPreset, false] call Zen_GiveLoadout; \ + 0 = [_Zen_GrpsArray, M] spawn Zen_OrderInfantryPatrol; + +#define ZEN_FMW_Code_SpawnPoint(C, D, N, S) \ + _Zen_GrpsArray = []; \ + for "_Z" from 1 to N do { \ + _Zen_Pos = [C, [0, D]] call Zen_FindGroundPosition; \ + _Zen_Group = [_Zen_Pos, S, "infantry", [4,6]] call Zen_SpawnInfantry; \ + _Zen_GrpsArray pushBack _Zen_Group; \ + }; \ + 0 = [_Zen_GrpsArray, S, ZEN_FMW_Loadout_StdInfantryPreset, false] call Zen_GiveLoadout; \ + 0 = [_Zen_GrpsArray, C, [0, D]] spawn Zen_OrderInfantryPatrol; + +#define ZEN_FMW_Code_SpawnPointBehind(START, END, MIND, MAXD, N, S) \ + _Zen_DirToSpawn = [START, END] call Zen_FindDirection; \ + _Zen_GrpsArray = []; \ + for "_i" from 1 to N do { \ + _Zen_SpawnPos = [END, [MIND, MAXD], 0, 1, 0, [_Zen_DirToSpawn - 90, _Zen_DirToSpawn + 90, "trig"]] call Zen_FindGroundPosition; \ + _Zen_Group = [_Zen_SpawnPos, S, "infantry", [4, 6]] call Zen_SpawnInfantry; \ + _Zen_GrpsArray pushBack _Zen_Group; \ + }; \ + 0 = [_Zen_GrpsArray, S, ZEN_FMW_Loadout_StdInfantryPreset, false] call Zen_GiveLoadout; \ + 0 = [_Zen_GrpsArray, END, [1, MAXD]] spawn Zen_OrderInfantryPatrol; \ + _Zen_DirToSpawn = nil; + +#define ZEN_FMW_Code_WaitDistanceGreater(A, B, D) \ + waitUntil { \ + sleep 2; \ + (([A, B] call Zen_Find2dDistance) > D) \ + }; + +#define ZEN_FMW_Code_WaitDistanceLess(A, B, D) \ + waitUntil { \ + sleep 2; \ + (([A, B] call Zen_Find2dDistance) < D) \ + }; + +#define ZEN_FMW_MP_REAll(F, A, I) \ + A I (missionNamespace getVariable F); \ + if (isMultiplayer) then { \ + Zen_MP_Closure_Packet = [F, A]; \ + publicVariable "Zen_MP_Closure_Packet"; \ + }; + +#define ZEN_FMW_MP_REClient(F, A, I, O) \ + if (local O) then { \ + A I (missionNamespace getVariable F); \ + } else { \ + if (isMultiplayer) then { \ + Zen_MP_Closure_Packet = [F, A]; \ + (owner O) publicVariableClient "Zen_MP_Closure_Packet"; \ + }; \ + }; + +#define ZEN_FMW_MP_RENonDedicated(F, A, I) \ + if (isMultiplayer) then { \ + Zen_MP_Closure_Packet = [F, A]; \ + publicVariable "Zen_MP_Closure_Packet"; \ + }; \ + if !(isDedicated) then { \ + A I (missionNamespace getVariable F); \ + }; + +#define ZEN_FMW_MP_REServerOnly(F, A, I) \ + if (isServer) then { \ + A I (missionNamespace getVariable F); \ + } else { \ + if (isMultiplayer) then { \ + Zen_MP_Closure_Packet = [F, A]; \ + publicVariableServer "Zen_MP_Closure_Packet"; \ + }; \ + }; + +#define ZEN_FMW_Math_DistLess2D(A, B, D) (([A, B] call Zen_Find2dDistance) < D) +#define ZEN_FMW_Math_DistGreater3D(A, B, D) ((([A] call Zen_ConvertToPosition) distance ([B] call Zen_ConvertToPosition)) > D) +#define ZEN_FMW_Math_DistGreater2D(A, B, D) (([A, B] call Zen_Find2dDistance) > D) +#define ZEN_FMW_Math_DistLess3D(A, B, D) ((([A] call Zen_ConvertToPosition) distance ([B] call Zen_ConvertToPosition)) < D) +#define ZEN_FMW_Math_RandomPoint(C, R) ([C, random R, random 360] call Zen_ExtendPosition) +#define ZEN_FMW_Math_RandomPointMin(C, S, E) ([C, S + random abs (E - S), random 360] call Zen_ExtendPosition) + +#define ZEN_FMW_Math_TerrainParallelCart(P, I) \ + _Zen_3dGradPolar = [1, [P] call Zen_FindTerrainGradient, 90 - ([P] call Zen_FindTerrainSlope)]; \ + I = ZEN_STD_Math_VectPolarCart(_Zen_3dGradPolar); + +#define ZEN_FMW_Math_TerrainGradientCart(P, I) \ + _Zen_2dGradCyl = [tan ([P] call Zen_FindTerrainSlope), [P] call Zen_FindTerrainGradient, 0]; \ + I = ZEN_STD_Math_VectCylCart(_Zen_2dGradCyl); + +#define ZEN_FMW_OBJ_DeleteDead(D) \ + { \ + _Zen_DeadUnit = _x; \ + _Zen_Delete = true; \ + { \ + if (isPlayer _x) then { \ + if ((_x distanceSqr _Zen_DeadUnit) < D*D) then { \ + _Zen_Delete = false; \ + }; \ + }; \ + } forEach allUnits; \ + if (_Zen_Delete) then { \ + deleteVehicle _x; \ + }; \ + } forEach allDead; + +#define ZEN_FMW_ZAS_ArrayLength {if (count (_this select 0) < count (_this select 1)) exitWith {-1}; (if (count (_this select 0) == count (_this select 1)) then {0} else {1})} +#define ZEN_FMW_ZAS_AlphaNumeric ({_2a = toArray (_this select 1); _c = 0; {if (_x < (_2a select _forEachIndex)) exitWith {_c = -1}; if (_x > (_2a select _forEachIndex)) exitWith {_c = 1};} forEach (toArray (_this select 0)); (_c)}) +#define ZEN_FMW_ZAS_DistFarNear(C) (compile format ["if ((_this select 0) distance %1 > (_this select 1) distance %1) exitWith {-1}; (if ((_this select 0) distance %1 == (_this select 1) distance %1) then {0} else {1})", C]) +#define ZEN_FMW_ZAS_DistNearFar(C) (compile format ["if ((_this select 0) distance %1 < (_this select 1) distance %1) exitWith {-1}; (if ((_this select 0) distance %1 == (_this select 1) distance %1) then {0} else {1})", C]) +#define ZEN_FMW_ZAS_IntInArray(I) (compile format["if (((_this select 0) select %1) < ((_this select 1) select %1)) exitWith {-1}; (if (((_this select 0) select %1) == ((_this select 1) select %1)) then {0} else {1})", I]) +#define ZEN_FMW_ZAS_StringLength {if (count toArray (_this select 0) < count toArray (_this select 1)) exitWith {-1}; (if (count toArray (_this select 0) == count toArray (_this select 1)) then {0} else {1})} + +#define ZEN_FMW_ZAF_NotString(S) (compile format ["(if (typeName _this == 'STRING') then {!(['%1', _this] call Zen_StringIsInString)} else {false})", S]) +#define ZEN_FMW_ZAF_String(S) (compile format ["(if (typeName _this == 'STRING') then {(['%1', _this] call Zen_StringIsInString)} else {false})", S]) +#define ZEN_FMW_ZAF_Type(T) (compile format ["((toLower typeName _this) == '%1')", (toLower T)]) + +#define ZEN_FMW_ZFGP_Beach 1, [3,50], 0, 0, 0, [2,30], [1,10], 0, [1,10,10] +#define ZEN_FMW_ZFGP_DeepSea 2, 0, 0, 0, 0, 0, 0, 0, [1, -50] +#define ZEN_FMW_ZFGP_Flat 1, 0, 0, 0, 0, 0, [1,10] +#define ZEN_FMW_ZFGP_Forest 1, [3,100], 0, [1,0,20], 0, [1,50], 0, [2,[4, -1, -1], 20] +#define ZEN_FMW_ZFGP_Hill 1, 0, 0, 0, 0, [1,25], [2,20], 0, [2,25,10] +#define ZEN_FMW_ZFGP_LandingZone 1, [1,100], 0, [1,0,20], 0, [1,25], [1,20], [1,[0, 1, -1], 20] +#define ZEN_FMW_ZFGP_NotForest 1, 0, 0, 0, 0, 0, 0, [1,[1, -1, -1], 20] +#define ZEN_FMW_ZFGP_Urban 1, [2, 0], 0, [2,1,25], 0, [1,100], 0, [1,[1,-1,-1], 20] + +#define ZEN_FMW_Loadout_DefaultPreset (["Rifleman", "AT Rifleman", "Assistant AA", "Assistant AT", "Assistant AR", "Team Leader", "Squad Leader", "Grenadier", "Auto Rifleman", "Marksman", "Medic", "AA Specialist", "AT Specialist", "Sapper", "Miner", "EOD Specialist"]) +#define ZEN_FMW_Loadout_StdInfantryPreset (["Rifleman", "Rifleman", "Rifleman", "AT Rifleman", "Assistant AR", "Team Leader", "Squad Leader", "Grenadier", "Grenadier", "Auto Rifleman", "Auto Rifleman", "Marksman", "Medic"]) diff --git a/Zen_FrameworkFunctions/Zen_MiscFunctions/Zen_MiscFunctionsCompile.sqf b/Zen_FrameworkFunctions/Zen_MiscFunctions/Zen_MiscFunctionsCompile.sqf new file mode 100644 index 0000000..28f9b95 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_MiscFunctions/Zen_MiscFunctionsCompile.sqf @@ -0,0 +1,18 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +Zen_Damage_Increase = 7; + +Zen_AddFastRope = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_MiscFunctions\Zen_AddFastRope.sqf"; +Zen_AddEject = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_MiscFunctions\Zen_AddEject.sqf"; +Zen_CheckArguments = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_MiscFunctions\Zen_CheckArguments.sqf"; +Zen_ExecuteCommand = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_MiscFunctions\Zen_ExecuteCommand.sqf"; +Zen_MultiplyDamage = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_MiscFunctions\Zen_MultiplyDamage.sqf"; +Zen_PrintError = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_MiscFunctions\Zen_PrintError.sqf"; +Zen_SetWeather = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_MiscFunctions\Zen_SetWeather.sqf"; +Zen_SetViewDistance = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_MiscFunctions\Zen_SetViewDistance.sqf"; +Zen_ShowHideMarkers = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_MiscFunctions\Zen_ShowHideMarkers.sqf"; +Zen_SpawnMarker = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_MiscFunctions\Zen_SpawnMarker.sqf"; + +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_MiscFunctions/Zen_MultiplyDamage.sqf b/Zen_FrameworkFunctions/Zen_MiscFunctions/Zen_MultiplyDamage.sqf new file mode 100644 index 0000000..5d2cc2d --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_MiscFunctions/Zen_MultiplyDamage.sqf @@ -0,0 +1,57 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" + +_Zen_stack_Trace = ["Zen_MultiplyDamage", _this] call Zen_StackAdd; +private ["_units", "_removeHDEvents", "_sendPacket"]; + +if !([_this, [["VOID"], ["BOOL"], ["BOOL"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_units = [(_this select 0)] call Zen_ConvertToObjectArray; +_removeHDEvents = false; + +if (count _this > 1) then { + _removeHDEvents = _this select 1; +} else { + _this set [1, _removeHDEvents]; +}; + +ZEN_STD_Parse_GetSetArgumentDefault(_sendPacket, 2, true, false) + +{ + if (alive _x) then { + if (_removeHDEvents) then { + _x removeAllEventHandlers "HandleDamage"; + }; + _x addEventHandler ["HandleDamage", { + (if (alive (_this select 0)) then { + _damage = 0; + if (((_this select 4) != "") && ((vehicle (_this select 0)) == (_this select 0)) && {(getText (configFile >> "CfgAmmo" >> (_this select 4) >> "simulation")) == "shotBullet"}) then { + _hit = (getNumber (configFile >> "CfgAmmo" >> (_this select 4) >> "hit")); + _multiplier = (_hit + Zen_Damage_Increase) / _hit; + _damage = ((_this select 2) * (abs _multiplier)); + } else { + _damage = (_this select 2); + }; + (_this select 0) setFatigue ((getFatigue (_this select 0)) + (_damage / 2)); + (_damage) + } else { + (_this select 0) removeAllEventHandlers "HandleDamage"; + (0) + }) + }]; + }; +} forEach _units; + +if (isMultiplayer && {_sendPacket}) then { + publicVariable "Zen_Damage_Increase"; + Zen_MP_Closure_Packet = ["Zen_MultiplyDamage", (_this)]; + publicVariable "Zen_MP_Closure_Packet"; +}; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_MiscFunctions/Zen_PrintError.sqf b/Zen_FrameworkFunctions/Zen_MiscFunctions/Zen_PrintError.sqf new file mode 100644 index 0000000..83d9499 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_MiscFunctions/Zen_PrintError.sqf @@ -0,0 +1,24 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +// DO NOT PUT Zen_PrintError ON THE STACK +// DO NOT CALL ANY OTHER FUNCTIONS +// DO NOT USE Zen_CheckArguments +private ["_scriptName", "_errorDesc", "_scriptArgs"]; + +_scriptName = _this select 0; +_errorDesc = _this select 1; +_scriptArgs = _this select 2; + +diag_log format ["-- %1 Error --", _scriptName]; +diag_log _errorDesc; +diag_log time; +diag_log _scriptArgs; + +if (Zen_Print_All_Errors) then { + hint format ["-- %1 Error --\n %2\n%3\n%4", _scriptName, _errorDesc, time, _scriptArgs]; + systemChat format ["-- %1 Error --%2 %3 %4", _scriptName, _errorDesc, time, _scriptArgs]; +}; + +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_MiscFunctions/Zen_SetViewDistance.sqf b/Zen_FrameworkFunctions/Zen_MiscFunctions/Zen_SetViewDistance.sqf new file mode 100644 index 0000000..d42f99c --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_MiscFunctions/Zen_SetViewDistance.sqf @@ -0,0 +1,52 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_SetViewDistance", _this] call Zen_StackAdd; +private ["_viewDist", "_objDist", "_shadowDist", "_sendPacket"]; + +if !([_this, [["SCALAR"], ["SCALAR"], ["SCALAR"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_viewDist = _this select 0; + +if (_viewDist != -1) then { + setViewDistance _viewDist; +}; + +_objDist = -1; +_shadowDist = -1; +_sendPacket = true; + +if (count _this > 1) then { + _objDist = _this select 1; +} else { + _this set [1,-1]; +}; + +if (count _this > 2) then { + _shadowDist = _this select 2; +} else { + _this set [2,-1]; +}; + +if (count _this > 3) then { + _sendPacket = _this select 3; +}; + +if (_objDist != -1) then { + setObjectViewDistance _viewDist; +}; + +if (_shadowDist != -1) then { + setShadowDistance _viewDist; +}; + +if (isMultiplayer && {_sendPacket}) then { + Zen_MP_Closure_Packet = ["Zen_SetViewDistance", (_this + [false])]; + publicVariable "Zen_MP_Closure_Packet"; +}; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_MiscFunctions/Zen_SetWeather.sqf b/Zen_FrameworkFunctions/Zen_MiscFunctions/Zen_SetWeather.sqf new file mode 100644 index 0000000..833d814 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_MiscFunctions/Zen_SetWeather.sqf @@ -0,0 +1,124 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_SetWeather", _this] call Zen_StackAdd; +private ["_dateArray", "_sendPacket", "_defaultArrayDate", "_defaultArrayWeather", "_currentValue", "_futureValue", "_futureTime"]; + +if !([_this, [["ARRAY"], ["ARRAY"], ["ARRAY"], ["ARRAY"], ["ARRAY"], ["ARRAY"], ["ARRAY"], ["ARRAY"]], [["STRING", "SCALAR", "BOOL"], ["STRING", "SCALAR", "BOOL"], ["STRING", "SCALAR", "BOOL"], ["STRING", "SCALAR", "BOOL"], ["STRING", "SCALAR", "BOOL"], ["STRING", "SCALAR", "BOOL"], ["STRING", "SCALAR", "BOOL"], ["STRING", "SCALAR", "BOOL"]], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_defaultArrayDate = ["defaultdate", (random 59.99), random 24, (random 32.99), (random 11.99), 2035]; +_sendPacket = true; + +{ + if ((_x select 0) == "defaultdate") then { + _defaultArrayDate = _x; + } else { + if ((_x select 0) == "packet") then { + _sendPacket = _x select 1; + } else { + if (toLower (_x select 0) == "overcast") then { + _defaultArrayWeather = ["", 0, 0, 600]; + { + _defaultArrayWeather set [_forEachIndex, _x]; + } forEach _x; + _currentValue = _defaultArrayWeather select 1; + _futureValue = _defaultArrayWeather select 2; + _futureTime = _defaultArrayWeather select 3; + + if (_currentValue != -1) then { + 0 setOvercast _currentValue; + skipTime 2; + sleep 0.1; + skipTime -2; + sleep 0.1; + simulWeatherSync; + }; + + if (count _x > 2) then { + _futureTime setOvercast _futureValue; + }; + }; + }; + }; +} forEach _this; + +{ + if ((toLower (_x select 0)) == "date") then { + _dateArray =+ _defaultArrayDate; + { + _dateArray set [_forEachIndex, _x]; + } forEach _x; + + reverse _dateArray; + _dateArray resize 5; + setDate _dateArray; + } else { + _defaultArrayWeather = ["", 0, 0, 600]; + { + _defaultArrayWeather set [_forEachIndex, _x]; + } forEach _x; + + _currentValue = _defaultArrayWeather select 1; + _futureValue = _defaultArrayWeather select 2; + _futureTime = _defaultArrayWeather select 3; + switch (toLower (_x select 0)) do { + case "fog": { + if (_currentValue != -1) then { + 0 setFog [_currentValue, 0.004 + random .005, 3 + random 4]; + }; + + if (count _x > 2) then { + _futureTime setFog [_futureValue, 0.01 + random .1, 1 + random 25]; + }; + }; + case "rain": { + if (_currentValue != -1) then { + 0 setRain _currentValue; + }; + + if (count _x > 2) then { + _futureTime setRain _futureValue; + }; + }; + case "wind": { + setWind [_currentValue, _futureValue]; + }; + case "gusts": { + if (_currentValue != -1) then { + 0 setGusts _currentValue; + }; + + if (count _x > 2) then { + _futureTime setGusts _futureValue; + }; + }; + case "waves": { + if (_currentValue != -1) then { + 0 setWaves _currentValue; + }; + + if (count _x > 2) then { + _futureTime setGusts _futureValue; + }; + }; + case "overcast": {}; + case "defaultdate": {}; + case "packet": {}; + default { + 0 = ["Zen_SetWeather", "Invalid weather type given", _this] call Zen_PrintError; + call Zen_StackPrint; + }; + }; + }; +} forEach _this; + +if (isMultiplayer && {_sendPacket}) then { + Zen_MP_Closure_Packet = ["Zen_SetWeather", (_this + [["packet", false]] + [_defaultArrayDate])]; + publicVariable "Zen_MP_Closure_Packet"; +}; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_MiscFunctions/Zen_ShowHideMarkers.sqf b/Zen_FrameworkFunctions/Zen_MiscFunctions/Zen_ShowHideMarkers.sqf new file mode 100644 index 0000000..e96038d --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_MiscFunctions/Zen_ShowHideMarkers.sqf @@ -0,0 +1,72 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_ShowHideMarkers", _this] call Zen_StackAdd; +private ["_markerArray", "_unitsShowArray", "_unitsHideArray", "_vars"]; + +if !([_this, [["ARRAY", "STRING"], ["VOID"], ["VOID"]], [["STRING"]], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_markerArray = _this select 0; + +if (typeName _markerArray == "STRING") then { + _markerArray = [_markerArray]; +}; + +_unitsShowArray = 0; +_unitsHideArray = 0; + +if (count _this > 1) then { + _unitsShowArray = _this select 1; +}; + +if (count _this > 2) then { + _unitsHideArray = _this select 2; +}; + +_sendPacket = true; +if (count _this > 3) then { + _sendPacket = _this select 3; +}; + +if (!isDedicated && hasInterface) then { + if (typeName _unitsShowArray != "SCALAR") then { + _unitsShowArray = [_unitsShowArray] call Zen_ConvertToObjectArray; + if (player in _unitsShowArray) then { + { + _x setMarkerAlphaLocal 1; + } forEach _markerArray; + }; + }; + + if (typeName _unitsHideArray != "SCALAR") then { + _unitsHideArray = [_unitsHideArray] call Zen_ConvertToObjectArray; + if (player in _unitsHideArray) then { + { + _x setMarkerAlphaLocal 0; + } forEach _markerArray; + }; + }; +}; + +if (isMultiplayer && {(_sendPacket)}) then { + switch (count _this) do { + case 2: { + _vars = _this + [0, false]; + }; + case 3: { + _vars = _this + [false]; + }; + default { + _vars = _this; + }; + }; + + Zen_MP_Closure_Packet = ["Zen_ShowHideMarkers", _vars]; + publicVariable "Zen_MP_Closure_Packet"; +}; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_MiscFunctions/Zen_SpawnMarker.sqf b/Zen_FrameworkFunctions/Zen_MiscFunctions/Zen_SpawnMarker.sqf new file mode 100644 index 0000000..782d1b7 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_MiscFunctions/Zen_SpawnMarker.sqf @@ -0,0 +1,73 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_SpawnMarker", _this] call Zen_StackAdd; +private ["_name", "_pos", "_type", "_txt", "_size", "_color", "_alpha", "_dir"]; + +if !([_this, [["VOID"], ["STRING"], ["STRING"], ["ARRAY"], ["STRING"], ["SCALAR"], ["SCALAR"]], [[], [], [], ["SCALAR"]], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + ("") +}; + +_pos = [(_this select 0)] call Zen_ConvertToPosition; + +_name = ""; +_txt = ""; +_color = "colorBlack"; +_size = [1,1]; +_type = "mil_dot"; +_dir = 0; +_alpha = 1; + +if (count _this > 1) then { + _txt = _this select 1; +}; + +if (count _this > 2) then { + _color = _this select 2; + if (_color == "") then {_color = "colorBlack";}; +}; + +if (count _this > 3) then { + _size = _this select 3; +}; + +if (count _this > 4) then { + _type = _this select 4; + if (_type == "") then {_type = "mil_Dot";}; +}; + +if (count _this > 5) then { + _dir = _this select 5; +}; + +if (count _this > 6) then { + _alpha = _this select 6; +}; + +if (count _this > 7) then { + _name = _this select 7; +}; + +if (_name == "") then { + _name = format["Zen_mk_%1", ([10] call Zen_StringGenerateRandom)]; +}; + +createMarker [_name,_pos]; +_name setMarkerAlpha _alpha; +_name setMarkerPos _pos; + +if (_type == "ELLIPSE" || _type == "RECTANGLE") then { + _name setMarkerShape _type; +} else { + _name setMarkerType _type; +}; + +_name setMarkerText _txt; +_name setMarkerColor _color; +_name setMarkerSize _size; +_name setMarkerDir _dir; + +call Zen_StackRemove; +(_name) diff --git a/Zen_FrameworkFunctions/Zen_MiscFunctions/Zen_StandardLibrary.sqf b/Zen_FrameworkFunctions/Zen_MiscFunctions/Zen_StandardLibrary.sqf new file mode 100644 index 0000000..4a13a58 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_MiscFunctions/Zen_StandardLibrary.sqf @@ -0,0 +1,155 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#define ZEN_STD_Array_LastElement(A) (A select (count A - 1)) +#define ZEN_STD_Array_RandIndex(A) (floor random count A) +#define ZEN_STD_Array_RandElement(A) (A select (floor random count A)) +#define ZEN_STD_Array_UnorderedRemove(A, I) \ + A set [I, A select (count A - 1)]; \ + A resize (count A - 1); + +#define ZEN_STD_Code_WaitScript(S) \ + waitUntil { \ + sleep 1; \ + (scriptDone S) \ + }; + +#define ZEN_STD_Code_SleepFrames(F) sleep (F / diag_fps); + +#define ZEN_STD_Code_SwapVars(X, Y) \ + _Zen_tempVar = X; \ + X = Y; \ + Y = _Zen_tempVar; \ + _Zen_tempVar = nil; + +#define ZEN_STD_Math_RandNegativePositive() (if (random 1 > 0.5) then {1} else {-1}) + +#define ZEN_STD_Math_MarkerArea(M) \ + (if (toLower markerShape M == "ellipse") then { \ + (((markerSize M) select 0) * ((markerSize M) select 1) * pi) \ + } else { \ + (((markerSize M) select 0) * ((markerSize M) select 1) * 4) \ + }) + +#define ZEN_STD_Math_VectCartCyl(V) ([(vectorMagnitude [(V select 0), (V select 1), 0]), (V select 1) atan2 (V select 0), (V select 2)]) +#define ZEN_STD_Math_VectCartPolar(V) ([(vectorMagnitude V), (V select 1) atan2 (V select 0), acos ((V select 2) / (vectorMagnitude V))]) + +#define ZEN_STD_Math_VectCylCart(V) ([(V select 0) * cos (V select 1), (V select 0) * sin (V select 1), (V select 2)]) +#define ZEN_STD_Math_VectCylPolar(V) ([(vectorMagnitude [(V select 0), 0, (V select 2)]), (V select 1), (V select 0) atan2 (V select 2)]) + +#define ZEN_STD_Math_VectPolarCart(V) ([(V select 0) * cos (V select 1) * sin (V select 2), (V select 0) * sin (V select 1) * sin (V select 2), (V select 0) * cos (V select 2)]) +#define ZEN_STD_Math_VectPolarCyl(V) ([(V select 0) * sin (V select 2), (V select 1), (V select 0) * cos (V select 2)]) + +#define ZEN_STD_Math_VectRotateX(P, A) ([(P select 0), (P select 1) * cos A + (P select 2) * sin A, - (P select 1) * sin A + (P select 2) * cos A]) +#define ZEN_STD_Math_VectRotateY(P, A) ([(P select 0) * cos A - (P select 2) * sin A, (P select 1), (P select 0) * sin A + (P select 2) * cos A]) +#define ZEN_STD_Math_VectRotateZ(P, A) ([(P select 0) * cos A + (P select 1) * sin A, - (P select 0) * sin A + (P select 1) * cos A, (P select 2)]) + +#define ZEN_STD_Math_VectTransform(P, X, Y, Z) ([(P select 0) + X, (P select 1) + Y, (P select 2) + Z]) + +#define ZEN_STD_OBJ_ATLPositionZ(O) ((getPosATL O) select 2) +#define ZEN_STD_OBJ_ASLPositionZ(O) ((getPosASL O) select 2) +#define ZEN_STD_OBJ_BBX(O) abs ((((boundingBoxReal O) select 0) select 0) - (((boundingBoxReal O) select 1) select 0)) +#define ZEN_STD_OBJ_BBY(O) abs ((((boundingBoxReal O) select 0) select 1) - (((boundingBoxReal O) select 1) select 1)) +#define ZEN_STD_OBJ_BBZ(O) abs ((((boundingBoxReal O) select 0) select 2) - (((boundingBoxReal O) select 1) select 2)) + +#define ZEN_STD_OBJ_AnimateDoors(V, C) \ + { \ + V animateDoor [(configName _x), C]; \ + } forEach ("((toLower (getText (_x >> 'source'))) == 'door')" configClasses (configFile >> "CfgVehicles" >> (typeOf V) >> "AnimationSources")); + +#define ZEN_STD_OBJ_CountBuildingPos(V, B) \ + V = 0; \ + for "_i" from 0 to 100 do { \ + if ((B buildingPos V) isEqualTo [0,0,0]) exitWith {}; \ + V = V + 1; \ + }; \ + V = V - 1; + +#define ZEN_STD_OBJ_CountCargoSeats(V) (getNumber (configFile >> "CfgVehicles" >> (typeOf V) >> "transportSoldier")) +#define ZEN_STD_OBJ_DeleteVehCrew(V) \ + { \ + deleteVehicle _x; \ + } forEach (crew V + [V]); + +#define ZEN_STD_OBJ_MakePOW(O) \ + O setCaptive true; \ + O disableAI "move"; \ + O setUnitPos "UP"; \ + removeAllWeapons O; \ + removeBackpack O; \ + removeGoggles O; \ + removeHeadgear O; + +#define ZEN_STD_OBJ_OrderGetOut(U, V) \ + U orderGetIn false; \ + { \ + unassignVehicle _x; \ + _x leaveVehicle V; \ + } forEach U; + +#define ZEN_STD_OBJ_OrderGetIn(U, V) \ + { \ + _x assignAsCargo V; \ + } forEach U; \ + U orderGetIn true; + +#define ZEN_STD_OBJ_OrientAircraft(O, P, S) \ + _Zen_vDirToLZ = ((getPosATL O) vectorFromTo P); \ + _Zen_dirToLZ = ZEN_STD_Math_VectCartCyl(_Zen_vDirToLZ) select 1; \ + sleep (5 / diag_fps); \ + O setDir (90 - _Zen_dirToLZ); \ + O setVelocity [S * cos _Zen_dirToLZ, S * sin _Zen_dirToLZ, 0]; + +#define ZEN_STD_OBJ_ParachuteInsertion(O, P, H) \ + _Zen_dir = random 360; \ + { \ + _x setPosATL (P vectorAdd [50 * _forEachIndex * cos _Zen_dir, 50 * _forEachIndex * sin _Zen_dir, H]); \ + removeBackpackGlobal _x; \ + _x addBackpackGlobal "b_parachute"; \ + } forEach O; + +#define ZEN_STD_OBJ_TransformATL(O, X, Y, Z) O setPosATL [((getPosATL O) select 0) + X, ((getPosATL O) select 1) + Y, ((getPosATL O) select 2) + Z]; + +#define ZEN_STD_Parse_GetArgumentDefault(V, I, D) \ + if (count _this > I) then { \ + V = _this select I; \ + } else { \ + V = D; \ + }; + +#define ZEN_STD_Parse_GetSetArgumentDefault(V, I, D, R) \ + if (count _this > I) then { \ + V = _this select I; \ + } else { \ + V = D; \ + }; \ + _this set [I, R]; + +#define ZEN_STD_Parse_GetSetArgumentOptional(V, I, D, R) \ + if (count _this > I) then { \ + V = _this select I; \ + } else { \ + V = D; \ + _this set [I, R]; \ + }; + +#define ZEN_STD_Parse_GetArgument(V, I) \ + if (count _this > I) then { \ + V = _this select I; \ + }; + +#define ZEN_STD_Parse_ToArray(X) \ + if (typeName X != "ARRAY") then { \ + X = [X]; \ + }; + +#define ZEN_STD_Parse_ToString(X) \ + if (typeName X != "STRING") then { \ + X = str X; \ + }; + +#define ZEN_STD_Parse_ToStringLower(X) \ + if (typeName X != "STRING") then { \ + X = toLower str X; \ + }; diff --git a/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_AreInArea.sqf b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_AreInArea.sqf new file mode 100644 index 0000000..e4318bd --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_AreInArea.sqf @@ -0,0 +1,55 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_AreInArea", _this] call Zen_StackAdd; +private ["_unitsArray", "_polygonArgs", "_areInArea", "_unit", "_isInArea", "_isInBlacklist", "_blacklist", "_inAreaArgs"]; + +if !([_this, [["VOID"], ["VOID"], ["ARRAY"], ["SCALAR"], ["STRING"], ["ARRAY"]], [[], [], ["SCALAR", "STRING"], [], [], ["STRING"]], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (false) +}; + +_unitsArray = [(_this select 0)] call Zen_ConvertToObjectArray; + +_blacklist = []; + +if (count _this > 3) then { + _polygonArgs = [_this, 1, 4] call Zen_ArrayGetIndexedSlice; + if (count _this > 5) then { + _blacklist = _this select 5; + }; +} else { + _polygonArgs = _this select 1; + if (count _this > 2) then { + _blacklist = _this select 2; + }; +}; + +_areInArea = true; + +{ + _inAreaArgs = []; + _unit = _x; + 0 = [_inAreaArgs, _unit, _polygonArgs] call Zen_ArrayAppendNested; + _isInArea = _inAreaArgs call Zen_IsPointInPoly; + + if (!_isInArea) exitWith { + _areInArea = false; + }; + + _isInBlacklist = false; + if (count _blacklist > 0) then { + { + _isInBlacklist = [_unit, _x] call Zen_IsPointInPoly; + if (_isInBlacklist) exitWith {}; + } forEach _blacklist; + }; + + if (_isInBlacklist) exitWith { + _areInArea = false; + }; +} forEach _unitsArray; + +call Zen_StackRemove; +(_areInArea) diff --git a/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_AreInVehicle.sqf b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_AreInVehicle.sqf new file mode 100644 index 0000000..b0e8b96 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_AreInVehicle.sqf @@ -0,0 +1,32 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_AreInVehicle", _this] call Zen_StackAdd; +private ["_unitsArray", "_vehicle", "_areInVehicle"]; + +if !([_this, [["VOID"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (false) +}; + +_unitsArray = [([(_this select 0)] call Zen_ConvertToObjectArray)] call Zen_ArrayRemoveDead; +_areInVehicle = true; + +if (count _this > 1) then { + _vehicle = _this select 1; + { + if !(_x in _vehicle) exitWith { + _areInVehicle = false; + }; + } forEach _unitsArray; +} else { + { + if (vehicle _x == _x) exitWith { + _areInVehicle = false; + }; + } forEach _unitsArray; +}; + +call Zen_StackRemove; +(_areInVehicle) diff --git a/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_AreIndoors.sqf b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_AreIndoors.sqf new file mode 100644 index 0000000..8de4062 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_AreIndoors.sqf @@ -0,0 +1,26 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_AreIndoors", _this] call Zen_StackAdd; +private ["_units", "_unitPos", "_unitPosAbove", "_indoors"]; + +if !([_this, [["VOID"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (false) +}; + +_units = [(_this select 0)] call Zen_ConvertToObjectArray; +_indoors = true; + +{ + _unitPos = eyePos _x; + _unitPosAbove = [_unitPos select 0,_unitPos select 1,(_unitPos select 2) + 10]; + + if !((count (lineIntersectsWith [_unitPos,_unitPosAbove,_x])) > 0) exitWith { + _indoors = false; + }; +} forEach _units; + +call Zen_StackRemove; +(_indoors) diff --git a/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_AreLocal.sqf b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_AreLocal.sqf new file mode 100644 index 0000000..011c58d --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_AreLocal.sqf @@ -0,0 +1,23 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_AreLocal", _this] call Zen_StackAdd; +private ["_units", "_areLocal"]; + +if !([_this, [["VOID"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (false) +}; + +_units = [(_this select 0)] call Zen_ConvertToObjectArray; +_areLocal = true; + +{ + if !(local _x) exitWith { + _areLocal = false; + }; +} forEach _units; + +call Zen_StackRemove; +(_areLocal) diff --git a/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_AreNotInArea.sqf b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_AreNotInArea.sqf new file mode 100644 index 0000000..2f643f3 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_AreNotInArea.sqf @@ -0,0 +1,51 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_AreNotInArea", _this] call Zen_StackAdd; +private ["_unitsArray", "_polygonArgs", "_areNotInArea", "_unit", "_isInArea", "_isInBlacklist", "_blacklist", "_inAreaArgs"]; + +if !([_this, [["VOID"], ["VOID"], ["ARRAY"], ["SCALAR"], ["STRING"], ["ARRAY"]], [[], [], ["SCALAR", "STRING"], [], [], ["STRING"]], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (false) +}; + +_unitsArray = [(_this select 0)] call Zen_ConvertToObjectArray; + +_blacklist = []; + +if (count _this > 3) then { + _polygonArgs = [_this, 1, 4] call Zen_ArrayGetIndexedSlice; + if (count _this > 5) then { + _blacklist = _this select 5; + }; +} else { + _polygonArgs = _this select 1; + if (count _this > 2) then { + _blacklist = _this select 2; + }; +}; + +_areNotInArea = true; + +{ + _inAreaArgs = []; + _unit = _x; + 0 = [_inAreaArgs, _unit, _polygonArgs] call Zen_ArrayAppendNested; + _isInArea = _inAreaArgs call Zen_IsPointInPoly; + + _isInBlacklist = false; + if (count _blacklist > 0) then { + { + _isInBlacklist = [_unit, _x] call Zen_IsPointInPoly; + if (_isInBlacklist) exitWith {}; + } forEach _blacklist; + }; + + if (_isInArea && {!_isInBlacklist}) exitWith { + _areNotInArea = false; + }; +} forEach _unitsArray; + +call Zen_StackRemove; +(_areNotInArea) diff --git a/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_AreNotInVehicle.sqf b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_AreNotInVehicle.sqf new file mode 100644 index 0000000..708fa99 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_AreNotInVehicle.sqf @@ -0,0 +1,32 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_AreNotInVehicle", _this] call Zen_StackAdd; +private ["_unitsArray", "_areNotInVehicle", "_vehicle"]; + +if !([_this, [["VOID"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (false) +}; + +_unitsArray = [([(_this select 0)] call Zen_ConvertToObjectArray)] call Zen_ArrayRemoveDead; +_areNotInVehicle = true; + +if (count _this > 1) then { + _vehicle = _this select 1; + { + if (_x in _vehicle) exitWith { + _areNotInVehicle = false; + }; + } forEach _unitsArray; +} else { + { + if (vehicle _x != _x) exitWith { + _areNotInVehicle = false; + }; + } forEach _unitsArray; +}; + +call Zen_StackRemove; +(_areNotInVehicle) diff --git a/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_AreNotIndoors.sqf b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_AreNotIndoors.sqf new file mode 100644 index 0000000..a02fbcc --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_AreNotIndoors.sqf @@ -0,0 +1,26 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_AreNotIndoors", _this] call Zen_StackAdd; +private ["_units", "_unitPos", "_unitPosAbove", "_areNotIndoors"]; + +if !([_this, [["VOID"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (false) +}; + +_units = [(_this select 0)] call Zen_ConvertToObjectArray; +_areNotIndoors = true; + +{ + _unitPos = eyePos _x; + _unitPosAbove = [_unitPos select 0,_unitPos select 1,(_unitPos select 2) + 10]; + + if ((count (lineIntersectsWith [_unitPos,_unitPosAbove,_x])) > 0) exitWith { + _areNotIndoors = false; + }; +} forEach _units; + +call Zen_StackRemove; +(_areNotIndoors) diff --git a/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_AreNotLocal.sqf b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_AreNotLocal.sqf new file mode 100644 index 0000000..e23534b --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_AreNotLocal.sqf @@ -0,0 +1,23 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_AreNotLocal", _this] call Zen_StackAdd; +private ["_units", "_areNotLocal"]; + +if !([_this, [["VOID"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (false) +}; + +_units = [(_this select 0)] call Zen_ConvertToObjectArray; +_areNotLocal = true; + +{ + if (local _x) exitWith { + _areNotLocal = false; + }; +} forEach _units; + +call Zen_StackRemove; +(_areNotLocal) diff --git a/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_FrameworkLibrary.sqf b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_FrameworkLibrary.sqf new file mode 100644 index 0000000..7af8176 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_FrameworkLibrary.sqf @@ -0,0 +1,191 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#define ZEN_FMW_Array_RemoveIndexes(A, I) \ + { \ + 0 = [A, _x - _forEachIndex] call Zen_ArrayRemoveIndex; \ + } forEach I; + +#define ZEN_FMW_CFG_VehicleWeapons(V) \ + _Zen_WeaponsArray = []; \ + 0 = [_Zen_WeaponsArray, getArray (V >> "weapons")] call Zen_ArrayAppendNested; \ + { \ + 0 = [_Zen_WeaponsArray, getArray (V >> "weapons")] call Zen_ArrayAppendNested; \ + } forEach ("true" configClasses (V >> "turrets")); \ + { \ + _Zen_WeaponsArray = [_Zen_WeaponsArray, ZEN_FMW_ZAF_String(V)] call Zen_ArrayFilterCondition; \ + } forEach ["smoke", "horn", "laser", "flare", "throw", "put"]; + +#define ZEN_FMW_Code_ErrorExitVoid(F, D) \ + 0 = [F, D, _this] call Zen_PrintError; \ + call Zen_StackPrint; \ + call Zen_StackRemove; + +#define ZEN_FMW_Code_ErrorExitValue(F, D, V) \ + 0 = [F, D, _this] call Zen_PrintError; \ + call Zen_StackPrint; \ + call Zen_StackRemove; \ + V + +#define ZEN_FMW_Code_Error(F, D) \ + 0 = [F, D, _this] call Zen_PrintError; \ + call Zen_StackPrint; + +#define ZEN_FMW_Code_GiveLoadoutsOrdered(U, L, S) \ + { \ + 0 = [_x, S, (L select (_forEachIndex % (count L)))] call Zen_GiveLoadout; \ + } forEach ([U] call Zen_ConvertToObjectArray); + +#define ZEN_FMW_Code_Insertion(U, V, S, E) \ + _Zen_Vehicle = [S, V, (if (V isKindOf "Air") then {40} else {0})] call Zen_SpawnVehicle; \ + 0 = [_Zen_Vehicle] call Zen_SpawnVehicleCrew; \ + 0 = [U, _Zen_Vehicle] call Zen_MoveInVehicle; \ + 0 = [_Zen_Vehicle, [E, S], U] spawn Zen_OrderInsertion; + +#define ZEN_FMW_Code_InsertionPatrol(G, T, S, M) \ + _Zen_Vehicle = [S, T] call Zen_SpawnVehicle; \ + 0 = [_Zen_Vehicle] call Zen_SpawnVehicleCrew; \ + 0 = [G, _Zen_Vehicle] call Zen_MoveInVehicle; \ + 0 = [_Zen_Vehicle, [([M] call Zen_FindGroundPosition), _Zen_HeliStart], G, "normal", 40, "fastrope", true] spawn Zen_OrderInsertion; \ + 0 = [G, M] spawn { \ + waitUntil { \ + sleep 5; \ + ([_this select 0] call Zen_AreNotInVehicle) \ + }; \ + 0 = [_this select 0, _this select 1] spawn Zen_OrderInfantryPatrol; \ + }; + +#define ZEN_FMW_Code_SpawnMarker(M, N, S) \ + _Zen_GrpsArray = []; \ + for "_Z" from 1 to N do { \ + _Zen_Pos = [ M ] call Zen_FindGroundPosition; \ + _Zen_Group = [_Zen_Pos, S, "infantry", [4,6]] call Zen_SpawnInfantry; \ + _Zen_GrpsArray pushBack _Zen_Group; \ + }; \ + 0 = [_Zen_GrpsArray, S, ZEN_FMW_Loadout_StdInfantryPreset, false] call Zen_GiveLoadout; \ + 0 = [_Zen_GrpsArray, M] spawn Zen_OrderInfantryPatrol; + +#define ZEN_FMW_Code_SpawnPoint(C, D, N, S) \ + _Zen_GrpsArray = []; \ + for "_Z" from 1 to N do { \ + _Zen_Pos = [C, [0, D]] call Zen_FindGroundPosition; \ + _Zen_Group = [_Zen_Pos, S, "infantry", [4,6]] call Zen_SpawnInfantry; \ + _Zen_GrpsArray pushBack _Zen_Group; \ + }; \ + 0 = [_Zen_GrpsArray, S, ZEN_FMW_Loadout_StdInfantryPreset, false] call Zen_GiveLoadout; \ + 0 = [_Zen_GrpsArray, C, [0, D]] spawn Zen_OrderInfantryPatrol; + +#define ZEN_FMW_Code_SpawnPointBehind(START, END, MIND, MAXD, N, S) \ + _Zen_DirToSpawn = [START, END] call Zen_FindDirection; \ + _Zen_GrpsArray = []; \ + for "_i" from 1 to N do { \ + _Zen_SpawnPos = [END, [MIND, MAXD], 0, 1, 0, [_Zen_DirToSpawn - 90, _Zen_DirToSpawn + 90, "trig"]] call Zen_FindGroundPosition; \ + _Zen_Group = [_Zen_SpawnPos, S, "infantry", [4, 6]] call Zen_SpawnInfantry; \ + _Zen_GrpsArray pushBack _Zen_Group; \ + }; \ + 0 = [_Zen_GrpsArray, S, ZEN_FMW_Loadout_StdInfantryPreset, false] call Zen_GiveLoadout; \ + 0 = [_Zen_GrpsArray, END, [1, MAXD]] spawn Zen_OrderInfantryPatrol; \ + _Zen_DirToSpawn = nil; + +#define ZEN_FMW_Code_WaitDistanceGreater(A, B, D) \ + waitUntil { \ + sleep 2; \ + (([A, B] call Zen_Find2dDistance) > D) \ + }; + +#define ZEN_FMW_Code_WaitDistanceLess(A, B, D) \ + waitUntil { \ + sleep 2; \ + (([A, B] call Zen_Find2dDistance) < D) \ + }; + +#define ZEN_FMW_MP_REAll(F, A, I) \ + A I (missionNamespace getVariable F); \ + if (isMultiplayer) then { \ + Zen_MP_Closure_Packet = [F, A]; \ + publicVariable "Zen_MP_Closure_Packet"; \ + }; + +#define ZEN_FMW_MP_REClient(F, A, I, O) \ + if (local O) then { \ + A I (missionNamespace getVariable F); \ + } else { \ + if (isMultiplayer) then { \ + Zen_MP_Closure_Packet = [F, A]; \ + (owner O) publicVariableClient "Zen_MP_Closure_Packet"; \ + }; \ + }; + +#define ZEN_FMW_MP_RENonDedicated(F, A, I) \ + if (isMultiplayer) then { \ + Zen_MP_Closure_Packet = [F, A]; \ + publicVariable "Zen_MP_Closure_Packet"; \ + }; \ + if !(isDedicated) then { \ + A I (missionNamespace getVariable F); \ + }; + +#define ZEN_FMW_MP_REServerOnly(F, A, I) \ + if (isServer) then { \ + A I (missionNamespace getVariable F); \ + } else { \ + if (isMultiplayer) then { \ + Zen_MP_Closure_Packet = [F, A]; \ + publicVariableServer "Zen_MP_Closure_Packet"; \ + }; \ + }; + +#define ZEN_FMW_Math_DistLess2D(A, B, D) (([A, B] call Zen_Find2dDistance) < D) +#define ZEN_FMW_Math_DistGreater3D(A, B, D) ((([A] call Zen_ConvertToPosition) distance ([B] call Zen_ConvertToPosition)) > D) +#define ZEN_FMW_Math_DistGreater2D(A, B, D) (([A, B] call Zen_Find2dDistance) > D) +#define ZEN_FMW_Math_DistLess3D(A, B, D) ((([A] call Zen_ConvertToPosition) distance ([B] call Zen_ConvertToPosition)) < D) +#define ZEN_FMW_Math_RandomPoint(C, R) ([C, random R, random 360] call Zen_ExtendPosition) +#define ZEN_FMW_Math_RandomPointMin(C, S, E) ([C, S + random abs (E - S), random 360] call Zen_ExtendPosition) + +#define ZEN_FMW_Math_TerrainParallelCart(P, I) \ + _Zen_3dGradPolar = [1, [P] call Zen_FindTerrainGradient, 90 - ([P] call Zen_FindTerrainSlope)]; \ + I = ZEN_STD_Math_VectPolarCart(_Zen_3dGradPolar); + +#define ZEN_FMW_Math_TerrainGradientCart(P, I) \ + _Zen_2dGradCyl = [tan ([P] call Zen_FindTerrainSlope), [P] call Zen_FindTerrainGradient, 0]; \ + I = ZEN_STD_Math_VectCylCart(_Zen_2dGradCyl); + +#define ZEN_FMW_OBJ_DeleteDead(D) \ + { \ + _Zen_DeadUnit = _x; \ + _Zen_Delete = true; \ + { \ + if (isPlayer _x) then { \ + if ((_x distanceSqr _Zen_DeadUnit) < D*D) then { \ + _Zen_Delete = false; \ + }; \ + }; \ + } forEach allUnits; \ + if (_Zen_Delete) then { \ + deleteVehicle _x; \ + }; \ + } forEach allDead; + +#define ZEN_FMW_ZAS_ArrayLength {if (count (_this select 0) < count (_this select 1)) exitWith {-1}; (if (count (_this select 0) == count (_this select 1)) then {0} else {1})} +#define ZEN_FMW_ZAS_AlphaNumeric ({_2a = toArray (_this select 1); _c = 0; {if (_x < (_2a select _forEachIndex)) exitWith {_c = -1}; if (_x > (_2a select _forEachIndex)) exitWith {_c = 1};} forEach (toArray (_this select 0)); (_c)}) +#define ZEN_FMW_ZAS_DistFarNear(C) (compile format ["if ((_this select 0) distance %1 > (_this select 1) distance %1) exitWith {-1}; (if ((_this select 0) distance %1 == (_this select 1) distance %1) then {0} else {1})", C]) +#define ZEN_FMW_ZAS_DistNearFar(C) (compile format ["if ((_this select 0) distance %1 < (_this select 1) distance %1) exitWith {-1}; (if ((_this select 0) distance %1 == (_this select 1) distance %1) then {0} else {1})", C]) +#define ZEN_FMW_ZAS_IntInArray(I) (compile format["if (((_this select 0) select %1) < ((_this select 1) select %1)) exitWith {-1}; (if (((_this select 0) select %1) == ((_this select 1) select %1)) then {0} else {1})", I]) +#define ZEN_FMW_ZAS_StringLength {if (count toArray (_this select 0) < count toArray (_this select 1)) exitWith {-1}; (if (count toArray (_this select 0) == count toArray (_this select 1)) then {0} else {1})} + +#define ZEN_FMW_ZAF_NotString(S) (compile format ["(if (typeName _this == 'STRING') then {!(['%1', _this] call Zen_StringIsInString)} else {false})", S]) +#define ZEN_FMW_ZAF_String(S) (compile format ["(if (typeName _this == 'STRING') then {(['%1', _this] call Zen_StringIsInString)} else {false})", S]) +#define ZEN_FMW_ZAF_Type(T) (compile format ["((toLower typeName _this) == '%1')", (toLower T)]) + +#define ZEN_FMW_ZFGP_Beach 1, [3,50], 0, 0, 0, [2,30], [1,10], 0, [1,10,10] +#define ZEN_FMW_ZFGP_DeepSea 2, 0, 0, 0, 0, 0, 0, 0, [1, -50] +#define ZEN_FMW_ZFGP_Flat 1, 0, 0, 0, 0, 0, [1,10] +#define ZEN_FMW_ZFGP_Forest 1, [3,100], 0, [1,0,20], 0, [1,50], 0, [2,[4, -1, -1], 20] +#define ZEN_FMW_ZFGP_Hill 1, 0, 0, 0, 0, [1,25], [2,20], 0, [2,25,10] +#define ZEN_FMW_ZFGP_LandingZone 1, [1,100], 0, [1,0,20], 0, [1,25], [1,20], [1,[0, 1, -1], 20] +#define ZEN_FMW_ZFGP_NotForest 1, 0, 0, 0, 0, 0, 0, [1,[1, -1, -1], 20] +#define ZEN_FMW_ZFGP_Urban 1, [2, 0], 0, [2,1,25], 0, [1,100], 0, [1,[1,-1,-1], 20] + +#define ZEN_FMW_Loadout_DefaultPreset (["Rifleman", "AT Rifleman", "Assistant AA", "Assistant AT", "Assistant AR", "Team Leader", "Squad Leader", "Grenadier", "Auto Rifleman", "Marksman", "Medic", "AA Specialist", "AT Specialist", "Sapper", "Miner", "EOD Specialist"]) +#define ZEN_FMW_Loadout_StdInfantryPreset (["Rifleman", "Rifleman", "Rifleman", "AT Rifleman", "Assistant AR", "Team Leader", "Squad Leader", "Grenadier", "Grenadier", "Auto Rifleman", "Auto Rifleman", "Marksman", "Medic"]) diff --git a/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_GetAllInArea.sqf b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_GetAllInArea.sqf new file mode 100644 index 0000000..28f5a7e --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_GetAllInArea.sqf @@ -0,0 +1,57 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_GetAllInArea", _this] call Zen_StackAdd; +private ["_center", "_sidesAllowed", "_XYSizeArray", "_objectArray", "_polygonArgs", "_blacklist", "_inAreaArgs", "_isInArea"]; + +if !([_this, [["VOID"], ["ARRAY"], ["SIDE", "ARRAY", "SCALAR"], ["STRING"], ["ARRAY"], ["SIDE", "ARRAY"]], [[], ["STRING", "SCALAR"], ["SIDE"], [], ["STRING"], ["SIDE"]], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + ([]) +}; + +_center = [(_this select 0)] call Zen_ConvertToPosition; +_sidesAllowed = [West, East, Resistance, Civilian]; +_blacklist = []; + +if (count _this > 3) then { + _polygonArgs = [_this, 0, 3] call Zen_ArrayGetIndexedSlice; + _XYSizeArray = _polygonArgs select 1; + if (count _this > 4) then { + _blacklist = _this select 4; + }; + if (count _this > 5) then { + _sidesAllowed = _this select 5; + }; +} else { + _polygonArgs = _this select 0; + _XYSizeArray = getMarkerSize _polygonArgs; + if (count _this > 1) then { + _blacklist = _this select 1; + }; + if (count _this > 2) then { + _sidesAllowed = _this select 2; + }; +}; + +_objectArray = []; +_inAreaArgs = []; +0 = [_inAreaArgs, "", _polygonArgs, _blacklist] call Zen_ArrayAppendNested; + +{ + _inAreaArgs set [0, _x]; + _isInArea = _inAreaArgs call Zen_AreInArea; + + if !(_x isKindOf "Animal") then { + if (_isInArea && {((alive _x) && ([(side _x), _sidesAllowed] call Zen_ValueIsInArray))}) then { + if (_x isKindOf "Man") then { + _objectArray pushBack _x; + } else { + 0 = [_objectArray, (crew _x)] call Zen_ArrayAppendNested; + }; + }; + }; +} forEach (_center nearEntities [["Man", "Armored", "Car", "Air", "Ship"], ([_XYSizeArray] call Zen_ArrayFindSum)]); + +call Zen_StackRemove; +(_objectArray) diff --git a/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_GetAllInBuilding.sqf b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_GetAllInBuilding.sqf new file mode 100644 index 0000000..96d2e78 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_GetAllInBuilding.sqf @@ -0,0 +1,37 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" + +_Zen_stack_Trace = ["Zen_GetAllInBuilding", _this] call Zen_StackAdd; +private ["_center", "_sidesAllowed", "_building", "_boundingBox", "_buidingSize", "_objectArray"]; + +if !([_this, [["VOID"], ["ARRAY", "SIDE"]], [[], ["SIDE"]], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + ([]) +}; + +_center = [(_this select 0)] call Zen_ConvertToPosition; +_sidesAllowed = [West, East, Resistance, Civilian]; + +if (count _this > 1) then { + _sidesAllowed = _this select 1; +}; + +if (typeName _sidesAllowed != "ARRAY") then { + _sidesAllowed = [_sidesAllowed]; +}; + +_building = nearestBuilding _center; +_buidingSize = [ZEN_STD_OBJ_BBX(_building), ZEN_STD_OBJ_BBY(_building)] distance [0,0]; + +_objectArray = []; +{ + if ((((getPosATL _x select 2) > 2) || {([_x] call Zen_AreIndoors)}) && {(side _x) in _sidesAllowed}) then { + _objectArray pushBack _x; + }; +} forEach ((getPosATL _building) nearEntities [["Man"], (sqrt (2*(_buidingSize^2)))]); + +call Zen_StackRemove; +(_objectArray) diff --git a/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_GetFreeSeats.sqf b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_GetFreeSeats.sqf new file mode 100644 index 0000000..003bfc0 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_GetFreeSeats.sqf @@ -0,0 +1,76 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" +#include "Zen_FrameworkLibrary.sqf" + +_Zen_stack_Trace = ["Zen_GetFreeSeats", _this] call Zen_StackAdd; +private ["_vehicle", "_turrets", "_turretTypes", "_args", "_unUsedTurrets", "_unUsedCargo", "_dummyUnit", "_hasDriver"]; + +if !([_this, [["OBJECT"], ["ARRAY", "STRING"]], [[], ["STRING"]], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_vehicle = _this select 0; +ZEN_STD_Parse_GetSetArgumentOptional(_turretTypes, 1, ["All"], ["All"]) + +if !(alive _vehicle) exitWith { + ZEN_FMW_Code_ErrorExitVoid("Zen_GetFreeSeats", "Given vehicle is destroyed or does not exist.") +}; + +if (local _vehicle) then { + _turrets = [_vehicle, _turretTypes] call Zen_GetTurretPaths; + _hasDriver = true; + _unUsedTurrets = []; + _unUsedCargo = []; + + _group = createGroup west; + _dummyUnit = _group createUnit ["B_Soldier_F", [0,0,0], [], 0, "NONE"]; + _dummyUnit allowDamage false; + _dummyUnit setCaptive true; + _dummyUnit hideObjectGlobal true; + _dummyUnit setBehaviour "careless"; + + _dummyUnit assignAsDriver _vehicle; + _dummyUnit moveInDriver _vehicle; + if (_dummyUnit in _vehicle) then { + _hasDriver = false + }; + _dummyUnit setPosATL [0,0,0]; + + { + _dummyUnit assignAsTurret [_vehicle, _x]; + _dummyUnit moveInTurret [_vehicle, _x]; + if (_dummyUnit in _vehicle) then { + _unUsedTurrets pushBack _x; + }; + _dummyUnit setPosATL [0,0,0]; + } forEach _turrets; + + for "_i" from 0 to (ZEN_STD_OBJ_CountCargoSeats(_vehicle) - 1) do { + _dummyUnit assignAsCargoIndex [_vehicle, _i]; + _dummyUnit moveInCargo [_vehicle, _i]; + if (_dummyUnit in _vehicle) then { + _unUsedCargo pushBack _i; + }; + _dummyUnit setPosATL [0,0,0]; + }; + deleteVehicle _dummyUnit; + + _vehicle setVariable ["Zen_Unused_Driver", !(_hasDriver), true]; + _vehicle setVariable ["Zen_Unused_Turret", _unUsedTurrets, true]; + _vehicle setVariable ["Zen_Unused_Cargo", _unUsedCargo, true]; +} else { + ZEN_FMW_MP_REClient("Zen_GetFreeSeats", _this, call, _vehicle) + + waitUntil { + ZEN_STD_Code_SleepFrames(5) + (!((_vehicle getVariable ["Zen_Unused_Driver", 0]) isEqualTo 0) + && {!((_vehicle getVariable ["Zen_Unused_Turret", 0]) isEqualTo 0)} + && {!((_vehicle getVariable ["Zen_Unused_Cargo", 0]) isEqualTo 0)}) + }; +}; + +call Zen_StackRemove; +([_vehicle getVariable "Zen_Unused_Driver", _vehicle getVariable "Zen_Unused_Turret", _vehicle getVariable "Zen_Unused_Cargo"]) diff --git a/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_GetSide.sqf b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_GetSide.sqf new file mode 100644 index 0000000..eaec5c6 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_GetSide.sqf @@ -0,0 +1,28 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_GetSide", _this] call Zen_StackAdd; +private ["_unitClass", "_side"]; + +if !([_this, [["OBJECT", "STRING"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (sideLogic) +}; + +_unitClass = _this select 0; + +if (typeName _unitClass == "OBJECT") then { + _unitClass = typeOf _unitClass; +}; + +switch (getNumber (configFile >> "CfgVehicles" >> _unitClass >> "side")) do { + case 0: {_side = East;}; + case 1: {_side = West;}; + case 2: {_side = Resistance;}; + case 3: {_side = Civilian;}; + default {_side = sideLogic;}; +}; + +call Zen_StackRemove; +(_side) diff --git a/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_GetSideColor.sqf b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_GetSideColor.sqf new file mode 100644 index 0000000..96961d5 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_GetSideColor.sqf @@ -0,0 +1,28 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_GetSideColor", _this] call Zen_StackAdd; +private ["_unitClass", "_color"]; + +if !([_this, [["OBJECT", "STRING"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + ("") +}; + +_unitClass = _this select 0; + +if (typeName _unitClass == "OBJECT") then { + _unitClass = typeOf _unitClass; +}; + +switch (getNumber (configFile >> "CfgVehicles" >> _unitClass >> "side")) do { + case 0: {_color = "ColorOpfor";}; + case 1: {_color = "ColorBlufor";}; + case 2: {_color = "ColorIndependent";}; + case 3: {_color = "ColorCivilian";}; + default {_color = "ColorBlack";}; +}; + +call Zen_StackRemove; +(_color) diff --git a/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_GetTurretPaths.sqf b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_GetTurretPaths.sqf new file mode 100644 index 0000000..47976a4 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_GetTurretPaths.sqf @@ -0,0 +1,99 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" +#include "Zen_FrameworkLibrary.sqf" + +_Zen_stack_Trace = ["Zen_GetTurretPaths", _this] call Zen_StackAdd; +private ["_vehicle", "_turretTypes", "_turretClass", "_turretPaths", "_commanderTurrets", "_gunnerTurrets", "_cargoFFVTurrets", "_turretTypeRef", "_turretType", "_turretEntry", "_turretWeapons"]; + +if !([_this, [["OBJECT", "STRING"], ["ARRAY", "STRING"]], [[], ["STRING"]], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + ([]) +}; + +_vehicle = _this select 0; +ZEN_STD_Parse_GetArgumentDefault(_turretTypes, 1, ["All"]) +ZEN_STD_Parse_ToArray(_turretTypes) + +if (typeName _vehicle == "OBJECT") then { + _vehicle = typeOf _vehicle; +}; + +_turretClass = configFile >> "CfgVehicles" >> _vehicle >> "Turrets"; +_turretPaths = []; +_commanderTurrets = []; +_gunnerTurrets = []; +_cargoFFVTurrets = []; +_turretTypeRef = [_commanderTurrets, _gunnerTurrets, _cargoFFVTurrets]; + +#define ADD_TURRET(T) \ + T pushBack [_i]; + +#define ADD_SUBTURRET(T) \ + T pushBack [_i, _forEachIndex]; + +#define GET_TURRET_TYPE(T) \ + _turretType = ""; \ + _turretWeapons = []; \ + 0 = [_turretWeapons, getArray (T >> "weapons")] call Zen_ArrayAppendNested; \ + { \ + _turretWeapons = [_turretWeapons, ZEN_FMW_ZAF_String(_x)] call Zen_ArrayFilterCondition; \ + } forEach ["smoke", "horn", "laser", "flare", "throw", "put"]; \ + if (isClass T) then { \ + if (((getNumber (T >> "primaryGunner")) == 1) || (count _turretWeapons > 0)) then { \ + _turretType = "gunner"; \ + } else { \ + if (((getNumber (T >> "isCopilot")) == 1) || ((getNumber (T >> "primaryObserver")) == 1)) then { \ + _turretType = "commander"; \ + } else { \ + if ((getNumber (T >> "isPersonTurret")) == 1) then { \ + _turretType = "cargo"; \ + }; \ + }; \ + }; \ + }; + +if (isClass _turretClass) then { + for "_i" from 0 to ((count _turretClass) - 1) do { + _turretEntry = _turretClass select _i; + + if (isClass _turretEntry) then { + GET_TURRET_TYPE(_turretEntry) + + switch (_turretType) do { + case "commander": {ADD_TURRET(_commanderTurrets)}; + case "gunner": {ADD_TURRET(_gunnerTurrets)}; + case "cargo": {ADD_TURRET(_cargoFFVTurrets)}; + default {ADD_TURRET(_cargoFFVTurrets)}; + }; + + { + GET_TURRET_TYPE(_x) + switch (_turretType) do { + case "commander": {ADD_SUBTURRET(_commanderTurrets)}; + case "gunner": {ADD_SUBTURRET(_gunnerTurrets)}; + case "cargo": {ADD_SUBTURRET(_cargoFFVTurrets)}; + default {ADD_SUBTURRET(_cargoFFVTurrets)}; + }; + } forEach ("true" configClasses (_turretEntry >> "Turrets")); + + }; + }; +}; + +if (["All", _turretTypes] call Zen_ValueIsInArray) then { + { + 0 = [_turretPaths, _x] call Zen_ArrayAppendNested; + } forEach _turretTypeRef; +} else { + { + if ([_x, _turretTypes] call Zen_ValueIsInArray) then { + 0 = [_turretPaths, (_turretTypeRef select _forEachIndex)] call Zen_ArrayAppendNested; + }; + } forEach ["Commander", "Gunner", "CargoFFV"]; +}; + +call Zen_StackRemove; +(_turretPaths) diff --git a/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_IsFacing.sqf b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_IsFacing.sqf new file mode 100644 index 0000000..2a3b411 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_IsFacing.sqf @@ -0,0 +1,32 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_IsFacing", _this] call Zen_StackAdd; +private ["_unit", "_target", "_angle", "_dirToTarget", "_unitDir", "_return"]; + +if !([_this, [["OBJECT"], ["OBJECT"], ["SCALAR"]], [], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (false) +}; + +_unit = _this select 0; +_target = _this select 1; + +_angle = 45 / 2; + +if (count _this > 2) then { + _angle = (_this select 2) / 2; +}; + +if (_unit == _target) exitWith { + call Zen_StackRemove; + (false) +}; + +_dirToTarget = [_unit, _target] call Zen_FindDirection; +_unitDir = [(getDir _unit)] call Zen_FindTrigAngle; +_return = [_unitDir, [(_dirToTarget - _angle), (_dirToTarget + _angle)]] call Zen_IsAngleInSector; + +call Zen_StackRemove; +(_return) diff --git a/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_IsReady.sqf b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_IsReady.sqf new file mode 100644 index 0000000..cff75cc --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_IsReady.sqf @@ -0,0 +1,25 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_IsReady", _this] call Zen_StackAdd; +private ["_vehicle", "_isReady", "_crew"]; + +if !([_this, [["OBJECT"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (false) +}; + +_vehicle = _this select 0; + +_isReady = true; +_crew = crew _vehicle - (assignedCargo _vehicle); + +{ + if !(unitReady _x) exitWith { + _isReady = false; + }; +} forEach (_crew + [_vehicle]); + +call Zen_StackRemove; +(_isReady) diff --git a/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_IsSeen.sqf b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_IsSeen.sqf new file mode 100644 index 0000000..31193f6 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_IsSeen.sqf @@ -0,0 +1,31 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_IsSeen", _this] call Zen_StackAdd; +private ["_unit", "_range", "_isSeen", "_viewAngleFunc"]; + +if !([_this, [["OBJECT"], ["SCALAR"]], [], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (false) +}; + +_unit = _this select 0; +_range = _this select 1; + +_isSeen = false; + +_viewAngleFunc = { + (86.69289997 * (0.9970684201 ^ _this)) +}; + +{ + if (((side _x) != (side _unit)) && (_x in allUnits) && ((vehicle _x) == _x)) then { + _isSeen = [_x, _unit, ((_x distance _unit) call _viewAngleFunc)] call Zen_IsVisible; + }; + + if (_isSeen) exitWith {}; +} forEach ((eyePos _unit) nearEntities ["Man", _range]); + +call Zen_StackRemove; +(_isSeen) diff --git a/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_IsVisible.sqf b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_IsVisible.sqf new file mode 100644 index 0000000..92db66e --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_IsVisible.sqf @@ -0,0 +1,34 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_IsVisible", _this] call Zen_StackAdd; +private ["_target", "_looker", "_targetEye", "_lookerEye", "_angle", "_isSeen"]; + +if !([_this, [["OBJECT"], ["OBJECT"], ["SCALAR"]], [], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (false) +}; + +_target = _this select 0; +_looker = _this select 1; + +_targetEye = eyePos _target; +_lookerEye = eyePos _looker; + +_angle = 45; + +if (count _this > 2) then { + _angle = _this select 2; +}; + +_isSeen = false; + +if (!(terrainIntersect [_targetEye, _lookerEye]) && {!(lineIntersects [_lookerEye, _targetEye, _looker, _target])}) then { + if ([_looker, _target, _angle] call Zen_IsFacing) then { + _isSeen = true; + }; +}; + +call Zen_StackRemove; +(_isSeen) diff --git a/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_MoveAsSet.sqf b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_MoveAsSet.sqf new file mode 100644 index 0000000..3f7388c --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_MoveAsSet.sqf @@ -0,0 +1,37 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" + +_Zen_stack_Trace = ["Zen_MoveAsSet", _this] call Zen_StackAdd; +private ["_moveEntities", "_moveObjects", "_newCenter", "_avgCenter", "_moveMarkers", "_newPos"]; + +if !([_this, [["VOID"], ["VOID"]], [], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_moveEntities = _this select 0; +_newCenter = [(_this select 1)] call Zen_ConvertToPosition; + +if (typeName _moveEntities != "ARRAY") then { + _moveEntities = [_moveEntities]; +}; + +_moveMarkers = [_moveEntities, ""] call Zen_ArrayGetType; +_moveObjects = [_moveEntities] call Zen_ConvertToObjectArray; + +0 = [_moveObjects, _moveMarkers] call Zen_ArrayAppendNested; +_avgCenter = _moveObjects call Zen_FindAveragePosition; + +{ + _newPos = [_newCenter, ([_avgCenter, _x] call Zen_Find2dDistance), ([_avgCenter, _x] call Zen_FindDirection), "trig", 0.02] call Zen_ExtendPosition; + if (typeName _x == "STRING") then { + _x setMarkerPos _newPos; + } else { + 0 = [_x, _newPos, 0, 0, (getDir _x), true] call Zen_TransformObject; + }; +} forEach _moveObjects; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_MoveInVehicle.sqf b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_MoveInVehicle.sqf new file mode 100644 index 0000000..ee35af6 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_MoveInVehicle.sqf @@ -0,0 +1,120 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" +#include "Zen_FrameworkLibrary.sqf" + +_Zen_stack_Trace = ["Zen_MoveInVehicle", _this] call Zen_StackAdd; +private ["_unitsArray", "_vehicle", "_turrets", "_vehicleSlot", "_turretTypes", "_args", "_unUsedTurrets", "_unUsedCargo", "_dummyUnit", "_startTime", "_seats"]; + +if !([_this, [["VOID"], ["OBJECT"], ["STRING"], ["ARRAY", "STRING"]], [[], [], [], ["STRING"]], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_unitsArray = [(_this select 0)] call Zen_ConvertToObjectArray; +_vehicle = _this select 1; +ZEN_STD_Parse_GetArgumentDefault(_vehicleSlot, 2, "Cargo") +ZEN_STD_Parse_GetArgumentDefault(_turretTypes, 3, ["All"]) + +if !(alive _vehicle) exitWith { + ZEN_FMW_Code_ErrorExitVoid("Zen_MoveInVehicle", "Given vehicle is destroyed or does not exist.") +}; + +switch (toLower _vehicleSlot) do { + case "cargo": { + _seats = [_vehicle, "cargoFFV"] call Zen_GetFreeSeats; + _unUsedTurrets = _seats select 1; + _unUsedCargo = _seats select 2; + + if (count _unitsArray > (count _unUsedCargo + count _unUsedTurrets)) then { + 0 = ["Zen_MoveInVehicle", "Given vehicle does not have enough passenger positions to hold all of the given units", _this] call Zen_PrintError; + call Zen_StackPrint; + }; + + if (count _unUsedTurrets > 0) then { + { + if (_forEachIndex == count _unitsArray) exitWith {}; + _args = [(_unitsArray select _forEachIndex), _vehicle, _x]; + ZEN_FMW_MP_REClient("Zen_MoveInVehicle_Turret_MP", _args, call, (_unitsArray select _forEachIndex)) + } forEach _unUsedTurrets; + + _startTime = time; + waitUntil { + ZEN_STD_Code_SleepFrames(2) + ((({_x in _vehicle} count _unitsArray) == (count _unUsedTurrets)) || (({_x in _vehicle} count _unitsArray) == (count _unitsArray)) || time > (_startTime + (count _unUsedTurrets))) + }; + }; + + _unitsArray = [_unitsArray, {(vehicle _this != _this)}] call Zen_ArrayFilterCondition; + if ((count _unitsArray > 0) && {count _unUsedCargo > 0}) then { + { + if (_forEachIndex == count _unitsArray) exitWith {}; + _args = [(_unitsArray select _forEachIndex), _vehicle, _x]; + ZEN_FMW_MP_REClient("Zen_MoveInVehicle_Cargo_MP", _args, call, (_unitsArray select _forEachIndex)) + } forEach _unUsedCargo; + + _startTime = time; + waitUntil { + ZEN_STD_Code_SleepFrames(2) + ((({_x in _vehicle} count _unitsArray) == (count _unUsedCargo)) || (({_x in _vehicle} count _unitsArray) == (count _unitsArray)) || time > (_startTime + (count _unUsedCargo))) + }; + }; + }; + case "driver": { + if (count _unitsArray > 1) then { + ZEN_FMW_Code_Error("Zen_MoveInVehicle", "Two or more units cannot be in the driver seat.") + }; + + if !(isNull (driver _vehicle)) exitWith { + ZEN_FMW_Code_Error("Zen_MoveInVehicle", "Given vehicle already has a driver.") + }; + + _unit = _unitsArray select 0; + _args = [_unit, _vehicle]; + ZEN_FMW_MP_REClient("Zen_MoveInVehicle_Driver_MP", _args, call, _unit) + + _startTime = time; + waitUntil { + ZEN_STD_Code_SleepFrames(2) + (((driver _vehicle) == _unit) || {time > (_startTime + 1)}) + }; + }; + case "turret": { + _turrets = [_vehicle, _turretTypes] call Zen_GetTurretPaths; + _seats = [_vehicle, _turretTypes] call Zen_GetFreeSeats; + _unUsedTurrets = _seats select 1; + + if (count _unUsedTurrets > 0) then { + { + if (_forEachIndex == count _unitsArray) exitWith {}; + _args = [(_unitsArray select _forEachIndex), _vehicle, _x]; + ZEN_FMW_MP_REClient("Zen_MoveInVehicle_Turret_MP", _args, call, (_unitsArray select _forEachIndex)) + } forEach _unUsedTurrets; + + _startTime = time; + waitUntil { + ZEN_STD_Code_SleepFrames(2) + ((({_x in _vehicle} count _unitsArray) == (count _unUsedTurrets)) || (({_x in _vehicle} count _unitsArray) == (count _unitsArray)) || time > (_startTime + (count _unUsedTurrets))) + }; + }; + }; + case "all": { + 0 = [(_unitsArray select 0), _vehicle, "driver"] call Zen_MoveInVehicle; + _unitsArray = [_unitsArray, {(vehicle _this != _this)}] call Zen_ArrayFilterCondition; + + if (count _unitsArray > 0) then { + 0 = [_unitsArray, _vehicle, "turret"] call Zen_MoveInVehicle; + _unitsArray = [_unitsArray, {(vehicle _this != _this)}] call Zen_ArrayFilterCondition; + if (count _unitsArray > 0) then { + _h_move = [_unitsArray, _vehicle, "cargo"] call Zen_MoveInVehicle; + }; + }; + }; + default { + ZEN_FMW_Code_Error("Zen_MoveInVehicle", "Invalid seat type given.") + }; +}; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_ObjectFunctionsCompile.sqf b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_ObjectFunctionsCompile.sqf new file mode 100644 index 0000000..d7d0174 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_ObjectFunctionsCompile.sqf @@ -0,0 +1,104 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" + +Zen_AreInArea = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_ObjectFunctions\Zen_AreInArea.sqf"; +Zen_AreIndoors = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_ObjectFunctions\Zen_AreIndoors.sqf"; +Zen_AreInVehicle = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_ObjectFunctions\Zen_AreInVehicle.sqf"; +Zen_AreLocal = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_ObjectFunctions\Zen_AreLocal.sqf"; +Zen_AreNotInArea = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_ObjectFunctions\Zen_AreNotInArea.sqf"; +Zen_AreNotIndoors = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_ObjectFunctions\Zen_AreNotIndoors.sqf"; +Zen_AreNotInVehicle = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_ObjectFunctions\Zen_AreNotInVehicle.sqf"; +Zen_AreNotLocal = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_ObjectFunctions\Zen_AreNotLocal.sqf"; +Zen_GetAllInArea = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_ObjectFunctions\Zen_GetAllInArea.sqf"; +Zen_GetAllInBuilding = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_ObjectFunctions\Zen_GetAllInBuilding.sqf"; +Zen_GetFreeSeats = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_ObjectFunctions\Zen_GetFreeSeats.sqf"; +Zen_GetSide = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_ObjectFunctions\Zen_GetSide.sqf"; +Zen_GetSideColor = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_ObjectFunctions\Zen_GetSideColor.sqf"; +Zen_GetTurretPaths = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_ObjectFunctions\Zen_GetTurretPaths.sqf"; +Zen_IsFacing = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_ObjectFunctions\Zen_IsFacing.sqf"; +Zen_IsReady = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_ObjectFunctions\Zen_IsReady.sqf"; +Zen_IsSeen = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_ObjectFunctions\Zen_IsSeen.sqf"; +Zen_IsVisible = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_ObjectFunctions\Zen_IsVisible.sqf"; +Zen_MoveAsSet = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_ObjectFunctions\Zen_MoveAsSet.sqf"; +Zen_MoveInVehicle = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_ObjectFunctions\Zen_MoveInVehicle.sqf"; +Zen_RotateAsSet = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_ObjectFunctions\Zen_RotateAsSet.sqf"; +Zen_SetAISkill = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_ObjectFunctions\Zen_SetAISkill.sqf"; +Zen_TrackGroups = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_ObjectFunctions\Zen_TrackGroups.sqf"; +Zen_TrackInfantry = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_ObjectFunctions\Zen_TrackInfantry.sqf"; +Zen_TrackVehicles = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_ObjectFunctions\Zen_TrackVehicles.sqf"; +Zen_TransformObject = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_ObjectFunctions\Zen_TransformObject.sqf"; + +Zen_MoveInVehicle_Cargo_MP = { + private ["_unit", "_vehicle", "_index", "_startTime"]; + + _unit = _this select 0; + _vehicle = _this select 1; + _index = _this select 2; + + _startTime = time; + while {(_vehicle != (vehicle _unit)) && {(time < (_startTime + 1))}} do { + _unit assignAsCargoIndex [_vehicle, _index]; + _unit moveInCargo [_vehicle, _index]; + ZEN_STD_Code_SleepFrames(2) + }; + + if (true) exitWith {}; +}; + +Zen_MoveInVehicle_Driver_MP = { + private ["_unit", "_vehicle", "_startTime"]; + + _unit = _this select 0; + _vehicle = _this select 1; + _startTime = time; + + while {!(_unit in _vehicle) && {(time < (_startTime + 1))}} do { + _unit assignAsDriver _vehicle; + _unit moveInDriver _vehicle; + ZEN_STD_Code_SleepFrames(2) + }; + + if (true) exitWith {}; +}; + +Zen_MoveInVehicle_Turret_MP = { + private ["_unit", "_vehicle", "_turret", "_startTime"]; + + _unit = _this select 0; + _vehicle = _this select 1; + _turret = _this select 2; + _startTime = time; + + while {!(_unit in _vehicle) && {(time < (_startTime + 1))}} do { + _unit assignAsTurret [_vehicle, _turret]; + _unit moveInTurret [_vehicle, _turret]; + ZEN_STD_Code_SleepFrames(2) + }; + + if (true) exitWith {}; +}; + +Zen_TransformObject_Orient_MP = { + private ["_vehicle", "_velocity", "_dir", "_setNormal"]; + + _vehicle = _this select 0; + _velocity = _this select 1; + _dir = _this select 2; + _setNormal = _this select 3; + + ZEN_STD_Code_SleepFrames(5) + _vehicle setDir _dir; + if (_setNormal) then { + _vehicle setVectorUp (surfaceNormal (getPosATL _vehicle)); + }; + + ZEN_STD_Code_SleepFrames(5) + _vehicle setVelocity (ZEN_STD_Math_VectCylCart(_velocity)); + + if (true) exitWith {}; +}; + +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_RotateAsSet.sqf b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_RotateAsSet.sqf new file mode 100644 index 0000000..4f5a00b --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_RotateAsSet.sqf @@ -0,0 +1,40 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" + +_Zen_stack_Trace = ["Zen_RotateAsSet", _this] call Zen_StackAdd; +private ["_moveObjects", "_center", "_moveMarkers", "_newPos", "_rotateAngle"]; + +if !([_this, [["VOID"], ["SCALAR"]], [], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_moveEntities = _this select 0; +_rotateAngle = _this select 1; + +if (typeName _moveEntities != "ARRAY") then { + _moveEntities = [_moveEntities]; +}; + +_moveMarkers = [_moveEntities, ""] call Zen_ArrayGetType; +_moveObjects = [_moveEntities] call Zen_ConvertToObjectArray; + +0 = [_moveObjects, _moveMarkers] call Zen_ArrayAppendNested; +_center = _moveObjects call Zen_FindAveragePosition; + +{ + _relativePos = ([_x] call Zen_ConvertToPosition) vectorDiff _center; + _rotRelativePos = ZEN_STD_Math_VectRotateZ(_relativePos, _rotateAngle); + _newPos = _center vectorAdd _rotRelativePos; + + if (typeName _x == "STRING") then { + _x setMarkerPos _newPos; + } else { + 0 = [_x, _newPos, (if (_x isKindOf "LandVehicle") then {(0.2)} else {(0)}), 0, (getDir _x), true] call Zen_TransformObject; + }; +} forEach _moveObjects; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_SetAISkill.sqf b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_SetAISkill.sqf new file mode 100644 index 0000000..666499e --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_SetAISkill.sqf @@ -0,0 +1,107 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_SetAISkill", _this] call Zen_StackAdd; +private ["_setSkillUnits", "_skill", "_sendPacket", "_unit", "_skillTypes", "_skillValue"]; + +if !([_this, [["VOID"], ["SCALAR", "STRING", "ARRAY"], ["BOOL"]], [[], ["SCALAR", "ARRAY"]], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_setSkillUnits = [([(_this select 0)] call Zen_ConvertToObjectArray)] call Zen_ArrayRemoveDead; +_skill = _this select 1; + +_sendPacket = true; +if (count _this > 2) then { + _sendPacket = _this select 2; +}; + +if (typeName _skill == "STRING") exitWith { + switch (toLower _skill) do { + case "militia": { + 0 = [_setSkillUnits, [[0.05, 0.07], [0.01, 0.02], [0.1, 0.15], 1, [0, 0.2], [0.2, 0.4], [0.5, 0.6], [0.1, 0.2], [0.5, 0.6], [0.1, 0.2]]] call Zen_SetAISkill; + }; + case "infantry": { + 0 = [_setSkillUnits, [[0.09, 0.11], [0.03, 0.04], [0.15, 0.2], 1, [0.4, 0.5], [0.5, 0.7], [0.7, 0.8], [0.6, 0.8], [0.7, 0.8], [0.3, 0.4]]] call Zen_SetAISkill; + }; + case "sniper": { + 0 = [_setSkillUnits, [0.5, [0.5, 0.6], [0.1, 0.2], 1, [0.8, 0.9], [0.8, 1], 0.9, [0.8, 0.1], 1, 1]] call Zen_SetAISkill; + }; + case "sof": { + 0 = [_setSkillUnits, [[0.16, 0.18], [0.1, 0.12], [0.25, 0.3], 1, 1, 1, 1, 1, [0.8, 0.9], [0.5, 0.6]]] call Zen_SetAISkill; + }; + case "officer": { + 0 = [_setSkillUnits, [[0.1, 0.12], [0.03, 0.04], [0.1, 0.2], 1, 1, [0.5, 0.7], [0.7, 0.8], [0.4, 0.6], [0.7, 0.8], [0.4, 0.5]]] call Zen_SetAISkill; + }; + case "crew": { + 0 = [_setSkillUnits, [[0.075, 0.1], [0.03, 0.04], [0.1, 0.2], 1, [0.5, 0.7], [0.2, 0.4], [0.7, 0.8], [0.4, 0.6], [0.5, 0.6], [0.3, 0.4]]] call Zen_SetAISkill; + }; + default { + 0 = ["Zen_SetAISkill", "Invalid skill preset given", _this] call Zen_PrintError; + call Zen_StackPrint; + }; + }; + call Zen_StackRemove; +}; + +_skillTypes = ["aimingAccuracy", "aimingShake", "aimingSpeed", "commanding", "courage", "endurance", "general", "reloadSpeed", "spotDistance", "spotTime"]; + +{ + _unit = _x; + if (typeName _skill == "ARRAY") then { + if (count _skill < 10) then { + _givenCount = count _skill; + _lastValue = _skill select (count _skill - 1); + + for "_i" from _givenCount to 9 do { + _skill set [_i, _lastValue]; + }; + }; + { + if (typeName _x == "ARRAY") then { + _skillValue = [_x select 0, _x select 1] call Zen_FindInRange; + } else { + _skillValue = _x; + }; + + if (_forEachIndex > 1) then { + if (_unit == (leader group _unit)) then { + _unit setSkill [(_skillTypes select _forEachIndex), (_skillValue + 0.1) min 1.0]; + } else { + _unit setSkill [(_skillTypes select _forEachIndex), _skillValue]; + }; + } else { + if (sunOrMoon == 0) then { + _unit setSkill [(_skillTypes select _forEachIndex), _skillValue / 2]; + } else { + _unit setSkill [(_skillTypes select _forEachIndex), _skillValue]; + }; + }; + } forEach _skill; + } else { + { + if (_forEachIndex > 1) then { + if (_unit == (leader group _unit)) then { + _unit setSkill [_x, (_skill + 0.1) min 1.0]; + } else { + _unit setSkill [_x, _skill]; + }; + } else { + if (sunOrMoon == 0) then { + _unit setSkill [_x, _skill / 2]; + } else { + _unit setSkill [_x, _skill]; + }; + }; + } forEach _skillTypes; + }; +} forEach _setSkillUnits; + +if (isMultiplayer && {_sendPacket}) then { + Zen_MP_Closure_Packet = ["Zen_SetAISkill", (_this + [false])]; + publicVariable "Zen_MP_Closure_Packet"; +}; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_StandardLibrary.sqf b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_StandardLibrary.sqf new file mode 100644 index 0000000..4a13a58 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_StandardLibrary.sqf @@ -0,0 +1,155 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#define ZEN_STD_Array_LastElement(A) (A select (count A - 1)) +#define ZEN_STD_Array_RandIndex(A) (floor random count A) +#define ZEN_STD_Array_RandElement(A) (A select (floor random count A)) +#define ZEN_STD_Array_UnorderedRemove(A, I) \ + A set [I, A select (count A - 1)]; \ + A resize (count A - 1); + +#define ZEN_STD_Code_WaitScript(S) \ + waitUntil { \ + sleep 1; \ + (scriptDone S) \ + }; + +#define ZEN_STD_Code_SleepFrames(F) sleep (F / diag_fps); + +#define ZEN_STD_Code_SwapVars(X, Y) \ + _Zen_tempVar = X; \ + X = Y; \ + Y = _Zen_tempVar; \ + _Zen_tempVar = nil; + +#define ZEN_STD_Math_RandNegativePositive() (if (random 1 > 0.5) then {1} else {-1}) + +#define ZEN_STD_Math_MarkerArea(M) \ + (if (toLower markerShape M == "ellipse") then { \ + (((markerSize M) select 0) * ((markerSize M) select 1) * pi) \ + } else { \ + (((markerSize M) select 0) * ((markerSize M) select 1) * 4) \ + }) + +#define ZEN_STD_Math_VectCartCyl(V) ([(vectorMagnitude [(V select 0), (V select 1), 0]), (V select 1) atan2 (V select 0), (V select 2)]) +#define ZEN_STD_Math_VectCartPolar(V) ([(vectorMagnitude V), (V select 1) atan2 (V select 0), acos ((V select 2) / (vectorMagnitude V))]) + +#define ZEN_STD_Math_VectCylCart(V) ([(V select 0) * cos (V select 1), (V select 0) * sin (V select 1), (V select 2)]) +#define ZEN_STD_Math_VectCylPolar(V) ([(vectorMagnitude [(V select 0), 0, (V select 2)]), (V select 1), (V select 0) atan2 (V select 2)]) + +#define ZEN_STD_Math_VectPolarCart(V) ([(V select 0) * cos (V select 1) * sin (V select 2), (V select 0) * sin (V select 1) * sin (V select 2), (V select 0) * cos (V select 2)]) +#define ZEN_STD_Math_VectPolarCyl(V) ([(V select 0) * sin (V select 2), (V select 1), (V select 0) * cos (V select 2)]) + +#define ZEN_STD_Math_VectRotateX(P, A) ([(P select 0), (P select 1) * cos A + (P select 2) * sin A, - (P select 1) * sin A + (P select 2) * cos A]) +#define ZEN_STD_Math_VectRotateY(P, A) ([(P select 0) * cos A - (P select 2) * sin A, (P select 1), (P select 0) * sin A + (P select 2) * cos A]) +#define ZEN_STD_Math_VectRotateZ(P, A) ([(P select 0) * cos A + (P select 1) * sin A, - (P select 0) * sin A + (P select 1) * cos A, (P select 2)]) + +#define ZEN_STD_Math_VectTransform(P, X, Y, Z) ([(P select 0) + X, (P select 1) + Y, (P select 2) + Z]) + +#define ZEN_STD_OBJ_ATLPositionZ(O) ((getPosATL O) select 2) +#define ZEN_STD_OBJ_ASLPositionZ(O) ((getPosASL O) select 2) +#define ZEN_STD_OBJ_BBX(O) abs ((((boundingBoxReal O) select 0) select 0) - (((boundingBoxReal O) select 1) select 0)) +#define ZEN_STD_OBJ_BBY(O) abs ((((boundingBoxReal O) select 0) select 1) - (((boundingBoxReal O) select 1) select 1)) +#define ZEN_STD_OBJ_BBZ(O) abs ((((boundingBoxReal O) select 0) select 2) - (((boundingBoxReal O) select 1) select 2)) + +#define ZEN_STD_OBJ_AnimateDoors(V, C) \ + { \ + V animateDoor [(configName _x), C]; \ + } forEach ("((toLower (getText (_x >> 'source'))) == 'door')" configClasses (configFile >> "CfgVehicles" >> (typeOf V) >> "AnimationSources")); + +#define ZEN_STD_OBJ_CountBuildingPos(V, B) \ + V = 0; \ + for "_i" from 0 to 100 do { \ + if ((B buildingPos V) isEqualTo [0,0,0]) exitWith {}; \ + V = V + 1; \ + }; \ + V = V - 1; + +#define ZEN_STD_OBJ_CountCargoSeats(V) (getNumber (configFile >> "CfgVehicles" >> (typeOf V) >> "transportSoldier")) +#define ZEN_STD_OBJ_DeleteVehCrew(V) \ + { \ + deleteVehicle _x; \ + } forEach (crew V + [V]); + +#define ZEN_STD_OBJ_MakePOW(O) \ + O setCaptive true; \ + O disableAI "move"; \ + O setUnitPos "UP"; \ + removeAllWeapons O; \ + removeBackpack O; \ + removeGoggles O; \ + removeHeadgear O; + +#define ZEN_STD_OBJ_OrderGetOut(U, V) \ + U orderGetIn false; \ + { \ + unassignVehicle _x; \ + _x leaveVehicle V; \ + } forEach U; + +#define ZEN_STD_OBJ_OrderGetIn(U, V) \ + { \ + _x assignAsCargo V; \ + } forEach U; \ + U orderGetIn true; + +#define ZEN_STD_OBJ_OrientAircraft(O, P, S) \ + _Zen_vDirToLZ = ((getPosATL O) vectorFromTo P); \ + _Zen_dirToLZ = ZEN_STD_Math_VectCartCyl(_Zen_vDirToLZ) select 1; \ + sleep (5 / diag_fps); \ + O setDir (90 - _Zen_dirToLZ); \ + O setVelocity [S * cos _Zen_dirToLZ, S * sin _Zen_dirToLZ, 0]; + +#define ZEN_STD_OBJ_ParachuteInsertion(O, P, H) \ + _Zen_dir = random 360; \ + { \ + _x setPosATL (P vectorAdd [50 * _forEachIndex * cos _Zen_dir, 50 * _forEachIndex * sin _Zen_dir, H]); \ + removeBackpackGlobal _x; \ + _x addBackpackGlobal "b_parachute"; \ + } forEach O; + +#define ZEN_STD_OBJ_TransformATL(O, X, Y, Z) O setPosATL [((getPosATL O) select 0) + X, ((getPosATL O) select 1) + Y, ((getPosATL O) select 2) + Z]; + +#define ZEN_STD_Parse_GetArgumentDefault(V, I, D) \ + if (count _this > I) then { \ + V = _this select I; \ + } else { \ + V = D; \ + }; + +#define ZEN_STD_Parse_GetSetArgumentDefault(V, I, D, R) \ + if (count _this > I) then { \ + V = _this select I; \ + } else { \ + V = D; \ + }; \ + _this set [I, R]; + +#define ZEN_STD_Parse_GetSetArgumentOptional(V, I, D, R) \ + if (count _this > I) then { \ + V = _this select I; \ + } else { \ + V = D; \ + _this set [I, R]; \ + }; + +#define ZEN_STD_Parse_GetArgument(V, I) \ + if (count _this > I) then { \ + V = _this select I; \ + }; + +#define ZEN_STD_Parse_ToArray(X) \ + if (typeName X != "ARRAY") then { \ + X = [X]; \ + }; + +#define ZEN_STD_Parse_ToString(X) \ + if (typeName X != "STRING") then { \ + X = str X; \ + }; + +#define ZEN_STD_Parse_ToStringLower(X) \ + if (typeName X != "STRING") then { \ + X = toLower str X; \ + }; diff --git a/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_TrackGroups.sqf b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_TrackGroups.sqf new file mode 100644 index 0000000..41adb9a --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_TrackGroups.sqf @@ -0,0 +1,215 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_TrackGroups", _this] call Zen_StackAdd; +private ["_groups", "_textType", "_unit", "_color", "_marker", "_txt", "_unitMarkers", "_thread", "_destMarkers", "_destMarker", "_markerShape", "_markerShapeDot", "_markerDot", "_unitMarkersDot", "_group", "_groupPos", "_showDestination", "_hideFromUnits", "_count"]; + +if !([_this, [["VOID"], ["STRING"], ["BOOL"], ["VOID"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + ([]) +}; + +_groups = [(_this select 0)] call Zen_ConvertToGroupArray; + +_textType = "group"; +_showDestination = false; +_hideFromUnits = 0; + +if (count _this > 1) then { + _textType = _this select 1; +}; + +if (count _this > 2) then { + _showDestination = _this select 2; +}; + +if (count _this > 3) then { + _hideFromUnits = _this select 3; +}; + +_unitMarkersDot = []; +_unitMarkers = []; +_destMarkers = []; + +{ + _group = _x; + _unit = objNull; + { + if !(isNull _x) exitWith { + _unit = _x; + }; + } forEach (units _group); + + if (isNull _unit) then { + _groups set [_forEachIndex, 0]; + } else { + switch (toLower _textType) do { + case "object": { + _txt = str _unit; + }; + case "group": { + _txt = str _group; + }; + case "name": { + _txt = ""; + if (isPlayer _unit && alive _unit) then { + _txt = name _unit; + }; + }; + case "number": { + _txt = str _forEachIndex; + }; + default { + _txt = ""; + }; + }; + + switch ([_unit] call Zen_GetSide) do { + case west: { + _markerShape = "b_inf"; + }; + case east: { + _markerShape = "o_inf"; + }; + case resistance: { + _markerShape = "n_inf"; + }; + case civilian: { + _markerShape = "c_unknown"; + }; + default { + _markerShape = ""; + 0 = ["Zen_TrackGroups", "Object is of invalid side", _this] call Zen_PrintError; + call Zen_StackPrint; + }; + }; + + _count = count units _group; + switch (true) do { + case (_count < 4): { + _markerShapeDot = "group_0"; + }; + case (_count < 12): { + _markerShapeDot = "group_1"; + }; + case (_count < 25): { + _markerShapeDot = "group_2"; + }; + default { + _markerShapeDot = "group_3"; + }; + }; + + _color = [_unit] call Zen_GetSideColor; + _marker = [(getPosATL _unit), _txt,_color,[0.85, 0.85],_markerShape,0, 1] call Zen_SpawnMarker; + _markerDot = [(getPosATL _unit), "", _color, [1.3, 1.3], _markerShapeDot, 0, 1] call Zen_SpawnMarker; + + if (_showDestination) then { + _destMarker = [[0,0,0], _txt,_color,[.8,.8],"mil_arrow", 180, 1] call Zen_SpawnMarker; + } else { + _destMarker = [[0,0,0], _txt,_color,[.8,.8],"mil_arrow", 180, 0] call Zen_SpawnMarker; + }; + + _unitMarkers pushBack _marker; + _unitMarkersDot pushBack _markerDot; + _destMarkers pushBack _destMarker; + }; +} forEach _groups; + +0 = [_groups, 0] call Zen_ArrayRemoveValue; + +if (isMultiplayer) then { + 0 = [(_unitMarkers + _destMarkers + _unitMarkersDot), 0, _hideFromUnits] call Zen_ShowHideMarkers; +}; + +_thread = [_groups, _unitMarkers, _unitMarkersDot, _destMarkers, _textType, _showDestination] spawn { + + _Zen_stack_Trace = ["Zen_TrackGroups", _this] call Zen_StackAdd; + private ["_groups", "_marker", "_unitMarkers", "_unit", "_textType", "_destMarkers", "_destMarker", "_unitMarkersDot", "_markerDot", "_markerShapeDot", "_showDestination", "_count", "_group"]; + + _groups = _this select 0; + _unitMarkers = _this select 1; + _unitMarkersDot = _this select 2; + _destMarkers = _this select 3; + _textType = _this select 4; + _showDestination = _this select 5; + + while {((count _groups) != 0)} do { + { + _group = _x; + _marker = _unitMarkers select _forEachIndex; + _markerDot = _unitMarkersDot select _forEachIndex; + _destMarker = _destMarkers select _forEachIndex; + if (({alive _x} count units _group) == 0) then { + deleteMarker _marker; + deleteMarker _markerDot; + deleteMarker _destMarker; + + _groups set [_forEachIndex, 0]; + _unitMarkers set [_forEachIndex, 0]; + _unitMarkersDot set [_forEachIndex, 0]; + _destMarkers set [_forEachIndex, 0]; + } else { + + _unit = leader _group; + switch (toLower _textType) do { + case "object": { + _marker setMarkerText (str _unit); + }; + case "group": { + _marker setMarkerText (str _group); + }; + case "name": { + if (isPlayer _unit && alive _unit) then { + _marker setMarkerText (name _unit); + } else { + _marker setMarkerText ""; + }; + }; + }; + + _markerShapeDot = ""; + _count = count units _group; + switch (true) do { + case (_count < 4): { + _markerShapeDot = "group_0"; + }; + case (_count < 12): { + _markerShapeDot = "group_1"; + }; + case (_count < 25): { + _markerShapeDot = "group_2"; + }; + default { + _markerShapeDot = "group_3"; + }; + }; + + _groupPos = (units _group) call Zen_FindAveragePosition; + + _marker setMarkerPos _groupPos; + _markerDot setMarkerPos _groupPos; + _markerDot setMarkerType _markerShapeDot; + + if (_showDestination) then { + if (([_unit, _destMarker] call Zen_Find2dDistance) > 10 && ((behaviour _unit) != "COMBAT")) then { + _destMarker setMarkerPos ((expectedDestination _unit) select 0); + }; + }; + }; + } forEach _groups; + + 0 = [_groups, 0] call Zen_ArrayRemoveValue; + 0 = [_unitMarkers, 0] call Zen_ArrayRemoveValue; + 0 = [_unitMarkersDot, 0] call Zen_ArrayRemoveValue; + 0 = [_destMarkers, 0] call Zen_ArrayRemoveValue; + + sleep 10; + }; + call Zen_StackRemove; + if (true) exitWith {}; +}; + +call Zen_StackRemove; +[(_unitMarkers + _destMarkers + _unitMarkersDot), _thread] diff --git a/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_TrackInfantry.sqf b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_TrackInfantry.sqf new file mode 100644 index 0000000..a014430 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_TrackInfantry.sqf @@ -0,0 +1,122 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_TrackInfantry", _this] call Zen_StackAdd; +private ["_textType", "_groups", "_color","_txt","_units", "_unitMarkers", "_marker", "_thread", "_hideFromUnits", "_unit"]; + +if !([_this, [["VOID"], ["STRING"], ["VOID"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + ([]) +}; + +_units = [(_this select 0)] call Zen_ConvertToObjectArray; + +_textType = "name"; +_hideFromUnits = 0; + +if (count _this > 1) then { + _textType = _this select 1; +}; + +if (count _this > 2) then { + _hideFromUnits = _this select 2; +}; + +_unitMarkers = []; + +{ + _unit = _x; + + switch (toLower _textType) do { + case "object": { + _txt = str _unit; + }; + case "group": { + _txt = str (group _unit); + }; + case "name": { + _txt = ""; + if (isPlayer _unit && alive _unit) then { + _txt = name _unit; + }; + }; + case "number": { + _txt = str _forEachIndex; + }; + default { + _txt = ""; + }; + }; + + _color = [_unit] call Zen_GetSideColor; + _marker = [_unit, _txt, _color, [.4,.65] ,"mil_triangle", (getDir _unit), 1] call Zen_SpawnMarker; + + _unitMarkers pushBack _marker; +} forEach _units; + +if (isMultiplayer) then { + 0 = [_unitMarkers, 0, _hideFromUnits] call Zen_ShowHideMarkers; +}; + +_thread = [_units, _unitMarkers, _textType] spawn { + + _Zen_stack_Trace = ["Zen_TrackInfantry", _this] call Zen_StackAdd; + private ["_units", "_unit", "_unitMarkers", "_textType", "_marker"]; + + _units = _this select 0; + _unitMarkers = _this select 1; + _textType = _this select 2; + + while {((count _units) != 0)} do { + { + _marker = _x; + _unit = _units select _forEachIndex; + if !(alive _unit) then { + + _marker setMarkerPos getPosATL _unit; + _marker setMarkerDir getDir _unit; + _marker setMarkerType "mil_destroy"; + _marker setMarkerDir 45; + _marker setMarkerSize [0.5,0.5]; + _marker setMarkerText ""; + + _unitMarkers set [_forEachIndex, 0]; + _units set [_forEachIndex, 0]; + } else { + switch (toLower _textType) do { + case "object": { + _marker setMarkerText (str _unit); + }; + case "group": { + _marker setMarkerText (str (group _unit)); + }; + case "name": { + if (isPlayer _unit && alive _unit) then { + _marker setMarkerText (name _unit); + } else { + if (!isPlayer _unit) then { + _marker setMarkerText ""; + }; + }; + }; + case "number": { + _marker setMarkerText str _forEachIndex; + }; + }; + + _marker setMarkerPos getPosATL _unit; + _marker setMarkerDir getDir _unit; + }; + } forEach _unitMarkers; + + 0 = [_units, 0] call Zen_ArrayRemoveValue; + 0 = [_unitMarkers, 0] call Zen_ArrayRemoveValue; + sleep 10; + }; + call Zen_StackRemove; + if (true) exitWith {}; +}; + +call Zen_StackRemove; +([_unitMarkers, _thread]) diff --git a/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_TrackVehicles.sqf b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_TrackVehicles.sqf new file mode 100644 index 0000000..5fd7caa --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_TrackVehicles.sqf @@ -0,0 +1,185 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_TrackVehicles", _this] call Zen_StackAdd; +private ["_vehicles", "_textType", "_hideFromUnits", "_unitMarkers", "_vehicle", "_txt", "_markerShape", "_color", "_marker", "_thread"]; + +if !([_this, [["ARRAY", "OBJECT"], ["STRING"], ["VOID"]], [["OBJECT", "ARRAY"]], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + ([]) +}; + +_vehicles = [(_this select 0)] call Zen_ConvertToObjectArray; + +_textType = "none"; +_hideFromUnits = 0; + +if (count _this > 1) then { + _textType = _this select 1; +}; + +if (count _this > 2) then { + _hideFromUnits = _this select 2; +}; + +_unitMarkers = []; + +{ + _vehicle = _x; + + switch (true) do { + case (_vehicle isKindOf "CAR"): { + _markerShape = "mech_inf"; + }; + case (_vehicle isKindOf "TANK"): { + _markerShape = "armor"; + }; + case (_vehicle isKindOf "HELICOPTER"): { + _markerShape = "air"; + }; + case (_vehicle isKindOf "PLANE"): { + _markerShape = "plane"; + }; + case (_vehicle isKindOf "SHIP"): { + _markerShape = "naval"; + }; + case (_vehicle isKindOf "STATICMORTAR"): { + _markerShape = "mortar"; + }; + case (_vehicle isKindOf "UAV"): { + _markerShape = "uav"; + }; + default { + _markerShape = "unknown"; + }; + }; + + switch ([_vehicle] call Zen_GetSide) do { + case west: { + _markerShape = "b_" + _markerShape; + }; + case east: { + _markerShape = "o_" + _markerShape; + }; + case resistance: { + _markerShape = "n_" + _markerShape; + }; + case civilian: { + _markerShape = "c_unknown"; + }; + default { + _markerShape = "c_unknown"; + 0 = ["Zen_TrackVehicles", "Object is of invalid side", _this] call Zen_PrintError; + call Zen_StackPrint; + }; + }; + + switch (toLower _textType) do { + case "object": { + _txt = str _vehicle; + }; + case "group": { + if (({alive _x} count crew _vehicle) > 0) then { + _txt = (str group (crew _vehicle select 0)); + } else { + _txt = ""; + }; + }; + case "name": { + _txt = ""; + if (isPlayer (commander _x) && {alive (commander _x)}) then { + _txt = name (commander _x); + } else { + if (isPlayer (gunner _x) && {alive (gunner _x)}) then { + _txt = name (gunner _x); + } else { + if (isPlayer (driver _x) && {alive (driver _x)}) then { + _txt = name (driver _x); + }; + }; + }; + }; + case "number": { + _txt = str (_forEachIndex + 1); + }; + default { + _txt = ""; + }; + }; + + _marker = [(getPosATL _vehicle), format ["%1", _txt], "colorBlack", [0.9, 0.9], _markerShape, 0, 1] call Zen_SpawnMarker; + _unitMarkers pushBack _marker; +} forEach _vehicles; + +if (isMultiplayer) then { + 0 = [_unitMarkers, 0, _hideFromUnits] call Zen_ShowHideMarkers; +}; + +_thread = [_vehicles, _unitMarkers, _textType] spawn { + _Zen_stack_Trace = ["Zen_TrackVehicles", _this] call Zen_StackAdd; + private ["_vehicles", "_unitMarkers", "_textType", "_vehicle", "_marker"]; + + _vehicles = _this select 0; + _unitMarkers = _this select 1; + _textType = _this select 2; + + while {((count _vehicles) != 0)} do { + { + _vehicle = _x; + _marker = _unitMarkers select _forEachIndex; + if !(alive _vehicle) then { + deleteMarker _marker; + + _vehicles set [_forEachIndex, 0]; + _unitMarkers set [_forEachIndex, 0]; + } else { + switch (toLower _textType) do { + case "object": { + _marker setMarkerText (str _vehicle); + }; + case "group": { + if (({alive _x} count crew _vehicle) > 0) then { + _marker setMarkerText (str group (crew _vehicle select 0)); + } else { + _marker setMarkerText ""; + }; + }; + case "name": { + if (alive (commander _vehicle) && {isPlayer (commander _vehicle)}) then { + _marker setMarkerText name (commander _vehicle); + } else { + if (alive (gunner _vehicle) && {isPlayer (gunner _vehicle)}) then { + _marker setMarkerText name (gunner _vehicle); + } else { + if (alive (driver _vehicle) && {isPlayer (driver _vehicle)}) then { + _marker setMarkerText name (driver _vehicle); + } else { + _marker setMarkerText ""; + }; + }; + }; + }; + // case "number": {}; + }; + + if (({alive _x} count crew _vehicle) == 0) then { + _marker setMarkerColor "ColorBlack"; + } else { + _marker setMarkerColor ([(([(crew _vehicle)] call Zen_ArrayRemoveDead) select 0)] call Zen_GetSideColor); + }; + + _marker setMarkerPos getPosATL _vehicle; + }; + } forEach _vehicles; + + 0 = [_vehicles, 0] call Zen_ArrayRemoveValue; + 0 = [_unitMarkers, 0] call Zen_ArrayRemoveValue; + sleep 10; + }; + call Zen_StackRemove; + if (true) exitWith {}; +}; + +call Zen_StackRemove; +[_unitMarkers, _thread] diff --git a/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_TransformObject.sqf b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_TransformObject.sqf new file mode 100644 index 0000000..03f0946 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_TransformObject.sqf @@ -0,0 +1,45 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" +#include "Zen_FrameworkLibrary.sqf" + +_Zen_stack_Trace = ["Zen_TransformObject", _this] call Zen_StackAdd; +private ["_obj", "_pos", "_heightChange", "_velocity", "_dir", "_isNormal", "_setNormal"]; + +if !([_this, [["OBJECT"], ["VOID"], ["SCALAR"], ["SCALAR", "ARRAY"], ["SCALAR"], ["BOOL"]], [[], [], [], ["SCALAR"]], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (objNull) +}; + +_obj = _this select 0; +_pos = [(_this select 1)] call Zen_ConvertToPosition; + +ZEN_STD_Parse_GetArgumentDefault(_heightChange, 2, 0) +ZEN_STD_Parse_GetArgumentDefault(_velocity, 3, 0) +ZEN_STD_Parse_GetArgumentDefault(_dir, 4, (getDir _obj)) +ZEN_STD_Parse_GetArgumentDefault(_isNormal, 5, false) + +if (_velocity isEqualTo 0) then { + _velocity = ZEN_STD_Math_VectCartCyl((velocity _obj)); +}; + +if (surfaceIsWater _pos) then { + _pos set [2, ((_pos select 2) + _heightChange) max (getTerrainHeightASL _pos)]; +} else { + _pos set [2, ((_pos select 2) + _heightChange) max 0]; +}; + +_obj setPosATL _pos; +_setNormal = (_isNormal && {!(_obj isKindOf "Man")}); + +if (local _obj) then { + 0 = [_obj, _velocity, _dir, _setNormal] spawn Zen_TransformObject_Orient_MP; +} else { + Zen_MP_Closure_Packet = ["Zen_TransformObject_Orient_MP", [_obj, _velocity, _dir, _setNormal]]; + (owner _obj) publicVariableClient "Zen_MP_Closure_Packet"; +}; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_ObjectiveSystem/Zen_CreateObjective.sqf b/Zen_FrameworkFunctions/Zen_ObjectiveSystem/Zen_CreateObjective.sqf new file mode 100644 index 0000000..6f60adb --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_ObjectiveSystem/Zen_CreateObjective.sqf @@ -0,0 +1,180 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" + +_Zen_stack_Trace = ["Zen_CreateObjective", _this] call Zen_StackAdd; +private ["_objType", "_objPos", "_objects", "_rangers", "_convoyStart", "_convoySpeed", "_taskUniqueName", "_side", "_extraVars1", "_extraVars2", "_markerColor", "_objClass", "_triggerType", "_objMarker", "_spawned", "_h_arrive"]; + +if !([_this, [["VOID"], ["VOID"], ["SIDE"], ["ARRAY", "STRING"], ["STRING"], ["VOID"], ["STRING"]], [[], [], [], ["STRING"], [], ["SCALAR", "STRING"]], 5] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (objNull) +}; + +_objPos = [(_this select 0)] call Zen_ConvertToPosition; +_rangers = [(_this select 1)] call Zen_ConvertToObjectArray; +_side = _this select 2; +_objType = _this select 3; +_triggerType = _this select 4; + +_objects = [objNull]; +_extraVars1 = ""; +_extraVars2 = ""; + +if (typeName _objType == "ARRAY") then { + if ([["custom", "convoy"], _objType] call Zen_ValuesAreInArray) then { + 0 = ["Zen_CreateObjective", "Both Custom and Convoy cannot be given in random type array", _this] call Zen_PrintError; + call Zen_StackPrint; + }; + _objType = [_objType] call Zen_ArrayGetRandom; +}; + +if (count _this > 5) then { + _extraVars1 = _this select 5; +}; + +if (count _this > 6) then { + _extraVars2 = _this select 6; +}; + +_taskUniqueName = [_rangers, _objType, _objPos, _side, _extraVars1, _triggerType] call Zen_ObjectiveCreateTask; +_objMarker = [_objPos, _side] call Zen_ObjectiveSpawnMarker; + +_objMarker setMarkerText (([_taskUniqueName] call Zen_GetTaskDataGlobal) select 5); +0 = [_objMarker, _rangers] call Zen_ShowHideMarkers; + +switch (toLower _objType) do { + case "box": { + _objects = [([_objPos, _side, true] call Zen_SpawnAmmoBox)]; + 0 = [_objPos, 10] call Zen_SpawnFortification; + }; + case "mortar": { + _objects = [_objPos, _side] call Zen_SpawnMortar; + _objects = _objects + (crew (_objects select 0)) + (crew (_objects select 1)); + 0 = [_objPos, 10] call Zen_SpawnFortification; + }; + case "wreck": { + _objects = [_objPos, _side] call Zen_SpawnWreck; + }; + case "officer": { + _objects = [_objPos, _side] call Zen_SpawnOfficer; + 0 = [([_objPos, 5, random 360] call Zen_ExtendPosition)] call Zen_SpawnCamp; + }; + case "pow": { + _objects = [_objPos, _side] call Zen_SpawnPOW; + 0 = [([_objPos, 5, random 360] call Zen_ExtendPosition)] call Zen_SpawnCamp; + }; + case "convoy": { + _convoyStart = _extraVars1; + _convoySpeed = "limited"; + if (count _this > 6) then { + _convoySpeed = _extraVars2; + }; + + _objects = [_convoyStart, _side] call Zen_SpawnConvoy; + _h_arrive = [(_objects select 0), _objPos, _convoySpeed] spawn Zen_OrderVehicleMove; + _objDir = (90 - ([(_objects select 0), _objPos] call Zen_FindDirection)); + + if !([getDir (_objects select 0), [_objDir - 90, _objDir + 90]] call Zen_IsAngleInSector) then { + 0 = [_objects, 180] call Zen_RotateAsSet; + sleep 0.2; + { + _x setDir ((getDir _x) + 180); + _x setDamage 0; + } forEach _objects; + }; + + switch (_side) do { + case west: {_markerColor = "ColorBlufor";}; + case east: {_markerColor = "ColorOpfor";}; + case resistance: {_markerColor = "ColorIndependent";}; + case civilian: {_markerColor = "ColorCivilian";}; + default { + 0 = ["Zen_CreateObjective", "Invalid side given", _this] call Zen_PrintError; + call Zen_StackPrint; + }; + }; + + 0 = [_convoyStart, "Convoy Start", _markerColor, [0.7,0.7]] call Zen_SpawnMarker; + 0 = [_objects, _objPos] spawn { + private ["_troopVeh", "_vehicles", "_endPoint", "_troopUnits", "_patrolGroup"]; + + _vehicles = _this select 0; + _endPoint = _this select 1; + _troopVeh = ZEN_STD_Array_LastElement((_this select 0)); + + waitUntil { + sleep 5; + (!(canMove _troopVeh) || (((_troopVeh distance _endPoint) < 50) && {(speed _troopVeh < 1)})) + }; + + _troopUnits = (assignedCargo _troopVeh); + doStop driver _troopVeh; + ZEN_STD_OBJ_OrderGetOut(_troopUnits, _troopVeh) + + _troopUnits = [_troopUnits] call Zen_ArrayRemoveDead; + if (count _troopUnits == 0) exitWith {}; + + _patrolGroup = createGroup (side (_troopUnits select 0)); + _troopUnits join _patrolGroup; + + sleep 5; + _troopUnits = [_troopUnits] call Zen_ArrayRemoveDead; + if (count _troopUnits == 0) exitWith {}; + + 0 = [_troopUnits, (_troopUnits select 0), [10, 75]] spawn Zen_OrderInfantryPatrol; + if (true) exitWith {}; + }; + }; + case "custom": { + if (count _this < 5) exitWith { + 0 = ["Zen_CreateObjective", "Custom objective requires extra arguments", _this] call Zen_PrintError; + call Zen_StackPrint; + call Zen_StackRemove; + }; + + _objClass = _extraVars1; + if (typeName _objClass != "ARRAY") then { + _objClass = [_objClass]; + }; + + _objects = []; + { + if (_x isKindOf "man") then { + _spawned = ([_objPos, _x] call Zen_SpawnGroup); + } else { + _spawned = [([_objPos, _x] call Zen_SpawnVehicle)]; + }; + _objects pushBack _spawned; + } forEach _objClass; + + _objects = [_objects] call Zen_ConvertToObjectArray; + }; + default { + 0 = ["Zen_CreateObjective", "Invalid objective identifier given", _this] call Zen_PrintError; + call Zen_StackPrint; + }; +}; + +switch (toLower _triggerType) do { + case "eliminate": { + 0 = [_objects, _taskUniqueName, "succeeded"] spawn Zen_TriggerAreDead; + }; + case "protect": { + 0 = [_objects, _taskUniqueName, "failed"] spawn Zen_TriggerAreDead; + }; + case "rescue": { + 0 = [_objects, _rangers, _taskUniqueName] spawn Zen_TriggerAreRescued; + }; + case "reach": { + 0 = [_rangers, _taskUniqueName, "succeeded", _objects] spawn Zen_TriggerAreNear; + }; + default { + 0 = ["Zen_CreateObjective", "Invalid trigger condition identifier given", _this] call Zen_PrintError; + call Zen_StackPrint; + }; +}; + +call Zen_StackRemove; +([_objects, _taskUniqueName]) diff --git a/Zen_FrameworkFunctions/Zen_ObjectiveSystem/Zen_FrameworkLibrary.sqf b/Zen_FrameworkFunctions/Zen_ObjectiveSystem/Zen_FrameworkLibrary.sqf new file mode 100644 index 0000000..7af8176 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_ObjectiveSystem/Zen_FrameworkLibrary.sqf @@ -0,0 +1,191 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#define ZEN_FMW_Array_RemoveIndexes(A, I) \ + { \ + 0 = [A, _x - _forEachIndex] call Zen_ArrayRemoveIndex; \ + } forEach I; + +#define ZEN_FMW_CFG_VehicleWeapons(V) \ + _Zen_WeaponsArray = []; \ + 0 = [_Zen_WeaponsArray, getArray (V >> "weapons")] call Zen_ArrayAppendNested; \ + { \ + 0 = [_Zen_WeaponsArray, getArray (V >> "weapons")] call Zen_ArrayAppendNested; \ + } forEach ("true" configClasses (V >> "turrets")); \ + { \ + _Zen_WeaponsArray = [_Zen_WeaponsArray, ZEN_FMW_ZAF_String(V)] call Zen_ArrayFilterCondition; \ + } forEach ["smoke", "horn", "laser", "flare", "throw", "put"]; + +#define ZEN_FMW_Code_ErrorExitVoid(F, D) \ + 0 = [F, D, _this] call Zen_PrintError; \ + call Zen_StackPrint; \ + call Zen_StackRemove; + +#define ZEN_FMW_Code_ErrorExitValue(F, D, V) \ + 0 = [F, D, _this] call Zen_PrintError; \ + call Zen_StackPrint; \ + call Zen_StackRemove; \ + V + +#define ZEN_FMW_Code_Error(F, D) \ + 0 = [F, D, _this] call Zen_PrintError; \ + call Zen_StackPrint; + +#define ZEN_FMW_Code_GiveLoadoutsOrdered(U, L, S) \ + { \ + 0 = [_x, S, (L select (_forEachIndex % (count L)))] call Zen_GiveLoadout; \ + } forEach ([U] call Zen_ConvertToObjectArray); + +#define ZEN_FMW_Code_Insertion(U, V, S, E) \ + _Zen_Vehicle = [S, V, (if (V isKindOf "Air") then {40} else {0})] call Zen_SpawnVehicle; \ + 0 = [_Zen_Vehicle] call Zen_SpawnVehicleCrew; \ + 0 = [U, _Zen_Vehicle] call Zen_MoveInVehicle; \ + 0 = [_Zen_Vehicle, [E, S], U] spawn Zen_OrderInsertion; + +#define ZEN_FMW_Code_InsertionPatrol(G, T, S, M) \ + _Zen_Vehicle = [S, T] call Zen_SpawnVehicle; \ + 0 = [_Zen_Vehicle] call Zen_SpawnVehicleCrew; \ + 0 = [G, _Zen_Vehicle] call Zen_MoveInVehicle; \ + 0 = [_Zen_Vehicle, [([M] call Zen_FindGroundPosition), _Zen_HeliStart], G, "normal", 40, "fastrope", true] spawn Zen_OrderInsertion; \ + 0 = [G, M] spawn { \ + waitUntil { \ + sleep 5; \ + ([_this select 0] call Zen_AreNotInVehicle) \ + }; \ + 0 = [_this select 0, _this select 1] spawn Zen_OrderInfantryPatrol; \ + }; + +#define ZEN_FMW_Code_SpawnMarker(M, N, S) \ + _Zen_GrpsArray = []; \ + for "_Z" from 1 to N do { \ + _Zen_Pos = [ M ] call Zen_FindGroundPosition; \ + _Zen_Group = [_Zen_Pos, S, "infantry", [4,6]] call Zen_SpawnInfantry; \ + _Zen_GrpsArray pushBack _Zen_Group; \ + }; \ + 0 = [_Zen_GrpsArray, S, ZEN_FMW_Loadout_StdInfantryPreset, false] call Zen_GiveLoadout; \ + 0 = [_Zen_GrpsArray, M] spawn Zen_OrderInfantryPatrol; + +#define ZEN_FMW_Code_SpawnPoint(C, D, N, S) \ + _Zen_GrpsArray = []; \ + for "_Z" from 1 to N do { \ + _Zen_Pos = [C, [0, D]] call Zen_FindGroundPosition; \ + _Zen_Group = [_Zen_Pos, S, "infantry", [4,6]] call Zen_SpawnInfantry; \ + _Zen_GrpsArray pushBack _Zen_Group; \ + }; \ + 0 = [_Zen_GrpsArray, S, ZEN_FMW_Loadout_StdInfantryPreset, false] call Zen_GiveLoadout; \ + 0 = [_Zen_GrpsArray, C, [0, D]] spawn Zen_OrderInfantryPatrol; + +#define ZEN_FMW_Code_SpawnPointBehind(START, END, MIND, MAXD, N, S) \ + _Zen_DirToSpawn = [START, END] call Zen_FindDirection; \ + _Zen_GrpsArray = []; \ + for "_i" from 1 to N do { \ + _Zen_SpawnPos = [END, [MIND, MAXD], 0, 1, 0, [_Zen_DirToSpawn - 90, _Zen_DirToSpawn + 90, "trig"]] call Zen_FindGroundPosition; \ + _Zen_Group = [_Zen_SpawnPos, S, "infantry", [4, 6]] call Zen_SpawnInfantry; \ + _Zen_GrpsArray pushBack _Zen_Group; \ + }; \ + 0 = [_Zen_GrpsArray, S, ZEN_FMW_Loadout_StdInfantryPreset, false] call Zen_GiveLoadout; \ + 0 = [_Zen_GrpsArray, END, [1, MAXD]] spawn Zen_OrderInfantryPatrol; \ + _Zen_DirToSpawn = nil; + +#define ZEN_FMW_Code_WaitDistanceGreater(A, B, D) \ + waitUntil { \ + sleep 2; \ + (([A, B] call Zen_Find2dDistance) > D) \ + }; + +#define ZEN_FMW_Code_WaitDistanceLess(A, B, D) \ + waitUntil { \ + sleep 2; \ + (([A, B] call Zen_Find2dDistance) < D) \ + }; + +#define ZEN_FMW_MP_REAll(F, A, I) \ + A I (missionNamespace getVariable F); \ + if (isMultiplayer) then { \ + Zen_MP_Closure_Packet = [F, A]; \ + publicVariable "Zen_MP_Closure_Packet"; \ + }; + +#define ZEN_FMW_MP_REClient(F, A, I, O) \ + if (local O) then { \ + A I (missionNamespace getVariable F); \ + } else { \ + if (isMultiplayer) then { \ + Zen_MP_Closure_Packet = [F, A]; \ + (owner O) publicVariableClient "Zen_MP_Closure_Packet"; \ + }; \ + }; + +#define ZEN_FMW_MP_RENonDedicated(F, A, I) \ + if (isMultiplayer) then { \ + Zen_MP_Closure_Packet = [F, A]; \ + publicVariable "Zen_MP_Closure_Packet"; \ + }; \ + if !(isDedicated) then { \ + A I (missionNamespace getVariable F); \ + }; + +#define ZEN_FMW_MP_REServerOnly(F, A, I) \ + if (isServer) then { \ + A I (missionNamespace getVariable F); \ + } else { \ + if (isMultiplayer) then { \ + Zen_MP_Closure_Packet = [F, A]; \ + publicVariableServer "Zen_MP_Closure_Packet"; \ + }; \ + }; + +#define ZEN_FMW_Math_DistLess2D(A, B, D) (([A, B] call Zen_Find2dDistance) < D) +#define ZEN_FMW_Math_DistGreater3D(A, B, D) ((([A] call Zen_ConvertToPosition) distance ([B] call Zen_ConvertToPosition)) > D) +#define ZEN_FMW_Math_DistGreater2D(A, B, D) (([A, B] call Zen_Find2dDistance) > D) +#define ZEN_FMW_Math_DistLess3D(A, B, D) ((([A] call Zen_ConvertToPosition) distance ([B] call Zen_ConvertToPosition)) < D) +#define ZEN_FMW_Math_RandomPoint(C, R) ([C, random R, random 360] call Zen_ExtendPosition) +#define ZEN_FMW_Math_RandomPointMin(C, S, E) ([C, S + random abs (E - S), random 360] call Zen_ExtendPosition) + +#define ZEN_FMW_Math_TerrainParallelCart(P, I) \ + _Zen_3dGradPolar = [1, [P] call Zen_FindTerrainGradient, 90 - ([P] call Zen_FindTerrainSlope)]; \ + I = ZEN_STD_Math_VectPolarCart(_Zen_3dGradPolar); + +#define ZEN_FMW_Math_TerrainGradientCart(P, I) \ + _Zen_2dGradCyl = [tan ([P] call Zen_FindTerrainSlope), [P] call Zen_FindTerrainGradient, 0]; \ + I = ZEN_STD_Math_VectCylCart(_Zen_2dGradCyl); + +#define ZEN_FMW_OBJ_DeleteDead(D) \ + { \ + _Zen_DeadUnit = _x; \ + _Zen_Delete = true; \ + { \ + if (isPlayer _x) then { \ + if ((_x distanceSqr _Zen_DeadUnit) < D*D) then { \ + _Zen_Delete = false; \ + }; \ + }; \ + } forEach allUnits; \ + if (_Zen_Delete) then { \ + deleteVehicle _x; \ + }; \ + } forEach allDead; + +#define ZEN_FMW_ZAS_ArrayLength {if (count (_this select 0) < count (_this select 1)) exitWith {-1}; (if (count (_this select 0) == count (_this select 1)) then {0} else {1})} +#define ZEN_FMW_ZAS_AlphaNumeric ({_2a = toArray (_this select 1); _c = 0; {if (_x < (_2a select _forEachIndex)) exitWith {_c = -1}; if (_x > (_2a select _forEachIndex)) exitWith {_c = 1};} forEach (toArray (_this select 0)); (_c)}) +#define ZEN_FMW_ZAS_DistFarNear(C) (compile format ["if ((_this select 0) distance %1 > (_this select 1) distance %1) exitWith {-1}; (if ((_this select 0) distance %1 == (_this select 1) distance %1) then {0} else {1})", C]) +#define ZEN_FMW_ZAS_DistNearFar(C) (compile format ["if ((_this select 0) distance %1 < (_this select 1) distance %1) exitWith {-1}; (if ((_this select 0) distance %1 == (_this select 1) distance %1) then {0} else {1})", C]) +#define ZEN_FMW_ZAS_IntInArray(I) (compile format["if (((_this select 0) select %1) < ((_this select 1) select %1)) exitWith {-1}; (if (((_this select 0) select %1) == ((_this select 1) select %1)) then {0} else {1})", I]) +#define ZEN_FMW_ZAS_StringLength {if (count toArray (_this select 0) < count toArray (_this select 1)) exitWith {-1}; (if (count toArray (_this select 0) == count toArray (_this select 1)) then {0} else {1})} + +#define ZEN_FMW_ZAF_NotString(S) (compile format ["(if (typeName _this == 'STRING') then {!(['%1', _this] call Zen_StringIsInString)} else {false})", S]) +#define ZEN_FMW_ZAF_String(S) (compile format ["(if (typeName _this == 'STRING') then {(['%1', _this] call Zen_StringIsInString)} else {false})", S]) +#define ZEN_FMW_ZAF_Type(T) (compile format ["((toLower typeName _this) == '%1')", (toLower T)]) + +#define ZEN_FMW_ZFGP_Beach 1, [3,50], 0, 0, 0, [2,30], [1,10], 0, [1,10,10] +#define ZEN_FMW_ZFGP_DeepSea 2, 0, 0, 0, 0, 0, 0, 0, [1, -50] +#define ZEN_FMW_ZFGP_Flat 1, 0, 0, 0, 0, 0, [1,10] +#define ZEN_FMW_ZFGP_Forest 1, [3,100], 0, [1,0,20], 0, [1,50], 0, [2,[4, -1, -1], 20] +#define ZEN_FMW_ZFGP_Hill 1, 0, 0, 0, 0, [1,25], [2,20], 0, [2,25,10] +#define ZEN_FMW_ZFGP_LandingZone 1, [1,100], 0, [1,0,20], 0, [1,25], [1,20], [1,[0, 1, -1], 20] +#define ZEN_FMW_ZFGP_NotForest 1, 0, 0, 0, 0, 0, 0, [1,[1, -1, -1], 20] +#define ZEN_FMW_ZFGP_Urban 1, [2, 0], 0, [2,1,25], 0, [1,100], 0, [1,[1,-1,-1], 20] + +#define ZEN_FMW_Loadout_DefaultPreset (["Rifleman", "AT Rifleman", "Assistant AA", "Assistant AT", "Assistant AR", "Team Leader", "Squad Leader", "Grenadier", "Auto Rifleman", "Marksman", "Medic", "AA Specialist", "AT Specialist", "Sapper", "Miner", "EOD Specialist"]) +#define ZEN_FMW_Loadout_StdInfantryPreset (["Rifleman", "Rifleman", "Rifleman", "AT Rifleman", "Assistant AR", "Team Leader", "Squad Leader", "Grenadier", "Grenadier", "Auto Rifleman", "Auto Rifleman", "Marksman", "Medic"]) diff --git a/Zen_FrameworkFunctions/Zen_ObjectiveSystem/Zen_ObjectiveCreateTask.sqf b/Zen_FrameworkFunctions/Zen_ObjectiveSystem/Zen_ObjectiveCreateTask.sqf new file mode 100644 index 0000000..703e519 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_ObjectiveSystem/Zen_ObjectiveCreateTask.sqf @@ -0,0 +1,78 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_ObjectiveCreateTask", _this] call Zen_StackAdd; +private ["_units", "_txt1", "_txt2", "_objType", "_taskDest", "_side", "_sideString", "_objClass", "_triggerType", "_taskReturn"]; + +if !([_this, [["ARRAY"], ["STRING"], ["ARRAY"], ["SIDE"], ["VOID"], ["STRING"]], [["OBJECT"], [], ["SCALAR"]], 5] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + ("") +}; + +_units = _this select 0; +_objType = _this select 1; +_taskDest = _this select 2; +_side = _this select 3; +_objClass = _this select 4; +_triggerType = _this select 5; + +if (typeName _objClass == "ARRAY") then { + _objClass = _objClass select 0; +}; + +switch (_side) do { + case west: { + _sideString = "Blufor"; + }; + case east: { + _sideString = "Opfor"; + }; + case resistance: { + _sideString = "Indfor"; + }; + default { + _sideString = "Unknown"; + }; +}; + +switch (toLower _objType) do { + case "box": { + _txt1 = format ["The %1 are stockpiling ammunition, %2 the ammo cache.", _sideString, ([_triggerType] call Zen_StringCapitalizeLetter)]; + _txt2 = format ["%1 the Cache", ([_triggerType] call Zen_StringCapitalizeLetter)]; + }; + case "mortar": { + _txt1 = format ["The %1 have set up a mortar position. %2 the mortar crew, the mortars, and their ammunition.", _sideString, ([_triggerType] call Zen_StringCapitalizeLetter)]; + _txt2 = format ["%1 the Mortars", ([_triggerType] call Zen_StringCapitalizeLetter)]; + }; + case "wreck": { + _txt1 = format ["A %1 vehicle has been disabled and abandoned. You must %2 it.", _sideString, toLower _triggerType]; + _txt2 = format ["%1 the Wreck", ([_triggerType] call Zen_StringCapitalizeLetter)]; + }; + case "officer": { + _txt1 = format ["%2 the %1 officer, who is near the marked point on the map.", _sideString, ([_triggerType] call Zen_StringCapitalizeLetter)]; + _txt2 = format ["%1 the Officer", ([_triggerType] call Zen_StringCapitalizeLetter)]; + }; + case "pow":{ + _txt1 = format ["The %1 POW is near the marked point on the map, you must %2 him.", _sideString, toLower _triggerType]; + _txt2 = format ["%1 the POW", ([_triggerType] call Zen_StringCapitalizeLetter)]; + }; + case "convoy": { + _txt1 = format ["The %1 are moving troops and supplies in a convoy. %2 all of the vehicles.", _sideString, ([_triggerType] call Zen_StringCapitalizeLetter)]; + _txt2 = format ["%1 the Convoy", ([_triggerType] call Zen_StringCapitalizeLetter)]; + }; + case "custom": { + _txt1 = format ["Find the %1 %2 and %3 %4.", _sideString, (getText (configFile >> "CfgVehicles" >> _objClass >> "DisplayName")), toLower _triggerType, (if (_objClass isKindOf "Man") then {"him"} else {"it"})]; + _txt2 = format ["%1 the %2", ([_triggerType] call Zen_StringCapitalizeLetter), (getText (configFile >> "CfgVehicles" >> _objClass >> "DisplayName"))]; + }; + default { + _txt1 = ""; + _txt2 = ""; + 0 = ["Zen_ObjectiveCreateTask", "Invalid objective identifier given", _this] call Zen_PrintError; + call Zen_StackPrint; + }; +}; + +_taskReturn = [_units, _txt1, _txt2, _taskDest] call Zen_InvokeTask; +call Zen_StackRemove; +(_taskReturn) diff --git a/Zen_FrameworkFunctions/Zen_ObjectiveSystem/Zen_ObjectiveSpawnMarker.sqf b/Zen_FrameworkFunctions/Zen_ObjectiveSystem/Zen_ObjectiveSpawnMarker.sqf new file mode 100644 index 0000000..216192e --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_ObjectiveSystem/Zen_ObjectiveSpawnMarker.sqf @@ -0,0 +1,26 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_ObjectiveSpawnMarker", _this] call Zen_StackAdd; +private ["_objPos", "_side", "_markerColor", "_marker"]; + +if !([_this, [["VOID"], ["SIDE"]], [], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + ("") +}; + +_objPos = _this select 0; +_side = _this select 1; + +switch (_side) do { + case west: {_markerColor = "ColorBlufor";}; + case east: {_markerColor = "ColorOpfor";}; + case resistance: {_markerColor = "ColorIndependent";}; + default {_markerColor = "ColorCivilian";}; +}; + +_marker = [_objPos, "", _markerColor, [0.6,0.6], "mil_dot", 0, 0] call Zen_SpawnMarker; + +call Zen_StackRemove; +(_marker) diff --git a/Zen_FrameworkFunctions/Zen_ObjectiveSystem/Zen_ObjectiveSystemCompile.sqf b/Zen_FrameworkFunctions/Zen_ObjectiveSystem/Zen_ObjectiveSystemCompile.sqf new file mode 100644 index 0000000..c6c7ab4 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_ObjectiveSystem/Zen_ObjectiveSystemCompile.sqf @@ -0,0 +1,13 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +Zen_CreateObjective = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_ObjectiveSystem\Zen_CreateObjective.sqf"; +Zen_ObjectiveCreateTask = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_ObjectiveSystem\Zen_ObjectiveCreateTask.sqf"; +Zen_ObjectiveSpawnMarker = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_ObjectiveSystem\Zen_ObjectiveSpawnMarker.sqf"; +Zen_SpawnMortar = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_ObjectiveSystem\Zen_SpawnMortar.sqf"; +Zen_SpawnOfficer = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_ObjectiveSystem\Zen_SpawnOfficer.sqf"; +Zen_SpawnPOW = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_ObjectiveSystem\Zen_SpawnPOW.sqf"; +Zen_SpawnWreck = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_ObjectiveSystem\Zen_SpawnWreck.sqf"; + +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_ObjectiveSystem/Zen_SpawnMortar.sqf b/Zen_FrameworkFunctions/Zen_ObjectiveSystem/Zen_SpawnMortar.sqf new file mode 100644 index 0000000..3f109c0 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_ObjectiveSystem/Zen_SpawnMortar.sqf @@ -0,0 +1,49 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_SpawnMortar", _this] call Zen_StackAdd; +private ["_spawnPos", "_side", "_mortarClass", "_mortar1", "_mortar2", "_ammoBox"]; + +if !([_this, [["VOID"], ["SIDE"]], [], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + ([objNull]) +}; + +_spawnPos = [(_this select 0)] call Zen_ConvertToPosition; +_side = _this select 1; + +switch (_side) do { + case west: { + _mortarClass = "B_Mortar_01_F"; + }; + case east: { + _mortarClass = "O_Mortar_01_F"; + }; + case resistance: { + _mortarClass = "I_Mortar_01_F"; + }; + default { + 0 = ["Zen_SpawnMortar", "Invalid side given", _this] call Zen_PrintError; + call Zen_StackPrint; + _mortarClass = ""; + }; +}; + +if (_mortarClass == "") exitWith { + call Zen_StackRemove; + ([objNull]) +}; + +_mortar1 = [_spawnPos, _mortarClass] call Zen_SpawnVehicle; +_mortar2 = [([_spawnPos, 2 + random 2, (random 360)] call Zen_ExtendPosition), _mortarClass] call Zen_SpawnVehicle; +_ammoBox = [([_spawnPos, 3 + random 3, (random 360)] call Zen_ExtendPosition), _side, true] call Zen_SpawnAmmoBox; + +0 = [_mortar1, _side] call Zen_SpawnVehicleCrew; +0 = [_mortar2, _side] call Zen_SpawnVehicleCrew; + +_objects = [_mortar1,_mortar2,_ammoBox]; +0 = [_objects, (random 360)] call Zen_RotateAsSet; + +call Zen_StackRemove; +(_objects) diff --git a/Zen_FrameworkFunctions/Zen_ObjectiveSystem/Zen_SpawnOfficer.sqf b/Zen_FrameworkFunctions/Zen_ObjectiveSystem/Zen_SpawnOfficer.sqf new file mode 100644 index 0000000..dfb7f51 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_ObjectiveSystem/Zen_SpawnOfficer.sqf @@ -0,0 +1,43 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_SpawnOfficer", _this] call Zen_StackAdd; +private ["_spawnPos", "_side", "_officerClass", "_obj"]; + +if !([_this, [["VOID"], ["SIDE"]], [], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + ([objNull]) +}; + +_spawnPos = [(_this select 0)] call Zen_ConvertToPosition; +_side = _this select 1; + +switch (_side) do { + case west: { + _officerClass = "b_officer_f"; + }; + case east: { + _officerClass = "o_officer_f"; + }; + case resistance: { + _officerClass = "i_officer_f"; + }; + default { + 0 = ["Zen_SpawnOfficer", "Invalid side given", _this] call Zen_PrintError; + call Zen_StackPrint; + _officerClass = ""; + }; +}; + +if (_officerClass == "") exitWith { + call Zen_StackRemove; + ([objNull]) +}; + +_obj = leader ([_spawnPos, _officerClass] call Zen_SpawnGroup); +0 = [_obj, "officer"] call Zen_SetAISkill; +0 = [_obj, _side, "officer"] call Zen_GiveLoadout; + +call Zen_StackRemove; +([_obj]) diff --git a/Zen_FrameworkFunctions/Zen_ObjectiveSystem/Zen_SpawnPOW.sqf b/Zen_FrameworkFunctions/Zen_ObjectiveSystem/Zen_SpawnPOW.sqf new file mode 100644 index 0000000..eae2545 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_ObjectiveSystem/Zen_SpawnPOW.sqf @@ -0,0 +1,55 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_SpawnPOW", _this] call Zen_StackAdd; +private ["_spawnPos", "_side", "_powClass", "_obj"]; + +if !([_this, [["VOID"], ["SIDE"]], [], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + ([objNull]) +}; + +_spawnPos = [(_this select 0)] call Zen_ConvertToPosition; +_side = _this select 1; + +switch (_side) do { + case west: { + _powClass = "b_helipilot_F"; + }; + case east: { + _powClass = "o_helipilot_F"; + }; + case resistance: { + _powClass = "i_helipilot_F"; + }; + default { + 0 = ["Zen_SpawnPOW", "Invalid side given", _this] call Zen_PrintError; + call Zen_StackPrint; + _powClass = ""; + }; +}; + +if (_powClass == "") exitWith { + call Zen_StackRemove; + ([objNull]) +}; + +_obj = leader ([_spawnPos, _powClass] call Zen_SpawnGroup); + +0 = [_obj, "Crew"] call Zen_SetAISkill; +0 = [_obj, _side, "helicopter pilot"] call Zen_GiveLoadout; + +_obj setCaptive true; +_obj disableAI "move"; + +0 = _obj spawn { + sleep 0.5; + removeAllWeapons _this; + removeBackpack _this; + removeGoggles _this; + removeHeadgear _this; +}; + +call Zen_StackRemove; +([_obj]) diff --git a/Zen_FrameworkFunctions/Zen_ObjectiveSystem/Zen_SpawnWreck.sqf b/Zen_FrameworkFunctions/Zen_ObjectiveSystem/Zen_SpawnWreck.sqf new file mode 100644 index 0000000..b058ce1 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_ObjectiveSystem/Zen_SpawnWreck.sqf @@ -0,0 +1,63 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_SpawnWreck", _this] call Zen_StackAdd; +private ["_spawnPos", "_side", "_wreckClass", "_obj", "_backpackClass", "_deadUnits", "_unitFaction"]; + +if !([_this, [["VOID"], ["SIDE"]], [], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + ([objNull]) +}; + +_spawnPos = [(_this select 0)] call Zen_ConvertToPosition; +_side = _this select 1; + +switch (_side) do { + case west: { + _wreckClass = [([["car", "armored"], _side] call Zen_ConfigGetVehicleClasses)] call Zen_ArrayGetRandom; + _backpackClass = "B_AssaultPack_mcamo"; + _unitFaction = "blu_f"; + }; + case east: { + _wreckClass = [([["car", "armored"], _side] call Zen_ConfigGetVehicleClasses)] call Zen_ArrayGetRandom; + _backpackClass = "B_FieldPack_ocamo"; + _unitFaction = "opf_f"; + }; + case resistance: { + _wreckClass = [([["car", "armored"], _side] call Zen_ConfigGetVehicleClasses)] call Zen_ArrayGetRandom; + _backpackClass = "B_FieldPack_oli"; + _unitFaction = "ind_f"; + }; + default { + 0 = ["Zen_SpawnWreck", "Invalid side given", _this] call Zen_PrintError; + call Zen_StackPrint; + _wreckClass = ""; + }; +}; + +if (_wreckClass == "") exitWith { + call Zen_StackRemove; + ([objNull]) +}; + +_obj = [_spawnPos, _wreckClass] call Zen_SpawnVehicle; + +_obj setVehicleAmmo 0; +_obj setDamage 0.7; +_obj setFuel 0; +_obj lock true; + +_spawnPos = [(getPosATL _obj), 4 + (random 5), (random 360)] call Zen_ExtendPosition; +_deadUnits = [_spawnPos, _side, 1, [1,1], "men", _unitFaction] call Zen_SpawnInfantry; +0 = [_deadUnits, _side, "rifleman"] call Zen_GiveLoadout; + +{ + _x setDamage 1; +} forEach (units _deadUnits); + +_obj addMagazineCargoGlobal ["SatchelCharge_Remote_Mag", 2]; +_obj addBackpackCargoGlobal [_backpackClass, 1]; + +call Zen_StackRemove; +([_obj]) diff --git a/Zen_FrameworkFunctions/Zen_ObjectiveSystem/Zen_StandardLibrary.sqf b/Zen_FrameworkFunctions/Zen_ObjectiveSystem/Zen_StandardLibrary.sqf new file mode 100644 index 0000000..4a13a58 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_ObjectiveSystem/Zen_StandardLibrary.sqf @@ -0,0 +1,155 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#define ZEN_STD_Array_LastElement(A) (A select (count A - 1)) +#define ZEN_STD_Array_RandIndex(A) (floor random count A) +#define ZEN_STD_Array_RandElement(A) (A select (floor random count A)) +#define ZEN_STD_Array_UnorderedRemove(A, I) \ + A set [I, A select (count A - 1)]; \ + A resize (count A - 1); + +#define ZEN_STD_Code_WaitScript(S) \ + waitUntil { \ + sleep 1; \ + (scriptDone S) \ + }; + +#define ZEN_STD_Code_SleepFrames(F) sleep (F / diag_fps); + +#define ZEN_STD_Code_SwapVars(X, Y) \ + _Zen_tempVar = X; \ + X = Y; \ + Y = _Zen_tempVar; \ + _Zen_tempVar = nil; + +#define ZEN_STD_Math_RandNegativePositive() (if (random 1 > 0.5) then {1} else {-1}) + +#define ZEN_STD_Math_MarkerArea(M) \ + (if (toLower markerShape M == "ellipse") then { \ + (((markerSize M) select 0) * ((markerSize M) select 1) * pi) \ + } else { \ + (((markerSize M) select 0) * ((markerSize M) select 1) * 4) \ + }) + +#define ZEN_STD_Math_VectCartCyl(V) ([(vectorMagnitude [(V select 0), (V select 1), 0]), (V select 1) atan2 (V select 0), (V select 2)]) +#define ZEN_STD_Math_VectCartPolar(V) ([(vectorMagnitude V), (V select 1) atan2 (V select 0), acos ((V select 2) / (vectorMagnitude V))]) + +#define ZEN_STD_Math_VectCylCart(V) ([(V select 0) * cos (V select 1), (V select 0) * sin (V select 1), (V select 2)]) +#define ZEN_STD_Math_VectCylPolar(V) ([(vectorMagnitude [(V select 0), 0, (V select 2)]), (V select 1), (V select 0) atan2 (V select 2)]) + +#define ZEN_STD_Math_VectPolarCart(V) ([(V select 0) * cos (V select 1) * sin (V select 2), (V select 0) * sin (V select 1) * sin (V select 2), (V select 0) * cos (V select 2)]) +#define ZEN_STD_Math_VectPolarCyl(V) ([(V select 0) * sin (V select 2), (V select 1), (V select 0) * cos (V select 2)]) + +#define ZEN_STD_Math_VectRotateX(P, A) ([(P select 0), (P select 1) * cos A + (P select 2) * sin A, - (P select 1) * sin A + (P select 2) * cos A]) +#define ZEN_STD_Math_VectRotateY(P, A) ([(P select 0) * cos A - (P select 2) * sin A, (P select 1), (P select 0) * sin A + (P select 2) * cos A]) +#define ZEN_STD_Math_VectRotateZ(P, A) ([(P select 0) * cos A + (P select 1) * sin A, - (P select 0) * sin A + (P select 1) * cos A, (P select 2)]) + +#define ZEN_STD_Math_VectTransform(P, X, Y, Z) ([(P select 0) + X, (P select 1) + Y, (P select 2) + Z]) + +#define ZEN_STD_OBJ_ATLPositionZ(O) ((getPosATL O) select 2) +#define ZEN_STD_OBJ_ASLPositionZ(O) ((getPosASL O) select 2) +#define ZEN_STD_OBJ_BBX(O) abs ((((boundingBoxReal O) select 0) select 0) - (((boundingBoxReal O) select 1) select 0)) +#define ZEN_STD_OBJ_BBY(O) abs ((((boundingBoxReal O) select 0) select 1) - (((boundingBoxReal O) select 1) select 1)) +#define ZEN_STD_OBJ_BBZ(O) abs ((((boundingBoxReal O) select 0) select 2) - (((boundingBoxReal O) select 1) select 2)) + +#define ZEN_STD_OBJ_AnimateDoors(V, C) \ + { \ + V animateDoor [(configName _x), C]; \ + } forEach ("((toLower (getText (_x >> 'source'))) == 'door')" configClasses (configFile >> "CfgVehicles" >> (typeOf V) >> "AnimationSources")); + +#define ZEN_STD_OBJ_CountBuildingPos(V, B) \ + V = 0; \ + for "_i" from 0 to 100 do { \ + if ((B buildingPos V) isEqualTo [0,0,0]) exitWith {}; \ + V = V + 1; \ + }; \ + V = V - 1; + +#define ZEN_STD_OBJ_CountCargoSeats(V) (getNumber (configFile >> "CfgVehicles" >> (typeOf V) >> "transportSoldier")) +#define ZEN_STD_OBJ_DeleteVehCrew(V) \ + { \ + deleteVehicle _x; \ + } forEach (crew V + [V]); + +#define ZEN_STD_OBJ_MakePOW(O) \ + O setCaptive true; \ + O disableAI "move"; \ + O setUnitPos "UP"; \ + removeAllWeapons O; \ + removeBackpack O; \ + removeGoggles O; \ + removeHeadgear O; + +#define ZEN_STD_OBJ_OrderGetOut(U, V) \ + U orderGetIn false; \ + { \ + unassignVehicle _x; \ + _x leaveVehicle V; \ + } forEach U; + +#define ZEN_STD_OBJ_OrderGetIn(U, V) \ + { \ + _x assignAsCargo V; \ + } forEach U; \ + U orderGetIn true; + +#define ZEN_STD_OBJ_OrientAircraft(O, P, S) \ + _Zen_vDirToLZ = ((getPosATL O) vectorFromTo P); \ + _Zen_dirToLZ = ZEN_STD_Math_VectCartCyl(_Zen_vDirToLZ) select 1; \ + sleep (5 / diag_fps); \ + O setDir (90 - _Zen_dirToLZ); \ + O setVelocity [S * cos _Zen_dirToLZ, S * sin _Zen_dirToLZ, 0]; + +#define ZEN_STD_OBJ_ParachuteInsertion(O, P, H) \ + _Zen_dir = random 360; \ + { \ + _x setPosATL (P vectorAdd [50 * _forEachIndex * cos _Zen_dir, 50 * _forEachIndex * sin _Zen_dir, H]); \ + removeBackpackGlobal _x; \ + _x addBackpackGlobal "b_parachute"; \ + } forEach O; + +#define ZEN_STD_OBJ_TransformATL(O, X, Y, Z) O setPosATL [((getPosATL O) select 0) + X, ((getPosATL O) select 1) + Y, ((getPosATL O) select 2) + Z]; + +#define ZEN_STD_Parse_GetArgumentDefault(V, I, D) \ + if (count _this > I) then { \ + V = _this select I; \ + } else { \ + V = D; \ + }; + +#define ZEN_STD_Parse_GetSetArgumentDefault(V, I, D, R) \ + if (count _this > I) then { \ + V = _this select I; \ + } else { \ + V = D; \ + }; \ + _this set [I, R]; + +#define ZEN_STD_Parse_GetSetArgumentOptional(V, I, D, R) \ + if (count _this > I) then { \ + V = _this select I; \ + } else { \ + V = D; \ + _this set [I, R]; \ + }; + +#define ZEN_STD_Parse_GetArgument(V, I) \ + if (count _this > I) then { \ + V = _this select I; \ + }; + +#define ZEN_STD_Parse_ToArray(X) \ + if (typeName X != "ARRAY") then { \ + X = [X]; \ + }; + +#define ZEN_STD_Parse_ToString(X) \ + if (typeName X != "STRING") then { \ + X = str X; \ + }; + +#define ZEN_STD_Parse_ToStringLower(X) \ + if (typeName X != "STRING") then { \ + X = toLower str X; \ + }; diff --git a/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_FrameworkLibrary.sqf b/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_FrameworkLibrary.sqf new file mode 100644 index 0000000..7af8176 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_FrameworkLibrary.sqf @@ -0,0 +1,191 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#define ZEN_FMW_Array_RemoveIndexes(A, I) \ + { \ + 0 = [A, _x - _forEachIndex] call Zen_ArrayRemoveIndex; \ + } forEach I; + +#define ZEN_FMW_CFG_VehicleWeapons(V) \ + _Zen_WeaponsArray = []; \ + 0 = [_Zen_WeaponsArray, getArray (V >> "weapons")] call Zen_ArrayAppendNested; \ + { \ + 0 = [_Zen_WeaponsArray, getArray (V >> "weapons")] call Zen_ArrayAppendNested; \ + } forEach ("true" configClasses (V >> "turrets")); \ + { \ + _Zen_WeaponsArray = [_Zen_WeaponsArray, ZEN_FMW_ZAF_String(V)] call Zen_ArrayFilterCondition; \ + } forEach ["smoke", "horn", "laser", "flare", "throw", "put"]; + +#define ZEN_FMW_Code_ErrorExitVoid(F, D) \ + 0 = [F, D, _this] call Zen_PrintError; \ + call Zen_StackPrint; \ + call Zen_StackRemove; + +#define ZEN_FMW_Code_ErrorExitValue(F, D, V) \ + 0 = [F, D, _this] call Zen_PrintError; \ + call Zen_StackPrint; \ + call Zen_StackRemove; \ + V + +#define ZEN_FMW_Code_Error(F, D) \ + 0 = [F, D, _this] call Zen_PrintError; \ + call Zen_StackPrint; + +#define ZEN_FMW_Code_GiveLoadoutsOrdered(U, L, S) \ + { \ + 0 = [_x, S, (L select (_forEachIndex % (count L)))] call Zen_GiveLoadout; \ + } forEach ([U] call Zen_ConvertToObjectArray); + +#define ZEN_FMW_Code_Insertion(U, V, S, E) \ + _Zen_Vehicle = [S, V, (if (V isKindOf "Air") then {40} else {0})] call Zen_SpawnVehicle; \ + 0 = [_Zen_Vehicle] call Zen_SpawnVehicleCrew; \ + 0 = [U, _Zen_Vehicle] call Zen_MoveInVehicle; \ + 0 = [_Zen_Vehicle, [E, S], U] spawn Zen_OrderInsertion; + +#define ZEN_FMW_Code_InsertionPatrol(G, T, S, M) \ + _Zen_Vehicle = [S, T] call Zen_SpawnVehicle; \ + 0 = [_Zen_Vehicle] call Zen_SpawnVehicleCrew; \ + 0 = [G, _Zen_Vehicle] call Zen_MoveInVehicle; \ + 0 = [_Zen_Vehicle, [([M] call Zen_FindGroundPosition), _Zen_HeliStart], G, "normal", 40, "fastrope", true] spawn Zen_OrderInsertion; \ + 0 = [G, M] spawn { \ + waitUntil { \ + sleep 5; \ + ([_this select 0] call Zen_AreNotInVehicle) \ + }; \ + 0 = [_this select 0, _this select 1] spawn Zen_OrderInfantryPatrol; \ + }; + +#define ZEN_FMW_Code_SpawnMarker(M, N, S) \ + _Zen_GrpsArray = []; \ + for "_Z" from 1 to N do { \ + _Zen_Pos = [ M ] call Zen_FindGroundPosition; \ + _Zen_Group = [_Zen_Pos, S, "infantry", [4,6]] call Zen_SpawnInfantry; \ + _Zen_GrpsArray pushBack _Zen_Group; \ + }; \ + 0 = [_Zen_GrpsArray, S, ZEN_FMW_Loadout_StdInfantryPreset, false] call Zen_GiveLoadout; \ + 0 = [_Zen_GrpsArray, M] spawn Zen_OrderInfantryPatrol; + +#define ZEN_FMW_Code_SpawnPoint(C, D, N, S) \ + _Zen_GrpsArray = []; \ + for "_Z" from 1 to N do { \ + _Zen_Pos = [C, [0, D]] call Zen_FindGroundPosition; \ + _Zen_Group = [_Zen_Pos, S, "infantry", [4,6]] call Zen_SpawnInfantry; \ + _Zen_GrpsArray pushBack _Zen_Group; \ + }; \ + 0 = [_Zen_GrpsArray, S, ZEN_FMW_Loadout_StdInfantryPreset, false] call Zen_GiveLoadout; \ + 0 = [_Zen_GrpsArray, C, [0, D]] spawn Zen_OrderInfantryPatrol; + +#define ZEN_FMW_Code_SpawnPointBehind(START, END, MIND, MAXD, N, S) \ + _Zen_DirToSpawn = [START, END] call Zen_FindDirection; \ + _Zen_GrpsArray = []; \ + for "_i" from 1 to N do { \ + _Zen_SpawnPos = [END, [MIND, MAXD], 0, 1, 0, [_Zen_DirToSpawn - 90, _Zen_DirToSpawn + 90, "trig"]] call Zen_FindGroundPosition; \ + _Zen_Group = [_Zen_SpawnPos, S, "infantry", [4, 6]] call Zen_SpawnInfantry; \ + _Zen_GrpsArray pushBack _Zen_Group; \ + }; \ + 0 = [_Zen_GrpsArray, S, ZEN_FMW_Loadout_StdInfantryPreset, false] call Zen_GiveLoadout; \ + 0 = [_Zen_GrpsArray, END, [1, MAXD]] spawn Zen_OrderInfantryPatrol; \ + _Zen_DirToSpawn = nil; + +#define ZEN_FMW_Code_WaitDistanceGreater(A, B, D) \ + waitUntil { \ + sleep 2; \ + (([A, B] call Zen_Find2dDistance) > D) \ + }; + +#define ZEN_FMW_Code_WaitDistanceLess(A, B, D) \ + waitUntil { \ + sleep 2; \ + (([A, B] call Zen_Find2dDistance) < D) \ + }; + +#define ZEN_FMW_MP_REAll(F, A, I) \ + A I (missionNamespace getVariable F); \ + if (isMultiplayer) then { \ + Zen_MP_Closure_Packet = [F, A]; \ + publicVariable "Zen_MP_Closure_Packet"; \ + }; + +#define ZEN_FMW_MP_REClient(F, A, I, O) \ + if (local O) then { \ + A I (missionNamespace getVariable F); \ + } else { \ + if (isMultiplayer) then { \ + Zen_MP_Closure_Packet = [F, A]; \ + (owner O) publicVariableClient "Zen_MP_Closure_Packet"; \ + }; \ + }; + +#define ZEN_FMW_MP_RENonDedicated(F, A, I) \ + if (isMultiplayer) then { \ + Zen_MP_Closure_Packet = [F, A]; \ + publicVariable "Zen_MP_Closure_Packet"; \ + }; \ + if !(isDedicated) then { \ + A I (missionNamespace getVariable F); \ + }; + +#define ZEN_FMW_MP_REServerOnly(F, A, I) \ + if (isServer) then { \ + A I (missionNamespace getVariable F); \ + } else { \ + if (isMultiplayer) then { \ + Zen_MP_Closure_Packet = [F, A]; \ + publicVariableServer "Zen_MP_Closure_Packet"; \ + }; \ + }; + +#define ZEN_FMW_Math_DistLess2D(A, B, D) (([A, B] call Zen_Find2dDistance) < D) +#define ZEN_FMW_Math_DistGreater3D(A, B, D) ((([A] call Zen_ConvertToPosition) distance ([B] call Zen_ConvertToPosition)) > D) +#define ZEN_FMW_Math_DistGreater2D(A, B, D) (([A, B] call Zen_Find2dDistance) > D) +#define ZEN_FMW_Math_DistLess3D(A, B, D) ((([A] call Zen_ConvertToPosition) distance ([B] call Zen_ConvertToPosition)) < D) +#define ZEN_FMW_Math_RandomPoint(C, R) ([C, random R, random 360] call Zen_ExtendPosition) +#define ZEN_FMW_Math_RandomPointMin(C, S, E) ([C, S + random abs (E - S), random 360] call Zen_ExtendPosition) + +#define ZEN_FMW_Math_TerrainParallelCart(P, I) \ + _Zen_3dGradPolar = [1, [P] call Zen_FindTerrainGradient, 90 - ([P] call Zen_FindTerrainSlope)]; \ + I = ZEN_STD_Math_VectPolarCart(_Zen_3dGradPolar); + +#define ZEN_FMW_Math_TerrainGradientCart(P, I) \ + _Zen_2dGradCyl = [tan ([P] call Zen_FindTerrainSlope), [P] call Zen_FindTerrainGradient, 0]; \ + I = ZEN_STD_Math_VectCylCart(_Zen_2dGradCyl); + +#define ZEN_FMW_OBJ_DeleteDead(D) \ + { \ + _Zen_DeadUnit = _x; \ + _Zen_Delete = true; \ + { \ + if (isPlayer _x) then { \ + if ((_x distanceSqr _Zen_DeadUnit) < D*D) then { \ + _Zen_Delete = false; \ + }; \ + }; \ + } forEach allUnits; \ + if (_Zen_Delete) then { \ + deleteVehicle _x; \ + }; \ + } forEach allDead; + +#define ZEN_FMW_ZAS_ArrayLength {if (count (_this select 0) < count (_this select 1)) exitWith {-1}; (if (count (_this select 0) == count (_this select 1)) then {0} else {1})} +#define ZEN_FMW_ZAS_AlphaNumeric ({_2a = toArray (_this select 1); _c = 0; {if (_x < (_2a select _forEachIndex)) exitWith {_c = -1}; if (_x > (_2a select _forEachIndex)) exitWith {_c = 1};} forEach (toArray (_this select 0)); (_c)}) +#define ZEN_FMW_ZAS_DistFarNear(C) (compile format ["if ((_this select 0) distance %1 > (_this select 1) distance %1) exitWith {-1}; (if ((_this select 0) distance %1 == (_this select 1) distance %1) then {0} else {1})", C]) +#define ZEN_FMW_ZAS_DistNearFar(C) (compile format ["if ((_this select 0) distance %1 < (_this select 1) distance %1) exitWith {-1}; (if ((_this select 0) distance %1 == (_this select 1) distance %1) then {0} else {1})", C]) +#define ZEN_FMW_ZAS_IntInArray(I) (compile format["if (((_this select 0) select %1) < ((_this select 1) select %1)) exitWith {-1}; (if (((_this select 0) select %1) == ((_this select 1) select %1)) then {0} else {1})", I]) +#define ZEN_FMW_ZAS_StringLength {if (count toArray (_this select 0) < count toArray (_this select 1)) exitWith {-1}; (if (count toArray (_this select 0) == count toArray (_this select 1)) then {0} else {1})} + +#define ZEN_FMW_ZAF_NotString(S) (compile format ["(if (typeName _this == 'STRING') then {!(['%1', _this] call Zen_StringIsInString)} else {false})", S]) +#define ZEN_FMW_ZAF_String(S) (compile format ["(if (typeName _this == 'STRING') then {(['%1', _this] call Zen_StringIsInString)} else {false})", S]) +#define ZEN_FMW_ZAF_Type(T) (compile format ["((toLower typeName _this) == '%1')", (toLower T)]) + +#define ZEN_FMW_ZFGP_Beach 1, [3,50], 0, 0, 0, [2,30], [1,10], 0, [1,10,10] +#define ZEN_FMW_ZFGP_DeepSea 2, 0, 0, 0, 0, 0, 0, 0, [1, -50] +#define ZEN_FMW_ZFGP_Flat 1, 0, 0, 0, 0, 0, [1,10] +#define ZEN_FMW_ZFGP_Forest 1, [3,100], 0, [1,0,20], 0, [1,50], 0, [2,[4, -1, -1], 20] +#define ZEN_FMW_ZFGP_Hill 1, 0, 0, 0, 0, [1,25], [2,20], 0, [2,25,10] +#define ZEN_FMW_ZFGP_LandingZone 1, [1,100], 0, [1,0,20], 0, [1,25], [1,20], [1,[0, 1, -1], 20] +#define ZEN_FMW_ZFGP_NotForest 1, 0, 0, 0, 0, 0, 0, [1,[1, -1, -1], 20] +#define ZEN_FMW_ZFGP_Urban 1, [2, 0], 0, [2,1,25], 0, [1,100], 0, [1,[1,-1,-1], 20] + +#define ZEN_FMW_Loadout_DefaultPreset (["Rifleman", "AT Rifleman", "Assistant AA", "Assistant AT", "Assistant AR", "Team Leader", "Squad Leader", "Grenadier", "Auto Rifleman", "Marksman", "Medic", "AA Specialist", "AT Specialist", "Sapper", "Miner", "EOD Specialist"]) +#define ZEN_FMW_Loadout_StdInfantryPreset (["Rifleman", "Rifleman", "Rifleman", "AT Rifleman", "Assistant AR", "Team Leader", "Squad Leader", "Grenadier", "Grenadier", "Auto Rifleman", "Auto Rifleman", "Marksman", "Medic"]) diff --git a/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderAircraftPatrol.sqf b/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderAircraftPatrol.sqf new file mode 100644 index 0000000..f4d321c --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderAircraftPatrol.sqf @@ -0,0 +1,132 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" +#include "Zen_FrameworkLibrary.sqf" + +_Zen_stack_Trace = ["Zen_OrderAircraftPatrol", _this] call Zen_StackAdd; +private ["_vehicleArray", "_movecenter", "_blackList", "_maxx", "_speedMode", "_heliHeight", "_mpos", "_heliDirToLand", "_mposCorrected", "_vehDist", "_limitAngles", "_cleanupDead", "_crewGroupArray", "_crew"]; + +if !([_this, [["ARRAY", "OBJECT"], ["ARRAY", "OBJECT", "GROUP", "STRING"], ["ARRAY", "SCALAR"], ["ARRAY", "SCALAR"], ["STRING"], ["SCALAR"], ["BOOL"]], [["OBJECT", "ARRAY"], [], ["STRING"], ["SCALAR"]], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_vehicleArray = [(_this select 0)] call Zen_ConvertToObjectArray; +_movecenter = _this select 1; + +if (typeName _vehicleArray != "ARRAY") then { + _vehicleArray = [_vehicleArray]; +}; + +_blackList = []; +_maxx = 1000; +_speedMode = "normal"; +_heliHeight = 75; +_limitAngles = [0, 360]; + +if !(typeName _movecenter == "String") then { + if (count _this > 2) then { + _maxx = _this select 2; + }; +} else { + if (markerShape _movecenter == "ICON") then { + _movecenter = [_movecenter] call Zen_ConvertToPosition; + if (count _this > 2) then { + _maxx = _this select 2; + }; + } else { + if (count _this > 2) then { + _blackList = _this select 2; + }; + }; +}; + +if (count _this > 3) then { + _limitAngles = _this select 3; +}; + +if (count _this > 4) then { + _speedMode = _this select 4; +}; + +if (count _this > 5) then { + _heliHeight = _this select 5; +}; + +ZEN_STD_Parse_GetArgumentDefault(_cleanupDead, 6, false) + +_vehicleArray = [([_vehicleArray] call Zen_ConvertToObjectArray)] call Zen_ArrayRemoveDead; +_crewGroupArray = []; + +{ + private "_veh"; + _veh = _x; + _mpos = [0,0,0]; + _crewGroupArray pushBack (group driver _veh); + + if (typeName _movecenter == "String") then { + _mpos = [_movecenter, 0,_blackList, 1, 0, _limitAngles] call Zen_FindGroundPosition; + } else { + _vehDist = [_veh, _movecenter] call Zen_Find2dDistance; + _mpos = [_movecenter, [0, _maxx], [], 1, 0, _limitAngles, 0, [1, _veh, _vehDist]] call Zen_FindGroundPosition; + }; + + _heliDirToLand = [_veh,_mpos] call Zen_FindDirection; + _mposCorrected = [_mpos, 100, _heliDirToLand, "trig"] call Zen_ExtendPosition; + + _veh move _mposCorrected; + _veh flyInHeight _heliHeight; + _veh setBehaviour "aware"; + _veh setCombatMode "Red"; + _veh setSpeedMode _speedMode; +} forEach _vehicleArray; + +while {(count _vehicleArray != 0)} do { + { + if (isNull _x) then { + _vehicleArray set [_forEachIndex, 0]; + _crewGroupArray set [_forEachIndex, 0]; + } else { + private "_veh"; + _veh = _x; + if (!(alive _veh) || (({alive _x} count crew _veh) == 0)) then { + _vehicleArray set [_forEachIndex, 0]; + _crew = _crewGroupArray select _forEachIndex; + _crewGroupArray set [_forEachIndex, 0]; + if (_cleanupDead) then { + 0 = [_veh, _crew] spawn { + sleep 60; + deleteVehicle (_this select 0); + { + deleteVehicle _x; + } forEach units (_this select 1); + }; + }; + } else { + if ([_veh] call Zen_IsReady) then { + _mpos = [0,0,0]; + if (typeName _movecenter == "String") then { + _mpos = [_movecenter, 0,_blackList, 1, 0, _limitAngles] call Zen_FindGroundPosition; + } else { + _vehDist = [_veh, _movecenter] call Zen_Find2dDistance; + _mpos = [_movecenter, [0, _maxx], [], 1, 0, _limitAngles, 0, [1, _veh, _vehDist]] call Zen_FindGroundPosition; + }; + + _mposCorrected = [_veh, _mpos, 100] call Zen_ExtendRay; + _veh move _mposCorrected; + _veh flyInHeight _heliHeight; + _veh setBehaviour "aware"; + _veh setCombatMode "Red"; + _veh setSpeedMode _speedMode; + }; + }; + }; + } forEach _vehicleArray; + sleep 10; + 0 = [_vehicleArray, 0] call Zen_ArrayRemoveValue; + 0 = [_crewGroupArray, 0] call Zen_ArrayRemoveValue; +}; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderBoatPatrol.sqf b/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderBoatPatrol.sqf new file mode 100644 index 0000000..ceaa6da --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderBoatPatrol.sqf @@ -0,0 +1,121 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" +#include "Zen_FrameworkLibrary.sqf" + +_Zen_stack_Trace = ["Zen_OrderBoatPatrol", _this] call Zen_StackAdd; +private ["_vehicleArray", "_movecenter", "_blackList", "_maxx", "_speedMode", "_mpos", "_limitAngles", "_vehDist", "_cleanupDead", "_crewGroupArray", "_crew"]; + +if !([_this, [["ARRAY", "OBJECT"], ["ARRAY", "OBJECT", "GROUP", "STRING"], ["ARRAY", "SCALAR"], ["ARRAY", "SCALAR"], ["STRING"], ["BOOL"]], [["OBJECT", "ARRAY"], [], ["STRING"], ["SCALAR"]], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_vehicleArray = [(_this select 0)] call Zen_ConvertToObjectArray; +_movecenter = _this select 1; + +if (typeName _vehicleArray != "ARRAY") then { + _vehicleArray = [_vehicleArray]; +}; + +_blackList = []; +_maxx = 500; +_speedMode = "normal"; +_limitAngles = [0, 360]; + +if !(typeName _movecenter == "String") then { + if (count _this > 2) then { + _maxx = _this select 2; + }; +} else { + if (markerShape _movecenter == "ICON") then { + _movecenter = [_movecenter] call Zen_ConvertToPosition; + if (count _this > 2) then { + _maxx = _this select 2; + }; + } else { + if (count _this > 2) then { + _blackList = _this select 2; + }; + }; +}; + +if (count _this > 3) then { + _limitAngles = _this select 3; +}; + +if (count _this > 4) then { + _speedMode = _this select 4; +}; + +ZEN_STD_Parse_GetArgumentDefault(_cleanupDead, 5, false) + +_vehicleArray = [([_vehicleArray] call Zen_ConvertToObjectArray)] call Zen_ArrayRemoveDead; +_crewGroupArray = []; + +{ + private "_veh"; + _veh = _x; + _mpos = [0,0,0]; + _crewGroupArray pushBack (group driver _veh); + + if (typeName _movecenter == "String") then { + _mpos = [_movecenter, 0,_blackList, 2, 0, _limitAngles, 0, 0, 0, 0, 0, [1,-10,0]] call Zen_FindGroundPosition; + } else { + _vehDist = [_veh, _movecenter] call Zen_Find2dDistance; + _mpos = [_movecenter, [0, _maxx], [], 2, 0, _limitAngles, 0, [1, _veh, _vehDist], 0, 0, 0, [1,-10,0]] call Zen_FindGroundPosition; + }; + + _veh move _mpos; + _veh setBehaviour "aware"; + _veh setCombatMode "Red"; + _veh setSpeedMode _speedMode; +} forEach _vehicleArray; + +while {(count _vehicleArray != 0)} do { + { + if (isNull _x) then { + _vehicleArray set [_forEachIndex, 0]; + _crewGroupArray set [_forEachIndex, 0]; + } else { + private "_veh"; + _veh = _x; + if (!(alive _veh) || (({alive _x} count crew _veh) == 0)) then { + _vehicleArray set [_forEachIndex, 0]; + _crew = _crewGroupArray select _forEachIndex; + _crewGroupArray set [_forEachIndex, 0]; + if (_cleanupDead) then { + 0 = [_veh, _crew] spawn { + sleep 60; + deleteVehicle (_this select 0); + { + deleteVehicle _x; + } forEach units (_this select 1); + }; + }; + } else { + if ([_veh] call Zen_IsReady) then { + _mpos = [0,0,0]; + if (typeName _movecenter == "String") then { + _mpos = [_movecenter, 0,_blackList, 2, 0, _limitAngles, 0, 0, 0, 0, 0, [1,-10,0]] call Zen_FindGroundPosition; + } else { + _vehDist = [_veh, _movecenter] call Zen_Find2dDistance; + _mpos = [_movecenter, [0, _maxx], [], 2, 0, _limitAngles, 0, [1, _veh, _vehDist], 0, 0, 0, [1,-10,0]] call Zen_FindGroundPosition; + }; + + _veh move _mpos; + _veh setBehaviour "aware"; + _veh setCombatMode "Red"; + _veh setSpeedMode _speedMode; + }; + }; + }; + } forEach _vehicleArray; + sleep 10; + 0 = [_vehicleArray, 0] call Zen_ArrayRemoveValue; + 0 = [_crewGroupArray, 0] call Zen_ArrayRemoveValue; +}; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderExtraction.sqf b/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderExtraction.sqf new file mode 100644 index 0000000..8bf839e --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderExtraction.sqf @@ -0,0 +1,80 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" + +_Zen_stack_Trace = ["Zen_OrderExtraction", _this] call Zen_StackAdd; +private ["_vehicle", "_posArray", "_units", "_speed", "_heliZ", "_landScript", "_moveFunction", "_vehMass"]; + +if !([_this, [["OBJECT"], ["ARRAY"], ["VOID"], ["STRING"], ["SCALAR"]], [], 3] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_vehicle = _this select 0; +_posArray = _this select 1; +_units = [(_this select 2)] call Zen_ConvertToObjectArray; + +_speed = "normal"; +_heliZ = 40; + +if (count _this > 3) then { + _speed = _this select 3; +}; + +if (count _this > 4) then { + _heliZ = _this select 4; +}; + +if (typeName _posArray == "ARRAY") then { + if ((typeName (_posArray select 0)) == "SCAlAR") then { + _posArray = [_posArray]; + }; +} else { + _posArray = [_posArray]; +}; + +{ + _posArray set [_forEachIndex, ([_x] call Zen_ConvertToPosition)]; +} forEach _posArray; + +if (_vehicle isKindOf "AIR") then { + _moveFunction = "Zen_OrderHelicopterLand"; +} else { + _moveFunction = "Zen_OrderVehicleMove"; +}; + +{ + _landScript = [_vehicle, _x, _speed, _heliZ] spawn (missionNamespace getVariable _moveFunction); + + waitUntil { + sleep 2; + scriptDone _landScript; + }; + + if (_forEachIndex == ((count _posArray) - 1) && ((count _posArray) > 1)) exitWith {}; + + if (_vehicle isKindOf "AIR") then { + _vehicle flyInHeight 0; + }; + + { + _x assignAsCargo _vehicle; + _x enableAI "move"; + } forEach _units; + _units orderGetIn true; + + waitUntil { + sleep 2; + ((([_units, _vehicle]) call Zen_AreInVehicle) || ((_vehicle emptyPositions "cargo") == 0) || !(alive _vehicle)) + }; + + _vehicle flyInHeight 40; +} forEach _posArray; + +{ + _x enableAI "move"; +} forEach (crew _vehicle); + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderFastRope.sqf b/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderFastRope.sqf new file mode 100644 index 0000000..fe12dbe --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderFastRope.sqf @@ -0,0 +1,169 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" +#include "Zen_FrameworkLibrary.sqf" + +_Zen_stack_Trace = ["Zen_OrderFastRope", _this] call Zen_StackAdd; +private ["_heli", "_offsetL", "_rope", "_heliPosition", "_heliGround", "_ropeThread", "_buildings", "_stopHeight", "_testCan"]; + +if !([_this, [["OBJECT"], ["VOID"]], [], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_heli = _this select 0; +_units = [(_this select 1)] call Zen_ConvertToObjectArray; + +_h_holdPos = _heli spawn { + while {true} do { + _this land "none"; + if !(isPlayer (driver _this)) then { + _this setVelocity [0, 0, -2]; + _this setVectorUp [0, 0, 1]; + }; + sleep 0.1; + }; +}; + +if (count _this > 2) then { + if ((isPlayer (_units select 0)) && {((_units select 0) == leader group (_units select 0))}) then { + { + if (!(_x in _units) && !(isPlayer _x) && (_x in _heli) && (_x in assignedCargo _heli)) then { + _units pushBack _x; + }; + } forEach (units group (_units select 0)); + }; +}; + +switch (typeOf _heli) do { + case "O_Heli_Light_02_unarmed_F": { + _offsetL = [-1.4, 1.4, 0]; + }; + case "O_Heli_Light_02_F": { + _offsetL = [-1.4, 1.4, 0]; + }; + case "B_Heli_Transport_01_F": { + _offsetL = [-0.9, 3, 0.5]; + }; + case "B_Heli_Transport_01_camo_F": { + _offsetL = [-0.9, 3, 0.5]; + }; + case "O_Heli_Attack_02_F": { + _offsetL = [-1.2, 1.5, 0.5]; + }; + case "O_Heli_Attack_02_black_F": { + _offsetL = [-1.2, 1.5, 0.5]; + }; + case "I_Heli_Transport_02_F": { + _offsetL = [-0.1, -5.1, -1]; + }; + case "B_Heli_Light_01_F": { + _offsetL = [-1.2, 0.5, -0.5]; + }; + case "I_Heli_light_03_F": { + _offsetL = [-1.35, 3.5, -0.5]; + }; + case "I_Heli_light_03_unarmed_F": { + _offsetL = [-1.35, 3.5, -0.5]; + }; + case "B_Heli_Transport_03_F": { + _offsetL = [0, -5, 0]; + }; + case "B_Heli_Transport_03_unarmed_F": { + _offsetL = [0, -5, 0]; + }; + case "O_Heli_Transport_04_covered_F": { + _offsetL = [0, -5.1, 0.2]; + }; + default { + _offsetL = [-1, 1.5, 0]; + }; +}; + +ZEN_STD_OBJ_AnimateDoors(_heli, 1) +sleep 2; + +#define COMPUTE_GROUND_POS \ +_stopHeight = ((getPos _heli) vectorDiff (getPosATL _heli)) select 2; \ +_ropeStartPos = _heli modelToWorld _offsetL; \ +_groundPos =+ _ropeStartPos; \ +_groundPos set [2, _stopHeight]; +COMPUTE_GROUND_POS + +_linkGround = [_groundPos, "Land_PenBlack_F", 0, 0, true] call Zen_SpawnVehicle; +_linkGround allowDamage false; + +_ropeGround = ropeCreate [_heli, _offsetL, _linkGround, [0,0,0], ZEN_STD_OBJ_ATLPositionZ(_heli) + 2]; + +{ + COMPUTE_GROUND_POS + _linkGround setPosATL _groundPos; + ropeUnwind [_ropeGround, 10, (_ropeStartPos select 2)]; + + _linkAir = [_linkGround, "Land_PenBlack_F", ZEN_STD_OBJ_ATLPositionZ(_heli) - 2, 0, true] call Zen_SpawnVehicle; + _linkAir allowDamage false; + + _ropeAir = ropeCreate [_heli, _offsetL, _linkAir, [0,0,0], 6]; + + _args = ["unassignVehicle", [_x]]; + ZEN_FMW_MP_REClient("Zen_ExecuteCommand", _args, call, _x) + + if (isPlayer _x) then { + _args = ["action", [_x, ["eject", _heli]]]; + ZEN_FMW_MP_REClient("Zen_ExecuteCommand", _args, call, _x) + } else { + _x setPosATL _groundPos; + }; + + waitUntil { + ((vehicle _x) == _x) + }; + + _args = ["setVectorUp", [_x, [0,0,1]]]; + ZEN_FMW_MP_REClient("Zen_ExecuteCommand", _args, call, _x) + + _x attachTo [_linkAir, [0,-0.25,-0.5]]; + ropeUnwind [_ropeAir, 7, (_ropeStartPos select 2) + 3]; + + sleep 0.5; + _args = ["switchMove", [_x, "commander_apctracked3_out"]]; + ZEN_FMW_MP_REAll("Zen_ExecuteCommand", _args, call) + + _args = ["allowDamage", [_x, false]]; + ZEN_FMW_MP_REClient("Zen_ExecuteCommand", _args, call, _x) + + waitUntil { + sleep 0.25; + (((abs (ZEN_STD_OBJ_ATLPositionZ(_x) - _stopHeight)) < 0.8) || (ZEN_STD_OBJ_ASLPositionZ(_x) < 0.8) || !(alive _heli)) + }; + + detach _x; + + _args = ["unassignVehicle", [_x]]; + ZEN_FMW_MP_REClient("Zen_ExecuteCommand", _args, call, _x) + + _args = ["setVectorUp", [_x, [0,0,1]]]; + ZEN_FMW_MP_REClient("Zen_ExecuteCommand", _args, call, _x) + + _args = ["switchMove", [_x, ""]]; + ZEN_FMW_MP_REAll("Zen_ExecuteCommand", _args, call) + + ropeDestroy _ropeAir; + deleteVehicle _linkAir; + sleep 1; + + _args = ["allowDamage", [_x, true]]; + ZEN_FMW_MP_REClient("Zen_ExecuteCommand", _args, call, _x) +} forEach _units; + +sleep 1; +ZEN_STD_OBJ_AnimateDoors(_heli, 0) +sleep 2; + +ropeDestroy _ropeGround; +deleteVehicle _linkGround; +terminate _h_holdPos; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderHelicopterLand.sqf b/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderHelicopterLand.sqf new file mode 100644 index 0000000..9bcd1ea --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderHelicopterLand.sqf @@ -0,0 +1,138 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" +#include "Zen_FrameworkLibrary.sqf" + +_Zen_stack_Trace = ["Zen_OrderHelicopterLand", _this] call Zen_StackAdd; +private ["_heli", "_heliDriver", "_heliGrp", "_heliZ", "_inPos", "_heliCorrectLandPos", "_heliDirToLand", "_speedMode", "_heliPad", "_fastRope", "_cleanupCrash", "_isCrash"]; + +if !([_this, [["OBJECT"], ["VOID"], ["STRING"], ["SCALAR"], ["BOOL"], ["BOOL"]], [], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_heli = _this select 0; +_inPos = [(_this select 1)] call Zen_ConvertToPosition; + +_speedMode = "normal"; +_heliZ = 40; +_fastRope = false; + +if ((count _this) > 2) then { + _speedMode = _this select 2; +}; + +if ((count _this) > 3) then { + _heliZ = _this select 3; +}; + +if (count _this > 4) then { + _fastRope = _this select 4; +}; + +ZEN_STD_Parse_GetArgumentDefault(_cleanupCrash, 5, false) + +_heliDriver = driver _heli; +_heliGrp = group _heliDriver; + +if !(_fastRope) then { + _heliPad = [_inPos, "Land_helipadempty_f", 0, 0, true] call Zen_SpawnVehicle; +}; + +{ + _x enableAI "Move"; + _x allowFleeing 0; + _x enableAttack false; +} forEach (units _heliGrp); + +_heli land "none"; +_heliCorrectLandPos = [_heli, _inPos, 50] call Zen_ExtendRay; + +ZEN_STD_OBJ_AnimateDoors(_heli, 0) + +_heliDriver disableAI "FSM"; +_heliDriver disableAI "Target"; +_heliDriver disableAI "AutoTarget"; + +_heliDriver move _heliCorrectLandPos; +_heliGrp setBehaviour "careless"; +_heliGrp setCombatMode "green"; +_heliGrp setSpeedMode _speedMode; +_heli flyInHeight _heliZ; + +_isCrash = false; +waitUntil { + sleep 2; + + if (!(alive _heli) || !(alive driver _heli) || !(canMove _heli)) then { + _isCrash = true; + }; + + if (_cleanupCrash && {_isCrash && {(ZEN_FMW_Math_DistGreater2D(_heli, _inPos, 100))}}) then { + waitUntil { + sleep 2; + (ZEN_STD_OBJ_ATLPositionZ(_heli) < 10) + }; + + sleep 30; + { + deleteVehicle _x; + } forEach ((units _heliGrp) + [_heli]); + }; + + ((unitReady _heliDriver) || {_isCrash}) +}; + +if !(_isCrash) then { + if (_fastRope) then { + while {([_heli, _inPos] call Zen_Find2dDistance) > 0.5} do { + sleep 0.1; + _heliDirToLand = [_heli, _inPos] call Zen_FindDirection; + _heli setVelocity [10 * (cos _heliDirToLand), 10 * (sin _heliDirToLand), 0]; + }; + + _heli setVelocity [0, 0, -5]; + _heli setVectorUp [0, 0, 1]; + + _heli flyInHeight 30; + waitUntil { + sleep 0.2; + _heli setVelocity [0, 0, -5]; + ((ZEN_STD_OBJ_ATLPositionZ(_heli) < 31) || !(alive _heli)) + }; + + _heli setVelocity [0, 0, 0]; + _heli setVectorUp [0, 0, 1]; + _heli land "none"; + // sleep 1; + } else { + if !(surfaceIsWater (getPosATL _heli)) then { + _heli flyInHeight 0; + _heli land "land"; + + waitUntil { + sleep 1; + ((isTouchingGround _heli) || !(alive _heli)) + }; + + _heli flyInHeight 0; + } else { + _heli land "none"; + _heli flyInHeight 4; + + waitUntil { + sleep 1; + ((ZEN_STD_OBJ_ASLPositionZ(_heli) < 6) || !(alive _heli)) + }; + }; + + ZEN_STD_OBJ_AnimateDoors(_heli, 1) + // deleteVehicle _heliPad; + }; +}; + +// sleep 2; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderInfantryMove.sqf b/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderInfantryMove.sqf new file mode 100644 index 0000000..79adba3 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderInfantryMove.sqf @@ -0,0 +1,41 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" + +_Zen_stack_Trace = ["Zen_OrderInfantryMove", _this] call Zen_StackAdd; +private ["_group", "_movePos", "_speedMode", "_behaviorMode", "_combatMode"]; + +if !([_this, [["OBJECT", "GROUP"], ["VOID"], ["STRING"], ["STRING"]], [], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_group = _this select 0; +_movePos = [(_this select 1)] call Zen_ConvertToPosition; + +ZEN_STD_Parse_GetArgumentDefault(_speedMode, 2, "normal") +ZEN_STD_Parse_GetArgumentDefault(_behaviorMode, 3, "safe") +ZEN_STD_Parse_GetArgumentDefault(_combatMode, 4, "green") + +if (typeName _group == "OBJECT") then { + _group = group _group; +}; + +_group move _movePos; +_group setBehaviour _behaviorMode; +_group setCombatMode _combatMode; +_group setSpeedMode _speedMode; +_group allowFleeing 0; + +sleep 5; + +waitUntil { + sleep 2; + (((alive leader _group) && {(unitReady leader _group)}) || (({alive _x} count units _group) == 0)) +}; + +_group move (getPosATL (leader _group)); + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderInfantryPatrol.sqf b/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderInfantryPatrol.sqf new file mode 100644 index 0000000..bc51ab0 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderInfantryPatrol.sqf @@ -0,0 +1,179 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" +#include "Zen_FrameworkLibrary.sqf" + +_Zen_stack_Trace = ["Zen_OrderInfantryPatrol", _this] call Zen_StackAdd; +private ["_grpsArray", "_movecenter", "_minx", "_maxx", "_mpos", "_man", "_MMDist", "_blackList", "_speedMode", "_limitAngles", "_target", "_behaviorMode", "_chaseEnemy", "_waterPosition", "_divers", "_joinWeak", "_joined"]; + +if !([_this, [["VOID"], ["ARRAY", "OBJECT", "GROUP", "STRING"], ["ARRAY"], ["ARRAY", "SCALAR"], ["STRING"], ["STRING"], ["BOOL"], ["BOOL"], ["BOOL"]], [[], [], ["STRING", "SCALAR"], ["SCALAR"]], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_grpsArray = [(_this select 0)] call Zen_ConvertToGroupArray; +_movecenter = _this select 1; + +_blackList = []; +_minx = 50; +_maxx = 200; + +if !(typeName _movecenter == "String") then { + if (count _this > 2) then { + _MMDist = _this select 2; + _minx = (_MMDist select 0); + _maxx = (_MMDist select 1); + }; +} else { + if (markerShape _movecenter == "ICON") then { + _movecenter = [_movecenter] call Zen_ConvertToPosition; + if (count _this > 2) then { + _MMDist = _this select 2; + _minx = (_MMDist select 0); + _maxx = (_MMDist select 1); + }; + } else { + if (count _this > 2) then { + _blackList = _this select 2; + }; + _maxx = (((getMarkerSize _movecenter) select 1) + ((getMarkerSize _movecenter) select 0)) / 2; + }; +}; + +ZEN_STD_Parse_GetArgumentDefault(_limitAngles, 3, 0) +ZEN_STD_Parse_GetArgumentDefault(_speedMode, 4, "limited") +ZEN_STD_Parse_GetArgumentDefault(_behaviorMode, 5, "aware") +ZEN_STD_Parse_GetArgumentDefault(_chaseEnemy, 6, true) +ZEN_STD_Parse_GetArgumentDefault(_joinWeak, 7, false) +ZEN_STD_Parse_GetArgumentDefault(_divers, 8, false) + +_waterPosition = 1; +if (_divers) then { + _waterPosition = 2; +}; + +_grpsArray = [_grpsArray] call Zen_ArrayRemoveDead; +{ + private "_group"; + + _group = _x; + _man = leader _group; + + _mpos = [0,0,0]; + + #define CALC_POS if (typeName _movecenter == "String") then { \ + _mpos = [_movecenter, 0,_blackList, _waterPosition, [1,50], _limitAngles] call Zen_FindGroundPosition; \ + } else { \ + if (([_man, _movecenter] call Zen_Find2dDistance) < _minx) then { \ + _mpos = [_movecenter, [_minx, _maxx], [], _waterPosition, [1,50], _limitAngles] call Zen_FindGroundPosition; \ + } else { \ + while {true} do { \ + _mpos = [_movecenter, [_minx, _maxx], [], _waterPosition, [1,50], _limitAngles] call Zen_FindGroundPosition; \ + if !([_man, (2 * _maxx), ([_man, _mpos] call Zen_FindDirection), _moveCenter, [_minx, _minx], 0, "ELLIPSE"] call Zen_IsRayInPoly) exitWith {}; \ + }; \ + }; \ + }; + + CALC_POS + _group = group _man; + + if !(isPlayer _man) then { + if (_divers) then { + _mpos set [2, -10]; + { + _x swimInDepth -10; + } forEach (units _group); + }; + + _group move _mpos; + _group setCombatMode "Red"; + _group setSpeedMode _speedMode; + if (side _group == civilian) then { + _group setBehaviour "careless"; + } else { + _group setBehaviour _behaviorMode; + }; + }; + +} forEach _grpsArray; + +while {(count _grpsArray != 0)} do { + { + private "_group"; + _group = _x; + if (({alive _x} count (units _group)) > 0) then { + _joined = false; + + if (_joinWeak && {(({alive _x} count (units _group)) < 3)}) then { + _nearGroup = [_grpsArray - [_group], compile format["_this distanceSqr %1", getPosATL leader _group]] call Zen_ArrayFindExtremum; + + if (([_group, _nearGroup] call Zen_Find2dDistance) < 100) then { + _joined = true; + (units _group) join _nearGroup; + }; + }; + + if !(_joined) then { + _man = leader _group; + if ((unitReady _man) && {(alive _man)}) then { + _mpos = [0,0,0]; + + CALC_POS + + if !(isPlayer _man) then { + if (_divers) then { + _mpos set [2, -10]; + { + _x swimInDepth -10; + } forEach (units _group); + }; + + _group move _mpos; + _group setBehaviour _behaviorMode; + _group setCombatMode "Red"; + _group setSpeedMode _speedMode; + }; + } else { + if (_chaseEnemy) then { + if (side _group == civilian) then { + { + civilian setFriend [_x, 0]; + } forEach [west, east, resistance]; + _target = _man findNearestEnemy _man; + { + civilian setFriend [_x, 1]; + } forEach [west, east, resistance]; + } else { + _target = _man findNearestEnemy _man; + }; + if (!(isNull _target) && {((([_man, _target] call Zen_Find2dDistance) < (_maxx * 2)) && (_target isKindOf "Man"))}) then { + _mpos = [_target, (random (150 / ((_man knowsAbout _target) + 0.1))), (random 360)] call Zen_ExtendPosition; + + if !(isPlayer _man) then { + if (_divers) then { + _mpos set [2, -10]; + { + _x swimInDepth -10; + } forEach (units _group); + }; + + _man move _mpos; + _group setCombatMode "Red"; + _group setSpeedMode _speedMode; + if (side _group == civilian) then { + _group setBehaviour "careless"; + }; + }; + }; + }; + }; + }; + }; + } forEach _grpsArray; + sleep 10; + _grpsArray = [_grpsArray] call Zen_ArrayRemoveDead; +}; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderInfantryPatrolBuilding.sqf b/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderInfantryPatrolBuilding.sqf new file mode 100644 index 0000000..77cf4f3 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderInfantryPatrolBuilding.sqf @@ -0,0 +1,66 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" + +_Zen_stack_Trace = ["Zen_OrderInfantryPatrolBuilding", _this] call Zen_StackAdd; +private ["_units", "_centerPos", "_unitsRemove", "_patrolOutside", "_behavior", "_houseCount", "_positions", "_randHouseIndex", "_randPosArray", "_randHouse"]; + +if !([_this, [["VOID"], ["VOID"], ["BOOL"], ["STRING"], ["SCALAR"]], [], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_units = [(_this select 0)] call Zen_ConvertToObjectArray; +_centerPos = [(_this select 1)] call Zen_ConvertToPosition; + +ZEN_STD_Parse_GetArgumentDefault(_patrolOutside, 2, false) +ZEN_STD_Parse_GetArgumentDefault(_behavior, 3, "aware") +ZEN_STD_Parse_GetArgumentDefault(_houseCount, 4, 1) + +_nearBuilding = nearestBuilding _centerPos; +_housesArray = nearestObjects [getPosATL _nearBuilding, ["House"], 100]; +_housesArray resize _houseCount; + +_housePosArray = []; +{ + _positions = [_x] call Zen_FindBuildingPositions; + if (count _positions == 0) then { + _positions = [_x, true] call Zen_FindBuildingPositions; + }; + _housePosArray pushBack _positions; +} forEach _housesArray; + +{ + doStop _x; + _randHouseIndex = ZEN_STD_Array_RandIndex(_housesArray); + _randPosArray = _housePosArray select _randHouseIndex; + _x doMove ZEN_STD_Array_RandElement(_randPosArray); + _x setUnitPos "up"; +} forEach _units; + +while {(count _units > 0)} do { + { + if (isNull _x || {(alive _x)}) then { + _units set [_forEachIndex, 0]; + } else { + (group _x) setBehaviour _behavior; + if ((unitReady _x) || (vectorMagnitude velocity _x < 0.1)) then { + _x setUnitPos "up"; + _randHouseIndex = ZEN_STD_Array_RandIndex(_housesArray); + _randHouse = _housesArray select _randHouseIndex; + if (_patrolOutside && {((random 1) > 0.7)}) then { + _x doMove ([_randHouse, 30, (random 360)] call Zen_ExtendPosition); + } else { + _randPosArray = _housePosArray select _randHouseIndex; + _x doMove ZEN_STD_Array_RandElement(_randPosArray); + }; + }; + }; + } forEach _units; + 0 = [_units, 0] call Zen_ArrayRemoveValue; + sleep 10; +}; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderInsertion.sqf b/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderInsertion.sqf new file mode 100644 index 0000000..1db05be --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderInsertion.sqf @@ -0,0 +1,159 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" +#include "Zen_FrameworkLibrary.sqf" + +_Zen_stack_Trace = ["Zen_OrderInsertion", _this] call Zen_StackAdd; +private ["_vehicle", "_posArray", "_units", "_speed", "_heliZ", "_insertionType", "_cleanup", "_moveFunction", "_vehMass", "_cargoSeats", "_flyOverPos", "_isCrash", "_dirToDrop", "_dirHeli", "_landScript", "_args"]; + +if !([_this, [["OBJECT"], ["VOID"], ["VOID"], ["STRING"], ["SCALAR"], ["STRING"], ["BOOL"]], [], 3] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_vehicle = _this select 0; +_posArray = _this select 1; +_units = [(_this select 2)] call Zen_ConvertToObjectArray; + +ZEN_STD_Parse_GetArgumentDefault(_speed, 3, "normal") +ZEN_STD_Parse_GetArgumentDefault(_heliZ, 4, 40) +ZEN_STD_Parse_GetArgumentDefault(_insertionType, 5, "land") +ZEN_STD_Parse_GetArgumentDefault(_cleanup, 6, false) + +_insertionType = toLower _insertionType; + +if ((_insertionType == "parachute") && {!(_vehicle isKindOf "AIR")}) exitWith { + ZEN_FMW_Code_ErrorExitVoid("Zen_OrderInsertion", "Given vehicle to parachute from cannot fly") +}; + +if (typeName _posArray == "ARRAY") then { + if ((typeName (_posArray select 0)) == "SCAlAR") then { + _posArray = [_posArray]; + }; +} else { + _posArray = [_posArray]; +}; + +{ + _posArray set [_forEachIndex, ([_x] call Zen_ConvertToPosition)]; +} forEach _posArray; + +if (_vehicle isKindOf "AIR") then { + _moveFunction = "Zen_OrderHelicopterLand"; +} else { + _moveFunction = "Zen_OrderVehicleMove"; +}; + +_cargoSeats = ZEN_STD_OBJ_CountCargoSeats(_vehicle) + (count ([_vehicle, "cargoFFV"] call Zen_GetTurretPaths)); +{ + if (_insertionType == "parachute") then { + _flyOverPos = [_vehicle, _x, 1000] call Zen_ExtendRay; + 0 = [_vehicle, _flyOverPos, "full", (_heliZ max 400)] spawn Zen_OrderVehicleMove; + + _isCrash = false; + waitUntil { + sleep 1; + if (!(alive _vehicle) || !(alive driver _vehicle) || !(canMove _vehicle)) then { + _isCrash = true; + }; + + _dirToDrop = [_vehicle, _x] call Zen_FindDirection; + _dirHeli = [(getDir _vehicle)] call Zen_FindTrigAngle; + + ((!([_dirToDrop, [(_dirHeli - 80), (_dirHeli + 80)]] call Zen_IsAngleInSector) && (([_vehicle, _x] call Zen_Find2dDistance) < 400)) || _isCrash) + }; + + if (_isCrash) exitWith {}; + } else { + _landScript = [_vehicle, _x, _speed, _heliZ, (_insertionType == "fastrope"), _cleanup] spawn (missionNamespace getVariable _moveFunction); + + waitUntil { + sleep 1; + scriptDone _landScript; + }; + }; + + if (_forEachIndex == ((count _posArray) - 1) && ((count _posArray) > 1)) exitWith {}; + + switch (_insertionType) do { + case "land": { + if (_vehicle isKindOf "AIR") then { + if (surfaceIsWater getPosATL _vehicle) then { + _vehicle flyInHeight 4; + + { + _args = ["unassignVehicle", [_x]]; + ZEN_FMW_MP_REClient("Zen_ExecuteCommand", _args, call, _x) + + _args = ["action", [_x, ["getOut", _vehicle]]]; + ZEN_FMW_MP_REClient("Zen_ExecuteCommand", _args, call, _x) + + _x enableAI "move"; + sleep 1; + } forEach _units; + } else { + _vehicle flyInHeight 0; + }; + }; + + { + _args = ["orderGetIn", [[_x], false]]; + ZEN_FMW_MP_REClient("Zen_ExecuteCommand", _args, call, _x) + + _args = ["unassignVehicle", [_x]]; + ZEN_FMW_MP_REClient("Zen_ExecuteCommand", _args, call, _x) + + _args = ["leaveVehicle", [_x, _vehicle]]; + ZEN_FMW_MP_REClient("Zen_ExecuteCommand", _args, call, _x) + + _x enableAI "move"; + } forEach _units; + }; + case "fastrope": { + 0 = [_vehicle, _units] spawn Zen_OrderFastRope; + }; + case "parachute": { + ZEN_STD_OBJ_AnimateDoors(_vehicle, 1) + sleep 1; + { + removeBackpackGlobal _x; + _x addBackpackGlobal "b_parachute"; + + _args = ["unassignVehicle", [_x]]; + ZEN_FMW_MP_REClient("Zen_ExecuteCommand", _args, call, _x) + + if (isPlayer _x) then { + _args = ["action", [_x, ["eject", _vehicle]]]; + ZEN_FMW_MP_REClient("Zen_ExecuteCommand", _args, call, _x) + } else { + _x setPosATL ((getPosATL _vehicle) vectorAdd [0,0,-5]); + }; + + waitUntil { + ((vehicle _x) == _x) + }; + sleep 1; + } forEach _units; + }; + }; + + _insertionType = "land"; + waitUntil { + sleep 2; + ((([_units, _vehicle]) call Zen_AreNotInVehicle) || ((_vehicle emptyPositions "cargo") == _cargoSeats) || !(alive _vehicle)) + }; + + _vehicle flyInHeight 40; +} forEach _posArray; + +{ + _x enableAI "move"; +} forEach (crew _vehicle); + +if (_cleanup) then { + ZEN_STD_OBJ_DeleteVehCrew(_vehicle) +}; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderSlingLoad.sqf b/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderSlingLoad.sqf new file mode 100644 index 0000000..ef1d87c --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderSlingLoad.sqf @@ -0,0 +1,66 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" +#include "Zen_FrameworkLibrary.sqf" + +#define SLING_HEIGHT 11 +#define FLY_HEIGHT 30 + +_Zen_stack_Trace = ["Zen_OrderSlingLoad", _this] call Zen_StackAdd; +private ["_heli", "_cargo", "_endPos", "_h_arrived", "_useRope", "_rope"]; + +if !([_this, [["OBJECT"], ["OBJECT"], ["VOID"]], [], 3] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_heli = _this select 0; +_cargo = _this select 1; +_endPos = [(_this select 2)] call Zen_ConvertToPosition; +ZEN_STD_Parse_GetArgumentDefault(_useRope, 3, false) + +if (!(_heli canSlingLoad _cargo) && !(_useRope)) exitWith { + ZEN_FMW_Code_ErrorExitVoid("Zen_OrderSlingLoad", "Given helicopter cannot sling-load given cargo.") +}; + +_h_arrived = [_heli, _cargo, "normal", FLY_HEIGHT, true] spawn Zen_OrderHelicopterLand; +ZEN_STD_Code_WaitScript(_h_arrived) + +sleep 2; +waitUntil { + sleep 0.2; + _heli setVelocity [0,0,-6]; + ((_heli distance _cargo) < SLING_HEIGHT) +}; + +_heli setVelocity [0,0,-1]; +if (_heli canSlingLoad _cargo) then { + _heli setSlingLoad _cargo; +} else { + _rope = ropeCreate [_heli, [0,0,-2], _cargo, [0,0,0], 15]; +}; + +_heli flyInHeight FLY_HEIGHT; +sleep 4; +_h_arrived = [_heli, _endPos, "normal", FLY_HEIGHT, true] spawn Zen_OrderHelicopterLand; + +ZEN_STD_Code_WaitScript(_h_arrived) + +sleep 3; +waitUntil { + sleep 0.2; + _heli setVelocity [0,0,-6]; + (ZEN_STD_OBJ_ATLPositionZ(_heli) < SLING_HEIGHT) +}; + +_heli setVelocity [0,0,-1]; +_heli flyInHeight FLY_HEIGHT; +if (_heli canSlingLoad _cargo) then { + _heli setSlingLoad objNull; +} else { + ropeDestroy _rope; +}; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderVehicleDrop.sqf b/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderVehicleDrop.sqf new file mode 100644 index 0000000..94292e2 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderVehicleDrop.sqf @@ -0,0 +1,94 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" +#include "Zen_FrameworkLibrary.sqf" + +_Zen_stack_Trace = ["Zen_OrderVehicleDrop", _this] call Zen_StackAdd; +private ["_vehicle", "_posArray", "_className", "_speed", "_heliZ", "_dropPoint", "_dirToDrop", "_destination", "_landScript", "_drop", "_vehicleGrp", "_isCrash", "_vehicleGrp", "_vehicleGrp", "_cleanupCrash"]; + +if !([_this, [["OBJECT"], ["VOID"], ["OBJECT", "STRING"], ["STRING"], ["SCALAR"], ["BOOL"]], [], 3] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_vehicle = _this select 0; +_posArray = _this select 1; +_className = _this select 2; + +_speed = "normal"; +_heliZ = 80; + +if (count _this > 3) then { + _speed = _this select 3; +}; + +if (count _this > 4) then { + _heliZ = _this select 4; +}; + +ZEN_STD_Parse_GetArgumentDefault(_cleanupCrash, 5, false) + +{ + _posArray set [_forEachIndex, ([_x] call Zen_ConvertToPosition)]; +} forEach _posArray; + +_dropPoint = _posArray select 0; + +sleep 2; + +_vehicleGrp = group driver _vehicle; +_destination = [_vehicle, _dropPoint, 800] call Zen_ExtendRay; +_landScript = [_vehicle, _destination, _speed, _heliZ] spawn Zen_OrderVehicleMove; + +sleep 5; +_isCrash = false; +waitUntil { + sleep 0.25; + + if (!(alive _vehicle) || !(alive driver _vehicle) || !(canMove _vehicle)) then { + _isCrash = true; + }; + + if (_cleanupCrash && {_isCrash && {(ZEN_FMW_Math_DistGreater2D(_vehicle, _dropPoint, 100))}}) then { + waitUntil { + sleep 2; + (ZEN_STD_OBJ_ATLPositionZ(_vehicle) < 10) + }; + + sleep 30; + { + deleteVehicle _x; + } forEach ((units _vehicleGrp) + [_vehicle]); + }; + + _dirToDrop = [_vehicle, _dropPoint] call Zen_FindDirection; + _dirHeli = [(getDir _vehicle)] call Zen_FindTrigAngle; + ((!([_dirToDrop, [(_dirHeli - 85), (_dirHeli + 85)]] call Zen_IsAngleInSector) && (([_vehicle, _dropPoint] call Zen_Find2dDistance) < 300)) || _isCrash) +}; + +if !(_isCrash) then { + ZEN_STD_OBJ_AnimateDoors(_vehicle, 1) + if (typeName _className == "STRING") then { + _drop = [_vehicle, _className, (ZEN_STD_OBJ_ATLPositionZ(_vehicle) - 10)] call Zen_SpawnVehicle; + } else { + _drop = _className; + 0 = [_drop, _vehicle, -10, ZEN_STD_Math_VectCartCyl((velocity _vehicle)), (random 360)] call Zen_TransformObject; + }; + + sleep 2; + 0 = [_drop] spawn Zen_SpawnParachute; + sleep 5; + terminate _landScript; + + ZEN_STD_OBJ_AnimateDoors(_vehicle, 0) + _landScript = [_vehicle, (_posArray select 1), _speed, _heliZ, false, true] spawn Zen_OrderHelicopterLand; + + waitUntil { + sleep 2; + scriptDone _landScript; + }; +}; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderVehicleMove.sqf b/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderVehicleMove.sqf new file mode 100644 index 0000000..fb845b5 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderVehicleMove.sqf @@ -0,0 +1,95 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" +#include "Zen_FrameworkLibrary.sqf" + +_Zen_stack_Trace = ["Zen_OrderVehicleMove", _this] call Zen_StackAdd; +private ["_vehicle", "_inPos", "_speedMode", "_vehicleDriver", "_vehicleGrp", "_height", "_cleanupEnd", "_cleanupCrash", "_isCrash"]; + +if !([_this, [["OBJECT"], ["VOID"], ["STRING"], ["SCALAR"], ["BOOL"], ["BOOL"]], [], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_vehicle = _this select 0; +_inPos = [(_this select 1)] call Zen_ConvertToPosition; + +_speedMode = "normal"; +_height = 50; + +if (count _this > 2) then { + _speedMode = _this select 2; +}; + +if (count _this > 3) then { + _height = _this select 3; +}; + +ZEN_STD_Parse_GetArgumentDefault(_cleanupEnd, 4, false) +ZEN_STD_Parse_GetArgumentDefault(_cleanupCrash, 5, false) + +_vehicleDriver = driver _vehicle; +_vehicleGrp = group (driver _vehicle); + +_vehicle land "none"; + +_vehicleDriver enableAI "Move"; +_vehicleDriver allowFleeing 0; + +if (_vehicle isKindOf "AIR") then { + _inPos = [_vehicle, _inPos, 75] call Zen_ExtendRay; +}; + +(group _vehicleDriver) move _inPos; + +_vehicleGrp setBehaviour "safe"; +_vehicleGrp setCombatMode "green"; +_vehicleGrp setSpeedMode _speedMode; + +if (_vehicle isKindOf "AIR") then { + _vehicle flyInHeight _height; + _vehicleGrp setBehaviour "careless"; + + _vehicleDriver disableAI "FSM"; + _vehicleDriver disableAI "Target"; + _vehicleDriver disableAI "AutoTarget"; +}; + +sleep 5; +_isCrash = false; +waitUntil { + sleep 2; + + if (!(alive _vehicle) || !(alive driver _vehicle) || !(canMove _vehicle)) then { + _isCrash = true; + }; + + if (_cleanupCrash && {_isCrash && {(ZEN_FMW_Math_DistGreater2D(_vehicle, _inPos, 100))}}) then { + if (_vehicle isKindOf "AIR") then { + waitUntil { + sleep 2; + (ZEN_STD_OBJ_ATLPositionZ(_vehicle) < 10) + }; + }; + + sleep 30; + { + deleteVehicle _x; + } forEach ((units _vehicleGrp) + [_vehicle]); + }; + + (((unitReady (driver _vehicle)) || (([_vehicle] call Zen_IsReady))) || ((([_vehicle, _inPos] call Zen_Find2dDistance) < 25) && (speed _vehicle < 1)) || _isCrash || ((_vehicle isKindOf "SHIP") && ((getTerrainHeightASL getPosATL _vehicle) > -1))) +}; + +_vehicleDriver enableAI "Move"; +_vehicle move (getPosATL _vehicle); + +sleep 2; + +if (_cleanupEnd && {(([_vehicle, _inPos] call Zen_Find2dDistance) < 25)}) then { + ZEN_STD_OBJ_DeleteVehCrew(_vehicle); +}; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderVehiclePatrol.sqf b/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderVehiclePatrol.sqf new file mode 100644 index 0000000..3c9b24b --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderVehiclePatrol.sqf @@ -0,0 +1,121 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" +#include "Zen_FrameworkLibrary.sqf" + +_Zen_stack_Trace = ["Zen_OrderVehiclePatrol", _this] call Zen_StackAdd; +private ["_vehicleArray", "_movecenter", "_blackList", "_maxx", "_speedMode", "_mpos", "_limitAngles", "_vehDist", "_cleanupDead", "_crewGroupArray", "_crew"]; + +if !([_this, [["ARRAY", "OBJECT"], ["ARRAY", "OBJECT", "GROUP", "STRING"], ["ARRAY", "SCALAR"], ["ARRAY", "SCALAR"], ["STRING"], ["BOOL"]], [["OBJECT", "ARRAY"], [], ["STRING"], ["SCALAR"]], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_vehicleArray = [(_this select 0)] call Zen_ConvertToObjectArray; +_movecenter = _this select 1; + +if (typeName _vehicleArray != "ARRAY") then { + _vehicleArray = [_vehicleArray]; +}; + +_blackList = []; +_maxx = 500; +_speedMode = "limited"; +_limitAngles = [0, 360]; + +if !(typeName _movecenter == "String") then { + if (count _this > 2) then { + _maxx = _this select 2; + }; +} else { + if (markerShape _movecenter == "ICON") then { + _movecenter = [_movecenter] call Zen_ConvertToPosition; + if (count _this > 2) then { + _maxx = _this select 2; + }; + } else { + if (count _this > 2) then { + _blackList = _this select 2; + }; + }; +}; + +if (count _this > 3) then { + _limitAngles = _this select 3; +}; + +if (count _this > 4) then { + _speedMode = _this select 4; +}; + +ZEN_STD_Parse_GetArgumentDefault(_cleanupDead, 5, false) + +_vehicleArray = [([_vehicleArray] call Zen_ConvertToObjectArray)] call Zen_ArrayRemoveDead; +_crewGroupArray = []; + +{ + private "_veh"; + _veh = _x; + _mpos = [0,0,0]; + _crewGroupArray pushBack (group driver _veh); + + _vehDist = [_veh, _movecenter] call Zen_Find2dDistance; + #define CALC_POS \ + if (typeName _movecenter == "String") then { \ + _mpos = [_movecenter, 0,_blackList, 1, [1, 2*(((getMarkerSize _movecenter) select 0) max ((getMarkerSize _movecenter) select 1))], _limitAngles] call Zen_FindGroundPosition; \ + } else { \ + _mpos = [_movecenter, [0, _maxx], [], 1, [1, 2*_maxx], _limitAngles, 0, [1, _veh, _maxx / 4]] call Zen_FindGroundPosition; \ + }; + + CALC_POS + + _veh move _mpos; + _veh setBehaviour "aware"; + _veh setCombatMode "Red"; + _veh setSpeedMode _speedMode; +} forEach _vehicleArray; + +while {(count _vehicleArray != 0)} do { + { + if (isNull _x) then { + _vehicleArray set [_forEachIndex, 0]; + _crewGroupArray set [_forEachIndex, 0]; + } else { + private "_veh"; + _veh = _x; + if (!(alive _veh) || (({alive _x} count crew _veh) == 0)) then { + _vehicleArray set [_forEachIndex, 0]; + _crew = _crewGroupArray select _forEachIndex; + _crewGroupArray set [_forEachIndex, 0]; + if (_cleanupDead) then { + 0 = [_veh, _crew] spawn { + sleep 60; + deleteVehicle (_this select 0); + { + deleteVehicle _x; + } forEach units (_this select 1); + }; + }; + } else { + if ([_veh] call Zen_IsReady) then { + _mpos = [0,0,0]; + _vehDist = [_veh, _movecenter] call Zen_Find2dDistance; + + CALC_POS + + _veh move _mpos; + _veh setBehaviour "aware"; + _veh setCombatMode "Red"; + _veh setSpeedMode _speedMode; + }; + }; + }; + } forEach _vehicleArray; + sleep 10; + 0 = [_vehicleArray, 0] call Zen_ArrayRemoveValue; + 0 = [_crewGroupArray, 0] call Zen_ArrayRemoveValue; +}; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrdersFunctionsCompile.sqf b/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrdersFunctionsCompile.sqf new file mode 100644 index 0000000..75ef87b --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrdersFunctionsCompile.sqf @@ -0,0 +1,19 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +Zen_OrderAircraftPatrol = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_OrdersFunctions\Zen_OrderAircraftPatrol.sqf"; +Zen_OrderBoatPatrol = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_OrdersFunctions\Zen_OrderBoatPatrol.sqf"; +Zen_OrderFastRope = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_OrdersFunctions\Zen_OrderFastRope.sqf"; +Zen_OrderExtraction = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_OrdersFunctions\Zen_OrderExtraction.sqf"; +Zen_OrderHelicopterLand = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_OrdersFunctions\Zen_OrderHelicopterLand.sqf"; +Zen_OrderInfantryMove = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_OrdersFunctions\Zen_OrderInfantryMove.sqf"; +Zen_OrderInfantryPatrol = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_OrdersFunctions\Zen_OrderInfantryPatrol.sqf"; +Zen_OrderInfantryPatrolBuilding = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_OrdersFunctions\Zen_OrderInfantryPatrolBuilding.sqf"; +Zen_OrderInsertion = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_OrdersFunctions\Zen_OrderInsertion.sqf"; +Zen_OrderSlingLoad = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_OrdersFunctions\Zen_OrderSlingLoad.sqf"; +Zen_OrderVehicleDrop = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_OrdersFunctions\Zen_OrderVehicleDrop.sqf"; +Zen_OrderVehicleMove = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_OrdersFunctions\Zen_OrderVehicleMove.sqf"; +Zen_OrderVehiclePatrol = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_OrdersFunctions\Zen_OrderVehiclePatrol.sqf"; + +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_StandardLibrary.sqf b/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_StandardLibrary.sqf new file mode 100644 index 0000000..4a13a58 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_StandardLibrary.sqf @@ -0,0 +1,155 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#define ZEN_STD_Array_LastElement(A) (A select (count A - 1)) +#define ZEN_STD_Array_RandIndex(A) (floor random count A) +#define ZEN_STD_Array_RandElement(A) (A select (floor random count A)) +#define ZEN_STD_Array_UnorderedRemove(A, I) \ + A set [I, A select (count A - 1)]; \ + A resize (count A - 1); + +#define ZEN_STD_Code_WaitScript(S) \ + waitUntil { \ + sleep 1; \ + (scriptDone S) \ + }; + +#define ZEN_STD_Code_SleepFrames(F) sleep (F / diag_fps); + +#define ZEN_STD_Code_SwapVars(X, Y) \ + _Zen_tempVar = X; \ + X = Y; \ + Y = _Zen_tempVar; \ + _Zen_tempVar = nil; + +#define ZEN_STD_Math_RandNegativePositive() (if (random 1 > 0.5) then {1} else {-1}) + +#define ZEN_STD_Math_MarkerArea(M) \ + (if (toLower markerShape M == "ellipse") then { \ + (((markerSize M) select 0) * ((markerSize M) select 1) * pi) \ + } else { \ + (((markerSize M) select 0) * ((markerSize M) select 1) * 4) \ + }) + +#define ZEN_STD_Math_VectCartCyl(V) ([(vectorMagnitude [(V select 0), (V select 1), 0]), (V select 1) atan2 (V select 0), (V select 2)]) +#define ZEN_STD_Math_VectCartPolar(V) ([(vectorMagnitude V), (V select 1) atan2 (V select 0), acos ((V select 2) / (vectorMagnitude V))]) + +#define ZEN_STD_Math_VectCylCart(V) ([(V select 0) * cos (V select 1), (V select 0) * sin (V select 1), (V select 2)]) +#define ZEN_STD_Math_VectCylPolar(V) ([(vectorMagnitude [(V select 0), 0, (V select 2)]), (V select 1), (V select 0) atan2 (V select 2)]) + +#define ZEN_STD_Math_VectPolarCart(V) ([(V select 0) * cos (V select 1) * sin (V select 2), (V select 0) * sin (V select 1) * sin (V select 2), (V select 0) * cos (V select 2)]) +#define ZEN_STD_Math_VectPolarCyl(V) ([(V select 0) * sin (V select 2), (V select 1), (V select 0) * cos (V select 2)]) + +#define ZEN_STD_Math_VectRotateX(P, A) ([(P select 0), (P select 1) * cos A + (P select 2) * sin A, - (P select 1) * sin A + (P select 2) * cos A]) +#define ZEN_STD_Math_VectRotateY(P, A) ([(P select 0) * cos A - (P select 2) * sin A, (P select 1), (P select 0) * sin A + (P select 2) * cos A]) +#define ZEN_STD_Math_VectRotateZ(P, A) ([(P select 0) * cos A + (P select 1) * sin A, - (P select 0) * sin A + (P select 1) * cos A, (P select 2)]) + +#define ZEN_STD_Math_VectTransform(P, X, Y, Z) ([(P select 0) + X, (P select 1) + Y, (P select 2) + Z]) + +#define ZEN_STD_OBJ_ATLPositionZ(O) ((getPosATL O) select 2) +#define ZEN_STD_OBJ_ASLPositionZ(O) ((getPosASL O) select 2) +#define ZEN_STD_OBJ_BBX(O) abs ((((boundingBoxReal O) select 0) select 0) - (((boundingBoxReal O) select 1) select 0)) +#define ZEN_STD_OBJ_BBY(O) abs ((((boundingBoxReal O) select 0) select 1) - (((boundingBoxReal O) select 1) select 1)) +#define ZEN_STD_OBJ_BBZ(O) abs ((((boundingBoxReal O) select 0) select 2) - (((boundingBoxReal O) select 1) select 2)) + +#define ZEN_STD_OBJ_AnimateDoors(V, C) \ + { \ + V animateDoor [(configName _x), C]; \ + } forEach ("((toLower (getText (_x >> 'source'))) == 'door')" configClasses (configFile >> "CfgVehicles" >> (typeOf V) >> "AnimationSources")); + +#define ZEN_STD_OBJ_CountBuildingPos(V, B) \ + V = 0; \ + for "_i" from 0 to 100 do { \ + if ((B buildingPos V) isEqualTo [0,0,0]) exitWith {}; \ + V = V + 1; \ + }; \ + V = V - 1; + +#define ZEN_STD_OBJ_CountCargoSeats(V) (getNumber (configFile >> "CfgVehicles" >> (typeOf V) >> "transportSoldier")) +#define ZEN_STD_OBJ_DeleteVehCrew(V) \ + { \ + deleteVehicle _x; \ + } forEach (crew V + [V]); + +#define ZEN_STD_OBJ_MakePOW(O) \ + O setCaptive true; \ + O disableAI "move"; \ + O setUnitPos "UP"; \ + removeAllWeapons O; \ + removeBackpack O; \ + removeGoggles O; \ + removeHeadgear O; + +#define ZEN_STD_OBJ_OrderGetOut(U, V) \ + U orderGetIn false; \ + { \ + unassignVehicle _x; \ + _x leaveVehicle V; \ + } forEach U; + +#define ZEN_STD_OBJ_OrderGetIn(U, V) \ + { \ + _x assignAsCargo V; \ + } forEach U; \ + U orderGetIn true; + +#define ZEN_STD_OBJ_OrientAircraft(O, P, S) \ + _Zen_vDirToLZ = ((getPosATL O) vectorFromTo P); \ + _Zen_dirToLZ = ZEN_STD_Math_VectCartCyl(_Zen_vDirToLZ) select 1; \ + sleep (5 / diag_fps); \ + O setDir (90 - _Zen_dirToLZ); \ + O setVelocity [S * cos _Zen_dirToLZ, S * sin _Zen_dirToLZ, 0]; + +#define ZEN_STD_OBJ_ParachuteInsertion(O, P, H) \ + _Zen_dir = random 360; \ + { \ + _x setPosATL (P vectorAdd [50 * _forEachIndex * cos _Zen_dir, 50 * _forEachIndex * sin _Zen_dir, H]); \ + removeBackpackGlobal _x; \ + _x addBackpackGlobal "b_parachute"; \ + } forEach O; + +#define ZEN_STD_OBJ_TransformATL(O, X, Y, Z) O setPosATL [((getPosATL O) select 0) + X, ((getPosATL O) select 1) + Y, ((getPosATL O) select 2) + Z]; + +#define ZEN_STD_Parse_GetArgumentDefault(V, I, D) \ + if (count _this > I) then { \ + V = _this select I; \ + } else { \ + V = D; \ + }; + +#define ZEN_STD_Parse_GetSetArgumentDefault(V, I, D, R) \ + if (count _this > I) then { \ + V = _this select I; \ + } else { \ + V = D; \ + }; \ + _this set [I, R]; + +#define ZEN_STD_Parse_GetSetArgumentOptional(V, I, D, R) \ + if (count _this > I) then { \ + V = _this select I; \ + } else { \ + V = D; \ + _this set [I, R]; \ + }; + +#define ZEN_STD_Parse_GetArgument(V, I) \ + if (count _this > I) then { \ + V = _this select I; \ + }; + +#define ZEN_STD_Parse_ToArray(X) \ + if (typeName X != "ARRAY") then { \ + X = [X]; \ + }; + +#define ZEN_STD_Parse_ToString(X) \ + if (typeName X != "STRING") then { \ + X = str X; \ + }; + +#define ZEN_STD_Parse_ToStringLower(X) \ + if (typeName X != "STRING") then { \ + X = toLower str X; \ + }; diff --git a/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_CalculatePositionMarker.sqf b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_CalculatePositionMarker.sqf new file mode 100644 index 0000000..5940f5a --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_CalculatePositionMarker.sqf @@ -0,0 +1,107 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_CalculatePositionMarker", _this] call Zen_StackAdd; +private ["_area", "_min", "_water", "_road", "_pos", "_failures", "_roadDist", "_minAngle", "_maxAngle", "_markerDir", "_markerSizeArray", "_markerCenterXY", "_markerShape", "_i", "_exit", "_nearestRoad", "_roads", "_areaArea", "_iterationCount", "_quantPhi", "_bestPos", "_leastFailures", "_maxFailures"]; + +_area = _this select 0; +_min = _this select 1; +_water = _this select 6; +_road = _this select 7; +_roadDist = _this select 8; +_minAngle = _this select 9; +_maxAngle = _this select 10; +_maxFailures = _this select 28; + +_markerDir = markerDir _area; +_markerSizeArray = getMarkerSize _area; +_markerCenterXY = getMarkerPos _area; +_markerShape = markerShape _area; + +_leastFailures = 20; +_bestPos = _markerCenterXY; +_pos = [0,0,0]; +_exit = false; + +if (_road == 2) then { + if (_markerShape == "ellipse") then { + _roads = _markerCenterXY nearRoads ((_markerSizeArray select 0) max (_markerSizeArray select 1)); + } else { + _roads = _markerCenterXY nearRoads (_markerSizeArray distance [0,0]); + }; + + if (count _roads > 0) then { + _nearestRoad = [_roads, _area] call Zen_FindMinDistance; + if !([_nearestRoad, _markerCenterXY, _markerSizeArray, _markerDir, _markerShape] call Zen_IsPointInPoly) then { + 0 = ["Zen_FindGroundPosition", "No valid position possible, no roads within area", _this] call Zen_PrintError; + call Zen_StackPrint; + _exit = true; + }; + } else { + 0 = ["Zen_FindGroundPosition", "No valid position possible, no roads within area", _this] call Zen_PrintError; + call Zen_StackPrint; + _exit = true; + }; +}; + +if (_exit) exitWith { + call Zen_StackRemove; + ([_area] call Zen_ConvertToPosition) +}; + +if (_water > 0) then { + if (_water == 1) then { + _exit = !([_markerCenterXY, (_markerSizeArray distance [0,0]), "land"] call Zen_IsNearTerrain); + } else { + _exit = !([_markerCenterXY, (_markerSizeArray distance [0,0]), "water"] call Zen_IsNearTerrain); + }; + + if (_exit) then { + 0 = ["Zen_FindGroundPosition", "No valid position possible, water preference impossible", _this] call Zen_PrintError; + call Zen_StackPrint; + }; +}; + +if (_exit) exitWith { + call Zen_StackRemove; + ([_area] call Zen_ConvertToPosition) +}; + +if (_markerShape == "Ellipse") then { + _areaArea = (([_markerSizeArray] call Zen_ArrayFindAverage)^2 * pi) * (abs (_maxAngle - _minAngle)); +} else { + _areaArea = (4 * (_markerSizeArray select 0) * (_markerSizeArray select 1)) * (abs (_maxAngle - _minAngle)); +}; + +_quantPhi = [_markerSizeArray, _minAngle, _maxAngle, _markerDir, _markerShape] call Zen_QuantizeAngles; +_iterationCount = ((round (_areaArea / 225 / pi )) max 20) min 1000; +for "_i" from 1 to _iterationCount step 1 do { + _pos = [_markerCenterXY, _markerSizeArray, _markerDir, _markerShape, _quantPhi] call Zen_FindPositionPoly; + + if (_road in [1, 2]) then { + _roads = _pos nearRoads _roadDist; + if (count _roads > 0) then { + _pos = ([([_roads] call Zen_ArrayGetRandom)] call Zen_ConvertToPosition); + }; + }; + + if ([_pos, _markerCenterXY, _markerSizeArray, _markerDir, _markerShape] call Zen_IsPointInPoly) then { + _this set [29, _pos]; + _failures = _this call Zen_CheckPosition; + + if (_failures < _leastFailures) then { + _bestPos = _pos; + _leastFailures = _failures; + }; + }; + + if (_leastFailures <= _maxFailures) exitWith {}; + if (_i == _iterationCount) exitWith { + 0 = ["Zen_FindGroundPosition", "No valid position found", _this] call Zen_PrintError; + call Zen_StackPrint; + }; +}; + +call Zen_StackRemove; +(_bestPos) diff --git a/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_CalculatePositionObject.sqf b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_CalculatePositionObject.sqf new file mode 100644 index 0000000..c3c4b70 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_CalculatePositionObject.sqf @@ -0,0 +1,94 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_CalculatePositionObject", _this] call Zen_StackAdd; +private ["_area", "_min", "_max", "_water", "_pos", "_i", "_minAngle", "_maxAngle", "_road", "_roadDist", "_exit", "_nearestRoad", "_furthestRoad", "_roads", "_dist", "_iterationCount", "_failures", "_bestPos", "_leastFailures", "_maxFailures"]; + +_area = _this select 0; +_min = _this select 1; +_max = _this select 2; +_water = _this select 6; +_road = _this select 7; +_roadDist = _this select 8; +_minAngle = _this select 9; +_maxAngle = _this select 10; +_maxFailures = _this select 28; + +_leastFailures = 20; +_bestPos = _area; +_pos = [0,0,0]; +_exit = false; + +if (_road == 2) then { + _roads = _area nearRoads _max; + _furthestRoad = [_roads, _area] call Zen_FindMaxDistance; + + if (count _roads > 0) then { + _dist = [_furthestRoad, _area] call Zen_Find2dDistance; + if (_dist < _min) then { + 0 = ["Zen_FindGroundPosition", "No valid position possible, no roads within area", _this] call Zen_PrintError; + call Zen_StackPrint; + _exit = true; + }; + } else { + 0 = ["Zen_FindGroundPosition", "No valid position possible, no roads within area", _this] call Zen_PrintError; + call Zen_StackPrint; + _exit = true; + }; +}; + +if (_exit) exitWith { + call Zen_StackRemove; + (_area) +}; + +if (_water > 0) then { + if (_water == 1) then { + _exit = !([_area, _max, "land"] call Zen_IsNearTerrain); + } else { + _exit = !([_area, _max, "water"] call Zen_IsNearTerrain); + }; + + if (_exit) then { + 0 = ["Zen_FindGroundPosition", "No valid position possible, water preference impossible", _this] call Zen_PrintError; + call Zen_StackPrint; + }; +}; + +if (_exit) exitWith { + call Zen_StackRemove; + (_area) +}; + +_iterationCount = ((((round (((_max^2) - (_min^2)) * (abs (_maxAngle - _minAngle)))) / 225)) max 20) min 1000; +for "_i" from 1 to _iterationCount step 1 do { + _pos = [_area,_min,_max,_minAngle,_maxAngle] call Zen_PositionObject; + + if (_road in [1, 2]) then { + _roads = _pos nearRoads _roadDist; + if (count _roads > 0) then { + _pos = ([([_roads] call Zen_ArrayGetRandom)] call Zen_ConvertToPosition); + }; + }; + + _dist = [_area, _pos] call Zen_Find2dDistance; + if ((_dist <= _max) && (_dist >= _min)) then { + _this set [29, _pos]; + _failures = _this call Zen_CheckPosition; + + if (_failures < _leastFailures) then { + _bestPos = _pos; + _leastFailures = _failures; + }; + }; + + if (_leastFailures <= _maxFailures) exitWith {}; + if (_i == _iterationCount) exitWith { + 0 = ["Zen_FindGroundPosition", "No valid position found", _this] call Zen_PrintError; + call Zen_StackPrint; + }; +}; + +call Zen_StackRemove; +(_bestPos) diff --git a/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_CheckPosition.sqf b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_CheckPosition.sqf new file mode 100644 index 0000000..1d91e5e --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_CheckPosition.sqf @@ -0,0 +1,185 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#define FAIL _failures = _failures + 1; +#define FAIL_CHECK if (_failures > (_maxFailures + 3)) exitWith {(_failures)}; + +private ["_area", "_min", "_allWhitelist", "_pos", "_failures", "_roadDist", "_minAngle", "_maxAngle", "_ID", "_objSwitch", "_objLimit", "_objDist", "_nearobj","_pointAvoidSwitch","_pointAvoidArray","_pointAvoidDist","_nearWaterSwitch","_nearWaterDist", "_roads", "_water", "_road", "_angleToPos", "_markerDir", "_markerSizeArray", "_markerCenterXY", "_markerShape", "_terrainSlopeSwitch", "_terrainSlopeAngle", "_terrainSlopeRadius", "_ambientClutterSwitch", "_ambientClutterCount", "_ambientClutterRadius", "_heightSwitch", "_heightNumber", "_heightRadius", "_maxFailures", "_height", "_allBlacklist", "_pointIn", "_oneWhitelist"]; + +_area = _this select 0; +_min = _this select 1; +// _max = _this select 2; +_allBlacklist = _this select 3; +_allWhitelist = _this select 4; +_oneWhitelist = _this select 5; +_water = _this select 6; +_road = _this select 7; +_roadDist = _this select 8; +_minAngle = _this select 9; +_maxAngle = _this select 10; +_objSwitch = _this select 11; +_objLimit = _this select 12; +_objDist = _this select 13; +_pointAvoidSwitch = _this select 14; +_pointAvoidArray = _this select 15; +_pointAvoidDist = _this select 16; +_nearWaterSwitch = _this select 17; +_nearWaterDist = _this select 18; +_terrainSlopeSwitch = _this select 19; +_terrainSlopeAngle = _this select 20; +_terrainSlopeRadius = _this select 21; +_ambientClutterSwitch = _this select 22; +_ambientClutterCount = _this select 23; +_ambientClutterRadius = _this select 24; +_heightSwitch = _this select 25; +_heightNumber = _this select 26; +_heightRadius = _this select 27; +_maxFailures = _this select 28; +_pos = _this select 29; + +_failures = 0; + +{ + if (([_x, allMapMarkers] call Zen_ValueIsInArray) && {([_pos, _x] call Zen_IsPointInPoly)}) exitWith { + FAIL + }; +} forEach _allBlacklist; + +{ + if (([_x, allMapMarkers] call Zen_ValueIsInArray) && {!([_pos, _x] call Zen_IsPointInPoly)}) exitWith { + FAIL + }; +} forEach _allWhitelist; + +_pointIn = false || (count _oneWhitelist == 0); +{ + if (([_x, allMapMarkers] call Zen_ValueIsInArray) && {([_pos, _x] call Zen_IsPointInPoly)}) exitWith { + _pointIn = true; + }; +} forEach _oneWhitelist; + +if !(_pointIn) then { + FAIL +}; + +FAIL_CHECK +switch (_water) do { + case 1: { + if (surfaceIsWater [_pos select 0, _pos select 1]) then {FAIL}; + }; + case 2: { + if !(surfaceIsWater [_pos select 0, _pos select 1]) then {FAIL} + }; +}; + +if (_road in [2, 3]) then { + _roads = _pos nearRoads _roadDist; + switch (_road) do { + case 2: { + if (count _roads < 1) then {FAIL}; + }; + case 3: { + if (count _roads > 1) then {FAIL}; + }; + }; +}; + +FAIL_CHECK +if (([_area, _pos] call Zen_Find2dDistance) < _min) then {FAIL}; + +FAIL_CHECK +if !(_minAngle == _maxAngle) then { + _angleToPos = [_area, _pos] call Zen_FindDirection; + if !([_angleToPos, [_minAngle, _maxAngle]] call Zen_IsAngleInSector) then {FAIL}; +}; + +FAIL_CHECK +if (_objSwitch == 1) then { + _nearObjHouse = nearestObjects [_pos, ["House", "Building", "Ruins"], _objDist]; + if ((count _nearObjHouse) > _objLimit) then {FAIL}; +} else { + if (_objSwitch == 2) then { + _nearObjHouse = nearestObjects [_pos, ["House", "Building", "Ruins"], _objDist]; + if ((count _nearObjHouse) < _objLimit) then {FAIL}; + }; +}; + +FAIL_CHECK +if (_pointAvoidSwitch != 0) then { + if (((typeName _pointAvoidArray) == "ARRAY") && {((count _pointAvoidArray) > 0)}) then { + if (_pointAvoidSwitch == 1) then { + { + if (([_pos, _x] call Zen_Find2dDistance) < _pointAvoidDist) exitWith {FAIL}; + } forEach _pointAvoidArray; + } else { + if (_pointAvoidSwitch == 2) then { + { + if (([_pos, _x] call Zen_Find2dDistance) > _pointAvoidDist) exitWith {FAIL}; + } forEach _pointAvoidArray; + }; + }; + }; +}; + +FAIL_CHECK +if (_nearWaterSwitch == 1) then { + if ([_pos,_nearWaterDist, "water"] call Zen_IsNearTerrain) then {FAIL}; +} else { + if (_nearWaterSwitch == 2) then { + if !([_pos,_nearWaterDist, "water"] call Zen_IsNearTerrain) then {FAIL}; + }; +}; + +FAIL_CHECK +if (_terrainSlopeSwitch == 1) then { + if (([_pos] call Zen_FindTerrainSlope) > _terrainSlopeAngle) then {FAIL}; +} else { + if (_terrainSlopeSwitch == 2) then { + if (([_pos] call Zen_FindTerrainSlope) < _terrainSlopeAngle) then {FAIL}; + }; +}; + +FAIL_CHECK +if (_ambientClutterSwitch == 1) then { + if (typeName _ambientClutterCount == "ARRAY") then { + { + _clutterMax = _ambientClutterCount select _forEachIndex; + if ((_x > _clutterMax) && {(_clutterMax != -1)}) exitWith {FAIL}; + } forEach ([_pos, _ambientClutterRadius] call Zen_GetAmbientClutterCount); + } else { + if (([([_pos, _ambientClutterRadius] call Zen_GetAmbientClutterCount)] call Zen_ArrayFindSum) > _ambientClutterCount) then {FAIL}; + }; +} else { + if (_ambientClutterSwitch == 2) then { + if (typeName _ambientClutterCount == "ARRAY") then { + { + _clutterMax = _ambientClutterCount select _forEachIndex; + if ((_x < _clutterMax) && {(_clutterMax != -1)}) exitWith {FAIL}; + } forEach ([_pos, _ambientClutterRadius] call Zen_GetAmbientClutterCount); + } else { + if (([([_pos, _ambientClutterRadius] call Zen_GetAmbientClutterCount)] call Zen_ArrayFindSum) < _ambientClutterCount) then {FAIL}; + }; + }; +}; + +FAIL_CHECK +if (_heightSwitch == 1) then { + if (_heightRadius > 0) then { + _height = getTerrainHeightASL ([_pos, _heightRadius] call Zen_FindNearHeight); + } else { + _height = getTerrainHeightASL _pos; + }; + if (_height > _heightNumber) then {FAIL}; +} else { + if (_heightSwitch == 2) then { + if (_heightRadius > 0) then { + _height = getTerrainHeightASL ([_pos, _heightRadius] call Zen_FindNearHeight); + } else { + _height = getTerrainHeightASL _pos; + }; + if (_height < _heightNumber) then {FAIL}; + }; +}; + +(_failures) diff --git a/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_FindAveragePosition.sqf b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_FindAveragePosition.sqf new file mode 100644 index 0000000..57db941 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_FindAveragePosition.sqf @@ -0,0 +1,25 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_FindAveragePosition", _this] call Zen_StackAdd; +private ["_pos","_xSum","_ySum","_posCount"]; + +if !([_this, [["VOID"], ["VOID"], ["VOID"], ["VOID"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + ([0,0,0]) +}; + +_xSum = 0; +_ySum = 0; + +{ + _pos = [_x] call Zen_ConvertToPosition; + _xSum = _xSum + (_pos select 0); + _ySum = _ySum + (_pos select 1); +} forEach _this; + +_posCount = count _this; + +call Zen_StackRemove; +([(_xSum / _posCount), (_ySum / _posCount), 0]) diff --git a/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_FindBuildingPositions.sqf b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_FindBuildingPositions.sqf new file mode 100644 index 0000000..5244213 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_FindBuildingPositions.sqf @@ -0,0 +1,77 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" + +_Zen_stack_Trace = ["Zen_FindBuildingPositions", _this] call Zen_StackAdd; +private ["_building", "_allowRoof", "_Xdist", "_Ydist", "_points", "_positions", "_i", "_2dPos", "_floorPositions", "_j", "_3dPos", "_wallCount"]; + +if !([_this, [["VOID"], ["BOOL"], ["SCALAR"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + ([[0,0,0]]) +}; + +_building = nearestBuilding ([(_this select 0)] call Zen_ConvertToPosition); +_Xdist = ZEN_STD_OBJ_BBX(_building) / 2; +_Ydist = ZEN_STD_OBJ_BBY(_building) / 2; + +ZEN_STD_Parse_GetArgumentDefault(_allowRoof, 1, false) +ZEN_STD_Parse_GetArgumentDefault(_points, 2, (round (_Xdist * _Ydist / 2)) max 5) +_positions = []; + +for "_i" from 1 to _points do { + _2dPos = [(getPosATL _building), [_Xdist, _Ydist], 90 - (getDir _building), "rectangle", [random 360]] call Zen_FindPositionPoly; + _2dPos set [2, getTerrainHeightASL _2dPos]; + _floorPositions = []; + + for "_j" from 1 to 20 do { + if !(lineIntersects [_2dPos, ZEN_STD_Math_VectTransform(_2dPos, 0, 0, 0.2), objNull, objNull]) exitWith {}; + _2dPos = ZEN_STD_Math_VectTransform(_2dPos, 0, 0, 0.2); + }; + + if (_allowRoof || (lineIntersects [ZEN_STD_Math_VectTransform(_2dPos, 0, 0, 0.1), ZEN_STD_Math_VectTransform(_2dPos, 0, 0, 50), objNull, objNull])) then { + _3dPos =+ _2dPos; + for "_j" from 1 to 200 do { + + if (!(lineIntersects [_3dPos, ZEN_STD_Math_VectTransform(_3dPos, 0, 0, -2), objNull, objNull]) && {!(lineIntersects [_3dPos, ZEN_STD_Math_VectTransform(_3dPos, 0, 0, 50), objNull, objNull])}) exitWith {}; + + if (((lineIntersects [_3dPos, ZEN_STD_Math_VectTransform(_3dPos, 0, 0, -0.2), objNull, objNull]) || (((ASLtoATL _3dPos) select 2) < 0.2)) && {!(lineIntersects [_3dPos, ZEN_STD_Math_VectTransform(_3dPos, 0, 0, 1.6), objNull, objNull])}) then { + if (_allowRoof) then { + _floorPositions pushBack _3dPos; + } else { + if !(lineIntersects [ZEN_STD_Math_VectTransform(_3dPos, 0, 0, 0.5), ZEN_STD_Math_VectTransform(_3dPos, 0, 0, 50), objNull, objNull]) then { + _wallCount = 0; + for "_k" from 0 to 330 step 30 do { + if (lineIntersects [ZEN_STD_Math_VectTransform(_3dPos, 0, 0, 0.1), ZEN_STD_Math_VectTransform(_3dPos, 10 * cos _k, 10 * sin _k, 0.1), objNull, objNull]) then { + _wallCount = _wallCount + 1; + }; + }; + + if (_wallCount > 12) then { + _floorPositions pushBack _3dPos; + }; + } else { + _floorPositions pushBack _3dPos; + }; + }; + }; + + _3dPos = ZEN_STD_Math_VectTransform(_3dPos, 0, 0, 0.2); + }; + }; + + 0 = [_positions, _floorPositions] call Zen_ArrayAppendNested; +}; + +{ + _3dPos =+ _x; + for "_i" from 1 to 20 do { + if (lineIntersects [_3dPos, ZEN_STD_Math_VectTransform(_3dPos, 0, 0, -0.02), objNull, objNull]) exitWith {}; + _3dPos = ZEN_STD_Math_VectTransform(_3dPos, 0, 0, -0.02); + }; + _positions set [_forEachIndex, ASLToATL _3dPos]; +} forEach _positions; + +call Zen_StackRemove; +(_positions) diff --git a/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_FindCenterPosition.sqf b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_FindCenterPosition.sqf new file mode 100644 index 0000000..3cb289a --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_FindCenterPosition.sqf @@ -0,0 +1,47 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf"; +#include "Zen_FrameworkLibrary.sqf"; + +_Zen_stack_Trace = ["Zen_FindCenterPosition", _this] call Zen_StackAdd; +private ["_positions", "_coord", "_xMin", "_xMax", "_xDistArray", "_dist", "_minX", "_step"]; + +if !([_this, [["VOID"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + ([0,0,0]) +}; + +_positions = _this select 0; +_coord = []; + +if (typeName _positions != "ARRAY") exitWith { + ([_positions] call Zen_ConvertToPosition) +}; + +if (count _positions < 2) exitWith { + ([_positions select 0] call Zen_ConvertToPosition) +}; + +{ + _positions set [_forEachIndex, ([_x] call Zen_ConvertToPosition)]; +} forEach _positions; + +{ + _xMin = ([_positions, (compile format ["-1 * (_this select %1)", _x])] call Zen_ArrayFindExtremum) select _x; + _xMax = ([_positions, (compile format ["_this select %1", _x])] call Zen_ArrayFindExtremum) select _x; + _xDistArray = []; + + _step = (_xMax - _xMin) / 200; + for "_x0" from _xMin to _xMax step _step do { + _dist = [_positions, (compile format ["abs((_this select %1) - %2)", _x, _x0])] call Zen_ArrayFindExtremum; + _xDistArray pushBack [_x0, _dist select _x]; + }; + + _minX = [_xDistArray, {-1 * (_this select 1)}] call Zen_ArrayFindExtremum; + _coord set [_x, _minX select 0]; +} forEach [0, 1]; + +call Zen_StackRemove; +(_coord) diff --git a/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_FindGroundPosition.sqf b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_FindGroundPosition.sqf new file mode 100644 index 0000000..cf59ad7 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_FindGroundPosition.sqf @@ -0,0 +1,238 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_FindGroundPosition", _this] call Zen_StackAdd; +private ["_worldSizeXY", "_deleteArea", "_worldMiddle", "_area", "_pos", "_vars"]; + +if !([_this, [["VOID"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + ([0,0,0]) +}; + +// /** +_worldSizeXY = []; +switch (toLower worldName) do { + // Arma 3 worlds + case "altis": { // Altis + _worldSizeXY = [30720,30720]; + }; + case "bornholm": { // Bornholm,Denmark + _worldSizeXY = [20480,20480]; + }; + case "everon2014": { // Everon 2014 + _worldSizeXY = [12800,12800]; + }; + case "anim_helvantis_v2": { // Helvantis + _worldSizeXY = [10240,10240]; + }; + case "imrali": { // Imrali Island + _worldSizeXY = [10240,10240]; + }; + case "iso_st_agnes": { // St.Agnes + _worldSizeXY = [4096,4096]; + }; + case "koplic": { // FSF Koplic + _worldSizeXY = [7680,7680]; + }; + case "pja306": { // FSF Kalu Khan + _worldSizeXY = [20480,20480]; + }; + case "pja307": { // FSF Daryah + _worldSizeXY = [20480,20480]; + }; + case "saru": { // Sarugao + _worldSizeXY = [12800,12800]; + }; + case "sfp_wamako": { // Wamako + _worldSizeXY = [25600,25600]; + }; + case "sfp_sturko": { // Sturko + _worldSizeXY = [10240,10240]; + }; + case "smd_sahrani_a3": { // SMD Sahrani + _worldSizeXY = [20480,20480]; + }; + case "stratis": { // Stratis + _worldSizeXY = [8192,8192]; + }; + case "xcam_prototype": { // Xcam PROTOTYPE + _worldSizeXY = [10240,10240]; + }; + // AiA TP worlds + case "bootcamp_acr": { // Bukovina + _worldSizeXY = [3840,3840]; + }; + case "chernarus": { // Chernarus + _worldSizeXY = [15360,15360]; + }; + case "chernarus_summer": { // Chernarus Summer + _worldSizeXY = [15360,15360]; + }; + case "intro": { // Rahmadi + _worldSizeXY = [5120,5120]; + }; + case "mountains_acr": { // Takistan Mountains + _worldSizeXY = [6400,6400]; + }; + case "porto": { // Porto + _worldSizeXY = [5120,5120]; + }; + case "sara": { // Sahrani + _worldSizeXY = [20480,20480]; + }; + case "saralite": { // Southern Sahrani + _worldSizeXY = [10240,10240]; + }; + case "sara_dbe1": { // United Sahrani + _worldSizeXY = [20480,20480]; + }; + case "shapur_baf": { // Shapur + _worldSizeXY = [2048,2048]; + }; + case "takistan": { // Takistan + _worldSizeXY = [12800,12800]; + }; + case "utes": { // Utes + _worldSizeXY = [5120,5120]; + }; + case "woodland_acr": { // Bystrica + _worldSizeXY = [7680,7680]; + }; + case "zargabad": { // Zargabad + _worldSizeXY = [8192,8192]; + }; + // Arma 2 worlds + case "bmfayshkhabur": { // Fayshkhabur v1.2 + _worldSizeXY = [20480,20480]; + }; + case "caribou": { // Caribou Frontier + _worldSizeXY = [8190,8190]; + }; + case "celle": { // Celle + _worldSizeXY = [10240,10240]; + }; + case "clafghan": { // CLA Clafghan + _worldSizeXY = [20480,20480]; + }; + case "cmr_cicada": { // Cicada + _worldSizeXY = [10240,10240]; + }; + case "cmr_ovaron": { // Ovaron + _worldSizeXY = [10240,10240]; + }; + case "fata": { // PR Fata + _worldSizeXY = [10240,10240]; + }; + case "fdf_isle1_a": { // Podagorsk + _worldSizeXY = [20480,20480]; + }; + case "hellskitchen": { // Summer Sangin 5x5 km + _worldSizeXY = [5120,5120]; + }; + case "hellskitchens": { // Winter Sangin 5x5 km + _worldSizeXY = [5120,5120]; + }; + case "isoladicapraia": { // Capraia + _worldSizeXY = [10240,10240]; + }; + case "japahto": { // Japahto Islands + _worldSizeXY = [5120,5120]; + }; + case "kulima": { // Kulima v2.2 + _worldSizeXY = [5120,5120]; + }; + case "mak_pj7": { // FSF_Varkgard + _worldSizeXY = [20480,20480]; + }; + case "mcn_aliabad": { // Aliabad Region + _worldSizeXY = [5120,5120]; + }; + case "panthera3": { // Island Panthera v3.1 + _worldSizeXY = [10240,10240]; + }; + case "spritzisland": { // Spritz Island 1.1 + _worldSizeXY = [10240,10240]; + }; + case "thirsk": { // Thirsk + _worldSizeXY = [5120,5120]; + }; + case "thirskw": { // Thirsk Winter + _worldSizeXY = [5120,5120]; + }; + case "torabora": { // ToraBora + _worldSizeXY = [10240,10240]; + }; + case "tropica": { // Tropica + _worldSizeXY = [20480,20480]; + }; +}; +//*/ + +if (count _worldSizeXY == 0) then { + _worldSizeXY = [worldSize, worldSize]; +}; + +_deleteArea = false; +if (typeName (_this select 0) == "SCALAR") then { + if (count _worldSizeXY > 0) then { + _worldMiddle = [(_worldSizeXY select 0) / 2, (_worldSizeXY select 1) / 2]; + _area = [_worldMiddle, "", "colorBlack", _worldMiddle, "rectangle", 0, 0] call Zen_SpawnMarker; + _pos = _worldMiddle; + _deleteArea = true; + _this set [0, _area]; + } else { + 0 = ["Zen_FindGroundPosition", "Unable to generate world marker.", _this] call Zen_PrintError; + call Zen_StackPrint; + }; +} else { + _area = _this select 0; + _pos = [_area] call Zen_ConvertToPosition; +}; + +if (typeName _area == "STRING") then { + if !([_area, allMapMarkers] call Zen_ValueIsInArray) then { + 0 = ["Zen_FindGroundPosition", "The given marker does not exist", _this] call Zen_PrintError; + call Zen_StackPrint; + } else { + if ((markerShape _area) == "ICON") then { + _this set [0, ([_area] call Zen_ConvertToPosition)]; + _vars = _this call Zen_GetArguments; + + if (count _vars > 0) then { + _pos = _vars call Zen_CalculatePositionObject; + }; + } else { + _vars = _this call Zen_GetArguments; + + if (count _vars > 0) then { + _pos = _vars call Zen_CalculatePositionMarker; + }; + }; + }; +} else { + _vars = _this call Zen_GetArguments; + + if (count _vars > 0) then { + _pos = _vars call Zen_CalculatePositionObject; + }; +}; + +if (count _worldSizeXY > 0) then { + if ((((_pos select 0) < 0) || ((_pos select 1) < 0)) || {(((_pos select 0) > (_worldSizeXY select 0)) || ((_pos select 1) > (_worldSizeXY select 1)))}) then { + 0 = ["Zen_FindGroundPosition", "Returned position is off the map", _this] call Zen_PrintError; + call Zen_StackPrint; + }; +} else { + if (((_pos select 0) < 0) || ((_pos select 1) < 0)) then { + 0 = ["Zen_FindGroundPosition", "Returned position is off the map", _this] call Zen_PrintError; + call Zen_StackPrint; + }; +}; + +if (_deleteArea) then { + deleteMarker _area; +}; + +call Zen_StackRemove; +(_pos) diff --git a/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_FindNearHeight.sqf b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_FindNearHeight.sqf new file mode 100644 index 0000000..59ac739 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_FindNearHeight.sqf @@ -0,0 +1,49 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_FindNearHeight", _this] call Zen_StackAdd; +private ["_center", "_maxRange", "_highLow", "_highHeight", "_repeatCount", "_distance", "_phi", "_point", "_height", "_highPos"]; + +if !([_this, [["VOID"], ["SCALAR"], ["STRING"]], [], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (_this select 0) +}; + +_center = [(_this select 0)] call Zen_ConvertToPosition; +_maxRange = _this select 1; + +_highLow = "high"; +if (count _this > 2) then { + _highLow = toLower (_this select 2); +}; + +if (_highLow == "high") then { + _highHeight = -500; +} else { + _highHeight = 500; +}; + +_repeatCount = ((2 * _maxRange) min 500) max 100; + +for "_i" from 1 to _repeatCount do { + _distance = random _maxRange; + _phi = random 360; + _point = ([(_center select 0) + (cos _phi) * _distance, (_center select 1) + (sin _phi) * _distance, 0]); + _height = getTerrainHeightASL _point; + + if (_highLow == "high") then { + if (_height > _highHeight) then { + _highPos = _point; + _highHeight = _height; + }; + } else { + if (_height < _highHeight) then { + _highPos = _point; + _highHeight = _height; + }; + }; +}; + +call Zen_StackRemove; +(_highPos) diff --git a/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_FindPositionPoly.sqf b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_FindPositionPoly.sqf new file mode 100644 index 0000000..97e3c61 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_FindPositionPoly.sqf @@ -0,0 +1,46 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" + +_Zen_stack_Trace = ["Zen_FindPositionPoly", _this] call Zen_StackAdd; +private ["_center", "_centerXY", "_XYSizeArray", "_markerDir", "_phiArray", "_rho", "_phi", "_radius", "_polyType"]; + +if !([_this, [["VOID"], ["ARRAY"], ["SCALAR"], ["STRING"], ["ARRAY"]], [[], ["SCALAR"], [], [], ["SCALAR"]], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + ([0,0,0]) +}; + +_center = _this select 0; + +if (typeName _center == "STRING") then { + _phiArray = _this select 1; + _centerXY = getMarkerPos _center; + _XYSizeArray = markerSize _center; + _markerDir = markerDir _center; + _polyType = markerShape _center; +} else { + _centerXY = [(_this select 0)] call Zen_ConvertToPosition; + _XYSizeArray = _this select 1; + _markerDir = _this select 2; + _polyType = _this select 3; + _phiArray = _this select 4; +}; + +if (_polyType == "ICON") exitWith { + call Zen_StackRemove; + ([(_centerXY select 0), (_centerXY select 1), 0]) +}; + +_rho = sqrt random 1; +_phi = ZEN_STD_Array_RandElement(_phiArray); + +if (toLower _polyType == "rectangle") then { + _radius = (((_XYSizeArray select 1) / abs sin (_phi + _markerDir)) min ((_XYSizeArray select 0) / abs cos (_phi + _markerDir))); +} else { + _radius = (((_XYSizeArray select 0)*(_XYSizeArray select 1)) / sqrt ((_XYSizeArray select 1)^2 * (cos (_phi + _markerDir))^2 + (_XYSizeArray select 0)^2 * (sin (_phi + _markerDir))^2)); +}; + +call Zen_StackRemove; +([(_centerXY select 0) + _rho * _radius * cos _phi, (_centerXY select 1) + _rho * _radius * sin _phi, 0]) diff --git a/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_FindRoadDirection.sqf b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_FindRoadDirection.sqf new file mode 100644 index 0000000..74a3217 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_FindRoadDirection.sqf @@ -0,0 +1,75 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_FrameworkLibrary.sqf" +#define BIN_LIMITS 5 + +_Zen_stack_Trace = ["Zen_FindRoadDirection", _this] call Zen_StackAdd; +private ["_center", "_nearRoads", "_initialRoadPos", "_angle", "_angleArray", "_foundBin"]; + +if !([_this, [["VOID"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (0) +}; + +_center = [(_this select 0)] call Zen_ConvertToPosition; + +_nearRoads = _center nearRoads 50; + +if (count _nearRoads < 2) exitWith { + 0 = ["Zen_FindRoadDirection", "Given point does have not a road within 50 meters", _this] call Zen_PrintError; + call Zen_StackRemove; + (0) +}; + +// _nearRoads = [_nearRoads, ZEN_FMW_ZAS_DistNearFar(_center)] call Zen_ArraySort; +_nearRoads = [_nearRoads, (compile format ["_this distance %1", _center]), "hash"] call Zen_ArraySort; + +if (count _nearRoads < 6) then { + _nearRoads = ([_nearRoads, 0] call Zen_ArrayGetIndexedSlice); +} else { + _nearRoads = ([_nearRoads, 0, 5] call Zen_ArrayGetIndexedSlice); +}; + +_angleArray = []; + +{ + _start = _x; + { + if (_start distance _x > 3) then { + 0 = [_angleArray, ([_start, _x] call Zen_FindDirection)] call Zen_ArrayAppend; + }; + } forEach _nearRoads; +} forEach [(_nearRoads select 0), (_nearRoads select (count _nearRoads - 1))]; + +_rangeBins = []; + +{ + if (count _rangeBins == 0) then { + 0 = [_rangeBins, [[_x - BIN_LIMITS, _x + BIN_LIMITS], 1]] call Zen_ArrayAppend; + } else { + _angle = _x; + _foundBin = false; + + { + if ([_angle, (_x select 0)] call Zen_IsAngleInSector) exitWith { + _foundBin = true; + _x set [1, (_x select 1) + 1]; + }; + } forEach _rangeBins; + + if !(_foundBin) then { + 0 = [_rangeBins, [[_x - BIN_LIMITS, _x + BIN_LIMITS], 1]] call Zen_ArrayAppend; + }; + }; +} forEach _angleArray; + +// _rangeBins = [_rangeBins, ZEN_FMW_ZAS_IntInArray(1)] call Zen_ArraySort; +_rangeBins = [_rangeBins, {(_this select 1)}, "hash"] call Zen_ArraySort; +reverse _rangeBins; + +_angle = [(_rangeBins select 0) select 0] call Zen_ArrayFindAverage; + +call Zen_StackRemove; +(_angle) diff --git a/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_FindTerrainGradient.sqf b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_FindTerrainGradient.sqf new file mode 100644 index 0000000..49f62e3 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_FindTerrainGradient.sqf @@ -0,0 +1,33 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" +#include "Zen_FrameworkLibrary.sqf" + +_Zen_stack_Trace = ["Zen_FindTerrainGradient", _this] call Zen_StackAdd; +private ["_center", "_normal", "_theta", "_radius", "_points"]; + +if !([_this, [["VOID"], ["SCALAR"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (0) +}; + +_center = [(_this select 0)] call Zen_ConvertToPosition; +ZEN_STD_Parse_GetArgumentDefault(_radius, 1, -1) + +if (_radius > 0) then { + _points = ((round (_radius^2 / 4)) max 20) min 500; + _theta = 0; + for "_i" from 1 to _points do { + _normal = surfaceNormal (ZEN_FMW_Math_RandomPoint(_center, _radius)); + _theta = _theta + ((_normal select 1) atan2 (_normal select 0)); + }; + _theta = _theta / _points; +} else { + _normal = surfaceNormal _center; + _theta = (_normal select 1) atan2 (_normal select 0); +}; + +call Zen_StackRemove; +(_theta + 180) diff --git a/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_FindTerrainSlope.sqf b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_FindTerrainSlope.sqf new file mode 100644 index 0000000..a727026 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_FindTerrainSlope.sqf @@ -0,0 +1,33 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" +#include "Zen_FrameworkLibrary.sqf" + +_Zen_stack_Trace = ["Zen_FindTerrainSlope", _this] call Zen_StackAdd; +private ["_center", "_normal", "_phi", "_radius", "_points"]; + +if !([_this, [["VOID"], ["SCALAR"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (0) +}; + +_center = [(_this select 0)] call Zen_ConvertToPosition; +ZEN_STD_Parse_GetArgumentDefault(_radius, 1, -1) + +if (_radius > 0) then { + _points = ((round (_radius^2 / 4)) max 20) min 500; + _phi = 0; + for "_i" from 1 to _points do { + _normal = surfaceNormal (ZEN_FMW_Math_RandomPoint(_center, _radius)); + _phi = _phi + acos (_normal select 2); + }; + _phi = _phi / _points; +} else { + _normal = surfaceNormal _center; + _phi = acos (_normal select 2); +}; + +call Zen_StackRemove; +(_phi) diff --git a/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_FindValidDirection.sqf b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_FindValidDirection.sqf new file mode 100644 index 0000000..3bbf354 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_FindValidDirection.sqf @@ -0,0 +1,54 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" + +_Zen_stack_Trace = ["Zen_FindValidDirection", _this] call Zen_StackAdd; +private ["_center", "_avoidPoints", "_avoidDist", "_avoidRanges", "_dirToAvoid", "_distToAvoid", "_distAvoidRatio", "_tangentAngle", "_goodAngles", "_isGood"]; + +if !([_this, [["VOID"], ["VOID"], ["SCALAR"]], [], 3] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + ([]) +}; + +_center = [(_this select 0)] call Zen_ConvertToPosition; +_avoidPoints = _this select 1; +_avoidDist = _this select 2; + +ZEN_STD_Parse_ToArray(_avoidPoints) +if ((typeName (_avoidPoints select 0)) == "SCALAR") then { + _avoidPoints = [_avoidPoints] +}; + +_avoidRanges = []; + +{ + _dirToAvoid = [_center, _x] call Zen_FindDirection; + _distToAvoid = [_center, _x] call Zen_Find2dDistance; + _distAvoidRatio = _avoidDist / _distToAvoid; + + if (_distAvoidRatio > 1) exitWith { + _avoidRanges = [[0, 360]]; + }; + + _tangentAngle = 2 * (asin (_distAvoidRatio / 2)); + _avoidRanges pushBack [_dirToAvoid - _tangentAngle, _dirToAvoid + _tangentAngle]; +} forEach _avoidPoints; + +_goodAngles = []; +for "_i" from 0 to 359 do { + _isGood = true; + { + if ([_i, _x] call Zen_IsAngleInSector) exitWith { + _isGood = false; + }; + } forEach _avoidRanges; + + if (_isGood) then { + _goodAngles pushBack _i; + }; +}; + +call Zen_StackRemove; +(_goodAngles) diff --git a/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_FrameworkLibrary.sqf b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_FrameworkLibrary.sqf new file mode 100644 index 0000000..7af8176 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_FrameworkLibrary.sqf @@ -0,0 +1,191 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#define ZEN_FMW_Array_RemoveIndexes(A, I) \ + { \ + 0 = [A, _x - _forEachIndex] call Zen_ArrayRemoveIndex; \ + } forEach I; + +#define ZEN_FMW_CFG_VehicleWeapons(V) \ + _Zen_WeaponsArray = []; \ + 0 = [_Zen_WeaponsArray, getArray (V >> "weapons")] call Zen_ArrayAppendNested; \ + { \ + 0 = [_Zen_WeaponsArray, getArray (V >> "weapons")] call Zen_ArrayAppendNested; \ + } forEach ("true" configClasses (V >> "turrets")); \ + { \ + _Zen_WeaponsArray = [_Zen_WeaponsArray, ZEN_FMW_ZAF_String(V)] call Zen_ArrayFilterCondition; \ + } forEach ["smoke", "horn", "laser", "flare", "throw", "put"]; + +#define ZEN_FMW_Code_ErrorExitVoid(F, D) \ + 0 = [F, D, _this] call Zen_PrintError; \ + call Zen_StackPrint; \ + call Zen_StackRemove; + +#define ZEN_FMW_Code_ErrorExitValue(F, D, V) \ + 0 = [F, D, _this] call Zen_PrintError; \ + call Zen_StackPrint; \ + call Zen_StackRemove; \ + V + +#define ZEN_FMW_Code_Error(F, D) \ + 0 = [F, D, _this] call Zen_PrintError; \ + call Zen_StackPrint; + +#define ZEN_FMW_Code_GiveLoadoutsOrdered(U, L, S) \ + { \ + 0 = [_x, S, (L select (_forEachIndex % (count L)))] call Zen_GiveLoadout; \ + } forEach ([U] call Zen_ConvertToObjectArray); + +#define ZEN_FMW_Code_Insertion(U, V, S, E) \ + _Zen_Vehicle = [S, V, (if (V isKindOf "Air") then {40} else {0})] call Zen_SpawnVehicle; \ + 0 = [_Zen_Vehicle] call Zen_SpawnVehicleCrew; \ + 0 = [U, _Zen_Vehicle] call Zen_MoveInVehicle; \ + 0 = [_Zen_Vehicle, [E, S], U] spawn Zen_OrderInsertion; + +#define ZEN_FMW_Code_InsertionPatrol(G, T, S, M) \ + _Zen_Vehicle = [S, T] call Zen_SpawnVehicle; \ + 0 = [_Zen_Vehicle] call Zen_SpawnVehicleCrew; \ + 0 = [G, _Zen_Vehicle] call Zen_MoveInVehicle; \ + 0 = [_Zen_Vehicle, [([M] call Zen_FindGroundPosition), _Zen_HeliStart], G, "normal", 40, "fastrope", true] spawn Zen_OrderInsertion; \ + 0 = [G, M] spawn { \ + waitUntil { \ + sleep 5; \ + ([_this select 0] call Zen_AreNotInVehicle) \ + }; \ + 0 = [_this select 0, _this select 1] spawn Zen_OrderInfantryPatrol; \ + }; + +#define ZEN_FMW_Code_SpawnMarker(M, N, S) \ + _Zen_GrpsArray = []; \ + for "_Z" from 1 to N do { \ + _Zen_Pos = [ M ] call Zen_FindGroundPosition; \ + _Zen_Group = [_Zen_Pos, S, "infantry", [4,6]] call Zen_SpawnInfantry; \ + _Zen_GrpsArray pushBack _Zen_Group; \ + }; \ + 0 = [_Zen_GrpsArray, S, ZEN_FMW_Loadout_StdInfantryPreset, false] call Zen_GiveLoadout; \ + 0 = [_Zen_GrpsArray, M] spawn Zen_OrderInfantryPatrol; + +#define ZEN_FMW_Code_SpawnPoint(C, D, N, S) \ + _Zen_GrpsArray = []; \ + for "_Z" from 1 to N do { \ + _Zen_Pos = [C, [0, D]] call Zen_FindGroundPosition; \ + _Zen_Group = [_Zen_Pos, S, "infantry", [4,6]] call Zen_SpawnInfantry; \ + _Zen_GrpsArray pushBack _Zen_Group; \ + }; \ + 0 = [_Zen_GrpsArray, S, ZEN_FMW_Loadout_StdInfantryPreset, false] call Zen_GiveLoadout; \ + 0 = [_Zen_GrpsArray, C, [0, D]] spawn Zen_OrderInfantryPatrol; + +#define ZEN_FMW_Code_SpawnPointBehind(START, END, MIND, MAXD, N, S) \ + _Zen_DirToSpawn = [START, END] call Zen_FindDirection; \ + _Zen_GrpsArray = []; \ + for "_i" from 1 to N do { \ + _Zen_SpawnPos = [END, [MIND, MAXD], 0, 1, 0, [_Zen_DirToSpawn - 90, _Zen_DirToSpawn + 90, "trig"]] call Zen_FindGroundPosition; \ + _Zen_Group = [_Zen_SpawnPos, S, "infantry", [4, 6]] call Zen_SpawnInfantry; \ + _Zen_GrpsArray pushBack _Zen_Group; \ + }; \ + 0 = [_Zen_GrpsArray, S, ZEN_FMW_Loadout_StdInfantryPreset, false] call Zen_GiveLoadout; \ + 0 = [_Zen_GrpsArray, END, [1, MAXD]] spawn Zen_OrderInfantryPatrol; \ + _Zen_DirToSpawn = nil; + +#define ZEN_FMW_Code_WaitDistanceGreater(A, B, D) \ + waitUntil { \ + sleep 2; \ + (([A, B] call Zen_Find2dDistance) > D) \ + }; + +#define ZEN_FMW_Code_WaitDistanceLess(A, B, D) \ + waitUntil { \ + sleep 2; \ + (([A, B] call Zen_Find2dDistance) < D) \ + }; + +#define ZEN_FMW_MP_REAll(F, A, I) \ + A I (missionNamespace getVariable F); \ + if (isMultiplayer) then { \ + Zen_MP_Closure_Packet = [F, A]; \ + publicVariable "Zen_MP_Closure_Packet"; \ + }; + +#define ZEN_FMW_MP_REClient(F, A, I, O) \ + if (local O) then { \ + A I (missionNamespace getVariable F); \ + } else { \ + if (isMultiplayer) then { \ + Zen_MP_Closure_Packet = [F, A]; \ + (owner O) publicVariableClient "Zen_MP_Closure_Packet"; \ + }; \ + }; + +#define ZEN_FMW_MP_RENonDedicated(F, A, I) \ + if (isMultiplayer) then { \ + Zen_MP_Closure_Packet = [F, A]; \ + publicVariable "Zen_MP_Closure_Packet"; \ + }; \ + if !(isDedicated) then { \ + A I (missionNamespace getVariable F); \ + }; + +#define ZEN_FMW_MP_REServerOnly(F, A, I) \ + if (isServer) then { \ + A I (missionNamespace getVariable F); \ + } else { \ + if (isMultiplayer) then { \ + Zen_MP_Closure_Packet = [F, A]; \ + publicVariableServer "Zen_MP_Closure_Packet"; \ + }; \ + }; + +#define ZEN_FMW_Math_DistLess2D(A, B, D) (([A, B] call Zen_Find2dDistance) < D) +#define ZEN_FMW_Math_DistGreater3D(A, B, D) ((([A] call Zen_ConvertToPosition) distance ([B] call Zen_ConvertToPosition)) > D) +#define ZEN_FMW_Math_DistGreater2D(A, B, D) (([A, B] call Zen_Find2dDistance) > D) +#define ZEN_FMW_Math_DistLess3D(A, B, D) ((([A] call Zen_ConvertToPosition) distance ([B] call Zen_ConvertToPosition)) < D) +#define ZEN_FMW_Math_RandomPoint(C, R) ([C, random R, random 360] call Zen_ExtendPosition) +#define ZEN_FMW_Math_RandomPointMin(C, S, E) ([C, S + random abs (E - S), random 360] call Zen_ExtendPosition) + +#define ZEN_FMW_Math_TerrainParallelCart(P, I) \ + _Zen_3dGradPolar = [1, [P] call Zen_FindTerrainGradient, 90 - ([P] call Zen_FindTerrainSlope)]; \ + I = ZEN_STD_Math_VectPolarCart(_Zen_3dGradPolar); + +#define ZEN_FMW_Math_TerrainGradientCart(P, I) \ + _Zen_2dGradCyl = [tan ([P] call Zen_FindTerrainSlope), [P] call Zen_FindTerrainGradient, 0]; \ + I = ZEN_STD_Math_VectCylCart(_Zen_2dGradCyl); + +#define ZEN_FMW_OBJ_DeleteDead(D) \ + { \ + _Zen_DeadUnit = _x; \ + _Zen_Delete = true; \ + { \ + if (isPlayer _x) then { \ + if ((_x distanceSqr _Zen_DeadUnit) < D*D) then { \ + _Zen_Delete = false; \ + }; \ + }; \ + } forEach allUnits; \ + if (_Zen_Delete) then { \ + deleteVehicle _x; \ + }; \ + } forEach allDead; + +#define ZEN_FMW_ZAS_ArrayLength {if (count (_this select 0) < count (_this select 1)) exitWith {-1}; (if (count (_this select 0) == count (_this select 1)) then {0} else {1})} +#define ZEN_FMW_ZAS_AlphaNumeric ({_2a = toArray (_this select 1); _c = 0; {if (_x < (_2a select _forEachIndex)) exitWith {_c = -1}; if (_x > (_2a select _forEachIndex)) exitWith {_c = 1};} forEach (toArray (_this select 0)); (_c)}) +#define ZEN_FMW_ZAS_DistFarNear(C) (compile format ["if ((_this select 0) distance %1 > (_this select 1) distance %1) exitWith {-1}; (if ((_this select 0) distance %1 == (_this select 1) distance %1) then {0} else {1})", C]) +#define ZEN_FMW_ZAS_DistNearFar(C) (compile format ["if ((_this select 0) distance %1 < (_this select 1) distance %1) exitWith {-1}; (if ((_this select 0) distance %1 == (_this select 1) distance %1) then {0} else {1})", C]) +#define ZEN_FMW_ZAS_IntInArray(I) (compile format["if (((_this select 0) select %1) < ((_this select 1) select %1)) exitWith {-1}; (if (((_this select 0) select %1) == ((_this select 1) select %1)) then {0} else {1})", I]) +#define ZEN_FMW_ZAS_StringLength {if (count toArray (_this select 0) < count toArray (_this select 1)) exitWith {-1}; (if (count toArray (_this select 0) == count toArray (_this select 1)) then {0} else {1})} + +#define ZEN_FMW_ZAF_NotString(S) (compile format ["(if (typeName _this == 'STRING') then {!(['%1', _this] call Zen_StringIsInString)} else {false})", S]) +#define ZEN_FMW_ZAF_String(S) (compile format ["(if (typeName _this == 'STRING') then {(['%1', _this] call Zen_StringIsInString)} else {false})", S]) +#define ZEN_FMW_ZAF_Type(T) (compile format ["((toLower typeName _this) == '%1')", (toLower T)]) + +#define ZEN_FMW_ZFGP_Beach 1, [3,50], 0, 0, 0, [2,30], [1,10], 0, [1,10,10] +#define ZEN_FMW_ZFGP_DeepSea 2, 0, 0, 0, 0, 0, 0, 0, [1, -50] +#define ZEN_FMW_ZFGP_Flat 1, 0, 0, 0, 0, 0, [1,10] +#define ZEN_FMW_ZFGP_Forest 1, [3,100], 0, [1,0,20], 0, [1,50], 0, [2,[4, -1, -1], 20] +#define ZEN_FMW_ZFGP_Hill 1, 0, 0, 0, 0, [1,25], [2,20], 0, [2,25,10] +#define ZEN_FMW_ZFGP_LandingZone 1, [1,100], 0, [1,0,20], 0, [1,25], [1,20], [1,[0, 1, -1], 20] +#define ZEN_FMW_ZFGP_NotForest 1, 0, 0, 0, 0, 0, 0, [1,[1, -1, -1], 20] +#define ZEN_FMW_ZFGP_Urban 1, [2, 0], 0, [2,1,25], 0, [1,100], 0, [1,[1,-1,-1], 20] + +#define ZEN_FMW_Loadout_DefaultPreset (["Rifleman", "AT Rifleman", "Assistant AA", "Assistant AT", "Assistant AR", "Team Leader", "Squad Leader", "Grenadier", "Auto Rifleman", "Marksman", "Medic", "AA Specialist", "AT Specialist", "Sapper", "Miner", "EOD Specialist"]) +#define ZEN_FMW_Loadout_StdInfantryPreset (["Rifleman", "Rifleman", "Rifleman", "AT Rifleman", "Assistant AR", "Team Leader", "Squad Leader", "Grenadier", "Grenadier", "Auto Rifleman", "Auto Rifleman", "Marksman", "Medic"]) diff --git a/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_GetAmbientClutterCount.sqf b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_GetAmbientClutterCount.sqf new file mode 100644 index 0000000..a97d283 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_GetAmbientClutterCount.sqf @@ -0,0 +1,35 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_GetAmbientClutterCount", _this] call Zen_StackAdd; +private ["_center", "_radius", "_treeCount", "_rockCount", "_shrubCount"]; + +if !([_this, [["VOID"], ["SCALAR"]], [], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + ([0,0,0]) +}; + +_center = [(_this select 0)] call Zen_ConvertToPosition; +_radius = _this select 1; + +_treeCount = 0; +_rockCount = 0; +_shrubCount = 0; + +{ + if (["t_", (str _x)] call Zen_StringIsInString) then { + _treeCount = _treeCount + 1; + }; + + if (["stone", (str _x)] call Zen_StringIsInString) then { + _rockCount = _rockCount + 1; + }; + + if (["b_", (str _x)] call Zen_StringIsInString) then { + _shrubCount = _shrubCount + 1; + }; +} forEach (nearestObjects [_center, [], _radius]); + +call Zen_StackRemove; +([_treeCount, _rockCount, _shrubCount]) diff --git a/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_GetArguments.sqf b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_GetArguments.sqf new file mode 100644 index 0000000..d9cf82a --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_GetArguments.sqf @@ -0,0 +1,181 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_GetArguments", _this] call Zen_StackAdd; +private ["_water", "_road", "_roadID", "_roadDist", "_area", "_min", "_max", "_Vars", "_maxAngle", "_minAngle", "_angles", "_objSwitch", "_objLimit", "_objDist", "_objects", "_Trig", "_minMax", "_pointAvoid", "_pointAvoidSwitch", "_pointAvoidArray", "_pointAvoidDist", "_nearWater", "_nearWaterSwitch", "_nearWaterDist", "_terrainSlopeSwitch", "_terrainSlopeAngle", "_terrainSlopeRadius", "_terrainSlope", "_ambientClutterSwitch", "_ambientClutterCount", "_ambientClutterRadius", "_ambientClutter", "_height", "_heightSwitch", "_heightNumber", "_heightRadius", "_numbers", "_allBlacklist", "_allWhitelist", "_oneWhitelist"]; + +if !([_this, [["VOID"], ["ARRAY", "SCALAR"], ["ARRAY", "SCALAR"], ["SCALAR"], ["ARRAY", "SCALAR"], ["ARRAY", "SCALAR"], ["ARRAY", "SCALAR"], ["ARRAY", "SCALAR"], ["ARRAY", "SCALAR"], ["ARRAY", "SCALAR"], ["ARRAY", "SCALAR"], ["ARRAY", "SCALAR"], ["ARRAY", "SCALAR"], ["SCALAR"]], [[], ["SCALAR"], ["STRING", "ARRAY"], [], ["SCALAR"], ["SCALAR", "STRING"], ["SCALAR"], ["SCALAR", "ARRAY", "OBJECT", "GROUP", "STRING"], ["SCALAR"], ["SCALAR"], ["SCALAR", "ARRAY"], ["SCALAR"]], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + ([]) +}; + +_area = _this select 0; + +_min = random 1; +_max = 200; +_allBlacklist = []; +_allWhitelist = []; +_oneWhitelist = []; +_water = 1; +_roadID = 0; +_roadDist = 0; +_minAngle = 0; +_maxAngle = 360; +_objSwitch = 0; +_objLimit = 0; +_objDist = 0; +_pointAvoidSwitch = 0; +_pointAvoidArray = 0; +_pointAvoidDist = 0; +_nearWaterSwitch = 0; +_nearWaterDist = 0; +_terrainSlopeSwitch = 0; +_terrainSlopeAngle = 0; +_terrainSlopeRadius = -1; +_ambientClutterSwitch = 0; +_ambientClutterCount = 0; +_ambientClutterRadius = 0; +_heightSwitch = 0; +_heightNumber = 0; +_heightRadius = 0; +_maxFailures = 0; + +if (count _this > 1) then { + _MNDist = _this select 1; + if (typeName _MNDist == "ARRAY") then { + _min = _MNDist select 0; + _max = _MNDist select 1; + if (_min == 0) then {_min = random 1;}; + if (_min < 0) then {_min = abs _min;}; + if (_max == 0) then {_max = 1;}; + if (_max < 0) then {_max = abs _max;}; + if (_min > _max) then { + _minTemp = _min; + _min = _max; + _max = _minTemp; + }; + if (_min == _max) then {_max = _max + random 1;}; + } else { + _min = _MNDist; + if (_min < 0) then {_min = abs _min;}; + }; +}; + +if (count _this > 2) then { + if (((typeName (_this select 2)) == "ARRAY") && {count (_this select 2) > 0}) then { + if ((typeName ((_this select 2) select 0)) == "ARRAY") then { + _allBlacklist = (_this select 2) select 0; + if ((count (_this select 2)) > 1) then { + _allWhitelist = (_this select 2) select 1; + }; + + if ((count (_this select 2)) > 2) then { + _oneWhitelist = (_this select 2) select 2; + }; + } else { + _allBlacklist = _this select 2; + }; + }; +}; + +if (count _this > 3) then { + _water = _this select 3; +}; + +if (count _this > 4) then { + _road = _this select 4; + if (typeName _road == "ARRAY") then { + _roadID = _road select 0; + _roadDist = _road select 1; + }; + if (_roadID == 2) then {_roadDist = 100;}; +}; + +if (count _this > 5) then { + _angles = _this select 5; + if (typeName _angles == "ARRAY") then { + if (count _angles > 2) then { + if (toLower (_angles select 2) == "compass") then { + _minAngle = [(_angles select 0)] call Zen_FindTrigAngle; + _maxAngle = [(_angles select 1)] call Zen_FindTrigAngle; + } else { + _minAngle = _angles select 0; + _maxAngle = _angles select 1; + }; + } else { + _minAngle = [(_angles select 0)] call Zen_FindTrigAngle; + _maxAngle = [(_angles select 1)] call Zen_FindTrigAngle; + }; + }; +}; + +if (count _this > 6) then { + _objects = _this select 6; + if (typeName _objects == "ARRAY") then { + _objSwitch = _objects select 0; + _objLimit = _objects select 1; + _objDist = _objects select 2; + }; +}; + +if (count _this > 7) then { + _pointAvoid = _this select 7; + if (typeName _pointAvoid == "ARRAY") then { + _pointAvoidSwitch = _pointAvoid select 0; + _pointAvoidArray = _pointAvoid select 1; + _pointAvoidDist = _pointAvoid select 2; + }; + + if (typeName _pointAvoidArray != "ARRAY") then { + _pointAvoidArray = [_pointAvoidArray]; + }; +}; + +if (count _this > 8) then { + _nearWater = _this select 8; + if (typeName _nearWater == "ARRAY") then { + _nearWaterSwitch = _nearWater select 0; + _nearWaterDist = _nearWater select 1; + }; +}; + +if (count _this > 9) then { + _terrainSlope = _this select 9; + if (typeName _terrainSlope == "ARRAY") then { + _terrainSlopeSwitch = _terrainSlope select 0; + _terrainSlopeAngle = _terrainSlope select 1; + if (count _terrainSlope > 2) then { + _terrainSlopeRadius = _terrainSlope select 2; + }; + }; +}; + +if (count _this > 10) then { + _ambientClutter = _this select 10; + if (typeName _ambientClutter == "ARRAY") then { + _ambientClutterSwitch = _ambientClutter select 0; + _ambientClutterCount = _ambientClutter select 1; + _ambientClutterRadius = _ambientClutter select 2; + }; +}; + +if (count _this > 11) then { + _height = _this select 11; + if (typeName _height == "ARRAY") then { + _heightSwitch = _height select 0; + _heightNumber = _height select 1; + _heightRadius = _height select 2; + }; +}; + +if (count _this > 12) then { + _maxFailures = _this select 12; +}; + +call Zen_StackRemove; +(if (typeName _area == "STRING") then { + ([_area, _min, 0, _allBlacklist, _allWhitelist, _oneWhitelist, _water, _roadID, _roadDist, _minAngle, _maxAngle,_objSwitch,_objLimit,_objDist,_pointAvoidSwitch,_pointAvoidArray,_pointAvoidDist,_nearWaterSwitch,_nearWaterDist, _terrainSlopeSwitch, _terrainSlopeAngle, _terrainSlopeRadius, _ambientClutterSwitch, _ambientClutterCount, _ambientClutterRadius, _heightSwitch, _heightNumber, _heightRadius, _maxFailures]) +} else { + ([([_area] call Zen_ConvertToPosition), _min, _max, _allBlacklist, _allWhitelist, _oneWhitelist, _water, _roadID, _roadDist, _minAngle, _maxAngle,_objSwitch,_objLimit,_objDist,_pointAvoidSwitch,_pointAvoidArray,_pointAvoidDist,_nearWaterSwitch,_nearWaterDist, _terrainSlopeSwitch, _terrainSlopeAngle, _terrainSlopeRadius, _ambientClutterSwitch, _ambientClutterCount, _ambientClutterRadius, _heightSwitch, _heightNumber, _heightRadius, _maxFailures]) +}) diff --git a/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_IsForestArea.sqf b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_IsForestArea.sqf new file mode 100644 index 0000000..d71fa9d --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_IsForestArea.sqf @@ -0,0 +1,69 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_IsForestArea", _this] call Zen_StackAdd; +private ["_blacklist", "_center", "_XYSizeArray", "_markerShape", "_radiusMax", "_trees", "_treeArea", "_tree", "_isBlacklisted", "_nearestTree", "_totalArea"]; + +if !([_this, [["VOID"], ["ARRAY"], ["SCALAR"], ["STRING"], ["ARRAY"]], [[], ["STRING", "SCALAR"], [], [], ["STRING"]], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_blacklist = []; + +if ((typeName (_this select 0)) == "STRING") then { + _center = getMarkerPos (_this select 0); + _XYSizeArray = getMarkerSize (_this select 0); + _markerShape = markerShape (_this select 0); + if (count _this > 1) then { + _blacklist = _this select 1; + }; +} else { + _center = [(_this select 0)] call Zen_ConvertToPosition; + _XYSizeArray = _this select 1; + _markerShape = _this select 3; + if (count _this > 4) then { + _blacklist = _this select 4; + }; +}; + +_radiusMax = (_XYSizeArray select 0) max (_XYSizeArray select 1); +_trees = []; + +{ + if (["t_", (str _x)] call Zen_StringIsInString) then { + 0 = [_trees, _x] call Zen_ArrayAppend; + }; +} forEach (nearestObjects [_center, [], _radiusMax]); + +if (count _trees < 2) exitWith { + call Zen_StackRemove; + (0) +}; + +_treeArea = 0; + +{ + _tree = _x; + if (([_tree] + _this) call Zen_IsPointInPoly) then { + _isBlacklisted = false; + { + _isBlacklisted = ([_tree, _x]) call Zen_IsPointInPoly; + if (_isBlacklisted) exitWith {}; + } forEach _blacklist; + + if !(_isBlacklisted) then { + _nearestTree = [([_trees, (_forEachIndex - 3) max 0, (_forEachIndex + 3) min (count _trees - 1)] call Zen_ArrayGetIndexedSlice) - [_tree], _tree] call Zen_FindMinDistance; + _treeArea = _treeArea + (((((_tree distance _nearestTree) / 2) min 5)^2) * 4); + }; + }; +} forEach _trees; + +if (_markerShape == "Ellipse") then { + _totalArea = ([_XYSizeArray] call Zen_ArrayFindAverage)^2 * pi; +} else { + _totalArea = 4 * (_XYSizeArray select 0) * (_XYSizeArray select 1); +}; + +call Zen_StackRemove; +((_treeArea / _totalArea) min 1) diff --git a/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_IsHillArea.sqf b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_IsHillArea.sqf new file mode 100644 index 0000000..73f014d --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_IsHillArea.sqf @@ -0,0 +1,73 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#define HIGH_LOW_SEARCH_STEP -10 +#define SLOPE_COEF_MAX 75 +#define GRADIENT_DOWN_COEF 12 +#define GRADIENT_DIR_RANGE 85 + +_Zen_stack_Trace = ["Zen_IsHillArea", _this] call Zen_StackAdd; +private ["_blacklist", "_center", "_XYSizeArray", "_markerShape", "_radiusMin", "_radiusMax", "_lowElevation", "_r", "_highElevation", "_elevationDiff", "_elevationDist", "_resultSlope", "_phi", "_downTotal", "_downCount", "_point", "_normal", "_dir", "_finalResult"]; + +if !([_this, [["VOID"], ["ARRAY"], ["SCALAR"], ["STRING"], ["ARRAY"]], [[], ["STRING", "SCALAR"], [], [], ["STRING"]], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_blacklist = []; + +if ((typeName (_this select 0)) == "STRING") then { + _center = getMarkerPos (_this select 0); + _XYSizeArray = getMarkerSize (_this select 0); + _markerShape = markerShape (_this select 0); + if (count _this > 1) then { + _blacklist = _this select 1; + }; +} else { + _center = [(_this select 0)] call Zen_ConvertToPosition; + _XYSizeArray = _this select 1; + _markerShape = _this select 3; + if (count _this > 4) then { + _blacklist = _this select 4; + }; +}; + +_radiusMin = (_XYSizeArray select 0) min (_XYSizeArray select 1); +_radiusMax = (_XYSizeArray select 0) max (_XYSizeArray select 1); + +for "_r" from _radiusMax to _radiusMin step HIGH_LOW_SEARCH_STEP do { + _lowElevation = [_center, _r, "low"] call Zen_FindNearHeight; + if (([_lowElevation] + _this) call Zen_IsPointInPoly) exitWith {}; +}; + +for "_r" from _radiusMax to _radiusMin step HIGH_LOW_SEARCH_STEP do { + _highElevation = [_center, _r] call Zen_FindNearHeight; + if (([_highElevation] + _this) call Zen_IsPointInPoly) exitWith {}; +}; + +_elevationDiff = (getTerrainHeightASL _highElevation) - (getTerrainHeightASL _lowElevation); +_elevationDist = [_highElevation, _lowElevation] call Zen_Find2dDistance; +_resultSlope = ((atan (_elevationDiff / _elevationDist)) / SLOPE_COEF_MAX); + +_downTotal = 0; +for "_phi" from 0 to 350 step 10 do { + _downCount = 0; + for "_r" from 1 to _radiusMin step (_radiusMin / 10) do { + _point = [_center, _r, _phi] call Zen_ExtendPosition; + _normal = surfaceNormal _point; + _dir = ((_normal select 0) atan2 (_normal select 1)); + + if ([_dir, [_phi - GRADIENT_DIR_RANGE, _phi + GRADIENT_DIR_RANGE]] call Zen_IsAngleInSector) then { + _downCount = _downCount + 1; + }; + }; + + if (_downCount > 4) then { + _downTotal = _downTotal + 1; + }; +}; + +_finalResult = _resultSlope + (((_downTotal - GRADIENT_DOWN_COEF) max 0) / 36); + +call Zen_StackRemove; +((_finalResult) min 1) diff --git a/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_IsIsland.sqf b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_IsIsland.sqf new file mode 100644 index 0000000..bcc1f53 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_IsIsland.sqf @@ -0,0 +1,34 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" +#include "Zen_FrameworkLibrary.sqf" + +_Zen_stack_Trace = ["Zen_IsIsland", _this] call Zen_StackAdd; +private ["_center", "_distance", "_checkAnglesAdd", "_checkAddIndex", "_waterSectors", "_checkPos"]; + +if !([_this, [["VOID"], ["SCALAR"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_center = [(_this select 0)] call Zen_ConvertToPosition; +ZEN_STD_Parse_GetArgumentDefault(_distance, 1, 500) + +_checkAnglesAdd = [0, 2, 4, 6, 8, 10, 8, 6, 4, 2]; +_checkAddIndex = 0; + +_waterSectors = 0; + +for "_phi" from 0 to 350 step 10 do { + for "_r" from 10 to _distance step 10 do { + _checkPos = [_center, _r, _phi + (_checkAnglesAdd select _checkAddIndex), "trig"] call Zen_ExtendPosition; + if (surfaceIsWater _checkPos) exitWith { + _waterSectors = _waterSectors + 1; + }; + }; + _checkAddIndex = (_checkAddIndex + 1) % 10; +}; + +call Zen_StackRemove; +(_waterSectors / 36); diff --git a/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_IsNearTerrain.sqf b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_IsNearTerrain.sqf new file mode 100644 index 0000000..c55cc76 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_IsNearTerrain.sqf @@ -0,0 +1,54 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_IsNearTerrain", _this] call Zen_StackAdd; +private ["_center", "_radius", "_terrainType", "_repeatCount", "_nearLand", "_nearWater", "_distance", "_phi"]; + +if !([_this, [["VOID"], ["SCALAR"], ["STRING"]], [], 3] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (false) +}; + +_center = [(_this select 0)] call Zen_ConvertToPosition; +_radius = _this select 1; +_terrainType = _this select 2; + +_repeatCount = ((2 * _radius) min 500) max 100; + +switch (toLower _terrainType) do { + case "both": { + _nearLand = false; + _nearWater = false; + }; + case "water": { + _nearLand = true; + _nearWater = false; + }; + case "land": { + _nearLand = false; + _nearWater = true; + }; + default { + 0 = ["Zen_IsNearTerrain", "Invalid terrain type given", _this] call Zen_PrintError; + _nearLand = true; + _nearWater = true; + } +}; + +for "_i" from 1 to _repeatCount do { + _distance = random _radius; + _phi = random 360; + if (!(_nearLand) && {!(surfaceIsWater ([(_center select 0) + (cos _phi) * _distance, (_center select 1) + (sin _phi) * _distance, 0]))}) then { + _nearLand = true; + }; + + if (!(_nearWater) && {(surfaceIsWater ([(_center select 0) + (cos _phi) * _distance, (_center select 1) + (sin _phi) * _distance, 0]))}) then { + _nearWater = true; + }; + + if (_nearLand && _nearWater) exitWith {}; +}; + +call Zen_StackRemove; +(_nearLand && _nearWater) diff --git a/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_IsUrbanArea.sqf b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_IsUrbanArea.sqf new file mode 100644 index 0000000..ebc977f --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_IsUrbanArea.sqf @@ -0,0 +1,78 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_IsUrbanArea", _this] call Zen_StackAdd; +private ["_blacklist", "_center", "_XYSizeArray", "_markerShape", "_radiusMax", "_buildings", "_roads", "_urbanArea", "_building", "_isBlacklisted", "_box", "_road", "_totalArea"]; + +if !([_this, [["VOID"], ["ARRAY"], ["SCALAR"], ["STRING"], ["ARRAY"]], [[], ["STRING", "SCALAR"], [], [], ["STRING"]], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_blacklist = []; + +if ((typeName (_this select 0)) == "STRING") then { + _center = getMarkerPos (_this select 0); + _XYSizeArray = getMarkerSize (_this select 0); + _markerShape = markerShape (_this select 0); + if (count _this > 1) then { + _blacklist = _this select 1; + }; +} else { + _center = [(_this select 0)] call Zen_ConvertToPosition; + _XYSizeArray = _this select 1; + _markerShape = _this select 3; + if (count _this > 4) then { + _blacklist = _this select 4; + }; +}; + +_radiusMax = (_XYSizeArray select 0) max (_XYSizeArray select 1); +_buildings = nearestObjects [_center, ["house"], _radiusMax]; +_roads = _center nearRoads _radiusMax; + +if (count _buildings < 1) exitWith { + call Zen_StackRemove; + (0) +}; + +_urbanArea = 0; + +{ + _building = _x; + if (([_building] + _this) call Zen_IsPointInPoly) then { + _isBlacklisted = false; + { + _isBlacklisted = ([_building, _x]) call Zen_IsPointInPoly; + if (_isBlacklisted) exitWith {}; + } forEach _blacklist; + + if !(_isBlacklisted) then { + _box = boundingBoxReal _building; + _urbanArea = _urbanArea + abs 5*(((_box select 0) select 0) * (((_box select 0) select 1))); + }; + }; +} forEach _buildings; + +{ + _road = _x; + if (([_road] + _this) call Zen_IsPointInPoly) then { + _isBlacklisted = false; + { + _isBlacklisted = ([_road, _x]) call Zen_IsPointInPoly; + } forEach _blacklist; + + if !(_isBlacklisted) then { + _urbanArea = _urbanArea + 200; + }; + }; +} forEach _roads; + +if (_markerShape == "Ellipse") then { + _totalArea = ([_XYSizeArray] call Zen_ArrayFindAverage)^2 * pi; +} else { + _totalArea = 4 * (_XYSizeArray select 0) * (_XYSizeArray select 1); +}; + +call Zen_StackRemove; +((_urbanArea / _totalArea) min 1) diff --git a/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_IsWaterArea.sqf b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_IsWaterArea.sqf new file mode 100644 index 0000000..cdd8b5e --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_IsWaterArea.sqf @@ -0,0 +1,70 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" + +_Zen_stack_Trace = ["Zen_IsWaterArea", _this] call Zen_StackAdd; +private ["_blacklist", "_center", "_XYSizeArray", "_polyDir", "_markerShape", "_waterCount", "_notWaterCount", "_repeat", "_quantumAngles", "_pos", "_isBlacklisted", "_adjustment", "_xCoord"]; + +if !([_this, [["VOID"], ["ARRAY"], ["SCALAR"], ["STRING"], ["ARRAY"]], [[], ["STRING", "SCALAR"], [], [], ["STRING"]], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_blacklist = []; + +if ((typeName (_this select 0)) == "STRING") then { + _center = getMarkerPos (_this select 0); + _XYSizeArray = getMarkerSize (_this select 0); + _polyDir = markerDir (_this select 0); + _markerShape = markerShape (_this select 0); + if (count _this > 1) then { + _blacklist = _this select 1; + }; +} else { + _center = [(_this select 0)] call Zen_ConvertToPosition; + _XYSizeArray = _this select 1; + _polyDir = _this select 2; + _markerShape = _this select 3; + if (count _this > 4) then { + _blacklist = _this select 4; + }; +}; + +_waterCount = 0; +_notWaterCount = 0; + +_repeat = ((_XYSizeArray select 0) * (_XYSizeArray select 1) * 2) min 500; +for "_i" from 1 to _repeat do { + _pos = _center; + + if (toUpper _markerShape == "RECTANGLE") then { + _adjustment = [ZEN_STD_Math_RandNegativePositive() * random (_XYSizeArray select 0), ZEN_STD_Math_RandNegativePositive() * random (_XYSizeArray select 1), 0]; + _adjustment = ZEN_STD_Math_VectRotateZ(_adjustment, _polyDir); + _pos = _center vectorAdd _adjustment; + } else { + _xCoord = ZEN_STD_Math_RandNegativePositive() * random (_XYSizeArray select 0); + _adjustment = [_xCoord, ZEN_STD_Math_RandNegativePositive() * (_XYSizeArray select 1) * random ((1 - (_xCoord^2 / (_XYSizeArray select 0)^2))^0.5), 0]; + _adjustment = ZEN_STD_Math_VectRotateZ(_adjustment, _polyDir); + + _pos = _center vectorAdd _adjustment; + }; + + _isBlacklisted = false; + { + _isBlacklisted = ([_pos, _x]) call Zen_IsPointInPoly; + if (_isBlacklisted) exitWith {}; + } forEach _blacklist; + + if !(_isBlacklisted) then { + if (surfaceIsWater _pos) then { + _waterCount = _waterCount + 1; + } else { + _notWaterCount = _notWaterCount + 1; + }; + }; +}; + +call Zen_StackRemove; +if ((_waterCount + _notWaterCount) == 0) exitWith {0}; +(_waterCount / (_waterCount + _notWaterCount)) diff --git a/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_PositionFunctionsCompile.sqf b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_PositionFunctionsCompile.sqf new file mode 100644 index 0000000..dddde9d --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_PositionFunctionsCompile.sqf @@ -0,0 +1,29 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +Zen_CalculatePositionMarker = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_PositionFunctions\Zen_CalculatePositionMarker.sqf"; +Zen_CalculatePositionObject = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_PositionFunctions\Zen_CalculatePositionObject.sqf"; +Zen_CheckPosition = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_PositionFunctions\Zen_CheckPosition.sqf"; +Zen_FindAveragePosition = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_PositionFunctions\Zen_FindAveragePosition.sqf"; +Zen_FindBuildingPositions = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_PositionFunctions\Zen_FindBuildingPositions.sqf"; +Zen_FindCenterPosition = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_PositionFunctions\Zen_FindCenterPosition.sqf"; +Zen_FindGroundPosition = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_PositionFunctions\Zen_FindGroundPosition.sqf"; +Zen_FindNearHeight = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_PositionFunctions\Zen_FindNearHeight.sqf"; +Zen_FindPositionPoly = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_PositionFunctions\Zen_FindPositionPoly.sqf"; +Zen_FindRoadDirection = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_PositionFunctions\Zen_FindRoadDirection.sqf"; +Zen_FindTerrainGradient = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_PositionFunctions\Zen_FindTerrainGradient.sqf"; +Zen_FindTerrainSlope = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_PositionFunctions\Zen_FindTerrainSlope.sqf"; +Zen_FindValidDirection = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_PositionFunctions\Zen_FindValidDirection.sqf"; +Zen_GetAmbientClutterCount = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_PositionFunctions\Zen_GetAmbientClutterCount.sqf"; +Zen_GetArguments = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_PositionFunctions\Zen_GetArguments.sqf"; +Zen_IsForestArea = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_PositionFunctions\Zen_IsForestArea.sqf"; +Zen_IsHillArea = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_PositionFunctions\Zen_IsHillArea.sqf"; +Zen_IsIsland = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_PositionFunctions\Zen_IsIsland.sqf"; +Zen_IsNearTerrain = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_PositionFunctions\Zen_IsNearTerrain.sqf"; +Zen_IsUrbanArea = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_PositionFunctions\Zen_IsUrbanArea.sqf"; +Zen_IsWaterArea = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_PositionFunctions\Zen_IsWaterArea.sqf"; +Zen_PositionObject = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_PositionFunctions\Zen_PositionObject.sqf"; +Zen_QuantizeAngles = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_PositionFunctions\Zen_QuantizeAngles.sqf"; + +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_PositionObject.sqf b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_PositionObject.sqf new file mode 100644 index 0000000..24162be --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_PositionObject.sqf @@ -0,0 +1,16 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +private ["_centerXY", "_radiusMin", "_radiusMax", "_minAngle", "_maxAngle", "_phi", "_distance"]; + +_centerXY = _this select 0; +_radiusMin = _this select 1; +_radiusMax = _this select 2; +_minAngle = _this select 3; +_maxAngle = _this select 4; + +_phi = _minAngle + random (_maxAngle - _minAngle); +_distance = _radiusMin + ((sqrt random 1) * (_radiusMax - _radiusMin)); + +([(_centerXY select 0) + (cos _phi) * _distance, (_centerXY select 1) + (sin _phi) * _distance, 0]) diff --git a/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_QuantizeAngles.sqf b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_QuantizeAngles.sqf new file mode 100644 index 0000000..8a49da0 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_QuantizeAngles.sqf @@ -0,0 +1,61 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" +#define SMALL_STEP 0.18 + +_Zen_stack_Trace = ["Zen_QuantizeAngles", _this] call Zen_StackAdd; +private ["_center", "_polyType", "_XYSizeArray", "_markerDir", "_minAngle", "_maxAngle", "_targetArea", "_phiArray", "_phi", "_radius"]; + +if !([_this, [["ARRAY", "STRING"], ["SCALAR"], ["SCALAR"], ["SCALAR"], ["STRING"]], [["SCALAR"]], 3] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + ([]) +}; + +_center = _this select 0; + +if (typeName _center == "STRING") then { + _minAngle = _this select 1; + _maxAngle = _this select 2; + _XYSizeArray = markerSize _center; + _markerDir = markerDir _center; + _polyType = markerShape _center; +} else { + _XYSizeArray = _this select 0; + _minAngle = _this select 1; + _maxAngle = _this select 2; + _markerDir = _this select 3; + _polyType = _this select 4; +}; + +if (toLower _polyType == "icon") exitWith { + call Zen_StackRemove; + ([0]) +}; + +if (toLower _polyType == "rectangle") then { + _radius = {(((_XYSizeArray select 1) / abs sin (_phi + _markerDir)) min ((_XYSizeArray select 0) / abs cos (_phi + _markerDir)))}; +} else { + _radius = {(((_XYSizeArray select 0)*(_XYSizeArray select 1)) / sqrt ((_XYSizeArray select 1)^2 * (cos (_phi + _markerDir))^2 + (_XYSizeArray select 0)^2 * (sin (_phi + _markerDir))^2))}; +}; + +_targetArea = (_XYSizeArray select 0) * (_XYSizeArray select 1) * SMALL_STEP; + +if (_minAngle == 0 || _minAngle == 360) then { + _minAngle = 0.0001; +}; + +if (_minAngle > _maxAngle) then { + ZEN_STD_Code_SwapVars(_minAngle, _maxAngle) +}; + +_phiArray = [_minAngle]; +for "_phi" from _minAngle to _maxAngle step 0 do { + _step = _targetArea / (call _radius)^2; + _phi = _phi + _step; + _phiArray pushBack _phi; +}; + +call Zen_StackRemove; +(_phiArray) diff --git a/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_StandardLibrary.sqf b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_StandardLibrary.sqf new file mode 100644 index 0000000..4a13a58 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_StandardLibrary.sqf @@ -0,0 +1,155 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#define ZEN_STD_Array_LastElement(A) (A select (count A - 1)) +#define ZEN_STD_Array_RandIndex(A) (floor random count A) +#define ZEN_STD_Array_RandElement(A) (A select (floor random count A)) +#define ZEN_STD_Array_UnorderedRemove(A, I) \ + A set [I, A select (count A - 1)]; \ + A resize (count A - 1); + +#define ZEN_STD_Code_WaitScript(S) \ + waitUntil { \ + sleep 1; \ + (scriptDone S) \ + }; + +#define ZEN_STD_Code_SleepFrames(F) sleep (F / diag_fps); + +#define ZEN_STD_Code_SwapVars(X, Y) \ + _Zen_tempVar = X; \ + X = Y; \ + Y = _Zen_tempVar; \ + _Zen_tempVar = nil; + +#define ZEN_STD_Math_RandNegativePositive() (if (random 1 > 0.5) then {1} else {-1}) + +#define ZEN_STD_Math_MarkerArea(M) \ + (if (toLower markerShape M == "ellipse") then { \ + (((markerSize M) select 0) * ((markerSize M) select 1) * pi) \ + } else { \ + (((markerSize M) select 0) * ((markerSize M) select 1) * 4) \ + }) + +#define ZEN_STD_Math_VectCartCyl(V) ([(vectorMagnitude [(V select 0), (V select 1), 0]), (V select 1) atan2 (V select 0), (V select 2)]) +#define ZEN_STD_Math_VectCartPolar(V) ([(vectorMagnitude V), (V select 1) atan2 (V select 0), acos ((V select 2) / (vectorMagnitude V))]) + +#define ZEN_STD_Math_VectCylCart(V) ([(V select 0) * cos (V select 1), (V select 0) * sin (V select 1), (V select 2)]) +#define ZEN_STD_Math_VectCylPolar(V) ([(vectorMagnitude [(V select 0), 0, (V select 2)]), (V select 1), (V select 0) atan2 (V select 2)]) + +#define ZEN_STD_Math_VectPolarCart(V) ([(V select 0) * cos (V select 1) * sin (V select 2), (V select 0) * sin (V select 1) * sin (V select 2), (V select 0) * cos (V select 2)]) +#define ZEN_STD_Math_VectPolarCyl(V) ([(V select 0) * sin (V select 2), (V select 1), (V select 0) * cos (V select 2)]) + +#define ZEN_STD_Math_VectRotateX(P, A) ([(P select 0), (P select 1) * cos A + (P select 2) * sin A, - (P select 1) * sin A + (P select 2) * cos A]) +#define ZEN_STD_Math_VectRotateY(P, A) ([(P select 0) * cos A - (P select 2) * sin A, (P select 1), (P select 0) * sin A + (P select 2) * cos A]) +#define ZEN_STD_Math_VectRotateZ(P, A) ([(P select 0) * cos A + (P select 1) * sin A, - (P select 0) * sin A + (P select 1) * cos A, (P select 2)]) + +#define ZEN_STD_Math_VectTransform(P, X, Y, Z) ([(P select 0) + X, (P select 1) + Y, (P select 2) + Z]) + +#define ZEN_STD_OBJ_ATLPositionZ(O) ((getPosATL O) select 2) +#define ZEN_STD_OBJ_ASLPositionZ(O) ((getPosASL O) select 2) +#define ZEN_STD_OBJ_BBX(O) abs ((((boundingBoxReal O) select 0) select 0) - (((boundingBoxReal O) select 1) select 0)) +#define ZEN_STD_OBJ_BBY(O) abs ((((boundingBoxReal O) select 0) select 1) - (((boundingBoxReal O) select 1) select 1)) +#define ZEN_STD_OBJ_BBZ(O) abs ((((boundingBoxReal O) select 0) select 2) - (((boundingBoxReal O) select 1) select 2)) + +#define ZEN_STD_OBJ_AnimateDoors(V, C) \ + { \ + V animateDoor [(configName _x), C]; \ + } forEach ("((toLower (getText (_x >> 'source'))) == 'door')" configClasses (configFile >> "CfgVehicles" >> (typeOf V) >> "AnimationSources")); + +#define ZEN_STD_OBJ_CountBuildingPos(V, B) \ + V = 0; \ + for "_i" from 0 to 100 do { \ + if ((B buildingPos V) isEqualTo [0,0,0]) exitWith {}; \ + V = V + 1; \ + }; \ + V = V - 1; + +#define ZEN_STD_OBJ_CountCargoSeats(V) (getNumber (configFile >> "CfgVehicles" >> (typeOf V) >> "transportSoldier")) +#define ZEN_STD_OBJ_DeleteVehCrew(V) \ + { \ + deleteVehicle _x; \ + } forEach (crew V + [V]); + +#define ZEN_STD_OBJ_MakePOW(O) \ + O setCaptive true; \ + O disableAI "move"; \ + O setUnitPos "UP"; \ + removeAllWeapons O; \ + removeBackpack O; \ + removeGoggles O; \ + removeHeadgear O; + +#define ZEN_STD_OBJ_OrderGetOut(U, V) \ + U orderGetIn false; \ + { \ + unassignVehicle _x; \ + _x leaveVehicle V; \ + } forEach U; + +#define ZEN_STD_OBJ_OrderGetIn(U, V) \ + { \ + _x assignAsCargo V; \ + } forEach U; \ + U orderGetIn true; + +#define ZEN_STD_OBJ_OrientAircraft(O, P, S) \ + _Zen_vDirToLZ = ((getPosATL O) vectorFromTo P); \ + _Zen_dirToLZ = ZEN_STD_Math_VectCartCyl(_Zen_vDirToLZ) select 1; \ + sleep (5 / diag_fps); \ + O setDir (90 - _Zen_dirToLZ); \ + O setVelocity [S * cos _Zen_dirToLZ, S * sin _Zen_dirToLZ, 0]; + +#define ZEN_STD_OBJ_ParachuteInsertion(O, P, H) \ + _Zen_dir = random 360; \ + { \ + _x setPosATL (P vectorAdd [50 * _forEachIndex * cos _Zen_dir, 50 * _forEachIndex * sin _Zen_dir, H]); \ + removeBackpackGlobal _x; \ + _x addBackpackGlobal "b_parachute"; \ + } forEach O; + +#define ZEN_STD_OBJ_TransformATL(O, X, Y, Z) O setPosATL [((getPosATL O) select 0) + X, ((getPosATL O) select 1) + Y, ((getPosATL O) select 2) + Z]; + +#define ZEN_STD_Parse_GetArgumentDefault(V, I, D) \ + if (count _this > I) then { \ + V = _this select I; \ + } else { \ + V = D; \ + }; + +#define ZEN_STD_Parse_GetSetArgumentDefault(V, I, D, R) \ + if (count _this > I) then { \ + V = _this select I; \ + } else { \ + V = D; \ + }; \ + _this set [I, R]; + +#define ZEN_STD_Parse_GetSetArgumentOptional(V, I, D, R) \ + if (count _this > I) then { \ + V = _this select I; \ + } else { \ + V = D; \ + _this set [I, R]; \ + }; + +#define ZEN_STD_Parse_GetArgument(V, I) \ + if (count _this > I) then { \ + V = _this select I; \ + }; + +#define ZEN_STD_Parse_ToArray(X) \ + if (typeName X != "ARRAY") then { \ + X = [X]; \ + }; + +#define ZEN_STD_Parse_ToString(X) \ + if (typeName X != "STRING") then { \ + X = str X; \ + }; + +#define ZEN_STD_Parse_ToStringLower(X) \ + if (typeName X != "STRING") then { \ + X = toLower str X; \ + }; diff --git a/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_FrameworkLibrary.sqf b/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_FrameworkLibrary.sqf new file mode 100644 index 0000000..7af8176 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_FrameworkLibrary.sqf @@ -0,0 +1,191 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#define ZEN_FMW_Array_RemoveIndexes(A, I) \ + { \ + 0 = [A, _x - _forEachIndex] call Zen_ArrayRemoveIndex; \ + } forEach I; + +#define ZEN_FMW_CFG_VehicleWeapons(V) \ + _Zen_WeaponsArray = []; \ + 0 = [_Zen_WeaponsArray, getArray (V >> "weapons")] call Zen_ArrayAppendNested; \ + { \ + 0 = [_Zen_WeaponsArray, getArray (V >> "weapons")] call Zen_ArrayAppendNested; \ + } forEach ("true" configClasses (V >> "turrets")); \ + { \ + _Zen_WeaponsArray = [_Zen_WeaponsArray, ZEN_FMW_ZAF_String(V)] call Zen_ArrayFilterCondition; \ + } forEach ["smoke", "horn", "laser", "flare", "throw", "put"]; + +#define ZEN_FMW_Code_ErrorExitVoid(F, D) \ + 0 = [F, D, _this] call Zen_PrintError; \ + call Zen_StackPrint; \ + call Zen_StackRemove; + +#define ZEN_FMW_Code_ErrorExitValue(F, D, V) \ + 0 = [F, D, _this] call Zen_PrintError; \ + call Zen_StackPrint; \ + call Zen_StackRemove; \ + V + +#define ZEN_FMW_Code_Error(F, D) \ + 0 = [F, D, _this] call Zen_PrintError; \ + call Zen_StackPrint; + +#define ZEN_FMW_Code_GiveLoadoutsOrdered(U, L, S) \ + { \ + 0 = [_x, S, (L select (_forEachIndex % (count L)))] call Zen_GiveLoadout; \ + } forEach ([U] call Zen_ConvertToObjectArray); + +#define ZEN_FMW_Code_Insertion(U, V, S, E) \ + _Zen_Vehicle = [S, V, (if (V isKindOf "Air") then {40} else {0})] call Zen_SpawnVehicle; \ + 0 = [_Zen_Vehicle] call Zen_SpawnVehicleCrew; \ + 0 = [U, _Zen_Vehicle] call Zen_MoveInVehicle; \ + 0 = [_Zen_Vehicle, [E, S], U] spawn Zen_OrderInsertion; + +#define ZEN_FMW_Code_InsertionPatrol(G, T, S, M) \ + _Zen_Vehicle = [S, T] call Zen_SpawnVehicle; \ + 0 = [_Zen_Vehicle] call Zen_SpawnVehicleCrew; \ + 0 = [G, _Zen_Vehicle] call Zen_MoveInVehicle; \ + 0 = [_Zen_Vehicle, [([M] call Zen_FindGroundPosition), _Zen_HeliStart], G, "normal", 40, "fastrope", true] spawn Zen_OrderInsertion; \ + 0 = [G, M] spawn { \ + waitUntil { \ + sleep 5; \ + ([_this select 0] call Zen_AreNotInVehicle) \ + }; \ + 0 = [_this select 0, _this select 1] spawn Zen_OrderInfantryPatrol; \ + }; + +#define ZEN_FMW_Code_SpawnMarker(M, N, S) \ + _Zen_GrpsArray = []; \ + for "_Z" from 1 to N do { \ + _Zen_Pos = [ M ] call Zen_FindGroundPosition; \ + _Zen_Group = [_Zen_Pos, S, "infantry", [4,6]] call Zen_SpawnInfantry; \ + _Zen_GrpsArray pushBack _Zen_Group; \ + }; \ + 0 = [_Zen_GrpsArray, S, ZEN_FMW_Loadout_StdInfantryPreset, false] call Zen_GiveLoadout; \ + 0 = [_Zen_GrpsArray, M] spawn Zen_OrderInfantryPatrol; + +#define ZEN_FMW_Code_SpawnPoint(C, D, N, S) \ + _Zen_GrpsArray = []; \ + for "_Z" from 1 to N do { \ + _Zen_Pos = [C, [0, D]] call Zen_FindGroundPosition; \ + _Zen_Group = [_Zen_Pos, S, "infantry", [4,6]] call Zen_SpawnInfantry; \ + _Zen_GrpsArray pushBack _Zen_Group; \ + }; \ + 0 = [_Zen_GrpsArray, S, ZEN_FMW_Loadout_StdInfantryPreset, false] call Zen_GiveLoadout; \ + 0 = [_Zen_GrpsArray, C, [0, D]] spawn Zen_OrderInfantryPatrol; + +#define ZEN_FMW_Code_SpawnPointBehind(START, END, MIND, MAXD, N, S) \ + _Zen_DirToSpawn = [START, END] call Zen_FindDirection; \ + _Zen_GrpsArray = []; \ + for "_i" from 1 to N do { \ + _Zen_SpawnPos = [END, [MIND, MAXD], 0, 1, 0, [_Zen_DirToSpawn - 90, _Zen_DirToSpawn + 90, "trig"]] call Zen_FindGroundPosition; \ + _Zen_Group = [_Zen_SpawnPos, S, "infantry", [4, 6]] call Zen_SpawnInfantry; \ + _Zen_GrpsArray pushBack _Zen_Group; \ + }; \ + 0 = [_Zen_GrpsArray, S, ZEN_FMW_Loadout_StdInfantryPreset, false] call Zen_GiveLoadout; \ + 0 = [_Zen_GrpsArray, END, [1, MAXD]] spawn Zen_OrderInfantryPatrol; \ + _Zen_DirToSpawn = nil; + +#define ZEN_FMW_Code_WaitDistanceGreater(A, B, D) \ + waitUntil { \ + sleep 2; \ + (([A, B] call Zen_Find2dDistance) > D) \ + }; + +#define ZEN_FMW_Code_WaitDistanceLess(A, B, D) \ + waitUntil { \ + sleep 2; \ + (([A, B] call Zen_Find2dDistance) < D) \ + }; + +#define ZEN_FMW_MP_REAll(F, A, I) \ + A I (missionNamespace getVariable F); \ + if (isMultiplayer) then { \ + Zen_MP_Closure_Packet = [F, A]; \ + publicVariable "Zen_MP_Closure_Packet"; \ + }; + +#define ZEN_FMW_MP_REClient(F, A, I, O) \ + if (local O) then { \ + A I (missionNamespace getVariable F); \ + } else { \ + if (isMultiplayer) then { \ + Zen_MP_Closure_Packet = [F, A]; \ + (owner O) publicVariableClient "Zen_MP_Closure_Packet"; \ + }; \ + }; + +#define ZEN_FMW_MP_RENonDedicated(F, A, I) \ + if (isMultiplayer) then { \ + Zen_MP_Closure_Packet = [F, A]; \ + publicVariable "Zen_MP_Closure_Packet"; \ + }; \ + if !(isDedicated) then { \ + A I (missionNamespace getVariable F); \ + }; + +#define ZEN_FMW_MP_REServerOnly(F, A, I) \ + if (isServer) then { \ + A I (missionNamespace getVariable F); \ + } else { \ + if (isMultiplayer) then { \ + Zen_MP_Closure_Packet = [F, A]; \ + publicVariableServer "Zen_MP_Closure_Packet"; \ + }; \ + }; + +#define ZEN_FMW_Math_DistLess2D(A, B, D) (([A, B] call Zen_Find2dDistance) < D) +#define ZEN_FMW_Math_DistGreater3D(A, B, D) ((([A] call Zen_ConvertToPosition) distance ([B] call Zen_ConvertToPosition)) > D) +#define ZEN_FMW_Math_DistGreater2D(A, B, D) (([A, B] call Zen_Find2dDistance) > D) +#define ZEN_FMW_Math_DistLess3D(A, B, D) ((([A] call Zen_ConvertToPosition) distance ([B] call Zen_ConvertToPosition)) < D) +#define ZEN_FMW_Math_RandomPoint(C, R) ([C, random R, random 360] call Zen_ExtendPosition) +#define ZEN_FMW_Math_RandomPointMin(C, S, E) ([C, S + random abs (E - S), random 360] call Zen_ExtendPosition) + +#define ZEN_FMW_Math_TerrainParallelCart(P, I) \ + _Zen_3dGradPolar = [1, [P] call Zen_FindTerrainGradient, 90 - ([P] call Zen_FindTerrainSlope)]; \ + I = ZEN_STD_Math_VectPolarCart(_Zen_3dGradPolar); + +#define ZEN_FMW_Math_TerrainGradientCart(P, I) \ + _Zen_2dGradCyl = [tan ([P] call Zen_FindTerrainSlope), [P] call Zen_FindTerrainGradient, 0]; \ + I = ZEN_STD_Math_VectCylCart(_Zen_2dGradCyl); + +#define ZEN_FMW_OBJ_DeleteDead(D) \ + { \ + _Zen_DeadUnit = _x; \ + _Zen_Delete = true; \ + { \ + if (isPlayer _x) then { \ + if ((_x distanceSqr _Zen_DeadUnit) < D*D) then { \ + _Zen_Delete = false; \ + }; \ + }; \ + } forEach allUnits; \ + if (_Zen_Delete) then { \ + deleteVehicle _x; \ + }; \ + } forEach allDead; + +#define ZEN_FMW_ZAS_ArrayLength {if (count (_this select 0) < count (_this select 1)) exitWith {-1}; (if (count (_this select 0) == count (_this select 1)) then {0} else {1})} +#define ZEN_FMW_ZAS_AlphaNumeric ({_2a = toArray (_this select 1); _c = 0; {if (_x < (_2a select _forEachIndex)) exitWith {_c = -1}; if (_x > (_2a select _forEachIndex)) exitWith {_c = 1};} forEach (toArray (_this select 0)); (_c)}) +#define ZEN_FMW_ZAS_DistFarNear(C) (compile format ["if ((_this select 0) distance %1 > (_this select 1) distance %1) exitWith {-1}; (if ((_this select 0) distance %1 == (_this select 1) distance %1) then {0} else {1})", C]) +#define ZEN_FMW_ZAS_DistNearFar(C) (compile format ["if ((_this select 0) distance %1 < (_this select 1) distance %1) exitWith {-1}; (if ((_this select 0) distance %1 == (_this select 1) distance %1) then {0} else {1})", C]) +#define ZEN_FMW_ZAS_IntInArray(I) (compile format["if (((_this select 0) select %1) < ((_this select 1) select %1)) exitWith {-1}; (if (((_this select 0) select %1) == ((_this select 1) select %1)) then {0} else {1})", I]) +#define ZEN_FMW_ZAS_StringLength {if (count toArray (_this select 0) < count toArray (_this select 1)) exitWith {-1}; (if (count toArray (_this select 0) == count toArray (_this select 1)) then {0} else {1})} + +#define ZEN_FMW_ZAF_NotString(S) (compile format ["(if (typeName _this == 'STRING') then {!(['%1', _this] call Zen_StringIsInString)} else {false})", S]) +#define ZEN_FMW_ZAF_String(S) (compile format ["(if (typeName _this == 'STRING') then {(['%1', _this] call Zen_StringIsInString)} else {false})", S]) +#define ZEN_FMW_ZAF_Type(T) (compile format ["((toLower typeName _this) == '%1')", (toLower T)]) + +#define ZEN_FMW_ZFGP_Beach 1, [3,50], 0, 0, 0, [2,30], [1,10], 0, [1,10,10] +#define ZEN_FMW_ZFGP_DeepSea 2, 0, 0, 0, 0, 0, 0, 0, [1, -50] +#define ZEN_FMW_ZFGP_Flat 1, 0, 0, 0, 0, 0, [1,10] +#define ZEN_FMW_ZFGP_Forest 1, [3,100], 0, [1,0,20], 0, [1,50], 0, [2,[4, -1, -1], 20] +#define ZEN_FMW_ZFGP_Hill 1, 0, 0, 0, 0, [1,25], [2,20], 0, [2,25,10] +#define ZEN_FMW_ZFGP_LandingZone 1, [1,100], 0, [1,0,20], 0, [1,25], [1,20], [1,[0, 1, -1], 20] +#define ZEN_FMW_ZFGP_NotForest 1, 0, 0, 0, 0, 0, 0, [1,[1, -1, -1], 20] +#define ZEN_FMW_ZFGP_Urban 1, [2, 0], 0, [2,1,25], 0, [1,100], 0, [1,[1,-1,-1], 20] + +#define ZEN_FMW_Loadout_DefaultPreset (["Rifleman", "AT Rifleman", "Assistant AA", "Assistant AT", "Assistant AR", "Team Leader", "Squad Leader", "Grenadier", "Auto Rifleman", "Marksman", "Medic", "AA Specialist", "AT Specialist", "Sapper", "Miner", "EOD Specialist"]) +#define ZEN_FMW_Loadout_StdInfantryPreset (["Rifleman", "Rifleman", "Rifleman", "AT Rifleman", "Assistant AR", "Team Leader", "Squad Leader", "Grenadier", "Grenadier", "Auto Rifleman", "Auto Rifleman", "Marksman", "Medic"]) diff --git a/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnAircraft.sqf b/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnAircraft.sqf new file mode 100644 index 0000000..aa86624 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnAircraft.sqf @@ -0,0 +1,60 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_FrameworkLibrary.sqf" +#include "Zen_StandardLibrary.sqf" + +_Zen_stack_Trace = ["Zen_SpawnAircraft", _this] call Zen_StackAdd; +private ["_spawnPos", "_sideOrClass", "_aircraftClass", "_aircraft", "_dir", "_height", "_faction", "_DLC"]; + +if !([_this, [["VOID"], ["SIDE", "ARRAY", "STRING"], ["SCALAR"], ["SCALAR"], ["STRING", "ARRAY"]], [[], ["STRING"]], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (objNull) +}; + +_spawnPos = [(_this select 0)] call Zen_ConvertToPosition; +_sideOrClass = _this select 1; + +ZEN_STD_Parse_GetArgumentDefault(_height, 2, 300) +ZEN_STD_Parse_GetArgumentDefault(_dir, 3, 0) +ZEN_STD_Parse_GetArgumentDefault(_faction, 4, "All") +ZEN_STD_Parse_GetArgumentDefault(_DLC, 5, "") + +if (typeName _sideOrClass != "SIDE") then { + _aircraftClass = _sideOrClass; + if (typeName _aircraftClass == "ARRAY") then { + _aircraftClass = [_aircraftClass] call Zen_ArrayGetRandom; + }; +} else { + switch (_sideOrClass) do { + case west: { + _aircraftClass = [([["air", "autonomous"], _sideOrClass, [(localize "str_Zen_UAV"), (localize "str_Zen_Jet")], _faction, "All", "Both", _DLC] call Zen_ConfigGetVehicleClasses)] call Zen_ArrayGetRandom; + }; + case east: { + _aircraftClass = [([["air", "autonomous"], _sideOrClass, [(localize "str_Zen_UAV"), (localize "str_Zen_Jet")], _faction, "All", "Both", _DLC] call Zen_ConfigGetVehicleClasses)] call Zen_ArrayGetRandom; + }; + case resistance: { + _aircraftClass = [([["air", "autonomous"], _sideOrClass, [(localize "str_Zen_UAV"), (localize "str_Zen_Jet")], _faction, "All", "Both", _DLC] call Zen_ConfigGetVehicleClasses)] call Zen_ArrayGetRandom; + }; + case civilian: { + // 0 = ["Zen_SpawnAircraft", "Civilian side has no planes or UAV's", _this] call Zen_PrintError; + // call Zen_StackPrint; + _aircraftClass = [([["air", "autonomous"], _sideOrClass, [(localize "str_Zen_UAV"), (localize "str_Zen_Jet")], _faction, "All", "Both", _DLC] call Zen_ConfigGetVehicleClasses)] call Zen_ArrayGetRandom;}; + default { + _aircraftClass = ""; + }; + }; +}; + +if (_aircraftClass == "") exitWith { + 0 = ["Zen_SpawnAircraft", "Given classname or side is invalid", _this] call Zen_PrintError; + call Zen_StackRemove; + (objNull) +}; + +_aircraft = [_spawnPos, _aircraftClass, _height, _dir, true] call Zen_SpawnVehicle; +0 = [_aircraft] call Zen_SpawnVehicleCrew; + +call Zen_StackRemove; +(_aircraft) diff --git a/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnAmbientVehicles.sqf b/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnAmbientVehicles.sqf new file mode 100644 index 0000000..d8a8404 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnAmbientVehicles.sqf @@ -0,0 +1,52 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_FrameworkLibrary.sqf" +#include "Zen_StandardLibrary.sqf" + +_Zen_stack_Trace = ["Zen_SpawnAmbientVehicles", _this] call Zen_StackAdd; +private ["_center", "_distance", "_numCarsRange", "_townMarkers", "_carPos", "_carType", "_car", "_carClasses", "_carsMin", "_carsMax", "_numCars", "_carObjs", "_roadDir", "_DLC"]; + +if !([_this, [["VOID"], ["SCALAR"], ["ARRAY", "SCALAR"]], [[], [], ["SCALAR"]], 3] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + ([objNull]) +}; + +_center = [(_this select 0)] call Zen_ConvertToPosition; +_distance = _this select 1; +_numCarsRange = _this select 2; + +ZEN_STD_Parse_GetArgumentDefault(_DLC, 3, "") + +_townMarkers = [["NameVillage", "NameCity", "NameCityCapital"]] call Zen_ConfigGetLocations; + +_townMarkers = [_townMarkers, (compile format ["(getMarkerPos _this) distance %1", _center]), "hash"] call Zen_ArraySort; + +if (typeName _numCarsRange != "ARRAY") then { + _numCarsRange = [_numCarsRange, _numCarsRange]; +}; + +_carsMin = _numCarsRange select 0; +_carsMax = _numCarsRange select 1; + +_carClasses = ["car", civilian, "all", "all", "all", "both", _DLC] call Zen_ConfigGetVehicleClasses; +_carObjs = []; + +{ + if (([_x, _center] call Zen_Find2dDistance) > _distance) exitWith {}; + _numCars = [_carsMin, _carsMax, true] call Zen_FindInRange; + for "_i" from 1 to _numCars do { + + _carPos = [_x, 0, 0, 1, [1, 500]] call Zen_FindGroundPosition; + _carType = [_carClasses] call Zen_ArrayGetRandom; + + _roadDir = [_carPos] call Zen_FindRoadDirection; + + _car = [[_carPos, 4, _roadDir + 90, "trig"] call Zen_ExtendPosition, _carType, 0, 90 - _roadDir] call Zen_SpawnVehicle; + _carObjs pushBack _car; + }; +} forEach _townMarkers; + +call Zen_StackRemove; +(_carObjs) diff --git a/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnAmmoBox.sqf b/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnAmmoBox.sqf new file mode 100644 index 0000000..54110f8 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnAmmoBox.sqf @@ -0,0 +1,54 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_SpawnAmmoBox", _this] call Zen_StackAdd; +private ["_spawnPos", "_side", "_boxClass", "_obj", "_backpackClass", "_addObjKit"]; + +if !([_this, [["VOID"], ["SIDE"], ["BOOL"]], [], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (objNull) +}; + +_spawnPos = [(_this select 0)] call Zen_ConvertToPosition; +_side = _this select 1; + +_addObjKit = false; +if (count _this > 2) then { + _addObjKit = _this select 2; +}; + +_boxClass = [(["ammo", _side] call Zen_ConfigGetVehicleClasses)] call Zen_ArrayGetRandom; + +switch (_side) do { + case west: { + _backpackClass = "B_AssaultPack_mcamo"; + }; + case east: { + _backpackClass = "B_FieldPack_ocamo"; + }; + case resistance: { + _backpackClass = "B_FieldPack_oli"; + }; + default { + 0 = ["Zen_SpawnAmmoBox", "Invalid side given", _this] call Zen_PrintError; + call Zen_StackPrint; + _backpackClass = ""; + }; +}; + +if (_backpackClass == "") exitWith { + call Zen_StackRemove; + (objNull) +}; + +_obj = [_spawnPos, _boxClass] call Zen_SpawnVehicle; + +if (_addObjKit) then { + _obj addMagazineCargoGlobal ["DemoCharge_Remote_Mag", 2]; + _obj addMagazineCargoGlobal ["SatchelCharge_Remote_Mag", 1]; + _obj addBackpackCargoGlobal [_backpackClass, 1]; +}; + +call Zen_StackRemove; +(_obj) diff --git a/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnBoat.sqf b/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnBoat.sqf new file mode 100644 index 0000000..9fb7de3 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnBoat.sqf @@ -0,0 +1,58 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_FrameworkLibrary.sqf" +#include "Zen_StandardLibrary.sqf" + +_Zen_stack_Trace = ["Zen_SpawnBoat", _this] call Zen_StackAdd; +private ["_spawnPos", "_sideOrClass", "_vehClass", "_dir", "_faction", "_veh", "_DLC"]; + +if !([_this, [["VOID"], ["SIDE", "ARRAY", "STRING"], ["SCALAR"], ["STRING", "ARRAY"]], [[], ["STRING"]], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (objNull) +}; + +_spawnPos = [(_this select 0)] call Zen_ConvertToPosition; +_sideOrClass = _this select 1; + +ZEN_STD_Parse_GetArgumentDefault(_dir, 2, 0) +ZEN_STD_Parse_GetArgumentDefault(_faction, 3, "All") +ZEN_STD_Parse_GetArgumentDefault(_DLC, 4, "") + +if (typeName _sideOrClass != "SIDE") then { + _vehClass = _sideOrClass; + if (typeName _vehClass == "ARRAY") then { + _vehClass = [_vehClass] call Zen_ArrayGetRandom; + }; +} else { + switch (_sideOrClass) do { + case west: { + _vehClass = [(["ship", _sideOrClass, "All", _faction, "All", "Both", _DLC] call Zen_ConfigGetVehicleClasses)] call Zen_ArrayGetRandom; + }; + case east: { + _vehClass = [(["ship", _sideOrClass, "All", _faction, "All", "Both", _DLC] call Zen_ConfigGetVehicleClasses)] call Zen_ArrayGetRandom; + }; + case resistance: { + _vehClass = [(["ship", _sideOrClass, "All", _faction, "All", "Both", _DLC] call Zen_ConfigGetVehicleClasses)] call Zen_ArrayGetRandom; + }; + case civilian: { + _vehClass = [(["ship", _sideOrClass, "All", _faction, "All", "Both", _DLC] call Zen_ConfigGetVehicleClasses)] call Zen_ArrayGetRandom; + }; + default { + _vehClass = ""; + }; + }; +}; + +if (_vehClass == "") exitWith { + 0 = ["Zen_SpawnBoat", "Given classname or side is invalid", _this] call Zen_PrintError; + call Zen_StackRemove; + (objNull) +}; + +_veh = [_spawnPos, _vehClass, 0, _dir] call Zen_SpawnVehicle; +0 = [_veh] call Zen_SpawnVehicleCrew; + +call Zen_StackRemove; +(_veh) diff --git a/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnCamp.sqf b/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnCamp.sqf new file mode 100644 index 0000000..1704fe1 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnCamp.sqf @@ -0,0 +1,37 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_SpawnCamp", _this] call Zen_StackAdd; +private ["_spawnPos", "_center", "_weaponHolder", "_weapon", "_objectsArray"]; + +if !([_this, [["VOID"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_center = [(_this select 0)] call Zen_ConvertToPosition; + +0 = [_center, "Fireplace_burning_F", 0, (random 360), true] call Zen_SpawnVehicle; + +_objectsArray = []; + +{ + _spawnPos = [_center, (1 + random 3), (random 360)] call Zen_ExtendPosition; + _object = createVehicle [_x, _spawnPos, [], 2, "NONE"]; + _objectsArray pushBack _object; +} forEach ["Land_WoodPile_f", "Land_TentDome_F", "Land_TentDome_F", "Land_Bench_F", "Land_Bench_F", "Land_CampingTable_F"]; + +0 = [_objectsArray, (random 360)] call Zen_RotateAsSet; + +{ + if (["table", (typeOf _x)] call Zen_StringIsInString) then { + _weaponHolder = ([["GroundWeaponHolder"], [_x]] call Zen_SpawnItemsOnTable) select 0; + _weaponHolder enableSimulation true; + _weapon = [["arifle_MX_F", "arifle_TRG21_F", "arifle_Katiba_F", "arifle_Mk20_plain_F", "srifle_EBR_F", "LMG_Zafir_F", "LMG_Mk200_F", "srifle_LRR_F", "SMG_01_F", "SMG_02_F", "hgun_ACPC2_F", "srifle_DMR_01_F", "srifle_GM6_F", "hgun_PDW2000_F", "hgun_Pistol_heavy_01_F", "hgun_Pistol_heavy_02_F"]] call Zen_ArrayGetRandom; + _weaponHolder addMagazineCargoGlobal [((getArray (configFile >> "CfgWeapons" >> _weapon >> "magazines")) select 0), 5]; + _weaponHolder addWeaponCargoGlobal [_weapon, 1]; + }; +} forEach _objectsArray; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnConvoy.sqf b/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnConvoy.sqf new file mode 100644 index 0000000..1b83648 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnConvoy.sqf @@ -0,0 +1,88 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" + +_Zen_stack_Trace = ["Zen_SpawnConvoy", _this] call Zen_StackAdd; +private ["_startPos", "_sideOrTypes", "_faction", "_vehicleTypes", "_vehicles", "_side", "_leadVehicleType", "_supplyVehicleType", "_troopVehicleType", "_roadDir", "_troopVehicle", "_troopCargo", "_troopGroup", "_leadVehicle", "_vehicleGroup"]; + +if !([_this, [["VOID"], ["SIDE", "ARRAY", "STRING"], ["STRING", "ARRAY"]], [[], ["STRING"]], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + ([objNull]) +}; + +_startPos = [(_this select 0)] call Zen_ConvertToPosition; +_sideOrTypes = _this select 1; + +ZEN_STD_Parse_GetArgumentDefault(_faction, 2, "All") + +_vehicleTypes = []; +_vehicles = []; + +if (typeName _sideOrTypes == "SIDE") then { + _side = _sideOrTypes; + if ((count _this < 3) && {_sideOrTypes == west}) then { + _faction = "blu_f"; + }; + + _leadVehicleType = [(["car", _sideOrTypes, "all", _faction, "All", "Armed"] call Zen_ConfigGetVehicleClasses)] call Zen_ArrayGetRandom; + _supplyVehicleType = [(["support", _sideOrTypes, "all", _faction] call Zen_ConfigGetVehicleClasses)] call Zen_ArrayGetRandom; + _troopVehicleType = [(["car", _sideOrTypes, "all", _faction, "All", "Unarmed"] call Zen_ConfigGetVehicleClasses)] call Zen_ArrayGetRandom; + + _vehicleTypes = [_leadVehicleType, _supplyVehicleType, _troopVehicleType]; + if (({typeName _x == "ARRAY"} count _vehicleTypes) > 0) then { + _leadVehicleType = ""; + }; + + if (_leadVehicleType == "") exitWith { + 0 = ["Zen_SpawnConvoy", "Invalid side and faction combination given", _this] call Zen_PrintError; + call Zen_StackPrint; + call Zen_StackRemove; + ([objNull]) + }; +} else { + ZEN_STD_Parse_ToArray(_sideOrTypes); + _side = [(_sideOrTypes select 0)] call Zen_GetSide; + + _vehicleTypes =+ _sideOrTypes; + if (count _vehicleTypes == 0) exitWith { + 0 = ["Zen_SpawnConvoy", "No vehicle classnames given", _this] call Zen_PrintError; + call Zen_StackPrint; + call Zen_StackRemove; + ([objNull]) + }; +}; + +_roadDir = random 360; +if ((count (_startPos nearRoads 50)) > 1) then { + _roadDir = [_startPos] call Zen_FindRoadDirection; +}; + +{ + _vehicles pushBack ([([_startPos, _forEachIndex * -15 + 1, _roadDir, "trig"] call Zen_ExtendPosition), _x, 90 - _roadDir] call Zen_SpawnGroundVehicle); +} forEach _vehicleTypes; + +_troopVehicle = ZEN_STD_Array_LastElement(_vehicles); +_troopCargo = ZEN_STD_OBJ_CountCargoSeats(_troopVehicle) + (count ([_troopVehicle, "cargoFFV"] call Zen_GetTurretPaths)); + +if (_troopCargo > 0) then { + _troopGroup = [_startPos, _side, "infantry", [1, _troopCargo]] call Zen_SpawnInfantry; + 0 = [_troopGroup, _troopVehicle, "cargo"] call Zen_MoveInVehicle; +}; + +_leadVehicle = (_vehicles select 0); +_vehicleGroup = group driver _leadVehicle; + +{ + if (_forEachIndex > 0) then { + (crew _x) join _vehicleGroup; + }; + _x setUnloadInCombat [true, false]; +} forEach _vehicles; + +_vehicleGroup setFormation "FILE"; +_vehicleGroup setFormDir (getDir _leadVehicle); + +call Zen_StackRemove; +(_vehicles) diff --git a/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnFortification.sqf b/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnFortification.sqf new file mode 100644 index 0000000..9b29536 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnFortification.sqf @@ -0,0 +1,50 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" +#define FORT_CLASSES ["Land_BagBunker_Small_F", "Land_BagFence_Long_F", "Land_BagFence_Long_F", "Land_BagFence_Long_F", "Land_BagFence_Long_F", "Land_CncBarrierMedium_F", "Land_CncBarrierMedium_F", "Land_HBarrier_3_F", "Land_HBarrier_3_F", "Land_HBarrier_3_F"] + +_Zen_stack_Trace = ["Zen_SpawnFortification", _this] call Zen_StackAdd; +private ["_center", "_distance", "_i", "_hasMG", "_class", "_distanceError", "_spawnPos", "_direction", "_object", "_mgSpawnPos", "_size2d", "_phi", "_staticClass", "_staticWeapon"]; + +if !([_this, [["VOID"], ["SCALAR"], ["STRING"]], [], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_center = [(_this select 0)] call Zen_ConvertToPosition; +_distance = _this select 1; + +ZEN_STD_Parse_GetArgumentDefault(_staticClass, 2, "B_HMG_01_high_F") + +_i = 0; +_hasMG = false; +_staticWeapon = objNull; + +while {_i < 352} do { + _class = [FORT_CLASSES] call Zen_ArrayGetRandom; + _distanceError = [-2, 2] call Zen_FindInRange; + _spawnPos = [_center, _distance + _distanceError, _i] call Zen_ExtendPosition; + + _direction = [_center, _spawnPos] call Zen_FindDirection; + _direction = [_direction] call Zen_FindTrigAngle; + + if ([_class, "Land_BagBunker_Small_F"] call Zen_ValuesAreEqual) then { + _direction = 180 + _direction; + }; + + _object = [_spawnPos, _class, 0, _direction, true] call Zen_SpawnVehicle; + + if (!_hasMG && [_class, "Land_BagFence_Long_F"] call Zen_ValuesAreEqual) then { + _hasMG = true; + _mgSpawnPos = [_object, 1.75, (_direction + 180), "compass"] call Zen_ExtendPosition; + _staticWeapon = [_mgSpawnPos, _staticClass, 0, _direction, true] call Zen_SpawnVehicle; + }; + + _size2d = [ZEN_STD_OBJ_BBX(_object), ZEN_STD_OBJ_BBY(_object)] distance [0,0]; + _phi = atan (_size2d / 2 / _distance); + _i = _i + 2.5*_phi + 5; +}; + +call Zen_StackRemove; +(_staticWeapon) diff --git a/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnGroundVehicle.sqf b/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnGroundVehicle.sqf new file mode 100644 index 0000000..548ad89 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnGroundVehicle.sqf @@ -0,0 +1,60 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_FrameworkLibrary.sqf" +#include "Zen_StandardLibrary.sqf" + +_Zen_stack_Trace = ["Zen_SpawnGroundVehicle", _this] call Zen_StackAdd; +private ["_spawnPos", "_sideOrClass", "_vehClass", "_veh", "_dir", "_faction", "_DLC"]; + +if !([_this, [["VOID"], ["SIDE", "ARRAY", "STRING"], ["SCALAR"], ["STRING", "ARRAY"]], [[], ["STRING"]], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (objNull) +}; + +_spawnPos = [(_this select 0)] call Zen_ConvertToPosition; +_sideOrClass = _this select 1; + +ZEN_STD_Parse_GetArgumentDefault(_dir, 2, 0) +ZEN_STD_Parse_GetArgumentDefault(_faction, 3, "All") +ZEN_STD_Parse_GetArgumentDefault(_DLC, 4, "") + +if (typeName _sideOrClass != "SIDE") then { + _vehClass = _sideOrClass; + if (typeName _vehClass == "ARRAY") then { + _vehClass = [_vehClass] call Zen_ArrayGetRandom; + }; +} else { + switch (_sideOrClass) do { + case west: { + _vehClass = [([["car", "armored"], _sideOrClass, "All", _faction, "All", "Both", _DLC] call Zen_ConfigGetVehicleClasses)] call Zen_ArrayGetRandom; + }; + case east: { + _vehClass = [([["car", "armored"], _sideOrClass, "All", _faction, "All", "Both", _DLC] call Zen_ConfigGetVehicleClasses)] call Zen_ArrayGetRandom; + }; + case resistance: { + _vehClass = [([["car", "armored"], _sideOrClass, "All", _faction, "All", "Both", _DLC] call Zen_ConfigGetVehicleClasses)] call Zen_ArrayGetRandom; + }; + case civilian: { + _vehClass = [([["car", "armored"], _sideOrClass, "All", _faction, "All", "Both", _DLC] call Zen_ConfigGetVehicleClasses)] call Zen_ArrayGetRandom; + }; + default { + _vehClass = ""; + }; + }; +}; + +if (_vehClass == "") exitWith { + 0 = ["Zen_SpawnGroundVehicle", "Given classname or side is invalid", _this] call Zen_PrintError; + call Zen_StackRemove; + (objNull) +}; + +_veh = [_spawnPos, _vehClass, 0, _dir] call Zen_SpawnVehicle; +0 = [_veh] call Zen_SpawnVehicleCrew; + +_veh allowCrewInImmobile true; + +call Zen_StackRemove; +(_veh) diff --git a/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnGroup.sqf b/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnGroup.sqf new file mode 100644 index 0000000..b360d06 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnGroup.sqf @@ -0,0 +1,51 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_SpawnGroup", _this] call Zen_StackAdd; +private ["_side", "_pos", "_classes", "_group"]; + +if !([_this, [["VOID"], ["ARRAY", "STRING"]], [[], ["STRING"]], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (grpNull) +}; + +_pos = [(_this select 0)] call Zen_ConvertToPosition; +_classes = _this select 1; + +if (typeName _classes != "ARRAY") then { + _classes = [_classes]; +}; + +_side = [(_classes select 0)] call Zen_GetSide; +_group = createGroup _side; + +{ + if (_x isKindOf "Man") then { + 0 = _group createUnit [_x, _pos, [], 0, "NONE"]; + } else { + 0 = ["Zen_SpawnGroup", format ["Non-human classname given at %1, can only spawn soldiers", _forEachIndex], _this] call Zen_PrintError; + call Zen_StackPrint; + }; +} forEach _classes; + +if ((count units _group == 0) || (isNull _group)) exitWith { + deleteGroup _group; + 0 = ["Zen_SpawnGroup", "No units could be spawned, group is empty and null", _this] call Zen_PrintError; + call Zen_StackPrint; + call Zen_StackRemove; + (grpNull) +}; + +if (surfaceIsWater _pos) then { + { + _x setPosASL _pos; + } forEach (units _group); +} else { + { + _x setPosATL _pos; + } forEach (units _group); +}; + +call Zen_StackRemove; +(_group) diff --git a/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnHelicopter.sqf b/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnHelicopter.sqf new file mode 100644 index 0000000..5451d3f --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnHelicopter.sqf @@ -0,0 +1,60 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_FrameworkLibrary.sqf" +#include "Zen_StandardLibrary.sqf" + +_Zen_stack_Trace = ["Zen_SpawnHelicopter", _this] call Zen_StackAdd; +private ["_spawnPos", "_sideOrClass", "_heliClass", "_heli", "_dir", "_height", "_faction", "_DLC"]; + +if !([_this, [["VOID"], ["SIDE", "ARRAY", "STRING"], ["SCALAR"], ["SCALAR"], ["STRING", "ARRAY"]], [[], ["STRING"]], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (objNull) +}; + +_spawnPos = [(_this select 0)] call Zen_ConvertToPosition; +_sideOrClass = _this select 1; + +ZEN_STD_Parse_GetArgumentDefault(_height, 2, 40) +ZEN_STD_Parse_GetArgumentDefault(_dir, 3, 0) +ZEN_STD_Parse_GetArgumentDefault(_faction, 4, "All") +ZEN_STD_Parse_GetArgumentDefault(_DLC, 5, "") + +if (typeName _sideOrClass != "SIDE") then { + _heliClass = _sideOrClass; + if (typeName _heliClass == "ARRAY") then { + _heliClass = [_heliClass] call Zen_ArrayGetRandom; + }; +} else { + switch (_sideOrClass) do { + case west: { + _heliClass = [(["air", _sideOrClass, [(localize "str_Zen_Heli"), (localize "str_Zen_Gunship")], _faction, "All", "Both", _DLC] call Zen_ConfigGetVehicleClasses)] call Zen_ArrayGetRandom; + }; + case east: { + _heliClass = [(["air", _sideOrClass, [(localize "str_Zen_Heli"), (localize "str_Zen_Gunship")], _faction, "All", "Both", _DLC] call Zen_ConfigGetVehicleClasses)] call Zen_ArrayGetRandom; + }; + case resistance: { + _heliClass = [(["air", _sideOrClass, [(localize "str_Zen_Heli"), (localize "str_Zen_Gunship")], _faction, "All", "Both", _DLC] call Zen_ConfigGetVehicleClasses)] call Zen_ArrayGetRandom; + }; + case civilian: { + // 0 = ["Zen_SpawnHelicopter", "Civilian side has no helicopters", _this] call Zen_PrintError; + // call Zen_StackPrint; + _heliClass = [(["air", _sideOrClass, [(localize "str_Zen_Heli"), (localize "str_Zen_Gunship")], _faction, "All", "Both", _DLC] call Zen_ConfigGetVehicleClasses)] call Zen_ArrayGetRandom;}; + default { + _heliClass = ""; + }; + }; +}; + +if (_heliClass == "") exitWith { + 0 = ["Zen_SpawnHelicopter", "Given classname or side is invalid", _this] call Zen_PrintError; + call Zen_StackRemove; + (objNull) +}; + +_heli = [_spawnPos, _heliClass, _height, _dir, true] call Zen_SpawnVehicle; +0 = [_heli] call Zen_SpawnVehicleCrew; + +call Zen_StackRemove; +(_heli) diff --git a/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnInfantry.sqf b/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnInfantry.sqf new file mode 100644 index 0000000..3b67718 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnInfantry.sqf @@ -0,0 +1,83 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +//Edited slighty by jochem + +#include "Zen_FrameworkLibrary.sqf" +#include "Zen_StandardLibrary.sqf" + +_Zen_stack_Trace = ["Zen_SpawnInfantry", _this] call Zen_StackAdd; +private ["_spawnPos", "_side", "_skill", "_group", "_soldierlistrand", "_c", "_spawnNumber", "_cMin", "_cMax", "_soldierlist", "_menType", "_faction", "_filterTypes", "_i", "_DLC"]; + +if !([_this, [["VOID"], ["SIDE"], ["SCALAR", "ARRAY", "STRING"], ["SCALAR", "ARRAY"], ["STRING"], ["STRING"], ["ARRAY"]], [[], [], ["SCALAR", "ARRAY"], ["SCALAR"]], 4] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (grpNull) +}; + +_spawnPos = [(_this select 0)] call Zen_ConvertToPosition; +_side = _this select 1; +_skill = _this select 2; +_spawnNumber = _this select 3; + +if (typeName _spawnNumber != "ARRAY") then { + _spawnNumber = [_spawnNumber, _spawnNumber]; +}; + +_menType = "Men"; +_faction = "All"; + +if (_side == West) then { + _faction = "BLU_F"; +}; + +if (count _this > 4) then { + _menType = _this select 4; + if(_menType == "Basic")then{ + _soldierlist = infantryPool; + }; + if(_menType == "SF")then{ + //_soldierlist = sfPool; + _soldierlist = infantryPool; + }; +}; + +if (count _this > 5) then { + _faction = _this select 5; +}; + +_filterTypes = []; +if (count _this > 6) then { + _filterTypes = _this select 6; +}; + +ZEN_STD_Parse_GetArgumentDefault(_DLC, 7, "") + +_cMin = _spawnNumber select 0; +_cMax = _spawnNumber select 1; + +//_soldierlist = [_menType, _side, "All", _faction, "All", "Both", _DLC] call Zen_ConfigGetVehicleClasses; + +//_soldierlist = [_soldierlist, (["I_crew_F", "I_helipilot_F", "I_helicrew_F", "I_pilot_F", "O_helipilot_F", "O_crew_F", "O_Pilot_F", "O_helicrew_F", "B_Helipilot_F", "B_crew_F", "B_Pilot_F", "B_helicrew_F", "b_soldier_unarmed_f", "b_survivor_f", "b_g_soldier_unarmed_f", "o_soldier_unarmed_f", "i_soldier_unarmed_f", "o_survivor_f", "i_survivor_F", "b_rangemaster_f", "b_competitor_f", "b_g_survivor_F"] + _filterTypes)] call Zen_ArrayFilterValues; + +if (count _soldierlist == 0) exitWith { + 0 = ["Zen_SpawnInfantry", "No soldiers found for the given side, type, faction, and blacklist", _this] call Zen_PrintError; + call Zen_StackRemove; + (grpNull) +}; + +_soldierlistrand = []; +_c = [_cMin, _cMax] call Zen_FindInRange; + +for "_i" from 1 to _c do { + _soldierlistrand pushBack ([_soldierlist] call Zen_ArrayGetRandom); +}; + +_group = [_spawnPos, _soldierlistrand] call Zen_SpawnGroup; + +(leader _group) setUnitRank "CORPORAL"; +0 = [(units _group), _skill] call Zen_SetAISkill; +_group allowFleeing 0; + +call Zen_StackRemove; +(_group) diff --git a/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnInfantryGarrison.sqf b/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnInfantryGarrison.sqf new file mode 100644 index 0000000..09c8c1f --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnInfantryGarrison.sqf @@ -0,0 +1,33 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" + +_Zen_stack_Trace = ["Zen_SpawnInfantryGarrison", _this] call Zen_StackAdd; +private ["_centerPos", "_buildingName", "_buildingPositions", "_group", "_i"]; + +if !([_this, [["VOID"], ["SIDE"], ["SCALAR", "ARRAY", "STRING"], ["SCALAR", "ARRAY"], ["STRING"], ["STRING"], ["ARRAY"]], [[], [], ["SCALAR"], ["SCALAR"]], 4] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (grpNull) +}; + +_centerPos = [(_this select 0)] call Zen_ConvertToPosition; + +_buildingName = nearestBuilding _centerPos; +_buildingPositions = [_centerPos] call Zen_FindBuildingPositions; + +if (count _buildingPositions == 0) then { + _buildingPositions = [getPosATL _buildingName]; +}; + +_group = ([([_buildingName, 15, random 360] call Zen_ExtendPosition)] + ([_this, 1] call Zen_ArrayGetIndexedSlice)) call Zen_SpawnInfantry; + +{ + 0 = [_x, ZEN_STD_Array_RandElement(_buildingPositions), 0.02, 0, (random 360)] call Zen_TransformObject; + _x setUnitPosWeak "up"; + doStop _x; +} forEach (units _group); + +call Zen_StackRemove; +(_group) diff --git a/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnItemsOnTable.sqf b/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnItemsOnTable.sqf new file mode 100644 index 0000000..d01d117 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnItemsOnTable.sqf @@ -0,0 +1,43 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" +#include "Zen_FrameworkLibrary.sqf" + +_Zen_stack_Trace = ["Zen_SpawnItemsOnTable", _this] call Zen_StackAdd; +private ["_tableArray", "_table", "_item", "_itemClassname", "_itemArray", "_itemClassArray", "_angles"]; + +if !([_this, [["ARRAY"], ["ARRAY"]], [["STRING"], ["OBJECT"]], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + ([]) +}; + +_itemClassArray = _this select 0; +_tableArray = _this select 1; +_itemArray = []; + +{ + if (_forEachIndex >= count _tableArray) exitWith {}; + _itemClassname = _x; + _table = _tableArray select _forEachIndex; + + _item = createVehicle [_itemClassname, (getPosATL _table), [], 0, "NONE"]; + _itemArray pushBack _item; + + 0 = [_item, _table, ZEN_STD_OBJ_BBZ(_table), 0, (random 360)] call Zen_TransformObject; + + 0 = [_item, (vectorUp _table)] spawn { + sleep 0.1; + (_this select 0) setVectorUp (_this select 1); + }; + + _item enableSimulation false; + _table enableSimulation false; + + _offset = [[0,0,0], [((ZEN_STD_OBJ_BBX(_table)) / 2), ((ZEN_STD_OBJ_BBY(_table)) / 2)], getDir _table, "rectangle", [random 360]] call Zen_FindPositionPoly; + ZEN_STD_OBJ_TransformATL(_item, (_offset select 0), (_offset select 1), 0) +} forEach _itemClassArray; + +call Zen_StackRemove; +(_itemArray) diff --git a/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnParachute.sqf b/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnParachute.sqf new file mode 100644 index 0000000..21c8045 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnParachute.sqf @@ -0,0 +1,49 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" + +_Zen_stack_Trace = ["Zen_SpawnParachute", _this] call Zen_StackAdd; +private ["_object", "_parachute", "_height", "_signalGrenadeClass"]; + +if !([_this, [["OBJECT"], ["STRING"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_object = _this select 0; + +ZEN_STD_Parse_GetArgumentDefault(_signalGrenadeClass, 1, "SmokeShell") + +_parachute = createVehicle ["B_Parachute_02_F", getPosATL _object, [], 0, "CAN_COLLIDE"]; +_parachute setPosATL getPosATL _object; + +_object enableSimulation false; +_height = ZEN_STD_OBJ_BBZ(_object) / 2; +_height = _height max 1.2; + +sleep 2; +_object attachTo [_parachute, [0, 0, -_height]]; +_object enableSimulation true; +_parachute setMass (getMass _object + getMass _parachute); + +_stopHeight = ((getPos _object) vectorDiff (getPosATL _object)) select 2; +sleep 2; + +waitUntil { + sleep 0.2; + ((ZEN_STD_OBJ_ATLPositionZ(_object) < (_height + _stopHeight)) || (ZEN_STD_OBJ_ASLPositionZ(_object) < 1)) +}; + +_object allowDamage false; +detach _object; + +if ((_signalGrenadeClass != "") && {isClass (configFile >> "CfgMagazines" >> _signalGrenadeClass)}) then { + 0 = [_object, _signalGrenadeClass] call Zen_SpawnVehicle; +}; + +sleep 1; +_object allowDamage true; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnVehicle.sqf b/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnVehicle.sqf new file mode 100644 index 0000000..0effc5a --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnVehicle.sqf @@ -0,0 +1,101 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" + +_Zen_stack_Trace = ["Zen_SpawnVehicle", _this] call Zen_StackAdd; +private ["_pos", "_class", "_vehicle", "_height", "_special", "_dir", "_collide", "_velocity"]; + +if !([_this, [["VOID"], ["STRING"], ["SCALAR"], ["SCALAR"], ["BOOL"]], [], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (objNull) +}; + +_pos = [(_this select 0)] call Zen_ConvertToPosition; +_class = _this select 1; + +_height = 0; +_dir = 0; +_collide = false; +_velocity = [0, 0, 0]; + +if (count _this > 2) then { + _height = _this select 2; +}; + +if (count _this > 3) then { + _dir = _this select 3; +}; + +if (count _this > 4) then { + _collide = _this select 4; +}; + +if (_class isKindOf "Man") exitWith { + 0 = ["Zen_SpawnVehicle", "Soldier classname given, cannot spawn humans", _this] call Zen_PrintError; + call Zen_StackPrint; + call Zen_StackRemove; + (objNull) +}; + +if ((!(isClass (configFile >> "CfgVehicles" >> _class))) && (!(isClass (configFile >> "CfgAmmo" >> _class))) && (!(isClass (configFile >> "CfgMagazines" >> _class)))) exitWith { + 0 = ["Zen_SpawnVehicle", "Invalid classname given", _this] call Zen_PrintError; + call Zen_StackPrint; + call Zen_StackRemove; + (objNull) +}; + +_special = "NONE"; +if (_height > 2) then { + if (count _this < 5) then { + _collide = true; + }; + + if (_class isKindOf "AIR") then { + _special = "FLY"; + if (_class isKindOf "Plane") then { + _velocity = [100, 90 - _dir, 10]; + }; + }; +}; + +_pos set [2, 0]; +_vehicle = createVehicle [_class, _pos, [], 0, _special]; + +if (surfaceIsWater (getPosATL _vehicle)) then { + if (_vehicle isKindOf "SHIP") then { + if (_collide) then { + 0 = [_vehicle, _pos, -(getTerrainHeightASL (getPosATL _vehicle)) + _height, _velocity, _dir] call Zen_TransformObject; + } else { + 0 = [_vehicle, _vehicle, _height, _velocity, _dir] call Zen_TransformObject; + }; + } else { + if (_vehicle isKindOf "AIR") then { + if (_collide) then { + 0 = [_vehicle, _pos, -(getTerrainHeightASL (getPosATL _vehicle)) + _height, _velocity, _dir] call Zen_TransformObject; + } else { + if (_special == "FLY") then { + 0 = [_vehicle, _vehicle, -(getTerrainHeightASL (getPosATL _vehicle)) + _height - 60, _velocity, _dir] call Zen_TransformObject; + } else { + 0 = [_vehicle, _vehicle, -(getTerrainHeightASL (getPosATL _vehicle)) + _height, _velocity, _dir] call Zen_TransformObject; + }; + }; + } else { + if (_collide) then { + 0 = [_vehicle, _pos, -(getTerrainHeightASL (getPosATL _vehicle)) + _height, _velocity, _dir] call Zen_TransformObject; + } else { + 0 = [_vehicle, _vehicle, -(getTerrainHeightASL (getPosATL _vehicle)) + _height, _velocity, _dir] call Zen_TransformObject; + }; + }; + }; +} else { + if (_collide) then { + 0 = [_vehicle, _pos, _height, _velocity, _dir, (_height < 2)] call Zen_TransformObject; + } else { + 0 = [_vehicle, _vehicle, _height, _velocity, _dir, (_height < 2)] call Zen_TransformObject; + }; +}; + +call Zen_StackRemove; +(_vehicle) diff --git a/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnVehicleCrew.sqf b/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnVehicleCrew.sqf new file mode 100644 index 0000000..8dff206 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnVehicleCrew.sqf @@ -0,0 +1,159 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#define FILL_CAR(CLASS) \ + if ((isNull driver _vehicle) && _hasDriver) then { \ + _crewClasses pushBack CLASS; \ + }; \ + { \ + if (isNull (_vehicle turretUnit _x)) then { \ + _crewClasses pushBack CLASS; \ + }; \ + } forEach _vehicleTurrets; + +#define FILL_AIRCRAFT(PILOT_CLASS, GUNNER_CLASS) \ + if ((isNull driver _vehicle) && _hasDriver) then { \ + _crewClasses pushBack PILOT_CLASS; \ + }; \ + { \ + if (isNull (_vehicle turretUnit _x)) then { \ + if (_forEachIndex == 0) then { \ + _crewClasses pushBack PILOT_CLASS; \ + } else { \ + _crewClasses pushBack GUNNER_CLASS; \ + }; \ + }; \ + } forEach _vehicleTurrets; + +#include "Zen_StandardLibrary.sqf" + +_Zen_stack_Trace = ["Zen_SpawnVehicleCrew", _this] call Zen_StackAdd; +private ["_vehicle", "_crewClasses", "_crewGroup", "_vehicleConfigEntry", "_side", "_carCrewClass", "_tankCrewClass", "_heliCrewClass", "_jetCrewClass", "_heliPilotClass", "_turretTypes", "_hasDriver"]; + +if !([_this, [["OBJECT"], ["SIDE"], ["ARRAY", "STRING"], ["BOOL"]], [[], [], ["STRING"]], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_vehicle = _this select 0; + +_vehicleConfigEntry = configFile >> "CfgVehicles" >> (typeOf _vehicle); +if ((toLower (getText (_vehicleConfigEntry >> "vehicleClass"))) == "autonomous") exitWith { + createVehicleCrew _vehicle; + call Zen_StackRemove; + (crew _vehicle) +}; + +if (count _this > 1) then { + _side = _this select 1; +} else { + _side = [_vehicle] call Zen_GetSide; +}; + +_turretTypes = ["commander", "gunner"]; +ZEN_STD_Parse_GetArgument(_turretTypes, 2) +ZEN_STD_Parse_GetArgumentDefault(_hasDriver, 3, true) + +_crewClasses = []; +_vehicleTurrets = [_vehicle, _turretTypes] call Zen_GetTurretPaths; + +switch (_side) do { + case west: { + _carCrewClass = "b_soldier_f"; + _tankCrewClass = "b_crew_f"; + _heliPilotClass = "b_helipilot_f"; + _heliCrewClass = "b_helicrew_f"; + _jetCrewClass = "b_pilot_f"; + }; + case east: { + _carCrewClass = "rhs_msv_emr_driver"; + _tankCrewClass = "rhs_msv_emr_combatcrew"; + _heliPilotClass = "rhs_pilot_combat_heli"; + _heliCrewClass = "rhs_pilot_transport_heli"; + _jetCrewClass = "rhs_pilot"; + }; + case resistance: { + _carCrewClass = "i_soldier_f"; + _tankCrewClass = "i_crew_f"; + _heliPilotClass = "i_helipilot_f"; + _heliCrewClass = "i_helicrew_f"; + _jetCrewClass = "i_pilot_f"; + }; + case civilian: { + _carCrewClass = "c_man_1"; + _tankCrewClass = "c_man_1"; + _heliPilotClass = "c_man_1"; + _heliCrewClass = "c_man_1"; + _jetCrewClass = "c_man_1"; + }; + default { + 0 = ["Zen_SpawnVehicleCrew", "Invalid side given", _this] call Zen_PrintError; + call Zen_StackPrint; + _carCrewClass = ""; + }; +}; + +if (_carCrewClass == "") exitWith { + call Zen_StackRemove; + (grpNull) +}; + +switch (toLower (getText (_vehicleConfigEntry >> "vehicleClass"))) do { + case "car": { + FILL_CAR(_carCrewClass) + }; + case "support": { + FILL_CAR(_carCrewClass) + }; + case "ship": { + FILL_CAR(_carCrewClass) + }; + case "submarine": { + FILL_CAR(_carCrewClass) + }; + case "static": { + { + if (isNull (_vehicle turretUnit _x)) then { + _crewClasses pushBack _carCrewClass; + }; + } forEach _vehicleTurrets; + }; + case "armored": { + FILL_CAR(_tankCrewClass) + }; + case "air": { + switch (toLower (getText (_vehicleConfigEntry >> "textSingular"))) do { + case (toLower (localize "str_Zen_Heli")): { + FILL_AIRCRAFT(_heliPilotClass, _heliCrewClass) + }; + case (toLower (localize "str_Zen_Gunship")): { + FILL_AIRCRAFT(_heliPilotClass, _heliCrewClass) + }; + case (toLower (localize "str_Zen_Jet")): { + FILL_AIRCRAFT(_jetCrewClass, _jetCrewClass) + }; + default { + FILL_CAR(_heliPilotClass) + 0 = ["Zen_SpawnVehicleCrew", "Vehicle is of unknown textSingular type", _this] call Zen_PrintError; + call Zen_StackPrint; + }; + }; + }; + default { + FILL_CAR(_carCrewClass) + 0 = ["Zen_SpawnVehicleCrew", "Vehicle is of unknown vehicleClass type", _this] call Zen_PrintError; + call Zen_StackPrint; + }; +}; + +_crewGroup = [_vehicle, _crewClasses] call Zen_SpawnGroup; +0 = [_crewGroup, "Crew"] call Zen_SetAISkill; + +if (_hasDriver) then { + 0 = [_crewGroup, _vehicle, "all", _turretTypes] call Zen_MoveInVehicle; +} else { + 0 = [_crewGroup, _vehicle, "turret", _turretTypes] call Zen_MoveInVehicle; +}; + +call Zen_StackRemove; +(_crewGroup) diff --git a/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawningFunctionsCompile.sqf b/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawningFunctionsCompile.sqf new file mode 100644 index 0000000..ad003db --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawningFunctionsCompile.sqf @@ -0,0 +1,22 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +Zen_SpawnAircraft = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_SpawningFunctions\Zen_SpawnAircraft.sqf"; +Zen_SpawnAmbientVehicles = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_SpawningFunctions\Zen_SpawnAmbientVehicles.sqf"; +Zen_SpawnAmmoBox = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_SpawningFunctions\Zen_SpawnAmmoBox.sqf"; +Zen_SpawnBoat = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_SpawningFunctions\Zen_SpawnBoat.sqf"; +Zen_SpawnCamp = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_SpawningFunctions\Zen_SpawnCamp.sqf"; +Zen_SpawnConvoy = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_SpawningFunctions\Zen_SpawnConvoy.sqf"; +Zen_SpawnFortification = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_SpawningFunctions\Zen_SpawnFortification.sqf"; +Zen_SpawnGroundVehicle = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_SpawningFunctions\Zen_SpawnGroundVehicle.sqf"; +Zen_SpawnGroup = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_SpawningFunctions\Zen_SpawnGroup.sqf"; +Zen_SpawnHelicopter = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_SpawningFunctions\Zen_SpawnHelicopter.sqf"; +Zen_SpawnInfantry = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_SpawningFunctions\Zen_SpawnInfantry.sqf"; +Zen_SpawnInfantryGarrison = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_SpawningFunctions\Zen_SpawnInfantryGarrison.sqf"; +Zen_SpawnItemsOnTable = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_SpawningFunctions\Zen_SpawnItemsOnTable.sqf"; +Zen_SpawnParachute = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_SpawningFunctions\Zen_SpawnParachute.sqf"; +Zen_SpawnVehicle = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_SpawningFunctions\Zen_SpawnVehicle.sqf"; +Zen_SpawnVehicleCrew = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_SpawningFunctions\Zen_SpawnVehicleCrew.sqf"; + +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_StandardLibrary.sqf b/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_StandardLibrary.sqf new file mode 100644 index 0000000..4a13a58 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_StandardLibrary.sqf @@ -0,0 +1,155 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#define ZEN_STD_Array_LastElement(A) (A select (count A - 1)) +#define ZEN_STD_Array_RandIndex(A) (floor random count A) +#define ZEN_STD_Array_RandElement(A) (A select (floor random count A)) +#define ZEN_STD_Array_UnorderedRemove(A, I) \ + A set [I, A select (count A - 1)]; \ + A resize (count A - 1); + +#define ZEN_STD_Code_WaitScript(S) \ + waitUntil { \ + sleep 1; \ + (scriptDone S) \ + }; + +#define ZEN_STD_Code_SleepFrames(F) sleep (F / diag_fps); + +#define ZEN_STD_Code_SwapVars(X, Y) \ + _Zen_tempVar = X; \ + X = Y; \ + Y = _Zen_tempVar; \ + _Zen_tempVar = nil; + +#define ZEN_STD_Math_RandNegativePositive() (if (random 1 > 0.5) then {1} else {-1}) + +#define ZEN_STD_Math_MarkerArea(M) \ + (if (toLower markerShape M == "ellipse") then { \ + (((markerSize M) select 0) * ((markerSize M) select 1) * pi) \ + } else { \ + (((markerSize M) select 0) * ((markerSize M) select 1) * 4) \ + }) + +#define ZEN_STD_Math_VectCartCyl(V) ([(vectorMagnitude [(V select 0), (V select 1), 0]), (V select 1) atan2 (V select 0), (V select 2)]) +#define ZEN_STD_Math_VectCartPolar(V) ([(vectorMagnitude V), (V select 1) atan2 (V select 0), acos ((V select 2) / (vectorMagnitude V))]) + +#define ZEN_STD_Math_VectCylCart(V) ([(V select 0) * cos (V select 1), (V select 0) * sin (V select 1), (V select 2)]) +#define ZEN_STD_Math_VectCylPolar(V) ([(vectorMagnitude [(V select 0), 0, (V select 2)]), (V select 1), (V select 0) atan2 (V select 2)]) + +#define ZEN_STD_Math_VectPolarCart(V) ([(V select 0) * cos (V select 1) * sin (V select 2), (V select 0) * sin (V select 1) * sin (V select 2), (V select 0) * cos (V select 2)]) +#define ZEN_STD_Math_VectPolarCyl(V) ([(V select 0) * sin (V select 2), (V select 1), (V select 0) * cos (V select 2)]) + +#define ZEN_STD_Math_VectRotateX(P, A) ([(P select 0), (P select 1) * cos A + (P select 2) * sin A, - (P select 1) * sin A + (P select 2) * cos A]) +#define ZEN_STD_Math_VectRotateY(P, A) ([(P select 0) * cos A - (P select 2) * sin A, (P select 1), (P select 0) * sin A + (P select 2) * cos A]) +#define ZEN_STD_Math_VectRotateZ(P, A) ([(P select 0) * cos A + (P select 1) * sin A, - (P select 0) * sin A + (P select 1) * cos A, (P select 2)]) + +#define ZEN_STD_Math_VectTransform(P, X, Y, Z) ([(P select 0) + X, (P select 1) + Y, (P select 2) + Z]) + +#define ZEN_STD_OBJ_ATLPositionZ(O) ((getPosATL O) select 2) +#define ZEN_STD_OBJ_ASLPositionZ(O) ((getPosASL O) select 2) +#define ZEN_STD_OBJ_BBX(O) abs ((((boundingBoxReal O) select 0) select 0) - (((boundingBoxReal O) select 1) select 0)) +#define ZEN_STD_OBJ_BBY(O) abs ((((boundingBoxReal O) select 0) select 1) - (((boundingBoxReal O) select 1) select 1)) +#define ZEN_STD_OBJ_BBZ(O) abs ((((boundingBoxReal O) select 0) select 2) - (((boundingBoxReal O) select 1) select 2)) + +#define ZEN_STD_OBJ_AnimateDoors(V, C) \ + { \ + V animateDoor [(configName _x), C]; \ + } forEach ("((toLower (getText (_x >> 'source'))) == 'door')" configClasses (configFile >> "CfgVehicles" >> (typeOf V) >> "AnimationSources")); + +#define ZEN_STD_OBJ_CountBuildingPos(V, B) \ + V = 0; \ + for "_i" from 0 to 100 do { \ + if ((B buildingPos V) isEqualTo [0,0,0]) exitWith {}; \ + V = V + 1; \ + }; \ + V = V - 1; + +#define ZEN_STD_OBJ_CountCargoSeats(V) (getNumber (configFile >> "CfgVehicles" >> (typeOf V) >> "transportSoldier")) +#define ZEN_STD_OBJ_DeleteVehCrew(V) \ + { \ + deleteVehicle _x; \ + } forEach (crew V + [V]); + +#define ZEN_STD_OBJ_MakePOW(O) \ + O setCaptive true; \ + O disableAI "move"; \ + O setUnitPos "UP"; \ + removeAllWeapons O; \ + removeBackpack O; \ + removeGoggles O; \ + removeHeadgear O; + +#define ZEN_STD_OBJ_OrderGetOut(U, V) \ + U orderGetIn false; \ + { \ + unassignVehicle _x; \ + _x leaveVehicle V; \ + } forEach U; + +#define ZEN_STD_OBJ_OrderGetIn(U, V) \ + { \ + _x assignAsCargo V; \ + } forEach U; \ + U orderGetIn true; + +#define ZEN_STD_OBJ_OrientAircraft(O, P, S) \ + _Zen_vDirToLZ = ((getPosATL O) vectorFromTo P); \ + _Zen_dirToLZ = ZEN_STD_Math_VectCartCyl(_Zen_vDirToLZ) select 1; \ + sleep (5 / diag_fps); \ + O setDir (90 - _Zen_dirToLZ); \ + O setVelocity [S * cos _Zen_dirToLZ, S * sin _Zen_dirToLZ, 0]; + +#define ZEN_STD_OBJ_ParachuteInsertion(O, P, H) \ + _Zen_dir = random 360; \ + { \ + _x setPosATL (P vectorAdd [50 * _forEachIndex * cos _Zen_dir, 50 * _forEachIndex * sin _Zen_dir, H]); \ + removeBackpackGlobal _x; \ + _x addBackpackGlobal "b_parachute"; \ + } forEach O; + +#define ZEN_STD_OBJ_TransformATL(O, X, Y, Z) O setPosATL [((getPosATL O) select 0) + X, ((getPosATL O) select 1) + Y, ((getPosATL O) select 2) + Z]; + +#define ZEN_STD_Parse_GetArgumentDefault(V, I, D) \ + if (count _this > I) then { \ + V = _this select I; \ + } else { \ + V = D; \ + }; + +#define ZEN_STD_Parse_GetSetArgumentDefault(V, I, D, R) \ + if (count _this > I) then { \ + V = _this select I; \ + } else { \ + V = D; \ + }; \ + _this set [I, R]; + +#define ZEN_STD_Parse_GetSetArgumentOptional(V, I, D, R) \ + if (count _this > I) then { \ + V = _this select I; \ + } else { \ + V = D; \ + _this set [I, R]; \ + }; + +#define ZEN_STD_Parse_GetArgument(V, I) \ + if (count _this > I) then { \ + V = _this select I; \ + }; + +#define ZEN_STD_Parse_ToArray(X) \ + if (typeName X != "ARRAY") then { \ + X = [X]; \ + }; + +#define ZEN_STD_Parse_ToString(X) \ + if (typeName X != "STRING") then { \ + X = str X; \ + }; + +#define ZEN_STD_Parse_ToStringLower(X) \ + if (typeName X != "STRING") then { \ + X = toLower str X; \ + }; diff --git a/Zen_FrameworkFunctions/Zen_StandardLibrary.sqf b/Zen_FrameworkFunctions/Zen_StandardLibrary.sqf new file mode 100644 index 0000000..4a13a58 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_StandardLibrary.sqf @@ -0,0 +1,155 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#define ZEN_STD_Array_LastElement(A) (A select (count A - 1)) +#define ZEN_STD_Array_RandIndex(A) (floor random count A) +#define ZEN_STD_Array_RandElement(A) (A select (floor random count A)) +#define ZEN_STD_Array_UnorderedRemove(A, I) \ + A set [I, A select (count A - 1)]; \ + A resize (count A - 1); + +#define ZEN_STD_Code_WaitScript(S) \ + waitUntil { \ + sleep 1; \ + (scriptDone S) \ + }; + +#define ZEN_STD_Code_SleepFrames(F) sleep (F / diag_fps); + +#define ZEN_STD_Code_SwapVars(X, Y) \ + _Zen_tempVar = X; \ + X = Y; \ + Y = _Zen_tempVar; \ + _Zen_tempVar = nil; + +#define ZEN_STD_Math_RandNegativePositive() (if (random 1 > 0.5) then {1} else {-1}) + +#define ZEN_STD_Math_MarkerArea(M) \ + (if (toLower markerShape M == "ellipse") then { \ + (((markerSize M) select 0) * ((markerSize M) select 1) * pi) \ + } else { \ + (((markerSize M) select 0) * ((markerSize M) select 1) * 4) \ + }) + +#define ZEN_STD_Math_VectCartCyl(V) ([(vectorMagnitude [(V select 0), (V select 1), 0]), (V select 1) atan2 (V select 0), (V select 2)]) +#define ZEN_STD_Math_VectCartPolar(V) ([(vectorMagnitude V), (V select 1) atan2 (V select 0), acos ((V select 2) / (vectorMagnitude V))]) + +#define ZEN_STD_Math_VectCylCart(V) ([(V select 0) * cos (V select 1), (V select 0) * sin (V select 1), (V select 2)]) +#define ZEN_STD_Math_VectCylPolar(V) ([(vectorMagnitude [(V select 0), 0, (V select 2)]), (V select 1), (V select 0) atan2 (V select 2)]) + +#define ZEN_STD_Math_VectPolarCart(V) ([(V select 0) * cos (V select 1) * sin (V select 2), (V select 0) * sin (V select 1) * sin (V select 2), (V select 0) * cos (V select 2)]) +#define ZEN_STD_Math_VectPolarCyl(V) ([(V select 0) * sin (V select 2), (V select 1), (V select 0) * cos (V select 2)]) + +#define ZEN_STD_Math_VectRotateX(P, A) ([(P select 0), (P select 1) * cos A + (P select 2) * sin A, - (P select 1) * sin A + (P select 2) * cos A]) +#define ZEN_STD_Math_VectRotateY(P, A) ([(P select 0) * cos A - (P select 2) * sin A, (P select 1), (P select 0) * sin A + (P select 2) * cos A]) +#define ZEN_STD_Math_VectRotateZ(P, A) ([(P select 0) * cos A + (P select 1) * sin A, - (P select 0) * sin A + (P select 1) * cos A, (P select 2)]) + +#define ZEN_STD_Math_VectTransform(P, X, Y, Z) ([(P select 0) + X, (P select 1) + Y, (P select 2) + Z]) + +#define ZEN_STD_OBJ_ATLPositionZ(O) ((getPosATL O) select 2) +#define ZEN_STD_OBJ_ASLPositionZ(O) ((getPosASL O) select 2) +#define ZEN_STD_OBJ_BBX(O) abs ((((boundingBoxReal O) select 0) select 0) - (((boundingBoxReal O) select 1) select 0)) +#define ZEN_STD_OBJ_BBY(O) abs ((((boundingBoxReal O) select 0) select 1) - (((boundingBoxReal O) select 1) select 1)) +#define ZEN_STD_OBJ_BBZ(O) abs ((((boundingBoxReal O) select 0) select 2) - (((boundingBoxReal O) select 1) select 2)) + +#define ZEN_STD_OBJ_AnimateDoors(V, C) \ + { \ + V animateDoor [(configName _x), C]; \ + } forEach ("((toLower (getText (_x >> 'source'))) == 'door')" configClasses (configFile >> "CfgVehicles" >> (typeOf V) >> "AnimationSources")); + +#define ZEN_STD_OBJ_CountBuildingPos(V, B) \ + V = 0; \ + for "_i" from 0 to 100 do { \ + if ((B buildingPos V) isEqualTo [0,0,0]) exitWith {}; \ + V = V + 1; \ + }; \ + V = V - 1; + +#define ZEN_STD_OBJ_CountCargoSeats(V) (getNumber (configFile >> "CfgVehicles" >> (typeOf V) >> "transportSoldier")) +#define ZEN_STD_OBJ_DeleteVehCrew(V) \ + { \ + deleteVehicle _x; \ + } forEach (crew V + [V]); + +#define ZEN_STD_OBJ_MakePOW(O) \ + O setCaptive true; \ + O disableAI "move"; \ + O setUnitPos "UP"; \ + removeAllWeapons O; \ + removeBackpack O; \ + removeGoggles O; \ + removeHeadgear O; + +#define ZEN_STD_OBJ_OrderGetOut(U, V) \ + U orderGetIn false; \ + { \ + unassignVehicle _x; \ + _x leaveVehicle V; \ + } forEach U; + +#define ZEN_STD_OBJ_OrderGetIn(U, V) \ + { \ + _x assignAsCargo V; \ + } forEach U; \ + U orderGetIn true; + +#define ZEN_STD_OBJ_OrientAircraft(O, P, S) \ + _Zen_vDirToLZ = ((getPosATL O) vectorFromTo P); \ + _Zen_dirToLZ = ZEN_STD_Math_VectCartCyl(_Zen_vDirToLZ) select 1; \ + sleep (5 / diag_fps); \ + O setDir (90 - _Zen_dirToLZ); \ + O setVelocity [S * cos _Zen_dirToLZ, S * sin _Zen_dirToLZ, 0]; + +#define ZEN_STD_OBJ_ParachuteInsertion(O, P, H) \ + _Zen_dir = random 360; \ + { \ + _x setPosATL (P vectorAdd [50 * _forEachIndex * cos _Zen_dir, 50 * _forEachIndex * sin _Zen_dir, H]); \ + removeBackpackGlobal _x; \ + _x addBackpackGlobal "b_parachute"; \ + } forEach O; + +#define ZEN_STD_OBJ_TransformATL(O, X, Y, Z) O setPosATL [((getPosATL O) select 0) + X, ((getPosATL O) select 1) + Y, ((getPosATL O) select 2) + Z]; + +#define ZEN_STD_Parse_GetArgumentDefault(V, I, D) \ + if (count _this > I) then { \ + V = _this select I; \ + } else { \ + V = D; \ + }; + +#define ZEN_STD_Parse_GetSetArgumentDefault(V, I, D, R) \ + if (count _this > I) then { \ + V = _this select I; \ + } else { \ + V = D; \ + }; \ + _this set [I, R]; + +#define ZEN_STD_Parse_GetSetArgumentOptional(V, I, D, R) \ + if (count _this > I) then { \ + V = _this select I; \ + } else { \ + V = D; \ + _this set [I, R]; \ + }; + +#define ZEN_STD_Parse_GetArgument(V, I) \ + if (count _this > I) then { \ + V = _this select I; \ + }; + +#define ZEN_STD_Parse_ToArray(X) \ + if (typeName X != "ARRAY") then { \ + X = [X]; \ + }; + +#define ZEN_STD_Parse_ToString(X) \ + if (typeName X != "STRING") then { \ + X = str X; \ + }; + +#define ZEN_STD_Parse_ToStringLower(X) \ + if (typeName X != "STRING") then { \ + X = toLower str X; \ + }; diff --git a/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_AreTasksComplete.sqf b/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_AreTasksComplete.sqf new file mode 100644 index 0000000..0fee167 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_AreTasksComplete.sqf @@ -0,0 +1,34 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_AreTasksComplete", _this] call Zen_StackAdd; +private ["_taskArray", "_taskState", "_tasksComplete", "_taskData"]; + +if !([_this, [["ARRAY", "STRING"], ["ARRAY", "STRING"]], [["STRING"], ["STRING"]], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (false) +}; + +_taskArray = _this select 0; + +_taskState = ["failed", "succeeded", "canceled"]; +if (count _this > 1) then { + _taskState = _this select 1; +}; + +if (typeName _taskArray != "ARRAY") then { + _taskArray = [_taskArray]; +}; + +_tasksComplete = true; + +{ + _taskData = [_x] call Zen_GetTaskDataGlobal; + if !([(_taskData select 2), _taskState] call Zen_ValueIsInArray) exitWith { + _tasksComplete = false; + }; +} forEach _taskArray; + +call Zen_StackRemove; +(_tasksComplete) diff --git a/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_AreUnitsTasksComplete.sqf b/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_AreUnitsTasksComplete.sqf new file mode 100644 index 0000000..0750326 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_AreUnitsTasksComplete.sqf @@ -0,0 +1,55 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_AreUnitsTasksComplete", _this] call Zen_StackAdd; +private ["_units", "_areComplete", "_taskState", "_includeTaskArray", "_excludeTaskArray", "_orgIncludeType", "_unitsTasks"]; + +if !([_this, [["VOID"], ["ARRAY", "STRING", "SCALAR"], ["ARRAY", "STRING"]], [[], ["STRING"], ["STRING"]], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + (false) +}; + +_units = [(_this select 0)] call Zen_ConvertToObjectArray; + +_includeTaskArray = 0; +_excludeTaskArray = []; + +if (count _this > 1) then { + _includeTaskArray = _this select 1; +}; +if (count _this > 2) then { + _excludeTaskArray = _this select 2; +}; + +if (typeName _includeTaskArray == "STRING") then { + _includeTaskArray = [_includeTaskArray]; +}; + +if (typeName _excludeTaskArray == "STRING") then { + _excludeTaskArray = [_excludeTaskArray]; +}; + +_areComplete = true; +_orgIncludeType = (typeName _includeTaskArray); + +{ + _unitsTasks = [_x] call Zen_GetUnitTasks; + if (count _unitsTasks > 0) then { + if (_orgIncludeType == "SCALAR") then { + _includeTaskArray = _unitsTasks; + }; + + { + if (([_x, _includeTaskArray] call Zen_ValueIsInArray) && !([_x, _excludeTaskArray] call Zen_ValueIsInArray)) then { + _taskState = ([_x] call Zen_GetTaskDataGlobal) select 2; + if !([_taskState, ["failed", "succeeded", "canceled"]] call Zen_ValueIsInArray) then { + _areComplete = false; + }; + }; + } forEach _unitsTasks; + }; +} forEach _units; + +call Zen_StackRemove; +(_areComplete) diff --git a/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_CleanGlobalTaskArray.sqf b/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_CleanGlobalTaskArray.sqf new file mode 100644 index 0000000..1cc057e --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_CleanGlobalTaskArray.sqf @@ -0,0 +1,19 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +private ["_cleanUnitsArray"]; + +{ + _cleanUnitsArray = _x select 1; + if (count _cleanUnitsArray == 0) then { + Zen_Task_Array_Global set [_forEachIndex, 0]; + } else { + _x set [1, _cleanUnitsArray]; + }; +} forEach Zen_Task_Array_Global; + +0 = [Zen_Task_Array_Global, 0] call Zen_ArrayRemoveValue; +publicVariable "Zen_Task_Array_Global"; + +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_CleanLocalTaskArray.sqf b/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_CleanLocalTaskArray.sqf new file mode 100644 index 0000000..0c5df24 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_CleanLocalTaskArray.sqf @@ -0,0 +1,12 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +{ + if ((count (_x select 1) == 0)) then { + Zen_Task_Array_Local set [_forEachIndex, 0]; + }; +} forEach Zen_Task_Array_Local; + +0 = [Zen_Task_Array_Local, 0] call Zen_ArrayRemoveValue; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_FrameworkLibrary.sqf b/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_FrameworkLibrary.sqf new file mode 100644 index 0000000..7af8176 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_FrameworkLibrary.sqf @@ -0,0 +1,191 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#define ZEN_FMW_Array_RemoveIndexes(A, I) \ + { \ + 0 = [A, _x - _forEachIndex] call Zen_ArrayRemoveIndex; \ + } forEach I; + +#define ZEN_FMW_CFG_VehicleWeapons(V) \ + _Zen_WeaponsArray = []; \ + 0 = [_Zen_WeaponsArray, getArray (V >> "weapons")] call Zen_ArrayAppendNested; \ + { \ + 0 = [_Zen_WeaponsArray, getArray (V >> "weapons")] call Zen_ArrayAppendNested; \ + } forEach ("true" configClasses (V >> "turrets")); \ + { \ + _Zen_WeaponsArray = [_Zen_WeaponsArray, ZEN_FMW_ZAF_String(V)] call Zen_ArrayFilterCondition; \ + } forEach ["smoke", "horn", "laser", "flare", "throw", "put"]; + +#define ZEN_FMW_Code_ErrorExitVoid(F, D) \ + 0 = [F, D, _this] call Zen_PrintError; \ + call Zen_StackPrint; \ + call Zen_StackRemove; + +#define ZEN_FMW_Code_ErrorExitValue(F, D, V) \ + 0 = [F, D, _this] call Zen_PrintError; \ + call Zen_StackPrint; \ + call Zen_StackRemove; \ + V + +#define ZEN_FMW_Code_Error(F, D) \ + 0 = [F, D, _this] call Zen_PrintError; \ + call Zen_StackPrint; + +#define ZEN_FMW_Code_GiveLoadoutsOrdered(U, L, S) \ + { \ + 0 = [_x, S, (L select (_forEachIndex % (count L)))] call Zen_GiveLoadout; \ + } forEach ([U] call Zen_ConvertToObjectArray); + +#define ZEN_FMW_Code_Insertion(U, V, S, E) \ + _Zen_Vehicle = [S, V, (if (V isKindOf "Air") then {40} else {0})] call Zen_SpawnVehicle; \ + 0 = [_Zen_Vehicle] call Zen_SpawnVehicleCrew; \ + 0 = [U, _Zen_Vehicle] call Zen_MoveInVehicle; \ + 0 = [_Zen_Vehicle, [E, S], U] spawn Zen_OrderInsertion; + +#define ZEN_FMW_Code_InsertionPatrol(G, T, S, M) \ + _Zen_Vehicle = [S, T] call Zen_SpawnVehicle; \ + 0 = [_Zen_Vehicle] call Zen_SpawnVehicleCrew; \ + 0 = [G, _Zen_Vehicle] call Zen_MoveInVehicle; \ + 0 = [_Zen_Vehicle, [([M] call Zen_FindGroundPosition), _Zen_HeliStart], G, "normal", 40, "fastrope", true] spawn Zen_OrderInsertion; \ + 0 = [G, M] spawn { \ + waitUntil { \ + sleep 5; \ + ([_this select 0] call Zen_AreNotInVehicle) \ + }; \ + 0 = [_this select 0, _this select 1] spawn Zen_OrderInfantryPatrol; \ + }; + +#define ZEN_FMW_Code_SpawnMarker(M, N, S) \ + _Zen_GrpsArray = []; \ + for "_Z" from 1 to N do { \ + _Zen_Pos = [ M ] call Zen_FindGroundPosition; \ + _Zen_Group = [_Zen_Pos, S, "infantry", [4,6]] call Zen_SpawnInfantry; \ + _Zen_GrpsArray pushBack _Zen_Group; \ + }; \ + 0 = [_Zen_GrpsArray, S, ZEN_FMW_Loadout_StdInfantryPreset, false] call Zen_GiveLoadout; \ + 0 = [_Zen_GrpsArray, M] spawn Zen_OrderInfantryPatrol; + +#define ZEN_FMW_Code_SpawnPoint(C, D, N, S) \ + _Zen_GrpsArray = []; \ + for "_Z" from 1 to N do { \ + _Zen_Pos = [C, [0, D]] call Zen_FindGroundPosition; \ + _Zen_Group = [_Zen_Pos, S, "infantry", [4,6]] call Zen_SpawnInfantry; \ + _Zen_GrpsArray pushBack _Zen_Group; \ + }; \ + 0 = [_Zen_GrpsArray, S, ZEN_FMW_Loadout_StdInfantryPreset, false] call Zen_GiveLoadout; \ + 0 = [_Zen_GrpsArray, C, [0, D]] spawn Zen_OrderInfantryPatrol; + +#define ZEN_FMW_Code_SpawnPointBehind(START, END, MIND, MAXD, N, S) \ + _Zen_DirToSpawn = [START, END] call Zen_FindDirection; \ + _Zen_GrpsArray = []; \ + for "_i" from 1 to N do { \ + _Zen_SpawnPos = [END, [MIND, MAXD], 0, 1, 0, [_Zen_DirToSpawn - 90, _Zen_DirToSpawn + 90, "trig"]] call Zen_FindGroundPosition; \ + _Zen_Group = [_Zen_SpawnPos, S, "infantry", [4, 6]] call Zen_SpawnInfantry; \ + _Zen_GrpsArray pushBack _Zen_Group; \ + }; \ + 0 = [_Zen_GrpsArray, S, ZEN_FMW_Loadout_StdInfantryPreset, false] call Zen_GiveLoadout; \ + 0 = [_Zen_GrpsArray, END, [1, MAXD]] spawn Zen_OrderInfantryPatrol; \ + _Zen_DirToSpawn = nil; + +#define ZEN_FMW_Code_WaitDistanceGreater(A, B, D) \ + waitUntil { \ + sleep 2; \ + (([A, B] call Zen_Find2dDistance) > D) \ + }; + +#define ZEN_FMW_Code_WaitDistanceLess(A, B, D) \ + waitUntil { \ + sleep 2; \ + (([A, B] call Zen_Find2dDistance) < D) \ + }; + +#define ZEN_FMW_MP_REAll(F, A, I) \ + A I (missionNamespace getVariable F); \ + if (isMultiplayer) then { \ + Zen_MP_Closure_Packet = [F, A]; \ + publicVariable "Zen_MP_Closure_Packet"; \ + }; + +#define ZEN_FMW_MP_REClient(F, A, I, O) \ + if (local O) then { \ + A I (missionNamespace getVariable F); \ + } else { \ + if (isMultiplayer) then { \ + Zen_MP_Closure_Packet = [F, A]; \ + (owner O) publicVariableClient "Zen_MP_Closure_Packet"; \ + }; \ + }; + +#define ZEN_FMW_MP_RENonDedicated(F, A, I) \ + if (isMultiplayer) then { \ + Zen_MP_Closure_Packet = [F, A]; \ + publicVariable "Zen_MP_Closure_Packet"; \ + }; \ + if !(isDedicated) then { \ + A I (missionNamespace getVariable F); \ + }; + +#define ZEN_FMW_MP_REServerOnly(F, A, I) \ + if (isServer) then { \ + A I (missionNamespace getVariable F); \ + } else { \ + if (isMultiplayer) then { \ + Zen_MP_Closure_Packet = [F, A]; \ + publicVariableServer "Zen_MP_Closure_Packet"; \ + }; \ + }; + +#define ZEN_FMW_Math_DistLess2D(A, B, D) (([A, B] call Zen_Find2dDistance) < D) +#define ZEN_FMW_Math_DistGreater3D(A, B, D) ((([A] call Zen_ConvertToPosition) distance ([B] call Zen_ConvertToPosition)) > D) +#define ZEN_FMW_Math_DistGreater2D(A, B, D) (([A, B] call Zen_Find2dDistance) > D) +#define ZEN_FMW_Math_DistLess3D(A, B, D) ((([A] call Zen_ConvertToPosition) distance ([B] call Zen_ConvertToPosition)) < D) +#define ZEN_FMW_Math_RandomPoint(C, R) ([C, random R, random 360] call Zen_ExtendPosition) +#define ZEN_FMW_Math_RandomPointMin(C, S, E) ([C, S + random abs (E - S), random 360] call Zen_ExtendPosition) + +#define ZEN_FMW_Math_TerrainParallelCart(P, I) \ + _Zen_3dGradPolar = [1, [P] call Zen_FindTerrainGradient, 90 - ([P] call Zen_FindTerrainSlope)]; \ + I = ZEN_STD_Math_VectPolarCart(_Zen_3dGradPolar); + +#define ZEN_FMW_Math_TerrainGradientCart(P, I) \ + _Zen_2dGradCyl = [tan ([P] call Zen_FindTerrainSlope), [P] call Zen_FindTerrainGradient, 0]; \ + I = ZEN_STD_Math_VectCylCart(_Zen_2dGradCyl); + +#define ZEN_FMW_OBJ_DeleteDead(D) \ + { \ + _Zen_DeadUnit = _x; \ + _Zen_Delete = true; \ + { \ + if (isPlayer _x) then { \ + if ((_x distanceSqr _Zen_DeadUnit) < D*D) then { \ + _Zen_Delete = false; \ + }; \ + }; \ + } forEach allUnits; \ + if (_Zen_Delete) then { \ + deleteVehicle _x; \ + }; \ + } forEach allDead; + +#define ZEN_FMW_ZAS_ArrayLength {if (count (_this select 0) < count (_this select 1)) exitWith {-1}; (if (count (_this select 0) == count (_this select 1)) then {0} else {1})} +#define ZEN_FMW_ZAS_AlphaNumeric ({_2a = toArray (_this select 1); _c = 0; {if (_x < (_2a select _forEachIndex)) exitWith {_c = -1}; if (_x > (_2a select _forEachIndex)) exitWith {_c = 1};} forEach (toArray (_this select 0)); (_c)}) +#define ZEN_FMW_ZAS_DistFarNear(C) (compile format ["if ((_this select 0) distance %1 > (_this select 1) distance %1) exitWith {-1}; (if ((_this select 0) distance %1 == (_this select 1) distance %1) then {0} else {1})", C]) +#define ZEN_FMW_ZAS_DistNearFar(C) (compile format ["if ((_this select 0) distance %1 < (_this select 1) distance %1) exitWith {-1}; (if ((_this select 0) distance %1 == (_this select 1) distance %1) then {0} else {1})", C]) +#define ZEN_FMW_ZAS_IntInArray(I) (compile format["if (((_this select 0) select %1) < ((_this select 1) select %1)) exitWith {-1}; (if (((_this select 0) select %1) == ((_this select 1) select %1)) then {0} else {1})", I]) +#define ZEN_FMW_ZAS_StringLength {if (count toArray (_this select 0) < count toArray (_this select 1)) exitWith {-1}; (if (count toArray (_this select 0) == count toArray (_this select 1)) then {0} else {1})} + +#define ZEN_FMW_ZAF_NotString(S) (compile format ["(if (typeName _this == 'STRING') then {!(['%1', _this] call Zen_StringIsInString)} else {false})", S]) +#define ZEN_FMW_ZAF_String(S) (compile format ["(if (typeName _this == 'STRING') then {(['%1', _this] call Zen_StringIsInString)} else {false})", S]) +#define ZEN_FMW_ZAF_Type(T) (compile format ["((toLower typeName _this) == '%1')", (toLower T)]) + +#define ZEN_FMW_ZFGP_Beach 1, [3,50], 0, 0, 0, [2,30], [1,10], 0, [1,10,10] +#define ZEN_FMW_ZFGP_DeepSea 2, 0, 0, 0, 0, 0, 0, 0, [1, -50] +#define ZEN_FMW_ZFGP_Flat 1, 0, 0, 0, 0, 0, [1,10] +#define ZEN_FMW_ZFGP_Forest 1, [3,100], 0, [1,0,20], 0, [1,50], 0, [2,[4, -1, -1], 20] +#define ZEN_FMW_ZFGP_Hill 1, 0, 0, 0, 0, [1,25], [2,20], 0, [2,25,10] +#define ZEN_FMW_ZFGP_LandingZone 1, [1,100], 0, [1,0,20], 0, [1,25], [1,20], [1,[0, 1, -1], 20] +#define ZEN_FMW_ZFGP_NotForest 1, 0, 0, 0, 0, 0, 0, [1,[1, -1, -1], 20] +#define ZEN_FMW_ZFGP_Urban 1, [2, 0], 0, [2,1,25], 0, [1,100], 0, [1,[1,-1,-1], 20] + +#define ZEN_FMW_Loadout_DefaultPreset (["Rifleman", "AT Rifleman", "Assistant AA", "Assistant AT", "Assistant AR", "Team Leader", "Squad Leader", "Grenadier", "Auto Rifleman", "Marksman", "Medic", "AA Specialist", "AT Specialist", "Sapper", "Miner", "EOD Specialist"]) +#define ZEN_FMW_Loadout_StdInfantryPreset (["Rifleman", "Rifleman", "Rifleman", "AT Rifleman", "Assistant AR", "Team Leader", "Squad Leader", "Grenadier", "Grenadier", "Auto Rifleman", "Auto Rifleman", "Marksman", "Medic"]) diff --git a/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_GetCurrentTask.sqf b/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_GetCurrentTask.sqf new file mode 100644 index 0000000..ab55c09 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_GetCurrentTask.sqf @@ -0,0 +1,41 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" +#include "Zen_FrameworkLibrary.sqf" + +_Zen_stack_Trace = ["Zen_GetCurrentTask", _this] call Zen_StackAdd; +private ["_unit", "_unitTasks"]; + +if !([_this, [["OBJECT"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + ([]) +}; + +_unit = _this select 0; + +if (local _unit) then { + _nameString = ""; + _curTask = currentTask _unit; + + if !(isNull _curTask) then { + { + if (_curTask in (_x select 1)) exitWith { + _nameString = _x select 0; + }; + } forEach Zen_Task_Array_Local; + }; + + _unit setVariable ["Zen_Current_Task", _nameString, true]; +} else { + ZEN_FMW_MP_REClient("Zen_GetCurrentTask", _this, call, _unit) + + waitUntil { + ZEN_STD_Code_SleepFrames(5) + !((_unit getVariable ["Zen_Current_Task", 0]) isEqualTo 0) + }; +}; + +call Zen_StackRemove; +(_unit getVariable "Zen_Current_Task") diff --git a/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_GetTaskDataGlobal.sqf b/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_GetTaskDataGlobal.sqf new file mode 100644 index 0000000..477057a --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_GetTaskDataGlobal.sqf @@ -0,0 +1,34 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_GetTaskDataGlobal", _this] call Zen_StackAdd; +private ["_nameString", "_printError", "_taskArray"]; + +if !([_this, [["STRING"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + ([]) +}; + +_nameString = _this select 0; + +_printError = true; +if (count _this > 1) then { + _printError = _this select 1; +}; + +_taskArray = []; + +{ + if ([(_x select 0), _nameString] call Zen_ValuesAreEqual) exitWith { + _taskArray =+ _x; + }; +} forEach Zen_Task_Array_Global; + +if ((_printError) && {count _taskArray == 0}) then { + 0 = ["Zen_GetTaskDataGlobal", "Given task does not exist", _this] call Zen_PrintError; + call Zen_StackPrint; +}; + +call Zen_StackRemove; +(_taskArray) diff --git a/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_GetTaskDataLocal.sqf b/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_GetTaskDataLocal.sqf new file mode 100644 index 0000000..e5db13e --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_GetTaskDataLocal.sqf @@ -0,0 +1,23 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_GetTaskDataLocal", _this] call Zen_StackAdd; +private ["_nameString", "_taskArray"]; + +if !([_this, [["STRING"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + ([]) +}; + +_nameString = _this select 0; +_taskArray = []; + +{ + if ([(_x select 0), _nameString] call Zen_ValuesAreEqual) exitWith { + _taskArray =+ _x; + }; +} forEach Zen_Task_Array_Local; + +call Zen_StackRemove; +(_taskArray) diff --git a/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_GetUnitTasks.sqf b/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_GetUnitTasks.sqf new file mode 100644 index 0000000..cc559b4 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_GetUnitTasks.sqf @@ -0,0 +1,23 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_GetUnitTasks", _this] call Zen_StackAdd; +private ["_unit", "_unitTasks"]; + +if !([_this, [["OBJECT"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + ([]) +}; + +_unit = _this select 0; +_unitTasks = []; + +{ + if (_unit in (_x select 1)) then { + _unitTasks pushBack (_x select 0); + }; +} forEach Zen_Task_Array_Global; + +call Zen_StackRemove; +(_unitTasks) diff --git a/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_InvokeTask.sqf b/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_InvokeTask.sqf new file mode 100644 index 0000000..a0372f0 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_InvokeTask.sqf @@ -0,0 +1,69 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_InvokeTask", _this] call Zen_StackAdd; +private ["_units", "_descriptionLong", "_descriptionShort", "_destination", "_isCurrent", "_nameString", "_vars", "_parentTask"]; + +if !([_this, [["VOID"], ["STRING"], ["STRING"], ["VOID"], ["BOOL"], ["STRING"], ["STRING"]], [], 3] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + ("") +}; + +_units = [(_this select 0)] call Zen_ConvertToObjectArray; +_descriptionLong = _this select 1; +_descriptionShort = _this select 2; + +_destination = [0,0,0]; +_isCurrent = false; +_parentTask = ""; +_nameString = format ["Zen_task_global_%1",([10] call Zen_StringGenerateRandom)]; + +if (count _this > 3) then { + if !([(_this select 3), 0] call Zen_ValuesAreEqual) then { + _destination = [(_this select 3)] call Zen_ConvertToPosition; + }; +}; + +if (count _this > 4) then { + _isCurrent = _this select 4; +}; + +if (count _this > 5) then { + _parentTask = _this select 5; +}; + +if (count _this > 6) then { + _nameString = _this select 6; +}; + +_oldData = [_nameString, false] call Zen_GetTaskDataGlobal; + +if (count _oldData > 0) exitWith { + 0 = ["Zen_InvokeTask", "A task with the given name already exists", _this] call Zen_PrintError; + call Zen_StackPrint; + call Zen_StackRemove; + (_nameString) +}; + +Zen_Task_Array_Global pushBack [_nameString, _units, "created", _destination, _descriptionLong, _descriptionShort, _parentTask, []]; +publicVariable "Zen_Task_Array_Global"; + +_vars = [_units, _descriptionLong, _descriptionShort, _destination, _isCurrent, _nameString, _parentTask]; +0 = _vars call Zen_InvokeTaskClient; + +if (isMultiplayer) then { + Zen_MP_Closure_Packet = ["Zen_InvokeTaskClient", _vars]; + publicVariable "Zen_MP_Closure_Packet"; +}; + +if (_isCurrent) then { + 0 = [_nameString] call Zen_SetTaskCurrent; +}; + +if !([_parentTask, ""] call Zen_ValuesAreEqual) then { + 0 = [_parentTask, 0, 0, 0, 0, false, false, _nameString] call Zen_UpdateTask; +}; + +call Zen_StackRemove; +(_nameString) diff --git a/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_InvokeTaskBriefing.sqf b/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_InvokeTaskBriefing.sqf new file mode 100644 index 0000000..00ba464 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_InvokeTaskBriefing.sqf @@ -0,0 +1,40 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_InvokeTaskBriefing", _this] call Zen_StackAdd; +private ["_units", "_descriptionLong", "_descriptionShort", "_destination", "_nameString", "_parentTask"]; + +if !([_this, [["VOID"], ["STRING"], ["STRING"], ["STRING"], ["VOID"], ["STRING"]], [], 4] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_units = [(_this select 0)] call Zen_ConvertToObjectArray; +_descriptionLong = _this select 1; +_descriptionShort = _this select 2; +_nameString = _this select 3; + +_destination = [0,0,0]; +_parentTask = ""; + +if (count _this > 4) then { + if !([(_this select 4), 0] call Zen_ValuesAreEqual) then { + _destination = [(_this select 4)] call Zen_ConvertToPosition; + }; +}; + +if (count _this > 5) then { + _parentTask = _this select 5; +}; + +if (time > 0.1) exitWith { + 0 = ["Zen_InvokeTaskBriefing", "Use this function only during the briefing", _this] call Zen_PrintError; + call Zen_StackPrint; + call Zen_StackRemove; +}; + +Zen_Task_Array_Global pushBack [_nameString, _units, "created", _destination, _descriptionLong, _descriptionShort, _parentTask, []]; +0 = [_units, _descriptionLong, _descriptionShort, _destination, false, _nameString, _parentTask] call Zen_InvokeTaskClient; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_InvokeTaskClient.sqf b/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_InvokeTaskClient.sqf new file mode 100644 index 0000000..a811c37 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_InvokeTaskClient.sqf @@ -0,0 +1,89 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_InvokeTaskClient", _this] call Zen_StackAdd; +private ["_descriptionLong", "_descriptionShort", "_destination", "_isCurrent", "_nameString", "_task", "_units", "_localTaskArray", "_parentTaskLocal", "_parentTask", "_parentDataLocal", "_taskIndex", "_localTaskData", "_taskIndexes"]; + +if !([_this, [["ARRAY"], ["STRING"], ["STRING"], ["ARRAY"], ["BOOL"], ["STRING"], ["STRING"]], [["OBJECT"], [], [], ["SCALAR"]], 7] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_units = _this select 0; +_descriptionLong = _this select 1; +_descriptionShort = _this select 2; +_destination = _this select 3; +_isCurrent = _this select 4; +_nameString = _this select 5; +_parentTask = _this select 6; + +if (count _units == 0) exitWith { + call Zen_StackRemove; +}; + +_localTaskArray = []; +_parentTaskLocal = taskNull; + +{ + private "_unit"; + _unit = _x; + + if !([_parentTask, ""] call Zen_ValuesAreEqual) then { + _parentDataLocal = [_parentTask] call Zen_GetTaskDataLocal; + if (count _parentDataLocal == 0) then { + if (time > 0.25) then { + 0 = ["Zen_InvokeTaskClient", "Given parent task does not exist.", _this] call Zen_PrintError; + call Zen_StackPrint; + } else { + 0 = [+_Zen_stack_Trace, _this] spawn { + private ["_Zen_stack_Trace", "_args"]; + _Zen_stack_Trace = _this select 0; + _args = _this select 1; + sleep 1; + 0 = ["Zen_InvokeTaskClient", "Given parent task does not exist.", _args] call Zen_PrintError; + call Zen_StackPrint; + }; + }; + } else { + { + if (_x in simpleTasks _unit) exitWith { + _parentTaskLocal = _x; + }; + } forEach (([_parentTask] call Zen_GetTaskDataLocal) select 1); + }; + }; + + _task = _unit createSimpleTask [(format ["Zen_task_local_%1",([10] call Zen_StringGenerateRandom)]), _parentTaskLocal]; + _task setSimpleTaskDescription [_descriptionLong, _descriptionShort, _descriptionShort]; + + if !([_destination, [0,0,0]] call Zen_ValuesAreEqual) then { + _task setSimpleTaskDestination _destination; + }; + + _localTaskArray pushBack _task; +} forEach _units; + +_localTaskData = [_nameString] call Zen_GetTaskDataLocal; + +if (count _localTaskData > 0) then { + _taskIndexes = [Zen_Task_Array_Local, _nameString, 0] call Zen_ArrayGetNestedIndex; + + if (count _taskIndexes == 0) then { + _taskIndex = count Zen_Task_Array_Local; + } else { + _taskIndex = _taskIndexes select 0; + }; + + Zen_Task_Array_Local set [_taskIndex, [_nameString, ((_localTaskData select 1) + _localTaskArray)]]; +} else { + Zen_Task_Array_Local pushBack [_nameString, _localTaskArray]; +}; + +if (!(_isCurrent) && {(!isDedicated && hasInterface)}) then { + if (player in _units) then { + 0 = ["TaskCreated", ["", _descriptionShort]] call bis_fnc_showNotification; + }; +}; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_ReassignTask.sqf b/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_ReassignTask.sqf new file mode 100644 index 0000000..27f74d9 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_ReassignTask.sqf @@ -0,0 +1,56 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_ReassignTask", _this] call Zen_StackAdd; +private ["_nameString", "_unitsAdded", "_unitsRemoved", "_taskArray"]; + +if !([_this, [["STRING"], ["VOID"], ["VOID"]], [], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_nameString = _this select 0; +_unitsAdded = [(_this select 1)] call Zen_ConvertToObjectArray; + +_unitsRemoved = []; + +if (count _this > 2) then { + _unitsRemoved = [(_this select 2)] call Zen_ConvertToObjectArray; +}; + +_taskArray = [_nameString] call Zen_GetTaskDataGlobal; + +if (count _taskArray == 0) exitWith { + 0 = ["Zen_ReassignTask", "Given task does not exist", _this] call Zen_PrintError; + call Zen_StackPrint; + call Zen_StackRemove; +}; + +0 = [_unitsAdded, (_taskArray select 4), (_taskArray select 5), (_taskArray select 3), false, _nameString, (_taskArray select 6)] call Zen_InvokeTaskClient; + +if (count _unitsRemoved > 0) then { + 0 = [_nameString, _unitsRemoved] call Zen_RemoveTaskClient; +}; + +if (isMultiplayer) then { + Zen_MP_Closure_Packet = ["Zen_InvokeTaskClient", [_unitsAdded, (_taskArray select 4), (_taskArray select 5), (_taskArray select 3), false, _nameString, (_taskArray select 6)]]; + publicVariable "Zen_MP_Closure_Packet"; + + if (count _unitsRemoved > 0) then { + Zen_MP_Closure_Packet = ["Zen_RemoveTaskClient", [_nameString, _unitsRemoved]]; + publicVariable "Zen_MP_Closure_Packet"; + }; +}; + +{ + if ((_x select 0) == _nameString) exitWith { + Zen_Task_Array_Global set [_forEachIndex, [(_x select 0), (((_x select 1) - _unitsRemoved) + _unitsAdded), (_x select 2), (_x select 3), (_x select 4), (_x select 5), (_x select 6), (_x select 7)]]; + }; +} forEach Zen_Task_Array_Global; +publicVariable "Zen_Task_Array_Global"; + +0 = [_nameString, 0, 0, 0, 0, false, false] call Zen_UpdateTask; +0 = [] call Zen_CleanGlobalTaskArray; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_RemoveTask.sqf b/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_RemoveTask.sqf new file mode 100644 index 0000000..313a538 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_RemoveTask.sqf @@ -0,0 +1,45 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_RemoveTask", _this] call Zen_StackAdd; +private ["_nameString", "_units", "_taskArray"]; + +if !([_this, [["STRING"], ["VOID"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_nameString = _this select 0; + +_taskArray = [_nameString] call Zen_GetTaskDataGlobal; + +if (count _taskArray == 0) exitWith { + 0 = ["Zen_RemoveTask", "Given task does not exist", _this] call Zen_PrintError; + call Zen_StackPrint; + call Zen_StackRemove; +}; + +if (count _this > 1) then { + _units = [(_this select 1)] call Zen_ConvertToObjectArray; +} else { + _units = _taskArray select 1; +}; + +{ + if ((_x select 0) == _nameString) then { + Zen_Task_Array_Global set [_forEachIndex, [(_x select 0), ((_x select 1) - _units), (_x select 2), (_x select 3), (_x select 4), (_x select 5), (_x select 6), (_x select 7)]]; + }; +} forEach Zen_Task_Array_Global; +publicVariable "Zen_Task_Array_Global"; + +0 = [_nameString, _units] call Zen_RemoveTaskClient; + +if (isMultiplayer) then { + Zen_MP_Closure_Packet = ["Zen_RemoveTaskClient", [_nameString, _units]]; + publicVariable "Zen_MP_Closure_Packet"; +}; + +0 = [] call Zen_CleanGlobalTaskArray; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_RemoveTaskClient.sqf b/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_RemoveTaskClient.sqf new file mode 100644 index 0000000..168a89b --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_RemoveTaskClient.sqf @@ -0,0 +1,52 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +if (count Zen_Task_Array_Local == 0) exitWith {}; + +_Zen_stack_Trace = ["Zen_RemoveTaskClient", _this] call Zen_StackAdd; +private ["_nameString", "_units", "_unit", "_taskArray", "_localTaskData", "_taskIndexes", "_tasksRemain"]; + +if !([_this, [["STRING"], ["ARRAY"]], [[], ["OBJECT"]], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_nameString = _this select 0; +_units = _this select 1; + +if (count _units == 0) exitWith { + call Zen_StackRemove; +}; + +_taskIndexes = [Zen_Task_Array_Local, _nameString, 0] call Zen_ArrayGetNestedIndex; + +if (count _taskIndexes == 0) exitWith { + call Zen_StackRemove; +}; + +_localTaskData = Zen_Task_Array_Local select (_taskIndexes select 0); +_taskArray = _localTaskData select 1; +_tasksRemain = []; + +{ + _unit = _x; + { + if !(isNull _x) then { + if (_x in simpleTasks _unit) then { + _unit removeSimpleTask _x; + } else { + _tasksRemain pushBack _x; + }; + }; + } forEach _taskArray; +} forEach _units; + +Zen_Task_Array_Local set [(_taskIndexes select 0), [_nameString, _tasksRemain]]; +0 = [] call Zen_CleanLocalTaskArray; + +if ((!isDedicated && hasInterface) && {(player in _units)}) then { + 0 = ["TaskRemoved", ["", (([_nameString] call Zen_GetTaskDataGlobal) select 5)]] call bis_fnc_showNotification; +}; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_SetTaskCurrent.sqf b/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_SetTaskCurrent.sqf new file mode 100644 index 0000000..686a790 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_SetTaskCurrent.sqf @@ -0,0 +1,37 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_SetTaskCurrent", _this] call Zen_StackAdd; +private ["_vars", "_nameString", "_taskArray", "_units"]; + +if !([_this, [["STRING"], ["VOID"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_nameString = _this select 0; + +if (count _this > 1) then { + _units = [(_this select 1)] call Zen_ConvertToObjectArray; + _vars = [_nameString, _units]; +} else { + _vars = [_nameString, (([_nameString] call Zen_GetTaskDataGlobal) select 1)]; +}; + +_taskArray = [_nameString] call Zen_GetTaskDataGlobal; + +if (count _taskArray == 0) exitWith { + 0 = ["Zen_SetTaskCurrent", "Given task does not exist", _this] call Zen_PrintError; + call Zen_StackPrint; + call Zen_StackRemove; +}; + +0 = _vars call Zen_SetTaskCurrentClient; + +if (isMultiplayer) then { + Zen_MP_Closure_Packet = ["Zen_SetTaskCurrentClient", _vars]; + publicVariable "Zen_MP_Closure_Packet"; +}; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_SetTaskCurrentClient.sqf b/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_SetTaskCurrentClient.sqf new file mode 100644 index 0000000..1d1c8b5 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_SetTaskCurrentClient.sqf @@ -0,0 +1,42 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_SetTaskCurrentClient", _this] call Zen_StackAdd; +private ["_nameString", "_units", "_taskArray", "_unit", "_localTaskData"]; + +if !([_this, [["STRING"], ["ARRAY"]], [[], ["OBJECT"]], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_nameString = _this select 0; +_units = _this select 1; + +_localTaskData = [_nameString] call Zen_GetTaskDataLocal; + +if (count _localTaskData == 0) then { + waitUntil { + sleep 1; + ((count ([_nameString] call Zen_GetTaskDataLocal)) > 0) + }; + + _localTaskData = [_nameString] call Zen_GetTaskDataLocal; +}; + +_taskArray = _localTaskData select 1; + +{ + _unit = _x; + { + if (_x in simpleTasks _unit) then { + _unit setCurrentTask _x; + }; + } forEach _taskArray; +} forEach _units; + +if ((!isDedicated && hasInterface) && {(player in _units)}) then { + 0 = ["TaskAssigned", ["", (([_nameString] call Zen_GetTaskDataGlobal) select 5)]] call bis_fnc_showNotification; +}; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_SetTaskTarget.sqf b/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_SetTaskTarget.sqf new file mode 100644 index 0000000..615aacb --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_SetTaskTarget.sqf @@ -0,0 +1,31 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_SetTaskTarget", _this] call Zen_StackAdd; +private ["_taskString", "_destination", "_taskArray"]; + +if !([_this, [["STRING"], ["OBJECT"]], [], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_taskString = _this select 0; +_destination = _this select 1; + +_taskArray = [_taskString] call Zen_GetTaskDataGlobal; + +if (count _taskArray == 0) exitWith { + 0 = ["Zen_SetTaskTarget", "Given task does not exist", _this] call Zen_PrintError; + call Zen_StackPrint; + call Zen_StackRemove; +}; + +0 = _this call Zen_SetTaskTargetClient; + +if (isMultiplayer) then { + Zen_MP_Closure_Packet = ["Zen_SetTaskTargetClient", _this]; + publicVariable "Zen_MP_Closure_Packet"; +}; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_SetTaskTargetClient.sqf b/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_SetTaskTargetClient.sqf new file mode 100644 index 0000000..02c562f --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_SetTaskTargetClient.sqf @@ -0,0 +1,32 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +if ((count Zen_Task_Array_Local) == 0) exitWith {}; + +_Zen_stack_Trace = ["Zen_SetTaskTargetClient", _this] call Zen_StackAdd; +private ["_nameString", "_taskArray", "_localTaskData", "_globalTaskData", "_taskUnits", "_target"]; + +if !([_this, [["STRING"], ["OBJECT"]], [], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_nameString = _this select 0; +_target = _this select 1; + +_localTaskData = [_nameString] call Zen_GetTaskDataLocal; +_globalTaskData = [_nameString] call Zen_GetTaskDataGlobal; + +_taskArray = _localTaskData select 1; +_taskUnits = _globalTaskData select 1; + +{ + _x setSimpleTaskTarget [_target, true]; +} forEach _taskArray; + +if ((!isDedicated && hasInterface) && {(player in _taskUnits)}) then { + 0 = ["TaskUpdated", ["", (_globalTaskData select 5)]] call bis_fnc_showNotification; +}; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_StandardLibrary.sqf b/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_StandardLibrary.sqf new file mode 100644 index 0000000..4a13a58 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_StandardLibrary.sqf @@ -0,0 +1,155 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#define ZEN_STD_Array_LastElement(A) (A select (count A - 1)) +#define ZEN_STD_Array_RandIndex(A) (floor random count A) +#define ZEN_STD_Array_RandElement(A) (A select (floor random count A)) +#define ZEN_STD_Array_UnorderedRemove(A, I) \ + A set [I, A select (count A - 1)]; \ + A resize (count A - 1); + +#define ZEN_STD_Code_WaitScript(S) \ + waitUntil { \ + sleep 1; \ + (scriptDone S) \ + }; + +#define ZEN_STD_Code_SleepFrames(F) sleep (F / diag_fps); + +#define ZEN_STD_Code_SwapVars(X, Y) \ + _Zen_tempVar = X; \ + X = Y; \ + Y = _Zen_tempVar; \ + _Zen_tempVar = nil; + +#define ZEN_STD_Math_RandNegativePositive() (if (random 1 > 0.5) then {1} else {-1}) + +#define ZEN_STD_Math_MarkerArea(M) \ + (if (toLower markerShape M == "ellipse") then { \ + (((markerSize M) select 0) * ((markerSize M) select 1) * pi) \ + } else { \ + (((markerSize M) select 0) * ((markerSize M) select 1) * 4) \ + }) + +#define ZEN_STD_Math_VectCartCyl(V) ([(vectorMagnitude [(V select 0), (V select 1), 0]), (V select 1) atan2 (V select 0), (V select 2)]) +#define ZEN_STD_Math_VectCartPolar(V) ([(vectorMagnitude V), (V select 1) atan2 (V select 0), acos ((V select 2) / (vectorMagnitude V))]) + +#define ZEN_STD_Math_VectCylCart(V) ([(V select 0) * cos (V select 1), (V select 0) * sin (V select 1), (V select 2)]) +#define ZEN_STD_Math_VectCylPolar(V) ([(vectorMagnitude [(V select 0), 0, (V select 2)]), (V select 1), (V select 0) atan2 (V select 2)]) + +#define ZEN_STD_Math_VectPolarCart(V) ([(V select 0) * cos (V select 1) * sin (V select 2), (V select 0) * sin (V select 1) * sin (V select 2), (V select 0) * cos (V select 2)]) +#define ZEN_STD_Math_VectPolarCyl(V) ([(V select 0) * sin (V select 2), (V select 1), (V select 0) * cos (V select 2)]) + +#define ZEN_STD_Math_VectRotateX(P, A) ([(P select 0), (P select 1) * cos A + (P select 2) * sin A, - (P select 1) * sin A + (P select 2) * cos A]) +#define ZEN_STD_Math_VectRotateY(P, A) ([(P select 0) * cos A - (P select 2) * sin A, (P select 1), (P select 0) * sin A + (P select 2) * cos A]) +#define ZEN_STD_Math_VectRotateZ(P, A) ([(P select 0) * cos A + (P select 1) * sin A, - (P select 0) * sin A + (P select 1) * cos A, (P select 2)]) + +#define ZEN_STD_Math_VectTransform(P, X, Y, Z) ([(P select 0) + X, (P select 1) + Y, (P select 2) + Z]) + +#define ZEN_STD_OBJ_ATLPositionZ(O) ((getPosATL O) select 2) +#define ZEN_STD_OBJ_ASLPositionZ(O) ((getPosASL O) select 2) +#define ZEN_STD_OBJ_BBX(O) abs ((((boundingBoxReal O) select 0) select 0) - (((boundingBoxReal O) select 1) select 0)) +#define ZEN_STD_OBJ_BBY(O) abs ((((boundingBoxReal O) select 0) select 1) - (((boundingBoxReal O) select 1) select 1)) +#define ZEN_STD_OBJ_BBZ(O) abs ((((boundingBoxReal O) select 0) select 2) - (((boundingBoxReal O) select 1) select 2)) + +#define ZEN_STD_OBJ_AnimateDoors(V, C) \ + { \ + V animateDoor [(configName _x), C]; \ + } forEach ("((toLower (getText (_x >> 'source'))) == 'door')" configClasses (configFile >> "CfgVehicles" >> (typeOf V) >> "AnimationSources")); + +#define ZEN_STD_OBJ_CountBuildingPos(V, B) \ + V = 0; \ + for "_i" from 0 to 100 do { \ + if ((B buildingPos V) isEqualTo [0,0,0]) exitWith {}; \ + V = V + 1; \ + }; \ + V = V - 1; + +#define ZEN_STD_OBJ_CountCargoSeats(V) (getNumber (configFile >> "CfgVehicles" >> (typeOf V) >> "transportSoldier")) +#define ZEN_STD_OBJ_DeleteVehCrew(V) \ + { \ + deleteVehicle _x; \ + } forEach (crew V + [V]); + +#define ZEN_STD_OBJ_MakePOW(O) \ + O setCaptive true; \ + O disableAI "move"; \ + O setUnitPos "UP"; \ + removeAllWeapons O; \ + removeBackpack O; \ + removeGoggles O; \ + removeHeadgear O; + +#define ZEN_STD_OBJ_OrderGetOut(U, V) \ + U orderGetIn false; \ + { \ + unassignVehicle _x; \ + _x leaveVehicle V; \ + } forEach U; + +#define ZEN_STD_OBJ_OrderGetIn(U, V) \ + { \ + _x assignAsCargo V; \ + } forEach U; \ + U orderGetIn true; + +#define ZEN_STD_OBJ_OrientAircraft(O, P, S) \ + _Zen_vDirToLZ = ((getPosATL O) vectorFromTo P); \ + _Zen_dirToLZ = ZEN_STD_Math_VectCartCyl(_Zen_vDirToLZ) select 1; \ + sleep (5 / diag_fps); \ + O setDir (90 - _Zen_dirToLZ); \ + O setVelocity [S * cos _Zen_dirToLZ, S * sin _Zen_dirToLZ, 0]; + +#define ZEN_STD_OBJ_ParachuteInsertion(O, P, H) \ + _Zen_dir = random 360; \ + { \ + _x setPosATL (P vectorAdd [50 * _forEachIndex * cos _Zen_dir, 50 * _forEachIndex * sin _Zen_dir, H]); \ + removeBackpackGlobal _x; \ + _x addBackpackGlobal "b_parachute"; \ + } forEach O; + +#define ZEN_STD_OBJ_TransformATL(O, X, Y, Z) O setPosATL [((getPosATL O) select 0) + X, ((getPosATL O) select 1) + Y, ((getPosATL O) select 2) + Z]; + +#define ZEN_STD_Parse_GetArgumentDefault(V, I, D) \ + if (count _this > I) then { \ + V = _this select I; \ + } else { \ + V = D; \ + }; + +#define ZEN_STD_Parse_GetSetArgumentDefault(V, I, D, R) \ + if (count _this > I) then { \ + V = _this select I; \ + } else { \ + V = D; \ + }; \ + _this set [I, R]; + +#define ZEN_STD_Parse_GetSetArgumentOptional(V, I, D, R) \ + if (count _this > I) then { \ + V = _this select I; \ + } else { \ + V = D; \ + _this set [I, R]; \ + }; + +#define ZEN_STD_Parse_GetArgument(V, I) \ + if (count _this > I) then { \ + V = _this select I; \ + }; + +#define ZEN_STD_Parse_ToArray(X) \ + if (typeName X != "ARRAY") then { \ + X = [X]; \ + }; + +#define ZEN_STD_Parse_ToString(X) \ + if (typeName X != "STRING") then { \ + X = str X; \ + }; + +#define ZEN_STD_Parse_ToStringLower(X) \ + if (typeName X != "STRING") then { \ + X = toLower str X; \ + }; diff --git a/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_TaskNotifications.hpp b/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_TaskNotifications.hpp new file mode 100644 index 0000000..c79d2e7 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_TaskNotifications.hpp @@ -0,0 +1,14 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +// class CfgNotifications { + class TaskRemoved { + title = "TASK REMOVED"; + iconPicture = "\A3\ui_f\data\map\mapcontrol\taskIconCanceled_ca.paa"; + description = "%2"; + color[] = {0.7,0.7,0.7,1}; + priority = 6; + sound = "taskCanceled"; + }; +// }; diff --git a/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_TaskSystemCompile.sqf b/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_TaskSystemCompile.sqf new file mode 100644 index 0000000..1f31239 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_TaskSystemCompile.sqf @@ -0,0 +1,29 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +Zen_Task_Array_Global = []; +Zen_Task_Array_Local = []; + +Zen_AreTasksComplete = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_TaskSystem\Zen_AreTasksComplete.sqf"; +Zen_AreUnitsTasksComplete = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_TaskSystem\Zen_AreUnitsTasksComplete.sqf"; +Zen_CleanGlobalTaskArray = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_TaskSystem\Zen_CleanGlobalTaskArray.sqf"; +Zen_CleanLocalTaskArray = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_TaskSystem\Zen_CleanLocalTaskArray.sqf"; +Zen_GetCurrentTask = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_TaskSystem\Zen_GetCurrentTask.sqf"; +Zen_GetTaskDataGlobal = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_TaskSystem\Zen_GetTaskDataGlobal.sqf"; +Zen_GetTaskDataLocal = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_TaskSystem\Zen_GetTaskDataLocal.sqf"; +Zen_GetUnitTasks = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_TaskSystem\Zen_GetUnitTasks.sqf"; +Zen_InvokeTask = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_TaskSystem\Zen_InvokeTask.sqf"; +Zen_InvokeTaskBriefing = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_TaskSystem\Zen_InvokeTaskBriefing.sqf"; +Zen_InvokeTaskClient = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_TaskSystem\Zen_InvokeTaskClient.sqf"; +Zen_ReassignTask = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_TaskSystem\Zen_ReassignTask.sqf"; +Zen_RemoveTask = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_TaskSystem\Zen_RemoveTask.sqf"; +Zen_RemoveTaskClient = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_TaskSystem\Zen_RemoveTaskClient.sqf"; +Zen_SetTaskCurrent = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_TaskSystem\Zen_SetTaskCurrent.sqf"; +Zen_SetTaskTarget = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_TaskSystem\Zen_SetTaskTarget.sqf"; +Zen_SetTaskTargetClient = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_TaskSystem\Zen_SetTaskTargetClient.sqf"; +Zen_SetTaskCurrentClient = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_TaskSystem\Zen_SetTaskCurrentClient.sqf"; +Zen_UpdateTask = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_TaskSystem\Zen_UpdateTask.sqf"; +Zen_UpdateTaskClient = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_TaskSystem\Zen_UpdateTaskClient.sqf"; + +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_UpdateTask.sqf b/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_UpdateTask.sqf new file mode 100644 index 0000000..3a434fa --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_UpdateTask.sqf @@ -0,0 +1,128 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_UpdateTask", _this] call Zen_StackAdd; +private ["_nameString", "_taskState", "_destination", "_descriptionLong", "_descriptionShort", "_taskArrayNew", "_taskArrayOld", "_childTasks", "_parentTask", "_childTasksComplete", "_childTaskState", "_showNotification", "_completeParentChild", "_childTasksOld"]; + +if !([_this, [["STRING"], ["SCALAR", "STRING"], ["VOID"], ["SCALAR", "STRING"], ["SCALAR", "STRING"], ["BOOL"], ["BOOL"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_nameString = _this select 0; + +_taskState = 0; +_destination = 0; +_descriptionLong = 0; +_descriptionShort = 0; +_completeParentChild = false; +_showNotification = true; +_childTasks = []; + +if (count _this > 1) then { + _taskState = _this select 1; +}; + +if (count _this > 2) then { + _destination = _this select 2; +}; + +if (count _this > 3) then { + _descriptionLong = _this select 3; +}; + +if (count _this > 4) then { + _descriptionShort = _this select 4; +}; + +if ((count _this) > 5) then { + _completeParentChild = _this select 5; +}; + +if ((count _this) > 6) then { + _showNotification = _this select 6; +}; + +if (count _this > 7) then { + _childTasks = [(_this select 7)]; +}; + +_taskArrayOld = [_nameString] call Zen_GetTaskDataGlobal; + +if (count _taskArrayOld == 0) exitWith { + 0 = ["Zen_UpdateTask", "Given task does not exist", _this] call Zen_PrintError; + call Zen_StackPrint; + call Zen_StackRemove; +}; + +if ((typeName _taskState) == "SCALAR") then {_taskState = (_taskArrayOld select 2);}; + +if ((typeName _destination) == "SCALAR") then { + _destination = (_taskArrayOld select 3); +} else { + _destination = [_destination] call Zen_ConvertToPosition; +}; + +if ((typeName _descriptionLong) == "SCALAR") then {_descriptionLong = (_taskArrayOld select 4);}; + +if ((typeName _descriptionShort) == "SCALAR") then {_descriptionShort = (_taskArrayOld select 5);}; + +_childTasksOld = _taskArrayOld select 7; +if (count _childTasks > 0) then { + 0 = [_childTasksOld, _childTasks] call Zen_ArrayAppendNested; +}; + +_taskArrayNew = [(_taskArrayOld select 0), (_taskArrayOld select 1), _taskState, _destination, _descriptionLong, _descriptionShort, (_taskArrayOld select 6), _childTasksOld]; + +{ + if ((_x select 0) == _nameString) then { + Zen_Task_Array_Global set [_forEachIndex, _taskArrayNew]; + }; +} forEach Zen_Task_Array_Global; +publicVariable "Zen_Task_Array_Global"; + +0 = [_nameString, _taskState, _showNotification] call Zen_UpdateTaskClient; + +if (isMultiplayer) then { + Zen_MP_Closure_Packet = ["Zen_UpdateTaskClient", [_nameString, _taskState, _showNotification]]; + publicVariable "Zen_MP_Closure_Packet"; +}; + +if (_completeParentChild) then { + _taskArrayNew = [_nameString] call Zen_GetTaskDataGlobal; + + _parentTask = _taskArrayNew select 6; + _childTasks = _taskArrayNew select 7; + + if ([_taskState, ["failed", "succeeded", "canceled"]] call Zen_ValueIsInArray) then { + { + _childTaskState = ([_x] call Zen_GetTaskDataGlobal) select 2; + if !([_childTaskState, ["failed", "succeeded", "canceled"]] call Zen_ValueIsInArray) then { + 0 = [_x, _taskState] call Zen_UpdateTask; + }; + } forEach _childTasks; + }; + + if !([_parentTask, ""] call Zen_ValuesAreEqual) then { + + _childTasks = ([_parentTask] call Zen_GetTaskDataGlobal) select 7; + _childTasksComplete = true; + + { + _taskState = ([_x] call Zen_GetTaskDataGlobal) select 2; + if !([_taskState, "succeeded"] call Zen_ValuesAreEqual) exitWith { + _childTasksComplete = false; + }; + } forEach _childTasks; + + if (_childTasksComplete) then { + _taskState = ([_parentTask] call Zen_GetTaskDataGlobal) select 2; + if !([_taskState, ["failed", "succeeded", "canceled"]] call Zen_ValueIsInArray) then { + 0 = [_parentTask, "succeeded"] call Zen_UpdateTask; + }; + }; + }; +}; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_UpdateTaskClient.sqf b/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_UpdateTaskClient.sqf new file mode 100644 index 0000000..6aec1de --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_TaskSystem/Zen_UpdateTaskClient.sqf @@ -0,0 +1,67 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +if ((count Zen_Task_Array_Global) == 0) exitWith {}; +if ((count Zen_Task_Array_Local) == 0) exitWith {}; + +_Zen_stack_Trace = ["Zen_UpdateTaskClient", _this] call Zen_StackAdd; +private ["_unitsTasksArrayGlobal", "_unitsTasksArrayLocal", "_nameString", "_currentTaskArray", "_destination", "_state", "_taskState", "_description", "_title", "_cfgNotifyClass", "_units", "_showNotification"]; + +if !([_this, [["STRING"], ["STRING", "SCALAR"], ["BOOL"]], [], 3] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_nameString = _this select 0; +_taskState = _this select 1; +_showNotification = _this select 2; + +_unitsTasksArrayGlobal = [_nameString] call Zen_GetTaskDataGlobal; +_unitsTasksArrayLocal = [_nameString] call Zen_GetTaskDataLocal; + +if ((count _unitsTasksArrayGlobal) == 0) exitWith { + call Zen_StackRemove; +}; + +if ((count _unitsTasksArrayLocal) == 0) exitWith { + call Zen_StackRemove; +}; + +_currentTaskArray = _unitsTasksArrayLocal select 1; + +_units = _unitsTasksArrayGlobal select 1; +_state = _unitsTasksArrayGlobal select 2; +_destination = _unitsTasksArrayGlobal select 3; +_description = _unitsTasksArrayGlobal select 4; +_title = _unitsTasksArrayGlobal select 5; + +if !([_destination, [0,0,0]] call Zen_ValuesAreEqual) then { + { + _x setSimpleTaskDestination _destination; + } forEach _currentTaskArray; +} else { + { + cancelSimpleTaskDestination _x; + } forEach _currentTaskArray; +}; + +{ + if !((_x == currentTask player) && {(_state == "created")}) then { + _x setTaskState _state; + }; + _x setSimpleTaskDescription [_description, _title, _title]; +} forEach _currentTaskArray; + +if (!(isDedicated && hasInterface) && {_showNotification}) then { + if (player in _units) then { + if !([_taskState, "Created"] call Zen_ValuesAreEqual) then { + _cfgNotifyClass = "Task" + ([(toLower _state)] call Zen_StringCapitalizeLetter); + } else { + _cfgNotifyClass = "TaskUpdated"; + }; + 0 = [_cfgNotifyClass, ["", _title]] call bis_fnc_showNotification; + }; +}; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_TriggerFunctions/Zen_FrameworkLibrary.sqf b/Zen_FrameworkFunctions/Zen_TriggerFunctions/Zen_FrameworkLibrary.sqf new file mode 100644 index 0000000..7af8176 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_TriggerFunctions/Zen_FrameworkLibrary.sqf @@ -0,0 +1,191 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#define ZEN_FMW_Array_RemoveIndexes(A, I) \ + { \ + 0 = [A, _x - _forEachIndex] call Zen_ArrayRemoveIndex; \ + } forEach I; + +#define ZEN_FMW_CFG_VehicleWeapons(V) \ + _Zen_WeaponsArray = []; \ + 0 = [_Zen_WeaponsArray, getArray (V >> "weapons")] call Zen_ArrayAppendNested; \ + { \ + 0 = [_Zen_WeaponsArray, getArray (V >> "weapons")] call Zen_ArrayAppendNested; \ + } forEach ("true" configClasses (V >> "turrets")); \ + { \ + _Zen_WeaponsArray = [_Zen_WeaponsArray, ZEN_FMW_ZAF_String(V)] call Zen_ArrayFilterCondition; \ + } forEach ["smoke", "horn", "laser", "flare", "throw", "put"]; + +#define ZEN_FMW_Code_ErrorExitVoid(F, D) \ + 0 = [F, D, _this] call Zen_PrintError; \ + call Zen_StackPrint; \ + call Zen_StackRemove; + +#define ZEN_FMW_Code_ErrorExitValue(F, D, V) \ + 0 = [F, D, _this] call Zen_PrintError; \ + call Zen_StackPrint; \ + call Zen_StackRemove; \ + V + +#define ZEN_FMW_Code_Error(F, D) \ + 0 = [F, D, _this] call Zen_PrintError; \ + call Zen_StackPrint; + +#define ZEN_FMW_Code_GiveLoadoutsOrdered(U, L, S) \ + { \ + 0 = [_x, S, (L select (_forEachIndex % (count L)))] call Zen_GiveLoadout; \ + } forEach ([U] call Zen_ConvertToObjectArray); + +#define ZEN_FMW_Code_Insertion(U, V, S, E) \ + _Zen_Vehicle = [S, V, (if (V isKindOf "Air") then {40} else {0})] call Zen_SpawnVehicle; \ + 0 = [_Zen_Vehicle] call Zen_SpawnVehicleCrew; \ + 0 = [U, _Zen_Vehicle] call Zen_MoveInVehicle; \ + 0 = [_Zen_Vehicle, [E, S], U] spawn Zen_OrderInsertion; + +#define ZEN_FMW_Code_InsertionPatrol(G, T, S, M) \ + _Zen_Vehicle = [S, T] call Zen_SpawnVehicle; \ + 0 = [_Zen_Vehicle] call Zen_SpawnVehicleCrew; \ + 0 = [G, _Zen_Vehicle] call Zen_MoveInVehicle; \ + 0 = [_Zen_Vehicle, [([M] call Zen_FindGroundPosition), _Zen_HeliStart], G, "normal", 40, "fastrope", true] spawn Zen_OrderInsertion; \ + 0 = [G, M] spawn { \ + waitUntil { \ + sleep 5; \ + ([_this select 0] call Zen_AreNotInVehicle) \ + }; \ + 0 = [_this select 0, _this select 1] spawn Zen_OrderInfantryPatrol; \ + }; + +#define ZEN_FMW_Code_SpawnMarker(M, N, S) \ + _Zen_GrpsArray = []; \ + for "_Z" from 1 to N do { \ + _Zen_Pos = [ M ] call Zen_FindGroundPosition; \ + _Zen_Group = [_Zen_Pos, S, "infantry", [4,6]] call Zen_SpawnInfantry; \ + _Zen_GrpsArray pushBack _Zen_Group; \ + }; \ + 0 = [_Zen_GrpsArray, S, ZEN_FMW_Loadout_StdInfantryPreset, false] call Zen_GiveLoadout; \ + 0 = [_Zen_GrpsArray, M] spawn Zen_OrderInfantryPatrol; + +#define ZEN_FMW_Code_SpawnPoint(C, D, N, S) \ + _Zen_GrpsArray = []; \ + for "_Z" from 1 to N do { \ + _Zen_Pos = [C, [0, D]] call Zen_FindGroundPosition; \ + _Zen_Group = [_Zen_Pos, S, "infantry", [4,6]] call Zen_SpawnInfantry; \ + _Zen_GrpsArray pushBack _Zen_Group; \ + }; \ + 0 = [_Zen_GrpsArray, S, ZEN_FMW_Loadout_StdInfantryPreset, false] call Zen_GiveLoadout; \ + 0 = [_Zen_GrpsArray, C, [0, D]] spawn Zen_OrderInfantryPatrol; + +#define ZEN_FMW_Code_SpawnPointBehind(START, END, MIND, MAXD, N, S) \ + _Zen_DirToSpawn = [START, END] call Zen_FindDirection; \ + _Zen_GrpsArray = []; \ + for "_i" from 1 to N do { \ + _Zen_SpawnPos = [END, [MIND, MAXD], 0, 1, 0, [_Zen_DirToSpawn - 90, _Zen_DirToSpawn + 90, "trig"]] call Zen_FindGroundPosition; \ + _Zen_Group = [_Zen_SpawnPos, S, "infantry", [4, 6]] call Zen_SpawnInfantry; \ + _Zen_GrpsArray pushBack _Zen_Group; \ + }; \ + 0 = [_Zen_GrpsArray, S, ZEN_FMW_Loadout_StdInfantryPreset, false] call Zen_GiveLoadout; \ + 0 = [_Zen_GrpsArray, END, [1, MAXD]] spawn Zen_OrderInfantryPatrol; \ + _Zen_DirToSpawn = nil; + +#define ZEN_FMW_Code_WaitDistanceGreater(A, B, D) \ + waitUntil { \ + sleep 2; \ + (([A, B] call Zen_Find2dDistance) > D) \ + }; + +#define ZEN_FMW_Code_WaitDistanceLess(A, B, D) \ + waitUntil { \ + sleep 2; \ + (([A, B] call Zen_Find2dDistance) < D) \ + }; + +#define ZEN_FMW_MP_REAll(F, A, I) \ + A I (missionNamespace getVariable F); \ + if (isMultiplayer) then { \ + Zen_MP_Closure_Packet = [F, A]; \ + publicVariable "Zen_MP_Closure_Packet"; \ + }; + +#define ZEN_FMW_MP_REClient(F, A, I, O) \ + if (local O) then { \ + A I (missionNamespace getVariable F); \ + } else { \ + if (isMultiplayer) then { \ + Zen_MP_Closure_Packet = [F, A]; \ + (owner O) publicVariableClient "Zen_MP_Closure_Packet"; \ + }; \ + }; + +#define ZEN_FMW_MP_RENonDedicated(F, A, I) \ + if (isMultiplayer) then { \ + Zen_MP_Closure_Packet = [F, A]; \ + publicVariable "Zen_MP_Closure_Packet"; \ + }; \ + if !(isDedicated) then { \ + A I (missionNamespace getVariable F); \ + }; + +#define ZEN_FMW_MP_REServerOnly(F, A, I) \ + if (isServer) then { \ + A I (missionNamespace getVariable F); \ + } else { \ + if (isMultiplayer) then { \ + Zen_MP_Closure_Packet = [F, A]; \ + publicVariableServer "Zen_MP_Closure_Packet"; \ + }; \ + }; + +#define ZEN_FMW_Math_DistLess2D(A, B, D) (([A, B] call Zen_Find2dDistance) < D) +#define ZEN_FMW_Math_DistGreater3D(A, B, D) ((([A] call Zen_ConvertToPosition) distance ([B] call Zen_ConvertToPosition)) > D) +#define ZEN_FMW_Math_DistGreater2D(A, B, D) (([A, B] call Zen_Find2dDistance) > D) +#define ZEN_FMW_Math_DistLess3D(A, B, D) ((([A] call Zen_ConvertToPosition) distance ([B] call Zen_ConvertToPosition)) < D) +#define ZEN_FMW_Math_RandomPoint(C, R) ([C, random R, random 360] call Zen_ExtendPosition) +#define ZEN_FMW_Math_RandomPointMin(C, S, E) ([C, S + random abs (E - S), random 360] call Zen_ExtendPosition) + +#define ZEN_FMW_Math_TerrainParallelCart(P, I) \ + _Zen_3dGradPolar = [1, [P] call Zen_FindTerrainGradient, 90 - ([P] call Zen_FindTerrainSlope)]; \ + I = ZEN_STD_Math_VectPolarCart(_Zen_3dGradPolar); + +#define ZEN_FMW_Math_TerrainGradientCart(P, I) \ + _Zen_2dGradCyl = [tan ([P] call Zen_FindTerrainSlope), [P] call Zen_FindTerrainGradient, 0]; \ + I = ZEN_STD_Math_VectCylCart(_Zen_2dGradCyl); + +#define ZEN_FMW_OBJ_DeleteDead(D) \ + { \ + _Zen_DeadUnit = _x; \ + _Zen_Delete = true; \ + { \ + if (isPlayer _x) then { \ + if ((_x distanceSqr _Zen_DeadUnit) < D*D) then { \ + _Zen_Delete = false; \ + }; \ + }; \ + } forEach allUnits; \ + if (_Zen_Delete) then { \ + deleteVehicle _x; \ + }; \ + } forEach allDead; + +#define ZEN_FMW_ZAS_ArrayLength {if (count (_this select 0) < count (_this select 1)) exitWith {-1}; (if (count (_this select 0) == count (_this select 1)) then {0} else {1})} +#define ZEN_FMW_ZAS_AlphaNumeric ({_2a = toArray (_this select 1); _c = 0; {if (_x < (_2a select _forEachIndex)) exitWith {_c = -1}; if (_x > (_2a select _forEachIndex)) exitWith {_c = 1};} forEach (toArray (_this select 0)); (_c)}) +#define ZEN_FMW_ZAS_DistFarNear(C) (compile format ["if ((_this select 0) distance %1 > (_this select 1) distance %1) exitWith {-1}; (if ((_this select 0) distance %1 == (_this select 1) distance %1) then {0} else {1})", C]) +#define ZEN_FMW_ZAS_DistNearFar(C) (compile format ["if ((_this select 0) distance %1 < (_this select 1) distance %1) exitWith {-1}; (if ((_this select 0) distance %1 == (_this select 1) distance %1) then {0} else {1})", C]) +#define ZEN_FMW_ZAS_IntInArray(I) (compile format["if (((_this select 0) select %1) < ((_this select 1) select %1)) exitWith {-1}; (if (((_this select 0) select %1) == ((_this select 1) select %1)) then {0} else {1})", I]) +#define ZEN_FMW_ZAS_StringLength {if (count toArray (_this select 0) < count toArray (_this select 1)) exitWith {-1}; (if (count toArray (_this select 0) == count toArray (_this select 1)) then {0} else {1})} + +#define ZEN_FMW_ZAF_NotString(S) (compile format ["(if (typeName _this == 'STRING') then {!(['%1', _this] call Zen_StringIsInString)} else {false})", S]) +#define ZEN_FMW_ZAF_String(S) (compile format ["(if (typeName _this == 'STRING') then {(['%1', _this] call Zen_StringIsInString)} else {false})", S]) +#define ZEN_FMW_ZAF_Type(T) (compile format ["((toLower typeName _this) == '%1')", (toLower T)]) + +#define ZEN_FMW_ZFGP_Beach 1, [3,50], 0, 0, 0, [2,30], [1,10], 0, [1,10,10] +#define ZEN_FMW_ZFGP_DeepSea 2, 0, 0, 0, 0, 0, 0, 0, [1, -50] +#define ZEN_FMW_ZFGP_Flat 1, 0, 0, 0, 0, 0, [1,10] +#define ZEN_FMW_ZFGP_Forest 1, [3,100], 0, [1,0,20], 0, [1,50], 0, [2,[4, -1, -1], 20] +#define ZEN_FMW_ZFGP_Hill 1, 0, 0, 0, 0, [1,25], [2,20], 0, [2,25,10] +#define ZEN_FMW_ZFGP_LandingZone 1, [1,100], 0, [1,0,20], 0, [1,25], [1,20], [1,[0, 1, -1], 20] +#define ZEN_FMW_ZFGP_NotForest 1, 0, 0, 0, 0, 0, 0, [1,[1, -1, -1], 20] +#define ZEN_FMW_ZFGP_Urban 1, [2, 0], 0, [2,1,25], 0, [1,100], 0, [1,[1,-1,-1], 20] + +#define ZEN_FMW_Loadout_DefaultPreset (["Rifleman", "AT Rifleman", "Assistant AA", "Assistant AT", "Assistant AR", "Team Leader", "Squad Leader", "Grenadier", "Auto Rifleman", "Marksman", "Medic", "AA Specialist", "AT Specialist", "Sapper", "Miner", "EOD Specialist"]) +#define ZEN_FMW_Loadout_StdInfantryPreset (["Rifleman", "Rifleman", "Rifleman", "AT Rifleman", "Assistant AR", "Team Leader", "Squad Leader", "Grenadier", "Grenadier", "Auto Rifleman", "Auto Rifleman", "Marksman", "Medic"]) diff --git a/Zen_FrameworkFunctions/Zen_TriggerFunctions/Zen_StandardLibrary.sqf b/Zen_FrameworkFunctions/Zen_TriggerFunctions/Zen_StandardLibrary.sqf new file mode 100644 index 0000000..4a13a58 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_TriggerFunctions/Zen_StandardLibrary.sqf @@ -0,0 +1,155 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#define ZEN_STD_Array_LastElement(A) (A select (count A - 1)) +#define ZEN_STD_Array_RandIndex(A) (floor random count A) +#define ZEN_STD_Array_RandElement(A) (A select (floor random count A)) +#define ZEN_STD_Array_UnorderedRemove(A, I) \ + A set [I, A select (count A - 1)]; \ + A resize (count A - 1); + +#define ZEN_STD_Code_WaitScript(S) \ + waitUntil { \ + sleep 1; \ + (scriptDone S) \ + }; + +#define ZEN_STD_Code_SleepFrames(F) sleep (F / diag_fps); + +#define ZEN_STD_Code_SwapVars(X, Y) \ + _Zen_tempVar = X; \ + X = Y; \ + Y = _Zen_tempVar; \ + _Zen_tempVar = nil; + +#define ZEN_STD_Math_RandNegativePositive() (if (random 1 > 0.5) then {1} else {-1}) + +#define ZEN_STD_Math_MarkerArea(M) \ + (if (toLower markerShape M == "ellipse") then { \ + (((markerSize M) select 0) * ((markerSize M) select 1) * pi) \ + } else { \ + (((markerSize M) select 0) * ((markerSize M) select 1) * 4) \ + }) + +#define ZEN_STD_Math_VectCartCyl(V) ([(vectorMagnitude [(V select 0), (V select 1), 0]), (V select 1) atan2 (V select 0), (V select 2)]) +#define ZEN_STD_Math_VectCartPolar(V) ([(vectorMagnitude V), (V select 1) atan2 (V select 0), acos ((V select 2) / (vectorMagnitude V))]) + +#define ZEN_STD_Math_VectCylCart(V) ([(V select 0) * cos (V select 1), (V select 0) * sin (V select 1), (V select 2)]) +#define ZEN_STD_Math_VectCylPolar(V) ([(vectorMagnitude [(V select 0), 0, (V select 2)]), (V select 1), (V select 0) atan2 (V select 2)]) + +#define ZEN_STD_Math_VectPolarCart(V) ([(V select 0) * cos (V select 1) * sin (V select 2), (V select 0) * sin (V select 1) * sin (V select 2), (V select 0) * cos (V select 2)]) +#define ZEN_STD_Math_VectPolarCyl(V) ([(V select 0) * sin (V select 2), (V select 1), (V select 0) * cos (V select 2)]) + +#define ZEN_STD_Math_VectRotateX(P, A) ([(P select 0), (P select 1) * cos A + (P select 2) * sin A, - (P select 1) * sin A + (P select 2) * cos A]) +#define ZEN_STD_Math_VectRotateY(P, A) ([(P select 0) * cos A - (P select 2) * sin A, (P select 1), (P select 0) * sin A + (P select 2) * cos A]) +#define ZEN_STD_Math_VectRotateZ(P, A) ([(P select 0) * cos A + (P select 1) * sin A, - (P select 0) * sin A + (P select 1) * cos A, (P select 2)]) + +#define ZEN_STD_Math_VectTransform(P, X, Y, Z) ([(P select 0) + X, (P select 1) + Y, (P select 2) + Z]) + +#define ZEN_STD_OBJ_ATLPositionZ(O) ((getPosATL O) select 2) +#define ZEN_STD_OBJ_ASLPositionZ(O) ((getPosASL O) select 2) +#define ZEN_STD_OBJ_BBX(O) abs ((((boundingBoxReal O) select 0) select 0) - (((boundingBoxReal O) select 1) select 0)) +#define ZEN_STD_OBJ_BBY(O) abs ((((boundingBoxReal O) select 0) select 1) - (((boundingBoxReal O) select 1) select 1)) +#define ZEN_STD_OBJ_BBZ(O) abs ((((boundingBoxReal O) select 0) select 2) - (((boundingBoxReal O) select 1) select 2)) + +#define ZEN_STD_OBJ_AnimateDoors(V, C) \ + { \ + V animateDoor [(configName _x), C]; \ + } forEach ("((toLower (getText (_x >> 'source'))) == 'door')" configClasses (configFile >> "CfgVehicles" >> (typeOf V) >> "AnimationSources")); + +#define ZEN_STD_OBJ_CountBuildingPos(V, B) \ + V = 0; \ + for "_i" from 0 to 100 do { \ + if ((B buildingPos V) isEqualTo [0,0,0]) exitWith {}; \ + V = V + 1; \ + }; \ + V = V - 1; + +#define ZEN_STD_OBJ_CountCargoSeats(V) (getNumber (configFile >> "CfgVehicles" >> (typeOf V) >> "transportSoldier")) +#define ZEN_STD_OBJ_DeleteVehCrew(V) \ + { \ + deleteVehicle _x; \ + } forEach (crew V + [V]); + +#define ZEN_STD_OBJ_MakePOW(O) \ + O setCaptive true; \ + O disableAI "move"; \ + O setUnitPos "UP"; \ + removeAllWeapons O; \ + removeBackpack O; \ + removeGoggles O; \ + removeHeadgear O; + +#define ZEN_STD_OBJ_OrderGetOut(U, V) \ + U orderGetIn false; \ + { \ + unassignVehicle _x; \ + _x leaveVehicle V; \ + } forEach U; + +#define ZEN_STD_OBJ_OrderGetIn(U, V) \ + { \ + _x assignAsCargo V; \ + } forEach U; \ + U orderGetIn true; + +#define ZEN_STD_OBJ_OrientAircraft(O, P, S) \ + _Zen_vDirToLZ = ((getPosATL O) vectorFromTo P); \ + _Zen_dirToLZ = ZEN_STD_Math_VectCartCyl(_Zen_vDirToLZ) select 1; \ + sleep (5 / diag_fps); \ + O setDir (90 - _Zen_dirToLZ); \ + O setVelocity [S * cos _Zen_dirToLZ, S * sin _Zen_dirToLZ, 0]; + +#define ZEN_STD_OBJ_ParachuteInsertion(O, P, H) \ + _Zen_dir = random 360; \ + { \ + _x setPosATL (P vectorAdd [50 * _forEachIndex * cos _Zen_dir, 50 * _forEachIndex * sin _Zen_dir, H]); \ + removeBackpackGlobal _x; \ + _x addBackpackGlobal "b_parachute"; \ + } forEach O; + +#define ZEN_STD_OBJ_TransformATL(O, X, Y, Z) O setPosATL [((getPosATL O) select 0) + X, ((getPosATL O) select 1) + Y, ((getPosATL O) select 2) + Z]; + +#define ZEN_STD_Parse_GetArgumentDefault(V, I, D) \ + if (count _this > I) then { \ + V = _this select I; \ + } else { \ + V = D; \ + }; + +#define ZEN_STD_Parse_GetSetArgumentDefault(V, I, D, R) \ + if (count _this > I) then { \ + V = _this select I; \ + } else { \ + V = D; \ + }; \ + _this set [I, R]; + +#define ZEN_STD_Parse_GetSetArgumentOptional(V, I, D, R) \ + if (count _this > I) then { \ + V = _this select I; \ + } else { \ + V = D; \ + _this set [I, R]; \ + }; + +#define ZEN_STD_Parse_GetArgument(V, I) \ + if (count _this > I) then { \ + V = _this select I; \ + }; + +#define ZEN_STD_Parse_ToArray(X) \ + if (typeName X != "ARRAY") then { \ + X = [X]; \ + }; + +#define ZEN_STD_Parse_ToString(X) \ + if (typeName X != "STRING") then { \ + X = str X; \ + }; + +#define ZEN_STD_Parse_ToStringLower(X) \ + if (typeName X != "STRING") then { \ + X = toLower str X; \ + }; diff --git a/Zen_FrameworkFunctions/Zen_TriggerFunctions/Zen_TriggerAreDead.sqf b/Zen_FrameworkFunctions/Zen_TriggerFunctions/Zen_TriggerAreDead.sqf new file mode 100644 index 0000000..c12ca3a --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_TriggerFunctions/Zen_TriggerAreDead.sqf @@ -0,0 +1,50 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_TriggerAreDead", _this] call Zen_StackAdd; +private ["_taskUniqueName", "_taskResult", "_maxAlive", "_objectsArray"]; + +if !([_this, [["VOID"], ["STRING", "ARRAY"], ["STRING"], ["SCALAR"]], [[], ["STRING"]], 3] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_objectsArray = [(_this select 0)] call Zen_ConvertToObjectArray; +_taskUniqueName = _this select 1; +_taskResult = _this select 2; + +_maxAlive = 0; +if (count _this > 3) then { + _maxAlive = _this select 3; +}; + +if (_maxAlive > count _objectsArray) then { + 0 = ["Zen_TriggerAreDead", "Given number of max living units exceeds the number of units to check", _this] call Zen_PrintError; + call Zen_StackPrint; +}; + +if (typeName _taskUniqueName == "STRING") then { + _taskUniqueName = [_taskUniqueName]; +}; + +while {true} do { + sleep 5; + + if ([_taskUniqueName, _taskResult] call Zen_AreTasksComplete) exitWith {}; + + if (typeName (_this select 0) == "SIDE") then { + _objectsArray = [(_this select 0)] call Zen_ConvertToObjectArray; + }; + + _objectsArray = [_objectsArray] call Zen_ArrayRemoveDead; + + if ((count _objectsArray <= _maxAlive) || (count _objectsArray == 0)) exitWith { + { + 0 = [_x, _taskResult] call Zen_UpdateTask; + sleep 2; + } forEach _taskUniqueName; + }; +}; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_TriggerFunctions/Zen_TriggerAreNear.sqf b/Zen_FrameworkFunctions/Zen_TriggerFunctions/Zen_TriggerAreNear.sqf new file mode 100644 index 0000000..327a058 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_TriggerFunctions/Zen_TriggerAreNear.sqf @@ -0,0 +1,86 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_TriggerAreNear", _this] call Zen_StackAdd; +private ["_objPos", "_rangers", "_taskUniqueName", "_taskResult", "_areNear", "_distance", "_pos", "_requiredUnits", "_givenPos"]; + +if !([_this, [["VOID"], ["STRING", "ARRAY"], ["STRING"], ["VOID"], ["STRING"], ["SCALAR"]], [[], ["STRING"]], 4] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_rangers = [(_this select 0)] call Zen_ConvertToObjectArray; +_taskUniqueName = _this select 1; +_taskResult = _this select 2; +_givenPos = _this select 3; + +_requiredUnits = "one"; +_distance = 10; + +if (count _this > 4) then { + _requiredUnits = toLower (_this select 4); +}; + +if (count _this > 5) then { + _distance = _this select 5; +}; + +if (typeName _givenPos != "ARRAY") then { + _givenPos = [_givenPos]; +}; + +if (typeName (_givenPos select 0) == "SCALAR") then { + _objPos = [_givenPos]; +} else { + _objPos = []; + { + if ((typeName _x) in ["OBJECT", "GROUP"]) then { + _pos = _x; + } else { + _pos = [_x] call Zen_ConvertToPosition; + }; + _objPos pushBack _pos; + } forEach _givenPos; +}; + +if (typeName _taskUniqueName == "STRING") then { + _taskUniqueName = [_taskUniqueName]; +}; + +while {true} do { + sleep 5; + + if ([_taskUniqueName, _taskResult] call Zen_AreTasksComplete) exitWith {}; + + if (typeName (_this select 1) == "SIDE") then { + _rangers = [(_this select 1)] call Zen_ConvertToObjectArray; + }; + + _rangers = [_rangers] call Zen_ArrayRemoveDead; + if (count _rangers == 0) exitWith {}; + + _areNear = true; + if (_requiredUnits == "one") then { + { + if ([_rangers, _x, [_distance, _distance], 0, "ellipse"] call Zen_AreNotInArea) then { + _areNear = false; + } + } forEach _objPos; + } else { + { + if !([_rangers, _x, [_distance, _distance], 0, "ellipse"] call Zen_AreInArea) then { + _areNear = false; + } + } forEach _objPos; + }; + + if (_areNear) exitWith { + { + 0 = [_x, _taskResult] call Zen_UpdateTask; + sleep 2; + } forEach _taskUniqueName; + }; +}; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_TriggerFunctions/Zen_TriggerAreRescued.sqf b/Zen_FrameworkFunctions/Zen_TriggerFunctions/Zen_TriggerAreRescued.sqf new file mode 100644 index 0000000..c053086 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_TriggerFunctions/Zen_TriggerAreRescued.sqf @@ -0,0 +1,94 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_StandardLibrary.sqf" + +_Zen_stack_Trace = ["Zen_TriggerAreRescued", _this] call Zen_StackAdd; +private ["_hostages", "_rescuers", "_tasks", "_hostagesRemove", "_unitsIn", "_hostage", "_nearRescuer", "_hostagesRescued"]; + +if !([_this, [["VOID"], ["VOID"], ["STRING", "ARRAY"]], [[], [], ["STRING"]], 3] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_hostages = [(_this select 0)] call Zen_ConvertToObjectArray; +_rescuers = [(_this select 1)] call Zen_ConvertToObjectArray; +_tasks = _this select 2; + +if (typeName _tasks != "ARRAY") then { + _tasks = [_tasks]; +}; + +{ + _x setCaptive true; +} forEach _hostages; + +_hostagesRescued = []; + +while {true} do { + sleep 10; + + if ([_tasks, "succeeded"] call Zen_AreTasksComplete) exitWith {}; + _hostagesRemove = []; + { + _hostage = _x; + if (alive _hostage) then { + if !(_hostage in _hostagesRescued) then { + + if (typeName (_this select 1) == "SIDE") then { + _rescuers = [(_this select 1)] call Zen_ConvertToObjectArray; + }; + + _rescuers = [_rescuers] call Zen_ArrayRemoveDead; + if (count _rescuers == 0) exitWith {}; + + _unitsIn = [_hostage, [5, 5], 0, "ellipse"] call Zen_GetAllInArea; + + { + if ((_x in _unitsIn) && {(abs (ZEN_STD_OBJ_ATLPositionZ(_x) - ZEN_STD_OBJ_ATLPositionZ(_hostage))) < 2}) exitWith { + _nearRescuer = [_rescuers, _hostage] call Zen_FindMinDistance; + [_hostage] join _nearRescuer; + _hostage enableAI "MOVE"; + _hostage setCaptive false; + _hostagesRescued pushBack _hostage; + }; + } forEach _rescuers; + }; + } else { + _hostagesRemove pushBack _hostage; + }; + } forEach _hostages; + + _hostages = _hostages - _hostagesRemove; + + if (count _hostages == 0) exitWith { + { + 0 = [_x, "failed"] call Zen_UpdateTask; + sleep 2; + } forEach _tasks; + }; + + if ((count _hostagesRescued > 0) && {(count _hostages == count _hostagesRescued)}) exitWith { + { + 0 = [_x, "succeeded"] call Zen_UpdateTask; + sleep 2; + } forEach _tasks; + }; +}; + +while {true} do { + sleep 10; + + if ([_tasks, "failed"] call Zen_AreTasksComplete) exitWith {}; + _hostages = [_hostages] call Zen_ArrayRemoveDead; + + if (count _hostages == 0) exitWith { + { + 0 = [_x, "failed"] call Zen_UpdateTask; + sleep 2; + } forEach _tasks; + }; +}; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_TriggerFunctions/Zen_TriggerAreaClear.sqf b/Zen_FrameworkFunctions/Zen_TriggerFunctions/Zen_TriggerAreaClear.sqf new file mode 100644 index 0000000..caffb07 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_TriggerFunctions/Zen_TriggerAreaClear.sqf @@ -0,0 +1,60 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_TriggerAreaClear", _this] call Zen_StackAdd; +private ["_defenders", "_blacklist", "_taskUniqueName", "_polygonArgs", "_defendersAreOut", "_taskResult", "_inAreaArgs"]; + +if !([_this, [["VOID"], ["STRING", "ARRAY"], ["STRING"], ["VOID"], ["ARRAY"], ["SCALAR"], ["STRING"], ["ARRAY"]], [[], ["STRING"], [], [], ["STRING", "SCALAR"], [], [], ["STRING"]], 4] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_defenders = [(_this select 0)] call Zen_ConvertToObjectArray; +_taskUniqueName = _this select 1; +_taskResult = _this select 2; + +if (typeName _taskUniqueName == "STRING") then { + _taskUniqueName = [_taskUniqueName]; +}; + +_blacklist = []; + +if (count _this > 5) then { + _polygonArgs = [_this, 3, 6] call Zen_ArrayGetIndexedSlice; + if (count _this > 7) then { + _blacklist = _this select 7; + }; +} else { + _polygonArgs = _this select 3; + if (count _this > 4) then { + _blacklist = _this select 4; + }; +}; + +while {true} do { + sleep 10; + + if ([_taskUniqueName, _taskResult] call Zen_AreTasksComplete) exitWith {}; + + if (typeName (_this select 0) == "SIDE") then { + _defenders = [(_this select 0)] call Zen_ConvertToObjectArray; + }; + + _defendersAreOut = true; + _defenders = [_defenders] call Zen_ArrayRemoveDead; + if (count _defenders > 0) then { + _inAreaArgs = []; + 0 = [_inAreaArgs, [_defenders], _polygonArgs, _blacklist] call Zen_ArrayAppendNested; + _defendersAreOut = _inAreaArgs call Zen_AreNotInArea; + }; + + if (_defendersAreOut) exitWith { + { + 0 = [_x, _taskResult] call Zen_UpdateTask; + sleep 2; + } forEach _taskUniqueName; + }; +}; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_TriggerFunctions/Zen_TriggerAreaSecure.sqf b/Zen_FrameworkFunctions/Zen_TriggerFunctions/Zen_TriggerAreaSecure.sqf new file mode 100644 index 0000000..23728a7 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_TriggerFunctions/Zen_TriggerAreaSecure.sqf @@ -0,0 +1,73 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +_Zen_stack_Trace = ["Zen_TriggerAreaSecure", _this] call Zen_StackAdd; +private ["_defenders", "_attackers", "_taskUniqueName", "_polygonArgs", "_attackersAreIn", "_taskResult", "_blacklist", "_inAreaArgs"]; + +if !([_this, [["VOID"], ["VOID"], ["STRING", "ARRAY"], ["STRING"], ["VOID"], ["ARRAY"], ["SCALAR"], ["STRING"], ["ARRAY"]], [[], [], ["STRING"], [], [], ["STRING", "SCALAR"], [], [], ["STRING"]], 5] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_defenders = [(_this select 0)] call Zen_ConvertToObjectArray; +_attackers = [(_this select 1)] call Zen_ConvertToObjectArray; +_taskUniqueName = _this select 2; +_taskResult = _this select 3; + +if (typeName _taskUniqueName == "STRING") then { + _taskUniqueName = [_taskUniqueName]; +}; + +_blacklist = []; + +if (count _this > 6) then { + _polygonArgs = [_this, 4, 7] call Zen_ArrayGetIndexedSlice; + if (count _this > 8) then { + _blacklist = _this select 8; + }; +} else { + _polygonArgs = _this select 4; + if (count _this > 5) then { + _blacklist = _this select 5; + }; +}; + +while {true} do { + sleep 10; + + if ([_taskUniqueName, _taskResult] call Zen_AreTasksComplete) exitWith {}; + + if (typeName (_this select 1) == "SIDE") then { + _attackers = [(_this select 1)] call Zen_ConvertToObjectArray; + }; + + _attackers = [_attackers] call Zen_ArrayRemoveDead; + if (count _attackers == 0) exitWith {}; + + _inAreaArgs = []; + 0 = [_inAreaArgs, [_attackers], _polygonArgs, _blacklist] call Zen_ArrayAppendNested; + _attackersAreIn = !(_inAreaArgs call Zen_AreNotInArea); + + if (typeName (_this select 0) == "SIDE") then { + _defenders = [(_this select 0)] call Zen_ConvertToObjectArray; + }; + + _defendersAreOut = true; + _defenders = [_defenders] call Zen_ArrayRemoveDead; + if (count _defenders > 0) then { + _inAreaArgs = []; + 0 = [_inAreaArgs, [_defenders], _polygonArgs, _blacklist] call Zen_ArrayAppendNested; + _defendersAreOut = _inAreaArgs call Zen_AreNotInArea; + }; + + + if (_defendersAreOut && {_attackersAreIn}) exitWith { + { + 0 = [_x, _taskResult] call Zen_UpdateTask; + sleep 2; + } forEach _taskUniqueName; + }; +}; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_TriggerFunctions/Zen_TriggerFunctionsCompile.sqf b/Zen_FrameworkFunctions/Zen_TriggerFunctions/Zen_TriggerFunctionsCompile.sqf new file mode 100644 index 0000000..93edc6d --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_TriggerFunctions/Zen_TriggerFunctionsCompile.sqf @@ -0,0 +1,11 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +Zen_TriggerAreaClear = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_TriggerFunctions\Zen_TriggerAreaClear.sqf"; +Zen_TriggerAreaSecure = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_TriggerFunctions\Zen_TriggerAreaSecure.sqf"; +Zen_TriggerAreDead = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_TriggerFunctions\Zen_TriggerAreDead.sqf"; +Zen_TriggerAreNear = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_TriggerFunctions\Zen_TriggerAreNear.sqf"; +Zen_TriggerAreRescued = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_TriggerFunctions\Zen_TriggerAreRescued.sqf"; + +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/copyLibraries.bat b/Zen_FrameworkFunctions/copyLibraries.bat new file mode 100644 index 0000000..9a4a4e9 --- /dev/null +++ b/Zen_FrameworkFunctions/copyLibraries.bat @@ -0,0 +1,28 @@ +@echo off +copy Zen_StandardLibrary.sqf Zen_DataFunctions +copy Zen_StandardLibrary.sqf Zen_FireSupportSystem +copy Zen_StandardLibrary.sqf Zen_LoadoutFunctions +copy Zen_StandardLibrary.sqf Zen_MathFunctions +copy Zen_StandardLibrary.sqf Zen_MiscFunctions +copy Zen_StandardLibrary.sqf Zen_ObjectFunctions +copy Zen_StandardLibrary.sqf Zen_ObjectiveSystem +copy Zen_StandardLibrary.sqf Zen_OrdersFunctions +copy Zen_StandardLibrary.sqf Zen_PositionFunctions +copy Zen_StandardLibrary.sqf Zen_SpawningFunctions +copy Zen_StandardLibrary.sqf Zen_TaskSystem +copy Zen_StandardLibrary.sqf Zen_TriggerFunctions +copy Zen_FrameworkLibrary.sqf Zen_DataFunctions +copy Zen_FrameworkLibrary.sqf Zen_FireSupportSystem +copy Zen_FrameworkLibrary.sqf Zen_LoadoutFunctions +copy Zen_FrameworkLibrary.sqf Zen_MathFunctions +copy Zen_FrameworkLibrary.sqf Zen_MiscFunctions +copy Zen_FrameworkLibrary.sqf Zen_ObjectFunctions +copy Zen_FrameworkLibrary.sqf Zen_ObjectiveSystem +copy Zen_FrameworkLibrary.sqf Zen_OrdersFunctions +copy Zen_FrameworkLibrary.sqf Zen_PositionFunctions +copy Zen_FrameworkLibrary.sqf Zen_SpawningFunctions +copy Zen_FrameworkLibrary.sqf Zen_TaskSystem +copy Zen_FrameworkLibrary.sqf Zen_TriggerFunctions +echo Framework and Standard libraries copied to all framework folders +pause +exit diff --git a/init.sqf b/init.sqf new file mode 100644 index 0000000..b92918c --- /dev/null +++ b/init.sqf @@ -0,0 +1,22 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// + +#include "Zen_FrameworkFunctions\Zen_InitHeader.sqf" +#include "Functions\fn_compile.sqf"; +call compile preprocessFile "Baked_AIS\Baked_AIS_init.sqf"; + +// Gemini by Jochem +// Version = 0.6 +// Tested with ArmA 3 <1.48> + +enableSaving [false, false]; +eastHQ = createCenter east; + +// Execution stops until the mission begins (past briefing), do not delete this line +Sleep 1; + +// All clients stop executing here, do not delete this line +if (!isServer) exitWith {}; + +[]execVM "missionInit.sqf"; \ No newline at end of file diff --git a/initPlayerLocal.sqf b/initPlayerLocal.sqf new file mode 100644 index 0000000..0ea4379 --- /dev/null +++ b/initPlayerLocal.sqf @@ -0,0 +1,22 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +0=["Keep calm and play your role",0,0,10] spawn BIS_fnc_dynamicText; + +//intro text +_date = date; +_year = _date select 0; +_month = _date select 1; +_day = _date select 2; +_hour = _date select 3; +_minute = _date select 4; + +_rank = rank player; +_name = name player; + +_textDate = format["%3/%2/%1 - %4:%5",_year,_month,_day,_hour,_minute]; +_textName = format["%1 %2",_rank,_name]; + +Sleep 10; + +0=["Gemini",_textDate,_textName,"SE Chernarus"] spawn BIS_fnc_infoText; \ No newline at end of file diff --git a/mission.sqm b/mission.sqm new file mode 100644 index 0000000..066369a --- /dev/null +++ b/mission.sqm @@ -0,0 +1,6179 @@ +version=12; +class Mission +{ + addOns[]= + { + "ace_interaction", + "ace_advanced_ballistics", + "ace_medical", + "ace_hearing", + "ace_explosives", + "ace_microdagr", + "A3_Modules_F_Curator_Curator", + "task_force_radio_items", + "ace_respawn", + "ace_zeus", + "ace_weather", + "ace_mk6mortar", + "ace_captives", + "ace_map", + "A3_Characters_F_BLUFOR", + "a3_characters_f", + "tf47_launchers", + "A3_Modules_F", + "A3_Weapons_F_Ammoboxes", + "A3_Structures_F_Mil_Fortification", + "rhsusf_c_hmmwv", + "rhsusf_vehicles", + "rhsusf_c_m113", + "rhsusf_c_rg33", + "RHS_US_A2Port_Armor", + "rhsusf_c_m1a2", + "A3_Armor_F_Slammer", + "A3_Structures_F_Mil_Flags", + "A3_Structures_F_Mil_Helipads", + "RHS_US_A2_AirImport", + "aia_misc_e_config", + "A3_Air_F_Heli_Heli_Transport_03", + "A3_Supplies_F_Heli_Slingload", + "A3_Soft_F_Gamma_HEMTT", + "A3_Supplies_F_Heli_CargoNets", + "A3_Structures_F_Training", + "A3_Structures_F_System", + "A3_Structures_F_Bootcamp_Training", + "A3_Structures_F_Walls", + "aia_chernarus_config", + "MELB", + "A3_Armor_F_Panther", + "rhsusf_c_fmtv", + "3DEN", + "ace_sitting", + "ace_nametags" + }; + addOnsAuto[]= + { + "ace_interaction", + "ace_advanced_ballistics", + "ace_medical", + "ace_hearing", + "ace_explosives", + "ace_microdagr", + "3DEN", + "a3_modules_f_curator_curator", + "task_force_radio_items", + "ace_respawn", + "ace_zeus", + "ace_weather", + "ace_mk6mortar", + "ace_captives", + "ace_map", + "A3_Characters_F_BLUFOR", + "a3_characters_f", + "tf47_launchers", + "A3_Modules_F", + "ace_sitting", + "ace_nametags", + "A3_Weapons_F_Ammoboxes", + "A3_Structures_F_Mil_Fortification", + "rhsusf_c_hmmwv", + "rhsusf_vehicles", + "rhsusf_c_m113", + "rhsusf_c_rg33", + "RHS_US_A2Port_Armor", + "rhsusf_c_m1a2", + "A3_Armor_F_Slammer", + "A3_Structures_F_Mil_Flags", + "A3_Structures_F_Mil_Helipads", + "MELB", + "RHS_US_A2_AirImport", + "aia_misc_e_config", + "A3_Air_F_Heli_Heli_Transport_03", + "A3_Supplies_F_Heli_Slingload", + "A3_Soft_F_Gamma_HEMTT", + "A3_Supplies_F_Heli_CargoNets", + "A3_Structures_F_Training", + "A3_Structures_F_System", + "A3_Structures_F_Bootcamp_Training", + "A3_Structures_F_Walls", + "A3_Armor_F_Panther", + "rhsusf_c_fmtv", + "aia_chernarus_config" + }; + randomSeed=14748412; + class Intel + { + timeOfChanges=1800.0002; + startWeather=0.30000001; + startWind=0.1; + startWaves=0.1; + forecastWeather=0.30000001; + forecastWind=0.1; + forecastWaves=0.1; + forecastLightnings=0.1; + year=2035; + month=6; + day=24; + hour=12; + minute=0; + startFogDecay=0.013; + forecastFogDecay=0.013; + }; + class Groups + { + items=36; + class Item0 + { + side="LOGIC"; + class Vehicles + { + items=1; + class Item0 + { + position[]={530.5274,13.933278,1844.9561}; + class args + { + items=1; + class Item0 + { + value="0"; + parentCls="ACE_ModuleInteraction"; + typeName="EnableTeamManagement"; + }; + }; + id=0; + side="LOGIC"; + vehicle="ACE_ModuleInteraction"; + leader=1; + lock="UNLOCKED"; + skill=0.60000002; + }; + }; + }; + class Item1 + { + side="LOGIC"; + class Vehicles + { + items=1; + class Item0 + { + position[]={530.88092,16.585348,1880.9277}; + class args + { + items=10; + class Item0 + { + value="1"; + parentCls="ace_advanced_ballistics_ModuleSettings"; + typeName="enabled"; + }; + class Item1 + { + value="0"; + parentCls="ace_advanced_ballistics_ModuleSettings"; + typeName="simulateForSnipers"; + }; + class Item2 + { + value="0"; + parentCls="ace_advanced_ballistics_ModuleSettings"; + typeName="simulateForGroupMembers"; + }; + class Item3 + { + value="0"; + parentCls="ace_advanced_ballistics_ModuleSettings"; + typeName="simulateForEveryone"; + }; + class Item4 + { + value="0"; + parentCls="ace_advanced_ballistics_ModuleSettings"; + typeName="disabledInFullAutoMode"; + }; + class Item5 + { + value="1"; + parentCls="ace_advanced_ballistics_ModuleSettings"; + typeName="ammoTemperatureEnabled"; + }; + class Item6 + { + value="1"; + parentCls="ace_advanced_ballistics_ModuleSettings"; + typeName="barrelLengthInfluenceEnabled"; + }; + class Item7 + { + value="0"; + parentCls="ace_advanced_ballistics_ModuleSettings"; + typeName="bulletTraceEnabled"; + }; + class Item8 + { + value="0"; + parentCls="ace_advanced_ballistics_ModuleSettings"; + typeName="simulationInterval"; + }; + class Item9 + { + value="3000"; + parentCls="ace_advanced_ballistics_ModuleSettings"; + typeName="simulationRadius"; + }; + }; + id=1; + side="LOGIC"; + vehicle="ace_advanced_ballistics_ModuleSettings"; + leader=1; + lock="UNLOCKED"; + skill=0.60000002; + }; + }; + }; + class Item2 + { + side="LOGIC"; + class Vehicles + { + items=1; + class Item0 + { + position[]={538.74811,14.703086,1881.1475}; + class args + { + items=13; + class Item0 + { + value="0"; + parentCls="ACE_moduleAdvancedMedicalSettings"; + typeName="enableFor"; + }; + class Item1 + { + value="1"; + parentCls="ACE_moduleAdvancedMedicalSettings"; + typeName="enableAdvancedWounds"; + }; + class Item2 + { + value="1"; + parentCls="ACE_moduleAdvancedMedicalSettings"; + typeName="enableVehicleCrashes"; + }; + class Item3 + { + value="1"; + parentCls="ACE_moduleAdvancedMedicalSettings"; + typeName="medicSetting_PAK"; + }; + class Item4 + { + value="0"; + parentCls="ACE_moduleAdvancedMedicalSettings"; + typeName="consumeItem_PAK"; + }; + class Item5 + { + value="0"; + parentCls="ACE_moduleAdvancedMedicalSettings"; + typeName="useCondition_PAK"; + }; + class Item6 + { + value="2"; + parentCls="ACE_moduleAdvancedMedicalSettings"; + typeName="useLocation_PAK"; + }; + class Item7 + { + value="1"; + parentCls="ACE_moduleAdvancedMedicalSettings"; + typeName="medicSetting_SurgicalKit"; + }; + class Item8 + { + value="1"; + parentCls="ACE_moduleAdvancedMedicalSettings"; + typeName="consumeItem_SurgicalKit"; + }; + class Item9 + { + value="3"; + parentCls="ACE_moduleAdvancedMedicalSettings"; + typeName="useLocation_SurgicalKit"; + }; + class Item10 + { + value="0"; + parentCls="ACE_moduleAdvancedMedicalSettings"; + typeName="useCondition_SurgicalKit"; + }; + class Item11 + { + value="0"; + parentCls="ACE_moduleAdvancedMedicalSettings"; + typeName="healHitPointAfterAdvBandage"; + }; + class Item12 + { + value="1"; + parentCls="ACE_moduleAdvancedMedicalSettings"; + typeName="painIsOnlySuppressed"; + }; + }; + id=2; + side="LOGIC"; + vehicle="ACE_moduleAdvancedMedicalSettings"; + leader=1; + lock="UNLOCKED"; + skill=0.60000002; + }; + }; + }; + class Item3 + { + side="LOGIC"; + class Vehicles + { + items=1; + class Item0 + { + position[]={538.98834,13.787199,1871.2451}; + class args + { + items=13; + class Item0 + { + value="2"; + parentCls="ACE_moduleMedicalSettings"; + typeName="level"; + }; + class Item1 + { + value="2"; + parentCls="ACE_moduleMedicalSettings"; + typeName="medicSetting"; + }; + class Item2 + { + value="1"; + parentCls="ACE_moduleMedicalSettings"; + typeName="allowLitterCreation"; + }; + class Item3 + { + value="300"; + parentCls="ACE_moduleMedicalSettings"; + typeName="litterCleanUpDelay"; + }; + class Item4 + { + value="1"; + parentCls="ACE_moduleMedicalSettings"; + typeName="enableScreams"; + }; + class Item5 + { + value="1"; + parentCls="ACE_moduleMedicalSettings"; + typeName="playerDamageThreshold"; + }; + class Item6 + { + value="1"; + parentCls="ACE_moduleMedicalSettings"; + typeName="AIDamageThreshold"; + }; + class Item7 + { + value="2"; + parentCls="ACE_moduleMedicalSettings"; + typeName="enableUnconsciousnessAI"; + }; + class Item8 + { + value="1"; + parentCls="ACE_moduleMedicalSettings"; + typeName="remoteControlledAI"; + }; + class Item9 + { + value="0"; + parentCls="ACE_moduleMedicalSettings"; + typeName="preventInstaDeath"; + }; + class Item10 + { + value="1"; + parentCls="ACE_moduleMedicalSettings"; + typeName="bleedingCoefficient"; + }; + class Item11 + { + value="1"; + parentCls="ACE_moduleMedicalSettings"; + typeName="painCoefficient"; + }; + class Item12 + { + value="1"; + parentCls="ACE_moduleMedicalSettings"; + typeName="keepLocalSettingsSynced"; + }; + }; + id=3; + side="LOGIC"; + vehicle="ACE_moduleMedicalSettings"; + leader=1; + lock="UNLOCKED"; + skill=0.60000002; + }; + }; + }; + class Item4 + { + side="LOGIC"; + class Vehicles + { + items=1; + class Item0 + { + position[]={530.88092,14.591525,1853.0674}; + class args + { + items=1; + class Item0 + { + value="1"; + parentCls="ACE_ModuleHearing"; + typeName="EnableCombatDeafness"; + }; + }; + id=4; + side="LOGIC"; + vehicle="ACE_ModuleHearing"; + leader=1; + lock="UNLOCKED"; + skill=0.60000002; + }; + }; + }; + class Item5 + { + side="LOGIC"; + class Vehicles + { + items=1; + class Item0 + { + position[]={530.88092,15.295439,1861.5313}; + class args + { + items=3; + class Item0 + { + value="1"; + parentCls="ACE_ModuleExplosive"; + typeName="RequireSpecialist"; + }; + class Item1 + { + value="1"; + parentCls="ACE_ModuleExplosive"; + typeName="PunishNonSpecialists"; + }; + class Item2 + { + value="1"; + parentCls="ACE_ModuleExplosive"; + typeName="ExplodeOnDefuse"; + }; + }; + id=5; + side="LOGIC"; + vehicle="ACE_ModuleExplosive"; + leader=1; + lock="UNLOCKED"; + skill=0.60000002; + }; + }; + }; + class Item6 + { + side="LOGIC"; + class Vehicles + { + items=1; + class Item0 + { + position[]={530.34381,12.356411,1829.7305}; + class args + { + items=1; + class Item0 + { + value="2"; + parentCls="ace_microdagr_dagrModule"; + typeName="MapDataAvailable"; + }; + }; + id=6; + side="LOGIC"; + vehicle="ace_microdagr_dagrModule"; + leader=1; + lock="UNLOCKED"; + skill=0.60000002; + }; + }; + }; + class Item7 + { + side="LOGIC"; + class Vehicles + { + items=1; + class Item0 + { + position[]={552.88092,12.067353,1882.3975}; + class args + { + items=4; + class Item0 + { + value="#adminLogged"; + parentCls="ModuleCurator_F"; + typeName="Owner"; + }; + class Item1 + { + value=""; + parentCls="ModuleCurator_F"; + typeName="Name"; + }; + class Item2 + { + value="3"; + parentCls="ModuleCurator_F"; + typeName="Addons"; + }; + class Item3 + { + value="0"; + parentCls="ModuleCurator_F"; + typeName="Forced"; + }; + }; + id=7; + side="LOGIC"; + vehicle="ModuleCurator_F"; + leader=1; + lock="UNLOCKED"; + skill=0.60000002; + text="zeusMod"; + }; + }; + }; + class Item8 + { + side="LOGIC"; + class Vehicles + { + items=1; + class Item0 + { + position[]={553.01764,10.918626,1872.0781}; + class args + { + items=7; + class Item0 + { + value="0"; + parentCls="tfar_ModuleTaskForceRadioEnforceUsage"; + typeName="TeamLeaderRadio"; + }; + class Item1 + { + value="0"; + parentCls="tfar_ModuleTaskForceRadioEnforceUsage"; + typeName="RiflemanRadio"; + }; + class Item2 + { + value="7"; + parentCls="tfar_ModuleTaskForceRadioEnforceUsage"; + typeName="terrain_interception_coefficient"; + }; + class Item3 + { + value="TFAR"; + parentCls="tfar_ModuleTaskForceRadioEnforceUsage"; + typeName="radio_channel_name"; + }; + class Item4 + { + value="You'llneverguess"; + parentCls="tfar_ModuleTaskForceRadioEnforceUsage"; + typeName="radio_channel_password"; + }; + class Item5 + { + value="0"; + parentCls="tfar_ModuleTaskForceRadioEnforceUsage"; + typeName="same_sw_frequencies_for_side"; + }; + class Item6 + { + value="1"; + parentCls="tfar_ModuleTaskForceRadioEnforceUsage"; + typeName="same_lr_frequencies_for_side"; + }; + }; + id=8; + side="LOGIC"; + vehicle="tfar_ModuleTaskForceRadioEnforceUsage"; + leader=1; + lock="UNLOCKED"; + skill=0.60000002; + }; + }; + }; + class Item9 + { + side="LOGIC"; + class Vehicles + { + items=1; + class Item0 + { + position[]={530.3653,11.603288,1822.5781}; + class args + { + items=2; + class Item0 + { + value="0"; + parentCls="ACE_ModuleRespawn"; + typeName="SavePreDeathGear"; + }; + class Item1 + { + value="1"; + parentCls="ACE_ModuleRespawn"; + typeName="RemoveDeadBodiesDisconnected"; + }; + }; + id=9; + side="LOGIC"; + vehicle="ACE_ModuleRespawn"; + leader=1; + lock="UNLOCKED"; + skill=0.60000002; + }; + }; + }; + class Item10 + { + side="LOGIC"; + class Vehicles + { + items=1; + class Item0 + { + position[]={530.53131,10.85036,1815.0938}; + class args + { + items=5; + class Item0 + { + value="0"; + parentCls="ace_zeus_moduleSettings"; + typeName="zeusAscension"; + }; + class Item1 + { + value="0"; + parentCls="ace_zeus_moduleSettings"; + typeName="zeusBird"; + }; + class Item2 + { + value="0"; + parentCls="ace_zeus_moduleSettings"; + typeName="remoteWind"; + }; + class Item3 + { + value="1"; + parentCls="ace_zeus_moduleSettings"; + typeName="radioOrdnance"; + }; + class Item4 + { + value="0"; + parentCls="ace_zeus_moduleSettings"; + typeName="revealMines"; + }; + }; + id=10; + side="LOGIC"; + vehicle="ace_zeus_moduleSettings"; + leader=1; + lock="UNLOCKED"; + skill=0.60000002; + }; + }; + }; + class Item11 + { + side="LOGIC"; + class Vehicles + { + items=1; + class Item0 + { + position[]={530.53326,10.228675,1807.6143}; + class args + { + items=6; + class Item0 + { + value="1"; + parentCls="ace_weather_ModuleSettings"; + typeName="enableServerController"; + }; + class Item1 + { + value="1"; + parentCls="ace_weather_ModuleSettings"; + typeName="useACEWeather"; + }; + class Item2 + { + value="1"; + parentCls="ace_weather_ModuleSettings"; + typeName="syncRain"; + }; + class Item3 + { + value="1"; + parentCls="ace_weather_ModuleSettings"; + typeName="syncWind"; + }; + class Item4 + { + value="1"; + parentCls="ace_weather_ModuleSettings"; + typeName="syncMisc"; + }; + class Item5 + { + value="60"; + parentCls="ace_weather_ModuleSettings"; + typeName="serverUpdateInterval"; + }; + }; + id=11; + side="LOGIC"; + vehicle="ace_weather_ModuleSettings"; + leader=1; + lock="UNLOCKED"; + skill=0.60000002; + }; + }; + }; + class Item12 + { + side="LOGIC"; + class Vehicles + { + items=1; + class Item0 + { + position[]={530.6817,16.054415,1871.5127}; + class args + { + items=3; + class Item0 + { + value="1"; + parentCls="ace_mk6mortar_module"; + typeName="airResistanceEnabled"; + }; + class Item1 + { + value="0"; + parentCls="ace_mk6mortar_module"; + typeName="allowComputerRangefinder"; + }; + class Item2 + { + value="1"; + parentCls="ace_mk6mortar_module"; + typeName="allowCompass"; + }; + }; + id=12; + side="LOGIC"; + vehicle="ace_mk6mortar_module"; + leader=1; + lock="UNLOCKED"; + skill=0.60000002; + }; + }; + }; + class Item13 + { + side="LOGIC"; + class Vehicles + { + items=1; + class Item0 + { + position[]={530.36139,13.218223,1837.7285}; + class args + { + items=2; + class Item0 + { + value="1"; + parentCls="ace_captives_moduleSettings"; + typeName="allowHandcuffOwnSide"; + }; + class Item1 + { + value="1"; + parentCls="ace_captives_moduleSettings"; + typeName="allowSurrender"; + }; + }; + id=13; + side="LOGIC"; + vehicle="ace_captives_moduleSettings"; + leader=1; + lock="UNLOCKED"; + skill=0.60000002; + }; + }; + }; + class Item14 + { + side="LOGIC"; + class Vehicles + { + items=1; + class Item0 + { + position[]={530.62701,9.8006935,1801.6299}; + class args + { + items=3; + class Item0 + { + value="0"; + parentCls="ACE_ModuleBlueForceTracking"; + typeName="Enabled"; + }; + class Item1 + { + value="30"; + parentCls="ACE_ModuleBlueForceTracking"; + typeName="Interval"; + }; + class Item2 + { + value="1"; + parentCls="ACE_ModuleBlueForceTracking"; + typeName="HideAiGroups"; + }; + }; + id=14; + side="LOGIC"; + vehicle="ACE_ModuleBlueForceTracking"; + leader=1; + lock="UNLOCKED"; + skill=0.60000002; + }; + }; + }; + class Item15 + { + side="WEST"; + class Vehicles + { + items=2; + class Item0 + { + position[]={15339.308,1.1162053,7.9836426}; + azimut=-363.75699; + offsetY=17; + id=15; + side="WEST"; + vehicle="B_officer_F"; + player="PLAY CDG"; + leader=1; + rank="COLONEL"; + skill=0.60000002; + text="cmd1"; + init="(group this) setGroupId[""CMD""];"; + description="Platoon commander"; + }; + class Item1 + { + position[]={15340.464,1.2813944,7.916687}; + azimut=-363.75699; + offsetY=17; + id=16; + side="WEST"; + vehicle="B_officer_F"; + player="PLAY CDG"; + rank="MAJOR"; + skill=0.60000002; + text="cmd2"; + init="(group this) setGroupId[""CMD""];"; + description="Battle captain"; + }; + }; + }; + class Item16 + { + side="WEST"; + class Vehicles + { + items=2; + class Item0 + { + position[]={15344.521,1.3125309,12.387634}; + azimut=-363.75699; + offsetY=17; + id=17; + side="WEST"; + vehicle="B_Soldier_SL_F"; + player="PLAYER COMMANDER"; + leader=1; + rank="SERGEANT"; + skill=0.60000002; + text="a0_1"; + init="(group this) setGroupId[""ASL""];"; + description="Alpha squad lead"; + syncId=0; + synchronizations[]={0}; + }; + class Item1 + { + position[]={15345.194,1.3134352,12.363953}; + azimut=-363.75699; + offsetY=17; + id=18; + side="WEST"; + vehicle="B_medic_F"; + player="PLAY CDG"; + rank="CORPORAL"; + skill=0.60000002; + text="a0_2"; + init="(group this) setGroupId[""ASL""];"; + description="Alpha medic"; + }; + }; + }; + class Item17 + { + side="WEST"; + class Vehicles + { + items=5; + class Item0 + { + position[]={15344.538,1.2943902,10.207214}; + azimut=-363.75699; + offsetY=17; + id=19; + side="WEST"; + vehicle="B_Soldier_TL_F"; + player="PLAY CDG"; + skill=0.60000002; + text="a2_1"; + init="(group this) setGroupId[""A2""];"; + description="Alpha 2 team lead"; + }; + class Item1 + { + position[]={15345.178,1.2891037,10.199646}; + azimut=-363.75699; + offsetY=17; + id=20; + side="WEST"; + vehicle="TF47_B_soldier_AT4HEDP"; + player="PLAY CDG"; + leader=1; + rank="CORPORAL"; + skill=0.60000002; + text="a2_2"; + init="(group this) setGroupId[""A2""];"; + description="Alpha 2 rifleman(AT)"; + }; + class Item2 + { + position[]={15345.877,1.2813056,10.2099}; + azimut=-363.75699; + offsetY=17; + id=21; + side="WEST"; + vehicle="B_soldier_AR_F"; + player="PLAY CDG"; + skill=0.60000002; + text="a2_3"; + init="(group this) setGroupId[""A2""];"; + description="Alpha 2 autorifleman"; + }; + class Item3 + { + position[]={15346.555,1.2710848,10.188049}; + azimut=-363.75699; + offsetY=17; + id=22; + side="WEST"; + vehicle="B_Soldier_GL_F"; + player="PLAY CDG"; + skill=0.60000002; + text="a2_4"; + init="(group this) setGroupId[""A2""];"; + description="Alpha 2 grenadier"; + }; + class Item4 + { + position[]={15347.235,1.2598413,10.210022}; + azimut=-363.75699; + offsetY=17; + id=23; + side="WEST"; + vehicle="B_Soldier_F"; + player="PLAY CDG"; + skill=0.60000002; + text="a2_5"; + init="(group this) setGroupId[""A2""];"; + description="Alpha 2 rifleman"; + }; + }; + }; + class Item18 + { + side="WEST"; + class Vehicles + { + items=5; + class Item0 + { + position[]={15344.537,1.3049693,11.229797}; + azimut=-363.75699; + offsetY=17; + id=24; + side="WEST"; + vehicle="B_Soldier_TL_F"; + player="PLAY CDG"; + leader=1; + rank="SERGEANT"; + skill=0.60000002; + text="a1_1"; + init="(group this) setGroupId[""A1""];"; + description="Alpha 1 team lead"; + }; + class Item1 + { + position[]={15345.219,1.3023757,11.225281}; + azimut=-363.75699; + offsetY=17; + id=25; + side="WEST"; + vehicle="B_soldier_M_F"; + player="PLAY CDG"; + rank="CORPORAL"; + skill=0.60000002; + text="a1_2"; + init="(group this) setGroupId[""A1""];"; + description="Alpha 1 marksman"; + }; + class Item2 + { + position[]={15345.898,1.2974403,11.227234}; + azimut=-363.75699; + offsetY=17; + id=26; + side="WEST"; + vehicle="B_Soldier_F"; + player="PLAY CDG"; + skill=0.60000002; + text="a1_3"; + init="(group this) setGroupId[""A1""];"; + description="Alpha 1 rifleman"; + }; + class Item3 + { + position[]={15346.561,1.2911896,11.273865}; + azimut=-363.75699; + offsetY=17; + id=27; + side="WEST"; + vehicle="B_engineer_F"; + player="PLAY CDG"; + skill=0.60000002; + text="a1_4"; + init="(group this) setGroupId[""A1""];"; + description="Alpha 1 engineer"; + }; + class Item4 + { + position[]={15347.209,1.2827101,11.28656}; + azimut=-363.75699; + offsetY=17; + id=28; + side="WEST"; + vehicle="B_soldier_AR_F"; + player="PLAY CDG"; + skill=0.60000002; + text="a1_5"; + init="(group this) setGroupId[""A1""];"; + description="Alpha 2 autorifleman"; + }; + }; + }; + class Item19 + { + side="WEST"; + class Vehicles + { + items=2; + class Item0 + { + position[]={15344.566,1.2741517,8.8225708}; + azimut=-363.75699; + offsetY=17; + id=29; + side="WEST"; + vehicle="B_Soldier_SL_F"; + player="PLAY CDG"; + leader=1; + rank="SERGEANT"; + skill=0.60000002; + text="b0_1"; + init="(group this) setGroupId[""BSL""];"; + description="Bravo squad lead"; + syncId=1; + synchronizations[]={1}; + }; + class Item1 + { + position[]={15345.24,1.264397,8.7990112}; + azimut=-363.75699; + offsetY=17; + id=30; + side="WEST"; + vehicle="B_medic_F"; + player="PLAY CDG"; + rank="CORPORAL"; + skill=0.60000002; + text="b0_2"; + init="(group this) setGroupId[""BSL""];"; + description="Bravo medic"; + }; + }; + }; + class Item20 + { + side="WEST"; + class Vehicles + { + items=5; + class Item0 + { + position[]={15344.584,1.231231,6.6420288}; + azimut=-363.75699; + offsetY=17; + id=31; + side="WEST"; + vehicle="B_Soldier_TL_F"; + player="PLAY CDG"; + skill=0.60000002; + text="b2_1"; + init="(group this) setGroupId[""B2""];"; + description="Bravo 2 team lead"; + }; + class Item1 + { + position[]={15345.224,1.217796,6.6344604}; + azimut=-363.75699; + offsetY=17; + id=32; + side="WEST"; + vehicle="TF47_B_soldier_AT4HEDP"; + player="PLAY CDG"; + leader=1; + rank="CORPORAL"; + skill=0.60000002; + text="b2_2"; + init="(group this) setGroupId[""B2""];"; + description="Bravo 2 rifleman(AT)"; + }; + class Item2 + { + position[]={15345.923,1.2024056,6.6448364}; + azimut=-363.75699; + offsetY=17; + id=33; + side="WEST"; + vehicle="B_soldier_AR_F"; + player="PLAY CDG"; + skill=0.60000002; + text="b2_3"; + init="(group this) setGroupId[""B2""];"; + description="Bravo 2 autorifleman"; + }; + class Item3 + { + position[]={15346.601,1.1857822,6.6229858}; + azimut=-363.75699; + offsetY=17; + id=34; + side="WEST"; + vehicle="B_Soldier_GL_F"; + player="PLAY CDG"; + skill=0.60000002; + text="b2_4"; + init="(group this) setGroupId[""B2""];"; + description="Bravo 2 grenadier"; + }; + class Item4 + { + position[]={15347.281,1.1696439,6.6449585}; + azimut=-363.75699; + offsetY=17; + id=35; + side="WEST"; + vehicle="B_Soldier_F"; + player="PLAY CDG"; + skill=0.60000002; + text="b2_5"; + init="(group this) setGroupId[""B2""];"; + description="Bravo 2 rifleman"; + }; + }; + }; + class Item21 + { + side="WEST"; + class Vehicles + { + items=5; + class Item0 + { + position[]={15344.583,1.2527674,7.6647339}; + azimut=-363.75699; + offsetY=17; + id=36; + side="WEST"; + vehicle="B_Soldier_TL_F"; + player="PLAY CDG"; + leader=1; + rank="SERGEANT"; + skill=0.60000002; + text="b1_1"; + init="(group this) setGroupId[""B1""];"; + description="Bravo 1 team lead"; + }; + class Item1 + { + position[]={15345.265,1.2405319,7.6600952}; + azimut=-363.75699; + offsetY=17; + id=37; + side="WEST"; + vehicle="B_soldier_M_F"; + player="PLAY CDG"; + rank="CORPORAL"; + skill=0.60000002; + text="b1_2"; + init="(group this) setGroupId[""B1""];"; + description="Bravo 1 marksman"; + }; + class Item2 + { + position[]={15345.943,1.2269292,7.6620483}; + azimut=-363.75699; + offsetY=17; + id=38; + side="WEST"; + vehicle="B_Soldier_F"; + player="PLAY CDG"; + skill=0.60000002; + text="b1_3"; + init="(group this) setGroupId[""B1""];"; + description="Bravo 1 rifleman"; + }; + class Item3 + { + position[]={15346.606,1.2135564,7.7088013}; + azimut=-363.75699; + offsetY=17; + id=39; + side="WEST"; + vehicle="B_engineer_F"; + player="PLAY CDG"; + skill=0.60000002; + text="b1_4"; + init="(group this) setGroupId[""B1""];"; + description="Bravo 1 engineer"; + }; + class Item4 + { + position[]={15347.255,1.1987934,7.7214966}; + azimut=-363.75699; + offsetY=17; + id=40; + side="WEST"; + vehicle="B_soldier_AR_F"; + player="PLAY CDG"; + skill=0.60000002; + text="b1_5"; + init="(group this) setGroupId[""B1""];"; + description="Bravo 2 autorifleman"; + }; + }; + }; + class Item22 + { + side="WEST"; + class Vehicles + { + items=2; + class Item0 + { + position[]={15344.383,1.1971843,5.0066528}; + azimut=-363.75699; + offsetY=17; + id=41; + side="WEST"; + vehicle="B_Soldier_SL_F"; + player="PLAY CDG"; + leader=1; + rank="SERGEANT"; + skill=0.60000002; + text="c0_1"; + init="(group this) setGroupId[""CSL""];"; + description="Charlie squad lead"; + syncId=2; + synchronizations[]={2}; + }; + class Item1 + { + position[]={15345.057,1.1806419,4.9830933}; + azimut=-363.75699; + offsetY=17; + id=42; + side="WEST"; + vehicle="B_medic_F"; + player="PLAY CDG"; + rank="CORPORAL"; + skill=0.60000002; + text="c0_2"; + init="(group this) setGroupId[""CSL""];"; + description="Alpha medic"; + }; + }; + }; + class Item23 + { + side="WEST"; + class Vehicles + { + items=5; + class Item0 + { + position[]={15344.4,1.1409291,2.8261108}; + azimut=-363.75699; + offsetY=17; + id=43; + side="WEST"; + vehicle="B_Soldier_TL_F"; + player="PLAY CDG"; + skill=0.60000002; + text="c2_1"; + init="(group this) setGroupId[""C2""];"; + description="Charlie 2 team lead"; + }; + class Item1 + { + position[]={15345.04,1.1243895,2.8185425}; + azimut=-363.75699; + offsetY=17; + id=44; + side="WEST"; + vehicle="TF47_B_soldier_AT4HEDP"; + player="PLAY CDG"; + leader=1; + rank="CORPORAL"; + skill=0.60000002; + text="c2_2"; + init="(group this) setGroupId[""C2""];"; + description="Charlie 2 rifleman(AT)"; + }; + class Item2 + { + position[]={15345.739,1.1071227,2.8289185}; + azimut=-363.75699; + offsetY=17; + id=45; + side="WEST"; + vehicle="B_soldier_AR_F"; + player="PLAY CDG"; + skill=0.60000002; + text="c2_3"; + init="(group this) setGroupId[""C2""];"; + description="Charlie 2 autorifleman"; + }; + class Item3 + { + position[]={15346.417,1.0900354,2.8070679}; + azimut=-363.75699; + offsetY=17; + id=46; + side="WEST"; + vehicle="B_Soldier_GL_F"; + player="PLAY CDG"; + skill=0.60000002; + text="c2_4"; + init="(group this) setGroupId[""C2""];"; + description="Charlie 2 grenadier"; + }; + class Item4 + { + position[]={15347.098,1.074914,2.8290405}; + azimut=-363.75699; + offsetY=17; + id=47; + side="WEST"; + vehicle="B_Soldier_F"; + player="PLAY CDG"; + skill=0.60000002; + text="c2_5"; + init="(group this) setGroupId[""C2""];"; + description="Charlie 2 rifleman"; + }; + }; + }; + class Item24 + { + side="WEST"; + class Vehicles + { + items=5; + class Item0 + { + position[]={15344.399,1.1675777,3.8488159}; + azimut=-363.75699; + offsetY=17; + id=48; + side="WEST"; + vehicle="B_Soldier_TL_F"; + player="PLAY CDG"; + leader=1; + rank="SERGEANT"; + skill=0.60000002; + text="c1_1"; + init="(group this) setGroupId[""C1""];"; + description="Charlie 1 team lead"; + }; + class Item1 + { + position[]={15345.081,1.1503767,3.8441772}; + azimut=-363.75699; + offsetY=17; + id=49; + side="WEST"; + vehicle="B_soldier_M_F"; + player="PLAY CDG"; + rank="CORPORAL"; + skill=0.60000002; + text="c1_2"; + init="(group this) setGroupId[""C1""];"; + description="Charlie 1 marksman"; + }; + class Item2 + { + position[]={15345.76,1.1332384,3.8461304}; + azimut=-363.75699; + offsetY=17; + id=50; + side="WEST"; + vehicle="B_Soldier_F"; + player="PLAY CDG"; + skill=0.60000002; + text="c1_3"; + init="(group this) setGroupId[""C1""];"; + description="Charlie 1 rifleman"; + }; + class Item3 + { + position[]={15346.423,1.117807,3.8928833}; + azimut=-363.75699; + offsetY=17; + id=51; + side="WEST"; + vehicle="B_engineer_F"; + player="PLAY CDG"; + skill=0.60000002; + text="c1_4"; + init="(group this) setGroupId[""C1""];"; + description="Charlie 1 engineer"; + }; + class Item4 + { + position[]={15347.071,1.1022829,3.9055786}; + azimut=-363.75699; + offsetY=17; + id=52; + side="WEST"; + vehicle="B_soldier_AR_F"; + player="PLAY CDG"; + skill=0.60000002; + text="c1_5"; + init="(group this) setGroupId[""C1""];"; + description="Charlie 2 autorifleman"; + }; + }; + }; + class Item25 + { + side="WEST"; + class Vehicles + { + items=4; + class Item0 + { + position[]={15352.988,1.1823076,12.230652}; + offsetY=17; + id=53; + side="WEST"; + vehicle="B_recon_TL_F"; + player="PLAY CDG"; + leader=1; + rank="LIEUTENANT"; + skill=0.60000002; + text="r1"; + init="(group this) setGroupId[""Recon""];"; + description="Recon lead"; + }; + class Item1 + { + position[]={15354.58,1.1460512,12.230408}; + offsetY=17; + id=54; + side="WEST"; + vehicle="B_recon_M_F"; + player="PLAY CDG"; + rank="SERGEANT"; + skill=0.60000002; + text="r2"; + init="(group this) setGroupId[""Recon""];"; + description="Recon marksman"; + }; + class Item2 + { + position[]={15356.168,1.1161091,12.228943}; + azimut=-363.75699; + offsetY=17; + id=55; + side="WEST"; + vehicle="B_recon_F"; + player="PLAY CDG"; + rank="CORPORAL"; + skill=0.60000002; + text="r3"; + init="(group this) setGroupId[""Recon""];"; + description="Recon scout"; + }; + class Item3 + { + position[]={15357.621,1.097404,12.230652}; + azimut=-363.75699; + offsetY=17; + id=56; + side="WEST"; + vehicle="B_recon_medic_F"; + player="PLAY CDG"; + rank="CORPORAL"; + skill=0.60000002; + text="r4"; + init="(group this) setGroupId[""Recon""];"; + description="Recon medic"; + }; + }; + }; + class Item26 + { + side="WEST"; + class Vehicles + { + items=4; + class Item0 + { + position[]={15352.887,1.1357565,10.395935}; + id=57; + side="WEST"; + vehicle="B_Soldier_TL_F"; + player="PLAY CDG"; + leader=1; + rank="SERGEANT"; + skill=0.60000002; + text="l1"; + init="(group this) setGroupId[""Logistics""];"; + description="Logistics lead"; + }; + class Item1 + { + position[]={15354.52,1.1037958,10.395691}; + id=58; + side="WEST"; + vehicle="B_Helipilot_F"; + player="PLAY CDG"; + rank="CORPORAL"; + skill=0.60000002; + text="l2"; + init="(group this) setGroupId[""Logistics""];"; + description="Logistics pilot"; + }; + class Item2 + { + position[]={15356.244,1.0803936,10.350037}; + id=59; + side="WEST"; + vehicle="B_Soldier_F"; + player="PLAY CDG"; + skill=0.60000002; + text="l3"; + init="(group this) setGroupId[""Logistics""];"; + description="Logistics member"; + }; + class Item3 + { + position[]={15357.699,1.0724926,10.306091}; + id=60; + side="WEST"; + vehicle="B_Soldier_F"; + player="PLAY CDG"; + skill=0.60000002; + text="l4"; + init="(group this) setGroupId[""Logistics""];"; + description="Logistics member"; + }; + }; + }; + class Item27 + { + side="WEST"; + class Vehicles + { + items=4; + class Item0 + { + position[]={15338.662,1.2109209,12.125916}; + azimut=-363.75699; + offsetY=17; + id=61; + side="WEST"; + vehicle="B_Soldier_TL_F"; + player="PLAY CDG"; + leader=1; + rank="SERGEANT"; + skill=0.60000002; + text="h1"; + init="(group this) setGroupId[""HAT""];"; + description="HAT lead"; + }; + class Item1 + { + position[]={15339.977,1.2458137,12.166199}; + azimut=-363.75699; + offsetY=17; + id=62; + side="WEST"; + vehicle="TF47_B_soldier_M3MAAWS"; + player="PLAY CDG"; + rank="CORPORAL"; + skill=0.60000002; + text="h2"; + init="(group this) setGroupId[""HAT""];"; + description="HAT missile spec"; + }; + class Item2 + { + position[]={15341.023,1.2697431,12.167908}; + azimut=-363.75699; + offsetY=17; + id=63; + side="WEST"; + vehicle="B_Soldier_F"; + player="PLAY CDG"; + skill=0.60000002; + text="h3"; + init="(group this) setGroupId[""HAT""];"; + description="HAT missile ass."; + }; + class Item3 + { + position[]={15342.109,1.2892271,12.215515}; + azimut=-363.75699; + offsetY=17; + id=64; + side="WEST"; + vehicle="B_Soldier_A_F"; + player="PLAY CDG"; + skill=0.60000002; + text="h4"; + init="(group this) setGroupId[""HAT""];"; + description="HAT ammo bearer"; + }; + }; + }; + class Item28 + { + side="WEST"; + class Vehicles + { + items=3; + class Item0 + { + position[]={15338.762,1.2382044,10.540466}; + azimut=-363.75699; + offsetY=17; + id=65; + side="WEST"; + vehicle="B_crew_F"; + player="PLAY CDG"; + leader=1; + rank="SERGEANT"; + skill=0.60000002; + text="anv1"; + init="(group this) setGroupId[""Anvil""];"; + description="Anvil commander"; + }; + class Item1 + { + position[]={15340.078,1.2669678,10.496521}; + azimut=-363.75699; + offsetY=17; + id=66; + side="WEST"; + vehicle="B_crew_F"; + player="PLAY CDG"; + rank="SERGEANT"; + skill=0.60000002; + text="anv2"; + init="(group this) setGroupId[""Anvil""];"; + description="Anvil gunner"; + }; + class Item2 + { + position[]={15341.438,1.2877806,10.450623}; + azimut=-363.75699; + offsetY=17; + id=67; + side="WEST"; + vehicle="B_crew_F"; + player="PLAY CDG"; + rank="SERGEANT"; + skill=0.60000002; + text="anv3"; + init="(group this) setGroupId[""Anvil""];"; + description="Anvil driver"; + }; + }; + }; + class Item29 + { + side="WEST"; + class Vehicles + { + items=2; + class Item0 + { + position[]={15339.201,1.2718861,5.843689}; + azimut=-363.75699; + offsetY=17; + id=68; + side="WEST"; + vehicle="B_Helipilot_F"; + player="PLAY CDG"; + leader=1; + rank="CAPTAIN"; + skill=0.60000002; + text="s1"; + init="(group this) setGroupId[""Saint""];"; + description="Saint pilot"; + }; + class Item1 + { + position[]={15340.475,1.2705554,5.8456421}; + azimut=-363.75699; + offsetY=17; + id=69; + side="WEST"; + vehicle="B_helicrew_F"; + player="PLAY CDG"; + rank="LIEUTENANT"; + skill=0.60000002; + text="s2"; + init="(group this) setGroupId[""Saint""];"; + description="Saint co-pilot"; + }; + }; + }; + class Item30 + { + side="WEST"; + class Vehicles + { + items=2; + class Item0 + { + position[]={15339.156,1.2616256,4.1188354}; + azimut=-363.75699; + offsetY=17; + id=70; + side="WEST"; + vehicle="B_Helipilot_F"; + player="PLAY CDG"; + leader=1; + rank="CAPTAIN"; + skill=0.60000002; + text="v1"; + init="(group this) setGroupId[""Vulture""];"; + description="Vulture pilot"; + }; + class Item1 + { + position[]={15340.43,1.2507246,4.1207886}; + azimut=-363.75699; + offsetY=17; + id=71; + side="WEST"; + vehicle="B_helicrew_F"; + player="PLAY CDG"; + rank="LIEUTENANT"; + skill=0.60000002; + text="v2"; + init="(group this) setGroupId[""Vulture""];"; + description="Vulture co-pilot"; + }; + }; + }; + class Item31 + { + side="WEST"; + class Vehicles + { + items=2; + class Item0 + { + position[]={15339.107,1.2419211,2.3917847}; + offsetY=17; + id=72; + side="WEST"; + vehicle="B_Pilot_F"; + player="PLAY CDG"; + leader=1; + rank="CAPTAIN"; + skill=0.60000002; + text="rip1"; + init="(group this) setGroupId[""Ripper""];"; + description="Ripper 1 pilot"; + }; + class Item1 + { + position[]={15340.516,1.2200053,2.3920288}; + offsetY=17; + id=73; + side="WEST"; + vehicle="B_Pilot_F"; + player="PLAY CDG"; + rank="LIEUTENANT"; + skill=0.60000002; + text="rip2"; + init="(group this) setGroupId[""Ripper""];"; + description="Ripper 2 pilot"; + }; + }; + }; + class Item32 + { + side="LOGIC"; + class Vehicles + { + items=1; + class Item0 + { + position[]={559.8089,11.092176,1882.8401}; + id=74; + side="LOGIC"; + vehicle="Logic"; + leader=1; + skill=0.60000002; + text="obj_bush"; + init="(getPos this nearestObject 323601) setDamage 1;(getPos this nearestObject 323610) setDamage 1;(getPos this nearestObject 323611) setDamage 1;(getPos this nearestObject 323592) setDamage 1;(getPos this nearestObject 323633) setDamage 1;(getPos this nearestObject 323632) setDamage 1;(getPos this nearestObject 323582) setDamage 1;(getPos this nearestObject 323627) setDamage 1;(getPos this nearestObject 323618) setDamage 1;(getPos this nearestObject 323626) setDamage 1;(getPos this nearestObject 323565) setDamage 1;(getPos this nearestObject 323572) setDamage 1;(getPos this nearestObject 323571) setDamage 1;(getPos this nearestObject 323566) setDamage 1;(getPos this nearestObject 323628) setDamage 1;(getPos this nearestObject 323625) setDamage 1;(getPos this nearestObject 323617) setDamage 1;(getPos this nearestObject 323607) setDamage 1;"; + }; + }; + }; + class Item33 + { + side="LOGIC"; + class Vehicles + { + items=1; + class Item0 + { + position[]={523.64514,18.474304,1881.048}; + class args + { + items=1; + class Item0 + { + value="1"; + parentCls="ACE_ModuleSitting"; + typeName="enable"; + }; + }; + id=75; + side="LOGIC"; + vehicle="ACE_ModuleSitting"; + leader=1; + lock="UNLOCKED"; + skill=0.60000002; + }; + }; + }; + class Item34 + { + side="LOGIC"; + class Vehicles + { + items=1; + class Item0 + { + position[]={523.57617,17.699036,1861.2395}; + class args + { + items=5; + class Item0 + { + value="-1"; + parentCls="ACE_ModuleNameTags"; + typeName="showPlayerNames"; + }; + class Item1 + { + value="5"; + parentCls="ACE_ModuleNameTags"; + typeName="playerNamesViewDistance"; + }; + class Item2 + { + value="-1"; + parentCls="ACE_ModuleNameTags"; + typeName="showNamesForAI"; + }; + class Item3 + { + value="-1"; + parentCls="ACE_ModuleNameTags"; + typeName="showVehicleCrewInfo"; + }; + class Item4 + { + value="1"; + parentCls="ACE_ModuleNameTags"; + typeName="showCursorTagForVehicles"; + }; + }; + id=76; + side="LOGIC"; + vehicle="ACE_ModuleNameTags"; + leader=1; + lock="UNLOCKED"; + skill=0.60000002; + }; + }; + }; + class Item35 + { + side="LOGIC"; + class Vehicles + { + items=1; + class Item0 + { + position[]={523.763,18.102816,1871.3315}; + class args + { + items=4; + class Item0 + { + value="1"; + parentCls="ACE_ModuleMap"; + typeName="MapIllumination"; + }; + class Item1 + { + value="1"; + parentCls="ACE_ModuleMap"; + typeName="MapShake"; + }; + class Item2 + { + value="0"; + parentCls="ACE_ModuleMap"; + typeName="MapLimitZoom"; + }; + class Item3 + { + value="0"; + parentCls="ACE_ModuleMap"; + typeName="MapShowCursorCoordinates"; + }; + }; + id=77; + side="LOGIC"; + vehicle="ACE_ModuleMap"; + leader=1; + lock="UNLOCKED"; + skill=0.60000002; + }; + }; + }; + }; + class Vehicles + { + items=336; + class Item0 + { + position[]={689.72211,6.0638437,1797.7275}; + azimut=50; + id=78; + side="EMPTY"; + vehicle="B_supplyCrate_F"; + lock="LOCKED"; + skill=0.60000002; + init="this allowDamage false;[""AmmoboxInit"",[this,true]] call BIS_fnc_arsenal;"; + }; + class Item1 + { + position[]={696.66595,6,1789.2854}; + azimut=50; + id=79; + side="EMPTY"; + vehicle="B_supplyCrate_F"; + lock="LOCKED"; + skill=0.60000002; + init="this enableSimulation false;this allowDamage false;[""AmmoboxInit"",[this,true]] call BIS_fnc_arsenal;"; + }; + class Item2 + { + position[]={693.19678,6.0127869,1793.5654}; + azimut=50; + id=80; + side="EMPTY"; + vehicle="B_supplyCrate_F"; + lock="LOCKED"; + skill=0.60000002; + init="this enableSimulation false;this allowDamage false;[""AmmoboxInit"",[this,true]] call BIS_fnc_arsenal;"; + }; + class Item3 + { + position[]={570.13501,5.9898186,1751.3179}; + azimut=50; + id=81; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item4 + { + position[]={565.23724,5.9603734,1757.2734}; + azimut=50; + id=82; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item5 + { + position[]={560.1134,5.9859104,1763.38}; + azimut=50; + id=83; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item6 + { + position[]={555.06494,6.019567,1769.4106}; + azimut=50; + id=84; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item7 + { + position[]={584.31573,6,1735.7429}; + azimut=50; + id=85; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item8 + { + position[]={589.59521,5.9953256,1729.6575}; + azimut=50; + id=86; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item9 + { + position[]={594.80798,6,1723.5061}; + azimut=50; + id=87; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item10 + { + position[]={679.27643,5.9921484,1854.1115}; + azimut=50; + id=88; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item11 + { + position[]={674.37866,6.0182672,1860.067}; + azimut=50; + id=89; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item12 + { + position[]={669.25482,6.3181725,1866.1736}; + azimut=50; + id=90; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item13 + { + position[]={664.6391,6.5580735,1871.6266}; + azimut=50; + id=91; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item14 + { + position[]={693.45715,5.9899998,1838.5365}; + azimut=50; + id=92; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item15 + { + position[]={714.69751,6.0759115,1827.3296}; + azimut=50; + id=93; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item16 + { + position[]={709.0744,6.0786099,1820.1172}; + azimut=50; + id=94; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item17 + { + position[]={714.13428,6.0804911,1814.0544}; + azimut=50; + id=95; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item18 + { + position[]={600.25067,6,1721.2528}; + azimut=147; + id=96; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item19 + { + position[]={607.00043,6.0006661,1725.6665}; + azimut=147; + id=97; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item20 + { + position[]={613.61658,6,1729.9448}; + azimut=147; + id=98; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item21 + { + position[]={620.36633,6.0074348,1734.3586}; + azimut=147; + id=99; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item22 + { + position[]={627.08099,6,1738.7806}; + azimut=147; + id=100; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item23 + { + position[]={633.71667,6.0253501,1743.1687}; + azimut=147; + id=101; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item24 + { + position[]={640.12018,6,1747.458}; + azimut=147; + id=102; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item25 + { + position[]={646.82642,6,1751.7573}; + azimut=147; + id=103; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item26 + { + position[]={653.45728,6,1755.9028}; + azimut=147; + id=104; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item27 + { + position[]={659.97162,6,1760.1132}; + azimut=147; + id=105; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item28 + { + position[]={666.85229,6.0043178,1764.5408}; + azimut=147; + id=106; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item29 + { + position[]={673.27869,6,1768.6597}; + azimut=147; + id=107; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item30 + { + position[]={680.02588,6.0098963,1772.9536}; + azimut=147; + id=108; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item31 + { + position[]={686.71924,6,1777.3691}; + azimut=147; + id=109; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item32 + { + position[]={693.44165,6,1781.728}; + azimut=147; + id=110; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item33 + { + position[]={700.08972,6,1786.1189}; + azimut=147; + id=111; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item34 + { + position[]={706.88831,6,1790.4484}; + azimut=147; + id=112; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item35 + { + position[]={713.68695,6,1794.8411}; + azimut=147; + id=113; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item36 + { + position[]={720.45319,6,1799.1707}; + azimut=147; + id=114; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item37 + { + position[]={722.43445,6,1804.1465}; + azimut=50; + id=115; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item38 + { + position[]={555.85571,6.0108724,1774.1473}; + azimut=137; + id=116; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + leader=1; + skill=0.60000002; + }; + class Item39 + { + position[]={561.82788,5.9083447,1779.7477}; + azimut=137; + id=117; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + leader=1; + skill=0.60000002; + }; + class Item40 + { + position[]={567.7135,5.8585324,1785.2299}; + azimut=137; + id=118; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + leader=1; + skill=0.60000002; + }; + class Item41 + { + position[]={573.6568,5.8340116,1790.6864}; + azimut=137; + id=119; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + leader=1; + skill=0.60000002; + }; + class Item42 + { + position[]={579.65778,5.8200588,1796.2574}; + azimut=137; + id=120; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + leader=1; + skill=0.60000002; + }; + class Item43 + { + position[]={585.5434,5.8066678,1801.6544}; + azimut=137; + id=121; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + leader=1; + skill=0.60000002; + }; + class Item44 + { + position[]={591.40021,5.8023186,1807.1962}; + azimut=137; + id=122; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + leader=1; + skill=0.60000002; + }; + class Item45 + { + position[]={597.31476,5.8092346,1812.6527}; + azimut=137; + id=123; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + leader=1; + skill=0.60000002; + }; + class Item46 + { + position[]={602.98743,5.8290348,1817.8729}; + azimut=137; + id=124; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + leader=1; + skill=0.60000002; + }; + class Item47 + { + position[]={609.17267,5.8542414,1823.5933}; + azimut=137; + id=125; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + leader=1; + skill=0.60000002; + }; + class Item48 + { + position[]={615.26031,5.88727,1829.2218}; + azimut=137; + id=126; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + leader=1; + skill=0.60000002; + }; + class Item49 + { + position[]={621.3479,5.9279237,1834.8221}; + azimut=137; + id=127; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + leader=1; + skill=0.60000002; + }; + class Item50 + { + position[]={627.32007,5.9631929,1840.307}; + azimut=137; + id=128; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + leader=1; + skill=0.60000002; + }; + class Item51 + { + position[]={633.20563,6.0087342,1845.8488}; + azimut=137; + id=129; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + leader=1; + skill=0.60000002; + }; + class Item52 + { + position[]={639.14911,6.0992255,1851.4188}; + azimut=137; + id=130; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + leader=1; + skill=0.60000002; + }; + class Item53 + { + position[]={644.91925,6.2229695,1857.0475}; + azimut=137; + id=131; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + leader=1; + skill=0.60000002; + }; + class Item54 + { + position[]={650.86261,6.3586721,1862.6779}; + azimut=137; + id=132; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + leader=1; + skill=0.60000002; + }; + class Item55 + { + position[]={656.71924,6.4971809,1868.1327}; + azimut=137; + id=133; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + leader=1; + skill=0.60000002; + }; + class Item56 + { + position[]={660.23914,6.5934396,1871.5375}; + azimut=137; + id=134; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + leader=1; + skill=0.60000002; + }; + class Item57 + { + position[]={598.2301,5.9986792,1725.4952}; + azimut=-33; + id=135; + side="EMPTY"; + vehicle="rhsusf_m1025_w_m2"; + leader=1; + skill=0.60000002; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; + }; + class Item58 + { + position[]={600.86273,6.0030527,1727.2896}; + azimut=-33; + id=136; + side="EMPTY"; + vehicle="rhsusf_m1025_w_m2"; + leader=1; + skill=0.60000002; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; + }; + class Item59 + { + position[]={603.54065,6.0052791,1729.0374}; + azimut=-33; + id=137; + side="EMPTY"; + vehicle="rhsusf_m1025_w_m2"; + leader=1; + skill=0.60000002; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; + }; + class Item60 + { + position[]={606.30951,6.0015874,1730.8346}; + azimut=-33; + id=138; + side="EMPTY"; + vehicle="rhsusf_m1025_w_m2"; + leader=1; + skill=0.60000002; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; + }; + class Item61 + { + position[]={609.03296,6.0003967,1732.5594}; + azimut=-33; + id=139; + side="EMPTY"; + vehicle="rhsusf_m1025_w_m2"; + leader=1; + skill=0.60000002; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; + }; + class Item62 + { + position[]={611.89178,6.0125418,1734.3812}; + azimut=-33; + id=140; + side="EMPTY"; + vehicle="rhsusf_m1025_w_m2"; + leader=1; + skill=0.60000002; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; + }; + class Item63 + { + position[]={614.56421,6.0195165,1737.0885}; + azimut=-33; + id=141; + side="EMPTY"; + vehicle="rhsusf_m1025_w_mk19"; + leader=1; + skill=0.60000002; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; + }; + class Item64 + { + position[]={617.32263,6.0207095,1738.8198}; + azimut=-33; + id=142; + side="EMPTY"; + vehicle="rhsusf_m1025_w_mk19"; + leader=1; + skill=0.60000002; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; + }; + class Item65 + { + position[]={620.21417,6.013905,1740.7141}; + azimut=-33; + id=143; + side="EMPTY"; + vehicle="rhsusf_m1025_w_mk19"; + leader=1; + skill=0.60000002; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; + }; + class Item66 + { + position[]={623.13129,6.0241051,1742.5826}; + azimut=-33; + id=144; + side="EMPTY"; + vehicle="rhsusf_m1025_w_mk19"; + leader=1; + skill=0.60000002; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; + }; + class Item67 + { + position[]={625.99725,6.0403333,1744.3744}; + azimut=-33; + id=145; + side="EMPTY"; + vehicle="rhsusf_m1025_w_mk19"; + leader=1; + skill=0.60000002; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; + }; + class Item68 + { + position[]={628.73523,6.0508099,1746.1404}; + azimut=-33; + id=146; + side="EMPTY"; + vehicle="rhsusf_m1025_w_mk19"; + leader=1; + skill=0.60000002; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; + }; + class Item69 + { + position[]={646.41852,6.0263281,1757.4681}; + azimut=-33; + id=147; + side="EMPTY"; + vehicle="rhsusf_m113_usarmy"; + leader=1; + skill=0.60000002; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; + }; + class Item70 + { + position[]={649.6485,6.0304155,1759.6324}; + azimut=-33; + id=148; + side="EMPTY"; + vehicle="rhsusf_m113_usarmy"; + leader=1; + skill=0.60000002; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; + }; + class Item71 + { + position[]={652.97571,6,1761.7939}; + azimut=-33; + id=149; + side="EMPTY"; + vehicle="rhsusf_m113_usarmy"; + leader=1; + skill=0.60000002; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; + }; + class Item72 + { + position[]={656.1814,6.0142465,1763.6871}; + azimut=-33; + id=150; + side="EMPTY"; + vehicle="rhsusf_m113_usarmy"; + leader=1; + skill=0.60000002; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; + }; + class Item73 + { + position[]={631.80078,6.0514479,1748.5977}; + azimut=-33; + id=151; + side="EMPTY"; + vehicle="rhsusf_rg33_m2_wd"; + leader=1; + skill=0.60000002; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; + }; + class Item74 + { + position[]={635.34656,6.0415382,1751.0276}; + azimut=-33; + id=152; + side="EMPTY"; + vehicle="rhsusf_rg33_m2_wd"; + leader=1; + skill=0.60000002; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; + }; + class Item75 + { + position[]={639.01373,6.0553713,1753.4325}; + azimut=-33; + id=153; + side="EMPTY"; + vehicle="rhsusf_rg33_m2_wd"; + leader=1; + skill=0.60000002; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; + }; + class Item76 + { + position[]={642.51086,6.0267959,1755.6682}; + azimut=-33; + id=154; + side="EMPTY"; + vehicle="rhsusf_rg33_m2_wd"; + leader=1; + skill=0.60000002; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; + }; + class Item77 + { + position[]={659.75061,6.0297618,1766.7646}; + azimut=-33; + id=155; + side="EMPTY"; + vehicle="RHS_M2A3_BUSKIII_wd"; + leader=1; + skill=0.60000002; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; + }; + class Item78 + { + position[]={663.71466,6.0252357,1769.5139}; + azimut=-33; + id=156; + side="EMPTY"; + vehicle="RHS_M2A3_BUSKIII_wd"; + leader=1; + skill=0.60000002; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; + }; + class Item79 + { + position[]={667.95361,6.0181074,1772.2633}; + azimut=-33; + id=157; + side="EMPTY"; + vehicle="RHS_M2A3_BUSKIII_wd"; + leader=1; + skill=0.60000002; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; + }; + class Item80 + { + position[]={672.85034,6.0229402,1773.5853}; + azimut=-33; + id=158; + side="EMPTY"; + vehicle="RHS_M6_wd"; + leader=1; + skill=0.60000002; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; + }; + class Item81 + { + position[]={676.91278,6.0223489,1776.1285}; + azimut=-33; + id=159; + side="EMPTY"; + vehicle="RHS_M6_wd"; + leader=1; + skill=0.60000002; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; + }; + class Item82 + { + position[]={679.99969,6.0266695,1781.4926}; + azimut=-33; + id=160; + side="EMPTY"; + vehicle="rhsusf_m1a2sep1tuskiiwd_usarmy"; + leader=1; + skill=0.60000002; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; + }; + class Item83 + { + position[]={684.83368,6,1784.7611}; + azimut=-33; + id=161; + side="EMPTY"; + vehicle="B_MBT_01_cannon_F"; + leader=1; + skill=0.60000002; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; + }; + class Item84 + { + position[]={694.8653,6,1786.2095}; + azimut=50; + id=162; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item85 + { + position[]={689.98566,6,1791.8353}; + azimut=50; + id=163; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item86 + { + position[]={685.57916,6.0935903,1801.7615}; + azimut=147; + id=164; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item87 + { + position[]={692.28021,6.1003332,1806.1552}; + azimut=147; + id=165; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item88 + { + position[]={698.8512,6.0881987,1810.4838}; + azimut=147; + id=166; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item89 + { + position[]={685.06604,6.0822058,1797.7057}; + azimut=50; + id=167; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item90 + { + position[]={611.60767,6.1510534,1789.1821}; + azimut=50; + id=168; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item91 + { + position[]={606.7099,6.1331458,1795.1377}; + azimut=50; + id=169; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item92 + { + position[]={601.58606,6.0089049,1801.2443}; + azimut=50; + id=170; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item93 + { + position[]={596.5376,5.8611517,1807.2749}; + azimut=50; + id=171; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item94 + { + position[]={722.90076,6.0674553,1812.822}; + azimut=50; + id=172; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item95 + { + position[]={728.47278,6,1804.8157}; + azimut=147; + id=173; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item96 + { + position[]={735.1402,6,1809.0601}; + azimut=147; + id=174; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item97 + { + position[]={741.85443,6,1813.5388}; + azimut=147; + id=175; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item98 + { + position[]={748.70825,6,1817.8794}; + azimut=147; + id=176; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item99 + { + position[]={755.37573,6,1822.2648}; + azimut=147; + id=177; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item100 + { + position[]={762.04321,6,1826.6511}; + azimut=147; + id=178; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item101 + { + position[]={768.80389,6.0264101,1830.9431}; + azimut=147; + id=179; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item102 + { + position[]={775.51794,6,1835.2341}; + azimut=147; + id=180; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item103 + { + position[]={782.41858,6,1839.6204}; + azimut=147; + id=181; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item104 + { + position[]={788.94617,6,1843.9591}; + azimut=145; + id=182; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item105 + { + position[]={795.43298,6,1848.762}; + azimut=143; + id=183; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item106 + { + position[]={802.05682,6,1853.7067}; + azimut=143; + id=184; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item107 + { + position[]={808.51154,6,1858.8074}; + azimut=140; + id=185; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item108 + { + position[]={814.68451,6,1864.0771}; + azimut=140; + id=186; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item109 + { + position[]={820.92554,6,1869.3589}; + azimut=140; + id=187; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item110 + { + position[]={827.27155,6,1874.8108}; + azimut=140; + id=188; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item111 + { + position[]={833.64313,6,1880.2363}; + azimut=140; + id=189; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item112 + { + position[]={839.96362,6,1885.5381}; + azimut=140; + id=190; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item113 + { + position[]={846.284,5.997499,1890.9379}; + azimut=140; + id=191; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item114 + { + position[]={852.55322,6,1896.3147}; + azimut=140; + id=192; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item115 + { + position[]={716.03705,6.0941482,1819.1615}; + azimut=140; + id=193; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item116 + { + position[]={722.03015,6.0733814,1824.2106}; + azimut=140; + id=194; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item117 + { + position[]={727.90118,6.1056113,1829.1006}; + azimut=140; + id=195; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item118 + { + position[]={733.84906,6.1319156,1834.1149}; + azimut=140; + id=196; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item119 + { + position[]={740.06415,6.1348042,1839.3306}; + azimut=140; + id=197; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item120 + { + position[]={745.81158,6.1190143,1844.2789}; + azimut=140; + id=198; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item121 + { + position[]={751.62262,6.0974102,1848.9553}; + azimut=140; + id=199; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item122 + { + position[]={757.49365,6.0710135,1853.8453}; + azimut=140; + id=200; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item123 + { + position[]={763.44153,6.0470443,1858.8596}; + azimut=140; + id=201; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item124 + { + position[]={769.65662,6.0228305,1864.0753}; + azimut=140; + id=202; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item125 + { + position[]={775.40405,6.0018406,1869.0237}; + azimut=140; + id=203; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item126 + { + position[]={781.64703,5.9942212,1874.2405}; + azimut=140; + id=204; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item127 + { + position[]={787.51807,5.9945168,1879.1305}; + azimut=140; + id=205; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item128 + { + position[]={793.46594,6,1884.1448}; + azimut=140; + id=206; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item129 + { + position[]={799.68103,5.9946108,1889.3605}; + azimut=140; + id=207; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item130 + { + position[]={805.42847,5.99965,1894.3088}; + azimut=140; + id=208; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item131 + { + position[]={811.34766,5.999651,1899.3094}; + azimut=140; + id=209; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item132 + { + position[]={817.21869,5.9914999,1904.1995}; + azimut=140; + id=210; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item133 + { + position[]={823.16656,5.9980631,1909.2137}; + azimut=140; + id=211; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item134 + { + position[]={829.38165,6,1914.4294}; + azimut=140; + id=212; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item135 + { + position[]={835.12909,5.9883409,1919.3778}; + azimut=140; + id=213; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item136 + { + position[]={840.20532,5.9836955,1917.8411}; + azimut=50; + id=214; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item137 + { + position[]={845.19946,5.9601502,1911.8975}; + azimut=50; + id=215; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item138 + { + position[]={850.19354,5.9950438,1905.7433}; + azimut=50; + id=216; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item139 + { + position[]={853.97864,6,1901.4833}; + azimut=50; + id=217; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item140 + { + position[]={696.4967,6.0851517,1804.6783}; + azimut=140; + id=218; + side="EMPTY"; + vehicle="Flag_US_F"; + skill=0.60000002; + text="flagPole"; + }; + class Item141 + { + position[]={690.11487,6.0943995,1808.9337}; + azimut=237; + id=219; + side="EMPTY"; + vehicle="Land_HelipadEmpty_F"; + skill=0.60000002; + text="fobSpawn"; + }; + class Item142 + { + position[]={660.93768,6.0133247,1850.3156}; + azimut=137; + id=220; + side="EMPTY"; + vehicle="Land_HelipadSquare_F"; + leader=1; + skill=0.60000002; + }; + class Item143 + { + position[]={645.84198,6.0921617,1835.8474}; + azimut=137; + id=221; + side="EMPTY"; + vehicle="Land_HelipadSquare_F"; + leader=1; + skill=0.60000002; + }; + class Item144 + { + position[]={615.34821,6.1382518,1808.4594}; + azimut=137; + id=222; + side="EMPTY"; + vehicle="Land_HelipadSquare_F"; + leader=1; + skill=0.60000002; + }; + class Item145 + { + position[]={630.16028,6.1504002,1822.0396}; + azimut=137; + id=223; + side="EMPTY"; + vehicle="Land_HelipadSquare_F"; + leader=1; + skill=0.60000002; + }; + class Item146 + { + position[]={660.7627,6.0134344,1850.4492}; + azimut=137; + id=224; + side="EMPTY"; + vehicle="MELB_AH6M_M"; + leader=1; + skill=0.60000002; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; + }; + class Item147 + { + position[]={614.97601,6.13451,1808.6132}; + azimut=137; + id=225; + side="EMPTY"; + vehicle="RHS_AH64D_wd_AA"; + leader=1; + skill=0.60000002; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; + }; + class Item148 + { + position[]={645.979,6.0926991,1835.5088}; + azimut=137; + id=226; + side="EMPTY"; + vehicle="RHS_UH60M"; + leader=1; + skill=0.60000002; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; + }; + class Item149 + { + position[]={630.50665,6.1505404,1821.588}; + azimut=137; + id=227; + side="EMPTY"; + vehicle="RHS_UH60M"; + leader=1; + skill=0.60000002; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; + }; + class Item150 + { + position[]={708.2749,6.0427299,1825.8895}; + azimut=140; + id=228; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item151 + { + position[]={702.48053,5.9966407,1836.2289}; + azimut=140; + id=229; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item152 + { + position[]={717.46619,6.0954742,1824.1465}; + azimut=50; + id=230; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item153 + { + position[]={741.85754,6.0991936,1844.7795}; + azimut=50; + id=231; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item154 + { + position[]={736.95978,6.0393443,1850.7351}; + azimut=50; + id=232; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item155 + { + position[]={731.83594,6.075242,1856.8417}; + azimut=50; + id=233; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item156 + { + position[]={709.8017,6.0418105,1852.1271}; + azimut=140; + id=234; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item157 + { + position[]={715.74957,6.071043,1857.1414}; + azimut=140; + id=235; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item158 + { + position[]={721.96466,6.1015253,1862.3571}; + azimut=140; + id=236; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item159 + { + position[]={726.9165,6.1158671,1862.7834}; + azimut=50; + id=237; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item160 + { + position[]={704.07745,6.0136647,1847.2965}; + azimut=140; + id=238; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item161 + { + position[]={696.57806,5.9899998,1834.9293}; + azimut=50; + id=239; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item162 + { + position[]={701.83826,6.0013938,1841.7069}; + azimut=50; + id=240; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item163 + { + position[]={725.638,6.045752,1846.2258}; + azimut=230; + id=241; + side="EMPTY"; + vehicle="Land_HelipadRescue_F"; + leader=1; + skill=0.60000002; + }; + class Item164 + { + position[]={725.77502,6.0446658,1845.8872}; + azimut=230; + id=242; + side="EMPTY"; + vehicle="RHS_UH60M_MEV"; + leader=1; + skill=0.60000002; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; + }; + class Item165 + { + position[]={720.9425,6.0769019,1827.3185}; + azimut=50; + id=243; + side="EMPTY"; + vehicle="MASH_EP1"; + leader=1; + skill=0.60000002; + }; + class Item166 + { + position[]={594.95911,6.0376916,1791.3811}; + azimut=137; + id=244; + side="EMPTY"; + vehicle="Land_HelipadSquare_F"; + leader=1; + skill=0.60000002; + }; + class Item167 + { + position[]={594.28546,6.0247264,1791.762}; + azimut=137; + id=245; + side="EMPTY"; + vehicle="B_Heli_Transport_03_unarmed_F"; + leader=1; + skill=0.60000002; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; + }; + class Item168 + { + position[]={560.64941,5.959599,1771.8768}; + azimut=137; + id=246; + side="EMPTY"; + vehicle="B_Slingload_01_Ammo_F"; + leader=1; + skill=0.60000002; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; + }; + class Item169 + { + position[]={565.34875,5.9643288,1766.7665}; + azimut=137; + id=247; + side="EMPTY"; + vehicle="B_Slingload_01_Ammo_F"; + leader=1; + skill=0.60000002; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; + }; + class Item170 + { + position[]={563.38416,5.9637799,1764.9391}; + azimut=137; + id=248; + side="EMPTY"; + vehicle="B_Slingload_01_Cargo_F"; + leader=1; + skill=0.60000002; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; + }; + class Item171 + { + position[]={558.68488,5.9811153,1769.8948}; + azimut=137; + id=249; + side="EMPTY"; + vehicle="B_Slingload_01_Cargo_F"; + leader=1; + skill=0.60000002; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; + }; + class Item172 + { + position[]={567.39404,5.9554181,1768.666}; + azimut=137; + id=250; + side="EMPTY"; + vehicle="B_Slingload_01_Fuel_F"; + leader=1; + skill=0.60000002; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; + }; + class Item173 + { + position[]={573.39246,6.0029182,1758.5056}; + azimut=47; + id=251; + side="EMPTY"; + vehicle="B_Truck_01_ammo_F"; + leader=1; + skill=0.60000002; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; + }; + class Item174 + { + position[]={571.00409,6.0003376,1761.1205}; + azimut=47; + id=252; + side="EMPTY"; + vehicle="B_Truck_01_fuel_F"; + leader=1; + skill=0.60000002; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; + }; + class Item175 + { + position[]={575.78687,6.0056777,1755.9486}; + azimut=47; + id=253; + side="EMPTY"; + vehicle="B_Truck_01_Repair_F"; + leader=1; + skill=0.60000002; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; + }; + class Item176 + { + position[]={565.32269,5.8964548,1778.8293}; + azimut=137; + id=254; + side="EMPTY"; + vehicle="B_CargoNet_01_ammo_F"; + leader=1; + skill=0.60000002; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; + }; + class Item177 + { + position[]={566.77521,5.9012733,1777.309}; + azimut=137; + id=255; + side="EMPTY"; + vehicle="B_CargoNet_01_ammo_F"; + leader=1; + skill=0.60000002; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; + }; + class Item178 + { + position[]={568.25037,5.9123344,1775.6498}; + azimut=137; + id=256; + side="EMPTY"; + vehicle="B_CargoNet_01_ammo_F"; + leader=1; + skill=0.60000002; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; + }; + class Item179 + { + position[]={569.771,5.9241381,1773.8793}; + azimut=137; + id=257; + side="EMPTY"; + vehicle="B_CargoNet_01_ammo_F"; + leader=1; + skill=0.60000002; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; + }; + class Item180 + { + position[]={571.22351,5.9505873,1772.3589}; + azimut=137; + id=258; + side="EMPTY"; + vehicle="B_CargoNet_01_ammo_F"; + leader=1; + skill=0.60000002; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; + }; + class Item181 + { + position[]={572.69867,5.981317,1770.6997}; + azimut=137; + id=259; + side="EMPTY"; + vehicle="B_CargoNet_01_ammo_F"; + leader=1; + skill=0.60000002; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; + }; + class Item182 + { + position[]={724.1073,6.0497589,1820.4933}; + azimut=50; + id=260; + side="EMPTY"; + vehicle="ShootingPos_F"; + skill=0.60000002; + }; + class Item183 + { + position[]={726.44501,6.0154729,1817.7238}; + azimut=50; + id=261; + side="EMPTY"; + vehicle="ShootingPos_F"; + skill=0.60000002; + }; + class Item184 + { + position[]={728.78253,6,1815.022}; + azimut=50; + id=262; + side="EMPTY"; + vehicle="ShootingPos_F"; + skill=0.60000002; + }; + class Item185 + { + position[]={731.052,6,1812.2965}; + azimut=50; + id=263; + side="EMPTY"; + vehicle="ShootingPos_F"; + skill=0.60000002; + }; + class Item186 + { + position[]={730.42114,6.0161881,1823.5117}; + azimut=50; + id=264; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item187 + { + position[]={733.38135,6.0601783,1825.7255}; + azimut=50; + id=265; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item188 + { + position[]={736.34149,6.1271315,1828.4592}; + azimut=50; + id=266; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item189 + { + position[]={739.3667,6.1788349,1830.8351}; + azimut=50; + id=267; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item190 + { + position[]={742.02509,6.1785946,1833.5386}; + azimut=50; + id=268; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item191 + { + position[]={744.98529,6.1256676,1835.7523}; + azimut=50; + id=269; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item192 + { + position[]={747.94543,6.1738925,1838.4861}; + azimut=50; + id=270; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item193 + { + position[]={750.97064,6.1656919,1840.8619}; + azimut=50; + id=271; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item194 + { + position[]={753.17688,6.1565995,1842.734}; + azimut=50; + id=272; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item195 + { + position[]={756.13708,6.1467834,1844.9478}; + azimut=50; + id=273; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item196 + { + position[]={759.09723,6.129231,1847.6815}; + azimut=50; + id=274; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item197 + { + position[]={762.12244,6.1151233,1850.0574}; + azimut=50; + id=275; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item198 + { + position[]={765.0069,6.1016183,1852.3097}; + azimut=50; + id=276; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item199 + { + position[]={767.9671,6.0877681,1854.5234}; + azimut=50; + id=277; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item200 + { + position[]={770.92725,6.0698447,1857.2572}; + azimut=50; + id=278; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item201 + { + position[]={773.95245,6.054872,1859.6331}; + azimut=50; + id=279; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item202 + { + position[]={776.91223,6.0402937,1862.3383}; + azimut=50; + id=280; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item203 + { + position[]={779.87244,6.0294824,1864.552}; + azimut=50; + id=281; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item204 + { + position[]={782.83258,6.0152044,1867.2858}; + azimut=50; + id=282; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item205 + { + position[]={785.85779,6.0120459,1869.6616}; + azimut=50; + id=283; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item206 + { + position[]={788.81744,6.0119534,1871.835}; + azimut=50; + id=284; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item207 + { + position[]={791.77765,6.0095086,1874.0487}; + azimut=50; + id=285; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item208 + { + position[]={794.73779,6.0072742,1876.7825}; + azimut=50; + id=286; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item209 + { + position[]={797.763,6.0081396,1879.1583}; + azimut=50; + id=287; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item210 + { + position[]={800.40985,6.0021162,1881.7063}; + azimut=50; + id=288; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item211 + { + position[]={803.37006,5.9992666,1883.92}; + azimut=50; + id=289; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item212 + { + position[]={806.3302,5.9995685,1886.6538}; + azimut=50; + id=290; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item213 + { + position[]={809.35541,6.0004344,1889.0297}; + azimut=50; + id=291; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item214 + { + position[]={811.86304,5.9980893,1891.4329}; + azimut=50; + id=292; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item215 + { + position[]={814.82324,5.9951377,1893.6466}; + azimut=50; + id=293; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item216 + { + position[]={817.78339,5.9914927,1896.3804}; + azimut=50; + id=294; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item217 + { + position[]={820.80859,5.9899998,1898.7562}; + azimut=50; + id=295; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item218 + { + position[]={823.76843,5.9899998,1901.382}; + azimut=50; + id=296; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item219 + { + position[]={826.72864,5.9895668,1903.5957}; + azimut=50; + id=297; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item220 + { + position[]={829.68878,5.9855208,1906.3295}; + azimut=50; + id=298; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item221 + { + position[]={832.71399,5.9895959,1908.7053}; + azimut=50; + id=299; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item222 + { + position[]={735.53778,6,1817.754}; + azimut=50; + id=300; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item223 + { + position[]={738.56299,6,1820.1299}; + azimut=50; + id=301; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item224 + { + position[]={741.07062,6.0007081,1822.5331}; + azimut=50; + id=302; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item225 + { + position[]={744.03082,6.0599179,1824.7468}; + azimut=50; + id=303; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item226 + { + position[]={746.99097,6.0802398,1827.4806}; + azimut=50; + id=304; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item227 + { + position[]={750.01617,6,1829.8564}; + azimut=50; + id=305; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item228 + { + position[]={752.97601,6.0628829,1832.4822}; + azimut=50; + id=306; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item229 + { + position[]={755.93622,6.1273174,1834.6959}; + azimut=50; + id=307; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item230 + { + position[]={758.89636,6.2080326,1837.4297}; + azimut=50; + id=308; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item231 + { + position[]={761.75964,6.1972761,1839.0905}; + azimut=50; + id=309; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item232 + { + position[]={764.78485,6.1882725,1841.4663}; + azimut=50; + id=310; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item233 + { + position[]={767.29248,6.1180358,1843.8695}; + azimut=50; + id=311; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item234 + { + position[]={770.25269,6.0408273,1846.0833}; + azimut=50; + id=312; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item235 + { + position[]={773.21283,6.0559835,1848.817}; + azimut=50; + id=313; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item236 + { + position[]={776.23804,6.0940714,1851.1929}; + azimut=50; + id=314; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item237 + { + position[]={779.19788,6.1083808,1853.8186}; + azimut=50; + id=315; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item238 + { + position[]={782.15808,6.05721,1856.0323}; + azimut=50; + id=316; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item239 + { + position[]={785.11823,6.0553093,1858.7661}; + azimut=50; + id=317; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item240 + { + position[]={788.05688,6.0564451,1861.2535}; + azimut=50; + id=318; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item241 + { + position[]={791.08209,6.0123706,1863.6294}; + azimut=50; + id=319; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item242 + { + position[]={793.58972,6.0284133,1866.0326}; + azimut=50; + id=320; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item243 + { + position[]={796.54993,6.0390811,1868.2463}; + azimut=50; + id=321; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item244 + { + position[]={799.51007,6.032093,1870.9801}; + azimut=50; + id=322; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item245 + { + position[]={802.53528,6.02634,1873.356}; + azimut=50; + id=323; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item246 + { + position[]={805.49512,6.0093946,1875.9817}; + azimut=50; + id=324; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item247 + { + position[]={808.45532,6.0022016,1878.1954}; + azimut=50; + id=325; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item248 + { + position[]={811.41547,6.007906,1880.9292}; + azimut=50; + id=326; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item249 + { + position[]={814.73071,6.0152845,1883.2673}; + azimut=50; + id=327; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item250 + { + position[]={817.75592,6.0109358,1885.6432}; + azimut=50; + id=328; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item251 + { + position[]={820.26355,6,1888.0464}; + azimut=50; + id=329; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item252 + { + position[]={823.22375,5.9996529,1890.2601}; + azimut=50; + id=330; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item253 + { + position[]={826.1839,5.9960079,1892.9939}; + azimut=50; + id=331; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item254 + { + position[]={829.20911,5.9928403,1895.3698}; + azimut=50; + id=332; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item255 + { + position[]={832.16895,5.9897804,1897.9955}; + azimut=50; + id=333; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item256 + { + position[]={835.12915,5.9828825,1900.2092}; + azimut=50; + id=334; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item257 + { + position[]={838.08929,5.9752903,1902.943}; + azimut=50; + id=335; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item258 + { + position[]={739.97906,6,1814.1835}; + azimut=50; + id=336; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item259 + { + position[]={743.00427,6,1816.5593}; + azimut=50; + id=337; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item260 + { + position[]={745.5119,6,1818.9625}; + azimut=50; + id=338; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item261 + { + position[]={748.47211,6,1821.1763}; + azimut=50; + id=339; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item262 + { + position[]={751.43225,6,1823.91}; + azimut=50; + id=340; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item263 + { + position[]={754.45746,6,1826.2859}; + azimut=50; + id=341; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item264 + { + position[]={757.4173,6,1828.9116}; + azimut=50; + id=342; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item265 + { + position[]={760.3775,6.0315113,1831.1254}; + azimut=50; + id=343; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item266 + { + position[]={763.33765,6.108057,1833.8591}; + azimut=50; + id=344; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item267 + { + position[]={770.72192,6.0497842,1835.896}; + azimut=50; + id=345; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item268 + { + position[]={773.74713,6,1838.2719}; + azimut=50; + id=346; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item269 + { + position[]={776.25476,6,1840.675}; + azimut=50; + id=347; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item270 + { + position[]={779.21497,6,1842.8888}; + azimut=50; + id=348; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item271 + { + position[]={782.17511,6.0099626,1845.6226}; + azimut=50; + id=349; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item272 + { + position[]={785.20032,6.0367942,1847.9984}; + azimut=50; + id=350; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item273 + { + position[]={788.16016,6,1850.6241}; + azimut=50; + id=351; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item274 + { + position[]={791.12036,6.0031543,1852.8379}; + azimut=50; + id=352; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item275 + { + position[]={794.08051,6.0085816,1855.5717}; + azimut=50; + id=353; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item276 + { + position[]={796.4917,6,1857.3065}; + azimut=50; + id=354; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item277 + { + position[]={799.51691,6,1859.6824}; + azimut=50; + id=355; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item278 + { + position[]={802.02454,6.0132709,1862.0856}; + azimut=50; + id=356; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item279 + { + position[]={804.98474,6.0286632,1864.2993}; + azimut=50; + id=357; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item280 + { + position[]={807.94489,6.0137005,1867.0331}; + azimut=50; + id=358; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item281 + { + position[]={810.97009,6,1869.4089}; + azimut=50; + id=359; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item282 + { + position[]={813.92993,6,1872.0347}; + azimut=50; + id=360; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item283 + { + position[]={816.89014,6,1874.2484}; + azimut=50; + id=361; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item284 + { + position[]={819.85028,6.0052857,1876.9822}; + azimut=50; + id=362; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item285 + { + position[]={820.00104,6.0066948,1877.5104}; + azimut=50; + id=363; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item286 + { + position[]={823.02625,6.0052633,1879.8862}; + azimut=50; + id=364; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item287 + { + position[]={825.53387,6,1882.2894}; + azimut=50; + id=365; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item288 + { + position[]={828.49408,6,1884.5032}; + azimut=50; + id=366; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item289 + { + position[]={831.45422,6,1887.2369}; + azimut=50; + id=367; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item290 + { + position[]={834.47943,6,1889.6128}; + azimut=50; + id=368; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item291 + { + position[]={837.43927,5.997015,1892.2385}; + azimut=50; + id=369; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item292 + { + position[]={840.39948,5.9881272,1894.4523}; + azimut=50; + id=370; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item293 + { + position[]={843.35962,5.9889588,1897.186}; + azimut=50; + id=371; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item294 + { + position[]={847.39404,5.9995766,1900.049}; + azimut=50; + id=372; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item295 + { + position[]={843.32288,5.9832916,1905.5531}; + azimut=50; + id=373; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item296 + { + position[]={837.78467,5.9788609,1912.0469}; + azimut=50; + id=374; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item297 + { + position[]={732.30066,6,1812.7396}; + azimut=50; + id=375; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item298 + { + position[]={728.10437,6,1817.1342}; + azimut=50; + id=376; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item299 + { + position[]={723.90808,6.0526814,1821.5598}; + azimut=50; + id=377; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item300 + { + position[]={746.51184,6.1592007,1839.6057}; + azimut=50; + id=378; + side="EMPTY"; + vehicle="TargetBootcampHumanSimple_F"; + skill=0.60000002; + }; + class Item301 + { + position[]={757.67786,6.1238985,1847.8473}; + azimut=50; + id=379; + side="EMPTY"; + vehicle="TargetBootcampHumanSimple_F"; + skill=0.60000002; + }; + class Item302 + { + position[]={770.25092,6.0724678,1856.8167}; + azimut=50; + id=380; + side="EMPTY"; + vehicle="TargetBootcampHumanSimple_F"; + skill=0.60000002; + }; + class Item303 + { + position[]={783.87952,6.024065,1866.1661}; + azimut=50; + id=381; + side="EMPTY"; + vehicle="TargetBootcampHumanSimple_F"; + skill=0.60000002; + }; + class Item304 + { + position[]={796.22766,6.0123401,1874.8242}; + azimut=50; + id=382; + side="EMPTY"; + vehicle="TargetBootcampHumanSimple_F"; + skill=0.60000002; + }; + class Item305 + { + position[]={808.92352,6.0073528,1883.4091}; + azimut=50; + id=383; + side="EMPTY"; + vehicle="TargetBootcampHumanSimple_F"; + skill=0.60000002; + }; + class Item306 + { + position[]={821.53516,5.9971676,1892.1241}; + azimut=50; + id=384; + side="EMPTY"; + vehicle="TargetBootcampHumanSimple_F"; + skill=0.60000002; + }; + class Item307 + { + position[]={835.62067,5.9811368,1901.0265}; + azimut=50; + id=385; + side="EMPTY"; + vehicle="TargetBootcampHumanSimple_F"; + skill=0.60000002; + }; + class Item308 + { + position[]={847.23096,5.9945884,1905.9192}; + azimut=50; + id=386; + side="EMPTY"; + vehicle="TargetBootcampHumanSimple_F"; + skill=0.60000002; + }; + class Item309 + { + position[]={849.21588,6,1903.2705}; + azimut=50; + id=387; + side="EMPTY"; + vehicle="TargetBootcampHumanSimple_F"; + skill=0.60000002; + }; + class Item310 + { + position[]={851.36627,6,1900.9543}; + azimut=50; + id=388; + side="EMPTY"; + vehicle="TargetBootcampHumanSimple_F"; + skill=0.60000002; + }; + class Item311 + { + position[]={835.84106,5.9827728,1915.3969}; + azimut=50; + id=389; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; + skill=0.60000002; + }; + class Item312 + { + position[]={666.92737,6.0747705,1817.8198}; + azimut=47; + id=390; + side="EMPTY"; + vehicle="Land_CncBarrier_stripes_F"; + leader=1; + skill=0.60000002; + }; + class Item313 + { + position[]={669.62805,6.0745568,1814.9131}; + azimut=47; + id=391; + side="EMPTY"; + vehicle="Land_CncBarrier_stripes_F"; + leader=1; + skill=0.60000002; + }; + class Item314 + { + position[]={672.37415,6.0751076,1811.9604}; + azimut=47; + id=392; + side="EMPTY"; + vehicle="Land_CncBarrier_stripes_F"; + leader=1; + skill=0.60000002; + }; + class Item315 + { + position[]={675.2337,6.0756507,1808.8972}; + azimut=47; + id=393; + side="EMPTY"; + vehicle="Land_CncBarrier_stripes_F"; + leader=1; + skill=0.60000002; + }; + class Item316 + { + position[]={684.50153,6.0088487,1828.8622}; + azimut=47; + id=394; + side="EMPTY"; + vehicle="Land_CncBarrier_stripes_F"; + leader=1; + skill=0.60000002; + }; + class Item317 + { + position[]={687.24762,6.0091238,1825.9095}; + azimut=47; + id=395; + side="EMPTY"; + vehicle="Land_CncBarrier_stripes_F"; + leader=1; + skill=0.60000002; + }; + class Item318 + { + position[]={690.10718,6.0093951,1822.8463}; + azimut=47; + id=396; + side="EMPTY"; + vehicle="Land_CncBarrier_stripes_F"; + leader=1; + skill=0.60000002; + }; + class Item319 + { + position[]={678.17535,6.0704823,1807.8937}; + azimut=137; + id=397; + side="EMPTY"; + vehicle="Land_CncBarrier_stripes_F"; + leader=1; + skill=0.60000002; + }; + class Item320 + { + position[]={681.48877,6.0534754,1810.9579}; + azimut=137; + id=398; + side="EMPTY"; + vehicle="Land_CncBarrier_stripes_F"; + leader=1; + skill=0.60000002; + }; + class Item321 + { + position[]={684.52997,6.0496469,1813.8418}; + azimut=137; + id=399; + side="EMPTY"; + vehicle="Land_CncBarrier_stripes_F"; + leader=1; + skill=0.60000002; + }; + class Item322 + { + position[]={687.68451,6.0283737,1816.7676}; + azimut=137; + id=400; + side="EMPTY"; + vehicle="Land_CncBarrier_stripes_F"; + leader=1; + skill=0.60000002; + }; + class Item323 + { + position[]={690.97534,6.0249662,1819.8137}; + azimut=137; + id=401; + side="EMPTY"; + vehicle="Land_CncBarrier_stripes_F"; + leader=1; + skill=0.60000002; + }; + class Item324 + { + position[]={706.69177,6.0280285,1802.6276}; + id=402; + side="EMPTY"; + vehicle="Land_HelipadEmpty_F"; + leader=1; + skill=0.60000002; + text="respawn_obj"; + }; + class Item325 + { + position[]={687.0097,6.0139432,1822.5328}; + azimut=47; + id=403; + side="EMPTY"; + vehicle="BlockConcrete_F"; + skill=0.60000002; + }; + class Item326 + { + position[]={683.81445,6.0262408,1819.5024}; + azimut=47; + id=404; + side="EMPTY"; + vehicle="BlockConcrete_F"; + skill=0.60000002; + }; + class Item327 + { + position[]={680.99481,6.0175505,1825.8424}; + azimut=137; + id=405; + side="EMPTY"; + vehicle="BlockConcrete_F"; + skill=0.60000002; + }; + class Item328 + { + position[]={679.52258,6.0160789,1828.418}; + azimut=47; + id=406; + side="EMPTY"; + vehicle="Land_RampConcrete_F"; + skill=0.60000002; + }; + class Item329 + { + position[]={562.69476,5.9200697,1773.7856}; + azimut=137; + id=407; + side="EMPTY"; + vehicle="B_Slingload_01_Fuel_F"; + leader=1; + skill=0.60000002; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; + }; + class Item330 + { + position[]={569.4826,5.9463558,1770.5465}; + azimut=137; + id=408; + side="EMPTY"; + vehicle="B_Slingload_01_Medevac_F"; + leader=1; + skill=0.60000002; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; + }; + class Item331 + { + position[]={564.71368,5.9119935,1775.7009}; + azimut=137; + id=409; + side="EMPTY"; + vehicle="B_Slingload_01_Medevac_F"; + leader=1; + skill=0.60000002; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; + }; + class Item332 + { + position[]={571.87518,5.9021802,1779.0481}; + azimut=137; + id=410; + side="EMPTY"; + vehicle="B_APC_Tracked_01_CRV_F"; + leader=1; + skill=0.60000002; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; + }; + class Item333 + { + position[]={588.07501,6,1741.4336}; + azimut=50; + id=411; + side="EMPTY"; + vehicle="rhsusf_M1078A1P2_B_M2_wd_fmtv_usarmy"; + skill=0.60000002; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; + }; + class Item334 + { + position[]={591.04883,5.9946437,1737.9912}; + azimut=50; + id=412; + side="EMPTY"; + vehicle="rhsusf_M1078A1P2_B_M2_wd_fmtv_usarmy"; + skill=0.60000002; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; + }; + class Item335 + { + position[]={594.19153,5.9915929,1734.3098}; + azimut=50; + id=413; + side="EMPTY"; + vehicle="rhsusf_M1078A1P2_B_M2_wd_fmtv_usarmy"; + skill=0.60000002; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; + }; + }; + class Markers + { + items=90; + class Item0 + { + position[]={4885.7231,339,9659.6299}; + name="mrk_jetSpawn_0"; + text="jetSpawn"; + type="Empty"; + }; + class Item1 + { + position[]={4847.562,339,10089.234}; + name="mrk_heliSpawn_0"; + text="heliSpawn"; + type="Empty"; + }; + class Item2 + { + position[]={30282.385,0.11041628,30157.143}; + name="mrk_hangar"; + text="hangar"; + type="Empty"; + }; + class Item3 + { + position[]={4607.2231,339,10201.781}; + name="mrk_airfield_0"; + text="airfield"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorEAST"; + fillName="SolidBorder"; + a=900; + b=370; + angle=60; + drawBorder=1; + }; + class Item4 + { + position[]={4751.2446,339,10328.98}; + name="mrk_infSpawn"; + text="infSpawn"; + type="Empty"; + }; + class Item5 + { + position[]={4663.6133,339,10378.708}; + name="mrk_vehSpawn"; + text="vehSpawn"; + type="Empty"; + }; + class Item6 + { + position[]={4947.5391,9,2438.9182}; + name="mrk_airfield_2"; + text="airfield"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorEAST"; + fillName="SolidBorder"; + a=400; + b=100; + angle=30; + drawBorder=1; + }; + class Item7 + { + position[]={12094.896,158.93059,12671.143}; + name="mrk_airfield_1"; + text="airfield"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorEAST"; + fillName="SolidBorder"; + a=450; + b=120; + angle=20; + drawBorder=1; + }; + class Item8 + { + position[]={7707.2256,349.91138,7712.4692}; + name="mrk_area"; + markerType="RECTANGLE"; + type="Empty"; + fillName="Border"; + a=7600; + b=7600; + drawBorder=1; + }; + class Item9 + { + position[]={5226.2222,9.0784979,2219.6648}; + name="mrk_jetSpawn_2"; + text="jetSpawn"; + type="Empty"; + }; + class Item10 + { + position[]={12466.073,159,12575.866}; + name="mrk_jetSpawn_1"; + text="jetSpawn"; + type="Empty"; + }; + class Item11 + { + position[]={248.17393,0.0025174618,29848.816}; + name="mrk_show_radar"; + text="Radar"; + type="o_installation"; + }; + class Item12 + { + position[]={246.30032,-0.18606594,29638.166}; + name="mrk_show_aa"; + text="AA-tank"; + type="o_mortar"; + }; + class Item13 + { + position[]={243.60323,-0.022371098,29442.508}; + name="mrk_show_arty"; + text="Artillery"; + type="o_art"; + }; + class Item14 + { + position[]={244.38618,0.078681201,29237.92}; + name="mrk_show_radio"; + text="Radio tower"; + type="loc_Transmitter"; + colorName="ColorEAST"; + }; + class Item15 + { + position[]={248.62238,-0.084247626,30451.467}; + name="mrk_show_opZone"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorEAST"; + fillName="SolidBorder"; + a=50; + b=50; + drawBorder=1; + }; + class Item16 + { + position[]={249.86264,0.24201679,30250.24}; + name="mrk_show_civZone"; + text="Unuccupied zone"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorCIV"; + fillName="SolidBorder"; + a=50; + b=50; + drawBorder=1; + }; + class Item17 + { + position[]={249.37224,-0.079597332,30050.563}; + name="mrk_show_bluZone"; + text="Blufor zone"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorWEST"; + fillName="SolidBorder"; + a=50; + b=50; + drawBorder=1; + }; + class Item18 + { + position[]={329.27768,0.11100048,30056.914}; + name="mrk_show_bluZoneText"; + text="Blufor zone"; + type="mil_circle"; + colorName="ColorWEST"; + a=0; + b=0; + }; + class Item19 + { + position[]={330.142,-0.012917288,30459.199}; + name="mrk_show_opZoneText_1"; + text="Opfor zone"; + type="mil_circle"; + colorName="ColorEAST"; + a=0; + b=0; + }; + class Item20 + { + position[]={329.85397,-0.034097187,30251.316}; + name="mrk_show_civZoneText"; + text="Unoccupied zone"; + type="mil_circle"; + colorName="ColorCIV"; + a=0; + b=0; + }; + class Item21 + { + position[]={15439.215,167.8567,14683.817}; + name="mrk_show_radar_1"; + text="Radar"; + type="o_installation"; + }; + class Item22 + { + position[]={15437.341,120.74146,14473.167}; + name="mrk_show_aa_1"; + text="AA-tank"; + type="o_mortar"; + }; + class Item23 + { + position[]={15434.645,93.537659,14277.507}; + name="mrk_show_arty_1"; + text="Artillery"; + type="o_art"; + }; + class Item24 + { + position[]={15435.427,63.905354,14072.92}; + name="mrk_show_radio_1"; + text="Radio tower"; + type="loc_Transmitter"; + colorName="ColorEAST"; + }; + class Item25 + { + position[]={15439.663,269.6395,15286.473}; + name="mrk_show_opZone_1"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorEAST"; + fillName="SolidBorder"; + a=50; + b=50; + drawBorder=1; + }; + class Item26 + { + position[]={15440.903,241.16557,15085.245}; + name="mrk_show_civZone_1"; + text="Unuccupied zone"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorCIV"; + fillName="SolidBorder"; + a=50; + b=50; + drawBorder=1; + }; + class Item27 + { + position[]={15440.413,195.68727,14885.564}; + name="mrk_show_bluZone_1"; + text="Blufor zone"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorWEST"; + fillName="SolidBorder"; + a=50; + b=50; + drawBorder=1; + }; + class Item28 + { + position[]={15520.318,196.8562,14891.916}; + name="mrk_show_bluZoneText_1"; + text="Blufor zone"; + type="mil_circle"; + colorName="ColorWEST"; + a=0; + b=0; + }; + class Item29 + { + position[]={15521.183,268.0874,15294.203}; + name="mrk_show_opZoneText_1_1"; + text="Opfor zone"; + type="mil_circle"; + colorName="ColorEAST"; + a=0; + b=0; + }; + class Item30 + { + position[]={15520.895,241.43785,15086.319}; + name="mrk_show_civZoneText_1"; + text="Unoccupied zone"; + type="mil_circle"; + colorName="ColorCIV"; + a=0; + b=0; + }; + class Item31 + { + position[]={-2010.1797,304.71854,7674.7813}; + name="mrk_freq_back"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorRed"; + a=2000; + b=7700; + }; + class Item32 + { + position[]={-2820.7283,545.63763,15118.16}; + name="mrk_freq_title"; + text="Frequency table"; + type="respawn_unknown"; + a=0; + b=0; + }; + class Item33 + { + position[]={-3812.4487,513.48456,12388.657}; + name="mrk_freq_alpha"; + text="Alpha SR's"; + type="respawn_unknown"; + a=0; + b=0; + }; + class Item34 + { + position[]={-3350.019,503.99557,11893.722}; + name="mrk_freq_alpha_1"; + text="Alpha lead"; + type="respawn_unknown"; + a=0; + b=0; + }; + class Item35 + { + position[]={-3366.1506,579.45532,11393.406}; + name="mrk_freq_alpha_2"; + text="Alpha fireteam 1"; + type="respawn_unknown"; + a=0; + b=0; + }; + class Item36 + { + position[]={-3376.9048,547.33691,10909.23}; + name="mrk_freq_alpha_3"; + text="Alpha fireteam 2"; + type="respawn_unknown"; + a=0; + b=0; + }; + class Item37 + { + position[]={-3832.0432,432.83401,10379.143}; + name="mrk_freq_alpha_4"; + text="Bravo SR's"; + type="respawn_unknown"; + a=0; + b=0; + }; + class Item38 + { + position[]={-3353.4824,389.99631,9884.207}; + name="mrk_freq_alpha_1_1"; + text="Bravo lead"; + type="respawn_unknown"; + a=0; + b=0; + }; + class Item39 + { + position[]={-3369.6143,347.01813,9383.8916}; + name="mrk_freq_alpha_2_1"; + text="Bravo fireteam 1"; + type="respawn_unknown"; + a=0; + b=0; + }; + class Item40 + { + position[]={-3380.3682,380.04196,8899.7158}; + name="mrk_freq_alpha_3_1"; + text="Bravo fireteam 2"; + type="respawn_unknown"; + a=0; + b=0; + }; + class Item41 + { + position[]={-3837.4658,354.79449,8373.498}; + name="mrk_freq_alpha_5"; + text="Charlie SR's"; + type="respawn_unknown"; + a=0; + b=0; + }; + class Item42 + { + position[]={-3396.5437,324.88177,7878.5625}; + name="mrk_freq_alpha_1_2"; + text="Charlie lead"; + type="respawn_unknown"; + a=0; + b=0; + }; + class Item43 + { + position[]={-3412.6755,274.02872,7378.2471}; + name="mrk_freq_alpha_2_2"; + text="Charlie fireteam 1"; + type="respawn_unknown"; + a=0; + b=0; + }; + class Item44 + { + position[]={-3423.4294,224.04544,6894.0713}; + name="mrk_freq_alpha_3_2"; + text="Charlie fireteam 2"; + type="respawn_unknown"; + a=0; + b=0; + }; + class Item45 + { + position[]={-3802.073,408.35892,14353.947}; + name="mrk_freq_ground"; + text="Ground LW"; + type="respawn_unknown"; + a=0; + b=0; + }; + class Item46 + { + position[]={-3802.073,327.68771,13889.919}; + name="mrk_freq_air"; + text="Air LW"; + type="respawn_unknown"; + a=0; + b=0; + }; + class Item47 + { + position[]={-3799.6177,363.31152,13166.329}; + name="mrk_freq_cmd"; + text="Command SR"; + type="respawn_unknown"; + a=0; + b=0; + }; + class Item48 + { + position[]={4845.7603,339,10215.433}; + name="mrk_airfield_0_hangar_0"; + text="hangar"; + type="Empty"; + fillName="SolidBorder"; + angle=235; + drawBorder=1; + }; + class Item49 + { + position[]={4870.3047,339,10174.411}; + name="mrk_airfield_0_hangar_1"; + text="hangar"; + type="Empty"; + fillName="SolidBorder"; + angle=235; + drawBorder=1; + }; + class Item50 + { + position[]={4894.564,339,10133.239}; + name="mrk_airfield_0_hangar_2"; + text="hangar"; + type="Empty"; + fillName="SolidBorder"; + angle=235; + drawBorder=1; + }; + class Item51 + { + position[]={4918.9014,339,10093.081}; + name="mrk_airfield_0_hangar_3"; + text="hangar"; + type="Empty"; + fillName="SolidBorder"; + angle=235; + drawBorder=1; + }; + class Item52 + { + position[]={4943.29,339,10049.99}; + name="mrk_airfield_0_hangar_4"; + text="hangar"; + type="Empty"; + fillName="SolidBorder"; + angle=235; + drawBorder=1; + }; + class Item53 + { + position[]={4968.1021,338.99414,10007.954}; + name="mrk_airfield_0_hangar_5"; + text="hangar"; + type="Empty"; + fillName="SolidBorder"; + angle=235; + drawBorder=1; + }; + class Item54 + { + position[]={4579.8066,338.98999,10678.79}; + name="mrk_airfield_0_hangar_6"; + text="hangar"; + type="Empty"; + fillName="SolidBorder"; + angle=235; + drawBorder=1; + }; + class Item55 + { + position[]={4522.5366,338.98999,10781.051}; + name="mrk_airfield_0_hangar_7"; + text="hangar"; + type="Empty"; + fillName="SolidBorder"; + angle=235; + drawBorder=1; + }; + class Item56 + { + position[]={4798.9849,339,9628.1279}; + name="mrk_airfield_0_aa_0"; + text="aa"; + type="Empty"; + fillName="SolidBorder"; + angle=235; + drawBorder=1; + }; + class Item57 + { + position[]={4997.3662,339,9744.0449}; + name="mrk_airfield_0_aa_1"; + text="aa"; + type="Empty"; + fillName="SolidBorder"; + angle=235; + drawBorder=1; + }; + class Item58 + { + position[]={4317.5796,339,10922.28}; + name="mrk_airfield_0_aa_2"; + text="aa"; + type="Empty"; + fillName="SolidBorder"; + angle=235; + drawBorder=1; + }; + class Item59 + { + position[]={4116.3027,339,10801.599}; + name="mrk_airfield_0_aa_3"; + text="aa"; + type="Empty"; + fillName="SolidBorder"; + angle=235; + drawBorder=1; + }; + class Item60 + { + position[]={4801.4951,339,10297.614}; + name="mrk_airfield_0_aa_4"; + text="aa"; + type="Empty"; + fillName="SolidBorder"; + angle=235; + drawBorder=1; + }; + class Item61 + { + position[]={5112.7568,9,2189.8379}; + name="mrk_airfield_2_aa_0"; + text="aa"; + type="Empty"; + }; + class Item62 + { + position[]={4624.6353,8.9058619,2482.9395}; + name="mrk_airfield_2_aa_1"; + text="aa"; + type="Empty"; + }; + class Item63 + { + position[]={4791.2861,8.6999998,2573.1758}; + name="mrk_airfield_2_hangar_0"; + text="hangar"; + type="Empty"; + angle=210; + }; + class Item64 + { + position[]={4756.2593,8.6999998,2593.72}; + name="mrk_airfield_2_hangar_1"; + text="hangar"; + type="Empty"; + angle=210; + }; + class Item65 + { + position[]={12312.272,159,12568.086}; + name="mrk_airfield_1_aa_0"; + text="aa"; + type="Empty"; + angle=15; + }; + class Item66 + { + position[]={11806.655,159,12709.518}; + name="mrk_airfield_1_aa_1"; + text="aa"; + type="Empty"; + angle=15; + }; + class Item67 + { + position[]={12057.019,158.8,12621.422}; + name="mrk_airfield_1_hangar_0"; + text="hangar"; + type="Empty"; + angle=15; + }; + class Item68 + { + position[]={12010.067,158.8,12636.979}; + name="mrk_airfield_1_hangar_1"; + text="hangar"; + type="Empty"; + angle=15; + }; + class Item69 + { + position[]={4753.8735,9,2547.8193}; + name="mrk_heliSpawn_2"; + text="heliSpawn"; + type="Empty"; + }; + class Item70 + { + position[]={12052.803,158.8,12678.254}; + name="mrk_heliSpawn_1"; + text="heliSpawn"; + type="Empty"; + }; + class Item71 + { + position[]={694.94067,6.0866742,1803.6934}; + name="mrk_return"; + type="Empty"; + }; + class Item72 + { + position[]={6897.0518,394.55701,11440.723}; + name="mrk_castle_main"; + type="Empty"; + }; + class Item73 + { + position[]={6859.5103,392.07971,11394.38}; + name="mrk_castle_entr1"; + type="Empty"; + }; + class Item74 + { + position[]={6948.6011,388.39505,11437.919}; + name="mrk_castle_entr2"; + type="Empty"; + }; + class Item75 + { + position[]={6887.5508,392.70258,11493.964}; + name="mrk_castle_aa1"; + type="Empty"; + }; + class Item76 + { + position[]={6907.8833,393.16238,11381.681}; + name="mrk_castle_aa2"; + type="Empty"; + }; + class Item77 + { + position[]={702.91925,6.0194201,1799.295}; + name="mrk_base"; + text="HQ"; + type="b_hq"; + colorName="ColorBlue"; + }; + class Item78 + { + position[]={611.82837,6.0284271,1737.4923}; + name="mrk_base_car"; + text="Motorized"; + type="b_motor_inf"; + colorName="ColorBlue"; + }; + class Item79 + { + position[]={656.20959,6.0515032,1767.193}; + name="mrk_base_mech"; + text="Mechanized"; + type="b_motor_inf"; + colorName="ColorBlue"; + }; + class Item80 + { + position[]={682.78119,6,1782.4777}; + name="mrk_base_armor"; + text="Armor"; + type="b_armor"; + colorName="ColorBlue"; + }; + class Item81 + { + position[]={638.73395,6.1213431,1828.2622}; + name="mrk_base_air"; + text="Helicopters"; + type="b_air"; + colorName="ColorBlue"; + }; + class Item82 + { + position[]={585.50604,6.0426102,1780.7281}; + name="mrk_base_log"; + text="Logistics"; + type="b_support"; + colorName="ColorBlue"; + }; + class Item83 + { + position[]={725.21576,6.0335016,1814.2253}; + name="mrk_base_range"; + text="Firing range"; + type="b_installation"; + colorName="ColorBlue"; + }; + class Item84 + { + position[]={679.20544,6.034339,1820.4172}; + name="mrk_rep"; + text="Repair point"; + type="b_maint"; + colorName="ColorBlue"; + }; + class Item85 + { + position[]={3794.2363,351.50992,11537.99}; + name="mrk_aaZone_3"; + markerType="RECTANGLE"; + type="Empty"; + a=3800; + b=3800; + }; + class Item86 + { + position[]={3794.2363,230.83879,3954.1167}; + name="mrk_aaZone_1"; + markerType="RECTANGLE"; + type="Empty"; + a=3800; + b=3800; + }; + class Item87 + { + position[]={11397.074,187.27644,3931.4102}; + name="mrk_aaZone_0"; + markerType="RECTANGLE"; + type="Empty"; + a=3800; + b=3800; + }; + class Item88 + { + position[]={11397.074,288.50131,11515.284}; + name="mrk_aaZone_2"; + markerType="RECTANGLE"; + type="Empty"; + a=3800; + b=3800; + }; + class Item89 + { + position[]={667.54822,6.1595759,1792.5311}; + name="mrk_safeZone"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorWEST"; + fillName="Border"; + a=1200; + b=1200; + drawBorder=1; + }; + }; + class Sensors + { + items=2; + class Item0 + { + position[]={683.15253,6.0177445,1823.5389}; + a=4.5; + b=8; + angle=137; + rectangular=1; + activationBy="WEST"; + repeating=1; + timeoutMin=5; + timeoutMid=5; + timeoutMax=5; + interruptable=1; + age="UNKNOWN"; + name="trg_rep_0"; + expCond="(speed (list trg_rep_0 select 0)) < 1"; + expActiv="_nul0= [(list trg_rep_0 select 0)] spawn JOC_service"; + class Effects + { + }; + }; + class Item1 + { + position[]={675.75043,6.0533237,1816.7531}; + a=5.5; + b=8; + angle=137; + rectangular=1; + activationBy="WEST"; + repeating=1; + timeoutMin=5; + timeoutMid=5; + timeoutMax=5; + interruptable=1; + age="UNKNOWN"; + name="trg_rep_1"; + expCond="(speed (list trg_rep_1 select 0)) < 1"; + expActiv="_nul0= [(list trg_rep_1 select 0)] spawn JOC_service"; + class Effects + { + }; + }; + }; +}; +class Intro +{ + addOns[]= + { + "a3_map_altis", + "aia_chernarus_config" + }; + addOnsAuto[]= + { + "aia_chernarus_config" + }; + randomSeed=427689; + class Intel + { + timeOfChanges=1800.0002; + startWeather=0.30000001; + startWind=0.1; + startWaves=0.1; + forecastWeather=0.30000001; + forecastWind=0.1; + forecastWaves=0.1; + forecastLightnings=0.1; + year=2035; + month=6; + day=24; + hour=12; + minute=0; + startFogDecay=0.013; + forecastFogDecay=0.013; + }; +}; +class OutroWin +{ + addOns[]= + { + "a3_map_altis", + "aia_chernarus_config" + }; + addOnsAuto[]= + { + "aia_chernarus_config" + }; + randomSeed=9071217; + class Intel + { + timeOfChanges=1800.0002; + startWeather=0.30000001; + startWind=0.1; + startWaves=0.1; + forecastWeather=0.30000001; + forecastWind=0.1; + forecastWaves=0.1; + forecastLightnings=0.1; + year=2035; + month=6; + day=24; + hour=12; + minute=0; + startFogDecay=0.013; + forecastFogDecay=0.013; + }; +}; +class OutroLoose +{ + addOns[]= + { + "a3_map_altis", + "aia_chernarus_config" + }; + addOnsAuto[]= + { + "aia_chernarus_config" + }; + randomSeed=2247644; + class Intel + { + timeOfChanges=1800.0002; + startWeather=0.30000001; + startWind=0.1; + startWaves=0.1; + forecastWeather=0.30000001; + forecastWind=0.1; + forecastWaves=0.1; + forecastLightnings=0.1; + year=2035; + month=6; + day=24; + hour=12; + minute=0; + startFogDecay=0.013; + forecastFogDecay=0.013; + }; +}; diff --git a/missionInit.sqf b/missionInit.sqf new file mode 100644 index 0000000..a5bc9b8 --- /dev/null +++ b/missionInit.sqf @@ -0,0 +1,93 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// + +//Parameters *FREE TO EDIT* +townCount = 26; //Number of towns to occupy +baseCount = 10; //Number of military structures to occupy +aaCount = 8; //Number of AA Emplacements (AA-tank only) +roadCount = 20; //Number of roadblocks +patrolCount = 25; //Number of patrolling vehicles +depotCount = 5; //Number of depots +mineCount = 30; //Number of minefields +artyCount = 4; //Number of artillery batteries +radioCount = 4; //Number of radio towers +officerCount = 5; //Number of officers +tankMultiplier = 0.8; //Damage multiplier for tanks; +//Classnames +infantryPool = ["rhs_vdv_rifleman","rhs_vdv_efreitor","rhs_vdv_engineer","rhs_vdv_grenadier","rhs_vdv_at","rhs_vdv_strelok_rpg_assist","rhs_vdv_junior_sergeant","rhs_vdv_machinegunner","rhs_vdv_machinegunner_assistant","rhs_vdv_marksman","rhs_vdv_medic","rhs_vdv_LAT","rhs_vdv_RShG2","rhs_vdv_sergeant"]; //infantry classnames +sfPool = []; +carPool = ["rhs_tigr_msv","rhs_tigr_msv","rhs_uaz_open_MSV_01"]; //car classnames +truckPool = ["RHS_Ural_MSV_01","RHS_Ural_Open_MSV_01"]; //truck classnames +apcPool = ["rhs_btr80_msv","rhs_btr80a_msv"]; //apc classnames +ifvPool = ["rhs_brm1k_tv","rhs_bmp2k_tv","rhs_bmp2_tv","rhs_bmp1k_tv","rhs_prp3_tv"]; //ifv classnames +tankPool = ["rhs_t80um","rhs_t90_tv"]; //tank classnames +supportPool = []; //support classnames +airPool = ["RHS_Mi8AMTSh_UPK23_vvsc","RHS_Mi8mt_vvsc","RHS_Mi8MTV3_vvsc"]; //transport helicopter classnames +casPool = ["RHS_Ka52_UPK23_vvsc","RHS_Mi24P_CAS_vvsc"]; //cas helicopters classnames +jetPool = ["O_Plane_CAS_02_F"]; //jet classnames +//Markers +capitalName = "Chernogorsk"; //Name of capital +blackTowns = []; //Blacklist towns +blackMarkers = ["mrk_safeZone"]; +airfieldMarkers = ["mrk_airfield_0","mrk_airfield_1","mrk_airfield_2"]; //Markers for airfields +"mrk_area" setMarkerAlpha 0; +"mrk_aaZone_0" setMarkerAlpha 0; +"mrk_aaZone_1" setMarkerAlpha 0; +"mrk_aaZone_2" setMarkerAlpha 0; +"mrk_aaZone_3" setMarkerAlpha 0; +//Objects +leaderArray = [cmd1,cmd2,a1,b1,c1,h1,r1,anv1,s1,v1,rip1]; +logisticsArray = ["l1","l2","l3","l4","a1"]; +logisticsVehArray = ["B_APC_Tracked_01_CRV_F"]; +towableObjects = ["rhsusf_rg33_m2_wd","rhsusf_m1025_w_s_m2","rhsusf_m1025_w_s_Mk19","rhsusf_m113_usarmy","B_Truck_01_fuel_F","B_Truck_01_ammo_F","B_Truck_01_Repair_F","rhsusf_M1078A1P2_B_M2_wd_fmtv_usarmy","RHS_M2A3_BUSKIII_wd","RHS_M6_wd"]; +motorizedArray = ["rhsusf_m113_usarmy","RHS_M2A3_BUSKIII_wd","RHS_M6_wd"]; +medicalVehArray = ["RHS_UH60M_MEV"]; +jetArray = []; +radarTArray = ["RHS_UH1Y_UNARMED","RHS_UH1Y","B_Heli_Transport_03_unarmed_F","RHS_CH_47F","RHS_AH1Z_wd","MELB_AH6M_M"]; + +//Init variables *DONT CHANGE* +opTowns = []; +opTownsN = []; +bluTowns = []; +bluTownsN = []; +indTowns = []; +indTownsN = []; +opTownMarkers = []; +activeTasks = []; +airfieldOccup = [false,false,false]; +capitalOccup = [false]; +jetActive = false; +jetTargets = []; +groups = []; +groundArray = []; +officerArray = []; + +//Script vars +RydFFE_Interval = 300; //Sets interval between possible arty calls (I hope so atleast, I didn't make the addon) +CHVD_allowNoGrass = false; // Set 'false' if you want to disable "Low" option for terrain (default: true) +CHVD_maxView = 12000; // Set maximum view distance (default: 12000) +CHVD_maxObj = 12000; // Set maximimum object view distance (default: 12000) + +//Public var for local scripts +publicVariable "logisticsArray"; +publicVariable "towableObjects"; +publicVariable "tankMultiplier"; + +//Run init scripts +//spawn -needs a seperate thread to work +[]spawn JOC_fobManager; +[]spawn JOC_bftManager; +//[] spawn JOC_taskManager; +[]spawn JOC_cacheInit; //Dunno why I can't use a call for this +[]spawn JOC_cmdManager; + +//call -doesn't need a seperate thread +[]call JOC_initTowns; +[]call JOC_initAirfields; +//[]call JOC_initBases; -not implemented +[]call JOC_initAA; +[]call JOC_initArty; //Uses AA +[]call JOC_initRadio; //Uses AA +[]call JOC_initPatrols; +[]call JOC_initMines; \ No newline at end of file diff --git a/onPlayerRespawn.sqf b/onPlayerRespawn.sqf new file mode 100644 index 0000000..2c8f270 --- /dev/null +++ b/onPlayerRespawn.sqf @@ -0,0 +1,14 @@ +player setPosASL getPosASL respawn_obj; + +zeusMod addCuratorEditableObjects [[player],false]; +/*player addEventHandler ["fired", { +if((_this select 0) distance respawn_obj < 500)then{ + hint "Don't fire in base!"; + deleteVehicle (_this select 6); +}; +}]; //Base protection*/ +//[]spawn JOC_loadoutMaster; +[]spawn JOC_playerLoop; +[]spawn JOC_playerClick; +["KeyDown", "_this call JOC_playerButton"] call CBA_fnc_addDisplayHandler; +cduEnabled = false; \ No newline at end of file From 22c15ba3e1925f8961162f1283b4898e0a57f989 Mon Sep 17 00:00:00 2001 From: Jochem Date: Sat, 5 Sep 2015 19:26:24 +0200 Subject: [PATCH 02/17] 50915 Caching New vehicle spawning BFT fixes --- Baked_AIS/Baked_AIS_fnc.sqf | 4 +- Baked_AIS/Baked_AIS_init.sqf | 6 +- Functions/BFT/manager.sqf | 6 +- Functions/Caching/cache.sqf | 4 +- Functions/Caching/unCache.sqf | 6 +- Functions/Player/button.sqf | 1 - Functions/Vehicle/Garage/garageFnc.sqf | 16 + Functions/Vehicle/Garage/main.sqf | 283 +++++ Functions/Vehicle/cdu.sqf | 10 +- Functions/Vehicle/service.sqf | 2 +- Functions/Vehicle/tow.sqf | 3 - Functions/Vehicle/vehInit.sqf | 23 +- Functions/fn_compile.sqf | 4 +- init.sqf | 2 +- initPlayerLocal.sqf | 7 +- mission.sqm | 1580 ++++++++++-------------- onPlayerRespawn.sqf | 3 - 17 files changed, 994 insertions(+), 966 deletions(-) create mode 100644 Functions/Vehicle/Garage/garageFnc.sqf create mode 100644 Functions/Vehicle/Garage/main.sqf diff --git a/Baked_AIS/Baked_AIS_fnc.sqf b/Baked_AIS/Baked_AIS_fnc.sqf index b948ea8..2ef06a2 100644 --- a/Baked_AIS/Baked_AIS_fnc.sqf +++ b/Baked_AIS/Baked_AIS_fnc.sqf @@ -222,7 +222,7 @@ FNC_BAPS_BLOCK = { _defender = _this Select 0; _defender setVariable ["reloading_left", 1, true]; - sleep 1.2; + sleep 5; _defender setVariable ["reloading_left", 0, true]; }; }; @@ -232,7 +232,7 @@ FNC_BAPS_BLOCK = { _defender = _this Select 0; _defender setVariable ["reloading_right", 1, true]; - sleep 1.2; + sleep 5; _defender setVariable ["reloading_right", 0, true]; }; }; diff --git a/Baked_AIS/Baked_AIS_init.sqf b/Baked_AIS/Baked_AIS_init.sqf index c33b118..4be814c 100644 --- a/Baked_AIS/Baked_AIS_init.sqf +++ b/Baked_AIS/Baked_AIS_init.sqf @@ -17,7 +17,7 @@ if !(isnil "baps_running") exitwith {hintSilent "!WARNING! CANNOT RUN MULTIPLE I if (isServer) then { // Get config values - baps_startHint = 1; // Show hint on startup? + baps_startHint = 0; // Show hint on startup? baps_startDelay = 10; // Delay script for x seconds baps_enabledFor = 0; // Enable for types? 0 = M2A1, 1 = ALL TANKS, 2 = ALL ARMOR, 3 = ALL NATO ARMOR, 4 = ALL CSAT ARMOR @@ -81,7 +81,9 @@ baps_weapons = [ baps_defenders = []; if (baps_enabledFor == 0) then { // FOR M2A1 SLAMMER ONLY baps_defenders = [ - "B_MBT_01_cannon_F"]; // Merkava Mk4 + "B_MBT_01_cannon_F", + "rhsusf_m1a2sep1wd_usarmy" + ]; }; if (baps_enabledFor == 1) then { // FOR MBT ONLY baps_defenders = [ diff --git a/Functions/BFT/manager.sqf b/Functions/BFT/manager.sqf index b5bdf73..d000eaf 100644 --- a/Functions/BFT/manager.sqf +++ b/Functions/BFT/manager.sqf @@ -5,7 +5,7 @@ _groups = []; while{true}do{ _groups = []; { - if((side _x == west) and ((count(units _x))>0))then{ + if(side _x == west)then{ [_groups, (count _groups), _x] call Zen_ArrayInsert; }; }forEach allGroups; @@ -14,7 +14,7 @@ while{true}do{ { _id = (groupId _x); _leader = (leader _x); - if(!(isNull _leader))then{ + if(!(alive _leader))then{ _icon = 0; //////////////////////////////////////////////// if((count((getMarkerPos _id) - [0,0,0]))>1)then{ @@ -55,6 +55,8 @@ while{true}do{ /////////////////////////////////////////////////// _id setMarkerType _icon; _id setMarkerText _id; + }else{ + deleteMarker _id; }; }forEach _groups; sleep 5; diff --git a/Functions/Caching/cache.sqf b/Functions/Caching/cache.sqf index 4dcad47..f074c0c 100644 --- a/Functions/Caching/cache.sqf +++ b/Functions/Caching/cache.sqf @@ -20,14 +20,14 @@ listT = _list; if(!(_x getVariable "JOC_disable_caching"))then{ if(_x == (leader(group _x)))then{ _units = (units(group _x)); + _x setVariable ["leader",true,true]; + _x setVariable ["units",_units,true]; { _name = [10] call Zen_StringGenerateRandom; _x setVehicleVarName _name; _x enableSimulationGlobal false; _x hideObjectGlobal true; [_x] joinSilent cacheGroup; }forEach _units; - _x setVariable ["leader",true,true]; - _x setVariable ["units",_units,true]; }; }; }forEach _list; diff --git a/Functions/Caching/unCache.sqf b/Functions/Caching/unCache.sqf index d960cd8..1f813aa 100644 --- a/Functions/Caching/unCache.sqf +++ b/Functions/Caching/unCache.sqf @@ -20,9 +20,11 @@ _list = (list _trg); _units joinSilent _group; if(!(isNil{_x getVariable "patrol"}))then{ if((vehicle _x) != _x)then{ - ([_x] + (_x getVariable "patrol"))spawn Zen_OrderVehiclePatrol; + _arg = ([_x] + (_x getVariable "patrol")); + _arg spawn Zen_OrderVehiclePatrol; }else{ - ([_group] + (_x getVariable "patrol")) spawn Zen_OrderInfantryPatrol; + _arg = ([_group] + (_x getVariable "patrol")); + _arg spawn Zen_OrderInfantryPatrol; }; }; }; diff --git a/Functions/Player/button.sqf b/Functions/Player/button.sqf index 2a3f268..083c5b6 100644 --- a/Functions/Player/button.sqf +++ b/Functions/Player/button.sqf @@ -5,7 +5,6 @@ switch (_this select 1) do { case 210: { - hint "insert"; []spawn JOC_vehCDU; }; //Ignore all others diff --git a/Functions/Vehicle/Garage/garageFnc.sqf b/Functions/Vehicle/Garage/garageFnc.sqf new file mode 100644 index 0000000..8df6a3e --- /dev/null +++ b/Functions/Vehicle/Garage/garageFnc.sqf @@ -0,0 +1,16 @@ + +private["_veh","_dis","_vehType","_nVeh"]; + +_spawnObj = _this select 0; + +waitUntil {isNull(uiNamespace getVariable ["BIS_fnc_arsenal_cam",objNull])}; +_veh = nearestObject [_spawnObj, "AllVehicles"]; +_dis = _veh distance _spawnObj; + +if(_dis > 5)then{}else{ + _vehType = typeOf _veh; + deleteVehicle _veh; + sleep 0.5; + _nVeh = _vehType createVehicle (getPos _spawnObj); + _nVeh setDir (getDir _spawnObj); +}; \ No newline at end of file diff --git a/Functions/Vehicle/Garage/main.sqf b/Functions/Vehicle/Garage/main.sqf new file mode 100644 index 0000000..3f55663 --- /dev/null +++ b/Functions/Vehicle/Garage/main.sqf @@ -0,0 +1,283 @@ + +_airA = ["RHS_UH60M","RHS_AH64D_wd_AA","MELB_H6M","B_Heli_Transport_03_F","B_Heli_Transport_03_unarmed_F","B_Heli_Transport_01_camo_F","RHS_CH_47F"]; +_carA = ["rhsusf_m1025_w_m2","rhsusf_m1025_w_s_m2","rhsusf_m1025_w_mk19","rhsusf_m1025_w_s_Mk19","rhsusf_m1025_w","rhsusf_m1025_w_s","rhsusf_m998_w_2dr_fulltop","rhsusf_m998_w_2dr_halftop","rhsusf_m998_w_2dr","rhsusf_m998_w_4dr_fulltop","rhsusf_m998_w_4dr_halftop","rhsusf_m998_w_4dr"]; +_armorA = ["rhsusf_m1a2sep1wd_usarmy","rhsusf_m1a2sep1tuskiwd_usarmy","rhsusf_m1a2sep1tuskiiwd_usarmy","rhsusf_m113_usarmy","RHS_M2A3_wd","RHS_M2A3_BUSKI_wd","RHS_M2A3_BUSKIII_wd","RHS_M6_wd"]; +_allowCiv = false; + +_vehicleData = [ + + //OPFOR + + [ + + [], //CARS + + [], //ARMOUR + + [], //HELIS + + [], //PLANES + + [], //NAVAL + + [] //STATICS + + ], + + //BLUFOR + + [ + + [], //CARS + + [], //ARMOUR + + [], //HELIS + + [], //PLANES + + [], //NAVAL + + [] //STATICS + + ], + + //INDEPENDENT + + [ + + [], //CARS + + [], //ARMOUR + + [], //HELIS + + [], //PLANES + + [], //NAVAL + + [] //STATICS + + ], + + //CIVILIAN + + [ + + [], //CARS + + [], //ARMOUR + + [], //HELIS + + [], //PLANES + + [], //NAVAL + + [] //STATICS + + ] + +]; + + +_vehicleDataTypes_enum = [ + + [ "car", "carx" ], + + [ "tank", "tankx" ], + + [ "helicopter", "helicopterx", "helicopterrtd" ], + + [ "airplane", "airplanex" ], + + [ "ship", "shipx", "sumbarinex" ] + +]; + + + +_fnc_getVehicleDataTypeIndex = { + + _type = toLower _this; + + _return = -1; + + { + + if ( _type in _x ) exitWith { + + _return = _forEachIndex; + + }; + + }forEach _vehicleDataTypes_enum; + + + + _return + +}; + + + +_defaultCrew = gettext (configfile >> "cfgvehicles" >> "all" >> "crew"); + +" + + _cfgPath = _x; + + _simulType = getText ( _cfgPath >> 'simulation' ); + + _simulIndex = _simulType call _fnc_getVehicleDataTypeIndex; + + if ( ( tolower ( getText ( _cfgPath >> 'vehicleClass' ) ) isEqualTo 'static' ) ) then { + + _simulIndex = 5; + + }; + + + + if ( getnumber (_cfgPath >> 'scope') == 2 && {gettext (_cfgPath >> 'crew') != _defaultCrew} && { _simulIndex >= 0 } ) then { + + + + _side = getNumber ( _cfgPath >> 'side' ); + + _model = getText ( _cfgPath >> 'model' ); + + + + _sides = [ _side ]; + + if ( _allowCiv && { _side isEqualTo 3 } ) then { + + _sides = _sides + [ 0, 1, 2 ]; + + }; + + + + { + + + + _tmpSide = _vehicleData select _x; + + _tmpTypes = _tmpSide select _simulIndex; + + + + _index = ( _tmpTypes find _model ); + + if ( _index >= 0 ) then { + + _index = _index + 1; + + ( _tmpTypes select _index ) pushback _cfgPath; + + }else{ + + _tmpTypes pushback _model; + + _tmpTypes pushback [ _cfgPath ]; + + }; + + }foreach _sides; + + + + }; + + + +" configClasses ( configFile >> "CfgVehicles" ); + + +testV = _vehicleData; + +garage_spawner_0 addAction ["Spawn vehicle",{ + _veh = nearestObjects [(getPos garage_spawn_0),["AllVehicles"],5]; + { + deleteVehicle _x; + }forEach _veh; + BIS_fnc_garage_center = createVehicle ["Land_HelipadEmpty_F", (getPos garage_spawn_0), [], 0, "CAN_COLLIDE" ]; + _array = ( _this select 3 ) select ( side player call BIS_fnc_sideID ); + BIS_fnc_garage_data = [[],[],(_array select 2),[],[],[]]; + ["Open",true] call BIS_fnc_garage; + [garage_spawn_0]spawn JOC_garageFnc; +},_vehicleData]; + +garage_spawner_1 addAction ["Spawn vehicle",{ + _veh = nearestObjects [(getPos garage_spawn_1),["AllVehicles"],5]; + { + deleteVehicle _x; + }forEach _veh; + BIS_fnc_garage_center = createVehicle ["Land_HelipadEmpty_F", (getPos garage_spawn_1), [], 0, "CAN_COLLIDE" ]; + _array = ( _this select 3 ) select ( side player call BIS_fnc_sideID ); + BIS_fnc_garage_data = [[],[],(_array select 2),[],[],[]]; + ["Open",true] call BIS_fnc_garage; + [garage_spawn_1]spawn JOC_garageFnc; +},_vehicleData]; + +garage_spawner_2 addAction ["Spawn vehicle",{ + _veh = nearestObjects [(getPos garage_spawn_2),["AllVehicles"],5]; + { + deleteVehicle _x; + }forEach _veh; + BIS_fnc_garage_center = createVehicle ["Land_HelipadEmpty_F", (getPos garage_spawn_2), [], 0, "CAN_COLLIDE" ]; + _array = ( _this select 3 ) select ( side player call BIS_fnc_sideID ); + BIS_fnc_garage_data = [[],[],(_array select 2),[],[],[]]; + ["Open",true] call BIS_fnc_garage; + [garage_spawn_2]spawn JOC_garageFnc; +},_vehicleData]; + +garage_spawner_3 addAction ["Spawn vehicle",{ + _veh = nearestObjects [(getPos garage_spawn_3),["AllVehicles"],5]; + { + deleteVehicle _x; + }forEach _veh; + BIS_fnc_garage_center = createVehicle ["Land_HelipadEmpty_F", (getPos garage_spawn_3), [], 0, "CAN_COLLIDE" ]; + _array = ( _this select 3 ) select ( side player call BIS_fnc_sideID ); + BIS_fnc_garage_data = [[],[],(_array select 2),[],[],[]]; + ["Open",true] call BIS_fnc_garage; + [garage_spawn_3]spawn JOC_garageFnc; +},_vehicleData]; + +garage_spawner_4 addAction ["Spawn vehicle",{ + _veh = nearestObjects [(getPos garage_spawn_4),["AllVehicles"],5]; + { + deleteVehicle _x; + }forEach _veh; + BIS_fnc_garage_center = createVehicle ["Land_HelipadEmpty_F", (getPos garage_spawn_4), [], 0, "CAN_COLLIDE" ]; + _array = ( _this select 3 ) select ( side player call BIS_fnc_sideID ); + BIS_fnc_garage_data = [[],[],(_array select 2),[],[],[]]; + ["Open",true] call BIS_fnc_garage; + [garage_spawn_4]spawn JOC_garageFnc; +},_vehicleData]; + +garage_spawner_5 addAction ["Spawn vehicle",{ + _veh = nearestObjects [(getPos garage_spawn_5),["AllVehicles"],5]; + { + deleteVehicle _x; + }forEach _veh; + BIS_fnc_garage_center = createVehicle ["Land_HelipadEmpty_F", (getPos garage_spawn_5), [], 0, "CAN_COLLIDE" ]; + _array = ( _this select 3 ) select ( side player call BIS_fnc_sideID ); + BIS_fnc_garage_data = [(_array select 0),[],[],[],[],[]]; + ["Open",true] call BIS_fnc_garage; + [garage_spawn_5]spawn JOC_garageFnc; +},_vehicleData]; + +garage_spawner_6 addAction ["Spawn vehicle",{ + _veh = nearestObjects [(getPos garage_spawn_6),["AllVehicles"],5]; + { + deleteVehicle _x; + }forEach _veh; + BIS_fnc_garage_center = createVehicle ["Land_HelipadEmpty_F", (getPos garage_spawn_6), [], 0, "CAN_COLLIDE" ]; + _array = ( _this select 3 ) select ( side player call BIS_fnc_sideID ); + BIS_fnc_garage_data = [[],(_array select 1),[],[],[],[]]; + ["Open",true] call BIS_fnc_garage; + [garage_spawn_6]spawn JOC_garageFnc; +},_vehicleData]; \ No newline at end of file diff --git a/Functions/Vehicle/cdu.sqf b/Functions/Vehicle/cdu.sqf index 47207c7..1e2e8d2 100644 --- a/Functions/Vehicle/cdu.sqf +++ b/Functions/Vehicle/cdu.sqf @@ -3,10 +3,10 @@ ///////////////////////// _veh = (vehicle player); //if(cduEnabled)then{cduEnabled = false}; -if(cduEnabled or (player != (commander _veh)))exitWith{cduEnabled = false}; +if(cduEnabled or (player != (commander _veh)) or player == _veh)exitWith{cduEnabled = false}; if(!cduEnabled)then{ cduEnabled = true; -while{cduEnabled}do{ +while{cduEnabled && (player == (commander _veh))}do{ //Ammo _magazines = magazinesAmmo _veh; _magazinesD = magazinesDetail _veh; @@ -44,8 +44,10 @@ while{cduEnabled}do{ _statusR = ""; _statusLO = (_veh getVariable "reloading_left"); _statusRO = ( _veh getVariable "reloading_right"); - if(_statusLO == 0)then{_statusL = parseText "Ready";}else{_statusL = parseText "Reloading";}; - if(_statusRO == 0)then{_statusR = parseText "Ready";}else{_statusR = parseText "Reloading";}; + if(_statusLO == 0)then{_statusL = parseText "Ready";}else{_statusL = parseText "Reloading";}; + if(_statusRO == 0)then{_statusR = parseText "Ready";}else{_statusR = parseText "Reloading";}; + if((_veh getVariable "ammo_left") == 0)then{_statusL = parseText "Depleted";}; + if((_veh getVariable "ammo_right") == 0)then{_statusR = parseText "Depleted";}; _aps_leftA = parseText format["APS left(%1)",(_veh getVariable "ammo_left")]; _aps_rightA = parseText format["APS right(%1)",(_veh getVariable "ammo_right")]; _apsText = composeText [_aps_leftA, " | Status: ", _statusL, lineBreak, _aps_rightA, " | Status: ", _statusR]; diff --git a/Functions/Vehicle/service.sqf b/Functions/Vehicle/service.sqf index 34e472f..7609274 100644 --- a/Functions/Vehicle/service.sqf +++ b/Functions/Vehicle/service.sqf @@ -15,7 +15,7 @@ _veh setDamage 0; _veh vehicleChat "Rearming..."; Sleep 5; _veh setVehicleAmmo 1; -if(typeOf _veh == "B_MBT_01_cannon_F")then{ +if(typeOf _veh == "B_MBT_01_cannon_F" or typeOf _veh == "rhsusf_m1a2sep1wd_usarmy")then{ _x setVariable ["ammo_left", 4, true]; _x setVariable ["ammo_right", 4, true]; _x setVariable ["reloading_left", 0, true]; diff --git a/Functions/Vehicle/tow.sqf b/Functions/Vehicle/tow.sqf index 0d9a41b..4a3823b 100644 --- a/Functions/Vehicle/tow.sqf +++ b/Functions/Vehicle/tow.sqf @@ -7,13 +7,10 @@ _active = 0; _vehicle setVariable ["towing", false, true]; //if(isServer)exitWith{}; -hint "tow init"; while{alive _vehicle}do{ waitUntil{sleep 5;typeOf (vehicle player) == "B_APC_Tracked_01_CRV_F"}; //You cant tow when not in the right vehicle(duh) - hint "check"; - _targetC = (nearestObjects [_vehicle, towableObjects, 10]) select 0; targetT = _targetC; diff --git a/Functions/Vehicle/vehInit.sqf b/Functions/Vehicle/vehInit.sqf index ff7ef78..1136a8b 100644 --- a/Functions/Vehicle/vehInit.sqf +++ b/Functions/Vehicle/vehInit.sqf @@ -13,80 +13,63 @@ _vehicle setDamage 0; //Blackhwk if(_vehicletype == "RHS_UH60M")then{ - _time = 600; }; //Apache if(_vehicletype == "RHS_AH64D_wd_AA")then{ - _time = 1800; }; //Medical heli if(_vehicletype == "RHS_UH60M_MEV")then{ - _time = 1800; _vehicle setVariable ["ace_medical_medicClass", 1]; }; //LittleBird if(_vehicletype == "MELB_AH6M_M")then{ - _time = 1800; }; //Chinook if(_vehicletype == "B_Heli_Transport_03_unarmed_F" or _vehicletype == "RHS_CH_47F")then{ - _time = 600; }; //Tank -if(_vehicletype == "B_MBT_01_cannon_F" or _vehicletype == "rhsusf_m1a2sep1tuskiiwd_usarmy")then{ - _vehicle addEventHandler ["HandleDamage" , {[(_this select 0),(_this select 1), (_this select 2)]call JOC_handleVehDamage;}]; - _vehicle setVariable["burning",false,true]; -}]; +if(_vehicletype == "B_MBT_01_cannon_F" or _vehicletype == "rhsusf_m1a2sep1wd_usarmy")then{ + _vehicle addMagazine "rhs_mag_M1069"; cduEnabled = false; - _time = 1800; }; //IFV if(_vehicletype == "RHS_M2A3_BUSKIII_wd" or _vehicleType == "RHS_M6_wd")then{ - _time = 1800; }; //MRAP if(_vehicletype == "rhsusf_rg33_m2_wd")then{ - _time = 600; }; //HMVEE if(_vehicletype == "rhsusf_m1025_w_s_m2" or _vehicletype == "rhsusf_m1025_w_s_Mk19")then{ - _time = 300; }; //APC if(_vehicletype == "rhsusf_m113_usarmy")then{ - _time = 600; }; //Bulldozer if(_vehicletype == "B_APC_Tracked_01_CRV_F")then{ [_vehicle]spawn JOC_tow; - _time = 600; }; //Support trucks if(_vehicletype == "B_Truck_01_fuel_F" or _vehicletype == "B_Truck_01_ammo_F" or _vehicletype == "B_Truck_01_Repair_F")then{ - _time = 600; }; //Transport truck if(_vehicletype == "rhsusf_M1078A1P2_B_M2_wd_fmtv_usarmy")then{ - _time = 600; }; //Ammo container if(_vehicletype == "B_Slingload_01_Ammo_F" or _vehicletype == "B_Slingload_01_Fuel_F" or _vehicletype == "B_Slingload_01_Medevac_F" or _vehicletype == "B_Slingload_01_Cargo_F" or _vehicletype == "B_Slingload_01_Repair_F" or _vehicletype == "B_CargoNet_01_ammo_F")then{ [_vehicle]spawn JOC_crateInit; - _time = 300; }; -zeusMod addCuratorEditableObjects [[_vehicle],false]; -[_vehicle,_time] spawn JOC_vehRespawn; \ No newline at end of file +zeusMod addCuratorEditableObjects [[_vehicle],false]; \ No newline at end of file diff --git a/Functions/fn_compile.sqf b/Functions/fn_compile.sqf index 1948fb9..a6f31c3 100644 --- a/Functions/fn_compile.sqf +++ b/Functions/fn_compile.sqf @@ -71,4 +71,6 @@ JOC_service = compileFinal preprocessFileLineNumbers "Functions\Vehicle\service. JOC_handleVehDamage = compileFinal preprocessFileLineNumbers "Functions\Vehicle\handleDamage.sqf"; JOC_towAttach = compileFinal preprocessFileLineNumbers "Functions\Vehicle\Tow\attach.sqf"; JOC_towDetach = compileFinal preprocessFileLineNumbers "Functions\Vehicle\Tow\detach.sqf"; -JOC_vehCDU = compileFinal preprocessFileLineNumbers "Functions\vehicle\cdu.sqf"; \ No newline at end of file +JOC_vehCDU = compileFinal preprocessFileLineNumbers "Functions\Vehicle\cdu.sqf"; +JOC_garage = compileFinal preprocessFileLineNumbers "Functions\Vehicle\Garage\main.sqf"; +JOC_garageFnc = compileFinal preprocessFileLineNumbers "Functions\Vehicle\Garage\garageFnc.sqf"; \ No newline at end of file diff --git a/init.sqf b/init.sqf index b92918c..3dd7fd4 100644 --- a/init.sqf +++ b/init.sqf @@ -14,7 +14,7 @@ enableSaving [false, false]; eastHQ = createCenter east; // Execution stops until the mission begins (past briefing), do not delete this line -Sleep 1; +sleep 1; // All clients stop executing here, do not delete this line if (!isServer) exitWith {}; diff --git a/initPlayerLocal.sqf b/initPlayerLocal.sqf index 0ea4379..96447e0 100644 --- a/initPlayerLocal.sqf +++ b/initPlayerLocal.sqf @@ -19,4 +19,9 @@ _textName = format["%1 %2",_rank,_name]; Sleep 10; -0=["Gemini",_textDate,_textName,"SE Chernarus"] spawn BIS_fnc_infoText; \ No newline at end of file +0=["Gemini",_textDate,_textName,"SE Chernarus"] spawn BIS_fnc_infoText; + +[]spawn JOC_playerLoop; +[]spawn JOC_playerClick; +[]call JOC_garage; +["KeyDown", "_this call JOC_playerButton"] call CBA_fnc_addDisplayHandler; \ No newline at end of file diff --git a/mission.sqm b/mission.sqm index 066369a..e9e61e2 100644 --- a/mission.sqm +++ b/mission.sqm @@ -23,18 +23,10 @@ class Mission "A3_Modules_F", "A3_Weapons_F_Ammoboxes", "A3_Structures_F_Mil_Fortification", - "rhsusf_c_hmmwv", - "rhsusf_vehicles", - "rhsusf_c_m113", - "rhsusf_c_rg33", - "RHS_US_A2Port_Armor", - "rhsusf_c_m1a2", - "A3_Armor_F_Slammer", "A3_Structures_F_Mil_Flags", "A3_Structures_F_Mil_Helipads", "RHS_US_A2_AirImport", "aia_misc_e_config", - "A3_Air_F_Heli_Heli_Transport_03", "A3_Supplies_F_Heli_Slingload", "A3_Soft_F_Gamma_HEMTT", "A3_Supplies_F_Heli_CargoNets", @@ -43,12 +35,11 @@ class Mission "A3_Structures_F_Bootcamp_Training", "A3_Structures_F_Walls", "aia_chernarus_config", - "MELB", "A3_Armor_F_Panther", - "rhsusf_c_fmtv", "3DEN", "ace_sitting", - "ace_nametags" + "ace_nametags", + "A3_Structures_F_Civ_InfoBoards" }; addOnsAuto[]= { @@ -75,19 +66,10 @@ class Mission "ace_nametags", "A3_Weapons_F_Ammoboxes", "A3_Structures_F_Mil_Fortification", - "rhsusf_c_hmmwv", - "rhsusf_vehicles", - "rhsusf_c_m113", - "rhsusf_c_rg33", - "RHS_US_A2Port_Armor", - "rhsusf_c_m1a2", - "A3_Armor_F_Slammer", "A3_Structures_F_Mil_Flags", "A3_Structures_F_Mil_Helipads", - "MELB", "RHS_US_A2_AirImport", "aia_misc_e_config", - "A3_Air_F_Heli_Heli_Transport_03", "A3_Supplies_F_Heli_Slingload", "A3_Soft_F_Gamma_HEMTT", "A3_Supplies_F_Heli_CargoNets", @@ -96,7 +78,7 @@ class Mission "A3_Structures_F_Bootcamp_Training", "A3_Structures_F_Walls", "A3_Armor_F_Panther", - "rhsusf_c_fmtv", + "A3_Structures_F_Civ_InfoBoards", "aia_chernarus_config" }; randomSeed=14748412; @@ -2051,7 +2033,7 @@ class Mission }; class Vehicles { - items=336; + items=314; class Item0 { position[]={689.72211,6.0638437,1797.7275}; @@ -2592,305 +2574,251 @@ class Mission }; class Item57 { - position[]={598.2301,5.9986792,1725.4952}; - azimut=-33; + position[]={694.8653,6,1786.2095}; + azimut=50; id=135; side="EMPTY"; - vehicle="rhsusf_m1025_w_m2"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item58 { - position[]={600.86273,6.0030527,1727.2896}; - azimut=-33; + position[]={689.98566,6,1791.8353}; + azimut=50; id=136; side="EMPTY"; - vehicle="rhsusf_m1025_w_m2"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item59 { - position[]={603.54065,6.0052791,1729.0374}; - azimut=-33; + position[]={685.57916,6.0935903,1801.7615}; + azimut=147; id=137; side="EMPTY"; - vehicle="rhsusf_m1025_w_m2"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item60 { - position[]={606.30951,6.0015874,1730.8346}; - azimut=-33; + position[]={692.28021,6.1003332,1806.1552}; + azimut=147; id=138; side="EMPTY"; - vehicle="rhsusf_m1025_w_m2"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item61 { - position[]={609.03296,6.0003967,1732.5594}; - azimut=-33; + position[]={698.8512,6.0881987,1810.4838}; + azimut=147; id=139; side="EMPTY"; - vehicle="rhsusf_m1025_w_m2"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item62 { - position[]={611.89178,6.0125418,1734.3812}; - azimut=-33; + position[]={685.06604,6.0822058,1797.7057}; + azimut=50; id=140; side="EMPTY"; - vehicle="rhsusf_m1025_w_m2"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item63 { - position[]={614.56421,6.0195165,1737.0885}; - azimut=-33; + position[]={611.60767,6.1510534,1789.1821}; + azimut=50; id=141; side="EMPTY"; - vehicle="rhsusf_m1025_w_mk19"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item64 { - position[]={617.32263,6.0207095,1738.8198}; - azimut=-33; + position[]={606.7099,6.1331458,1795.1377}; + azimut=50; id=142; side="EMPTY"; - vehicle="rhsusf_m1025_w_mk19"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item65 { - position[]={620.21417,6.013905,1740.7141}; - azimut=-33; + position[]={601.58606,6.0089049,1801.2443}; + azimut=50; id=143; side="EMPTY"; - vehicle="rhsusf_m1025_w_mk19"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item66 { - position[]={623.13129,6.0241051,1742.5826}; - azimut=-33; + position[]={596.5376,5.8611517,1807.2749}; + azimut=50; id=144; side="EMPTY"; - vehicle="rhsusf_m1025_w_mk19"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item67 { - position[]={625.99725,6.0403333,1744.3744}; - azimut=-33; + position[]={722.90076,6.0674553,1812.822}; + azimut=50; id=145; side="EMPTY"; - vehicle="rhsusf_m1025_w_mk19"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item68 { - position[]={628.73523,6.0508099,1746.1404}; - azimut=-33; + position[]={728.47278,6,1804.8157}; + azimut=147; id=146; side="EMPTY"; - vehicle="rhsusf_m1025_w_mk19"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item69 { - position[]={646.41852,6.0263281,1757.4681}; - azimut=-33; + position[]={735.1402,6,1809.0601}; + azimut=147; id=147; side="EMPTY"; - vehicle="rhsusf_m113_usarmy"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item70 { - position[]={649.6485,6.0304155,1759.6324}; - azimut=-33; + position[]={741.85443,6,1813.5388}; + azimut=147; id=148; side="EMPTY"; - vehicle="rhsusf_m113_usarmy"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item71 { - position[]={652.97571,6,1761.7939}; - azimut=-33; + position[]={748.70825,6,1817.8794}; + azimut=147; id=149; side="EMPTY"; - vehicle="rhsusf_m113_usarmy"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item72 { - position[]={656.1814,6.0142465,1763.6871}; - azimut=-33; + position[]={755.37573,6,1822.2648}; + azimut=147; id=150; side="EMPTY"; - vehicle="rhsusf_m113_usarmy"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item73 { - position[]={631.80078,6.0514479,1748.5977}; - azimut=-33; + position[]={762.04321,6,1826.6511}; + azimut=147; id=151; side="EMPTY"; - vehicle="rhsusf_rg33_m2_wd"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item74 { - position[]={635.34656,6.0415382,1751.0276}; - azimut=-33; + position[]={768.80389,6.0264101,1830.9431}; + azimut=147; id=152; side="EMPTY"; - vehicle="rhsusf_rg33_m2_wd"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item75 { - position[]={639.01373,6.0553713,1753.4325}; - azimut=-33; + position[]={775.51794,6,1835.2341}; + azimut=147; id=153; side="EMPTY"; - vehicle="rhsusf_rg33_m2_wd"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item76 { - position[]={642.51086,6.0267959,1755.6682}; - azimut=-33; + position[]={782.41858,6,1839.6204}; + azimut=147; id=154; side="EMPTY"; - vehicle="rhsusf_rg33_m2_wd"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item77 { - position[]={659.75061,6.0297618,1766.7646}; - azimut=-33; + position[]={788.94617,6,1843.9591}; + azimut=145; id=155; side="EMPTY"; - vehicle="RHS_M2A3_BUSKIII_wd"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item78 { - position[]={663.71466,6.0252357,1769.5139}; - azimut=-33; + position[]={795.43298,6,1848.762}; + azimut=143; id=156; side="EMPTY"; - vehicle="RHS_M2A3_BUSKIII_wd"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item79 { - position[]={667.95361,6.0181074,1772.2633}; - azimut=-33; + position[]={802.05682,6,1853.7067}; + azimut=143; id=157; side="EMPTY"; - vehicle="RHS_M2A3_BUSKIII_wd"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item80 { - position[]={672.85034,6.0229402,1773.5853}; - azimut=-33; + position[]={808.51154,6,1858.8074}; + azimut=140; id=158; side="EMPTY"; - vehicle="RHS_M6_wd"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item81 { - position[]={676.91278,6.0223489,1776.1285}; - azimut=-33; + position[]={814.68451,6,1864.0771}; + azimut=140; id=159; side="EMPTY"; - vehicle="RHS_M6_wd"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item82 { - position[]={679.99969,6.0266695,1781.4926}; - azimut=-33; + position[]={820.92554,6,1869.3589}; + azimut=140; id=160; side="EMPTY"; - vehicle="rhsusf_m1a2sep1tuskiiwd_usarmy"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item83 { - position[]={684.83368,6,1784.7611}; - azimut=-33; + position[]={827.27155,6,1874.8108}; + azimut=140; id=161; side="EMPTY"; - vehicle="B_MBT_01_cannon_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item84 { - position[]={694.8653,6,1786.2095}; - azimut=50; + position[]={833.64313,6,1880.2363}; + azimut=140; id=162; side="EMPTY"; vehicle="Land_HBarrierBig_F"; @@ -2898,8 +2826,8 @@ class Mission }; class Item85 { - position[]={689.98566,6,1791.8353}; - azimut=50; + position[]={839.96362,6,1885.5381}; + azimut=140; id=163; side="EMPTY"; vehicle="Land_HBarrierBig_F"; @@ -2907,8 +2835,8 @@ class Mission }; class Item86 { - position[]={685.57916,6.0935903,1801.7615}; - azimut=147; + position[]={846.284,5.997499,1890.9379}; + azimut=140; id=164; side="EMPTY"; vehicle="Land_HBarrierBig_F"; @@ -2916,8 +2844,8 @@ class Mission }; class Item87 { - position[]={692.28021,6.1003332,1806.1552}; - azimut=147; + position[]={852.55322,6,1896.3147}; + azimut=140; id=165; side="EMPTY"; vehicle="Land_HBarrierBig_F"; @@ -2925,8 +2853,8 @@ class Mission }; class Item88 { - position[]={698.8512,6.0881987,1810.4838}; - azimut=147; + position[]={716.03705,6.0941482,1819.1615}; + azimut=140; id=166; side="EMPTY"; vehicle="Land_HBarrierBig_F"; @@ -2934,8 +2862,8 @@ class Mission }; class Item89 { - position[]={685.06604,6.0822058,1797.7057}; - azimut=50; + position[]={722.03015,6.0733814,1824.2106}; + azimut=140; id=167; side="EMPTY"; vehicle="Land_HBarrierBig_F"; @@ -2943,8 +2871,8 @@ class Mission }; class Item90 { - position[]={611.60767,6.1510534,1789.1821}; - azimut=50; + position[]={727.90118,6.1056113,1829.1006}; + azimut=140; id=168; side="EMPTY"; vehicle="Land_HBarrierBig_F"; @@ -2952,8 +2880,8 @@ class Mission }; class Item91 { - position[]={606.7099,6.1331458,1795.1377}; - azimut=50; + position[]={733.84906,6.1319156,1834.1149}; + azimut=140; id=169; side="EMPTY"; vehicle="Land_HBarrierBig_F"; @@ -2961,8 +2889,8 @@ class Mission }; class Item92 { - position[]={601.58606,6.0089049,1801.2443}; - azimut=50; + position[]={740.06415,6.1348042,1839.3306}; + azimut=140; id=170; side="EMPTY"; vehicle="Land_HBarrierBig_F"; @@ -2970,8 +2898,8 @@ class Mission }; class Item93 { - position[]={596.5376,5.8611517,1807.2749}; - azimut=50; + position[]={745.81158,6.1190143,1844.2789}; + azimut=140; id=171; side="EMPTY"; vehicle="Land_HBarrierBig_F"; @@ -2979,8 +2907,8 @@ class Mission }; class Item94 { - position[]={722.90076,6.0674553,1812.822}; - azimut=50; + position[]={751.62262,6.0974102,1848.9553}; + azimut=140; id=172; side="EMPTY"; vehicle="Land_HBarrierBig_F"; @@ -2988,8 +2916,8 @@ class Mission }; class Item95 { - position[]={728.47278,6,1804.8157}; - azimut=147; + position[]={757.49365,6.0710135,1853.8453}; + azimut=140; id=173; side="EMPTY"; vehicle="Land_HBarrierBig_F"; @@ -2997,8 +2925,8 @@ class Mission }; class Item96 { - position[]={735.1402,6,1809.0601}; - azimut=147; + position[]={763.44153,6.0470443,1858.8596}; + azimut=140; id=174; side="EMPTY"; vehicle="Land_HBarrierBig_F"; @@ -3006,8 +2934,8 @@ class Mission }; class Item97 { - position[]={741.85443,6,1813.5388}; - azimut=147; + position[]={769.65662,6.0228305,1864.0753}; + azimut=140; id=175; side="EMPTY"; vehicle="Land_HBarrierBig_F"; @@ -3015,8 +2943,8 @@ class Mission }; class Item98 { - position[]={748.70825,6,1817.8794}; - azimut=147; + position[]={775.40405,6.0018406,1869.0237}; + azimut=140; id=176; side="EMPTY"; vehicle="Land_HBarrierBig_F"; @@ -3024,8 +2952,8 @@ class Mission }; class Item99 { - position[]={755.37573,6,1822.2648}; - azimut=147; + position[]={781.64703,5.9942212,1874.2405}; + azimut=140; id=177; side="EMPTY"; vehicle="Land_HBarrierBig_F"; @@ -3033,8 +2961,8 @@ class Mission }; class Item100 { - position[]={762.04321,6,1826.6511}; - azimut=147; + position[]={787.51807,5.9945168,1879.1305}; + azimut=140; id=178; side="EMPTY"; vehicle="Land_HBarrierBig_F"; @@ -3042,8 +2970,8 @@ class Mission }; class Item101 { - position[]={768.80389,6.0264101,1830.9431}; - azimut=147; + position[]={793.46594,6,1884.1448}; + azimut=140; id=179; side="EMPTY"; vehicle="Land_HBarrierBig_F"; @@ -3051,8 +2979,8 @@ class Mission }; class Item102 { - position[]={775.51794,6,1835.2341}; - azimut=147; + position[]={799.68103,5.9946108,1889.3605}; + azimut=140; id=180; side="EMPTY"; vehicle="Land_HBarrierBig_F"; @@ -3060,8 +2988,8 @@ class Mission }; class Item103 { - position[]={782.41858,6,1839.6204}; - azimut=147; + position[]={805.42847,5.99965,1894.3088}; + azimut=140; id=181; side="EMPTY"; vehicle="Land_HBarrierBig_F"; @@ -3069,8 +2997,8 @@ class Mission }; class Item104 { - position[]={788.94617,6,1843.9591}; - azimut=145; + position[]={811.34766,5.999651,1899.3094}; + azimut=140; id=182; side="EMPTY"; vehicle="Land_HBarrierBig_F"; @@ -3078,8 +3006,8 @@ class Mission }; class Item105 { - position[]={795.43298,6,1848.762}; - azimut=143; + position[]={817.21869,5.9914999,1904.1995}; + azimut=140; id=183; side="EMPTY"; vehicle="Land_HBarrierBig_F"; @@ -3087,8 +3015,8 @@ class Mission }; class Item106 { - position[]={802.05682,6,1853.7067}; - azimut=143; + position[]={823.16656,5.9980631,1909.2137}; + azimut=140; id=184; side="EMPTY"; vehicle="Land_HBarrierBig_F"; @@ -3096,7 +3024,7 @@ class Mission }; class Item107 { - position[]={808.51154,6,1858.8074}; + position[]={829.38165,6,1914.4294}; azimut=140; id=185; side="EMPTY"; @@ -3105,7 +3033,7 @@ class Mission }; class Item108 { - position[]={814.68451,6,1864.0771}; + position[]={835.12909,5.9883409,1919.3778}; azimut=140; id=186; side="EMPTY"; @@ -3114,8 +3042,8 @@ class Mission }; class Item109 { - position[]={820.92554,6,1869.3589}; - azimut=140; + position[]={840.20532,5.9836955,1917.8411}; + azimut=50; id=187; side="EMPTY"; vehicle="Land_HBarrierBig_F"; @@ -3123,8 +3051,8 @@ class Mission }; class Item110 { - position[]={827.27155,6,1874.8108}; - azimut=140; + position[]={845.19946,5.9601502,1911.8975}; + azimut=50; id=188; side="EMPTY"; vehicle="Land_HBarrierBig_F"; @@ -3132,8 +3060,8 @@ class Mission }; class Item111 { - position[]={833.64313,6,1880.2363}; - azimut=140; + position[]={850.19354,5.9950438,1905.7433}; + azimut=50; id=189; side="EMPTY"; vehicle="Land_HBarrierBig_F"; @@ -3141,8 +3069,8 @@ class Mission }; class Item112 { - position[]={839.96362,6,1885.5381}; - azimut=140; + position[]={853.97864,6,1901.4833}; + azimut=50; id=190; side="EMPTY"; vehicle="Land_HBarrierBig_F"; @@ -3150,2083 +3078,1895 @@ class Mission }; class Item113 { - position[]={846.284,5.997499,1890.9379}; + position[]={696.4967,6.0851517,1804.6783}; azimut=140; id=191; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; + vehicle="Flag_US_F"; skill=0.60000002; + text="flagPole"; }; class Item114 - { - position[]={852.55322,6,1896.3147}; - azimut=140; - id=192; - side="EMPTY"; - vehicle="Land_HBarrierBig_F"; - skill=0.60000002; - }; - class Item115 - { - position[]={716.03705,6.0941482,1819.1615}; - azimut=140; - id=193; - side="EMPTY"; - vehicle="Land_HBarrierBig_F"; - skill=0.60000002; - }; - class Item116 - { - position[]={722.03015,6.0733814,1824.2106}; - azimut=140; - id=194; - side="EMPTY"; - vehicle="Land_HBarrierBig_F"; - skill=0.60000002; - }; - class Item117 - { - position[]={727.90118,6.1056113,1829.1006}; - azimut=140; - id=195; - side="EMPTY"; - vehicle="Land_HBarrierBig_F"; - skill=0.60000002; - }; - class Item118 - { - position[]={733.84906,6.1319156,1834.1149}; - azimut=140; - id=196; - side="EMPTY"; - vehicle="Land_HBarrierBig_F"; - skill=0.60000002; - }; - class Item119 - { - position[]={740.06415,6.1348042,1839.3306}; - azimut=140; - id=197; - side="EMPTY"; - vehicle="Land_HBarrierBig_F"; - skill=0.60000002; - }; - class Item120 - { - position[]={745.81158,6.1190143,1844.2789}; - azimut=140; - id=198; - side="EMPTY"; - vehicle="Land_HBarrierBig_F"; - skill=0.60000002; - }; - class Item121 - { - position[]={751.62262,6.0974102,1848.9553}; - azimut=140; - id=199; - side="EMPTY"; - vehicle="Land_HBarrierBig_F"; - skill=0.60000002; - }; - class Item122 - { - position[]={757.49365,6.0710135,1853.8453}; - azimut=140; - id=200; - side="EMPTY"; - vehicle="Land_HBarrierBig_F"; - skill=0.60000002; - }; - class Item123 - { - position[]={763.44153,6.0470443,1858.8596}; - azimut=140; - id=201; - side="EMPTY"; - vehicle="Land_HBarrierBig_F"; - skill=0.60000002; - }; - class Item124 - { - position[]={769.65662,6.0228305,1864.0753}; - azimut=140; - id=202; - side="EMPTY"; - vehicle="Land_HBarrierBig_F"; - skill=0.60000002; - }; - class Item125 - { - position[]={775.40405,6.0018406,1869.0237}; - azimut=140; - id=203; - side="EMPTY"; - vehicle="Land_HBarrierBig_F"; - skill=0.60000002; - }; - class Item126 - { - position[]={781.64703,5.9942212,1874.2405}; - azimut=140; - id=204; - side="EMPTY"; - vehicle="Land_HBarrierBig_F"; - skill=0.60000002; - }; - class Item127 - { - position[]={787.51807,5.9945168,1879.1305}; - azimut=140; - id=205; - side="EMPTY"; - vehicle="Land_HBarrierBig_F"; - skill=0.60000002; - }; - class Item128 - { - position[]={793.46594,6,1884.1448}; - azimut=140; - id=206; - side="EMPTY"; - vehicle="Land_HBarrierBig_F"; - skill=0.60000002; - }; - class Item129 - { - position[]={799.68103,5.9946108,1889.3605}; - azimut=140; - id=207; - side="EMPTY"; - vehicle="Land_HBarrierBig_F"; - skill=0.60000002; - }; - class Item130 - { - position[]={805.42847,5.99965,1894.3088}; - azimut=140; - id=208; - side="EMPTY"; - vehicle="Land_HBarrierBig_F"; - skill=0.60000002; - }; - class Item131 - { - position[]={811.34766,5.999651,1899.3094}; - azimut=140; - id=209; - side="EMPTY"; - vehicle="Land_HBarrierBig_F"; - skill=0.60000002; - }; - class Item132 - { - position[]={817.21869,5.9914999,1904.1995}; - azimut=140; - id=210; - side="EMPTY"; - vehicle="Land_HBarrierBig_F"; - skill=0.60000002; - }; - class Item133 - { - position[]={823.16656,5.9980631,1909.2137}; - azimut=140; - id=211; - side="EMPTY"; - vehicle="Land_HBarrierBig_F"; - skill=0.60000002; - }; - class Item134 - { - position[]={829.38165,6,1914.4294}; - azimut=140; - id=212; - side="EMPTY"; - vehicle="Land_HBarrierBig_F"; - skill=0.60000002; - }; - class Item135 - { - position[]={835.12909,5.9883409,1919.3778}; - azimut=140; - id=213; - side="EMPTY"; - vehicle="Land_HBarrierBig_F"; - skill=0.60000002; - }; - class Item136 - { - position[]={840.20532,5.9836955,1917.8411}; - azimut=50; - id=214; - side="EMPTY"; - vehicle="Land_HBarrierBig_F"; - skill=0.60000002; - }; - class Item137 - { - position[]={845.19946,5.9601502,1911.8975}; - azimut=50; - id=215; - side="EMPTY"; - vehicle="Land_HBarrierBig_F"; - skill=0.60000002; - }; - class Item138 - { - position[]={850.19354,5.9950438,1905.7433}; - azimut=50; - id=216; - side="EMPTY"; - vehicle="Land_HBarrierBig_F"; - skill=0.60000002; - }; - class Item139 - { - position[]={853.97864,6,1901.4833}; - azimut=50; - id=217; - side="EMPTY"; - vehicle="Land_HBarrierBig_F"; - skill=0.60000002; - }; - class Item140 - { - position[]={696.4967,6.0851517,1804.6783}; - azimut=140; - id=218; - side="EMPTY"; - vehicle="Flag_US_F"; - skill=0.60000002; - text="flagPole"; - }; - class Item141 { position[]={690.11487,6.0943995,1808.9337}; azimut=237; - id=219; + id=192; side="EMPTY"; vehicle="Land_HelipadEmpty_F"; skill=0.60000002; text="fobSpawn"; }; - class Item142 + class Item115 { position[]={660.93768,6.0133247,1850.3156}; azimut=137; - id=220; + id=193; side="EMPTY"; vehicle="Land_HelipadSquare_F"; leader=1; skill=0.60000002; + text="garage_spawn_0"; }; - class Item143 + class Item116 { position[]={645.84198,6.0921617,1835.8474}; azimut=137; - id=221; + id=194; side="EMPTY"; vehicle="Land_HelipadSquare_F"; leader=1; skill=0.60000002; + text="garage_spawn_1"; }; - class Item144 + class Item117 { position[]={615.34821,6.1382518,1808.4594}; azimut=137; - id=222; + id=195; side="EMPTY"; vehicle="Land_HelipadSquare_F"; leader=1; skill=0.60000002; + text="garage_spawn_3"; }; - class Item145 + class Item118 { position[]={630.16028,6.1504002,1822.0396}; azimut=137; - id=223; + id=196; side="EMPTY"; vehicle="Land_HelipadSquare_F"; leader=1; skill=0.60000002; + text="garage_spawn_2"; }; - class Item146 - { - position[]={660.7627,6.0134344,1850.4492}; - azimut=137; - id=224; - side="EMPTY"; - vehicle="MELB_AH6M_M"; - leader=1; - skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; - }; - class Item147 - { - position[]={614.97601,6.13451,1808.6132}; - azimut=137; - id=225; - side="EMPTY"; - vehicle="RHS_AH64D_wd_AA"; - leader=1; - skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; - }; - class Item148 - { - position[]={645.979,6.0926991,1835.5088}; - azimut=137; - id=226; - side="EMPTY"; - vehicle="RHS_UH60M"; - leader=1; - skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; - }; - class Item149 - { - position[]={630.50665,6.1505404,1821.588}; - azimut=137; - id=227; - side="EMPTY"; - vehicle="RHS_UH60M"; - leader=1; - skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; - }; - class Item150 + class Item119 { position[]={708.2749,6.0427299,1825.8895}; azimut=140; - id=228; + id=197; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item151 + class Item120 { position[]={702.48053,5.9966407,1836.2289}; azimut=140; - id=229; + id=198; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item152 + class Item121 { position[]={717.46619,6.0954742,1824.1465}; azimut=50; - id=230; + id=199; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item153 + class Item122 { position[]={741.85754,6.0991936,1844.7795}; azimut=50; - id=231; + id=200; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item154 + class Item123 { position[]={736.95978,6.0393443,1850.7351}; azimut=50; - id=232; + id=201; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item155 + class Item124 { position[]={731.83594,6.075242,1856.8417}; azimut=50; - id=233; + id=202; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item156 + class Item125 { position[]={709.8017,6.0418105,1852.1271}; azimut=140; - id=234; + id=203; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item157 + class Item126 { position[]={715.74957,6.071043,1857.1414}; azimut=140; - id=235; + id=204; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item158 + class Item127 { position[]={721.96466,6.1015253,1862.3571}; azimut=140; - id=236; + id=205; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item159 + class Item128 { position[]={726.9165,6.1158671,1862.7834}; azimut=50; - id=237; + id=206; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item160 + class Item129 { position[]={704.07745,6.0136647,1847.2965}; azimut=140; - id=238; + id=207; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item161 + class Item130 { position[]={696.57806,5.9899998,1834.9293}; azimut=50; - id=239; + id=208; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item162 + class Item131 { position[]={701.83826,6.0013938,1841.7069}; azimut=50; - id=240; + id=209; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item163 + class Item132 { position[]={725.638,6.045752,1846.2258}; azimut=230; - id=241; + id=210; side="EMPTY"; vehicle="Land_HelipadRescue_F"; leader=1; skill=0.60000002; }; - class Item164 + class Item133 { position[]={725.77502,6.0446658,1845.8872}; azimut=230; - id=242; + id=211; side="EMPTY"; vehicle="RHS_UH60M_MEV"; leader=1; skill=0.60000002; init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; - class Item165 + class Item134 { position[]={720.9425,6.0769019,1827.3185}; azimut=50; - id=243; + id=212; side="EMPTY"; vehicle="MASH_EP1"; leader=1; skill=0.60000002; }; - class Item166 + class Item135 { position[]={594.95911,6.0376916,1791.3811}; azimut=137; - id=244; + id=213; side="EMPTY"; vehicle="Land_HelipadSquare_F"; leader=1; skill=0.60000002; + text="garage_spawn_4"; }; - class Item167 - { - position[]={594.28546,6.0247264,1791.762}; - azimut=137; - id=245; - side="EMPTY"; - vehicle="B_Heli_Transport_03_unarmed_F"; - leader=1; - skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; - }; - class Item168 + class Item136 { position[]={560.64941,5.959599,1771.8768}; azimut=137; - id=246; + id=214; side="EMPTY"; vehicle="B_Slingload_01_Ammo_F"; leader=1; skill=0.60000002; init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; - class Item169 + class Item137 { position[]={565.34875,5.9643288,1766.7665}; azimut=137; - id=247; + id=215; side="EMPTY"; vehicle="B_Slingload_01_Ammo_F"; leader=1; skill=0.60000002; init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; - class Item170 + class Item138 { position[]={563.38416,5.9637799,1764.9391}; azimut=137; - id=248; + id=216; side="EMPTY"; vehicle="B_Slingload_01_Cargo_F"; leader=1; skill=0.60000002; init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; - class Item171 + class Item139 { position[]={558.68488,5.9811153,1769.8948}; azimut=137; - id=249; + id=217; side="EMPTY"; vehicle="B_Slingload_01_Cargo_F"; leader=1; skill=0.60000002; init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; - class Item172 + class Item140 { position[]={567.39404,5.9554181,1768.666}; azimut=137; - id=250; + id=218; side="EMPTY"; vehicle="B_Slingload_01_Fuel_F"; leader=1; skill=0.60000002; init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; - class Item173 + class Item141 { position[]={573.39246,6.0029182,1758.5056}; azimut=47; - id=251; + id=219; side="EMPTY"; vehicle="B_Truck_01_ammo_F"; leader=1; skill=0.60000002; init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; - class Item174 + class Item142 { position[]={571.00409,6.0003376,1761.1205}; azimut=47; - id=252; + id=220; side="EMPTY"; vehicle="B_Truck_01_fuel_F"; leader=1; skill=0.60000002; init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; - class Item175 + class Item143 { position[]={575.78687,6.0056777,1755.9486}; azimut=47; - id=253; + id=221; side="EMPTY"; vehicle="B_Truck_01_Repair_F"; leader=1; skill=0.60000002; init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; - class Item176 + class Item144 { position[]={565.32269,5.8964548,1778.8293}; azimut=137; - id=254; + id=222; side="EMPTY"; vehicle="B_CargoNet_01_ammo_F"; leader=1; skill=0.60000002; init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; - class Item177 + class Item145 { position[]={566.77521,5.9012733,1777.309}; azimut=137; - id=255; + id=223; side="EMPTY"; vehicle="B_CargoNet_01_ammo_F"; leader=1; skill=0.60000002; init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; - class Item178 + class Item146 { position[]={568.25037,5.9123344,1775.6498}; azimut=137; - id=256; + id=224; side="EMPTY"; vehicle="B_CargoNet_01_ammo_F"; leader=1; skill=0.60000002; init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; - class Item179 + class Item147 { position[]={569.771,5.9241381,1773.8793}; azimut=137; - id=257; + id=225; side="EMPTY"; vehicle="B_CargoNet_01_ammo_F"; leader=1; skill=0.60000002; init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; - class Item180 + class Item148 { position[]={571.22351,5.9505873,1772.3589}; azimut=137; - id=258; + id=226; side="EMPTY"; vehicle="B_CargoNet_01_ammo_F"; leader=1; skill=0.60000002; init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; - class Item181 + class Item149 { position[]={572.69867,5.981317,1770.6997}; azimut=137; - id=259; + id=227; side="EMPTY"; vehicle="B_CargoNet_01_ammo_F"; leader=1; skill=0.60000002; init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; - class Item182 + class Item150 { position[]={724.1073,6.0497589,1820.4933}; azimut=50; - id=260; + id=228; side="EMPTY"; vehicle="ShootingPos_F"; skill=0.60000002; }; - class Item183 + class Item151 { position[]={726.44501,6.0154729,1817.7238}; azimut=50; - id=261; + id=229; side="EMPTY"; vehicle="ShootingPos_F"; skill=0.60000002; }; - class Item184 + class Item152 { position[]={728.78253,6,1815.022}; azimut=50; - id=262; + id=230; side="EMPTY"; vehicle="ShootingPos_F"; skill=0.60000002; }; - class Item185 + class Item153 { position[]={731.052,6,1812.2965}; azimut=50; - id=263; + id=231; side="EMPTY"; vehicle="ShootingPos_F"; skill=0.60000002; }; - class Item186 + class Item154 { position[]={730.42114,6.0161881,1823.5117}; azimut=50; - id=264; + id=232; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item187 + class Item155 { position[]={733.38135,6.0601783,1825.7255}; azimut=50; - id=265; + id=233; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item188 + class Item156 { position[]={736.34149,6.1271315,1828.4592}; azimut=50; - id=266; + id=234; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item189 + class Item157 { position[]={739.3667,6.1788349,1830.8351}; azimut=50; - id=267; + id=235; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item190 + class Item158 { position[]={742.02509,6.1785946,1833.5386}; azimut=50; - id=268; + id=236; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item191 + class Item159 { position[]={744.98529,6.1256676,1835.7523}; azimut=50; - id=269; + id=237; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item192 + class Item160 { position[]={747.94543,6.1738925,1838.4861}; azimut=50; - id=270; + id=238; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item193 + class Item161 { position[]={750.97064,6.1656919,1840.8619}; azimut=50; - id=271; + id=239; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item194 + class Item162 { position[]={753.17688,6.1565995,1842.734}; azimut=50; - id=272; + id=240; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item195 + class Item163 { position[]={756.13708,6.1467834,1844.9478}; azimut=50; - id=273; + id=241; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item196 + class Item164 { position[]={759.09723,6.129231,1847.6815}; azimut=50; - id=274; + id=242; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item197 + class Item165 { position[]={762.12244,6.1151233,1850.0574}; azimut=50; - id=275; + id=243; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item198 + class Item166 { position[]={765.0069,6.1016183,1852.3097}; azimut=50; - id=276; + id=244; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item199 + class Item167 { position[]={767.9671,6.0877681,1854.5234}; azimut=50; - id=277; + id=245; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item200 + class Item168 { position[]={770.92725,6.0698447,1857.2572}; azimut=50; - id=278; + id=246; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item201 + class Item169 { position[]={773.95245,6.054872,1859.6331}; azimut=50; - id=279; + id=247; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item202 + class Item170 { position[]={776.91223,6.0402937,1862.3383}; azimut=50; - id=280; + id=248; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item203 + class Item171 { position[]={779.87244,6.0294824,1864.552}; azimut=50; - id=281; + id=249; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item204 + class Item172 { position[]={782.83258,6.0152044,1867.2858}; azimut=50; - id=282; + id=250; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item205 + class Item173 { position[]={785.85779,6.0120459,1869.6616}; azimut=50; - id=283; + id=251; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item206 + class Item174 { position[]={788.81744,6.0119534,1871.835}; azimut=50; - id=284; + id=252; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item207 + class Item175 { position[]={791.77765,6.0095086,1874.0487}; azimut=50; - id=285; + id=253; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item208 + class Item176 { position[]={794.73779,6.0072742,1876.7825}; azimut=50; - id=286; + id=254; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item209 + class Item177 { position[]={797.763,6.0081396,1879.1583}; azimut=50; - id=287; + id=255; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item210 + class Item178 { position[]={800.40985,6.0021162,1881.7063}; azimut=50; - id=288; + id=256; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item211 + class Item179 { position[]={803.37006,5.9992666,1883.92}; azimut=50; - id=289; + id=257; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item212 + class Item180 { position[]={806.3302,5.9995685,1886.6538}; azimut=50; - id=290; + id=258; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item213 + class Item181 { position[]={809.35541,6.0004344,1889.0297}; azimut=50; - id=291; + id=259; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item214 + class Item182 { position[]={811.86304,5.9980893,1891.4329}; azimut=50; - id=292; + id=260; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item215 + class Item183 { position[]={814.82324,5.9951377,1893.6466}; azimut=50; - id=293; + id=261; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item216 + class Item184 { position[]={817.78339,5.9914927,1896.3804}; azimut=50; - id=294; + id=262; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item217 + class Item185 { position[]={820.80859,5.9899998,1898.7562}; azimut=50; - id=295; + id=263; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item218 + class Item186 { position[]={823.76843,5.9899998,1901.382}; azimut=50; - id=296; + id=264; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item219 + class Item187 { position[]={826.72864,5.9895668,1903.5957}; azimut=50; - id=297; + id=265; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item220 + class Item188 { position[]={829.68878,5.9855208,1906.3295}; azimut=50; - id=298; + id=266; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item221 + class Item189 { position[]={832.71399,5.9895959,1908.7053}; azimut=50; - id=299; + id=267; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item222 + class Item190 { position[]={735.53778,6,1817.754}; azimut=50; - id=300; + id=268; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item223 + class Item191 { position[]={738.56299,6,1820.1299}; azimut=50; - id=301; + id=269; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item224 + class Item192 { position[]={741.07062,6.0007081,1822.5331}; azimut=50; - id=302; + id=270; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item225 + class Item193 { position[]={744.03082,6.0599179,1824.7468}; azimut=50; - id=303; + id=271; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item226 + class Item194 { position[]={746.99097,6.0802398,1827.4806}; azimut=50; - id=304; + id=272; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item227 + class Item195 { position[]={750.01617,6,1829.8564}; azimut=50; - id=305; + id=273; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item228 + class Item196 { position[]={752.97601,6.0628829,1832.4822}; azimut=50; - id=306; + id=274; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item229 + class Item197 { position[]={755.93622,6.1273174,1834.6959}; azimut=50; - id=307; + id=275; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item230 + class Item198 { position[]={758.89636,6.2080326,1837.4297}; azimut=50; - id=308; + id=276; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item231 + class Item199 { position[]={761.75964,6.1972761,1839.0905}; azimut=50; - id=309; + id=277; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item232 + class Item200 { position[]={764.78485,6.1882725,1841.4663}; azimut=50; - id=310; + id=278; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item233 + class Item201 { position[]={767.29248,6.1180358,1843.8695}; azimut=50; - id=311; + id=279; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item234 + class Item202 { position[]={770.25269,6.0408273,1846.0833}; azimut=50; - id=312; + id=280; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item235 + class Item203 { position[]={773.21283,6.0559835,1848.817}; azimut=50; - id=313; + id=281; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item236 + class Item204 { position[]={776.23804,6.0940714,1851.1929}; azimut=50; - id=314; + id=282; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item237 + class Item205 { position[]={779.19788,6.1083808,1853.8186}; azimut=50; - id=315; + id=283; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item238 + class Item206 { position[]={782.15808,6.05721,1856.0323}; azimut=50; - id=316; + id=284; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item239 + class Item207 { position[]={785.11823,6.0553093,1858.7661}; azimut=50; - id=317; + id=285; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item240 + class Item208 { position[]={788.05688,6.0564451,1861.2535}; azimut=50; - id=318; + id=286; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item241 + class Item209 { position[]={791.08209,6.0123706,1863.6294}; azimut=50; - id=319; + id=287; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item242 + class Item210 { position[]={793.58972,6.0284133,1866.0326}; azimut=50; - id=320; + id=288; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item243 + class Item211 { position[]={796.54993,6.0390811,1868.2463}; azimut=50; - id=321; + id=289; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item244 + class Item212 { position[]={799.51007,6.032093,1870.9801}; azimut=50; - id=322; + id=290; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item245 + class Item213 { position[]={802.53528,6.02634,1873.356}; azimut=50; - id=323; + id=291; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item246 + class Item214 { position[]={805.49512,6.0093946,1875.9817}; azimut=50; - id=324; + id=292; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item247 + class Item215 { position[]={808.45532,6.0022016,1878.1954}; azimut=50; - id=325; + id=293; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item248 + class Item216 { position[]={811.41547,6.007906,1880.9292}; azimut=50; - id=326; + id=294; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item249 + class Item217 { position[]={814.73071,6.0152845,1883.2673}; azimut=50; - id=327; + id=295; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item250 + class Item218 { position[]={817.75592,6.0109358,1885.6432}; azimut=50; - id=328; + id=296; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item251 + class Item219 { position[]={820.26355,6,1888.0464}; azimut=50; - id=329; + id=297; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item252 + class Item220 { position[]={823.22375,5.9996529,1890.2601}; azimut=50; - id=330; + id=298; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item253 + class Item221 { position[]={826.1839,5.9960079,1892.9939}; azimut=50; - id=331; + id=299; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item254 + class Item222 { position[]={829.20911,5.9928403,1895.3698}; azimut=50; - id=332; + id=300; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item255 + class Item223 { position[]={832.16895,5.9897804,1897.9955}; azimut=50; - id=333; + id=301; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item256 + class Item224 { position[]={835.12915,5.9828825,1900.2092}; azimut=50; - id=334; + id=302; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item257 + class Item225 { position[]={838.08929,5.9752903,1902.943}; azimut=50; - id=335; + id=303; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item258 + class Item226 { position[]={739.97906,6,1814.1835}; azimut=50; - id=336; + id=304; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item259 + class Item227 { position[]={743.00427,6,1816.5593}; azimut=50; - id=337; + id=305; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item260 + class Item228 { position[]={745.5119,6,1818.9625}; azimut=50; - id=338; + id=306; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item261 + class Item229 { position[]={748.47211,6,1821.1763}; azimut=50; - id=339; + id=307; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item262 + class Item230 { position[]={751.43225,6,1823.91}; azimut=50; - id=340; + id=308; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item263 + class Item231 { position[]={754.45746,6,1826.2859}; azimut=50; - id=341; + id=309; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item264 + class Item232 { position[]={757.4173,6,1828.9116}; azimut=50; - id=342; + id=310; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item265 + class Item233 { position[]={760.3775,6.0315113,1831.1254}; azimut=50; - id=343; + id=311; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item266 + class Item234 { position[]={763.33765,6.108057,1833.8591}; azimut=50; - id=344; + id=312; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item267 + class Item235 { position[]={770.72192,6.0497842,1835.896}; azimut=50; - id=345; + id=313; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item268 + class Item236 { position[]={773.74713,6,1838.2719}; azimut=50; - id=346; + id=314; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item269 + class Item237 { position[]={776.25476,6,1840.675}; azimut=50; - id=347; + id=315; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item270 + class Item238 { position[]={779.21497,6,1842.8888}; azimut=50; - id=348; + id=316; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item271 + class Item239 { position[]={782.17511,6.0099626,1845.6226}; azimut=50; - id=349; + id=317; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item272 + class Item240 { position[]={785.20032,6.0367942,1847.9984}; azimut=50; - id=350; + id=318; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item273 + class Item241 { position[]={788.16016,6,1850.6241}; azimut=50; - id=351; + id=319; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item274 + class Item242 { position[]={791.12036,6.0031543,1852.8379}; azimut=50; - id=352; + id=320; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item275 + class Item243 { position[]={794.08051,6.0085816,1855.5717}; azimut=50; - id=353; + id=321; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item276 + class Item244 { position[]={796.4917,6,1857.3065}; azimut=50; - id=354; + id=322; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item277 + class Item245 { position[]={799.51691,6,1859.6824}; azimut=50; - id=355; + id=323; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item278 + class Item246 { position[]={802.02454,6.0132709,1862.0856}; azimut=50; - id=356; + id=324; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item279 + class Item247 { position[]={804.98474,6.0286632,1864.2993}; azimut=50; - id=357; + id=325; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item280 + class Item248 { position[]={807.94489,6.0137005,1867.0331}; azimut=50; - id=358; + id=326; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item281 + class Item249 { position[]={810.97009,6,1869.4089}; azimut=50; - id=359; + id=327; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item282 + class Item250 { position[]={813.92993,6,1872.0347}; azimut=50; - id=360; + id=328; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item283 + class Item251 { position[]={816.89014,6,1874.2484}; azimut=50; - id=361; + id=329; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item284 + class Item252 { position[]={819.85028,6.0052857,1876.9822}; azimut=50; - id=362; + id=330; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item285 + class Item253 { position[]={820.00104,6.0066948,1877.5104}; azimut=50; - id=363; + id=331; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item286 + class Item254 { position[]={823.02625,6.0052633,1879.8862}; azimut=50; - id=364; + id=332; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item287 + class Item255 { position[]={825.53387,6,1882.2894}; azimut=50; - id=365; + id=333; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item288 + class Item256 { position[]={828.49408,6,1884.5032}; azimut=50; - id=366; + id=334; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item289 + class Item257 { position[]={831.45422,6,1887.2369}; azimut=50; - id=367; + id=335; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item290 + class Item258 { position[]={834.47943,6,1889.6128}; azimut=50; - id=368; + id=336; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item291 + class Item259 { position[]={837.43927,5.997015,1892.2385}; azimut=50; - id=369; + id=337; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item292 + class Item260 { position[]={840.39948,5.9881272,1894.4523}; azimut=50; - id=370; + id=338; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item293 + class Item261 { position[]={843.35962,5.9889588,1897.186}; azimut=50; - id=371; + id=339; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item294 + class Item262 { position[]={847.39404,5.9995766,1900.049}; azimut=50; - id=372; + id=340; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item295 + class Item263 { position[]={843.32288,5.9832916,1905.5531}; azimut=50; - id=373; + id=341; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item296 + class Item264 { position[]={837.78467,5.9788609,1912.0469}; azimut=50; - id=374; + id=342; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item297 + class Item265 { position[]={732.30066,6,1812.7396}; azimut=50; - id=375; + id=343; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item298 + class Item266 { position[]={728.10437,6,1817.1342}; azimut=50; - id=376; + id=344; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item299 + class Item267 { position[]={723.90808,6.0526814,1821.5598}; azimut=50; - id=377; + id=345; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item300 + class Item268 { position[]={746.51184,6.1592007,1839.6057}; azimut=50; - id=378; + id=346; side="EMPTY"; vehicle="TargetBootcampHumanSimple_F"; skill=0.60000002; }; - class Item301 + class Item269 { position[]={757.67786,6.1238985,1847.8473}; azimut=50; - id=379; + id=347; side="EMPTY"; vehicle="TargetBootcampHumanSimple_F"; skill=0.60000002; }; - class Item302 + class Item270 { position[]={770.25092,6.0724678,1856.8167}; azimut=50; - id=380; + id=348; side="EMPTY"; vehicle="TargetBootcampHumanSimple_F"; skill=0.60000002; }; - class Item303 + class Item271 { position[]={783.87952,6.024065,1866.1661}; azimut=50; - id=381; + id=349; side="EMPTY"; vehicle="TargetBootcampHumanSimple_F"; skill=0.60000002; }; - class Item304 + class Item272 { position[]={796.22766,6.0123401,1874.8242}; azimut=50; - id=382; + id=350; side="EMPTY"; vehicle="TargetBootcampHumanSimple_F"; skill=0.60000002; }; - class Item305 + class Item273 { position[]={808.92352,6.0073528,1883.4091}; azimut=50; - id=383; + id=351; side="EMPTY"; vehicle="TargetBootcampHumanSimple_F"; skill=0.60000002; }; - class Item306 + class Item274 { position[]={821.53516,5.9971676,1892.1241}; azimut=50; - id=384; + id=352; side="EMPTY"; vehicle="TargetBootcampHumanSimple_F"; skill=0.60000002; }; - class Item307 + class Item275 { position[]={835.62067,5.9811368,1901.0265}; azimut=50; - id=385; + id=353; side="EMPTY"; vehicle="TargetBootcampHumanSimple_F"; skill=0.60000002; }; - class Item308 + class Item276 { position[]={847.23096,5.9945884,1905.9192}; azimut=50; - id=386; + id=354; side="EMPTY"; vehicle="TargetBootcampHumanSimple_F"; skill=0.60000002; }; - class Item309 + class Item277 { position[]={849.21588,6,1903.2705}; azimut=50; - id=387; + id=355; side="EMPTY"; vehicle="TargetBootcampHumanSimple_F"; skill=0.60000002; }; - class Item310 + class Item278 { position[]={851.36627,6,1900.9543}; azimut=50; - id=388; + id=356; side="EMPTY"; vehicle="TargetBootcampHumanSimple_F"; skill=0.60000002; }; - class Item311 + class Item279 { position[]={835.84106,5.9827728,1915.3969}; azimut=50; - id=389; + id=357; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item312 + class Item280 { position[]={666.92737,6.0747705,1817.8198}; azimut=47; - id=390; + id=358; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item313 + class Item281 { position[]={669.62805,6.0745568,1814.9131}; azimut=47; - id=391; + id=359; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item314 + class Item282 { position[]={672.37415,6.0751076,1811.9604}; azimut=47; - id=392; + id=360; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item315 + class Item283 { position[]={675.2337,6.0756507,1808.8972}; azimut=47; - id=393; + id=361; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item316 + class Item284 { position[]={684.50153,6.0088487,1828.8622}; azimut=47; - id=394; + id=362; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item317 + class Item285 { position[]={687.24762,6.0091238,1825.9095}; azimut=47; - id=395; + id=363; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item318 + class Item286 { position[]={690.10718,6.0093951,1822.8463}; azimut=47; - id=396; + id=364; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item319 + class Item287 { position[]={678.17535,6.0704823,1807.8937}; azimut=137; - id=397; + id=365; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item320 + class Item288 { position[]={681.48877,6.0534754,1810.9579}; azimut=137; - id=398; + id=366; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item321 + class Item289 { position[]={684.52997,6.0496469,1813.8418}; azimut=137; - id=399; + id=367; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item322 + class Item290 { position[]={687.68451,6.0283737,1816.7676}; azimut=137; - id=400; + id=368; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item323 + class Item291 { position[]={690.97534,6.0249662,1819.8137}; azimut=137; - id=401; + id=369; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item324 + class Item292 { position[]={706.69177,6.0280285,1802.6276}; - id=402; + id=370; side="EMPTY"; vehicle="Land_HelipadEmpty_F"; leader=1; skill=0.60000002; text="respawn_obj"; }; - class Item325 + class Item293 { position[]={687.0097,6.0139432,1822.5328}; azimut=47; - id=403; + id=371; side="EMPTY"; vehicle="BlockConcrete_F"; skill=0.60000002; }; - class Item326 + class Item294 { position[]={683.81445,6.0262408,1819.5024}; azimut=47; - id=404; + id=372; side="EMPTY"; vehicle="BlockConcrete_F"; skill=0.60000002; }; - class Item327 + class Item295 { position[]={680.99481,6.0175505,1825.8424}; azimut=137; - id=405; + id=373; side="EMPTY"; vehicle="BlockConcrete_F"; skill=0.60000002; }; - class Item328 + class Item296 { position[]={679.52258,6.0160789,1828.418}; azimut=47; - id=406; + id=374; side="EMPTY"; vehicle="Land_RampConcrete_F"; skill=0.60000002; }; - class Item329 + class Item297 { position[]={562.69476,5.9200697,1773.7856}; azimut=137; - id=407; + id=375; side="EMPTY"; vehicle="B_Slingload_01_Fuel_F"; leader=1; skill=0.60000002; init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; - class Item330 + class Item298 { position[]={569.4826,5.9463558,1770.5465}; azimut=137; - id=408; + id=376; side="EMPTY"; vehicle="B_Slingload_01_Medevac_F"; leader=1; skill=0.60000002; init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; - class Item331 + class Item299 { position[]={564.71368,5.9119935,1775.7009}; azimut=137; - id=409; + id=377; side="EMPTY"; vehicle="B_Slingload_01_Medevac_F"; leader=1; skill=0.60000002; init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; - class Item332 + class Item300 { position[]={571.87518,5.9021802,1779.0481}; azimut=137; - id=410; + id=378; side="EMPTY"; vehicle="B_APC_Tracked_01_CRV_F"; leader=1; skill=0.60000002; init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; - class Item333 + class Item301 + { + position[]={669.15594,6.0016575,1849.6006}; + azimut=317; + id=379; + side="EMPTY"; + vehicle="Land_InfoStand_V1_F"; + skill=0.60000002; + text="garage_spawner_0"; + init="this enableSimulationGlobal false;"; + }; + class Item302 + { + position[]={654.04657,6.0722308,1835.1169}; + azimut=317; + id=380; + side="EMPTY"; + vehicle="Land_InfoStand_V1_F"; + skill=0.60000002; + text="garage_spawner_1"; + init="this enableSimulationGlobal false;"; + }; + class Item303 + { + position[]={638.38983,6.1403613,1821.3391}; + azimut=317; + id=381; + side="EMPTY"; + vehicle="Land_InfoStand_V1_F"; + skill=0.60000002; + text="garage_spawner_2"; + init="this enableSimulationGlobal false;"; + }; + class Item304 + { + position[]={623.54932,6.1599998,1807.7683}; + azimut=317; + id=382; + side="EMPTY"; + vehicle="Land_InfoStand_V1_F"; + skill=0.60000002; + text="garage_spawner_3"; + init="this enableSimulationGlobal false;"; + }; + class Item305 + { + position[]={603.19305,6.1418161,1790.6688}; + azimut=317; + id=383; + side="EMPTY"; + vehicle="Land_InfoStand_V1_F"; + skill=0.60000002; + text="garage_spawner_4"; + init="this enableSimulationGlobal false;"; + }; + class Item306 { - position[]={588.07501,6,1741.4336}; + position[]={685.37543,6,1780.1918}; azimut=50; - id=411; + id=384; side="EMPTY"; - vehicle="rhsusf_M1078A1P2_B_M2_wd_fmtv_usarmy"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; - class Item334 + class Item307 { - position[]={591.04883,5.9946437,1737.9912}; + position[]={681.90033,6.0063958,1784.2704}; azimut=50; - id=412; + id=385; side="EMPTY"; - vehicle="rhsusf_M1078A1P2_B_M2_wd_fmtv_usarmy"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; - class Item335 + class Item308 { - position[]={594.19153,5.9915929,1734.3098}; + position[]={676.88818,6.0185676,1774.6417}; azimut=50; - id=413; + id=386; side="EMPTY"; - vehicle="rhsusf_M1078A1P2_B_M2_wd_fmtv_usarmy"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; + }; + class Item309 + { + position[]={673.41309,6.0461111,1778.7203}; + azimut=50; + id=387; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item310 + { + position[]={671.14764,6.0875154,1783.0454}; + azimut=137; + id=388; + side="EMPTY"; + vehicle="Land_InfoStand_V1_F"; + skill=0.60000002; + text="garage_spawner_5"; + init="this enableSimulationGlobal false;"; + }; + class Item311 + { + position[]={679.54474,6.0472832,1788.5394}; + azimut=137; + id=389; + side="EMPTY"; + vehicle="Land_InfoStand_V1_F"; + skill=0.60000002; + text="garage_spawner_6"; + init="this enableSimulationGlobal false;"; + }; + class Item312 + { + position[]={678.61255,6.0345254,1780.3463}; + azimut=320; + id=390; + side="EMPTY"; + vehicle="Land_HelipadEmpty_F"; + leader=1; + skill=0.60000002; + text="garage_spawn_5"; + }; + class Item313 + { + position[]={687.05109,6,1786.4639}; + azimut=320; + id=391; + side="EMPTY"; + vehicle="Land_HelipadEmpty_F"; + leader=1; + skill=0.60000002; + text="garage_spawn_6"; }; }; class Markers @@ -5934,7 +5674,7 @@ class Mission }; class Item78 { - position[]={611.82837,6.0284271,1737.4923}; + position[]={679.0343,6.0262222,1779.3539}; name="mrk_base_car"; text="Motorized"; type="b_motor_inf"; @@ -5942,21 +5682,13 @@ class Mission }; class Item79 { - position[]={656.20959,6.0515032,1767.193}; + position[]={687.76147,6,1785.8634}; name="mrk_base_mech"; - text="Mechanized"; + text="Armor"; type="b_motor_inf"; colorName="ColorBlue"; }; class Item80 - { - position[]={682.78119,6,1782.4777}; - name="mrk_base_armor"; - text="Armor"; - type="b_armor"; - colorName="ColorBlue"; - }; - class Item81 { position[]={638.73395,6.1213431,1828.2622}; name="mrk_base_air"; @@ -5964,7 +5696,7 @@ class Mission type="b_air"; colorName="ColorBlue"; }; - class Item82 + class Item81 { position[]={585.50604,6.0426102,1780.7281}; name="mrk_base_log"; @@ -5972,7 +5704,7 @@ class Mission type="b_support"; colorName="ColorBlue"; }; - class Item83 + class Item82 { position[]={725.21576,6.0335016,1814.2253}; name="mrk_base_range"; @@ -5980,7 +5712,7 @@ class Mission type="b_installation"; colorName="ColorBlue"; }; - class Item84 + class Item83 { position[]={679.20544,6.034339,1820.4172}; name="mrk_rep"; @@ -5988,7 +5720,7 @@ class Mission type="b_maint"; colorName="ColorBlue"; }; - class Item85 + class Item84 { position[]={3794.2363,351.50992,11537.99}; name="mrk_aaZone_3"; @@ -5997,7 +5729,7 @@ class Mission a=3800; b=3800; }; - class Item86 + class Item85 { position[]={3794.2363,230.83879,3954.1167}; name="mrk_aaZone_1"; @@ -6006,7 +5738,7 @@ class Mission a=3800; b=3800; }; - class Item87 + class Item86 { position[]={11397.074,187.27644,3931.4102}; name="mrk_aaZone_0"; @@ -6015,7 +5747,7 @@ class Mission a=3800; b=3800; }; - class Item88 + class Item87 { position[]={11397.074,288.50131,11515.284}; name="mrk_aaZone_2"; @@ -6024,7 +5756,7 @@ class Mission a=3800; b=3800; }; - class Item89 + class Item88 { position[]={667.54822,6.1595759,1792.5311}; name="mrk_safeZone"; @@ -6036,6 +5768,12 @@ class Mission b=1200; drawBorder=1; }; + class Item89 + { + position[]={640.55707,6.1599998,1795.178}; + name="spawnMarker"; + type="Empty"; + }; }; class Sensors { diff --git a/onPlayerRespawn.sqf b/onPlayerRespawn.sqf index 2c8f270..5754166 100644 --- a/onPlayerRespawn.sqf +++ b/onPlayerRespawn.sqf @@ -8,7 +8,4 @@ if((_this select 0) distance respawn_obj < 500)then{ }; }]; //Base protection*/ //[]spawn JOC_loadoutMaster; -[]spawn JOC_playerLoop; -[]spawn JOC_playerClick; -["KeyDown", "_this call JOC_playerButton"] call CBA_fnc_addDisplayHandler; cduEnabled = false; \ No newline at end of file From 79fdb1e83859077e342ebf287080bd06602c2478 Mon Sep 17 00:00:00 2001 From: Jochem Date: Mon, 7 Sep 2015 21:58:58 +0200 Subject: [PATCH 03/17] 70915 Added max garage vehicles Improved garage handling Added scrap option Fixed BFT Increased defense forces arty Layed groundwork officers --- Functions/AI/arty.sqf | 2 +- Functions/BFT/manager.sqf | 2 +- Functions/Commander/officers.sqf | 6 +- Functions/Vehicle/Garage/garageFnc.sqf | 47 +++++- Functions/Vehicle/Garage/main.sqf | 141 +++++++++-------- Functions/Vehicle/Garage/scrap.sqf | 6 + Functions/fn_compile.sqf | 3 +- mission.sqm | 208 ++++++++++++++++++++++++- missionInit.sqf | 6 +- 9 files changed, 338 insertions(+), 83 deletions(-) create mode 100644 Functions/Vehicle/Garage/scrap.sqf diff --git a/Functions/AI/arty.sqf b/Functions/AI/arty.sqf index caff698..b00e47a 100644 --- a/Functions/AI/arty.sqf +++ b/Functions/AI/arty.sqf @@ -39,5 +39,5 @@ zeusMod addCuratorEditableObjects [[_arty2],false]; _trg = createTrigger ["EmptyDetector",_location,true]; _trg setTriggerArea [600,600,600,false]; _trg setTriggerActivation ["WEST","PRESENT", false]; -_trg setTriggerStatements ["(!((typeOf (thisList select 0)) in jetArray)) OR ((count thisList) > 1)","[getPos thisTrigger,350,[4,true],[0,false],[0,false],[0,false],[0,false],[0,false,""cas""],[0,false]] call JOC_spawnZone;",""]; +_trg setTriggerStatements ["(!((typeOf (thisList select 0)) in jetArray)) OR ((count thisList) > 1)","[getPos thisTrigger,350,[4,true],[0,false],[0,false],[1,false],[0,false],[0,false,""cas""],[0,false]] call JOC_spawnZone;",""]; _trg setTriggerTimeout [5,5,5,true]; \ No newline at end of file diff --git a/Functions/BFT/manager.sqf b/Functions/BFT/manager.sqf index d000eaf..c0aced2 100644 --- a/Functions/BFT/manager.sqf +++ b/Functions/BFT/manager.sqf @@ -14,7 +14,7 @@ while{true}do{ { _id = (groupId _x); _leader = (leader _x); - if(!(alive _leader))then{ + if(alive _leader)then{ _icon = 0; //////////////////////////////////////////////// if((count((getMarkerPos _id) - [0,0,0]))>1)then{ diff --git a/Functions/Commander/officers.sqf b/Functions/Commander/officers.sqf index 18d420d..26511ce 100644 --- a/Functions/Commander/officers.sqf +++ b/Functions/Commander/officers.sqf @@ -2,9 +2,9 @@ //Script made by Jochem// ///////////////////////// //Spawn general -_groupOfficer = createGroup east; -_officer = _groupOfficer createUnit ["O_officer_F",_locationS, [], 0, "NONE"]; -_officer allowFleeing 0; +_groupGenaral = createGroup east; +genaral = _groupGenaral createUnit ["O_officer_F",_locationS, [], 0, "NONE"]; +genaral allowFleeing 0; _s = 0; while{_s < officerCount}do{ diff --git a/Functions/Vehicle/Garage/garageFnc.sqf b/Functions/Vehicle/Garage/garageFnc.sqf index 8df6a3e..56f405d 100644 --- a/Functions/Vehicle/Garage/garageFnc.sqf +++ b/Functions/Vehicle/Garage/garageFnc.sqf @@ -1,5 +1,5 @@ -private["_veh","_dis","_vehType","_nVeh"]; +private["_veh","_dis","_time"]; _spawnObj = _this select 0; @@ -8,9 +8,44 @@ _veh = nearestObject [_spawnObj, "AllVehicles"]; _dis = _veh distance _spawnObj; if(_dis > 5)then{}else{ - _vehType = typeOf _veh; - deleteVehicle _veh; - sleep 0.5; - _nVeh = _vehType createVehicle (getPos _spawnObj); - _nVeh setDir (getDir _spawnObj); + publicVariable "_veh"; + _spawnObj setVariable["count",((_spawnObj getVariable "count") + 1)]; + _veh setVariable ["pad",_spawnObj]; + _veh setDir (getDir _spawnObj); + if(_veh isKindOf "car")then{ + _time = 60; + }; + if(_veh isKindOf "tank")then{ + _time = 600; + }; + if(_veh isKindOf "Air")then{ + _time = 600; + }; + if(_veh isKindOf "Ship")then{ + _time = 60; + }; + + //Special cases + if((typeOf _veh) in motorizedArray)then{ + _time = 480; + }; + if((typeOf _veh) in logisticsVehArray)then{ + [_vehicle]spawn JOC_tow; + _time = 480; + }; + if((typeOf _veh) == "rhsusf_M1083A1P2_B_M2_d_MHQ_fmtv_usarmy")then{ + deleteVehicle _veh; + }; + if((typeOf _veh) == "rhsusf_m1a2sep1wd_usarmy" or (typeOf _veh) == "rhsusf_m1a2sep1d_usarmy")then{ + _veh addMagazine "rhs_mag_M1069"; + }; + if((typeOf _veh) == "RHS_UH60M_MEV")then{ + _veh setVariable ["ace_medical_medicClass", 1]; + }; + + [[[_veh],{(_this select 0) setVehicleLock "LOCKED";}],"BIS_fnc_spawn",true,true] call BIS_fnc_MP; + hint format["Vehicle will be ready in %1 minute(s)", (_time/60)]; + sleep _time; + [[[_veh],{(_this select 0) setVehicleLock "UNLOCKED";}],"BIS_fnc_spawn",true,true] call BIS_fnc_MP; + hint "Vehicle is ready"; }; \ No newline at end of file diff --git a/Functions/Vehicle/Garage/main.sqf b/Functions/Vehicle/Garage/main.sqf index 3f55663..ea31ff5 100644 --- a/Functions/Vehicle/Garage/main.sqf +++ b/Functions/Vehicle/Garage/main.sqf @@ -198,86 +198,99 @@ _defaultCrew = gettext (configfile >> "cfgvehicles" >> "all" >> "crew"); testV = _vehicleData; -garage_spawner_0 addAction ["Spawn vehicle",{ +garage_spawn_0 setVariable["count",0]; +garage_spawner_0 addAction ["Request vehicle",{ _veh = nearestObjects [(getPos garage_spawn_0),["AllVehicles"],5]; - { - deleteVehicle _x; - }forEach _veh; - BIS_fnc_garage_center = createVehicle ["Land_HelipadEmpty_F", (getPos garage_spawn_0), [], 0, "CAN_COLLIDE" ]; - _array = ( _this select 3 ) select ( side player call BIS_fnc_sideID ); - BIS_fnc_garage_data = [[],[],(_array select 2),[],[],[]]; - ["Open",true] call BIS_fnc_garage; - [garage_spawn_0]spawn JOC_garageFnc; + if(((count _veh) >= 1) or ((garage_spawn_0 getVariable "count") >= 1))then{ + hint "Pad not clear or max vehicles reached"; + }else{ + BIS_fnc_garage_center = createVehicle ["Land_HelipadEmpty_F", (getPos garage_spawn_0), [], 0, "CAN_COLLIDE" ]; + _array = ( _this select 3 ) select ( side player call BIS_fnc_sideID ); + BIS_fnc_garage_data = [[],[],(_array select 2),[],[],[]]; + ["Open",true] call BIS_fnc_garage; + [garage_spawn_0]spawn JOC_garageFnc; + }; },_vehicleData]; -garage_spawner_1 addAction ["Spawn vehicle",{ +garage_spawn_1 setVariable["count",0]; +garage_spawner_1 addAction ["Request vehicle",{ _veh = nearestObjects [(getPos garage_spawn_1),["AllVehicles"],5]; - { - deleteVehicle _x; - }forEach _veh; - BIS_fnc_garage_center = createVehicle ["Land_HelipadEmpty_F", (getPos garage_spawn_1), [], 0, "CAN_COLLIDE" ]; - _array = ( _this select 3 ) select ( side player call BIS_fnc_sideID ); - BIS_fnc_garage_data = [[],[],(_array select 2),[],[],[]]; - ["Open",true] call BIS_fnc_garage; - [garage_spawn_1]spawn JOC_garageFnc; + if(((count _veh) >= 1) or ((garage_spawn_1 getVariable "count") >= 1))then{ + hint "Pad not clear or max vehicles reached"; + }else{ + BIS_fnc_garage_center = createVehicle ["Land_HelipadEmpty_F", (getPos garage_spawn_1), [], 0, "CAN_COLLIDE" ]; + _array = ( _this select 3 ) select ( side player call BIS_fnc_sideID ); + BIS_fnc_garage_data = [[],[],(_array select 2),[],[],[]]; + ["Open",true] call BIS_fnc_garage; + [garage_spawn_1]spawn JOC_garageFnc; + }; },_vehicleData]; -garage_spawner_2 addAction ["Spawn vehicle",{ +garage_spawn_2 setVariable["count",0]; +garage_spawner_2 addAction ["Request vehicle",{ _veh = nearestObjects [(getPos garage_spawn_2),["AllVehicles"],5]; - { - deleteVehicle _x; - }forEach _veh; - BIS_fnc_garage_center = createVehicle ["Land_HelipadEmpty_F", (getPos garage_spawn_2), [], 0, "CAN_COLLIDE" ]; - _array = ( _this select 3 ) select ( side player call BIS_fnc_sideID ); - BIS_fnc_garage_data = [[],[],(_array select 2),[],[],[]]; - ["Open",true] call BIS_fnc_garage; - [garage_spawn_2]spawn JOC_garageFnc; + if(((count _veh) >= 1) or ((garage_spawn_2 getVariable "count") >= 1))then{ + hint "Pad not clear or max vehicles reached"; + }else{ + BIS_fnc_garage_center = createVehicle ["Land_HelipadEmpty_F", (getPos garage_spawn_2), [], 0, "CAN_COLLIDE" ]; + _array = ( _this select 3 ) select ( side player call BIS_fnc_sideID ); + BIS_fnc_garage_data = [[],[],(_array select 2),[],[],[]]; + ["Open",true] call BIS_fnc_garage; + [garage_spawn_2]spawn JOC_garageFnc; + }; },_vehicleData]; -garage_spawner_3 addAction ["Spawn vehicle",{ +garage_spawn_3 setVariable["count",0]; +garage_spawner_3 addAction ["Request vehicle",{ _veh = nearestObjects [(getPos garage_spawn_3),["AllVehicles"],5]; - { - deleteVehicle _x; - }forEach _veh; - BIS_fnc_garage_center = createVehicle ["Land_HelipadEmpty_F", (getPos garage_spawn_3), [], 0, "CAN_COLLIDE" ]; - _array = ( _this select 3 ) select ( side player call BIS_fnc_sideID ); - BIS_fnc_garage_data = [[],[],(_array select 2),[],[],[]]; - ["Open",true] call BIS_fnc_garage; - [garage_spawn_3]spawn JOC_garageFnc; + if(((count _veh) >= 1) or ((garage_spawn_3 getVariable "count") >= 1))then{ + hint "Pad not clear or max vehicles reached"; + }else{ + BIS_fnc_garage_center = createVehicle ["Land_HelipadEmpty_F", (getPos garage_spawn_3), [], 0, "CAN_COLLIDE" ]; + _array = ( _this select 3 ) select ( side player call BIS_fnc_sideID ); + BIS_fnc_garage_data = [[],[],(_array select 2),[],[],[]]; + ["Open",true] call BIS_fnc_garage; + [garage_spawn_3]spawn JOC_garageFnc; + }; },_vehicleData]; -garage_spawner_4 addAction ["Spawn vehicle",{ +garage_spawn_4 setVariable["count",0]; +garage_spawner_4 addAction ["Request vehicle",{ _veh = nearestObjects [(getPos garage_spawn_4),["AllVehicles"],5]; - { - deleteVehicle _x; - }forEach _veh; - BIS_fnc_garage_center = createVehicle ["Land_HelipadEmpty_F", (getPos garage_spawn_4), [], 0, "CAN_COLLIDE" ]; - _array = ( _this select 3 ) select ( side player call BIS_fnc_sideID ); - BIS_fnc_garage_data = [[],[],(_array select 2),[],[],[]]; - ["Open",true] call BIS_fnc_garage; - [garage_spawn_4]spawn JOC_garageFnc; + if(((count _veh) >= 1) or ((garage_spawn_4 getVariable "count") >= 1))then{ + hint "Pad not clear or max vehicles reached"; + }else{ + BIS_fnc_garage_center = createVehicle ["Land_HelipadEmpty_F", (getPos garage_spawn_4), [], 0, "CAN_COLLIDE" ]; + _array = ( _this select 3 ) select ( side player call BIS_fnc_sideID ); + BIS_fnc_garage_data = [[],[],(_array select 2),[],[],[]]; + ["Open",true] call BIS_fnc_garage; + [garage_spawn_4]spawn JOC_garageFnc; + }; },_vehicleData]; -garage_spawner_5 addAction ["Spawn vehicle",{ +garage_spawn_5 setVariable["count",0]; +garage_spawner_5 addAction ["Request vehicle",{ _veh = nearestObjects [(getPos garage_spawn_5),["AllVehicles"],5]; - { - deleteVehicle _x; - }forEach _veh; - BIS_fnc_garage_center = createVehicle ["Land_HelipadEmpty_F", (getPos garage_spawn_5), [], 0, "CAN_COLLIDE" ]; - _array = ( _this select 3 ) select ( side player call BIS_fnc_sideID ); - BIS_fnc_garage_data = [(_array select 0),[],[],[],[],[]]; - ["Open",true] call BIS_fnc_garage; - [garage_spawn_5]spawn JOC_garageFnc; + if(((count _veh) >= 1) or ((garage_spawn_5 getVariable "count") >= 12))then{ + hint "Pad not clear or max vehicles reached"; + }else{ + BIS_fnc_garage_center = createVehicle ["Land_HelipadEmpty_F", (getPos garage_spawn_5), [], 0, "CAN_COLLIDE" ]; + _array = ( _this select 3 ) select ( side player call BIS_fnc_sideID ); + BIS_fnc_garage_data = [(_array select 0),[],[],[],[],[]]; + ["Open",true] call BIS_fnc_garage; + [garage_spawn_5]spawn JOC_garageFnc; + }; },_vehicleData]; -garage_spawner_6 addAction ["Spawn vehicle",{ - _veh = nearestObjects [(getPos garage_spawn_6),["AllVehicles"],5]; - { - deleteVehicle _x; - }forEach _veh; - BIS_fnc_garage_center = createVehicle ["Land_HelipadEmpty_F", (getPos garage_spawn_6), [], 0, "CAN_COLLIDE" ]; - _array = ( _this select 3 ) select ( side player call BIS_fnc_sideID ); - BIS_fnc_garage_data = [[],(_array select 1),[],[],[],[]]; - ["Open",true] call BIS_fnc_garage; - [garage_spawn_6]spawn JOC_garageFnc; +garage_spawn_6 setVariable["count",0]; +garage_spawner_6 addAction ["Request vehicle",{ + if(((count _veh) >= 1) or ((garage_spawn_6 getVariable "count") >= 4))then{ + hint "Pad not clear or max vehicles reached"; + }else{ + BIS_fnc_garage_center = createVehicle ["Land_HelipadEmpty_F", (getPos garage_spawn_6), [], 0, "CAN_COLLIDE" ]; + _array = ( _this select 3 ) select ( side player call BIS_fnc_sideID ); + BIS_fnc_garage_data = [[],(_array select 1),[],[],[],[]]; + ["Open",true] call BIS_fnc_garage; + [garage_spawn_6]spawn JOC_garageFnc; + }; },_vehicleData]; \ No newline at end of file diff --git a/Functions/Vehicle/Garage/scrap.sqf b/Functions/Vehicle/Garage/scrap.sqf new file mode 100644 index 0000000..4d38833 --- /dev/null +++ b/Functions/Vehicle/Garage/scrap.sqf @@ -0,0 +1,6 @@ +private ["_veh"]; +_veh = _this select 0; + +_id = trg_scrap addAction[ "Scrap vehicle",{_veh = _this select 3; _pad = (_veh getVariable "pad"); _pad setVariable["count",((_pad getVariable "count") - 1)]; deleteVehicle _veh},_veh]; +waitUntil{sleep 0.3;((_veh distance garage_scrap) > 7)}; +garage_scrap removeAction _id; \ No newline at end of file diff --git a/Functions/fn_compile.sqf b/Functions/fn_compile.sqf index a6f31c3..69f6508 100644 --- a/Functions/fn_compile.sqf +++ b/Functions/fn_compile.sqf @@ -73,4 +73,5 @@ JOC_towAttach = compileFinal preprocessFileLineNumbers "Functions\Vehicle\Tow\at JOC_towDetach = compileFinal preprocessFileLineNumbers "Functions\Vehicle\Tow\detach.sqf"; JOC_vehCDU = compileFinal preprocessFileLineNumbers "Functions\Vehicle\cdu.sqf"; JOC_garage = compileFinal preprocessFileLineNumbers "Functions\Vehicle\Garage\main.sqf"; -JOC_garageFnc = compileFinal preprocessFileLineNumbers "Functions\Vehicle\Garage\garageFnc.sqf"; \ No newline at end of file +JOC_garageFnc = compileFinal preprocessFileLineNumbers "Functions\Vehicle\Garage\garageFnc.sqf"; +JOC_garageScrap = compileFinal preprocessFileLineNumbers "Functions\Vehicle\Garage\scrap.sqf"; \ No newline at end of file diff --git a/mission.sqm b/mission.sqm index e9e61e2..7d1d398 100644 --- a/mission.sqm +++ b/mission.sqm @@ -2033,7 +2033,7 @@ class Mission }; class Vehicles { - items=314; + items=331; class Item0 { position[]={689.72211,6.0638437,1797.7275}; @@ -2105,7 +2105,7 @@ class Mission }; class Item7 { - position[]={584.31573,6,1735.7429}; + position[]={584.45502,6,1735.8483}; azimut=50; id=85; side="EMPTY"; @@ -4968,10 +4968,181 @@ class Mission skill=0.60000002; text="garage_spawn_6"; }; + class Item314 + { + position[]={585.03925,5.9998951,1739.4398}; + azimut=140; + id=392; + side="EMPTY"; + vehicle="Land_CncBarrier_stripes_F"; + leader=1; + skill=0.60000002; + }; + class Item315 + { + position[]={588.39813,6,1742.255}; + azimut=140; + id=393; + side="EMPTY"; + vehicle="Land_CncBarrier_stripes_F"; + leader=1; + skill=0.60000002; + }; + class Item316 + { + position[]={598.42938,6.0542912,1750.6797}; + azimut=140; + id=394; + side="EMPTY"; + vehicle="Land_CncBarrier_stripes_F"; + leader=1; + skill=0.60000002; + }; + class Item317 + { + position[]={595.13855,6.0203271,1747.9103}; + azimut=140; + id=395; + side="EMPTY"; + vehicle="Land_CncBarrier_stripes_F"; + leader=1; + skill=0.60000002; + }; + class Item318 + { + position[]={591.71149,6,1745.0254}; + azimut=140; + id=396; + side="EMPTY"; + vehicle="Land_CncBarrier_stripes_F"; + leader=1; + skill=0.60000002; + }; + class Item319 + { + position[]={600.51654,6.0593295,1750.4819}; + azimut=50; + id=397; + side="EMPTY"; + vehicle="Land_CncBarrier_stripes_F"; + leader=1; + skill=0.60000002; + }; + class Item320 + { + position[]={611.72797,6.0272517,1737.1316}; + azimut=50; + id=398; + side="EMPTY"; + vehicle="Land_CncBarrier_stripes_F"; + leader=1; + skill=0.60000002; + }; + class Item321 + { + position[]={609.2088,6.0457883,1740.1292}; + azimut=50; + id=399; + side="EMPTY"; + vehicle="Land_CncBarrier_stripes_F"; + leader=1; + skill=0.60000002; + }; + class Item322 + { + position[]={602.94495,6.0579972,1747.554}; + azimut=50; + id=400; + side="EMPTY"; + vehicle="Land_CncBarrier_stripes_F"; + leader=1; + skill=0.60000002; + }; + class Item323 + { + position[]={609.66278,6.0466328,1740.8999}; + azimut=5; + id=401; + side="EMPTY"; + vehicle="Land_CncBarrier_stripes_F"; + leader=1; + skill=0.60000002; + }; + class Item324 + { + position[]={603.74005,6.0610042,1747.8864}; + azimut=95; + id=402; + side="EMPTY"; + vehicle="Land_CncBarrier_stripes_F"; + leader=1; + skill=0.60000002; + }; + class Item325 + { + position[]={598.12921,6,1723.8201}; + azimut=140; + id=403; + side="EMPTY"; + vehicle="Land_CncBarrier_stripes_F"; + leader=1; + skill=0.60000002; + }; + class Item326 + { + position[]={601.4881,6.0021806,1726.6353}; + azimut=140; + id=404; + side="EMPTY"; + vehicle="Land_CncBarrier_stripes_F"; + leader=1; + skill=0.60000002; + }; + class Item327 + { + position[]={611.51935,6.017067,1735.0599}; + azimut=140; + id=405; + side="EMPTY"; + vehicle="Land_CncBarrier_stripes_F"; + leader=1; + skill=0.60000002; + }; + class Item328 + { + position[]={608.22852,6,1732.2905}; + azimut=140; + id=406; + side="EMPTY"; + vehicle="Land_CncBarrier_stripes_F"; + leader=1; + skill=0.60000002; + }; + class Item329 + { + position[]={604.80145,6.0035982,1729.4056}; + azimut=140; + id=407; + side="EMPTY"; + vehicle="Land_CncBarrier_stripes_F"; + leader=1; + skill=0.60000002; + }; + class Item330 + { + position[]={610.77899,6.0364151,1738.7897}; + azimut=230; + id=408; + side="EMPTY"; + vehicle="Land_InfoStand_V1_F"; + skill=0.60000002; + text="garage_scrap"; + init="this enableSimulationGlobal false;"; + }; }; class Markers { - items=90; + items=91; class Item0 { position[]={4885.7231,339,9659.6299}; @@ -5774,10 +5945,18 @@ class Mission name="spawnMarker"; type="Empty"; }; + class Item90 + { + position[]={597.05756,6.0098667,1736.8634}; + name="mrk_base_scrap"; + text="Vehicle scrap"; + type="b_service"; + colorName="ColorBlue"; + }; }; class Sensors { - items=2; + items=3; class Item0 { position[]={683.15253,6.0177445,1823.5389}; @@ -5820,6 +5999,27 @@ class Mission { }; }; + class Item2 + { + position[]={598.30573,6.0159326,1737.2659}; + a=10; + b=10; + angle=50; + rectangular=1; + activationBy="WEST"; + repeating=1; + timeoutMin=5; + timeoutMid=5; + timeoutMax=5; + interruptable=1; + age="UNKNOWN"; + name="trg_scrap"; + expCond="(speed (list trg_scrap select 0)) < 1"; + expActiv="_nul0= [(list trg_scrap select 0)] spawn JOC_garageScrap;"; + class Effects + { + }; + }; }; }; class Intro diff --git a/missionInit.sqf b/missionInit.sqf index a5bc9b8..cb62c05 100644 --- a/missionInit.sqf +++ b/missionInit.sqf @@ -80,8 +80,8 @@ publicVariable "tankMultiplier"; []spawn JOC_bftManager; //[] spawn JOC_taskManager; []spawn JOC_cacheInit; //Dunno why I can't use a call for this -[]spawn JOC_cmdManager; - +//[]spawn JOC_cmdManager; +/* //call -doesn't need a seperate thread []call JOC_initTowns; []call JOC_initAirfields; @@ -90,4 +90,4 @@ publicVariable "tankMultiplier"; []call JOC_initArty; //Uses AA []call JOC_initRadio; //Uses AA []call JOC_initPatrols; -[]call JOC_initMines; \ No newline at end of file +[]call JOC_initMines;*/ \ No newline at end of file From 0800346fd8f5133be3729e9cff17c6cc94486563 Mon Sep 17 00:00:00 2001 From: Jochem Date: Wed, 9 Sep 2015 20:55:54 +0200 Subject: [PATCH 04/17] 90915 -Removed testing variables -Helicopters insert troops now -Groundwork for convoy -Added APS to enemy tanks --- Baked_AIS/Baked_AIS_init.sqf | 2 +- Functions/BFT/manager.sqf | 1 - Functions/Commander/attack.sqf | 4 - Functions/Commander/convoy.sqf | 57 ++ Functions/Commander/heli.sqf | 4 + Functions/Commander/heliMonitor.sqf | 30 + Functions/Commander/manager.sqf | 2 + Functions/Tasks/convoy.sqf | 11 + Functions/Vehicle/Garage/main.sqf | 1 + Functions/fn_compile.sqf | 1 + .../Zen_SpawningFunctions/Zen_SpawnConvoy.sqf | 2 +- mission.sqm | 812 +++++++++--------- missionInit.sqf | 8 +- 13 files changed, 533 insertions(+), 402 deletions(-) create mode 100644 Functions/Commander/heliMonitor.sqf diff --git a/Baked_AIS/Baked_AIS_init.sqf b/Baked_AIS/Baked_AIS_init.sqf index 4be814c..240567a 100644 --- a/Baked_AIS/Baked_AIS_init.sqf +++ b/Baked_AIS/Baked_AIS_init.sqf @@ -83,7 +83,7 @@ if (baps_enabledFor == 0) then { // FOR M2A1 SLAMMER ONLY baps_defenders = [ "B_MBT_01_cannon_F", "rhsusf_m1a2sep1wd_usarmy" - ]; + ] + tankPool; }; if (baps_enabledFor == 1) then { // FOR MBT ONLY baps_defenders = [ diff --git a/Functions/BFT/manager.sqf b/Functions/BFT/manager.sqf index c0aced2..17b87b7 100644 --- a/Functions/BFT/manager.sqf +++ b/Functions/BFT/manager.sqf @@ -10,7 +10,6 @@ while{true}do{ }; }forEach allGroups; - groupT = _groups; { _id = (groupId _x); _leader = (leader _x); diff --git a/Functions/Commander/attack.sqf b/Functions/Commander/attack.sqf index 213b05b..e3945c9 100644 --- a/Functions/Commander/attack.sqf +++ b/Functions/Commander/attack.sqf @@ -10,7 +10,6 @@ _capPrev = false; _targetTown = 0; _startTown = 0; while{_ok == 0}do{ - hint "loop"; if(_capitalOcc)then{ _count = 0; _capPrev = true; @@ -25,14 +24,11 @@ while{_ok == 0}do{ _targetTown = _lastOcc; }; - targetT = _targetTown; - { _disP = (getPos _targetTown) distance (getPos _x); if(_disP <= _dis)then{ _dis = _disP; _startTown = _x; - targetS = _startTown; }; }forEach opTowns; diff --git a/Functions/Commander/convoy.sqf b/Functions/Commander/convoy.sqf index e69de29..35ea67a 100644 --- a/Functions/Commander/convoy.sqf +++ b/Functions/Commander/convoy.sqf @@ -0,0 +1,57 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +_targetTown = 0; +_startTown = 0; +_ok = 0; +_count = 0; +_dis = 4000; +while{_ok == 0}do{ + _targetTown = opTowns select (round random (count opTowns)); + + { + _disP = (getPos _targetTown) distance (getPos _x); + if(_disP >= _dis or _disP >= 4000)then{ + _dis = _disP; + _startTown = _x; + _ok = 1; + if(true)exitWith{}; + }; + }forEach opTowns; + + _count = _count + 1; + _dis = _dis - 50; +}; +_targetP = getPos _targetTown; +_startP = getPos _startTown; + +hint "lol"; + +//Spawn convoy +_ifv = (ifvPool call BIS_fnc_selectRandom); +_trucks = []; +_truckC = (round (random 5)); +_y = 0; +while{_y < _truckC}do{ + _trucks = _trucks + [(supportPool call BIS_fnc_selectRandom)]; + _y = _y + 1; +}; +_apc = (apcPool call BIS_fnc_selectRandom); + +_convoyA = [_ifv] + _trucks + [_apc]; +testV = _convoyA; + +_locationS = [_startP,[0,400],0,1,[1,400],0,[1,1,100]] call Zen_FindGroundPosition; +_convoyO = [_locationS,_convoyA]call Zen_SpawnConvoy; + +_crew = []; +{ + _crew = _crew + (crew _x); +}forEach _convoyO; + +zeusMod addCuratorEditableObjects [_convoyO,false]; +zeusMod addCuratorEditableObjects [_crew,false]; + +group (_convoyO select 0) setFormation "COLUMN"; +group (_convoyO select 0) setBehaviour "SAFE"; +group (_convoyO select 0) move _targetP; \ No newline at end of file diff --git a/Functions/Commander/heli.sqf b/Functions/Commander/heli.sqf index 4adb77d..04d6131 100644 --- a/Functions/Commander/heli.sqf +++ b/Functions/Commander/heli.sqf @@ -21,10 +21,14 @@ while{true}do{ [_groupV,_heli2] spawn Zen_MoveInVehicle; [[_heli1,_heli2],"mrk_area",[],[0,360],"full"]spawn Zen_OrderVehiclePatrol; + [_heli2,_groupV]spawn JOC_cmdHeliMonitor; + waitUntil{sleep 60; (((fuel _heli1 <= 0.1) or (fuel _heli2 <= 0.1)) or ((!alive _heli1) and (!alive _heli2)))}; if((fuel _heli1 <= 0.1) or (fuel _heli2 <= 0.1))then{ [_heli1, _airfield,"full",100,false,true]spawn Zen_OrderHelicopterLand; + _heli1 addEventHandler["LandedTouchDown",{deleteVehicle ((crew (_this select 0)) select 0);deleteVehicle (_this select 0);}]; [_heli2, _airfield,"full",100,false,true]spawn Zen_OrderHelicopterLand; + _heli2 addEventHandler["LandedTouchDown",{deleteVehicle ((crew (_this select 0)) select 0);deleteVehicle (_this select 0);}]; }; sleep 1200; diff --git a/Functions/Commander/heliMonitor.sqf b/Functions/Commander/heliMonitor.sqf new file mode 100644 index 0000000..e32a19b --- /dev/null +++ b/Functions/Commander/heliMonitor.sqf @@ -0,0 +1,30 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +_heli = _this select 0; +_infG = _this select 1; + +while{alive _heli}do{ + _targets = nearestObjects [_heli, ["SoldierWB"],1000]; + { + _unit = _x; + if((_heli knowsAbout _unit) == 0)then{ + _targets = [_targets,[_unit]]call Zen_ArrayFilterValues; + }; + }forEach _targets; + if((count _targets) >= 10)then{ + _locationI = [(getPos (_targets select 0)),[0,400],0,1] call Zen_FindGroundPosition; + [_heli,_locationI,_infG,"full",10,"fastrope",false] spawn Zen_OrderInsertion; + _infG move (getPos (_targets select 0)); + [_infG,(getPos (_targets select 0))] call BIS_fnc_taskAttack; + waitUntil{sleep 3;((count ((leader _infG) nearTargets 1000)) < 5) or (!alive (leader _infG))}; + if((!alive (leader _infG)) or (!alive _heli))then{ + }else{ + _pos = [(getPos (leader _infG)),0,0,1,0,0,0,0,0,[1,10,50],[1,0,60]] call Zen_FindGroundPosition; + _handle = [_heli,[_pos,_pos],_infG]spawn Zen_OrderExtraction; + waitUntil{sleep 6;scriptDone _handle;}; + [_heli1,"mrk_area",[],[0,360],"full"]spawn Zen_OrderVehiclePatrol; + }; + }; + sleep 10; +}; \ No newline at end of file diff --git a/Functions/Commander/manager.sqf b/Functions/Commander/manager.sqf index e074011..36deadf 100644 --- a/Functions/Commander/manager.sqf +++ b/Functions/Commander/manager.sqf @@ -10,4 +10,6 @@ while{true}do{ []spawn JOC_cmdAttack; cmdAttack = false; }; + sleep (2500/((count opTowns)/2)); + []spawn JOC_cmdConvoy; }; \ No newline at end of file diff --git a/Functions/Tasks/convoy.sqf b/Functions/Tasks/convoy.sqf index e69de29..2bd4ad6 100644 --- a/Functions/Tasks/convoy.sqf +++ b/Functions/Tasks/convoy.sqf @@ -0,0 +1,11 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +_name = [5] call Zen_StringGenerateRandom; +convoyArrived = 0; +convoy = 0; +_ok = 0; + +//Get loc +startLoc = +endLoc = \ No newline at end of file diff --git a/Functions/Vehicle/Garage/main.sqf b/Functions/Vehicle/Garage/main.sqf index ea31ff5..d00d50a 100644 --- a/Functions/Vehicle/Garage/main.sqf +++ b/Functions/Vehicle/Garage/main.sqf @@ -284,6 +284,7 @@ garage_spawner_5 addAction ["Request vehicle",{ garage_spawn_6 setVariable["count",0]; garage_spawner_6 addAction ["Request vehicle",{ + _veh = nearestObjects [(getPos garage_spawn_5),["AllVehicles"],5]; if(((count _veh) >= 1) or ((garage_spawn_6 getVariable "count") >= 4))then{ hint "Pad not clear or max vehicles reached"; }else{ diff --git a/Functions/fn_compile.sqf b/Functions/fn_compile.sqf index 69f6508..e46292c 100644 --- a/Functions/fn_compile.sqf +++ b/Functions/fn_compile.sqf @@ -26,6 +26,7 @@ JOC_cacheGroup = compileFinal preprocessFileLineNumbers "Functions\Caching\cache JOC_cmdManager = compileFinal preprocessFileLineNumbers "Functions\Commander\manager.sqf"; JOC_cmdAttack = compileFinal preprocessFileLineNumbers "Functions\Commander\attack.sqf"; JOC_cmdHeli = compileFinal preprocessFileLineNumbers "Functions\Commander\heli.sqf"; +JOC_cmdHeliMonitor = compileFinal preprocessFileLineNumbers "Functions\Commander\heliMonitor.sqf"; //Init JOC_initAA = compileFinal preprocessFileLineNumbers "Functions\Init\initAA.sqf"; diff --git a/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnConvoy.sqf b/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnConvoy.sqf index 1b83648..6e15e7f 100644 --- a/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnConvoy.sqf +++ b/Zen_FrameworkFunctions/Zen_SpawningFunctions/Zen_SpawnConvoy.sqf @@ -67,7 +67,7 @@ _troopVehicle = ZEN_STD_Array_LastElement(_vehicles); _troopCargo = ZEN_STD_OBJ_CountCargoSeats(_troopVehicle) + (count ([_troopVehicle, "cargoFFV"] call Zen_GetTurretPaths)); if (_troopCargo > 0) then { - _troopGroup = [_startPos, _side, "infantry", [1, _troopCargo]] call Zen_SpawnInfantry; + _troopGroup = [_startPos, _side, "infantry", [1, _troopCargo],"Basic"] call Zen_SpawnInfantry; 0 = [_troopGroup, _troopVehicle, "cargo"] call Zen_MoveInVehicle; }; diff --git a/mission.sqm b/mission.sqm index 7d1d398..deb1bce 100644 --- a/mission.sqm +++ b/mission.sqm @@ -25,7 +25,6 @@ class Mission "A3_Structures_F_Mil_Fortification", "A3_Structures_F_Mil_Flags", "A3_Structures_F_Mil_Helipads", - "RHS_US_A2_AirImport", "aia_misc_e_config", "A3_Supplies_F_Heli_Slingload", "A3_Soft_F_Gamma_HEMTT", @@ -35,11 +34,12 @@ class Mission "A3_Structures_F_Bootcamp_Training", "A3_Structures_F_Walls", "aia_chernarus_config", - "A3_Armor_F_Panther", "3DEN", "ace_sitting", "ace_nametags", - "A3_Structures_F_Civ_InfoBoards" + "A3_Structures_F_Civ_InfoBoards", + "RHS_US_A2_AirImport", + "A3_Armor_F_Panther" }; addOnsAuto[]= { @@ -68,7 +68,6 @@ class Mission "A3_Structures_F_Mil_Fortification", "A3_Structures_F_Mil_Flags", "A3_Structures_F_Mil_Helipads", - "RHS_US_A2_AirImport", "aia_misc_e_config", "A3_Supplies_F_Heli_Slingload", "A3_Soft_F_Gamma_HEMTT", @@ -77,8 +76,9 @@ class Mission "A3_Structures_F_System", "A3_Structures_F_Bootcamp_Training", "A3_Structures_F_Walls", - "A3_Armor_F_Panther", "A3_Structures_F_Civ_InfoBoards", + "RHS_US_A2_AirImport", + "A3_Armor_F_Panther", "aia_chernarus_config" }; randomSeed=14748412; @@ -102,7 +102,7 @@ class Mission }; class Groups { - items=36; + items=37; class Item0 { side="LOGIC"; @@ -2030,6 +2030,36 @@ class Mission }; }; }; + class Item36 + { + side="LOGIC"; + class Vehicles + { + items=1; + class Item0 + { + position[]={724.95447,6.1004248,1831.4996}; + class args + { + items=1; + class Item0 + { + value="1"; + parentCls="ACE_moduleAssignMedicalFacility"; + typeName="enabled"; + }; + }; + id=78; + side="LOGIC"; + vehicle="ACE_moduleAssignMedicalFacility"; + leader=1; + lock="UNLOCKED"; + skill=0.60000002; + syncId=3; + synchronizations[]={4}; + }; + }; + }; }; class Vehicles { @@ -2038,7 +2068,7 @@ class Mission { position[]={689.72211,6.0638437,1797.7275}; azimut=50; - id=78; + id=79; side="EMPTY"; vehicle="B_supplyCrate_F"; lock="LOCKED"; @@ -2049,7 +2079,7 @@ class Mission { position[]={696.66595,6,1789.2854}; azimut=50; - id=79; + id=80; side="EMPTY"; vehicle="B_supplyCrate_F"; lock="LOCKED"; @@ -2060,7 +2090,7 @@ class Mission { position[]={693.19678,6.0127869,1793.5654}; azimut=50; - id=80; + id=81; side="EMPTY"; vehicle="B_supplyCrate_F"; lock="LOCKED"; @@ -2071,7 +2101,7 @@ class Mission { position[]={570.13501,5.9898186,1751.3179}; azimut=50; - id=81; + id=82; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2080,7 +2110,7 @@ class Mission { position[]={565.23724,5.9603734,1757.2734}; azimut=50; - id=82; + id=83; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2089,7 +2119,7 @@ class Mission { position[]={560.1134,5.9859104,1763.38}; azimut=50; - id=83; + id=84; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2098,7 +2128,7 @@ class Mission { position[]={555.06494,6.019567,1769.4106}; azimut=50; - id=84; + id=85; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2107,7 +2137,7 @@ class Mission { position[]={584.45502,6,1735.8483}; azimut=50; - id=85; + id=86; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2116,7 +2146,7 @@ class Mission { position[]={589.59521,5.9953256,1729.6575}; azimut=50; - id=86; + id=87; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2125,7 +2155,7 @@ class Mission { position[]={594.80798,6,1723.5061}; azimut=50; - id=87; + id=88; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2134,7 +2164,7 @@ class Mission { position[]={679.27643,5.9921484,1854.1115}; azimut=50; - id=88; + id=89; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2143,7 +2173,7 @@ class Mission { position[]={674.37866,6.0182672,1860.067}; azimut=50; - id=89; + id=90; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2152,7 +2182,7 @@ class Mission { position[]={669.25482,6.3181725,1866.1736}; azimut=50; - id=90; + id=91; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2161,7 +2191,7 @@ class Mission { position[]={664.6391,6.5580735,1871.6266}; azimut=50; - id=91; + id=92; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2170,7 +2200,7 @@ class Mission { position[]={693.45715,5.9899998,1838.5365}; azimut=50; - id=92; + id=93; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2179,7 +2209,7 @@ class Mission { position[]={714.69751,6.0759115,1827.3296}; azimut=50; - id=93; + id=94; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2188,7 +2218,7 @@ class Mission { position[]={709.0744,6.0786099,1820.1172}; azimut=50; - id=94; + id=95; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2197,7 +2227,7 @@ class Mission { position[]={714.13428,6.0804911,1814.0544}; azimut=50; - id=95; + id=96; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2206,7 +2236,7 @@ class Mission { position[]={600.25067,6,1721.2528}; azimut=147; - id=96; + id=97; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2215,7 +2245,7 @@ class Mission { position[]={607.00043,6.0006661,1725.6665}; azimut=147; - id=97; + id=98; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2224,7 +2254,7 @@ class Mission { position[]={613.61658,6,1729.9448}; azimut=147; - id=98; + id=99; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2233,7 +2263,7 @@ class Mission { position[]={620.36633,6.0074348,1734.3586}; azimut=147; - id=99; + id=100; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2242,7 +2272,7 @@ class Mission { position[]={627.08099,6,1738.7806}; azimut=147; - id=100; + id=101; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2251,7 +2281,7 @@ class Mission { position[]={633.71667,6.0253501,1743.1687}; azimut=147; - id=101; + id=102; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2260,7 +2290,7 @@ class Mission { position[]={640.12018,6,1747.458}; azimut=147; - id=102; + id=103; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2269,7 +2299,7 @@ class Mission { position[]={646.82642,6,1751.7573}; azimut=147; - id=103; + id=104; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2278,7 +2308,7 @@ class Mission { position[]={653.45728,6,1755.9028}; azimut=147; - id=104; + id=105; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2287,7 +2317,7 @@ class Mission { position[]={659.97162,6,1760.1132}; azimut=147; - id=105; + id=106; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2296,7 +2326,7 @@ class Mission { position[]={666.85229,6.0043178,1764.5408}; azimut=147; - id=106; + id=107; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2305,7 +2335,7 @@ class Mission { position[]={673.27869,6,1768.6597}; azimut=147; - id=107; + id=108; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2314,7 +2344,7 @@ class Mission { position[]={680.02588,6.0098963,1772.9536}; azimut=147; - id=108; + id=109; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2323,7 +2353,7 @@ class Mission { position[]={686.71924,6,1777.3691}; azimut=147; - id=109; + id=110; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2332,7 +2362,7 @@ class Mission { position[]={693.44165,6,1781.728}; azimut=147; - id=110; + id=111; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2341,7 +2371,7 @@ class Mission { position[]={700.08972,6,1786.1189}; azimut=147; - id=111; + id=112; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2350,7 +2380,7 @@ class Mission { position[]={706.88831,6,1790.4484}; azimut=147; - id=112; + id=113; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2359,7 +2389,7 @@ class Mission { position[]={713.68695,6,1794.8411}; azimut=147; - id=113; + id=114; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2368,7 +2398,7 @@ class Mission { position[]={720.45319,6,1799.1707}; azimut=147; - id=114; + id=115; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2377,7 +2407,7 @@ class Mission { position[]={722.43445,6,1804.1465}; azimut=50; - id=115; + id=116; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2386,7 +2416,7 @@ class Mission { position[]={555.85571,6.0108724,1774.1473}; azimut=137; - id=116; + id=117; side="EMPTY"; vehicle="Land_HBarrierBig_F"; leader=1; @@ -2396,7 +2426,7 @@ class Mission { position[]={561.82788,5.9083447,1779.7477}; azimut=137; - id=117; + id=118; side="EMPTY"; vehicle="Land_HBarrierBig_F"; leader=1; @@ -2406,7 +2436,7 @@ class Mission { position[]={567.7135,5.8585324,1785.2299}; azimut=137; - id=118; + id=119; side="EMPTY"; vehicle="Land_HBarrierBig_F"; leader=1; @@ -2416,7 +2446,7 @@ class Mission { position[]={573.6568,5.8340116,1790.6864}; azimut=137; - id=119; + id=120; side="EMPTY"; vehicle="Land_HBarrierBig_F"; leader=1; @@ -2426,7 +2456,7 @@ class Mission { position[]={579.65778,5.8200588,1796.2574}; azimut=137; - id=120; + id=121; side="EMPTY"; vehicle="Land_HBarrierBig_F"; leader=1; @@ -2436,7 +2466,7 @@ class Mission { position[]={585.5434,5.8066678,1801.6544}; azimut=137; - id=121; + id=122; side="EMPTY"; vehicle="Land_HBarrierBig_F"; leader=1; @@ -2446,7 +2476,7 @@ class Mission { position[]={591.40021,5.8023186,1807.1962}; azimut=137; - id=122; + id=123; side="EMPTY"; vehicle="Land_HBarrierBig_F"; leader=1; @@ -2456,7 +2486,7 @@ class Mission { position[]={597.31476,5.8092346,1812.6527}; azimut=137; - id=123; + id=124; side="EMPTY"; vehicle="Land_HBarrierBig_F"; leader=1; @@ -2466,7 +2496,7 @@ class Mission { position[]={602.98743,5.8290348,1817.8729}; azimut=137; - id=124; + id=125; side="EMPTY"; vehicle="Land_HBarrierBig_F"; leader=1; @@ -2476,7 +2506,7 @@ class Mission { position[]={609.17267,5.8542414,1823.5933}; azimut=137; - id=125; + id=126; side="EMPTY"; vehicle="Land_HBarrierBig_F"; leader=1; @@ -2486,7 +2516,7 @@ class Mission { position[]={615.26031,5.88727,1829.2218}; azimut=137; - id=126; + id=127; side="EMPTY"; vehicle="Land_HBarrierBig_F"; leader=1; @@ -2496,7 +2526,7 @@ class Mission { position[]={621.3479,5.9279237,1834.8221}; azimut=137; - id=127; + id=128; side="EMPTY"; vehicle="Land_HBarrierBig_F"; leader=1; @@ -2506,7 +2536,7 @@ class Mission { position[]={627.32007,5.9631929,1840.307}; azimut=137; - id=128; + id=129; side="EMPTY"; vehicle="Land_HBarrierBig_F"; leader=1; @@ -2516,7 +2546,7 @@ class Mission { position[]={633.20563,6.0087342,1845.8488}; azimut=137; - id=129; + id=130; side="EMPTY"; vehicle="Land_HBarrierBig_F"; leader=1; @@ -2526,7 +2556,7 @@ class Mission { position[]={639.14911,6.0992255,1851.4188}; azimut=137; - id=130; + id=131; side="EMPTY"; vehicle="Land_HBarrierBig_F"; leader=1; @@ -2536,7 +2566,7 @@ class Mission { position[]={644.91925,6.2229695,1857.0475}; azimut=137; - id=131; + id=132; side="EMPTY"; vehicle="Land_HBarrierBig_F"; leader=1; @@ -2546,7 +2576,7 @@ class Mission { position[]={650.86261,6.3586721,1862.6779}; azimut=137; - id=132; + id=133; side="EMPTY"; vehicle="Land_HBarrierBig_F"; leader=1; @@ -2556,7 +2586,7 @@ class Mission { position[]={656.71924,6.4971809,1868.1327}; azimut=137; - id=133; + id=134; side="EMPTY"; vehicle="Land_HBarrierBig_F"; leader=1; @@ -2566,7 +2596,7 @@ class Mission { position[]={660.23914,6.5934396,1871.5375}; azimut=137; - id=134; + id=135; side="EMPTY"; vehicle="Land_HBarrierBig_F"; leader=1; @@ -2576,7 +2606,7 @@ class Mission { position[]={694.8653,6,1786.2095}; azimut=50; - id=135; + id=136; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2585,7 +2615,7 @@ class Mission { position[]={689.98566,6,1791.8353}; azimut=50; - id=136; + id=137; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2594,7 +2624,7 @@ class Mission { position[]={685.57916,6.0935903,1801.7615}; azimut=147; - id=137; + id=138; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2603,7 +2633,7 @@ class Mission { position[]={692.28021,6.1003332,1806.1552}; azimut=147; - id=138; + id=139; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2612,7 +2642,7 @@ class Mission { position[]={698.8512,6.0881987,1810.4838}; azimut=147; - id=139; + id=140; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2621,7 +2651,7 @@ class Mission { position[]={685.06604,6.0822058,1797.7057}; azimut=50; - id=140; + id=141; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2630,7 +2660,7 @@ class Mission { position[]={611.60767,6.1510534,1789.1821}; azimut=50; - id=141; + id=142; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2639,7 +2669,7 @@ class Mission { position[]={606.7099,6.1331458,1795.1377}; azimut=50; - id=142; + id=143; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2648,7 +2678,7 @@ class Mission { position[]={601.58606,6.0089049,1801.2443}; azimut=50; - id=143; + id=144; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2657,7 +2687,7 @@ class Mission { position[]={596.5376,5.8611517,1807.2749}; azimut=50; - id=144; + id=145; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2666,7 +2696,7 @@ class Mission { position[]={722.90076,6.0674553,1812.822}; azimut=50; - id=145; + id=146; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2675,7 +2705,7 @@ class Mission { position[]={728.47278,6,1804.8157}; azimut=147; - id=146; + id=147; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2684,7 +2714,7 @@ class Mission { position[]={735.1402,6,1809.0601}; azimut=147; - id=147; + id=148; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2693,7 +2723,7 @@ class Mission { position[]={741.85443,6,1813.5388}; azimut=147; - id=148; + id=149; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2702,7 +2732,7 @@ class Mission { position[]={748.70825,6,1817.8794}; azimut=147; - id=149; + id=150; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2711,7 +2741,7 @@ class Mission { position[]={755.37573,6,1822.2648}; azimut=147; - id=150; + id=151; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2720,7 +2750,7 @@ class Mission { position[]={762.04321,6,1826.6511}; azimut=147; - id=151; + id=152; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2729,7 +2759,7 @@ class Mission { position[]={768.80389,6.0264101,1830.9431}; azimut=147; - id=152; + id=153; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2738,7 +2768,7 @@ class Mission { position[]={775.51794,6,1835.2341}; azimut=147; - id=153; + id=154; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2747,7 +2777,7 @@ class Mission { position[]={782.41858,6,1839.6204}; azimut=147; - id=154; + id=155; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2756,7 +2786,7 @@ class Mission { position[]={788.94617,6,1843.9591}; azimut=145; - id=155; + id=156; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2765,7 +2795,7 @@ class Mission { position[]={795.43298,6,1848.762}; azimut=143; - id=156; + id=157; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2774,7 +2804,7 @@ class Mission { position[]={802.05682,6,1853.7067}; azimut=143; - id=157; + id=158; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2783,7 +2813,7 @@ class Mission { position[]={808.51154,6,1858.8074}; azimut=140; - id=158; + id=159; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2792,7 +2822,7 @@ class Mission { position[]={814.68451,6,1864.0771}; azimut=140; - id=159; + id=160; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2801,7 +2831,7 @@ class Mission { position[]={820.92554,6,1869.3589}; azimut=140; - id=160; + id=161; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2810,7 +2840,7 @@ class Mission { position[]={827.27155,6,1874.8108}; azimut=140; - id=161; + id=162; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2819,7 +2849,7 @@ class Mission { position[]={833.64313,6,1880.2363}; azimut=140; - id=162; + id=163; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2828,7 +2858,7 @@ class Mission { position[]={839.96362,6,1885.5381}; azimut=140; - id=163; + id=164; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2837,7 +2867,7 @@ class Mission { position[]={846.284,5.997499,1890.9379}; azimut=140; - id=164; + id=165; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2846,7 +2876,7 @@ class Mission { position[]={852.55322,6,1896.3147}; azimut=140; - id=165; + id=166; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2855,7 +2885,7 @@ class Mission { position[]={716.03705,6.0941482,1819.1615}; azimut=140; - id=166; + id=167; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2864,7 +2894,7 @@ class Mission { position[]={722.03015,6.0733814,1824.2106}; azimut=140; - id=167; + id=168; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2873,7 +2903,7 @@ class Mission { position[]={727.90118,6.1056113,1829.1006}; azimut=140; - id=168; + id=169; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2882,7 +2912,7 @@ class Mission { position[]={733.84906,6.1319156,1834.1149}; azimut=140; - id=169; + id=170; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2891,7 +2921,7 @@ class Mission { position[]={740.06415,6.1348042,1839.3306}; azimut=140; - id=170; + id=171; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2900,7 +2930,7 @@ class Mission { position[]={745.81158,6.1190143,1844.2789}; azimut=140; - id=171; + id=172; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2909,7 +2939,7 @@ class Mission { position[]={751.62262,6.0974102,1848.9553}; azimut=140; - id=172; + id=173; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2918,7 +2948,7 @@ class Mission { position[]={757.49365,6.0710135,1853.8453}; azimut=140; - id=173; + id=174; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2927,7 +2957,7 @@ class Mission { position[]={763.44153,6.0470443,1858.8596}; azimut=140; - id=174; + id=175; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2936,7 +2966,7 @@ class Mission { position[]={769.65662,6.0228305,1864.0753}; azimut=140; - id=175; + id=176; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2945,7 +2975,7 @@ class Mission { position[]={775.40405,6.0018406,1869.0237}; azimut=140; - id=176; + id=177; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2954,7 +2984,7 @@ class Mission { position[]={781.64703,5.9942212,1874.2405}; azimut=140; - id=177; + id=178; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2963,7 +2993,7 @@ class Mission { position[]={787.51807,5.9945168,1879.1305}; azimut=140; - id=178; + id=179; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2972,7 +3002,7 @@ class Mission { position[]={793.46594,6,1884.1448}; azimut=140; - id=179; + id=180; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2981,7 +3011,7 @@ class Mission { position[]={799.68103,5.9946108,1889.3605}; azimut=140; - id=180; + id=181; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2990,7 +3020,7 @@ class Mission { position[]={805.42847,5.99965,1894.3088}; azimut=140; - id=181; + id=182; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2999,7 +3029,7 @@ class Mission { position[]={811.34766,5.999651,1899.3094}; azimut=140; - id=182; + id=183; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3008,7 +3038,7 @@ class Mission { position[]={817.21869,5.9914999,1904.1995}; azimut=140; - id=183; + id=184; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3017,7 +3047,7 @@ class Mission { position[]={823.16656,5.9980631,1909.2137}; azimut=140; - id=184; + id=185; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3026,7 +3056,7 @@ class Mission { position[]={829.38165,6,1914.4294}; azimut=140; - id=185; + id=186; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3035,7 +3065,7 @@ class Mission { position[]={835.12909,5.9883409,1919.3778}; azimut=140; - id=186; + id=187; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3044,7 +3074,7 @@ class Mission { position[]={840.20532,5.9836955,1917.8411}; azimut=50; - id=187; + id=188; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3053,7 +3083,7 @@ class Mission { position[]={845.19946,5.9601502,1911.8975}; azimut=50; - id=188; + id=189; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3062,7 +3092,7 @@ class Mission { position[]={850.19354,5.9950438,1905.7433}; azimut=50; - id=189; + id=190; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3071,7 +3101,7 @@ class Mission { position[]={853.97864,6,1901.4833}; azimut=50; - id=190; + id=191; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3080,7 +3110,7 @@ class Mission { position[]={696.4967,6.0851517,1804.6783}; azimut=140; - id=191; + id=192; side="EMPTY"; vehicle="Flag_US_F"; skill=0.60000002; @@ -3090,7 +3120,7 @@ class Mission { position[]={690.11487,6.0943995,1808.9337}; azimut=237; - id=192; + id=193; side="EMPTY"; vehicle="Land_HelipadEmpty_F"; skill=0.60000002; @@ -3100,7 +3130,7 @@ class Mission { position[]={660.93768,6.0133247,1850.3156}; azimut=137; - id=193; + id=194; side="EMPTY"; vehicle="Land_HelipadSquare_F"; leader=1; @@ -3111,7 +3141,7 @@ class Mission { position[]={645.84198,6.0921617,1835.8474}; azimut=137; - id=194; + id=195; side="EMPTY"; vehicle="Land_HelipadSquare_F"; leader=1; @@ -3122,7 +3152,7 @@ class Mission { position[]={615.34821,6.1382518,1808.4594}; azimut=137; - id=195; + id=196; side="EMPTY"; vehicle="Land_HelipadSquare_F"; leader=1; @@ -3133,7 +3163,7 @@ class Mission { position[]={630.16028,6.1504002,1822.0396}; azimut=137; - id=196; + id=197; side="EMPTY"; vehicle="Land_HelipadSquare_F"; leader=1; @@ -3144,7 +3174,7 @@ class Mission { position[]={708.2749,6.0427299,1825.8895}; azimut=140; - id=197; + id=198; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3153,7 +3183,7 @@ class Mission { position[]={702.48053,5.9966407,1836.2289}; azimut=140; - id=198; + id=199; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3162,7 +3192,7 @@ class Mission { position[]={717.46619,6.0954742,1824.1465}; azimut=50; - id=199; + id=200; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3171,7 +3201,7 @@ class Mission { position[]={741.85754,6.0991936,1844.7795}; azimut=50; - id=200; + id=201; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3180,7 +3210,7 @@ class Mission { position[]={736.95978,6.0393443,1850.7351}; azimut=50; - id=201; + id=202; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3189,7 +3219,7 @@ class Mission { position[]={731.83594,6.075242,1856.8417}; azimut=50; - id=202; + id=203; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3198,7 +3228,7 @@ class Mission { position[]={709.8017,6.0418105,1852.1271}; azimut=140; - id=203; + id=204; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3207,7 +3237,7 @@ class Mission { position[]={715.74957,6.071043,1857.1414}; azimut=140; - id=204; + id=205; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3216,7 +3246,7 @@ class Mission { position[]={721.96466,6.1015253,1862.3571}; azimut=140; - id=205; + id=206; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3225,7 +3255,7 @@ class Mission { position[]={726.9165,6.1158671,1862.7834}; azimut=50; - id=206; + id=207; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3234,7 +3264,7 @@ class Mission { position[]={704.07745,6.0136647,1847.2965}; azimut=140; - id=207; + id=208; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3243,7 +3273,7 @@ class Mission { position[]={696.57806,5.9899998,1834.9293}; azimut=50; - id=208; + id=209; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3252,7 +3282,7 @@ class Mission { position[]={701.83826,6.0013938,1841.7069}; azimut=50; - id=209; + id=210; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3261,24 +3291,13 @@ class Mission { position[]={725.638,6.045752,1846.2258}; azimut=230; - id=210; + id=211; side="EMPTY"; vehicle="Land_HelipadRescue_F"; leader=1; skill=0.60000002; }; class Item133 - { - position[]={725.77502,6.0446658,1845.8872}; - azimut=230; - id=211; - side="EMPTY"; - vehicle="RHS_UH60M_MEV"; - leader=1; - skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; - }; - class Item134 { position[]={720.9425,6.0769019,1827.3185}; azimut=50; @@ -3287,8 +3306,10 @@ class Mission vehicle="MASH_EP1"; leader=1; skill=0.60000002; + syncId=4; + synchronizations[]={3}; }; - class Item135 + class Item134 { position[]={594.95911,6.0376916,1791.3811}; azimut=137; @@ -3299,7 +3320,7 @@ class Mission skill=0.60000002; text="garage_spawn_4"; }; - class Item136 + class Item135 { position[]={560.64941,5.959599,1771.8768}; azimut=137; @@ -3310,7 +3331,7 @@ class Mission skill=0.60000002; init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; - class Item137 + class Item136 { position[]={565.34875,5.9643288,1766.7665}; azimut=137; @@ -3321,7 +3342,7 @@ class Mission skill=0.60000002; init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; - class Item138 + class Item137 { position[]={563.38416,5.9637799,1764.9391}; azimut=137; @@ -3332,7 +3353,7 @@ class Mission skill=0.60000002; init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; - class Item139 + class Item138 { position[]={558.68488,5.9811153,1769.8948}; azimut=137; @@ -3343,7 +3364,7 @@ class Mission skill=0.60000002; init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; - class Item140 + class Item139 { position[]={567.39404,5.9554181,1768.666}; azimut=137; @@ -3354,7 +3375,7 @@ class Mission skill=0.60000002; init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; - class Item141 + class Item140 { position[]={573.39246,6.0029182,1758.5056}; azimut=47; @@ -3365,7 +3386,7 @@ class Mission skill=0.60000002; init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; - class Item142 + class Item141 { position[]={571.00409,6.0003376,1761.1205}; azimut=47; @@ -3376,7 +3397,7 @@ class Mission skill=0.60000002; init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; - class Item143 + class Item142 { position[]={575.78687,6.0056777,1755.9486}; azimut=47; @@ -3387,7 +3408,7 @@ class Mission skill=0.60000002; init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; - class Item144 + class Item143 { position[]={565.32269,5.8964548,1778.8293}; azimut=137; @@ -3398,7 +3419,7 @@ class Mission skill=0.60000002; init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; - class Item145 + class Item144 { position[]={566.77521,5.9012733,1777.309}; azimut=137; @@ -3409,7 +3430,7 @@ class Mission skill=0.60000002; init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; - class Item146 + class Item145 { position[]={568.25037,5.9123344,1775.6498}; azimut=137; @@ -3420,7 +3441,7 @@ class Mission skill=0.60000002; init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; - class Item147 + class Item146 { position[]={569.771,5.9241381,1773.8793}; azimut=137; @@ -3431,7 +3452,7 @@ class Mission skill=0.60000002; init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; - class Item148 + class Item147 { position[]={571.22351,5.9505873,1772.3589}; azimut=137; @@ -3442,7 +3463,7 @@ class Mission skill=0.60000002; init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; - class Item149 + class Item148 { position[]={572.69867,5.981317,1770.6997}; azimut=137; @@ -3453,7 +3474,7 @@ class Mission skill=0.60000002; init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; - class Item150 + class Item149 { position[]={724.1073,6.0497589,1820.4933}; azimut=50; @@ -3462,7 +3483,7 @@ class Mission vehicle="ShootingPos_F"; skill=0.60000002; }; - class Item151 + class Item150 { position[]={726.44501,6.0154729,1817.7238}; azimut=50; @@ -3471,7 +3492,7 @@ class Mission vehicle="ShootingPos_F"; skill=0.60000002; }; - class Item152 + class Item151 { position[]={728.78253,6,1815.022}; azimut=50; @@ -3480,7 +3501,7 @@ class Mission vehicle="ShootingPos_F"; skill=0.60000002; }; - class Item153 + class Item152 { position[]={731.052,6,1812.2965}; azimut=50; @@ -3489,7 +3510,7 @@ class Mission vehicle="ShootingPos_F"; skill=0.60000002; }; - class Item154 + class Item153 { position[]={730.42114,6.0161881,1823.5117}; azimut=50; @@ -3498,7 +3519,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item155 + class Item154 { position[]={733.38135,6.0601783,1825.7255}; azimut=50; @@ -3507,7 +3528,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item156 + class Item155 { position[]={736.34149,6.1271315,1828.4592}; azimut=50; @@ -3516,7 +3537,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item157 + class Item156 { position[]={739.3667,6.1788349,1830.8351}; azimut=50; @@ -3525,7 +3546,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item158 + class Item157 { position[]={742.02509,6.1785946,1833.5386}; azimut=50; @@ -3534,7 +3555,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item159 + class Item158 { position[]={744.98529,6.1256676,1835.7523}; azimut=50; @@ -3543,7 +3564,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item160 + class Item159 { position[]={747.94543,6.1738925,1838.4861}; azimut=50; @@ -3552,7 +3573,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item161 + class Item160 { position[]={750.97064,6.1656919,1840.8619}; azimut=50; @@ -3561,7 +3582,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item162 + class Item161 { position[]={753.17688,6.1565995,1842.734}; azimut=50; @@ -3570,7 +3591,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item163 + class Item162 { position[]={756.13708,6.1467834,1844.9478}; azimut=50; @@ -3579,7 +3600,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item164 + class Item163 { position[]={759.09723,6.129231,1847.6815}; azimut=50; @@ -3588,7 +3609,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item165 + class Item164 { position[]={762.12244,6.1151233,1850.0574}; azimut=50; @@ -3597,7 +3618,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item166 + class Item165 { position[]={765.0069,6.1016183,1852.3097}; azimut=50; @@ -3606,7 +3627,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item167 + class Item166 { position[]={767.9671,6.0877681,1854.5234}; azimut=50; @@ -3615,7 +3636,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item168 + class Item167 { position[]={770.92725,6.0698447,1857.2572}; azimut=50; @@ -3624,7 +3645,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item169 + class Item168 { position[]={773.95245,6.054872,1859.6331}; azimut=50; @@ -3633,7 +3654,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item170 + class Item169 { position[]={776.91223,6.0402937,1862.3383}; azimut=50; @@ -3642,7 +3663,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item171 + class Item170 { position[]={779.87244,6.0294824,1864.552}; azimut=50; @@ -3651,7 +3672,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item172 + class Item171 { position[]={782.83258,6.0152044,1867.2858}; azimut=50; @@ -3660,7 +3681,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item173 + class Item172 { position[]={785.85779,6.0120459,1869.6616}; azimut=50; @@ -3669,7 +3690,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item174 + class Item173 { position[]={788.81744,6.0119534,1871.835}; azimut=50; @@ -3678,7 +3699,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item175 + class Item174 { position[]={791.77765,6.0095086,1874.0487}; azimut=50; @@ -3687,7 +3708,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item176 + class Item175 { position[]={794.73779,6.0072742,1876.7825}; azimut=50; @@ -3696,7 +3717,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item177 + class Item176 { position[]={797.763,6.0081396,1879.1583}; azimut=50; @@ -3705,7 +3726,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item178 + class Item177 { position[]={800.40985,6.0021162,1881.7063}; azimut=50; @@ -3714,7 +3735,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item179 + class Item178 { position[]={803.37006,5.9992666,1883.92}; azimut=50; @@ -3723,7 +3744,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item180 + class Item179 { position[]={806.3302,5.9995685,1886.6538}; azimut=50; @@ -3732,7 +3753,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item181 + class Item180 { position[]={809.35541,6.0004344,1889.0297}; azimut=50; @@ -3741,7 +3762,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item182 + class Item181 { position[]={811.86304,5.9980893,1891.4329}; azimut=50; @@ -3750,7 +3771,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item183 + class Item182 { position[]={814.82324,5.9951377,1893.6466}; azimut=50; @@ -3759,7 +3780,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item184 + class Item183 { position[]={817.78339,5.9914927,1896.3804}; azimut=50; @@ -3768,7 +3789,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item185 + class Item184 { position[]={820.80859,5.9899998,1898.7562}; azimut=50; @@ -3777,7 +3798,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item186 + class Item185 { position[]={823.76843,5.9899998,1901.382}; azimut=50; @@ -3786,7 +3807,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item187 + class Item186 { position[]={826.72864,5.9895668,1903.5957}; azimut=50; @@ -3795,7 +3816,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item188 + class Item187 { position[]={829.68878,5.9855208,1906.3295}; azimut=50; @@ -3804,7 +3825,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item189 + class Item188 { position[]={832.71399,5.9895959,1908.7053}; azimut=50; @@ -3813,7 +3834,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item190 + class Item189 { position[]={735.53778,6,1817.754}; azimut=50; @@ -3822,7 +3843,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item191 + class Item190 { position[]={738.56299,6,1820.1299}; azimut=50; @@ -3831,7 +3852,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item192 + class Item191 { position[]={741.07062,6.0007081,1822.5331}; azimut=50; @@ -3840,7 +3861,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item193 + class Item192 { position[]={744.03082,6.0599179,1824.7468}; azimut=50; @@ -3849,7 +3870,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item194 + class Item193 { position[]={746.99097,6.0802398,1827.4806}; azimut=50; @@ -3858,7 +3879,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item195 + class Item194 { position[]={750.01617,6,1829.8564}; azimut=50; @@ -3867,7 +3888,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item196 + class Item195 { position[]={752.97601,6.0628829,1832.4822}; azimut=50; @@ -3876,7 +3897,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item197 + class Item196 { position[]={755.93622,6.1273174,1834.6959}; azimut=50; @@ -3885,7 +3906,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item198 + class Item197 { position[]={758.89636,6.2080326,1837.4297}; azimut=50; @@ -3894,7 +3915,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item199 + class Item198 { position[]={761.75964,6.1972761,1839.0905}; azimut=50; @@ -3903,7 +3924,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item200 + class Item199 { position[]={764.78485,6.1882725,1841.4663}; azimut=50; @@ -3912,7 +3933,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item201 + class Item200 { position[]={767.29248,6.1180358,1843.8695}; azimut=50; @@ -3921,7 +3942,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item202 + class Item201 { position[]={770.25269,6.0408273,1846.0833}; azimut=50; @@ -3930,7 +3951,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item203 + class Item202 { position[]={773.21283,6.0559835,1848.817}; azimut=50; @@ -3939,7 +3960,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item204 + class Item203 { position[]={776.23804,6.0940714,1851.1929}; azimut=50; @@ -3948,7 +3969,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item205 + class Item204 { position[]={779.19788,6.1083808,1853.8186}; azimut=50; @@ -3957,7 +3978,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item206 + class Item205 { position[]={782.15808,6.05721,1856.0323}; azimut=50; @@ -3966,7 +3987,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item207 + class Item206 { position[]={785.11823,6.0553093,1858.7661}; azimut=50; @@ -3975,7 +3996,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item208 + class Item207 { position[]={788.05688,6.0564451,1861.2535}; azimut=50; @@ -3984,7 +4005,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item209 + class Item208 { position[]={791.08209,6.0123706,1863.6294}; azimut=50; @@ -3993,7 +4014,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item210 + class Item209 { position[]={793.58972,6.0284133,1866.0326}; azimut=50; @@ -4002,7 +4023,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item211 + class Item210 { position[]={796.54993,6.0390811,1868.2463}; azimut=50; @@ -4011,7 +4032,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item212 + class Item211 { position[]={799.51007,6.032093,1870.9801}; azimut=50; @@ -4020,7 +4041,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item213 + class Item212 { position[]={802.53528,6.02634,1873.356}; azimut=50; @@ -4029,7 +4050,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item214 + class Item213 { position[]={805.49512,6.0093946,1875.9817}; azimut=50; @@ -4038,7 +4059,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item215 + class Item214 { position[]={808.45532,6.0022016,1878.1954}; azimut=50; @@ -4047,7 +4068,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item216 + class Item215 { position[]={811.41547,6.007906,1880.9292}; azimut=50; @@ -4056,7 +4077,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item217 + class Item216 { position[]={814.73071,6.0152845,1883.2673}; azimut=50; @@ -4065,7 +4086,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item218 + class Item217 { position[]={817.75592,6.0109358,1885.6432}; azimut=50; @@ -4074,7 +4095,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item219 + class Item218 { position[]={820.26355,6,1888.0464}; azimut=50; @@ -4083,7 +4104,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item220 + class Item219 { position[]={823.22375,5.9996529,1890.2601}; azimut=50; @@ -4092,7 +4113,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item221 + class Item220 { position[]={826.1839,5.9960079,1892.9939}; azimut=50; @@ -4101,7 +4122,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item222 + class Item221 { position[]={829.20911,5.9928403,1895.3698}; azimut=50; @@ -4110,7 +4131,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item223 + class Item222 { position[]={832.16895,5.9897804,1897.9955}; azimut=50; @@ -4119,7 +4140,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item224 + class Item223 { position[]={835.12915,5.9828825,1900.2092}; azimut=50; @@ -4128,7 +4149,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item225 + class Item224 { position[]={838.08929,5.9752903,1902.943}; azimut=50; @@ -4137,7 +4158,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item226 + class Item225 { position[]={739.97906,6,1814.1835}; azimut=50; @@ -4146,7 +4167,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item227 + class Item226 { position[]={743.00427,6,1816.5593}; azimut=50; @@ -4155,7 +4176,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item228 + class Item227 { position[]={745.5119,6,1818.9625}; azimut=50; @@ -4164,7 +4185,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item229 + class Item228 { position[]={748.47211,6,1821.1763}; azimut=50; @@ -4173,7 +4194,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item230 + class Item229 { position[]={751.43225,6,1823.91}; azimut=50; @@ -4182,7 +4203,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item231 + class Item230 { position[]={754.45746,6,1826.2859}; azimut=50; @@ -4191,7 +4212,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item232 + class Item231 { position[]={757.4173,6,1828.9116}; azimut=50; @@ -4200,7 +4221,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item233 + class Item232 { position[]={760.3775,6.0315113,1831.1254}; azimut=50; @@ -4209,7 +4230,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item234 + class Item233 { position[]={763.33765,6.108057,1833.8591}; azimut=50; @@ -4218,7 +4239,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item235 + class Item234 { position[]={770.72192,6.0497842,1835.896}; azimut=50; @@ -4227,7 +4248,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item236 + class Item235 { position[]={773.74713,6,1838.2719}; azimut=50; @@ -4236,7 +4257,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item237 + class Item236 { position[]={776.25476,6,1840.675}; azimut=50; @@ -4245,7 +4266,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item238 + class Item237 { position[]={779.21497,6,1842.8888}; azimut=50; @@ -4254,7 +4275,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item239 + class Item238 { position[]={782.17511,6.0099626,1845.6226}; azimut=50; @@ -4263,7 +4284,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item240 + class Item239 { position[]={785.20032,6.0367942,1847.9984}; azimut=50; @@ -4272,7 +4293,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item241 + class Item240 { position[]={788.16016,6,1850.6241}; azimut=50; @@ -4281,7 +4302,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item242 + class Item241 { position[]={791.12036,6.0031543,1852.8379}; azimut=50; @@ -4290,7 +4311,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item243 + class Item242 { position[]={794.08051,6.0085816,1855.5717}; azimut=50; @@ -4299,7 +4320,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item244 + class Item243 { position[]={796.4917,6,1857.3065}; azimut=50; @@ -4308,7 +4329,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item245 + class Item244 { position[]={799.51691,6,1859.6824}; azimut=50; @@ -4317,7 +4338,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item246 + class Item245 { position[]={802.02454,6.0132709,1862.0856}; azimut=50; @@ -4326,7 +4347,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item247 + class Item246 { position[]={804.98474,6.0286632,1864.2993}; azimut=50; @@ -4335,7 +4356,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item248 + class Item247 { position[]={807.94489,6.0137005,1867.0331}; azimut=50; @@ -4344,7 +4365,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item249 + class Item248 { position[]={810.97009,6,1869.4089}; azimut=50; @@ -4353,7 +4374,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item250 + class Item249 { position[]={813.92993,6,1872.0347}; azimut=50; @@ -4362,7 +4383,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item251 + class Item250 { position[]={816.89014,6,1874.2484}; azimut=50; @@ -4371,7 +4392,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item252 + class Item251 { position[]={819.85028,6.0052857,1876.9822}; azimut=50; @@ -4380,7 +4401,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item253 + class Item252 { position[]={820.00104,6.0066948,1877.5104}; azimut=50; @@ -4389,7 +4410,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item254 + class Item253 { position[]={823.02625,6.0052633,1879.8862}; azimut=50; @@ -4398,7 +4419,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item255 + class Item254 { position[]={825.53387,6,1882.2894}; azimut=50; @@ -4407,7 +4428,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item256 + class Item255 { position[]={828.49408,6,1884.5032}; azimut=50; @@ -4416,7 +4437,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item257 + class Item256 { position[]={831.45422,6,1887.2369}; azimut=50; @@ -4425,7 +4446,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item258 + class Item257 { position[]={834.47943,6,1889.6128}; azimut=50; @@ -4434,7 +4455,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item259 + class Item258 { position[]={837.43927,5.997015,1892.2385}; azimut=50; @@ -4443,7 +4464,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item260 + class Item259 { position[]={840.39948,5.9881272,1894.4523}; azimut=50; @@ -4452,7 +4473,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item261 + class Item260 { position[]={843.35962,5.9889588,1897.186}; azimut=50; @@ -4461,7 +4482,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item262 + class Item261 { position[]={847.39404,5.9995766,1900.049}; azimut=50; @@ -4470,7 +4491,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item263 + class Item262 { position[]={843.32288,5.9832916,1905.5531}; azimut=50; @@ -4479,7 +4500,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item264 + class Item263 { position[]={837.78467,5.9788609,1912.0469}; azimut=50; @@ -4488,7 +4509,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item265 + class Item264 { position[]={732.30066,6,1812.7396}; azimut=50; @@ -4497,7 +4518,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item266 + class Item265 { position[]={728.10437,6,1817.1342}; azimut=50; @@ -4506,7 +4527,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item267 + class Item266 { position[]={723.90808,6.0526814,1821.5598}; azimut=50; @@ -4515,7 +4536,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item268 + class Item267 { position[]={746.51184,6.1592007,1839.6057}; azimut=50; @@ -4524,7 +4545,7 @@ class Mission vehicle="TargetBootcampHumanSimple_F"; skill=0.60000002; }; - class Item269 + class Item268 { position[]={757.67786,6.1238985,1847.8473}; azimut=50; @@ -4533,7 +4554,7 @@ class Mission vehicle="TargetBootcampHumanSimple_F"; skill=0.60000002; }; - class Item270 + class Item269 { position[]={770.25092,6.0724678,1856.8167}; azimut=50; @@ -4542,7 +4563,7 @@ class Mission vehicle="TargetBootcampHumanSimple_F"; skill=0.60000002; }; - class Item271 + class Item270 { position[]={783.87952,6.024065,1866.1661}; azimut=50; @@ -4551,7 +4572,7 @@ class Mission vehicle="TargetBootcampHumanSimple_F"; skill=0.60000002; }; - class Item272 + class Item271 { position[]={796.22766,6.0123401,1874.8242}; azimut=50; @@ -4560,7 +4581,7 @@ class Mission vehicle="TargetBootcampHumanSimple_F"; skill=0.60000002; }; - class Item273 + class Item272 { position[]={808.92352,6.0073528,1883.4091}; azimut=50; @@ -4569,7 +4590,7 @@ class Mission vehicle="TargetBootcampHumanSimple_F"; skill=0.60000002; }; - class Item274 + class Item273 { position[]={821.53516,5.9971676,1892.1241}; azimut=50; @@ -4578,7 +4599,7 @@ class Mission vehicle="TargetBootcampHumanSimple_F"; skill=0.60000002; }; - class Item275 + class Item274 { position[]={835.62067,5.9811368,1901.0265}; azimut=50; @@ -4587,7 +4608,7 @@ class Mission vehicle="TargetBootcampHumanSimple_F"; skill=0.60000002; }; - class Item276 + class Item275 { position[]={847.23096,5.9945884,1905.9192}; azimut=50; @@ -4596,7 +4617,7 @@ class Mission vehicle="TargetBootcampHumanSimple_F"; skill=0.60000002; }; - class Item277 + class Item276 { position[]={849.21588,6,1903.2705}; azimut=50; @@ -4605,7 +4626,7 @@ class Mission vehicle="TargetBootcampHumanSimple_F"; skill=0.60000002; }; - class Item278 + class Item277 { position[]={851.36627,6,1900.9543}; azimut=50; @@ -4614,7 +4635,7 @@ class Mission vehicle="TargetBootcampHumanSimple_F"; skill=0.60000002; }; - class Item279 + class Item278 { position[]={835.84106,5.9827728,1915.3969}; azimut=50; @@ -4623,7 +4644,7 @@ class Mission vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item280 + class Item279 { position[]={666.92737,6.0747705,1817.8198}; azimut=47; @@ -4633,7 +4654,7 @@ class Mission leader=1; skill=0.60000002; }; - class Item281 + class Item280 { position[]={669.62805,6.0745568,1814.9131}; azimut=47; @@ -4643,7 +4664,7 @@ class Mission leader=1; skill=0.60000002; }; - class Item282 + class Item281 { position[]={672.37415,6.0751076,1811.9604}; azimut=47; @@ -4653,7 +4674,7 @@ class Mission leader=1; skill=0.60000002; }; - class Item283 + class Item282 { position[]={675.2337,6.0756507,1808.8972}; azimut=47; @@ -4663,7 +4684,7 @@ class Mission leader=1; skill=0.60000002; }; - class Item284 + class Item283 { position[]={684.50153,6.0088487,1828.8622}; azimut=47; @@ -4673,7 +4694,7 @@ class Mission leader=1; skill=0.60000002; }; - class Item285 + class Item284 { position[]={687.24762,6.0091238,1825.9095}; azimut=47; @@ -4683,7 +4704,7 @@ class Mission leader=1; skill=0.60000002; }; - class Item286 + class Item285 { position[]={690.10718,6.0093951,1822.8463}; azimut=47; @@ -4693,7 +4714,7 @@ class Mission leader=1; skill=0.60000002; }; - class Item287 + class Item286 { position[]={678.17535,6.0704823,1807.8937}; azimut=137; @@ -4703,7 +4724,7 @@ class Mission leader=1; skill=0.60000002; }; - class Item288 + class Item287 { position[]={681.48877,6.0534754,1810.9579}; azimut=137; @@ -4713,7 +4734,7 @@ class Mission leader=1; skill=0.60000002; }; - class Item289 + class Item288 { position[]={684.52997,6.0496469,1813.8418}; azimut=137; @@ -4723,7 +4744,7 @@ class Mission leader=1; skill=0.60000002; }; - class Item290 + class Item289 { position[]={687.68451,6.0283737,1816.7676}; azimut=137; @@ -4733,7 +4754,7 @@ class Mission leader=1; skill=0.60000002; }; - class Item291 + class Item290 { position[]={690.97534,6.0249662,1819.8137}; azimut=137; @@ -4743,7 +4764,7 @@ class Mission leader=1; skill=0.60000002; }; - class Item292 + class Item291 { position[]={706.69177,6.0280285,1802.6276}; id=370; @@ -4753,7 +4774,7 @@ class Mission skill=0.60000002; text="respawn_obj"; }; - class Item293 + class Item292 { position[]={687.0097,6.0139432,1822.5328}; azimut=47; @@ -4762,7 +4783,7 @@ class Mission vehicle="BlockConcrete_F"; skill=0.60000002; }; - class Item294 + class Item293 { position[]={683.81445,6.0262408,1819.5024}; azimut=47; @@ -4771,7 +4792,7 @@ class Mission vehicle="BlockConcrete_F"; skill=0.60000002; }; - class Item295 + class Item294 { position[]={680.99481,6.0175505,1825.8424}; azimut=137; @@ -4780,7 +4801,7 @@ class Mission vehicle="BlockConcrete_F"; skill=0.60000002; }; - class Item296 + class Item295 { position[]={679.52258,6.0160789,1828.418}; azimut=47; @@ -4789,7 +4810,7 @@ class Mission vehicle="Land_RampConcrete_F"; skill=0.60000002; }; - class Item297 + class Item296 { position[]={562.69476,5.9200697,1773.7856}; azimut=137; @@ -4800,7 +4821,7 @@ class Mission skill=0.60000002; init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; - class Item298 + class Item297 { position[]={569.4826,5.9463558,1770.5465}; azimut=137; @@ -4811,7 +4832,7 @@ class Mission skill=0.60000002; init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; - class Item299 + class Item298 { position[]={564.71368,5.9119935,1775.7009}; azimut=137; @@ -4822,323 +4843,332 @@ class Mission skill=0.60000002; init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; - class Item300 - { - position[]={571.87518,5.9021802,1779.0481}; - azimut=137; - id=378; - side="EMPTY"; - vehicle="B_APC_Tracked_01_CRV_F"; - leader=1; - skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; - }; - class Item301 + class Item299 { position[]={669.15594,6.0016575,1849.6006}; azimut=317; - id=379; + id=378; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; text="garage_spawner_0"; init="this enableSimulationGlobal false;"; }; - class Item302 + class Item300 { position[]={654.04657,6.0722308,1835.1169}; azimut=317; - id=380; + id=379; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; text="garage_spawner_1"; init="this enableSimulationGlobal false;"; }; - class Item303 + class Item301 { position[]={638.38983,6.1403613,1821.3391}; azimut=317; - id=381; + id=380; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; text="garage_spawner_2"; init="this enableSimulationGlobal false;"; }; - class Item304 + class Item302 { position[]={623.54932,6.1599998,1807.7683}; azimut=317; - id=382; + id=381; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; text="garage_spawner_3"; init="this enableSimulationGlobal false;"; }; - class Item305 + class Item303 { position[]={603.19305,6.1418161,1790.6688}; azimut=317; - id=383; + id=382; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; text="garage_spawner_4"; init="this enableSimulationGlobal false;"; }; - class Item306 + class Item304 { position[]={685.37543,6,1780.1918}; azimut=50; - id=384; + id=383; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item307 + class Item305 { position[]={681.90033,6.0063958,1784.2704}; azimut=50; - id=385; + id=384; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item308 + class Item306 { position[]={676.88818,6.0185676,1774.6417}; azimut=50; - id=386; + id=385; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item309 + class Item307 { position[]={673.41309,6.0461111,1778.7203}; azimut=50; - id=387; + id=386; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item310 + class Item308 { - position[]={671.14764,6.0875154,1783.0454}; + position[]={670.71643,6.0873852,1782.6809}; azimut=137; - id=388; + id=387; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; text="garage_spawner_5"; init="this enableSimulationGlobal false;"; }; - class Item311 + class Item309 { - position[]={679.54474,6.0472832,1788.5394}; + position[]={679.18158,6.0524573,1788.1989}; azimut=137; - id=389; + id=388; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; text="garage_spawner_6"; init="this enableSimulationGlobal false;"; }; - class Item312 + class Item310 { position[]={678.61255,6.0345254,1780.3463}; azimut=320; - id=390; + id=389; side="EMPTY"; vehicle="Land_HelipadEmpty_F"; leader=1; skill=0.60000002; text="garage_spawn_5"; }; - class Item313 + class Item311 { position[]={687.05109,6,1786.4639}; azimut=320; - id=391; + id=390; side="EMPTY"; vehicle="Land_HelipadEmpty_F"; leader=1; skill=0.60000002; text="garage_spawn_6"; }; - class Item314 + class Item312 { position[]={585.03925,5.9998951,1739.4398}; azimut=140; - id=392; + id=391; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item315 + class Item313 { position[]={588.39813,6,1742.255}; azimut=140; - id=393; + id=392; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item316 + class Item314 { position[]={598.42938,6.0542912,1750.6797}; azimut=140; - id=394; + id=393; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item317 + class Item315 { position[]={595.13855,6.0203271,1747.9103}; azimut=140; - id=395; + id=394; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item318 + class Item316 { position[]={591.71149,6,1745.0254}; azimut=140; - id=396; + id=395; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item319 + class Item317 { position[]={600.51654,6.0593295,1750.4819}; azimut=50; - id=397; + id=396; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item320 + class Item318 { position[]={611.72797,6.0272517,1737.1316}; azimut=50; - id=398; + id=397; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item321 + class Item319 { position[]={609.2088,6.0457883,1740.1292}; azimut=50; - id=399; + id=398; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item322 + class Item320 { position[]={602.94495,6.0579972,1747.554}; azimut=50; - id=400; + id=399; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item323 + class Item321 { position[]={609.66278,6.0466328,1740.8999}; azimut=5; - id=401; + id=400; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item324 + class Item322 { position[]={603.74005,6.0610042,1747.8864}; azimut=95; - id=402; + id=401; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item325 + class Item323 { position[]={598.12921,6,1723.8201}; azimut=140; - id=403; + id=402; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item326 + class Item324 { position[]={601.4881,6.0021806,1726.6353}; azimut=140; - id=404; + id=403; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item327 + class Item325 { position[]={611.51935,6.017067,1735.0599}; azimut=140; - id=405; + id=404; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item328 + class Item326 { position[]={608.22852,6,1732.2905}; azimut=140; - id=406; + id=405; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item329 + class Item327 { position[]={604.80145,6.0035982,1729.4056}; azimut=140; - id=407; + id=406; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item330 + class Item328 { position[]={610.77899,6.0364151,1738.7897}; azimut=230; - id=408; + id=407; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; text="garage_scrap"; init="this enableSimulationGlobal false;"; }; + class Item329 + { + position[]={725.45691,6.0458541,1846.1737}; + azimut=230; + id=408; + side="EMPTY"; + vehicle="RHS_UH60M_MEV"; + skill=0.60000002; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; + }; + class Item330 + { + position[]={571.04938,5.8973398,1778.9484}; + azimut=137; + id=409; + side="EMPTY"; + vehicle="B_APC_Tracked_01_CRV_F"; + skill=0.60000002; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; + }; }; class Markers { @@ -5152,7 +5182,7 @@ class Mission }; class Item1 { - position[]={4847.562,339,10089.234}; + position[]={4855.0166,339,10058.739}; name="mrk_heliSpawn_0"; text="heliSpawn"; type="Empty"; @@ -5787,14 +5817,14 @@ class Mission }; class Item69 { - position[]={4753.8735,9,2547.8193}; + position[]={4748.8853,9,2539.3738}; name="mrk_heliSpawn_2"; text="heliSpawn"; type="Empty"; }; class Item70 { - position[]={12052.803,158.8,12678.254}; + position[]={12056.696,159,12691.672}; name="mrk_heliSpawn_1"; text="heliSpawn"; type="Empty"; diff --git a/missionInit.sqf b/missionInit.sqf index cb62c05..5355397 100644 --- a/missionInit.sqf +++ b/missionInit.sqf @@ -22,7 +22,7 @@ truckPool = ["RHS_Ural_MSV_01","RHS_Ural_Open_MSV_01"]; //truck classn apcPool = ["rhs_btr80_msv","rhs_btr80a_msv"]; //apc classnames ifvPool = ["rhs_brm1k_tv","rhs_bmp2k_tv","rhs_bmp2_tv","rhs_bmp1k_tv","rhs_prp3_tv"]; //ifv classnames tankPool = ["rhs_t80um","rhs_t90_tv"]; //tank classnames -supportPool = []; //support classnames +supportPool = ["rhs_gaz66_ammo_msv","rhs_gaz66_r142_msv","RHS_Ural_Fuel_MSV_01","rhs_gaz66_repair_msv"]; //support classnames airPool = ["RHS_Mi8AMTSh_UPK23_vvsc","RHS_Mi8mt_vvsc","RHS_Mi8MTV3_vvsc"]; //transport helicopter classnames casPool = ["RHS_Ka52_UPK23_vvsc","RHS_Mi24P_CAS_vvsc"]; //cas helicopters classnames jetPool = ["O_Plane_CAS_02_F"]; //jet classnames @@ -80,8 +80,8 @@ publicVariable "tankMultiplier"; []spawn JOC_bftManager; //[] spawn JOC_taskManager; []spawn JOC_cacheInit; //Dunno why I can't use a call for this -//[]spawn JOC_cmdManager; -/* +[]spawn JOC_cmdManager; + //call -doesn't need a seperate thread []call JOC_initTowns; []call JOC_initAirfields; @@ -90,4 +90,4 @@ publicVariable "tankMultiplier"; []call JOC_initArty; //Uses AA []call JOC_initRadio; //Uses AA []call JOC_initPatrols; -[]call JOC_initMines;*/ \ No newline at end of file +[]call JOC_initMines; \ No newline at end of file From a28bc428a0b03d651b80f4a1e6db839af92ea41b Mon Sep 17 00:00:00 2001 From: Jochem Date: Fri, 11 Sep 2015 22:44:36 +0200 Subject: [PATCH 05/17] 110915 -Finished convoy -New ZEN update --- Functions/Commander/convoy.sqf | 89 +- Functions/Init/initFOB.sqf | 9 + .../Zen_ArrayGetIndexedSlice.sqf | 6 +- .../Zen_DialogSystem/Zen_CreateControl.sqf | 47 + .../Zen_DialogSystem/Zen_CreateDialog.sqf | 23 + .../Zen_DialogSystem/Zen_Dialog.hpp | 8 + .../Zen_DialogSystemCompile.sqf | 59 + .../Zen_DialogSystem/Zen_ExecuteEvent.sqf | 67 + .../Zen_DialogSystem/Zen_FrameworkLibrary.sqf | 191 +++ .../Zen_DialogSystem/Zen_GetControlData.sqf | 27 + .../Zen_GetDialogControls.sqf | 28 + .../Zen_DialogSystem/Zen_InvokeDialog.sqf | 92 ++ .../Zen_DialogSystem/Zen_LinkControl.sqf | 31 + .../Zen_DialogSystem/Zen_StandardLibrary.sqf | 155 ++ .../Zen_DialogSystem/Zen_UpdateControl.sqf | 58 + Zen_FrameworkFunctions/Zen_InitHeader.sqf | 5 +- .../Zen_AddLoadoutDialog.sqf | 12 +- .../Zen_LoadoutDialog.hpp | 103 -- .../Zen_LoadoutDialogEquip.sqf | 17 +- .../Zen_ShowLoadoutDialog.sqf | 19 +- .../Zen_ObjectFunctions/Zen_IsReady.sqf | 27 +- .../Zen_OrderAircraftPatrol.sqf | 87 +- .../Zen_OrderBoatPatrol.sqf | 83 +- .../Zen_OrderInfantryMove.sqf | 4 +- .../Zen_OrderInfantryPatrol.sqf | 72 +- .../Zen_OrderVehicleMove.sqf | 16 +- .../Zen_OrderVehiclePatrol.sqf | 79 +- .../Zen_CalculatePositionMarker.sqf | 5 +- .../Zen_CalculatePositionObject.sqf | 5 +- .../Zen_FindRoadDirection.sqf | 7 +- .../Zen_QuantizeAngles.sqf | 2 +- Zen_FrameworkFunctions/copyLibraries.bat | 2 + mission.sqm | 1338 +++++++++++++---- 33 files changed, 2110 insertions(+), 663 deletions(-) create mode 100644 Functions/Init/initFOB.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DialogSystem/Zen_CreateControl.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DialogSystem/Zen_CreateDialog.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DialogSystem/Zen_Dialog.hpp create mode 100644 Zen_FrameworkFunctions/Zen_DialogSystem/Zen_DialogSystemCompile.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DialogSystem/Zen_ExecuteEvent.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DialogSystem/Zen_FrameworkLibrary.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DialogSystem/Zen_GetControlData.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DialogSystem/Zen_GetDialogControls.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DialogSystem/Zen_InvokeDialog.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DialogSystem/Zen_LinkControl.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DialogSystem/Zen_StandardLibrary.sqf create mode 100644 Zen_FrameworkFunctions/Zen_DialogSystem/Zen_UpdateControl.sqf delete mode 100644 Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_LoadoutDialog.hpp diff --git a/Functions/Commander/convoy.sqf b/Functions/Commander/convoy.sqf index 35ea67a..bd5473c 100644 --- a/Functions/Commander/convoy.sqf +++ b/Functions/Commander/convoy.sqf @@ -5,22 +5,25 @@ _targetTown = 0; _startTown = 0; _ok = 0; _count = 0; -_dis = 4000; +_dis = 0; +hint "start"; while{_ok == 0}do{ - _targetTown = opTowns select (round random (count opTowns)); - - { - _disP = (getPos _targetTown) distance (getPos _x); - if(_disP >= _dis or _disP >= 4000)then{ - _dis = _disP; - _startTown = _x; - _ok = 1; - if(true)exitWith{}; - }; - }forEach opTowns; - - _count = _count + 1; - _dis = _dis - 50; + _targetTown = opTowns select (round (random (count opTowns))); + + { + _dis = (getPos _targetTown) distance (getPos _x); + if(_dis >= 4000)then{ + _startTown = _x; + _ok = 1; + if(true)exitWith{}; + }; + }forEach opTowns; + + _count = _count + 1; + if(_count == (count opTowns))then{ + _dis = _dis - 50; + _count = 0; + }; }; _targetP = getPos _targetTown; _startP = getPos _startTown; @@ -33,8 +36,8 @@ _trucks = []; _truckC = (round (random 5)); _y = 0; while{_y < _truckC}do{ - _trucks = _trucks + [(supportPool call BIS_fnc_selectRandom)]; - _y = _y + 1; + _trucks = _trucks + [(supportPool call BIS_fnc_selectRandom)]; + _y = _y + 1; }; _apc = (apcPool call BIS_fnc_selectRandom); @@ -46,12 +49,56 @@ _convoyO = [_locationS,_convoyA]call Zen_SpawnConvoy; _crew = []; { - _crew = _crew + (crew _x); + _crew = _crew + (crew _x); }forEach _convoyO; +_group = group (_convoyO select 0); zeusMod addCuratorEditableObjects [_convoyO,false]; zeusMod addCuratorEditableObjects [_crew,false]; -group (_convoyO select 0) setFormation "COLUMN"; -group (_convoyO select 0) setBehaviour "SAFE"; -group (_convoyO select 0) move _targetP; \ No newline at end of file +_group setFormation "COLUMN"; +_group setBehaviour "SAFE"; +_group move _targetP; +[_convoyO]spawn Zen_TrackVehicles; + +_name = [5] call Zen_StringGenerateRandom; +_marker = createMarker [_name, _startP];//Marker +_name setMarkerType "mil_start"; +_name setMarkerColor "ColorOPFOR"; +_name setMarkerText "Convoy start"; + +_name2 = [5] call Zen_StringGenerateRandom; +_marker2 = createMarker [_name2, _targetP];//Marker +_name2 setMarkerType "mil_end"; +_name2 setMarkerColor "ColorOPFOR"; +_name2 setMarkerText "Convoy end"; + +[["IntelAdded",[format ["An enemy convoy from %1 is due to leave for %2.", (text _startTown),(text _targetTown)]]],"BIS_fnc_showNotification",west] call BIS_fnc_MP; //Notification + +waitUntil{sleep 5; (((leader _group)distance _targetP)< 100) or ([units _group]call Zen_AreNotInVehicle)}; + +if(((leader _group)distance _targetP)< 100)then{ + [["IntelAdded",[format ["The enemy convoy arrived at %1",(text _targetTown)]]],"BIS_fnc_showNotification",west] call BIS_fnc_MP; + + _clean = true; + while{_clean}do{ + _nearestPlayers = []; + { + if (isPlayer _x && _x distance _location < 1000) then { + _nearestPlayers pushBack _x; + }; + }forEach(playableUnits + switchableUnits); + if(count _nearestPlayers == 0)then{ + _clean = false; + { + deleteVehicle (vehicle _x); + deleteVehicle _x; + }forEach (units _group); + }; + sleep 10; + }; +}else{ + [["IntelAdded",["The enemy convoy has been destroyed"]],"BIS_fnc_showNotification",west] call BIS_fnc_MP; +}; +deleteMarker _marker; +deleteMarker _marker2; \ No newline at end of file diff --git a/Functions/Init/initFOB.sqf b/Functions/Init/initFOB.sqf new file mode 100644 index 0000000..a59f796 --- /dev/null +++ b/Functions/Init/initFOB.sqf @@ -0,0 +1,9 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// + + + +[[[],{_action = cmd_laptop addAction["Task overview",{ + +}];}],"BIS_fnc_spawn",true,true] call BIS_fnc_MP; \ No newline at end of file diff --git a/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayGetIndexedSlice.sqf b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayGetIndexedSlice.sqf index 909225a..276192e 100644 --- a/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayGetIndexedSlice.sqf +++ b/Zen_FrameworkFunctions/Zen_DataFunctions/Zen_ArrayGetIndexedSlice.sqf @@ -19,11 +19,11 @@ ZEN_STD_Parse_GetArgumentDefault(_indexEnd, 2, (count _array) - 1) _arrayPart = []; -if ((_indexStart >= (count _array)) || (_indexEnd >= (count _array))) then { - 0 = ["Zen_ArrayGetIndexedSlice", "One or more given indexes are out of bounds", _this] call Zen_PrintError; +if (_indexStart >= (count _array)) then { + 0 = ["Zen_ArrayGetIndexedSlice", "Start index is out of bounds", _this] call Zen_PrintError; call Zen_StackPrint; } else { - for "_i" from _indexStart to _indexEnd do { + for "_i" from _indexStart to (_indexEnd min ((count _array) - 1)) do { _arrayPart pushBack (_array select _i); }; }; diff --git a/Zen_FrameworkFunctions/Zen_DialogSystem/Zen_CreateControl.sqf b/Zen_FrameworkFunctions/Zen_DialogSystem/Zen_CreateControl.sqf new file mode 100644 index 0000000..dc7196c --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DialogSystem/Zen_CreateControl.sqf @@ -0,0 +1,47 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_FrameworkLibrary.sqf" +#include "Zen_StandardLibrary.sqf" + +_Zen_stack_Trace = ["Zen_CreateControl", _this] call Zen_StackAdd; +private ["_controlType", "_ID", "_dataTypes", "_dataArray", "_type", "_data"]; + +if !([_this, [["STRING"], ["ARRAY"], ["ARRAY"], ["ARRAY"], ["ARRAY"], ["ARRAY"], ["ARRAY"], ["ARRAY"], ["ARRAY"], ["ARRAY"], ["ARRAY"], ["ARRAY"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + ("") +}; + +_controlType = _this select 0; +_ID = "Zen_Control_" + ([10] call Zen_StringGenerateRandom); + +_controlTypes = ["Button","List","Text"]; +if !([_controlType, _controlTypes] call Zen_ValueIsInArray) exitWith { + ZEN_FMW_Code_ErrorExitValue("Zen_CreateControl", "Invalid control type given", ("")) +}; + +_dataTypes = ["LinksTo","Text","TextColor","Position","Size","Function","List","ListData","Data","FontSize"]; +_dataArray = []; + +{ + _type = _x select 0; + _data = _x select 1; + if ((toUpper _type) isEqualTo "NAME") then { + if (typeName _data == "STRING") then { + _ID = _data; + }; + } else { + if ([_type, _dataTypes] call Zen_ValueIsInArray) then { + _dataArray pushBack _x; + } else { + ZEN_FMW_Code_Error("Zen_UpdateControl", "Invalid control property identifier given.") + }; + }; +} forEach ([_this, 1] call Zen_ArrayGetIndexedSlice); + +Zen_Control_Classes_Global pushBack [_ID, _controlType, _dataArray]; +publicVariable "Zen_Control_Classes_Global"; + +call Zen_StackRemove; +(_ID) diff --git a/Zen_FrameworkFunctions/Zen_DialogSystem/Zen_CreateDialog.sqf b/Zen_FrameworkFunctions/Zen_DialogSystem/Zen_CreateDialog.sqf new file mode 100644 index 0000000..6824061 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DialogSystem/Zen_CreateDialog.sqf @@ -0,0 +1,23 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_FrameworkLibrary.sqf" +#include "Zen_StandardLibrary.sqf" + +_Zen_stack_Trace = ["Zen_CreateDialog", _this] call Zen_StackAdd; +private ["_ID"]; + +if !([_this, [["STRING"]], [], 0] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + ("") +}; + +_ID = "Zen_Dialog_" + ([10] call Zen_StringGenerateRandom); +ZEN_STD_Parse_GetArgument(_ID, 0) + +Zen_Dialog_Classes_Global pushBack [_ID, []]; +publicVariable "Zen_Dialog_Classes_Global"; + +call Zen_StackRemove; +(_ID) diff --git a/Zen_FrameworkFunctions/Zen_DialogSystem/Zen_Dialog.hpp b/Zen_FrameworkFunctions/Zen_DialogSystem/Zen_Dialog.hpp new file mode 100644 index 0000000..83e289d --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DialogSystem/Zen_Dialog.hpp @@ -0,0 +1,8 @@ +class Zen_Dialog { + idd = 76; + access = 0; + movingEnable = false; + enableSimulation = true; + class controlsBackground {}; + class controls {}; +}; diff --git a/Zen_FrameworkFunctions/Zen_DialogSystem/Zen_DialogSystemCompile.sqf b/Zen_FrameworkFunctions/Zen_DialogSystem/Zen_DialogSystemCompile.sqf new file mode 100644 index 0000000..d32e849 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DialogSystem/Zen_DialogSystemCompile.sqf @@ -0,0 +1,59 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_FrameworkLibrary.sqf" +#include "Zen_StandardLibrary.sqf" + +Zen_Dialog_Classes_Global = []; +Zen_Control_Classes_Global = []; +Zen_ActiveDialog = ""; +uiNamespace setVariable ["Zen_Dialog_Object_Local", []]; +/** + Control Types: + "Button" + "List" + "Text" + + Control Properties: + "LinksTo" + "Text" + "TextColor" + "FontSize" + "Position" + "Size" + "Function" + "List" + "ListData" + "Data" +//*/ + +Zen_LinkControl = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DialogSystem\Zen_LinkControl.sqf"; +Zen_CreateDialog = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DialogSystem\Zen_CreateDialog.sqf"; +Zen_CreateControl = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DialogSystem\Zen_CreateControl.sqf"; +Zen_ExecuteEvent = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DialogSystem\Zen_ExecuteEvent.sqf"; +Zen_InvokeDialog = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DialogSystem\Zen_InvokeDialog.sqf"; +Zen_GetControlData = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DialogSystem\Zen_GetControlData.sqf"; +Zen_GetDialogControls = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DialogSystem\Zen_GetDialogControls.sqf"; +// Zen_RemoveControl = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DialogSystem\Zen_RemoveControl.sqf"; +// Zen_RemoveDialog = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DialogSystem\Zen_RemoveDialog.sqf"; +Zen_UpdateControl = compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DialogSystem\Zen_UpdateControl.sqf"; + +Zen_CloseDialog = { + uiNamespace setVariable ["Zen_Dialog_Object_Local", []]; + (findDisplay 76) closeDisplay 0; + closeDialog 0; +}; + +Zen_RefreshDialog = { + with uiNamespace do { + missionNamespace setVariable ["Zen_ActiveDialog", Zen_Dialog_Object_Local select 0]; + }; + + if (Zen_Dialog_Object_Local != "") then { + uiNamespace setVariable ["Zen_Dialog_Object_Local", []]; + 0 = [Zen_ActiveDialog] spawn Zen_InvokeDialog; + }; +}; + +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_DialogSystem/Zen_ExecuteEvent.sqf b/Zen_FrameworkFunctions/Zen_DialogSystem/Zen_ExecuteEvent.sqf new file mode 100644 index 0000000..ef795df --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DialogSystem/Zen_ExecuteEvent.sqf @@ -0,0 +1,67 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_FrameworkLibrary.sqf" +#include "Zen_StandardLibrary.sqf" + +_Zen_stack_Trace = ["Zen_ExecuteEvent", _this] call Zen_StackAdd; +private ["_controlID", "_controlData", "_controlBlocks", "_index", "_function"]; + +if !([_this, [["STRING"]], [], 0] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_controlID = _this select 0; +_controlData = [_controlID] call Zen_GetControlData; +_controlBlocks = _controlData select 2; + +_index = [_controlBlocks, "Function", 0] call Zen_ArrayGetNestedIndex; +if (count _index == 0) exitWith {}; +_index = _index select 0; +_function = (_controlBlocks select _index) select 1; + +_index = [_controlBlocks, "Data", 0] call Zen_ArrayGetNestedIndex; +_linkedArgs = []; +if (count _index > 0) then { + _index = _index select 0; + _linkedArgs pushBack ((_controlBlocks select _index) select 1); +}; + +_index = [_controlBlocks, "LinksTo", 0] call Zen_ArrayGetNestedIndex; +if (count _index > 0) then { + disableSerialization; + _Zen_Dialog_Object_Local = uiNamespace getVariable "Zen_Dialog_Object_Local"; + + _linkedControls = (_controlBlocks select (_index select 0)) select 1; + _dialogControls = [(_Zen_Dialog_Object_Local select 0)] call Zen_GetDialogControls; + { + _controlData = [_x] call Zen_GetControlData; + _type = _controlData select 1; + if ((toUpper _type) in ["LIST"]) then { + _indexLinkedControlLocal = [_Zen_Dialog_Object_Local select 1, _x, 0] call Zen_ArrayGetNestedIndex; + if (count _indexLinkedControlLocal > 0) then { + _indexLinkedControlLocal = _indexLinkedControlLocal select 0; + _linkedControl = ((_Zen_Dialog_Object_Local select 1) select _indexLinkedControlLocal) select 1; + _listDataIndex = lbCurSel _linkedControl; + + _indexLinkControlBlock = [(_controlData select 2), "ListData", 0] call Zen_ArrayGetNestedIndex; + if (count _indexLinkControlBlock > 0) then { + _indexLinkControlBlock = _indexLinkControlBlock select 0; + _linkedArgs pushBack ((((_controlData select 2) select _indexLinkControlBlock) select 1) select _listDataIndex); + }; + }; + } else { + _indexLinkControlBlock = [(_controlData select 2), "Data", 0] call Zen_ArrayGetNestedIndex; + if (count _indexLinkControlBlock > 0) then { + _indexLinkControlBlock = _indexLinkControlBlock select 0; + _linkedArgs pushBack (((_controlData select 2) select _indexLinkControlBlock) select 1); + }; + }; + } forEach (_linkedControls arrayIntersect _dialogControls); +}; + +0 = _linkedArgs spawn (missionNamespace getVariable _function); + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_DialogSystem/Zen_FrameworkLibrary.sqf b/Zen_FrameworkFunctions/Zen_DialogSystem/Zen_FrameworkLibrary.sqf new file mode 100644 index 0000000..7af8176 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DialogSystem/Zen_FrameworkLibrary.sqf @@ -0,0 +1,191 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#define ZEN_FMW_Array_RemoveIndexes(A, I) \ + { \ + 0 = [A, _x - _forEachIndex] call Zen_ArrayRemoveIndex; \ + } forEach I; + +#define ZEN_FMW_CFG_VehicleWeapons(V) \ + _Zen_WeaponsArray = []; \ + 0 = [_Zen_WeaponsArray, getArray (V >> "weapons")] call Zen_ArrayAppendNested; \ + { \ + 0 = [_Zen_WeaponsArray, getArray (V >> "weapons")] call Zen_ArrayAppendNested; \ + } forEach ("true" configClasses (V >> "turrets")); \ + { \ + _Zen_WeaponsArray = [_Zen_WeaponsArray, ZEN_FMW_ZAF_String(V)] call Zen_ArrayFilterCondition; \ + } forEach ["smoke", "horn", "laser", "flare", "throw", "put"]; + +#define ZEN_FMW_Code_ErrorExitVoid(F, D) \ + 0 = [F, D, _this] call Zen_PrintError; \ + call Zen_StackPrint; \ + call Zen_StackRemove; + +#define ZEN_FMW_Code_ErrorExitValue(F, D, V) \ + 0 = [F, D, _this] call Zen_PrintError; \ + call Zen_StackPrint; \ + call Zen_StackRemove; \ + V + +#define ZEN_FMW_Code_Error(F, D) \ + 0 = [F, D, _this] call Zen_PrintError; \ + call Zen_StackPrint; + +#define ZEN_FMW_Code_GiveLoadoutsOrdered(U, L, S) \ + { \ + 0 = [_x, S, (L select (_forEachIndex % (count L)))] call Zen_GiveLoadout; \ + } forEach ([U] call Zen_ConvertToObjectArray); + +#define ZEN_FMW_Code_Insertion(U, V, S, E) \ + _Zen_Vehicle = [S, V, (if (V isKindOf "Air") then {40} else {0})] call Zen_SpawnVehicle; \ + 0 = [_Zen_Vehicle] call Zen_SpawnVehicleCrew; \ + 0 = [U, _Zen_Vehicle] call Zen_MoveInVehicle; \ + 0 = [_Zen_Vehicle, [E, S], U] spawn Zen_OrderInsertion; + +#define ZEN_FMW_Code_InsertionPatrol(G, T, S, M) \ + _Zen_Vehicle = [S, T] call Zen_SpawnVehicle; \ + 0 = [_Zen_Vehicle] call Zen_SpawnVehicleCrew; \ + 0 = [G, _Zen_Vehicle] call Zen_MoveInVehicle; \ + 0 = [_Zen_Vehicle, [([M] call Zen_FindGroundPosition), _Zen_HeliStart], G, "normal", 40, "fastrope", true] spawn Zen_OrderInsertion; \ + 0 = [G, M] spawn { \ + waitUntil { \ + sleep 5; \ + ([_this select 0] call Zen_AreNotInVehicle) \ + }; \ + 0 = [_this select 0, _this select 1] spawn Zen_OrderInfantryPatrol; \ + }; + +#define ZEN_FMW_Code_SpawnMarker(M, N, S) \ + _Zen_GrpsArray = []; \ + for "_Z" from 1 to N do { \ + _Zen_Pos = [ M ] call Zen_FindGroundPosition; \ + _Zen_Group = [_Zen_Pos, S, "infantry", [4,6]] call Zen_SpawnInfantry; \ + _Zen_GrpsArray pushBack _Zen_Group; \ + }; \ + 0 = [_Zen_GrpsArray, S, ZEN_FMW_Loadout_StdInfantryPreset, false] call Zen_GiveLoadout; \ + 0 = [_Zen_GrpsArray, M] spawn Zen_OrderInfantryPatrol; + +#define ZEN_FMW_Code_SpawnPoint(C, D, N, S) \ + _Zen_GrpsArray = []; \ + for "_Z" from 1 to N do { \ + _Zen_Pos = [C, [0, D]] call Zen_FindGroundPosition; \ + _Zen_Group = [_Zen_Pos, S, "infantry", [4,6]] call Zen_SpawnInfantry; \ + _Zen_GrpsArray pushBack _Zen_Group; \ + }; \ + 0 = [_Zen_GrpsArray, S, ZEN_FMW_Loadout_StdInfantryPreset, false] call Zen_GiveLoadout; \ + 0 = [_Zen_GrpsArray, C, [0, D]] spawn Zen_OrderInfantryPatrol; + +#define ZEN_FMW_Code_SpawnPointBehind(START, END, MIND, MAXD, N, S) \ + _Zen_DirToSpawn = [START, END] call Zen_FindDirection; \ + _Zen_GrpsArray = []; \ + for "_i" from 1 to N do { \ + _Zen_SpawnPos = [END, [MIND, MAXD], 0, 1, 0, [_Zen_DirToSpawn - 90, _Zen_DirToSpawn + 90, "trig"]] call Zen_FindGroundPosition; \ + _Zen_Group = [_Zen_SpawnPos, S, "infantry", [4, 6]] call Zen_SpawnInfantry; \ + _Zen_GrpsArray pushBack _Zen_Group; \ + }; \ + 0 = [_Zen_GrpsArray, S, ZEN_FMW_Loadout_StdInfantryPreset, false] call Zen_GiveLoadout; \ + 0 = [_Zen_GrpsArray, END, [1, MAXD]] spawn Zen_OrderInfantryPatrol; \ + _Zen_DirToSpawn = nil; + +#define ZEN_FMW_Code_WaitDistanceGreater(A, B, D) \ + waitUntil { \ + sleep 2; \ + (([A, B] call Zen_Find2dDistance) > D) \ + }; + +#define ZEN_FMW_Code_WaitDistanceLess(A, B, D) \ + waitUntil { \ + sleep 2; \ + (([A, B] call Zen_Find2dDistance) < D) \ + }; + +#define ZEN_FMW_MP_REAll(F, A, I) \ + A I (missionNamespace getVariable F); \ + if (isMultiplayer) then { \ + Zen_MP_Closure_Packet = [F, A]; \ + publicVariable "Zen_MP_Closure_Packet"; \ + }; + +#define ZEN_FMW_MP_REClient(F, A, I, O) \ + if (local O) then { \ + A I (missionNamespace getVariable F); \ + } else { \ + if (isMultiplayer) then { \ + Zen_MP_Closure_Packet = [F, A]; \ + (owner O) publicVariableClient "Zen_MP_Closure_Packet"; \ + }; \ + }; + +#define ZEN_FMW_MP_RENonDedicated(F, A, I) \ + if (isMultiplayer) then { \ + Zen_MP_Closure_Packet = [F, A]; \ + publicVariable "Zen_MP_Closure_Packet"; \ + }; \ + if !(isDedicated) then { \ + A I (missionNamespace getVariable F); \ + }; + +#define ZEN_FMW_MP_REServerOnly(F, A, I) \ + if (isServer) then { \ + A I (missionNamespace getVariable F); \ + } else { \ + if (isMultiplayer) then { \ + Zen_MP_Closure_Packet = [F, A]; \ + publicVariableServer "Zen_MP_Closure_Packet"; \ + }; \ + }; + +#define ZEN_FMW_Math_DistLess2D(A, B, D) (([A, B] call Zen_Find2dDistance) < D) +#define ZEN_FMW_Math_DistGreater3D(A, B, D) ((([A] call Zen_ConvertToPosition) distance ([B] call Zen_ConvertToPosition)) > D) +#define ZEN_FMW_Math_DistGreater2D(A, B, D) (([A, B] call Zen_Find2dDistance) > D) +#define ZEN_FMW_Math_DistLess3D(A, B, D) ((([A] call Zen_ConvertToPosition) distance ([B] call Zen_ConvertToPosition)) < D) +#define ZEN_FMW_Math_RandomPoint(C, R) ([C, random R, random 360] call Zen_ExtendPosition) +#define ZEN_FMW_Math_RandomPointMin(C, S, E) ([C, S + random abs (E - S), random 360] call Zen_ExtendPosition) + +#define ZEN_FMW_Math_TerrainParallelCart(P, I) \ + _Zen_3dGradPolar = [1, [P] call Zen_FindTerrainGradient, 90 - ([P] call Zen_FindTerrainSlope)]; \ + I = ZEN_STD_Math_VectPolarCart(_Zen_3dGradPolar); + +#define ZEN_FMW_Math_TerrainGradientCart(P, I) \ + _Zen_2dGradCyl = [tan ([P] call Zen_FindTerrainSlope), [P] call Zen_FindTerrainGradient, 0]; \ + I = ZEN_STD_Math_VectCylCart(_Zen_2dGradCyl); + +#define ZEN_FMW_OBJ_DeleteDead(D) \ + { \ + _Zen_DeadUnit = _x; \ + _Zen_Delete = true; \ + { \ + if (isPlayer _x) then { \ + if ((_x distanceSqr _Zen_DeadUnit) < D*D) then { \ + _Zen_Delete = false; \ + }; \ + }; \ + } forEach allUnits; \ + if (_Zen_Delete) then { \ + deleteVehicle _x; \ + }; \ + } forEach allDead; + +#define ZEN_FMW_ZAS_ArrayLength {if (count (_this select 0) < count (_this select 1)) exitWith {-1}; (if (count (_this select 0) == count (_this select 1)) then {0} else {1})} +#define ZEN_FMW_ZAS_AlphaNumeric ({_2a = toArray (_this select 1); _c = 0; {if (_x < (_2a select _forEachIndex)) exitWith {_c = -1}; if (_x > (_2a select _forEachIndex)) exitWith {_c = 1};} forEach (toArray (_this select 0)); (_c)}) +#define ZEN_FMW_ZAS_DistFarNear(C) (compile format ["if ((_this select 0) distance %1 > (_this select 1) distance %1) exitWith {-1}; (if ((_this select 0) distance %1 == (_this select 1) distance %1) then {0} else {1})", C]) +#define ZEN_FMW_ZAS_DistNearFar(C) (compile format ["if ((_this select 0) distance %1 < (_this select 1) distance %1) exitWith {-1}; (if ((_this select 0) distance %1 == (_this select 1) distance %1) then {0} else {1})", C]) +#define ZEN_FMW_ZAS_IntInArray(I) (compile format["if (((_this select 0) select %1) < ((_this select 1) select %1)) exitWith {-1}; (if (((_this select 0) select %1) == ((_this select 1) select %1)) then {0} else {1})", I]) +#define ZEN_FMW_ZAS_StringLength {if (count toArray (_this select 0) < count toArray (_this select 1)) exitWith {-1}; (if (count toArray (_this select 0) == count toArray (_this select 1)) then {0} else {1})} + +#define ZEN_FMW_ZAF_NotString(S) (compile format ["(if (typeName _this == 'STRING') then {!(['%1', _this] call Zen_StringIsInString)} else {false})", S]) +#define ZEN_FMW_ZAF_String(S) (compile format ["(if (typeName _this == 'STRING') then {(['%1', _this] call Zen_StringIsInString)} else {false})", S]) +#define ZEN_FMW_ZAF_Type(T) (compile format ["((toLower typeName _this) == '%1')", (toLower T)]) + +#define ZEN_FMW_ZFGP_Beach 1, [3,50], 0, 0, 0, [2,30], [1,10], 0, [1,10,10] +#define ZEN_FMW_ZFGP_DeepSea 2, 0, 0, 0, 0, 0, 0, 0, [1, -50] +#define ZEN_FMW_ZFGP_Flat 1, 0, 0, 0, 0, 0, [1,10] +#define ZEN_FMW_ZFGP_Forest 1, [3,100], 0, [1,0,20], 0, [1,50], 0, [2,[4, -1, -1], 20] +#define ZEN_FMW_ZFGP_Hill 1, 0, 0, 0, 0, [1,25], [2,20], 0, [2,25,10] +#define ZEN_FMW_ZFGP_LandingZone 1, [1,100], 0, [1,0,20], 0, [1,25], [1,20], [1,[0, 1, -1], 20] +#define ZEN_FMW_ZFGP_NotForest 1, 0, 0, 0, 0, 0, 0, [1,[1, -1, -1], 20] +#define ZEN_FMW_ZFGP_Urban 1, [2, 0], 0, [2,1,25], 0, [1,100], 0, [1,[1,-1,-1], 20] + +#define ZEN_FMW_Loadout_DefaultPreset (["Rifleman", "AT Rifleman", "Assistant AA", "Assistant AT", "Assistant AR", "Team Leader", "Squad Leader", "Grenadier", "Auto Rifleman", "Marksman", "Medic", "AA Specialist", "AT Specialist", "Sapper", "Miner", "EOD Specialist"]) +#define ZEN_FMW_Loadout_StdInfantryPreset (["Rifleman", "Rifleman", "Rifleman", "AT Rifleman", "Assistant AR", "Team Leader", "Squad Leader", "Grenadier", "Grenadier", "Auto Rifleman", "Auto Rifleman", "Marksman", "Medic"]) diff --git a/Zen_FrameworkFunctions/Zen_DialogSystem/Zen_GetControlData.sqf b/Zen_FrameworkFunctions/Zen_DialogSystem/Zen_GetControlData.sqf new file mode 100644 index 0000000..a36e890 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DialogSystem/Zen_GetControlData.sqf @@ -0,0 +1,27 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_FrameworkLibrary.sqf" +#include "Zen_StandardLibrary.sqf" + +_Zen_stack_Trace = ["Zen_GetControlData", _this] call Zen_StackAdd; +private ["_controlID", "_index", "_controlData"]; + +if !([_this, [["STRING"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + ([]) +}; + +_controlID = _this select 0; + +_index = [Zen_Control_Classes_Global, _controlID, 0] call Zen_ArrayGetNestedIndex; +if (count _index == 0) exitWith { + ZEN_FMW_Code_ErrorExitValue("Zen_GetControlData", "Invalid control class given", []) +}; + +_index = _index select 0; +_controlData = Zen_Control_Classes_Global select _index; + +call Zen_StackRemove; +(+_controlData) diff --git a/Zen_FrameworkFunctions/Zen_DialogSystem/Zen_GetDialogControls.sqf b/Zen_FrameworkFunctions/Zen_DialogSystem/Zen_GetDialogControls.sqf new file mode 100644 index 0000000..7d62cd9 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DialogSystem/Zen_GetDialogControls.sqf @@ -0,0 +1,28 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_FrameworkLibrary.sqf" +#include "Zen_StandardLibrary.sqf" + +_Zen_stack_Trace = ["Zen_GetDialogControls", _this] call Zen_StackAdd; +private ["_dialogID", "_index", "_dialogData", "_controlArray"]; + +if !([_this, [["STRING"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; + ([]) +}; + +_dialogID = _this select 0; + +_index = [Zen_Dialog_Classes_Global, _dialogID, 0] call Zen_ArrayGetNestedIndex; +if (count _index == 0) exitWith { + ZEN_FMW_Code_ErrorExitValue("Zen_GetDialogControls", "Invalid dialog class given", ([])) +}; + +_index = _index select 0; +_dialogData = Zen_Dialog_Classes_Global select _index; +_controlArray = _dialogData select 1; + +call Zen_StackRemove; +(+_controlArray) diff --git a/Zen_FrameworkFunctions/Zen_DialogSystem/Zen_InvokeDialog.sqf b/Zen_FrameworkFunctions/Zen_DialogSystem/Zen_InvokeDialog.sqf new file mode 100644 index 0000000..210bc86 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DialogSystem/Zen_InvokeDialog.sqf @@ -0,0 +1,92 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +disableSerialization; +#include "Zen_FrameworkLibrary.sqf" +#include "Zen_StandardLibrary.sqf" + +_Zen_stack_Trace = ["Zen_InvokeDialog", _this] call Zen_StackAdd; +private ["_dialogID", "_controlsArray", "_controlTypes", "_dataTypes", "_Zen_Dialog_Object_Local", "_idcCur", "_display", "_controlData", "_controlType", "_controlBlocks", "_controlInstanClass", "_control", "_blockID", "_data"]; + +if !([_this, [["STRING"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_dialogID = _this select 0; +_controlsArray = [_dialogID] call Zen_GetDialogControls; + +_controlTypes = ["Button","List","Text"]; +_dataTypes = ["LinksTo","Text","TextColor","Position","Size","Function","List","ListData","Data","FontSize"]; +_Zen_Dialog_Object_Local = []; + +_idcCur = 7600; +#define NEXT_IDC _idcCur]; _idcCur = _idcCur + 1; +#define GRID_DIVISION 0.025 +#define COLOR_STEP 255 + +(findDisplay 76) closeDisplay 0; +closeDialog 0; + +createDialog "Zen_Dialog"; +_display = (findDisplay 46) createDisplay "Zen_Dialog"; +{ + _controlID = _x; + _controlData = [_controlID] call Zen_GetControlData; + _controlType = _controlData select 1; + _controlBlocks = _controlData select 2; + + _controlInstanClass = switch (toUpper _controlType) do { + case "BUTTON": {("RSCButton")}; + case "LIST": {("RscListBox")}; + case "TEXT": {("RscText")}; + default {("")}; + }; + + if (_controlInstanClass != "") then { + _control = _display ctrlCreate [_controlInstanClass, NEXT_IDC + _Zen_Dialog_Object_Local pushBack [_controlID, _control]; + { + _blockID = _x select 0; + _data = _x select 1; + switch (toUpper _blockID) do { + case "TEXT": { + _control ctrlSetText _data; + }; + case "FONTSIZE": { + _control ctrlSetFontHeight _data; + }; + case "TEXTCOLOR": { + _control ctrlSetTextColor [(_data select 0) / COLOR_STEP, (_data select 1) / COLOR_STEP, (_data select 2) / COLOR_STEP, (_data select 3) / COLOR_STEP]; + }; + case "POSITION": { + _control ctrlSetPosition [(_data select 0) * GRID_DIVISION, (_data select 1) * GRID_DIVISION]; + _control ctrlCommit 0; + }; + case "SIZE": { + _oldPos = ctrlPosition _control; + _control ctrlSetPosition (([_oldPos, 0, 1] call Zen_ArrayGetIndexedSlice) + [(_data select 0) * GRID_DIVISION, (_data select 1) * GRID_DIVISION]); + }; + case "FUNCTION": { + _control buttonSetAction (format ["['%1'] spawn Zen_ExecuteEvent", _controlID]); + }; + case "LIST": { + { + _control lbAdd _x; + } forEach _data; + }; + default {}; + }; + } forEach _controlBlocks; + + if (_controlInstanClass in ["RscListBox"]) then { + _control lbSetCurSel 0; + }; + _control ctrlCommit 0; + }; +} forEach _controlsArray; + +uiNamespace setVariable ["Zen_Dialog_Object_Local", [_dialogID, _Zen_Dialog_Object_Local]]; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_DialogSystem/Zen_LinkControl.sqf b/Zen_FrameworkFunctions/Zen_DialogSystem/Zen_LinkControl.sqf new file mode 100644 index 0000000..c8695fa --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DialogSystem/Zen_LinkControl.sqf @@ -0,0 +1,31 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_FrameworkLibrary.sqf" +#include "Zen_StandardLibrary.sqf" + +_Zen_stack_Trace = ["Zen_LinkControl", _this] call Zen_StackAdd; +private ["_controlID", "_dialogID", "_index", "_dialogData", "_controlArray"]; + +if !([_this, [["STRING"], ["STRING"]], [], 2] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_dialogID = _this select 0; +_controlID = _this select 1; + +_index = [Zen_Dialog_Classes_Global, _dialogID, 0] call Zen_ArrayGetNestedIndex; +if (count _index == 0) exitWith { + ZEN_FMW_Code_ErrorExitVoid("Zen_LinkControl", "Invalid dialog class given") +}; + +_index = _index select 0; +_dialogData = Zen_Dialog_Classes_Global select _index; + +_controlArray = _dialogData select 1; +_controlArray pushBack _controlID; +publicVariable "Zen_Dialog_Classes_Global"; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_DialogSystem/Zen_StandardLibrary.sqf b/Zen_FrameworkFunctions/Zen_DialogSystem/Zen_StandardLibrary.sqf new file mode 100644 index 0000000..4a13a58 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DialogSystem/Zen_StandardLibrary.sqf @@ -0,0 +1,155 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#define ZEN_STD_Array_LastElement(A) (A select (count A - 1)) +#define ZEN_STD_Array_RandIndex(A) (floor random count A) +#define ZEN_STD_Array_RandElement(A) (A select (floor random count A)) +#define ZEN_STD_Array_UnorderedRemove(A, I) \ + A set [I, A select (count A - 1)]; \ + A resize (count A - 1); + +#define ZEN_STD_Code_WaitScript(S) \ + waitUntil { \ + sleep 1; \ + (scriptDone S) \ + }; + +#define ZEN_STD_Code_SleepFrames(F) sleep (F / diag_fps); + +#define ZEN_STD_Code_SwapVars(X, Y) \ + _Zen_tempVar = X; \ + X = Y; \ + Y = _Zen_tempVar; \ + _Zen_tempVar = nil; + +#define ZEN_STD_Math_RandNegativePositive() (if (random 1 > 0.5) then {1} else {-1}) + +#define ZEN_STD_Math_MarkerArea(M) \ + (if (toLower markerShape M == "ellipse") then { \ + (((markerSize M) select 0) * ((markerSize M) select 1) * pi) \ + } else { \ + (((markerSize M) select 0) * ((markerSize M) select 1) * 4) \ + }) + +#define ZEN_STD_Math_VectCartCyl(V) ([(vectorMagnitude [(V select 0), (V select 1), 0]), (V select 1) atan2 (V select 0), (V select 2)]) +#define ZEN_STD_Math_VectCartPolar(V) ([(vectorMagnitude V), (V select 1) atan2 (V select 0), acos ((V select 2) / (vectorMagnitude V))]) + +#define ZEN_STD_Math_VectCylCart(V) ([(V select 0) * cos (V select 1), (V select 0) * sin (V select 1), (V select 2)]) +#define ZEN_STD_Math_VectCylPolar(V) ([(vectorMagnitude [(V select 0), 0, (V select 2)]), (V select 1), (V select 0) atan2 (V select 2)]) + +#define ZEN_STD_Math_VectPolarCart(V) ([(V select 0) * cos (V select 1) * sin (V select 2), (V select 0) * sin (V select 1) * sin (V select 2), (V select 0) * cos (V select 2)]) +#define ZEN_STD_Math_VectPolarCyl(V) ([(V select 0) * sin (V select 2), (V select 1), (V select 0) * cos (V select 2)]) + +#define ZEN_STD_Math_VectRotateX(P, A) ([(P select 0), (P select 1) * cos A + (P select 2) * sin A, - (P select 1) * sin A + (P select 2) * cos A]) +#define ZEN_STD_Math_VectRotateY(P, A) ([(P select 0) * cos A - (P select 2) * sin A, (P select 1), (P select 0) * sin A + (P select 2) * cos A]) +#define ZEN_STD_Math_VectRotateZ(P, A) ([(P select 0) * cos A + (P select 1) * sin A, - (P select 0) * sin A + (P select 1) * cos A, (P select 2)]) + +#define ZEN_STD_Math_VectTransform(P, X, Y, Z) ([(P select 0) + X, (P select 1) + Y, (P select 2) + Z]) + +#define ZEN_STD_OBJ_ATLPositionZ(O) ((getPosATL O) select 2) +#define ZEN_STD_OBJ_ASLPositionZ(O) ((getPosASL O) select 2) +#define ZEN_STD_OBJ_BBX(O) abs ((((boundingBoxReal O) select 0) select 0) - (((boundingBoxReal O) select 1) select 0)) +#define ZEN_STD_OBJ_BBY(O) abs ((((boundingBoxReal O) select 0) select 1) - (((boundingBoxReal O) select 1) select 1)) +#define ZEN_STD_OBJ_BBZ(O) abs ((((boundingBoxReal O) select 0) select 2) - (((boundingBoxReal O) select 1) select 2)) + +#define ZEN_STD_OBJ_AnimateDoors(V, C) \ + { \ + V animateDoor [(configName _x), C]; \ + } forEach ("((toLower (getText (_x >> 'source'))) == 'door')" configClasses (configFile >> "CfgVehicles" >> (typeOf V) >> "AnimationSources")); + +#define ZEN_STD_OBJ_CountBuildingPos(V, B) \ + V = 0; \ + for "_i" from 0 to 100 do { \ + if ((B buildingPos V) isEqualTo [0,0,0]) exitWith {}; \ + V = V + 1; \ + }; \ + V = V - 1; + +#define ZEN_STD_OBJ_CountCargoSeats(V) (getNumber (configFile >> "CfgVehicles" >> (typeOf V) >> "transportSoldier")) +#define ZEN_STD_OBJ_DeleteVehCrew(V) \ + { \ + deleteVehicle _x; \ + } forEach (crew V + [V]); + +#define ZEN_STD_OBJ_MakePOW(O) \ + O setCaptive true; \ + O disableAI "move"; \ + O setUnitPos "UP"; \ + removeAllWeapons O; \ + removeBackpack O; \ + removeGoggles O; \ + removeHeadgear O; + +#define ZEN_STD_OBJ_OrderGetOut(U, V) \ + U orderGetIn false; \ + { \ + unassignVehicle _x; \ + _x leaveVehicle V; \ + } forEach U; + +#define ZEN_STD_OBJ_OrderGetIn(U, V) \ + { \ + _x assignAsCargo V; \ + } forEach U; \ + U orderGetIn true; + +#define ZEN_STD_OBJ_OrientAircraft(O, P, S) \ + _Zen_vDirToLZ = ((getPosATL O) vectorFromTo P); \ + _Zen_dirToLZ = ZEN_STD_Math_VectCartCyl(_Zen_vDirToLZ) select 1; \ + sleep (5 / diag_fps); \ + O setDir (90 - _Zen_dirToLZ); \ + O setVelocity [S * cos _Zen_dirToLZ, S * sin _Zen_dirToLZ, 0]; + +#define ZEN_STD_OBJ_ParachuteInsertion(O, P, H) \ + _Zen_dir = random 360; \ + { \ + _x setPosATL (P vectorAdd [50 * _forEachIndex * cos _Zen_dir, 50 * _forEachIndex * sin _Zen_dir, H]); \ + removeBackpackGlobal _x; \ + _x addBackpackGlobal "b_parachute"; \ + } forEach O; + +#define ZEN_STD_OBJ_TransformATL(O, X, Y, Z) O setPosATL [((getPosATL O) select 0) + X, ((getPosATL O) select 1) + Y, ((getPosATL O) select 2) + Z]; + +#define ZEN_STD_Parse_GetArgumentDefault(V, I, D) \ + if (count _this > I) then { \ + V = _this select I; \ + } else { \ + V = D; \ + }; + +#define ZEN_STD_Parse_GetSetArgumentDefault(V, I, D, R) \ + if (count _this > I) then { \ + V = _this select I; \ + } else { \ + V = D; \ + }; \ + _this set [I, R]; + +#define ZEN_STD_Parse_GetSetArgumentOptional(V, I, D, R) \ + if (count _this > I) then { \ + V = _this select I; \ + } else { \ + V = D; \ + _this set [I, R]; \ + }; + +#define ZEN_STD_Parse_GetArgument(V, I) \ + if (count _this > I) then { \ + V = _this select I; \ + }; + +#define ZEN_STD_Parse_ToArray(X) \ + if (typeName X != "ARRAY") then { \ + X = [X]; \ + }; + +#define ZEN_STD_Parse_ToString(X) \ + if (typeName X != "STRING") then { \ + X = str X; \ + }; + +#define ZEN_STD_Parse_ToStringLower(X) \ + if (typeName X != "STRING") then { \ + X = toLower str X; \ + }; diff --git a/Zen_FrameworkFunctions/Zen_DialogSystem/Zen_UpdateControl.sqf b/Zen_FrameworkFunctions/Zen_DialogSystem/Zen_UpdateControl.sqf new file mode 100644 index 0000000..7483071 --- /dev/null +++ b/Zen_FrameworkFunctions/Zen_DialogSystem/Zen_UpdateControl.sqf @@ -0,0 +1,58 @@ +// This file is part of Zenophon's ArmA 3 Co-op Mission Framework +// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) +// See Legal.txt + +#include "Zen_FrameworkLibrary.sqf" +#include "Zen_StandardLibrary.sqf" + +_Zen_stack_Trace = ["Zen_UpdateControl", _this] call Zen_StackAdd; +private ["_controlType", "_ID", "_dataTypes", "_dataArray", "_type", "_data"]; + +if !([_this, [["STRING"], ["ARRAY"], ["ARRAY"], ["ARRAY"], ["ARRAY"], ["ARRAY"], ["ARRAY"], ["ARRAY"], ["ARRAY"], ["ARRAY"], ["ARRAY"], ["ARRAY"]], [], 1] call Zen_CheckArguments) exitWith { + call Zen_StackRemove; +}; + +_controlID = _this select 0; +_controlTypes = ["Button", "List","Text"]; +_dataTypes = ["LinksTo","Text","TextColor","Position","Size","Function","List","ListData","Data","FontSize"]; + +_index = [Zen_Control_Classes_Global, _controlID, 0] call Zen_ArrayGetNestedIndex; +if (count _index == 0) exitWith { + ZEN_FMW_Code_ErrorExitVoid("Zen_UpdateControl", "Invalid control class given") +}; + +_index = _index select 0; +_controlData = Zen_Control_Classes_Global select _index; +_controlType = _controlData select 1; +_dataArray = _controlData select 2; + +{ + _type = _x select 0; + _data = _x select 1; + if ((toUpper _type) isEqualTo "TYPE") then { + if ([_data, _controlTypes] call Zen_ValueIsInArray) then { + _controlType = _data; + } else { + ZEN_FMW_Code_Error("Zen_UpdateControl", "Invalid control type given.") + }; + } else { + _index = [_dataArray, _type, 0] call Zen_ArrayGetNestedIndex; + if (count _index > 0) then { + _index = _index select 0; + _dataBlock = _dataArray select _index; + _dataBlock set [1, _data]; + } else { + if ([_type, _dataTypes] call Zen_ValueIsInArray) then { + _dataArray pushBack _x; + } else { + ZEN_FMW_Code_Error("Zen_UpdateControl", "Invalid control property identifier given.") + }; + }; + }; +} forEach ([_this, 1] call Zen_ArrayGetIndexedSlice); + +_controlData set [1, _controlType]; +publicVariable "Zen_Control_Classes_Global"; + +call Zen_StackRemove; +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_InitHeader.sqf b/Zen_FrameworkFunctions/Zen_InitHeader.sqf index 7587adf..937d7ed 100644 --- a/Zen_FrameworkFunctions/Zen_InitHeader.sqf +++ b/Zen_FrameworkFunctions/Zen_InitHeader.sqf @@ -2,7 +2,7 @@ // This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) // See Legal.txt -// This folder contains framework source code version 8/5/15 +// This folder contains framework source code version 9/9/15 #include "Zen_StandardLibrary.sqf" #include "Zen_FrameworkLibrary.sqf" @@ -11,10 +11,11 @@ _Zen_Is_JIP = false; if (!isServer && {isNull player}) then { _Zen_Is_JIP = true; waitUntil { - (!(isNull player) && {player == player}) + (!(isNull player) && {local player}) }; }; call compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DataFunctions\Zen_DataFunctionsCompile.sqf"; +call compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_DialogSystem\Zen_DialogSystemCompile.sqf"; call compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_FireSupportSystem\Zen_FireSupportSystemCompile.sqf"; call compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_LoadoutFunctions\Zen_LoadoutFunctionsCompile.sqf"; call compileFinal preprocessFileLineNumbers "Zen_FrameworkFunctions\Zen_MathFunctions\Zen_MathFunctionsCompile.sqf"; diff --git a/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_AddLoadoutDialog.sqf b/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_AddLoadoutDialog.sqf index fc2fd7b..0e7b114 100644 --- a/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_AddLoadoutDialog.sqf +++ b/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_AddLoadoutDialog.sqf @@ -28,9 +28,19 @@ if (typeName _objects != "ARRAY") then { _objects = [_objects]; }; +_dialogID = [] call Zen_CreateDialog; + +_controlCancel = ["Button", ["Text", "Cancel"], ["Position", [35, 2]], ["Size", [5,2]], ["Function", "Zen_CloseDialog"]] call Zen_CreateControl; +_controlList = ["List", ["List", _kits], ["ListData", _kits], ["Position", [0, 0]], ["Size", [35,40]]] call Zen_CreateControl; +_controlOK = ["Button", ["Text", "OK"], ["Position", [35, 0]], ["Size", [5,2]], ["Function", "Zen_LoadoutDialogEquip"], ["LinksTo", [_controlList]]] call Zen_CreateControl; + +0 = [_dialogID, _controlOK] call Zen_LinkControl; +0 = [_dialogID, _controlCancel] call Zen_LinkControl; +0 = [_dialogID, _controlList] call Zen_LinkControl; + if (!isDedicated && hasInterface) then { { - _id = _x addAction ["Select Loadout", Zen_ShowLoadoutDialog, _kits, 1, false, true, "", "(alive _target && {((_target distance _this) < (1 + (((boundingBoxReal _target) select 0) distance ((boundingBoxReal _target) select 1)) / 2))})"]; + _id = _x addAction ["Select Loadout", Zen_ShowLoadoutDialog, _dialogID, 1, false, true, "", "(alive _target && {((_target distance _this) < (1 + (((boundingBoxReal _target) select 0) distance ((boundingBoxReal _target) select 1)) / 2))})"]; Zen_Loadout_Action_Array_Local pushBack [_id, _maxUses, 0]; } forEach _objects; }; diff --git a/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_LoadoutDialog.hpp b/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_LoadoutDialog.hpp deleted file mode 100644 index d7461b0..0000000 --- a/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_LoadoutDialog.hpp +++ /dev/null @@ -1,103 +0,0 @@ -// This file is part of Zenophon's ArmA 3 Co-op Mission Framework -// This file is released under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) -// See Legal.txt - -class Zen_SimpleDialog { - type = 0; - style = 0; - sizeEx = 0.03; - font = "puristaMedium"; - text = ""; - colorText[] = {0, 0, 0, 1}; - colorBackground[] = {0, 0, 0, 0.75}; -}; - -class Zen_SimpleButton { - type = 1; - style = "0x02 + 0x100"; - w = 0.1; - h = 0.05; - offsetX = 0.003; - offsetY = 0.003; - offsetPressedX = 0.002; - offsetPressedY = 0.002; - sizeEx = 0.05; - borderSize = 0; - font = "puristaMedium"; - colorText[] = {0.5, 0.5, 0.5, 1}; - colorDisabled[] = {0.4, 0.4, 0.4, 1}; - colorBackground[] = {1, 0.5, 0, 0.5}; - colorBackgroundActive[] = {1, 0.5, 0, 1}; - colorBackgroundDisabled[] = {0.9, 0.9, 0.9, 1}; - colorFocused[] = {1, 0.5, 0, 1}; - colorShadow[] = {0.05, 0, 0.05, 1}; - colorBorder[] = {0.05, 0, 0.05, 1}; - soundEnter[] = {"\a3\ui_f\data\Sound\RscButton\soundClick.wss", 0.1, 1}; - soundPush[] = {"\a3\ui_f\data\Sound\RscButton\soundClick.wss", 0.1, 1}; - soundClick[] = {"\a3\ui_f\data\Sound\RscButton\soundClick.wss", 0.1, 1}; - soundEscape[] = {"\a3\ui_f\data\Sound\RscButton\soundClick.wss", 0.1, 1}; -}; - -class Zen_SimpleList { - type = 5; - style = "0 + 0x10"; - rowHeight = 0.05; - sizeEx = 0.05; - font = "puristaMedium"; - colorText[] = {0.5, 0.5, 0.5, 1}; - colorSelect[] = {0.9, 0.9, 0.9, 1}; - colorDisabled[] = {0.8, 0.8, 0.8, 1}; - class ListScrollBar { - color[] = {0.5, 0.5, 0.5, 1}; - colorActive[] = {0.9, 0.9, 0.9, 1}; - colorDisabled[] = {0.8, 0.8, 0.8, 1}; - shadow = 0; - thumb = "\a3\ui_f\data\gui\cfg\Scrollbar\thumb_ca.paa"; - arrowFull = "\a3\ui_f\data\gui\cfg\Scrollbar\arrowfull_ca.paa"; - arrowEmpty = "\a3\ui_f\data\gui\cfg\Scrollbar\arrowempty_ca.paa"; - border = "\a3\ui_f\data\gui\cfg\Scrollbar\border_ca.paa"; - }; - autoScrollRewind = 0; - autoScrollDelay = 1; - autoScrollSpeed = -1; - maxHistoryDelay = 1.0; - soundSelect[] = {}; -}; - -class Zen_LoadoutsDialog { - idd = 4000; - class controls { - class Zen_LoadoutsDialogBox : Zen_SimpleDialog { - idc = 4001; - x = 0; - y = 0; - w = 0.8; - h = 0.9; - }; - class Zen_DialogList : Zen_SimpleList { - idc = 4002; - x = 0.1; - y = 0.1; - w = 0.5; - h = 0.7; - onlbdblclick = "[] spawn Zen_LoadoutDialogEquip"; - }; - class Zen_OkButton : Zen_SimpleButton { - idc = 4003; - x = 0.65; - y = 0.3; - // text = "OK"; - text = $STR_disp_ok; - onbuttonclick = "[] spawn Zen_LoadoutDialogEquip"; - default = 1; - }; - class Zen_CancelButton : Zen_SimpleButton { - idc = 4004; - x = 0.65; - y = 0.4; - // text = "Cancel"; - text = $STR_disp_cancel; - onbuttonclick = "closeDialog 4000"; - }; - }; -}; diff --git a/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_LoadoutDialogEquip.sqf b/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_LoadoutDialogEquip.sqf index 13f0ec4..e8cabc3 100644 --- a/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_LoadoutDialogEquip.sqf +++ b/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_LoadoutDialogEquip.sqf @@ -5,19 +5,14 @@ _Zen_stack_Trace = ["Zen_LoadoutDialogEquip", _this] call Zen_StackAdd; private ["_kit", "_unit", "_object", "_id", "_index", "_maxCount", "_curCount", "_loadoutData"]; -_kit = lbData [4002, lbCurSel 4002]; - -if (_kit == "") exitWith { - hint "No loadout selected"; - call Zen_StackRemove; -}; - +_kit = _this select 0; _object = player getVariable "Zen_LoadoutsDialogObject"; -_unit = _object getVariable "Zen_LoadoutsDialogUser"; -_id = _object getVariable "Zen_LoadoutsDialogAction"; +_unit = player getVariable "Zen_LoadoutsDialogUser"; +_id = player getVariable "Zen_LoadoutsDialogAction"; player setVariable ["Zen_LoadoutsDialogObject", nil]; -_object setVariable ["Zen_LoadoutsDialogUser", nil]; +player setVariable ["Zen_LoadoutsDialogUser", nil]; +player setVariable ["Zen_LoadoutsDialogAction", nil]; _index = ([Zen_Loadout_Action_Array_Local, _id, 0] call Zen_ArrayGetNestedIndex) select 0; _maxCount = (Zen_Loadout_Action_Array_Local select _index) select 1; @@ -37,6 +32,6 @@ if (count _loadoutData > 0) then { 0 = [_unit, (side _unit), _kit] call Zen_GiveLoadout; }; -closeDialog 4000; +call Zen_CloseDialog; call Zen_StackRemove; if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_ShowLoadoutDialog.sqf b/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_ShowLoadoutDialog.sqf index 4ceaf7b..867caae 100644 --- a/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_ShowLoadoutDialog.sqf +++ b/Zen_FrameworkFunctions/Zen_LoadoutFunctions/Zen_ShowLoadoutDialog.sqf @@ -5,25 +5,20 @@ _Zen_stack_Trace = ["Zen_ShowLoadoutDialog", _this] call Zen_StackAdd; private ["_object", "_index", "_kitArray", "_user", "_id"]; -if !([_this, [["OBJECT"], ["OBJECT"], ["SCALAR"], ["ARRAY"]], [], 4] call Zen_CheckArguments) exitWith { +if !([_this, [["OBJECT"], ["OBJECT"], ["SCALAR"], ["STRING"]], [], 4] call Zen_CheckArguments) exitWith { call Zen_StackRemove; }; _object = _this select 0; _user = _this select 1; _id = _this select 2; -_kitArray = _this select 3; +_dialogID = _this select 3; -createDialog "Zen_LoadoutsDialog"; -{ - _index = ((findDisplay 4000) displayCtrl 4002) lbAdd _x; - ((findDisplay 4000) displayCtrl 4002) lbSetData [_index, _x]; -} forEach _kitArray; - -lbSetCurSel [4002, 0]; player setVariable ["Zen_LoadoutsDialogObject", _object]; -_object setVariable ["Zen_LoadoutsDialogAction", _id]; -_object setVariable ["Zen_LoadoutsDialogUser", _user]; +player setVariable ["Zen_LoadoutsDialogAction", _id]; +player setVariable ["Zen_LoadoutsDialogUser", _user]; + +0 = [_dialogID] spawn Zen_InvokeDialog; call Zen_StackRemove; -if (true) exitWith {}; \ No newline at end of file +if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_IsReady.sqf b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_IsReady.sqf index cff75cc..8119d48 100644 --- a/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_IsReady.sqf +++ b/Zen_FrameworkFunctions/Zen_ObjectFunctions/Zen_IsReady.sqf @@ -3,7 +3,7 @@ // See Legal.txt _Zen_stack_Trace = ["Zen_IsReady", _this] call Zen_StackAdd; -private ["_vehicle", "_isReady", "_crew"]; +private ["_vehicle", "_isReady", "_crew", "_driver", "_group", "_leader", "_leaderReady", "_groupDone"]; if !([_this, [["OBJECT"]], [], 1] call Zen_CheckArguments) exitWith { call Zen_StackRemove; @@ -12,14 +12,23 @@ if !([_this, [["OBJECT"]], [], 1] call Zen_CheckArguments) exitWith { _vehicle = _this select 0; -_isReady = true; -_crew = crew _vehicle - (assignedCargo _vehicle); +// _isReady = true; +// _crew = crew _vehicle - (assignedCargo _vehicle); -{ - if !(unitReady _x) exitWith { - _isReady = false; - }; -} forEach (_crew + [_vehicle]); +// commander +// effectiveCommander +_driver = driver _vehicle; +_group = group _driver; +_leader = leader _driver; +_leaderReady = if (!(isNull _leader) && {(alive _leader)}) then {(unitReady (leader _driver))} else {(unitReady _driver)};; +_groupDone = (currentWaypoint _group >= count waypoints _group); + +// { + // if !(unitReady _x) exitWith { + // _isReady = false; + // }; +// } forEach (_crew + [_vehicle]); call Zen_StackRemove; -(_isReady) +// (_isReady) +(_leaderReady && _groupDone) diff --git a/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderAircraftPatrol.sqf b/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderAircraftPatrol.sqf index f4d321c..2a14c17 100644 --- a/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderAircraftPatrol.sqf +++ b/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderAircraftPatrol.sqf @@ -6,55 +6,47 @@ #include "Zen_FrameworkLibrary.sqf" _Zen_stack_Trace = ["Zen_OrderAircraftPatrol", _this] call Zen_StackAdd; -private ["_vehicleArray", "_movecenter", "_blackList", "_maxx", "_speedMode", "_heliHeight", "_mpos", "_heliDirToLand", "_mposCorrected", "_vehDist", "_limitAngles", "_cleanupDead", "_crewGroupArray", "_crew"]; +private ["_vehicleArray", "_movecenters", "_blackList", "_speedMode", "_heliHeight", "_mpos", "_heliDirToLand", "_mposCorrected", "_vehDist", "_limitAnglesSet", "_cleanupDead", "_crewGroupArray", "_crew", "_center", "_index", "_behavior", "_positionFilterArgs"]; -if !([_this, [["ARRAY", "OBJECT"], ["ARRAY", "OBJECT", "GROUP", "STRING"], ["ARRAY", "SCALAR"], ["ARRAY", "SCALAR"], ["STRING"], ["SCALAR"], ["BOOL"]], [["OBJECT", "ARRAY"], [], ["STRING"], ["SCALAR"]], 2] call Zen_CheckArguments) exitWith { +if !([_this, [["VOID"], ["ARRAY", "OBJECT", "GROUP", "STRING"], ["ARRAY", "SCALAR"], ["ARRAY", "SCALAR"], ["STRING"], ["STRING"], ["SCALAR"], ["BOOL"]], [[], ["ARRAY", "OBJECT", "GROUP", "STRING", "SCALAR"], ["STRING", "ARRAY", "SCALAR"], ["SCALAR", "ARRAY"]], 2] call Zen_CheckArguments) exitWith { call Zen_StackRemove; }; _vehicleArray = [(_this select 0)] call Zen_ConvertToObjectArray; -_movecenter = _this select 1; +_movecenters = _this select 1; -if (typeName _vehicleArray != "ARRAY") then { - _vehicleArray = [_vehicleArray]; -}; - -_blackList = []; -_maxx = 1000; -_speedMode = "normal"; -_heliHeight = 75; -_limitAngles = [0, 360]; +ZEN_STD_Parse_GetArgumentDefault(_speedMode, 4, "limited") +ZEN_STD_Parse_GetArgumentDefault(_behavior, 5, "aware") +ZEN_STD_Parse_GetArgumentDefault(_heliHeight, 6, 75) +ZEN_STD_Parse_GetArgumentDefault(_cleanupDead, 7, false) -if !(typeName _movecenter == "String") then { +if !((typeName _movecenters == "ARRAY") && {typeName (_movecenters select 0) != "SCALAR"}) then { if (count _this > 2) then { - _maxx = _this select 2; - }; -} else { - if (markerShape _movecenter == "ICON") then { - _movecenter = [_movecenter] call Zen_ConvertToPosition; - if (count _this > 2) then { - _maxx = _this select 2; - }; + _positionFilterArgs = [_this select 2]; } else { - if (count _this > 2) then { - _blackList = _this select 2; + if (typeName _movecenters == "STRING") then { + _positionFilterArgs = [[]]; + if ((markerShape _movecenters) == "ICON") then { + _positionFilterArgs = [500]; + }; + } else { + _positionFilterArgs = [500]; }; }; -}; - -if (count _this > 3) then { - _limitAngles = _this select 3; -}; - -if (count _this > 4) then { - _speedMode = _this select 4; -}; -if (count _this > 5) then { - _heliHeight = _this select 5; + _movecenters = [_movecenters]; + ZEN_STD_Parse_GetArgumentDefault(_limitAnglesSet, 3, 0) + _limitAnglesSet = [_limitAnglesSet]; +} else { + _positionFilterArgs = _this select 2; + _limitAnglesSet = _this select 3; }; -ZEN_STD_Parse_GetArgumentDefault(_cleanupDead, 6, false) +{ + if ((typeName _x == "STRING") && {((markerShape _x) == "ICON")}) then { + _movecenters set [_forEachIndex, [_x] call Zen_ConvertToPosition]; + }; +} forEach _movecenters; _vehicleArray = [([_vehicleArray] call Zen_ConvertToObjectArray)] call Zen_ArrayRemoveDead; _crewGroupArray = []; @@ -65,19 +57,23 @@ _crewGroupArray = []; _mpos = [0,0,0]; _crewGroupArray pushBack (group driver _veh); - if (typeName _movecenter == "String") then { - _mpos = [_movecenter, 0,_blackList, 1, 0, _limitAngles] call Zen_FindGroundPosition; - } else { - _vehDist = [_veh, _movecenter] call Zen_Find2dDistance; - _mpos = [_movecenter, [0, _maxx], [], 1, 0, _limitAngles, 0, [1, _veh, _vehDist]] call Zen_FindGroundPosition; + #define CALC_POS \ + _index = ZEN_STD_Array_RandIndex(_movecenters); \ + _center = _movecenters select _index; \ + if (typeName _center == "STRING") then { \ + _mpos = [_center, 0,_positionFilterArgs select _index, 0, 0, _limitAnglesSet select _index] call Zen_FindGroundPosition; \ + } else { \ + _mpos = [_center, [0, _positionFilterArgs select _index], [], 0, 0, _limitAnglesSet select _index] call Zen_FindGroundPosition; \ }; + CALC_POS + _heliDirToLand = [_veh,_mpos] call Zen_FindDirection; _mposCorrected = [_mpos, 100, _heliDirToLand, "trig"] call Zen_ExtendPosition; _veh move _mposCorrected; _veh flyInHeight _heliHeight; - _veh setBehaviour "aware"; + _veh setBehaviour _behavior; _veh setCombatMode "Red"; _veh setSpeedMode _speedMode; } forEach _vehicleArray; @@ -106,17 +102,12 @@ while {(count _vehicleArray != 0)} do { } else { if ([_veh] call Zen_IsReady) then { _mpos = [0,0,0]; - if (typeName _movecenter == "String") then { - _mpos = [_movecenter, 0,_blackList, 1, 0, _limitAngles] call Zen_FindGroundPosition; - } else { - _vehDist = [_veh, _movecenter] call Zen_Find2dDistance; - _mpos = [_movecenter, [0, _maxx], [], 1, 0, _limitAngles, 0, [1, _veh, _vehDist]] call Zen_FindGroundPosition; - }; + CALC_POS _mposCorrected = [_veh, _mpos, 100] call Zen_ExtendRay; _veh move _mposCorrected; _veh flyInHeight _heliHeight; - _veh setBehaviour "aware"; + _veh setBehaviour _behavior; _veh setCombatMode "Red"; _veh setSpeedMode _speedMode; }; diff --git a/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderBoatPatrol.sqf b/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderBoatPatrol.sqf index ceaa6da..c0d4c98 100644 --- a/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderBoatPatrol.sqf +++ b/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderBoatPatrol.sqf @@ -6,52 +6,48 @@ #include "Zen_FrameworkLibrary.sqf" _Zen_stack_Trace = ["Zen_OrderBoatPatrol", _this] call Zen_StackAdd; -private ["_vehicleArray", "_movecenter", "_blackList", "_maxx", "_speedMode", "_mpos", "_limitAngles", "_vehDist", "_cleanupDead", "_crewGroupArray", "_crew"]; +private ["_vehicleArray", "_movecenters", "_speedMode", "_mpos", "_limitAnglesSet", "_vehDist", "_cleanupDead", "_crewGroupArray", "_crew", "_positionFilterArgs", "_behavior", "_center", "_index"]; -if !([_this, [["ARRAY", "OBJECT"], ["ARRAY", "OBJECT", "GROUP", "STRING"], ["ARRAY", "SCALAR"], ["ARRAY", "SCALAR"], ["STRING"], ["BOOL"]], [["OBJECT", "ARRAY"], [], ["STRING"], ["SCALAR"]], 2] call Zen_CheckArguments) exitWith { +if !([_this, [["VOID"], ["ARRAY", "OBJECT", "GROUP", "STRING"], ["ARRAY", "SCALAR"], ["ARRAY", "SCALAR"], ["STRING"], ["STRING"], ["BOOL"]], [[], ["ARRAY", "OBJECT", "GROUP", "STRING", "SCALAR"], ["STRING", "ARRAY", "SCALAR"], ["SCALAR", "ARRAY"]], 2] call Zen_CheckArguments) exitWith { call Zen_StackRemove; }; _vehicleArray = [(_this select 0)] call Zen_ConvertToObjectArray; -_movecenter = _this select 1; +_movecenters = _this select 1; -if (typeName _vehicleArray != "ARRAY") then { - _vehicleArray = [_vehicleArray]; -}; - -_blackList = []; -_maxx = 500; -_speedMode = "normal"; -_limitAngles = [0, 360]; +ZEN_STD_Parse_GetArgumentDefault(_speedMode, 4, "limited") +ZEN_STD_Parse_GetArgumentDefault(_behavior, 5, "aware") +ZEN_STD_Parse_GetArgumentDefault(_cleanupDead, 6, false) -if !(typeName _movecenter == "String") then { +if !((typeName _movecenters == "ARRAY") && {typeName (_movecenters select 0) != "SCALAR"}) then { if (count _this > 2) then { - _maxx = _this select 2; - }; -} else { - if (markerShape _movecenter == "ICON") then { - _movecenter = [_movecenter] call Zen_ConvertToPosition; - if (count _this > 2) then { - _maxx = _this select 2; - }; + _positionFilterArgs = [_this select 2]; } else { - if (count _this > 2) then { - _blackList = _this select 2; + if (typeName _movecenters == "STRING") then { + _positionFilterArgs = [[]]; + if ((markerShape _movecenters) == "ICON") then { + _positionFilterArgs = [500]; + }; + } else { + _positionFilterArgs = [500]; }; }; -}; -if (count _this > 3) then { - _limitAngles = _this select 3; -}; - -if (count _this > 4) then { - _speedMode = _this select 4; + _movecenters = [_movecenters]; + ZEN_STD_Parse_GetArgumentDefault(_limitAnglesSet, 3, 0) + _limitAnglesSet = [_limitAnglesSet]; +} else { + _positionFilterArgs = _this select 2; + _limitAnglesSet = _this select 3; }; -ZEN_STD_Parse_GetArgumentDefault(_cleanupDead, 5, false) +{ + if ((typeName _x == "STRING") && {((markerShape _x) == "ICON")}) then { + _movecenters set [_forEachIndex, [_x] call Zen_ConvertToPosition]; + }; +} forEach _movecenters; -_vehicleArray = [([_vehicleArray] call Zen_ConvertToObjectArray)] call Zen_ArrayRemoveDead; +_vehicleArray = [_vehicleArray] call Zen_ArrayRemoveDead; _crewGroupArray = []; { @@ -60,15 +56,19 @@ _crewGroupArray = []; _mpos = [0,0,0]; _crewGroupArray pushBack (group driver _veh); - if (typeName _movecenter == "String") then { - _mpos = [_movecenter, 0,_blackList, 2, 0, _limitAngles, 0, 0, 0, 0, 0, [1,-10,0]] call Zen_FindGroundPosition; - } else { - _vehDist = [_veh, _movecenter] call Zen_Find2dDistance; - _mpos = [_movecenter, [0, _maxx], [], 2, 0, _limitAngles, 0, [1, _veh, _vehDist], 0, 0, 0, [1,-10,0]] call Zen_FindGroundPosition; + #define CALC_POS \ + _index = ZEN_STD_Array_RandIndex(_movecenters); \ + _center = _movecenters select _index; \ + if (typeName _center == "STRING") then { \ + _mpos = [_center, 0,_positionFilterArgs select _index, 2, 0, _limitAnglesSet select _index, 0, 0, 0, 0, 0, [1,-10,0]] call Zen_FindGroundPosition; \ + } else { \ + _mpos = [_center, [0, _positionFilterArgs select _index], [], 2, 0, _limitAnglesSet select _index, 0, 0, 0, 0, 0, [1,-10,0]] call Zen_FindGroundPosition; \ }; + CALC_POS + _veh move _mpos; - _veh setBehaviour "aware"; + _veh setBehaviour _behavior; _veh setCombatMode "Red"; _veh setSpeedMode _speedMode; } forEach _vehicleArray; @@ -97,15 +97,10 @@ while {(count _vehicleArray != 0)} do { } else { if ([_veh] call Zen_IsReady) then { _mpos = [0,0,0]; - if (typeName _movecenter == "String") then { - _mpos = [_movecenter, 0,_blackList, 2, 0, _limitAngles, 0, 0, 0, 0, 0, [1,-10,0]] call Zen_FindGroundPosition; - } else { - _vehDist = [_veh, _movecenter] call Zen_Find2dDistance; - _mpos = [_movecenter, [0, _maxx], [], 2, 0, _limitAngles, 0, [1, _veh, _vehDist], 0, 0, 0, [1,-10,0]] call Zen_FindGroundPosition; - }; + CALC_POS _veh move _mpos; - _veh setBehaviour "aware"; + _veh setBehaviour _behavior; _veh setCombatMode "Red"; _veh setSpeedMode _speedMode; }; diff --git a/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderInfantryMove.sqf b/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderInfantryMove.sqf index 79adba3..a4c15d5 100644 --- a/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderInfantryMove.sqf +++ b/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderInfantryMove.sqf @@ -32,10 +32,10 @@ sleep 5; waitUntil { sleep 2; - (((alive leader _group) && {(unitReady leader _group)}) || (({alive _x} count units _group) == 0)) + (((alive leader _group) && {(unitReady leader _group)}) || (({alive _x} count units _group) == 0) || (([_group, _movePos] call Zen_Find2dDistance) < 25)) }; -_group move (getPosATL (leader _group)); +// _group move (getPosATL (leader _group)); call Zen_StackRemove; if (true) exitWith {}; diff --git a/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderInfantryPatrol.sqf b/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderInfantryPatrol.sqf index bc51ab0..9d7a36e 100644 --- a/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderInfantryPatrol.sqf +++ b/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderInfantryPatrol.sqf @@ -6,42 +6,45 @@ #include "Zen_FrameworkLibrary.sqf" _Zen_stack_Trace = ["Zen_OrderInfantryPatrol", _this] call Zen_StackAdd; -private ["_grpsArray", "_movecenter", "_minx", "_maxx", "_mpos", "_man", "_MMDist", "_blackList", "_speedMode", "_limitAngles", "_target", "_behaviorMode", "_chaseEnemy", "_waterPosition", "_divers", "_joinWeak", "_joined"]; +private ["_grpsArray", "_movecenters", "_maxx", "_mpos", "_man", "_speedMode", "_limitAnglesSet", "_target", "_behaviorMode", "_chaseEnemy", "_waterPosition", "_divers", "_joinWeak", "_joined", "_center", "_index", "_positionFilterArgs"]; -if !([_this, [["VOID"], ["ARRAY", "OBJECT", "GROUP", "STRING"], ["ARRAY"], ["ARRAY", "SCALAR"], ["STRING"], ["STRING"], ["BOOL"], ["BOOL"], ["BOOL"]], [[], [], ["STRING", "SCALAR"], ["SCALAR"]], 2] call Zen_CheckArguments) exitWith { +if !([_this, [["VOID"], ["ARRAY", "OBJECT", "GROUP", "STRING"], ["ARRAY"], ["ARRAY", "SCALAR"], ["STRING"], ["STRING"], ["BOOL"], ["BOOL"], ["BOOL"]], [[], ["ARRAY", "OBJECT", "GROUP", "STRING", "SCALAR"], ["STRING", "ARRAY", "SCALAR"], ["SCALAR", "ARRAY"]], 2] call Zen_CheckArguments) exitWith { call Zen_StackRemove; }; _grpsArray = [(_this select 0)] call Zen_ConvertToGroupArray; -_movecenter = _this select 1; +_movecenters = _this select 1; -_blackList = []; -_minx = 50; -_maxx = 200; +// _maxx = 200; -if !(typeName _movecenter == "String") then { +if !((typeName _movecenters == "ARRAY") && {typeName (_movecenters select 0) != "SCALAR"}) then { if (count _this > 2) then { - _MMDist = _this select 2; - _minx = (_MMDist select 0); - _maxx = (_MMDist select 1); - }; -} else { - if (markerShape _movecenter == "ICON") then { - _movecenter = [_movecenter] call Zen_ConvertToPosition; - if (count _this > 2) then { - _MMDist = _this select 2; - _minx = (_MMDist select 0); - _maxx = (_MMDist select 1); - }; + _positionFilterArgs = [_this select 2]; } else { - if (count _this > 2) then { - _blackList = _this select 2; + if (typeName _movecenters == "STRING") then { + _positionFilterArgs = [[]]; + if ((markerShape _movecenters) == "ICON") then { + _positionFilterArgs = [[50, 200]]; + }; + } else { + _positionFilterArgs = [[50, 200]]; }; - _maxx = (((getMarkerSize _movecenter) select 1) + ((getMarkerSize _movecenter) select 0)) / 2; }; + + _movecenters = [_movecenters]; + ZEN_STD_Parse_GetArgumentDefault(_limitAnglesSet, 3, 0) + _limitAnglesSet = [_limitAnglesSet]; +} else { + _positionFilterArgs = _this select 2; + _limitAnglesSet = _this select 3; }; -ZEN_STD_Parse_GetArgumentDefault(_limitAngles, 3, 0) +{ + if ((typeName _x == "STRING") && {((markerShape _x) == "ICON")}) then { + _movecenters set [_forEachIndex, [_x] call Zen_ConvertToPosition]; + }; +} forEach _movecenters; + ZEN_STD_Parse_GetArgumentDefault(_speedMode, 4, "limited") ZEN_STD_Parse_GetArgumentDefault(_behaviorMode, 5, "aware") ZEN_STD_Parse_GetArgumentDefault(_chaseEnemy, 6, true) @@ -56,21 +59,22 @@ if (_divers) then { _grpsArray = [_grpsArray] call Zen_ArrayRemoveDead; { private "_group"; - _group = _x; _man = leader _group; - _mpos = [0,0,0]; - #define CALC_POS if (typeName _movecenter == "String") then { \ - _mpos = [_movecenter, 0,_blackList, _waterPosition, [1,50], _limitAngles] call Zen_FindGroundPosition; \ + #define CALC_POS \ + _index = ZEN_STD_Array_RandIndex(_movecenters); \ + _center = _movecenters select _index; \ + if (typeName _center == "STRING") then { \ + _mpos = [_center, 0, (_positionFilterArgs select _index), _waterPosition, [1,50], _limitAnglesSet select _index] call Zen_FindGroundPosition; \ } else { \ - if (([_man, _movecenter] call Zen_Find2dDistance) < _minx) then { \ - _mpos = [_movecenter, [_minx, _maxx], [], _waterPosition, [1,50], _limitAngles] call Zen_FindGroundPosition; \ + if (([_man, _center] call Zen_Find2dDistance) < ((_positionFilterArgs select _index) select 0)) then { \ + _mpos = [_center, _positionFilterArgs select _index, [], _waterPosition, [1,50], _limitAnglesSet select _index] call Zen_FindGroundPosition; \ } else { \ while {true} do { \ - _mpos = [_movecenter, [_minx, _maxx], [], _waterPosition, [1,50], _limitAngles] call Zen_FindGroundPosition; \ - if !([_man, (2 * _maxx), ([_man, _mpos] call Zen_FindDirection), _moveCenter, [_minx, _minx], 0, "ELLIPSE"] call Zen_IsRayInPoly) exitWith {}; \ + _mpos = [_center, _positionFilterArgs select _index, [], _waterPosition, [1,50], _limitAnglesSet select _index] call Zen_FindGroundPosition; \ + if !([_man, [_man, _mpos] call Zen_Find2dDistance, ([_man, _mpos] call Zen_FindDirection), _center, [((_positionFilterArgs select _index) select 0), ((_positionFilterArgs select _index) select 0)], 0, "ellipse"] call Zen_IsRayInPoly) exitWith {}; \ }; \ }; \ }; @@ -95,14 +99,13 @@ _grpsArray = [_grpsArray] call Zen_ArrayRemoveDead; _group setBehaviour _behaviorMode; }; }; - } forEach _grpsArray; while {(count _grpsArray != 0)} do { { private "_group"; _group = _x; - if (({alive _x} count (units _group)) > 0) then { + if (!(isNull _group) && {(({alive _x} count (units _group)) > 0)}) then { _joined = false; if (_joinWeak && {(({alive _x} count (units _group)) < 3)}) then { @@ -118,7 +121,6 @@ while {(count _grpsArray != 0)} do { _man = leader _group; if ((unitReady _man) && {(alive _man)}) then { _mpos = [0,0,0]; - CALC_POS if !(isPlayer _man) then { @@ -147,7 +149,7 @@ while {(count _grpsArray != 0)} do { } else { _target = _man findNearestEnemy _man; }; - if (!(isNull _target) && {((([_man, _target] call Zen_Find2dDistance) < (_maxx * 2)) && (_target isKindOf "Man"))}) then { + if (!(isNull _target) && {((([_man, _target] call Zen_Find2dDistance) < 750) && (_target isKindOf "Man"))}) then { _mpos = [_target, (random (150 / ((_man knowsAbout _target) + 0.1))), (random 360)] call Zen_ExtendPosition; if !(isPlayer _man) then { diff --git a/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderVehicleMove.sqf b/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderVehicleMove.sqf index fb845b5..ceaf752 100644 --- a/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderVehicleMove.sqf +++ b/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderVehicleMove.sqf @@ -6,7 +6,7 @@ #include "Zen_FrameworkLibrary.sqf" _Zen_stack_Trace = ["Zen_OrderVehicleMove", _this] call Zen_StackAdd; -private ["_vehicle", "_inPos", "_speedMode", "_vehicleDriver", "_vehicleGrp", "_height", "_cleanupEnd", "_cleanupCrash", "_isCrash"]; +private ["_vehicle", "_inPos", "_speedMode", "_vehicleDriver", "_vehicleGrp", "_height", "_cleanupEnd", "_cleanupCrash", "_isCrash", "_completionDistance"]; if !([_this, [["OBJECT"], ["VOID"], ["STRING"], ["SCALAR"], ["BOOL"], ["BOOL"]], [], 2] call Zen_CheckArguments) exitWith { call Zen_StackRemove; @@ -56,6 +56,14 @@ if (_vehicle isKindOf "AIR") then { _vehicleDriver disableAI "AutoTarget"; }; +_completionDistance = 25; +if (_vehicle isKindOf "AIR") then { + _completionDistance = 100; + if (_vehicle isKindOf "PLANE") then { + _completionDistance = 300; + }; +}; + sleep 5; _isCrash = false; waitUntil { @@ -65,7 +73,7 @@ waitUntil { _isCrash = true; }; - if (_cleanupCrash && {_isCrash && {(ZEN_FMW_Math_DistGreater2D(_vehicle, _inPos, 100))}}) then { + if (_cleanupCrash && {_isCrash && {(ZEN_FMW_Math_DistGreater2D(_vehicle, _inPos, _completionDistance))}}) then { if (_vehicle isKindOf "AIR") then { waitUntil { sleep 2; @@ -79,11 +87,11 @@ waitUntil { } forEach ((units _vehicleGrp) + [_vehicle]); }; - (((unitReady (driver _vehicle)) || (([_vehicle] call Zen_IsReady))) || ((([_vehicle, _inPos] call Zen_Find2dDistance) < 25) && (speed _vehicle < 1)) || _isCrash || ((_vehicle isKindOf "SHIP") && ((getTerrainHeightASL getPosATL _vehicle) > -1))) + (((unitReady (driver _vehicle)) || (([_vehicle] call Zen_IsReady))) || (([_vehicle, _inPos] call Zen_Find2dDistance) < _completionDistance) || _isCrash || ((_vehicle isKindOf "SHIP") && ((getTerrainHeightASL getPosATL _vehicle) > -1))) }; _vehicleDriver enableAI "Move"; -_vehicle move (getPosATL _vehicle); +// _vehicle move (getPosATL _vehicle); sleep 2; diff --git a/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderVehiclePatrol.sqf b/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderVehiclePatrol.sqf index 3c9b24b..8a7cf9c 100644 --- a/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderVehiclePatrol.sqf +++ b/Zen_FrameworkFunctions/Zen_OrdersFunctions/Zen_OrderVehiclePatrol.sqf @@ -6,72 +6,77 @@ #include "Zen_FrameworkLibrary.sqf" _Zen_stack_Trace = ["Zen_OrderVehiclePatrol", _this] call Zen_StackAdd; -private ["_vehicleArray", "_movecenter", "_blackList", "_maxx", "_speedMode", "_mpos", "_limitAngles", "_vehDist", "_cleanupDead", "_crewGroupArray", "_crew"]; +private ["_vehicleArray", "_movecenters", "_speedMode", "_mpos", "_limitAnglesSet", "_vehDist", "_cleanupDead", "_crewGroupArray", "_crew", "_findRoads", "_behavior", "_positionFilterArgs", "_center", "_index", "_roadIndex"]; -if !([_this, [["ARRAY", "OBJECT"], ["ARRAY", "OBJECT", "GROUP", "STRING"], ["ARRAY", "SCALAR"], ["ARRAY", "SCALAR"], ["STRING"], ["BOOL"]], [["OBJECT", "ARRAY"], [], ["STRING"], ["SCALAR"]], 2] call Zen_CheckArguments) exitWith { +if !([_this, [["VOID"], ["ARRAY", "OBJECT", "GROUP", "STRING"], ["ARRAY", "SCALAR"], ["ARRAY", "SCALAR"], ["STRING"], ["STRING"], ["BOOL"], ["BOOL"]], [[], ["ARRAY", "OBJECT", "GROUP", "STRING", "SCALAR"], ["STRING", "ARRAY", "SCALAR"], ["SCALAR", "ARRAY"]], 2] call Zen_CheckArguments) exitWith { call Zen_StackRemove; }; _vehicleArray = [(_this select 0)] call Zen_ConvertToObjectArray; -_movecenter = _this select 1; +_movecenters = _this select 1; -if (typeName _vehicleArray != "ARRAY") then { - _vehicleArray = [_vehicleArray]; -}; +_positionFilterArgs = 0; -_blackList = []; -_maxx = 500; -_speedMode = "limited"; -_limitAngles = [0, 360]; +ZEN_STD_Parse_GetArgumentDefault(_speedMode, 4, "limited") +ZEN_STD_Parse_GetArgumentDefault(_behavior, 5, "aware") +ZEN_STD_Parse_GetArgumentDefault(_cleanupDead, 6, false) +ZEN_STD_Parse_GetArgumentDefault(_findRoads, 7, true) -if !(typeName _movecenter == "String") then { +if !((typeName _movecenters == "ARRAY") && {(typeName (_movecenters select 0)) != "SCALAR"}) then { if (count _this > 2) then { - _maxx = _this select 2; - }; -} else { - if (markerShape _movecenter == "ICON") then { - _movecenter = [_movecenter] call Zen_ConvertToPosition; - if (count _this > 2) then { - _maxx = _this select 2; - }; + _positionFilterArgs = [_this select 2]; } else { - if (count _this > 2) then { - _blackList = _this select 2; + if (typeName _movecenters == "STRING") then { + _positionFilterArgs = [[]]; + if ((markerShape _movecenters) == "ICON") then { + _positionFilterArgs = [500]; + }; + } else { + _positionFilterArgs = [500]; }; }; -}; -if (count _this > 3) then { - _limitAngles = _this select 3; -}; - -if (count _this > 4) then { - _speedMode = _this select 4; + _movecenters = [_movecenters]; + ZEN_STD_Parse_GetArgumentDefault(_limitAnglesSet, 3, 0) + _limitAnglesSet = [_limitAnglesSet]; +} else { + _positionFilterArgs = _this select 2; + _limitAnglesSet = _this select 3; }; -ZEN_STD_Parse_GetArgumentDefault(_cleanupDead, 5, false) +{ + if ((typeName _x == "STRING") && {((markerShape _x) == "ICON")}) then { + _movecenters set [_forEachIndex, [_x] call Zen_ConvertToPosition]; + }; +} forEach _movecenters; -_vehicleArray = [([_vehicleArray] call Zen_ConvertToObjectArray)] call Zen_ArrayRemoveDead; +_vehicleArray = [_vehicleArray] call Zen_ArrayRemoveDead; _crewGroupArray = []; +_roadIndex = 0; +if (_findRoads) then { + _roadIndex = 1; +}; + { private "_veh"; _veh = _x; _mpos = [0,0,0]; _crewGroupArray pushBack (group driver _veh); - _vehDist = [_veh, _movecenter] call Zen_Find2dDistance; #define CALC_POS \ - if (typeName _movecenter == "String") then { \ - _mpos = [_movecenter, 0,_blackList, 1, [1, 2*(((getMarkerSize _movecenter) select 0) max ((getMarkerSize _movecenter) select 1))], _limitAngles] call Zen_FindGroundPosition; \ + _index = ZEN_STD_Array_RandIndex(_movecenters); \ + _center = _movecenters select _index; \ + if (typeName _center == "STRING") then { \ + _mpos = [_center, 0,_positionFilterArgs select _index, 1, [_roadIndex, 2*(((getMarkerSize _center) select 0) max ((getMarkerSize _center) select 1))], _limitAnglesSet select _index] call Zen_FindGroundPosition; \ } else { \ - _mpos = [_movecenter, [0, _maxx], [], 1, [1, 2*_maxx], _limitAngles, 0, [1, _veh, _maxx / 4]] call Zen_FindGroundPosition; \ + _mpos = [_center, [0, _positionFilterArgs select _index], [], 1, [_roadIndex, 2 * (_positionFilterArgs select _index)], _limitAnglesSet select _index] call Zen_FindGroundPosition; \ }; CALC_POS _veh move _mpos; - _veh setBehaviour "aware"; + _veh setBehaviour _behavior; _veh setCombatMode "Red"; _veh setSpeedMode _speedMode; } forEach _vehicleArray; @@ -100,12 +105,10 @@ while {(count _vehicleArray != 0)} do { } else { if ([_veh] call Zen_IsReady) then { _mpos = [0,0,0]; - _vehDist = [_veh, _movecenter] call Zen_Find2dDistance; - CALC_POS _veh move _mpos; - _veh setBehaviour "aware"; + _veh setBehaviour _behavior; _veh setCombatMode "Red"; _veh setSpeedMode _speedMode; }; diff --git a/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_CalculatePositionMarker.sqf b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_CalculatePositionMarker.sqf index 5940f5a..688cf93 100644 --- a/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_CalculatePositionMarker.sqf +++ b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_CalculatePositionMarker.sqf @@ -82,7 +82,10 @@ for "_i" from 1 to _iterationCount step 1 do { if (_road in [1, 2]) then { _roads = _pos nearRoads _roadDist; if (count _roads > 0) then { - _pos = ([([_roads] call Zen_ArrayGetRandom)] call Zen_ConvertToPosition); + _nearestRoad = [_roads, compile format ["-1 * (_this distanceSqr %1)", _pos]] call Zen_ArrayFindExtremum; + if (([_nearestRoad, _area] call Zen_IsPointInPoly) && {!([_nearestRoad, getMarkerPos _area, [_min, _min], 0, "ellipse"] call Zen_IsPointInPoly)}) then { + _pos = [_nearestRoad] call Zen_ConvertToPosition; + }; }; }; diff --git a/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_CalculatePositionObject.sqf b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_CalculatePositionObject.sqf index c3c4b70..f5a0474 100644 --- a/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_CalculatePositionObject.sqf +++ b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_CalculatePositionObject.sqf @@ -68,7 +68,10 @@ for "_i" from 1 to _iterationCount step 1 do { if (_road in [1, 2]) then { _roads = _pos nearRoads _roadDist; if (count _roads > 0) then { - _pos = ([([_roads] call Zen_ArrayGetRandom)] call Zen_ConvertToPosition); + _nearestRoad = [_roads, compile format ["-1 * (_this distanceSqr %1)", _pos]] call Zen_ArrayFindExtremum; + if (([_nearestRoad, _area, [_max, _max], 0, "ellipse"] call Zen_IsPointInPoly) && {!([_nearestRoad, _area, [_min, _min], 0, "ellipse"] call Zen_IsPointInPoly)}) then { + _pos = [_nearestRoad] call Zen_ConvertToPosition; + }; }; }; diff --git a/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_FindRoadDirection.sqf b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_FindRoadDirection.sqf index 74a3217..426f733 100644 --- a/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_FindRoadDirection.sqf +++ b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_FindRoadDirection.sqf @@ -18,8 +18,11 @@ _center = [(_this select 0)] call Zen_ConvertToPosition; _nearRoads = _center nearRoads 50; if (count _nearRoads < 2) exitWith { - 0 = ["Zen_FindRoadDirection", "Given point does have not a road within 50 meters", _this] call Zen_PrintError; - call Zen_StackRemove; + if (Zen_Debug_Arguments) then { + 0 = ["Zen_FindRoadDirection", "Given point does have not a road within 50 meters.", _this] call Zen_PrintError; + call Zen_StackPrint; + call Zen_StackRemove; + }; (0) }; diff --git a/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_QuantizeAngles.sqf b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_QuantizeAngles.sqf index 8a49da0..1a7a196 100644 --- a/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_QuantizeAngles.sqf +++ b/Zen_FrameworkFunctions/Zen_PositionFunctions/Zen_QuantizeAngles.sqf @@ -43,7 +43,7 @@ if (toLower _polyType == "rectangle") then { _targetArea = (_XYSizeArray select 0) * (_XYSizeArray select 1) * SMALL_STEP; if (_minAngle == 0 || _minAngle == 360) then { - _minAngle = 0.0001; + _minAngle = 0.1; }; if (_minAngle > _maxAngle) then { diff --git a/Zen_FrameworkFunctions/copyLibraries.bat b/Zen_FrameworkFunctions/copyLibraries.bat index 9a4a4e9..91b8f76 100644 --- a/Zen_FrameworkFunctions/copyLibraries.bat +++ b/Zen_FrameworkFunctions/copyLibraries.bat @@ -1,5 +1,6 @@ @echo off copy Zen_StandardLibrary.sqf Zen_DataFunctions +copy Zen_StandardLibrary.sqf Zen_DialogSystem copy Zen_StandardLibrary.sqf Zen_FireSupportSystem copy Zen_StandardLibrary.sqf Zen_LoadoutFunctions copy Zen_StandardLibrary.sqf Zen_MathFunctions @@ -12,6 +13,7 @@ copy Zen_StandardLibrary.sqf Zen_SpawningFunctions copy Zen_StandardLibrary.sqf Zen_TaskSystem copy Zen_StandardLibrary.sqf Zen_TriggerFunctions copy Zen_FrameworkLibrary.sqf Zen_DataFunctions +copy Zen_FrameworkLibrary.sqf Zen_DialogSystem copy Zen_FrameworkLibrary.sqf Zen_FireSupportSystem copy Zen_FrameworkLibrary.sqf Zen_LoadoutFunctions copy Zen_FrameworkLibrary.sqf Zen_MathFunctions diff --git a/mission.sqm b/mission.sqm index deb1bce..05a03b8 100644 --- a/mission.sqm +++ b/mission.sqm @@ -39,7 +39,11 @@ class Mission "ace_nametags", "A3_Structures_F_Civ_InfoBoards", "RHS_US_A2_AirImport", - "A3_Armor_F_Panther" + "A3_Armor_F_Panther", + "A3_Structures_F_Furniture", + "A3_Structures_F_Civ_Camping", + "A3_Structures_F_Heli_Furniture", + "A3_Structures_F_Items_Electronics" }; addOnsAuto[]= { @@ -79,6 +83,10 @@ class Mission "A3_Structures_F_Civ_InfoBoards", "RHS_US_A2_AirImport", "A3_Armor_F_Panther", + "A3_Structures_F_Furniture", + "A3_Structures_F_Heli_Furniture", + "A3_Structures_F_Civ_Camping", + "A3_Structures_F_Items_Electronics", "aia_chernarus_config" }; randomSeed=14748412; @@ -2063,7 +2071,7 @@ class Mission }; class Vehicles { - items=331; + items=399; class Item0 { position[]={689.72211,6.0638437,1797.7275}; @@ -2198,7 +2206,7 @@ class Mission }; class Item14 { - position[]={693.45715,5.9899998,1838.5365}; + position[]={698.19897,5.990932,1833.317}; azimut=50; id=93; side="EMPTY"; @@ -3118,7 +3126,7 @@ class Mission }; class Item114 { - position[]={690.11487,6.0943995,1808.9337}; + position[]={668.91956,6.010416,1771.3019}; azimut=237; id=193; side="EMPTY"; @@ -3181,8 +3189,8 @@ class Mission }; class Item120 { - position[]={702.48053,5.9966407,1836.2289}; - azimut=140; + position[]={717.46619,6.0954742,1824.1465}; + azimut=50; id=199; side="EMPTY"; vehicle="Land_HBarrierBig_F"; @@ -3190,7 +3198,7 @@ class Mission }; class Item121 { - position[]={717.46619,6.0954742,1824.1465}; + position[]={741.85754,6.0991936,1844.7795}; azimut=50; id=200; side="EMPTY"; @@ -3199,7 +3207,7 @@ class Mission }; class Item122 { - position[]={741.85754,6.0991936,1844.7795}; + position[]={736.95978,6.0393443,1850.7351}; azimut=50; id=201; side="EMPTY"; @@ -3208,7 +3216,7 @@ class Mission }; class Item123 { - position[]={736.95978,6.0393443,1850.7351}; + position[]={731.83594,6.075242,1856.8417}; azimut=50; id=202; side="EMPTY"; @@ -3217,8 +3225,8 @@ class Mission }; class Item124 { - position[]={731.83594,6.075242,1856.8417}; - azimut=50; + position[]={709.8017,6.0418105,1852.1271}; + azimut=140; id=203; side="EMPTY"; vehicle="Land_HBarrierBig_F"; @@ -3226,7 +3234,7 @@ class Mission }; class Item125 { - position[]={709.8017,6.0418105,1852.1271}; + position[]={715.74957,6.071043,1857.1414}; azimut=140; id=204; side="EMPTY"; @@ -3235,7 +3243,7 @@ class Mission }; class Item126 { - position[]={715.74957,6.071043,1857.1414}; + position[]={721.96466,6.1015253,1862.3571}; azimut=140; id=205; side="EMPTY"; @@ -3244,8 +3252,8 @@ class Mission }; class Item127 { - position[]={721.96466,6.1015253,1862.3571}; - azimut=140; + position[]={726.9165,6.1158671,1862.7834}; + azimut=50; id=206; side="EMPTY"; vehicle="Land_HBarrierBig_F"; @@ -3253,8 +3261,8 @@ class Mission }; class Item128 { - position[]={726.9165,6.1158671,1862.7834}; - azimut=50; + position[]={708.10797,6.0425987,1854.1163}; + azimut=140; id=207; side="EMPTY"; vehicle="Land_HBarrierBig_F"; @@ -3262,8 +3270,8 @@ class Mission }; class Item129 { - position[]={704.07745,6.0136647,1847.2965}; - azimut=140; + position[]={693.71808,5.9899998,1838.8607}; + azimut=50; id=208; side="EMPTY"; vehicle="Land_HBarrierBig_F"; @@ -3271,146 +3279,150 @@ class Mission }; class Item130 { - position[]={696.57806,5.9899998,1834.9293}; - azimut=50; + position[]={725.638,6.045752,1846.2258}; + azimut=230; id=209; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; + vehicle="Land_HelipadRescue_F"; + leader=1; skill=0.60000002; }; class Item131 { - position[]={701.83826,6.0013938,1841.7069}; + position[]={720.9425,6.0769019,1827.3185}; azimut=50; id=210; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; + vehicle="MASH_EP1"; + leader=1; skill=0.60000002; + syncId=4; + synchronizations[]={3}; }; class Item132 { - position[]={725.638,6.045752,1846.2258}; - azimut=230; + position[]={594.95911,6.0376916,1791.3811}; + azimut=137; id=211; side="EMPTY"; - vehicle="Land_HelipadRescue_F"; + vehicle="Land_HelipadSquare_F"; leader=1; skill=0.60000002; + text="garage_spawn_4"; }; class Item133 { - position[]={720.9425,6.0769019,1827.3185}; - azimut=50; + position[]={560.64941,5.959599,1771.8768}; + azimut=137; id=212; side="EMPTY"; - vehicle="MASH_EP1"; + vehicle="B_Slingload_01_Ammo_F"; leader=1; skill=0.60000002; - syncId=4; - synchronizations[]={3}; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item134 { - position[]={594.95911,6.0376916,1791.3811}; + position[]={565.34875,5.9643288,1766.7665}; azimut=137; id=213; side="EMPTY"; - vehicle="Land_HelipadSquare_F"; + vehicle="B_Slingload_01_Ammo_F"; leader=1; skill=0.60000002; - text="garage_spawn_4"; + init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item135 { - position[]={560.64941,5.959599,1771.8768}; + position[]={563.38416,5.9637799,1764.9391}; azimut=137; id=214; side="EMPTY"; - vehicle="B_Slingload_01_Ammo_F"; + vehicle="B_Slingload_01_Cargo_F"; leader=1; skill=0.60000002; init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item136 { - position[]={565.34875,5.9643288,1766.7665}; + position[]={558.68488,5.9811153,1769.8948}; azimut=137; id=215; side="EMPTY"; - vehicle="B_Slingload_01_Ammo_F"; + vehicle="B_Slingload_01_Cargo_F"; leader=1; skill=0.60000002; init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item137 { - position[]={563.38416,5.9637799,1764.9391}; + position[]={567.39404,5.9554181,1768.666}; azimut=137; id=216; side="EMPTY"; - vehicle="B_Slingload_01_Cargo_F"; + vehicle="B_Slingload_01_Fuel_F"; leader=1; skill=0.60000002; init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item138 { - position[]={558.68488,5.9811153,1769.8948}; - azimut=137; + position[]={573.39246,6.0029182,1758.5056}; + azimut=47; id=217; side="EMPTY"; - vehicle="B_Slingload_01_Cargo_F"; + vehicle="B_Truck_01_ammo_F"; leader=1; skill=0.60000002; init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item139 { - position[]={567.39404,5.9554181,1768.666}; - azimut=137; + position[]={571.00409,6.0003376,1761.1205}; + azimut=47; id=218; side="EMPTY"; - vehicle="B_Slingload_01_Fuel_F"; + vehicle="B_Truck_01_fuel_F"; leader=1; skill=0.60000002; init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item140 { - position[]={573.39246,6.0029182,1758.5056}; + position[]={575.78687,6.0056777,1755.9486}; azimut=47; id=219; side="EMPTY"; - vehicle="B_Truck_01_ammo_F"; + vehicle="B_Truck_01_Repair_F"; leader=1; skill=0.60000002; init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item141 { - position[]={571.00409,6.0003376,1761.1205}; - azimut=47; + position[]={565.32269,5.8964548,1778.8293}; + azimut=137; id=220; side="EMPTY"; - vehicle="B_Truck_01_fuel_F"; + vehicle="B_CargoNet_01_ammo_F"; leader=1; skill=0.60000002; init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item142 { - position[]={575.78687,6.0056777,1755.9486}; - azimut=47; + position[]={566.77521,5.9012733,1777.309}; + azimut=137; id=221; side="EMPTY"; - vehicle="B_Truck_01_Repair_F"; + vehicle="B_CargoNet_01_ammo_F"; leader=1; skill=0.60000002; init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item143 { - position[]={565.32269,5.8964548,1778.8293}; + position[]={568.25037,5.9123344,1775.6498}; azimut=137; id=222; side="EMPTY"; @@ -3421,7 +3433,7 @@ class Mission }; class Item144 { - position[]={566.77521,5.9012733,1777.309}; + position[]={569.771,5.9241381,1773.8793}; azimut=137; id=223; side="EMPTY"; @@ -3432,7 +3444,7 @@ class Mission }; class Item145 { - position[]={568.25037,5.9123344,1775.6498}; + position[]={571.22351,5.9505873,1772.3589}; azimut=137; id=224; side="EMPTY"; @@ -3443,7 +3455,7 @@ class Mission }; class Item146 { - position[]={569.771,5.9241381,1773.8793}; + position[]={572.69867,5.981317,1770.6997}; azimut=137; id=225; side="EMPTY"; @@ -3454,29 +3466,25 @@ class Mission }; class Item147 { - position[]={571.22351,5.9505873,1772.3589}; - azimut=137; + position[]={724.1073,6.0497589,1820.4933}; + azimut=50; id=226; side="EMPTY"; - vehicle="B_CargoNet_01_ammo_F"; - leader=1; + vehicle="ShootingPos_F"; skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item148 { - position[]={572.69867,5.981317,1770.6997}; - azimut=137; + position[]={726.44501,6.0154729,1817.7238}; + azimut=50; id=227; side="EMPTY"; - vehicle="B_CargoNet_01_ammo_F"; - leader=1; + vehicle="ShootingPos_F"; skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item149 { - position[]={724.1073,6.0497589,1820.4933}; + position[]={728.78253,6,1815.022}; azimut=50; id=228; side="EMPTY"; @@ -3485,7 +3493,7 @@ class Mission }; class Item150 { - position[]={726.44501,6.0154729,1817.7238}; + position[]={731.052,6,1812.2965}; azimut=50; id=229; side="EMPTY"; @@ -3494,25 +3502,25 @@ class Mission }; class Item151 { - position[]={728.78253,6,1815.022}; + position[]={730.42114,6.0161881,1823.5117}; azimut=50; id=230; side="EMPTY"; - vehicle="ShootingPos_F"; + vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item152 { - position[]={731.052,6,1812.2965}; + position[]={733.38135,6.0601783,1825.7255}; azimut=50; id=231; side="EMPTY"; - vehicle="ShootingPos_F"; + vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item153 { - position[]={730.42114,6.0161881,1823.5117}; + position[]={736.34149,6.1271315,1828.4592}; azimut=50; id=232; side="EMPTY"; @@ -3521,7 +3529,7 @@ class Mission }; class Item154 { - position[]={733.38135,6.0601783,1825.7255}; + position[]={739.3667,6.1788349,1830.8351}; azimut=50; id=233; side="EMPTY"; @@ -3530,7 +3538,7 @@ class Mission }; class Item155 { - position[]={736.34149,6.1271315,1828.4592}; + position[]={742.02509,6.1785946,1833.5386}; azimut=50; id=234; side="EMPTY"; @@ -3539,7 +3547,7 @@ class Mission }; class Item156 { - position[]={739.3667,6.1788349,1830.8351}; + position[]={744.98529,6.1256676,1835.7523}; azimut=50; id=235; side="EMPTY"; @@ -3548,7 +3556,7 @@ class Mission }; class Item157 { - position[]={742.02509,6.1785946,1833.5386}; + position[]={747.94543,6.1738925,1838.4861}; azimut=50; id=236; side="EMPTY"; @@ -3557,7 +3565,7 @@ class Mission }; class Item158 { - position[]={744.98529,6.1256676,1835.7523}; + position[]={750.97064,6.1656919,1840.8619}; azimut=50; id=237; side="EMPTY"; @@ -3566,7 +3574,7 @@ class Mission }; class Item159 { - position[]={747.94543,6.1738925,1838.4861}; + position[]={753.17688,6.1565995,1842.734}; azimut=50; id=238; side="EMPTY"; @@ -3575,7 +3583,7 @@ class Mission }; class Item160 { - position[]={750.97064,6.1656919,1840.8619}; + position[]={756.13708,6.1467834,1844.9478}; azimut=50; id=239; side="EMPTY"; @@ -3584,7 +3592,7 @@ class Mission }; class Item161 { - position[]={753.17688,6.1565995,1842.734}; + position[]={759.09723,6.129231,1847.6815}; azimut=50; id=240; side="EMPTY"; @@ -3593,7 +3601,7 @@ class Mission }; class Item162 { - position[]={756.13708,6.1467834,1844.9478}; + position[]={762.12244,6.1151233,1850.0574}; azimut=50; id=241; side="EMPTY"; @@ -3602,7 +3610,7 @@ class Mission }; class Item163 { - position[]={759.09723,6.129231,1847.6815}; + position[]={765.0069,6.1016183,1852.3097}; azimut=50; id=242; side="EMPTY"; @@ -3611,7 +3619,7 @@ class Mission }; class Item164 { - position[]={762.12244,6.1151233,1850.0574}; + position[]={767.9671,6.0877681,1854.5234}; azimut=50; id=243; side="EMPTY"; @@ -3620,7 +3628,7 @@ class Mission }; class Item165 { - position[]={765.0069,6.1016183,1852.3097}; + position[]={770.92725,6.0698447,1857.2572}; azimut=50; id=244; side="EMPTY"; @@ -3629,7 +3637,7 @@ class Mission }; class Item166 { - position[]={767.9671,6.0877681,1854.5234}; + position[]={773.95245,6.054872,1859.6331}; azimut=50; id=245; side="EMPTY"; @@ -3638,7 +3646,7 @@ class Mission }; class Item167 { - position[]={770.92725,6.0698447,1857.2572}; + position[]={776.91223,6.0402937,1862.3383}; azimut=50; id=246; side="EMPTY"; @@ -3647,7 +3655,7 @@ class Mission }; class Item168 { - position[]={773.95245,6.054872,1859.6331}; + position[]={779.87244,6.0294824,1864.552}; azimut=50; id=247; side="EMPTY"; @@ -3656,7 +3664,7 @@ class Mission }; class Item169 { - position[]={776.91223,6.0402937,1862.3383}; + position[]={782.83258,6.0152044,1867.2858}; azimut=50; id=248; side="EMPTY"; @@ -3665,7 +3673,7 @@ class Mission }; class Item170 { - position[]={779.87244,6.0294824,1864.552}; + position[]={785.85779,6.0120459,1869.6616}; azimut=50; id=249; side="EMPTY"; @@ -3674,7 +3682,7 @@ class Mission }; class Item171 { - position[]={782.83258,6.0152044,1867.2858}; + position[]={788.81744,6.0119534,1871.835}; azimut=50; id=250; side="EMPTY"; @@ -3683,7 +3691,7 @@ class Mission }; class Item172 { - position[]={785.85779,6.0120459,1869.6616}; + position[]={791.77765,6.0095086,1874.0487}; azimut=50; id=251; side="EMPTY"; @@ -3692,7 +3700,7 @@ class Mission }; class Item173 { - position[]={788.81744,6.0119534,1871.835}; + position[]={794.73779,6.0072742,1876.7825}; azimut=50; id=252; side="EMPTY"; @@ -3701,7 +3709,7 @@ class Mission }; class Item174 { - position[]={791.77765,6.0095086,1874.0487}; + position[]={797.763,6.0081396,1879.1583}; azimut=50; id=253; side="EMPTY"; @@ -3710,7 +3718,7 @@ class Mission }; class Item175 { - position[]={794.73779,6.0072742,1876.7825}; + position[]={800.40985,6.0021162,1881.7063}; azimut=50; id=254; side="EMPTY"; @@ -3719,7 +3727,7 @@ class Mission }; class Item176 { - position[]={797.763,6.0081396,1879.1583}; + position[]={803.37006,5.9992666,1883.92}; azimut=50; id=255; side="EMPTY"; @@ -3728,7 +3736,7 @@ class Mission }; class Item177 { - position[]={800.40985,6.0021162,1881.7063}; + position[]={806.3302,5.9995685,1886.6538}; azimut=50; id=256; side="EMPTY"; @@ -3737,7 +3745,7 @@ class Mission }; class Item178 { - position[]={803.37006,5.9992666,1883.92}; + position[]={809.35541,6.0004344,1889.0297}; azimut=50; id=257; side="EMPTY"; @@ -3746,7 +3754,7 @@ class Mission }; class Item179 { - position[]={806.3302,5.9995685,1886.6538}; + position[]={811.86304,5.9980893,1891.4329}; azimut=50; id=258; side="EMPTY"; @@ -3755,7 +3763,7 @@ class Mission }; class Item180 { - position[]={809.35541,6.0004344,1889.0297}; + position[]={814.82324,5.9951377,1893.6466}; azimut=50; id=259; side="EMPTY"; @@ -3764,7 +3772,7 @@ class Mission }; class Item181 { - position[]={811.86304,5.9980893,1891.4329}; + position[]={817.78339,5.9914927,1896.3804}; azimut=50; id=260; side="EMPTY"; @@ -3773,7 +3781,7 @@ class Mission }; class Item182 { - position[]={814.82324,5.9951377,1893.6466}; + position[]={820.80859,5.9899998,1898.7562}; azimut=50; id=261; side="EMPTY"; @@ -3782,7 +3790,7 @@ class Mission }; class Item183 { - position[]={817.78339,5.9914927,1896.3804}; + position[]={823.76843,5.9899998,1901.382}; azimut=50; id=262; side="EMPTY"; @@ -3791,7 +3799,7 @@ class Mission }; class Item184 { - position[]={820.80859,5.9899998,1898.7562}; + position[]={826.72864,5.9895668,1903.5957}; azimut=50; id=263; side="EMPTY"; @@ -3800,7 +3808,7 @@ class Mission }; class Item185 { - position[]={823.76843,5.9899998,1901.382}; + position[]={829.68878,5.9855208,1906.3295}; azimut=50; id=264; side="EMPTY"; @@ -3809,7 +3817,7 @@ class Mission }; class Item186 { - position[]={826.72864,5.9895668,1903.5957}; + position[]={832.71399,5.9895959,1908.7053}; azimut=50; id=265; side="EMPTY"; @@ -3818,7 +3826,7 @@ class Mission }; class Item187 { - position[]={829.68878,5.9855208,1906.3295}; + position[]={735.53778,6,1817.754}; azimut=50; id=266; side="EMPTY"; @@ -3827,7 +3835,7 @@ class Mission }; class Item188 { - position[]={832.71399,5.9895959,1908.7053}; + position[]={738.56299,6,1820.1299}; azimut=50; id=267; side="EMPTY"; @@ -3836,7 +3844,7 @@ class Mission }; class Item189 { - position[]={735.53778,6,1817.754}; + position[]={741.07062,6.0007081,1822.5331}; azimut=50; id=268; side="EMPTY"; @@ -3845,7 +3853,7 @@ class Mission }; class Item190 { - position[]={738.56299,6,1820.1299}; + position[]={744.03082,6.0599179,1824.7468}; azimut=50; id=269; side="EMPTY"; @@ -3854,7 +3862,7 @@ class Mission }; class Item191 { - position[]={741.07062,6.0007081,1822.5331}; + position[]={746.99097,6.0802398,1827.4806}; azimut=50; id=270; side="EMPTY"; @@ -3863,7 +3871,7 @@ class Mission }; class Item192 { - position[]={744.03082,6.0599179,1824.7468}; + position[]={750.01617,6,1829.8564}; azimut=50; id=271; side="EMPTY"; @@ -3872,7 +3880,7 @@ class Mission }; class Item193 { - position[]={746.99097,6.0802398,1827.4806}; + position[]={752.97601,6.0628829,1832.4822}; azimut=50; id=272; side="EMPTY"; @@ -3881,7 +3889,7 @@ class Mission }; class Item194 { - position[]={750.01617,6,1829.8564}; + position[]={755.93622,6.1273174,1834.6959}; azimut=50; id=273; side="EMPTY"; @@ -3890,7 +3898,7 @@ class Mission }; class Item195 { - position[]={752.97601,6.0628829,1832.4822}; + position[]={758.89636,6.2080326,1837.4297}; azimut=50; id=274; side="EMPTY"; @@ -3899,7 +3907,7 @@ class Mission }; class Item196 { - position[]={755.93622,6.1273174,1834.6959}; + position[]={761.75964,6.1972761,1839.0905}; azimut=50; id=275; side="EMPTY"; @@ -3908,7 +3916,7 @@ class Mission }; class Item197 { - position[]={758.89636,6.2080326,1837.4297}; + position[]={764.78485,6.1882725,1841.4663}; azimut=50; id=276; side="EMPTY"; @@ -3917,7 +3925,7 @@ class Mission }; class Item198 { - position[]={761.75964,6.1972761,1839.0905}; + position[]={767.29248,6.1180358,1843.8695}; azimut=50; id=277; side="EMPTY"; @@ -3926,7 +3934,7 @@ class Mission }; class Item199 { - position[]={764.78485,6.1882725,1841.4663}; + position[]={770.25269,6.0408273,1846.0833}; azimut=50; id=278; side="EMPTY"; @@ -3935,7 +3943,7 @@ class Mission }; class Item200 { - position[]={767.29248,6.1180358,1843.8695}; + position[]={773.21283,6.0559835,1848.817}; azimut=50; id=279; side="EMPTY"; @@ -3944,7 +3952,7 @@ class Mission }; class Item201 { - position[]={770.25269,6.0408273,1846.0833}; + position[]={776.23804,6.0940714,1851.1929}; azimut=50; id=280; side="EMPTY"; @@ -3953,7 +3961,7 @@ class Mission }; class Item202 { - position[]={773.21283,6.0559835,1848.817}; + position[]={779.19788,6.1083808,1853.8186}; azimut=50; id=281; side="EMPTY"; @@ -3962,7 +3970,7 @@ class Mission }; class Item203 { - position[]={776.23804,6.0940714,1851.1929}; + position[]={782.15808,6.05721,1856.0323}; azimut=50; id=282; side="EMPTY"; @@ -3971,7 +3979,7 @@ class Mission }; class Item204 { - position[]={779.19788,6.1083808,1853.8186}; + position[]={785.11823,6.0553093,1858.7661}; azimut=50; id=283; side="EMPTY"; @@ -3980,7 +3988,7 @@ class Mission }; class Item205 { - position[]={782.15808,6.05721,1856.0323}; + position[]={788.05688,6.0564451,1861.2535}; azimut=50; id=284; side="EMPTY"; @@ -3989,7 +3997,7 @@ class Mission }; class Item206 { - position[]={785.11823,6.0553093,1858.7661}; + position[]={791.08209,6.0123706,1863.6294}; azimut=50; id=285; side="EMPTY"; @@ -3998,7 +4006,7 @@ class Mission }; class Item207 { - position[]={788.05688,6.0564451,1861.2535}; + position[]={793.58972,6.0284133,1866.0326}; azimut=50; id=286; side="EMPTY"; @@ -4007,7 +4015,7 @@ class Mission }; class Item208 { - position[]={791.08209,6.0123706,1863.6294}; + position[]={796.54993,6.0390811,1868.2463}; azimut=50; id=287; side="EMPTY"; @@ -4016,7 +4024,7 @@ class Mission }; class Item209 { - position[]={793.58972,6.0284133,1866.0326}; + position[]={799.51007,6.032093,1870.9801}; azimut=50; id=288; side="EMPTY"; @@ -4025,7 +4033,7 @@ class Mission }; class Item210 { - position[]={796.54993,6.0390811,1868.2463}; + position[]={802.53528,6.02634,1873.356}; azimut=50; id=289; side="EMPTY"; @@ -4034,7 +4042,7 @@ class Mission }; class Item211 { - position[]={799.51007,6.032093,1870.9801}; + position[]={805.49512,6.0093946,1875.9817}; azimut=50; id=290; side="EMPTY"; @@ -4043,7 +4051,7 @@ class Mission }; class Item212 { - position[]={802.53528,6.02634,1873.356}; + position[]={808.45532,6.0022016,1878.1954}; azimut=50; id=291; side="EMPTY"; @@ -4052,7 +4060,7 @@ class Mission }; class Item213 { - position[]={805.49512,6.0093946,1875.9817}; + position[]={811.41547,6.007906,1880.9292}; azimut=50; id=292; side="EMPTY"; @@ -4061,7 +4069,7 @@ class Mission }; class Item214 { - position[]={808.45532,6.0022016,1878.1954}; + position[]={814.73071,6.0152845,1883.2673}; azimut=50; id=293; side="EMPTY"; @@ -4070,7 +4078,7 @@ class Mission }; class Item215 { - position[]={811.41547,6.007906,1880.9292}; + position[]={817.75592,6.0109358,1885.6432}; azimut=50; id=294; side="EMPTY"; @@ -4079,7 +4087,7 @@ class Mission }; class Item216 { - position[]={814.73071,6.0152845,1883.2673}; + position[]={820.26355,6,1888.0464}; azimut=50; id=295; side="EMPTY"; @@ -4088,7 +4096,7 @@ class Mission }; class Item217 { - position[]={817.75592,6.0109358,1885.6432}; + position[]={823.22375,5.9996529,1890.2601}; azimut=50; id=296; side="EMPTY"; @@ -4097,7 +4105,7 @@ class Mission }; class Item218 { - position[]={820.26355,6,1888.0464}; + position[]={826.1839,5.9960079,1892.9939}; azimut=50; id=297; side="EMPTY"; @@ -4106,7 +4114,7 @@ class Mission }; class Item219 { - position[]={823.22375,5.9996529,1890.2601}; + position[]={829.20911,5.9928403,1895.3698}; azimut=50; id=298; side="EMPTY"; @@ -4115,7 +4123,7 @@ class Mission }; class Item220 { - position[]={826.1839,5.9960079,1892.9939}; + position[]={832.16895,5.9897804,1897.9955}; azimut=50; id=299; side="EMPTY"; @@ -4124,7 +4132,7 @@ class Mission }; class Item221 { - position[]={829.20911,5.9928403,1895.3698}; + position[]={835.12915,5.9828825,1900.2092}; azimut=50; id=300; side="EMPTY"; @@ -4133,7 +4141,7 @@ class Mission }; class Item222 { - position[]={832.16895,5.9897804,1897.9955}; + position[]={838.08929,5.9752903,1902.943}; azimut=50; id=301; side="EMPTY"; @@ -4142,7 +4150,7 @@ class Mission }; class Item223 { - position[]={835.12915,5.9828825,1900.2092}; + position[]={739.97906,6,1814.1835}; azimut=50; id=302; side="EMPTY"; @@ -4151,7 +4159,7 @@ class Mission }; class Item224 { - position[]={838.08929,5.9752903,1902.943}; + position[]={743.00427,6,1816.5593}; azimut=50; id=303; side="EMPTY"; @@ -4160,7 +4168,7 @@ class Mission }; class Item225 { - position[]={739.97906,6,1814.1835}; + position[]={745.5119,6,1818.9625}; azimut=50; id=304; side="EMPTY"; @@ -4169,7 +4177,7 @@ class Mission }; class Item226 { - position[]={743.00427,6,1816.5593}; + position[]={748.47211,6,1821.1763}; azimut=50; id=305; side="EMPTY"; @@ -4178,7 +4186,7 @@ class Mission }; class Item227 { - position[]={745.5119,6,1818.9625}; + position[]={751.43225,6,1823.91}; azimut=50; id=306; side="EMPTY"; @@ -4187,7 +4195,7 @@ class Mission }; class Item228 { - position[]={748.47211,6,1821.1763}; + position[]={754.45746,6,1826.2859}; azimut=50; id=307; side="EMPTY"; @@ -4196,7 +4204,7 @@ class Mission }; class Item229 { - position[]={751.43225,6,1823.91}; + position[]={757.4173,6,1828.9116}; azimut=50; id=308; side="EMPTY"; @@ -4205,7 +4213,7 @@ class Mission }; class Item230 { - position[]={754.45746,6,1826.2859}; + position[]={760.3775,6.0315113,1831.1254}; azimut=50; id=309; side="EMPTY"; @@ -4214,7 +4222,7 @@ class Mission }; class Item231 { - position[]={757.4173,6,1828.9116}; + position[]={763.33765,6.108057,1833.8591}; azimut=50; id=310; side="EMPTY"; @@ -4223,7 +4231,7 @@ class Mission }; class Item232 { - position[]={760.3775,6.0315113,1831.1254}; + position[]={770.72192,6.0497842,1835.896}; azimut=50; id=311; side="EMPTY"; @@ -4232,7 +4240,7 @@ class Mission }; class Item233 { - position[]={763.33765,6.108057,1833.8591}; + position[]={773.74713,6,1838.2719}; azimut=50; id=312; side="EMPTY"; @@ -4241,7 +4249,7 @@ class Mission }; class Item234 { - position[]={770.72192,6.0497842,1835.896}; + position[]={776.25476,6,1840.675}; azimut=50; id=313; side="EMPTY"; @@ -4250,7 +4258,7 @@ class Mission }; class Item235 { - position[]={773.74713,6,1838.2719}; + position[]={779.21497,6,1842.8888}; azimut=50; id=314; side="EMPTY"; @@ -4259,7 +4267,7 @@ class Mission }; class Item236 { - position[]={776.25476,6,1840.675}; + position[]={782.17511,6.0099626,1845.6226}; azimut=50; id=315; side="EMPTY"; @@ -4268,7 +4276,7 @@ class Mission }; class Item237 { - position[]={779.21497,6,1842.8888}; + position[]={785.20032,6.0367942,1847.9984}; azimut=50; id=316; side="EMPTY"; @@ -4277,7 +4285,7 @@ class Mission }; class Item238 { - position[]={782.17511,6.0099626,1845.6226}; + position[]={788.16016,6,1850.6241}; azimut=50; id=317; side="EMPTY"; @@ -4286,7 +4294,7 @@ class Mission }; class Item239 { - position[]={785.20032,6.0367942,1847.9984}; + position[]={791.12036,6.0031543,1852.8379}; azimut=50; id=318; side="EMPTY"; @@ -4295,7 +4303,7 @@ class Mission }; class Item240 { - position[]={788.16016,6,1850.6241}; + position[]={794.08051,6.0085816,1855.5717}; azimut=50; id=319; side="EMPTY"; @@ -4304,7 +4312,7 @@ class Mission }; class Item241 { - position[]={791.12036,6.0031543,1852.8379}; + position[]={796.4917,6,1857.3065}; azimut=50; id=320; side="EMPTY"; @@ -4313,7 +4321,7 @@ class Mission }; class Item242 { - position[]={794.08051,6.0085816,1855.5717}; + position[]={799.51691,6,1859.6824}; azimut=50; id=321; side="EMPTY"; @@ -4322,7 +4330,7 @@ class Mission }; class Item243 { - position[]={796.4917,6,1857.3065}; + position[]={802.02454,6.0132709,1862.0856}; azimut=50; id=322; side="EMPTY"; @@ -4331,7 +4339,7 @@ class Mission }; class Item244 { - position[]={799.51691,6,1859.6824}; + position[]={804.98474,6.0286632,1864.2993}; azimut=50; id=323; side="EMPTY"; @@ -4340,7 +4348,7 @@ class Mission }; class Item245 { - position[]={802.02454,6.0132709,1862.0856}; + position[]={807.94489,6.0137005,1867.0331}; azimut=50; id=324; side="EMPTY"; @@ -4349,7 +4357,7 @@ class Mission }; class Item246 { - position[]={804.98474,6.0286632,1864.2993}; + position[]={810.97009,6,1869.4089}; azimut=50; id=325; side="EMPTY"; @@ -4358,7 +4366,7 @@ class Mission }; class Item247 { - position[]={807.94489,6.0137005,1867.0331}; + position[]={813.92993,6,1872.0347}; azimut=50; id=326; side="EMPTY"; @@ -4367,7 +4375,7 @@ class Mission }; class Item248 { - position[]={810.97009,6,1869.4089}; + position[]={816.89014,6,1874.2484}; azimut=50; id=327; side="EMPTY"; @@ -4376,7 +4384,7 @@ class Mission }; class Item249 { - position[]={813.92993,6,1872.0347}; + position[]={819.85028,6.0052857,1876.9822}; azimut=50; id=328; side="EMPTY"; @@ -4385,7 +4393,7 @@ class Mission }; class Item250 { - position[]={816.89014,6,1874.2484}; + position[]={820.00104,6.0066948,1877.5104}; azimut=50; id=329; side="EMPTY"; @@ -4394,7 +4402,7 @@ class Mission }; class Item251 { - position[]={819.85028,6.0052857,1876.9822}; + position[]={823.02625,6.0052633,1879.8862}; azimut=50; id=330; side="EMPTY"; @@ -4403,7 +4411,7 @@ class Mission }; class Item252 { - position[]={820.00104,6.0066948,1877.5104}; + position[]={825.53387,6,1882.2894}; azimut=50; id=331; side="EMPTY"; @@ -4412,7 +4420,7 @@ class Mission }; class Item253 { - position[]={823.02625,6.0052633,1879.8862}; + position[]={828.49408,6,1884.5032}; azimut=50; id=332; side="EMPTY"; @@ -4421,7 +4429,7 @@ class Mission }; class Item254 { - position[]={825.53387,6,1882.2894}; + position[]={831.45422,6,1887.2369}; azimut=50; id=333; side="EMPTY"; @@ -4430,7 +4438,7 @@ class Mission }; class Item255 { - position[]={828.49408,6,1884.5032}; + position[]={834.47943,6,1889.6128}; azimut=50; id=334; side="EMPTY"; @@ -4439,7 +4447,7 @@ class Mission }; class Item256 { - position[]={831.45422,6,1887.2369}; + position[]={837.43927,5.997015,1892.2385}; azimut=50; id=335; side="EMPTY"; @@ -4448,7 +4456,7 @@ class Mission }; class Item257 { - position[]={834.47943,6,1889.6128}; + position[]={840.39948,5.9881272,1894.4523}; azimut=50; id=336; side="EMPTY"; @@ -4457,7 +4465,7 @@ class Mission }; class Item258 { - position[]={837.43927,5.997015,1892.2385}; + position[]={843.35962,5.9889588,1897.186}; azimut=50; id=337; side="EMPTY"; @@ -4466,7 +4474,7 @@ class Mission }; class Item259 { - position[]={840.39948,5.9881272,1894.4523}; + position[]={847.39404,5.9995766,1900.049}; azimut=50; id=338; side="EMPTY"; @@ -4475,7 +4483,7 @@ class Mission }; class Item260 { - position[]={843.35962,5.9889588,1897.186}; + position[]={843.32288,5.9832916,1905.5531}; azimut=50; id=339; side="EMPTY"; @@ -4484,7 +4492,7 @@ class Mission }; class Item261 { - position[]={847.39404,5.9995766,1900.049}; + position[]={837.78467,5.9788609,1912.0469}; azimut=50; id=340; side="EMPTY"; @@ -4493,7 +4501,7 @@ class Mission }; class Item262 { - position[]={843.32288,5.9832916,1905.5531}; + position[]={732.30066,6,1812.7396}; azimut=50; id=341; side="EMPTY"; @@ -4502,7 +4510,7 @@ class Mission }; class Item263 { - position[]={837.78467,5.9788609,1912.0469}; + position[]={728.10437,6,1817.1342}; azimut=50; id=342; side="EMPTY"; @@ -4511,7 +4519,7 @@ class Mission }; class Item264 { - position[]={732.30066,6,1812.7396}; + position[]={723.90808,6.0526814,1821.5598}; azimut=50; id=343; side="EMPTY"; @@ -4520,25 +4528,25 @@ class Mission }; class Item265 { - position[]={728.10437,6,1817.1342}; + position[]={746.51184,6.1592007,1839.6057}; azimut=50; id=344; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="TargetBootcampHumanSimple_F"; skill=0.60000002; }; class Item266 { - position[]={723.90808,6.0526814,1821.5598}; + position[]={757.67786,6.1238985,1847.8473}; azimut=50; id=345; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="TargetBootcampHumanSimple_F"; skill=0.60000002; }; class Item267 { - position[]={746.51184,6.1592007,1839.6057}; + position[]={770.25092,6.0724678,1856.8167}; azimut=50; id=346; side="EMPTY"; @@ -4547,7 +4555,7 @@ class Mission }; class Item268 { - position[]={757.67786,6.1238985,1847.8473}; + position[]={783.87952,6.024065,1866.1661}; azimut=50; id=347; side="EMPTY"; @@ -4556,7 +4564,7 @@ class Mission }; class Item269 { - position[]={770.25092,6.0724678,1856.8167}; + position[]={796.22766,6.0123401,1874.8242}; azimut=50; id=348; side="EMPTY"; @@ -4565,7 +4573,7 @@ class Mission }; class Item270 { - position[]={783.87952,6.024065,1866.1661}; + position[]={808.92352,6.0073528,1883.4091}; azimut=50; id=349; side="EMPTY"; @@ -4574,7 +4582,7 @@ class Mission }; class Item271 { - position[]={796.22766,6.0123401,1874.8242}; + position[]={821.53516,5.9971676,1892.1241}; azimut=50; id=350; side="EMPTY"; @@ -4583,7 +4591,7 @@ class Mission }; class Item272 { - position[]={808.92352,6.0073528,1883.4091}; + position[]={835.62067,5.9811368,1901.0265}; azimut=50; id=351; side="EMPTY"; @@ -4592,7 +4600,7 @@ class Mission }; class Item273 { - position[]={821.53516,5.9971676,1892.1241}; + position[]={847.23096,5.9945884,1905.9192}; azimut=50; id=352; side="EMPTY"; @@ -4601,7 +4609,7 @@ class Mission }; class Item274 { - position[]={835.62067,5.9811368,1901.0265}; + position[]={849.21588,6,1903.2705}; azimut=50; id=353; side="EMPTY"; @@ -4610,7 +4618,7 @@ class Mission }; class Item275 { - position[]={847.23096,5.9945884,1905.9192}; + position[]={851.36627,6,1900.9543}; azimut=50; id=354; side="EMPTY"; @@ -4619,34 +4627,36 @@ class Mission }; class Item276 { - position[]={849.21588,6,1903.2705}; + position[]={835.84106,5.9827728,1915.3969}; azimut=50; id=355; side="EMPTY"; - vehicle="TargetBootcampHumanSimple_F"; + vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item277 { - position[]={851.36627,6,1900.9543}; - azimut=50; + position[]={612.5592,6.1130395,1766.0806}; + azimut=47; id=356; side="EMPTY"; - vehicle="TargetBootcampHumanSimple_F"; + vehicle="Land_CncBarrier_stripes_F"; + leader=1; skill=0.60000002; }; class Item278 { - position[]={835.84106,5.9827728,1915.3969}; - azimut=50; + position[]={615.22461,6.1123624,1763.1611}; + azimut=47; id=357; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_CncBarrier_stripes_F"; + leader=1; skill=0.60000002; }; class Item279 { - position[]={666.92737,6.0747705,1817.8198}; + position[]={617.9707,6.1118112,1760.2085}; azimut=47; id=358; side="EMPTY"; @@ -4656,7 +4666,7 @@ class Mission }; class Item280 { - position[]={669.62805,6.0745568,1814.9131}; + position[]={620.83026,6.111268,1757.1453}; azimut=47; id=359; side="EMPTY"; @@ -4666,7 +4676,7 @@ class Mission }; class Item281 { - position[]={672.37415,6.0751076,1811.9604}; + position[]={630.09808,6.1594801,1777.1102}; azimut=47; id=360; side="EMPTY"; @@ -4676,7 +4686,7 @@ class Mission }; class Item282 { - position[]={675.2337,6.0756507,1808.8972}; + position[]={632.84418,6.1555433,1774.1576}; azimut=47; id=361; side="EMPTY"; @@ -4686,7 +4696,7 @@ class Mission }; class Item283 { - position[]={684.50153,6.0088487,1828.8622}; + position[]={635.70374,6.1514592,1771.0944}; azimut=47; id=362; side="EMPTY"; @@ -4696,8 +4706,8 @@ class Mission }; class Item284 { - position[]={687.24762,6.0091238,1825.9095}; - azimut=47; + position[]={623.77191,6.1113486,1756.1417}; + azimut=137; id=363; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; @@ -4706,8 +4716,8 @@ class Mission }; class Item285 { - position[]={690.10718,6.0093951,1822.8463}; - azimut=47; + position[]={627.08533,6.118546,1759.2059}; + azimut=137; id=364; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; @@ -4716,7 +4726,7 @@ class Mission }; class Item286 { - position[]={678.17535,6.0704823,1807.8937}; + position[]={630.12653,6.1373067,1762.0898}; azimut=137; id=365; side="EMPTY"; @@ -4726,7 +4736,7 @@ class Mission }; class Item287 { - position[]={681.48877,6.0534754,1810.9579}; + position[]={633.28107,6.1302304,1765.0156}; azimut=137; id=366; side="EMPTY"; @@ -4736,7 +4746,7 @@ class Mission }; class Item288 { - position[]={684.52997,6.0496469,1813.8418}; + position[]={636.5719,6.1396632,1768.0618}; azimut=137; id=367; side="EMPTY"; @@ -4746,38 +4756,36 @@ class Mission }; class Item289 { - position[]={687.68451,6.0283737,1816.7676}; - azimut=137; + position[]={706.69177,6.0280285,1802.6276}; id=368; side="EMPTY"; - vehicle="Land_CncBarrier_stripes_F"; + vehicle="Land_HelipadEmpty_F"; leader=1; skill=0.60000002; + text="respawn_obj"; }; class Item290 { - position[]={690.97534,6.0249662,1819.8137}; - azimut=137; + position[]={632.60626,6.1510415,1770.7809}; + azimut=47; id=369; side="EMPTY"; - vehicle="Land_CncBarrier_stripes_F"; - leader=1; + vehicle="BlockConcrete_F"; skill=0.60000002; }; class Item291 { - position[]={706.69177,6.0280285,1802.6276}; + position[]={629.41101,6.1462154,1767.7505}; + azimut=47; id=370; side="EMPTY"; - vehicle="Land_HelipadEmpty_F"; - leader=1; + vehicle="BlockConcrete_F"; skill=0.60000002; - text="respawn_obj"; }; class Item292 { - position[]={687.0097,6.0139432,1822.5328}; - azimut=47; + position[]={626.59137,6.1509094,1774.0905}; + azimut=137; id=371; side="EMPTY"; vehicle="BlockConcrete_F"; @@ -4785,390 +4793,1070 @@ class Mission }; class Item293 { - position[]={683.81445,6.0262408,1819.5024}; + position[]={625.11914,6.15238,1776.666}; azimut=47; id=372; side="EMPTY"; - vehicle="BlockConcrete_F"; - skill=0.60000002; - }; - class Item294 - { - position[]={680.99481,6.0175505,1825.8424}; - azimut=137; - id=373; - side="EMPTY"; - vehicle="BlockConcrete_F"; - skill=0.60000002; - }; - class Item295 - { - position[]={679.52258,6.0160789,1828.418}; - azimut=47; - id=374; - side="EMPTY"; vehicle="Land_RampConcrete_F"; skill=0.60000002; }; - class Item296 + class Item294 { position[]={562.69476,5.9200697,1773.7856}; azimut=137; - id=375; + id=373; side="EMPTY"; vehicle="B_Slingload_01_Fuel_F"; leader=1; skill=0.60000002; init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; - class Item297 + class Item295 { position[]={569.4826,5.9463558,1770.5465}; azimut=137; - id=376; + id=374; side="EMPTY"; vehicle="B_Slingload_01_Medevac_F"; leader=1; skill=0.60000002; init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; - class Item298 + class Item296 { position[]={564.71368,5.9119935,1775.7009}; azimut=137; - id=377; + id=375; side="EMPTY"; vehicle="B_Slingload_01_Medevac_F"; leader=1; skill=0.60000002; init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; - class Item299 + class Item297 { position[]={669.15594,6.0016575,1849.6006}; azimut=317; - id=378; + id=376; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; text="garage_spawner_0"; init="this enableSimulationGlobal false;"; }; - class Item300 + class Item298 { position[]={654.04657,6.0722308,1835.1169}; azimut=317; - id=379; + id=377; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; text="garage_spawner_1"; init="this enableSimulationGlobal false;"; }; - class Item301 + class Item299 { position[]={638.38983,6.1403613,1821.3391}; azimut=317; - id=380; + id=378; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; text="garage_spawner_2"; init="this enableSimulationGlobal false;"; }; - class Item302 + class Item300 { position[]={623.54932,6.1599998,1807.7683}; azimut=317; - id=381; + id=379; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; text="garage_spawner_3"; init="this enableSimulationGlobal false;"; }; - class Item303 + class Item301 { position[]={603.19305,6.1418161,1790.6688}; azimut=317; - id=382; + id=380; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; text="garage_spawner_4"; init="this enableSimulationGlobal false;"; }; - class Item304 + class Item302 { position[]={685.37543,6,1780.1918}; azimut=50; - id=383; + id=381; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item305 + class Item303 { position[]={681.90033,6.0063958,1784.2704}; azimut=50; - id=384; + id=382; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item306 + class Item304 { position[]={676.88818,6.0185676,1774.6417}; azimut=50; - id=385; + id=383; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item307 + class Item305 { position[]={673.41309,6.0461111,1778.7203}; azimut=50; - id=386; + id=384; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item308 + class Item306 { position[]={670.71643,6.0873852,1782.6809}; azimut=137; - id=387; + id=385; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; text="garage_spawner_5"; init="this enableSimulationGlobal false;"; }; - class Item309 + class Item307 { position[]={679.18158,6.0524573,1788.1989}; azimut=137; - id=388; + id=386; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; text="garage_spawner_6"; init="this enableSimulationGlobal false;"; }; - class Item310 + class Item308 { position[]={678.61255,6.0345254,1780.3463}; azimut=320; - id=389; + id=387; side="EMPTY"; vehicle="Land_HelipadEmpty_F"; leader=1; skill=0.60000002; text="garage_spawn_5"; }; - class Item311 + class Item309 { position[]={687.05109,6,1786.4639}; azimut=320; - id=390; + id=388; side="EMPTY"; vehicle="Land_HelipadEmpty_F"; leader=1; skill=0.60000002; text="garage_spawn_6"; }; - class Item312 + class Item310 { position[]={585.03925,5.9998951,1739.4398}; azimut=140; - id=391; + id=389; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item313 + class Item311 { position[]={588.39813,6,1742.255}; azimut=140; - id=392; + id=390; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item314 + class Item312 { position[]={598.42938,6.0542912,1750.6797}; azimut=140; - id=393; + id=391; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item315 + class Item313 { position[]={595.13855,6.0203271,1747.9103}; azimut=140; - id=394; + id=392; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item316 + class Item314 { position[]={591.71149,6,1745.0254}; azimut=140; - id=395; + id=393; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item317 + class Item315 { position[]={600.51654,6.0593295,1750.4819}; azimut=50; - id=396; + id=394; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item318 + class Item316 { position[]={611.72797,6.0272517,1737.1316}; azimut=50; - id=397; + id=395; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item319 + class Item317 { position[]={609.2088,6.0457883,1740.1292}; azimut=50; - id=398; + id=396; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item320 + class Item318 { position[]={602.94495,6.0579972,1747.554}; azimut=50; - id=399; + id=397; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item321 + class Item319 { position[]={609.66278,6.0466328,1740.8999}; azimut=5; - id=400; + id=398; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item322 + class Item320 { position[]={603.74005,6.0610042,1747.8864}; azimut=95; - id=401; + id=399; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item323 + class Item321 { position[]={598.12921,6,1723.8201}; azimut=140; - id=402; + id=400; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item324 + class Item322 { position[]={601.4881,6.0021806,1726.6353}; azimut=140; - id=403; + id=401; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item325 + class Item323 { position[]={611.51935,6.017067,1735.0599}; azimut=140; - id=404; + id=402; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item326 + class Item324 { position[]={608.22852,6,1732.2905}; azimut=140; - id=405; + id=403; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item327 + class Item325 { position[]={604.80145,6.0035982,1729.4056}; azimut=140; - id=406; + id=404; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item328 + class Item326 { position[]={610.77899,6.0364151,1738.7897}; azimut=230; - id=407; + id=405; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; text="garage_scrap"; init="this enableSimulationGlobal false;"; }; - class Item329 + class Item327 { position[]={725.45691,6.0458541,1846.1737}; azimut=230; - id=408; + id=406; side="EMPTY"; vehicle="RHS_UH60M_MEV"; skill=0.60000002; init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; - class Item330 + class Item328 { position[]={571.04938,5.8973398,1778.9484}; azimut=137; - id=409; + id=407; side="EMPTY"; vehicle="B_APC_Tracked_01_CRV_F"; skill=0.60000002; init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; + class Item329 + { + position[]={680.40808,6.0993128,1803.2831}; + azimut=50; + id=408; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item330 + { + position[]={675.34668,6.0741754,1809.3374}; + azimut=50; + id=409; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item331 + { + position[]={675.979,6.0616417,1813.4052}; + azimut=147; + id=410; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item332 + { + position[]={682.68005,6.0322962,1817.7988}; + azimut=147; + id=411; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item333 + { + position[]={689.25104,6.011992,1822.1274}; + azimut=147; + id=412; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item334 + { + position[]={697.63477,5.9948435,1827.311}; + azimut=150; + id=413; + side="EMPTY"; + vehicle="Land_HBarrier_1_F"; + leader=1; + skill=0.60000002; + }; + class Item335 + { + position[]={681.74548,6.0610647,1807.8552}; + azimut=237; + id=414; + side="EMPTY"; + vehicle="Land_TableDesk_F"; + leader=1; + skill=0.60000002; + text="cmd_desk"; + }; + class Item336 + { + position[]={680.99677,6.0658684,1807.2673}; + azimut=237; + id=415; + side="EMPTY"; + vehicle="Land_OfficeChair_01_F"; + leader=1; + skill=0.60000002; + }; + class Item337 + { + position[]={681.58813,6.051743,1811.5081}; + azimut=57; + id=416; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item338 + { + position[]={681.92853,6.0522275,1810.9861}; + azimut=57; + id=417; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item339 + { + position[]={682.26898,6.05265,1810.4872}; + azimut=57; + id=418; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item340 + { + position[]={682.58679,6.0540066,1809.9645}; + azimut=57; + id=419; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item341 + { + position[]={682.92719,6.0577292,1809.4196}; + azimut=57; + id=420; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item342 + { + position[]={683.29022,6.0615406,1808.8978}; + azimut=57; + id=421; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item343 + { + position[]={683.63074,6.0651412,1808.399}; + azimut=57; + id=422; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item344 + { + position[]={683.97113,6.0688019,1807.8771}; + azimut=57; + id=423; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item345 + { + position[]={684.31158,6.0717525,1807.3782}; + azimut=57; + id=424; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item346 + { + position[]={684.62939,6.0724773,1806.8555}; + azimut=57; + id=425; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item347 + { + position[]={684.96979,6.0732937,1806.3105}; + azimut=57; + id=426; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item348 + { + position[]={685.33282,6.0743232,1805.7888}; + azimut=57; + id=427; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item349 + { + position[]={683.086,6.0507331,1812.4402}; + azimut=57; + id=428; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item350 + { + position[]={683.42639,6.0543938,1811.9182}; + azimut=57; + id=429; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item351 + { + position[]={683.76685,6.0579939,1811.4193}; + azimut=57; + id=430; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item352 + { + position[]={684.08466,6.0615063,1810.8966}; + azimut=57; + id=431; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item353 + { + position[]={684.42505,6.0652294,1810.3517}; + azimut=57; + id=432; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item354 + { + position[]={684.78809,6.0690413,1809.83}; + azimut=57; + id=433; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item355 + { + position[]={685.1286,6.0726409,1809.3312}; + azimut=57; + id=434; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item356 + { + position[]={685.46899,6.0763025,1808.8092}; + azimut=57; + id=435; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item357 + { + position[]={685.80945,6.0799022,1808.3103}; + azimut=57; + id=436; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item358 + { + position[]={686.12726,6.083415,1807.7876}; + azimut=57; + id=437; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item359 + { + position[]={686.46765,6.0857649,1807.2427}; + azimut=57; + id=438; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item360 + { + position[]={686.83069,6.0867944,1806.7209}; + azimut=57; + id=439; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item361 + { + position[]={684.4704,6.0554767,1813.3026}; + azimut=57; + id=440; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item362 + { + position[]={684.81079,6.0605907,1812.7806}; + azimut=57; + id=441; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item363 + { + position[]={685.15125,6.0649233,1812.2817}; + azimut=57; + id=442; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item364 + { + position[]={685.46906,6.0684361,1811.759}; + azimut=57; + id=443; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item365 + { + position[]={685.80945,6.0721588,1811.2141}; + azimut=57; + id=444; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item366 + { + position[]={686.17249,6.0759706,1810.6924}; + azimut=57; + id=445; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item367 + { + position[]={686.513,6.0795708,1810.1936}; + azimut=57; + id=446; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item368 + { + position[]={686.85339,6.0832319,1809.6716}; + azimut=57; + id=447; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item369 + { + position[]={687.19385,6.086832,1809.1727}; + azimut=57; + id=448; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item370 + { + position[]={687.51166,6.0903444,1808.65}; + azimut=57; + id=449; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item371 + { + position[]={687.85205,6.0940666,1808.1051}; + azimut=57; + id=450; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item372 + { + position[]={688.21509,6.0978785,1807.5834}; + azimut=57; + id=451; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item373 + { + position[]={685.99097,6.0408425,1814.4846}; + azimut=57; + id=452; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item374 + { + position[]={686.33136,6.0459561,1813.9626}; + azimut=57; + id=453; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item375 + { + position[]={686.67181,6.0508232,1813.4637}; + azimut=57; + id=454; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item376 + { + position[]={686.98962,6.0559754,1812.941}; + azimut=57; + id=455; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item377 + { + position[]={687.33002,6.0613337,1812.3961}; + azimut=57; + id=456; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item378 + { + position[]={687.69305,6.0664144,1811.8744}; + azimut=57; + id=457; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item379 + { + position[]={688.03357,6.0712814,1811.3756}; + azimut=57; + id=458; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item380 + { + position[]={688.37396,6.076395,1810.8536}; + azimut=57; + id=459; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item381 + { + position[]={688.71442,6.0812626,1810.3547}; + azimut=57; + id=460; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item382 + { + position[]={689.03223,6.0864148,1809.832}; + azimut=57; + id=461; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item383 + { + position[]={689.37262,6.091773,1809.2871}; + azimut=57; + id=462; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item384 + { + position[]={689.73566,6.0968542,1808.7654}; + azimut=57; + id=463; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item385 + { + position[]={682.53192,6.0658627,1806.7511}; + azimut=237; + id=464; + side="EMPTY"; + vehicle="Land_Laptop_unfolded_F"; + leader=1; + skill=0.60000002; + text="cmd_laptop"; + init="this attachTo[cmd_desk,[0,0,0.58]];"; + }; + class Item386 + { + position[]={687.56439,6.031858,1815.521}; + azimut=57; + id=465; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item387 + { + position[]={687.90479,6.0328031,1814.999}; + azimut=57; + id=466; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item388 + { + position[]={688.24524,6.0376706,1814.5001}; + azimut=57; + id=467; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item389 + { + position[]={688.56305,6.0428233,1813.9774}; + azimut=57; + id=468; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item390 + { + position[]={688.90344,6.0481811,1813.4325}; + azimut=57; + id=469; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item391 + { + position[]={689.26648,6.0532622,1812.9108}; + azimut=57; + id=470; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item392 + { + position[]={689.60699,6.0581293,1812.412}; + azimut=57; + id=471; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item393 + { + position[]={689.94739,6.0632429,1811.89}; + azimut=57; + id=472; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item394 + { + position[]={690.28784,6.0677261,1811.3911}; + azimut=57; + id=473; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item395 + { + position[]={690.60565,6.0724549,1810.8684}; + azimut=57; + id=474; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item396 + { + position[]={690.94604,6.0773587,1810.3235}; + azimut=57; + id=475; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item397 + { + position[]={691.30908,6.0819559,1809.8018}; + azimut=57; + id=476; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item398 + { + position[]={695.21124,5.9986386,1825.8096}; + azimut=150; + id=477; + side="EMPTY"; + vehicle="Land_HBarrier_1_F"; + leader=1; + skill=0.60000002; + }; }; class Markers { @@ -5915,7 +6603,7 @@ class Mission }; class Item83 { - position[]={679.20544,6.034339,1820.4172}; + position[]={624.802,6.1412897,1768.6653}; name="mrk_rep"; text="Repair point"; type="b_maint"; @@ -5989,7 +6677,7 @@ class Mission items=3; class Item0 { - position[]={683.15253,6.0177445,1823.5389}; + position[]={628.74908,6.1507149,1771.787}; a=4.5; b=8; angle=137; @@ -6010,7 +6698,7 @@ class Mission }; class Item1 { - position[]={675.75043,6.0533237,1816.7531}; + position[]={621.34698,6.1317978,1765.0011}; a=5.5; b=8; angle=137; From cde7725750475ad8f38fc40e0cd4ed63a2b4884d Mon Sep 17 00:00:00 2001 From: Jochem Date: Sat, 12 Sep 2015 22:57:44 +0200 Subject: [PATCH 06/17] 120915 -Added performance scripts -Reworked vehicle init -Refined towing -Got rid of most public arrays --- Functions/AI/radar.sqf | 2 +- Functions/Performance/bodyRemove.sqf | 0 Functions/Performance/itemRemove.sqf | 21 +++++++++++++++ Functions/Performance/loop.sqf | 8 ++++++ Functions/Performance/objectRemove.sqf | 15 +++++++++++ Functions/Performance/vehicleRemove.sqf | 0 Functions/Vehicle/Garage/garageFnc.sqf | 18 +------------ Functions/Vehicle/tow.sqf | 8 +++--- Functions/Vehicle/vehInit.sqf | 4 +-- Functions/fn_compile.sqf | 5 ++++ mission.sqm | 34 ++++++++++++++++++++++--- missionInit.sqf | 6 ++--- 12 files changed, 90 insertions(+), 31 deletions(-) delete mode 100644 Functions/Performance/bodyRemove.sqf create mode 100644 Functions/Performance/objectRemove.sqf delete mode 100644 Functions/Performance/vehicleRemove.sqf diff --git a/Functions/AI/radar.sqf b/Functions/AI/radar.sqf index 4c662c7..b9f6d78 100644 --- a/Functions/AI/radar.sqf +++ b/Functions/AI/radar.sqf @@ -24,7 +24,7 @@ while{(count (_locationO nearObjects ["rhs_p37",50]) >= 1)}do{ _targets = []; { - if((typeOf _x) in radarTArray)then{ + if(_x isKindOf "Air")then{ if(!(terrainIntersectASL [getPosASL _x, _location]))then{ _task = true; [_targets,count _targets,_x] call Zen_ArrayInsert; }; diff --git a/Functions/Performance/bodyRemove.sqf b/Functions/Performance/bodyRemove.sqf deleted file mode 100644 index e69de29..0000000 diff --git a/Functions/Performance/itemRemove.sqf b/Functions/Performance/itemRemove.sqf index e69de29..f1dbd9e 100644 --- a/Functions/Performance/itemRemove.sqf +++ b/Functions/Performance/itemRemove.sqf @@ -0,0 +1,21 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +_items = nearestObjects [(getMarkerPos "mrk_area"), ["WeaponHolder","GroundWeaponHolder","WeaponHolderSimulated","SmokeShell","TimeBombCore"], 10000]; +{ + _nearestPlayers = []; + _location = (getPos this); + { + if (isPlayer _x && _x distance _location < 500) then { + _nearestPlayers pushBack _x; + }; + } forEach (playableUnits + switchableUnits); + if(count _nearestPlayers == 0)then{ + deleteVehicle _x; + }; +}forEach _items; + +_items = nearestObjects [(getMarkerPos "mrk_base"), ["WeaponHolder","GroundWeaponHolder","WeaponHolderSimulated","SmokeShell","TimeBombCore"], 100]; +{ + deleteVehicle _x; +}forEach _items; \ No newline at end of file diff --git a/Functions/Performance/loop.sqf b/Functions/Performance/loop.sqf index e69de29..9268581 100644 --- a/Functions/Performance/loop.sqf +++ b/Functions/Performance/loop.sqf @@ -0,0 +1,8 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +while{true}do{ + []call JOC_objectRemove; + []call JOC_itemRemove; + sleep 600; +}; \ No newline at end of file diff --git a/Functions/Performance/objectRemove.sqf b/Functions/Performance/objectRemove.sqf new file mode 100644 index 0000000..d54db2e --- /dev/null +++ b/Functions/Performance/objectRemove.sqf @@ -0,0 +1,15 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +{ + _nearestPlayers = []; + _location = (getPos this); + { + if (isPlayer _x && _x distance _location < 500) then { + _nearestPlayers pushBack _x; + }; + } forEach (playableUnits + switchableUnits); + if(count _nearestPlayers == 0 or (_x distance respawn_obj) < 100)then{ + deleteVehicle _x; + }; +}forEach allDead; \ No newline at end of file diff --git a/Functions/Performance/vehicleRemove.sqf b/Functions/Performance/vehicleRemove.sqf deleted file mode 100644 index e69de29..0000000 diff --git a/Functions/Vehicle/Garage/garageFnc.sqf b/Functions/Vehicle/Garage/garageFnc.sqf index 56f405d..63369c8 100644 --- a/Functions/Vehicle/Garage/garageFnc.sqf +++ b/Functions/Vehicle/Garage/garageFnc.sqf @@ -25,23 +25,7 @@ if(_dis > 5)then{}else{ _time = 60; }; - //Special cases - if((typeOf _veh) in motorizedArray)then{ - _time = 480; - }; - if((typeOf _veh) in logisticsVehArray)then{ - [_vehicle]spawn JOC_tow; - _time = 480; - }; - if((typeOf _veh) == "rhsusf_M1083A1P2_B_M2_d_MHQ_fmtv_usarmy")then{ - deleteVehicle _veh; - }; - if((typeOf _veh) == "rhsusf_m1a2sep1wd_usarmy" or (typeOf _veh) == "rhsusf_m1a2sep1d_usarmy")then{ - _veh addMagazine "rhs_mag_M1069"; - }; - if((typeOf _veh) == "RHS_UH60M_MEV")then{ - _veh setVariable ["ace_medical_medicClass", 1]; - }; + [_veh]spawn JOC_vehInit; [[[_veh],{(_this select 0) setVehicleLock "LOCKED";}],"BIS_fnc_spawn",true,true] call BIS_fnc_MP; hint format["Vehicle will be ready in %1 minute(s)", (_time/60)]; diff --git a/Functions/Vehicle/tow.sqf b/Functions/Vehicle/tow.sqf index 4a3823b..17639f0 100644 --- a/Functions/Vehicle/tow.sqf +++ b/Functions/Vehicle/tow.sqf @@ -6,12 +6,12 @@ _vehicle = _this select 0; _active = 0; _vehicle setVariable ["towing", false, true]; -//if(isServer)exitWith{}; +if(!isServer)exitWith{}; while{alive _vehicle}do{ - waitUntil{sleep 5;typeOf (vehicle player) == "B_APC_Tracked_01_CRV_F"}; //You cant tow when not in the right vehicle(duh) + waitUntil{sleep 5;((count (crew _vehicle)) > 0)}; //You cant tow when not in the right vehicle(duh) - _targetC = (nearestObjects [_vehicle, towableObjects, 10]) select 0; + _targetC = ((nearestObjects [_vehicle, ["car","truck","tank"], 15]) - [_vehicle]) select 0; targetT = _targetC; @@ -22,7 +22,7 @@ while{alive _vehicle}do{ _positionR = [_positionT,8,(getDir _targetC),"Compass",((getPosASL _targetC) select 2)] call Zen_ExtendPosition; }; - if((_positionV distance _positionR) < 2) then{ + if((_positionV distance _positionR) < 5) then{ (driver _vehicle) addAction ["Attach vehicle", {[_this select 1]spawn JOC_towAttach;}]; waitUntil{_positionT = getPosASL _targetC;_positionV = getPosASL _vehicle;!((_positionV distance _positionR) < 2)}; }; diff --git a/Functions/Vehicle/vehInit.sqf b/Functions/Vehicle/vehInit.sqf index 1136a8b..1bf5965 100644 --- a/Functions/Vehicle/vehInit.sqf +++ b/Functions/Vehicle/vehInit.sqf @@ -3,12 +3,13 @@ ///////////////////////// private["_vehicle"]; +if(!isServer)exitWith{}; + _vehicle = _this select 0; _vehicletype = typeOf _vehicle; _time = 0; sleep 1; - _vehicle setDamage 0; //Blackhwk @@ -35,7 +36,6 @@ if(_vehicletype == "B_Heli_Transport_03_unarmed_F" or _vehicletype == "RHS_CH_47 //Tank if(_vehicletype == "B_MBT_01_cannon_F" or _vehicletype == "rhsusf_m1a2sep1wd_usarmy")then{ _vehicle addMagazine "rhs_mag_M1069"; - cduEnabled = false; }; //IFV diff --git a/Functions/fn_compile.sqf b/Functions/fn_compile.sqf index e46292c..845906b 100644 --- a/Functions/fn_compile.sqf +++ b/Functions/fn_compile.sqf @@ -45,6 +45,11 @@ JOC_loadoutMaster = compileFinal preprocessFileLineNumbers "Functions\Loadouts\m #include "Logistics\fn_logistics_compile.sqf"; JOC_crateInit = compileFinal preprocessFileLineNumbers "Functions\Logistics\crateInit.sqf"; +//Performance +JOC_perfLoop = compileFinal preprocessFileLineNumbers "Functions\Performance\loop.sqf"; +JOC_objectRemove = compileFinal preprocessFileLineNumbers "Functions\Performance\objectRemove.sqf"; +JOC_itemRemove = compileFinal preprocessFileLineNumbers "Functions\Performance\itemRemove.sqf"; + //Player JOC_playerLoop = compileFinal preprocessFileLineNumbers "Functions\Player\playerLoop.sqf"; JOC_playerClick = compileFinal preprocessFileLineNumbers "Functions\Player\click.sqf"; diff --git a/mission.sqm b/mission.sqm index 05a03b8..e4885e9 100644 --- a/mission.sqm +++ b/mission.sqm @@ -2071,7 +2071,7 @@ class Mission }; class Vehicles { - items=399; + items=402; class Item0 { position[]={689.72211,6.0638437,1797.7275}; @@ -3120,7 +3120,7 @@ class Mission azimut=140; id=192; side="EMPTY"; - vehicle="Flag_US_F"; + vehicle="Flag_NATO_F"; skill=0.60000002; text="flagPole"; }; @@ -4793,7 +4793,7 @@ class Mission }; class Item293 { - position[]={625.11914,6.15238,1776.666}; + position[]={624.69867,6.1512594,1776.2457}; azimut=47; id=372; side="EMPTY"; @@ -5857,6 +5857,34 @@ class Mission leader=1; skill=0.60000002; }; + class Item399 + { + position[]={694.07318,5.9928374,1843.0549}; + azimut=140; + id=478; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item400 + { + position[]={709.13666,6.0419507,1852.8446}; + azimut=140; + id=479; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item401 + { + position[]={703.02618,6.0231557,1827.2369}; + azimut=50; + id=480; + side="EMPTY"; + vehicle="Land_HBarrier_1_F"; + leader=1; + skill=0.60000002; + }; }; class Markers { diff --git a/missionInit.sqf b/missionInit.sqf index 5355397..72a0b0d 100644 --- a/missionInit.sqf +++ b/missionInit.sqf @@ -38,13 +38,11 @@ airfieldMarkers = ["mrk_airfield_0","mrk_airfield_1","mrk_airfield_2"]; //Mark "mrk_aaZone_3" setMarkerAlpha 0; //Objects leaderArray = [cmd1,cmd2,a1,b1,c1,h1,r1,anv1,s1,v1,rip1]; -logisticsArray = ["l1","l2","l3","l4","a1"]; +logisticsArray = ["l1","l2","l3","l4"]; logisticsVehArray = ["B_APC_Tracked_01_CRV_F"]; -towableObjects = ["rhsusf_rg33_m2_wd","rhsusf_m1025_w_s_m2","rhsusf_m1025_w_s_Mk19","rhsusf_m113_usarmy","B_Truck_01_fuel_F","B_Truck_01_ammo_F","B_Truck_01_Repair_F","rhsusf_M1078A1P2_B_M2_wd_fmtv_usarmy","RHS_M2A3_BUSKIII_wd","RHS_M6_wd"]; motorizedArray = ["rhsusf_m113_usarmy","RHS_M2A3_BUSKIII_wd","RHS_M6_wd"]; medicalVehArray = ["RHS_UH60M_MEV"]; jetArray = []; -radarTArray = ["RHS_UH1Y_UNARMED","RHS_UH1Y","B_Heli_Transport_03_unarmed_F","RHS_CH_47F","RHS_AH1Z_wd","MELB_AH6M_M"]; //Init variables *DONT CHANGE* opTowns = []; @@ -71,7 +69,6 @@ CHVD_maxObj = 12000; // Set maximimum object view distance (default: 12000) //Public var for local scripts publicVariable "logisticsArray"; -publicVariable "towableObjects"; publicVariable "tankMultiplier"; //Run init scripts @@ -81,6 +78,7 @@ publicVariable "tankMultiplier"; //[] spawn JOC_taskManager; []spawn JOC_cacheInit; //Dunno why I can't use a call for this []spawn JOC_cmdManager; +[]spawn JOC_perfLoop; //call -doesn't need a seperate thread []call JOC_initTowns; From b547b13e8bb3b74d54f07f7f5e1e3ce0001951c2 Mon Sep 17 00:00:00 2001 From: Jochem Date: Sun, 13 Sep 2015 22:27:14 +0200 Subject: [PATCH 07/17] 130915 -Improved caching -Small fix to convoy -Decreased player loop time -Groundwork for frequency table -Added respawn for east --- Functions/Caching/cache.sqf | 8 +- Functions/Caching/cacheInit.sqf | 4 +- Functions/Caching/unCache.sqf | 4 +- Functions/Commander/convoy.sqf | 10 +- Functions/Player/playerLoop.sqf | 4 +- Functions/Radio/freqTable.sqf | 30 ++ mission.sqm | 841 ++++++++++++++++---------------- onPlayerRespawn.sqf | 19 +- 8 files changed, 493 insertions(+), 427 deletions(-) create mode 100644 Functions/Radio/freqTable.sqf diff --git a/Functions/Caching/cache.sqf b/Functions/Caching/cache.sqf index f074c0c..3d9ecf4 100644 --- a/Functions/Caching/cache.sqf +++ b/Functions/Caching/cache.sqf @@ -16,15 +16,15 @@ listT = _list; { if(isNil{_x getVariable "JOC_disable_caching"})then{ _x setVariable ["JOC_disable_caching",false,true]; + _name = [10] call Zen_StringGenerateRandom; + _x setVehicleVarName _name; }; if(!(_x getVariable "JOC_disable_caching"))then{ - if(_x == (leader(group _x)))then{ + if(_x == (leader(group _x)) and (group _x) != cacheGroup)then{ _units = (units(group _x)); _x setVariable ["leader",true,true]; _x setVariable ["units",_units,true]; { - _name = [10] call Zen_StringGenerateRandom; - _x setVehicleVarName _name; _x enableSimulationGlobal false; _x hideObjectGlobal true; [_x] joinSilent cacheGroup; }forEach _units; @@ -32,4 +32,4 @@ listT = _list; }; }forEach _list; -deleteVehicle _trg; \ No newline at end of file +deleteVehicle _trg; diff --git a/Functions/Caching/cacheInit.sqf b/Functions/Caching/cacheInit.sqf index f2c87c4..68e6ac2 100644 --- a/Functions/Caching/cacheInit.sqf +++ b/Functions/Caching/cacheInit.sqf @@ -48,4 +48,6 @@ while {_xA < _hor}do{ }; cacheGroup = createGroup east; -cachedGroups = []; \ No newline at end of file +[cacheGroupLeader]joinSilent cacheGroup; +cacheGroup selectLeader cacheGroupLeader; +cachedGroups = []; diff --git a/Functions/Caching/unCache.sqf b/Functions/Caching/unCache.sqf index 1f813aa..86de139 100644 --- a/Functions/Caching/unCache.sqf +++ b/Functions/Caching/unCache.sqf @@ -16,7 +16,7 @@ _list = (list _trg); _group = createGroup east; [_x] joinSilent _group; _group selectLeader _x; - _units = (_x getVariable "units"); + _units = (_x getVariable "units") - [_x]; _units joinSilent _group; if(!(isNil{_x getVariable "patrol"}))then{ if((vehicle _x) != _x)then{ @@ -31,4 +31,4 @@ _list = (list _trg); _x enableSimulationGlobal true; _x hideObjectGlobal false; }forEach _list; -deleteVehicle _trg; \ No newline at end of file +deleteVehicle _trg; diff --git a/Functions/Commander/convoy.sqf b/Functions/Commander/convoy.sqf index bd5473c..6dfd02b 100644 --- a/Functions/Commander/convoy.sqf +++ b/Functions/Commander/convoy.sqf @@ -9,7 +9,7 @@ _dis = 0; hint "start"; while{_ok == 0}do{ _targetTown = opTowns select (round (random (count opTowns))); - + { _dis = (getPos _targetTown) distance (getPos _x); if(_dis >= 4000)then{ @@ -18,7 +18,7 @@ while{_ok == 0}do{ if(true)exitWith{}; }; }forEach opTowns; - + _count = _count + 1; if(_count == (count opTowns))then{ _dis = _dis - 50; @@ -73,13 +73,13 @@ _name2 setMarkerType "mil_end"; _name2 setMarkerColor "ColorOPFOR"; _name2 setMarkerText "Convoy end"; -[["IntelAdded",[format ["An enemy convoy from %1 is due to leave for %2.", (text _startTown),(text _targetTown)]]],"BIS_fnc_showNotification",west] call BIS_fnc_MP; //Notification +[["IntelAdded",[format ["A convoy from %1 left for %2.", (text _startTown),(text _targetTown)]]],"BIS_fnc_showNotification",west] call BIS_fnc_MP; //Notification waitUntil{sleep 5; (((leader _group)distance _targetP)< 100) or ([units _group]call Zen_AreNotInVehicle)}; if(((leader _group)distance _targetP)< 100)then{ [["IntelAdded",[format ["The enemy convoy arrived at %1",(text _targetTown)]]],"BIS_fnc_showNotification",west] call BIS_fnc_MP; - + _clean = true; while{_clean}do{ _nearestPlayers = []; @@ -101,4 +101,4 @@ if(((leader _group)distance _targetP)< 100)then{ [["IntelAdded",["The enemy convoy has been destroyed"]],"BIS_fnc_showNotification",west] call BIS_fnc_MP; }; deleteMarker _marker; -deleteMarker _marker2; \ No newline at end of file +deleteMarker _marker2; diff --git a/Functions/Player/playerLoop.sqf b/Functions/Player/playerLoop.sqf index 8e1918a..cbd6be2 100644 --- a/Functions/Player/playerLoop.sqf +++ b/Functions/Player/playerLoop.sqf @@ -9,5 +9,5 @@ while{alive player}do{ }else{ player setVariable ["tf_sendingDistanceMultiplicator", 1]; }; - Sleep 60; -}; \ No newline at end of file + Sleep 10; +}; diff --git a/Functions/Radio/freqTable.sqf b/Functions/Radio/freqTable.sqf new file mode 100644 index 0000000..80bf95a --- /dev/null +++ b/Functions/Radio/freqTable.sqf @@ -0,0 +1,30 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +while{true}do{ + []call TFAR_fnc_processGroupFrequencySettings; + + /*(group r1) getVariable "tf_sw_frequency") select 3) select 0) + (group h1) getVariable "tf_sw_frequency") select 3) select 0) + (group log1) getVariable "tf_sw_frequency") select 3) select 0) + (group anv1) getVariable "tf_sw_frequency") select 3) select 0) + (group s1) getVariable "tf_sw_frequency") select 3) select 0) + (group v1) getVariable "tf_sw_frequency") select 3) select 0) + (group rip1) getVariable "tf_sw_frequency") select 3) select 0)*/ + + "mrk_freq_alpha_1" setMarkerText ("ASL SW: "+((((group a0_1) getVariable "tf_sw_frequency") select 2) select 0)); + "mrk_freq_alpha_2" setMarkerText ("A1 SW: "+((((group a1_1) getVariable "tf_sw_frequency") select 2) select 0)); + "mrk_freq_alpha_3" setMarkerText ("A2 SW: "+((((group a2_1) getVariable "tf_sw_frequency") select 2) select 0)); + + "mrk_freq_bravo_1" setMarkerText ("BSL SW: "+((((group b0_1) getVariable "tf_sw_frequency") select 2) select 0)); + "mrk_freq_bravo_2" setMarkerText ("B1 SW: "+((((group b1_1) getVariable "tf_sw_frequency") select 2) select 0)); + "mrk_freq_bravo_3" setMarkerText ("B2 SW: "+((((group b2_1) getVariable "tf_sw_frequency") select 2) select 0)); + + "mrk_freq_charlie_1" setMarkerText ("CSL SW: "+((((group c0_1) getVariable "tf_sw_frequency") select 2) select 0)); + "mrk_freq_charlie_2" setMarkerText ("C1 SW: "+((((group c1_1) getVariable "tf_sw_frequency") select 2) select 0)); + "mrk_freq_charlie_3" setMarkerText ("C2 SW: "+((((group c2_1) getVariable "tf_sw_frequency") select 2) select 0)); + + "mrk_freq_cmd" setMarkerText ("CMD SW: "+((((group cmd1) getVariable "tf_sw_frequency") select 2) select 0)); + + sleep 5; +}; diff --git a/mission.sqm b/mission.sqm index e4885e9..f4ad281 100644 --- a/mission.sqm +++ b/mission.sqm @@ -43,7 +43,8 @@ class Mission "A3_Structures_F_Furniture", "A3_Structures_F_Civ_Camping", "A3_Structures_F_Heli_Furniture", - "A3_Structures_F_Items_Electronics" + "A3_Structures_F_Items_Electronics", + "A3_Characters_F_OPFOR" }; addOnsAuto[]= { @@ -68,6 +69,7 @@ class Mission "A3_Modules_F", "ace_sitting", "ace_nametags", + "A3_Characters_F_OPFOR", "A3_Weapons_F_Ammoboxes", "A3_Structures_F_Mil_Fortification", "A3_Structures_F_Mil_Flags", @@ -110,7 +112,7 @@ class Mission }; class Groups { - items=37; + items=38; class Item0 { side="LOGIC"; @@ -2068,6 +2070,25 @@ class Mission }; }; }; + class Item37 + { + side="EAST"; + class Vehicles + { + items=1; + class Item0 + { + position[]={0.57933992,621.96417,15359.168}; + id=79; + side="EAST"; + vehicle="O_Soldier_F"; + leader=1; + skill=0.60000002; + text="cacheGroupLeader"; + init="this enableSimulationGlobal false;this allowDamage false;this hideObjectGlobal true;"; + }; + }; + }; }; class Vehicles { @@ -2076,7 +2097,7 @@ class Mission { position[]={689.72211,6.0638437,1797.7275}; azimut=50; - id=79; + id=80; side="EMPTY"; vehicle="B_supplyCrate_F"; lock="LOCKED"; @@ -2087,7 +2108,7 @@ class Mission { position[]={696.66595,6,1789.2854}; azimut=50; - id=80; + id=81; side="EMPTY"; vehicle="B_supplyCrate_F"; lock="LOCKED"; @@ -2098,7 +2119,7 @@ class Mission { position[]={693.19678,6.0127869,1793.5654}; azimut=50; - id=81; + id=82; side="EMPTY"; vehicle="B_supplyCrate_F"; lock="LOCKED"; @@ -2109,7 +2130,7 @@ class Mission { position[]={570.13501,5.9898186,1751.3179}; azimut=50; - id=82; + id=83; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2118,7 +2139,7 @@ class Mission { position[]={565.23724,5.9603734,1757.2734}; azimut=50; - id=83; + id=84; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2127,7 +2148,7 @@ class Mission { position[]={560.1134,5.9859104,1763.38}; azimut=50; - id=84; + id=85; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2136,7 +2157,7 @@ class Mission { position[]={555.06494,6.019567,1769.4106}; azimut=50; - id=85; + id=86; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2145,7 +2166,7 @@ class Mission { position[]={584.45502,6,1735.8483}; azimut=50; - id=86; + id=87; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2154,7 +2175,7 @@ class Mission { position[]={589.59521,5.9953256,1729.6575}; azimut=50; - id=87; + id=88; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2163,7 +2184,7 @@ class Mission { position[]={594.80798,6,1723.5061}; azimut=50; - id=88; + id=89; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2172,7 +2193,7 @@ class Mission { position[]={679.27643,5.9921484,1854.1115}; azimut=50; - id=89; + id=90; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2181,7 +2202,7 @@ class Mission { position[]={674.37866,6.0182672,1860.067}; azimut=50; - id=90; + id=91; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2190,7 +2211,7 @@ class Mission { position[]={669.25482,6.3181725,1866.1736}; azimut=50; - id=91; + id=92; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2199,7 +2220,7 @@ class Mission { position[]={664.6391,6.5580735,1871.6266}; azimut=50; - id=92; + id=93; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2208,7 +2229,7 @@ class Mission { position[]={698.19897,5.990932,1833.317}; azimut=50; - id=93; + id=94; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2217,7 +2238,7 @@ class Mission { position[]={714.69751,6.0759115,1827.3296}; azimut=50; - id=94; + id=95; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2226,7 +2247,7 @@ class Mission { position[]={709.0744,6.0786099,1820.1172}; azimut=50; - id=95; + id=96; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2235,7 +2256,7 @@ class Mission { position[]={714.13428,6.0804911,1814.0544}; azimut=50; - id=96; + id=97; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2244,7 +2265,7 @@ class Mission { position[]={600.25067,6,1721.2528}; azimut=147; - id=97; + id=98; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2253,7 +2274,7 @@ class Mission { position[]={607.00043,6.0006661,1725.6665}; azimut=147; - id=98; + id=99; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2262,7 +2283,7 @@ class Mission { position[]={613.61658,6,1729.9448}; azimut=147; - id=99; + id=100; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2271,7 +2292,7 @@ class Mission { position[]={620.36633,6.0074348,1734.3586}; azimut=147; - id=100; + id=101; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2280,7 +2301,7 @@ class Mission { position[]={627.08099,6,1738.7806}; azimut=147; - id=101; + id=102; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2289,7 +2310,7 @@ class Mission { position[]={633.71667,6.0253501,1743.1687}; azimut=147; - id=102; + id=103; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2298,7 +2319,7 @@ class Mission { position[]={640.12018,6,1747.458}; azimut=147; - id=103; + id=104; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2307,7 +2328,7 @@ class Mission { position[]={646.82642,6,1751.7573}; azimut=147; - id=104; + id=105; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2316,7 +2337,7 @@ class Mission { position[]={653.45728,6,1755.9028}; azimut=147; - id=105; + id=106; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2325,7 +2346,7 @@ class Mission { position[]={659.97162,6,1760.1132}; azimut=147; - id=106; + id=107; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2334,7 +2355,7 @@ class Mission { position[]={666.85229,6.0043178,1764.5408}; azimut=147; - id=107; + id=108; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2343,7 +2364,7 @@ class Mission { position[]={673.27869,6,1768.6597}; azimut=147; - id=108; + id=109; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2352,7 +2373,7 @@ class Mission { position[]={680.02588,6.0098963,1772.9536}; azimut=147; - id=109; + id=110; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2361,7 +2382,7 @@ class Mission { position[]={686.71924,6,1777.3691}; azimut=147; - id=110; + id=111; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2370,7 +2391,7 @@ class Mission { position[]={693.44165,6,1781.728}; azimut=147; - id=111; + id=112; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2379,7 +2400,7 @@ class Mission { position[]={700.08972,6,1786.1189}; azimut=147; - id=112; + id=113; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2388,7 +2409,7 @@ class Mission { position[]={706.88831,6,1790.4484}; azimut=147; - id=113; + id=114; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2397,7 +2418,7 @@ class Mission { position[]={713.68695,6,1794.8411}; azimut=147; - id=114; + id=115; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2406,7 +2427,7 @@ class Mission { position[]={720.45319,6,1799.1707}; azimut=147; - id=115; + id=116; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2415,7 +2436,7 @@ class Mission { position[]={722.43445,6,1804.1465}; azimut=50; - id=116; + id=117; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2424,7 +2445,7 @@ class Mission { position[]={555.85571,6.0108724,1774.1473}; azimut=137; - id=117; + id=118; side="EMPTY"; vehicle="Land_HBarrierBig_F"; leader=1; @@ -2434,7 +2455,7 @@ class Mission { position[]={561.82788,5.9083447,1779.7477}; azimut=137; - id=118; + id=119; side="EMPTY"; vehicle="Land_HBarrierBig_F"; leader=1; @@ -2444,7 +2465,7 @@ class Mission { position[]={567.7135,5.8585324,1785.2299}; azimut=137; - id=119; + id=120; side="EMPTY"; vehicle="Land_HBarrierBig_F"; leader=1; @@ -2454,7 +2475,7 @@ class Mission { position[]={573.6568,5.8340116,1790.6864}; azimut=137; - id=120; + id=121; side="EMPTY"; vehicle="Land_HBarrierBig_F"; leader=1; @@ -2464,7 +2485,7 @@ class Mission { position[]={579.65778,5.8200588,1796.2574}; azimut=137; - id=121; + id=122; side="EMPTY"; vehicle="Land_HBarrierBig_F"; leader=1; @@ -2474,7 +2495,7 @@ class Mission { position[]={585.5434,5.8066678,1801.6544}; azimut=137; - id=122; + id=123; side="EMPTY"; vehicle="Land_HBarrierBig_F"; leader=1; @@ -2484,7 +2505,7 @@ class Mission { position[]={591.40021,5.8023186,1807.1962}; azimut=137; - id=123; + id=124; side="EMPTY"; vehicle="Land_HBarrierBig_F"; leader=1; @@ -2494,7 +2515,7 @@ class Mission { position[]={597.31476,5.8092346,1812.6527}; azimut=137; - id=124; + id=125; side="EMPTY"; vehicle="Land_HBarrierBig_F"; leader=1; @@ -2504,7 +2525,7 @@ class Mission { position[]={602.98743,5.8290348,1817.8729}; azimut=137; - id=125; + id=126; side="EMPTY"; vehicle="Land_HBarrierBig_F"; leader=1; @@ -2514,7 +2535,7 @@ class Mission { position[]={609.17267,5.8542414,1823.5933}; azimut=137; - id=126; + id=127; side="EMPTY"; vehicle="Land_HBarrierBig_F"; leader=1; @@ -2524,7 +2545,7 @@ class Mission { position[]={615.26031,5.88727,1829.2218}; azimut=137; - id=127; + id=128; side="EMPTY"; vehicle="Land_HBarrierBig_F"; leader=1; @@ -2534,7 +2555,7 @@ class Mission { position[]={621.3479,5.9279237,1834.8221}; azimut=137; - id=128; + id=129; side="EMPTY"; vehicle="Land_HBarrierBig_F"; leader=1; @@ -2544,7 +2565,7 @@ class Mission { position[]={627.32007,5.9631929,1840.307}; azimut=137; - id=129; + id=130; side="EMPTY"; vehicle="Land_HBarrierBig_F"; leader=1; @@ -2554,7 +2575,7 @@ class Mission { position[]={633.20563,6.0087342,1845.8488}; azimut=137; - id=130; + id=131; side="EMPTY"; vehicle="Land_HBarrierBig_F"; leader=1; @@ -2564,7 +2585,7 @@ class Mission { position[]={639.14911,6.0992255,1851.4188}; azimut=137; - id=131; + id=132; side="EMPTY"; vehicle="Land_HBarrierBig_F"; leader=1; @@ -2574,7 +2595,7 @@ class Mission { position[]={644.91925,6.2229695,1857.0475}; azimut=137; - id=132; + id=133; side="EMPTY"; vehicle="Land_HBarrierBig_F"; leader=1; @@ -2584,7 +2605,7 @@ class Mission { position[]={650.86261,6.3586721,1862.6779}; azimut=137; - id=133; + id=134; side="EMPTY"; vehicle="Land_HBarrierBig_F"; leader=1; @@ -2594,7 +2615,7 @@ class Mission { position[]={656.71924,6.4971809,1868.1327}; azimut=137; - id=134; + id=135; side="EMPTY"; vehicle="Land_HBarrierBig_F"; leader=1; @@ -2604,7 +2625,7 @@ class Mission { position[]={660.23914,6.5934396,1871.5375}; azimut=137; - id=135; + id=136; side="EMPTY"; vehicle="Land_HBarrierBig_F"; leader=1; @@ -2614,7 +2635,7 @@ class Mission { position[]={694.8653,6,1786.2095}; azimut=50; - id=136; + id=137; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2623,7 +2644,7 @@ class Mission { position[]={689.98566,6,1791.8353}; azimut=50; - id=137; + id=138; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2632,7 +2653,7 @@ class Mission { position[]={685.57916,6.0935903,1801.7615}; azimut=147; - id=138; + id=139; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2641,7 +2662,7 @@ class Mission { position[]={692.28021,6.1003332,1806.1552}; azimut=147; - id=139; + id=140; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2650,7 +2671,7 @@ class Mission { position[]={698.8512,6.0881987,1810.4838}; azimut=147; - id=140; + id=141; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2659,7 +2680,7 @@ class Mission { position[]={685.06604,6.0822058,1797.7057}; azimut=50; - id=141; + id=142; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2668,7 +2689,7 @@ class Mission { position[]={611.60767,6.1510534,1789.1821}; azimut=50; - id=142; + id=143; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2677,7 +2698,7 @@ class Mission { position[]={606.7099,6.1331458,1795.1377}; azimut=50; - id=143; + id=144; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2686,7 +2707,7 @@ class Mission { position[]={601.58606,6.0089049,1801.2443}; azimut=50; - id=144; + id=145; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2695,7 +2716,7 @@ class Mission { position[]={596.5376,5.8611517,1807.2749}; azimut=50; - id=145; + id=146; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2704,7 +2725,7 @@ class Mission { position[]={722.90076,6.0674553,1812.822}; azimut=50; - id=146; + id=147; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2713,7 +2734,7 @@ class Mission { position[]={728.47278,6,1804.8157}; azimut=147; - id=147; + id=148; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2722,7 +2743,7 @@ class Mission { position[]={735.1402,6,1809.0601}; azimut=147; - id=148; + id=149; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2731,7 +2752,7 @@ class Mission { position[]={741.85443,6,1813.5388}; azimut=147; - id=149; + id=150; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2740,7 +2761,7 @@ class Mission { position[]={748.70825,6,1817.8794}; azimut=147; - id=150; + id=151; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2749,7 +2770,7 @@ class Mission { position[]={755.37573,6,1822.2648}; azimut=147; - id=151; + id=152; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2758,7 +2779,7 @@ class Mission { position[]={762.04321,6,1826.6511}; azimut=147; - id=152; + id=153; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2767,7 +2788,7 @@ class Mission { position[]={768.80389,6.0264101,1830.9431}; azimut=147; - id=153; + id=154; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2776,7 +2797,7 @@ class Mission { position[]={775.51794,6,1835.2341}; azimut=147; - id=154; + id=155; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2785,7 +2806,7 @@ class Mission { position[]={782.41858,6,1839.6204}; azimut=147; - id=155; + id=156; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2794,7 +2815,7 @@ class Mission { position[]={788.94617,6,1843.9591}; azimut=145; - id=156; + id=157; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2803,7 +2824,7 @@ class Mission { position[]={795.43298,6,1848.762}; azimut=143; - id=157; + id=158; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2812,7 +2833,7 @@ class Mission { position[]={802.05682,6,1853.7067}; azimut=143; - id=158; + id=159; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2821,7 +2842,7 @@ class Mission { position[]={808.51154,6,1858.8074}; azimut=140; - id=159; + id=160; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2830,7 +2851,7 @@ class Mission { position[]={814.68451,6,1864.0771}; azimut=140; - id=160; + id=161; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2839,7 +2860,7 @@ class Mission { position[]={820.92554,6,1869.3589}; azimut=140; - id=161; + id=162; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2848,7 +2869,7 @@ class Mission { position[]={827.27155,6,1874.8108}; azimut=140; - id=162; + id=163; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2857,7 +2878,7 @@ class Mission { position[]={833.64313,6,1880.2363}; azimut=140; - id=163; + id=164; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2866,7 +2887,7 @@ class Mission { position[]={839.96362,6,1885.5381}; azimut=140; - id=164; + id=165; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2875,7 +2896,7 @@ class Mission { position[]={846.284,5.997499,1890.9379}; azimut=140; - id=165; + id=166; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2884,7 +2905,7 @@ class Mission { position[]={852.55322,6,1896.3147}; azimut=140; - id=166; + id=167; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2893,7 +2914,7 @@ class Mission { position[]={716.03705,6.0941482,1819.1615}; azimut=140; - id=167; + id=168; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2902,7 +2923,7 @@ class Mission { position[]={722.03015,6.0733814,1824.2106}; azimut=140; - id=168; + id=169; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2911,7 +2932,7 @@ class Mission { position[]={727.90118,6.1056113,1829.1006}; azimut=140; - id=169; + id=170; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2920,7 +2941,7 @@ class Mission { position[]={733.84906,6.1319156,1834.1149}; azimut=140; - id=170; + id=171; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2929,7 +2950,7 @@ class Mission { position[]={740.06415,6.1348042,1839.3306}; azimut=140; - id=171; + id=172; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2938,7 +2959,7 @@ class Mission { position[]={745.81158,6.1190143,1844.2789}; azimut=140; - id=172; + id=173; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2947,7 +2968,7 @@ class Mission { position[]={751.62262,6.0974102,1848.9553}; azimut=140; - id=173; + id=174; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2956,7 +2977,7 @@ class Mission { position[]={757.49365,6.0710135,1853.8453}; azimut=140; - id=174; + id=175; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2965,7 +2986,7 @@ class Mission { position[]={763.44153,6.0470443,1858.8596}; azimut=140; - id=175; + id=176; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2974,7 +2995,7 @@ class Mission { position[]={769.65662,6.0228305,1864.0753}; azimut=140; - id=176; + id=177; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2983,7 +3004,7 @@ class Mission { position[]={775.40405,6.0018406,1869.0237}; azimut=140; - id=177; + id=178; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2992,7 +3013,7 @@ class Mission { position[]={781.64703,5.9942212,1874.2405}; azimut=140; - id=178; + id=179; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3001,7 +3022,7 @@ class Mission { position[]={787.51807,5.9945168,1879.1305}; azimut=140; - id=179; + id=180; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3010,7 +3031,7 @@ class Mission { position[]={793.46594,6,1884.1448}; azimut=140; - id=180; + id=181; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3019,7 +3040,7 @@ class Mission { position[]={799.68103,5.9946108,1889.3605}; azimut=140; - id=181; + id=182; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3028,7 +3049,7 @@ class Mission { position[]={805.42847,5.99965,1894.3088}; azimut=140; - id=182; + id=183; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3037,7 +3058,7 @@ class Mission { position[]={811.34766,5.999651,1899.3094}; azimut=140; - id=183; + id=184; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3046,7 +3067,7 @@ class Mission { position[]={817.21869,5.9914999,1904.1995}; azimut=140; - id=184; + id=185; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3055,7 +3076,7 @@ class Mission { position[]={823.16656,5.9980631,1909.2137}; azimut=140; - id=185; + id=186; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3064,7 +3085,7 @@ class Mission { position[]={829.38165,6,1914.4294}; azimut=140; - id=186; + id=187; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3073,7 +3094,7 @@ class Mission { position[]={835.12909,5.9883409,1919.3778}; azimut=140; - id=187; + id=188; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3082,7 +3103,7 @@ class Mission { position[]={840.20532,5.9836955,1917.8411}; azimut=50; - id=188; + id=189; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3091,7 +3112,7 @@ class Mission { position[]={845.19946,5.9601502,1911.8975}; azimut=50; - id=189; + id=190; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3100,7 +3121,7 @@ class Mission { position[]={850.19354,5.9950438,1905.7433}; azimut=50; - id=190; + id=191; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3109,7 +3130,7 @@ class Mission { position[]={853.97864,6,1901.4833}; azimut=50; - id=191; + id=192; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3118,7 +3139,7 @@ class Mission { position[]={696.4967,6.0851517,1804.6783}; azimut=140; - id=192; + id=193; side="EMPTY"; vehicle="Flag_NATO_F"; skill=0.60000002; @@ -3128,7 +3149,7 @@ class Mission { position[]={668.91956,6.010416,1771.3019}; azimut=237; - id=193; + id=194; side="EMPTY"; vehicle="Land_HelipadEmpty_F"; skill=0.60000002; @@ -3138,7 +3159,7 @@ class Mission { position[]={660.93768,6.0133247,1850.3156}; azimut=137; - id=194; + id=195; side="EMPTY"; vehicle="Land_HelipadSquare_F"; leader=1; @@ -3149,7 +3170,7 @@ class Mission { position[]={645.84198,6.0921617,1835.8474}; azimut=137; - id=195; + id=196; side="EMPTY"; vehicle="Land_HelipadSquare_F"; leader=1; @@ -3160,7 +3181,7 @@ class Mission { position[]={615.34821,6.1382518,1808.4594}; azimut=137; - id=196; + id=197; side="EMPTY"; vehicle="Land_HelipadSquare_F"; leader=1; @@ -3171,7 +3192,7 @@ class Mission { position[]={630.16028,6.1504002,1822.0396}; azimut=137; - id=197; + id=198; side="EMPTY"; vehicle="Land_HelipadSquare_F"; leader=1; @@ -3182,7 +3203,7 @@ class Mission { position[]={708.2749,6.0427299,1825.8895}; azimut=140; - id=198; + id=199; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3191,7 +3212,7 @@ class Mission { position[]={717.46619,6.0954742,1824.1465}; azimut=50; - id=199; + id=200; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3200,7 +3221,7 @@ class Mission { position[]={741.85754,6.0991936,1844.7795}; azimut=50; - id=200; + id=201; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3209,7 +3230,7 @@ class Mission { position[]={736.95978,6.0393443,1850.7351}; azimut=50; - id=201; + id=202; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3218,7 +3239,7 @@ class Mission { position[]={731.83594,6.075242,1856.8417}; azimut=50; - id=202; + id=203; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3227,7 +3248,7 @@ class Mission { position[]={709.8017,6.0418105,1852.1271}; azimut=140; - id=203; + id=204; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3236,7 +3257,7 @@ class Mission { position[]={715.74957,6.071043,1857.1414}; azimut=140; - id=204; + id=205; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3245,7 +3266,7 @@ class Mission { position[]={721.96466,6.1015253,1862.3571}; azimut=140; - id=205; + id=206; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3254,7 +3275,7 @@ class Mission { position[]={726.9165,6.1158671,1862.7834}; azimut=50; - id=206; + id=207; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3263,7 +3284,7 @@ class Mission { position[]={708.10797,6.0425987,1854.1163}; azimut=140; - id=207; + id=208; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3272,7 +3293,7 @@ class Mission { position[]={693.71808,5.9899998,1838.8607}; azimut=50; - id=208; + id=209; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3281,7 +3302,7 @@ class Mission { position[]={725.638,6.045752,1846.2258}; azimut=230; - id=209; + id=210; side="EMPTY"; vehicle="Land_HelipadRescue_F"; leader=1; @@ -3291,7 +3312,7 @@ class Mission { position[]={720.9425,6.0769019,1827.3185}; azimut=50; - id=210; + id=211; side="EMPTY"; vehicle="MASH_EP1"; leader=1; @@ -3303,7 +3324,7 @@ class Mission { position[]={594.95911,6.0376916,1791.3811}; azimut=137; - id=211; + id=212; side="EMPTY"; vehicle="Land_HelipadSquare_F"; leader=1; @@ -3314,7 +3335,7 @@ class Mission { position[]={560.64941,5.959599,1771.8768}; azimut=137; - id=212; + id=213; side="EMPTY"; vehicle="B_Slingload_01_Ammo_F"; leader=1; @@ -3325,7 +3346,7 @@ class Mission { position[]={565.34875,5.9643288,1766.7665}; azimut=137; - id=213; + id=214; side="EMPTY"; vehicle="B_Slingload_01_Ammo_F"; leader=1; @@ -3336,7 +3357,7 @@ class Mission { position[]={563.38416,5.9637799,1764.9391}; azimut=137; - id=214; + id=215; side="EMPTY"; vehicle="B_Slingload_01_Cargo_F"; leader=1; @@ -3347,7 +3368,7 @@ class Mission { position[]={558.68488,5.9811153,1769.8948}; azimut=137; - id=215; + id=216; side="EMPTY"; vehicle="B_Slingload_01_Cargo_F"; leader=1; @@ -3358,7 +3379,7 @@ class Mission { position[]={567.39404,5.9554181,1768.666}; azimut=137; - id=216; + id=217; side="EMPTY"; vehicle="B_Slingload_01_Fuel_F"; leader=1; @@ -3369,7 +3390,7 @@ class Mission { position[]={573.39246,6.0029182,1758.5056}; azimut=47; - id=217; + id=218; side="EMPTY"; vehicle="B_Truck_01_ammo_F"; leader=1; @@ -3380,7 +3401,7 @@ class Mission { position[]={571.00409,6.0003376,1761.1205}; azimut=47; - id=218; + id=219; side="EMPTY"; vehicle="B_Truck_01_fuel_F"; leader=1; @@ -3391,7 +3412,7 @@ class Mission { position[]={575.78687,6.0056777,1755.9486}; azimut=47; - id=219; + id=220; side="EMPTY"; vehicle="B_Truck_01_Repair_F"; leader=1; @@ -3402,7 +3423,7 @@ class Mission { position[]={565.32269,5.8964548,1778.8293}; azimut=137; - id=220; + id=221; side="EMPTY"; vehicle="B_CargoNet_01_ammo_F"; leader=1; @@ -3413,7 +3434,7 @@ class Mission { position[]={566.77521,5.9012733,1777.309}; azimut=137; - id=221; + id=222; side="EMPTY"; vehicle="B_CargoNet_01_ammo_F"; leader=1; @@ -3424,7 +3445,7 @@ class Mission { position[]={568.25037,5.9123344,1775.6498}; azimut=137; - id=222; + id=223; side="EMPTY"; vehicle="B_CargoNet_01_ammo_F"; leader=1; @@ -3435,7 +3456,7 @@ class Mission { position[]={569.771,5.9241381,1773.8793}; azimut=137; - id=223; + id=224; side="EMPTY"; vehicle="B_CargoNet_01_ammo_F"; leader=1; @@ -3446,7 +3467,7 @@ class Mission { position[]={571.22351,5.9505873,1772.3589}; azimut=137; - id=224; + id=225; side="EMPTY"; vehicle="B_CargoNet_01_ammo_F"; leader=1; @@ -3457,7 +3478,7 @@ class Mission { position[]={572.69867,5.981317,1770.6997}; azimut=137; - id=225; + id=226; side="EMPTY"; vehicle="B_CargoNet_01_ammo_F"; leader=1; @@ -3468,7 +3489,7 @@ class Mission { position[]={724.1073,6.0497589,1820.4933}; azimut=50; - id=226; + id=227; side="EMPTY"; vehicle="ShootingPos_F"; skill=0.60000002; @@ -3477,7 +3498,7 @@ class Mission { position[]={726.44501,6.0154729,1817.7238}; azimut=50; - id=227; + id=228; side="EMPTY"; vehicle="ShootingPos_F"; skill=0.60000002; @@ -3486,7 +3507,7 @@ class Mission { position[]={728.78253,6,1815.022}; azimut=50; - id=228; + id=229; side="EMPTY"; vehicle="ShootingPos_F"; skill=0.60000002; @@ -3495,7 +3516,7 @@ class Mission { position[]={731.052,6,1812.2965}; azimut=50; - id=229; + id=230; side="EMPTY"; vehicle="ShootingPos_F"; skill=0.60000002; @@ -3504,7 +3525,7 @@ class Mission { position[]={730.42114,6.0161881,1823.5117}; azimut=50; - id=230; + id=231; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -3513,7 +3534,7 @@ class Mission { position[]={733.38135,6.0601783,1825.7255}; azimut=50; - id=231; + id=232; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -3522,7 +3543,7 @@ class Mission { position[]={736.34149,6.1271315,1828.4592}; azimut=50; - id=232; + id=233; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -3531,7 +3552,7 @@ class Mission { position[]={739.3667,6.1788349,1830.8351}; azimut=50; - id=233; + id=234; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -3540,7 +3561,7 @@ class Mission { position[]={742.02509,6.1785946,1833.5386}; azimut=50; - id=234; + id=235; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -3549,7 +3570,7 @@ class Mission { position[]={744.98529,6.1256676,1835.7523}; azimut=50; - id=235; + id=236; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -3558,7 +3579,7 @@ class Mission { position[]={747.94543,6.1738925,1838.4861}; azimut=50; - id=236; + id=237; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -3567,7 +3588,7 @@ class Mission { position[]={750.97064,6.1656919,1840.8619}; azimut=50; - id=237; + id=238; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -3576,7 +3597,7 @@ class Mission { position[]={753.17688,6.1565995,1842.734}; azimut=50; - id=238; + id=239; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -3585,7 +3606,7 @@ class Mission { position[]={756.13708,6.1467834,1844.9478}; azimut=50; - id=239; + id=240; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -3594,7 +3615,7 @@ class Mission { position[]={759.09723,6.129231,1847.6815}; azimut=50; - id=240; + id=241; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -3603,7 +3624,7 @@ class Mission { position[]={762.12244,6.1151233,1850.0574}; azimut=50; - id=241; + id=242; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -3612,7 +3633,7 @@ class Mission { position[]={765.0069,6.1016183,1852.3097}; azimut=50; - id=242; + id=243; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -3621,7 +3642,7 @@ class Mission { position[]={767.9671,6.0877681,1854.5234}; azimut=50; - id=243; + id=244; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -3630,7 +3651,7 @@ class Mission { position[]={770.92725,6.0698447,1857.2572}; azimut=50; - id=244; + id=245; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -3639,7 +3660,7 @@ class Mission { position[]={773.95245,6.054872,1859.6331}; azimut=50; - id=245; + id=246; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -3648,7 +3669,7 @@ class Mission { position[]={776.91223,6.0402937,1862.3383}; azimut=50; - id=246; + id=247; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -3657,7 +3678,7 @@ class Mission { position[]={779.87244,6.0294824,1864.552}; azimut=50; - id=247; + id=248; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -3666,7 +3687,7 @@ class Mission { position[]={782.83258,6.0152044,1867.2858}; azimut=50; - id=248; + id=249; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -3675,7 +3696,7 @@ class Mission { position[]={785.85779,6.0120459,1869.6616}; azimut=50; - id=249; + id=250; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -3684,7 +3705,7 @@ class Mission { position[]={788.81744,6.0119534,1871.835}; azimut=50; - id=250; + id=251; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -3693,7 +3714,7 @@ class Mission { position[]={791.77765,6.0095086,1874.0487}; azimut=50; - id=251; + id=252; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -3702,7 +3723,7 @@ class Mission { position[]={794.73779,6.0072742,1876.7825}; azimut=50; - id=252; + id=253; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -3711,7 +3732,7 @@ class Mission { position[]={797.763,6.0081396,1879.1583}; azimut=50; - id=253; + id=254; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -3720,7 +3741,7 @@ class Mission { position[]={800.40985,6.0021162,1881.7063}; azimut=50; - id=254; + id=255; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -3729,7 +3750,7 @@ class Mission { position[]={803.37006,5.9992666,1883.92}; azimut=50; - id=255; + id=256; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -3738,7 +3759,7 @@ class Mission { position[]={806.3302,5.9995685,1886.6538}; azimut=50; - id=256; + id=257; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -3747,7 +3768,7 @@ class Mission { position[]={809.35541,6.0004344,1889.0297}; azimut=50; - id=257; + id=258; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -3756,7 +3777,7 @@ class Mission { position[]={811.86304,5.9980893,1891.4329}; azimut=50; - id=258; + id=259; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -3765,7 +3786,7 @@ class Mission { position[]={814.82324,5.9951377,1893.6466}; azimut=50; - id=259; + id=260; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -3774,7 +3795,7 @@ class Mission { position[]={817.78339,5.9914927,1896.3804}; azimut=50; - id=260; + id=261; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -3783,7 +3804,7 @@ class Mission { position[]={820.80859,5.9899998,1898.7562}; azimut=50; - id=261; + id=262; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -3792,7 +3813,7 @@ class Mission { position[]={823.76843,5.9899998,1901.382}; azimut=50; - id=262; + id=263; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -3801,7 +3822,7 @@ class Mission { position[]={826.72864,5.9895668,1903.5957}; azimut=50; - id=263; + id=264; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -3810,7 +3831,7 @@ class Mission { position[]={829.68878,5.9855208,1906.3295}; azimut=50; - id=264; + id=265; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -3819,7 +3840,7 @@ class Mission { position[]={832.71399,5.9895959,1908.7053}; azimut=50; - id=265; + id=266; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -3828,7 +3849,7 @@ class Mission { position[]={735.53778,6,1817.754}; azimut=50; - id=266; + id=267; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -3837,7 +3858,7 @@ class Mission { position[]={738.56299,6,1820.1299}; azimut=50; - id=267; + id=268; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -3846,7 +3867,7 @@ class Mission { position[]={741.07062,6.0007081,1822.5331}; azimut=50; - id=268; + id=269; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -3855,7 +3876,7 @@ class Mission { position[]={744.03082,6.0599179,1824.7468}; azimut=50; - id=269; + id=270; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -3864,7 +3885,7 @@ class Mission { position[]={746.99097,6.0802398,1827.4806}; azimut=50; - id=270; + id=271; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -3873,7 +3894,7 @@ class Mission { position[]={750.01617,6,1829.8564}; azimut=50; - id=271; + id=272; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -3882,7 +3903,7 @@ class Mission { position[]={752.97601,6.0628829,1832.4822}; azimut=50; - id=272; + id=273; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -3891,7 +3912,7 @@ class Mission { position[]={755.93622,6.1273174,1834.6959}; azimut=50; - id=273; + id=274; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -3900,7 +3921,7 @@ class Mission { position[]={758.89636,6.2080326,1837.4297}; azimut=50; - id=274; + id=275; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -3909,7 +3930,7 @@ class Mission { position[]={761.75964,6.1972761,1839.0905}; azimut=50; - id=275; + id=276; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -3918,7 +3939,7 @@ class Mission { position[]={764.78485,6.1882725,1841.4663}; azimut=50; - id=276; + id=277; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -3927,7 +3948,7 @@ class Mission { position[]={767.29248,6.1180358,1843.8695}; azimut=50; - id=277; + id=278; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -3936,7 +3957,7 @@ class Mission { position[]={770.25269,6.0408273,1846.0833}; azimut=50; - id=278; + id=279; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -3945,7 +3966,7 @@ class Mission { position[]={773.21283,6.0559835,1848.817}; azimut=50; - id=279; + id=280; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -3954,7 +3975,7 @@ class Mission { position[]={776.23804,6.0940714,1851.1929}; azimut=50; - id=280; + id=281; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -3963,7 +3984,7 @@ class Mission { position[]={779.19788,6.1083808,1853.8186}; azimut=50; - id=281; + id=282; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -3972,7 +3993,7 @@ class Mission { position[]={782.15808,6.05721,1856.0323}; azimut=50; - id=282; + id=283; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -3981,7 +4002,7 @@ class Mission { position[]={785.11823,6.0553093,1858.7661}; azimut=50; - id=283; + id=284; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -3990,7 +4011,7 @@ class Mission { position[]={788.05688,6.0564451,1861.2535}; azimut=50; - id=284; + id=285; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -3999,7 +4020,7 @@ class Mission { position[]={791.08209,6.0123706,1863.6294}; azimut=50; - id=285; + id=286; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4008,7 +4029,7 @@ class Mission { position[]={793.58972,6.0284133,1866.0326}; azimut=50; - id=286; + id=287; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4017,7 +4038,7 @@ class Mission { position[]={796.54993,6.0390811,1868.2463}; azimut=50; - id=287; + id=288; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4026,7 +4047,7 @@ class Mission { position[]={799.51007,6.032093,1870.9801}; azimut=50; - id=288; + id=289; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4035,7 +4056,7 @@ class Mission { position[]={802.53528,6.02634,1873.356}; azimut=50; - id=289; + id=290; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4044,7 +4065,7 @@ class Mission { position[]={805.49512,6.0093946,1875.9817}; azimut=50; - id=290; + id=291; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4053,7 +4074,7 @@ class Mission { position[]={808.45532,6.0022016,1878.1954}; azimut=50; - id=291; + id=292; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4062,7 +4083,7 @@ class Mission { position[]={811.41547,6.007906,1880.9292}; azimut=50; - id=292; + id=293; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4071,7 +4092,7 @@ class Mission { position[]={814.73071,6.0152845,1883.2673}; azimut=50; - id=293; + id=294; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4080,7 +4101,7 @@ class Mission { position[]={817.75592,6.0109358,1885.6432}; azimut=50; - id=294; + id=295; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4089,7 +4110,7 @@ class Mission { position[]={820.26355,6,1888.0464}; azimut=50; - id=295; + id=296; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4098,7 +4119,7 @@ class Mission { position[]={823.22375,5.9996529,1890.2601}; azimut=50; - id=296; + id=297; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4107,7 +4128,7 @@ class Mission { position[]={826.1839,5.9960079,1892.9939}; azimut=50; - id=297; + id=298; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4116,7 +4137,7 @@ class Mission { position[]={829.20911,5.9928403,1895.3698}; azimut=50; - id=298; + id=299; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4125,7 +4146,7 @@ class Mission { position[]={832.16895,5.9897804,1897.9955}; azimut=50; - id=299; + id=300; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4134,7 +4155,7 @@ class Mission { position[]={835.12915,5.9828825,1900.2092}; azimut=50; - id=300; + id=301; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4143,7 +4164,7 @@ class Mission { position[]={838.08929,5.9752903,1902.943}; azimut=50; - id=301; + id=302; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4152,7 +4173,7 @@ class Mission { position[]={739.97906,6,1814.1835}; azimut=50; - id=302; + id=303; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4161,7 +4182,7 @@ class Mission { position[]={743.00427,6,1816.5593}; azimut=50; - id=303; + id=304; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4170,7 +4191,7 @@ class Mission { position[]={745.5119,6,1818.9625}; azimut=50; - id=304; + id=305; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4179,7 +4200,7 @@ class Mission { position[]={748.47211,6,1821.1763}; azimut=50; - id=305; + id=306; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4188,7 +4209,7 @@ class Mission { position[]={751.43225,6,1823.91}; azimut=50; - id=306; + id=307; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4197,7 +4218,7 @@ class Mission { position[]={754.45746,6,1826.2859}; azimut=50; - id=307; + id=308; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4206,7 +4227,7 @@ class Mission { position[]={757.4173,6,1828.9116}; azimut=50; - id=308; + id=309; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4215,7 +4236,7 @@ class Mission { position[]={760.3775,6.0315113,1831.1254}; azimut=50; - id=309; + id=310; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4224,7 +4245,7 @@ class Mission { position[]={763.33765,6.108057,1833.8591}; azimut=50; - id=310; + id=311; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4233,7 +4254,7 @@ class Mission { position[]={770.72192,6.0497842,1835.896}; azimut=50; - id=311; + id=312; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4242,7 +4263,7 @@ class Mission { position[]={773.74713,6,1838.2719}; azimut=50; - id=312; + id=313; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4251,7 +4272,7 @@ class Mission { position[]={776.25476,6,1840.675}; azimut=50; - id=313; + id=314; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4260,7 +4281,7 @@ class Mission { position[]={779.21497,6,1842.8888}; azimut=50; - id=314; + id=315; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4269,7 +4290,7 @@ class Mission { position[]={782.17511,6.0099626,1845.6226}; azimut=50; - id=315; + id=316; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4278,7 +4299,7 @@ class Mission { position[]={785.20032,6.0367942,1847.9984}; azimut=50; - id=316; + id=317; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4287,7 +4308,7 @@ class Mission { position[]={788.16016,6,1850.6241}; azimut=50; - id=317; + id=318; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4296,7 +4317,7 @@ class Mission { position[]={791.12036,6.0031543,1852.8379}; azimut=50; - id=318; + id=319; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4305,7 +4326,7 @@ class Mission { position[]={794.08051,6.0085816,1855.5717}; azimut=50; - id=319; + id=320; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4314,7 +4335,7 @@ class Mission { position[]={796.4917,6,1857.3065}; azimut=50; - id=320; + id=321; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4323,7 +4344,7 @@ class Mission { position[]={799.51691,6,1859.6824}; azimut=50; - id=321; + id=322; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4332,7 +4353,7 @@ class Mission { position[]={802.02454,6.0132709,1862.0856}; azimut=50; - id=322; + id=323; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4341,7 +4362,7 @@ class Mission { position[]={804.98474,6.0286632,1864.2993}; azimut=50; - id=323; + id=324; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4350,7 +4371,7 @@ class Mission { position[]={807.94489,6.0137005,1867.0331}; azimut=50; - id=324; + id=325; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4359,7 +4380,7 @@ class Mission { position[]={810.97009,6,1869.4089}; azimut=50; - id=325; + id=326; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4368,7 +4389,7 @@ class Mission { position[]={813.92993,6,1872.0347}; azimut=50; - id=326; + id=327; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4377,7 +4398,7 @@ class Mission { position[]={816.89014,6,1874.2484}; azimut=50; - id=327; + id=328; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4386,7 +4407,7 @@ class Mission { position[]={819.85028,6.0052857,1876.9822}; azimut=50; - id=328; + id=329; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4395,7 +4416,7 @@ class Mission { position[]={820.00104,6.0066948,1877.5104}; azimut=50; - id=329; + id=330; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4404,7 +4425,7 @@ class Mission { position[]={823.02625,6.0052633,1879.8862}; azimut=50; - id=330; + id=331; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4413,7 +4434,7 @@ class Mission { position[]={825.53387,6,1882.2894}; azimut=50; - id=331; + id=332; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4422,7 +4443,7 @@ class Mission { position[]={828.49408,6,1884.5032}; azimut=50; - id=332; + id=333; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4431,7 +4452,7 @@ class Mission { position[]={831.45422,6,1887.2369}; azimut=50; - id=333; + id=334; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4440,7 +4461,7 @@ class Mission { position[]={834.47943,6,1889.6128}; azimut=50; - id=334; + id=335; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4449,7 +4470,7 @@ class Mission { position[]={837.43927,5.997015,1892.2385}; azimut=50; - id=335; + id=336; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4458,7 +4479,7 @@ class Mission { position[]={840.39948,5.9881272,1894.4523}; azimut=50; - id=336; + id=337; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4467,7 +4488,7 @@ class Mission { position[]={843.35962,5.9889588,1897.186}; azimut=50; - id=337; + id=338; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4476,7 +4497,7 @@ class Mission { position[]={847.39404,5.9995766,1900.049}; azimut=50; - id=338; + id=339; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4485,7 +4506,7 @@ class Mission { position[]={843.32288,5.9832916,1905.5531}; azimut=50; - id=339; + id=340; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4494,7 +4515,7 @@ class Mission { position[]={837.78467,5.9788609,1912.0469}; azimut=50; - id=340; + id=341; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4503,7 +4524,7 @@ class Mission { position[]={732.30066,6,1812.7396}; azimut=50; - id=341; + id=342; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4512,7 +4533,7 @@ class Mission { position[]={728.10437,6,1817.1342}; azimut=50; - id=342; + id=343; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4521,7 +4542,7 @@ class Mission { position[]={723.90808,6.0526814,1821.5598}; azimut=50; - id=343; + id=344; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4530,7 +4551,7 @@ class Mission { position[]={746.51184,6.1592007,1839.6057}; azimut=50; - id=344; + id=345; side="EMPTY"; vehicle="TargetBootcampHumanSimple_F"; skill=0.60000002; @@ -4539,7 +4560,7 @@ class Mission { position[]={757.67786,6.1238985,1847.8473}; azimut=50; - id=345; + id=346; side="EMPTY"; vehicle="TargetBootcampHumanSimple_F"; skill=0.60000002; @@ -4548,7 +4569,7 @@ class Mission { position[]={770.25092,6.0724678,1856.8167}; azimut=50; - id=346; + id=347; side="EMPTY"; vehicle="TargetBootcampHumanSimple_F"; skill=0.60000002; @@ -4557,7 +4578,7 @@ class Mission { position[]={783.87952,6.024065,1866.1661}; azimut=50; - id=347; + id=348; side="EMPTY"; vehicle="TargetBootcampHumanSimple_F"; skill=0.60000002; @@ -4566,7 +4587,7 @@ class Mission { position[]={796.22766,6.0123401,1874.8242}; azimut=50; - id=348; + id=349; side="EMPTY"; vehicle="TargetBootcampHumanSimple_F"; skill=0.60000002; @@ -4575,7 +4596,7 @@ class Mission { position[]={808.92352,6.0073528,1883.4091}; azimut=50; - id=349; + id=350; side="EMPTY"; vehicle="TargetBootcampHumanSimple_F"; skill=0.60000002; @@ -4584,7 +4605,7 @@ class Mission { position[]={821.53516,5.9971676,1892.1241}; azimut=50; - id=350; + id=351; side="EMPTY"; vehicle="TargetBootcampHumanSimple_F"; skill=0.60000002; @@ -4593,7 +4614,7 @@ class Mission { position[]={835.62067,5.9811368,1901.0265}; azimut=50; - id=351; + id=352; side="EMPTY"; vehicle="TargetBootcampHumanSimple_F"; skill=0.60000002; @@ -4602,7 +4623,7 @@ class Mission { position[]={847.23096,5.9945884,1905.9192}; azimut=50; - id=352; + id=353; side="EMPTY"; vehicle="TargetBootcampHumanSimple_F"; skill=0.60000002; @@ -4611,7 +4632,7 @@ class Mission { position[]={849.21588,6,1903.2705}; azimut=50; - id=353; + id=354; side="EMPTY"; vehicle="TargetBootcampHumanSimple_F"; skill=0.60000002; @@ -4620,7 +4641,7 @@ class Mission { position[]={851.36627,6,1900.9543}; azimut=50; - id=354; + id=355; side="EMPTY"; vehicle="TargetBootcampHumanSimple_F"; skill=0.60000002; @@ -4629,7 +4650,7 @@ class Mission { position[]={835.84106,5.9827728,1915.3969}; azimut=50; - id=355; + id=356; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; @@ -4638,7 +4659,7 @@ class Mission { position[]={612.5592,6.1130395,1766.0806}; azimut=47; - id=356; + id=357; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -4648,7 +4669,7 @@ class Mission { position[]={615.22461,6.1123624,1763.1611}; azimut=47; - id=357; + id=358; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -4658,7 +4679,7 @@ class Mission { position[]={617.9707,6.1118112,1760.2085}; azimut=47; - id=358; + id=359; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -4668,7 +4689,7 @@ class Mission { position[]={620.83026,6.111268,1757.1453}; azimut=47; - id=359; + id=360; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -4678,7 +4699,7 @@ class Mission { position[]={630.09808,6.1594801,1777.1102}; azimut=47; - id=360; + id=361; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -4688,7 +4709,7 @@ class Mission { position[]={632.84418,6.1555433,1774.1576}; azimut=47; - id=361; + id=362; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -4698,7 +4719,7 @@ class Mission { position[]={635.70374,6.1514592,1771.0944}; azimut=47; - id=362; + id=363; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -4708,7 +4729,7 @@ class Mission { position[]={623.77191,6.1113486,1756.1417}; azimut=137; - id=363; + id=364; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -4718,7 +4739,7 @@ class Mission { position[]={627.08533,6.118546,1759.2059}; azimut=137; - id=364; + id=365; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -4728,7 +4749,7 @@ class Mission { position[]={630.12653,6.1373067,1762.0898}; azimut=137; - id=365; + id=366; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -4738,7 +4759,7 @@ class Mission { position[]={633.28107,6.1302304,1765.0156}; azimut=137; - id=366; + id=367; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -4748,7 +4769,7 @@ class Mission { position[]={636.5719,6.1396632,1768.0618}; azimut=137; - id=367; + id=368; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -4757,7 +4778,7 @@ class Mission class Item289 { position[]={706.69177,6.0280285,1802.6276}; - id=368; + id=369; side="EMPTY"; vehicle="Land_HelipadEmpty_F"; leader=1; @@ -4768,7 +4789,7 @@ class Mission { position[]={632.60626,6.1510415,1770.7809}; azimut=47; - id=369; + id=370; side="EMPTY"; vehicle="BlockConcrete_F"; skill=0.60000002; @@ -4777,7 +4798,7 @@ class Mission { position[]={629.41101,6.1462154,1767.7505}; azimut=47; - id=370; + id=371; side="EMPTY"; vehicle="BlockConcrete_F"; skill=0.60000002; @@ -4786,7 +4807,7 @@ class Mission { position[]={626.59137,6.1509094,1774.0905}; azimut=137; - id=371; + id=372; side="EMPTY"; vehicle="BlockConcrete_F"; skill=0.60000002; @@ -4795,7 +4816,7 @@ class Mission { position[]={624.69867,6.1512594,1776.2457}; azimut=47; - id=372; + id=373; side="EMPTY"; vehicle="Land_RampConcrete_F"; skill=0.60000002; @@ -4804,7 +4825,7 @@ class Mission { position[]={562.69476,5.9200697,1773.7856}; azimut=137; - id=373; + id=374; side="EMPTY"; vehicle="B_Slingload_01_Fuel_F"; leader=1; @@ -4815,7 +4836,7 @@ class Mission { position[]={569.4826,5.9463558,1770.5465}; azimut=137; - id=374; + id=375; side="EMPTY"; vehicle="B_Slingload_01_Medevac_F"; leader=1; @@ -4826,7 +4847,7 @@ class Mission { position[]={564.71368,5.9119935,1775.7009}; azimut=137; - id=375; + id=376; side="EMPTY"; vehicle="B_Slingload_01_Medevac_F"; leader=1; @@ -4837,7 +4858,7 @@ class Mission { position[]={669.15594,6.0016575,1849.6006}; azimut=317; - id=376; + id=377; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; @@ -4848,7 +4869,7 @@ class Mission { position[]={654.04657,6.0722308,1835.1169}; azimut=317; - id=377; + id=378; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; @@ -4859,7 +4880,7 @@ class Mission { position[]={638.38983,6.1403613,1821.3391}; azimut=317; - id=378; + id=379; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; @@ -4870,7 +4891,7 @@ class Mission { position[]={623.54932,6.1599998,1807.7683}; azimut=317; - id=379; + id=380; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; @@ -4881,7 +4902,7 @@ class Mission { position[]={603.19305,6.1418161,1790.6688}; azimut=317; - id=380; + id=381; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; @@ -4892,7 +4913,7 @@ class Mission { position[]={685.37543,6,1780.1918}; azimut=50; - id=381; + id=382; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4901,7 +4922,7 @@ class Mission { position[]={681.90033,6.0063958,1784.2704}; azimut=50; - id=382; + id=383; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4910,7 +4931,7 @@ class Mission { position[]={676.88818,6.0185676,1774.6417}; azimut=50; - id=383; + id=384; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4919,7 +4940,7 @@ class Mission { position[]={673.41309,6.0461111,1778.7203}; azimut=50; - id=384; + id=385; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4928,7 +4949,7 @@ class Mission { position[]={670.71643,6.0873852,1782.6809}; azimut=137; - id=385; + id=386; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; @@ -4939,7 +4960,7 @@ class Mission { position[]={679.18158,6.0524573,1788.1989}; azimut=137; - id=386; + id=387; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; @@ -4950,7 +4971,7 @@ class Mission { position[]={678.61255,6.0345254,1780.3463}; azimut=320; - id=387; + id=388; side="EMPTY"; vehicle="Land_HelipadEmpty_F"; leader=1; @@ -4961,7 +4982,7 @@ class Mission { position[]={687.05109,6,1786.4639}; azimut=320; - id=388; + id=389; side="EMPTY"; vehicle="Land_HelipadEmpty_F"; leader=1; @@ -4972,7 +4993,7 @@ class Mission { position[]={585.03925,5.9998951,1739.4398}; azimut=140; - id=389; + id=390; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -4982,7 +5003,7 @@ class Mission { position[]={588.39813,6,1742.255}; azimut=140; - id=390; + id=391; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -4992,7 +5013,7 @@ class Mission { position[]={598.42938,6.0542912,1750.6797}; azimut=140; - id=391; + id=392; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -5002,7 +5023,7 @@ class Mission { position[]={595.13855,6.0203271,1747.9103}; azimut=140; - id=392; + id=393; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -5012,7 +5033,7 @@ class Mission { position[]={591.71149,6,1745.0254}; azimut=140; - id=393; + id=394; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -5022,7 +5043,7 @@ class Mission { position[]={600.51654,6.0593295,1750.4819}; azimut=50; - id=394; + id=395; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -5032,7 +5053,7 @@ class Mission { position[]={611.72797,6.0272517,1737.1316}; azimut=50; - id=395; + id=396; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -5042,7 +5063,7 @@ class Mission { position[]={609.2088,6.0457883,1740.1292}; azimut=50; - id=396; + id=397; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -5052,7 +5073,7 @@ class Mission { position[]={602.94495,6.0579972,1747.554}; azimut=50; - id=397; + id=398; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -5062,7 +5083,7 @@ class Mission { position[]={609.66278,6.0466328,1740.8999}; azimut=5; - id=398; + id=399; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -5072,7 +5093,7 @@ class Mission { position[]={603.74005,6.0610042,1747.8864}; azimut=95; - id=399; + id=400; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -5082,7 +5103,7 @@ class Mission { position[]={598.12921,6,1723.8201}; azimut=140; - id=400; + id=401; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -5092,7 +5113,7 @@ class Mission { position[]={601.4881,6.0021806,1726.6353}; azimut=140; - id=401; + id=402; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -5102,7 +5123,7 @@ class Mission { position[]={611.51935,6.017067,1735.0599}; azimut=140; - id=402; + id=403; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -5112,7 +5133,7 @@ class Mission { position[]={608.22852,6,1732.2905}; azimut=140; - id=403; + id=404; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -5122,7 +5143,7 @@ class Mission { position[]={604.80145,6.0035982,1729.4056}; azimut=140; - id=404; + id=405; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -5132,7 +5153,7 @@ class Mission { position[]={610.77899,6.0364151,1738.7897}; azimut=230; - id=405; + id=406; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; @@ -5143,7 +5164,7 @@ class Mission { position[]={725.45691,6.0458541,1846.1737}; azimut=230; - id=406; + id=407; side="EMPTY"; vehicle="RHS_UH60M_MEV"; skill=0.60000002; @@ -5153,7 +5174,7 @@ class Mission { position[]={571.04938,5.8973398,1778.9484}; azimut=137; - id=407; + id=408; side="EMPTY"; vehicle="B_APC_Tracked_01_CRV_F"; skill=0.60000002; @@ -5163,7 +5184,7 @@ class Mission { position[]={680.40808,6.0993128,1803.2831}; azimut=50; - id=408; + id=409; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5172,7 +5193,7 @@ class Mission { position[]={675.34668,6.0741754,1809.3374}; azimut=50; - id=409; + id=410; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5181,7 +5202,7 @@ class Mission { position[]={675.979,6.0616417,1813.4052}; azimut=147; - id=410; + id=411; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5190,7 +5211,7 @@ class Mission { position[]={682.68005,6.0322962,1817.7988}; azimut=147; - id=411; + id=412; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5199,7 +5220,7 @@ class Mission { position[]={689.25104,6.011992,1822.1274}; azimut=147; - id=412; + id=413; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5208,7 +5229,7 @@ class Mission { position[]={697.63477,5.9948435,1827.311}; azimut=150; - id=413; + id=414; side="EMPTY"; vehicle="Land_HBarrier_1_F"; leader=1; @@ -5218,7 +5239,7 @@ class Mission { position[]={681.74548,6.0610647,1807.8552}; azimut=237; - id=414; + id=415; side="EMPTY"; vehicle="Land_TableDesk_F"; leader=1; @@ -5229,7 +5250,7 @@ class Mission { position[]={680.99677,6.0658684,1807.2673}; azimut=237; - id=415; + id=416; side="EMPTY"; vehicle="Land_OfficeChair_01_F"; leader=1; @@ -5239,7 +5260,7 @@ class Mission { position[]={681.58813,6.051743,1811.5081}; azimut=57; - id=416; + id=417; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5249,7 +5270,7 @@ class Mission { position[]={681.92853,6.0522275,1810.9861}; azimut=57; - id=417; + id=418; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5259,7 +5280,7 @@ class Mission { position[]={682.26898,6.05265,1810.4872}; azimut=57; - id=418; + id=419; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5269,7 +5290,7 @@ class Mission { position[]={682.58679,6.0540066,1809.9645}; azimut=57; - id=419; + id=420; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5279,7 +5300,7 @@ class Mission { position[]={682.92719,6.0577292,1809.4196}; azimut=57; - id=420; + id=421; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5289,7 +5310,7 @@ class Mission { position[]={683.29022,6.0615406,1808.8978}; azimut=57; - id=421; + id=422; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5299,7 +5320,7 @@ class Mission { position[]={683.63074,6.0651412,1808.399}; azimut=57; - id=422; + id=423; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5309,7 +5330,7 @@ class Mission { position[]={683.97113,6.0688019,1807.8771}; azimut=57; - id=423; + id=424; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5319,7 +5340,7 @@ class Mission { position[]={684.31158,6.0717525,1807.3782}; azimut=57; - id=424; + id=425; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5329,7 +5350,7 @@ class Mission { position[]={684.62939,6.0724773,1806.8555}; azimut=57; - id=425; + id=426; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5339,7 +5360,7 @@ class Mission { position[]={684.96979,6.0732937,1806.3105}; azimut=57; - id=426; + id=427; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5349,7 +5370,7 @@ class Mission { position[]={685.33282,6.0743232,1805.7888}; azimut=57; - id=427; + id=428; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5359,7 +5380,7 @@ class Mission { position[]={683.086,6.0507331,1812.4402}; azimut=57; - id=428; + id=429; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5369,7 +5390,7 @@ class Mission { position[]={683.42639,6.0543938,1811.9182}; azimut=57; - id=429; + id=430; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5379,7 +5400,7 @@ class Mission { position[]={683.76685,6.0579939,1811.4193}; azimut=57; - id=430; + id=431; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5389,7 +5410,7 @@ class Mission { position[]={684.08466,6.0615063,1810.8966}; azimut=57; - id=431; + id=432; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5399,7 +5420,7 @@ class Mission { position[]={684.42505,6.0652294,1810.3517}; azimut=57; - id=432; + id=433; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5409,7 +5430,7 @@ class Mission { position[]={684.78809,6.0690413,1809.83}; azimut=57; - id=433; + id=434; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5419,7 +5440,7 @@ class Mission { position[]={685.1286,6.0726409,1809.3312}; azimut=57; - id=434; + id=435; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5429,7 +5450,7 @@ class Mission { position[]={685.46899,6.0763025,1808.8092}; azimut=57; - id=435; + id=436; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5439,7 +5460,7 @@ class Mission { position[]={685.80945,6.0799022,1808.3103}; azimut=57; - id=436; + id=437; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5449,7 +5470,7 @@ class Mission { position[]={686.12726,6.083415,1807.7876}; azimut=57; - id=437; + id=438; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5459,7 +5480,7 @@ class Mission { position[]={686.46765,6.0857649,1807.2427}; azimut=57; - id=438; + id=439; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5469,7 +5490,7 @@ class Mission { position[]={686.83069,6.0867944,1806.7209}; azimut=57; - id=439; + id=440; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5479,7 +5500,7 @@ class Mission { position[]={684.4704,6.0554767,1813.3026}; azimut=57; - id=440; + id=441; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5489,7 +5510,7 @@ class Mission { position[]={684.81079,6.0605907,1812.7806}; azimut=57; - id=441; + id=442; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5499,7 +5520,7 @@ class Mission { position[]={685.15125,6.0649233,1812.2817}; azimut=57; - id=442; + id=443; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5509,7 +5530,7 @@ class Mission { position[]={685.46906,6.0684361,1811.759}; azimut=57; - id=443; + id=444; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5519,7 +5540,7 @@ class Mission { position[]={685.80945,6.0721588,1811.2141}; azimut=57; - id=444; + id=445; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5529,7 +5550,7 @@ class Mission { position[]={686.17249,6.0759706,1810.6924}; azimut=57; - id=445; + id=446; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5539,7 +5560,7 @@ class Mission { position[]={686.513,6.0795708,1810.1936}; azimut=57; - id=446; + id=447; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5549,7 +5570,7 @@ class Mission { position[]={686.85339,6.0832319,1809.6716}; azimut=57; - id=447; + id=448; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5559,7 +5580,7 @@ class Mission { position[]={687.19385,6.086832,1809.1727}; azimut=57; - id=448; + id=449; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5569,7 +5590,7 @@ class Mission { position[]={687.51166,6.0903444,1808.65}; azimut=57; - id=449; + id=450; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5579,7 +5600,7 @@ class Mission { position[]={687.85205,6.0940666,1808.1051}; azimut=57; - id=450; + id=451; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5589,7 +5610,7 @@ class Mission { position[]={688.21509,6.0978785,1807.5834}; azimut=57; - id=451; + id=452; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5599,7 +5620,7 @@ class Mission { position[]={685.99097,6.0408425,1814.4846}; azimut=57; - id=452; + id=453; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5609,7 +5630,7 @@ class Mission { position[]={686.33136,6.0459561,1813.9626}; azimut=57; - id=453; + id=454; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5619,7 +5640,7 @@ class Mission { position[]={686.67181,6.0508232,1813.4637}; azimut=57; - id=454; + id=455; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5629,7 +5650,7 @@ class Mission { position[]={686.98962,6.0559754,1812.941}; azimut=57; - id=455; + id=456; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5639,7 +5660,7 @@ class Mission { position[]={687.33002,6.0613337,1812.3961}; azimut=57; - id=456; + id=457; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5649,7 +5670,7 @@ class Mission { position[]={687.69305,6.0664144,1811.8744}; azimut=57; - id=457; + id=458; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5659,7 +5680,7 @@ class Mission { position[]={688.03357,6.0712814,1811.3756}; azimut=57; - id=458; + id=459; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5669,7 +5690,7 @@ class Mission { position[]={688.37396,6.076395,1810.8536}; azimut=57; - id=459; + id=460; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5679,7 +5700,7 @@ class Mission { position[]={688.71442,6.0812626,1810.3547}; azimut=57; - id=460; + id=461; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5689,7 +5710,7 @@ class Mission { position[]={689.03223,6.0864148,1809.832}; azimut=57; - id=461; + id=462; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5699,7 +5720,7 @@ class Mission { position[]={689.37262,6.091773,1809.2871}; azimut=57; - id=462; + id=463; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5709,7 +5730,7 @@ class Mission { position[]={689.73566,6.0968542,1808.7654}; azimut=57; - id=463; + id=464; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5719,7 +5740,7 @@ class Mission { position[]={682.53192,6.0658627,1806.7511}; azimut=237; - id=464; + id=465; side="EMPTY"; vehicle="Land_Laptop_unfolded_F"; leader=1; @@ -5731,7 +5752,7 @@ class Mission { position[]={687.56439,6.031858,1815.521}; azimut=57; - id=465; + id=466; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5741,7 +5762,7 @@ class Mission { position[]={687.90479,6.0328031,1814.999}; azimut=57; - id=466; + id=467; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5751,7 +5772,7 @@ class Mission { position[]={688.24524,6.0376706,1814.5001}; azimut=57; - id=467; + id=468; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5761,7 +5782,7 @@ class Mission { position[]={688.56305,6.0428233,1813.9774}; azimut=57; - id=468; + id=469; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5771,7 +5792,7 @@ class Mission { position[]={688.90344,6.0481811,1813.4325}; azimut=57; - id=469; + id=470; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5781,7 +5802,7 @@ class Mission { position[]={689.26648,6.0532622,1812.9108}; azimut=57; - id=470; + id=471; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5791,7 +5812,7 @@ class Mission { position[]={689.60699,6.0581293,1812.412}; azimut=57; - id=471; + id=472; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5801,7 +5822,7 @@ class Mission { position[]={689.94739,6.0632429,1811.89}; azimut=57; - id=472; + id=473; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5811,7 +5832,7 @@ class Mission { position[]={690.28784,6.0677261,1811.3911}; azimut=57; - id=473; + id=474; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5821,7 +5842,7 @@ class Mission { position[]={690.60565,6.0724549,1810.8684}; azimut=57; - id=474; + id=475; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5831,7 +5852,7 @@ class Mission { position[]={690.94604,6.0773587,1810.3235}; azimut=57; - id=475; + id=476; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5841,7 +5862,7 @@ class Mission { position[]={691.30908,6.0819559,1809.8018}; azimut=57; - id=476; + id=477; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -5851,7 +5872,7 @@ class Mission { position[]={695.21124,5.9986386,1825.8096}; azimut=150; - id=477; + id=478; side="EMPTY"; vehicle="Land_HBarrier_1_F"; leader=1; @@ -5861,7 +5882,7 @@ class Mission { position[]={694.07318,5.9928374,1843.0549}; azimut=140; - id=478; + id=479; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5870,7 +5891,7 @@ class Mission { position[]={709.13666,6.0419507,1852.8446}; azimut=140; - id=479; + id=480; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5879,7 +5900,7 @@ class Mission { position[]={703.02618,6.0231557,1827.2369}; azimut=50; - id=480; + id=481; side="EMPTY"; vehicle="Land_HBarrier_1_F"; leader=1; @@ -6252,7 +6273,7 @@ class Mission class Item38 { position[]={-3353.4824,389.99631,9884.207}; - name="mrk_freq_alpha_1_1"; + name="mrk_freq_bravo_1"; text="Bravo lead"; type="respawn_unknown"; a=0; @@ -6261,7 +6282,7 @@ class Mission class Item39 { position[]={-3369.6143,347.01813,9383.8916}; - name="mrk_freq_alpha_2_1"; + name="mrk_freq_bravo_2"; text="Bravo fireteam 1"; type="respawn_unknown"; a=0; @@ -6270,7 +6291,7 @@ class Mission class Item40 { position[]={-3380.3682,380.04196,8899.7158}; - name="mrk_freq_alpha_3_1"; + name="mrk_freq_bravo_3"; text="Bravo fireteam 2"; type="respawn_unknown"; a=0; @@ -6288,7 +6309,7 @@ class Mission class Item42 { position[]={-3396.5437,324.88177,7878.5625}; - name="mrk_freq_alpha_1_2"; + name="mrk_freq_charlie_1"; text="Charlie lead"; type="respawn_unknown"; a=0; @@ -6297,7 +6318,7 @@ class Mission class Item43 { position[]={-3412.6755,274.02872,7378.2471}; - name="mrk_freq_alpha_2_2"; + name="mrk_freq_charlie_2"; text="Charlie fireteam 1"; type="respawn_unknown"; a=0; @@ -6306,7 +6327,7 @@ class Mission class Item44 { position[]={-3423.4294,224.04544,6894.0713}; - name="mrk_freq_alpha_3_2"; + name="mrk_freq_charlie_3"; text="Charlie fireteam 2"; type="respawn_unknown"; a=0; diff --git a/onPlayerRespawn.sqf b/onPlayerRespawn.sqf index 5754166..16d6424 100644 --- a/onPlayerRespawn.sqf +++ b/onPlayerRespawn.sqf @@ -1,11 +1,24 @@ -player setPosASL getPosASL respawn_obj; +if(side player == west)then{ + player setPosASL getPosASL respawn_obj; +}; +if(side == east)then{ + _airfieldID = [false,airfieldOccup]call Zen_ValueFindInArray; + _mrkN = format ["mrk_infSpawn_%1",_airfieldID]; + _respawnPos = getMarkerPos _mrkN; + player setPosASL getPosASL _respawnPos; +}; zeusMod addCuratorEditableObjects [[player],false]; +cduEnabled = false; +//[]spawn JOC_loadoutMaster; + + + + + /*player addEventHandler ["fired", { if((_this select 0) distance respawn_obj < 500)then{ hint "Don't fire in base!"; deleteVehicle (_this select 6); }; }]; //Base protection*/ -//[]spawn JOC_loadoutMaster; -cduEnabled = false; \ No newline at end of file From 5d793885c979a2f1c98bdadacdffc427d72bb4be Mon Sep 17 00:00:00 2001 From: Jochem Date: Tue, 15 Sep 2015 22:04:21 +0200 Subject: [PATCH 08/17] 150915 -Added frequency to squad info -Removed vehicle damage handling (I'll leave it to mods) -Reworked vehInit --- Description.ext | 29 ++-- Functions/Player/click.sqf | 9 +- Functions/Vehicle/handleDamage.sqf | 57 ------- Functions/Vehicle/vehInit.sqf | 5 +- Functions/fn_compile.sqf | 2 +- Sounds/cookoff.wav | Bin 173684 -> 0 bytes mission.sqm | 244 ++++++----------------------- 7 files changed, 68 insertions(+), 278 deletions(-) delete mode 100644 Functions/Vehicle/handleDamage.sqf delete mode 100644 Sounds/cookoff.wav diff --git a/Description.ext b/Description.ext index 2b31cb9..c3b9150 100644 --- a/Description.ext +++ b/Description.ext @@ -31,26 +31,23 @@ class CfgFunctions class CfgSounds { - sounds[] = {cookOff}; - class cookOff + sounds[] = {}; + class AGM_CookOff { // how the sound is referred to in the editor (e.g. trigger effects) - name = "cookOffSound"; + name = "Cook-Off"; // filename, volume, pitch - sound[] = {"Sounds\cookoff.wav", 1, 1}; + sound[] = {"Data\Sounds\cookoff.wav", 1, 1}; + // subtitle delay in seconds, subtitle text + titles[] = {1, "*wolf growls*"}; }; }; -class CfgSFX -{ - sounds[] = {cookOff}; - - class cookOff - { - name = "cookOff"; - sounds[]={sound}; - sound[] = {"Sounds\cookoff.wav", db-0,1,1,5,1.2,1.2}; - empty[]= {, , , , 1 , 5, 20}; - }; +class CfgSFX { + class AGM_CookOff { + name = "Cook-Off"; + sounds[] = {"cookoff"}; + cookoff[] = {"Data\Sounds\cookoff.wav",6,1.8,400,1,0,0,0}; + empty[] = {"",0,0,0,0,0,0,0}; + }; }; - diff --git a/Functions/Player/click.sqf b/Functions/Player/click.sqf index 0b04f79..bdbad18 100644 --- a/Functions/Player/click.sqf +++ b/Functions/Player/click.sqf @@ -31,7 +31,12 @@ onMapSingleClick{ _unitText = composeText [_unitText, lineBreak, (name _x)]; }forEach _unitsG; _text = parseText format["%1",_groupIdG]; - _text = composeText [_text, lineBreak, _unitText]; + _freq = 0; + { + _freq = (call TFAR_fnc_ActiveSwRadio) call TFAR_fnc_getSwFrequency; + }forEach [(leader _group)]; + _freqText = format["SW freq: %1",_freq]; + _text = composeText [_text, lineBreak, _unitText, lineBreak, lineBreak, _freqText]; hint _text; }; -}; \ No newline at end of file +}; diff --git a/Functions/Vehicle/handleDamage.sqf b/Functions/Vehicle/handleDamage.sqf deleted file mode 100644 index ce13a73..0000000 --- a/Functions/Vehicle/handleDamage.sqf +++ /dev/null @@ -1,57 +0,0 @@ -///////////////////////// -//Script made by Jochem// -///////////////////////// -private["_fireEffect"]; -_tank = _this select 0; -_part = _this select 1; -_damage = _this select 2; - -_text = format["%1,%2",_part,_damage,(_tank getHit _part)]; -hint _text; - -_tank setHit[_part,((_damage * tankMuliplier) + (_tank getHit _part))]; - -if((_tank getHitPointDamage "HitEngine") > 0.8)then{ - if(!(_tank getVariable "burning"))then{ - _tank setVariable["burning",true,true]; - _fireEffect = "test_EmptyObjectForFireBig" createVehicle position _tank; - if((typeOf _tank) == "B_MBT_01_cannon_F")then{ - _fireEffect attachTo[_tank,[0,1.5,-0.7]]; - }else{ - _fireEffect attachTo[_tank,[0,-4,0]]; - }; - [_tank]spawn{ - _tank = _this select 0; - while{alive _tank}do{ - if(_tank getVariable "burning")then{ - _tank setDamage ((damage _tank) + 0.05); - sleep 0.5; - }; - }; - }; - [_tank]spawn{ - _tank = _this select 0; - _crew = []; - while{alive _tank}do{ - if(_tank getVariable "burning")then{ - _crew = (crew _tank); - { - []spawn{ - [] call BIS_fnc_flamesEffect; - player setDamage ((damage player) + 0.05); - }; - }forEach _crew; - sleep 0.4; - }; - }; - }; - }; -}; - -if(!alive _tank)then{ - { - _obj = _x; - detach _obj; - _obj setPos [999999,999999,999999]; - }forEach (attachedObjects _tank); -}; \ No newline at end of file diff --git a/Functions/Vehicle/vehInit.sqf b/Functions/Vehicle/vehInit.sqf index 1bf5965..0c5fd70 100644 --- a/Functions/Vehicle/vehInit.sqf +++ b/Functions/Vehicle/vehInit.sqf @@ -34,8 +34,7 @@ if(_vehicletype == "B_Heli_Transport_03_unarmed_F" or _vehicletype == "RHS_CH_47 }; //Tank -if(_vehicletype == "B_MBT_01_cannon_F" or _vehicletype == "rhsusf_m1a2sep1wd_usarmy")then{ - _vehicle addMagazine "rhs_mag_M1069"; +if(_vehicle isKindOf "Tank")then{ }; //IFV @@ -72,4 +71,4 @@ if(_vehicletype == "B_Slingload_01_Ammo_F" or _vehicletype == "B_Slingload_01_Fu [_vehicle]spawn JOC_crateInit; }; -zeusMod addCuratorEditableObjects [[_vehicle],false]; \ No newline at end of file +zeusMod addCuratorEditableObjects [[_vehicle],false]; diff --git a/Functions/fn_compile.sqf b/Functions/fn_compile.sqf index 845906b..ed0fa49 100644 --- a/Functions/fn_compile.sqf +++ b/Functions/fn_compile.sqf @@ -80,4 +80,4 @@ JOC_towDetach = compileFinal preprocessFileLineNumbers "Functions\Vehicle\Tow\de JOC_vehCDU = compileFinal preprocessFileLineNumbers "Functions\Vehicle\cdu.sqf"; JOC_garage = compileFinal preprocessFileLineNumbers "Functions\Vehicle\Garage\main.sqf"; JOC_garageFnc = compileFinal preprocessFileLineNumbers "Functions\Vehicle\Garage\garageFnc.sqf"; -JOC_garageScrap = compileFinal preprocessFileLineNumbers "Functions\Vehicle\Garage\scrap.sqf"; \ No newline at end of file +JOC_garageScrap = compileFinal preprocessFileLineNumbers "Functions\Vehicle\Garage\scrap.sqf"; diff --git a/Sounds/cookoff.wav b/Sounds/cookoff.wav deleted file mode 100644 index 169986617b648b59d90906f4b794dab4deb3a6b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 173684 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

xC5)U1Nb@GOY_K9H$f0wLP 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

>54QM`pdB$^;3A)LK# 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

mZfwt}rj_$@MF8 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 q+d%BH-J%&gZOVQQu%I=2iMcR$dLe Date: Wed, 16 Sep 2015 17:09:34 +0200 Subject: [PATCH 09/17] 160915 -Improved airfield occupation -Added missing vehicle crews to zeus -Improved caching -Decreased zone sizes -Reworked vehicle spawning, now in whitelists -Added medical and support vehicle point --- Functions/AI/spawnAirfield.sqf | 19 +- Functions/AI/spawnZone.sqf | 3 +- Functions/Caching/cache.sqf | 27 +- Functions/Caching/cacheInit.sqf | 2 +- Functions/Caching/unCache.sqf | 10 +- Functions/Towns/occupy.sqf | 6 +- Functions/Vehicle/Garage/garageFnc.sqf | 17 +- Functions/Vehicle/Garage/getArray.sqf | 77 +++ Functions/Vehicle/Garage/main.sqf | 263 ++------ Functions/Vehicle/Garage/scrap.sqf | 5 +- Functions/Vehicle/vehInit.sqf | 2 +- Functions/fn_compile.sqf | 2 +- init.sqf | 4 +- mission.sqm | 847 ++++++++++++------------- missionInit.sqf | 6 +- 15 files changed, 598 insertions(+), 692 deletions(-) create mode 100644 Functions/Vehicle/Garage/getArray.sqf diff --git a/Functions/AI/spawnAirfield.sqf b/Functions/AI/spawnAirfield.sqf index 2432531..66c717e 100644 --- a/Functions/AI/spawnAirfield.sqf +++ b/Functions/AI/spawnAirfield.sqf @@ -8,7 +8,7 @@ _size = getMarkerSize _marker; //Create activation trigger _trg = createTrigger ["EmptyDetector",_location,true]; -_trg setTriggerArea [(_size select 0)*4,(_size select 1)*4,1200,false]; +_trg setTriggerArea [(_size select 0)*3.5,(_size select 1)*3.5,1200,false]; _trg setTriggerActivation ["WEST","PRESENT", false]; _trg setTriggerStatements ["this","[getPos thisTrigger,1600,[11,true],[4,false],[0,false],[3,false],[2,false],[0,false,""cas""],[0,false]] call JOC_spawnZone;deleteVehicle thisTrigger;",""]; _trg setTriggerTimeout [5,5,5,true]; @@ -63,9 +63,22 @@ _trgO setTriggerStatements ["this","",""]; _trgO setTriggerTimeout [5,5,5,true]; _trgO setDir (markerDir _marker); +_trgB = createTrigger ["EmptyDetector",_location,true]; +_trgB setTriggerArea [(_size select 0),(_size select 1),1200,false]; +_trgB setTriggerActivation ["WEST","PRESENT", false]; +_trgB setTriggerStatements ["this","",""]; +_trgB setTriggerTimeout [5,5,5,true]; +_trgB setDir (markerDir _marker); + waitUntil{sleep 30;list _trgO >= 1}; -waitUntil{sleep 30;list _trgO <= 5}; + +while{list _trgO <= 5}do{ + if(list _trgB >= 5)then{ + [airfieldOccup,_id,cont] call Zen_ArrayInsert; + sleep 30; + }; +}; deleteMarker _trgO; -[airfieldOccup,_id,true] call Zen_ArrayInsert; \ No newline at end of file +[airfieldOccup,_id,true] call Zen_ArrayInsert; diff --git a/Functions/AI/spawnZone.sqf b/Functions/AI/spawnZone.sqf index 8829e64..ef12f99 100644 --- a/Functions/AI/spawnZone.sqf +++ b/Functions/AI/spawnZone.sqf @@ -40,6 +40,7 @@ if((_car select 0) > 0)then{ _veh = [_locationS,(carPool call BIS_fnc_selectRandom)] call Zen_SpawnVehicle; createVehicleCrew _veh; zeusMod addCuratorEditableObjects [[_veh],false]; + zeusMod addCuratorEditableObjects [(crew _veh),false]; _count = (_veh emptyPositions "cargo"); _groupV = [[0,0,0], east, "infantry", (_count - 1),"Basic"] call Zen_SpawnInfantry; _units = (units _groupV); @@ -141,4 +142,4 @@ if(_boatCount > 0)then{ }; _j = _j + 1; }; -}; \ No newline at end of file +}; diff --git a/Functions/Caching/cache.sqf b/Functions/Caching/cache.sqf index 3d9ecf4..2016512 100644 --- a/Functions/Caching/cache.sqf +++ b/Functions/Caching/cache.sqf @@ -14,21 +14,44 @@ hint "cch"; listT = _list; { - if(isNil{_x getVariable "JOC_disable_caching"})then{ + if(isNil{_x getVariable "JOC_disable_caching"} and (_x isKindOf "man"))then{ _x setVariable ["JOC_disable_caching",false,true]; _name = [10] call Zen_StringGenerateRandom; _x setVehicleVarName _name; }; + if(isNil{_x getVariable "JOC_disable_caching"} and !(_x isKindOf "man"))then{ + _name = [10] call Zen_StringGenerateRandom; + _x setVehicleVarName _name; + { + _x setVariable ["JOC_disable_caching",false,true]; + _name = [10] call Zen_StringGenerateRandom; + _x setVehicleVarName _name; + }forEach (crew _x); + }; +}forEach _list; + +{ if(!(_x getVariable "JOC_disable_caching"))then{ if(_x == (leader(group _x)) and (group _x) != cacheGroup)then{ _units = (units(group _x)); _x setVariable ["leader",true,true]; _x setVariable ["units",_units,true]; { - _x enableSimulationGlobal false; _x hideObjectGlobal true; + _x enableSimulationGlobal false; + _x hideObjectGlobal true; [_x] joinSilent cacheGroup; }forEach _units; }; + if(!(_x isKindOf "man"))then{ + { + if(!(_x getVariable "JOC_disable_caching"))then{ + _x enableSimulationGlobal false; + _x hideObjectGlobal true; + _x setVariable ["vehicle",vehicle _x]; + [_x] joinSilent cacheGroup; + }; + }forEach (crew _x); + }; }; }forEach _list; diff --git a/Functions/Caching/cacheInit.sqf b/Functions/Caching/cacheInit.sqf index 68e6ac2..c112863 100644 --- a/Functions/Caching/cacheInit.sqf +++ b/Functions/Caching/cacheInit.sqf @@ -48,6 +48,6 @@ while {_xA < _hor}do{ }; cacheGroup = createGroup east; -[cacheGroupLeader]joinSilent cacheGroup; +[cacheGroupLeader] joinSilent cacheGroup; cacheGroup selectLeader cacheGroupLeader; cachedGroups = []; diff --git a/Functions/Caching/unCache.sqf b/Functions/Caching/unCache.sqf index 86de139..5964952 100644 --- a/Functions/Caching/unCache.sqf +++ b/Functions/Caching/unCache.sqf @@ -23,11 +23,19 @@ _list = (list _trg); _arg = ([_x] + (_x getVariable "patrol")); _arg spawn Zen_OrderVehiclePatrol; }else{ - _arg = ([_group] + (_x getVariable "patrol")); + _arg = ([group _x] + (_x getVariable "patrol")); _arg spawn Zen_OrderInfantryPatrol; }; }; }; + if(!(_x isKindOf "man"))then{ + { + if(!(_x getVariable "JOC_disable_caching"))then{ + _x enableSimulationGlobal true; + _x hideObjectGlobal false; + }; + }forEach (crew _x); + }; _x enableSimulationGlobal true; _x hideObjectGlobal false; }forEach _list; diff --git a/Functions/Towns/occupy.sqf b/Functions/Towns/occupy.sqf index 43d46ad..3e09ff8 100644 --- a/Functions/Towns/occupy.sqf +++ b/Functions/Towns/occupy.sqf @@ -28,7 +28,7 @@ if(_targetTown in _towns)then{ _trg = createTrigger ["EmptyDetector",_location,true]; _trg setTriggerArea [900,900,900,false]; _trg setTriggerActivation ["WEST","PRESENT", false]; - _trg setTriggerStatements ["this","[getPos thisTrigger,550,[11,true],[5,false],[0,false],[3,false],[1,false],[0,false,""cas""],[0,false]] call JOC_spawnZone;[getPos thisTrigger,600] spawn JOC_monitorTown;deleteVehicle thisTrigger;",""]; + _trg setTriggerStatements ["this","[getPos thisTrigger,475,[11,true],[5,false],[0,false],[3,false],[1,false],[0,false,""cas""],[0,false]] call JOC_spawnZone;[getPos thisTrigger,600] spawn JOC_monitorTown;deleteVehicle thisTrigger;",""]; _trg setTriggerTimeout [5,5,5,true]; _marker = createMarker [_nameT, _location]; @@ -48,7 +48,7 @@ if(_targetTown in _villages)then{ _trg = createTrigger ["EmptyDetector",_location,true]; _trg setTriggerArea [700,700,700,false]; _trg setTriggerActivation ["WEST","PRESENT", false]; - _trg setTriggerStatements ["this","[getPos thisTrigger,300,[7,true],[2,false],[0,false],[0,false],[0,false],[0,false,""cas""],[0,false]] call JOC_spawnZone;[getPos thisTrigger,400] spawn JOC_monitorTown; deleteVehicle thisTrigger;",""]; + _trg setTriggerStatements ["this","[getPos thisTrigger,250,[7,true],[2,false],[0,false],[0,false],[0,false],[0,false,""cas""],[0,false]] call JOC_spawnZone;[getPos thisTrigger,400] spawn JOC_monitorTown; deleteVehicle thisTrigger;",""]; _trg setTriggerTimeout [5,5,5,true]; _marker = createMarker [_nameT, _location]; @@ -78,4 +78,4 @@ if(_targetTown in _capitals)then{ _nameT setMarkerColor "ColorOPFOR"; [opTownMarkers,count opTownMarkers,_nameT] call Zen_ArrayInsert; -}; \ No newline at end of file +}; diff --git a/Functions/Vehicle/Garage/garageFnc.sqf b/Functions/Vehicle/Garage/garageFnc.sqf index 63369c8..42aba47 100644 --- a/Functions/Vehicle/Garage/garageFnc.sqf +++ b/Functions/Vehicle/Garage/garageFnc.sqf @@ -1,19 +1,24 @@ - +///////////////////////// +//Script made by Jochem// +///////////////////////// private["_veh","_dis","_time"]; _spawnObj = _this select 0; - + waitUntil {isNull(uiNamespace getVariable ["BIS_fnc_arsenal_cam",objNull])}; _veh = nearestObject [_spawnObj, "AllVehicles"]; _dis = _veh distance _spawnObj; - + if(_dis > 5)then{}else{ publicVariable "_veh"; + { + deleteVehicle _x; + }forEach (crew _veh); _spawnObj setVariable["count",((_spawnObj getVariable "count") + 1)]; _veh setVariable ["pad",_spawnObj]; _veh setDir (getDir _spawnObj); if(_veh isKindOf "car")then{ - _time = 60; + _time = 60; }; if(_veh isKindOf "tank")then{ _time = 600; @@ -24,7 +29,7 @@ if(_dis > 5)then{}else{ if(_veh isKindOf "Ship")then{ _time = 60; }; - + [_veh]spawn JOC_vehInit; [[[_veh],{(_this select 0) setVehicleLock "LOCKED";}],"BIS_fnc_spawn",true,true] call BIS_fnc_MP; @@ -32,4 +37,4 @@ if(_dis > 5)then{}else{ sleep _time; [[[_veh],{(_this select 0) setVehicleLock "UNLOCKED";}],"BIS_fnc_spawn",true,true] call BIS_fnc_MP; hint "Vehicle is ready"; -}; \ No newline at end of file +}; diff --git a/Functions/Vehicle/Garage/getArray.sqf b/Functions/Vehicle/Garage/getArray.sqf new file mode 100644 index 0000000..73538a2 --- /dev/null +++ b/Functions/Vehicle/Garage/getArray.sqf @@ -0,0 +1,77 @@ +_array = _this select 0; + +_vehicleData = [ + [], //CARS + [], //ARMOUR + [], //HELIS + [], //PLANES + [], //NAVAL + [] //STATICS +]; + + +_vehicleDataTypes_enum = [ + [ "car", "carx" ], + [ "tank", "tankx" ], + [ "helicopter", "helicopterx", "helicopterrtd" ], + [ "airplane", "airplanex" ], + [ "ship", "shipx", "sumbarinex" ] +]; + + + +_fnc_getVehicleDataTypeIndex = { + _type = toLower _this; + _return = -1; + { + if ( _type in _x ) exitWith { + _return = _forEachIndex; + }; + }forEach _vehicleDataTypes_enum; + _return +}; + + + +_defaultCrew = gettext (configfile >> "cfgvehicles" >> "all" >> "crew"); +" + _cfgPath = _x; + _simulType = getText ( _cfgPath >> 'simulation' ); + _simulIndex = _simulType call _fnc_getVehicleDataTypeIndex; + + if ( ( tolower ( getText ( _cfgPath >> 'vehicleClass' ) ) isEqualTo 'static' ) ) then { + _simulIndex = 5; + }; + + if (( configName _cfgPath) in _array ) then { + if ( getnumber (_cfgPath >> 'scope') == 2 && {gettext (_cfgPath >> 'crew') != _defaultCrew} && { _simulIndex >= 0 } ) then { + + _side = getNumber ( _cfgPath >> 'side' ); + _model = getText ( _cfgPath >> 'model' ); + + _sides = [_side]; + + { + + _tmpSide = _vehicleData; + + _tmpTypes = _tmpSide select _simulIndex; + + _index = ( _tmpTypes find _model ); + + if ( _index >= 0 ) then { + _index = _index + 1; + ( _tmpTypes select _index ) pushback _cfgPath; + }else{ + _tmpTypes pushback _model; + _tmpTypes pushback [ _cfgPath ]; + }; + + }foreach _sides; + }; + }; +" configClasses ( configFile >> "CfgVehicles" ); + +resturnVar = _vehicleData; + +_vehicleData diff --git a/Functions/Vehicle/Garage/main.sqf b/Functions/Vehicle/Garage/main.sqf index d00d50a..0583086 100644 --- a/Functions/Vehicle/Garage/main.sqf +++ b/Functions/Vehicle/Garage/main.sqf @@ -1,202 +1,11 @@ - -_airA = ["RHS_UH60M","RHS_AH64D_wd_AA","MELB_H6M","B_Heli_Transport_03_F","B_Heli_Transport_03_unarmed_F","B_Heli_Transport_01_camo_F","RHS_CH_47F"]; +///////////////////////// +//Script made by Jochem// +///////////////////////// +_airA = ["RHS_UH60M","RHS_AH64D","MELB_H6M","B_Heli_Transport_03_F","B_Heli_Transport_01_F","RHS_CH_47F"]; _carA = ["rhsusf_m1025_w_m2","rhsusf_m1025_w_s_m2","rhsusf_m1025_w_mk19","rhsusf_m1025_w_s_Mk19","rhsusf_m1025_w","rhsusf_m1025_w_s","rhsusf_m998_w_2dr_fulltop","rhsusf_m998_w_2dr_halftop","rhsusf_m998_w_2dr","rhsusf_m998_w_4dr_fulltop","rhsusf_m998_w_4dr_halftop","rhsusf_m998_w_4dr"]; -_armorA = ["rhsusf_m1a2sep1wd_usarmy","rhsusf_m1a2sep1tuskiwd_usarmy","rhsusf_m1a2sep1tuskiiwd_usarmy","rhsusf_m113_usarmy","RHS_M2A3_wd","RHS_M2A3_BUSKI_wd","RHS_M2A3_BUSKIII_wd","RHS_M6_wd"]; -_allowCiv = false; - -_vehicleData = [ - - //OPFOR - - [ - - [], //CARS - - [], //ARMOUR - - [], //HELIS - - [], //PLANES - - [], //NAVAL - - [] //STATICS - - ], - - //BLUFOR - - [ - - [], //CARS - - [], //ARMOUR - - [], //HELIS - - [], //PLANES - - [], //NAVAL - - [] //STATICS - - ], - - //INDEPENDENT - - [ - - [], //CARS - - [], //ARMOUR - - [], //HELIS - - [], //PLANES - - [], //NAVAL - - [] //STATICS - - ], - - //CIVILIAN - - [ - - [], //CARS - - [], //ARMOUR - - [], //HELIS - - [], //PLANES - - [], //NAVAL - - [] //STATICS - - ] - -]; - - -_vehicleDataTypes_enum = [ - - [ "car", "carx" ], - - [ "tank", "tankx" ], - - [ "helicopter", "helicopterx", "helicopterrtd" ], - - [ "airplane", "airplanex" ], - - [ "ship", "shipx", "sumbarinex" ] - -]; - - - -_fnc_getVehicleDataTypeIndex = { - - _type = toLower _this; - - _return = -1; - - { - - if ( _type in _x ) exitWith { - - _return = _forEachIndex; - - }; - - }forEach _vehicleDataTypes_enum; - - - - _return - -}; - - - -_defaultCrew = gettext (configfile >> "cfgvehicles" >> "all" >> "crew"); - -" - - _cfgPath = _x; - - _simulType = getText ( _cfgPath >> 'simulation' ); - - _simulIndex = _simulType call _fnc_getVehicleDataTypeIndex; - - if ( ( tolower ( getText ( _cfgPath >> 'vehicleClass' ) ) isEqualTo 'static' ) ) then { - - _simulIndex = 5; - - }; - - - - if ( getnumber (_cfgPath >> 'scope') == 2 && {gettext (_cfgPath >> 'crew') != _defaultCrew} && { _simulIndex >= 0 } ) then { - - - - _side = getNumber ( _cfgPath >> 'side' ); - - _model = getText ( _cfgPath >> 'model' ); - - - - _sides = [ _side ]; - - if ( _allowCiv && { _side isEqualTo 3 } ) then { - - _sides = _sides + [ 0, 1, 2 ]; - - }; - - - - { - - - - _tmpSide = _vehicleData select _x; - - _tmpTypes = _tmpSide select _simulIndex; - - - - _index = ( _tmpTypes find _model ); - - if ( _index >= 0 ) then { - - _index = _index + 1; - - ( _tmpTypes select _index ) pushback _cfgPath; - - }else{ - - _tmpTypes pushback _model; - - _tmpTypes pushback [ _cfgPath ]; - - }; - - }foreach _sides; - - - - }; - - - -" configClasses ( configFile >> "CfgVehicles" ); - - -testV = _vehicleData; +_armorA = ["rhsusf_m1a2sep1wd_usarmy","rhsusf_m1a2sep1tuskiwd_usarmy","rhsusf_m1a2sep1tuskiiwd_usarmy","rhsusf_m113_usarmy","rhsusf_m113d_usarmy_M240","rhsusf_m113d_usarmy_MK19","rhsusf_m113d_usarmy_unarmed","RHS_M2A3","RHS_M2A3_BUSKI","RHS_M2A3_BUSKIII","RHS_M6"]; +_suppA = ["B_Heli_Transport_03_unarmed_F","B_APC_Tracked_01_CRV_F","B_Truck_01_fuel_F","B_Truck_01_ammo_F","B_Truck_01_Repair_F"]; +_medA = ["RHS_UH60M_MEV","rhsusf_m113_usarmy_medical","B_Truck_01_medical_F"]; garage_spawn_0 setVariable["count",0]; garage_spawner_0 addAction ["Request vehicle",{ @@ -205,12 +14,12 @@ garage_spawner_0 addAction ["Request vehicle",{ hint "Pad not clear or max vehicles reached"; }else{ BIS_fnc_garage_center = createVehicle ["Land_HelipadEmpty_F", (getPos garage_spawn_0), [], 0, "CAN_COLLIDE" ]; - _array = ( _this select 3 ) select ( side player call BIS_fnc_sideID ); - BIS_fnc_garage_data = [[],[],(_array select 2),[],[],[]]; + _array = [(_this select 3)]call JOC_garageGetArray; + BIS_fnc_garage_data = _array; ["Open",true] call BIS_fnc_garage; [garage_spawn_0]spawn JOC_garageFnc; }; -},_vehicleData]; +},_airA]; garage_spawn_1 setVariable["count",0]; garage_spawner_1 addAction ["Request vehicle",{ @@ -219,12 +28,12 @@ garage_spawner_1 addAction ["Request vehicle",{ hint "Pad not clear or max vehicles reached"; }else{ BIS_fnc_garage_center = createVehicle ["Land_HelipadEmpty_F", (getPos garage_spawn_1), [], 0, "CAN_COLLIDE" ]; - _array = ( _this select 3 ) select ( side player call BIS_fnc_sideID ); - BIS_fnc_garage_data = [[],[],(_array select 2),[],[],[]]; + _array = [(_this select 3)]call JOC_garageGetArray; + BIS_fnc_garage_data = _array; ["Open",true] call BIS_fnc_garage; [garage_spawn_1]spawn JOC_garageFnc; }; -},_vehicleData]; +},_airA]; garage_spawn_2 setVariable["count",0]; garage_spawner_2 addAction ["Request vehicle",{ @@ -233,12 +42,12 @@ garage_spawner_2 addAction ["Request vehicle",{ hint "Pad not clear or max vehicles reached"; }else{ BIS_fnc_garage_center = createVehicle ["Land_HelipadEmpty_F", (getPos garage_spawn_2), [], 0, "CAN_COLLIDE" ]; - _array = ( _this select 3 ) select ( side player call BIS_fnc_sideID ); - BIS_fnc_garage_data = [[],[],(_array select 2),[],[],[]]; + _array = [(_this select 3)]call JOC_garageGetArray; + BIS_fnc_garage_data = _array; ["Open",true] call BIS_fnc_garage; [garage_spawn_2]spawn JOC_garageFnc; }; -},_vehicleData]; +},_airA]; garage_spawn_3 setVariable["count",0]; garage_spawner_3 addAction ["Request vehicle",{ @@ -247,12 +56,12 @@ garage_spawner_3 addAction ["Request vehicle",{ hint "Pad not clear or max vehicles reached"; }else{ BIS_fnc_garage_center = createVehicle ["Land_HelipadEmpty_F", (getPos garage_spawn_3), [], 0, "CAN_COLLIDE" ]; - _array = ( _this select 3 ) select ( side player call BIS_fnc_sideID ); - BIS_fnc_garage_data = [[],[],(_array select 2),[],[],[]]; + _array = [(_this select 3)]call JOC_garageGetArray; + BIS_fnc_garage_data = _array; ["Open",true] call BIS_fnc_garage; [garage_spawn_3]spawn JOC_garageFnc; }; -},_vehicleData]; +},_airA]; garage_spawn_4 setVariable["count",0]; garage_spawner_4 addAction ["Request vehicle",{ @@ -261,12 +70,12 @@ garage_spawner_4 addAction ["Request vehicle",{ hint "Pad not clear or max vehicles reached"; }else{ BIS_fnc_garage_center = createVehicle ["Land_HelipadEmpty_F", (getPos garage_spawn_4), [], 0, "CAN_COLLIDE" ]; - _array = ( _this select 3 ) select ( side player call BIS_fnc_sideID ); - BIS_fnc_garage_data = [[],[],(_array select 2),[],[],[]]; + _array = [(_this select 3)]call JOC_garageGetArray; + BIS_fnc_garage_data = _array; ["Open",true] call BIS_fnc_garage; [garage_spawn_4]spawn JOC_garageFnc; }; -},_vehicleData]; +},_suppA]; garage_spawn_5 setVariable["count",0]; garage_spawner_5 addAction ["Request vehicle",{ @@ -275,23 +84,37 @@ garage_spawner_5 addAction ["Request vehicle",{ hint "Pad not clear or max vehicles reached"; }else{ BIS_fnc_garage_center = createVehicle ["Land_HelipadEmpty_F", (getPos garage_spawn_5), [], 0, "CAN_COLLIDE" ]; - _array = ( _this select 3 ) select ( side player call BIS_fnc_sideID ); - BIS_fnc_garage_data = [(_array select 0),[],[],[],[],[]]; + _array = [(_this select 3)]call JOC_garageGetArray; + BIS_fnc_garage_data = _array; ["Open",true] call BIS_fnc_garage; [garage_spawn_5]spawn JOC_garageFnc; }; -},_vehicleData]; +},_carA]; garage_spawn_6 setVariable["count",0]; garage_spawner_6 addAction ["Request vehicle",{ - _veh = nearestObjects [(getPos garage_spawn_5),["AllVehicles"],5]; + _veh = nearestObjects [(getPos garage_spawn_6),["AllVehicles"],5]; if(((count _veh) >= 1) or ((garage_spawn_6 getVariable "count") >= 4))then{ hint "Pad not clear or max vehicles reached"; }else{ BIS_fnc_garage_center = createVehicle ["Land_HelipadEmpty_F", (getPos garage_spawn_6), [], 0, "CAN_COLLIDE" ]; - _array = ( _this select 3 ) select ( side player call BIS_fnc_sideID ); - BIS_fnc_garage_data = [[],(_array select 1),[],[],[],[]]; + _array = [(_this select 3)]call JOC_garageGetArray; + BIS_fnc_garage_data = _array; ["Open",true] call BIS_fnc_garage; [garage_spawn_6]spawn JOC_garageFnc; }; -},_vehicleData]; \ No newline at end of file +},_armorA]; + +garage_spawn_med setVariable["count",0]; +garage_spawner_med addAction ["Request vehicle",{ + _veh = nearestObjects [(getPos garage_spawn_med),["AllVehicles"],5]; + if(((count _veh) >= 1) or ((garage_spawn_med getVariable "count") >= 4))then{ + hint "Pad not clear or max vehicles reached"; + }else{ + BIS_fnc_garage_center = createVehicle ["Land_HelipadEmpty_F", (getPos garage_spawn_med), [], 0, "CAN_COLLIDE" ]; + _array = [(_this select 3)]call JOC_garageGetArray; + BIS_fnc_garage_data = _array; + ["Open",true] call BIS_fnc_garage; + [garage_spawn_med]spawn JOC_garageFnc; + }; +},_medA]; diff --git a/Functions/Vehicle/Garage/scrap.sqf b/Functions/Vehicle/Garage/scrap.sqf index 4d38833..724c35a 100644 --- a/Functions/Vehicle/Garage/scrap.sqf +++ b/Functions/Vehicle/Garage/scrap.sqf @@ -1,6 +1,9 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// private ["_veh"]; _veh = _this select 0; _id = trg_scrap addAction[ "Scrap vehicle",{_veh = _this select 3; _pad = (_veh getVariable "pad"); _pad setVariable["count",((_pad getVariable "count") - 1)]; deleteVehicle _veh},_veh]; waitUntil{sleep 0.3;((_veh distance garage_scrap) > 7)}; -garage_scrap removeAction _id; \ No newline at end of file +garage_scrap removeAction _id; diff --git a/Functions/Vehicle/vehInit.sqf b/Functions/Vehicle/vehInit.sqf index 0c5fd70..6889974 100644 --- a/Functions/Vehicle/vehInit.sqf +++ b/Functions/Vehicle/vehInit.sqf @@ -21,7 +21,7 @@ if(_vehicletype == "RHS_AH64D_wd_AA")then{ }; //Medical heli -if(_vehicletype == "RHS_UH60M_MEV")then{ +if(_vehicletype == "RHS_UH60M_MEV" or _vehicletype == "rhsusf_m113_usarmy_medical" or _vehicletype == "B_Truck_0")then{ _vehicle setVariable ["ace_medical_medicClass", 1]; }; diff --git a/Functions/fn_compile.sqf b/Functions/fn_compile.sqf index ed0fa49..81676c2 100644 --- a/Functions/fn_compile.sqf +++ b/Functions/fn_compile.sqf @@ -74,10 +74,10 @@ JOC_vehInit = compileFinal preprocessFileLineNumbers "Functions\Vehicle\vehInit. JOC_vehRespawn = compileFinal preprocessFileLineNumbers "Functions\Vehicle\vehicle_respawn.sqf"; JOC_tow = compileFinal preprocessFileLineNumbers "Functions\Vehicle\tow.sqf"; JOC_service = compileFinal preprocessFileLineNumbers "Functions\Vehicle\service.sqf"; -JOC_handleVehDamage = compileFinal preprocessFileLineNumbers "Functions\Vehicle\handleDamage.sqf"; JOC_towAttach = compileFinal preprocessFileLineNumbers "Functions\Vehicle\Tow\attach.sqf"; JOC_towDetach = compileFinal preprocessFileLineNumbers "Functions\Vehicle\Tow\detach.sqf"; JOC_vehCDU = compileFinal preprocessFileLineNumbers "Functions\Vehicle\cdu.sqf"; JOC_garage = compileFinal preprocessFileLineNumbers "Functions\Vehicle\Garage\main.sqf"; JOC_garageFnc = compileFinal preprocessFileLineNumbers "Functions\Vehicle\Garage\garageFnc.sqf"; JOC_garageScrap = compileFinal preprocessFileLineNumbers "Functions\Vehicle\Garage\scrap.sqf"; +JOC_garageGetArray = compileFinal preprocessFileLineNumbers "Functions\Vehicle\Garage\getArray.sqf"; diff --git a/init.sqf b/init.sqf index 3dd7fd4..b3527b7 100644 --- a/init.sqf +++ b/init.sqf @@ -8,7 +8,7 @@ call compile preprocessFile "Baked_AIS\Baked_AIS_init.sqf"; // Gemini by Jochem // Version = 0.6 -// Tested with ArmA 3 <1.48> +// Tested with ArmA 3 <1.50> enableSaving [false, false]; eastHQ = createCenter east; @@ -19,4 +19,4 @@ sleep 1; // All clients stop executing here, do not delete this line if (!isServer) exitWith {}; -[]execVM "missionInit.sqf"; \ No newline at end of file +[]execVM "missionInit.sqf"; diff --git a/mission.sqm b/mission.sqm index 20c5425..c339477 100644 --- a/mission.sqm +++ b/mission.sqm @@ -27,7 +27,6 @@ class Mission "A3_Structures_F_Mil_Helipads", "aia_misc_e_config", "A3_Supplies_F_Heli_Slingload", - "A3_Soft_F_Gamma_HEMTT", "A3_Supplies_F_Heli_CargoNets", "A3_Structures_F_Training", "A3_Structures_F_System", @@ -38,8 +37,6 @@ class Mission "ace_sitting", "ace_nametags", "A3_Structures_F_Civ_InfoBoards", - "RHS_US_A2_AirImport", - "A3_Armor_F_Panther", "A3_Structures_F_Furniture", "A3_Structures_F_Civ_Camping", "A3_Structures_F_Heli_Furniture", @@ -76,15 +73,12 @@ class Mission "A3_Structures_F_Mil_Helipads", "aia_misc_e_config", "A3_Supplies_F_Heli_Slingload", - "A3_Soft_F_Gamma_HEMTT", "A3_Supplies_F_Heli_CargoNets", "A3_Structures_F_Training", "A3_Structures_F_System", "A3_Structures_F_Bootcamp_Training", "A3_Structures_F_Walls", "A3_Structures_F_Civ_InfoBoards", - "RHS_US_A2_AirImport", - "A3_Armor_F_Panther", "A3_Structures_F_Furniture", "A3_Structures_F_Heli_Furniture", "A3_Structures_F_Civ_Camping", @@ -2092,7 +2086,7 @@ class Mission }; class Vehicles { - items=402; + items=398; class Item0 { position[]={689.72211,6.0638437,1797.7275}; @@ -3307,6 +3301,7 @@ class Mission vehicle="Land_HelipadRescue_F"; leader=1; skill=0.60000002; + text="garage_spawn_med"; }; class Item131 { @@ -3388,40 +3383,40 @@ class Mission }; class Item138 { - position[]={573.39246,6.0029182,1758.5056}; - azimut=47; + position[]={565.32269,5.8964548,1778.8293}; + azimut=137; id=218; side="EMPTY"; - vehicle="B_Truck_01_ammo_F"; + vehicle="B_CargoNet_01_ammo_F"; leader=1; skill=0.60000002; init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item139 { - position[]={571.00409,6.0003376,1761.1205}; - azimut=47; + position[]={566.77521,5.9012733,1777.309}; + azimut=137; id=219; side="EMPTY"; - vehicle="B_Truck_01_fuel_F"; + vehicle="B_CargoNet_01_ammo_F"; leader=1; skill=0.60000002; init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item140 { - position[]={575.78687,6.0056777,1755.9486}; - azimut=47; + position[]={568.25037,5.9123344,1775.6498}; + azimut=137; id=220; side="EMPTY"; - vehicle="B_Truck_01_Repair_F"; + vehicle="B_CargoNet_01_ammo_F"; leader=1; skill=0.60000002; init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item141 { - position[]={565.32269,5.8964548,1778.8293}; + position[]={569.771,5.9241381,1773.8793}; azimut=137; id=221; side="EMPTY"; @@ -3432,7 +3427,7 @@ class Mission }; class Item142 { - position[]={566.77521,5.9012733,1777.309}; + position[]={571.22351,5.9505873,1772.3589}; azimut=137; id=222; side="EMPTY"; @@ -3443,7 +3438,7 @@ class Mission }; class Item143 { - position[]={568.25037,5.9123344,1775.6498}; + position[]={572.69867,5.981317,1770.6997}; azimut=137; id=223; side="EMPTY"; @@ -3454,40 +3449,34 @@ class Mission }; class Item144 { - position[]={569.771,5.9241381,1773.8793}; - azimut=137; + position[]={724.1073,6.0497589,1820.4933}; + azimut=50; id=224; side="EMPTY"; - vehicle="B_CargoNet_01_ammo_F"; - leader=1; + vehicle="ShootingPos_F"; skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item145 { - position[]={571.22351,5.9505873,1772.3589}; - azimut=137; + position[]={726.44501,6.0154729,1817.7238}; + azimut=50; id=225; side="EMPTY"; - vehicle="B_CargoNet_01_ammo_F"; - leader=1; + vehicle="ShootingPos_F"; skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item146 { - position[]={572.69867,5.981317,1770.6997}; - azimut=137; + position[]={728.78253,6,1815.022}; + azimut=50; id=226; side="EMPTY"; - vehicle="B_CargoNet_01_ammo_F"; - leader=1; + vehicle="ShootingPos_F"; skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item147 { - position[]={724.1073,6.0497589,1820.4933}; + position[]={731.052,6,1812.2965}; azimut=50; id=227; side="EMPTY"; @@ -3496,34 +3485,34 @@ class Mission }; class Item148 { - position[]={726.44501,6.0154729,1817.7238}; + position[]={730.42114,6.0161881,1823.5117}; azimut=50; id=228; side="EMPTY"; - vehicle="ShootingPos_F"; + vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item149 { - position[]={728.78253,6,1815.022}; + position[]={733.38135,6.0601783,1825.7255}; azimut=50; id=229; side="EMPTY"; - vehicle="ShootingPos_F"; + vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item150 { - position[]={731.052,6,1812.2965}; + position[]={736.34149,6.1271315,1828.4592}; azimut=50; id=230; side="EMPTY"; - vehicle="ShootingPos_F"; + vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item151 { - position[]={730.42114,6.0161881,1823.5117}; + position[]={739.3667,6.1788349,1830.8351}; azimut=50; id=231; side="EMPTY"; @@ -3532,7 +3521,7 @@ class Mission }; class Item152 { - position[]={733.38135,6.0601783,1825.7255}; + position[]={742.02509,6.1785946,1833.5386}; azimut=50; id=232; side="EMPTY"; @@ -3541,7 +3530,7 @@ class Mission }; class Item153 { - position[]={736.34149,6.1271315,1828.4592}; + position[]={744.98529,6.1256676,1835.7523}; azimut=50; id=233; side="EMPTY"; @@ -3550,7 +3539,7 @@ class Mission }; class Item154 { - position[]={739.3667,6.1788349,1830.8351}; + position[]={747.94543,6.1738925,1838.4861}; azimut=50; id=234; side="EMPTY"; @@ -3559,7 +3548,7 @@ class Mission }; class Item155 { - position[]={742.02509,6.1785946,1833.5386}; + position[]={750.97064,6.1656919,1840.8619}; azimut=50; id=235; side="EMPTY"; @@ -3568,7 +3557,7 @@ class Mission }; class Item156 { - position[]={744.98529,6.1256676,1835.7523}; + position[]={753.17688,6.1565995,1842.734}; azimut=50; id=236; side="EMPTY"; @@ -3577,7 +3566,7 @@ class Mission }; class Item157 { - position[]={747.94543,6.1738925,1838.4861}; + position[]={756.13708,6.1467834,1844.9478}; azimut=50; id=237; side="EMPTY"; @@ -3586,7 +3575,7 @@ class Mission }; class Item158 { - position[]={750.97064,6.1656919,1840.8619}; + position[]={759.09723,6.129231,1847.6815}; azimut=50; id=238; side="EMPTY"; @@ -3595,7 +3584,7 @@ class Mission }; class Item159 { - position[]={753.17688,6.1565995,1842.734}; + position[]={762.12244,6.1151233,1850.0574}; azimut=50; id=239; side="EMPTY"; @@ -3604,7 +3593,7 @@ class Mission }; class Item160 { - position[]={756.13708,6.1467834,1844.9478}; + position[]={765.0069,6.1016183,1852.3097}; azimut=50; id=240; side="EMPTY"; @@ -3613,7 +3602,7 @@ class Mission }; class Item161 { - position[]={759.09723,6.129231,1847.6815}; + position[]={767.9671,6.0877681,1854.5234}; azimut=50; id=241; side="EMPTY"; @@ -3622,7 +3611,7 @@ class Mission }; class Item162 { - position[]={762.12244,6.1151233,1850.0574}; + position[]={770.92725,6.0698447,1857.2572}; azimut=50; id=242; side="EMPTY"; @@ -3631,7 +3620,7 @@ class Mission }; class Item163 { - position[]={765.0069,6.1016183,1852.3097}; + position[]={773.95245,6.054872,1859.6331}; azimut=50; id=243; side="EMPTY"; @@ -3640,7 +3629,7 @@ class Mission }; class Item164 { - position[]={767.9671,6.0877681,1854.5234}; + position[]={776.91223,6.0402937,1862.3383}; azimut=50; id=244; side="EMPTY"; @@ -3649,7 +3638,7 @@ class Mission }; class Item165 { - position[]={770.92725,6.0698447,1857.2572}; + position[]={779.87244,6.0294824,1864.552}; azimut=50; id=245; side="EMPTY"; @@ -3658,7 +3647,7 @@ class Mission }; class Item166 { - position[]={773.95245,6.054872,1859.6331}; + position[]={782.83258,6.0152044,1867.2858}; azimut=50; id=246; side="EMPTY"; @@ -3667,7 +3656,7 @@ class Mission }; class Item167 { - position[]={776.91223,6.0402937,1862.3383}; + position[]={785.85779,6.0120459,1869.6616}; azimut=50; id=247; side="EMPTY"; @@ -3676,7 +3665,7 @@ class Mission }; class Item168 { - position[]={779.87244,6.0294824,1864.552}; + position[]={788.81744,6.0119534,1871.835}; azimut=50; id=248; side="EMPTY"; @@ -3685,7 +3674,7 @@ class Mission }; class Item169 { - position[]={782.83258,6.0152044,1867.2858}; + position[]={791.77765,6.0095086,1874.0487}; azimut=50; id=249; side="EMPTY"; @@ -3694,7 +3683,7 @@ class Mission }; class Item170 { - position[]={785.85779,6.0120459,1869.6616}; + position[]={794.73779,6.0072742,1876.7825}; azimut=50; id=250; side="EMPTY"; @@ -3703,7 +3692,7 @@ class Mission }; class Item171 { - position[]={788.81744,6.0119534,1871.835}; + position[]={797.763,6.0081396,1879.1583}; azimut=50; id=251; side="EMPTY"; @@ -3712,7 +3701,7 @@ class Mission }; class Item172 { - position[]={791.77765,6.0095086,1874.0487}; + position[]={800.40985,6.0021162,1881.7063}; azimut=50; id=252; side="EMPTY"; @@ -3721,7 +3710,7 @@ class Mission }; class Item173 { - position[]={794.73779,6.0072742,1876.7825}; + position[]={803.37006,5.9992666,1883.92}; azimut=50; id=253; side="EMPTY"; @@ -3730,7 +3719,7 @@ class Mission }; class Item174 { - position[]={797.763,6.0081396,1879.1583}; + position[]={806.3302,5.9995685,1886.6538}; azimut=50; id=254; side="EMPTY"; @@ -3739,7 +3728,7 @@ class Mission }; class Item175 { - position[]={800.40985,6.0021162,1881.7063}; + position[]={809.35541,6.0004344,1889.0297}; azimut=50; id=255; side="EMPTY"; @@ -3748,7 +3737,7 @@ class Mission }; class Item176 { - position[]={803.37006,5.9992666,1883.92}; + position[]={811.86304,5.9980893,1891.4329}; azimut=50; id=256; side="EMPTY"; @@ -3757,7 +3746,7 @@ class Mission }; class Item177 { - position[]={806.3302,5.9995685,1886.6538}; + position[]={814.82324,5.9951377,1893.6466}; azimut=50; id=257; side="EMPTY"; @@ -3766,7 +3755,7 @@ class Mission }; class Item178 { - position[]={809.35541,6.0004344,1889.0297}; + position[]={817.78339,5.9914927,1896.3804}; azimut=50; id=258; side="EMPTY"; @@ -3775,7 +3764,7 @@ class Mission }; class Item179 { - position[]={811.86304,5.9980893,1891.4329}; + position[]={820.80859,5.9899998,1898.7562}; azimut=50; id=259; side="EMPTY"; @@ -3784,7 +3773,7 @@ class Mission }; class Item180 { - position[]={814.82324,5.9951377,1893.6466}; + position[]={823.76843,5.9899998,1901.382}; azimut=50; id=260; side="EMPTY"; @@ -3793,7 +3782,7 @@ class Mission }; class Item181 { - position[]={817.78339,5.9914927,1896.3804}; + position[]={826.72864,5.9895668,1903.5957}; azimut=50; id=261; side="EMPTY"; @@ -3802,7 +3791,7 @@ class Mission }; class Item182 { - position[]={820.80859,5.9899998,1898.7562}; + position[]={829.68878,5.9855208,1906.3295}; azimut=50; id=262; side="EMPTY"; @@ -3811,7 +3800,7 @@ class Mission }; class Item183 { - position[]={823.76843,5.9899998,1901.382}; + position[]={832.71399,5.9895959,1908.7053}; azimut=50; id=263; side="EMPTY"; @@ -3820,7 +3809,7 @@ class Mission }; class Item184 { - position[]={826.72864,5.9895668,1903.5957}; + position[]={735.53778,6,1817.754}; azimut=50; id=264; side="EMPTY"; @@ -3829,7 +3818,7 @@ class Mission }; class Item185 { - position[]={829.68878,5.9855208,1906.3295}; + position[]={738.56299,6,1820.1299}; azimut=50; id=265; side="EMPTY"; @@ -3838,7 +3827,7 @@ class Mission }; class Item186 { - position[]={832.71399,5.9895959,1908.7053}; + position[]={741.07062,6.0007081,1822.5331}; azimut=50; id=266; side="EMPTY"; @@ -3847,7 +3836,7 @@ class Mission }; class Item187 { - position[]={735.53778,6,1817.754}; + position[]={744.03082,6.0599179,1824.7468}; azimut=50; id=267; side="EMPTY"; @@ -3856,7 +3845,7 @@ class Mission }; class Item188 { - position[]={738.56299,6,1820.1299}; + position[]={746.99097,6.0802398,1827.4806}; azimut=50; id=268; side="EMPTY"; @@ -3865,7 +3854,7 @@ class Mission }; class Item189 { - position[]={741.07062,6.0007081,1822.5331}; + position[]={750.01617,6,1829.8564}; azimut=50; id=269; side="EMPTY"; @@ -3874,7 +3863,7 @@ class Mission }; class Item190 { - position[]={744.03082,6.0599179,1824.7468}; + position[]={752.97601,6.0628829,1832.4822}; azimut=50; id=270; side="EMPTY"; @@ -3883,7 +3872,7 @@ class Mission }; class Item191 { - position[]={746.99097,6.0802398,1827.4806}; + position[]={755.93622,6.1273174,1834.6959}; azimut=50; id=271; side="EMPTY"; @@ -3892,7 +3881,7 @@ class Mission }; class Item192 { - position[]={750.01617,6,1829.8564}; + position[]={758.89636,6.2080326,1837.4297}; azimut=50; id=272; side="EMPTY"; @@ -3901,7 +3890,7 @@ class Mission }; class Item193 { - position[]={752.97601,6.0628829,1832.4822}; + position[]={761.75964,6.1972761,1839.0905}; azimut=50; id=273; side="EMPTY"; @@ -3910,7 +3899,7 @@ class Mission }; class Item194 { - position[]={755.93622,6.1273174,1834.6959}; + position[]={764.78485,6.1882725,1841.4663}; azimut=50; id=274; side="EMPTY"; @@ -3919,7 +3908,7 @@ class Mission }; class Item195 { - position[]={758.89636,6.2080326,1837.4297}; + position[]={767.29248,6.1180358,1843.8695}; azimut=50; id=275; side="EMPTY"; @@ -3928,7 +3917,7 @@ class Mission }; class Item196 { - position[]={761.75964,6.1972761,1839.0905}; + position[]={770.25269,6.0408273,1846.0833}; azimut=50; id=276; side="EMPTY"; @@ -3937,7 +3926,7 @@ class Mission }; class Item197 { - position[]={764.78485,6.1882725,1841.4663}; + position[]={773.21283,6.0559835,1848.817}; azimut=50; id=277; side="EMPTY"; @@ -3946,7 +3935,7 @@ class Mission }; class Item198 { - position[]={767.29248,6.1180358,1843.8695}; + position[]={776.23804,6.0940714,1851.1929}; azimut=50; id=278; side="EMPTY"; @@ -3955,7 +3944,7 @@ class Mission }; class Item199 { - position[]={770.25269,6.0408273,1846.0833}; + position[]={779.19788,6.1083808,1853.8186}; azimut=50; id=279; side="EMPTY"; @@ -3964,7 +3953,7 @@ class Mission }; class Item200 { - position[]={773.21283,6.0559835,1848.817}; + position[]={782.15808,6.05721,1856.0323}; azimut=50; id=280; side="EMPTY"; @@ -3973,7 +3962,7 @@ class Mission }; class Item201 { - position[]={776.23804,6.0940714,1851.1929}; + position[]={785.11823,6.0553093,1858.7661}; azimut=50; id=281; side="EMPTY"; @@ -3982,7 +3971,7 @@ class Mission }; class Item202 { - position[]={779.19788,6.1083808,1853.8186}; + position[]={788.05688,6.0564451,1861.2535}; azimut=50; id=282; side="EMPTY"; @@ -3991,7 +3980,7 @@ class Mission }; class Item203 { - position[]={782.15808,6.05721,1856.0323}; + position[]={791.08209,6.0123706,1863.6294}; azimut=50; id=283; side="EMPTY"; @@ -4000,7 +3989,7 @@ class Mission }; class Item204 { - position[]={785.11823,6.0553093,1858.7661}; + position[]={793.58972,6.0284133,1866.0326}; azimut=50; id=284; side="EMPTY"; @@ -4009,7 +3998,7 @@ class Mission }; class Item205 { - position[]={788.05688,6.0564451,1861.2535}; + position[]={796.54993,6.0390811,1868.2463}; azimut=50; id=285; side="EMPTY"; @@ -4018,7 +4007,7 @@ class Mission }; class Item206 { - position[]={791.08209,6.0123706,1863.6294}; + position[]={799.51007,6.032093,1870.9801}; azimut=50; id=286; side="EMPTY"; @@ -4027,7 +4016,7 @@ class Mission }; class Item207 { - position[]={793.58972,6.0284133,1866.0326}; + position[]={802.53528,6.02634,1873.356}; azimut=50; id=287; side="EMPTY"; @@ -4036,7 +4025,7 @@ class Mission }; class Item208 { - position[]={796.54993,6.0390811,1868.2463}; + position[]={805.49512,6.0093946,1875.9817}; azimut=50; id=288; side="EMPTY"; @@ -4045,7 +4034,7 @@ class Mission }; class Item209 { - position[]={799.51007,6.032093,1870.9801}; + position[]={808.45532,6.0022016,1878.1954}; azimut=50; id=289; side="EMPTY"; @@ -4054,7 +4043,7 @@ class Mission }; class Item210 { - position[]={802.53528,6.02634,1873.356}; + position[]={811.41547,6.007906,1880.9292}; azimut=50; id=290; side="EMPTY"; @@ -4063,7 +4052,7 @@ class Mission }; class Item211 { - position[]={805.49512,6.0093946,1875.9817}; + position[]={814.73071,6.0152845,1883.2673}; azimut=50; id=291; side="EMPTY"; @@ -4072,7 +4061,7 @@ class Mission }; class Item212 { - position[]={808.45532,6.0022016,1878.1954}; + position[]={817.75592,6.0109358,1885.6432}; azimut=50; id=292; side="EMPTY"; @@ -4081,7 +4070,7 @@ class Mission }; class Item213 { - position[]={811.41547,6.007906,1880.9292}; + position[]={820.26355,6,1888.0464}; azimut=50; id=293; side="EMPTY"; @@ -4090,7 +4079,7 @@ class Mission }; class Item214 { - position[]={814.73071,6.0152845,1883.2673}; + position[]={823.22375,5.9996529,1890.2601}; azimut=50; id=294; side="EMPTY"; @@ -4099,7 +4088,7 @@ class Mission }; class Item215 { - position[]={817.75592,6.0109358,1885.6432}; + position[]={826.1839,5.9960079,1892.9939}; azimut=50; id=295; side="EMPTY"; @@ -4108,7 +4097,7 @@ class Mission }; class Item216 { - position[]={820.26355,6,1888.0464}; + position[]={829.20911,5.9928403,1895.3698}; azimut=50; id=296; side="EMPTY"; @@ -4117,7 +4106,7 @@ class Mission }; class Item217 { - position[]={823.22375,5.9996529,1890.2601}; + position[]={832.16895,5.9897804,1897.9955}; azimut=50; id=297; side="EMPTY"; @@ -4126,7 +4115,7 @@ class Mission }; class Item218 { - position[]={826.1839,5.9960079,1892.9939}; + position[]={835.12915,5.9828825,1900.2092}; azimut=50; id=298; side="EMPTY"; @@ -4135,7 +4124,7 @@ class Mission }; class Item219 { - position[]={829.20911,5.9928403,1895.3698}; + position[]={838.08929,5.9752903,1902.943}; azimut=50; id=299; side="EMPTY"; @@ -4144,7 +4133,7 @@ class Mission }; class Item220 { - position[]={832.16895,5.9897804,1897.9955}; + position[]={739.97906,6,1814.1835}; azimut=50; id=300; side="EMPTY"; @@ -4153,7 +4142,7 @@ class Mission }; class Item221 { - position[]={835.12915,5.9828825,1900.2092}; + position[]={743.00427,6,1816.5593}; azimut=50; id=301; side="EMPTY"; @@ -4162,7 +4151,7 @@ class Mission }; class Item222 { - position[]={838.08929,5.9752903,1902.943}; + position[]={745.5119,6,1818.9625}; azimut=50; id=302; side="EMPTY"; @@ -4171,7 +4160,7 @@ class Mission }; class Item223 { - position[]={739.97906,6,1814.1835}; + position[]={748.47211,6,1821.1763}; azimut=50; id=303; side="EMPTY"; @@ -4180,7 +4169,7 @@ class Mission }; class Item224 { - position[]={743.00427,6,1816.5593}; + position[]={751.43225,6,1823.91}; azimut=50; id=304; side="EMPTY"; @@ -4189,7 +4178,7 @@ class Mission }; class Item225 { - position[]={745.5119,6,1818.9625}; + position[]={754.45746,6,1826.2859}; azimut=50; id=305; side="EMPTY"; @@ -4198,7 +4187,7 @@ class Mission }; class Item226 { - position[]={748.47211,6,1821.1763}; + position[]={757.4173,6,1828.9116}; azimut=50; id=306; side="EMPTY"; @@ -4207,7 +4196,7 @@ class Mission }; class Item227 { - position[]={751.43225,6,1823.91}; + position[]={760.3775,6.0315113,1831.1254}; azimut=50; id=307; side="EMPTY"; @@ -4216,7 +4205,7 @@ class Mission }; class Item228 { - position[]={754.45746,6,1826.2859}; + position[]={763.33765,6.108057,1833.8591}; azimut=50; id=308; side="EMPTY"; @@ -4225,7 +4214,7 @@ class Mission }; class Item229 { - position[]={757.4173,6,1828.9116}; + position[]={770.72192,6.0497842,1835.896}; azimut=50; id=309; side="EMPTY"; @@ -4234,7 +4223,7 @@ class Mission }; class Item230 { - position[]={760.3775,6.0315113,1831.1254}; + position[]={773.74713,6,1838.2719}; azimut=50; id=310; side="EMPTY"; @@ -4243,7 +4232,7 @@ class Mission }; class Item231 { - position[]={763.33765,6.108057,1833.8591}; + position[]={776.25476,6,1840.675}; azimut=50; id=311; side="EMPTY"; @@ -4252,7 +4241,7 @@ class Mission }; class Item232 { - position[]={770.72192,6.0497842,1835.896}; + position[]={779.21497,6,1842.8888}; azimut=50; id=312; side="EMPTY"; @@ -4261,7 +4250,7 @@ class Mission }; class Item233 { - position[]={773.74713,6,1838.2719}; + position[]={782.17511,6.0099626,1845.6226}; azimut=50; id=313; side="EMPTY"; @@ -4270,7 +4259,7 @@ class Mission }; class Item234 { - position[]={776.25476,6,1840.675}; + position[]={785.20032,6.0367942,1847.9984}; azimut=50; id=314; side="EMPTY"; @@ -4279,7 +4268,7 @@ class Mission }; class Item235 { - position[]={779.21497,6,1842.8888}; + position[]={788.16016,6,1850.6241}; azimut=50; id=315; side="EMPTY"; @@ -4288,7 +4277,7 @@ class Mission }; class Item236 { - position[]={782.17511,6.0099626,1845.6226}; + position[]={791.12036,6.0031543,1852.8379}; azimut=50; id=316; side="EMPTY"; @@ -4297,7 +4286,7 @@ class Mission }; class Item237 { - position[]={785.20032,6.0367942,1847.9984}; + position[]={794.08051,6.0085816,1855.5717}; azimut=50; id=317; side="EMPTY"; @@ -4306,7 +4295,7 @@ class Mission }; class Item238 { - position[]={788.16016,6,1850.6241}; + position[]={796.4917,6,1857.3065}; azimut=50; id=318; side="EMPTY"; @@ -4315,7 +4304,7 @@ class Mission }; class Item239 { - position[]={791.12036,6.0031543,1852.8379}; + position[]={799.51691,6,1859.6824}; azimut=50; id=319; side="EMPTY"; @@ -4324,7 +4313,7 @@ class Mission }; class Item240 { - position[]={794.08051,6.0085816,1855.5717}; + position[]={802.02454,6.0132709,1862.0856}; azimut=50; id=320; side="EMPTY"; @@ -4333,7 +4322,7 @@ class Mission }; class Item241 { - position[]={796.4917,6,1857.3065}; + position[]={804.98474,6.0286632,1864.2993}; azimut=50; id=321; side="EMPTY"; @@ -4342,7 +4331,7 @@ class Mission }; class Item242 { - position[]={799.51691,6,1859.6824}; + position[]={807.94489,6.0137005,1867.0331}; azimut=50; id=322; side="EMPTY"; @@ -4351,7 +4340,7 @@ class Mission }; class Item243 { - position[]={802.02454,6.0132709,1862.0856}; + position[]={810.97009,6,1869.4089}; azimut=50; id=323; side="EMPTY"; @@ -4360,7 +4349,7 @@ class Mission }; class Item244 { - position[]={804.98474,6.0286632,1864.2993}; + position[]={813.92993,6,1872.0347}; azimut=50; id=324; side="EMPTY"; @@ -4369,7 +4358,7 @@ class Mission }; class Item245 { - position[]={807.94489,6.0137005,1867.0331}; + position[]={816.89014,6,1874.2484}; azimut=50; id=325; side="EMPTY"; @@ -4378,7 +4367,7 @@ class Mission }; class Item246 { - position[]={810.97009,6,1869.4089}; + position[]={819.85028,6.0052857,1876.9822}; azimut=50; id=326; side="EMPTY"; @@ -4387,7 +4376,7 @@ class Mission }; class Item247 { - position[]={813.92993,6,1872.0347}; + position[]={820.00104,6.0066948,1877.5104}; azimut=50; id=327; side="EMPTY"; @@ -4396,7 +4385,7 @@ class Mission }; class Item248 { - position[]={816.89014,6,1874.2484}; + position[]={823.02625,6.0052633,1879.8862}; azimut=50; id=328; side="EMPTY"; @@ -4405,7 +4394,7 @@ class Mission }; class Item249 { - position[]={819.85028,6.0052857,1876.9822}; + position[]={825.53387,6,1882.2894}; azimut=50; id=329; side="EMPTY"; @@ -4414,7 +4403,7 @@ class Mission }; class Item250 { - position[]={820.00104,6.0066948,1877.5104}; + position[]={828.49408,6,1884.5032}; azimut=50; id=330; side="EMPTY"; @@ -4423,7 +4412,7 @@ class Mission }; class Item251 { - position[]={823.02625,6.0052633,1879.8862}; + position[]={831.45422,6,1887.2369}; azimut=50; id=331; side="EMPTY"; @@ -4432,7 +4421,7 @@ class Mission }; class Item252 { - position[]={825.53387,6,1882.2894}; + position[]={834.47943,6,1889.6128}; azimut=50; id=332; side="EMPTY"; @@ -4441,7 +4430,7 @@ class Mission }; class Item253 { - position[]={828.49408,6,1884.5032}; + position[]={837.43927,5.997015,1892.2385}; azimut=50; id=333; side="EMPTY"; @@ -4450,7 +4439,7 @@ class Mission }; class Item254 { - position[]={831.45422,6,1887.2369}; + position[]={840.39948,5.9881272,1894.4523}; azimut=50; id=334; side="EMPTY"; @@ -4459,7 +4448,7 @@ class Mission }; class Item255 { - position[]={834.47943,6,1889.6128}; + position[]={843.35962,5.9889588,1897.186}; azimut=50; id=335; side="EMPTY"; @@ -4468,7 +4457,7 @@ class Mission }; class Item256 { - position[]={837.43927,5.997015,1892.2385}; + position[]={847.39404,5.9995766,1900.049}; azimut=50; id=336; side="EMPTY"; @@ -4477,7 +4466,7 @@ class Mission }; class Item257 { - position[]={840.39948,5.9881272,1894.4523}; + position[]={843.32288,5.9832916,1905.5531}; azimut=50; id=337; side="EMPTY"; @@ -4486,7 +4475,7 @@ class Mission }; class Item258 { - position[]={843.35962,5.9889588,1897.186}; + position[]={837.78467,5.9788609,1912.0469}; azimut=50; id=338; side="EMPTY"; @@ -4495,7 +4484,7 @@ class Mission }; class Item259 { - position[]={847.39404,5.9995766,1900.049}; + position[]={732.30066,6,1812.7396}; azimut=50; id=339; side="EMPTY"; @@ -4504,7 +4493,7 @@ class Mission }; class Item260 { - position[]={843.32288,5.9832916,1905.5531}; + position[]={728.10437,6,1817.1342}; azimut=50; id=340; side="EMPTY"; @@ -4513,7 +4502,7 @@ class Mission }; class Item261 { - position[]={837.78467,5.9788609,1912.0469}; + position[]={723.90808,6.0526814,1821.5598}; azimut=50; id=341; side="EMPTY"; @@ -4522,34 +4511,34 @@ class Mission }; class Item262 { - position[]={732.30066,6,1812.7396}; + position[]={746.51184,6.1592007,1839.6057}; azimut=50; id=342; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="TargetBootcampHumanSimple_F"; skill=0.60000002; }; class Item263 { - position[]={728.10437,6,1817.1342}; + position[]={757.67786,6.1238985,1847.8473}; azimut=50; id=343; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="TargetBootcampHumanSimple_F"; skill=0.60000002; }; class Item264 { - position[]={723.90808,6.0526814,1821.5598}; + position[]={770.25092,6.0724678,1856.8167}; azimut=50; id=344; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="TargetBootcampHumanSimple_F"; skill=0.60000002; }; class Item265 { - position[]={746.51184,6.1592007,1839.6057}; + position[]={783.87952,6.024065,1866.1661}; azimut=50; id=345; side="EMPTY"; @@ -4558,7 +4547,7 @@ class Mission }; class Item266 { - position[]={757.67786,6.1238985,1847.8473}; + position[]={796.22766,6.0123401,1874.8242}; azimut=50; id=346; side="EMPTY"; @@ -4567,7 +4556,7 @@ class Mission }; class Item267 { - position[]={770.25092,6.0724678,1856.8167}; + position[]={808.92352,6.0073528,1883.4091}; azimut=50; id=347; side="EMPTY"; @@ -4576,7 +4565,7 @@ class Mission }; class Item268 { - position[]={783.87952,6.024065,1866.1661}; + position[]={821.53516,5.9971676,1892.1241}; azimut=50; id=348; side="EMPTY"; @@ -4585,7 +4574,7 @@ class Mission }; class Item269 { - position[]={796.22766,6.0123401,1874.8242}; + position[]={835.62067,5.9811368,1901.0265}; azimut=50; id=349; side="EMPTY"; @@ -4594,7 +4583,7 @@ class Mission }; class Item270 { - position[]={808.92352,6.0073528,1883.4091}; + position[]={847.23096,5.9945884,1905.9192}; azimut=50; id=350; side="EMPTY"; @@ -4603,7 +4592,7 @@ class Mission }; class Item271 { - position[]={821.53516,5.9971676,1892.1241}; + position[]={849.21588,6,1903.2705}; azimut=50; id=351; side="EMPTY"; @@ -4612,7 +4601,7 @@ class Mission }; class Item272 { - position[]={835.62067,5.9811368,1901.0265}; + position[]={851.36627,6,1900.9543}; azimut=50; id=352; side="EMPTY"; @@ -4620,645 +4609,648 @@ class Mission skill=0.60000002; }; class Item273 - { - position[]={847.23096,5.9945884,1905.9192}; - azimut=50; - id=353; - side="EMPTY"; - vehicle="TargetBootcampHumanSimple_F"; - skill=0.60000002; - }; - class Item274 - { - position[]={849.21588,6,1903.2705}; - azimut=50; - id=354; - side="EMPTY"; - vehicle="TargetBootcampHumanSimple_F"; - skill=0.60000002; - }; - class Item275 - { - position[]={851.36627,6,1900.9543}; - azimut=50; - id=355; - side="EMPTY"; - vehicle="TargetBootcampHumanSimple_F"; - skill=0.60000002; - }; - class Item276 { position[]={835.84106,5.9827728,1915.3969}; azimut=50; - id=356; + id=353; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; - class Item277 + class Item274 { position[]={612.5592,6.1130395,1766.0806}; azimut=47; - id=357; + id=354; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item278 + class Item275 { position[]={615.22461,6.1123624,1763.1611}; azimut=47; - id=358; + id=355; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item279 + class Item276 { position[]={617.9707,6.1118112,1760.2085}; azimut=47; - id=359; + id=356; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item280 + class Item277 { position[]={620.83026,6.111268,1757.1453}; azimut=47; - id=360; + id=357; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item281 + class Item278 { position[]={630.09808,6.1594801,1777.1102}; azimut=47; - id=361; + id=358; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item282 + class Item279 { position[]={632.84418,6.1555433,1774.1576}; azimut=47; - id=362; + id=359; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item283 + class Item280 { position[]={635.70374,6.1514592,1771.0944}; azimut=47; - id=363; + id=360; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item284 + class Item281 { position[]={623.77191,6.1113486,1756.1417}; azimut=137; - id=364; + id=361; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item285 + class Item282 { position[]={627.08533,6.118546,1759.2059}; azimut=137; - id=365; + id=362; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item286 + class Item283 { position[]={630.12653,6.1373067,1762.0898}; azimut=137; - id=366; + id=363; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item287 + class Item284 { position[]={633.28107,6.1302304,1765.0156}; azimut=137; - id=367; + id=364; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item288 + class Item285 { position[]={636.5719,6.1396632,1768.0618}; azimut=137; - id=368; + id=365; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item289 + class Item286 { position[]={706.69177,6.0280285,1802.6276}; - id=369; + id=366; side="EMPTY"; vehicle="Land_HelipadEmpty_F"; leader=1; skill=0.60000002; text="respawn_obj"; }; - class Item290 + class Item287 { position[]={632.60626,6.1510415,1770.7809}; azimut=47; - id=370; + id=367; side="EMPTY"; vehicle="BlockConcrete_F"; skill=0.60000002; }; - class Item291 + class Item288 { position[]={629.41101,6.1462154,1767.7505}; azimut=47; - id=371; + id=368; side="EMPTY"; vehicle="BlockConcrete_F"; skill=0.60000002; }; - class Item292 + class Item289 { position[]={626.59137,6.1509094,1774.0905}; azimut=137; - id=372; + id=369; side="EMPTY"; vehicle="BlockConcrete_F"; skill=0.60000002; }; - class Item293 + class Item290 { position[]={624.69867,6.1512594,1776.2457}; azimut=47; - id=373; + id=370; side="EMPTY"; vehicle="Land_RampConcrete_F"; skill=0.60000002; }; - class Item294 + class Item291 { position[]={562.69476,5.9200697,1773.7856}; azimut=137; - id=374; + id=371; side="EMPTY"; vehicle="B_Slingload_01_Fuel_F"; leader=1; skill=0.60000002; init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; - class Item295 + class Item292 { position[]={569.4826,5.9463558,1770.5465}; azimut=137; - id=375; + id=372; side="EMPTY"; vehicle="B_Slingload_01_Medevac_F"; leader=1; skill=0.60000002; init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; - class Item296 + class Item293 { position[]={564.71368,5.9119935,1775.7009}; azimut=137; - id=376; + id=373; side="EMPTY"; vehicle="B_Slingload_01_Medevac_F"; leader=1; skill=0.60000002; init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; - class Item297 + class Item294 { position[]={669.15594,6.0016575,1849.6006}; azimut=317; - id=377; + id=374; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; text="garage_spawner_0"; init="this enableSimulationGlobal false;"; }; - class Item298 + class Item295 { position[]={654.04657,6.0722308,1835.1169}; azimut=317; - id=378; + id=375; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; text="garage_spawner_1"; init="this enableSimulationGlobal false;"; }; - class Item299 + class Item296 { position[]={638.38983,6.1403613,1821.3391}; azimut=317; - id=379; + id=376; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; text="garage_spawner_2"; init="this enableSimulationGlobal false;"; }; - class Item300 + class Item297 { position[]={623.54932,6.1599998,1807.7683}; azimut=317; - id=380; + id=377; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; text="garage_spawner_3"; init="this enableSimulationGlobal false;"; }; - class Item301 + class Item298 { position[]={603.19305,6.1418161,1790.6688}; azimut=317; - id=381; + id=378; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; text="garage_spawner_4"; init="this enableSimulationGlobal false;"; }; - class Item302 + class Item299 { position[]={685.37543,6,1780.1918}; azimut=50; - id=382; + id=379; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item303 + class Item300 { position[]={681.90033,6.0063958,1784.2704}; azimut=50; - id=383; + id=380; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item304 + class Item301 { position[]={676.88818,6.0185676,1774.6417}; azimut=50; - id=384; + id=381; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item305 + class Item302 { position[]={673.41309,6.0461111,1778.7203}; azimut=50; - id=385; + id=382; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item306 + class Item303 { position[]={670.71643,6.0873852,1782.6809}; azimut=137; - id=386; + id=383; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; text="garage_spawner_5"; init="this enableSimulationGlobal false;"; }; - class Item307 + class Item304 { position[]={679.18158,6.0524573,1788.1989}; azimut=137; - id=387; + id=384; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; text="garage_spawner_6"; init="this enableSimulationGlobal false;"; }; - class Item308 + class Item305 { position[]={678.61255,6.0345254,1780.3463}; azimut=320; - id=388; + id=385; side="EMPTY"; vehicle="Land_HelipadEmpty_F"; leader=1; skill=0.60000002; text="garage_spawn_5"; }; - class Item309 + class Item306 { position[]={687.05109,6,1786.4639}; azimut=320; - id=389; + id=386; side="EMPTY"; vehicle="Land_HelipadEmpty_F"; leader=1; skill=0.60000002; text="garage_spawn_6"; }; - class Item310 + class Item307 { position[]={585.03925,5.9998951,1739.4398}; azimut=140; - id=390; + id=387; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item311 + class Item308 { position[]={588.39813,6,1742.255}; azimut=140; - id=391; + id=388; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item312 + class Item309 { position[]={598.42938,6.0542912,1750.6797}; azimut=140; - id=392; + id=389; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item313 + class Item310 { position[]={595.13855,6.0203271,1747.9103}; azimut=140; - id=393; + id=390; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item314 + class Item311 { position[]={591.71149,6,1745.0254}; azimut=140; - id=394; + id=391; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item315 + class Item312 { position[]={600.51654,6.0593295,1750.4819}; azimut=50; - id=395; + id=392; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item316 + class Item313 { position[]={611.72797,6.0272517,1737.1316}; azimut=50; - id=396; + id=393; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item317 + class Item314 { position[]={609.2088,6.0457883,1740.1292}; azimut=50; - id=397; + id=394; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item318 + class Item315 { position[]={602.94495,6.0579972,1747.554}; azimut=50; - id=398; + id=395; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item319 + class Item316 { position[]={609.66278,6.0466328,1740.8999}; azimut=5; - id=399; + id=396; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item320 + class Item317 { position[]={603.74005,6.0610042,1747.8864}; azimut=95; - id=400; + id=397; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item321 + class Item318 { position[]={598.12921,6,1723.8201}; azimut=140; - id=401; + id=398; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item322 + class Item319 { position[]={601.4881,6.0021806,1726.6353}; azimut=140; - id=402; + id=399; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item323 + class Item320 { position[]={611.51935,6.017067,1735.0599}; azimut=140; - id=403; + id=400; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item324 + class Item321 { position[]={608.22852,6,1732.2905}; azimut=140; - id=404; + id=401; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item325 + class Item322 { position[]={604.80145,6.0035982,1729.4056}; azimut=140; - id=405; + id=402; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item326 + class Item323 { position[]={610.77899,6.0364151,1738.7897}; azimut=230; + id=403; + side="EMPTY"; + vehicle="Land_InfoStand_V1_F"; + skill=0.60000002; + text="garage_scrap"; + init="this enableSimulationGlobal false;"; + }; + class Item324 + { + position[]={680.40808,6.0993128,1803.2831}; + azimut=50; + id=404; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item325 + { + position[]={675.34668,6.0741754,1809.3374}; + azimut=50; + id=405; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item326 + { + position[]={675.979,6.0616417,1813.4052}; + azimut=147; id=406; side="EMPTY"; - vehicle="Land_InfoStand_V1_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; - text="garage_scrap"; - init="this enableSimulationGlobal false;"; }; class Item327 { - position[]={725.45691,6.0458541,1846.1737}; - azimut=230; + position[]={682.68005,6.0322962,1817.7988}; + azimut=147; id=407; side="EMPTY"; - vehicle="RHS_UH60M_MEV"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item328 { - position[]={571.04938,5.8973398,1778.9484}; - azimut=137; + position[]={689.25104,6.011992,1822.1274}; + azimut=147; id=408; side="EMPTY"; - vehicle="B_APC_Tracked_01_CRV_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item329 { - position[]={680.40808,6.0993128,1803.2831}; - azimut=50; + position[]={697.63477,5.9948435,1827.311}; + azimut=150; id=409; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; + vehicle="Land_HBarrier_1_F"; + leader=1; skill=0.60000002; }; class Item330 { - position[]={675.34668,6.0741754,1809.3374}; - azimut=50; + position[]={681.74548,6.0610647,1807.8552}; + azimut=237; id=410; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; + vehicle="Land_TableDesk_F"; + leader=1; skill=0.60000002; + text="cmd_desk"; }; class Item331 { - position[]={675.979,6.0616417,1813.4052}; - azimut=147; + position[]={680.99677,6.0658684,1807.2673}; + azimut=237; id=411; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; + vehicle="Land_OfficeChair_01_F"; + leader=1; skill=0.60000002; }; class Item332 { - position[]={682.68005,6.0322962,1817.7988}; - azimut=147; + position[]={681.58813,6.051743,1811.5081}; + azimut=57; id=412; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; + vehicle="Land_CampingChair_V1_F"; + leader=1; skill=0.60000002; }; class Item333 { - position[]={689.25104,6.011992,1822.1274}; - azimut=147; + position[]={681.92853,6.0522275,1810.9861}; + azimut=57; id=413; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; + vehicle="Land_CampingChair_V1_F"; + leader=1; skill=0.60000002; }; class Item334 { - position[]={697.63477,5.9948435,1827.311}; - azimut=150; + position[]={682.26898,6.05265,1810.4872}; + azimut=57; id=414; side="EMPTY"; - vehicle="Land_HBarrier_1_F"; + vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; class Item335 { - position[]={681.74548,6.0610647,1807.8552}; - azimut=237; + position[]={682.58679,6.0540066,1809.9645}; + azimut=57; id=415; side="EMPTY"; - vehicle="Land_TableDesk_F"; + vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; - text="cmd_desk"; }; class Item336 { - position[]={680.99677,6.0658684,1807.2673}; - azimut=237; + position[]={682.92719,6.0577292,1809.4196}; + azimut=57; id=416; side="EMPTY"; - vehicle="Land_OfficeChair_01_F"; + vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; class Item337 { - position[]={681.58813,6.051743,1811.5081}; + position[]={683.29022,6.0615406,1808.8978}; azimut=57; id=417; side="EMPTY"; @@ -5268,7 +5260,7 @@ class Mission }; class Item338 { - position[]={681.92853,6.0522275,1810.9861}; + position[]={683.63074,6.0651412,1808.399}; azimut=57; id=418; side="EMPTY"; @@ -5278,7 +5270,7 @@ class Mission }; class Item339 { - position[]={682.26898,6.05265,1810.4872}; + position[]={683.97113,6.0688019,1807.8771}; azimut=57; id=419; side="EMPTY"; @@ -5288,7 +5280,7 @@ class Mission }; class Item340 { - position[]={682.58679,6.0540066,1809.9645}; + position[]={684.31158,6.0717525,1807.3782}; azimut=57; id=420; side="EMPTY"; @@ -5298,7 +5290,7 @@ class Mission }; class Item341 { - position[]={682.92719,6.0577292,1809.4196}; + position[]={684.62939,6.0724773,1806.8555}; azimut=57; id=421; side="EMPTY"; @@ -5308,7 +5300,7 @@ class Mission }; class Item342 { - position[]={683.29022,6.0615406,1808.8978}; + position[]={684.96979,6.0732937,1806.3105}; azimut=57; id=422; side="EMPTY"; @@ -5318,7 +5310,7 @@ class Mission }; class Item343 { - position[]={683.63074,6.0651412,1808.399}; + position[]={685.33282,6.0743232,1805.7888}; azimut=57; id=423; side="EMPTY"; @@ -5328,7 +5320,7 @@ class Mission }; class Item344 { - position[]={683.97113,6.0688019,1807.8771}; + position[]={683.086,6.0507331,1812.4402}; azimut=57; id=424; side="EMPTY"; @@ -5338,7 +5330,7 @@ class Mission }; class Item345 { - position[]={684.31158,6.0717525,1807.3782}; + position[]={683.42639,6.0543938,1811.9182}; azimut=57; id=425; side="EMPTY"; @@ -5348,7 +5340,7 @@ class Mission }; class Item346 { - position[]={684.62939,6.0724773,1806.8555}; + position[]={683.76685,6.0579939,1811.4193}; azimut=57; id=426; side="EMPTY"; @@ -5358,7 +5350,7 @@ class Mission }; class Item347 { - position[]={684.96979,6.0732937,1806.3105}; + position[]={684.08466,6.0615063,1810.8966}; azimut=57; id=427; side="EMPTY"; @@ -5368,7 +5360,7 @@ class Mission }; class Item348 { - position[]={685.33282,6.0743232,1805.7888}; + position[]={684.42505,6.0652294,1810.3517}; azimut=57; id=428; side="EMPTY"; @@ -5378,7 +5370,7 @@ class Mission }; class Item349 { - position[]={683.086,6.0507331,1812.4402}; + position[]={684.78809,6.0690413,1809.83}; azimut=57; id=429; side="EMPTY"; @@ -5388,7 +5380,7 @@ class Mission }; class Item350 { - position[]={683.42639,6.0543938,1811.9182}; + position[]={685.1286,6.0726409,1809.3312}; azimut=57; id=430; side="EMPTY"; @@ -5398,7 +5390,7 @@ class Mission }; class Item351 { - position[]={683.76685,6.0579939,1811.4193}; + position[]={685.46899,6.0763025,1808.8092}; azimut=57; id=431; side="EMPTY"; @@ -5408,7 +5400,7 @@ class Mission }; class Item352 { - position[]={684.08466,6.0615063,1810.8966}; + position[]={685.80945,6.0799022,1808.3103}; azimut=57; id=432; side="EMPTY"; @@ -5418,7 +5410,7 @@ class Mission }; class Item353 { - position[]={684.42505,6.0652294,1810.3517}; + position[]={686.12726,6.083415,1807.7876}; azimut=57; id=433; side="EMPTY"; @@ -5428,7 +5420,7 @@ class Mission }; class Item354 { - position[]={684.78809,6.0690413,1809.83}; + position[]={686.46765,6.0857649,1807.2427}; azimut=57; id=434; side="EMPTY"; @@ -5438,7 +5430,7 @@ class Mission }; class Item355 { - position[]={685.1286,6.0726409,1809.3312}; + position[]={686.83069,6.0867944,1806.7209}; azimut=57; id=435; side="EMPTY"; @@ -5448,7 +5440,7 @@ class Mission }; class Item356 { - position[]={685.46899,6.0763025,1808.8092}; + position[]={684.4704,6.0554767,1813.3026}; azimut=57; id=436; side="EMPTY"; @@ -5458,7 +5450,7 @@ class Mission }; class Item357 { - position[]={685.80945,6.0799022,1808.3103}; + position[]={684.81079,6.0605907,1812.7806}; azimut=57; id=437; side="EMPTY"; @@ -5468,7 +5460,7 @@ class Mission }; class Item358 { - position[]={686.12726,6.083415,1807.7876}; + position[]={685.15125,6.0649233,1812.2817}; azimut=57; id=438; side="EMPTY"; @@ -5478,7 +5470,7 @@ class Mission }; class Item359 { - position[]={686.46765,6.0857649,1807.2427}; + position[]={685.46906,6.0684361,1811.759}; azimut=57; id=439; side="EMPTY"; @@ -5488,7 +5480,7 @@ class Mission }; class Item360 { - position[]={686.83069,6.0867944,1806.7209}; + position[]={685.80945,6.0721588,1811.2141}; azimut=57; id=440; side="EMPTY"; @@ -5498,7 +5490,7 @@ class Mission }; class Item361 { - position[]={684.4704,6.0554767,1813.3026}; + position[]={686.17249,6.0759706,1810.6924}; azimut=57; id=441; side="EMPTY"; @@ -5508,7 +5500,7 @@ class Mission }; class Item362 { - position[]={684.81079,6.0605907,1812.7806}; + position[]={686.513,6.0795708,1810.1936}; azimut=57; id=442; side="EMPTY"; @@ -5518,7 +5510,7 @@ class Mission }; class Item363 { - position[]={685.15125,6.0649233,1812.2817}; + position[]={686.85339,6.0832319,1809.6716}; azimut=57; id=443; side="EMPTY"; @@ -5528,7 +5520,7 @@ class Mission }; class Item364 { - position[]={685.46906,6.0684361,1811.759}; + position[]={687.19385,6.086832,1809.1727}; azimut=57; id=444; side="EMPTY"; @@ -5538,7 +5530,7 @@ class Mission }; class Item365 { - position[]={685.80945,6.0721588,1811.2141}; + position[]={687.51166,6.0903444,1808.65}; azimut=57; id=445; side="EMPTY"; @@ -5548,7 +5540,7 @@ class Mission }; class Item366 { - position[]={686.17249,6.0759706,1810.6924}; + position[]={687.85205,6.0940666,1808.1051}; azimut=57; id=446; side="EMPTY"; @@ -5558,7 +5550,7 @@ class Mission }; class Item367 { - position[]={686.513,6.0795708,1810.1936}; + position[]={688.21509,6.0978785,1807.5834}; azimut=57; id=447; side="EMPTY"; @@ -5568,7 +5560,7 @@ class Mission }; class Item368 { - position[]={686.85339,6.0832319,1809.6716}; + position[]={685.99097,6.0408425,1814.4846}; azimut=57; id=448; side="EMPTY"; @@ -5578,7 +5570,7 @@ class Mission }; class Item369 { - position[]={687.19385,6.086832,1809.1727}; + position[]={686.33136,6.0459561,1813.9626}; azimut=57; id=449; side="EMPTY"; @@ -5588,7 +5580,7 @@ class Mission }; class Item370 { - position[]={687.51166,6.0903444,1808.65}; + position[]={686.67181,6.0508232,1813.4637}; azimut=57; id=450; side="EMPTY"; @@ -5598,7 +5590,7 @@ class Mission }; class Item371 { - position[]={687.85205,6.0940666,1808.1051}; + position[]={686.98962,6.0559754,1812.941}; azimut=57; id=451; side="EMPTY"; @@ -5608,7 +5600,7 @@ class Mission }; class Item372 { - position[]={688.21509,6.0978785,1807.5834}; + position[]={687.33002,6.0613337,1812.3961}; azimut=57; id=452; side="EMPTY"; @@ -5618,7 +5610,7 @@ class Mission }; class Item373 { - position[]={685.99097,6.0408425,1814.4846}; + position[]={687.69305,6.0664144,1811.8744}; azimut=57; id=453; side="EMPTY"; @@ -5628,7 +5620,7 @@ class Mission }; class Item374 { - position[]={686.33136,6.0459561,1813.9626}; + position[]={688.03357,6.0712814,1811.3756}; azimut=57; id=454; side="EMPTY"; @@ -5638,7 +5630,7 @@ class Mission }; class Item375 { - position[]={686.67181,6.0508232,1813.4637}; + position[]={688.37396,6.076395,1810.8536}; azimut=57; id=455; side="EMPTY"; @@ -5648,7 +5640,7 @@ class Mission }; class Item376 { - position[]={686.98962,6.0559754,1812.941}; + position[]={688.71442,6.0812626,1810.3547}; azimut=57; id=456; side="EMPTY"; @@ -5658,7 +5650,7 @@ class Mission }; class Item377 { - position[]={687.33002,6.0613337,1812.3961}; + position[]={689.03223,6.0864148,1809.832}; azimut=57; id=457; side="EMPTY"; @@ -5668,7 +5660,7 @@ class Mission }; class Item378 { - position[]={687.69305,6.0664144,1811.8744}; + position[]={689.37262,6.091773,1809.2871}; azimut=57; id=458; side="EMPTY"; @@ -5678,7 +5670,7 @@ class Mission }; class Item379 { - position[]={688.03357,6.0712814,1811.3756}; + position[]={689.73566,6.0968542,1808.7654}; azimut=57; id=459; side="EMPTY"; @@ -5688,17 +5680,19 @@ class Mission }; class Item380 { - position[]={688.37396,6.076395,1810.8536}; - azimut=57; + position[]={682.53192,6.0658627,1806.7511}; + azimut=237; id=460; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; + vehicle="Land_Laptop_unfolded_F"; leader=1; skill=0.60000002; + text="cmd_laptop"; + init="this attachTo[cmd_desk,[0,0,0.58]];"; }; class Item381 { - position[]={688.71442,6.0812626,1810.3547}; + position[]={687.56439,6.031858,1815.521}; azimut=57; id=461; side="EMPTY"; @@ -5708,7 +5702,7 @@ class Mission }; class Item382 { - position[]={689.03223,6.0864148,1809.832}; + position[]={687.90479,6.0328031,1814.999}; azimut=57; id=462; side="EMPTY"; @@ -5718,7 +5712,7 @@ class Mission }; class Item383 { - position[]={689.37262,6.091773,1809.2871}; + position[]={688.24524,6.0376706,1814.5001}; azimut=57; id=463; side="EMPTY"; @@ -5728,7 +5722,7 @@ class Mission }; class Item384 { - position[]={689.73566,6.0968542,1808.7654}; + position[]={688.56305,6.0428233,1813.9774}; azimut=57; id=464; side="EMPTY"; @@ -5738,19 +5732,17 @@ class Mission }; class Item385 { - position[]={682.53192,6.0658627,1806.7511}; - azimut=237; + position[]={688.90344,6.0481811,1813.4325}; + azimut=57; id=465; side="EMPTY"; - vehicle="Land_Laptop_unfolded_F"; + vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; - text="cmd_laptop"; - init="this attachTo[cmd_desk,[0,0,0.58]];"; }; class Item386 { - position[]={687.56439,6.031858,1815.521}; + position[]={689.26648,6.0532622,1812.9108}; azimut=57; id=466; side="EMPTY"; @@ -5760,7 +5752,7 @@ class Mission }; class Item387 { - position[]={687.90479,6.0328031,1814.999}; + position[]={689.60699,6.0581293,1812.412}; azimut=57; id=467; side="EMPTY"; @@ -5770,7 +5762,7 @@ class Mission }; class Item388 { - position[]={688.24524,6.0376706,1814.5001}; + position[]={689.94739,6.0632429,1811.89}; azimut=57; id=468; side="EMPTY"; @@ -5780,7 +5772,7 @@ class Mission }; class Item389 { - position[]={688.56305,6.0428233,1813.9774}; + position[]={690.28784,6.0677261,1811.3911}; azimut=57; id=469; side="EMPTY"; @@ -5790,7 +5782,7 @@ class Mission }; class Item390 { - position[]={688.90344,6.0481811,1813.4325}; + position[]={690.60565,6.0724549,1810.8684}; azimut=57; id=470; side="EMPTY"; @@ -5800,7 +5792,7 @@ class Mission }; class Item391 { - position[]={689.26648,6.0532622,1812.9108}; + position[]={690.94604,6.0773587,1810.3235}; azimut=57; id=471; side="EMPTY"; @@ -5810,7 +5802,7 @@ class Mission }; class Item392 { - position[]={689.60699,6.0581293,1812.412}; + position[]={691.30908,6.0819559,1809.8018}; azimut=57; id=472; side="EMPTY"; @@ -5820,91 +5812,52 @@ class Mission }; class Item393 { - position[]={689.94739,6.0632429,1811.89}; - azimut=57; + position[]={695.21124,5.9986386,1825.8096}; + azimut=150; id=473; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; + vehicle="Land_HBarrier_1_F"; leader=1; skill=0.60000002; }; class Item394 { - position[]={690.28784,6.0677261,1811.3911}; - azimut=57; + position[]={694.07318,5.9928374,1843.0549}; + azimut=140; id=474; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item395 { - position[]={690.60565,6.0724549,1810.8684}; - azimut=57; + position[]={709.13666,6.0419507,1852.8446}; + azimut=140; id=475; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item396 { - position[]={690.94604,6.0773587,1810.3235}; - azimut=57; + position[]={703.02618,6.0231557,1827.2369}; + azimut=50; id=476; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; + vehicle="Land_HBarrier_1_F"; leader=1; skill=0.60000002; }; class Item397 { - position[]={691.30908,6.0819559,1809.8018}; - azimut=57; + position[]={713.82568,6.0560155,1831.4098}; + azimut=230; id=477; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; - skill=0.60000002; - }; - class Item398 - { - position[]={695.21124,5.9986386,1825.8096}; - azimut=150; - id=478; - side="EMPTY"; - vehicle="Land_HBarrier_1_F"; - leader=1; - skill=0.60000002; - }; - class Item399 - { - position[]={694.07318,5.9928374,1843.0549}; - azimut=140; - id=479; - side="EMPTY"; - vehicle="Land_HBarrierBig_F"; - skill=0.60000002; - }; - class Item400 - { - position[]={709.13666,6.0419507,1852.8446}; - azimut=140; - id=480; - side="EMPTY"; - vehicle="Land_HBarrierBig_F"; - skill=0.60000002; - }; - class Item401 - { - position[]={703.02618,6.0231557,1827.2369}; - azimut=50; - id=481; - side="EMPTY"; - vehicle="Land_HBarrier_1_F"; - leader=1; + vehicle="Land_InfoStand_V1_F"; skill=0.60000002; + text="garage_spawner_med"; + init="this enableSimulationGlobal false;"; }; }; class Markers diff --git a/missionInit.sqf b/missionInit.sqf index 72a0b0d..e6d1bdc 100644 --- a/missionInit.sqf +++ b/missionInit.sqf @@ -65,7 +65,7 @@ officerArray = []; RydFFE_Interval = 300; //Sets interval between possible arty calls (I hope so atleast, I didn't make the addon) CHVD_allowNoGrass = false; // Set 'false' if you want to disable "Low" option for terrain (default: true) CHVD_maxView = 12000; // Set maximum view distance (default: 12000) -CHVD_maxObj = 12000; // Set maximimum object view distance (default: 12000) +CHVD_maxObj = 12000; // Set maximimum object view distance (default: 12000) //Public var for local scripts publicVariable "logisticsArray"; @@ -79,7 +79,7 @@ publicVariable "tankMultiplier"; []spawn JOC_cacheInit; //Dunno why I can't use a call for this []spawn JOC_cmdManager; []spawn JOC_perfLoop; - +/* //call -doesn't need a seperate thread []call JOC_initTowns; []call JOC_initAirfields; @@ -88,4 +88,4 @@ publicVariable "tankMultiplier"; []call JOC_initArty; //Uses AA []call JOC_initRadio; //Uses AA []call JOC_initPatrols; -[]call JOC_initMines; \ No newline at end of file +[]call JOC_initMines;*/ From 97796d048ceef7409a6240df367768770d491365 Mon Sep 17 00:00:00 2001 From: Jochem Date: Wed, 16 Sep 2015 22:03:46 +0200 Subject: [PATCH 10/17] 190915/2 -Rework for FOB (part 1- --- Functions/Logistics/Fob/fobDeploy.sqf | 13 +++++--- Functions/Logistics/Fob/fobManager.sqf | 21 ++++--------- Functions/Logistics/Fob/fobSpawn.sqf | 30 ++++++++++++++++++ Functions/Logistics/Fob/fobUndeploy.sqf | 6 ++-- Functions/Logistics/Fob/getLocations.sqf | 32 ++++++++++++++++++++ Functions/Logistics/fn_logistics_compile.sqf | 4 ++- mission.sqm | 31 ++++++++++++++++++- missionInit.sqf | 3 +- 8 files changed, 114 insertions(+), 26 deletions(-) create mode 100644 Functions/Logistics/Fob/fobSpawn.sqf create mode 100644 Functions/Logistics/Fob/getLocations.sqf diff --git a/Functions/Logistics/Fob/fobDeploy.sqf b/Functions/Logistics/Fob/fobDeploy.sqf index 5987a00..4fa4b43 100644 --- a/Functions/Logistics/Fob/fobDeploy.sqf +++ b/Functions/Logistics/Fob/fobDeploy.sqf @@ -11,11 +11,14 @@ _truck = _this select 0; } forEach (crew _truck); _spawnPos= [(getPos _truck),3,((direction _truck) + 90)] call Zen_ExtendPosition; -_marker = createMarker ["mrk_FOB", (_spawnPos)]; -_marker setMarkerType "flag_NATO"; +_name = [6] call Zen_StringGenerateRandom; +_marker = createMarker [_name, (_spawnPos)]; +_marker setMarkerType "b_support"; _marker setMarkerText "FOB"; [["RespawnAdded",["DEPLOYMENT POINT",format ["HQ deployed at grid %1", mapGridPosition (getPos _truck)],"\A3\ui_f\data\map\markers\nato\b_hq.paa"]],"BIS_fnc_showNotification",west] call BIS_fnc_MP; //Notification -[[[_truck],{_action = (_this select 0) addAction["Dismantle FOB",{[(_this select 0)] spawn JOC_fobUndeploy;},"",1,true,true,"","(side _this == west) && (speed _target < 1)"];}],"BIS_fnc_spawn",true,true] call BIS_fnc_MP; -[[[_truck],{_action = (_this select 0) addAction["Return to base",{(_this select 1) setPosASL getPosASL respawn_obj;},"",1,true,true,"","(side _this == west) && (speed _target < 1)"];}],"BIS_fnc_spawn",true,true] call BIS_fnc_MP; -[{flagPole addAction ["Go to FOB", {(_this select 1) setPosASL getMarkerPos "mrk_FOB"}];},"BIS_fnc_spawn",true,true] call BIS_fnc_MP; \ No newline at end of file +[[[_truck,_name],{_action = (_this select 0) addAction["Dismantle FOB",{[(_this select 0),(_this select 1)] spawn JOC_fobUndeploy;},"",1,true,true,"","(side _this == west) && (speed _target < 1)"];}],"BIS_fnc_spawn",true,true] call BIS_fnc_MP; +[[[_truck],{_action = (_this select 0) addAction["Relocate",{ + _fobArray = []call JOC_fobGetLocations; + [(findDisplay 46), getpos (_this select 1), _fobArray, [], [], [], 1, false] call BIS_fnc_strategicMapOpen; +},"",1,true,true,"","(side _this == west) && (speed _target < 1)"];}],"BIS_fnc_spawn",true,true] call BIS_fnc_MP; diff --git a/Functions/Logistics/Fob/fobManager.sqf b/Functions/Logistics/Fob/fobManager.sqf index e739293..dd91178 100644 --- a/Functions/Logistics/Fob/fobManager.sqf +++ b/Functions/Logistics/Fob/fobManager.sqf @@ -1,19 +1,10 @@ ///////////////////////// //Script made by Jochem// ///////////////////////// -_fobCount = -1; +_truck = _this select 0; -while{true}do{ - _truck = "rhsusf_M1083A1P2_B_M2_d_MHQ_fmtv_usarmy" createVehicle [16000,16000,0]; - _truck setDir getDir fobSpawn; - _truck setPosASL getPosASL fobSpawn; - _truck setDamage 0; - zeusMod addCuratorEditableObjects [[_truck],false]; - [_truck] call JOC_fobInit; - - _fobCount = _fobCount + 1; - - waitUntil {Sleep 60;((_fobCount < (count bluTowns)) && (!(alive _truck)))}; - deleteVehicle _truck; - Sleep 5; -}; \ No newline at end of file +waitUntil {sleep 60;(!(alive _truck))}; +deleteVehicle _truck; +sleep 5; +fobCount = fobCount - 1; +fobCount = fobCount - [objNull]; diff --git a/Functions/Logistics/Fob/fobSpawn.sqf b/Functions/Logistics/Fob/fobSpawn.sqf new file mode 100644 index 0000000..3ca79b3 --- /dev/null +++ b/Functions/Logistics/Fob/fobSpawn.sqf @@ -0,0 +1,30 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +if(!isServer)exitWith{}; + +if(isNil{fobCount})then{ + fobCount = 0; + [{flagPole addAction ["Relocate", { + _fobArray = []call JOC_fobGetLocations; + [(findDisplay 46), getpos (_this select 1), _fobArray, [], [], [], 1, false] call BIS_fnc_strategicMapOpen; + }];},"BIS_fnc_spawn",true,true] call BIS_fnc_MP; +}; +if(fobCount < ((count bluTowns) + 1))then{ + hint "lol"; + _veh = nearestObjects [(getPos fobSpawn),["AllVehicles"],5]; + if((count _veh) >= 1 or (fobCount >= fobLimit))then{ + hint "Pad not clear or max vehicles reached"; + }else{ + _truck = "rhsusf_M1083A1P2_B_M2_d_MHQ_fmtv_usarmy" createVehicle [16000,16000,0]; + _truck setDir getDir fobSpawn; + _truck setPosASL getPosASL fobSpawn; + _truck setDamage 0; + zeusMod addCuratorEditableObjects [[_truck],false]; + fobTrucks pushBack _truck; + hint "FOB will be ready in 5 minutes"; + sleep 300; + [_truck] call JOC_fobInit; + [_truck]spawn JOC_fobManager; + }; +}; diff --git a/Functions/Logistics/Fob/fobUndeploy.sqf b/Functions/Logistics/Fob/fobUndeploy.sqf index a8def38..7d9d236 100644 --- a/Functions/Logistics/Fob/fobUndeploy.sqf +++ b/Functions/Logistics/Fob/fobUndeploy.sqf @@ -5,8 +5,8 @@ private ["_truck"]; _truck = _this select 0; -deleteMarker "mrk_FOB"; +deleteMarker (_this select 1); -[[[_truck],{(_this select 0) setVehicleLock "UNLOCKED";removeAllActions (_this select 0);removeAllActions flagPole;}],"BIS_fnc_spawn",true,true] call BIS_fnc_MP; +[[[_truck],{(_this select 0) setVehicleLock "UNLOCKED";removeAllActions (_this select 0);}],"BIS_fnc_spawn",true,true] call BIS_fnc_MP; [["RespawnAdded",["DEPLOYMENT POINT",format ["HQ dismantled at grid %1", mapGridPosition (getPos _truck)],"\A3\ui_f\data\map\markers\nato\b_hq.paa"]],"BIS_fnc_showNotification",west] call BIS_fnc_MP; //Notification -[[[_truck],{_action = (_this select 0) addAction["Deploy FOB",{[(_this select 0)] spawn JOC_fobDeploy;},"",1,true,true,"","(side _this == west) && (speed _target < 1)"];}],"BIS_fnc_spawn",true,true] call BIS_fnc_MP; \ No newline at end of file +[[[_truck],{_action = (_this select 0) addAction["Deploy FOB",{[(_this select 0)] spawn JOC_fobDeploy;},"",1,true,true,"","(side _this == west) && (speed _target < 1)"];}],"BIS_fnc_spawn",true,true] call BIS_fnc_MP; diff --git a/Functions/Logistics/Fob/getLocations.sqf b/Functions/Logistics/Fob/getLocations.sqf new file mode 100644 index 0000000..74c44e8 --- /dev/null +++ b/Functions/Logistics/Fob/getLocations.sqf @@ -0,0 +1,32 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +_array = []; + +{ + _arrayN = [ + (getPos _x), + {player setPos (_this select 0)}, + "FOB", + "Relocate here", + "", + "", + 1, + [] + ]; + + _array = _array + [_arrayN]; +}forEach fobTrucks; + +_array = _array + [[ + (getPos respawn_obj), + {player setPos getPos respawn_obj}, + "Base", + "Relocate here", + "", + "", + 1, + [] +]]; + +_array diff --git a/Functions/Logistics/fn_logistics_compile.sqf b/Functions/Logistics/fn_logistics_compile.sqf index 2376fdb..42a05f0 100644 --- a/Functions/Logistics/fn_logistics_compile.sqf +++ b/Functions/Logistics/fn_logistics_compile.sqf @@ -8,7 +8,9 @@ JOC_buildPlaceObject = compileFinal preprocessFileLineNumbers "Functions\Logisti JOC_buildKeypress = compileFinal preprocessFileLineNumbers "Functions\Logistics\Building\keypress.sqf"; //Fob +JOC_fobSpawn = compileFinal preprocessFileLineNumbers "Functions\Logistics\Fob\fobSpawn.sqf"; JOC_fobDeploy = compileFinal preprocessFileLineNumbers "Functions\Logistics\Fob\fobDeploy.sqf"; JOC_fobUndeploy = compileFinal preprocessFileLineNumbers "Functions\Logistics\Fob\fobUndeploy.sqf"; JOC_fobInit = compileFinal preprocessFileLineNumbers "Functions\Logistics\Fob\fobInit.sqf"; -JOC_fobManager = compileFinal preprocessFileLineNumbers "Functions\Logistics\Fob\fobManager.sqf"; \ No newline at end of file +JOC_fobManager = compileFinal preprocessFileLineNumbers "Functions\Logistics\Fob\fobManager.sqf"; +JOC_fobGetLocations = compileFinal preprocessFileLineNumbers "Functions\Logistics\Fob\getLocations.sqf"; diff --git a/mission.sqm b/mission.sqm index c339477..b8650a7 100644 --- a/mission.sqm +++ b/mission.sqm @@ -2086,7 +2086,7 @@ class Mission }; class Vehicles { - items=398; + items=401; class Item0 { position[]={689.72211,6.0638437,1797.7275}; @@ -5859,6 +5859,35 @@ class Mission text="garage_spawner_med"; init="this enableSimulationGlobal false;"; }; + class Item398 + { + position[]={667.43811,6.0650091,1778.0951}; + azimut=147; + id=478; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item399 + { + position[]={663.93365,6.0661235,1775.8878}; + azimut=147; + id=479; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item400 + { + position[]={660.31696,6.0655694,1772.6523}; + azimut=57; + id=480; + side="EMPTY"; + vehicle="Land_InfoStand_V1_F"; + skill=0.60000002; + text="garage_spawner_5_1"; + init="this enableSimulationGlobal false;_action = this addAction[""Spawn FOB"",{[{[]spawn JOC_fobSpawn},""BIS_fnc_spawn"",false,false] call BIS_fnc_MP;}];"; + }; }; class Markers { diff --git a/missionInit.sqf b/missionInit.sqf index e6d1bdc..53f763c 100644 --- a/missionInit.sqf +++ b/missionInit.sqf @@ -13,7 +13,7 @@ mineCount = 30; //Number of minefields artyCount = 4; //Number of artillery batteries radioCount = 4; //Number of radio towers officerCount = 5; //Number of officers -tankMultiplier = 0.8; //Damage multiplier for tanks; +fobLimit = 5; //Limitamount of fobs at the same time //Classnames infantryPool = ["rhs_vdv_rifleman","rhs_vdv_efreitor","rhs_vdv_engineer","rhs_vdv_grenadier","rhs_vdv_at","rhs_vdv_strelok_rpg_assist","rhs_vdv_junior_sergeant","rhs_vdv_machinegunner","rhs_vdv_machinegunner_assistant","rhs_vdv_marksman","rhs_vdv_medic","rhs_vdv_LAT","rhs_vdv_RShG2","rhs_vdv_sergeant"]; //infantry classnames sfPool = []; @@ -60,6 +60,7 @@ jetTargets = []; groups = []; groundArray = []; officerArray = []; +fobTrucks = []; //Script vars RydFFE_Interval = 300; //Sets interval between possible arty calls (I hope so atleast, I didn't make the addon) From 61e75894622dbe06d27546e49a5879c0db2419be Mon Sep 17 00:00:00 2001 From: Jochem Date: Thu, 17 Sep 2015 21:26:57 +0200 Subject: [PATCH 11/17] 170915 -spawnZone now uses marker instead of radius -updated airfields to use new zone spawning -minor fixes to FOB --- Functions/AI/spawnAirfield.sqf | 15 +++---- Functions/AI/spawnZone.sqf | 52 ++++++++++++++---------- Functions/Init/initAirfields.sqf | 3 +- Functions/Logistics/Fob/fobDeploy.sqf | 3 +- Functions/Logistics/Fob/getLocations.sqf | 2 +- missionInit.sqf | 4 +- 6 files changed, 44 insertions(+), 35 deletions(-) diff --git a/Functions/AI/spawnAirfield.sqf b/Functions/AI/spawnAirfield.sqf index 66c717e..0e89cc3 100644 --- a/Functions/AI/spawnAirfield.sqf +++ b/Functions/AI/spawnAirfield.sqf @@ -5,12 +5,13 @@ _marker = _this select 0; _id = _this select 1; _location = getMarkerPos _marker; _size = getMarkerSize _marker; +_dir = (markerDir _marker); //Create activation trigger _trg = createTrigger ["EmptyDetector",_location,true]; _trg setTriggerArea [(_size select 0)*3.5,(_size select 1)*3.5,1200,false]; _trg setTriggerActivation ["WEST","PRESENT", false]; -_trg setTriggerStatements ["this","[getPos thisTrigger,1600,[11,true],[4,false],[0,false],[3,false],[2,false],[0,false,""cas""],[0,false]] call JOC_spawnZone;deleteVehicle thisTrigger;",""]; +_trg setTriggerStatements ["this","[getPos thisTrigger,([(triggerArea thisTrigger select 0)*0.4,(triggerArea thisTrigger select 1)*0.4,getDir thisTrigger]),[11,true],[4,false],[0,false],[3,false],[2,false],[0,false,""cas""],[0,false]] call JOC_spawnZone;deleteVehicle thisTrigger;",""]; _trg setTriggerTimeout [5,5,5,true]; _trg setDir (markerDir _marker); @@ -55,25 +56,25 @@ while{_ok == 0}do{ _count = _count + 1; }; -//Create activation trigger +//Create object triggers _trgO = createTrigger ["EmptyDetector",_location,true]; _trgO setTriggerArea [(_size select 0),(_size select 1),1200,false]; _trgO setTriggerActivation ["EAST","PRESENT", false]; _trgO setTriggerStatements ["this","",""]; _trgO setTriggerTimeout [5,5,5,true]; -_trgO setDir (markerDir _marker); +_trgO setDir _dir; _trgB = createTrigger ["EmptyDetector",_location,true]; _trgB setTriggerArea [(_size select 0),(_size select 1),1200,false]; _trgB setTriggerActivation ["WEST","PRESENT", false]; _trgB setTriggerStatements ["this","",""]; _trgB setTriggerTimeout [5,5,5,true]; -_trgB setDir (markerDir _marker); +_trgB setDir _dir; -waitUntil{sleep 30;list _trgO >= 1}; +waitUntil{sleep 30;(count (list _trgO)) >= 1}; -while{list _trgO <= 5}do{ - if(list _trgB >= 5)then{ +while{(count (list _trgO)) >= 5}do{ + if((count (list _trgB)) >= 5)then{ [airfieldOccup,_id,cont] call Zen_ArrayInsert; sleep 30; }; diff --git a/Functions/AI/spawnZone.sqf b/Functions/AI/spawnZone.sqf index ef12f99..3f44102 100644 --- a/Functions/AI/spawnZone.sqf +++ b/Functions/AI/spawnZone.sqf @@ -3,9 +3,9 @@ ///////////////////////// //[amount(SCALAR),patrol(BOOLEAN)] heli:[amount(SCALAR),patrol(BOOLEAN),type(STRING)] -private["_location","_radius","_inf","_car","_apc","_ifv","_tank","_heli","_boat"]; +private["_location","_dimensions","_inf","_car","_apc","_ifv","_tank","_heli","_boat"]; _location = _this select 0; -_radius = _this select 1; +_dimensions = _this select 1; _inf = _this select 2; _car = _this select 3; _apc = _this select 4; @@ -14,19 +14,29 @@ _tank = _this select 6; _heli = _this select 7; _boat = _this select 8; -//if(_radius < 1)exitWith{}; +if ((typeName _dimensions) == "SCALAR") then { + _var = _dimensions; + _dimensions = [_var,_var,0]; +}; + +_spawnMarkerName = [4] call Zen_StringGenerateRandom; +_spawnMarker = createMarker [_spawnMarkerName,_location]; +_spawnMarkerName setMarkerSize [(_dimensions select 0),(_dimensions select 1)]; +_spawnMarkerName setMarkerShape "RECTANGLE"; +_spawnMarkerName setMarkerDir (_dimensions select 2); +_spawnMarkerName setMarkerAlpha 0; //Spawn infantry _j = 0; if((_inf select 0) > 0)then{ while{_j < (_inf select 0)} do{ - _locationS = [_location,[0,_radius],0,1] call Zen_FindGroundPosition; + _locationS = [_spawnMarkerName,0,0,1] call Zen_FindGroundPosition; _locationS = [_locationS,1,1] call Zen_ExtendPosition; _groupV = [_locationS, east, "infantry", 4,"Basic"] call Zen_SpawnInfantry; zeusMod addCuratorEditableObjects [(units _groupV),false]; if(_inf select 1)then{ - [_groupV,_location,[0,_radius],[0,360],"limited","safe"] spawn Zen_OrderInfantryPatrol; - (leader _groupV) setVariable ["patrol",[_location,[0,_radius],[0,360],"limited","safe"],true]; + [_groupV, _spawnMarkerName, [], [0,360],"limited","safe"] spawn Zen_OrderInfantryPatrol; + (leader _groupV) setVariable ["patrol",[_spawnMarkerName, [],[0,360],"limited","safe"],true]; }; _j = _j + 1; }; @@ -36,7 +46,7 @@ if((_inf select 0) > 0)then{ _j = 0; if((_car select 0) > 0)then{ while{_j < (_car select 0)} do{ - _locationS = [_location,[0,_radius],0,1,[1,_radius]] call Zen_FindGroundPosition; + _locationS = [_spawnMarkerName,0,0,1,[1,100]] call Zen_FindGroundPosition; _veh = [_locationS,(carPool call BIS_fnc_selectRandom)] call Zen_SpawnVehicle; createVehicleCrew _veh; zeusMod addCuratorEditableObjects [[_veh],false]; @@ -47,8 +57,8 @@ if((_car select 0) > 0)then{ zeusMod addCuratorEditableObjects [(units _groupV),false]; [_units,_veh] spawn Zen_MoveInVehicle; if(_car select 1)then{ - [_veh, _location, _radius,[0,360],"limited",true] spawn Zen_OrderVehiclePatrol; - _veh setVariable ["patrol",[_location, _radius,[0,360],"limited",true],true]; + [_veh, _spawnMarkerName, [], [0,360],"limited",true] spawn Zen_OrderVehiclePatrol; + _veh setVariable ["patrol",[_spawnMarkerName, [], [0,360],"limited",true],true]; }; _j = _j + 1; }; @@ -58,14 +68,14 @@ if((_car select 0) > 0)then{ _j = 0; if((_apc select 0) > 0)then{ while{_j < (_apc select 0)} do{ - _locationS = [_location,[0,_radius],0,1,[1,_radius]] call Zen_FindGroundPosition; + _locationS = [_spawnMarkerName,0,0,1,[1,100]] call Zen_FindGroundPosition; _veh = [_locationS,(apcPool call BIS_fnc_selectRandom)] call Zen_SpawnVehicle; createVehicleCrew _veh; zeusMod addCuratorEditableObjects [[_veh],false]; zeusMod addCuratorEditableObjects [(crew _veh),false]; if(_apc select 1)then{ - [_veh, _location, _radius,[0,360],"limited",true] spawn Zen_OrderVehiclePatrol; - _veh setVariable ["patrol",[_location, _radius,[0,360],"limited",true],true]; + [_veh, _spawnMarkerName, [], [0,360],"limited",true] spawn Zen_OrderVehiclePatrol; + _veh setVariable ["patrol",[_spawnMarkerName, [], [0,360],"limited",true],true]; }; _j = _j + 1; }; @@ -75,14 +85,14 @@ if((_apc select 0) > 0)then{ _j = 0; if((_ifv select 0) > 0)then{ while{_j < (_ifv select 0)} do{ - _locationS = [_location,[0,_radius],0,1,[1,_radius]] call Zen_FindGroundPosition; + _locationS = [_spawnMarkerName,0,0,1,[1,100]] call Zen_FindGroundPosition; _veh = [_locationS,(ifvPool call BIS_fnc_selectRandom)] call Zen_SpawnVehicle; createVehicleCrew _veh; zeusMod addCuratorEditableObjects [[_veh],false]; zeusMod addCuratorEditableObjects [(crew _veh),false]; if(_ifv select 1)then{ - [_veh, _location, _radius,[0,360],"limited",true] spawn Zen_OrderVehiclePatrol; - _veh setVariable ["patrol",[_location, _radius,[0,360],"limited",true],true]; + [_veh, _spawnMarkerName, [], [0,360],"limited",true] spawn Zen_OrderVehiclePatrol; + _veh setVariable ["patrol",[_spawnMarkerName, [], [0,360],"limited",true],true]; }; _j = _j + 1; }; @@ -92,14 +102,14 @@ if((_ifv select 0) > 0)then{ _j = 0; if((_tank select 0) > 0)then{ while{_j < (_tank select 0)} do{ - _locationS = [_location,[0,_radius],0,1,[1,_radius]] call Zen_FindGroundPosition; + _locationS = [_spawnMarkerName,0,0,1,[1,100]] call Zen_FindGroundPosition; _veh = [_locationS,(tankPool call BIS_fnc_selectRandom)] call Zen_SpawnVehicle; createVehicleCrew _veh; zeusMod addCuratorEditableObjects [[_veh],false]; zeusMod addCuratorEditableObjects [(crew _veh),false]; if(_tank select 1)then{ - [_veh, _location, _radius,[0,360],"limited",true] spawn Zen_OrderVehiclePatrol; - _veh setVariable ["patrol",[_location, _radius,[0,360],"limited",true],true]; + [_veh, _spawnMarkerName, [], [0,360],"limited",true] spawn Zen_OrderVehiclePatrol; + _veh setVariable ["patrol",[_spawnMarkerName, [], [0,360],"limited",true],true]; }; _j = _j + 1; }; @@ -113,7 +123,7 @@ _j = 0; _pool = []; if(_heliCount > 0)then{ while{_j < _heliCount} do{ - _locationS = [_location,[0,_radius],0,0,[1,_radius]] call Zen_FindGroundPosition; + _locationS = [_spawnMarkerName,0,0,0,[1,_radius]] call Zen_FindGroundPosition; if(_heliType == "transport")then{ _pool = heliPool; }; @@ -133,12 +143,12 @@ _boatPatrol = (_boat select 1); _j = 0; if(_boatCount > 0)then{ while{_j < _boatCount} do{ - _locationS = [_location,[0,_radius],0,2] call Zen_FindGroundPosition; + _locationS = [_spawnMarkerName,0,0,2] call Zen_FindGroundPosition; _boatV = [_locationS,["O_Boat_Armed_01_hmg_F"]] call Zen_SpawnBoat; zeusMod addCuratorEditableObjects [[_boatV],false]; zeusMod addCuratorEditableObjects [(crew _boatV),false]; if(_boatPatrol)then{ - [_boatV, _location, _radius] spawn Zen_OrderBoatPatrol; + [_boatV, _spawnMarkerName, []] spawn Zen_OrderBoatPatrol; }; _j = _j + 1; }; diff --git a/Functions/Init/initAirfields.sqf b/Functions/Init/initAirfields.sqf index 25d743e..b2438b7 100644 --- a/Functions/Init/initAirfields.sqf +++ b/Functions/Init/initAirfields.sqf @@ -7,6 +7,5 @@ airfieldGroup = createGroup east; _s = 0; while{_s < count _airfields}do{ [(_airfields select _s),_s]spawn JOC_spawnAirfield; - airfieldT = (_airfields select _s); _s = _s + 1; -}; \ No newline at end of file +}; diff --git a/Functions/Logistics/Fob/fobDeploy.sqf b/Functions/Logistics/Fob/fobDeploy.sqf index 4fa4b43..4e23547 100644 --- a/Functions/Logistics/Fob/fobDeploy.sqf +++ b/Functions/Logistics/Fob/fobDeploy.sqf @@ -10,9 +10,8 @@ _truck = _this select 0; _x action ["eject", _truck] } forEach (crew _truck); -_spawnPos= [(getPos _truck),3,((direction _truck) + 90)] call Zen_ExtendPosition; _name = [6] call Zen_StringGenerateRandom; -_marker = createMarker [_name, (_spawnPos)]; +_marker = createMarker [_name, (getPos _truck)]; _marker setMarkerType "b_support"; _marker setMarkerText "FOB"; diff --git a/Functions/Logistics/Fob/getLocations.sqf b/Functions/Logistics/Fob/getLocations.sqf index 74c44e8..4f78959 100644 --- a/Functions/Logistics/Fob/getLocations.sqf +++ b/Functions/Logistics/Fob/getLocations.sqf @@ -6,7 +6,7 @@ _array = []; { _arrayN = [ (getPos _x), - {player setPos (_this select 0)}, + {player setPos ([(getPos (_this select 0)),3,((direction (_this select 0)) + 90)] call Zen_ExtendPosition;}, "FOB", "Relocate here", "", diff --git a/missionInit.sqf b/missionInit.sqf index 53f763c..3ee4495 100644 --- a/missionInit.sqf +++ b/missionInit.sqf @@ -80,7 +80,7 @@ publicVariable "tankMultiplier"; []spawn JOC_cacheInit; //Dunno why I can't use a call for this []spawn JOC_cmdManager; []spawn JOC_perfLoop; -/* + //call -doesn't need a seperate thread []call JOC_initTowns; []call JOC_initAirfields; @@ -89,4 +89,4 @@ publicVariable "tankMultiplier"; []call JOC_initArty; //Uses AA []call JOC_initRadio; //Uses AA []call JOC_initPatrols; -[]call JOC_initMines;*/ +[]call JOC_initMines; From 0ed507a4f1874eb7130f420e7915c2b447a5d851 Mon Sep 17 00:00:00 2001 From: Jochem Date: Sat, 19 Sep 2015 20:58:39 +0200 Subject: [PATCH 12/17] 190915 -Basic bases implementation -Added logistics depot -FOB composition -Various fixes --- Functions/AI/spawnAirfield.sqf | 4 +- Functions/Caching/cache.sqf | 1 - Functions/Commander/heli.sqf | 15 +- Functions/Init/initAA.sqf | 16 +- Functions/Init/initBases.sqf | 18 + Functions/Init/initDepot.sqf | 13 + Functions/Init/initFOB.sqf | 9 - Functions/Init/initPlayerBase.sqf | 8 + Functions/Logistics/Depot/spawnObject.sqf | 22 + Functions/Logistics/Fob/fobDeploy.sqf | 37 +- Functions/Logistics/Fob/fobSpawn.sqf | 11 +- Functions/Logistics/Fob/fobUndeploy.sqf | 5 +- Functions/Logistics/Fob/getLocations.sqf | 25 +- Functions/Logistics/fn_logistics_compile.sqf | 3 + Functions/Logistics/spawnComposition.sqf | 26 + Functions/Player/click.sqf | 7 +- Functions/Tasks/getMainTasks.sqf | 40 + Functions/Tasks/setMainTask.sqf | 5 + Functions/Vehicle/Garage/main.sqf | 16 +- Functions/fn_compile.sqf | 6 + mission.sqm | 2505 ++++++++++-------- missionInit.sqf | 6 +- onPlayerRespawn.sqf | 2 +- 23 files changed, 1591 insertions(+), 1209 deletions(-) create mode 100644 Functions/Init/initDepot.sqf delete mode 100644 Functions/Init/initFOB.sqf create mode 100644 Functions/Init/initPlayerBase.sqf create mode 100644 Functions/Logistics/Depot/spawnObject.sqf create mode 100644 Functions/Logistics/spawnComposition.sqf create mode 100644 Functions/Tasks/getMainTasks.sqf create mode 100644 Functions/Tasks/setMainTask.sqf diff --git a/Functions/AI/spawnAirfield.sqf b/Functions/AI/spawnAirfield.sqf index 0e89cc3..52a5a59 100644 --- a/Functions/AI/spawnAirfield.sqf +++ b/Functions/AI/spawnAirfield.sqf @@ -75,8 +75,10 @@ waitUntil{sleep 30;(count (list _trgO)) >= 1}; while{(count (list _trgO)) >= 5}do{ if((count (list _trgB)) >= 5)then{ - [airfieldOccup,_id,cont] call Zen_ArrayInsert; + [airfieldOccup,_id,true] call Zen_ArrayInsert; sleep 30; + }else{ + [airfieldOccup,_id,false] call Zen_ArrayInsert; }; }; diff --git a/Functions/Caching/cache.sqf b/Functions/Caching/cache.sqf index 2016512..c9de8b5 100644 --- a/Functions/Caching/cache.sqf +++ b/Functions/Caching/cache.sqf @@ -10,7 +10,6 @@ _trg setTriggerActivation ["EAST","PRESENT", false]; sleep 5; _list = (list _trg); -hint "cch"; listT = _list; { diff --git a/Functions/Commander/heli.sqf b/Functions/Commander/heli.sqf index 04d6131..6f11cb9 100644 --- a/Functions/Commander/heli.sqf +++ b/Functions/Commander/heli.sqf @@ -6,8 +6,9 @@ while{true}do{ _airfieldID = [false,airfieldOccup]call Zen_ValueFindInArray; _mrkN = format ["mrk_heliSpawn_%1",_airfieldID]; _airfield = getMarkerPos _mrkN; - - _heli1 = [_airfield,(casPool call BIS_fnc_selectRandom),50] call Zen_SpawnHelicopter; + _airfield2 = [_airfield,40,0] call Zen_ExtendPosition; + + _heli1 = [_airfield2,(casPool call BIS_fnc_selectRandom),50] call Zen_SpawnHelicopter; zeusMod addCuratorEditableObjects [[_heli1],false]; zeusMod addCuratorEditableObjects [(crew _heli1),false]; _heli2 = [_airfield,(airPool call BIS_fnc_selectRandom),0] call Zen_SpawnHelicopter; @@ -19,10 +20,10 @@ while{true}do{ zeusMod addCuratorEditableObjects [(crew _heli2),false]; zeusMod addCuratorEditableObjects [(units _groupV),false]; [_groupV,_heli2] spawn Zen_MoveInVehicle; - [[_heli1,_heli2],"mrk_area",[],[0,360],"full"]spawn Zen_OrderVehiclePatrol; - + [[_heli1,_heli2],"mrk_area",blackMarkers,[0,360],"full"]spawn Zen_OrderVehiclePatrol; + [_heli2,_groupV]spawn JOC_cmdHeliMonitor; - + waitUntil{sleep 60; (((fuel _heli1 <= 0.1) or (fuel _heli2 <= 0.1)) or ((!alive _heli1) and (!alive _heli2)))}; if((fuel _heli1 <= 0.1) or (fuel _heli2 <= 0.1))then{ [_heli1, _airfield,"full",100,false,true]spawn Zen_OrderHelicopterLand; @@ -30,6 +31,6 @@ while{true}do{ [_heli2, _airfield,"full",100,false,true]spawn Zen_OrderHelicopterLand; _heli2 addEventHandler["LandedTouchDown",{deleteVehicle ((crew (_this select 0)) select 0);deleteVehicle (_this select 0);}]; }; - + sleep 1200; -}; \ No newline at end of file +}; diff --git a/Functions/Init/initAA.sqf b/Functions/Init/initAA.sqf index 9405b00..0661480 100644 --- a/Functions/Init/initAA.sqf +++ b/Functions/Init/initAA.sqf @@ -6,7 +6,7 @@ tankBlacklist = []; //Set radars _radar = 0; -while {_radar < (aaCount / 2)} do +while {_radar < (aaCount / 2)} do { _marker = format["mrk_aaZone_%1",_radar]; _location = [_marker,0,[radarBlacklist + blackMarkers,["mrk_area"],[]],1,0,0,0,0,0,[1,10,50],[1,0,20]] call Zen_FindGroundPosition; @@ -21,14 +21,14 @@ while {_radar < (aaCount / 2)} do _nameM setMarkerSize [3000,3000]; _nameM setMarkerBrush "Border"; _nameM setMarkerColor "ColorOPFOR"; - //_nameM setMarkerAlpha 0; - + _nameM setMarkerAlpha 0; + _name = [5] call Zen_StringGenerateRandom; _marker = createMarker [_name, _location]; _name setMarkerType "o_installation"; [radarBlacklist,count radarBlacklist,_nameM] call Zen_ArrayInsert; - + _radar = _radar + 1; }; @@ -39,7 +39,7 @@ while {_tank < aaCount} do { if(_count == (aaCount / 2))then{_count = 0}; _marker = format["mrk_aaZone_%1",_count]; - + _location = [_marker,0,[tankBlacklist + blackMarkers,["mrk_area"],[]],1,0,0,0,0,0,[1,10,50],[1,0,20]] call Zen_FindGroundPosition; _aaTank = "rhs_zsu234_aa" createVehicle _location; createVehicleCrew _aaTank; @@ -59,9 +59,9 @@ while {_tank < aaCount} do _nameM setMarkerSize [1500,1500]; _nameM setMarkerBrush "Border"; _nameM setMarkerColor "ColorOPFOR"; - //_nameM setMarkerAlpha 0; + _nameM setMarkerAlpha 0; [tankBlacklist,count tankBlacklist,_nameM] call Zen_ArrayInsert; - + _tank = _tank + 1; _count = _count + 1; -}; \ No newline at end of file +}; diff --git a/Functions/Init/initBases.sqf b/Functions/Init/initBases.sqf index 812901b..e6fe2a0 100644 --- a/Functions/Init/initBases.sqf +++ b/Functions/Init/initBases.sqf @@ -1,3 +1,21 @@ ///////////////////////// //Script made by Jochem// ///////////////////////// + +_s = 0; +while {_s < baseCount} do { + _compS = [_comp1,_comp2,_comp3,_comp4,_comp5,_comp6,_comp7,_comp8] call BIS_fnc_selectRandom; + + //Get position + //_location = [0,0,[airfieldMarkers + blackMarkers,["mrk_area"],[]],1,0,0,0,0,0,[1,10,50],[1,0,60]] call Zen_FindGroundPosition; + _location = position player; + + //Spawn Composition + [_compS,_location] call JOC_spawnComposition; + + //Create marker + _marker = createMarker [_name, _location]; + _name setMarkerType "o_hq"; + + _s = _s + 1; +}; diff --git a/Functions/Init/initDepot.sqf b/Functions/Init/initDepot.sqf new file mode 100644 index 0000000..f8ef0e7 --- /dev/null +++ b/Functions/Init/initDepot.sqf @@ -0,0 +1,13 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +[[[],{ + logiSpawner addAction["Spawn spare wheel",{["ACE_Wheel"]call JOC_depotSpawnObject}]; + logiSpawner addAction["Spawn spare track",{["ACE_Track"]call JOC_depotSpawnObject}]; + logiSpawner addAction["Spawn cargo net",{["B_CargoNet_01_ammo_F"]call JOC_depotSpawnObject}]; + logiSpawner addAction["Spawn medical crate",{["B_Slingload_01_Medevac_F"]call JOC_depotSpawnObject}]; + logiSpawner addAction["Spawn ammo crate",{["B_Slingload_01_Ammo_F"]call JOC_depotSpawnObject}]; + logiSpawner addAction["Spawn fuel crate",{["B_Slingload_01_Fuel_F"]call JOC_depotSpawnObject}]; + logiSpawner addAction["Spawn repair crate",{["B_Slingload_01_Repair_F"]call JOC_depotSpawnObject}]; + logiSpawner addAction["Spawn building crate",{["B_Slingload_01_Cargo_F"]call JOC_depotSpawnObject}]; +}],"BIS_fnc_spawn",true,true] call BIS_fnc_MP; diff --git a/Functions/Init/initFOB.sqf b/Functions/Init/initFOB.sqf deleted file mode 100644 index a59f796..0000000 --- a/Functions/Init/initFOB.sqf +++ /dev/null @@ -1,9 +0,0 @@ -///////////////////////// -//Script made by Jochem// -///////////////////////// - - - -[[[],{_action = cmd_laptop addAction["Task overview",{ - -}];}],"BIS_fnc_spawn",true,true] call BIS_fnc_MP; \ No newline at end of file diff --git a/Functions/Init/initPlayerBase.sqf b/Functions/Init/initPlayerBase.sqf new file mode 100644 index 0000000..962ec48 --- /dev/null +++ b/Functions/Init/initPlayerBase.sqf @@ -0,0 +1,8 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +[{ + _action = cmd_laptop addAction["Task overview",{ + []spawn JOC_setMainTask; + }]; +},"BIS_fnc_spawn",true,true] call BIS_fnc_MP; diff --git a/Functions/Logistics/Depot/spawnObject.sqf b/Functions/Logistics/Depot/spawnObject.sqf new file mode 100644 index 0000000..08c0a1b --- /dev/null +++ b/Functions/Logistics/Depot/spawnObject.sqf @@ -0,0 +1,22 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +_type = _this select 0; +_unable = true; + +//Get spawn obj +{ + _veh = (nearestObjects [(getPos _x),["All"],3] - [_x]); + if((count _veh) >= 1)then{ + }else{ + _obj = _type createVehicle [99995,99995,0]; + _obj setDir (getDir _x); + _obj setPos (getPos _x); + _unable = false; + }; + if((count _veh) == 0)exitWith{}; +} forEach [logiSpawn_0,logiSpawn_1,logiSpawn_2,logiSpawn_3,logiSpawn_4,logiSpawn_5]; + +if(_unable)then{ + hint "No empty pads available"; +}; diff --git a/Functions/Logistics/Fob/fobDeploy.sqf b/Functions/Logistics/Fob/fobDeploy.sqf index 4e23547..b9170f7 100644 --- a/Functions/Logistics/Fob/fobDeploy.sqf +++ b/Functions/Logistics/Fob/fobDeploy.sqf @@ -1,9 +1,42 @@ ///////////////////////// //Script made by Jochem// ///////////////////////// -private ["_truck"]; +private ["_truck","_unable"]; _truck = _this select 0; +_unable = false; + +//Composition +_objArray = []; +_radius = 12; +_isFlat = (getPosASL _truck)isFlatEmpty [ + _radius, //--- Minimal distance from another object + 0, //--- If 0, just check position. If >0, select new one + 0.4, //--- Max gradient + _radius max 5, //--- Gradient area + 0, //--- 0 for restricted water, 2 for required water, + false, //--- Has to have shore nearby! + objNull //--- Ignored object +]; + +if(!(count _isFlat isEqualTo 0))then{ + { + _type = _x select 0; + _offset = _x select 1; + _newdir = _x select 2; + + _obj = createVehicle [_type, [0,0,0], [], 0, "CAN_COLLIDE"]; + _obj allowDamage false; + [_truck,_obj,_offset,_newdir, true, true] call BIS_fnc_relPosObject; + _objArray pushBack _obj; + }forEach fobComposition; +}else{ + hint "Terrain not suitable"; + _unable = true; +}; + +if(_unable)exitWith{}; + [[[_truck],{removeAllActions (_this select 0);(_this select 0) setVehicleLock "LOCKED";}],"BIS_fnc_spawn",true,true] call BIS_fnc_MP; { @@ -16,7 +49,7 @@ _marker setMarkerType "b_support"; _marker setMarkerText "FOB"; [["RespawnAdded",["DEPLOYMENT POINT",format ["HQ deployed at grid %1", mapGridPosition (getPos _truck)],"\A3\ui_f\data\map\markers\nato\b_hq.paa"]],"BIS_fnc_showNotification",west] call BIS_fnc_MP; //Notification -[[[_truck,_name],{_action = (_this select 0) addAction["Dismantle FOB",{[(_this select 0),(_this select 1)] spawn JOC_fobUndeploy;},"",1,true,true,"","(side _this == west) && (speed _target < 1)"];}],"BIS_fnc_spawn",true,true] call BIS_fnc_MP; +[[[_truck,_objArray,_name],{_action = (_this select 0) addAction["Dismantle FOB",{[(_this select 0),(_this select 1)] spawn JOC_fobUndeploy; deleteMarker (_this select 2);},"",1,true,true,"","(side _this == west) && (speed _target < 1)"];}],"BIS_fnc_spawn",true,true] call BIS_fnc_MP; [[[_truck],{_action = (_this select 0) addAction["Relocate",{ _fobArray = []call JOC_fobGetLocations; [(findDisplay 46), getpos (_this select 1), _fobArray, [], [], [], 1, false] call BIS_fnc_strategicMapOpen; diff --git a/Functions/Logistics/Fob/fobSpawn.sqf b/Functions/Logistics/Fob/fobSpawn.sqf index 3ca79b3..171a225 100644 --- a/Functions/Logistics/Fob/fobSpawn.sqf +++ b/Functions/Logistics/Fob/fobSpawn.sqf @@ -5,14 +5,15 @@ if(!isServer)exitWith{}; if(isNil{fobCount})then{ fobCount = 0; + fobComposition = [["Land_PressureWasher_01_F",[1.98267,2.32764,0.0905981],0.114227],["Land_Portable_generator_F",[2.17505,1.29932,0.0897746],0.102936],["Land_PaperBox_open_full_F",[5.78296,2.11523,0.0905986],243.18],["CamoNet_BLUFOR_big_Curator_F",[3.6,-1.6,0.0905986],0.115265],["Land_PaperBox_open_full_F",[6.3186,3.83057,0.0905986],205.563],["B_CargoNet_01_ammo_F",[5.59106,-0.307617,0.0905986],196.608],["Land_FieldToilet_F",[5.41748,-3.00879,0.0906048],88.8292],["Land_Cargo20_military_green_F",[8.05762,-0.856445,0.0905976],272.526]]; [{flagPole addAction ["Relocate", { _fobArray = []call JOC_fobGetLocations; - [(findDisplay 46), getpos (_this select 1), _fobArray, [], [], [], 1, false] call BIS_fnc_strategicMapOpen; + [(findDisplay 46), getpos (_this select 1), _fobArray, [], [], [], 1, false, 2, true, "Select a location", false] call BIS_fnc_strategicMapOpen; }];},"BIS_fnc_spawn",true,true] call BIS_fnc_MP; }; if(fobCount < ((count bluTowns) + 1))then{ hint "lol"; - _veh = nearestObjects [(getPos fobSpawn),["AllVehicles"],5]; + _veh = (nearestObjects [(getPos fobSpawn),["All"],3] - [fobSpawn]); if((count _veh) >= 1 or (fobCount >= fobLimit))then{ hint "Pad not clear or max vehicles reached"; }else{ @@ -22,8 +23,12 @@ if(fobCount < ((count bluTowns) + 1))then{ _truck setDamage 0; zeusMod addCuratorEditableObjects [[_truck],false]; fobTrucks pushBack _truck; + [[[_truck],{(_this select 0) setVehicleLock "LOCKED";}],"BIS_fnc_spawn",true,true] call BIS_fnc_MP; + fobCount = fobCount + 1; hint "FOB will be ready in 5 minutes"; - sleep 300; + sleep 3; + hint "Fob is ready"; + [[[_truck],{(_this select 0) setVehicleLock "UNLOCKED";}],"BIS_fnc_spawn",true,true] call BIS_fnc_MP; [_truck] call JOC_fobInit; [_truck]spawn JOC_fobManager; }; diff --git a/Functions/Logistics/Fob/fobUndeploy.sqf b/Functions/Logistics/Fob/fobUndeploy.sqf index 7d9d236..475139a 100644 --- a/Functions/Logistics/Fob/fobUndeploy.sqf +++ b/Functions/Logistics/Fob/fobUndeploy.sqf @@ -4,8 +4,11 @@ private ["_truck"]; _truck = _this select 0; +_objArray = _this select 1; -deleteMarker (_this select 1); +{ + deleteVehicle _x; +}forEach _objArray; [[[_truck],{(_this select 0) setVehicleLock "UNLOCKED";removeAllActions (_this select 0);}],"BIS_fnc_spawn",true,true] call BIS_fnc_MP; [["RespawnAdded",["DEPLOYMENT POINT",format ["HQ dismantled at grid %1", mapGridPosition (getPos _truck)],"\A3\ui_f\data\map\markers\nato\b_hq.paa"]],"BIS_fnc_showNotification",west] call BIS_fnc_MP; //Notification diff --git a/Functions/Logistics/Fob/getLocations.sqf b/Functions/Logistics/Fob/getLocations.sqf index 4f78959..08a036a 100644 --- a/Functions/Logistics/Fob/getLocations.sqf +++ b/Functions/Logistics/Fob/getLocations.sqf @@ -4,18 +4,21 @@ _array = []; { - _arrayN = [ - (getPos _x), - {player setPos ([(getPos (_this select 0)),3,((direction (_this select 0)) + 90)] call Zen_ExtendPosition;}, - "FOB", - "Relocate here", - "", - "", - 1, - [] - ]; + _pos = [(getPos _x),3,((direction _x) + 90)] call Zen_ExtendPosition; + if(locked _x != 0 and locked _x != 1)then{ + _arrayN = [ + _pos, + {player setPos (_this select 0);}, + "FOB", + "Relocate here", + "", + "", + 1, + [] + ]; - _array = _array + [_arrayN]; + _array = _array + [_arrayN]; + }; }forEach fobTrucks; _array = _array + [[ diff --git a/Functions/Logistics/fn_logistics_compile.sqf b/Functions/Logistics/fn_logistics_compile.sqf index 42a05f0..d883b09 100644 --- a/Functions/Logistics/fn_logistics_compile.sqf +++ b/Functions/Logistics/fn_logistics_compile.sqf @@ -14,3 +14,6 @@ JOC_fobUndeploy = compileFinal preprocessFileLineNumbers "Functions\Logistics\Fo JOC_fobInit = compileFinal preprocessFileLineNumbers "Functions\Logistics\Fob\fobInit.sqf"; JOC_fobManager = compileFinal preprocessFileLineNumbers "Functions\Logistics\Fob\fobManager.sqf"; JOC_fobGetLocations = compileFinal preprocessFileLineNumbers "Functions\Logistics\Fob\getLocations.sqf"; + +//Depot +JOC_depotSpawnObject = compileFinal preprocessFileLineNumbers "Functions\Logistics\Depot\spawnObject.sqf"; diff --git a/Functions/Logistics/spawnComposition.sqf b/Functions/Logistics/spawnComposition.sqf new file mode 100644 index 0000000..5d17cec --- /dev/null +++ b/Functions/Logistics/spawnComposition.sqf @@ -0,0 +1,26 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +_compArray = _this select 0; +_pos = _this select 1; + +_baseObj = "Land_HelipadEmpty_F" createVehicle _pos; +_objArray = []; + +{ + _type = _x select 0; + _offset = _x select 1; + _newdir = _x select 2; + + _obj = createVehicle [_type, [0,0,0], [], 0, "CAN_COLLIDE"]; + _obj allowDamage false; + [_baseObj,_obj,_offset,_newdir, true, true] call BIS_fnc_relPosObject; + _obj allowDamage true; + _objArray pushBack _obj; +}forEach _compArray; + +zeusMod addCuratorEditableObjects [_objArray,false]; + +deleteVehicle _obj; + +_objArray diff --git a/Functions/Player/click.sqf b/Functions/Player/click.sqf index bdbad18..64a179b 100644 --- a/Functions/Player/click.sqf +++ b/Functions/Player/click.sqf @@ -8,23 +8,22 @@ onMapSingleClick{ _groupIdG = ""; _group = 0; _position = _pos; - _markers = allMapMarkers; + _markers = (allMapMarkers - opTownMarkers); { _distance = ((getMarkerPos _x) distance _position); if((_distance < 10) and (_distance < _prevDis))then{ - hint _x; _prevDis = _distance; _groupIdG = _x; }; }forEach _markers; - testVv = _groupIdG; + if(!(_groupIdG == ""))then{ { if((groupId _x) == _groupIdG)then{ _group = _x; }; }forEach allGroups; - testG = _group; + _unitsG = (units _group); _unitText = ""; { diff --git a/Functions/Tasks/getMainTasks.sqf b/Functions/Tasks/getMainTasks.sqf new file mode 100644 index 0000000..878b735 --- /dev/null +++ b/Functions/Tasks/getMainTasks.sqf @@ -0,0 +1,40 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +_array = []; + +//Towns +{ + _arrayN = [ + (getPos _x), + {"mrk_task_text" setMarkerText format["Current objective: clear out %1",_this select 2];}, + text _x, + format["Clear out %1",(text _x)], + "", + "", + 1, + [] + ]; + + _array = _array + [_arrayN]; +}forEach opTowns; + +//Airfields +{ + if(!(airfieldOccup select _forEachIndex))then{ + _arrayN = [ + (getMarkerPos _x), + {"mrk_task_text" setMarkerText format["Current objective: clear out %1",_this select 2];}, + "Airfield", + "Clear out airfield", + "", + "", + 1, + [] + ]; + _array = _array + [_arrayN]; + }; + +} forEach airfieldMarkers; + +_array diff --git a/Functions/Tasks/setMainTask.sqf b/Functions/Tasks/setMainTask.sqf new file mode 100644 index 0000000..9814574 --- /dev/null +++ b/Functions/Tasks/setMainTask.sqf @@ -0,0 +1,5 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +_tasks = []call JOC_getMainTasks; +[(findDisplay 46), (getMarkerPos "mrk_area"), _tasks, [], [], [], 1, false, 2, true, "Assign a task", false] call BIS_fnc_strategicMapOpen; diff --git a/Functions/Vehicle/Garage/main.sqf b/Functions/Vehicle/Garage/main.sqf index 0583086..b1df7f0 100644 --- a/Functions/Vehicle/Garage/main.sqf +++ b/Functions/Vehicle/Garage/main.sqf @@ -9,7 +9,7 @@ _medA = ["RHS_UH60M_MEV","rhsusf_m113_usarmy_medical","B_Truck_01_medical_F"]; garage_spawn_0 setVariable["count",0]; garage_spawner_0 addAction ["Request vehicle",{ - _veh = nearestObjects [(getPos garage_spawn_0),["AllVehicles"],5]; + _veh = (nearestObjects [(getPos garage_spawn_0),["All"],3] - [garage_spawn_0]); if(((count _veh) >= 1) or ((garage_spawn_0 getVariable "count") >= 1))then{ hint "Pad not clear or max vehicles reached"; }else{ @@ -23,7 +23,7 @@ garage_spawner_0 addAction ["Request vehicle",{ garage_spawn_1 setVariable["count",0]; garage_spawner_1 addAction ["Request vehicle",{ - _veh = nearestObjects [(getPos garage_spawn_1),["AllVehicles"],5]; + _veh = (nearestObjects [(getPos garage_spawn_1),["All"],3] - [garage_spawn_1]); if(((count _veh) >= 1) or ((garage_spawn_1 getVariable "count") >= 1))then{ hint "Pad not clear or max vehicles reached"; }else{ @@ -37,7 +37,7 @@ garage_spawner_1 addAction ["Request vehicle",{ garage_spawn_2 setVariable["count",0]; garage_spawner_2 addAction ["Request vehicle",{ - _veh = nearestObjects [(getPos garage_spawn_2),["AllVehicles"],5]; + _veh = (nearestObjects [(getPos garage_spawn_2),["All"],3] - [garage_spawn_2]); if(((count _veh) >= 1) or ((garage_spawn_2 getVariable "count") >= 1))then{ hint "Pad not clear or max vehicles reached"; }else{ @@ -51,7 +51,7 @@ garage_spawner_2 addAction ["Request vehicle",{ garage_spawn_3 setVariable["count",0]; garage_spawner_3 addAction ["Request vehicle",{ - _veh = nearestObjects [(getPos garage_spawn_3),["AllVehicles"],5]; + _veh = (nearestObjects [(getPos garage_spawn_3),["All"],3] - [garage_spawn_3]); if(((count _veh) >= 1) or ((garage_spawn_3 getVariable "count") >= 1))then{ hint "Pad not clear or max vehicles reached"; }else{ @@ -65,7 +65,7 @@ garage_spawner_3 addAction ["Request vehicle",{ garage_spawn_4 setVariable["count",0]; garage_spawner_4 addAction ["Request vehicle",{ - _veh = nearestObjects [(getPos garage_spawn_4),["AllVehicles"],5]; + _veh = (nearestObjects [(getPos garage_spawn_4),["All"],3] - [garage_spawn_4]); if(((count _veh) >= 1) or ((garage_spawn_4 getVariable "count") >= 1))then{ hint "Pad not clear or max vehicles reached"; }else{ @@ -79,7 +79,7 @@ garage_spawner_4 addAction ["Request vehicle",{ garage_spawn_5 setVariable["count",0]; garage_spawner_5 addAction ["Request vehicle",{ - _veh = nearestObjects [(getPos garage_spawn_5),["AllVehicles"],5]; + _veh = (nearestObjects [(getPos garage_spawn_5),["All"],3] - [garage_spawn_5]); if(((count _veh) >= 1) or ((garage_spawn_5 getVariable "count") >= 12))then{ hint "Pad not clear or max vehicles reached"; }else{ @@ -93,7 +93,7 @@ garage_spawner_5 addAction ["Request vehicle",{ garage_spawn_6 setVariable["count",0]; garage_spawner_6 addAction ["Request vehicle",{ - _veh = nearestObjects [(getPos garage_spawn_6),["AllVehicles"],5]; + _veh = (nearestObjects [(getPos garage_spawn_6),["All"],3] - [garage_spawn_6]); if(((count _veh) >= 1) or ((garage_spawn_6 getVariable "count") >= 4))then{ hint "Pad not clear or max vehicles reached"; }else{ @@ -107,7 +107,7 @@ garage_spawner_6 addAction ["Request vehicle",{ garage_spawn_med setVariable["count",0]; garage_spawner_med addAction ["Request vehicle",{ - _veh = nearestObjects [(getPos garage_spawn_med),["AllVehicles"],5]; + _veh = (nearestObjects [(getPos garage_spawn_med),["All"],3] - [garage_spawn_med]); if(((count _veh) >= 1) or ((garage_spawn_med getVariable "count") >= 4))then{ hint "Pad not clear or max vehicles reached"; }else{ diff --git a/Functions/fn_compile.sqf b/Functions/fn_compile.sqf index 81676c2..ec8a00f 100644 --- a/Functions/fn_compile.sqf +++ b/Functions/fn_compile.sqf @@ -36,6 +36,9 @@ JOC_initMines = compileFinal preprocessFileLineNumbers "Functions\Init\initMines JOC_initArty = compileFinal preprocessFileLineNumbers "Functions\Init\initArty.sqf"; JOC_initRadio = compileFinal preprocessFileLineNumbers "Functions\Init\initRadio.sqf"; JOC_initPatrols = compileFinal preprocessFileLineNumbers "Functions\Init\initPatrols.sqf"; +JOC_initDepot = compileFinal preprocessFileLineNumbers "Functions\Init\initDepot.sqf"; +JOC_initPlayerBase = compileFinal preprocessFileLineNumbers "Functions\Init\initPlayerBase.sqf"; +JOC_initBases = compileFinal preprocessFileLineNumbers "Functions\Init\initBases.sqf"; //Loadouts JOC_arsenal = compileFinal preprocessFileLineNumbers "Functions\Loadouts\arsenal.sqf"; @@ -44,6 +47,7 @@ JOC_loadoutMaster = compileFinal preprocessFileLineNumbers "Functions\Loadouts\m //Logistics #include "Logistics\fn_logistics_compile.sqf"; JOC_crateInit = compileFinal preprocessFileLineNumbers "Functions\Logistics\crateInit.sqf"; +JOC_spawnComposition = compileFinal preprocessFileLineNumbers "Functions\Logistics\spawnComposition.sqf"; //Performance JOC_perfLoop = compileFinal preprocessFileLineNumbers "Functions\Performance\loop.sqf"; @@ -63,6 +67,8 @@ JOC_taskCrash = compileFinal preprocessFileLineNumbers "Functions\Tasks\crashedC JOC_taskKill = compileFinal preprocessFileLineNumbers "Functions\Tasks\kill.sqf"; JOC_taskRescue = compileFinal preprocessFileLineNumbers "Functions\Tasks\rescue.sqf"; JOC_taskUav = compileFinal preprocessFileLineNumbers "Functions\Tasks\uav.sqf"; +JOC_getMainTasks = compileFinal preprocessFileLineNumbers "Functions\Tasks\getMainTasks.sqf"; +JOC_setMainTask = compileFinal preprocessFileLineNumbers "Functions\Tasks\setMainTask.sqf"; //Towns JOC_occupy = compileFinal preprocessFileLineNumbers "Functions\Towns\occupy.sqf"; diff --git a/mission.sqm b/mission.sqm index b8650a7..59bedc4 100644 --- a/mission.sqm +++ b/mission.sqm @@ -26,8 +26,6 @@ class Mission "A3_Structures_F_Mil_Flags", "A3_Structures_F_Mil_Helipads", "aia_misc_e_config", - "A3_Supplies_F_Heli_Slingload", - "A3_Supplies_F_Heli_CargoNets", "A3_Structures_F_Training", "A3_Structures_F_System", "A3_Structures_F_Bootcamp_Training", @@ -41,14 +39,16 @@ class Mission "A3_Structures_F_Civ_Camping", "A3_Structures_F_Heli_Furniture", "A3_Structures_F_Items_Electronics", - "A3_Characters_F_OPFOR" + "A3_Characters_F_OPFOR", + "ace_cargo", + "ace_repair" }; addOnsAuto[]= { - "ace_interaction", + "ace_captives", "ace_advanced_ballistics", "ace_medical", - "ace_hearing", + "ace_cargo", "ace_explosives", "ace_microdagr", "3DEN", @@ -58,7 +58,6 @@ class Mission "ace_zeus", "ace_weather", "ace_mk6mortar", - "ace_captives", "ace_map", "A3_Characters_F_BLUFOR", "a3_characters_f", @@ -67,13 +66,14 @@ class Mission "ace_sitting", "ace_nametags", "A3_Characters_F_OPFOR", + "ace_repair", + "ace_hearing", + "ace_interaction", "A3_Weapons_F_Ammoboxes", "A3_Structures_F_Mil_Fortification", "A3_Structures_F_Mil_Flags", "A3_Structures_F_Mil_Helipads", "aia_misc_e_config", - "A3_Supplies_F_Heli_Slingload", - "A3_Supplies_F_Heli_CargoNets", "A3_Structures_F_Training", "A3_Structures_F_System", "A3_Structures_F_Bootcamp_Training", @@ -106,7 +106,7 @@ class Mission }; class Groups { - items=38; + items=41; class Item0 { side="LOGIC"; @@ -115,20 +115,32 @@ class Mission items=1; class Item0 { - position[]={530.5274,13.933278,1844.9561}; + position[]={530.49713,13.155955,1837.6099}; class args { - items=1; + items=3; class Item0 { - value="0"; - parentCls="ACE_ModuleInteraction"; - typeName="EnableTeamManagement"; + value="1"; + parentCls="ace_captives_moduleSettings"; + typeName="allowHandcuffOwnSide"; + }; + class Item1 + { + value="1"; + parentCls="ace_captives_moduleSettings"; + typeName="allowSurrender"; + }; + class Item2 + { + value="1"; + parentCls="ace_captives_moduleSettings"; + typeName="requireSurrender"; }; }; id=0; side="LOGIC"; - vehicle="ACE_ModuleInteraction"; + vehicle="ace_captives_moduleSettings"; leader=1; lock="UNLOCKED"; skill=0.60000002; @@ -231,7 +243,7 @@ class Mission items=13; class Item0 { - value="0"; + value="1"; parentCls="ACE_moduleAdvancedMedicalSettings"; typeName="enableFor"; }; @@ -425,20 +437,20 @@ class Mission items=1; class Item0 { - position[]={530.88092,14.591525,1853.0674}; + position[]={523.80463,17.107088,1853.2599}; class args { items=1; class Item0 { value="1"; - parentCls="ACE_ModuleHearing"; - typeName="EnableCombatDeafness"; + parentCls="ACE_moduleCargoSettings"; + typeName="enable"; }; }; id=4; side="LOGIC"; - vehicle="ACE_ModuleHearing"; + vehicle="ACE_moduleCargoSettings"; leader=1; lock="UNLOCKED"; skill=0.60000002; @@ -809,40 +821,6 @@ class Mission }; }; class Item13 - { - side="LOGIC"; - class Vehicles - { - items=1; - class Item0 - { - position[]={530.36139,13.218223,1837.7285}; - class args - { - items=2; - class Item0 - { - value="1"; - parentCls="ace_captives_moduleSettings"; - typeName="allowHandcuffOwnSide"; - }; - class Item1 - { - value="1"; - parentCls="ace_captives_moduleSettings"; - typeName="allowSurrender"; - }; - }; - id=13; - side="LOGIC"; - vehicle="ace_captives_moduleSettings"; - leader=1; - lock="UNLOCKED"; - skill=0.60000002; - }; - }; - }; - class Item14 { side="LOGIC"; class Vehicles @@ -873,7 +851,7 @@ class Mission typeName="HideAiGroups"; }; }; - id=14; + id=13; side="LOGIC"; vehicle="ACE_ModuleBlueForceTracking"; leader=1; @@ -882,7 +860,7 @@ class Mission }; }; }; - class Item15 + class Item14 { side="WEST"; class Vehicles @@ -893,7 +871,7 @@ class Mission position[]={15339.308,1.1162053,7.9836426}; azimut=-363.75699; offsetY=17; - id=15; + id=14; side="WEST"; vehicle="B_officer_F"; player="PLAY CDG"; @@ -909,7 +887,7 @@ class Mission position[]={15340.464,1.2813944,7.916687}; azimut=-363.75699; offsetY=17; - id=16; + id=15; side="WEST"; vehicle="B_officer_F"; player="PLAY CDG"; @@ -921,7 +899,7 @@ class Mission }; }; }; - class Item16 + class Item15 { side="WEST"; class Vehicles @@ -932,7 +910,7 @@ class Mission position[]={15344.521,1.3125309,12.387634}; azimut=-363.75699; offsetY=17; - id=17; + id=16; side="WEST"; vehicle="B_Soldier_SL_F"; player="PLAYER COMMANDER"; @@ -950,7 +928,7 @@ class Mission position[]={15345.194,1.3134352,12.363953}; azimut=-363.75699; offsetY=17; - id=18; + id=17; side="WEST"; vehicle="B_medic_F"; player="PLAY CDG"; @@ -962,7 +940,7 @@ class Mission }; }; }; - class Item17 + class Item16 { side="WEST"; class Vehicles @@ -973,7 +951,7 @@ class Mission position[]={15344.538,1.2943902,10.207214}; azimut=-363.75699; offsetY=17; - id=19; + id=18; side="WEST"; vehicle="B_Soldier_TL_F"; player="PLAY CDG"; @@ -987,7 +965,7 @@ class Mission position[]={15345.178,1.2891037,10.199646}; azimut=-363.75699; offsetY=17; - id=20; + id=19; side="WEST"; vehicle="TF47_B_soldier_AT4HEDP"; player="PLAY CDG"; @@ -1003,7 +981,7 @@ class Mission position[]={15345.877,1.2813056,10.2099}; azimut=-363.75699; offsetY=17; - id=21; + id=20; side="WEST"; vehicle="B_soldier_AR_F"; player="PLAY CDG"; @@ -1017,7 +995,7 @@ class Mission position[]={15346.555,1.2710848,10.188049}; azimut=-363.75699; offsetY=17; - id=22; + id=21; side="WEST"; vehicle="B_Soldier_GL_F"; player="PLAY CDG"; @@ -1031,7 +1009,7 @@ class Mission position[]={15347.235,1.2598413,10.210022}; azimut=-363.75699; offsetY=17; - id=23; + id=22; side="WEST"; vehicle="B_Soldier_F"; player="PLAY CDG"; @@ -1042,7 +1020,7 @@ class Mission }; }; }; - class Item18 + class Item17 { side="WEST"; class Vehicles @@ -1053,7 +1031,7 @@ class Mission position[]={15344.537,1.3049693,11.229797}; azimut=-363.75699; offsetY=17; - id=24; + id=23; side="WEST"; vehicle="B_Soldier_TL_F"; player="PLAY CDG"; @@ -1069,7 +1047,7 @@ class Mission position[]={15345.219,1.3023757,11.225281}; azimut=-363.75699; offsetY=17; - id=25; + id=24; side="WEST"; vehicle="B_soldier_M_F"; player="PLAY CDG"; @@ -1084,7 +1062,7 @@ class Mission position[]={15345.898,1.2974403,11.227234}; azimut=-363.75699; offsetY=17; - id=26; + id=25; side="WEST"; vehicle="B_Soldier_F"; player="PLAY CDG"; @@ -1098,7 +1076,7 @@ class Mission position[]={15346.561,1.2911896,11.273865}; azimut=-363.75699; offsetY=17; - id=27; + id=26; side="WEST"; vehicle="B_engineer_F"; player="PLAY CDG"; @@ -1112,7 +1090,7 @@ class Mission position[]={15347.209,1.2827101,11.28656}; azimut=-363.75699; offsetY=17; - id=28; + id=27; side="WEST"; vehicle="B_soldier_AR_F"; player="PLAY CDG"; @@ -1123,7 +1101,7 @@ class Mission }; }; }; - class Item19 + class Item18 { side="WEST"; class Vehicles @@ -1134,7 +1112,7 @@ class Mission position[]={15344.566,1.2741517,8.8225708}; azimut=-363.75699; offsetY=17; - id=29; + id=28; side="WEST"; vehicle="B_Soldier_SL_F"; player="PLAY CDG"; @@ -1152,7 +1130,7 @@ class Mission position[]={15345.24,1.264397,8.7990112}; azimut=-363.75699; offsetY=17; - id=30; + id=29; side="WEST"; vehicle="B_medic_F"; player="PLAY CDG"; @@ -1164,7 +1142,7 @@ class Mission }; }; }; - class Item20 + class Item19 { side="WEST"; class Vehicles @@ -1175,7 +1153,7 @@ class Mission position[]={15344.584,1.231231,6.6420288}; azimut=-363.75699; offsetY=17; - id=31; + id=30; side="WEST"; vehicle="B_Soldier_TL_F"; player="PLAY CDG"; @@ -1189,7 +1167,7 @@ class Mission position[]={15345.224,1.217796,6.6344604}; azimut=-363.75699; offsetY=17; - id=32; + id=31; side="WEST"; vehicle="TF47_B_soldier_AT4HEDP"; player="PLAY CDG"; @@ -1205,7 +1183,7 @@ class Mission position[]={15345.923,1.2024056,6.6448364}; azimut=-363.75699; offsetY=17; - id=33; + id=32; side="WEST"; vehicle="B_soldier_AR_F"; player="PLAY CDG"; @@ -1219,7 +1197,7 @@ class Mission position[]={15346.601,1.1857822,6.6229858}; azimut=-363.75699; offsetY=17; - id=34; + id=33; side="WEST"; vehicle="B_Soldier_GL_F"; player="PLAY CDG"; @@ -1233,7 +1211,7 @@ class Mission position[]={15347.281,1.1696439,6.6449585}; azimut=-363.75699; offsetY=17; - id=35; + id=34; side="WEST"; vehicle="B_Soldier_F"; player="PLAY CDG"; @@ -1244,7 +1222,7 @@ class Mission }; }; }; - class Item21 + class Item20 { side="WEST"; class Vehicles @@ -1255,7 +1233,7 @@ class Mission position[]={15344.583,1.2527674,7.6647339}; azimut=-363.75699; offsetY=17; - id=36; + id=35; side="WEST"; vehicle="B_Soldier_TL_F"; player="PLAY CDG"; @@ -1271,7 +1249,7 @@ class Mission position[]={15345.265,1.2405319,7.6600952}; azimut=-363.75699; offsetY=17; - id=37; + id=36; side="WEST"; vehicle="B_soldier_M_F"; player="PLAY CDG"; @@ -1286,7 +1264,7 @@ class Mission position[]={15345.943,1.2269292,7.6620483}; azimut=-363.75699; offsetY=17; - id=38; + id=37; side="WEST"; vehicle="B_Soldier_F"; player="PLAY CDG"; @@ -1300,7 +1278,7 @@ class Mission position[]={15346.606,1.2135564,7.7088013}; azimut=-363.75699; offsetY=17; - id=39; + id=38; side="WEST"; vehicle="B_engineer_F"; player="PLAY CDG"; @@ -1314,7 +1292,7 @@ class Mission position[]={15347.255,1.1987934,7.7214966}; azimut=-363.75699; offsetY=17; - id=40; + id=39; side="WEST"; vehicle="B_soldier_AR_F"; player="PLAY CDG"; @@ -1325,7 +1303,7 @@ class Mission }; }; }; - class Item22 + class Item21 { side="WEST"; class Vehicles @@ -1336,7 +1314,7 @@ class Mission position[]={15344.383,1.1971843,5.0066528}; azimut=-363.75699; offsetY=17; - id=41; + id=40; side="WEST"; vehicle="B_Soldier_SL_F"; player="PLAY CDG"; @@ -1354,7 +1332,7 @@ class Mission position[]={15345.057,1.1806419,4.9830933}; azimut=-363.75699; offsetY=17; - id=42; + id=41; side="WEST"; vehicle="B_medic_F"; player="PLAY CDG"; @@ -1366,7 +1344,7 @@ class Mission }; }; }; - class Item23 + class Item22 { side="WEST"; class Vehicles @@ -1377,7 +1355,7 @@ class Mission position[]={15344.4,1.1409291,2.8261108}; azimut=-363.75699; offsetY=17; - id=43; + id=42; side="WEST"; vehicle="B_Soldier_TL_F"; player="PLAY CDG"; @@ -1391,7 +1369,7 @@ class Mission position[]={15345.04,1.1243895,2.8185425}; azimut=-363.75699; offsetY=17; - id=44; + id=43; side="WEST"; vehicle="TF47_B_soldier_AT4HEDP"; player="PLAY CDG"; @@ -1407,7 +1385,7 @@ class Mission position[]={15345.739,1.1071227,2.8289185}; azimut=-363.75699; offsetY=17; - id=45; + id=44; side="WEST"; vehicle="B_soldier_AR_F"; player="PLAY CDG"; @@ -1421,7 +1399,7 @@ class Mission position[]={15346.417,1.0900354,2.8070679}; azimut=-363.75699; offsetY=17; - id=46; + id=45; side="WEST"; vehicle="B_Soldier_GL_F"; player="PLAY CDG"; @@ -1435,7 +1413,7 @@ class Mission position[]={15347.098,1.074914,2.8290405}; azimut=-363.75699; offsetY=17; - id=47; + id=46; side="WEST"; vehicle="B_Soldier_F"; player="PLAY CDG"; @@ -1446,7 +1424,7 @@ class Mission }; }; }; - class Item24 + class Item23 { side="WEST"; class Vehicles @@ -1457,7 +1435,7 @@ class Mission position[]={15344.399,1.1675777,3.8488159}; azimut=-363.75699; offsetY=17; - id=48; + id=47; side="WEST"; vehicle="B_Soldier_TL_F"; player="PLAY CDG"; @@ -1473,7 +1451,7 @@ class Mission position[]={15345.081,1.1503767,3.8441772}; azimut=-363.75699; offsetY=17; - id=49; + id=48; side="WEST"; vehicle="B_soldier_M_F"; player="PLAY CDG"; @@ -1488,7 +1466,7 @@ class Mission position[]={15345.76,1.1332384,3.8461304}; azimut=-363.75699; offsetY=17; - id=50; + id=49; side="WEST"; vehicle="B_Soldier_F"; player="PLAY CDG"; @@ -1502,7 +1480,7 @@ class Mission position[]={15346.423,1.117807,3.8928833}; azimut=-363.75699; offsetY=17; - id=51; + id=50; side="WEST"; vehicle="B_engineer_F"; player="PLAY CDG"; @@ -1516,7 +1494,7 @@ class Mission position[]={15347.071,1.1022829,3.9055786}; azimut=-363.75699; offsetY=17; - id=52; + id=51; side="WEST"; vehicle="B_soldier_AR_F"; player="PLAY CDG"; @@ -1527,7 +1505,7 @@ class Mission }; }; }; - class Item25 + class Item24 { side="WEST"; class Vehicles @@ -1537,7 +1515,7 @@ class Mission { position[]={15352.988,1.1823076,12.230652}; offsetY=17; - id=53; + id=52; side="WEST"; vehicle="B_recon_TL_F"; player="PLAY CDG"; @@ -1552,7 +1530,7 @@ class Mission { position[]={15354.58,1.1460512,12.230408}; offsetY=17; - id=54; + id=53; side="WEST"; vehicle="B_recon_M_F"; player="PLAY CDG"; @@ -1567,7 +1545,7 @@ class Mission position[]={15356.168,1.1161091,12.228943}; azimut=-363.75699; offsetY=17; - id=55; + id=54; side="WEST"; vehicle="B_recon_F"; player="PLAY CDG"; @@ -1582,7 +1560,7 @@ class Mission position[]={15357.621,1.097404,12.230652}; azimut=-363.75699; offsetY=17; - id=56; + id=55; side="WEST"; vehicle="B_recon_medic_F"; player="PLAY CDG"; @@ -1594,7 +1572,7 @@ class Mission }; }; }; - class Item26 + class Item25 { side="WEST"; class Vehicles @@ -1603,7 +1581,7 @@ class Mission class Item0 { position[]={15352.887,1.1357565,10.395935}; - id=57; + id=56; side="WEST"; vehicle="B_Soldier_TL_F"; player="PLAY CDG"; @@ -1617,7 +1595,7 @@ class Mission class Item1 { position[]={15354.52,1.1037958,10.395691}; - id=58; + id=57; side="WEST"; vehicle="B_Helipilot_F"; player="PLAY CDG"; @@ -1630,7 +1608,7 @@ class Mission class Item2 { position[]={15356.244,1.0803936,10.350037}; - id=59; + id=58; side="WEST"; vehicle="B_Soldier_F"; player="PLAY CDG"; @@ -1642,7 +1620,7 @@ class Mission class Item3 { position[]={15357.699,1.0724926,10.306091}; - id=60; + id=59; side="WEST"; vehicle="B_Soldier_F"; player="PLAY CDG"; @@ -1653,7 +1631,7 @@ class Mission }; }; }; - class Item27 + class Item26 { side="WEST"; class Vehicles @@ -1664,7 +1642,7 @@ class Mission position[]={15338.662,1.2109209,12.125916}; azimut=-363.75699; offsetY=17; - id=61; + id=60; side="WEST"; vehicle="B_Soldier_TL_F"; player="PLAY CDG"; @@ -1680,7 +1658,7 @@ class Mission position[]={15339.977,1.2458137,12.166199}; azimut=-363.75699; offsetY=17; - id=62; + id=61; side="WEST"; vehicle="TF47_B_soldier_M3MAAWS"; player="PLAY CDG"; @@ -1695,7 +1673,7 @@ class Mission position[]={15341.023,1.2697431,12.167908}; azimut=-363.75699; offsetY=17; - id=63; + id=62; side="WEST"; vehicle="B_Soldier_F"; player="PLAY CDG"; @@ -1709,7 +1687,7 @@ class Mission position[]={15342.109,1.2892271,12.215515}; azimut=-363.75699; offsetY=17; - id=64; + id=63; side="WEST"; vehicle="B_Soldier_A_F"; player="PLAY CDG"; @@ -1720,7 +1698,7 @@ class Mission }; }; }; - class Item28 + class Item27 { side="WEST"; class Vehicles @@ -1731,7 +1709,7 @@ class Mission position[]={15338.762,1.2382044,10.540466}; azimut=-363.75699; offsetY=17; - id=65; + id=64; side="WEST"; vehicle="B_crew_F"; player="PLAY CDG"; @@ -1747,7 +1725,7 @@ class Mission position[]={15340.078,1.2669678,10.496521}; azimut=-363.75699; offsetY=17; - id=66; + id=65; side="WEST"; vehicle="B_crew_F"; player="PLAY CDG"; @@ -1762,7 +1740,7 @@ class Mission position[]={15341.438,1.2877806,10.450623}; azimut=-363.75699; offsetY=17; - id=67; + id=66; side="WEST"; vehicle="B_crew_F"; player="PLAY CDG"; @@ -1774,7 +1752,7 @@ class Mission }; }; }; - class Item29 + class Item28 { side="WEST"; class Vehicles @@ -1785,7 +1763,7 @@ class Mission position[]={15339.201,1.2718861,5.843689}; azimut=-363.75699; offsetY=17; - id=68; + id=67; side="WEST"; vehicle="B_Helipilot_F"; player="PLAY CDG"; @@ -1801,7 +1779,7 @@ class Mission position[]={15340.475,1.2705554,5.8456421}; azimut=-363.75699; offsetY=17; - id=69; + id=68; side="WEST"; vehicle="B_helicrew_F"; player="PLAY CDG"; @@ -1813,7 +1791,7 @@ class Mission }; }; }; - class Item30 + class Item29 { side="WEST"; class Vehicles @@ -1824,7 +1802,7 @@ class Mission position[]={15339.156,1.2616256,4.1188354}; azimut=-363.75699; offsetY=17; - id=70; + id=69; side="WEST"; vehicle="B_Helipilot_F"; player="PLAY CDG"; @@ -1840,7 +1818,7 @@ class Mission position[]={15340.43,1.2507246,4.1207886}; azimut=-363.75699; offsetY=17; - id=71; + id=70; side="WEST"; vehicle="B_helicrew_F"; player="PLAY CDG"; @@ -1852,7 +1830,7 @@ class Mission }; }; }; - class Item31 + class Item30 { side="WEST"; class Vehicles @@ -1862,7 +1840,7 @@ class Mission { position[]={15339.107,1.2419211,2.3917847}; offsetY=17; - id=72; + id=71; side="WEST"; vehicle="B_Pilot_F"; player="PLAY CDG"; @@ -1877,7 +1855,7 @@ class Mission { position[]={15340.516,1.2200053,2.3920288}; offsetY=17; - id=73; + id=72; side="WEST"; vehicle="B_Pilot_F"; player="PLAY CDG"; @@ -1889,7 +1867,7 @@ class Mission }; }; }; - class Item32 + class Item31 { side="LOGIC"; class Vehicles @@ -1897,18 +1875,18 @@ class Mission items=1; class Item0 { - position[]={559.8089,11.092176,1882.8401}; - id=74; + position[]={560.47168,10.909405,1882.0529}; + id=73; side="LOGIC"; vehicle="Logic"; leader=1; skill=0.60000002; text="obj_bush"; - init="(getPos this nearestObject 323601) setDamage 1;(getPos this nearestObject 323610) setDamage 1;(getPos this nearestObject 323611) setDamage 1;(getPos this nearestObject 323592) setDamage 1;(getPos this nearestObject 323633) setDamage 1;(getPos this nearestObject 323632) setDamage 1;(getPos this nearestObject 323582) setDamage 1;(getPos this nearestObject 323627) setDamage 1;(getPos this nearestObject 323618) setDamage 1;(getPos this nearestObject 323626) setDamage 1;(getPos this nearestObject 323565) setDamage 1;(getPos this nearestObject 323572) setDamage 1;(getPos this nearestObject 323571) setDamage 1;(getPos this nearestObject 323566) setDamage 1;(getPos this nearestObject 323628) setDamage 1;(getPos this nearestObject 323625) setDamage 1;(getPos this nearestObject 323617) setDamage 1;(getPos this nearestObject 323607) setDamage 1;"; + init="(getPos this nearestObject 323601) setDamage 1;(getPos this nearestObject 323610) setDamage 1;(getPos this nearestObject 323611) setDamage 1;(getPos this nearestObject 323592) setDamage 1;(getPos this nearestObject 323633) setDamage 1;(getPos this nearestObject 323632) setDamage 1;(getPos this nearestObject 323582) setDamage 1;(getPos this nearestObject 323627) setDamage 1;(getPos this nearestObject 323618) setDamage 1;(getPos this nearestObject 323626) setDamage 1;(getPos this nearestObject 323565) setDamage 1;(getPos this nearestObject 323572) setDamage 1;(getPos this nearestObject 323571) setDamage 1;(getPos this nearestObject 323566) setDamage 1;(getPos this nearestObject 323628) setDamage 1;(getPos this nearestObject 323625) setDamage 1;(getPos this nearestObject 323617) setDamage 1;(getPos this nearestObject 323650) setDamage 1;(getPos this nearestObject 323651) setDamage 1;(getPos this nearestObject 323635) setDamage 1;(getPos this nearestObject 323649) setDamage 1;(getPos this nearestObject 323642) setDamage 1;(getPos this nearestObject 323634) setDamage 1;(getPos this nearestObject 323643) setDamage 1;(getPos this nearestObject 323636) setDamage 1;"; }; }; }; - class Item33 + class Item32 { side="LOGIC"; class Vehicles @@ -1927,7 +1905,7 @@ class Mission typeName="enable"; }; }; - id=75; + id=74; side="LOGIC"; vehicle="ACE_ModuleSitting"; leader=1; @@ -1936,7 +1914,7 @@ class Mission }; }; }; - class Item34 + class Item33 { side="LOGIC"; class Vehicles @@ -1979,7 +1957,7 @@ class Mission typeName="showCursorTagForVehicles"; }; }; - id=76; + id=75; side="LOGIC"; vehicle="ACE_ModuleNameTags"; leader=1; @@ -1988,7 +1966,7 @@ class Mission }; }; }; - class Item35 + class Item34 { side="LOGIC"; class Vehicles @@ -2025,7 +2003,7 @@ class Mission typeName="MapShowCursorCoordinates"; }; }; - id=77; + id=76; side="LOGIC"; vehicle="ACE_ModuleMap"; leader=1; @@ -2034,7 +2012,7 @@ class Mission }; }; }; - class Item36 + class Item35 { side="LOGIC"; class Vehicles @@ -2053,7 +2031,7 @@ class Mission typeName="enabled"; }; }; - id=78; + id=77; side="LOGIC"; vehicle="ACE_moduleAssignMedicalFacility"; leader=1; @@ -2064,7 +2042,7 @@ class Mission }; }; }; - class Item37 + class Item36 { side="EAST"; class Vehicles @@ -2073,7 +2051,7 @@ class Mission class Item0 { position[]={0.57933992,621.96417,15359.168}; - id=79; + id=78; side="EAST"; vehicle="O_Soldier_F"; leader=1; @@ -2083,17 +2061,183 @@ class Mission }; }; }; - }; - class Vehicles - { - items=401; - class Item0 + class Item37 { - position[]={689.72211,6.0638437,1797.7275}; - azimut=50; - id=80; - side="EMPTY"; - vehicle="B_supplyCrate_F"; + side="LOGIC"; + class Vehicles + { + items=1; + class Item0 + { + position[]={524.36902,16.18795,1844.8708}; + class args + { + items=9; + class Item0 + { + value="0"; + parentCls="ACE_moduleRepairSettings"; + typeName="engineerSetting_Repair"; + }; + class Item1 + { + value="0"; + parentCls="ACE_moduleRepairSettings"; + typeName="engineerSetting_Wheel"; + }; + class Item2 + { + value="0.6"; + parentCls="ACE_moduleRepairSettings"; + typeName="repairDamageThreshold"; + }; + class Item3 + { + value="0.3"; + parentCls="ACE_moduleRepairSettings"; + typeName="repairDamageThreshold_Engineer"; + }; + class Item4 + { + value="0"; + parentCls="ACE_moduleRepairSettings"; + typeName="consumeItem_ToolKit"; + }; + class Item5 + { + value="2"; + parentCls="ACE_moduleRepairSettings"; + typeName="fullRepairLocation"; + }; + class Item6 + { + value="2"; + parentCls="ACE_moduleRepairSettings"; + typeName="engineerSetting_fullRepair"; + }; + class Item7 + { + value="1"; + parentCls="ACE_moduleRepairSettings"; + typeName="addSpareParts"; + }; + class Item8 + { + value="0"; + parentCls="ACE_moduleRepairSettings"; + typeName="wheelRepairRequiredItems"; + }; + }; + id=79; + side="LOGIC"; + vehicle="ACE_moduleRepairSettings"; + leader=1; + lock="UNLOCKED"; + skill=0.60000002; + }; + }; + }; + class Item38 + { + side="LOGIC"; + class Vehicles + { + items=1; + class Item0 + { + position[]={530.88092,14.591525,1853.0674}; + class args + { + items=1; + class Item0 + { + value="1"; + parentCls="ACE_ModuleHearing"; + typeName="EnableCombatDeafness"; + }; + }; + id=80; + side="LOGIC"; + vehicle="ACE_ModuleHearing"; + leader=1; + lock="UNLOCKED"; + skill=0.60000002; + }; + }; + }; + class Item39 + { + side="LOGIC"; + class Vehicles + { + items=1; + class Item0 + { + position[]={530.5274,13.933278,1844.9561}; + class args + { + items=1; + class Item0 + { + value="0"; + parentCls="ACE_ModuleInteraction"; + typeName="EnableTeamManagement"; + }; + }; + id=81; + side="LOGIC"; + vehicle="ACE_ModuleInteraction"; + leader=1; + lock="UNLOCKED"; + skill=0.60000002; + }; + }; + }; + class Item40 + { + side="LOGIC"; + class Vehicles + { + items=1; + class Item0 + { + position[]={524.43469,15.377542,1837.3792}; + class args + { + items=2; + class Item0 + { + value="l1,l2,l3,l4"; + parentCls="ACE_moduleAssignEngineerRoles"; + typeName="EnableList"; + }; + class Item1 + { + value="2"; + parentCls="ACE_moduleAssignEngineerRoles"; + typeName="role"; + }; + }; + id=82; + side="LOGIC"; + vehicle="ACE_moduleAssignEngineerRoles"; + leader=1; + lock="UNLOCKED"; + skill=0.60000002; + }; + }; + }; + }; + class Vehicles + { + items=409; + class Item0 + { + position[]={689.72211,6.0638437,1797.7275}; + azimut=50; + id=83; + side="EMPTY"; + vehicle="B_supplyCrate_F"; lock="LOCKED"; skill=0.60000002; init="this allowDamage false;[""AmmoboxInit"",[this,true]] call BIS_fnc_arsenal;"; @@ -2102,7 +2246,7 @@ class Mission { position[]={696.66595,6,1789.2854}; azimut=50; - id=81; + id=84; side="EMPTY"; vehicle="B_supplyCrate_F"; lock="LOCKED"; @@ -2113,7 +2257,7 @@ class Mission { position[]={693.19678,6.0127869,1793.5654}; azimut=50; - id=82; + id=85; side="EMPTY"; vehicle="B_supplyCrate_F"; lock="LOCKED"; @@ -2124,7 +2268,7 @@ class Mission { position[]={570.13501,5.9898186,1751.3179}; azimut=50; - id=83; + id=86; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2133,7 +2277,7 @@ class Mission { position[]={565.23724,5.9603734,1757.2734}; azimut=50; - id=84; + id=87; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2142,7 +2286,7 @@ class Mission { position[]={560.1134,5.9859104,1763.38}; azimut=50; - id=85; + id=88; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2151,7 +2295,7 @@ class Mission { position[]={555.06494,6.019567,1769.4106}; azimut=50; - id=86; + id=89; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2160,7 +2304,7 @@ class Mission { position[]={584.45502,6,1735.8483}; azimut=50; - id=87; + id=90; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2169,7 +2313,7 @@ class Mission { position[]={589.59521,5.9953256,1729.6575}; azimut=50; - id=88; + id=91; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2178,7 +2322,7 @@ class Mission { position[]={594.80798,6,1723.5061}; azimut=50; - id=89; + id=92; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2187,7 +2331,7 @@ class Mission { position[]={679.27643,5.9921484,1854.1115}; azimut=50; - id=90; + id=93; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2196,7 +2340,7 @@ class Mission { position[]={674.37866,6.0182672,1860.067}; azimut=50; - id=91; + id=94; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2205,7 +2349,7 @@ class Mission { position[]={669.25482,6.3181725,1866.1736}; azimut=50; - id=92; + id=95; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2214,7 +2358,7 @@ class Mission { position[]={664.6391,6.5580735,1871.6266}; azimut=50; - id=93; + id=96; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2223,7 +2367,7 @@ class Mission { position[]={698.19897,5.990932,1833.317}; azimut=50; - id=94; + id=97; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2232,7 +2376,7 @@ class Mission { position[]={714.69751,6.0759115,1827.3296}; azimut=50; - id=95; + id=98; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2241,7 +2385,7 @@ class Mission { position[]={709.0744,6.0786099,1820.1172}; azimut=50; - id=96; + id=99; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2250,7 +2394,7 @@ class Mission { position[]={714.13428,6.0804911,1814.0544}; azimut=50; - id=97; + id=100; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2259,7 +2403,7 @@ class Mission { position[]={600.25067,6,1721.2528}; azimut=147; - id=98; + id=101; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2268,7 +2412,7 @@ class Mission { position[]={607.00043,6.0006661,1725.6665}; azimut=147; - id=99; + id=102; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2277,7 +2421,7 @@ class Mission { position[]={613.61658,6,1729.9448}; azimut=147; - id=100; + id=103; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2286,7 +2430,7 @@ class Mission { position[]={620.36633,6.0074348,1734.3586}; azimut=147; - id=101; + id=104; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2295,7 +2439,7 @@ class Mission { position[]={627.08099,6,1738.7806}; azimut=147; - id=102; + id=105; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2304,7 +2448,7 @@ class Mission { position[]={633.71667,6.0253501,1743.1687}; azimut=147; - id=103; + id=106; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2313,7 +2457,7 @@ class Mission { position[]={640.12018,6,1747.458}; azimut=147; - id=104; + id=107; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2322,7 +2466,7 @@ class Mission { position[]={646.82642,6,1751.7573}; azimut=147; - id=105; + id=108; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2331,7 +2475,7 @@ class Mission { position[]={653.45728,6,1755.9028}; azimut=147; - id=106; + id=109; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2340,7 +2484,7 @@ class Mission { position[]={659.97162,6,1760.1132}; azimut=147; - id=107; + id=110; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2349,7 +2493,7 @@ class Mission { position[]={666.85229,6.0043178,1764.5408}; azimut=147; - id=108; + id=111; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2358,7 +2502,7 @@ class Mission { position[]={673.27869,6,1768.6597}; azimut=147; - id=109; + id=112; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2367,7 +2511,7 @@ class Mission { position[]={680.02588,6.0098963,1772.9536}; azimut=147; - id=110; + id=113; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2376,7 +2520,7 @@ class Mission { position[]={686.71924,6,1777.3691}; azimut=147; - id=111; + id=114; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2385,7 +2529,7 @@ class Mission { position[]={693.44165,6,1781.728}; azimut=147; - id=112; + id=115; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2394,7 +2538,7 @@ class Mission { position[]={700.08972,6,1786.1189}; azimut=147; - id=113; + id=116; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2403,7 +2547,7 @@ class Mission { position[]={706.88831,6,1790.4484}; azimut=147; - id=114; + id=117; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2412,7 +2556,7 @@ class Mission { position[]={713.68695,6,1794.8411}; azimut=147; - id=115; + id=118; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2421,7 +2565,7 @@ class Mission { position[]={720.45319,6,1799.1707}; azimut=147; - id=116; + id=119; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2430,7 +2574,7 @@ class Mission { position[]={722.43445,6,1804.1465}; azimut=50; - id=117; + id=120; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2439,7 +2583,7 @@ class Mission { position[]={555.85571,6.0108724,1774.1473}; azimut=137; - id=118; + id=121; side="EMPTY"; vehicle="Land_HBarrierBig_F"; leader=1; @@ -2449,7 +2593,7 @@ class Mission { position[]={561.82788,5.9083447,1779.7477}; azimut=137; - id=119; + id=122; side="EMPTY"; vehicle="Land_HBarrierBig_F"; leader=1; @@ -2459,7 +2603,7 @@ class Mission { position[]={567.7135,5.8585324,1785.2299}; azimut=137; - id=120; + id=123; side="EMPTY"; vehicle="Land_HBarrierBig_F"; leader=1; @@ -2469,7 +2613,7 @@ class Mission { position[]={573.6568,5.8340116,1790.6864}; azimut=137; - id=121; + id=124; side="EMPTY"; vehicle="Land_HBarrierBig_F"; leader=1; @@ -2479,7 +2623,7 @@ class Mission { position[]={579.65778,5.8200588,1796.2574}; azimut=137; - id=122; + id=125; side="EMPTY"; vehicle="Land_HBarrierBig_F"; leader=1; @@ -2489,7 +2633,7 @@ class Mission { position[]={585.5434,5.8066678,1801.6544}; azimut=137; - id=123; + id=126; side="EMPTY"; vehicle="Land_HBarrierBig_F"; leader=1; @@ -2499,7 +2643,7 @@ class Mission { position[]={591.40021,5.8023186,1807.1962}; azimut=137; - id=124; + id=127; side="EMPTY"; vehicle="Land_HBarrierBig_F"; leader=1; @@ -2509,7 +2653,7 @@ class Mission { position[]={597.31476,5.8092346,1812.6527}; azimut=137; - id=125; + id=128; side="EMPTY"; vehicle="Land_HBarrierBig_F"; leader=1; @@ -2519,7 +2663,7 @@ class Mission { position[]={602.98743,5.8290348,1817.8729}; azimut=137; - id=126; + id=129; side="EMPTY"; vehicle="Land_HBarrierBig_F"; leader=1; @@ -2529,7 +2673,7 @@ class Mission { position[]={609.17267,5.8542414,1823.5933}; azimut=137; - id=127; + id=130; side="EMPTY"; vehicle="Land_HBarrierBig_F"; leader=1; @@ -2539,7 +2683,7 @@ class Mission { position[]={615.26031,5.88727,1829.2218}; azimut=137; - id=128; + id=131; side="EMPTY"; vehicle="Land_HBarrierBig_F"; leader=1; @@ -2549,7 +2693,7 @@ class Mission { position[]={621.3479,5.9279237,1834.8221}; azimut=137; - id=129; + id=132; side="EMPTY"; vehicle="Land_HBarrierBig_F"; leader=1; @@ -2559,7 +2703,7 @@ class Mission { position[]={627.32007,5.9631929,1840.307}; azimut=137; - id=130; + id=133; side="EMPTY"; vehicle="Land_HBarrierBig_F"; leader=1; @@ -2569,7 +2713,7 @@ class Mission { position[]={633.20563,6.0087342,1845.8488}; azimut=137; - id=131; + id=134; side="EMPTY"; vehicle="Land_HBarrierBig_F"; leader=1; @@ -2579,7 +2723,7 @@ class Mission { position[]={639.14911,6.0992255,1851.4188}; azimut=137; - id=132; + id=135; side="EMPTY"; vehicle="Land_HBarrierBig_F"; leader=1; @@ -2589,7 +2733,7 @@ class Mission { position[]={644.91925,6.2229695,1857.0475}; azimut=137; - id=133; + id=136; side="EMPTY"; vehicle="Land_HBarrierBig_F"; leader=1; @@ -2599,7 +2743,7 @@ class Mission { position[]={650.86261,6.3586721,1862.6779}; azimut=137; - id=134; + id=137; side="EMPTY"; vehicle="Land_HBarrierBig_F"; leader=1; @@ -2609,7 +2753,7 @@ class Mission { position[]={656.71924,6.4971809,1868.1327}; azimut=137; - id=135; + id=138; side="EMPTY"; vehicle="Land_HBarrierBig_F"; leader=1; @@ -2619,7 +2763,7 @@ class Mission { position[]={660.23914,6.5934396,1871.5375}; azimut=137; - id=136; + id=139; side="EMPTY"; vehicle="Land_HBarrierBig_F"; leader=1; @@ -2629,7 +2773,7 @@ class Mission { position[]={694.8653,6,1786.2095}; azimut=50; - id=137; + id=140; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2638,7 +2782,7 @@ class Mission { position[]={689.98566,6,1791.8353}; azimut=50; - id=138; + id=141; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2647,7 +2791,7 @@ class Mission { position[]={685.57916,6.0935903,1801.7615}; azimut=147; - id=139; + id=142; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2656,7 +2800,7 @@ class Mission { position[]={692.28021,6.1003332,1806.1552}; azimut=147; - id=140; + id=143; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2665,7 +2809,7 @@ class Mission { position[]={698.8512,6.0881987,1810.4838}; azimut=147; - id=141; + id=144; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2674,7 +2818,7 @@ class Mission { position[]={685.06604,6.0822058,1797.7057}; azimut=50; - id=142; + id=145; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2683,7 +2827,7 @@ class Mission { position[]={611.60767,6.1510534,1789.1821}; azimut=50; - id=143; + id=146; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2692,7 +2836,7 @@ class Mission { position[]={606.7099,6.1331458,1795.1377}; azimut=50; - id=144; + id=147; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2701,7 +2845,7 @@ class Mission { position[]={601.58606,6.0089049,1801.2443}; azimut=50; - id=145; + id=148; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2710,7 +2854,7 @@ class Mission { position[]={596.5376,5.8611517,1807.2749}; azimut=50; - id=146; + id=149; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2719,7 +2863,7 @@ class Mission { position[]={722.90076,6.0674553,1812.822}; azimut=50; - id=147; + id=150; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2728,7 +2872,7 @@ class Mission { position[]={728.47278,6,1804.8157}; azimut=147; - id=148; + id=151; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2737,7 +2881,7 @@ class Mission { position[]={735.1402,6,1809.0601}; azimut=147; - id=149; + id=152; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2746,7 +2890,7 @@ class Mission { position[]={741.85443,6,1813.5388}; azimut=147; - id=150; + id=153; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2755,7 +2899,7 @@ class Mission { position[]={748.70825,6,1817.8794}; azimut=147; - id=151; + id=154; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2764,7 +2908,7 @@ class Mission { position[]={755.37573,6,1822.2648}; azimut=147; - id=152; + id=155; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2773,7 +2917,7 @@ class Mission { position[]={762.04321,6,1826.6511}; azimut=147; - id=153; + id=156; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2782,7 +2926,7 @@ class Mission { position[]={768.80389,6.0264101,1830.9431}; azimut=147; - id=154; + id=157; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2791,7 +2935,7 @@ class Mission { position[]={775.51794,6,1835.2341}; azimut=147; - id=155; + id=158; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2800,7 +2944,7 @@ class Mission { position[]={782.41858,6,1839.6204}; azimut=147; - id=156; + id=159; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2809,7 +2953,7 @@ class Mission { position[]={788.94617,6,1843.9591}; azimut=145; - id=157; + id=160; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2818,7 +2962,7 @@ class Mission { position[]={795.43298,6,1848.762}; azimut=143; - id=158; + id=161; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2827,7 +2971,7 @@ class Mission { position[]={802.05682,6,1853.7067}; azimut=143; - id=159; + id=162; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2836,7 +2980,7 @@ class Mission { position[]={808.51154,6,1858.8074}; azimut=140; - id=160; + id=163; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2845,7 +2989,7 @@ class Mission { position[]={814.68451,6,1864.0771}; azimut=140; - id=161; + id=164; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2854,7 +2998,7 @@ class Mission { position[]={820.92554,6,1869.3589}; azimut=140; - id=162; + id=165; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2863,7 +3007,7 @@ class Mission { position[]={827.27155,6,1874.8108}; azimut=140; - id=163; + id=166; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2872,7 +3016,7 @@ class Mission { position[]={833.64313,6,1880.2363}; azimut=140; - id=164; + id=167; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2881,7 +3025,7 @@ class Mission { position[]={839.96362,6,1885.5381}; azimut=140; - id=165; + id=168; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2890,7 +3034,7 @@ class Mission { position[]={846.284,5.997499,1890.9379}; azimut=140; - id=166; + id=169; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2899,7 +3043,7 @@ class Mission { position[]={852.55322,6,1896.3147}; azimut=140; - id=167; + id=170; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2908,7 +3052,7 @@ class Mission { position[]={716.03705,6.0941482,1819.1615}; azimut=140; - id=168; + id=171; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2917,7 +3061,7 @@ class Mission { position[]={722.03015,6.0733814,1824.2106}; azimut=140; - id=169; + id=172; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2926,7 +3070,7 @@ class Mission { position[]={727.90118,6.1056113,1829.1006}; azimut=140; - id=170; + id=173; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2935,7 +3079,7 @@ class Mission { position[]={733.84906,6.1319156,1834.1149}; azimut=140; - id=171; + id=174; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2944,7 +3088,7 @@ class Mission { position[]={740.06415,6.1348042,1839.3306}; azimut=140; - id=172; + id=175; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2953,7 +3097,7 @@ class Mission { position[]={745.81158,6.1190143,1844.2789}; azimut=140; - id=173; + id=176; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2962,7 +3106,7 @@ class Mission { position[]={751.62262,6.0974102,1848.9553}; azimut=140; - id=174; + id=177; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2971,7 +3115,7 @@ class Mission { position[]={757.49365,6.0710135,1853.8453}; azimut=140; - id=175; + id=178; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2980,7 +3124,7 @@ class Mission { position[]={763.44153,6.0470443,1858.8596}; azimut=140; - id=176; + id=179; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2989,7 +3133,7 @@ class Mission { position[]={769.65662,6.0228305,1864.0753}; azimut=140; - id=177; + id=180; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2998,7 +3142,7 @@ class Mission { position[]={775.40405,6.0018406,1869.0237}; azimut=140; - id=178; + id=181; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3007,7 +3151,7 @@ class Mission { position[]={781.64703,5.9942212,1874.2405}; azimut=140; - id=179; + id=182; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3016,7 +3160,7 @@ class Mission { position[]={787.51807,5.9945168,1879.1305}; azimut=140; - id=180; + id=183; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3025,7 +3169,7 @@ class Mission { position[]={793.46594,6,1884.1448}; azimut=140; - id=181; + id=184; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3034,7 +3178,7 @@ class Mission { position[]={799.68103,5.9946108,1889.3605}; azimut=140; - id=182; + id=185; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3043,7 +3187,7 @@ class Mission { position[]={805.42847,5.99965,1894.3088}; azimut=140; - id=183; + id=186; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3052,7 +3196,7 @@ class Mission { position[]={811.34766,5.999651,1899.3094}; azimut=140; - id=184; + id=187; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3061,7 +3205,7 @@ class Mission { position[]={817.21869,5.9914999,1904.1995}; azimut=140; - id=185; + id=188; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3070,7 +3214,7 @@ class Mission { position[]={823.16656,5.9980631,1909.2137}; azimut=140; - id=186; + id=189; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3079,7 +3223,7 @@ class Mission { position[]={829.38165,6,1914.4294}; azimut=140; - id=187; + id=190; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3088,7 +3232,7 @@ class Mission { position[]={835.12909,5.9883409,1919.3778}; azimut=140; - id=188; + id=191; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3097,7 +3241,7 @@ class Mission { position[]={840.20532,5.9836955,1917.8411}; azimut=50; - id=189; + id=192; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3106,7 +3250,7 @@ class Mission { position[]={845.19946,5.9601502,1911.8975}; azimut=50; - id=190; + id=193; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3115,7 +3259,7 @@ class Mission { position[]={850.19354,5.9950438,1905.7433}; azimut=50; - id=191; + id=194; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3124,7 +3268,7 @@ class Mission { position[]={853.97864,6,1901.4833}; azimut=50; - id=192; + id=195; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3133,7 +3277,7 @@ class Mission { position[]={696.4967,6.0851517,1804.6783}; azimut=140; - id=193; + id=196; side="EMPTY"; vehicle="Flag_NATO_F"; skill=0.60000002; @@ -3143,7 +3287,7 @@ class Mission { position[]={668.91956,6.010416,1771.3019}; azimut=237; - id=194; + id=197; side="EMPTY"; vehicle="Land_HelipadEmpty_F"; skill=0.60000002; @@ -3153,7 +3297,7 @@ class Mission { position[]={660.93768,6.0133247,1850.3156}; azimut=137; - id=195; + id=198; side="EMPTY"; vehicle="Land_HelipadSquare_F"; leader=1; @@ -3164,7 +3308,7 @@ class Mission { position[]={645.84198,6.0921617,1835.8474}; azimut=137; - id=196; + id=199; side="EMPTY"; vehicle="Land_HelipadSquare_F"; leader=1; @@ -3175,7 +3319,7 @@ class Mission { position[]={615.34821,6.1382518,1808.4594}; azimut=137; - id=197; + id=200; side="EMPTY"; vehicle="Land_HelipadSquare_F"; leader=1; @@ -3186,7 +3330,7 @@ class Mission { position[]={630.16028,6.1504002,1822.0396}; azimut=137; - id=198; + id=201; side="EMPTY"; vehicle="Land_HelipadSquare_F"; leader=1; @@ -3197,7 +3341,7 @@ class Mission { position[]={708.2749,6.0427299,1825.8895}; azimut=140; - id=199; + id=202; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3206,108 +3350,99 @@ class Mission { position[]={717.46619,6.0954742,1824.1465}; azimut=50; - id=200; + id=203; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item121 - { - position[]={741.85754,6.0991936,1844.7795}; - azimut=50; - id=201; - side="EMPTY"; - vehicle="Land_HBarrierBig_F"; - skill=0.60000002; - }; - class Item122 { position[]={736.95978,6.0393443,1850.7351}; azimut=50; - id=202; + id=204; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item123 + class Item122 { position[]={731.83594,6.075242,1856.8417}; azimut=50; - id=203; + id=205; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item124 + class Item123 { position[]={709.8017,6.0418105,1852.1271}; azimut=140; - id=204; + id=206; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item125 + class Item124 { position[]={715.74957,6.071043,1857.1414}; azimut=140; - id=205; + id=207; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item126 + class Item125 { position[]={721.96466,6.1015253,1862.3571}; azimut=140; - id=206; + id=208; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item127 + class Item126 { position[]={726.9165,6.1158671,1862.7834}; azimut=50; - id=207; + id=209; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item128 + class Item127 { position[]={708.10797,6.0425987,1854.1163}; azimut=140; - id=208; + id=210; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item129 + class Item128 { position[]={693.71808,5.9899998,1838.8607}; azimut=50; - id=209; + id=211; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item130 + class Item129 { position[]={725.638,6.045752,1846.2258}; azimut=230; - id=210; + id=212; side="EMPTY"; vehicle="Land_HelipadRescue_F"; leader=1; skill=0.60000002; text="garage_spawn_med"; }; - class Item131 + class Item130 { position[]={720.9425,6.0769019,1827.3185}; azimut=50; - id=211; + id=213; side="EMPTY"; vehicle="MASH_EP1"; leader=1; @@ -3315,1892 +3450,1858 @@ class Mission syncId=4; synchronizations[]={3}; }; - class Item132 + class Item131 { position[]={594.95911,6.0376916,1791.3811}; azimut=137; - id=212; + id=214; side="EMPTY"; vehicle="Land_HelipadSquare_F"; leader=1; skill=0.60000002; text="garage_spawn_4"; }; + class Item132 + { + position[]={724.1073,6.0497589,1820.4933}; + azimut=50; + id=215; + side="EMPTY"; + vehicle="ShootingPos_F"; + skill=0.60000002; + }; class Item133 { - position[]={560.64941,5.959599,1771.8768}; - azimut=137; - id=213; + position[]={726.44501,6.0154729,1817.7238}; + azimut=50; + id=216; side="EMPTY"; - vehicle="B_Slingload_01_Ammo_F"; - leader=1; + vehicle="ShootingPos_F"; skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item134 { - position[]={565.34875,5.9643288,1766.7665}; - azimut=137; - id=214; + position[]={728.78253,6,1815.022}; + azimut=50; + id=217; side="EMPTY"; - vehicle="B_Slingload_01_Ammo_F"; - leader=1; + vehicle="ShootingPos_F"; skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item135 { - position[]={563.38416,5.9637799,1764.9391}; - azimut=137; - id=215; + position[]={731.052,6,1812.2965}; + azimut=50; + id=218; side="EMPTY"; - vehicle="B_Slingload_01_Cargo_F"; - leader=1; + vehicle="ShootingPos_F"; skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item136 { - position[]={558.68488,5.9811153,1769.8948}; - azimut=137; - id=216; + position[]={730.42114,6.0161881,1823.5117}; + azimut=50; + id=219; side="EMPTY"; - vehicle="B_Slingload_01_Cargo_F"; - leader=1; + vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item137 { - position[]={567.39404,5.9554181,1768.666}; - azimut=137; - id=217; + position[]={733.38135,6.0601783,1825.7255}; + azimut=50; + id=220; side="EMPTY"; - vehicle="B_Slingload_01_Fuel_F"; - leader=1; + vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item138 { - position[]={565.32269,5.8964548,1778.8293}; - azimut=137; - id=218; + position[]={736.34149,6.1271315,1828.4592}; + azimut=50; + id=221; side="EMPTY"; - vehicle="B_CargoNet_01_ammo_F"; - leader=1; + vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item139 { - position[]={566.77521,5.9012733,1777.309}; - azimut=137; - id=219; + position[]={739.3667,6.1788349,1830.8351}; + azimut=50; + id=222; side="EMPTY"; - vehicle="B_CargoNet_01_ammo_F"; - leader=1; + vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item140 { - position[]={568.25037,5.9123344,1775.6498}; - azimut=137; - id=220; + position[]={742.02509,6.1785946,1833.5386}; + azimut=50; + id=223; side="EMPTY"; - vehicle="B_CargoNet_01_ammo_F"; - leader=1; + vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item141 { - position[]={569.771,5.9241381,1773.8793}; - azimut=137; - id=221; + position[]={744.98529,6.1256676,1835.7523}; + azimut=50; + id=224; side="EMPTY"; - vehicle="B_CargoNet_01_ammo_F"; - leader=1; + vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item142 { - position[]={571.22351,5.9505873,1772.3589}; - azimut=137; - id=222; + position[]={747.94543,6.1738925,1838.4861}; + azimut=50; + id=225; side="EMPTY"; - vehicle="B_CargoNet_01_ammo_F"; - leader=1; + vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item143 { - position[]={572.69867,5.981317,1770.6997}; - azimut=137; - id=223; - side="EMPTY"; - vehicle="B_CargoNet_01_ammo_F"; - leader=1; + position[]={750.97064,6.1656919,1840.8619}; + azimut=50; + id=226; + side="EMPTY"; + vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; }; class Item144 { - position[]={724.1073,6.0497589,1820.4933}; + position[]={753.17688,6.1565995,1842.734}; azimut=50; - id=224; + id=227; side="EMPTY"; - vehicle="ShootingPos_F"; + vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item145 { - position[]={726.44501,6.0154729,1817.7238}; + position[]={756.13708,6.1467834,1844.9478}; azimut=50; - id=225; + id=228; side="EMPTY"; - vehicle="ShootingPos_F"; + vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item146 { - position[]={728.78253,6,1815.022}; + position[]={759.09723,6.129231,1847.6815}; azimut=50; - id=226; + id=229; side="EMPTY"; - vehicle="ShootingPos_F"; + vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item147 { - position[]={731.052,6,1812.2965}; + position[]={762.12244,6.1151233,1850.0574}; azimut=50; - id=227; + id=230; side="EMPTY"; - vehicle="ShootingPos_F"; + vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item148 { - position[]={730.42114,6.0161881,1823.5117}; + position[]={765.0069,6.1016183,1852.3097}; azimut=50; - id=228; + id=231; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item149 { - position[]={733.38135,6.0601783,1825.7255}; + position[]={767.9671,6.0877681,1854.5234}; azimut=50; - id=229; + id=232; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item150 { - position[]={736.34149,6.1271315,1828.4592}; + position[]={770.92725,6.0698447,1857.2572}; azimut=50; - id=230; + id=233; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item151 { - position[]={739.3667,6.1788349,1830.8351}; + position[]={773.95245,6.054872,1859.6331}; azimut=50; - id=231; + id=234; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item152 { - position[]={742.02509,6.1785946,1833.5386}; + position[]={776.91223,6.0402937,1862.3383}; azimut=50; - id=232; + id=235; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item153 { - position[]={744.98529,6.1256676,1835.7523}; + position[]={779.87244,6.0294824,1864.552}; azimut=50; - id=233; + id=236; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item154 { - position[]={747.94543,6.1738925,1838.4861}; + position[]={782.83258,6.0152044,1867.2858}; azimut=50; - id=234; + id=237; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item155 { - position[]={750.97064,6.1656919,1840.8619}; + position[]={785.85779,6.0120459,1869.6616}; azimut=50; - id=235; + id=238; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item156 { - position[]={753.17688,6.1565995,1842.734}; + position[]={788.81744,6.0119534,1871.835}; azimut=50; - id=236; + id=239; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item157 { - position[]={756.13708,6.1467834,1844.9478}; + position[]={791.77765,6.0095086,1874.0487}; azimut=50; - id=237; + id=240; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item158 { - position[]={759.09723,6.129231,1847.6815}; + position[]={794.73779,6.0072742,1876.7825}; azimut=50; - id=238; + id=241; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item159 { - position[]={762.12244,6.1151233,1850.0574}; + position[]={797.763,6.0081396,1879.1583}; azimut=50; - id=239; + id=242; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item160 { - position[]={765.0069,6.1016183,1852.3097}; + position[]={800.40985,6.0021162,1881.7063}; azimut=50; - id=240; + id=243; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item161 { - position[]={767.9671,6.0877681,1854.5234}; + position[]={803.37006,5.9992666,1883.92}; azimut=50; - id=241; + id=244; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item162 { - position[]={770.92725,6.0698447,1857.2572}; + position[]={806.3302,5.9995685,1886.6538}; azimut=50; - id=242; + id=245; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item163 { - position[]={773.95245,6.054872,1859.6331}; + position[]={809.35541,6.0004344,1889.0297}; azimut=50; - id=243; + id=246; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item164 { - position[]={776.91223,6.0402937,1862.3383}; + position[]={811.86304,5.9980893,1891.4329}; azimut=50; - id=244; + id=247; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item165 { - position[]={779.87244,6.0294824,1864.552}; + position[]={814.82324,5.9951377,1893.6466}; azimut=50; - id=245; + id=248; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item166 { - position[]={782.83258,6.0152044,1867.2858}; + position[]={817.78339,5.9914927,1896.3804}; azimut=50; - id=246; + id=249; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item167 { - position[]={785.85779,6.0120459,1869.6616}; + position[]={820.80859,5.9899998,1898.7562}; azimut=50; - id=247; + id=250; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item168 { - position[]={788.81744,6.0119534,1871.835}; + position[]={823.76843,5.9899998,1901.382}; azimut=50; - id=248; + id=251; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item169 { - position[]={791.77765,6.0095086,1874.0487}; + position[]={826.72864,5.9895668,1903.5957}; azimut=50; - id=249; + id=252; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item170 { - position[]={794.73779,6.0072742,1876.7825}; + position[]={829.68878,5.9855208,1906.3295}; azimut=50; - id=250; + id=253; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item171 { - position[]={797.763,6.0081396,1879.1583}; + position[]={832.71399,5.9895959,1908.7053}; azimut=50; - id=251; + id=254; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item172 { - position[]={800.40985,6.0021162,1881.7063}; + position[]={735.53778,6,1817.754}; azimut=50; - id=252; + id=255; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item173 { - position[]={803.37006,5.9992666,1883.92}; + position[]={738.56299,6,1820.1299}; azimut=50; - id=253; + id=256; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item174 { - position[]={806.3302,5.9995685,1886.6538}; + position[]={741.07062,6.0007081,1822.5331}; azimut=50; - id=254; + id=257; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item175 { - position[]={809.35541,6.0004344,1889.0297}; + position[]={744.03082,6.0599179,1824.7468}; azimut=50; - id=255; + id=258; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item176 { - position[]={811.86304,5.9980893,1891.4329}; + position[]={746.99097,6.0802398,1827.4806}; azimut=50; - id=256; + id=259; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item177 { - position[]={814.82324,5.9951377,1893.6466}; + position[]={750.01617,6,1829.8564}; azimut=50; - id=257; + id=260; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item178 { - position[]={817.78339,5.9914927,1896.3804}; + position[]={752.97601,6.0628829,1832.4822}; azimut=50; - id=258; + id=261; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item179 { - position[]={820.80859,5.9899998,1898.7562}; + position[]={755.93622,6.1273174,1834.6959}; azimut=50; - id=259; + id=262; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item180 { - position[]={823.76843,5.9899998,1901.382}; + position[]={758.89636,6.2080326,1837.4297}; azimut=50; - id=260; + id=263; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item181 { - position[]={826.72864,5.9895668,1903.5957}; + position[]={761.75964,6.1972761,1839.0905}; azimut=50; - id=261; + id=264; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item182 { - position[]={829.68878,5.9855208,1906.3295}; + position[]={764.78485,6.1882725,1841.4663}; azimut=50; - id=262; + id=265; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item183 { - position[]={832.71399,5.9895959,1908.7053}; + position[]={767.29248,6.1180358,1843.8695}; azimut=50; - id=263; + id=266; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item184 { - position[]={735.53778,6,1817.754}; + position[]={770.25269,6.0408273,1846.0833}; azimut=50; - id=264; + id=267; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item185 { - position[]={738.56299,6,1820.1299}; + position[]={773.21283,6.0559835,1848.817}; azimut=50; - id=265; + id=268; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item186 { - position[]={741.07062,6.0007081,1822.5331}; + position[]={776.23804,6.0940714,1851.1929}; azimut=50; - id=266; + id=269; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item187 { - position[]={744.03082,6.0599179,1824.7468}; + position[]={779.19788,6.1083808,1853.8186}; azimut=50; - id=267; + id=270; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item188 { - position[]={746.99097,6.0802398,1827.4806}; + position[]={782.15808,6.05721,1856.0323}; azimut=50; - id=268; + id=271; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item189 { - position[]={750.01617,6,1829.8564}; + position[]={785.11823,6.0553093,1858.7661}; azimut=50; - id=269; + id=272; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item190 { - position[]={752.97601,6.0628829,1832.4822}; + position[]={788.05688,6.0564451,1861.2535}; azimut=50; - id=270; + id=273; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item191 { - position[]={755.93622,6.1273174,1834.6959}; + position[]={791.08209,6.0123706,1863.6294}; azimut=50; - id=271; + id=274; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item192 { - position[]={758.89636,6.2080326,1837.4297}; + position[]={793.58972,6.0284133,1866.0326}; azimut=50; - id=272; + id=275; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item193 { - position[]={761.75964,6.1972761,1839.0905}; + position[]={796.54993,6.0390811,1868.2463}; azimut=50; - id=273; + id=276; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item194 { - position[]={764.78485,6.1882725,1841.4663}; + position[]={799.51007,6.032093,1870.9801}; azimut=50; - id=274; + id=277; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item195 { - position[]={767.29248,6.1180358,1843.8695}; + position[]={802.53528,6.02634,1873.356}; azimut=50; - id=275; + id=278; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item196 { - position[]={770.25269,6.0408273,1846.0833}; + position[]={805.49512,6.0093946,1875.9817}; azimut=50; - id=276; + id=279; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item197 { - position[]={773.21283,6.0559835,1848.817}; + position[]={808.45532,6.0022016,1878.1954}; azimut=50; - id=277; + id=280; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item198 { - position[]={776.23804,6.0940714,1851.1929}; + position[]={811.41547,6.007906,1880.9292}; azimut=50; - id=278; + id=281; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item199 { - position[]={779.19788,6.1083808,1853.8186}; + position[]={814.73071,6.0152845,1883.2673}; azimut=50; - id=279; + id=282; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item200 { - position[]={782.15808,6.05721,1856.0323}; + position[]={817.75592,6.0109358,1885.6432}; azimut=50; - id=280; + id=283; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item201 { - position[]={785.11823,6.0553093,1858.7661}; + position[]={820.26355,6,1888.0464}; azimut=50; - id=281; + id=284; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item202 { - position[]={788.05688,6.0564451,1861.2535}; + position[]={823.22375,5.9996529,1890.2601}; azimut=50; - id=282; + id=285; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item203 { - position[]={791.08209,6.0123706,1863.6294}; + position[]={826.1839,5.9960079,1892.9939}; azimut=50; - id=283; + id=286; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item204 { - position[]={793.58972,6.0284133,1866.0326}; + position[]={829.20911,5.9928403,1895.3698}; azimut=50; - id=284; + id=287; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item205 { - position[]={796.54993,6.0390811,1868.2463}; + position[]={832.16895,5.9897804,1897.9955}; azimut=50; - id=285; + id=288; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item206 { - position[]={799.51007,6.032093,1870.9801}; + position[]={835.12915,5.9828825,1900.2092}; azimut=50; - id=286; + id=289; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item207 { - position[]={802.53528,6.02634,1873.356}; + position[]={838.08929,5.9752903,1902.943}; azimut=50; - id=287; + id=290; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item208 { - position[]={805.49512,6.0093946,1875.9817}; + position[]={739.97906,6,1814.1835}; azimut=50; - id=288; + id=291; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item209 { - position[]={808.45532,6.0022016,1878.1954}; + position[]={743.00427,6,1816.5593}; azimut=50; - id=289; + id=292; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item210 { - position[]={811.41547,6.007906,1880.9292}; + position[]={745.5119,6,1818.9625}; azimut=50; - id=290; + id=293; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item211 { - position[]={814.73071,6.0152845,1883.2673}; + position[]={748.47211,6,1821.1763}; azimut=50; - id=291; + id=294; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item212 { - position[]={817.75592,6.0109358,1885.6432}; + position[]={751.43225,6,1823.91}; azimut=50; - id=292; + id=295; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item213 { - position[]={820.26355,6,1888.0464}; + position[]={754.45746,6,1826.2859}; azimut=50; - id=293; + id=296; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item214 { - position[]={823.22375,5.9996529,1890.2601}; + position[]={757.4173,6,1828.9116}; azimut=50; - id=294; + id=297; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item215 { - position[]={826.1839,5.9960079,1892.9939}; + position[]={760.3775,6.0315113,1831.1254}; azimut=50; - id=295; + id=298; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item216 { - position[]={829.20911,5.9928403,1895.3698}; + position[]={763.33765,6.108057,1833.8591}; azimut=50; - id=296; + id=299; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item217 { - position[]={832.16895,5.9897804,1897.9955}; + position[]={770.72192,6.0497842,1835.896}; azimut=50; - id=297; + id=300; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item218 { - position[]={835.12915,5.9828825,1900.2092}; + position[]={773.74713,6,1838.2719}; azimut=50; - id=298; + id=301; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item219 { - position[]={838.08929,5.9752903,1902.943}; + position[]={776.25476,6,1840.675}; azimut=50; - id=299; + id=302; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item220 { - position[]={739.97906,6,1814.1835}; + position[]={779.21497,6,1842.8888}; azimut=50; - id=300; + id=303; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item221 { - position[]={743.00427,6,1816.5593}; + position[]={782.17511,6.0099626,1845.6226}; azimut=50; - id=301; + id=304; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item222 { - position[]={745.5119,6,1818.9625}; + position[]={785.20032,6.0367942,1847.9984}; azimut=50; - id=302; + id=305; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item223 { - position[]={748.47211,6,1821.1763}; + position[]={788.16016,6,1850.6241}; azimut=50; - id=303; + id=306; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item224 { - position[]={751.43225,6,1823.91}; + position[]={791.12036,6.0031543,1852.8379}; azimut=50; - id=304; + id=307; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item225 { - position[]={754.45746,6,1826.2859}; + position[]={794.08051,6.0085816,1855.5717}; azimut=50; - id=305; + id=308; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item226 { - position[]={757.4173,6,1828.9116}; + position[]={796.4917,6,1857.3065}; azimut=50; - id=306; + id=309; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item227 { - position[]={760.3775,6.0315113,1831.1254}; + position[]={799.51691,6,1859.6824}; azimut=50; - id=307; + id=310; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item228 { - position[]={763.33765,6.108057,1833.8591}; + position[]={802.02454,6.0132709,1862.0856}; azimut=50; - id=308; + id=311; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item229 { - position[]={770.72192,6.0497842,1835.896}; + position[]={804.98474,6.0286632,1864.2993}; azimut=50; - id=309; + id=312; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item230 { - position[]={773.74713,6,1838.2719}; + position[]={807.94489,6.0137005,1867.0331}; azimut=50; - id=310; + id=313; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item231 { - position[]={776.25476,6,1840.675}; + position[]={810.97009,6,1869.4089}; azimut=50; - id=311; + id=314; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item232 { - position[]={779.21497,6,1842.8888}; + position[]={813.92993,6,1872.0347}; azimut=50; - id=312; + id=315; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item233 { - position[]={782.17511,6.0099626,1845.6226}; + position[]={816.89014,6,1874.2484}; azimut=50; - id=313; + id=316; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item234 { - position[]={785.20032,6.0367942,1847.9984}; + position[]={819.85028,6.0052857,1876.9822}; azimut=50; - id=314; + id=317; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item235 { - position[]={788.16016,6,1850.6241}; + position[]={820.00104,6.0066948,1877.5104}; azimut=50; - id=315; + id=318; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item236 { - position[]={791.12036,6.0031543,1852.8379}; + position[]={823.02625,6.0052633,1879.8862}; azimut=50; - id=316; + id=319; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item237 { - position[]={794.08051,6.0085816,1855.5717}; + position[]={825.53387,6,1882.2894}; azimut=50; - id=317; + id=320; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item238 { - position[]={796.4917,6,1857.3065}; + position[]={828.49408,6,1884.5032}; azimut=50; - id=318; + id=321; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item239 { - position[]={799.51691,6,1859.6824}; + position[]={831.45422,6,1887.2369}; azimut=50; - id=319; + id=322; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item240 { - position[]={802.02454,6.0132709,1862.0856}; + position[]={834.47943,6,1889.6128}; azimut=50; - id=320; + id=323; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item241 { - position[]={804.98474,6.0286632,1864.2993}; + position[]={837.43927,5.997015,1892.2385}; azimut=50; - id=321; + id=324; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item242 { - position[]={807.94489,6.0137005,1867.0331}; + position[]={840.39948,5.9881272,1894.4523}; azimut=50; - id=322; + id=325; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item243 { - position[]={810.97009,6,1869.4089}; + position[]={843.35962,5.9889588,1897.186}; azimut=50; - id=323; + id=326; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item244 { - position[]={813.92993,6,1872.0347}; + position[]={847.39404,5.9995766,1900.049}; azimut=50; - id=324; + id=327; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item245 { - position[]={816.89014,6,1874.2484}; + position[]={843.32288,5.9832916,1905.5531}; azimut=50; - id=325; + id=328; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item246 { - position[]={819.85028,6.0052857,1876.9822}; + position[]={837.78467,5.9788609,1912.0469}; azimut=50; - id=326; + id=329; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item247 { - position[]={820.00104,6.0066948,1877.5104}; + position[]={732.30066,6,1812.7396}; azimut=50; - id=327; + id=330; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item248 { - position[]={823.02625,6.0052633,1879.8862}; + position[]={728.10437,6,1817.1342}; azimut=50; - id=328; + id=331; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item249 { - position[]={825.53387,6,1882.2894}; + position[]={723.90808,6.0526814,1821.5598}; azimut=50; - id=329; + id=332; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item250 { - position[]={828.49408,6,1884.5032}; + position[]={746.51184,6.1592007,1839.6057}; azimut=50; - id=330; + id=333; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="TargetBootcampHumanSimple_F"; skill=0.60000002; }; class Item251 { - position[]={831.45422,6,1887.2369}; + position[]={757.67786,6.1238985,1847.8473}; azimut=50; - id=331; + id=334; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="TargetBootcampHumanSimple_F"; skill=0.60000002; }; class Item252 { - position[]={834.47943,6,1889.6128}; + position[]={770.25092,6.0724678,1856.8167}; azimut=50; - id=332; + id=335; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="TargetBootcampHumanSimple_F"; skill=0.60000002; }; class Item253 { - position[]={837.43927,5.997015,1892.2385}; + position[]={783.87952,6.024065,1866.1661}; azimut=50; - id=333; + id=336; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="TargetBootcampHumanSimple_F"; skill=0.60000002; }; class Item254 { - position[]={840.39948,5.9881272,1894.4523}; + position[]={796.22766,6.0123401,1874.8242}; azimut=50; - id=334; + id=337; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="TargetBootcampHumanSimple_F"; skill=0.60000002; }; class Item255 { - position[]={843.35962,5.9889588,1897.186}; + position[]={808.92352,6.0073528,1883.4091}; azimut=50; - id=335; + id=338; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="TargetBootcampHumanSimple_F"; skill=0.60000002; }; class Item256 { - position[]={847.39404,5.9995766,1900.049}; + position[]={821.53516,5.9971676,1892.1241}; azimut=50; - id=336; + id=339; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="TargetBootcampHumanSimple_F"; skill=0.60000002; }; class Item257 { - position[]={843.32288,5.9832916,1905.5531}; + position[]={835.62067,5.9811368,1901.0265}; azimut=50; - id=337; + id=340; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="TargetBootcampHumanSimple_F"; skill=0.60000002; }; class Item258 { - position[]={837.78467,5.9788609,1912.0469}; + position[]={847.23096,5.9945884,1905.9192}; azimut=50; - id=338; + id=341; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="TargetBootcampHumanSimple_F"; skill=0.60000002; }; class Item259 { - position[]={732.30066,6,1812.7396}; + position[]={849.21588,6,1903.2705}; azimut=50; - id=339; + id=342; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="TargetBootcampHumanSimple_F"; skill=0.60000002; }; class Item260 { - position[]={728.10437,6,1817.1342}; + position[]={851.36627,6,1900.9543}; azimut=50; - id=340; + id=343; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="TargetBootcampHumanSimple_F"; skill=0.60000002; }; class Item261 { - position[]={723.90808,6.0526814,1821.5598}; + position[]={835.84106,5.9827728,1915.3969}; azimut=50; - id=341; + id=344; side="EMPTY"; vehicle="Land_ClutterCutter_large_F"; skill=0.60000002; }; class Item262 - { - position[]={746.51184,6.1592007,1839.6057}; - azimut=50; - id=342; - side="EMPTY"; - vehicle="TargetBootcampHumanSimple_F"; - skill=0.60000002; - }; - class Item263 - { - position[]={757.67786,6.1238985,1847.8473}; - azimut=50; - id=343; - side="EMPTY"; - vehicle="TargetBootcampHumanSimple_F"; - skill=0.60000002; - }; - class Item264 - { - position[]={770.25092,6.0724678,1856.8167}; - azimut=50; - id=344; - side="EMPTY"; - vehicle="TargetBootcampHumanSimple_F"; - skill=0.60000002; - }; - class Item265 - { - position[]={783.87952,6.024065,1866.1661}; - azimut=50; - id=345; - side="EMPTY"; - vehicle="TargetBootcampHumanSimple_F"; - skill=0.60000002; - }; - class Item266 - { - position[]={796.22766,6.0123401,1874.8242}; - azimut=50; - id=346; - side="EMPTY"; - vehicle="TargetBootcampHumanSimple_F"; - skill=0.60000002; - }; - class Item267 - { - position[]={808.92352,6.0073528,1883.4091}; - azimut=50; - id=347; - side="EMPTY"; - vehicle="TargetBootcampHumanSimple_F"; - skill=0.60000002; - }; - class Item268 - { - position[]={821.53516,5.9971676,1892.1241}; - azimut=50; - id=348; - side="EMPTY"; - vehicle="TargetBootcampHumanSimple_F"; - skill=0.60000002; - }; - class Item269 - { - position[]={835.62067,5.9811368,1901.0265}; - azimut=50; - id=349; - side="EMPTY"; - vehicle="TargetBootcampHumanSimple_F"; - skill=0.60000002; - }; - class Item270 - { - position[]={847.23096,5.9945884,1905.9192}; - azimut=50; - id=350; - side="EMPTY"; - vehicle="TargetBootcampHumanSimple_F"; - skill=0.60000002; - }; - class Item271 - { - position[]={849.21588,6,1903.2705}; - azimut=50; - id=351; - side="EMPTY"; - vehicle="TargetBootcampHumanSimple_F"; - skill=0.60000002; - }; - class Item272 - { - position[]={851.36627,6,1900.9543}; - azimut=50; - id=352; - side="EMPTY"; - vehicle="TargetBootcampHumanSimple_F"; - skill=0.60000002; - }; - class Item273 - { - position[]={835.84106,5.9827728,1915.3969}; - azimut=50; - id=353; - side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; - skill=0.60000002; - }; - class Item274 { position[]={612.5592,6.1130395,1766.0806}; azimut=47; - id=354; + id=345; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item275 + class Item263 { position[]={615.22461,6.1123624,1763.1611}; azimut=47; - id=355; + id=346; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item276 + class Item264 { position[]={617.9707,6.1118112,1760.2085}; azimut=47; - id=356; + id=347; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item277 + class Item265 { position[]={620.83026,6.111268,1757.1453}; azimut=47; - id=357; - side="EMPTY"; - vehicle="Land_CncBarrier_stripes_F"; - leader=1; - skill=0.60000002; - }; - class Item278 - { - position[]={630.09808,6.1594801,1777.1102}; - azimut=47; - id=358; - side="EMPTY"; - vehicle="Land_CncBarrier_stripes_F"; - leader=1; - skill=0.60000002; - }; - class Item279 - { - position[]={632.84418,6.1555433,1774.1576}; - azimut=47; - id=359; - side="EMPTY"; - vehicle="Land_CncBarrier_stripes_F"; - leader=1; - skill=0.60000002; - }; - class Item280 - { - position[]={635.70374,6.1514592,1771.0944}; - azimut=47; - id=360; + id=348; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item281 + class Item266 { position[]={623.77191,6.1113486,1756.1417}; azimut=137; - id=361; + id=349; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item282 + class Item267 { position[]={627.08533,6.118546,1759.2059}; azimut=137; - id=362; + id=350; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item283 + class Item268 { position[]={630.12653,6.1373067,1762.0898}; azimut=137; - id=363; - side="EMPTY"; - vehicle="Land_CncBarrier_stripes_F"; - leader=1; - skill=0.60000002; - }; - class Item284 - { - position[]={633.28107,6.1302304,1765.0156}; - azimut=137; - id=364; - side="EMPTY"; - vehicle="Land_CncBarrier_stripes_F"; - leader=1; - skill=0.60000002; - }; - class Item285 - { - position[]={636.5719,6.1396632,1768.0618}; - azimut=137; - id=365; + id=351; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item286 + class Item269 { position[]={706.69177,6.0280285,1802.6276}; - id=366; + id=352; side="EMPTY"; vehicle="Land_HelipadEmpty_F"; leader=1; skill=0.60000002; text="respawn_obj"; }; - class Item287 + class Item270 { position[]={632.60626,6.1510415,1770.7809}; azimut=47; - id=367; + id=353; side="EMPTY"; vehicle="BlockConcrete_F"; skill=0.60000002; }; - class Item288 + class Item271 { position[]={629.41101,6.1462154,1767.7505}; azimut=47; - id=368; + id=354; side="EMPTY"; vehicle="BlockConcrete_F"; skill=0.60000002; }; - class Item289 + class Item272 { position[]={626.59137,6.1509094,1774.0905}; azimut=137; - id=369; + id=355; side="EMPTY"; vehicle="BlockConcrete_F"; skill=0.60000002; }; - class Item290 + class Item273 { - position[]={624.69867,6.1512594,1776.2457}; + position[]={627.0451,6.1574349,1778.5309}; azimut=47; - id=370; + id=356; side="EMPTY"; vehicle="Land_RampConcrete_F"; skill=0.60000002; }; - class Item291 - { - position[]={562.69476,5.9200697,1773.7856}; - azimut=137; - id=371; - side="EMPTY"; - vehicle="B_Slingload_01_Fuel_F"; - leader=1; - skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; - }; - class Item292 - { - position[]={569.4826,5.9463558,1770.5465}; - azimut=137; - id=372; - side="EMPTY"; - vehicle="B_Slingload_01_Medevac_F"; - leader=1; - skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; - }; - class Item293 - { - position[]={564.71368,5.9119935,1775.7009}; - azimut=137; - id=373; - side="EMPTY"; - vehicle="B_Slingload_01_Medevac_F"; - leader=1; - skill=0.60000002; - init="0=[this] execVM ""Functions\Vehicle\vehInit.sqf"";"; - }; - class Item294 + class Item274 { position[]={669.15594,6.0016575,1849.6006}; azimut=317; - id=374; + id=357; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; text="garage_spawner_0"; init="this enableSimulationGlobal false;"; }; - class Item295 + class Item275 { position[]={654.04657,6.0722308,1835.1169}; azimut=317; - id=375; + id=358; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; text="garage_spawner_1"; init="this enableSimulationGlobal false;"; }; - class Item296 + class Item276 { position[]={638.38983,6.1403613,1821.3391}; azimut=317; - id=376; + id=359; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; text="garage_spawner_2"; init="this enableSimulationGlobal false;"; }; - class Item297 + class Item277 { position[]={623.54932,6.1599998,1807.7683}; azimut=317; - id=377; + id=360; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; text="garage_spawner_3"; init="this enableSimulationGlobal false;"; }; - class Item298 + class Item278 { position[]={603.19305,6.1418161,1790.6688}; azimut=317; - id=378; + id=361; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; text="garage_spawner_4"; init="this enableSimulationGlobal false;"; }; - class Item299 + class Item279 { position[]={685.37543,6,1780.1918}; azimut=50; - id=379; + id=362; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item300 + class Item280 { position[]={681.90033,6.0063958,1784.2704}; azimut=50; - id=380; + id=363; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item301 + class Item281 { position[]={676.88818,6.0185676,1774.6417}; azimut=50; - id=381; + id=364; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item302 + class Item282 { position[]={673.41309,6.0461111,1778.7203}; azimut=50; - id=382; + id=365; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item303 + class Item283 { position[]={670.71643,6.0873852,1782.6809}; azimut=137; - id=383; + id=366; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; text="garage_spawner_5"; init="this enableSimulationGlobal false;"; }; - class Item304 + class Item284 { position[]={679.18158,6.0524573,1788.1989}; azimut=137; - id=384; + id=367; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; text="garage_spawner_6"; init="this enableSimulationGlobal false;"; }; - class Item305 + class Item285 { position[]={678.61255,6.0345254,1780.3463}; azimut=320; - id=385; + id=368; side="EMPTY"; vehicle="Land_HelipadEmpty_F"; leader=1; skill=0.60000002; text="garage_spawn_5"; }; - class Item306 + class Item286 { position[]={687.05109,6,1786.4639}; azimut=320; - id=386; + id=369; side="EMPTY"; vehicle="Land_HelipadEmpty_F"; leader=1; skill=0.60000002; text="garage_spawn_6"; }; - class Item307 + class Item287 { position[]={585.03925,5.9998951,1739.4398}; azimut=140; - id=387; + id=370; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item308 + class Item288 { position[]={588.39813,6,1742.255}; azimut=140; - id=388; + id=371; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item309 + class Item289 { position[]={598.42938,6.0542912,1750.6797}; azimut=140; - id=389; + id=372; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item310 + class Item290 { position[]={595.13855,6.0203271,1747.9103}; azimut=140; - id=390; + id=373; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item311 + class Item291 { position[]={591.71149,6,1745.0254}; azimut=140; - id=391; + id=374; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item312 + class Item292 { position[]={600.51654,6.0593295,1750.4819}; azimut=50; - id=392; + id=375; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item313 + class Item293 { position[]={611.72797,6.0272517,1737.1316}; azimut=50; - id=393; + id=376; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item314 + class Item294 { position[]={609.2088,6.0457883,1740.1292}; azimut=50; - id=394; + id=377; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item315 + class Item295 { position[]={602.94495,6.0579972,1747.554}; azimut=50; - id=395; + id=378; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item316 + class Item296 { position[]={609.66278,6.0466328,1740.8999}; azimut=5; - id=396; + id=379; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item317 + class Item297 { position[]={603.74005,6.0610042,1747.8864}; azimut=95; - id=397; + id=380; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item318 + class Item298 { position[]={598.12921,6,1723.8201}; azimut=140; - id=398; + id=381; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item319 + class Item299 { position[]={601.4881,6.0021806,1726.6353}; azimut=140; - id=399; + id=382; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item320 + class Item300 { position[]={611.51935,6.017067,1735.0599}; azimut=140; - id=400; + id=383; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item321 + class Item301 { position[]={608.22852,6,1732.2905}; azimut=140; - id=401; + id=384; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item322 + class Item302 { position[]={604.80145,6.0035982,1729.4056}; azimut=140; - id=402; + id=385; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item323 + class Item303 { position[]={610.77899,6.0364151,1738.7897}; azimut=230; - id=403; + id=386; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; text="garage_scrap"; init="this enableSimulationGlobal false;"; }; - class Item324 + class Item304 { position[]={680.40808,6.0993128,1803.2831}; azimut=50; - id=404; + id=387; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item325 + class Item305 { position[]={675.34668,6.0741754,1809.3374}; azimut=50; - id=405; + id=388; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item326 + class Item306 { position[]={675.979,6.0616417,1813.4052}; azimut=147; - id=406; + id=389; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item327 + class Item307 + { + position[]={682.68005,6.0322962,1817.7988}; + azimut=147; + id=390; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item308 + { + position[]={689.25104,6.011992,1822.1274}; + azimut=147; + id=391; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item309 + { + position[]={697.63477,5.9948435,1827.311}; + azimut=150; + id=392; + side="EMPTY"; + vehicle="Land_HBarrier_1_F"; + leader=1; + skill=0.60000002; + }; + class Item310 + { + position[]={681.74548,6.0610647,1807.8552}; + azimut=237; + id=393; + side="EMPTY"; + vehicle="Land_TableDesk_F"; + leader=1; + skill=0.60000002; + text="cmd_desk"; + }; + class Item311 + { + position[]={680.99677,6.0658684,1807.2673}; + azimut=237; + id=394; + side="EMPTY"; + vehicle="Land_OfficeChair_01_F"; + leader=1; + skill=0.60000002; + }; + class Item312 + { + position[]={681.58813,6.051743,1811.5081}; + azimut=57; + id=395; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item313 + { + position[]={681.92853,6.0522275,1810.9861}; + azimut=57; + id=396; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item314 + { + position[]={682.26898,6.05265,1810.4872}; + azimut=57; + id=397; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item315 + { + position[]={682.58679,6.0540066,1809.9645}; + azimut=57; + id=398; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item316 + { + position[]={682.92719,6.0577292,1809.4196}; + azimut=57; + id=399; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item317 + { + position[]={683.29022,6.0615406,1808.8978}; + azimut=57; + id=400; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item318 + { + position[]={683.63074,6.0651412,1808.399}; + azimut=57; + id=401; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item319 + { + position[]={683.97113,6.0688019,1807.8771}; + azimut=57; + id=402; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item320 + { + position[]={684.31158,6.0717525,1807.3782}; + azimut=57; + id=403; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item321 + { + position[]={684.62939,6.0724773,1806.8555}; + azimut=57; + id=404; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item322 + { + position[]={684.96979,6.0732937,1806.3105}; + azimut=57; + id=405; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item323 + { + position[]={685.33282,6.0743232,1805.7888}; + azimut=57; + id=406; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item324 { - position[]={682.68005,6.0322962,1817.7988}; - azimut=147; + position[]={683.086,6.0507331,1812.4402}; + azimut=57; id=407; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; + vehicle="Land_CampingChair_V1_F"; + leader=1; skill=0.60000002; }; - class Item328 + class Item325 { - position[]={689.25104,6.011992,1822.1274}; - azimut=147; + position[]={683.42639,6.0543938,1811.9182}; + azimut=57; id=408; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; + vehicle="Land_CampingChair_V1_F"; + leader=1; skill=0.60000002; }; - class Item329 + class Item326 { - position[]={697.63477,5.9948435,1827.311}; - azimut=150; + position[]={683.76685,6.0579939,1811.4193}; + azimut=57; id=409; side="EMPTY"; - vehicle="Land_HBarrier_1_F"; + vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item330 + class Item327 { - position[]={681.74548,6.0610647,1807.8552}; - azimut=237; + position[]={684.08466,6.0615063,1810.8966}; + azimut=57; id=410; side="EMPTY"; - vehicle="Land_TableDesk_F"; + vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; - text="cmd_desk"; }; - class Item331 + class Item328 { - position[]={680.99677,6.0658684,1807.2673}; - azimut=237; + position[]={684.42505,6.0652294,1810.3517}; + azimut=57; id=411; side="EMPTY"; - vehicle="Land_OfficeChair_01_F"; + vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item332 + class Item329 { - position[]={681.58813,6.051743,1811.5081}; + position[]={684.78809,6.0690413,1809.83}; azimut=57; id=412; side="EMPTY"; @@ -5208,9 +5309,9 @@ class Mission leader=1; skill=0.60000002; }; - class Item333 + class Item330 { - position[]={681.92853,6.0522275,1810.9861}; + position[]={685.1286,6.0726409,1809.3312}; azimut=57; id=413; side="EMPTY"; @@ -5218,9 +5319,9 @@ class Mission leader=1; skill=0.60000002; }; - class Item334 + class Item331 { - position[]={682.26898,6.05265,1810.4872}; + position[]={685.46899,6.0763025,1808.8092}; azimut=57; id=414; side="EMPTY"; @@ -5228,9 +5329,9 @@ class Mission leader=1; skill=0.60000002; }; - class Item335 + class Item332 { - position[]={682.58679,6.0540066,1809.9645}; + position[]={685.80945,6.0799022,1808.3103}; azimut=57; id=415; side="EMPTY"; @@ -5238,9 +5339,9 @@ class Mission leader=1; skill=0.60000002; }; - class Item336 + class Item333 { - position[]={682.92719,6.0577292,1809.4196}; + position[]={686.12726,6.083415,1807.7876}; azimut=57; id=416; side="EMPTY"; @@ -5248,9 +5349,9 @@ class Mission leader=1; skill=0.60000002; }; - class Item337 + class Item334 { - position[]={683.29022,6.0615406,1808.8978}; + position[]={686.46765,6.0857649,1807.2427}; azimut=57; id=417; side="EMPTY"; @@ -5258,9 +5359,9 @@ class Mission leader=1; skill=0.60000002; }; - class Item338 + class Item335 { - position[]={683.63074,6.0651412,1808.399}; + position[]={686.83069,6.0867944,1806.7209}; azimut=57; id=418; side="EMPTY"; @@ -5268,9 +5369,9 @@ class Mission leader=1; skill=0.60000002; }; - class Item339 + class Item336 { - position[]={683.97113,6.0688019,1807.8771}; + position[]={684.4704,6.0554767,1813.3026}; azimut=57; id=419; side="EMPTY"; @@ -5278,9 +5379,9 @@ class Mission leader=1; skill=0.60000002; }; - class Item340 + class Item337 { - position[]={684.31158,6.0717525,1807.3782}; + position[]={684.81079,6.0605907,1812.7806}; azimut=57; id=420; side="EMPTY"; @@ -5288,9 +5389,9 @@ class Mission leader=1; skill=0.60000002; }; - class Item341 + class Item338 { - position[]={684.62939,6.0724773,1806.8555}; + position[]={685.15125,6.0649233,1812.2817}; azimut=57; id=421; side="EMPTY"; @@ -5298,9 +5399,9 @@ class Mission leader=1; skill=0.60000002; }; - class Item342 + class Item339 { - position[]={684.96979,6.0732937,1806.3105}; + position[]={685.46906,6.0684361,1811.759}; azimut=57; id=422; side="EMPTY"; @@ -5308,9 +5409,9 @@ class Mission leader=1; skill=0.60000002; }; - class Item343 + class Item340 { - position[]={685.33282,6.0743232,1805.7888}; + position[]={685.80945,6.0721588,1811.2141}; azimut=57; id=423; side="EMPTY"; @@ -5318,9 +5419,9 @@ class Mission leader=1; skill=0.60000002; }; - class Item344 + class Item341 { - position[]={683.086,6.0507331,1812.4402}; + position[]={686.17249,6.0759706,1810.6924}; azimut=57; id=424; side="EMPTY"; @@ -5328,9 +5429,9 @@ class Mission leader=1; skill=0.60000002; }; - class Item345 + class Item342 { - position[]={683.42639,6.0543938,1811.9182}; + position[]={686.513,6.0795708,1810.1936}; azimut=57; id=425; side="EMPTY"; @@ -5338,9 +5439,9 @@ class Mission leader=1; skill=0.60000002; }; - class Item346 + class Item343 { - position[]={683.76685,6.0579939,1811.4193}; + position[]={686.85339,6.0832319,1809.6716}; azimut=57; id=426; side="EMPTY"; @@ -5348,9 +5449,9 @@ class Mission leader=1; skill=0.60000002; }; - class Item347 + class Item344 { - position[]={684.08466,6.0615063,1810.8966}; + position[]={687.19385,6.086832,1809.1727}; azimut=57; id=427; side="EMPTY"; @@ -5358,9 +5459,9 @@ class Mission leader=1; skill=0.60000002; }; - class Item348 + class Item345 { - position[]={684.42505,6.0652294,1810.3517}; + position[]={687.51166,6.0903444,1808.65}; azimut=57; id=428; side="EMPTY"; @@ -5368,9 +5469,9 @@ class Mission leader=1; skill=0.60000002; }; - class Item349 + class Item346 { - position[]={684.78809,6.0690413,1809.83}; + position[]={687.85205,6.0940666,1808.1051}; azimut=57; id=429; side="EMPTY"; @@ -5378,9 +5479,9 @@ class Mission leader=1; skill=0.60000002; }; - class Item350 + class Item347 { - position[]={685.1286,6.0726409,1809.3312}; + position[]={688.21509,6.0978785,1807.5834}; azimut=57; id=430; side="EMPTY"; @@ -5388,9 +5489,9 @@ class Mission leader=1; skill=0.60000002; }; - class Item351 + class Item348 { - position[]={685.46899,6.0763025,1808.8092}; + position[]={685.99097,6.0408425,1814.4846}; azimut=57; id=431; side="EMPTY"; @@ -5398,9 +5499,9 @@ class Mission leader=1; skill=0.60000002; }; - class Item352 + class Item349 { - position[]={685.80945,6.0799022,1808.3103}; + position[]={686.33136,6.0459561,1813.9626}; azimut=57; id=432; side="EMPTY"; @@ -5408,9 +5509,9 @@ class Mission leader=1; skill=0.60000002; }; - class Item353 + class Item350 { - position[]={686.12726,6.083415,1807.7876}; + position[]={686.67181,6.0508232,1813.4637}; azimut=57; id=433; side="EMPTY"; @@ -5418,9 +5519,9 @@ class Mission leader=1; skill=0.60000002; }; - class Item354 + class Item351 { - position[]={686.46765,6.0857649,1807.2427}; + position[]={686.98962,6.0559754,1812.941}; azimut=57; id=434; side="EMPTY"; @@ -5428,9 +5529,9 @@ class Mission leader=1; skill=0.60000002; }; - class Item355 + class Item352 { - position[]={686.83069,6.0867944,1806.7209}; + position[]={687.33002,6.0613337,1812.3961}; azimut=57; id=435; side="EMPTY"; @@ -5438,9 +5539,9 @@ class Mission leader=1; skill=0.60000002; }; - class Item356 + class Item353 { - position[]={684.4704,6.0554767,1813.3026}; + position[]={687.69305,6.0664144,1811.8744}; azimut=57; id=436; side="EMPTY"; @@ -5448,9 +5549,9 @@ class Mission leader=1; skill=0.60000002; }; - class Item357 + class Item354 { - position[]={684.81079,6.0605907,1812.7806}; + position[]={688.03357,6.0712814,1811.3756}; azimut=57; id=437; side="EMPTY"; @@ -5458,9 +5559,9 @@ class Mission leader=1; skill=0.60000002; }; - class Item358 + class Item355 { - position[]={685.15125,6.0649233,1812.2817}; + position[]={688.37396,6.076395,1810.8536}; azimut=57; id=438; side="EMPTY"; @@ -5468,9 +5569,9 @@ class Mission leader=1; skill=0.60000002; }; - class Item359 + class Item356 { - position[]={685.46906,6.0684361,1811.759}; + position[]={688.71442,6.0812626,1810.3547}; azimut=57; id=439; side="EMPTY"; @@ -5478,9 +5579,9 @@ class Mission leader=1; skill=0.60000002; }; - class Item360 + class Item357 { - position[]={685.80945,6.0721588,1811.2141}; + position[]={689.03223,6.0864148,1809.832}; azimut=57; id=440; side="EMPTY"; @@ -5488,9 +5589,9 @@ class Mission leader=1; skill=0.60000002; }; - class Item361 + class Item358 { - position[]={686.17249,6.0759706,1810.6924}; + position[]={689.37262,6.091773,1809.2871}; azimut=57; id=441; side="EMPTY"; @@ -5498,9 +5599,9 @@ class Mission leader=1; skill=0.60000002; }; - class Item362 + class Item359 { - position[]={686.513,6.0795708,1810.1936}; + position[]={689.73566,6.0968542,1808.7654}; azimut=57; id=442; side="EMPTY"; @@ -5508,19 +5609,21 @@ class Mission leader=1; skill=0.60000002; }; - class Item363 + class Item360 { - position[]={686.85339,6.0832319,1809.6716}; - azimut=57; + position[]={682.53192,6.0658627,1806.7511}; + azimut=237; id=443; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; + vehicle="Land_Laptop_unfolded_F"; leader=1; skill=0.60000002; + text="cmd_laptop"; + init="this attachTo[cmd_desk,[0,0,0.58]];"; }; - class Item364 + class Item361 { - position[]={687.19385,6.086832,1809.1727}; + position[]={687.56439,6.031858,1815.521}; azimut=57; id=444; side="EMPTY"; @@ -5528,9 +5631,9 @@ class Mission leader=1; skill=0.60000002; }; - class Item365 + class Item362 { - position[]={687.51166,6.0903444,1808.65}; + position[]={687.90479,6.0328031,1814.999}; azimut=57; id=445; side="EMPTY"; @@ -5538,9 +5641,9 @@ class Mission leader=1; skill=0.60000002; }; - class Item366 + class Item363 { - position[]={687.85205,6.0940666,1808.1051}; + position[]={688.24524,6.0376706,1814.5001}; azimut=57; id=446; side="EMPTY"; @@ -5548,9 +5651,9 @@ class Mission leader=1; skill=0.60000002; }; - class Item367 + class Item364 { - position[]={688.21509,6.0978785,1807.5834}; + position[]={688.56305,6.0428233,1813.9774}; azimut=57; id=447; side="EMPTY"; @@ -5558,9 +5661,9 @@ class Mission leader=1; skill=0.60000002; }; - class Item368 + class Item365 { - position[]={685.99097,6.0408425,1814.4846}; + position[]={688.90344,6.0481811,1813.4325}; azimut=57; id=448; side="EMPTY"; @@ -5568,9 +5671,9 @@ class Mission leader=1; skill=0.60000002; }; - class Item369 + class Item366 { - position[]={686.33136,6.0459561,1813.9626}; + position[]={689.26648,6.0532622,1812.9108}; azimut=57; id=449; side="EMPTY"; @@ -5578,9 +5681,9 @@ class Mission leader=1; skill=0.60000002; }; - class Item370 + class Item367 { - position[]={686.67181,6.0508232,1813.4637}; + position[]={689.60699,6.0581293,1812.412}; azimut=57; id=450; side="EMPTY"; @@ -5588,9 +5691,9 @@ class Mission leader=1; skill=0.60000002; }; - class Item371 + class Item368 { - position[]={686.98962,6.0559754,1812.941}; + position[]={689.94739,6.0632429,1811.89}; azimut=57; id=451; side="EMPTY"; @@ -5598,9 +5701,9 @@ class Mission leader=1; skill=0.60000002; }; - class Item372 + class Item369 { - position[]={687.33002,6.0613337,1812.3961}; + position[]={690.28784,6.0677261,1811.3911}; azimut=57; id=452; side="EMPTY"; @@ -5608,9 +5711,9 @@ class Mission leader=1; skill=0.60000002; }; - class Item373 + class Item370 { - position[]={687.69305,6.0664144,1811.8744}; + position[]={690.60565,6.0724549,1810.8684}; azimut=57; id=453; side="EMPTY"; @@ -5618,9 +5721,9 @@ class Mission leader=1; skill=0.60000002; }; - class Item374 + class Item371 { - position[]={688.03357,6.0712814,1811.3756}; + position[]={690.94604,6.0773587,1810.3235}; azimut=57; id=454; side="EMPTY"; @@ -5628,9 +5731,9 @@ class Mission leader=1; skill=0.60000002; }; - class Item375 + class Item372 { - position[]={688.37396,6.076395,1810.8536}; + position[]={691.30908,6.0819559,1809.8018}; azimut=57; id=455; side="EMPTY"; @@ -5638,260 +5741,352 @@ class Mission leader=1; skill=0.60000002; }; - class Item376 + class Item373 { - position[]={688.71442,6.0812626,1810.3547}; - azimut=57; + position[]={695.21124,5.9986386,1825.8096}; + azimut=150; id=456; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; + vehicle="Land_HBarrier_1_F"; + leader=1; + skill=0.60000002; + }; + class Item374 + { + position[]={694.07318,5.9928374,1843.0549}; + azimut=140; + id=457; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item375 + { + position[]={709.13666,6.0419507,1852.8446}; + azimut=140; + id=458; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item376 + { + position[]={703.02618,6.0231557,1827.2369}; + azimut=50; + id=459; + side="EMPTY"; + vehicle="Land_HBarrier_1_F"; leader=1; skill=0.60000002; }; class Item377 { - position[]={689.03223,6.0864148,1809.832}; - azimut=57; - id=457; + position[]={713.82568,6.0560155,1831.4098}; + azimut=230; + id=460; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_InfoStand_V1_F"; skill=0.60000002; + text="garage_spawner_med"; + init="this enableSimulationGlobal false;"; }; class Item378 { - position[]={689.37262,6.091773,1809.2871}; - azimut=57; - id=458; + position[]={667.43811,6.0650091,1778.0951}; + azimut=147; + id=461; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item379 { - position[]={689.73566,6.0968542,1808.7654}; - azimut=57; - id=459; + position[]={663.93365,6.0661235,1775.8878}; + azimut=147; + id=462; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item380 { - position[]={682.53192,6.0658627,1806.7511}; - azimut=237; - id=460; + position[]={660.31696,6.0655694,1772.6523}; + azimut=57; + id=463; side="EMPTY"; - vehicle="Land_Laptop_unfolded_F"; - leader=1; + vehicle="Land_InfoStand_V1_F"; skill=0.60000002; - text="cmd_laptop"; - init="this attachTo[cmd_desk,[0,0,0.58]];"; + text="garage_spawner_5_1"; + init="this enableSimulationGlobal false;_action = this addAction[""Spawn FOB"",{[{[]spawn JOC_fobSpawn},""BIS_fnc_spawn"",false,false] call BIS_fnc_MP;}];"; }; class Item381 { - position[]={687.56439,6.031858,1815.521}; - azimut=57; - id=461; + position[]={560.41785,5.9622097,1771.4056}; + azimut=137; + id=464; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HelipadEmpty_F"; skill=0.60000002; + text="logiSpawn_0"; }; class Item382 { - position[]={687.90479,6.0328031,1814.999}; - azimut=57; - id=462; + position[]={564.70349,5.9616699,1766.7859}; + azimut=137; + id=465; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HelipadEmpty_F"; skill=0.60000002; + text="logiSpawn_1"; }; class Item383 { - position[]={688.24524,6.0376706,1814.5001}; - azimut=57; - id=463; + position[]={569.09918,5.9953427,1762.1045}; + azimut=137; + id=466; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HelipadEmpty_F"; skill=0.60000002; + text="logiSpawn_2"; }; class Item384 { - position[]={688.56305,6.0428233,1813.9774}; - azimut=57; - id=464; + position[]={566.0481,5.9058518,1776.6222}; + azimut=137; + id=467; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HelipadEmpty_F"; skill=0.60000002; + text="logiSpawn_3"; }; class Item385 { - position[]={688.90344,6.0481811,1813.4325}; - azimut=57; - id=465; + position[]={570.41791,5.9416251,1772.092}; + azimut=137; + id=468; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HelipadEmpty_F"; skill=0.60000002; + text="logiSpawn_4"; }; class Item386 { - position[]={689.26648,6.0532622,1812.9108}; - azimut=57; - id=466; + position[]={574.67188,6.0053439,1767.3944}; + azimut=137; + id=469; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HelipadEmpty_F"; skill=0.60000002; + text="logiSpawn_5"; }; class Item387 { - position[]={689.60699,6.0581293,1812.412}; - azimut=57; - id=467; + position[]={569.40961,5.9768596,1755.149}; + azimut=317; + id=470; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_InfoStand_V1_F"; skill=0.60000002; + text="logiSpawner"; + init="this enableSimulationGlobal false;"; }; class Item388 { - position[]={689.94739,6.0632429,1811.89}; - azimut=57; - id=468; + position[]={579.74811,6.0439301,1770.9048}; + azimut=50; + id=471; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item389 { - position[]={690.28784,6.0677261,1811.3911}; - azimut=57; - id=469; + position[]={574.62427,5.9373426,1777.0114}; + azimut=50; + id=472; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item390 { - position[]={690.60565,6.0724549,1810.8684}; - azimut=57; - id=470; + position[]={569.57581,5.8647499,1783.042}; + azimut=50; + id=473; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item391 { - position[]={690.94604,6.0773587,1810.3235}; - azimut=57; - id=471; + position[]={737.26587,6.1599998,1875.4158}; + azimut=140; + id=474; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item392 { - position[]={691.30908,6.0819559,1809.8018}; - azimut=57; - id=472; + position[]={752.25079,6.1600013,1887.748}; + azimut=140; + id=475; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item393 { - position[]={695.21124,5.9986386,1825.8096}; - azimut=150; - id=473; + position[]={757.99823,6.1557403,1892.6964}; + azimut=140; + id=476; side="EMPTY"; - vehicle="Land_HBarrier_1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item394 { - position[]={694.07318,5.9928374,1843.0549}; + position[]={764.24121,6.1410117,1897.9132}; azimut=140; - id=474; + id=477; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item395 { - position[]={709.13666,6.0419507,1852.8446}; + position[]={770.11224,6.1292963,1902.8032}; azimut=140; - id=475; + id=478; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item396 { - position[]={703.02618,6.0231557,1827.2369}; + position[]={789.10223,5.9946156,1884.3596}; azimut=50; - id=476; + id=479; side="EMPTY"; - vehicle="Land_HBarrier_1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item397 { - position[]={713.82568,6.0560155,1831.4098}; - azimut=230; - id=477; + position[]={784.20447,6.0523071,1890.3152}; + azimut=50; + id=480; side="EMPTY"; - vehicle="Land_InfoStand_V1_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; - text="garage_spawner_med"; - init="this enableSimulationGlobal false;"; }; class Item398 { - position[]={667.43811,6.0650091,1778.0951}; - azimut=147; - id=478; + position[]={779.08063,6.1138892,1896.4218}; + azimut=50; + id=481; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item399 { - position[]={663.93365,6.0661235,1775.8878}; - azimut=147; - id=479; + position[]={774.16119,6.1190853,1902.3635}; + azimut=50; + id=482; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item400 { - position[]={660.31696,6.0655694,1772.6523}; - azimut=57; - id=480; + position[]={741.51855,6.0928273,1845.4869}; + azimut=50; + id=483; side="EMPTY"; - vehicle="Land_InfoStand_V1_F"; + vehicle="Land_HBarrier_1_F"; + leader=1; + skill=0.60000002; + }; + class Item401 + { + position[]={703.78943,5.9983859,1833.1108}; + azimut=50; + id=484; + side="EMPTY"; + vehicle="Land_HBarrier_1_F"; + leader=1; + skill=0.60000002; + }; + class Item402 + { + position[]={706.19495,6.0095601,1835.2001}; + azimut=50; + id=485; + side="EMPTY"; + vehicle="Land_HBarrier_1_F"; + leader=1; + skill=0.60000002; + }; + class Item403 + { + position[]={708.96381,6.0109749,1837.4241}; + azimut=50; + id=486; + side="EMPTY"; + vehicle="Land_HBarrier_1_F"; + leader=1; + skill=0.60000002; + }; + class Item404 + { + position[]={635.72449,6.154829,1773.6218}; + azimut=47; + id=487; + side="EMPTY"; + vehicle="BlockConcrete_F"; + skill=0.60000002; + }; + class Item405 + { + position[]={629.55524,6.1586504,1776.9323}; + azimut=137; + id=488; + side="EMPTY"; + vehicle="BlockConcrete_F"; + skill=0.60000002; + }; + class Item406 + { + position[]={635.63721,6.1200924,1764.3922}; + azimut=137; + id=489; + side="EMPTY"; + vehicle="BlockConcrete_F"; + skill=0.60000002; + }; + class Item407 + { + position[]={638.60107,6.1308441,1767.234}; + azimut=137; + id=490; + side="EMPTY"; + vehicle="BlockConcrete_F"; + skill=0.60000002; + }; + class Item408 + { + position[]={624.62555,6.1466708,1772.8774}; + azimut=47; + id=491; + side="EMPTY"; + vehicle="BlockConcrete_F"; skill=0.60000002; - text="garage_spawner_5_1"; - init="this enableSimulationGlobal false;_action = this addAction[""Spawn FOB"",{[{[]spawn JOC_fobSpawn},""BIS_fnc_spawn"",false,false] call BIS_fnc_MP;}];"; }; }; class Markers { - items=74; + items=76; class Item0 { position[]={4885.7231,339,9659.6299}; @@ -6436,7 +6631,6 @@ class Mission name="mrk_base"; text="HQ"; type="b_hq"; - colorName="ColorBlue"; }; class Item61 { @@ -6444,7 +6638,6 @@ class Mission name="mrk_base_car"; text="Motorized"; type="b_motor_inf"; - colorName="ColorBlue"; }; class Item62 { @@ -6452,7 +6645,6 @@ class Mission name="mrk_base_mech"; text="Armor"; type="b_motor_inf"; - colorName="ColorBlue"; }; class Item63 { @@ -6460,7 +6652,6 @@ class Mission name="mrk_base_air"; text="Helicopters"; type="b_air"; - colorName="ColorBlue"; }; class Item64 { @@ -6468,7 +6659,6 @@ class Mission name="mrk_base_log"; text="Logistics"; type="b_support"; - colorName="ColorBlue"; }; class Item65 { @@ -6476,7 +6666,6 @@ class Mission name="mrk_base_range"; text="Firing range"; type="b_installation"; - colorName="ColorBlue"; }; class Item66 { @@ -6484,7 +6673,6 @@ class Mission name="mrk_rep"; text="Repair point"; type="b_maint"; - colorName="ColorBlue"; }; class Item67 { @@ -6535,18 +6723,35 @@ class Mission drawBorder=1; }; class Item72 - { - position[]={640.55707,6.1599998,1795.178}; - name="spawnMarker"; - type="Empty"; - }; - class Item73 { position[]={597.05756,6.0098667,1736.8634}; name="mrk_base_scrap"; text="Vehicle scrap"; type="b_service"; - colorName="ColorBlue"; + }; + class Item73 + { + position[]={756.56409,6.0199656,1870.5588}; + name="mrk_base_parking"; + text="Vehicle parking"; + type="b_unknown"; + }; + class Item74 + { + position[]={11365.769,110.6305,15860.729}; + name="mrk_task_back"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorEAST"; + a=4000; + b=500; + }; + class Item75 + { + position[]={7775.334,256.00018,15835.953}; + name="mrk_task_text"; + text="Current objective: "; + type="mil_dot"; }; }; class Sensors @@ -6554,9 +6759,9 @@ class Mission items=3; class Item0 { - position[]={628.74908,6.1507149,1771.787}; - a=4.5; - b=8; + position[]={632.4848,6.1508994,1770.6746}; + a=6.5; + b=9; angle=137; rectangular=1; activationBy="WEST"; diff --git a/missionInit.sqf b/missionInit.sqf index 3ee4495..ec3e868 100644 --- a/missionInit.sqf +++ b/missionInit.sqf @@ -63,14 +63,12 @@ officerArray = []; fobTrucks = []; //Script vars -RydFFE_Interval = 300; //Sets interval between possible arty calls (I hope so atleast, I didn't make the addon) CHVD_allowNoGrass = false; // Set 'false' if you want to disable "Low" option for terrain (default: true) CHVD_maxView = 12000; // Set maximum view distance (default: 12000) CHVD_maxObj = 12000; // Set maximimum object view distance (default: 12000) //Public var for local scripts publicVariable "logisticsArray"; -publicVariable "tankMultiplier"; //Run init scripts //spawn -needs a seperate thread to work @@ -82,9 +80,11 @@ publicVariable "tankMultiplier"; []spawn JOC_perfLoop; //call -doesn't need a seperate thread +[]call JOC_initDepot; []call JOC_initTowns; + []call JOC_initAirfields; -//[]call JOC_initBases; -not implemented +//[]call JOC_initBases; -need compositions []call JOC_initAA; []call JOC_initArty; //Uses AA []call JOC_initRadio; //Uses AA diff --git a/onPlayerRespawn.sqf b/onPlayerRespawn.sqf index 16d6424..937a9de 100644 --- a/onPlayerRespawn.sqf +++ b/onPlayerRespawn.sqf @@ -1,7 +1,7 @@ if(side player == west)then{ player setPosASL getPosASL respawn_obj; }; -if(side == east)then{ +if(side player == east)then{ _airfieldID = [false,airfieldOccup]call Zen_ValueFindInArray; _mrkN = format ["mrk_infSpawn_%1",_airfieldID]; _respawnPos = getMarkerPos _mrkN; From a2d31be11cdf1b31296045ce913944fbd4255849 Mon Sep 17 00:00:00 2001 From: Jochem Date: Fri, 25 Sep 2015 20:34:12 +0200 Subject: [PATCH 13/17] 250915 -Changed map to Altis -New base -Changes to scripts, making the mission easier to port -Various improvements and fixes --- Data/range.jpg | Bin 0 -> 275343 bytes Description.ext | 19 +- Functions/AI/jetMonitor.sqf | 14 +- Functions/AI/spawnAirfield.sqf | 4 +- Functions/AI/spawnZone.sqf | 14 - Functions/AI/taskJet.sqf | 13 +- Functions/Caching/cacheGroup.sqf | 50 +- Functions/Caching/cacheInit.sqf | 29 +- Functions/Commander/attack.sqf | 24 +- Functions/Commander/convoy.sqf | 3 - Functions/Commander/heli.sqf | 5 - Functions/Performance/addToZeus.sqf | 12 + Functions/Performance/loop.sqf | 11 +- Functions/Vehicle/Garage/garageFnc.sqf | 8 +- Functions/Vehicle/Garage/main.sqf | 8 + Functions/fn_compile.sqf | 1 + initPlayerLocal.sqf | 4 +- mission.sqm | 5733 +++++++++++++++--------- missionInit.sqf | 17 +- 19 files changed, 3751 insertions(+), 2218 deletions(-) create mode 100644 Data/range.jpg create mode 100644 Functions/Performance/addToZeus.sqf diff --git a/Data/range.jpg b/Data/range.jpg new file mode 100644 index 0000000000000000000000000000000000000000..67031c1e25763c385bd6221c3826d6028dfbf3f6 GIT binary patch literal 275343 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�*jg>TS$zf#1g_upk|)JCM~Cg^w?bI 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 1}; while{(count (list _trgO)) >= 5}do{ if((count (list _trgB)) >= 5)then{ - [airfieldOccup,_id,true] call Zen_ArrayInsert; + airfieldOccup set [_id,true]; sleep 30; }else{ - [airfieldOccup,_id,false] call Zen_ArrayInsert; + airfieldOccup set [_id,false]; }; }; diff --git a/Functions/AI/spawnZone.sqf b/Functions/AI/spawnZone.sqf index 3f44102..7be662b 100644 --- a/Functions/AI/spawnZone.sqf +++ b/Functions/AI/spawnZone.sqf @@ -33,7 +33,6 @@ if((_inf select 0) > 0)then{ _locationS = [_spawnMarkerName,0,0,1] call Zen_FindGroundPosition; _locationS = [_locationS,1,1] call Zen_ExtendPosition; _groupV = [_locationS, east, "infantry", 4,"Basic"] call Zen_SpawnInfantry; - zeusMod addCuratorEditableObjects [(units _groupV),false]; if(_inf select 1)then{ [_groupV, _spawnMarkerName, [], [0,360],"limited","safe"] spawn Zen_OrderInfantryPatrol; (leader _groupV) setVariable ["patrol",[_spawnMarkerName, [],[0,360],"limited","safe"],true]; @@ -49,12 +48,9 @@ if((_car select 0) > 0)then{ _locationS = [_spawnMarkerName,0,0,1,[1,100]] call Zen_FindGroundPosition; _veh = [_locationS,(carPool call BIS_fnc_selectRandom)] call Zen_SpawnVehicle; createVehicleCrew _veh; - zeusMod addCuratorEditableObjects [[_veh],false]; - zeusMod addCuratorEditableObjects [(crew _veh),false]; _count = (_veh emptyPositions "cargo"); _groupV = [[0,0,0], east, "infantry", (_count - 1),"Basic"] call Zen_SpawnInfantry; _units = (units _groupV); - zeusMod addCuratorEditableObjects [(units _groupV),false]; [_units,_veh] spawn Zen_MoveInVehicle; if(_car select 1)then{ [_veh, _spawnMarkerName, [], [0,360],"limited",true] spawn Zen_OrderVehiclePatrol; @@ -71,8 +67,6 @@ if((_apc select 0) > 0)then{ _locationS = [_spawnMarkerName,0,0,1,[1,100]] call Zen_FindGroundPosition; _veh = [_locationS,(apcPool call BIS_fnc_selectRandom)] call Zen_SpawnVehicle; createVehicleCrew _veh; - zeusMod addCuratorEditableObjects [[_veh],false]; - zeusMod addCuratorEditableObjects [(crew _veh),false]; if(_apc select 1)then{ [_veh, _spawnMarkerName, [], [0,360],"limited",true] spawn Zen_OrderVehiclePatrol; _veh setVariable ["patrol",[_spawnMarkerName, [], [0,360],"limited",true],true]; @@ -88,8 +82,6 @@ if((_ifv select 0) > 0)then{ _locationS = [_spawnMarkerName,0,0,1,[1,100]] call Zen_FindGroundPosition; _veh = [_locationS,(ifvPool call BIS_fnc_selectRandom)] call Zen_SpawnVehicle; createVehicleCrew _veh; - zeusMod addCuratorEditableObjects [[_veh],false]; - zeusMod addCuratorEditableObjects [(crew _veh),false]; if(_ifv select 1)then{ [_veh, _spawnMarkerName, [], [0,360],"limited",true] spawn Zen_OrderVehiclePatrol; _veh setVariable ["patrol",[_spawnMarkerName, [], [0,360],"limited",true],true]; @@ -105,8 +97,6 @@ if((_tank select 0) > 0)then{ _locationS = [_spawnMarkerName,0,0,1,[1,100]] call Zen_FindGroundPosition; _veh = [_locationS,(tankPool call BIS_fnc_selectRandom)] call Zen_SpawnVehicle; createVehicleCrew _veh; - zeusMod addCuratorEditableObjects [[_veh],false]; - zeusMod addCuratorEditableObjects [(crew _veh),false]; if(_tank select 1)then{ [_veh, _spawnMarkerName, [], [0,360],"limited",true] spawn Zen_OrderVehiclePatrol; _veh setVariable ["patrol",[_spawnMarkerName, [], [0,360],"limited",true],true]; @@ -131,8 +121,6 @@ if(_heliCount > 0)then{ _pool = casPool }; _heli = [_locationS,(_pool call BIS_fnc_selectRandom),50] call Zen_SpawnHelicopter; - zeusMod addCuratorEditableObjects [[_heli],false]; - zeusMod addCuratorEditableObjects [(crew _heli),false]; _j = _j + 1; }; }; @@ -145,8 +133,6 @@ if(_boatCount > 0)then{ while{_j < _boatCount} do{ _locationS = [_spawnMarkerName,0,0,2] call Zen_FindGroundPosition; _boatV = [_locationS,["O_Boat_Armed_01_hmg_F"]] call Zen_SpawnBoat; - zeusMod addCuratorEditableObjects [[_boatV],false]; - zeusMod addCuratorEditableObjects [(crew _boatV),false]; if(_boatPatrol)then{ [_boatV, _spawnMarkerName, []] spawn Zen_OrderBoatPatrol; }; diff --git a/Functions/AI/taskJet.sqf b/Functions/AI/taskJet.sqf index 8e05967..0fe4b86 100644 --- a/Functions/AI/taskJet.sqf +++ b/Functions/AI/taskJet.sqf @@ -7,10 +7,13 @@ private ["_targetA"]; _targetA = _this select 0; -//Check if active -if(jetActive)then{ - jetTargets = jetTargets + _targetA; -}; +//Check if already listed +{ + if(!(_x in jetTargets))then{ + jetTargets pushBack _x; + }; +} forEach _targetA; + if(!(jetActive))then{ jetActive = true; @@ -33,4 +36,4 @@ if(!(jetActive))then{ jetTargets = _targetA; Sleep 5; []call JOC_jetMonitor; -}; \ No newline at end of file +}; diff --git a/Functions/Caching/cacheGroup.sqf b/Functions/Caching/cacheGroup.sqf index 0a88ce3..cdf274a 100644 --- a/Functions/Caching/cacheGroup.sqf +++ b/Functions/Caching/cacheGroup.sqf @@ -2,22 +2,46 @@ //Script made by Jochem// ///////////////////////// private ["_groups"]; -_groups = _this select 0; +_group = _this select 0; { - _leader = (leader _x); - if(isNil{_leader getVariable "JOC_disable_caching"})then{ - _leader setVariable ["JOC_disable_caching",false,true]; + if(isNil{_x getVariable "JOC_disable_caching"} and (_x isKindOf "man"))then{ + _x setVariable ["JOC_disable_caching",false,true]; + _name = [10] call Zen_StringGenerateRandom; + _x setVehicleVarName _name; }; - if(!(_leader getVariable "JOC_disable_caching"))then{ - _units = (units(group _leader)); + if(isNil{_x getVariable "JOC_disable_caching"} and !(_x isKindOf "man"))then{ + _name = [10] call Zen_StringGenerateRandom; + _x setVehicleVarName _name; { + _x setVariable ["JOC_disable_caching",false,true]; _name = [10] call Zen_StringGenerateRandom; - _leader setVehicleVarName _name; - _leader enableSimulationGlobal false; _leader hideObjectGlobal true; - [_leader] joinSilent cacheGroup; - }forEach _units; - _leader setVariable ["leader",true,true]; - _leader setVariable ["units",_units,true]; + _x setVehicleVarName _name; + }forEach (crew _x); }; -}forEach _groups; \ No newline at end of file +}forEach _list; + +{ + if(!(_x getVariable "JOC_disable_caching"))then{ + if(_x == (leader(group _x)) and (group _x) != cacheGroup)then{ + _units = (units(group _x)); + _x setVariable ["leader",true,true]; + _x setVariable ["units",_units,true]; + { + _x enableSimulationGlobal false; + _x hideObjectGlobal true; + [_x] joinSilent cacheGroup; + }forEach _units; + }; + if(!(_x isKindOf "man"))then{ + { + if(!(_x getVariable "JOC_disable_caching"))then{ + _x enableSimulationGlobal false; + _x hideObjectGlobal true; + _x setVariable ["vehicle",vehicle _x]; + [_x] joinSilent cacheGroup; + }; + }forEach (crew _x); + }; + }; +}forEach (units _group); diff --git a/Functions/Caching/cacheInit.sqf b/Functions/Caching/cacheInit.sqf index c112863..bf80d0c 100644 --- a/Functions/Caching/cacheInit.sqf +++ b/Functions/Caching/cacheInit.sqf @@ -2,42 +2,21 @@ //Script made by Jochem// ///////////////////////// _startloc = [1000,1000,0]; -_hor = 8; -_vert = 8; - -cacheTriggers =[]; -_trgA0 = []; -_trgA1 = []; -_trgA2 = []; -_trgA3 = []; -_trgA4 = []; -_trgA5 = []; -_trgA6 = []; -_trgA7 = []; - -cacheTriggers = [ -_trgA0, -_trgA1, -_trgA2, -_trgA3, -_trgA4, -_trgA5, -_trgA6, -_trgA7 -]; +//_hor = 8; +//_vert = 8; +_hor = worldSize / 2000; +_vert = worldSize / 2000; _xA = 0; _yA = 0; _location = _startloc; while {_xA < _hor}do{ while {_yA < _vert}do{ - _array = cacheTriggers select _xA; _trg = createTrigger ["EmptyDetector",_location,true]; _trg setTriggerArea [4000,4000,4000,true]; _trg setTriggerActivation ["WEST","PRESENT", true]; _trg setTriggerStatements ["this","[getPos thisTrigger] spawn JOC_unCache","[getPos thisTrigger] spawn JOC_cache"]; _trg setTriggerTimeout [5,5,5,true]; - [_array, _yA, _trg] call Zen_ArrayInsert; _yA = _yA + 1; _location = [_location,2000,0] call Zen_ExtendPosition; diff --git a/Functions/Commander/attack.sqf b/Functions/Commander/attack.sqf index e3945c9..182690d 100644 --- a/Functions/Commander/attack.sqf +++ b/Functions/Commander/attack.sqf @@ -14,16 +14,16 @@ while{_ok == 0}do{ _count = 0; _capPrev = true; }; - + _lastOcc = bluTowns select ((count bluTowns - 1) - _count); _capitalOcc = ((capitalName in opTownsN) and _capPrev); - + if(_capitalOcc)then{ _targetTown = ((nearestLocations [getPosATL player, ["NameCityCapital"], 35000])select 0); }else{ _targetTown = _lastOcc; }; - + { _disP = (getPos _targetTown) distance (getPos _x); if(_disP <= _dis)then{ @@ -31,11 +31,11 @@ while{_ok == 0}do{ _startTown = _x; }; }forEach opTowns; - + if(_dis <= 3000)then{ _ok = 1; }; - + _count = _count + 1; }; _targetP = getPos _targetTown; @@ -65,7 +65,7 @@ if(_targetTown in (nearestLocations [getPosATL player, ["NameVillage"], 35000])) }; sleep 600; - + //Get spawn location _locationSpawn = getPos _startTown; @@ -77,10 +77,7 @@ while{_x < _truckCount} do{ [_veh,east] call Zen_SpawnVehicleCrew; _count = (_veh emptyPositions "cargo") - 2; _group = [_locationS, east, "infantry", _count,"Basic"] call Zen_SpawnInfantry; - zeusMod addCuratorEditableObjects [(units _group),false]; - [_group,_veh] call Zen_MoveInVehicle; - zeusMod addCuratorEditableObjects [[_veh],false]; - zeusMod addCuratorEditableObjects [(crew _veh),false]; + [_group,_veh] call Zen_MoveInVehicle; [_veh, _targetP,300,[0,360],"full"] spawn Zen_OrderVehiclePatrol; _veh setDamage 0; _x = _x + 1; @@ -94,14 +91,11 @@ while{_x < _apcCount} do{ [_veh,east] call Zen_SpawnVehicleCrew; _count = (_veh emptyPositions "cargo"); _group = [_locationS, east, "infantry", _count,"Basic"] call Zen_SpawnInfantry; - [_group,_veh] call Zen_MoveInVehicle; - zeusMod addCuratorEditableObjects [[_veh],false]; - zeusMod addCuratorEditableObjects [(crew _veh),false]; - [_veh, _targetP,300,[0,360],"full"] spawn Zen_OrderVehiclePatrol; + [_group,_veh] call Zen_MoveInVehicle; _veh setDamage 0; _x = _x + 1; }; sleep 1200; deleteMarker _name; -cmdAttack = true; \ No newline at end of file +cmdAttack = true; diff --git a/Functions/Commander/convoy.sqf b/Functions/Commander/convoy.sqf index 6dfd02b..43f15a4 100644 --- a/Functions/Commander/convoy.sqf +++ b/Functions/Commander/convoy.sqf @@ -53,9 +53,6 @@ _crew = []; }forEach _convoyO; _group = group (_convoyO select 0); -zeusMod addCuratorEditableObjects [_convoyO,false]; -zeusMod addCuratorEditableObjects [_crew,false]; - _group setFormation "COLUMN"; _group setBehaviour "SAFE"; _group move _targetP; diff --git a/Functions/Commander/heli.sqf b/Functions/Commander/heli.sqf index 6f11cb9..4420fe5 100644 --- a/Functions/Commander/heli.sqf +++ b/Functions/Commander/heli.sqf @@ -9,16 +9,11 @@ while{true}do{ _airfield2 = [_airfield,40,0] call Zen_ExtendPosition; _heli1 = [_airfield2,(casPool call BIS_fnc_selectRandom),50] call Zen_SpawnHelicopter; - zeusMod addCuratorEditableObjects [[_heli1],false]; - zeusMod addCuratorEditableObjects [(crew _heli1),false]; _heli2 = [_airfield,(airPool call BIS_fnc_selectRandom),0] call Zen_SpawnHelicopter; (vehicle _heli1) setVariable["JOC_caching_disabled",true]; (vehicle _heli2) setVariable["JOC_caching_disabled",true]; _count = (_heli2 emptyPositions "cargo"); _groupV = [_airfield, east, "infantry", (_count - 1),"Basic"] call Zen_SpawnInfantry; - zeusMod addCuratorEditableObjects [[_heli2],false]; - zeusMod addCuratorEditableObjects [(crew _heli2),false]; - zeusMod addCuratorEditableObjects [(units _groupV),false]; [_groupV,_heli2] spawn Zen_MoveInVehicle; [[_heli1,_heli2],"mrk_area",blackMarkers,[0,360],"full"]spawn Zen_OrderVehiclePatrol; diff --git a/Functions/Performance/addToZeus.sqf b/Functions/Performance/addToZeus.sqf new file mode 100644 index 0000000..e9e40cc --- /dev/null +++ b/Functions/Performance/addToZeus.sqf @@ -0,0 +1,12 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +{ + _curator = _x; + _curator addCuratorEditableObjects [(allUnits - [cacheGroupLeader]),false]; + _curator addCuratorEditableObjects [allDead,false]; + _curator addCuratorEditableObjects [allMines,false]; + + _obj = ((nearestObjects [(getMarkerPos "mrk_area"), ["All"], (worldSize*2^0.5)]) - baseObjects); + _curator addCuratorEditableObjects [_obj,false]; +}forEach allCurators; diff --git a/Functions/Performance/loop.sqf b/Functions/Performance/loop.sqf index 9268581..1680b3f 100644 --- a/Functions/Performance/loop.sqf +++ b/Functions/Performance/loop.sqf @@ -1,8 +1,17 @@ ///////////////////////// //Script made by Jochem// ///////////////////////// +baseObjects = nearestObjects [(getMarkerPos "mrk_safeZone"), ["All"], 1200]; + +[]spawn { + while{true}do{ + []call JOC_addToZeus; + sleep 30; + }; +}; + while{true}do{ []call JOC_objectRemove; []call JOC_itemRemove; sleep 600; -}; \ No newline at end of file +}; diff --git a/Functions/Vehicle/Garage/garageFnc.sqf b/Functions/Vehicle/Garage/garageFnc.sqf index 42aba47..4515650 100644 --- a/Functions/Vehicle/Garage/garageFnc.sqf +++ b/Functions/Vehicle/Garage/garageFnc.sqf @@ -31,10 +31,8 @@ if(_dis > 5)then{}else{ }; [_veh]spawn JOC_vehInit; - - [[[_veh],{(_this select 0) setVehicleLock "LOCKED";}],"BIS_fnc_spawn",true,true] call BIS_fnc_MP; - hint format["Vehicle will be ready in %1 minute(s)", (_time/60)]; + _spawnObj setVariable["unable",true]; + hint format["Pad will be available in %1 minutes", (_time/60)]; sleep _time; - [[[_veh],{(_this select 0) setVehicleLock "UNLOCKED";}],"BIS_fnc_spawn",true,true] call BIS_fnc_MP; - hint "Vehicle is ready"; + _spawnObj setVariable["unable",false]; }; diff --git a/Functions/Vehicle/Garage/main.sqf b/Functions/Vehicle/Garage/main.sqf index b1df7f0..fd84c5e 100644 --- a/Functions/Vehicle/Garage/main.sqf +++ b/Functions/Vehicle/Garage/main.sqf @@ -9,6 +9,7 @@ _medA = ["RHS_UH60M_MEV","rhsusf_m113_usarmy_medical","B_Truck_01_medical_F"]; garage_spawn_0 setVariable["count",0]; garage_spawner_0 addAction ["Request vehicle",{ + if(garage_spawn_0 getVariable "unable")exitWith{hint "Pad not available"}; _veh = (nearestObjects [(getPos garage_spawn_0),["All"],3] - [garage_spawn_0]); if(((count _veh) >= 1) or ((garage_spawn_0 getVariable "count") >= 1))then{ hint "Pad not clear or max vehicles reached"; @@ -23,6 +24,7 @@ garage_spawner_0 addAction ["Request vehicle",{ garage_spawn_1 setVariable["count",0]; garage_spawner_1 addAction ["Request vehicle",{ + if(garage_spawn_1 getVariable "unable")exitWith{hint "Pad not available"}; _veh = (nearestObjects [(getPos garage_spawn_1),["All"],3] - [garage_spawn_1]); if(((count _veh) >= 1) or ((garage_spawn_1 getVariable "count") >= 1))then{ hint "Pad not clear or max vehicles reached"; @@ -37,6 +39,7 @@ garage_spawner_1 addAction ["Request vehicle",{ garage_spawn_2 setVariable["count",0]; garage_spawner_2 addAction ["Request vehicle",{ + if(garage_spawn_2 getVariable "unable")exitWith{hint "Pad not available"}; _veh = (nearestObjects [(getPos garage_spawn_2),["All"],3] - [garage_spawn_2]); if(((count _veh) >= 1) or ((garage_spawn_2 getVariable "count") >= 1))then{ hint "Pad not clear or max vehicles reached"; @@ -51,6 +54,7 @@ garage_spawner_2 addAction ["Request vehicle",{ garage_spawn_3 setVariable["count",0]; garage_spawner_3 addAction ["Request vehicle",{ + if(garage_spawn_3 getVariable "unable")exitWith{hint "Pad not available"}; _veh = (nearestObjects [(getPos garage_spawn_3),["All"],3] - [garage_spawn_3]); if(((count _veh) >= 1) or ((garage_spawn_3 getVariable "count") >= 1))then{ hint "Pad not clear or max vehicles reached"; @@ -65,6 +69,7 @@ garage_spawner_3 addAction ["Request vehicle",{ garage_spawn_4 setVariable["count",0]; garage_spawner_4 addAction ["Request vehicle",{ + if(garage_spawn_4 getVariable "unable")exitWith{hint "Pad not available"}; _veh = (nearestObjects [(getPos garage_spawn_4),["All"],3] - [garage_spawn_4]); if(((count _veh) >= 1) or ((garage_spawn_4 getVariable "count") >= 1))then{ hint "Pad not clear or max vehicles reached"; @@ -79,6 +84,7 @@ garage_spawner_4 addAction ["Request vehicle",{ garage_spawn_5 setVariable["count",0]; garage_spawner_5 addAction ["Request vehicle",{ + if(garage_spawn_5 getVariable "unable")exitWith{hint "Pad not available"}; _veh = (nearestObjects [(getPos garage_spawn_5),["All"],3] - [garage_spawn_5]); if(((count _veh) >= 1) or ((garage_spawn_5 getVariable "count") >= 12))then{ hint "Pad not clear or max vehicles reached"; @@ -93,6 +99,7 @@ garage_spawner_5 addAction ["Request vehicle",{ garage_spawn_6 setVariable["count",0]; garage_spawner_6 addAction ["Request vehicle",{ + if(garage_spawn_6 getVariable "unable")exitWith{hint "Pad not available"}; _veh = (nearestObjects [(getPos garage_spawn_6),["All"],3] - [garage_spawn_6]); if(((count _veh) >= 1) or ((garage_spawn_6 getVariable "count") >= 4))then{ hint "Pad not clear or max vehicles reached"; @@ -107,6 +114,7 @@ garage_spawner_6 addAction ["Request vehicle",{ garage_spawn_med setVariable["count",0]; garage_spawner_med addAction ["Request vehicle",{ + if(garage_spawn_med getVariable "unable")exitWith{hint "Pad not available"}; _veh = (nearestObjects [(getPos garage_spawn_med),["All"],3] - [garage_spawn_med]); if(((count _veh) >= 1) or ((garage_spawn_med getVariable "count") >= 4))then{ hint "Pad not clear or max vehicles reached"; diff --git a/Functions/fn_compile.sqf b/Functions/fn_compile.sqf index ec8a00f..951746d 100644 --- a/Functions/fn_compile.sqf +++ b/Functions/fn_compile.sqf @@ -53,6 +53,7 @@ JOC_spawnComposition = compileFinal preprocessFileLineNumbers "Functions\Logisti JOC_perfLoop = compileFinal preprocessFileLineNumbers "Functions\Performance\loop.sqf"; JOC_objectRemove = compileFinal preprocessFileLineNumbers "Functions\Performance\objectRemove.sqf"; JOC_itemRemove = compileFinal preprocessFileLineNumbers "Functions\Performance\itemRemove.sqf"; +JOC_addToZeus = compileFinal preprocessFileLineNumbers "Functions\Performance\addToZeus.sqf"; //Player JOC_playerLoop = compileFinal preprocessFileLineNumbers "Functions\Player\playerLoop.sqf"; diff --git a/initPlayerLocal.sqf b/initPlayerLocal.sqf index 96447e0..75f0ea2 100644 --- a/initPlayerLocal.sqf +++ b/initPlayerLocal.sqf @@ -19,9 +19,9 @@ _textName = format["%1 %2",_rank,_name]; Sleep 10; -0=["Gemini",_textDate,_textName,"SE Chernarus"] spawn BIS_fnc_infoText; +0=["Gemini",_textDate,_textName,"Chernarus"] spawn BIS_fnc_infoText; []spawn JOC_playerLoop; []spawn JOC_playerClick; []call JOC_garage; -["KeyDown", "_this call JOC_playerButton"] call CBA_fnc_addDisplayHandler; \ No newline at end of file +["KeyDown", "_this call JOC_playerButton"] call CBA_fnc_addDisplayHandler; diff --git a/mission.sqm b/mission.sqm index 59bedc4..20323a0 100644 --- a/mission.sqm +++ b/mission.sqm @@ -19,18 +19,12 @@ class Mission "ace_map", "A3_Characters_F_BLUFOR", "a3_characters_f", - "tf47_launchers", - "A3_Modules_F", "A3_Weapons_F_Ammoboxes", "A3_Structures_F_Mil_Fortification", "A3_Structures_F_Mil_Flags", "A3_Structures_F_Mil_Helipads", - "aia_misc_e_config", "A3_Structures_F_Training", - "A3_Structures_F_System", - "A3_Structures_F_Bootcamp_Training", "A3_Structures_F_Walls", - "aia_chernarus_config", "3DEN", "ace_sitting", "ace_nametags", @@ -41,7 +35,14 @@ class Mission "A3_Structures_F_Items_Electronics", "A3_Characters_F_OPFOR", "ace_cargo", - "ace_repair" + "ace_repair", + "a3_map_altis", + "A3_Structures_F_Mil_Cargo", + "A3_Soft_F_Gamma_HEMTT", + "A3_Structures_F_Mil_Radar", + "A3_Structures_F_Mil_BagFence", + "A3_Structures_F_Ind_Cargo", + "A3_Structures_F_Items_Vessels" }; addOnsAuto[]= { @@ -61,29 +62,30 @@ class Mission "ace_map", "A3_Characters_F_BLUFOR", "a3_characters_f", - "tf47_launchers", - "A3_Modules_F", "ace_sitting", "ace_nametags", "A3_Characters_F_OPFOR", "ace_repair", "ace_hearing", "ace_interaction", - "A3_Weapons_F_Ammoboxes", - "A3_Structures_F_Mil_Fortification", "A3_Structures_F_Mil_Flags", "A3_Structures_F_Mil_Helipads", - "aia_misc_e_config", - "A3_Structures_F_Training", - "A3_Structures_F_System", - "A3_Structures_F_Bootcamp_Training", - "A3_Structures_F_Walls", "A3_Structures_F_Civ_InfoBoards", + "A3_Structures_F_Walls", "A3_Structures_F_Furniture", "A3_Structures_F_Heli_Furniture", "A3_Structures_F_Civ_Camping", "A3_Structures_F_Items_Electronics", - "aia_chernarus_config" + "A3_Structures_F_Mil_Fortification", + "A3_Structures_F_Mil_Cargo", + "A3_Structures_F_Training", + "A3_Structures_F_Mil_Radar", + "A3_Structures_F_Mil_BagFence", + "A3_Structures_F_Ind_Cargo", + "A3_Soft_F_Gamma_HEMTT", + "A3_Structures_F_Items_Vessels", + "A3_Weapons_F_Ammoboxes", + "a3_map_altis" }; randomSeed=14748412; class Intel @@ -106,7 +108,7 @@ class Mission }; class Groups { - items=41; + items=40; class Item0 { side="LOGIC"; @@ -115,7 +117,7 @@ class Mission items=1; class Item0 { - position[]={530.49713,13.155955,1837.6099}; + position[]={26463.611,0.20265533,24713.971}; class args { items=3; @@ -155,7 +157,7 @@ class Mission items=1; class Item0 { - position[]={530.88092,16.585348,1880.9277}; + position[]={26463.996,0.25712019,24757.287}; class args { items=10; @@ -237,7 +239,7 @@ class Mission items=1; class Item0 { - position[]={538.74811,14.703086,1881.1475}; + position[]={26471.863,0.04750149,24757.506}; class args { items=13; @@ -337,7 +339,7 @@ class Mission items=1; class Item0 { - position[]={538.98834,13.787199,1871.2451}; + position[]={26472.102,0.24161872,24747.604}; class args { items=13; @@ -437,7 +439,7 @@ class Mission items=1; class Item0 { - position[]={523.80463,17.107088,1853.2599}; + position[]={26456.918,0.1763455,24729.619}; class args { items=1; @@ -465,7 +467,7 @@ class Mission items=1; class Item0 { - position[]={530.88092,15.295439,1861.5313}; + position[]={26463.996,0.01433982,24737.893}; class args { items=3; @@ -505,7 +507,7 @@ class Mission items=1; class Item0 { - position[]={530.34381,12.356411,1829.7305}; + position[]={26463.457,0.065844201,24706.092}; class args { items=1; @@ -533,7 +535,7 @@ class Mission items=1; class Item0 { - position[]={552.88092,12.067353,1882.3975}; + position[]={26485.996,0.19816835,24758.756}; class args { items=4; @@ -580,7 +582,7 @@ class Mission items=1; class Item0 { - position[]={553.01764,10.918626,1872.0781}; + position[]={26486.133,-0.030623205,24748.439}; class args { items=7; @@ -644,7 +646,7 @@ class Mission items=1; class Item0 { - position[]={530.3653,11.603288,1822.5781}; + position[]={26463.48,-0.096042842,24698.939}; class args { items=2; @@ -678,7 +680,7 @@ class Mission items=1; class Item0 { - position[]={530.53131,10.85036,1815.0938}; + position[]={26463.645,-0.13509686,24691.455}; class args { items=5; @@ -730,7 +732,7 @@ class Mission items=1; class Item0 { - position[]={530.53326,10.228675,1807.6143}; + position[]={26463.648,-0.0462895,24683.975}; class args { items=6; @@ -788,7 +790,7 @@ class Mission items=1; class Item0 { - position[]={530.6817,16.054415,1871.5127}; + position[]={26463.797,0.24125215,24747.873}; class args { items=3; @@ -828,7 +830,7 @@ class Mission items=1; class Item0 { - position[]={530.62701,9.8006935,1801.6299}; + position[]={26463.742,0.025529288,24677.99}; class args { items=3; @@ -868,7 +870,7 @@ class Mission items=2; class Item0 { - position[]={15339.308,1.1162053,7.9836426}; + position[]={30681.705,-0.12765115,24.723145}; azimut=-363.75699; offsetY=17; id=14; @@ -884,7 +886,7 @@ class Mission }; class Item1 { - position[]={15340.464,1.2813944,7.916687}; + position[]={30682.861,-0.15744138,24.656189}; azimut=-363.75699; offsetY=17; id=15; @@ -907,7 +909,7 @@ class Mission items=2; class Item0 { - position[]={15344.521,1.3125309,12.387634}; + position[]={30686.92,-0.16470696,29.127136}; azimut=-363.75699; offsetY=17; id=16; @@ -925,7 +927,7 @@ class Mission }; class Item1 { - position[]={15345.194,1.3134352,12.363953}; + position[]={30687.592,-0.18063316,29.103455}; azimut=-363.75699; offsetY=17; id=17; @@ -948,7 +950,7 @@ class Mission items=5; class Item0 { - position[]={15344.538,1.2943902,10.207214}; + position[]={30686.936,-0.20270471,26.946716}; azimut=-363.75699; offsetY=17; id=18; @@ -962,12 +964,12 @@ class Mission }; class Item1 { - position[]={15345.178,1.2891037,10.199646}; + position[]={30687.576,-0.21316938,26.939148}; azimut=-363.75699; offsetY=17; id=19; side="WEST"; - vehicle="TF47_B_soldier_AT4HEDP"; + vehicle="B_soldier_LAT_F"; player="PLAY CDG"; leader=1; rank="CORPORAL"; @@ -978,7 +980,7 @@ class Mission }; class Item2 { - position[]={15345.877,1.2813056,10.2099}; + position[]={30688.275,-0.22246101,26.949402}; azimut=-363.75699; offsetY=17; id=20; @@ -992,7 +994,7 @@ class Mission }; class Item3 { - position[]={15346.555,1.2710848,10.188049}; + position[]={30688.953,-0.22984296,26.927551}; azimut=-363.75699; offsetY=17; id=21; @@ -1006,7 +1008,7 @@ class Mission }; class Item4 { - position[]={15347.235,1.2598413,10.210022}; + position[]={30689.635,-0.23491803,26.949524}; azimut=-363.75699; offsetY=17; id=22; @@ -1028,7 +1030,7 @@ class Mission items=5; class Item0 { - position[]={15344.537,1.3049693,11.229797}; + position[]={30686.936,-0.18682638,27.969299}; azimut=-363.75699; offsetY=17; id=23; @@ -1044,7 +1046,7 @@ class Mission }; class Item1 { - position[]={15345.219,1.3023757,11.225281}; + position[]={30687.617,-0.20037368,27.964783}; azimut=-363.75699; offsetY=17; id=24; @@ -1059,7 +1061,7 @@ class Mission }; class Item2 { - position[]={15345.898,1.2974403,11.227234}; + position[]={30688.297,-0.21212643,27.966736}; azimut=-363.75699; offsetY=17; id=25; @@ -1073,7 +1075,7 @@ class Mission }; class Item3 { - position[]={15346.561,1.2911896,11.273865}; + position[]={30688.959,-0.22144105,28.013367}; azimut=-363.75699; offsetY=17; id=26; @@ -1087,7 +1089,7 @@ class Mission }; class Item4 { - position[]={15347.209,1.2827101,11.28656}; + position[]={30689.607,-0.22932716,28.026062}; azimut=-363.75699; offsetY=17; id=27; @@ -1109,7 +1111,7 @@ class Mission items=2; class Item0 { - position[]={15344.566,1.2741517,8.8225708}; + position[]={30686.965,-0.21822104,25.562073}; azimut=-363.75699; offsetY=17; id=28; @@ -1127,7 +1129,7 @@ class Mission }; class Item1 { - position[]={15345.24,1.264397,8.7990112}; + position[]={30687.639,-0.22534746,25.538513}; azimut=-363.75699; offsetY=17; id=29; @@ -1150,7 +1152,7 @@ class Mission items=5; class Item0 { - position[]={15344.584,1.231231,6.6420288}; + position[]={30686.982,-0.22517011,23.381531}; azimut=-363.75699; offsetY=17; id=30; @@ -1164,12 +1166,12 @@ class Mission }; class Item1 { - position[]={15345.224,1.217796,6.6344604}; + position[]={30687.623,-0.22552453,23.373962}; azimut=-363.75699; offsetY=17; id=31; side="WEST"; - vehicle="TF47_B_soldier_AT4HEDP"; + vehicle="B_soldier_LAT_F"; player="PLAY CDG"; leader=1; rank="CORPORAL"; @@ -1180,7 +1182,7 @@ class Mission }; class Item2 { - position[]={15345.923,1.2024056,6.6448364}; + position[]={30688.322,-0.22383317,23.384338}; azimut=-363.75699; offsetY=17; id=32; @@ -1194,7 +1196,7 @@ class Mission }; class Item3 { - position[]={15346.601,1.1857822,6.6229858}; + position[]={30688.998,-0.21988538,23.362488}; azimut=-363.75699; offsetY=17; id=33; @@ -1208,7 +1210,7 @@ class Mission }; class Item4 { - position[]={15347.281,1.1696439,6.6449585}; + position[]={30689.68,-0.21438493,23.38446}; azimut=-363.75699; offsetY=17; id=34; @@ -1230,7 +1232,7 @@ class Mission items=5; class Item0 { - position[]={15344.583,1.2527674,7.6647339}; + position[]={30686.982,-0.2246874,24.404236}; azimut=-363.75699; offsetY=17; id=35; @@ -1246,7 +1248,7 @@ class Mission }; class Item1 { - position[]={15345.265,1.2405319,7.6600952}; + position[]={30687.662,-0.22819093,24.399597}; azimut=-363.75699; offsetY=17; id=36; @@ -1261,7 +1263,7 @@ class Mission }; class Item2 { - position[]={15345.943,1.2269292,7.6620483}; + position[]={30688.342,-0.22958443,24.40155}; azimut=-363.75699; offsetY=17; id=37; @@ -1275,7 +1277,7 @@ class Mission }; class Item3 { - position[]={15346.606,1.2135564,7.7088013}; + position[]={30689.006,-0.22919337,24.448303}; azimut=-363.75699; offsetY=17; id=38; @@ -1289,7 +1291,7 @@ class Mission }; class Item4 { - position[]={15347.255,1.1987934,7.7214966}; + position[]={30689.654,-0.22683415,24.460999}; azimut=-363.75699; offsetY=17; id=39; @@ -1311,7 +1313,7 @@ class Mission items=2; class Item0 { - position[]={15344.383,1.1971843,5.0066528}; + position[]={30686.781,-0.21693043,21.746155}; azimut=-363.75699; offsetY=17; id=40; @@ -1329,7 +1331,7 @@ class Mission }; class Item1 { - position[]={15345.057,1.1806419,4.9830933}; + position[]={30687.455,-0.21270379,21.722595}; azimut=-363.75699; offsetY=17; id=41; @@ -1352,7 +1354,7 @@ class Mission items=5; class Item0 { - position[]={15344.4,1.1409291,2.8261108}; + position[]={30686.799,-0.18815951,19.565613}; azimut=-363.75699; offsetY=17; id=42; @@ -1366,12 +1368,12 @@ class Mission }; class Item1 { - position[]={15345.04,1.1243895,2.8185425}; + position[]={30687.439,-0.17870986,19.558044}; azimut=-363.75699; offsetY=17; id=43; side="WEST"; - vehicle="TF47_B_soldier_AT4HEDP"; + vehicle="B_soldier_LAT_F"; player="PLAY CDG"; leader=1; rank="CORPORAL"; @@ -1382,7 +1384,7 @@ class Mission }; class Item2 { - position[]={15345.739,1.1071227,2.8289185}; + position[]={30688.139,-0.16716002,19.56842}; azimut=-363.75699; offsetY=17; id=44; @@ -1396,7 +1398,7 @@ class Mission }; class Item3 { - position[]={15346.417,1.0900354,2.8070679}; + position[]={30688.814,-0.15394568,19.54657}; azimut=-363.75699; offsetY=17; id=45; @@ -1410,7 +1412,7 @@ class Mission }; class Item4 { - position[]={15347.098,1.074914,2.8290405}; + position[]={30689.496,-0.14052707,19.568542}; azimut=-363.75699; offsetY=17; id=46; @@ -1432,7 +1434,7 @@ class Mission items=5; class Item0 { - position[]={15344.399,1.1675777,3.8488159}; + position[]={30686.799,-0.20403403,20.588318}; azimut=-363.75699; offsetY=17; id=47; @@ -1448,7 +1450,7 @@ class Mission }; class Item1 { - position[]={15345.081,1.1503767,3.8441772}; + position[]={30687.479,-0.19660389,20.583679}; azimut=-363.75699; offsetY=17; id=48; @@ -1463,7 +1465,7 @@ class Mission }; class Item2 { - position[]={15345.76,1.1332384,3.8461304}; + position[]={30688.158,-0.18757589,20.585632}; azimut=-363.75699; offsetY=17; id=49; @@ -1477,7 +1479,7 @@ class Mission }; class Item3 { - position[]={15346.423,1.117807,3.8928833}; + position[]={30688.822,-0.17804973,20.632385}; azimut=-363.75699; offsetY=17; id=50; @@ -1491,7 +1493,7 @@ class Mission }; class Item4 { - position[]={15347.071,1.1022829,3.9055786}; + position[]={30689.471,-0.16688307,20.645081}; azimut=-363.75699; offsetY=17; id=51; @@ -1513,7 +1515,7 @@ class Mission items=4; class Item0 { - position[]={15352.988,1.1823076,12.230652}; + position[]={30695.387,-0.23342821,28.970154}; offsetY=17; id=52; side="WEST"; @@ -1528,7 +1530,7 @@ class Mission }; class Item1 { - position[]={15354.58,1.1460512,12.230408}; + position[]={30696.979,-0.21199107,28.96991}; offsetY=17; id=53; side="WEST"; @@ -1542,7 +1544,7 @@ class Mission }; class Item2 { - position[]={15356.168,1.1161091,12.228943}; + position[]={30698.566,-0.18232793,28.968445}; azimut=-363.75699; offsetY=17; id=54; @@ -1557,7 +1559,7 @@ class Mission }; class Item3 { - position[]={15357.621,1.097404,12.230652}; + position[]={30700.02,-0.15017127,28.970154}; azimut=-363.75699; offsetY=17; id=55; @@ -1580,7 +1582,7 @@ class Mission items=4; class Item0 { - position[]={15352.887,1.1357565,10.395935}; + position[]={30695.285,-0.20338364,27.135437}; id=56; side="WEST"; vehicle="B_Soldier_TL_F"; @@ -1594,7 +1596,7 @@ class Mission }; class Item1 { - position[]={15354.52,1.1037958,10.395691}; + position[]={30696.918,-0.17220788,27.135193}; id=57; side="WEST"; vehicle="B_Helipilot_F"; @@ -1607,7 +1609,7 @@ class Mission }; class Item2 { - position[]={15356.244,1.0803936,10.350037}; + position[]={30698.643,-0.13209453,27.089539}; id=58; side="WEST"; vehicle="B_Soldier_F"; @@ -1619,7 +1621,7 @@ class Mission }; class Item3 { - position[]={15357.699,1.0724926,10.306091}; + position[]={30700.098,-0.095984526,27.045593}; id=59; side="WEST"; vehicle="B_Soldier_F"; @@ -1639,7 +1641,7 @@ class Mission items=4; class Item0 { - position[]={15338.662,1.2109209,12.125916}; + position[]={30681.061,-0.01501587,28.865417}; azimut=-363.75699; offsetY=17; id=60; @@ -1655,12 +1657,12 @@ class Mission }; class Item1 { - position[]={15339.977,1.2458137,12.166199}; + position[]={30682.375,-0.04837209,28.905701}; azimut=-363.75699; offsetY=17; id=61; side="WEST"; - vehicle="TF47_B_soldier_M3MAAWS"; + vehicle="B_soldier_AT_F"; player="PLAY CDG"; rank="CORPORAL"; skill=0.60000002; @@ -1670,7 +1672,7 @@ class Mission }; class Item2 { - position[]={15341.023,1.2697431,12.167908}; + position[]={30683.422,-0.077009328,28.90741}; azimut=-363.75699; offsetY=17; id=62; @@ -1684,7 +1686,7 @@ class Mission }; class Item3 { - position[]={15342.109,1.2892271,12.215515}; + position[]={30684.508,-0.10575138,28.955017}; azimut=-363.75699; offsetY=17; id=63; @@ -1706,7 +1708,7 @@ class Mission items=3; class Item0 { - position[]={15338.762,1.2382044,10.540466}; + position[]={30681.16,-0.053359337,27.279968}; azimut=-363.75699; offsetY=17; id=64; @@ -1722,7 +1724,7 @@ class Mission }; class Item1 { - position[]={15340.078,1.2669678,10.496521}; + position[]={30682.477,-0.090802945,27.236023}; azimut=-363.75699; offsetY=17; id=65; @@ -1737,7 +1739,7 @@ class Mission }; class Item2 { - position[]={15341.438,1.2877806,10.450623}; + position[]={30683.838,-0.12878634,27.190125}; azimut=-363.75699; offsetY=17; id=66; @@ -1760,7 +1762,7 @@ class Mission items=2; class Item0 { - position[]={15339.201,1.2718861,5.843689}; + position[]={30681.6,-0.16692677,22.583191}; azimut=-363.75699; offsetY=17; id=67; @@ -1776,7 +1778,7 @@ class Mission }; class Item1 { - position[]={15340.475,1.2705554,5.8456421}; + position[]={30682.873,-0.1907824,22.585144}; azimut=-363.75699; offsetY=17; id=68; @@ -1799,7 +1801,7 @@ class Mission items=2; class Item0 { - position[]={15339.156,1.2616256,4.1188354}; + position[]={30681.555,-0.18990147,20.858337}; azimut=-363.75699; offsetY=17; id=69; @@ -1815,7 +1817,7 @@ class Mission }; class Item1 { - position[]={15340.43,1.2507246,4.1207886}; + position[]={30682.828,-0.20547277,20.860291}; azimut=-363.75699; offsetY=17; id=70; @@ -1838,7 +1840,7 @@ class Mission items=2; class Item0 { - position[]={15339.107,1.2419211,2.3917847}; + position[]={30681.506,-0.20164967,19.131287}; offsetY=17; id=71; side="WEST"; @@ -1853,7 +1855,7 @@ class Mission }; class Item1 { - position[]={15340.516,1.2200053,2.3920288}; + position[]={30682.914,-0.20802118,19.131531}; offsetY=17; id=72; side="WEST"; @@ -1875,26 +1877,7 @@ class Mission items=1; class Item0 { - position[]={560.47168,10.909405,1882.0529}; - id=73; - side="LOGIC"; - vehicle="Logic"; - leader=1; - skill=0.60000002; - text="obj_bush"; - init="(getPos this nearestObject 323601) setDamage 1;(getPos this nearestObject 323610) setDamage 1;(getPos this nearestObject 323611) setDamage 1;(getPos this nearestObject 323592) setDamage 1;(getPos this nearestObject 323633) setDamage 1;(getPos this nearestObject 323632) setDamage 1;(getPos this nearestObject 323582) setDamage 1;(getPos this nearestObject 323627) setDamage 1;(getPos this nearestObject 323618) setDamage 1;(getPos this nearestObject 323626) setDamage 1;(getPos this nearestObject 323565) setDamage 1;(getPos this nearestObject 323572) setDamage 1;(getPos this nearestObject 323571) setDamage 1;(getPos this nearestObject 323566) setDamage 1;(getPos this nearestObject 323628) setDamage 1;(getPos this nearestObject 323625) setDamage 1;(getPos this nearestObject 323617) setDamage 1;(getPos this nearestObject 323650) setDamage 1;(getPos this nearestObject 323651) setDamage 1;(getPos this nearestObject 323635) setDamage 1;(getPos this nearestObject 323649) setDamage 1;(getPos this nearestObject 323642) setDamage 1;(getPos this nearestObject 323634) setDamage 1;(getPos this nearestObject 323643) setDamage 1;(getPos this nearestObject 323636) setDamage 1;"; - }; - }; - }; - class Item32 - { - side="LOGIC"; - class Vehicles - { - items=1; - class Item0 - { - position[]={523.64514,18.474304,1881.048}; + position[]={26456.758,0.26864144,24757.408}; class args { items=1; @@ -1905,7 +1888,7 @@ class Mission typeName="enable"; }; }; - id=74; + id=73; side="LOGIC"; vehicle="ACE_ModuleSitting"; leader=1; @@ -1914,7 +1897,7 @@ class Mission }; }; }; - class Item33 + class Item32 { side="LOGIC"; class Vehicles @@ -1922,7 +1905,7 @@ class Mission items=1; class Item0 { - position[]={523.57617,17.699036,1861.2395}; + position[]={26456.691,0.024004146,24737.6}; class args { items=5; @@ -1957,7 +1940,7 @@ class Mission typeName="showCursorTagForVehicles"; }; }; - id=75; + id=74; side="LOGIC"; vehicle="ACE_ModuleNameTags"; leader=1; @@ -1966,7 +1949,7 @@ class Mission }; }; }; - class Item34 + class Item33 { side="LOGIC"; class Vehicles @@ -1974,7 +1957,7 @@ class Mission items=1; class Item0 { - position[]={523.763,18.102816,1871.3315}; + position[]={26456.879,0.06095878,24747.689}; class args { items=4; @@ -2003,7 +1986,7 @@ class Mission typeName="MapShowCursorCoordinates"; }; }; - id=76; + id=75; side="LOGIC"; vehicle="ACE_ModuleMap"; leader=1; @@ -2012,7 +1995,7 @@ class Mission }; }; }; - class Item35 + class Item34 { side="LOGIC"; class Vehicles @@ -2020,7 +2003,7 @@ class Mission items=1; class Item0 { - position[]={724.95447,6.1004248,1831.4996}; + position[]={26789.258,18.812231,24702.205}; class args { items=1; @@ -2031,7 +2014,7 @@ class Mission typeName="enabled"; }; }; - id=77; + id=76; side="LOGIC"; vehicle="ACE_moduleAssignMedicalFacility"; leader=1; @@ -2042,7 +2025,7 @@ class Mission }; }; }; - class Item36 + class Item35 { side="EAST"; class Vehicles @@ -2050,8 +2033,8 @@ class Mission items=1; class Item0 { - position[]={0.57933992,621.96417,15359.168}; - id=78; + position[]={20.30835,-0.24297278,30696.102}; + id=77; side="EAST"; vehicle="O_Soldier_F"; leader=1; @@ -2061,7 +2044,7 @@ class Mission }; }; }; - class Item37 + class Item36 { side="LOGIC"; class Vehicles @@ -2069,7 +2052,7 @@ class Mission items=1; class Item0 { - position[]={524.36902,16.18795,1844.8708}; + position[]={26457.484,0.24386156,24721.232}; class args { items=9; @@ -2128,7 +2111,7 @@ class Mission typeName="wheelRepairRequiredItems"; }; }; - id=79; + id=78; side="LOGIC"; vehicle="ACE_moduleRepairSettings"; leader=1; @@ -2137,7 +2120,7 @@ class Mission }; }; }; - class Item38 + class Item37 { side="LOGIC"; class Vehicles @@ -2145,7 +2128,7 @@ class Mission items=1; class Item0 { - position[]={530.88092,14.591525,1853.0674}; + position[]={26463.996,-0.016371265,24729.428}; class args { items=1; @@ -2156,7 +2139,7 @@ class Mission typeName="EnableCombatDeafness"; }; }; - id=80; + id=79; side="LOGIC"; vehicle="ACE_ModuleHearing"; leader=1; @@ -2165,7 +2148,7 @@ class Mission }; }; }; - class Item39 + class Item38 { side="LOGIC"; class Vehicles @@ -2173,7 +2156,7 @@ class Mission items=1; class Item0 { - position[]={530.5274,13.933278,1844.9561}; + position[]={26463.641,0.14032516,24721.314}; class args { items=1; @@ -2184,7 +2167,7 @@ class Mission typeName="EnableTeamManagement"; }; }; - id=81; + id=80; side="LOGIC"; vehicle="ACE_ModuleInteraction"; leader=1; @@ -2193,7 +2176,7 @@ class Mission }; }; }; - class Item40 + class Item39 { side="LOGIC"; class Vehicles @@ -2201,7 +2184,7 @@ class Mission items=1; class Item0 { - position[]={524.43469,15.377542,1837.3792}; + position[]={26457.549,0.11975059,24713.74}; class args { items=2; @@ -2218,7 +2201,7 @@ class Mission typeName="role"; }; }; - id=82; + id=81; side="LOGIC"; vehicle="ACE_moduleAssignEngineerRoles"; leader=1; @@ -2230,3873 +2213,5484 @@ class Mission }; class Vehicles { - items=409; + items=589; class Item0 { - position[]={689.72211,6.0638437,1797.7275}; - azimut=50; - id=83; + position[]={26751.092,20.63332,24620.148}; + azimut=140; + id=82; side="EMPTY"; - vehicle="B_supplyCrate_F"; - lock="LOCKED"; + vehicle="Flag_NATO_F"; skill=0.60000002; - init="this allowDamage false;[""AmmoboxInit"",[this,true]] call BIS_fnc_arsenal;"; + text="flagPole"; }; class Item1 { - position[]={696.66595,6,1789.2854}; - azimut=50; - id=84; + position[]={26679.932,20.602068,24585.189}; + azimut=220; + id=83; side="EMPTY"; - vehicle="B_supplyCrate_F"; - lock="LOCKED"; + vehicle="Land_HelipadEmpty_F"; skill=0.60000002; - init="this enableSimulation false;this allowDamage false;[""AmmoboxInit"",[this,true]] call BIS_fnc_arsenal;"; + text="fobSpawn"; }; class Item2 { - position[]={693.19678,6.0127869,1793.5654}; - azimut=50; - id=85; + position[]={26853.795,22.974501,24627.014}; + azimut=311; + id=84; side="EMPTY"; - vehicle="B_supplyCrate_F"; - lock="LOCKED"; + vehicle="Land_HelipadSquare_F"; + leader=1; skill=0.60000002; - init="this enableSimulation false;this allowDamage false;[""AmmoboxInit"",[this,true]] call BIS_fnc_arsenal;"; + text="garage_spawn_0"; }; class Item3 { - position[]={570.13501,5.9898186,1751.3179}; - azimut=50; - id=86; + position[]={26840.758,23.258154,24611.885}; + azimut=311; + id=85; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; + vehicle="Land_HelipadSquare_F"; + leader=1; skill=0.60000002; + text="garage_spawn_1"; }; class Item4 { - position[]={565.23724,5.9603734,1757.2734}; - azimut=50; - id=87; + position[]={26814.207,23.667765,24580.438}; + azimut=311; + id=86; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; + vehicle="Land_HelipadSquare_F"; + leader=1; skill=0.60000002; + text="garage_spawn_3"; }; class Item5 { - position[]={560.1134,5.9859104,1763.38}; - azimut=50; - id=88; + position[]={26827.711,23.467793,24596.537}; + azimut=311; + id=87; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; + vehicle="Land_HelipadSquare_F"; + leader=1; skill=0.60000002; + text="garage_spawn_2"; }; class Item6 { - position[]={555.06494,6.019567,1769.4106}; - azimut=50; - id=89; + position[]={26789.77,20.045813,24677.568}; + azimut=220; + id=88; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; + vehicle="Land_HelipadRescue_F"; + leader=1; skill=0.60000002; + text="garage_spawn_med"; }; class Item7 { - position[]={584.45502,6,1735.8483}; - azimut=50; - id=90; + position[]={26616.869,15.110755,24661.656}; + azimut=130; + id=89; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; + vehicle="Land_HelipadSquare_F"; + leader=1; skill=0.60000002; + text="garage_spawn_4"; }; class Item8 { - position[]={589.59521,5.9953256,1729.6575}; - azimut=50; - id=91; + position[]={26736.77,20.429853,24618.402}; + id=90; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; + vehicle="Land_HelipadEmpty_F"; + leader=1; skill=0.60000002; + text="respawn_obj"; }; class Item9 { - position[]={594.80798,6,1723.5061}; - azimut=50; - id=92; + position[]={26851.818,22.539137,24635.105}; + azimut=131; + id=91; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; + vehicle="Land_InfoStand_V1_F"; skill=0.60000002; + text="garage_spawner_0"; + init="this enableSimulationGlobal false;"; }; class Item10 { - position[]={679.27643,5.9921484,1854.1115}; - azimut=50; - id=93; + position[]={26838.764,22.751152,24620.033}; + azimut=131; + id=92; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; + vehicle="Land_InfoStand_V1_F"; skill=0.60000002; + text="garage_spawner_1"; + init="this enableSimulationGlobal false;"; }; class Item11 { - position[]={674.37866,6.0182672,1860.067}; - azimut=50; - id=94; + position[]={26825.6,23.232862,24604.789}; + azimut=131; + id=93; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; + vehicle="Land_InfoStand_V1_F"; skill=0.60000002; + text="garage_spawner_2"; + init="this enableSimulationGlobal false;"; }; class Item12 { - position[]={669.25482,6.3181725,1866.1736}; - azimut=50; - id=95; + position[]={26812.158,23.496078,24588.58}; + azimut=131; + id=94; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; + vehicle="Land_InfoStand_V1_F"; skill=0.60000002; + text="garage_spawner_3"; + init="this enableSimulationGlobal false;"; }; class Item13 { - position[]={664.6391,6.5580735,1871.6266}; - azimut=50; - id=96; + position[]={26625.193,15.63499,24661.625}; + azimut=310; + id=95; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; + vehicle="Land_InfoStand_V1_F"; skill=0.60000002; + text="garage_spawner_4"; + init="this enableSimulationGlobal false;"; }; class Item14 { - position[]={698.19897,5.990932,1833.317}; - azimut=50; - id=97; + position[]={26697.639,21.706532,24557.914}; + azimut=40; + id=96; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; + vehicle="Land_InfoStand_V1_F"; skill=0.60000002; + text="garage_spawner_5"; + init="this enableSimulationGlobal false;"; }; class Item15 { - position[]={714.69751,6.0759115,1827.3296}; - azimut=50; - id=98; + position[]={26700.02,21.519724,24568.592}; + azimut=220; + id=97; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; + vehicle="Land_HelipadEmpty_F"; + leader=1; skill=0.60000002; + text="garage_spawn_5"; }; class Item16 { - position[]={709.0744,6.0786099,1820.1172}; - azimut=50; - id=99; + position[]={26722.615,22.624599,24507.516}; + azimut=310; + id=98; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; + vehicle="Land_HelipadEmpty_F"; + leader=1; skill=0.60000002; + text="garage_spawn_6"; }; class Item17 { - position[]={714.13428,6.0804911,1814.0544}; - azimut=50; - id=100; + position[]={26627.027,18.492004,24551.48}; + azimut=140; + id=99; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; + vehicle="Land_CncBarrier_stripes_F"; + leader=1; skill=0.60000002; }; class Item18 { - position[]={600.25067,6,1721.2528}; - azimut=147; - id=101; + position[]={26630.387,18.720192,24554.295}; + azimut=140; + id=100; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; + vehicle="Land_CncBarrier_stripes_F"; + leader=1; skill=0.60000002; }; class Item19 { - position[]={607.00043,6.0006661,1725.6665}; - azimut=147; - id=102; + position[]={26640.418,19.333132,24562.721}; + azimut=140; + id=101; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; + vehicle="Land_CncBarrier_stripes_F"; + leader=1; skill=0.60000002; }; class Item20 { - position[]={613.61658,6,1729.9448}; - azimut=147; - id=103; + position[]={26637.129,19.169079,24559.951}; + azimut=140; + id=102; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; + vehicle="Land_CncBarrier_stripes_F"; + leader=1; skill=0.60000002; }; class Item21 { - position[]={620.36633,6.0074348,1734.3586}; - azimut=147; - id=104; + position[]={26633.701,18.948469,24557.066}; + azimut=140; + id=103; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; + vehicle="Land_CncBarrier_stripes_F"; + leader=1; skill=0.60000002; }; class Item22 { - position[]={627.08099,6,1738.7806}; - azimut=147; - id=105; + position[]={26642.506,19.42977,24562.521}; + azimut=50; + id=104; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; + vehicle="Land_CncBarrier_stripes_F"; + leader=1; skill=0.60000002; }; class Item23 { - position[]={633.71667,6.0253501,1743.1687}; - azimut=147; - id=106; + position[]={26653.719,19.988251,24549.172}; + azimut=50; + id=105; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; + vehicle="Land_CncBarrier_stripes_F"; + leader=1; skill=0.60000002; }; class Item24 { - position[]={640.12018,6,1747.458}; - azimut=147; - id=107; + position[]={26651.199,19.898941,24552.17}; + azimut=50; + id=106; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; + vehicle="Land_CncBarrier_stripes_F"; + leader=1; skill=0.60000002; }; class Item25 { - position[]={646.82642,6,1751.7573}; - azimut=147; - id=108; + position[]={26644.934,19.568123,24559.594}; + azimut=50; + id=107; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; + vehicle="Land_CncBarrier_stripes_F"; + leader=1; skill=0.60000002; }; class Item26 { - position[]={653.45728,6,1755.9028}; - azimut=147; - id=109; + position[]={26651.652,19.946342,24552.939}; + azimut=5; + id=108; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; + vehicle="Land_CncBarrier_stripes_F"; + leader=1; skill=0.60000002; }; class Item27 { - position[]={659.97162,6,1760.1132}; - azimut=147; - id=110; + position[]={26645.73,19.599613,24559.926}; + azimut=95; + id=109; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; + vehicle="Land_CncBarrier_stripes_F"; + leader=1; skill=0.60000002; }; class Item28 { - position[]={666.85229,6.0043178,1764.5408}; - azimut=147; - id=111; + position[]={26640.117,19.109953,24535.861}; + azimut=140; + id=110; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; + vehicle="Land_CncBarrier_stripes_F"; + leader=1; skill=0.60000002; }; class Item29 { - position[]={673.27869,6,1768.6597}; - azimut=147; - id=112; + position[]={26643.477,19.330631,24538.676}; + azimut=140; + id=111; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; + vehicle="Land_CncBarrier_stripes_F"; + leader=1; skill=0.60000002; }; class Item30 { - position[]={680.02588,6.0098963,1772.9536}; - azimut=147; - id=113; + position[]={26653.508,19.941353,24547.1}; + azimut=140; + id=112; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; - skill=0.60000002; + vehicle="Land_CncBarrier_stripes_F"; + leader=1; + skill=0.60000002; }; class Item31 { - position[]={686.71924,6,1777.3691}; - azimut=147; - id=114; + position[]={26650.219,19.73543,24544.33}; + azimut=140; + id=113; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; + vehicle="Land_CncBarrier_stripes_F"; + leader=1; skill=0.60000002; }; class Item32 { - position[]={693.44165,6,1781.728}; - azimut=147; - id=115; + position[]={26646.791,19.587873,24541.445}; + azimut=140; + id=114; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; + vehicle="Land_CncBarrier_stripes_F"; + leader=1; skill=0.60000002; }; class Item33 { - position[]={700.08972,6,1786.1189}; - azimut=147; - id=116; + position[]={26652.77,19.967319,24550.83}; + azimut=230; + id=115; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; + vehicle="Land_InfoStand_V1_F"; skill=0.60000002; + text="garage_scrap"; + init="this enableSimulationGlobal false;"; }; class Item34 { - position[]={706.88831,6,1790.4484}; - azimut=147; - id=117; + position[]={26696.594,19.424883,24644.807}; + azimut=220; + id=116; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; + vehicle="Land_TableDesk_F"; + leader=1; skill=0.60000002; + text="cmd_desk"; }; class Item35 { - position[]={713.68695,6,1794.8411}; - azimut=147; - id=118; + position[]={26695.984,19.363281,24644.219}; + azimut=220; + id=117; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; + vehicle="Land_OfficeChair_01_F"; + leader=1; skill=0.60000002; }; class Item36 { - position[]={720.45319,6,1799.1707}; - azimut=147; - id=119; + position[]={26698.777,19.607979,24646.449}; + azimut=40; + id=118; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; + vehicle="Land_CampingChair_V1_F"; + leader=1; skill=0.60000002; }; class Item37 { - position[]={722.43445,6,1804.1465}; - azimut=50; - id=120; + position[]={26698.027,19.524288,24647.043}; + azimut=40; + id=119; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; + vehicle="Land_CampingChair_V1_F"; + leader=1; skill=0.60000002; }; class Item38 { - position[]={555.85571,6.0108724,1774.1473}; - azimut=137; - id=121; + position[]={26697.188,19.426514,24647.748}; + azimut=40; + id=120; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; + vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; class Item39 { - position[]={561.82788,5.9083447,1779.7477}; - azimut=137; - id=122; + position[]={26693.893,19.035419,24650.426}; + azimut=40; + id=121; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; + vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; class Item40 { - position[]={567.7135,5.8585324,1785.2299}; - azimut=137; - id=123; + position[]={26696.391,19.332754,24648.361}; + azimut=40; + id=122; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; + vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; class Item41 { - position[]={573.6568,5.8340116,1790.6864}; - azimut=137; - id=124; + position[]={26694.643,19.12458,24649.813}; + azimut=40; + id=123; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; + vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; class Item42 { - position[]={579.65778,5.8200588,1796.2574}; - azimut=137; - id=125; + position[]={26695.506,19.227989,24649.063}; + azimut=40; + id=124; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; + vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; class Item43 { - position[]={585.5434,5.8066678,1801.6544}; - azimut=137; - id=126; + position[]={26697.381,19.504669,24643.703}; + azimut=220; + id=125; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; + vehicle="Land_Laptop_unfolded_F"; leader=1; skill=0.60000002; + text="cmd_laptop"; + init="this attachTo[cmd_desk,[0,0,0.58]];"; }; class Item44 { - position[]={591.40021,5.8023186,1807.1962}; - azimut=137; - id=127; + position[]={26781.301,19.899694,24676.133}; + azimut=40; + id=126; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; - leader=1; + vehicle="Land_InfoStand_V1_F"; skill=0.60000002; + text="garage_spawner_med"; + init="this enableSimulationGlobal false;"; }; class Item45 { - position[]={597.31476,5.8092346,1812.6527}; - azimut=137; - id=128; + position[]={26677.564,20.788641,24575.168}; + azimut=40; + id=127; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; - leader=1; + vehicle="Land_InfoStand_V1_F"; skill=0.60000002; + text="fob_spawner"; + init="this enableSimulationGlobal false;_action = this addAction[""Spawn FOB"",{[{[]spawn JOC_fobSpawn},""BIS_fnc_spawn"",false,false] call BIS_fnc_MP;}];"; }; class Item46 { - position[]={602.98743,5.8290348,1817.8729}; - azimut=137; - id=129; + position[]={26644.076,16.950621,24650.637}; + azimut=220; + id=128; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; - leader=1; + vehicle="Land_HelipadEmpty_F"; skill=0.60000002; + text="logiSpawn_0"; }; class Item47 { - position[]={609.17267,5.8542414,1823.5933}; - azimut=137; - id=130; + position[]={26648.682,16.888273,24656.238}; + azimut=220; + id=129; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; - leader=1; + vehicle="Land_HelipadEmpty_F"; skill=0.60000002; + text="logiSpawn_1"; }; class Item48 { - position[]={615.26031,5.88727,1829.2218}; - azimut=137; - id=131; + position[]={26652.535,16.932177,24661.273}; + azimut=220; + id=130; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; - leader=1; + vehicle="Land_HelipadEmpty_F"; skill=0.60000002; + text="logiSpawn_2"; }; class Item49 { - position[]={621.3479,5.9279237,1834.8221}; - azimut=137; - id=132; + position[]={26635.229,16.312897,24658.033}; + azimut=220; + id=131; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; - leader=1; + vehicle="Land_HelipadEmpty_F"; skill=0.60000002; + text="logiSpawn_3"; }; class Item50 { - position[]={627.32007,5.9631929,1840.307}; - azimut=137; - id=133; + position[]={26639.779,16.327471,24663.541}; + azimut=220; + id=132; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; - leader=1; + vehicle="Land_HelipadEmpty_F"; skill=0.60000002; + text="logiSpawn_4"; }; class Item51 { - position[]={633.20563,6.0087342,1845.8488}; - azimut=137; - id=134; + position[]={26643.854,16.254807,24668.561}; + azimut=220; + id=133; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; - leader=1; + vehicle="Land_HelipadEmpty_F"; skill=0.60000002; + text="logiSpawn_5"; }; class Item52 { - position[]={639.14911,6.0992255,1851.4188}; - azimut=137; - id=135; + position[]={26641.807,17.085974,24644.063}; + azimut=40; + id=134; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; - leader=1; + vehicle="Land_InfoStand_V1_F"; skill=0.60000002; + text="logiSpawner"; + init="this enableSimulationGlobal false;"; }; class Item53 { - position[]={644.91925,6.2229695,1857.0475}; - azimut=137; - id=136; + position[]={26669.105,18.929838,24620.211}; + azimut=40; + id=135; side="EMPTY"; vehicle="Land_HBarrierBig_F"; - leader=1; skill=0.60000002; }; class Item54 { - position[]={650.86261,6.3586721,1862.6779}; - azimut=137; - id=137; + position[]={26675.096,19.145273,24615.203}; + azimut=40; + id=136; side="EMPTY"; vehicle="Land_HBarrierBig_F"; - leader=1; skill=0.60000002; }; class Item55 { - position[]={656.71924,6.4971809,1868.1327}; - azimut=137; - id=138; + position[]={26665.881,18.562429,24626.85}; + azimut=130; + id=137; side="EMPTY"; vehicle="Land_HBarrierBig_F"; - leader=1; skill=0.60000002; }; class Item56 { - position[]={660.23914,6.5934396,1871.5375}; - azimut=137; - id=139; + position[]={26670.225,18.580593,24632.055}; + azimut=130; + id=138; side="EMPTY"; vehicle="Land_HBarrierBig_F"; - leader=1; skill=0.60000002; }; class Item57 { - position[]={694.8653,6,1786.2095}; - azimut=50; - id=140; + position[]={26675.172,18.44449,24638.094}; + azimut=130; + id=139; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item58 { - position[]={689.98566,6,1791.8353}; - azimut=50; - id=141; + position[]={26688.559,18.534348,24648.607}; + azimut=130; + id=140; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item59 { - position[]={685.57916,6.0935903,1801.7615}; - azimut=147; - id=142; + position[]={26693.688,18.753759,24654.469}; + azimut=130; + id=141; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item60 { - position[]={692.28021,6.1003332,1806.1552}; - azimut=147; - id=143; + position[]={26698.727,18.506804,24660.373}; + azimut=130; + id=142; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item61 { - position[]={698.8512,6.0881987,1810.4838}; - azimut=147; - id=144; + position[]={26712.732,19.448021,24659.07}; + azimut=40; + id=143; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item62 { - position[]={685.06604,6.0822058,1797.7057}; - azimut=50; - id=145; + position[]={26707.221,18.721292,24663.738}; + azimut=40; + id=144; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item63 { - position[]={611.60767,6.1510534,1789.1821}; - azimut=50; - id=146; + position[]={26701.9,18.207329,24664.418}; + azimut=130; + id=145; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item64 { - position[]={606.7099,6.1331458,1795.1377}; - azimut=50; - id=147; + position[]={26681.018,19.525734,24610.256}; + azimut=40; + id=146; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item65 { - position[]={601.58606,6.0089049,1801.2443}; - azimut=50; - id=148; + position[]={26718.061,19.875248,24660.645}; + azimut=130; + id=147; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item66 { - position[]={596.5376,5.8611517,1807.2749}; - azimut=50; - id=149; + position[]={26723.012,20.634399,24666.549}; + azimut=130; + id=148; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item67 { - position[]={722.90076,6.0674553,1812.822}; - azimut=50; - id=150; + position[]={26728.184,20.3808,24672.498}; + azimut=130; + id=149; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item68 { - position[]={728.47278,6,1804.8157}; - azimut=147; - id=151; + position[]={26733.225,20.088259,24678.447}; + azimut=130; + id=150; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item69 { - position[]={735.1402,6,1809.0601}; - azimut=147; - id=152; + position[]={26738.17,20.095839,24684.396}; + azimut=130; + id=151; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item70 { - position[]={741.85443,6,1813.5388}; - azimut=147; - id=153; + position[]={26743.029,19.922901,24690.256}; + azimut=130; + id=152; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item71 { - position[]={748.70825,6,1817.8794}; - azimut=147; - id=154; + position[]={26748.291,19.106367,24696.434}; + azimut=130; + id=153; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item72 { - position[]={755.37573,6,1822.2648}; - azimut=147; - id=155; + position[]={26753.375,18.435715,24702.428}; + azimut=130; + id=154; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item73 { - position[]={762.04321,6,1826.6511}; - azimut=147; - id=156; + position[]={26767.789,18.903276,24699.6}; + azimut=130; + id=155; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item74 { - position[]={768.80389,6.0264101,1830.9431}; - azimut=147; - id=157; + position[]={26862.461,26.275167,24486.096}; + azimut=130; + id=156; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item75 { - position[]={775.51794,6,1835.2341}; - azimut=147; - id=158; + position[]={26846.166,26.304111,24475.688}; + azimut=130; + id=157; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item76 { - position[]={782.41858,6,1839.6204}; - azimut=147; - id=159; + position[]={26849.023,26.257971,24479.457}; + azimut=130; + id=158; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item77 { - position[]={788.94617,6,1843.9591}; - azimut=145; - id=160; + position[]={26854.064,26.214239,24485.541}; + azimut=130; + id=159; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item78 { - position[]={795.43298,6,1848.762}; - azimut=143; - id=161; + position[]={26858.309,26.254385,24485.82}; + azimut=40; + id=160; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item79 { - position[]={802.05682,6,1853.7067}; - azimut=143; - id=162; + position[]={26686.828,19.831408,24605.326}; + azimut=40; + id=161; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item80 { - position[]={808.51154,6,1858.8074}; - azimut=140; - id=163; + position[]={26692.869,19.961664,24600.311}; + azimut=40; + id=162; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item81 { - position[]={814.68451,6,1864.0771}; - azimut=140; - id=164; + position[]={26698.906,20.382103,24595.242}; + azimut=40; + id=163; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item82 { - position[]={820.92554,6,1869.3589}; - azimut=140; - id=165; + position[]={26705.203,20.690088,24590.121}; + azimut=40; + id=164; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item83 { - position[]={827.27155,6,1874.8108}; - azimut=140; - id=166; + position[]={26711.395,20.825146,24584.9}; + azimut=40; + id=165; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item84 { - position[]={833.64313,6,1880.2363}; - azimut=140; - id=167; + position[]={26717.488,21.112198,24579.779}; + azimut=40; + id=166; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item85 { - position[]={839.96362,6,1885.5381}; - azimut=140; - id=168; + position[]={26723.629,21.47473,24574.609}; + azimut=40; + id=167; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item86 { - position[]={846.284,5.997499,1890.9379}; - azimut=140; - id=169; + position[]={26735.711,22.108635,24564.574}; + azimut=40; + id=168; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item87 { - position[]={852.55322,6,1896.3147}; - azimut=140; - id=170; + position[]={26753.672,22.806257,24549.717}; + azimut=40; + id=169; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item88 { - position[]={716.03705,6.0941482,1819.1615}; - azimut=140; - id=171; + position[]={26759.754,23.050566,24544.629}; + azimut=40; + id=170; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item89 { - position[]={722.03015,6.0733814,1824.2106}; - azimut=140; - id=172; + position[]={26765.793,23.300764,24539.59}; + azimut=40; + id=171; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item90 { - position[]={727.90118,6.1056113,1829.1006}; - azimut=140; - id=173; + position[]={26771.691,23.534,24534.641}; + azimut=40; + id=172; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item91 { - position[]={733.84906,6.1319156,1834.1149}; - azimut=140; - id=174; + position[]={26777.637,23.777401,24529.691}; + azimut=40; + id=173; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item92 { - position[]={740.06415,6.1348042,1839.3306}; - azimut=140; - id=175; + position[]={26783.637,24.040606,24524.738}; + azimut=40; + id=174; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item93 { - position[]={745.81158,6.1190143,1844.2789}; - azimut=140; - id=176; + position[]={26789.537,24.309319,24519.744}; + azimut=40; + id=175; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item94 { - position[]={751.62262,6.0974102,1848.9553}; - azimut=140; - id=177; + position[]={26795.574,24.505087,24514.701}; + azimut=40; + id=176; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item95 { - position[]={757.49365,6.0710135,1853.8453}; - azimut=140; - id=178; + position[]={26801.523,24.613827,24509.697}; + azimut=40; + id=177; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item96 { - position[]={763.44153,6.0470443,1858.8596}; - azimut=140; - id=179; + position[]={26807.396,24.778641,24504.662}; + azimut=40; + id=178; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item97 { - position[]={769.65662,6.0228305,1864.0753}; - azimut=140; - id=180; + position[]={26813.273,24.989782,24499.719}; + azimut=40; + id=179; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item98 { - position[]={775.40405,6.0018406,1869.0237}; - azimut=140; - id=181; + position[]={26819.146,25.263405,24494.676}; + azimut=40; + id=180; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item99 { - position[]={781.64703,5.9942212,1874.2405}; - azimut=140; - id=182; + position[]={26825.072,25.522869,24489.557}; + azimut=40; + id=181; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item100 { - position[]={787.51807,5.9945168,1879.1305}; - azimut=140; - id=183; + position[]={26830.973,25.763977,24484.506}; + azimut=40; + id=182; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item101 { - position[]={793.46594,6,1884.1448}; - azimut=140; - id=184; + position[]={26836.918,26.006767,24479.51}; + azimut=40; + id=183; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item102 { - position[]={799.68103,5.9946108,1889.3605}; - azimut=140; - id=185; + position[]={26841.957,26.258018,24475.379}; + azimut=40; + id=184; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item103 { - position[]={805.42847,5.99965,1894.3088}; - azimut=140; - id=186; + position[]={26748.477,22.910776,24543.535}; + azimut=40; + id=185; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item104 { - position[]={811.34766,5.999651,1899.3094}; - azimut=140; - id=187; + position[]={26754.531,23.129507,24538.57}; + azimut=40; + id=186; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item105 { - position[]={817.21869,5.9914999,1904.1995}; - azimut=140; - id=188; + position[]={26760.432,23.353369,24533.527}; + azimut=40; + id=187; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item106 { - position[]={823.16656,5.9980631,1909.2137}; - azimut=140; - id=189; + position[]={26766.422,23.588297,24528.398}; + azimut=40; + id=188; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item107 { - position[]={829.38165,6,1914.4294}; - azimut=140; - id=190; + position[]={26772.596,23.838976,24523.039}; + azimut=42; + id=189; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item108 { - position[]={835.12909,5.9883409,1919.3778}; - azimut=140; - id=191; + position[]={26778.359,24.087416,24517.863}; + azimut=42; + id=190; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item109 { - position[]={840.20532,5.9836955,1917.8411}; - azimut=50; - id=192; + position[]={26784.305,24.348587,24512.414}; + azimut=42; + id=191; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item110 { - position[]={845.19946,5.9601502,1911.8975}; - azimut=50; - id=193; + position[]={26790.25,24.609047,24507.1}; + azimut=42; + id=192; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item111 { - position[]={850.19354,5.9950438,1905.7433}; - azimut=50; - id=194; + position[]={26795.93,24.807636,24501.836}; + azimut=42; + id=193; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item112 { - position[]={853.97864,6,1901.4833}; - azimut=50; - id=195; + position[]={26801.824,24.990799,24496.66}; + azimut=42; + id=194; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item113 { - position[]={696.4967,6.0851517,1804.6783}; - azimut=140; - id=196; + position[]={26807.904,25.190668,24491.33}; + azimut=42; + id=195; side="EMPTY"; - vehicle="Flag_NATO_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; - text="flagPole"; }; class Item114 { - position[]={668.91956,6.010416,1771.3019}; - azimut=237; - id=197; + position[]={26813.803,25.410355,24486.105}; + azimut=42; + id=196; side="EMPTY"; - vehicle="Land_HelipadEmpty_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; - text="fobSpawn"; }; class Item115 { - position[]={660.93768,6.0133247,1850.3156}; - azimut=137; - id=198; + position[]={26819.75,25.650244,24480.889}; + azimut=42; + id=197; side="EMPTY"; - vehicle="Land_HelipadSquare_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; - text="garage_spawn_0"; }; class Item116 { - position[]={645.84198,6.0921617,1835.8474}; - azimut=137; - id=199; + position[]={26825.471,25.907431,24475.803}; + azimut=42; + id=198; side="EMPTY"; - vehicle="Land_HelipadSquare_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; - text="garage_spawn_1"; }; class Item117 { - position[]={615.34821,6.1382518,1808.4594}; - azimut=137; - id=200; + position[]={26831.461,26.210234,24470.535}; + azimut=42; + id=199; side="EMPTY"; - vehicle="Land_HelipadSquare_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; - text="garage_spawn_3"; }; class Item118 { - position[]={630.16028,6.1504002,1822.0396}; - azimut=137; - id=201; + position[]={26837.318,26.558489,24465.314}; + azimut=42; + id=200; side="EMPTY"; - vehicle="Land_HelipadSquare_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; - text="garage_spawn_2"; }; class Item119 { - position[]={708.2749,6.0427299,1825.8895}; - azimut=140; - id=202; + position[]={26841.299,26.715721,24461.711}; + azimut=42; + id=201; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item120 { - position[]={717.46619,6.0954742,1824.1465}; - azimut=50; - id=203; + position[]={26848.191,26.498379,24469.76}; + azimut=42; + id=202; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item121 { - position[]={736.95978,6.0393443,1850.7351}; - azimut=50; - id=204; + position[]={26867.324,26.16889,24491.773}; + azimut=131; + id=203; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item122 { - position[]={731.83594,6.075242,1856.8417}; - azimut=50; - id=205; + position[]={26872.457,26.057894,24497.629}; + azimut=131; + id=204; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item123 { - position[]={709.8017,6.0418105,1852.1271}; - azimut=140; - id=206; + position[]={26877.721,25.970894,24503.623}; + azimut=131; + id=205; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item124 { - position[]={715.74957,6.071043,1857.1414}; - azimut=140; - id=207; + position[]={26882.986,25.970659,24509.619}; + azimut=131; + id=206; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item125 { - position[]={721.96466,6.1015253,1862.3571}; - azimut=140; - id=208; + position[]={26888.205,26.061222,24515.475}; + azimut=131; + id=207; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item126 { - position[]={726.9165,6.1158671,1862.7834}; - azimut=50; - id=209; + position[]={26893.457,26.071909,24521.42}; + azimut=131; + id=208; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item127 { - position[]={708.10797,6.0425987,1854.1163}; - azimut=140; - id=210; + position[]={26898.535,26.090406,24527.309}; + azimut=131; + id=209; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item128 { - position[]={693.71808,5.9899998,1838.8607}; - azimut=50; - id=211; + position[]={26903.625,25.995604,24533.1}; + azimut=131; + id=210; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item129 { - position[]={725.638,6.045752,1846.2258}; - azimut=230; - id=212; + position[]={26908.693,25.799734,24538.932}; + azimut=131; + id=211; side="EMPTY"; - vehicle="Land_HelipadRescue_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; - text="garage_spawn_med"; }; class Item130 { - position[]={720.9425,6.0769019,1827.3185}; - azimut=50; - id=213; + position[]={26913.732,25.75485,24544.697}; + azimut=131; + id=212; side="EMPTY"; - vehicle="MASH_EP1"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; - syncId=4; - synchronizations[]={3}; }; class Item131 { - position[]={594.95911,6.0376916,1791.3811}; - azimut=137; - id=214; + position[]={26918.863,25.678379,24550.646}; + azimut=131; + id=213; side="EMPTY"; - vehicle="Land_HelipadSquare_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; - text="garage_spawn_4"; }; class Item132 { - position[]={724.1073,6.0497589,1820.4933}; - azimut=50; - id=215; + position[]={26924.084,25.598967,24556.598}; + azimut=131; + id=214; side="EMPTY"; - vehicle="ShootingPos_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item133 { - position[]={726.44501,6.0154729,1817.7238}; - azimut=50; - id=216; + position[]={26929.213,25.367577,24562.457}; + azimut=131; + id=215; side="EMPTY"; - vehicle="ShootingPos_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item134 { - position[]={728.78253,6,1815.022}; - azimut=50; - id=217; + position[]={26934.432,25.16185,24568.273}; + azimut=131; + id=216; side="EMPTY"; - vehicle="ShootingPos_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item135 { - position[]={731.052,6,1812.2965}; - azimut=50; - id=218; + position[]={26939.643,24.914995,24574.367}; + azimut=131; + id=217; side="EMPTY"; - vehicle="ShootingPos_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item136 { - position[]={730.42114,6.0161881,1823.5117}; - azimut=50; - id=219; + position[]={26944.768,24.723801,24580.27}; + azimut=131; + id=218; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item137 { - position[]={733.38135,6.0601783,1825.7255}; - azimut=50; - id=220; + position[]={26949.945,24.507494,24586.131}; + azimut=131; + id=219; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item138 { - position[]={736.34149,6.1271315,1828.4592}; - azimut=50; - id=221; + position[]={26954.982,24.270988,24591.898}; + azimut=131; + id=220; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item139 { - position[]={739.3667,6.1788349,1830.8351}; - azimut=50; - id=222; + position[]={26959.998,24.078382,24597.666}; + azimut=131; + id=221; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item140 { - position[]={742.02509,6.1785946,1833.5386}; - azimut=50; - id=223; + position[]={26964.947,23.839434,24603.301}; + azimut=131; + id=222; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item141 { - position[]={744.98529,6.1256676,1835.7523}; - azimut=50; - id=224; + position[]={26969.887,23.669096,24609.111}; + azimut=129; + id=223; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item142 { - position[]={747.94543,6.1738925,1838.4861}; - azimut=50; - id=225; + position[]={26974.563,23.547907,24614.879}; + azimut=129; + id=224; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item143 { - position[]={750.97064,6.1656919,1840.8619}; - azimut=50; - id=226; + position[]={26979.465,23.420652,24620.967}; + azimut=129; + id=225; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item144 { - position[]={753.17688,6.1565995,1842.734}; - azimut=50; - id=227; + position[]={26984.383,23.302431,24626.895}; + azimut=130; + id=226; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item145 { - position[]={756.13708,6.1467834,1844.9478}; - azimut=50; - id=228; + position[]={26989.193,23.168716,24632.617}; + azimut=130; + id=227; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item146 { - position[]={759.09723,6.129231,1847.6815}; - azimut=50; - id=229; + position[]={26994.098,23.125713,24638.521}; + azimut=130; + id=228; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item147 { - position[]={762.12244,6.1151233,1850.0574}; - azimut=50; - id=230; + position[]={26998.549,23.032211,24644.133}; + azimut=131; + id=229; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item148 { - position[]={765.0069,6.1016183,1852.3097}; - azimut=50; - id=231; + position[]={27003.813,22.944569,24650.127}; + azimut=131; + id=230; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item149 { - position[]={767.9671,6.0877681,1854.5234}; - azimut=50; - id=232; + position[]={27009.078,22.876373,24656.123}; + azimut=131; + id=231; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item150 { - position[]={770.92725,6.0698447,1857.2572}; - azimut=50; - id=233; + position[]={27014.297,22.793158,24661.979}; + azimut=131; + id=232; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item151 { - position[]={773.95245,6.054872,1859.6331}; - azimut=50; - id=234; + position[]={27019.549,22.733606,24667.924}; + azimut=131; + id=233; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item152 { - position[]={776.91223,6.0402937,1862.3383}; - azimut=50; - id=235; + position[]={27024.627,22.639164,24673.813}; + azimut=131; + id=234; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item153 { - position[]={779.87244,6.0294824,1864.552}; - azimut=50; - id=236; + position[]={27029.717,22.593636,24679.604}; + azimut=131; + id=235; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item154 { - position[]={782.83258,6.0152044,1867.2858}; - azimut=50; - id=237; + position[]={27034.785,22.531475,24685.436}; + azimut=131; + id=236; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item155 { - position[]={785.85779,6.0120459,1869.6616}; - azimut=50; - id=238; + position[]={27039.824,22.520269,24691.201}; + azimut=131; + id=237; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item156 { - position[]={788.81744,6.0119534,1871.835}; - azimut=50; - id=239; + position[]={27044.955,22.501562,24697.15}; + azimut=131; + id=238; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item157 { - position[]={791.77765,6.0095086,1874.0487}; - azimut=50; - id=240; + position[]={27050.176,22.527058,24703.102}; + azimut=131; + id=239; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item158 { - position[]={794.73779,6.0072742,1876.7825}; - azimut=50; - id=241; + position[]={27055.305,22.568148,24708.961}; + azimut=131; + id=240; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item159 { - position[]={797.763,6.0081396,1879.1583}; - azimut=50; - id=242; + position[]={27060.523,22.677519,24714.777}; + azimut=131; + id=241; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item160 { - position[]={800.40985,6.0021162,1881.7063}; - azimut=50; - id=243; + position[]={27065.734,22.804249,24720.871}; + azimut=131; + id=242; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item161 { - position[]={803.37006,5.9992666,1883.92}; - azimut=50; - id=244; + position[]={27070.859,22.884298,24726.773}; + azimut=131; + id=243; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item162 { - position[]={806.3302,5.9995685,1886.6538}; - azimut=50; - id=245; + position[]={27076.037,22.976995,24732.635}; + azimut=131; + id=244; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item163 { - position[]={809.35541,6.0004344,1889.0297}; - azimut=50; - id=246; + position[]={27081.074,22.916277,24738.402}; + azimut=131; + id=245; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item164 { - position[]={811.86304,5.9980893,1891.4329}; - azimut=50; - id=247; + position[]={27086.09,22.839939,24744.17}; + azimut=131; + id=246; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item165 { - position[]={814.82324,5.9951377,1893.6466}; - azimut=50; - id=248; + position[]={27091.039,22.81329,24749.805}; + azimut=131; + id=247; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item166 { - position[]={817.78339,5.9914927,1896.3804}; - azimut=50; - id=249; + position[]={27095.979,22.816433,24755.615}; + azimut=129; + id=248; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item167 { - position[]={820.80859,5.9899998,1898.7562}; - azimut=50; - id=250; + position[]={27100.654,22.78149,24761.383}; + azimut=129; + id=249; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item168 { - position[]={823.76843,5.9899998,1901.382}; - azimut=50; - id=251; + position[]={27105.557,22.740541,24767.471}; + azimut=129; + id=250; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item169 { - position[]={826.72864,5.9895668,1903.5957}; - azimut=50; - id=252; + position[]={27110.475,22.69191,24773.398}; + azimut=130; + id=251; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item170 { - position[]={829.68878,5.9855208,1906.3295}; - azimut=50; - id=253; + position[]={27115.285,22.659792,24779.121}; + azimut=130; + id=252; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item171 { - position[]={832.71399,5.9895959,1908.7053}; - azimut=50; - id=254; + position[]={27120.189,22.602074,24785.025}; + azimut=130; + id=253; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item172 { - position[]={735.53778,6,1817.754}; - azimut=50; - id=255; + position[]={27124.982,22.553291,24790.326}; + azimut=131; + id=254; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item173 { - position[]={738.56299,6,1820.1299}; - azimut=50; - id=256; + position[]={27130.246,22.579947,24796.32}; + azimut=131; + id=255; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item174 { - position[]={741.07062,6.0007081,1822.5331}; - azimut=50; - id=257; + position[]={27135.512,22.599806,24802.316}; + azimut=131; + id=256; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item175 { - position[]={744.03082,6.0599179,1824.7468}; - azimut=50; - id=258; + position[]={27140.73,22.612692,24808.172}; + azimut=131; + id=257; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item176 { - position[]={746.99097,6.0802398,1827.4806}; - azimut=50; - id=259; + position[]={27145.982,22.683754,24814.117}; + azimut=131; + id=258; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item177 { - position[]={750.01617,6,1829.8564}; - azimut=50; - id=260; + position[]={27151.061,22.888737,24820.006}; + azimut=131; + id=259; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item178 { - position[]={752.97601,6.0628829,1832.4822}; - azimut=50; - id=261; + position[]={27156.15,23.137646,24825.797}; + azimut=131; + id=260; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item179 { - position[]={755.93622,6.1273174,1834.6959}; - azimut=50; - id=262; + position[]={27161.219,23.360374,24831.629}; + azimut=131; + id=261; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item180 { - position[]={758.89636,6.2080326,1837.4297}; - azimut=50; - id=263; + position[]={27166.258,23.578741,24837.395}; + azimut=131; + id=262; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item181 { - position[]={761.75964,6.1972761,1839.0905}; - azimut=50; - id=264; + position[]={27171.389,23.751812,24843.344}; + azimut=131; + id=263; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item182 { - position[]={764.78485,6.1882725,1841.4663}; - azimut=50; - id=265; + position[]={27176.609,23.918591,24849.295}; + azimut=131; + id=264; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item183 { - position[]={767.29248,6.1180358,1843.8695}; - azimut=50; - id=266; + position[]={27181.738,24.140285,24855.154}; + azimut=131; + id=265; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item184 { - position[]={770.25269,6.0408273,1846.0833}; - azimut=50; - id=267; + position[]={27186.957,24.380737,24860.971}; + azimut=131; + id=266; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item185 { - position[]={773.21283,6.0559835,1848.817}; - azimut=50; - id=268; + position[]={27192.168,24.64662,24867.064}; + azimut=131; + id=267; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item186 { - position[]={776.23804,6.0940714,1851.1929}; - azimut=50; - id=269; + position[]={27197.293,24.884598,24872.967}; + azimut=131; + id=268; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item187 { - position[]={779.19788,6.1083808,1853.8186}; - azimut=50; - id=270; + position[]={27202.471,25.076929,24878.828}; + azimut=131; + id=269; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item188 { - position[]={782.15808,6.05721,1856.0323}; - azimut=50; - id=271; + position[]={27207.508,25.304981,24884.596}; + azimut=131; + id=270; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item189 { - position[]={785.11823,6.0553093,1858.7661}; - azimut=50; - id=272; + position[]={27212.523,25.583986,24890.363}; + azimut=131; + id=271; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item190 { - position[]={788.05688,6.0564451,1861.2535}; - azimut=50; - id=273; + position[]={27217.473,25.804237,24895.998}; + azimut=131; + id=272; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item191 { - position[]={791.08209,6.0123706,1863.6294}; - azimut=50; - id=274; + position[]={27222.412,26.03685,24901.809}; + azimut=129; + id=273; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item192 { - position[]={793.58972,6.0284133,1866.0326}; - azimut=50; - id=275; + position[]={27227.088,26.342924,24907.576}; + azimut=129; + id=274; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item193 { - position[]={796.54993,6.0390811,1868.2463}; - azimut=50; - id=276; + position[]={27231.99,26.66184,24913.664}; + azimut=129; + id=275; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item194 { - position[]={799.51007,6.032093,1870.9801}; - azimut=50; - id=277; + position[]={27236.908,26.888828,24919.592}; + azimut=130; + id=276; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item195 { - position[]={802.53528,6.02634,1873.356}; - azimut=50; - id=278; + position[]={26911.383,20.310577,24721.336}; + azimut=131; + id=277; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item196 { - position[]={805.49512,6.0093946,1875.9817}; - azimut=50; - id=279; + position[]={26915.623,20.318466,24726.201}; + azimut=131; + id=278; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item197 { - position[]={808.45532,6.0022016,1878.1954}; - azimut=50; - id=280; + position[]={26920.889,20.2661,24732.197}; + azimut=131; + id=279; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item198 { - position[]={811.41547,6.007906,1880.9292}; - azimut=50; - id=281; + position[]={26926.107,20.252979,24738.053}; + azimut=131; + id=280; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item199 { - position[]={814.73071,6.0152845,1883.2673}; - azimut=50; - id=282; + position[]={26931.359,20.199335,24743.998}; + azimut=131; + id=281; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item200 { - position[]={817.75592,6.0109358,1885.6432}; - azimut=50; - id=283; + position[]={26936.438,20.289927,24749.887}; + azimut=131; + id=282; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item201 { - position[]={820.26355,6,1888.0464}; - azimut=50; - id=284; + position[]={26941.527,20.380867,24755.678}; + azimut=131; + id=283; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item202 { - position[]={823.22375,5.9996529,1890.2601}; - azimut=50; - id=285; + position[]={26946.596,20.466448,24761.51}; + azimut=131; + id=284; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item203 { - position[]={826.1839,5.9960079,1892.9939}; - azimut=50; - id=286; + position[]={26951.635,20.546368,24767.275}; + azimut=131; + id=285; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item204 { - position[]={829.20911,5.9928403,1895.3698}; - azimut=50; - id=287; + position[]={26956.766,20.691349,24773.225}; + azimut=131; + id=286; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item205 { - position[]={832.16895,5.9897804,1897.9955}; - azimut=50; - id=288; + position[]={26961.986,20.762905,24779.176}; + azimut=131; + id=287; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item206 { - position[]={835.12915,5.9828825,1900.2092}; - azimut=50; - id=289; + position[]={26967.115,20.738791,24785.035}; + azimut=131; + id=288; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item207 { - position[]={838.08929,5.9752903,1902.943}; - azimut=50; - id=290; + position[]={26972.334,20.732651,24790.852}; + azimut=131; + id=289; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item208 { - position[]={739.97906,6,1814.1835}; - azimut=50; - id=291; + position[]={26977.545,20.753572,24796.945}; + azimut=131; + id=290; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item209 { - position[]={743.00427,6,1816.5593}; - azimut=50; - id=292; + position[]={26982.67,20.872278,24802.848}; + azimut=131; + id=291; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item210 { - position[]={745.5119,6,1818.9625}; - azimut=50; - id=293; + position[]={26987.848,21.078085,24808.709}; + azimut=131; + id=292; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item211 { - position[]={748.47211,6,1821.1763}; - azimut=50; - id=294; + position[]={26992.885,21.255266,24814.477}; + azimut=131; + id=293; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item212 { - position[]={751.43225,6,1823.91}; - azimut=50; - id=295; + position[]={26997.9,21.405054,24820.244}; + azimut=131; + id=294; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item213 { - position[]={754.45746,6,1826.2859}; - azimut=50; - id=296; + position[]={27002.85,21.514683,24825.879}; + azimut=131; + id=295; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item214 { - position[]={757.4173,6,1828.9116}; - azimut=50; - id=297; + position[]={27007.789,21.667664,24831.689}; + azimut=129; + id=296; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item215 { - position[]={760.3775,6.0315113,1831.1254}; - azimut=50; - id=298; + position[]={27012.465,21.917414,24837.457}; + azimut=129; + id=297; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item216 { - position[]={763.33765,6.108057,1833.8591}; - azimut=50; - id=299; + position[]={27017.367,22.3155,24843.545}; + azimut=129; + id=298; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item217 { - position[]={770.72192,6.0497842,1835.896}; - azimut=50; - id=300; + position[]={27022.285,22.602488,24849.473}; + azimut=130; + id=299; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item218 { - position[]={773.74713,6,1838.2719}; - azimut=50; - id=301; + position[]={27027.096,22.806007,24855.195}; + azimut=130; + id=300; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item219 { - position[]={776.25476,6,1840.675}; - azimut=50; - id=302; + position[]={27032,22.939093,24861.1}; + azimut=130; + id=301; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item220 { - position[]={779.21497,6,1842.8888}; - azimut=50; - id=303; + position[]={27037.051,23.122993,24866.682}; + azimut=131; + id=302; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item221 { - position[]={782.17511,6.0099626,1845.6226}; - azimut=50; - id=304; + position[]={27042.486,23.302736,24872.678}; + azimut=131; + id=303; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item222 { - position[]={785.20032,6.0367942,1847.9984}; - azimut=50; - id=305; + position[]={27047.82,23.371313,24878.596}; + azimut=131; + id=304; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item223 { - position[]={788.16016,6,1850.6241}; - azimut=50; - id=306; + position[]={27053.211,23.42511,24884.451}; + azimut=131; + id=305; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item224 { - position[]={791.12036,6.0031543,1852.8379}; - azimut=50; - id=307; + position[]={27058.461,23.537548,24890.225}; + azimut=131; + id=306; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item225 { - position[]={794.08051,6.0085816,1855.5717}; - azimut=50; - id=308; + position[]={27063.656,23.660736,24896.055}; + azimut=131; + id=307; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item226 { - position[]={796.4917,6,1857.3065}; - azimut=50; - id=309; + position[]={27068.918,23.764055,24901.557}; + azimut=131; + id=308; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item227 { - position[]={799.51691,6,1859.6824}; - azimut=50; - id=310; + position[]={27073.986,23.903282,24907.389}; + azimut=131; + id=309; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item228 { - position[]={802.02454,6.0132709,1862.0856}; - azimut=50; - id=311; + position[]={27079.025,24.034636,24913.154}; + azimut=131; + id=310; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item229 { - position[]={804.98474,6.0286632,1864.2993}; - azimut=50; - id=312; + position[]={27084.156,24.206724,24919.104}; + azimut=131; + id=311; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item230 { - position[]={807.94489,6.0137005,1867.0331}; - azimut=50; - id=313; + position[]={27089.377,24.361795,24925.055}; + azimut=131; + id=312; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item231 { - position[]={810.97009,6,1869.4089}; - azimut=50; - id=314; + position[]={27094.506,24.547764,24930.914}; + azimut=131; + id=313; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item232 { - position[]={813.92993,6,1872.0347}; - azimut=50; - id=315; + position[]={27099.725,24.670773,24936.73}; + azimut=131; + id=314; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item233 { - position[]={816.89014,6,1874.2484}; - azimut=50; - id=316; + position[]={27104.936,24.744146,24942.824}; + azimut=131; + id=315; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item234 { - position[]={819.85028,6.0052857,1876.9822}; - azimut=50; - id=317; + position[]={27110.061,24.759069,24948.727}; + azimut=131; + id=316; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item235 { - position[]={820.00104,6.0066948,1877.5104}; - azimut=50; - id=318; + position[]={27115.238,24.754801,24954.588}; + azimut=131; + id=317; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item236 { - position[]={823.02625,6.0052633,1879.8862}; - azimut=50; - id=319; + position[]={27120.275,24.743135,24960.355}; + azimut=131; + id=318; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item237 { - position[]={825.53387,6,1882.2894}; - azimut=50; - id=320; + position[]={27125.291,24.611444,24966.123}; + azimut=131; + id=319; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item238 { - position[]={828.49408,6,1884.5032}; - azimut=50; - id=321; + position[]={27130.24,24.477238,24971.758}; + azimut=131; + id=320; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item239 { - position[]={831.45422,6,1887.2369}; - azimut=50; - id=322; + position[]={27135.18,24.425842,24977.568}; + azimut=129; + id=321; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item240 { - position[]={834.47943,6,1889.6128}; - azimut=50; - id=323; + position[]={27139.855,24.455009,24983.336}; + azimut=129; + id=322; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item241 { - position[]={837.43927,5.997015,1892.2385}; - azimut=50; - id=324; + position[]={27144.758,24.476776,24989.424}; + azimut=129; + id=323; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item242 { - position[]={840.39948,5.9881272,1894.4523}; - azimut=50; - id=325; + position[]={27149.676,24.446703,24995.352}; + azimut=130; + id=324; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item243 { - position[]={843.35962,5.9889588,1897.186}; - azimut=50; - id=326; + position[]={27154.486,24.357185,25001.074}; + azimut=130; + id=325; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item244 { - position[]={847.39404,5.9995766,1900.049}; - azimut=50; - id=327; + position[]={27158.758,24.122019,25006.242}; + azimut=130; + id=326; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item245 { - position[]={843.32288,5.9832916,1905.5531}; - azimut=50; - id=328; + position[]={26757.533,18.530378,24702.711}; + azimut=40; + id=327; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item246 { - position[]={837.78467,5.9788609,1912.0469}; - azimut=50; - id=329; + position[]={26762.852,19.016323,24698.256}; + azimut=40; + id=328; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item247 { - position[]={732.30066,6,1812.7396}; - azimut=50; - id=330; + position[]={26771.318,18.572186,24703.777}; + azimut=130; + id=329; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item248 { - position[]={728.10437,6,1817.1342}; - azimut=50; - id=331; + position[]={26776.537,18.482143,24705.404}; + azimut=40; + id=330; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item249 { - position[]={723.90808,6.0526814,1821.5598}; - azimut=50; - id=332; + position[]={26782.381,18.893139,24700.438}; + azimut=40; + id=331; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item250 { - position[]={746.51184,6.1592007,1839.6057}; - azimut=50; - id=333; + position[]={26788.217,19.338865,24695.418}; + azimut=40; + id=332; side="EMPTY"; - vehicle="TargetBootcampHumanSimple_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item251 { - position[]={757.67786,6.1238985,1847.8473}; - azimut=50; - id=334; + position[]={26793.797,19.604189,24690.607}; + azimut=40; + id=333; side="EMPTY"; - vehicle="TargetBootcampHumanSimple_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item252 { - position[]={770.25092,6.0724678,1856.8167}; - azimut=50; - id=335; + position[]={26799.631,19.851816,24685.691}; + azimut=40; + id=334; side="EMPTY"; - vehicle="TargetBootcampHumanSimple_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item253 { - position[]={783.87952,6.024065,1866.1661}; - azimut=50; - id=336; + position[]={26805.871,20.243877,24680.418}; + azimut=40; + id=335; side="EMPTY"; - vehicle="TargetBootcampHumanSimple_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item254 { - position[]={796.22766,6.0123401,1874.8242}; - azimut=50; - id=337; + position[]={26811.805,20.58449,24679.453}; + azimut=338; + id=336; side="EMPTY"; - vehicle="TargetBootcampHumanSimple_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item255 { - position[]={808.92352,6.0073528,1883.4091}; - azimut=50; - id=338; + position[]={26817.385,20.728291,24681.738}; + azimut=338; + id=337; side="EMPTY"; - vehicle="TargetBootcampHumanSimple_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item256 { - position[]={821.53516,5.9971676,1892.1241}; - azimut=50; - id=339; + position[]={26824.863,20.753666,24684.656}; + azimut=338; + id=338; side="EMPTY"; - vehicle="TargetBootcampHumanSimple_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item257 { - position[]={835.62067,5.9811368,1901.0265}; - azimut=50; - id=340; + position[]={26832.178,20.828703,24687.523}; + azimut=338; + id=339; side="EMPTY"; - vehicle="TargetBootcampHumanSimple_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item258 { - position[]={847.23096,5.9945884,1905.9192}; - azimut=50; - id=341; + position[]={26839.596,20.889597,24690.496}; + azimut=338; + id=340; side="EMPTY"; - vehicle="TargetBootcampHumanSimple_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item259 { - position[]={849.21588,6,1903.2705}; - azimut=50; - id=342; + position[]={26846.814,20.885517,24693.463}; + azimut=338; + id=341; side="EMPTY"; - vehicle="TargetBootcampHumanSimple_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item260 { - position[]={851.36627,6,1900.9543}; - azimut=50; - id=343; + position[]={26854.287,20.995777,24696.484}; + azimut=338; + id=342; side="EMPTY"; - vehicle="TargetBootcampHumanSimple_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item261 { - position[]={835.84106,5.9827728,1915.3969}; - azimut=50; - id=344; + position[]={26861.504,20.972878,24699.352}; + azimut=338; + id=343; side="EMPTY"; - vehicle="Land_ClutterCutter_large_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item262 { - position[]={612.5592,6.1130395,1766.0806}; - azimut=47; - id=345; + position[]={26868.822,20.862839,24702.271}; + azimut=338; + id=344; side="EMPTY"; - vehicle="Land_CncBarrier_stripes_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item263 { - position[]={615.22461,6.1123624,1763.1611}; - azimut=47; - id=346; + position[]={26875.896,20.877035,24705.063}; + azimut=338; + id=345; side="EMPTY"; - vehicle="Land_CncBarrier_stripes_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item264 { - position[]={617.9707,6.1118112,1760.2085}; - azimut=47; - id=347; + position[]={26883.061,20.712994,24707.932}; + azimut=338; + id=346; side="EMPTY"; - vehicle="Land_CncBarrier_stripes_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item265 { - position[]={620.83026,6.111268,1757.1453}; - azimut=47; - id=348; + position[]={26889.92,20.676723,24710.799}; + azimut=338; + id=347; side="EMPTY"; - vehicle="Land_CncBarrier_stripes_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item266 { - position[]={623.77191,6.1113486,1756.1417}; - azimut=137; - id=349; + position[]={26897.137,20.607569,24713.82}; + azimut=338; + id=348; side="EMPTY"; - vehicle="Land_CncBarrier_stripes_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item267 { - position[]={627.08533,6.118546,1759.2059}; - azimut=137; - id=350; + position[]={26904.762,20.454643,24716.941}; + azimut=338; + id=349; side="EMPTY"; - vehicle="Land_CncBarrier_stripes_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item268 { - position[]={630.12653,6.1373067,1762.0898}; - azimut=137; - id=351; + position[]={27236.834,27.019085,24924.313}; + azimut=48; + id=350; side="EMPTY"; - vehicle="Land_CncBarrier_stripes_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item269 { - position[]={706.69177,6.0280285,1802.6276}; - id=352; + position[]={27231.756,26.981491,24929.971}; + azimut=48; + id=351; side="EMPTY"; - vehicle="Land_HelipadEmpty_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; - text="respawn_obj"; }; class Item270 { - position[]={632.60626,6.1510415,1770.7809}; - azimut=47; - id=353; + position[]={27226.738,26.676661,24935.514}; + azimut=48; + id=352; side="EMPTY"; - vehicle="BlockConcrete_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item271 { - position[]={629.41101,6.1462154,1767.7505}; - azimut=47; - id=354; + position[]={27221.484,26.215664,24941.33}; + azimut=48; + id=353; side="EMPTY"; - vehicle="BlockConcrete_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item272 { - position[]={626.59137,6.1509094,1774.0905}; - azimut=137; - id=355; + position[]={27216.227,25.762321,24947.223}; + azimut=48; + id=354; side="EMPTY"; - vehicle="BlockConcrete_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item273 { - position[]={627.0451,6.1574349,1778.5309}; - azimut=47; - id=356; + position[]={27210.969,25.543297,24953.113}; + azimut=48; + id=355; side="EMPTY"; - vehicle="Land_RampConcrete_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item274 { - position[]={669.15594,6.0016575,1849.6006}; - azimut=317; - id=357; + position[]={27205.715,25.418421,24959.002}; + azimut=48; + id=356; side="EMPTY"; - vehicle="Land_InfoStand_V1_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; - text="garage_spawner_0"; - init="this enableSimulationGlobal false;"; }; class Item275 { - position[]={654.04657,6.0722308,1835.1169}; - azimut=317; - id=358; + position[]={27200.354,25.260889,24964.684}; + azimut=48; + id=357; side="EMPTY"; - vehicle="Land_InfoStand_V1_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; - text="garage_spawner_1"; - init="this enableSimulationGlobal false;"; }; class Item276 { - position[]={638.38983,6.1403613,1821.3391}; - azimut=317; - id=359; + position[]={27195.1,25.11409,24970.471}; + azimut=48; + id=358; side="EMPTY"; - vehicle="Land_InfoStand_V1_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; - text="garage_spawner_2"; - init="this enableSimulationGlobal false;"; }; class Item277 { - position[]={623.54932,6.1599998,1807.7683}; - azimut=317; - id=360; + position[]={27189.732,25.052525,24976.254}; + azimut=48; + id=359; side="EMPTY"; - vehicle="Land_InfoStand_V1_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; - text="garage_spawner_3"; - init="this enableSimulationGlobal false;"; }; class Item278 { - position[]={603.19305,6.1418161,1790.6688}; - azimut=317; - id=361; + position[]={27184.371,25.0184,24981.936}; + azimut=48; + id=360; side="EMPTY"; - vehicle="Land_InfoStand_V1_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; - text="garage_spawner_4"; - init="this enableSimulationGlobal false;"; }; class Item279 { - position[]={685.37543,6,1780.1918}; - azimut=50; - id=362; + position[]={27179.115,24.908602,24987.721}; + azimut=48; + id=361; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item280 { - position[]={681.90033,6.0063958,1784.2704}; - azimut=50; - id=363; + position[]={27174.172,24.756964,24993.191}; + azimut=48; + id=362; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item281 { - position[]={676.88818,6.0185676,1774.6417}; - azimut=50; - id=364; + position[]={27168.918,24.538374,24998.975}; + azimut=48; + id=363; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item282 { - position[]={673.41309,6.0461111,1778.7203}; - azimut=50; - id=365; + position[]={27163.973,24.258104,25004.762}; + azimut=48; + id=364; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item283 { - position[]={670.71643,6.0873852,1782.6809}; - azimut=137; - id=366; + position[]={26754.9,23.227198,24534.602}; + azimut=130; + id=365; side="EMPTY"; - vehicle="Land_InfoStand_V1_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; - text="garage_spawner_5"; - init="this enableSimulationGlobal false;"; }; class Item284 { - position[]={679.18158,6.0524573,1788.1989}; - azimut=137; - id=367; + position[]={26749.832,23.254463,24528.609}; + azimut=130; + id=366; side="EMPTY"; - vehicle="Land_InfoStand_V1_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; - text="garage_spawner_6"; - init="this enableSimulationGlobal false;"; }; class Item285 { - position[]={678.61255,6.0345254,1780.3463}; - azimut=320; - id=368; + position[]={26745.006,23.238129,24522.902}; + azimut=130; + id=367; side="EMPTY"; - vehicle="Land_HelipadEmpty_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; - text="garage_spawn_5"; }; class Item286 { - position[]={687.05109,6,1786.4639}; - azimut=320; - id=369; + position[]={26740.191,23.177996,24517.176}; + azimut=130; + id=368; side="EMPTY"; - vehicle="Land_HelipadEmpty_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; - text="garage_spawn_6"; }; class Item287 { - position[]={585.03925,5.9998951,1739.4398}; - azimut=140; - id=370; + position[]={26735.377,23.067152,24511.578}; + azimut=130; + id=369; side="EMPTY"; - vehicle="Land_CncBarrier_stripes_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item288 { - position[]={588.39813,6,1742.255}; - azimut=140; - id=371; + position[]={26730.434,22.905687,24505.588}; + azimut=130; + id=370; side="EMPTY"; - vehicle="Land_CncBarrier_stripes_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item289 { - position[]={598.42938,6.0542912,1750.6797}; - azimut=140; - id=372; + position[]={26725.424,22.724735,24499.6}; + azimut=130; + id=371; side="EMPTY"; - vehicle="Land_CncBarrier_stripes_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item290 { - position[]={595.13855,6.0203271,1747.9103}; - azimut=140; - id=373; + position[]={26721.242,22.527798,24499.324}; + azimut=40; + id=372; side="EMPTY"; - vehicle="Land_CncBarrier_stripes_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item291 { - position[]={591.71149,6,1745.0254}; - azimut=140; - id=374; + position[]={26715.25,22.295599,24504.318}; + azimut=40; + id=373; side="EMPTY"; - vehicle="Land_CncBarrier_stripes_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item292 { - position[]={600.51654,6.0593295,1750.4819}; - azimut=50; - id=375; + position[]={26709.313,22.097647,24509.381}; + azimut=40; + id=374; side="EMPTY"; - vehicle="Land_CncBarrier_stripes_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item293 { - position[]={611.72797,6.0272517,1737.1316}; - azimut=50; - id=376; + position[]={26703.49,21.973309,24514.27}; + azimut=40; + id=375; side="EMPTY"; - vehicle="Land_CncBarrier_stripes_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item294 { - position[]={609.2088,6.0457883,1740.1292}; - azimut=50; - id=377; + position[]={26697.258,21.843426,24519.334}; + azimut=40; + id=376; side="EMPTY"; - vehicle="Land_CncBarrier_stripes_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item295 { - position[]={602.94495,6.0579972,1747.554}; - azimut=50; - id=378; + position[]={26691.607,21.693287,24524.18}; + azimut=40; + id=377; side="EMPTY"; - vehicle="Land_CncBarrier_stripes_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item296 { - position[]={609.66278,6.0466328,1740.8999}; - azimut=5; - id=379; + position[]={26685.559,21.438457,24529.221}; + azimut=40; + id=378; side="EMPTY"; - vehicle="Land_CncBarrier_stripes_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item297 { - position[]={603.74005,6.0610042,1747.8864}; - azimut=95; - id=380; + position[]={26705.652,21.965303,24553.713}; + azimut=40; + id=379; side="EMPTY"; - vehicle="Land_CncBarrier_stripes_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item298 { - position[]={598.12921,6,1723.8201}; - azimut=140; - id=381; + position[]={26701.887,21.82918,24556.938}; + azimut=40; + id=380; side="EMPTY"; - vehicle="Land_CncBarrier_stripes_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item299 { - position[]={601.4881,6.0021806,1726.6353}; - azimut=140; - id=382; + position[]={26687.59,21.212294,24568.975}; + azimut=40; + id=381; side="EMPTY"; - vehicle="Land_CncBarrier_stripes_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item300 { - position[]={611.51935,6.017067,1735.0599}; - azimut=140; - id=383; + position[]={26681.484,20.9252,24574.252}; + azimut=40; + id=382; side="EMPTY"; - vehicle="Land_CncBarrier_stripes_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item301 { - position[]={608.22852,6,1732.2905}; - azimut=140; - id=384; + position[]={26639.057,19.024429,24575.133}; + azimut=130; + id=383; side="EMPTY"; - vehicle="Land_CncBarrier_stripes_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item302 { - position[]={604.80145,6.0035982,1729.4056}; - azimut=140; - id=385; + position[]={26679.477,21.104219,24534.299}; + azimut=40; + id=384; side="EMPTY"; - vehicle="Land_CncBarrier_stripes_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item303 { - position[]={610.77899,6.0364151,1738.7897}; - azimut=230; - id=386; + position[]={26673.488,20.820801,24539.369}; + azimut=40; + id=385; side="EMPTY"; - vehicle="Land_InfoStand_V1_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; - text="garage_scrap"; - init="this enableSimulationGlobal false;"; }; class Item304 { - position[]={680.40808,6.0993128,1803.2831}; - azimut=50; - id=387; + position[]={26667.5,20.579432,24544.41}; + azimut=40; + id=386; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item305 { - position[]={675.34668,6.0741754,1809.3374}; - azimut=50; - id=388; + position[]={26661.461,20.358904,24549.451}; + azimut=40; + id=387; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item306 { - position[]={675.979,6.0616417,1813.4052}; - azimut=147; - id=389; + position[]={26643.219,19.401995,24564.986}; + azimut=40; + id=388; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item307 { - position[]={682.68005,6.0322962,1817.7988}; - azimut=147; - id=390; + position[]={26751.969,22.6106,24555.09}; + azimut=105; + id=389; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item308 { - position[]={689.25104,6.011992,1822.1274}; - azimut=147; - id=391; + position[]={26754.104,22.38545,24562.676}; + azimut=105; + id=390; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item309 { - position[]={697.63477,5.9948435,1827.311}; - azimut=150; - id=392; + position[]={26739.623,22.052719,24567.219}; + azimut=105; + id=391; side="EMPTY"; - vehicle="Land_HBarrier_1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item310 { - position[]={681.74548,6.0610647,1807.8552}; - azimut=237; - id=393; + position[]={26756.102,22.201479,24569.941}; + azimut=105; + id=392; side="EMPTY"; - vehicle="Land_TableDesk_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; - text="cmd_desk"; }; class Item311 { - position[]={680.99677,6.0658684,1807.2673}; - azimut=237; - id=394; + position[]={26758.252,22.104448,24577.791}; + azimut=105; + id=393; side="EMPTY"; - vehicle="Land_OfficeChair_01_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item312 { - position[]={681.58813,6.051743,1811.5081}; - azimut=57; - id=395; + position[]={26760.438,22.185312,24585.545}; + azimut=105; + id=394; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item313 { - position[]={681.92853,6.0522275,1810.9861}; - azimut=57; - id=396; + position[]={26762.621,22.143852,24593.322}; + azimut=105; + id=395; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item314 { - position[]={682.26898,6.05265,1810.4872}; - azimut=57; - id=397; + position[]={26764.924,22.071524,24601.098}; + azimut=105; + id=396; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item315 { - position[]={682.58679,6.0540066,1809.9645}; - azimut=57; - id=398; + position[]={26767.111,21.964348,24608.816}; + azimut=105; + id=397; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item316 { - position[]={682.92719,6.0577292,1809.4196}; - azimut=57; - id=399; + position[]={26769.354,21.840157,24616.746}; + azimut=105; + id=398; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item317 { - position[]={683.29022,6.0615406,1808.8978}; - azimut=57; - id=400; + position[]={26729.139,21.387865,24576.461}; + azimut=130; + id=399; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item318 { - position[]={683.63074,6.0651412,1808.399}; - azimut=57; - id=401; + position[]={26715.51,21.856211,24565.287}; + azimut=40; + id=400; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item319 { - position[]={683.97113,6.0688019,1807.8771}; - azimut=57; - id=402; + position[]={26709.508,21.61656,24570.08}; + azimut=40; + id=401; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item320 { - position[]={684.31158,6.0717525,1807.3782}; - azimut=57; - id=403; + position[]={26703.508,21.350954,24575.16}; + azimut=40; + id=402; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item321 { - position[]={684.62939,6.0724773,1806.8555}; - azimut=57; - id=404; + position[]={26697.506,21.08437,24580.242}; + azimut=40; + id=403; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item322 { - position[]={684.96979,6.0732937,1806.3105}; - azimut=57; - id=405; + position[]={26691.213,20.808163,24585.264}; + azimut=40; + id=404; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item323 { - position[]={685.33282,6.0743232,1805.7888}; - azimut=57; - id=406; + position[]={26684.996,20.510431,24590.541}; + azimut=40; + id=405; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item324 { - position[]={683.086,6.0507331,1812.4402}; - azimut=57; - id=407; + position[]={26657.887,19.523048,24597.545}; + azimut=130; + id=406; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item325 { - position[]={683.42639,6.0543938,1811.9182}; - azimut=57; - id=408; + position[]={26662.793,19.484375,24603.26}; + azimut=130; + id=407; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item326 { - position[]={683.76685,6.0579939,1811.4193}; - azimut=57; - id=409; + position[]={26729.83,22.285027,24556.725}; + azimut=40; + id=408; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item327 { - position[]={684.08466,6.0615063,1810.8966}; - azimut=57; - id=410; + position[]={26643.846,19.219412,24580.906}; + azimut=130; + id=409; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item328 { - position[]={684.42505,6.0652294,1810.3517}; - azimut=57; - id=411; + position[]={26648.537,19.384808,24586.389}; + azimut=130; + id=410; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item329 { - position[]={684.78809,6.0690413,1809.83}; - azimut=57; - id=412; + position[]={26652.809,19.476467,24591.482}; + azimut=130; + id=411; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item330 { - position[]={685.1286,6.0726409,1809.3312}; - azimut=57; - id=413; + position[]={26666.477,19.396427,24607.73}; + azimut=130; + id=412; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item331 { - position[]={685.46899,6.0763025,1808.8092}; - azimut=57; - id=414; + position[]={26672.672,20.409813,24585.066}; + azimut=130; + id=413; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item332 { - position[]={685.80945,6.0799022,1808.3103}; - azimut=57; - id=415; + position[]={26677.816,20.350107,24591.236}; + azimut=130; + id=414; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item333 { - position[]={686.12726,6.083415,1807.7876}; - azimut=57; - id=416; + position[]={26705.396,22.029596,24548.328}; + azimut=130; + id=415; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item334 { - position[]={686.46765,6.0857649,1807.2427}; - azimut=57; - id=417; + position[]={26693.109,21.751245,24526.834}; + azimut=130; + id=416; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item335 { - position[]={686.83069,6.0867944,1806.7209}; - azimut=57; - id=418; + position[]={26741.707,21.77603,24574.705}; + azimut=105; + id=417; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item336 { - position[]={684.4704,6.0554767,1813.3026}; - azimut=57; - id=419; + position[]={26743.793,21.416069,24582.387}; + azimut=105; + id=418; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item337 { - position[]={684.81079,6.0605907,1812.7806}; - azimut=57; - id=420; + position[]={26745.875,21.105661,24589.941}; + azimut=105; + id=419; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item338 { - position[]={685.15125,6.0649233,1812.2817}; - azimut=57; - id=421; + position[]={26747.893,20.971319,24597.361}; + azimut=105; + id=420; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item339 { - position[]={685.46906,6.0684361,1811.759}; - azimut=57; - id=422; + position[]={26749.713,20.990934,24604.131}; + azimut=105; + id=421; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item340 { - position[]={685.80945,6.0721588,1811.2141}; - azimut=57; - id=423; + position[]={26751.602,20.856359,24611.158}; + azimut=105; + id=422; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item341 { - position[]={686.17249,6.0759706,1810.6924}; - azimut=57; - id=424; + position[]={26753.203,20.788649,24617.879}; + azimut=105; + id=423; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item342 { - position[]={686.513,6.0795708,1810.1936}; - azimut=57; - id=425; + position[]={26768.191,21.634184,24622.971}; + azimut=40; + id=424; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item343 { - position[]={686.85339,6.0832319,1809.6716}; - azimut=57; - id=426; + position[]={26762.109,20.982016,24628.1}; + azimut=40; + id=425; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item344 { - position[]={687.19385,6.086832,1809.1727}; - azimut=57; - id=427; + position[]={26755.986,20.626633,24633.232}; + azimut=40; + id=426; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item345 { - position[]={687.51166,6.0903444,1808.65}; - azimut=57; - id=428; + position[]={26749.898,20.552198,24638.41}; + azimut=40; + id=427; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item346 { - position[]={687.85205,6.0940666,1808.1051}; - azimut=57; - id=429; + position[]={26743.59,20.627979,24643.678}; + azimut=40; + id=428; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item347 { - position[]={688.21509,6.0978785,1807.5834}; - azimut=57; - id=430; + position[]={26737.557,20.714441,24648.766}; + azimut=40; + id=429; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item348 { - position[]={685.99097,6.0408425,1814.4846}; - azimut=57; - id=431; + position[]={26731.334,20.546713,24653.855}; + azimut=40; + id=430; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item349 { - position[]={686.33136,6.0459561,1813.9626}; - azimut=57; - id=432; + position[]={26688.305,18.880514,24644.002}; + azimut=40; + id=431; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item350 { - position[]={686.67181,6.0508232,1813.4637}; - azimut=57; - id=433; + position[]={26694.75,19.420786,24638.598}; + azimut=40; + id=432; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item351 { - position[]={686.98962,6.0559754,1812.941}; - azimut=57; - id=434; + position[]={26701.205,19.764318,24633.238}; + azimut=40; + id=433; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item352 { - position[]={687.33002,6.0613337,1812.3961}; - azimut=57; - id=435; + position[]={26751.383,20.589741,24623.412}; + azimut=40; + id=434; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item353 { - position[]={687.69305,6.0664144,1811.8744}; - azimut=57; - id=436; + position[]={26745.271,20.481247,24628.633}; + azimut=40; + id=435; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item354 { - position[]={688.03357,6.0712814,1811.3756}; - azimut=57; - id=437; + position[]={26739.09,20.556242,24633.705}; + azimut=40; + id=436; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item355 { - position[]={688.37396,6.076395,1810.8536}; - azimut=57; - id=438; + position[]={26709.453,19.765211,24626.348}; + azimut=40; + id=437; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item356 { - position[]={688.71442,6.0812626,1810.3547}; - azimut=57; - id=439; + position[]={26715.131,19.836035,24621.459}; + azimut=40; + id=438; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item357 { - position[]={689.03223,6.0864148,1809.832}; - azimut=57; - id=440; + position[]={26737.844,20.618467,24598.479}; + azimut=105; + id=439; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item358 { - position[]={689.37262,6.091773,1809.2871}; - azimut=57; - id=441; + position[]={26737.436,20.643652,24596.57}; + azimut=105; + id=440; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item359 { - position[]={689.73566,6.0968542,1808.7654}; - azimut=57; - id=442; + position[]={26736.076,20.535934,24603.951}; + azimut=40; + id=441; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item360 { - position[]={682.53192,6.0658627,1806.7511}; - azimut=237; - id=443; + position[]={26731.945,20.52726,24603.467}; + azimut=130; + id=442; side="EMPTY"; - vehicle="Land_Laptop_unfolded_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; - text="cmd_laptop"; - init="this attachTo[cmd_desk,[0,0,0.58]];"; }; class Item361 { - position[]={687.56439,6.031858,1815.521}; - azimut=57; - id=444; + position[]={26726.82,20.576736,24597.291}; + azimut=130; + id=443; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item362 { - position[]={687.90479,6.0328031,1814.999}; - azimut=57; - id=445; + position[]={26721.689,20.650381,24591.301}; + azimut=130; + id=444; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item363 { - position[]={688.24524,6.0376706,1814.5001}; - azimut=57; - id=446; + position[]={26719.191,20.72835,24588.303}; + azimut=130; + id=445; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item364 { - position[]={688.56305,6.0428233,1813.9774}; - azimut=57; - id=447; + position[]={26716.107,20.093296,24616.869}; + azimut=130; + id=446; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item365 { - position[]={688.90344,6.0481811,1813.4325}; - azimut=57; - id=448; + position[]={26711.385,20.183964,24611.238}; + azimut=130; + id=447; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item366 { - position[]={689.26648,6.0532622,1812.9108}; - azimut=57; - id=449; + position[]={26706.348,20.141411,24605.154}; + azimut=130; + id=448; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item367 { - position[]={689.60699,6.0581293,1812.412}; - azimut=57; - id=450; + position[]={26701.492,20.190041,24599.432}; + azimut=130; + id=449; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item368 { - position[]={689.94739,6.0632429,1811.89}; - azimut=57; - id=451; + position[]={26774.969,19.319693,24689.727}; + azimut=220; + id=450; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="Land_Medevac_HQ_V1_F"; skill=0.60000002; + init="this allowDamage false"; + syncId=4; + synchronizations[]={3}; }; class Item369 { - position[]={690.28784,6.0677261,1811.3911}; - azimut=57; - id=452; + position[]={26724.889,19.836895,24640.998}; + azimut=40; + offsetY=-0.41000399; + id=451; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="BlockConcrete_F"; skill=0.60000002; }; class Item370 { - position[]={690.60565,6.0724549,1810.8684}; - azimut=57; - id=453; + position[]={26721.717,19.78294,24637.072}; + azimut=40; + offsetY=-0.41000399; + id=452; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="BlockConcrete_F"; skill=0.60000002; }; class Item371 { - position[]={690.94604,6.0773587,1810.3235}; - azimut=57; - id=454; + position[]={26718.484,19.807188,24633.146}; + azimut=40; + offsetY=-0.41000399; + id=453; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="BlockConcrete_F"; skill=0.60000002; }; class Item372 { - position[]={691.30908,6.0819559,1809.8018}; - azimut=57; - id=455; + position[]={26717.803,19.801836,24646.971}; + azimut=40; + offsetY=-0.41000399; + id=454; side="EMPTY"; - vehicle="Land_CampingChair_V1_F"; - leader=1; + vehicle="BlockConcrete_F"; skill=0.60000002; }; class Item373 { - position[]={695.21124,5.9986386,1825.8096}; - azimut=150; - id=456; + position[]={26714.631,19.77,24643.045}; + azimut=40; + offsetY=-0.41000399; + id=455; side="EMPTY"; - vehicle="Land_HBarrier_1_F"; - leader=1; + vehicle="BlockConcrete_F"; skill=0.60000002; }; class Item374 { - position[]={694.07318,5.9928374,1843.0549}; - azimut=140; - id=457; + position[]={26711.398,19.77,24639.119}; + azimut=40; + offsetY=-0.41000399; + id=456; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; + vehicle="BlockConcrete_F"; skill=0.60000002; }; class Item375 { - position[]={709.13666,6.0419507,1852.8446}; - azimut=140; - id=458; + position[]={26731.541,20.058329,24634.828}; + azimut=130; + offsetY=0.2; + id=457; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; + vehicle="Land_RampConcrete_F"; skill=0.60000002; }; class Item376 { - position[]={703.02618,6.0231557,1827.2369}; - azimut=50; - id=459; + position[]={26708.629,20.649017,24592.92}; + azimut=40; + id=458; side="EMPTY"; - vehicle="Land_HBarrier_1_F"; - leader=1; + vehicle="Land_Radar_Small_F"; skill=0.60000002; }; class Item377 { - position[]={713.82568,6.0560155,1831.4098}; - azimut=230; - id=460; + position[]={26689.299,19.729982,24609.551}; + azimut=220; + id=459; side="EMPTY"; - vehicle="Land_InfoStand_V1_F"; + vehicle="Target_F"; skill=0.60000002; - text="garage_spawner_med"; - init="this enableSimulationGlobal false;"; }; class Item378 { - position[]={667.43811,6.0650091,1778.0951}; - azimut=147; - id=461; + position[]={26688.359,19.699425,24610.385}; + azimut=220; + id=460; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; + vehicle="Target_F"; skill=0.60000002; }; class Item379 { - position[]={663.93365,6.0661235,1775.8878}; - azimut=147; - id=462; + position[]={26687.389,19.672573,24611.092}; + azimut=220; + id=461; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; + vehicle="Target_F"; skill=0.60000002; }; class Item380 { - position[]={660.31696,6.0655694,1772.6523}; - azimut=57; - id=463; + position[]={26686.451,19.643372,24611.881}; + azimut=220; + id=462; side="EMPTY"; - vehicle="Land_InfoStand_V1_F"; + vehicle="Target_F"; skill=0.60000002; - text="garage_spawner_5_1"; - init="this enableSimulationGlobal false;_action = this addAction[""Spawn FOB"",{[{[]spawn JOC_fobSpawn},""BIS_fnc_spawn"",false,false] call BIS_fnc_MP;}];"; }; class Item381 { - position[]={560.41785,5.9622097,1771.4056}; - azimut=137; - id=464; + position[]={26688.523,19.690983,24610.688}; + azimut=220; + id=463; side="EMPTY"; - vehicle="Land_HelipadEmpty_F"; + vehicle="Target_F"; skill=0.60000002; - text="logiSpawn_0"; }; class Item382 { - position[]={564.70349,5.9616699,1766.7859}; - azimut=137; - id=465; + position[]={26687.586,19.661835,24611.477}; + azimut=220; + id=464; side="EMPTY"; - vehicle="Land_HelipadEmpty_F"; + vehicle="Target_F"; skill=0.60000002; - text="logiSpawn_1"; }; class Item383 { - position[]={569.09918,5.9953427,1762.1045}; - azimut=137; - id=466; + position[]={26686.799,19.635906,24612.184}; + azimut=220; + id=465; side="EMPTY"; - vehicle="Land_HelipadEmpty_F"; + vehicle="Target_F"; skill=0.60000002; - text="logiSpawn_2"; }; class Item384 { - position[]={566.0481,5.9058518,1776.6222}; - azimut=137; - id=467; + position[]={26685.861,19.606705,24612.973}; + azimut=220; + id=466; side="EMPTY"; - vehicle="Land_HelipadEmpty_F"; + vehicle="Target_F"; skill=0.60000002; - text="logiSpawn_3"; }; class Item385 { - position[]={570.41791,5.9416251,1772.092}; - azimut=137; - id=468; + position[]={26685.262,19.690941,24610.123}; + azimut=220; + id=467; side="EMPTY"; - vehicle="Land_HelipadEmpty_F"; + vehicle="Land_CncWall4_F"; skill=0.60000002; - text="logiSpawn_4"; }; class Item386 { - position[]={574.67188,6.0053439,1767.3944}; - azimut=137; - id=469; + position[]={26689.168,19.805126,24606.854}; + azimut=220; + id=468; side="EMPTY"; - vehicle="Land_HelipadEmpty_F"; + vehicle="Land_CncWall4_F"; skill=0.60000002; - text="logiSpawn_5"; }; class Item387 { - position[]={569.40961,5.9768596,1755.149}; - azimut=317; - id=470; + position[]={26699.342,19.73967,24627.666}; + azimut=220; + id=469; side="EMPTY"; - vehicle="Land_InfoStand_V1_F"; + vehicle="Land_BagFence_Long_F"; skill=0.60000002; - text="logiSpawner"; - init="this enableSimulationGlobal false;"; }; class Item388 { - position[]={579.74811,6.0439301,1770.9048}; - azimut=50; - id=471; + position[]={26699.922,19.750288,24628.352}; + azimut=130; + id=470; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; + vehicle="Land_BagFence_Short_F"; skill=0.60000002; }; class Item389 { - position[]={574.62427,5.9373426,1777.0114}; - azimut=50; - id=472; + position[]={26705.822,19.760725,24630.543}; + azimut=220; + offsetY=2; + id=471; side="EMPTY"; - vehicle="Land_HBarrierBig_F"; + vehicle="Land_Billboard_F"; skill=0.60000002; + init="this setObjectTexture [0,""Data\range.jpg""];"; }; class Item390 { - position[]={569.57581,5.8647499,1783.042}; - azimut=50; - id=473; + position[]={26733.902,20.970509,24584.654}; + azimut=105; + id=472; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item391 { - position[]={737.26587,6.1599998,1875.4158}; - azimut=140; - id=474; + position[]={26730.316,21.315418,24577.793}; + azimut=130; + id=473; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item392 + { + position[]={26728.279,21.849081,24569.846}; + azimut=40; + id=474; + side="EMPTY"; + vehicle="Land_HBarrier_1_F"; + skill=0.60000002; + }; + class Item393 + { + position[]={26730.23,21.922422,24568.209}; + azimut=40; + id=475; + side="EMPTY"; + vehicle="Land_HBarrier_1_F"; + skill=0.60000002; + }; + class Item394 + { + position[]={26721.561,22.028906,24561.854}; + azimut=40; + id=476; + side="EMPTY"; + vehicle="Land_HBarrier_1_F"; + skill=0.60000002; + }; + class Item395 + { + position[]={26724.102,22.110918,24560.127}; + azimut=40; + id=477; + side="EMPTY"; + vehicle="Land_HBarrier_1_F"; + skill=0.60000002; + }; + class Item396 + { + position[]={26723.801,22.240976,24555.557}; + azimut=130; + id=478; + side="EMPTY"; + vehicle="Land_BagFence_Long_F"; + skill=0.60000002; + }; + class Item397 + { + position[]={26720.705,22.287214,24551.543}; + azimut=130; + id=479; + side="EMPTY"; + vehicle="Land_BagFence_Long_F"; + skill=0.60000002; + }; + class Item398 + { + position[]={26717.49,22.295473,24547.91}; + azimut=130; + id=480; + side="EMPTY"; + vehicle="Land_BagFence_Long_F"; + skill=0.60000002; + }; + class Item399 + { + position[]={26711.395,22.260801,24540.74}; + azimut=130; + id=481; + side="EMPTY"; + vehicle="Land_BagFence_Long_F"; + skill=0.60000002; + }; + class Item400 + { + position[]={26714.371,22.28384,24544.277}; + azimut=130; + id=482; + side="EMPTY"; + vehicle="Land_BagFence_Long_F"; + skill=0.60000002; + }; + class Item401 + { + position[]={26705.451,22.090223,24542.871}; + azimut=40; + id=483; + side="EMPTY"; + vehicle="Land_BagFence_Short_F"; + skill=0.60000002; + }; + class Item402 + { + position[]={26708.174,22.179245,24540.736}; + azimut=40; + id=484; + side="EMPTY"; + vehicle="Land_BagFence_Short_F"; + skill=0.60000002; + }; + class Item403 + { + position[]={26720.295,20.300781,24614.643}; + azimut=40; + id=485; + side="EMPTY"; + vehicle="Land_CargoBox_V1_F"; + skill=0.60000002; + text="arsenal1"; + init="this allowDamage false; this enableSimulation false;"; + }; + class Item404 + { + position[]={26724.336,20.422735,24611.102}; + azimut=40; + id=486; + side="EMPTY"; + vehicle="Land_CargoBox_V1_F"; + skill=0.60000002; + text="arsenal2"; + init="this allowDamage false; this enableSimulation false;"; + }; + class Item405 + { + position[]={26728.24,20.482685,24607.891}; + azimut=40; + id=487; + side="EMPTY"; + vehicle="Land_CargoBox_V1_F"; + skill=0.60000002; + text="arsenal3"; + init="this allowDamage false; this enableSimulation false;"; + }; + class Item406 + { + position[]={26711.18,22.0415,24555.324}; + azimut=130; + id=488; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item407 + { + position[]={26715.658,21.985126,24561.012}; + azimut=130; + id=489; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item408 + { + position[]={26635.701,17.184708,24634.008}; + azimut=130; + id=490; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item409 + { + position[]={26644.895,17.18264,24644.811}; + azimut=130; + id=491; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item410 + { + position[]={26630.865,17.066372,24627.996}; + azimut=130; + id=492; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item411 + { + position[]={26625.508,17.049635,24621.688}; + azimut=130; + id=493; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item412 + { + position[]={26649.494,17.030989,24650.234}; + azimut=130; + id=494; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item413 + { + position[]={26621.303,16.868399,24621.418}; + azimut=40; + id=495; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item414 + { + position[]={26615.266,16.395088,24626.688}; + azimut=40; + id=496; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item415 + { + position[]={26609.273,15.972892,24631.91}; + azimut=40; + id=497; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item416 + { + position[]={26603.371,15.399126,24637.041}; + azimut=40; + id=498; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item417 + { + position[]={26603.129,15.072895,24641.246}; + azimut=130; + id=499; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item418 + { + position[]={26607.986,15.285261,24646.969}; + azimut=130; + id=500; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item419 + { + position[]={26609.777,15.251042,24649.406}; + azimut=130; + id=501; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item420 + { + position[]={26604.346,14.725122,24661.525}; + azimut=130; + id=502; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item421 + { + position[]={26640.527,15.845091,24671.23}; + azimut=130; + id=503; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item422 + { + position[]={26664.287,18.616407,24624.213}; + azimut=40; + id=504; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item423 + { + position[]={26658.387,18.233953,24629.162}; + azimut=40; + id=505; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item424 + { + position[]={26652.305,17.769665,24634.156}; + azimut=40; + id=506; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item425 + { + position[]={26646.402,17.444954,24639.197}; + azimut=40; + id=507; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item426 + { + position[]={26641.637,17.471817,24633.43}; + azimut=40; + id=508; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item427 + { + position[]={26647.809,17.856424,24628.164}; + azimut=40; + id=509; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item428 + { + position[]={26653.756,18.302242,24623.125}; + azimut=40; + id=510; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item429 + { + position[]={26659.793,18.745361,24617.99}; + azimut=40; + id=511; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item430 + { + position[]={26665.965,19.148048,24612.949}; + azimut=40; + id=512; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item431 + { + position[]={26655.859,16.85203,24666.896}; + azimut=40; + id=513; + side="EMPTY"; + vehicle="Land_Cargo20_brick_red_F"; + skill=0.60000002; + init="this allowDamage false; this enableSimulation false;"; + }; + class Item432 + { + position[]={26654.176,16.718538,24668.332}; + azimut=40; + offsetY=2.5999999; + id=514; + side="EMPTY"; + vehicle="Land_Cargo20_cyan_F"; + skill=0.60000002; + init="this allowDamage false; this enableSimulation false;"; + }; + class Item433 + { + position[]={26651.035,16.35528,24670.83}; + azimut=40; + id=515; + side="EMPTY"; + vehicle="Land_Cargo20_military_green_F"; + skill=0.60000002; + init="this allowDamage false; this enableSimulation false;"; + }; + class Item434 + { + position[]={26648.371,15.976167,24673.711}; + azimut=40; + id=516; + side="EMPTY"; + vehicle="Land_CargoBox_V1_F"; + skill=0.60000002; + init="this allowDamage false; this enableSimulation false;"; + }; + class Item435 + { + position[]={26647.416,16.050579,24672.484}; + azimut=40; + id=517; + side="EMPTY"; + vehicle="Land_CargoBox_V1_F"; + skill=0.60000002; + init="this allowDamage false; this enableSimulation false;"; + }; + class Item436 + { + position[]={26647.635,15.849356,24674.744}; + azimut=40; + id=518; + side="EMPTY"; + vehicle="Flag_NATO_F"; + skill=0.60000002; + text="depotFlag"; + init="this allowDamage false; this enableSimulation false;"; + }; + class Item437 + { + position[]={26617.756,16.159132,24635.441}; + azimut=130; + id=519; + side="EMPTY"; + vehicle="B_Truck_01_ammo_F"; + skill=0.60000002; + init="this allowDamage false; this enableSimulation false;"; + }; + class Item438 + { + position[]={26632.08,17.02359,24633.594}; + id=520; + side="EMPTY"; + vehicle="Land_CncBarrier_stripes_F"; + skill=0.60000002; + }; + class Item439 + { + position[]={26629.631,16.896288,24633.594}; + id=521; + side="EMPTY"; + vehicle="Land_CncBarrier_stripes_F"; + skill=0.60000002; + }; + class Item440 + { + position[]={26627.088,16.76556,24633.549}; + id=522; + side="EMPTY"; + vehicle="Land_CncBarrier_stripes_F"; + skill=0.60000002; + }; + class Item441 + { + position[]={26624.637,16.635166,24633.549}; + id=523; + side="EMPTY"; + vehicle="Land_CncBarrier_stripes_F"; + skill=0.60000002; + }; + class Item442 + { + position[]={26622.459,16.476292,24634.363}; + azimut=40; + id=524; + side="EMPTY"; + vehicle="Land_CncBarrier_stripes_F"; + skill=0.60000002; + }; + class Item443 + { + position[]={26620.508,16.30262,24635.996}; + azimut=40; + id=525; + side="EMPTY"; + vehicle="Land_CncBarrier_stripes_F"; + skill=0.60000002; + }; + class Item444 + { + position[]={26618.465,16.123018,24637.633}; + azimut=40; + id=526; + side="EMPTY"; + vehicle="Land_CncBarrier_stripes_F"; + skill=0.60000002; + }; + class Item445 + { + position[]={26616.467,15.960167,24639.223}; + azimut=40; + id=527; + side="EMPTY"; + vehicle="Land_CncBarrier_stripes_F"; + skill=0.60000002; + }; + class Item446 + { + position[]={26615.309,15.837539,24641.145}; + azimut=80; + id=528; + side="EMPTY"; + vehicle="Land_CncBarrier_stripes_F"; + skill=0.60000002; + }; + class Item447 + { + position[]={26614.852,15.725796,24643.598}; + azimut=80; + id=529; + side="EMPTY"; + vehicle="Land_CncBarrier_stripes_F"; + skill=0.60000002; + }; + class Item448 + { + position[]={26614.4,15.610186,24645.959}; + azimut=80; + id=530; + side="EMPTY"; + vehicle="Land_CncBarrier_stripes_F"; + skill=0.60000002; + }; + class Item449 + { + position[]={26613.99,15.484892,24648.324}; + azimut=80; + id=531; + side="EMPTY"; + vehicle="Land_CncBarrier_stripes_F"; + skill=0.60000002; + }; + class Item450 + { + position[]={26613.67,15.395671,24650.229}; + azimut=80; + id=532; + side="EMPTY"; + vehicle="Land_CncBarrier_stripes_F"; + skill=0.60000002; + }; + class Item451 + { + position[]={26624.285,16.648668,24632.551}; + id=533; + side="EMPTY"; + vehicle="Land_CargoBox_V1_F"; + skill=0.60000002; + init="this allowDamage false; this enableSimulation false;"; + }; + class Item452 + { + position[]={26625.738,16.717413,24632.914}; + id=534; + side="EMPTY"; + vehicle="Land_MetalBarrel_F"; + skill=0.60000002; + init="this allowDamage false; this enableSimulation false;"; + }; + class Item453 + { + position[]={26625.557,16.742519,24631.918}; + id=535; + side="EMPTY"; + vehicle="Land_MetalBarrel_F"; + skill=0.60000002; + init="this allowDamage false; this enableSimulation false;"; + }; + class Item454 + { + position[]={26626.646,16.780445,24632.457}; + id=536; + side="EMPTY"; + vehicle="Land_MetalBarrel_F"; + skill=0.60000002; + init="this allowDamage false; this enableSimulation false;"; + }; + class Item455 + { + position[]={26614.215,15.792243,24641.068}; + azimut=80; + id=537; + side="EMPTY"; + vehicle="Box_NATO_AmmoVeh_F"; + skill=0.60000002; + init="this allowDamage false; this enableSimulation false;"; + }; + class Item456 + { + position[]={26850.582,26.676523,24464.668}; + azimut=-50; + id=538; + side="EMPTY"; + vehicle="Land_BarGate_F"; + skill=0.60000002; + text="gate"; + init="this allowDamage false;"; + }; + class Item457 + { + position[]={26701.432,19.745771,24625.896}; + azimut=220; + id=539; + side="EMPTY"; + vehicle="Land_BagFence_Long_F"; + skill=0.60000002; + }; + class Item458 + { + position[]={26705.004,19.76,24626.742}; + azimut=130; + id=540; + side="EMPTY"; + vehicle="Land_BagFence_Long_F"; + skill=0.60000002; + }; + class Item459 + { + position[]={26699.105,19.746874,24629.549}; + azimut=130; + id=541; + side="EMPTY"; + vehicle="Land_BagFence_Long_F"; + skill=0.60000002; + }; + class Item460 + { + position[]={26700.652,19.761763,24631.32}; + azimut=130; + id=542; + side="EMPTY"; + vehicle="Land_BagFence_Long_F"; + skill=0.60000002; + }; + class Item461 + { + position[]={26701.148,19.751776,24627.307}; + azimut=130; + id=543; + side="EMPTY"; + vehicle="Land_BagFence_Short_F"; + skill=0.60000002; + }; + class Item462 + { + position[]={26702.465,19.753223,24626.262}; + azimut=130; + id=544; + side="EMPTY"; + vehicle="Land_BagFence_Short_F"; + skill=0.60000002; + }; + class Item463 + { + position[]={26703.869,19.75539,24625.264}; + azimut=130; + id=545; + side="EMPTY"; + vehicle="Land_BagFence_Short_F"; + skill=0.60000002; + }; + class Item464 + { + position[]={26885.941,21.712402,24671.758}; + azimut=-110; + id=546; + side="EMPTY"; + vehicle="B_Truck_01_ammo_F"; + leader=1; + skill=0.60000002; + init="this allowDamage false; this enableSimulation false;"; + }; + class Item465 + { + position[]={26874.359,21.821833,24667.549}; + azimut=-110; + id=547; + side="EMPTY"; + vehicle="B_Truck_01_fuel_F"; + leader=1; + skill=0.60000002; + init="this allowDamage false; this enableSimulation false;"; + }; + class Item466 + { + position[]={26862.107,21.893202,24663.219}; + azimut=-110; + id=548; + side="EMPTY"; + vehicle="B_Truck_01_Repair_F"; + leader=1; + skill=0.60000002; + init="this allowDamage false; this enableSimulation false;"; + }; + class Item467 + { + position[]={26878.283,22.158979,24655.021}; + azimut=-20; + id=549; + side="EMPTY"; + vehicle="Land_HelipadSquare_F"; + skill=0.60000002; + }; + class Item468 + { + position[]={26686.924,20.348951,24595.072}; + azimut=40; + id=550; + side="EMPTY"; + vehicle="Land_CncBarrier_stripes_F"; + skill=0.60000002; + }; + class Item469 + { + position[]={26690.42,20.527378,24592.121}; + azimut=40; + id=551; + side="EMPTY"; + vehicle="Land_CncBarrier_stripes_F"; + skill=0.60000002; + }; + class Item470 + { + position[]={26693.867,20.68795,24589.256}; + azimut=40; + id=552; + side="EMPTY"; + vehicle="Land_CncBarrier_stripes_F"; + skill=0.60000002; + }; + class Item471 + { + position[]={26697.949,20.878624,24585.85}; + azimut=40; + id=553; + side="EMPTY"; + vehicle="Land_CncBarrier_stripes_F"; + skill=0.60000002; + }; + class Item472 + { + position[]={26701.584,21.0429,24582.809}; + azimut=40; + id=554; + side="EMPTY"; + vehicle="Land_CncBarrier_stripes_F"; + skill=0.60000002; + }; + class Item473 + { + position[]={26705.033,21.195879,24579.943}; + azimut=40; + id=555; + side="EMPTY"; + vehicle="Land_CncBarrier_stripes_F"; + skill=0.60000002; + }; + class Item474 + { + position[]={26708.805,21.349888,24576.771}; + azimut=40; + id=556; + side="EMPTY"; + vehicle="Land_CncBarrier_stripes_F"; + skill=0.60000002; + }; + class Item475 + { + position[]={26712.438,21.49402,24573.775}; + azimut=40; + id=557; + side="EMPTY"; + vehicle="Land_CncBarrier_stripes_F"; + skill=0.60000002; + }; + class Item476 + { + position[]={26715.932,21.662668,24570.773}; + azimut=40; + id=558; + side="EMPTY"; + vehicle="Land_CncBarrier_stripes_F"; + skill=0.60000002; + }; + class Item477 + { + position[]={26719.514,21.822298,24567.777}; + azimut=40; + id=559; + side="EMPTY"; + vehicle="Land_CncBarrier_stripes_F"; + skill=0.60000002; + }; + class Item478 + { + position[]={26852.586,26.66349,24465.311}; + id=560; + side="EMPTY"; + vehicle="Flag_US_F"; + skill=0.60000002; + }; + class Item479 + { + position[]={26637.924,19.04122,24569.504}; + azimut=40; + id=561; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item480 + { + position[]={26682.744,20.397991,24592.496}; + azimut=40; + id=562; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item481 + { + position[]={26866.293,26.069725,24495.127}; + azimut=40; + id=563; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item482 + { + position[]={26859.998,25.692705,24500.453}; + azimut=40; + id=564; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item483 + { + position[]={26876.273,25.842361,24506.547}; + azimut=40; + id=565; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item484 + { + position[]={26870.031,25.407507,24511.924}; + azimut=40; + id=566; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item485 + { + position[]={26654.242,16.941353,24655.814}; + azimut=130; + id=567; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item486 + { + position[]={26658.842,16.984211,24661.238}; + azimut=130; + id=568; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item487 + { + position[]={26630.936,16.038414,24659.818}; + azimut=130; + id=569; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item488 + { + position[]={26635.535,16.065893,24665.242}; + azimut=130; + id=570; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item489 + { + position[]={26643.184,15.658358,24674.449}; + azimut=130; + id=571; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item490 + { + position[]={26660.051,17.019289,24667.174}; + azimut=40; + id=572; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item491 + { + position[]={26654.059,16.459335,24672.029}; + azimut=40; + id=573; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item492 + { + position[]={26648.838,15.68101,24676.391}; + azimut=40; + id=574; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item493 + { + position[]={26609.477,15.076567,24653.619}; + azimut=40; + id=575; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item494 + { + position[]={26604.771,14.923363,24657.357}; + azimut=40; + id=576; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item495 + { + position[]={26609.207,14.478259,24667.311}; + azimut=130; + id=577; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item496 + { + position[]={26614.119,14.276504,24673.25}; + azimut=130; + id=578; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item497 + { + position[]={26618.332,14.452353,24673.588}; + azimut=40; + id=579; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item498 + { + position[]={26623.805,15.16127,24668.928}; + azimut=40; + id=580; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item499 + { + position[]={26629.027,15.720372,24664.627}; + azimut=40; + id=581; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item500 + { + position[]={26681.109,20.820713,24578.348}; + azimut=130; + id=582; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item501 + { + position[]={26685.877,20.759275,24584.045}; + azimut=130; + id=583; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item502 + { + position[]={26701.359,21.743464,24561.18}; + azimut=130; + id=584; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item503 + { + position[]={26706.488,21.659685,24567.242}; + azimut=130; + id=585; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item504 + { + position[]={26692.238,21.340002,24568.811}; + azimut=130; + id=586; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item505 + { + position[]={26697.367,21.272434,24574.873}; + azimut=130; + id=587; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item506 + { + position[]={26730.549,22.907766,24510.406}; + azimut=40; + id=588; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item507 + { + position[]={26724.557,22.715752,24515.4}; + azimut=40; + id=589; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item508 + { + position[]={26720.475,22.584196,24518.113}; + azimut=130; + id=590; + side="EMPTY"; + vehicle="Land_InfoStand_V1_F"; + skill=0.60000002; + text="garage_spawner_6"; + init="this enableSimulationGlobal false;"; + }; + class Item509 + { + position[]={26732.871,20.167839,24638.973}; + azimut=40; + id=591; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item510 + { + position[]={26727.377,19.844154,24643.605}; + azimut=40; + id=592; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item511 + { + position[]={26721.842,19.8235,24648.281}; + azimut=40; + id=593; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item512 + { + position[]={26716.168,19.79501,24653.186}; + azimut=40; + id=594; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item513 + { + position[]={26700.139,19.607988,24648.037}; + azimut=40; + id=595; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item514 + { + position[]={26699.389,19.533976,24648.631}; + azimut=40; + id=596; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item515 + { + position[]={26698.549,19.438105,24649.336}; + azimut=40; + id=597; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item516 + { + position[]={26695.254,19.066944,24652.014}; + azimut=40; + id=598; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item517 + { + position[]={26697.752,19.350166,24649.949}; + azimut=40; + id=599; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item518 + { + position[]={26696.004,19.151583,24651.4}; + azimut=40; + id=600; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item519 + { + position[]={26696.867,19.251446,24650.65}; + azimut=40; + id=601; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item520 + { + position[]={26701.41,19.532892,24649.445}; + azimut=40; + id=602; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item521 + { + position[]={26700.66,19.501154,24650.039}; + azimut=40; + id=603; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item522 + { + position[]={26699.82,19.451242,24650.744}; + azimut=40; + id=604; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item523 + { + position[]={26696.525,19.0455,24653.422}; + azimut=40; + id=605; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item524 + { + position[]={26699.023,19.363174,24651.357}; + azimut=40; + id=606; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item525 + { + position[]={26697.275,19.153164,24652.809}; + azimut=40; + id=607; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item526 + { + position[]={26698.139,19.264454,24652.059}; + azimut=40; + id=608; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item527 + { + position[]={26702.727,19.522736,24650.854}; + azimut=40; + id=609; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item528 + { + position[]={26701.977,19.481646,24651.447}; + azimut=40; + id=610; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item529 + { + position[]={26701.137,19.436028,24652.152}; + azimut=40; + id=611; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item530 + { + position[]={26697.842,19.008881,24654.83}; + azimut=40; + id=612; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item531 + { + position[]={26700.34,19.365841,24652.766}; + azimut=40; + id=613; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item532 + { + position[]={26698.592,19.116364,24654.217}; + azimut=40; + id=614; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item533 + { + position[]={26699.455,19.243908,24653.467}; + azimut=40; + id=615; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item534 + { + position[]={26713.977,19.811674,24651.25}; + azimut=130; + id=616; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item535 + { + position[]={26709.846,19.780779,24646.615}; + azimut=130; + id=617; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item392 + class Item536 + { + position[]={26705.537,19.77,24641.348}; + azimut=130; + id=618; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item537 + { + position[]={26653.83,20.080389,24552.713}; + azimut=5; + id=619; + side="EMPTY"; + vehicle="Land_CncBarrier_stripes_F"; + leader=1; + skill=0.60000002; + }; + class Item538 + { + position[]={26656.238,20.20751,24552.484}; + azimut=5; + id=620; + side="EMPTY"; + vehicle="Land_CncBarrier_stripes_F"; + leader=1; + skill=0.60000002; + }; + class Item539 + { + position[]={26658.459,20.290365,24552.26}; + azimut=5; + id=621; + side="EMPTY"; + vehicle="Land_CncBarrier_stripes_F"; + leader=1; + skill=0.60000002; + }; + class Item540 { - position[]={752.25079,6.1600013,1887.748}; + position[]={26656.107,20.077408,24547.088}; azimut=140; - id=475; + id=622; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item393 + class Item541 { - position[]={757.99823,6.1557403,1892.6964}; + position[]={26649.938,19.729076,24541.777}; azimut=140; - id=476; + id=623; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item394 + class Item542 { - position[]={764.24121,6.1410117,1897.9132}; + position[]={26643.896,19.326979,24536.691}; azimut=140; - id=477; + id=624; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item395 + class Item543 { - position[]={770.11224,6.1292963,1902.8032}; + position[]={26638.406,19.213615,24563.252}; azimut=140; - id=478; + id=625; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item396 + class Item544 { - position[]={789.10223,5.9946156,1884.3596}; - azimut=50; - id=479; + position[]={26632.236,18.851871,24557.941}; + azimut=140; + id=626; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item397 + class Item545 { - position[]={784.20447,6.0523071,1890.3152}; + position[]={26626.195,18.437645,24552.855}; + azimut=140; + id=627; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item546 + { + position[]={26625.789,18.391869,24548.727}; azimut=50; - id=480; + id=628; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item398 + class Item547 { - position[]={779.08063,6.1138892,1896.4218}; + position[]={26630.6,18.653082,24542.871}; azimut=50; - id=481; + id=629; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item399 + class Item548 { - position[]={774.16119,6.1190853,1902.3635}; + position[]={26637.363,18.965082,24534.971}; azimut=50; - id=482; + id=630; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item400 + class Item549 { - position[]={741.51855,6.0928273,1845.4869}; + position[]={26634.822,18.849415,24537.92}; azimut=50; - id=483; + id=631; side="EMPTY"; - vehicle="Land_HBarrier_1_F"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item550 + { + position[]={26641.717,19.191948,24534.514}; + azimut=140; + id=632; + side="EMPTY"; + vehicle="Land_HBarrierBig_F"; + skill=0.60000002; + }; + class Item551 + { + position[]={26683.902,20.202864,24597.375}; + azimut=40; + id=633; + side="EMPTY"; + vehicle="Land_CncBarrier_stripes_F"; + skill=0.60000002; + }; + class Item552 + { + position[]={26845.732,26.822699,24458.182}; + id=634; + side="EMPTY"; + vehicle="Flag_UK_F"; + skill=0.60000002; + }; + class Item553 + { + position[]={26704.133,19.617399,24652.398}; + azimut=40; + id=635; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item401 + class Item554 { - position[]={703.78943,5.9983859,1833.1108}; - azimut=50; - id=484; + position[]={26703.383,19.527546,24652.992}; + azimut=40; + id=636; side="EMPTY"; - vehicle="Land_HBarrier_1_F"; + vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item402 + class Item555 { - position[]={706.19495,6.0095601,1835.2001}; - azimut=50; - id=485; + position[]={26702.543,19.412371,24653.697}; + azimut=40; + id=637; side="EMPTY"; - vehicle="Land_HBarrier_1_F"; + vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item403 + class Item556 { - position[]={708.96381,6.0109749,1837.4241}; - azimut=50; - id=486; + position[]={26699.248,18.962326,24656.375}; + azimut=40; + id=638; side="EMPTY"; - vehicle="Land_HBarrier_1_F"; + vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item404 + class Item557 { - position[]={635.72449,6.154829,1773.6218}; - azimut=47; - id=487; + position[]={26701.746,19.308037,24654.311}; + azimut=40; + id=639; side="EMPTY"; - vehicle="BlockConcrete_F"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item558 + { + position[]={26699.998,19.069811,24655.762}; + azimut=40; + id=640; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item559 + { + position[]={26700.861,19.190624,24655.012}; + azimut=40; + id=641; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item560 + { + position[]={26708.316,19.796282,24648.941}; + azimut=40; + id=642; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item561 + { + position[]={26705.021,19.665495,24651.619}; + azimut=40; + id=643; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item562 + { + position[]={26707.52,19.800371,24649.555}; + azimut=40; + id=644; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item563 + { + position[]={26705.771,19.70645,24651.006}; + azimut=40; + id=645; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item564 + { + position[]={26706.635,19.753191,24650.256}; + azimut=40; + id=646; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item565 + { + position[]={26706.867,19.7481,24647.398}; + azimut=40; + id=647; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item566 + { + position[]={26703.572,19.568304,24650.076}; + azimut=40; + id=648; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item567 + { + position[]={26706.07,19.704399,24648.012}; + azimut=40; + id=649; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item568 + { + position[]={26704.322,19.609148,24649.463}; + azimut=40; + id=650; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item569 + { + position[]={26705.186,19.655998,24648.713}; + azimut=40; + id=651; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item570 + { + position[]={26705.551,19.714727,24646.035}; + azimut=40; + id=652; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item571 + { + position[]={26702.256,19.571953,24648.713}; + azimut=40; + id=653; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item572 + { + position[]={26704.754,19.682013,24646.648}; + azimut=40; + id=654; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item573 + { + position[]={26703.006,19.60457,24648.1}; + azimut=40; + id=655; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item574 + { + position[]={26703.869,19.644609,24647.35}; + azimut=40; + id=656; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item575 + { + position[]={26704.098,19.77,24644.717}; + azimut=40; + id=657; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item576 + { + position[]={26700.803,19.642265,24647.395}; + azimut=40; + id=658; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item577 + { + position[]={26703.301,19.752325,24645.33}; + azimut=40; + id=659; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item578 + { + position[]={26701.553,19.674883,24646.781}; + azimut=40; + id=660; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item579 + { + position[]={26702.416,19.714922,24646.031}; + azimut=40; + id=661; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item580 + { + position[]={26702.963,19.77,24642.992}; + azimut=40; + id=662; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item581 + { + position[]={26699.668,19.711184,24645.67}; + azimut=40; + id=663; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item582 + { + position[]={26702.166,19.77,24643.605}; + azimut=40; + id=664; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item583 + { + position[]={26700.418,19.766876,24645.057}; + azimut=40; + id=665; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; + skill=0.60000002; + }; + class Item584 + { + position[]={26701.281,19.77,24644.307}; + azimut=40; + id=666; + side="EMPTY"; + vehicle="Land_CampingChair_V1_F"; + leader=1; skill=0.60000002; }; - class Item405 + class Item585 { - position[]={629.55524,6.1586504,1776.9323}; - azimut=137; - id=488; + position[]={26702.117,19.746016,24625.258}; + azimut=220; + id=667; side="EMPTY"; - vehicle="BlockConcrete_F"; + vehicle="Land_BagFence_Long_F"; skill=0.60000002; }; - class Item406 + class Item586 { - position[]={635.63721,6.1200924,1764.3922}; - azimut=137; - id=489; + position[]={26676.719,18.424976,24639.863}; + azimut=130; + id=668; side="EMPTY"; - vehicle="BlockConcrete_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item407 + class Item587 { - position[]={638.60107,6.1308441,1767.234}; - azimut=137; - id=490; + position[]={26681.666,18.378428,24645.902}; + azimut=130; + id=669; side="EMPTY"; - vehicle="BlockConcrete_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item408 + class Item588 { - position[]={624.62555,6.1466708,1772.8774}; - azimut=47; - id=491; + position[]={26685.85,18.624903,24646.271}; + azimut=40; + id=670; side="EMPTY"; - vehicle="BlockConcrete_F"; + vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; }; class Markers { - items=76; + items=64; class Item0 { - position[]={4885.7231,339,9659.6299}; + position[]={14320.607,17.790001,15859.087}; name="mrk_jetSpawn_0"; text="jetSpawn"; type="Empty"; }; class Item1 { - position[]={4855.0166,339,10058.739}; + position[]={14697.515,17.91,16726.178}; name="mrk_heliSpawn_0"; text="heliSpawn"; type="Empty"; @@ -6110,28 +7704,28 @@ class Mission }; class Item3 { - position[]={4607.2231,339,10201.781}; + position[]={14749.468,17.889999,16487.906}; name="mrk_airfield_0"; text="airfield"; markerType="RECTANGLE"; type="Empty"; colorName="ColorEAST"; fillName="SolidBorder"; - a=900; - b=370; - angle=60; + a=1100; + b=500; + angle=135; drawBorder=1; }; class Item4 { - position[]={4751.2446,339,10328.98}; + position[]={15175.246,17.892538,17346.656}; name="mrk_infSpawn"; text="infSpawn"; type="Empty"; }; class Item5 { - position[]={4663.6133,339,10378.708}; + position[]={14790.578,17.91,16652.014}; name="mrk_vehSpawn"; text="vehSpawn"; type="Empty"; @@ -6166,7 +7760,7 @@ class Mission }; class Item8 { - position[]={7707.2256,349.91138,7712.4692}; + position[]={-16258.738,0.10806388,13298.195}; name="mrk_area"; markerType="RECTANGLE"; type="Empty"; @@ -6288,184 +7882,87 @@ class Mission }; class Item21 { - position[]={15439.215,167.8567,14683.817}; - name="mrk_show_radar_1"; - text="Radar"; - type="o_installation"; - }; - class Item22 - { - position[]={15437.341,120.74146,14473.167}; - name="mrk_show_aa_1"; - text="AA-tank"; - type="o_mortar"; - }; - class Item23 - { - position[]={15434.645,93.537659,14277.507}; - name="mrk_show_arty_1"; - text="Artillery"; - type="o_art"; - }; - class Item24 - { - position[]={15435.427,63.905354,14072.92}; - name="mrk_show_radio_1"; - text="Radio tower"; - type="loc_Transmitter"; - colorName="ColorEAST"; - }; - class Item25 - { - position[]={15439.663,269.6395,15286.473}; - name="mrk_show_opZone_1"; - markerType="ELLIPSE"; - type="Empty"; - colorName="ColorEAST"; - fillName="SolidBorder"; - a=50; - b=50; - drawBorder=1; - }; - class Item26 - { - position[]={15440.903,241.16557,15085.245}; - name="mrk_show_civZone_1"; - text="Unuccupied zone"; - markerType="ELLIPSE"; - type="Empty"; - colorName="ColorCIV"; - fillName="SolidBorder"; - a=50; - b=50; - drawBorder=1; - }; - class Item27 - { - position[]={15440.413,195.68727,14885.564}; - name="mrk_show_bluZone_1"; - text="Blufor zone"; - markerType="ELLIPSE"; - type="Empty"; - colorName="ColorWEST"; - fillName="SolidBorder"; - a=50; - b=50; - drawBorder=1; - }; - class Item28 - { - position[]={15520.318,196.8562,14891.916}; - name="mrk_show_bluZoneText_1"; - text="Blufor zone"; - type="mil_circle"; - colorName="ColorWEST"; - a=0; - b=0; - }; - class Item29 - { - position[]={15521.183,268.0874,15294.203}; - name="mrk_show_opZoneText_1_1"; - text="Opfor zone"; - type="mil_circle"; - colorName="ColorEAST"; - a=0; - b=0; - }; - class Item30 - { - position[]={15520.895,241.43785,15086.319}; - name="mrk_show_civZoneText_1"; - text="Unoccupied zone"; - type="mil_circle"; - colorName="ColorCIV"; - a=0; - b=0; - }; - class Item31 - { - position[]={4845.7603,339,10215.433}; + position[]={14161.794,20.510948,16195.094}; name="mrk_airfield_0_hangar_0"; text="hangar"; type="Empty"; fillName="SolidBorder"; - angle=235; + angle=120; drawBorder=1; }; - class Item32 + class Item22 { - position[]={4870.3047,339,10174.411}; + position[]={14242.848,19.4405,16284.763}; name="mrk_airfield_0_hangar_1"; text="hangar"; type="Empty"; fillName="SolidBorder"; - angle=235; + angle=140; drawBorder=1; }; - class Item33 + class Item23 { - position[]={4894.564,339,10133.239}; + position[]={14263.628,19.368046,16298.966}; name="mrk_airfield_0_hangar_2"; text="hangar"; type="Empty"; fillName="SolidBorder"; - angle=235; + angle=160; drawBorder=1; }; - class Item34 + class Item24 { - position[]={4918.9014,339,10093.081}; + position[]={14345.779,18.858265,16321.463}; name="mrk_airfield_0_hangar_3"; text="hangar"; type="Empty"; fillName="SolidBorder"; - angle=235; + angle=185; drawBorder=1; }; - class Item35 + class Item25 { - position[]={4943.29,339,10049.99}; + position[]={14401.04,19.271498,16308.684}; name="mrk_airfield_0_hangar_4"; text="hangar"; type="Empty"; fillName="SolidBorder"; - angle=235; + angle=200; drawBorder=1; }; - class Item36 + class Item26 { - position[]={4968.1021,338.99414,10007.954}; + position[]={14419.516,18.719999,16244.664}; name="mrk_airfield_0_hangar_5"; text="hangar"; type="Empty"; fillName="SolidBorder"; - angle=235; + angle=45; drawBorder=1; }; - class Item37 + class Item27 { - position[]={4579.8066,338.98999,10678.79}; + position[]={15102.769,17.91,17252.922}; name="mrk_airfield_0_hangar_6"; text="hangar"; type="Empty"; fillName="SolidBorder"; - angle=235; + angle=135; drawBorder=1; }; - class Item38 + class Item28 { - position[]={4522.5366,338.98999,10781.051}; + position[]={15085.594,17.91,17234.98}; name="mrk_airfield_0_hangar_7"; text="hangar"; type="Empty"; fillName="SolidBorder"; - angle=235; + angle=135; drawBorder=1; }; - class Item39 + class Item29 { - position[]={4798.9849,339,9628.1279}; + position[]={14379.282,12.670757,15742.367}; name="mrk_airfield_0_aa_0"; text="aa"; type="Empty"; @@ -6473,9 +7970,9 @@ class Mission angle=235; drawBorder=1; }; - class Item40 + class Item30 { - position[]={4997.3662,339,9744.0449}; + position[]={13878.358,20.617273,16121.229}; name="mrk_airfield_0_aa_1"; text="aa"; type="Empty"; @@ -6483,9 +7980,9 @@ class Mission angle=235; drawBorder=1; }; - class Item41 + class Item31 { - position[]={4317.5796,339,10922.28}; + position[]={15138.492,15.138349,17455.043}; name="mrk_airfield_0_aa_2"; text="aa"; type="Empty"; @@ -6493,9 +7990,9 @@ class Mission angle=235; drawBorder=1; }; - class Item42 + class Item32 { - position[]={4116.3027,339,10801.599}; + position[]={14669.971,17.762991,16511.164}; name="mrk_airfield_0_aa_3"; text="aa"; type="Empty"; @@ -6503,9 +8000,9 @@ class Mission angle=235; drawBorder=1; }; - class Item43 + class Item33 { - position[]={4801.4951,339,10297.614}; + position[]={15649.084,19.222511,16931.678}; name="mrk_airfield_0_aa_4"; text="aa"; type="Empty"; @@ -6513,21 +8010,21 @@ class Mission angle=235; drawBorder=1; }; - class Item44 + class Item34 { position[]={5112.7568,9,2189.8379}; name="mrk_airfield_2_aa_0"; text="aa"; type="Empty"; }; - class Item45 + class Item35 { position[]={4624.6353,8.9058619,2482.9395}; name="mrk_airfield_2_aa_1"; text="aa"; type="Empty"; }; - class Item46 + class Item36 { position[]={4791.2861,8.6999998,2573.1758}; name="mrk_airfield_2_hangar_0"; @@ -6535,7 +8032,7 @@ class Mission type="Empty"; angle=210; }; - class Item47 + class Item37 { position[]={4756.2593,8.6999998,2593.72}; name="mrk_airfield_2_hangar_1"; @@ -6543,7 +8040,7 @@ class Mission type="Empty"; angle=210; }; - class Item48 + class Item38 { position[]={12312.272,159,12568.086}; name="mrk_airfield_1_aa_0"; @@ -6551,7 +8048,7 @@ class Mission type="Empty"; angle=15; }; - class Item49 + class Item39 { position[]={11806.655,159,12709.518}; name="mrk_airfield_1_aa_1"; @@ -6559,7 +8056,7 @@ class Mission type="Empty"; angle=15; }; - class Item50 + class Item40 { position[]={12057.019,158.8,12621.422}; name="mrk_airfield_1_hangar_0"; @@ -6567,7 +8064,7 @@ class Mission type="Empty"; angle=15; }; - class Item51 + class Item41 { position[]={12010.067,158.8,12636.979}; name="mrk_airfield_1_hangar_1"; @@ -6575,144 +8072,107 @@ class Mission type="Empty"; angle=15; }; - class Item52 + class Item42 { position[]={4748.8853,9,2539.3738}; name="mrk_heliSpawn_2"; text="heliSpawn"; type="Empty"; }; - class Item53 + class Item43 { position[]={12056.696,159,12691.672}; name="mrk_heliSpawn_1"; text="heliSpawn"; type="Empty"; }; - class Item54 + class Item44 { - position[]={694.94067,6.0866742,1803.6934}; + position[]={26733.039,20.414927,24618.402}; name="mrk_return"; type="Empty"; }; - class Item55 - { - position[]={6897.0518,394.55701,11440.723}; - name="mrk_castle_main"; - type="Empty"; - }; - class Item56 - { - position[]={6859.5103,392.07971,11394.38}; - name="mrk_castle_entr1"; - type="Empty"; - }; - class Item57 - { - position[]={6948.6011,388.39505,11437.919}; - name="mrk_castle_entr2"; - type="Empty"; - }; - class Item58 - { - position[]={6887.5508,392.70258,11493.964}; - name="mrk_castle_aa1"; - type="Empty"; - }; - class Item59 - { - position[]={6907.8833,393.16238,11381.681}; - name="mrk_castle_aa2"; - type="Empty"; - }; - class Item60 + class Item45 { - position[]={702.91925,6.0194201,1799.295}; + position[]={26735.953,20.430264,24617.943}; name="mrk_base"; text="HQ"; type="b_hq"; }; - class Item61 + class Item46 { - position[]={679.0343,6.0262222,1779.3539}; + position[]={26698.836,21.544865,24566.797}; name="mrk_base_car"; text="Motorized"; type="b_motor_inf"; }; - class Item62 + class Item47 { - position[]={687.76147,6,1785.8634}; + position[]={26723.5,22.654688,24506.488}; name="mrk_base_mech"; text="Armor"; type="b_motor_inf"; }; - class Item63 + class Item48 { - position[]={638.73395,6.1213431,1828.2622}; + position[]={26835.041,23.404406,24603.641}; name="mrk_base_air"; text="Helicopters"; type="b_air"; }; - class Item64 + class Item49 { - position[]={585.50604,6.0426102,1780.7281}; + position[]={26645.486,16.6917,24660.332}; name="mrk_base_log"; text="Logistics"; type="b_support"; }; - class Item65 + class Item50 { - position[]={725.21576,6.0335016,1814.2253}; + position[]={26695.871,19.720098,24616.922}; name="mrk_base_range"; text="Firing range"; type="b_installation"; }; - class Item66 - { - position[]={624.802,6.1412897,1768.6653}; - name="mrk_rep"; - text="Repair point"; - type="b_maint"; - }; - class Item67 + class Item51 { - position[]={3794.2363,351.50992,11537.99}; + position[]={-3925.6865,-0.14400321,27200.441}; name="mrk_aaZone_3"; markerType="RECTANGLE"; type="Empty"; a=3800; b=3800; }; - class Item68 + class Item52 { - position[]={3794.2363,230.83879,3954.1167}; + position[]={-3876.6858,-0.057105087,4044.9407}; name="mrk_aaZone_1"; markerType="RECTANGLE"; type="Empty"; a=3800; b=3800; }; - class Item69 + class Item53 { - position[]={11397.074,187.27644,3931.4102}; + position[]={-3853.9927,-0.078167506,11787.758}; name="mrk_aaZone_0"; markerType="RECTANGLE"; type="Empty"; a=3800; b=3800; }; - class Item70 + class Item54 { - position[]={11397.074,288.50131,11515.284}; + position[]={-3899.3813,-0.19272989,19507.871}; name="mrk_aaZone_2"; markerType="RECTANGLE"; type="Empty"; a=3800; b=3800; }; - class Item71 + class Item55 { - position[]={667.54822,6.1595759,1792.5311}; + position[]={27574.826,34.944099,24980.523}; name="mrk_safeZone"; markerType="ELLIPSE"; type="Empty"; @@ -6722,47 +8182,77 @@ class Mission b=1200; drawBorder=1; }; - class Item72 + class Item56 { - position[]={597.05756,6.0098667,1736.8634}; + position[]={26639.047,19.247772,24548.904}; name="mrk_base_scrap"; text="Vehicle scrap"; type="b_service"; }; - class Item73 - { - position[]={756.56409,6.0199656,1870.5588}; - name="mrk_base_parking"; - text="Vehicle parking"; - type="b_unknown"; - }; - class Item74 + class Item57 { - position[]={11365.769,110.6305,15860.729}; + position[]={22730.525,0.26061279,31718.543}; name="mrk_task_back"; markerType="RECTANGLE"; type="Empty"; colorName="ColorEAST"; - a=4000; - b=500; + a=8000; + b=1000; }; - class Item75 + class Item58 { - position[]={7775.334,256.00018,15835.953}; + position[]={15768.367,0.14324018,31671.799}; name="mrk_task_text"; text="Current objective: "; type="mil_dot"; }; + class Item59 + { + position[]={26775.059,19.357115,24688.668}; + name="mrk_base_hospital"; + text="Field hospital"; + type="n_med"; + colorName="ColorWEST"; + }; + class Item60 + { + position[]={26622.322,16.28945,24639.371}; + name="mrk_base_maintenance"; + text="Maintenance"; + type="n_maint"; + colorName="ColorWEST"; + }; + class Item61 + { + position[]={26880.816,22.203371,24655.104}; + name="mrk_base_heliService"; + text="Helicopter Service"; + type="b_maint"; + }; + class Item62 + { + position[]={26703.334,20.930307,24584.398}; + name="mrk_base_staging_ground"; + text="Staging ground"; + type="b_unknown"; + }; + class Item63 + { + position[]={26718.367,19.774492,24640.066}; + name="mrk_base_staging_air"; + text="Landing pad"; + type="b_unknown"; + }; }; class Sensors { - items=3; + items=5; class Item0 { - position[]={632.4848,6.1508994,1770.6746}; - a=6.5; - b=9; - angle=137; + position[]={26878.824,22.146572,24655.305}; + a=10; + b=10; + angle=-20; rectangular=1; activationBy="WEST"; repeating=1; @@ -6780,10 +8270,10 @@ class Mission }; class Item1 { - position[]={621.34698,6.1317978,1765.0011}; - a=5.5; - b=8; - angle=137; + position[]={26621.543,16.24262,24639.375}; + a=5; + b=3; + angle=40; rectangular=1; activationBy="WEST"; repeating=1; @@ -6801,7 +8291,7 @@ class Mission }; class Item2 { - position[]={598.30573,6.0159326,1737.2659}; + position[]={26640.295,19.326323,24549.307}; a=10; b=10; angle=50; @@ -6820,18 +8310,55 @@ class Mission { }; }; + class Item3 + { + position[]={26845.193,26.636679,24465.512}; + a=7; + b=25; + angle=-50; + rectangular=1; + activationBy="WEST"; + repeating=1; + interruptable=1; + age="UNKNOWN"; + expActiv="gate animate [""Door_1_rot"", 1] "; + expDesactiv="gate animate [""Door_1_rot"", 0] "; + class Effects + { + }; + }; + class Item4 + { + position[]={26870.51,21.673607,24679.086}; + a=20; + b=10; + angle=-20; + rectangular=1; + activationBy="WEST"; + repeating=1; + timeoutMin=5; + timeoutMid=5; + timeoutMax=5; + interruptable=1; + age="UNKNOWN"; + name="trg_rep_2"; + expCond="(speed (list trg_rep_2 select 0)) < 1"; + expActiv="_nul0= [(list trg_rep_2 select 0)] spawn JOC_service"; + class Effects + { + }; + }; }; }; class Intro { addOns[]= { - "a3_map_altis", - "aia_chernarus_config" + "a3_map_altis" }; addOnsAuto[]= { - "aia_chernarus_config" + "a3_map_altis" }; randomSeed=427689; class Intel @@ -6857,12 +8384,11 @@ class OutroWin { addOns[]= { - "a3_map_altis", - "aia_chernarus_config" + "a3_map_altis" }; addOnsAuto[]= { - "aia_chernarus_config" + "a3_map_altis" }; randomSeed=9071217; class Intel @@ -6888,12 +8414,11 @@ class OutroLoose { addOns[]= { - "a3_map_altis", - "aia_chernarus_config" + "a3_map_altis" }; addOnsAuto[]= { - "aia_chernarus_config" + "a3_map_altis" }; randomSeed=2247644; class Intel diff --git a/missionInit.sqf b/missionInit.sqf index ec3e868..1b13527 100644 --- a/missionInit.sqf +++ b/missionInit.sqf @@ -31,11 +31,25 @@ capitalName = "Chernogorsk"; //Name of capital blackTowns = []; //Blacklist towns blackMarkers = ["mrk_safeZone"]; airfieldMarkers = ["mrk_airfield_0","mrk_airfield_1","mrk_airfield_2"]; //Markers for airfields + +"mrk_area" setMarkerPos [worldSize/2,worldSize/2]; +"mrk_area" setMarkerSize [worldSize/2,worldSize/2]; "mrk_area" setMarkerAlpha 0; + +"mrk_aaZone_0" setMarkerPos [worldSize*0.25,worldSize*0.25]; +"mrk_aaZone_0" setMarkerSize [worldSize/4,worldSize/4]; "mrk_aaZone_0" setMarkerAlpha 0; +"mrk_aaZone_1" setMarkerPos [worldSize*0.75,worldSize*0.25]; +"mrk_aaZone_1" setMarkerSize [worldSize/4,worldSize/4]; "mrk_aaZone_1" setMarkerAlpha 0; +"mrk_aaZone_2" setMarkerPos [worldSize*0.25,worldSize*0.75]; +"mrk_aaZone_2" setMarkerSize [worldSize/4,worldSize/4]; "mrk_aaZone_2" setMarkerAlpha 0; +"mrk_aaZone_3" setMarkerPos [worldSize*0.75,worldSize*0.75]; +"mrk_aaZone_3" setMarkerSize [worldSize/4,worldSize/4]; "mrk_aaZone_3" setMarkerAlpha 0; + + //Objects leaderArray = [cmd1,cmd2,a1,b1,c1,h1,r1,anv1,s1,v1,rip1]; logisticsArray = ["l1","l2","l3","l4"]; @@ -82,9 +96,8 @@ publicVariable "logisticsArray"; //call -doesn't need a seperate thread []call JOC_initDepot; []call JOC_initTowns; - []call JOC_initAirfields; -//[]call JOC_initBases; -need compositions +//[]call JOC_initBases; -needs compositions []call JOC_initAA; []call JOC_initArty; //Uses AA []call JOC_initRadio; //Uses AA From c217611b0d3db32e10c9a1678c1b5a63a743f7f5 Mon Sep 17 00:00:00 2001 From: Jochem Date: Sun, 4 Oct 2015 14:50:32 +0200 Subject: [PATCH 14/17] 041015 -reworked radar/radio spawning -fixed various things in MP -added bases -added basic implementation of officers -various small fixes and changes --- Functions/AI/arty.sqf | 23 +- Functions/AI/jetMonitor.sqf | 2 +- Functions/AI/mineField.sqf | 6 +- Functions/AI/patrol.sqf | 5 +- Functions/AI/radar.sqf | 13 +- Functions/AI/radioTower.sqf | 21 +- Functions/AI/spawnAirfield.sqf | 7 +- Functions/AI/spawnBase.sqf | 37 + Functions/AI/spawnZone.sqf | 3 +- Functions/Caching/cacheGroup.sqf | 2 +- Functions/Caching/cacheInit.sqf | 1 + Functions/Commander/heli.sqf | 6 + Functions/Commander/heliMonitor.sqf | 6 +- Functions/Commander/manager.sqf | 28 +- Functions/Commander/officers.sqf | 53 +- Functions/Diary/changelog.sqf | 8 + Functions/Diary/createDiary.sqf | 0 Functions/Diary/credits.sqf | 11 + Functions/Init/initAA.sqf | 47 +- Functions/Init/initArty.sqf | 6 +- Functions/Init/initBases.sqf | 37 +- Functions/Init/initMines.sqf | 4 +- Functions/Init/initRadio.sqf | 10 +- Functions/Init/initTowns.sqf | 4 +- Functions/Logistics/Building/keypress.sqf | 31 - Functions/Logistics/Building/placeObject.sqf | 10 +- Functions/Logistics/Depot/spawnObject.sqf | 1 + Functions/Logistics/Fob/fobDeploy.sqf | 9 +- Functions/Logistics/Fob/fobSpawn.sqf | 2 + Functions/Performance/addToZeus.sqf | 12 - Functions/Performance/loop.sqf | 9 - Functions/Player/button.sqf | 23 +- Functions/Player/click.sqf | 2 +- Functions/Player/playerLoop.sqf | 14 +- Functions/Tasks/rescue.sqf | 6 +- Functions/Towns/indTown.sqf | 29 +- Functions/Towns/occupy.sqf | 6 +- Functions/Vehicle/Garage/garageFnc.sqf | 40 +- Functions/Vehicle/Garage/main.sqf | 24 +- Functions/Vehicle/Garage/scrap.sqf | 4 +- Functions/fn_compile.sqf | 3 + init.sqf | 6 +- initPlayerLocal.sqf | 19 +- mission.sqm | 1987 ++- mission.sqm.eden | 15232 +++++++++++++++++ missionInit.sqf | 30 +- onPlayerRespawn.sqf | 1 + 47 files changed, 16672 insertions(+), 1168 deletions(-) create mode 100644 Functions/AI/spawnBase.sqf create mode 100644 Functions/Diary/changelog.sqf create mode 100644 Functions/Diary/createDiary.sqf create mode 100644 Functions/Diary/credits.sqf delete mode 100644 Functions/Logistics/Building/keypress.sqf delete mode 100644 Functions/Performance/addToZeus.sqf create mode 100644 mission.sqm.eden diff --git a/Functions/AI/arty.sqf b/Functions/AI/arty.sqf index b00e47a..d9a8c21 100644 --- a/Functions/AI/arty.sqf +++ b/Functions/AI/arty.sqf @@ -5,15 +5,18 @@ _count = _this select 0; _name = [5] call Zen_StringGenerateRandom; -_marker = format["mrk_aaZone_%1",_count]; - //Get position -_location = [_marker,0,[airfieldMarkers + blackMarkers,["mrk_area"],[]],1,0,0,0,0,0,[1,10,50],[1,0,60]] call Zen_FindGroundPosition; +_location = []; +while{count _location == 0}do{ + _pos = ["mrk_area",0,[airfieldMarkers + blackMarkers,[],[]],1,0] call Zen_FindGroundPosition; + _location = _pos findEmptyPosition [0,300,"rhs_2s3_tv"]; +}; //Create marker _marker = createMarker [_name, _location]; _name setMarkerType "o_art"; - +_name setMarkerSize [0.65, 0.65]; + //Spawn arty _dir = round random 360; _locationS = [_location, random 60, random 60] call BIS_fnc_relPos; @@ -22,8 +25,7 @@ createVehicleCrew _arty1; _arty1 addEventHandler["fired", {(_this select 0) setVehicleAmmo 1}]; _arty1 setFuel 0; _arty1 setVariable["JOC_caching_disabled",true]; -zeusMod addCuratorEditableObjects [[_arty1],false]; - + _dir = round random 360; _locationS = [_location, random 60, random 60] call BIS_fnc_relPos; _arty2 = [_locationS, "rhs_2s3_tv"] call Zen_SpawnVehicle; @@ -31,13 +33,16 @@ createVehicleCrew _arty2; _arty2 addEventHandler["fired", {(_this select 0) setVehicleAmmo 1}]; _arty2 setFuel 0; _arty2 setVariable["JOC_caching_disabled",true]; -zeusMod addCuratorEditableObjects [[_arty2],false]; -[_arty2] join (group _arty1); +[_arty1,_arty2] join artyGroup; //Spawn enemy's _trg = createTrigger ["EmptyDetector",_location,true]; _trg setTriggerArea [600,600,600,false]; _trg setTriggerActivation ["WEST","PRESENT", false]; _trg setTriggerStatements ["(!((typeOf (thisList select 0)) in jetArray)) OR ((count thisList) > 1)","[getPos thisTrigger,350,[4,true],[0,false],[0,false],[1,false],[0,false],[0,false,""cas""],[0,false]] call JOC_spawnZone;",""]; -_trg setTriggerTimeout [5,5,5,true]; \ No newline at end of file +_trg setTriggerTimeout [5,5,5,true]; + +waitUntil{!alive _arty1 && !alive _arty2}; + +deleteMarker _name; diff --git a/Functions/AI/jetMonitor.sqf b/Functions/AI/jetMonitor.sqf index e959ebf..691bc01 100644 --- a/Functions/AI/jetMonitor.sqf +++ b/Functions/AI/jetMonitor.sqf @@ -7,7 +7,7 @@ _targetC = jetTargets select 0; while{(alive (units jetG select 0)) OR (alive (units jetG select 1))}do { scopeName "loop1"; - while{!(canMove _targetC)}do{ + while{!(canMove _targetC) or (isNull _targetC)}do{ jetTargets deleteAt 0; if(count jetTargets == 0)then{ _airfieldID = [false,airfieldOccup]call Zen_ValueFindInArray; diff --git a/Functions/AI/mineField.sqf b/Functions/AI/mineField.sqf index 4e510ac..fc49cf0 100644 --- a/Functions/AI/mineField.sqf +++ b/Functions/AI/mineField.sqf @@ -4,15 +4,13 @@ private["_location"]; _j = 0; -_location = [0,0,airfieldMarkers,1,[1,1400]] call Zen_FindGroundPosition; +_location = [0,0,airfieldMarkers + blackMarkers,1,[1,1400]] call Zen_FindGroundPosition; _mine = createMine ["ATMine", _location, [], 0]; -zeusMod addCuratorEditableObjects [[_mine],false]; east revealMine _mine; while{_j < 15}do{ _mine = createMine ["APERSBoundingMine", _location, [], 75]; - zeusMod addCuratorEditableObjects [[_mine],false]; east revealMine _mine; _j = _j + 1; -}; \ No newline at end of file +}; diff --git a/Functions/AI/patrol.sqf b/Functions/AI/patrol.sqf index 9a2086d..c6d07d6 100644 --- a/Functions/AI/patrol.sqf +++ b/Functions/AI/patrol.sqf @@ -8,13 +8,10 @@ _location = [0,0,[blackMarkers,["mrk_area"],[]],1,[1,700]] call Zen_FindGroundPo _veh = [_location,((apcPool + carPool) call BIS_fnc_selectRandom),0,0] call Zen_SpawnVehicle; createVehicleCrew _veh; _veh addEventHandler["fired", {(_this select 0) setVehicleAmmo 1}]; -zeusMod addCuratorEditableObjects [[_veh],false]; -zeusMod addCuratorEditableObjects [(crew _veh),false]; //Spawn infantry _count = (_veh emptyPositions "cargo"); _groupV = [[0,0,0], east, "infantry", (_count - 1),"Basic"] call Zen_SpawnInfantry; -zeusMod addCuratorEditableObjects [(units _groupV),false]; [_groupV,_veh] spawn Zen_MoveInVehicle; @@ -34,4 +31,4 @@ _veh setVariable ["patrol",[_veh, "mrk_area"],true]; _veh setCombatMode "RED"; _veh setBehaviour "COMBAT"; -[[(group (driver _veh))]]call JOC_cacheGroup; \ No newline at end of file +[[(group (driver _veh))]]call JOC_cacheGroup; diff --git a/Functions/AI/radar.sqf b/Functions/AI/radar.sqf index b9f6d78..f7041e4 100644 --- a/Functions/AI/radar.sqf +++ b/Functions/AI/radar.sqf @@ -3,6 +3,7 @@ ///////////////////////// private["_radar","_task","_list"]; _radar = _this select 0; +_marker = _this select 1; _location = getPosASL _radar; _locationO = getPos _radar; @@ -13,13 +14,11 @@ _trg setTriggerArea [6000,6000,6000,false]; _trg setTriggerActivation ["WEST","PRESENT", true]; _trg setTriggerStatements ["this","",""]; -trgT = _trg; - sleep 10; -while{(count (_locationO nearObjects ["rhs_p37",50]) >= 1)}do{ +while{alive _radar}do{ _list = list _trg; - + _task = false; _targets = []; @@ -34,8 +33,10 @@ while{(count (_locationO nearObjects ["rhs_p37",50]) >= 1)}do{ if(_task)then{ [_targets] spawn JOC_taskJet; }; - + sleep 5; }; -deleteVehicle _trg; \ No newline at end of file +deleteVehicle _trg; + +deleteMarker _marker; diff --git a/Functions/AI/radioTower.sqf b/Functions/AI/radioTower.sqf index a00ff2d..9fd0728 100644 --- a/Functions/AI/radioTower.sqf +++ b/Functions/AI/radioTower.sqf @@ -1,26 +1,23 @@ ///////////////////////// //Script made by Jochem// ///////////////////////// -_count = _this select 0; -_name = [5] call Zen_StringGenerateRandom; - -_marker = format["mrk_aaZone_%1",_count]; - -//Get location -_location = [_marker,0,[airfieldMarkers + blackMarkers,["mrk_area"],[]],1,0,0,0,0,0,[1,10,50],[1,0,20]] call Zen_FindGroundPosition; - -//Spawn tower -_tower = [_location, "Land_TTowerBig_2_F"] call Zen_SpawnVehicle; -zeusMod addCuratorEditableObjects [[_tower],false]; +_tower = _this select 0; +_location = getPos _tower; //Create marker +_name = [5] call Zen_StringGenerateRandom; _marker = createMarker [_name, _location]; _name setMarkerType "loc_Transmitter"; _name setMarkerColor "ColorOPFOR"; +_name setMarkerSize [0.65, 0.65]; //Spawn enemy's _trg = createTrigger ["EmptyDetector",_location,true]; _trg setTriggerArea [600,600,600,false]; _trg setTriggerActivation ["WEST","PRESENT", false]; _trg setTriggerStatements ["(!((typeOf (thisList select 0)) in jetArray)) OR ((count thisList) > 1)","[getPos thisTrigger,600,[4,true],[0,false],[0,false],[1,false],[0,false],[0,false,""cas""],[0,false]] call JOC_spawnZone;",""]; -_trg setTriggerTimeout [5,5,5,true]; \ No newline at end of file +_trg setTriggerTimeout [5,5,5,true]; + +waitUntil{!alive _tower}; + +deleteMarker _name; diff --git a/Functions/AI/spawnAirfield.sqf b/Functions/AI/spawnAirfield.sqf index 1ed69d5..dc06ee9 100644 --- a/Functions/AI/spawnAirfield.sqf +++ b/Functions/AI/spawnAirfield.sqf @@ -9,7 +9,7 @@ _dir = (markerDir _marker); //Create activation trigger _trg = createTrigger ["EmptyDetector",_location,true]; -_trg setTriggerArea [(_size select 0)*3.5,(_size select 1)*3.5,1200,false]; +_trg setTriggerArea [(_size select 0)*2.5,(_size select 1)*2.5,1200,false]; _trg setTriggerActivation ["WEST","PRESENT", false]; _trg setTriggerStatements ["this","[getPos thisTrigger,([(triggerArea thisTrigger select 0)*0.4,(triggerArea thisTrigger select 1)*0.4,getDir thisTrigger]),[11,true],[4,false],[0,false],[3,false],[2,false],[0,false,""cas""],[0,false]] call JOC_spawnZone;deleteVehicle thisTrigger;",""]; _trg setTriggerTimeout [5,5,5,true]; @@ -30,8 +30,6 @@ while{_ok == 0}do{ sleep 2; [_aa] joinSilent airfieldGroup; (crew _aa) joinSilent airfieldGroup; - zeusMod addCuratorEditableObjects [[_aa],false]; - zeusMod addCuratorEditableObjects [(crew _aa),false]; }; _count = _count + 1; }; @@ -51,7 +49,6 @@ while{_ok == 0}do{ sleep 2; _heli enableSimulationGlobal true; _heli allowDamage true; - zeusMod addCuratorEditableObjects [[_heli],false]; }; _count = _count + 1; }; @@ -71,7 +68,7 @@ _trgB setTriggerStatements ["this","",""]; _trgB setTriggerTimeout [5,5,5,true]; _trgB setDir _dir; -waitUntil{sleep 30;(count (list _trgO)) >= 1}; +waitUntil{sleep 30;(count (list _trgO)) >= 5}; while{(count (list _trgO)) >= 5}do{ if((count (list _trgB)) >= 5)then{ diff --git a/Functions/AI/spawnBase.sqf b/Functions/AI/spawnBase.sqf new file mode 100644 index 0000000..4c6664d --- /dev/null +++ b/Functions/AI/spawnBase.sqf @@ -0,0 +1,37 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +_location = _this select 0; + +//Get amount of military structures +_towersB = nearestObjects [_location,["Land_Cargo_Tower_V1_F","Land_Cargo_Tower_V1_No1_F","Land_Cargo_Tower_V1_No2_F","Land_Cargo_Tower_V1_No3_F","Land_Cargo_Tower_V1_No4_F","Land_Cargo_Tower_V1_No5_F","Land_Cargo_Tower_V1_No6_F","Land_Cargo_Tower_V1_No7_F","Land_Cargo_Tower_V2_F","Land_Cargo_Tower_V3_F"],300]; +_towersS = nearestObjects [_location,["Land_Cargo_Patrol_V1_F","Land_Cargo_Patrol_V2_F","Land_Cargo_Patrol_V3_F"],300]; +_compoundsB = nearestObjects [_location,["Land_BagBunker_Large_F","Land_BagBunker_Tower_F","Land_Cargo_HQ_V1_F","Land_Cargo_HQ_V2_F","Land_Cargo_HQ_V3_F"],300]; +_compoundsS = nearestObjects [_location,["Land_BagBunker_Small_F","Land_Cargo_House_V1_F","Land_Cargo_House_V2_F","Land_Cargo_House_V3_F"],300]; + +//Get random sequence for small compounds +_compoundsR = [_compoundsS, ((count _compoundsS)/2)]call Zen_ArrayGetRandomSequence; + +//Spawn garrisoned infantry +{ + _pos = getPos _x; + _groupV = [_pos, east, "infantry", 6,"Basic"] call Zen_SpawnInfantryGarrison; +} forEach _towersB; + +{ + _pos = getPos _x; + _groupV = [_pos, east, "infantry", 2,"Basic"] call Zen_SpawnInfantryGarrison; +} forEach _towersS; + +{ + _pos = getPos _x; + _groupV = [_pos, east, "infantry", 5,"Basic"] call Zen_SpawnInfantryGarrison; +} forEach _compoundsB; + +{ + _pos = getPos _x; + _groupV = [_pos, east, "infantry", 2,"Basic"] call Zen_SpawnInfantryGarrison; +} forEach _compoundsR; + +//Spawn patrolling infantry +[_location,300,[7,true],[2,false],[0,false],[1,false],[1,false],[0,false,"cas"],[0,false]] call JOC_spawnZone; diff --git a/Functions/AI/spawnZone.sqf b/Functions/AI/spawnZone.sqf index 7be662b..c6b49d2 100644 --- a/Functions/AI/spawnZone.sqf +++ b/Functions/AI/spawnZone.sqf @@ -1,3 +1,4 @@ + ///////////////////////// //Script made by Jochem// ///////////////////////// @@ -113,7 +114,7 @@ _j = 0; _pool = []; if(_heliCount > 0)then{ while{_j < _heliCount} do{ - _locationS = [_spawnMarkerName,0,0,0,[1,_radius]] call Zen_FindGroundPosition; + _locationS = [_spawnMarkerName,0,0,0] call Zen_FindGroundPosition; if(_heliType == "transport")then{ _pool = heliPool; }; diff --git a/Functions/Caching/cacheGroup.sqf b/Functions/Caching/cacheGroup.sqf index cdf274a..5158829 100644 --- a/Functions/Caching/cacheGroup.sqf +++ b/Functions/Caching/cacheGroup.sqf @@ -19,7 +19,7 @@ _group = _this select 0; _x setVehicleVarName _name; }forEach (crew _x); }; -}forEach _list; +}forEach (units _group); { if(!(_x getVariable "JOC_disable_caching"))then{ diff --git a/Functions/Caching/cacheInit.sqf b/Functions/Caching/cacheInit.sqf index bf80d0c..1251794 100644 --- a/Functions/Caching/cacheInit.sqf +++ b/Functions/Caching/cacheInit.sqf @@ -30,3 +30,4 @@ cacheGroup = createGroup east; [cacheGroupLeader] joinSilent cacheGroup; cacheGroup selectLeader cacheGroupLeader; cachedGroups = []; +publicVariable "cacheGroupLeader"; diff --git a/Functions/Commander/heli.sqf b/Functions/Commander/heli.sqf index 4420fe5..bf36c52 100644 --- a/Functions/Commander/heli.sqf +++ b/Functions/Commander/heli.sqf @@ -19,6 +19,12 @@ while{true}do{ [_heli2,_groupV]spawn JOC_cmdHeliMonitor; + { + _x setVariable ["JOC_disable_caching",true,true]; + _name = [10] call Zen_StringGenerateRandom; + _x setVehicleVarName _name; + }forEach _groupV; + waitUntil{sleep 60; (((fuel _heli1 <= 0.1) or (fuel _heli2 <= 0.1)) or ((!alive _heli1) and (!alive _heli2)))}; if((fuel _heli1 <= 0.1) or (fuel _heli2 <= 0.1))then{ [_heli1, _airfield,"full",100,false,true]spawn Zen_OrderHelicopterLand; diff --git a/Functions/Commander/heliMonitor.sqf b/Functions/Commander/heliMonitor.sqf index e32a19b..7a27fd3 100644 --- a/Functions/Commander/heliMonitor.sqf +++ b/Functions/Commander/heliMonitor.sqf @@ -17,14 +17,14 @@ while{alive _heli}do{ [_heli,_locationI,_infG,"full",10,"fastrope",false] spawn Zen_OrderInsertion; _infG move (getPos (_targets select 0)); [_infG,(getPos (_targets select 0))] call BIS_fnc_taskAttack; - waitUntil{sleep 3;((count ((leader _infG) nearTargets 1000)) < 5) or (!alive (leader _infG))}; + waitUntil{sleep 3;isNull ((leader _infG) findNearestEnemy (leader _infG)) or (!alive (leader _infG))}; if((!alive (leader _infG)) or (!alive _heli))then{ }else{ _pos = [(getPos (leader _infG)),0,0,1,0,0,0,0,0,[1,10,50],[1,0,60]] call Zen_FindGroundPosition; - _handle = [_heli,[_pos,_pos],_infG]spawn Zen_OrderExtraction; + _handle = [_heli,_pos,_infG]spawn Zen_OrderExtraction; waitUntil{sleep 6;scriptDone _handle;}; [_heli1,"mrk_area",[],[0,360],"full"]spawn Zen_OrderVehiclePatrol; }; }; sleep 10; -}; \ No newline at end of file +}; diff --git a/Functions/Commander/manager.sqf b/Functions/Commander/manager.sqf index 36deadf..b1d41fc 100644 --- a/Functions/Commander/manager.sqf +++ b/Functions/Commander/manager.sqf @@ -2,14 +2,24 @@ //Script made by Jochem// ///////////////////////// []spawn JOC_cmdHeli; +[]call JOC_cmdOfficers; -while{true}do{ - waitUntil{sleep 60;(count bluTowns >= 1)}; - sleep (3600/((count opTowns)/2)); - if((count bluTowns >= 1) && cmdAttack)then{ - []spawn JOC_cmdAttack; - cmdAttack = false; +//Counter-attack +[]spawn{ + while{true}do{ + waitUntil{sleep 60;(count bluTowns >= 1)}; + sleep (3600/((count opTowns)/2)); + if((count bluTowns >= 1) && cmdAttack)then{ + []spawn JOC_cmdAttack; + cmdAttack = false; + }; }; - sleep (2500/((count opTowns)/2)); - []spawn JOC_cmdConvoy; -}; \ No newline at end of file +}; + +//Convoy +[]spawn{ + while{true}do{ + sleep (2500/(count opTowns)); + []spawn JOC_cmdConvoy; + }; +}; diff --git a/Functions/Commander/officers.sqf b/Functions/Commander/officers.sqf index 26511ce..2435549 100644 --- a/Functions/Commander/officers.sqf +++ b/Functions/Commander/officers.sqf @@ -1,16 +1,59 @@ ///////////////////////// //Script made by Jochem// ///////////////////////// +waitUntil{sleep 1; (count baseMarkers) >= officerCount}; + //Spawn general -_groupGenaral = createGroup east; -genaral = _groupGenaral createUnit ["O_officer_F",_locationS, [], 0, "NONE"]; -genaral allowFleeing 0; +_hqPos = getMarkerPos "mrk_hq"; +_groupGeneral = createGroup east; + +_locationS = ([_hqPos] call Zen_FindBuildingPositions) call BIS_fnc_selectRandom; +general = _groupGeneral createUnit ["O_officer_F",_locationS, [], 0, "NONE"]; +general allowFleeing 0; + +//Personal protection +_group = [_locationS, east, "infantry", 3,"basic"] call Zen_SpawnInfantry; +{ + [_x] joinSilent _groupGeneral; +} forEach units _group; +deleteGroup _group; + +{ + _x setVariable ["JOC_disable_caching",true,true]; + _name = [8] call Zen_StringGenerateRandom; + _x setVehicleVarName _name; +} forEach (units _groupGeneral); _s = 0; while{_s < officerCount}do{ + _baseMarker = baseMarkers select _s; + _pos = getMarkerPos _baseMarker; + + _nearestBuilding = (nearestObjects [_pos,["Land_BagBunker_Large_F","Land_BagBunker_Tower_F","Land_Cargo_HQ_V1_F","Land_Cargo_HQ_V2_F","Land_Cargo_HQ_V3_F","Land_Cargo_Tower_V1_F","Land_Cargo_Tower_V1_No1_F","Land_Cargo_Tower_V1_No2_F","Land_Cargo_Tower_V1_No3_F","Land_Cargo_Tower_V1_No4_F","Land_Cargo_Tower_V1_No5_F","Land_Cargo_Tower_V1_No6_F","Land_Cargo_Tower_V1_No7_F","Land_Cargo_Tower_V2_F","Land_Cargo_Tower_V3_F"],300]) select 0; + + if(isNull _nearestBuilding)then{ + _nearestBuilding = (nearestObjects [_pos,["Land_BagBunker_Small_F","Land_Cargo_House_V1_F","Land_Cargo_House_V2_F","Land_Cargo_House_V3_F","Land_Cargo_Patrol_V1_F","Land_Cargo_Patrol_V2_F","Land_Cargo_Patrol_V3_F"],300]) select 0; + }; + + _locationS = ([getPos _nearestBuilding] call Zen_FindBuildingPositions) call BIS_fnc_selectRandom; _groupOfficer = createGroup east; _officer = _groupOfficer createUnit ["O_officer_F",_locationS, [], 0, "NONE"]; _officer allowFleeing 0; - + + //Personal protection + _group = [_locationS, east, "infantry", 3,"basic"] call Zen_SpawnInfantry; + { + [_x] joinSilent _groupOfficer; + } forEach units _group; + deleteGroup _group; + + { + _x setVariable ["JOC_disable_caching",true,true]; + _name = [8] call Zen_StringGenerateRandom; + _x setVehicleVarName _name; + } forEach (units _groupOfficer); + + officerArray pushback _officer; + _s = _s + 1; -}; \ No newline at end of file +}; diff --git a/Functions/Diary/changelog.sqf b/Functions/Diary/changelog.sqf new file mode 100644 index 0000000..95f76f3 --- /dev/null +++ b/Functions/Diary/changelog.sqf @@ -0,0 +1,8 @@ +player createDiaryRecord ["Cahngelog", +[ +"Current: v1.0", +" +
v1.0 +
-Initial release +" +]]; diff --git a/Functions/Diary/createDiary.sqf b/Functions/Diary/createDiary.sqf new file mode 100644 index 0000000..e69de29 diff --git a/Functions/Diary/credits.sqf b/Functions/Diary/credits.sqf new file mode 100644 index 0000000..45a3a91 --- /dev/null +++ b/Functions/Diary/credits.sqf @@ -0,0 +1,11 @@ +player createDiaryRecord ["Credits", +[ +"Thanks to...", +" +
CH for his viewDistance and FOB scripts +
ZEN for his amazing framework +
Larow for his example on how to use the virtual garage +
Bakerman for his APS script +
Everyone who helped me test this +" +]]; diff --git a/Functions/Init/initAA.sqf b/Functions/Init/initAA.sqf index 0661480..e32d31f 100644 --- a/Functions/Init/initAA.sqf +++ b/Functions/Init/initAA.sqf @@ -1,57 +1,49 @@ ///////////////////////// //Script made by Jochem// ///////////////////////// -radarBlacklist = []; tankBlacklist = []; -//Set radars -_radar = 0; -while {_radar < (aaCount / 2)} do -{ - _marker = format["mrk_aaZone_%1",_radar]; - _location = [_marker,0,[radarBlacklist + blackMarkers,["mrk_area"],[]],1,0,0,0,0,0,[1,10,50],[1,0,20]] call Zen_FindGroundPosition; - _dish = "rhs_p37" createVehicle _location; - zeusMod addCuratorEditableObjects [[_dish],false]; - - [_dish] spawn JOC_radar; +//"Activate" radars +_radars = nearestObjects [getMarkerPos "mrk_area",["Land_Radar_F","Land_Radar_Small_F"],worldSize*2.0^0.5]; - _nameM = [5] call Zen_StringGenerateRandom; - _marker = createMarker [_nameM, _location]; - _nameM setMarkerShape "ELLIPSE"; - _nameM setMarkerSize [3000,3000]; - _nameM setMarkerBrush "Border"; - _nameM setMarkerColor "ColorOPFOR"; - _nameM setMarkerAlpha 0; +{ + _location = getPos _x; _name = [5] call Zen_StringGenerateRandom; _marker = createMarker [_name, _location]; _name setMarkerType "o_installation"; + _name setMarkerSize [0.65, 0.65]; - [radarBlacklist,count radarBlacklist,_nameM] call Zen_ArrayInsert; + [_x,_name] spawn JOC_radar; +} forEach _radars; - _radar = _radar + 1; -}; //Place AA-tanks _tank = 0; -_count = 0; +_location = []; +aaGroup = createGroup east; while {_tank < aaCount} do { - if(_count == (aaCount / 2))then{_count = 0}; - _marker = format["mrk_aaZone_%1",_count]; + _location = []; + while{count _location == 0}do{ + _pos = ["mrk_area",0,[tankBlacklist + airfieldMarkers + blackMarkers,[],[]],1,0] call Zen_FindGroundPosition; + _location = _pos findEmptyPosition [0,300,"rhs_zsu234_aa"]; + }; - _location = [_marker,0,[tankBlacklist + blackMarkers,["mrk_area"],[]],1,0,0,0,0,0,[1,10,50],[1,0,20]] call Zen_FindGroundPosition; _aaTank = "rhs_zsu234_aa" createVehicle _location; createVehicleCrew _aaTank; _aaTank setFuel 0; _aaTank addEventHandler["fired", {(_this select 0) setVehicleAmmo 1}]; _aaTank setVariable["JOC_caching_disabled",true]; - zeusMod addCuratorEditableObjects [[_aaTank],false]; - zeusMod addCuratorEditableObjects [(crew _aaTank),false]; + [_aaTank] joinSilent aaGroup; _name = [5] call Zen_StringGenerateRandom; _marker = createMarker [_name, _location]; _name setMarkerType "o_mortar"; + _name setMarkerSize [0.65, 0.65]; + + _aaTank setVariable ["marker",_name]; + _aaTank addEventHandler ["killed", {deleteMarker ((_this select 0) getVariable "marker");}]; _nameM = [5] call Zen_StringGenerateRandom; _marker = createMarker [_nameM, _location]; @@ -63,5 +55,4 @@ while {_tank < aaCount} do [tankBlacklist,count tankBlacklist,_nameM] call Zen_ArrayInsert; _tank = _tank + 1; - _count = _count + 1; }; diff --git a/Functions/Init/initArty.sqf b/Functions/Init/initArty.sqf index 0602475..1911f03 100644 --- a/Functions/Init/initArty.sqf +++ b/Functions/Init/initArty.sqf @@ -1,8 +1,10 @@ ///////////////////////// //Script made by Jochem// ///////////////////////// +artyGroup = createGroup east; + _s = 0; while{_s < artyCount}do{ - [_s]call JOC_arty; + [_s]spawn JOC_arty; _s = _s + 1; -}; \ No newline at end of file +}; diff --git a/Functions/Init/initBases.sqf b/Functions/Init/initBases.sqf index e6fe2a0..1ba2cf2 100644 --- a/Functions/Init/initBases.sqf +++ b/Functions/Init/initBases.sqf @@ -1,21 +1,46 @@ ///////////////////////// //Script made by Jochem// ///////////////////////// +if(baseCount == -1)then{ + baseCount = 999; +}; + +_bases = []; +_ok = 0; +_count = 0; +while {_ok == 0} do { + _base = format ["mrk_compound_%1",_count]; + if(getMarkerColor _base == "")then{ + _ok = 1; + }else{ + _bases pushback _base; + _count = _count + 1; + }; +}; + +_basesR = [_bases, (count _bases)]call Zen_ArrayGetRandomSequence; _s = 0; while {_s < baseCount} do { - _compS = [_comp1,_comp2,_comp3,_comp4,_comp5,_comp6,_comp7,_comp8] call BIS_fnc_selectRandom; + _baseMark = _basesR select _s; + + if(isNil{_baseMark})exitWith{}; - //Get position - //_location = [0,0,[airfieldMarkers + blackMarkers,["mrk_area"],[]],1,0,0,0,0,0,[1,10,50],[1,0,60]] call Zen_FindGroundPosition; - _location = position player; + _location = getMarkerPos _baseMark; - //Spawn Composition - [_compS,_location] call JOC_spawnComposition; + _trg = createTrigger ["EmptyDetector",_location,true]; + _trg setTriggerArea [900,900,900,false]; + _trg setTriggerActivation ["WEST","PRESENT", false]; + _trg setTriggerStatements ["this","[getPos thisTrigger] call JOC_spawnBase;deleteVehicle thisTrigger;",""]; + _trg setTriggerTimeout [5,5,5,true]; //Create marker + _name = [7] call Zen_StringGenerateRandom; _marker = createMarker [_name, _location]; _name setMarkerType "o_hq"; + _name setMarkerSize [0.65, 0.65]; + + baseMarkers pushback _name; _s = _s + 1; }; diff --git a/Functions/Init/initMines.sqf b/Functions/Init/initMines.sqf index d1dfbae..77ab924 100644 --- a/Functions/Init/initMines.sqf +++ b/Functions/Init/initMines.sqf @@ -1,10 +1,8 @@ ///////////////////////// //Script made by Jochem// ///////////////////////// -sleep 10; - _s = 0; while{_s < mineCount}do{ []spawn JOC_mineField; _s = _s + 1; -}; \ No newline at end of file +}; diff --git a/Functions/Init/initRadio.sqf b/Functions/Init/initRadio.sqf index 744b372..776627c 100644 --- a/Functions/Init/initRadio.sqf +++ b/Functions/Init/initRadio.sqf @@ -1,8 +1,8 @@ ///////////////////////// //Script made by Jochem// ///////////////////////// -_s = 0; -while{_s < radioCount}do{ - [_s]call JOC_radioTower; - _s = _s + 1; -}; \ No newline at end of file +_towers = nearestObjects [getMarkerPos "mrk_area",["Land_TTowerBig_1_F","Land_TTowerBig_2_F"],worldSize*2.0^0.5]; + +{ + [_x]spawn JOC_radioTower; +} forEach _towers; diff --git a/Functions/Init/initTowns.sqf b/Functions/Init/initTowns.sqf index dc63b94..74b5deb 100644 --- a/Functions/Init/initTowns.sqf +++ b/Functions/Init/initTowns.sqf @@ -6,6 +6,6 @@ _j = 0; while{_j < townCount}do{ [] spawn JOC_occupy; _j = _j + 1; - Sleep 0.01; + Sleep 0.1; }; -[] call JOC_indTown; \ No newline at end of file +[] call JOC_indTown; diff --git a/Functions/Logistics/Building/keypress.sqf b/Functions/Logistics/Building/keypress.sqf deleted file mode 100644 index 887c898..0000000 --- a/Functions/Logistics/Building/keypress.sqf +++ /dev/null @@ -1,31 +0,0 @@ -///////////////////////// -//Script made by Jochem// -///////////////////////// -_object = (attachedObjects player select 0); - -switch (_this select 1) do -{ - //UP -> increase height - case 200: - { - hint "up"; - detach _object; - //_object setPosASL [getPosASL player select 0,getPosASL _object select 1,((getPosASL _object select 2) + 0.25)]; - //_relpos = player modelToWorld getPosASL _object; - //_object attachTo [player,[0,5,(((getPosASL _object select 2) - (getPosASL player select 2)) + 0.25)]]; - _object attachTo [player,[0,5,((_object getVariable "buildHeight") + 0.25)]]; - _object setVariable ["buildHeight",((_object getVariable "buildHeight") + 0.25)]; - }; - //DOWN -> decrease height - case 208: - { - hint "down"; - detach _object; - //_object setPosASL [getPosASL player select 0,getPosASL _object select 1,((getPosASL _object select 2) - 0.25)]; - //_object attachTo [player,[0,5,(((getPosASL _object select 2) - (getPosASL player select 2)) - 0.25)]]; - _object attachTo [player,[0,5,((_object getVariable "buildHeight") - 0.25)]]; - _object setVariable ["buildHeight",((_object getVariable "buildHeight") - 0.25)]; - }; - //Ignore all others - default{}; -}; \ No newline at end of file diff --git a/Functions/Logistics/Building/placeObject.sqf b/Functions/Logistics/Building/placeObject.sqf index 9642f9b..b71bf58 100644 --- a/Functions/Logistics/Building/placeObject.sqf +++ b/Functions/Logistics/Building/placeObject.sqf @@ -1,7 +1,6 @@ ///////////////////////// //Script made by Jochem// ///////////////////////// -disableSerialization; //_display var doesn't work otherwise _class = _this select 0; _object = _class createVehicle getPos player; @@ -9,12 +8,7 @@ _object = _class createVehicle getPos player; _object attachTo [player,[0,5,0]]; player setVariable["building",true,true]; _object setVariable ["buildHeight",0]; - -//Add buttons to change height and rotation -//_display = findDisplay 46; -//_display displaySetEventHandler ["KeyDown","_this call JOC_buildKeypress"]; +player setVariable ["buildObject",_object]; player addAction ["Place", {_object = (attachedObjects player select 0); detach _object; removeAllActions player;[[[_object],{_action = (_this select 0) addAction["Remove",{deleteVehicle (_this select 0)},"",1,true,true,"","(format[""%1"",_this]) in logisticsArray"];}],"BIS_fnc_spawn",true,true] call BIS_fnc_MP;}]; -player addAction ["Cancel", {_object = (attachedObjects player select 0); detach _object; deleteVehicle _object; removeAllActions player;}]; - -_id = ["KeyDown", "_this call JOC_buildKeypress"] call CBA_fnc_addDisplayHandler; \ No newline at end of file +player addAction ["Cancel", {_object = player getVariable "buildObject"; detach _object; deleteVehicle _object; removeAllActions player; player setVariable ["buildObject",objNull];}]; diff --git a/Functions/Logistics/Depot/spawnObject.sqf b/Functions/Logistics/Depot/spawnObject.sqf index 08c0a1b..8377adf 100644 --- a/Functions/Logistics/Depot/spawnObject.sqf +++ b/Functions/Logistics/Depot/spawnObject.sqf @@ -12,6 +12,7 @@ _unable = true; _obj = _type createVehicle [99995,99995,0]; _obj setDir (getDir _x); _obj setPos (getPos _x); + [_obj]spawn JOC_vehInit; _unable = false; }; if((count _veh) == 0)exitWith{}; diff --git a/Functions/Logistics/Fob/fobDeploy.sqf b/Functions/Logistics/Fob/fobDeploy.sqf index b9170f7..08d6682 100644 --- a/Functions/Logistics/Fob/fobDeploy.sqf +++ b/Functions/Logistics/Fob/fobDeploy.sqf @@ -9,7 +9,7 @@ _unable = false; //Composition _objArray = []; _radius = 12; -_isFlat = (getPosASL _truck)isFlatEmpty [ +_isFlat = (getPosASL _truck) isFlatEmpty [ _radius, //--- Minimal distance from another object 0, //--- If 0, just check position. If >0, select new one 0.4, //--- Max gradient @@ -37,19 +37,20 @@ if(!(count _isFlat isEqualTo 0))then{ if(_unable)exitWith{}; -[[[_truck],{removeAllActions (_this select 0);(_this select 0) setVehicleLock "LOCKED";}],"BIS_fnc_spawn",true,true] call BIS_fnc_MP; - { _x action ["eject", _truck] } forEach (crew _truck); + +[[[_truck],{removeAllActions (_this select 0);(_this select 0) setVehicleLock "LOCKED";}],"BIS_fnc_spawn",true,true] call BIS_fnc_MP; + _name = [6] call Zen_StringGenerateRandom; _marker = createMarker [_name, (getPos _truck)]; _marker setMarkerType "b_support"; _marker setMarkerText "FOB"; [["RespawnAdded",["DEPLOYMENT POINT",format ["HQ deployed at grid %1", mapGridPosition (getPos _truck)],"\A3\ui_f\data\map\markers\nato\b_hq.paa"]],"BIS_fnc_showNotification",west] call BIS_fnc_MP; //Notification -[[[_truck,_objArray,_name],{_action = (_this select 0) addAction["Dismantle FOB",{[(_this select 0),(_this select 1)] spawn JOC_fobUndeploy; deleteMarker (_this select 2);},"",1,true,true,"","(side _this == west) && (speed _target < 1)"];}],"BIS_fnc_spawn",true,true] call BIS_fnc_MP; +[[[_truck,_objArray,_name],{_action = (_this select 0) addAction["Dismantle FOB",{[(_this select 0),(_this select 3 select 0)] spawn JOC_fobUndeploy; deleteMarker (_this select 3 select 1);},[(_this select 1),(_this select 2)],1,true,true,"","(side _this == west) && (speed _target < 1)"];}],"BIS_fnc_spawn",true,true] call BIS_fnc_MP; [[[_truck],{_action = (_this select 0) addAction["Relocate",{ _fobArray = []call JOC_fobGetLocations; [(findDisplay 46), getpos (_this select 1), _fobArray, [], [], [], 1, false] call BIS_fnc_strategicMapOpen; diff --git a/Functions/Logistics/Fob/fobSpawn.sqf b/Functions/Logistics/Fob/fobSpawn.sqf index 171a225..1fa855b 100644 --- a/Functions/Logistics/Fob/fobSpawn.sqf +++ b/Functions/Logistics/Fob/fobSpawn.sqf @@ -6,6 +6,7 @@ if(!isServer)exitWith{}; if(isNil{fobCount})then{ fobCount = 0; fobComposition = [["Land_PressureWasher_01_F",[1.98267,2.32764,0.0905981],0.114227],["Land_Portable_generator_F",[2.17505,1.29932,0.0897746],0.102936],["Land_PaperBox_open_full_F",[5.78296,2.11523,0.0905986],243.18],["CamoNet_BLUFOR_big_Curator_F",[3.6,-1.6,0.0905986],0.115265],["Land_PaperBox_open_full_F",[6.3186,3.83057,0.0905986],205.563],["B_CargoNet_01_ammo_F",[5.59106,-0.307617,0.0905986],196.608],["Land_FieldToilet_F",[5.41748,-3.00879,0.0906048],88.8292],["Land_Cargo20_military_green_F",[8.05762,-0.856445,0.0905976],272.526]]; + publicVariable "fobComposition"; [{flagPole addAction ["Relocate", { _fobArray = []call JOC_fobGetLocations; [(findDisplay 46), getpos (_this select 1), _fobArray, [], [], [], 1, false, 2, true, "Select a location", false] call BIS_fnc_strategicMapOpen; @@ -23,6 +24,7 @@ if(fobCount < ((count bluTowns) + 1))then{ _truck setDamage 0; zeusMod addCuratorEditableObjects [[_truck],false]; fobTrucks pushBack _truck; + publicVariable "fobTrucks"; [[[_truck],{(_this select 0) setVehicleLock "LOCKED";}],"BIS_fnc_spawn",true,true] call BIS_fnc_MP; fobCount = fobCount + 1; hint "FOB will be ready in 5 minutes"; diff --git a/Functions/Performance/addToZeus.sqf b/Functions/Performance/addToZeus.sqf deleted file mode 100644 index e9e40cc..0000000 --- a/Functions/Performance/addToZeus.sqf +++ /dev/null @@ -1,12 +0,0 @@ -///////////////////////// -//Script made by Jochem// -///////////////////////// -{ - _curator = _x; - _curator addCuratorEditableObjects [(allUnits - [cacheGroupLeader]),false]; - _curator addCuratorEditableObjects [allDead,false]; - _curator addCuratorEditableObjects [allMines,false]; - - _obj = ((nearestObjects [(getMarkerPos "mrk_area"), ["All"], (worldSize*2^0.5)]) - baseObjects); - _curator addCuratorEditableObjects [_obj,false]; -}forEach allCurators; diff --git a/Functions/Performance/loop.sqf b/Functions/Performance/loop.sqf index 1680b3f..23a4e86 100644 --- a/Functions/Performance/loop.sqf +++ b/Functions/Performance/loop.sqf @@ -1,15 +1,6 @@ ///////////////////////// //Script made by Jochem// ///////////////////////// -baseObjects = nearestObjects [(getMarkerPos "mrk_safeZone"), ["All"], 1200]; - -[]spawn { - while{true}do{ - []call JOC_addToZeus; - sleep 30; - }; -}; - while{true}do{ []call JOC_objectRemove; []call JOC_itemRemove; diff --git a/Functions/Player/button.sqf b/Functions/Player/button.sqf index 083c5b6..4c2a49c 100644 --- a/Functions/Player/button.sqf +++ b/Functions/Player/button.sqf @@ -3,10 +3,29 @@ ///////////////////////// switch (_this select 1) do { - case 210: + //Open CDU + case 210: { []spawn JOC_vehCDU; }; + + //UP -> increase height + case 200: + { + _object = player getVariable "buildObject"; + detach _object; + _object attachTo [player,[0,5,((_object getVariable "buildHeight") + 0.25)]]; + _object setVariable ["buildHeight",((_object getVariable "buildHeight") + 0.25)]; + }; + //DOWN -> decrease height + case 208: + { + _object = player getVariable "buildObject"; + detach _object; + _object attachTo [player,[0,5,((_object getVariable "buildHeight") - 0.25)]]; + _object setVariable ["buildHeight",((_object getVariable "buildHeight") - 0.25)]; + }; + //Ignore all others default{}; -}; \ No newline at end of file +}; diff --git a/Functions/Player/click.sqf b/Functions/Player/click.sqf index 64a179b..2700cb0 100644 --- a/Functions/Player/click.sqf +++ b/Functions/Player/click.sqf @@ -8,7 +8,7 @@ onMapSingleClick{ _groupIdG = ""; _group = 0; _position = _pos; - _markers = (allMapMarkers - opTownMarkers); + _markers = allMapMarkers; { _distance = ((getMarkerPos _x) distance _position); if((_distance < 10) and (_distance < _prevDis))then{ diff --git a/Functions/Player/playerLoop.sqf b/Functions/Player/playerLoop.sqf index cbd6be2..65c3856 100644 --- a/Functions/Player/playerLoop.sqf +++ b/Functions/Player/playerLoop.sqf @@ -4,10 +4,20 @@ while{alive player}do{ player setDamage 0; player addRating 2000; - if((count (nearestObjects [player, ["Land_TTowerBig_2_F"], 2000])) >= 1)then{ + + + if((count (nearestObjects [player, ["Land_TTowerBig_1_F","Land_TTowerBig_2_F"], 2000])) >= 1)then{ player setVariable ["tf_sendingDistanceMultiplicator", 0.2]; }else{ player setVariable ["tf_sendingDistanceMultiplicator", 1]; }; - Sleep 10; + + + if(!isNull curatorCamera)then{ + _curator = (getAssignedCuratorLogic player); + _curator addCuratorEditableObjects [(allUnits - [cacheGroupLeader]),false]; + _curator addCuratorEditableObjects [allDead,false]; + _curator addCuratorEditableObjects [vehicles,false]; + }; + sleep 10; }; diff --git a/Functions/Tasks/rescue.sqf b/Functions/Tasks/rescue.sqf index 0da7a77..4880e0e 100644 --- a/Functions/Tasks/rescue.sqf +++ b/Functions/Tasks/rescue.sqf @@ -12,7 +12,7 @@ _name = [5] call Zen_StringGenerateRandom; //Get position _targetTown = opTownMarkers call BIS_fnc_selectRandom; -_location = getMarkerPos (_targetTown); +_location = getMarkerPos (_targetTown); //Set location for triggers _missionDropoffzone = getMarkerPos "mrk_return"; @@ -34,7 +34,7 @@ _locationS = [_location,[0,50],0,1,[1,150]] call Zen_FindGroundPosition; _groupHostage = createGroup civilian; CIV = _groupHostage createUnit ["C_journalist_F",_locationS, [], 0, "NONE"]; CIV allowFleeing 0; -_locationHostage = _locationS +_locationHostage = _locationS; CIV setPos _locationHostage; //Hostage set behaviour @@ -74,4 +74,4 @@ sleep 15; //Cleanup deleteVehicle CIV; deleteMarker _marker; -taskActive = 0; \ No newline at end of file +taskActive = 0; diff --git a/Functions/Towns/indTown.sqf b/Functions/Towns/indTown.sqf index 1de65be..d8d9dfe 100644 --- a/Functions/Towns/indTown.sqf +++ b/Functions/Towns/indTown.sqf @@ -1,9 +1,8 @@ ///////////////////////// //Script made by Jochem// ///////////////////////// -_villages = nearestLocations [getPosATL player, ["NameVillage"], 35000]; +_villages = nearestLocations [(getMarkerPos "mrk_area"), ["NameVillage"], worldSize*2.0^0.5]; _villagesT = [_villages,opTowns] call Zen_ArrayFilterValues; -_villagesT = [_villagesT,blackTowns] call Zen_ArrayFilterValues; _x = 0; while{_x < count _villagesT}do{ @@ -11,18 +10,22 @@ while{_x < count _villagesT}do{ _name = text _village; _location = position (_village); - _marker = createMarker [_name, _location]; - _name setMarkerShape "ELLIPSE"; - _name setMarkerSize [300,300]; - _name setMarkerBrush "SolidBorder"; - _name setMarkerColor "ColorCIV"; + if(!(_name in blackTowns))then{ + [indTownMarkers,count indTownMarkers,_name] call Zen_ArrayInsert; - _trg = createTrigger ["EmptyDetector",_location,true]; - _trg setTriggerArea [300,300,300,false]; - _trg setTriggerActivation ["WEST","PRESENT", false]; - _trg setTriggerStatements ["this","deleteVehicle thisTrigger;[getPos thisTrigger,300] spawn JOC_monitorTown",""]; - _trg setTriggerTimeout [10,10,10,true]; + _marker = createMarker [_name, _location]; + _name setMarkerShape "ELLIPSE"; + _name setMarkerSize [300,300]; + _name setMarkerBrush "SolidBorder"; + _name setMarkerColor "ColorCIV"; + + _trg = createTrigger ["EmptyDetector",_location,true]; + _trg setTriggerArea [300,300,300,false]; + _trg setTriggerActivation ["WEST","PRESENT", false]; + _trg setTriggerStatements ["this","deleteVehicle thisTrigger;[getPos thisTrigger,300] spawn JOC_monitorTown",""]; + _trg setTriggerTimeout [10,10,10,true]; + }; _x = _x + 1; Sleep 0.01; -}; \ No newline at end of file +}; diff --git a/Functions/Towns/occupy.sqf b/Functions/Towns/occupy.sqf index 3e09ff8..3b98684 100644 --- a/Functions/Towns/occupy.sqf +++ b/Functions/Towns/occupy.sqf @@ -4,10 +4,10 @@ _ok = 0; //Get location of town -_capitals = nearestLocations [getPosATL player, ["NameCityCapital"], 35000]; +_capitals = nearestLocations [(getMarkerPos "mrk_area"), ["NameCityCapital"], worldSize*2.0^0.5]; _capitalName = capitalName; -_towns = nearestLocations [getPosATL player, ["NameCity"], 35000]; -_villages = nearestLocations [getPosATL player, ["NameVillage"], 35000]; +_towns = nearestLocations [(getMarkerPos "mrk_area"), ["NameCity"], worldSize*2.0^0.5]; +_villages = nearestLocations [(getMarkerPos "mrk_area"), ["NameVillage"], worldSize*2.0^0.5]; _targetTown = 0; diff --git a/Functions/Vehicle/Garage/garageFnc.sqf b/Functions/Vehicle/Garage/garageFnc.sqf index 4515650..bfd5645 100644 --- a/Functions/Vehicle/Garage/garageFnc.sqf +++ b/Functions/Vehicle/Garage/garageFnc.sqf @@ -1,21 +1,45 @@ ///////////////////////// //Script made by Jochem// ///////////////////////// -private["_veh","_dis","_time"]; +private["_veh","_dis","_time","_codeE"]; _spawnObj = _this select 0; +_oldVeh = objNull; + +while{!(isNull(uiNamespace getVariable ["BIS_fnc_arsenal_cam",objNull]))}do{ + _veh = nearestObject [_spawnObj, "AllVehicles"]; + _dis = _veh distance _spawnObj; + if((_dis < 4) && (_oldVeh != _veh))then{ + _veh setPos getPos _spawnObj; + _veh setDir (getDir _spawnObj); + _oldVeh = _veh; + }; +}; waitUntil {isNull(uiNamespace getVariable ["BIS_fnc_arsenal_cam",objNull])}; + +sleep 0.5; _veh = nearestObject [_spawnObj, "AllVehicles"]; _dis = _veh distance _spawnObj; -if(_dis > 5)then{}else{ - publicVariable "_veh"; +if(_dis > 4)then{hint "No vehicle spawned";}else{ + _codeE = [_veh]call BIS_fnc_exportVehicle; + deleteVehicle _veh; + _codeS = [_codeE,"position player","(_this select 0)",true] call Zen_StringFindReplace; + _code = compile _codeS; + [(getPos _spawnObj)]call _code; + + _veh = nearestObject [_spawnObj, "AllVehicles"]; + { deleteVehicle _x; }forEach (crew _veh); - _spawnObj setVariable["count",((_spawnObj getVariable "count") + 1)]; - _veh setVariable ["pad",_spawnObj]; + + sleep 0.1; + + _spawnObj setVariable["count",((_spawnObj getVariable "count") + 1),true]; + _veh setVariable ["pad",_spawnObj,true]; + _veh setPos getPos _spawnObj; _veh setDir (getDir _spawnObj); if(_veh isKindOf "car")then{ _time = 60; @@ -31,8 +55,8 @@ if(_dis > 5)then{}else{ }; [_veh]spawn JOC_vehInit; - _spawnObj setVariable["unable",true]; - hint format["Pad will be available in %1 minutes", (_time/60)]; + _spawnObj setVariable["unable",true,true]; + hint format["Pad will be back available in %1 minutes", (_time/60)]; sleep _time; - _spawnObj setVariable["unable",false]; + _spawnObj setVariable["unable",false,true]; }; diff --git a/Functions/Vehicle/Garage/main.sqf b/Functions/Vehicle/Garage/main.sqf index fd84c5e..60205da 100644 --- a/Functions/Vehicle/Garage/main.sqf +++ b/Functions/Vehicle/Garage/main.sqf @@ -1,16 +1,16 @@ ///////////////////////// //Script made by Jochem// ///////////////////////// -_airA = ["RHS_UH60M","RHS_AH64D","MELB_H6M","B_Heli_Transport_03_F","B_Heli_Transport_01_F","RHS_CH_47F"]; -_carA = ["rhsusf_m1025_w_m2","rhsusf_m1025_w_s_m2","rhsusf_m1025_w_mk19","rhsusf_m1025_w_s_Mk19","rhsusf_m1025_w","rhsusf_m1025_w_s","rhsusf_m998_w_2dr_fulltop","rhsusf_m998_w_2dr_halftop","rhsusf_m998_w_2dr","rhsusf_m998_w_4dr_fulltop","rhsusf_m998_w_4dr_halftop","rhsusf_m998_w_4dr"]; -_armorA = ["rhsusf_m1a2sep1wd_usarmy","rhsusf_m1a2sep1tuskiwd_usarmy","rhsusf_m1a2sep1tuskiiwd_usarmy","rhsusf_m113_usarmy","rhsusf_m113d_usarmy_M240","rhsusf_m113d_usarmy_MK19","rhsusf_m113d_usarmy_unarmed","RHS_M2A3","RHS_M2A3_BUSKI","RHS_M2A3_BUSKIII","RHS_M6"]; +_airA = ["RHS_UH60M","RHS_AH64D","B_Heli_Transport_03_F","B_Heli_Transport_01_F","RHS_CH_47F"] + ["BAF_Apache_AH1_DG1","BAF_Merlin_HC3_DG1","BAF_Merlin_HC3_DG1","BAF_Puma_VA_DG1","BAF_AW159_Wildcat_Armed_DG1"]; +_carA = ["rhsusf_m1025_w_m2","rhsusf_m1025_w_mk19","rhsusf_m1025_w","rhsusf_m1025_w_s","rhsusf_m998_w_2dr","rhsusf_m998_w_4dr","B_MRAP_01_F","B_MRAP_01_gmg_F","B_MRAP_01_hmg_F"] + ["BAF_Jackal2_GMG_W_DG1","BAF_Jackal2_L2A1_W_DG1","BAF_LandRover_Special_W_DG1"]; +_armorA = ["rhsusf_m1a2sep1wd_usarmy","rhsusf_m1a2sep1tuskiwd_usarmy","rhsusf_m1a2sep1tuskiiwd_usarmy","rhsusf_m113_usarmy","rhsusf_m113d_usarmy_M240","rhsusf_m113d_usarmy_MK19","rhsusf_m113d_usarmy_unarmed","RHS_M2A3","RHS_M2A3_BUSKI","RHS_M2A3_BUSKIII","RHS_M6"] + ["BAF_FV510_W_SLAT_DG1","BAF_FV510_W_NOSLAT_DG1"]; _suppA = ["B_Heli_Transport_03_unarmed_F","B_APC_Tracked_01_CRV_F","B_Truck_01_fuel_F","B_Truck_01_ammo_F","B_Truck_01_Repair_F"]; -_medA = ["RHS_UH60M_MEV","rhsusf_m113_usarmy_medical","B_Truck_01_medical_F"]; +_medA = ["RHS_UH60M_MEV","rhsusf_m113_usarmy_medical","B_Truck_01_medical_F"] + ["BAF_LandRover_Ambulance_W_DG1"]; garage_spawn_0 setVariable["count",0]; garage_spawner_0 addAction ["Request vehicle",{ if(garage_spawn_0 getVariable "unable")exitWith{hint "Pad not available"}; - _veh = (nearestObjects [(getPos garage_spawn_0),["All"],3] - [garage_spawn_0]); + _veh = (nearestObjects [(getPos garage_spawn_0),["AllVehicles"],3] - [garage_spawn_0]); if(((count _veh) >= 1) or ((garage_spawn_0 getVariable "count") >= 1))then{ hint "Pad not clear or max vehicles reached"; }else{ @@ -25,7 +25,7 @@ garage_spawner_0 addAction ["Request vehicle",{ garage_spawn_1 setVariable["count",0]; garage_spawner_1 addAction ["Request vehicle",{ if(garage_spawn_1 getVariable "unable")exitWith{hint "Pad not available"}; - _veh = (nearestObjects [(getPos garage_spawn_1),["All"],3] - [garage_spawn_1]); + _veh = (nearestObjects [(getPos garage_spawn_1),["AllVehicles"],3] - [garage_spawn_1]); if(((count _veh) >= 1) or ((garage_spawn_1 getVariable "count") >= 1))then{ hint "Pad not clear or max vehicles reached"; }else{ @@ -40,7 +40,7 @@ garage_spawner_1 addAction ["Request vehicle",{ garage_spawn_2 setVariable["count",0]; garage_spawner_2 addAction ["Request vehicle",{ if(garage_spawn_2 getVariable "unable")exitWith{hint "Pad not available"}; - _veh = (nearestObjects [(getPos garage_spawn_2),["All"],3] - [garage_spawn_2]); + _veh = (nearestObjects [(getPos garage_spawn_2),["AllVehicles"],3] - [garage_spawn_2]); if(((count _veh) >= 1) or ((garage_spawn_2 getVariable "count") >= 1))then{ hint "Pad not clear or max vehicles reached"; }else{ @@ -55,7 +55,7 @@ garage_spawner_2 addAction ["Request vehicle",{ garage_spawn_3 setVariable["count",0]; garage_spawner_3 addAction ["Request vehicle",{ if(garage_spawn_3 getVariable "unable")exitWith{hint "Pad not available"}; - _veh = (nearestObjects [(getPos garage_spawn_3),["All"],3] - [garage_spawn_3]); + _veh = (nearestObjects [(getPos garage_spawn_3),["AllVehicles"],3] - [garage_spawn_3]); if(((count _veh) >= 1) or ((garage_spawn_3 getVariable "count") >= 1))then{ hint "Pad not clear or max vehicles reached"; }else{ @@ -70,7 +70,7 @@ garage_spawner_3 addAction ["Request vehicle",{ garage_spawn_4 setVariable["count",0]; garage_spawner_4 addAction ["Request vehicle",{ if(garage_spawn_4 getVariable "unable")exitWith{hint "Pad not available"}; - _veh = (nearestObjects [(getPos garage_spawn_4),["All"],3] - [garage_spawn_4]); + _veh = (nearestObjects [(getPos garage_spawn_4),["AllVehicles"],3] - [garage_spawn_4]); if(((count _veh) >= 1) or ((garage_spawn_4 getVariable "count") >= 1))then{ hint "Pad not clear or max vehicles reached"; }else{ @@ -85,7 +85,7 @@ garage_spawner_4 addAction ["Request vehicle",{ garage_spawn_5 setVariable["count",0]; garage_spawner_5 addAction ["Request vehicle",{ if(garage_spawn_5 getVariable "unable")exitWith{hint "Pad not available"}; - _veh = (nearestObjects [(getPos garage_spawn_5),["All"],3] - [garage_spawn_5]); + _veh = (nearestObjects [(getPos garage_spawn_5),["AllVehicles"],3] - [garage_spawn_5]); if(((count _veh) >= 1) or ((garage_spawn_5 getVariable "count") >= 12))then{ hint "Pad not clear or max vehicles reached"; }else{ @@ -100,7 +100,7 @@ garage_spawner_5 addAction ["Request vehicle",{ garage_spawn_6 setVariable["count",0]; garage_spawner_6 addAction ["Request vehicle",{ if(garage_spawn_6 getVariable "unable")exitWith{hint "Pad not available"}; - _veh = (nearestObjects [(getPos garage_spawn_6),["All"],3] - [garage_spawn_6]); + _veh = (nearestObjects [(getPos garage_spawn_6),["AllVehicles"],3] - [garage_spawn_6]); if(((count _veh) >= 1) or ((garage_spawn_6 getVariable "count") >= 4))then{ hint "Pad not clear or max vehicles reached"; }else{ @@ -115,7 +115,7 @@ garage_spawner_6 addAction ["Request vehicle",{ garage_spawn_med setVariable["count",0]; garage_spawner_med addAction ["Request vehicle",{ if(garage_spawn_med getVariable "unable")exitWith{hint "Pad not available"}; - _veh = (nearestObjects [(getPos garage_spawn_med),["All"],3] - [garage_spawn_med]); + _veh = (nearestObjects [(getPos garage_spawn_med),["AllVehicles"],3] - [garage_spawn_med]); if(((count _veh) >= 1) or ((garage_spawn_med getVariable "count") >= 4))then{ hint "Pad not clear or max vehicles reached"; }else{ diff --git a/Functions/Vehicle/Garage/scrap.sqf b/Functions/Vehicle/Garage/scrap.sqf index 724c35a..bd6617e 100644 --- a/Functions/Vehicle/Garage/scrap.sqf +++ b/Functions/Vehicle/Garage/scrap.sqf @@ -4,6 +4,6 @@ private ["_veh"]; _veh = _this select 0; -_id = trg_scrap addAction[ "Scrap vehicle",{_veh = _this select 3; _pad = (_veh getVariable "pad"); _pad setVariable["count",((_pad getVariable "count") - 1)]; deleteVehicle _veh},_veh]; -waitUntil{sleep 0.3;((_veh distance garage_scrap) > 7)}; +_id = garage_scrap addAction["Scrap vehicle",{_veh = _this select 3; _pad = (_veh getVariable "pad"); _pad setVariable["count",((_pad getVariable "count") - 1),true]; deleteVehicle _veh},_veh]; +waitUntil{sleep 0.3;((_veh distance garage_scrap) > 10)}; garage_scrap removeAction _id; diff --git a/Functions/fn_compile.sqf b/Functions/fn_compile.sqf index 951746d..f5c0828 100644 --- a/Functions/fn_compile.sqf +++ b/Functions/fn_compile.sqf @@ -1,10 +1,12 @@ ///////////////////////// //Script made by Jochem// ///////////////////////// +JOC_missionInit = compileFinal preprocessFileLineNumbers "missionInit.sqf"; //AI JOC_spawnZone = compileFinal preprocessFileLineNumbers "Functions\AI\spawnZone.sqf"; JOC_spawnAirfield = compileFinal preprocessFileLineNumbers "Functions\AI\spawnAirfield.sqf"; +JOC_spawnBase = compileFinal preprocessFileLineNumbers "Functions\AI\spawnBase.sqf"; JOC_taskJet = compileFinal preprocessFileLineNumbers "Functions\AI\taskJet.sqf"; JOC_jetMonitor = compileFinal preprocessFileLineNumbers "Functions\AI\jetMonitor.sqf"; JOC_radar = compileFinal preprocessFileLineNumbers "Functions\AI\radar.sqf"; @@ -27,6 +29,7 @@ JOC_cmdManager = compileFinal preprocessFileLineNumbers "Functions\Commander\man JOC_cmdAttack = compileFinal preprocessFileLineNumbers "Functions\Commander\attack.sqf"; JOC_cmdHeli = compileFinal preprocessFileLineNumbers "Functions\Commander\heli.sqf"; JOC_cmdHeliMonitor = compileFinal preprocessFileLineNumbers "Functions\Commander\heliMonitor.sqf"; +JOC_cmdOfficers = compileFinal preprocessFileLineNumbers "Functions\Commander\officers.sqf"; //Init JOC_initAA = compileFinal preprocessFileLineNumbers "Functions\Init\initAA.sqf"; diff --git a/init.sqf b/init.sqf index b3527b7..326202e 100644 --- a/init.sqf +++ b/init.sqf @@ -11,12 +11,10 @@ call compile preprocessFile "Baked_AIS\Baked_AIS_init.sqf"; // Tested with ArmA 3 <1.50> enableSaving [false, false]; -eastHQ = createCenter east; // Execution stops until the mission begins (past briefing), do not delete this line sleep 1; -// All clients stop executing here, do not delete this line -if (!isServer) exitWith {}; - +if(!isServer)exitWith{}; + []execVM "missionInit.sqf"; diff --git a/initPlayerLocal.sqf b/initPlayerLocal.sqf index 75f0ea2..e549dca 100644 --- a/initPlayerLocal.sqf +++ b/initPlayerLocal.sqf @@ -1,8 +1,6 @@ ///////////////////////// //Script made by Jochem// ///////////////////////// -0=["Keep calm and play your role",0,0,10] spawn BIS_fnc_dynamicText; - //intro text _date = date; _year = _date select 0; @@ -16,12 +14,21 @@ _name = name player; _textDate = format["%3/%2/%1 - %4:%5",_year,_month,_day,_hour,_minute]; _textName = format["%1 %2",_rank,_name]; +sleep 1; -Sleep 10; - -0=["Gemini",_textDate,_textName,"Chernarus"] spawn BIS_fnc_infoText; +[ + [ + ["Gemini","%1
"], + [_textDate,"%1
"], + [_textName,"%1
"], + ["Molos airfield, NATO HQ","%1
"], + [worldName,"%1",30] + ], + 1, + 1, + "%1" +] spawn BIS_fnc_typeText; -[]spawn JOC_playerLoop; []spawn JOC_playerClick; []call JOC_garage; ["KeyDown", "_this call JOC_playerButton"] call CBA_fnc_addDisplayHandler; diff --git a/mission.sqm b/mission.sqm index 20323a0..5aa03c8 100644 --- a/mission.sqm +++ b/mission.sqm @@ -39,10 +39,10 @@ class Mission "a3_map_altis", "A3_Structures_F_Mil_Cargo", "A3_Soft_F_Gamma_HEMTT", - "A3_Structures_F_Mil_Radar", "A3_Structures_F_Mil_BagFence", "A3_Structures_F_Ind_Cargo", - "A3_Structures_F_Items_Vessels" + "A3_Structures_F_Items_Vessels", + "A3_Modules_F" }; addOnsAuto[]= { @@ -68,6 +68,7 @@ class Mission "ace_repair", "ace_hearing", "ace_interaction", + "A3_Modules_F", "A3_Structures_F_Mil_Flags", "A3_Structures_F_Mil_Helipads", "A3_Structures_F_Civ_InfoBoards", @@ -79,7 +80,6 @@ class Mission "A3_Structures_F_Mil_Fortification", "A3_Structures_F_Mil_Cargo", "A3_Structures_F_Training", - "A3_Structures_F_Mil_Radar", "A3_Structures_F_Mil_BagFence", "A3_Structures_F_Ind_Cargo", "A3_Soft_F_Gamma_HEMTT", @@ -108,7 +108,7 @@ class Mission }; class Groups { - items=40; + items=44; class Item0 { side="LOGIC"; @@ -2210,15 +2210,87 @@ class Mission }; }; }; + class Item40 + { + side="LOGIC"; + class Vehicles + { + items=1; + class Item0 + { + position[]={9200.6855,272.35135,19294.305}; + id=82; + side="LOGIC"; + vehicle="Logic"; + leader=1; + skill=0.60000002; + init="_veh = ""Land_Radar_Small_F"" createVehicle getPos this;"; + }; + }; + }; + class Item41 + { + side="LOGIC"; + class Vehicles + { + items=1; + class Item0 + { + position[]={11204.642,182.41,8721.0176}; + id=83; + side="LOGIC"; + vehicle="Logic"; + leader=1; + skill=0.60000002; + init="_veh = ""Land_Radar_Small_F"" createVehicle getPos this;"; + }; + }; + }; + class Item42 + { + side="LOGIC"; + class Vehicles + { + items=1; + class Item0 + { + position[]={23033.098,48.642136,7257.3564}; + id=84; + side="LOGIC"; + vehicle="Logic"; + leader=1; + skill=0.60000002; + init="_veh = ""Land_Radar_Small_F"" createVehicle getPos this;"; + }; + }; + }; + class Item43 + { + side="LOGIC"; + class Vehicles + { + items=1; + class Item0 + { + position[]={22737.268,18.387026,13575.186}; + id=85; + side="LOGIC"; + vehicle="Logic"; + leader=1; + skill=0.60000002; + init="_veh = ""Land_Radar_Small_F"" createVehicle getPos this;"; + }; + }; + }; }; class Vehicles { - items=589; + items=588; class Item0 { position[]={26751.092,20.63332,24620.148}; azimut=140; - id=82; + id=86; side="EMPTY"; vehicle="Flag_NATO_F"; skill=0.60000002; @@ -2228,7 +2300,7 @@ class Mission { position[]={26679.932,20.602068,24585.189}; azimut=220; - id=83; + id=87; side="EMPTY"; vehicle="Land_HelipadEmpty_F"; skill=0.60000002; @@ -2238,7 +2310,7 @@ class Mission { position[]={26853.795,22.974501,24627.014}; azimut=311; - id=84; + id=88; side="EMPTY"; vehicle="Land_HelipadSquare_F"; leader=1; @@ -2249,7 +2321,7 @@ class Mission { position[]={26840.758,23.258154,24611.885}; azimut=311; - id=85; + id=89; side="EMPTY"; vehicle="Land_HelipadSquare_F"; leader=1; @@ -2260,7 +2332,7 @@ class Mission { position[]={26814.207,23.667765,24580.438}; azimut=311; - id=86; + id=90; side="EMPTY"; vehicle="Land_HelipadSquare_F"; leader=1; @@ -2271,7 +2343,7 @@ class Mission { position[]={26827.711,23.467793,24596.537}; azimut=311; - id=87; + id=91; side="EMPTY"; vehicle="Land_HelipadSquare_F"; leader=1; @@ -2282,7 +2354,7 @@ class Mission { position[]={26789.77,20.045813,24677.568}; azimut=220; - id=88; + id=92; side="EMPTY"; vehicle="Land_HelipadRescue_F"; leader=1; @@ -2293,7 +2365,7 @@ class Mission { position[]={26616.869,15.110755,24661.656}; azimut=130; - id=89; + id=93; side="EMPTY"; vehicle="Land_HelipadSquare_F"; leader=1; @@ -2303,7 +2375,7 @@ class Mission class Item8 { position[]={26736.77,20.429853,24618.402}; - id=90; + id=94; side="EMPTY"; vehicle="Land_HelipadEmpty_F"; leader=1; @@ -2314,7 +2386,7 @@ class Mission { position[]={26851.818,22.539137,24635.105}; azimut=131; - id=91; + id=95; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; @@ -2325,7 +2397,7 @@ class Mission { position[]={26838.764,22.751152,24620.033}; azimut=131; - id=92; + id=96; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; @@ -2336,7 +2408,7 @@ class Mission { position[]={26825.6,23.232862,24604.789}; azimut=131; - id=93; + id=97; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; @@ -2347,7 +2419,7 @@ class Mission { position[]={26812.158,23.496078,24588.58}; azimut=131; - id=94; + id=98; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; @@ -2358,7 +2430,7 @@ class Mission { position[]={26625.193,15.63499,24661.625}; azimut=310; - id=95; + id=99; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; @@ -2369,7 +2441,7 @@ class Mission { position[]={26697.639,21.706532,24557.914}; azimut=40; - id=96; + id=100; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; @@ -2380,7 +2452,7 @@ class Mission { position[]={26700.02,21.519724,24568.592}; azimut=220; - id=97; + id=101; side="EMPTY"; vehicle="Land_HelipadEmpty_F"; leader=1; @@ -2391,7 +2463,7 @@ class Mission { position[]={26722.615,22.624599,24507.516}; azimut=310; - id=98; + id=102; side="EMPTY"; vehicle="Land_HelipadEmpty_F"; leader=1; @@ -2402,7 +2474,7 @@ class Mission { position[]={26627.027,18.492004,24551.48}; azimut=140; - id=99; + id=103; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -2412,7 +2484,7 @@ class Mission { position[]={26630.387,18.720192,24554.295}; azimut=140; - id=100; + id=104; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -2422,7 +2494,7 @@ class Mission { position[]={26640.418,19.333132,24562.721}; azimut=140; - id=101; + id=105; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -2432,7 +2504,7 @@ class Mission { position[]={26637.129,19.169079,24559.951}; azimut=140; - id=102; + id=106; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -2442,7 +2514,7 @@ class Mission { position[]={26633.701,18.948469,24557.066}; azimut=140; - id=103; + id=107; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -2452,7 +2524,7 @@ class Mission { position[]={26642.506,19.42977,24562.521}; azimut=50; - id=104; + id=108; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -2462,7 +2534,7 @@ class Mission { position[]={26653.719,19.988251,24549.172}; azimut=50; - id=105; + id=109; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -2472,7 +2544,7 @@ class Mission { position[]={26651.199,19.898941,24552.17}; azimut=50; - id=106; + id=110; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -2482,7 +2554,7 @@ class Mission { position[]={26644.934,19.568123,24559.594}; azimut=50; - id=107; + id=111; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -2492,7 +2564,7 @@ class Mission { position[]={26651.652,19.946342,24552.939}; azimut=5; - id=108; + id=112; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -2502,7 +2574,7 @@ class Mission { position[]={26645.73,19.599613,24559.926}; azimut=95; - id=109; + id=113; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -2512,7 +2584,7 @@ class Mission { position[]={26640.117,19.109953,24535.861}; azimut=140; - id=110; + id=114; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -2522,7 +2594,7 @@ class Mission { position[]={26643.477,19.330631,24538.676}; azimut=140; - id=111; + id=115; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -2532,7 +2604,7 @@ class Mission { position[]={26653.508,19.941353,24547.1}; azimut=140; - id=112; + id=116; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -2542,7 +2614,7 @@ class Mission { position[]={26650.219,19.73543,24544.33}; azimut=140; - id=113; + id=117; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -2552,7 +2624,7 @@ class Mission { position[]={26646.791,19.587873,24541.445}; azimut=140; - id=114; + id=118; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -2562,7 +2634,7 @@ class Mission { position[]={26652.77,19.967319,24550.83}; azimut=230; - id=115; + id=119; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; @@ -2573,7 +2645,7 @@ class Mission { position[]={26696.594,19.424883,24644.807}; azimut=220; - id=116; + id=120; side="EMPTY"; vehicle="Land_TableDesk_F"; leader=1; @@ -2584,7 +2656,7 @@ class Mission { position[]={26695.984,19.363281,24644.219}; azimut=220; - id=117; + id=121; side="EMPTY"; vehicle="Land_OfficeChair_01_F"; leader=1; @@ -2594,7 +2666,7 @@ class Mission { position[]={26698.777,19.607979,24646.449}; azimut=40; - id=118; + id=122; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -2604,7 +2676,7 @@ class Mission { position[]={26698.027,19.524288,24647.043}; azimut=40; - id=119; + id=123; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -2614,7 +2686,7 @@ class Mission { position[]={26697.188,19.426514,24647.748}; azimut=40; - id=120; + id=124; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -2624,7 +2696,7 @@ class Mission { position[]={26693.893,19.035419,24650.426}; azimut=40; - id=121; + id=125; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -2634,7 +2706,7 @@ class Mission { position[]={26696.391,19.332754,24648.361}; azimut=40; - id=122; + id=126; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -2644,7 +2716,7 @@ class Mission { position[]={26694.643,19.12458,24649.813}; azimut=40; - id=123; + id=127; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -2654,7 +2726,7 @@ class Mission { position[]={26695.506,19.227989,24649.063}; azimut=40; - id=124; + id=128; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -2664,7 +2736,7 @@ class Mission { position[]={26697.381,19.504669,24643.703}; azimut=220; - id=125; + id=129; side="EMPTY"; vehicle="Land_Laptop_unfolded_F"; leader=1; @@ -2676,7 +2748,7 @@ class Mission { position[]={26781.301,19.899694,24676.133}; azimut=40; - id=126; + id=130; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; @@ -2687,7 +2759,7 @@ class Mission { position[]={26677.564,20.788641,24575.168}; azimut=40; - id=127; + id=131; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; @@ -2698,7 +2770,7 @@ class Mission { position[]={26644.076,16.950621,24650.637}; azimut=220; - id=128; + id=132; side="EMPTY"; vehicle="Land_HelipadEmpty_F"; skill=0.60000002; @@ -2708,7 +2780,7 @@ class Mission { position[]={26648.682,16.888273,24656.238}; azimut=220; - id=129; + id=133; side="EMPTY"; vehicle="Land_HelipadEmpty_F"; skill=0.60000002; @@ -2718,7 +2790,7 @@ class Mission { position[]={26652.535,16.932177,24661.273}; azimut=220; - id=130; + id=134; side="EMPTY"; vehicle="Land_HelipadEmpty_F"; skill=0.60000002; @@ -2728,7 +2800,7 @@ class Mission { position[]={26635.229,16.312897,24658.033}; azimut=220; - id=131; + id=135; side="EMPTY"; vehicle="Land_HelipadEmpty_F"; skill=0.60000002; @@ -2738,7 +2810,7 @@ class Mission { position[]={26639.779,16.327471,24663.541}; azimut=220; - id=132; + id=136; side="EMPTY"; vehicle="Land_HelipadEmpty_F"; skill=0.60000002; @@ -2748,7 +2820,7 @@ class Mission { position[]={26643.854,16.254807,24668.561}; azimut=220; - id=133; + id=137; side="EMPTY"; vehicle="Land_HelipadEmpty_F"; skill=0.60000002; @@ -2758,7 +2830,7 @@ class Mission { position[]={26641.807,17.085974,24644.063}; azimut=40; - id=134; + id=138; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; @@ -2769,7 +2841,7 @@ class Mission { position[]={26669.105,18.929838,24620.211}; azimut=40; - id=135; + id=139; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2778,7 +2850,7 @@ class Mission { position[]={26675.096,19.145273,24615.203}; azimut=40; - id=136; + id=140; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2787,7 +2859,7 @@ class Mission { position[]={26665.881,18.562429,24626.85}; azimut=130; - id=137; + id=141; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2796,7 +2868,7 @@ class Mission { position[]={26670.225,18.580593,24632.055}; azimut=130; - id=138; + id=142; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2805,7 +2877,7 @@ class Mission { position[]={26675.172,18.44449,24638.094}; azimut=130; - id=139; + id=143; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2814,7 +2886,7 @@ class Mission { position[]={26688.559,18.534348,24648.607}; azimut=130; - id=140; + id=144; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2823,7 +2895,7 @@ class Mission { position[]={26693.688,18.753759,24654.469}; azimut=130; - id=141; + id=145; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2832,16 +2904,16 @@ class Mission { position[]={26698.727,18.506804,24660.373}; azimut=130; - id=142; + id=146; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item61 { - position[]={26712.732,19.448021,24659.07}; + position[]={26713.186,19.482183,24658.797}; azimut=40; - id=143; + id=147; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2850,7 +2922,7 @@ class Mission { position[]={26707.221,18.721292,24663.738}; azimut=40; - id=144; + id=148; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2859,7 +2931,7 @@ class Mission { position[]={26701.9,18.207329,24664.418}; azimut=130; - id=145; + id=149; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2868,7 +2940,7 @@ class Mission { position[]={26681.018,19.525734,24610.256}; azimut=40; - id=146; + id=150; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2877,7 +2949,7 @@ class Mission { position[]={26718.061,19.875248,24660.645}; azimut=130; - id=147; + id=151; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2886,7 +2958,7 @@ class Mission { position[]={26723.012,20.634399,24666.549}; azimut=130; - id=148; + id=152; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2895,7 +2967,7 @@ class Mission { position[]={26728.184,20.3808,24672.498}; azimut=130; - id=149; + id=153; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2904,7 +2976,7 @@ class Mission { position[]={26733.225,20.088259,24678.447}; azimut=130; - id=150; + id=154; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2913,7 +2985,7 @@ class Mission { position[]={26738.17,20.095839,24684.396}; azimut=130; - id=151; + id=155; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2922,7 +2994,7 @@ class Mission { position[]={26743.029,19.922901,24690.256}; azimut=130; - id=152; + id=156; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2931,7 +3003,7 @@ class Mission { position[]={26748.291,19.106367,24696.434}; azimut=130; - id=153; + id=157; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2940,7 +3012,7 @@ class Mission { position[]={26753.375,18.435715,24702.428}; azimut=130; - id=154; + id=158; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2949,7 +3021,7 @@ class Mission { position[]={26767.789,18.903276,24699.6}; azimut=130; - id=155; + id=159; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2958,7 +3030,7 @@ class Mission { position[]={26862.461,26.275167,24486.096}; azimut=130; - id=156; + id=160; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2967,7 +3039,7 @@ class Mission { position[]={26846.166,26.304111,24475.688}; azimut=130; - id=157; + id=161; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2976,7 +3048,7 @@ class Mission { position[]={26849.023,26.257971,24479.457}; azimut=130; - id=158; + id=162; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2985,7 +3057,7 @@ class Mission { position[]={26854.064,26.214239,24485.541}; azimut=130; - id=159; + id=163; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2994,7 +3066,7 @@ class Mission { position[]={26858.309,26.254385,24485.82}; azimut=40; - id=160; + id=164; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3003,7 +3075,7 @@ class Mission { position[]={26686.828,19.831408,24605.326}; azimut=40; - id=161; + id=165; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3012,7 +3084,7 @@ class Mission { position[]={26692.869,19.961664,24600.311}; azimut=40; - id=162; + id=166; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3021,7 +3093,7 @@ class Mission { position[]={26698.906,20.382103,24595.242}; azimut=40; - id=163; + id=167; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3030,7 +3102,7 @@ class Mission { position[]={26705.203,20.690088,24590.121}; azimut=40; - id=164; + id=168; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3039,7 +3111,7 @@ class Mission { position[]={26711.395,20.825146,24584.9}; azimut=40; - id=165; + id=169; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3048,7 +3120,7 @@ class Mission { position[]={26717.488,21.112198,24579.779}; azimut=40; - id=166; + id=170; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3057,7 +3129,7 @@ class Mission { position[]={26723.629,21.47473,24574.609}; azimut=40; - id=167; + id=171; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3066,7 +3138,7 @@ class Mission { position[]={26735.711,22.108635,24564.574}; azimut=40; - id=168; + id=172; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3075,7 +3147,7 @@ class Mission { position[]={26753.672,22.806257,24549.717}; azimut=40; - id=169; + id=173; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3084,7 +3156,7 @@ class Mission { position[]={26759.754,23.050566,24544.629}; azimut=40; - id=170; + id=174; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3093,7 +3165,7 @@ class Mission { position[]={26765.793,23.300764,24539.59}; azimut=40; - id=171; + id=175; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3102,7 +3174,7 @@ class Mission { position[]={26771.691,23.534,24534.641}; azimut=40; - id=172; + id=176; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3111,7 +3183,7 @@ class Mission { position[]={26777.637,23.777401,24529.691}; azimut=40; - id=173; + id=177; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3120,7 +3192,7 @@ class Mission { position[]={26783.637,24.040606,24524.738}; azimut=40; - id=174; + id=178; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3129,7 +3201,7 @@ class Mission { position[]={26789.537,24.309319,24519.744}; azimut=40; - id=175; + id=179; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3138,7 +3210,7 @@ class Mission { position[]={26795.574,24.505087,24514.701}; azimut=40; - id=176; + id=180; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3147,7 +3219,7 @@ class Mission { position[]={26801.523,24.613827,24509.697}; azimut=40; - id=177; + id=181; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3156,7 +3228,7 @@ class Mission { position[]={26807.396,24.778641,24504.662}; azimut=40; - id=178; + id=182; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3165,7 +3237,7 @@ class Mission { position[]={26813.273,24.989782,24499.719}; azimut=40; - id=179; + id=183; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3174,7 +3246,7 @@ class Mission { position[]={26819.146,25.263405,24494.676}; azimut=40; - id=180; + id=184; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3183,7 +3255,7 @@ class Mission { position[]={26825.072,25.522869,24489.557}; azimut=40; - id=181; + id=185; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3192,7 +3264,7 @@ class Mission { position[]={26830.973,25.763977,24484.506}; azimut=40; - id=182; + id=186; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3201,7 +3273,7 @@ class Mission { position[]={26836.918,26.006767,24479.51}; azimut=40; - id=183; + id=187; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3210,7 +3282,7 @@ class Mission { position[]={26841.957,26.258018,24475.379}; azimut=40; - id=184; + id=188; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3219,7 +3291,7 @@ class Mission { position[]={26748.477,22.910776,24543.535}; azimut=40; - id=185; + id=189; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3228,7 +3300,7 @@ class Mission { position[]={26754.531,23.129507,24538.57}; azimut=40; - id=186; + id=190; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3237,7 +3309,7 @@ class Mission { position[]={26760.432,23.353369,24533.527}; azimut=40; - id=187; + id=191; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3246,7 +3318,7 @@ class Mission { position[]={26766.422,23.588297,24528.398}; azimut=40; - id=188; + id=192; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3255,7 +3327,7 @@ class Mission { position[]={26772.596,23.838976,24523.039}; azimut=42; - id=189; + id=193; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3264,7 +3336,7 @@ class Mission { position[]={26778.359,24.087416,24517.863}; azimut=42; - id=190; + id=194; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3273,7 +3345,7 @@ class Mission { position[]={26784.305,24.348587,24512.414}; azimut=42; - id=191; + id=195; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3282,7 +3354,7 @@ class Mission { position[]={26790.25,24.609047,24507.1}; azimut=42; - id=192; + id=196; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3291,7 +3363,7 @@ class Mission { position[]={26795.93,24.807636,24501.836}; azimut=42; - id=193; + id=197; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3300,7 +3372,7 @@ class Mission { position[]={26801.824,24.990799,24496.66}; azimut=42; - id=194; + id=198; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3309,7 +3381,7 @@ class Mission { position[]={26807.904,25.190668,24491.33}; azimut=42; - id=195; + id=199; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3318,7 +3390,7 @@ class Mission { position[]={26813.803,25.410355,24486.105}; azimut=42; - id=196; + id=200; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3327,7 +3399,7 @@ class Mission { position[]={26819.75,25.650244,24480.889}; azimut=42; - id=197; + id=201; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3336,7 +3408,7 @@ class Mission { position[]={26825.471,25.907431,24475.803}; azimut=42; - id=198; + id=202; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3345,7 +3417,7 @@ class Mission { position[]={26831.461,26.210234,24470.535}; azimut=42; - id=199; + id=203; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3354,7 +3426,7 @@ class Mission { position[]={26837.318,26.558489,24465.314}; azimut=42; - id=200; + id=204; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3363,7 +3435,7 @@ class Mission { position[]={26841.299,26.715721,24461.711}; azimut=42; - id=201; + id=205; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3372,7 +3444,7 @@ class Mission { position[]={26848.191,26.498379,24469.76}; azimut=42; - id=202; + id=206; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3381,7 +3453,7 @@ class Mission { position[]={26867.324,26.16889,24491.773}; azimut=131; - id=203; + id=207; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3390,7 +3462,7 @@ class Mission { position[]={26872.457,26.057894,24497.629}; azimut=131; - id=204; + id=208; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3399,7 +3471,7 @@ class Mission { position[]={26877.721,25.970894,24503.623}; azimut=131; - id=205; + id=209; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3408,7 +3480,7 @@ class Mission { position[]={26882.986,25.970659,24509.619}; azimut=131; - id=206; + id=210; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3417,7 +3489,7 @@ class Mission { position[]={26888.205,26.061222,24515.475}; azimut=131; - id=207; + id=211; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3426,7 +3498,7 @@ class Mission { position[]={26893.457,26.071909,24521.42}; azimut=131; - id=208; + id=212; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3435,7 +3507,7 @@ class Mission { position[]={26898.535,26.090406,24527.309}; azimut=131; - id=209; + id=213; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3444,7 +3516,7 @@ class Mission { position[]={26903.625,25.995604,24533.1}; azimut=131; - id=210; + id=214; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3453,7 +3525,7 @@ class Mission { position[]={26908.693,25.799734,24538.932}; azimut=131; - id=211; + id=215; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3462,7 +3534,7 @@ class Mission { position[]={26913.732,25.75485,24544.697}; azimut=131; - id=212; + id=216; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3471,7 +3543,7 @@ class Mission { position[]={26918.863,25.678379,24550.646}; azimut=131; - id=213; + id=217; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3480,7 +3552,7 @@ class Mission { position[]={26924.084,25.598967,24556.598}; azimut=131; - id=214; + id=218; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3489,7 +3561,7 @@ class Mission { position[]={26929.213,25.367577,24562.457}; azimut=131; - id=215; + id=219; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3498,7 +3570,7 @@ class Mission { position[]={26934.432,25.16185,24568.273}; azimut=131; - id=216; + id=220; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3507,7 +3579,7 @@ class Mission { position[]={26939.643,24.914995,24574.367}; azimut=131; - id=217; + id=221; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3516,7 +3588,7 @@ class Mission { position[]={26944.768,24.723801,24580.27}; azimut=131; - id=218; + id=222; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3525,7 +3597,7 @@ class Mission { position[]={26949.945,24.507494,24586.131}; azimut=131; - id=219; + id=223; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3534,7 +3606,7 @@ class Mission { position[]={26954.982,24.270988,24591.898}; azimut=131; - id=220; + id=224; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3543,7 +3615,7 @@ class Mission { position[]={26959.998,24.078382,24597.666}; azimut=131; - id=221; + id=225; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3552,7 +3624,7 @@ class Mission { position[]={26964.947,23.839434,24603.301}; azimut=131; - id=222; + id=226; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3561,7 +3633,7 @@ class Mission { position[]={26969.887,23.669096,24609.111}; azimut=129; - id=223; + id=227; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3570,7 +3642,7 @@ class Mission { position[]={26974.563,23.547907,24614.879}; azimut=129; - id=224; + id=228; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3579,7 +3651,7 @@ class Mission { position[]={26979.465,23.420652,24620.967}; azimut=129; - id=225; + id=229; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3588,7 +3660,7 @@ class Mission { position[]={26984.383,23.302431,24626.895}; azimut=130; - id=226; + id=230; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3597,7 +3669,7 @@ class Mission { position[]={26989.193,23.168716,24632.617}; azimut=130; - id=227; + id=231; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3606,7 +3678,7 @@ class Mission { position[]={26994.098,23.125713,24638.521}; azimut=130; - id=228; + id=232; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3615,7 +3687,7 @@ class Mission { position[]={26998.549,23.032211,24644.133}; azimut=131; - id=229; + id=233; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3624,7 +3696,7 @@ class Mission { position[]={27003.813,22.944569,24650.127}; azimut=131; - id=230; + id=234; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3633,7 +3705,7 @@ class Mission { position[]={27009.078,22.876373,24656.123}; azimut=131; - id=231; + id=235; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3642,7 +3714,7 @@ class Mission { position[]={27014.297,22.793158,24661.979}; azimut=131; - id=232; + id=236; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3651,7 +3723,7 @@ class Mission { position[]={27019.549,22.733606,24667.924}; azimut=131; - id=233; + id=237; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3660,7 +3732,7 @@ class Mission { position[]={27024.627,22.639164,24673.813}; azimut=131; - id=234; + id=238; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3669,7 +3741,7 @@ class Mission { position[]={27029.717,22.593636,24679.604}; azimut=131; - id=235; + id=239; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3678,7 +3750,7 @@ class Mission { position[]={27034.785,22.531475,24685.436}; azimut=131; - id=236; + id=240; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3687,7 +3759,7 @@ class Mission { position[]={27039.824,22.520269,24691.201}; azimut=131; - id=237; + id=241; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3696,7 +3768,7 @@ class Mission { position[]={27044.955,22.501562,24697.15}; azimut=131; - id=238; + id=242; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3705,7 +3777,7 @@ class Mission { position[]={27050.176,22.527058,24703.102}; azimut=131; - id=239; + id=243; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3714,7 +3786,7 @@ class Mission { position[]={27055.305,22.568148,24708.961}; azimut=131; - id=240; + id=244; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3723,7 +3795,7 @@ class Mission { position[]={27060.523,22.677519,24714.777}; azimut=131; - id=241; + id=245; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3732,7 +3804,7 @@ class Mission { position[]={27065.734,22.804249,24720.871}; azimut=131; - id=242; + id=246; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3741,7 +3813,7 @@ class Mission { position[]={27070.859,22.884298,24726.773}; azimut=131; - id=243; + id=247; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3750,7 +3822,7 @@ class Mission { position[]={27076.037,22.976995,24732.635}; azimut=131; - id=244; + id=248; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3759,7 +3831,7 @@ class Mission { position[]={27081.074,22.916277,24738.402}; azimut=131; - id=245; + id=249; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3768,7 +3840,7 @@ class Mission { position[]={27086.09,22.839939,24744.17}; azimut=131; - id=246; + id=250; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3777,7 +3849,7 @@ class Mission { position[]={27091.039,22.81329,24749.805}; azimut=131; - id=247; + id=251; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3786,7 +3858,7 @@ class Mission { position[]={27095.979,22.816433,24755.615}; azimut=129; - id=248; + id=252; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3795,7 +3867,7 @@ class Mission { position[]={27100.654,22.78149,24761.383}; azimut=129; - id=249; + id=253; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3804,7 +3876,7 @@ class Mission { position[]={27105.557,22.740541,24767.471}; azimut=129; - id=250; + id=254; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3813,7 +3885,7 @@ class Mission { position[]={27110.475,22.69191,24773.398}; azimut=130; - id=251; + id=255; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3822,7 +3894,7 @@ class Mission { position[]={27115.285,22.659792,24779.121}; azimut=130; - id=252; + id=256; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3831,7 +3903,7 @@ class Mission { position[]={27120.189,22.602074,24785.025}; azimut=130; - id=253; + id=257; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3840,7 +3912,7 @@ class Mission { position[]={27124.982,22.553291,24790.326}; azimut=131; - id=254; + id=258; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3849,7 +3921,7 @@ class Mission { position[]={27130.246,22.579947,24796.32}; azimut=131; - id=255; + id=259; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3858,7 +3930,7 @@ class Mission { position[]={27135.512,22.599806,24802.316}; azimut=131; - id=256; + id=260; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3867,7 +3939,7 @@ class Mission { position[]={27140.73,22.612692,24808.172}; azimut=131; - id=257; + id=261; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3876,7 +3948,7 @@ class Mission { position[]={27145.982,22.683754,24814.117}; azimut=131; - id=258; + id=262; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3885,7 +3957,7 @@ class Mission { position[]={27151.061,22.888737,24820.006}; azimut=131; - id=259; + id=263; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3894,7 +3966,7 @@ class Mission { position[]={27156.15,23.137646,24825.797}; azimut=131; - id=260; + id=264; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3903,7 +3975,7 @@ class Mission { position[]={27161.219,23.360374,24831.629}; azimut=131; - id=261; + id=265; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3912,7 +3984,7 @@ class Mission { position[]={27166.258,23.578741,24837.395}; azimut=131; - id=262; + id=266; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3921,7 +3993,7 @@ class Mission { position[]={27171.389,23.751812,24843.344}; azimut=131; - id=263; + id=267; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3930,7 +4002,7 @@ class Mission { position[]={27176.609,23.918591,24849.295}; azimut=131; - id=264; + id=268; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3939,7 +4011,7 @@ class Mission { position[]={27181.738,24.140285,24855.154}; azimut=131; - id=265; + id=269; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3948,7 +4020,7 @@ class Mission { position[]={27186.957,24.380737,24860.971}; azimut=131; - id=266; + id=270; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3957,7 +4029,7 @@ class Mission { position[]={27192.168,24.64662,24867.064}; azimut=131; - id=267; + id=271; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3966,7 +4038,7 @@ class Mission { position[]={27197.293,24.884598,24872.967}; azimut=131; - id=268; + id=272; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3975,7 +4047,7 @@ class Mission { position[]={27202.471,25.076929,24878.828}; azimut=131; - id=269; + id=273; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3984,7 +4056,7 @@ class Mission { position[]={27207.508,25.304981,24884.596}; azimut=131; - id=270; + id=274; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3993,7 +4065,7 @@ class Mission { position[]={27212.523,25.583986,24890.363}; azimut=131; - id=271; + id=275; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4002,7 +4074,7 @@ class Mission { position[]={27217.473,25.804237,24895.998}; azimut=131; - id=272; + id=276; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4011,7 +4083,7 @@ class Mission { position[]={27222.412,26.03685,24901.809}; azimut=129; - id=273; + id=277; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4020,7 +4092,7 @@ class Mission { position[]={27227.088,26.342924,24907.576}; azimut=129; - id=274; + id=278; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4029,7 +4101,7 @@ class Mission { position[]={27231.99,26.66184,24913.664}; azimut=129; - id=275; + id=279; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4038,7 +4110,7 @@ class Mission { position[]={27236.908,26.888828,24919.592}; azimut=130; - id=276; + id=280; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4047,7 +4119,7 @@ class Mission { position[]={26911.383,20.310577,24721.336}; azimut=131; - id=277; + id=281; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4056,7 +4128,7 @@ class Mission { position[]={26915.623,20.318466,24726.201}; azimut=131; - id=278; + id=282; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4065,7 +4137,7 @@ class Mission { position[]={26920.889,20.2661,24732.197}; azimut=131; - id=279; + id=283; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4074,7 +4146,7 @@ class Mission { position[]={26926.107,20.252979,24738.053}; azimut=131; - id=280; + id=284; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4083,7 +4155,7 @@ class Mission { position[]={26931.359,20.199335,24743.998}; azimut=131; - id=281; + id=285; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4092,7 +4164,7 @@ class Mission { position[]={26936.438,20.289927,24749.887}; azimut=131; - id=282; + id=286; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4101,7 +4173,7 @@ class Mission { position[]={26941.527,20.380867,24755.678}; azimut=131; - id=283; + id=287; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4110,7 +4182,7 @@ class Mission { position[]={26946.596,20.466448,24761.51}; azimut=131; - id=284; + id=288; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4119,7 +4191,7 @@ class Mission { position[]={26951.635,20.546368,24767.275}; azimut=131; - id=285; + id=289; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4128,7 +4200,7 @@ class Mission { position[]={26956.766,20.691349,24773.225}; azimut=131; - id=286; + id=290; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4137,7 +4209,7 @@ class Mission { position[]={26961.986,20.762905,24779.176}; azimut=131; - id=287; + id=291; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4146,7 +4218,7 @@ class Mission { position[]={26967.115,20.738791,24785.035}; azimut=131; - id=288; + id=292; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4155,7 +4227,7 @@ class Mission { position[]={26972.334,20.732651,24790.852}; azimut=131; - id=289; + id=293; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4164,7 +4236,7 @@ class Mission { position[]={26977.545,20.753572,24796.945}; azimut=131; - id=290; + id=294; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4173,7 +4245,7 @@ class Mission { position[]={26982.67,20.872278,24802.848}; azimut=131; - id=291; + id=295; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4182,7 +4254,7 @@ class Mission { position[]={26987.848,21.078085,24808.709}; azimut=131; - id=292; + id=296; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4191,7 +4263,7 @@ class Mission { position[]={26992.885,21.255266,24814.477}; azimut=131; - id=293; + id=297; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4200,7 +4272,7 @@ class Mission { position[]={26997.9,21.405054,24820.244}; azimut=131; - id=294; + id=298; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4209,7 +4281,7 @@ class Mission { position[]={27002.85,21.514683,24825.879}; azimut=131; - id=295; + id=299; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4218,7 +4290,7 @@ class Mission { position[]={27007.789,21.667664,24831.689}; azimut=129; - id=296; + id=300; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4227,7 +4299,7 @@ class Mission { position[]={27012.465,21.917414,24837.457}; azimut=129; - id=297; + id=301; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4236,7 +4308,7 @@ class Mission { position[]={27017.367,22.3155,24843.545}; azimut=129; - id=298; + id=302; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4245,7 +4317,7 @@ class Mission { position[]={27022.285,22.602488,24849.473}; azimut=130; - id=299; + id=303; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4254,7 +4326,7 @@ class Mission { position[]={27027.096,22.806007,24855.195}; azimut=130; - id=300; + id=304; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4263,7 +4335,7 @@ class Mission { position[]={27032,22.939093,24861.1}; azimut=130; - id=301; + id=305; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4272,7 +4344,7 @@ class Mission { position[]={27037.051,23.122993,24866.682}; azimut=131; - id=302; + id=306; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4281,7 +4353,7 @@ class Mission { position[]={27042.486,23.302736,24872.678}; azimut=131; - id=303; + id=307; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4290,7 +4362,7 @@ class Mission { position[]={27047.82,23.371313,24878.596}; azimut=131; - id=304; + id=308; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4299,7 +4371,7 @@ class Mission { position[]={27053.211,23.42511,24884.451}; azimut=131; - id=305; + id=309; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4308,7 +4380,7 @@ class Mission { position[]={27058.461,23.537548,24890.225}; azimut=131; - id=306; + id=310; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4317,7 +4389,7 @@ class Mission { position[]={27063.656,23.660736,24896.055}; azimut=131; - id=307; + id=311; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4326,7 +4398,7 @@ class Mission { position[]={27068.918,23.764055,24901.557}; azimut=131; - id=308; + id=312; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4335,7 +4407,7 @@ class Mission { position[]={27073.986,23.903282,24907.389}; azimut=131; - id=309; + id=313; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4344,7 +4416,7 @@ class Mission { position[]={27079.025,24.034636,24913.154}; azimut=131; - id=310; + id=314; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4353,7 +4425,7 @@ class Mission { position[]={27084.156,24.206724,24919.104}; azimut=131; - id=311; + id=315; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4362,7 +4434,7 @@ class Mission { position[]={27089.377,24.361795,24925.055}; azimut=131; - id=312; + id=316; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4371,7 +4443,7 @@ class Mission { position[]={27094.506,24.547764,24930.914}; azimut=131; - id=313; + id=317; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4380,7 +4452,7 @@ class Mission { position[]={27099.725,24.670773,24936.73}; azimut=131; - id=314; + id=318; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4389,7 +4461,7 @@ class Mission { position[]={27104.936,24.744146,24942.824}; azimut=131; - id=315; + id=319; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4398,7 +4470,7 @@ class Mission { position[]={27110.061,24.759069,24948.727}; azimut=131; - id=316; + id=320; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4407,7 +4479,7 @@ class Mission { position[]={27115.238,24.754801,24954.588}; azimut=131; - id=317; + id=321; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4416,7 +4488,7 @@ class Mission { position[]={27120.275,24.743135,24960.355}; azimut=131; - id=318; + id=322; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4425,7 +4497,7 @@ class Mission { position[]={27125.291,24.611444,24966.123}; azimut=131; - id=319; + id=323; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4434,7 +4506,7 @@ class Mission { position[]={27130.24,24.477238,24971.758}; azimut=131; - id=320; + id=324; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4443,7 +4515,7 @@ class Mission { position[]={27135.18,24.425842,24977.568}; azimut=129; - id=321; + id=325; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4452,7 +4524,7 @@ class Mission { position[]={27139.855,24.455009,24983.336}; azimut=129; - id=322; + id=326; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4461,7 +4533,7 @@ class Mission { position[]={27144.758,24.476776,24989.424}; azimut=129; - id=323; + id=327; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4470,7 +4542,7 @@ class Mission { position[]={27149.676,24.446703,24995.352}; azimut=130; - id=324; + id=328; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4479,7 +4551,7 @@ class Mission { position[]={27154.486,24.357185,25001.074}; azimut=130; - id=325; + id=329; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4488,7 +4560,7 @@ class Mission { position[]={27158.758,24.122019,25006.242}; azimut=130; - id=326; + id=330; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4497,7 +4569,7 @@ class Mission { position[]={26757.533,18.530378,24702.711}; azimut=40; - id=327; + id=331; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4506,7 +4578,7 @@ class Mission { position[]={26762.852,19.016323,24698.256}; azimut=40; - id=328; + id=332; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4515,7 +4587,7 @@ class Mission { position[]={26771.318,18.572186,24703.777}; azimut=130; - id=329; + id=333; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4524,7 +4596,7 @@ class Mission { position[]={26776.537,18.482143,24705.404}; azimut=40; - id=330; + id=334; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4533,7 +4605,7 @@ class Mission { position[]={26782.381,18.893139,24700.438}; azimut=40; - id=331; + id=335; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4542,7 +4614,7 @@ class Mission { position[]={26788.217,19.338865,24695.418}; azimut=40; - id=332; + id=336; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4551,7 +4623,7 @@ class Mission { position[]={26793.797,19.604189,24690.607}; azimut=40; - id=333; + id=337; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4560,7 +4632,7 @@ class Mission { position[]={26799.631,19.851816,24685.691}; azimut=40; - id=334; + id=338; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4569,7 +4641,7 @@ class Mission { position[]={26805.871,20.243877,24680.418}; azimut=40; - id=335; + id=339; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4578,7 +4650,7 @@ class Mission { position[]={26811.805,20.58449,24679.453}; azimut=338; - id=336; + id=340; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4587,7 +4659,7 @@ class Mission { position[]={26817.385,20.728291,24681.738}; azimut=338; - id=337; + id=341; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4596,7 +4668,7 @@ class Mission { position[]={26824.863,20.753666,24684.656}; azimut=338; - id=338; + id=342; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4605,7 +4677,7 @@ class Mission { position[]={26832.178,20.828703,24687.523}; azimut=338; - id=339; + id=343; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4614,7 +4686,7 @@ class Mission { position[]={26839.596,20.889597,24690.496}; azimut=338; - id=340; + id=344; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4623,7 +4695,7 @@ class Mission { position[]={26846.814,20.885517,24693.463}; azimut=338; - id=341; + id=345; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4632,7 +4704,7 @@ class Mission { position[]={26854.287,20.995777,24696.484}; azimut=338; - id=342; + id=346; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4641,7 +4713,7 @@ class Mission { position[]={26861.504,20.972878,24699.352}; azimut=338; - id=343; + id=347; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4650,7 +4722,7 @@ class Mission { position[]={26868.822,20.862839,24702.271}; azimut=338; - id=344; + id=348; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4659,7 +4731,7 @@ class Mission { position[]={26875.896,20.877035,24705.063}; azimut=338; - id=345; + id=349; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4668,7 +4740,7 @@ class Mission { position[]={26883.061,20.712994,24707.932}; azimut=338; - id=346; + id=350; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4677,7 +4749,7 @@ class Mission { position[]={26889.92,20.676723,24710.799}; azimut=338; - id=347; + id=351; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4686,7 +4758,7 @@ class Mission { position[]={26897.137,20.607569,24713.82}; azimut=338; - id=348; + id=352; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4695,7 +4767,7 @@ class Mission { position[]={26904.762,20.454643,24716.941}; azimut=338; - id=349; + id=353; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4704,7 +4776,7 @@ class Mission { position[]={27236.834,27.019085,24924.313}; azimut=48; - id=350; + id=354; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4713,7 +4785,7 @@ class Mission { position[]={27231.756,26.981491,24929.971}; azimut=48; - id=351; + id=355; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4722,7 +4794,7 @@ class Mission { position[]={27226.738,26.676661,24935.514}; azimut=48; - id=352; + id=356; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4731,7 +4803,7 @@ class Mission { position[]={27221.484,26.215664,24941.33}; azimut=48; - id=353; + id=357; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4740,7 +4812,7 @@ class Mission { position[]={27216.227,25.762321,24947.223}; azimut=48; - id=354; + id=358; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4749,7 +4821,7 @@ class Mission { position[]={27210.969,25.543297,24953.113}; azimut=48; - id=355; + id=359; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4758,7 +4830,7 @@ class Mission { position[]={27205.715,25.418421,24959.002}; azimut=48; - id=356; + id=360; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4767,7 +4839,7 @@ class Mission { position[]={27200.354,25.260889,24964.684}; azimut=48; - id=357; + id=361; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4776,7 +4848,7 @@ class Mission { position[]={27195.1,25.11409,24970.471}; azimut=48; - id=358; + id=362; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4785,7 +4857,7 @@ class Mission { position[]={27189.732,25.052525,24976.254}; azimut=48; - id=359; + id=363; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4794,7 +4866,7 @@ class Mission { position[]={27184.371,25.0184,24981.936}; azimut=48; - id=360; + id=364; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4803,7 +4875,7 @@ class Mission { position[]={27179.115,24.908602,24987.721}; azimut=48; - id=361; + id=365; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4812,7 +4884,7 @@ class Mission { position[]={27174.172,24.756964,24993.191}; azimut=48; - id=362; + id=366; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4821,7 +4893,7 @@ class Mission { position[]={27168.918,24.538374,24998.975}; azimut=48; - id=363; + id=367; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4830,7 +4902,7 @@ class Mission { position[]={27163.973,24.258104,25004.762}; azimut=48; - id=364; + id=368; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4839,7 +4911,7 @@ class Mission { position[]={26754.9,23.227198,24534.602}; azimut=130; - id=365; + id=369; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4848,7 +4920,7 @@ class Mission { position[]={26749.832,23.254463,24528.609}; azimut=130; - id=366; + id=370; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4857,7 +4929,7 @@ class Mission { position[]={26745.006,23.238129,24522.902}; azimut=130; - id=367; + id=371; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4866,7 +4938,7 @@ class Mission { position[]={26740.191,23.177996,24517.176}; azimut=130; - id=368; + id=372; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4875,7 +4947,7 @@ class Mission { position[]={26735.377,23.067152,24511.578}; azimut=130; - id=369; + id=373; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4884,7 +4956,7 @@ class Mission { position[]={26730.434,22.905687,24505.588}; azimut=130; - id=370; + id=374; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4893,7 +4965,7 @@ class Mission { position[]={26725.424,22.724735,24499.6}; azimut=130; - id=371; + id=375; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4902,7 +4974,7 @@ class Mission { position[]={26721.242,22.527798,24499.324}; azimut=40; - id=372; + id=376; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4911,7 +4983,7 @@ class Mission { position[]={26715.25,22.295599,24504.318}; azimut=40; - id=373; + id=377; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4920,7 +4992,7 @@ class Mission { position[]={26709.313,22.097647,24509.381}; azimut=40; - id=374; + id=378; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4929,7 +5001,7 @@ class Mission { position[]={26703.49,21.973309,24514.27}; azimut=40; - id=375; + id=379; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4938,7 +5010,7 @@ class Mission { position[]={26697.258,21.843426,24519.334}; azimut=40; - id=376; + id=380; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4947,7 +5019,7 @@ class Mission { position[]={26691.607,21.693287,24524.18}; azimut=40; - id=377; + id=381; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4956,7 +5028,7 @@ class Mission { position[]={26685.559,21.438457,24529.221}; azimut=40; - id=378; + id=382; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4965,7 +5037,7 @@ class Mission { position[]={26705.652,21.965303,24553.713}; azimut=40; - id=379; + id=383; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4974,7 +5046,7 @@ class Mission { position[]={26701.887,21.82918,24556.938}; azimut=40; - id=380; + id=384; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4983,7 +5055,7 @@ class Mission { position[]={26687.59,21.212294,24568.975}; azimut=40; - id=381; + id=385; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4992,7 +5064,7 @@ class Mission { position[]={26681.484,20.9252,24574.252}; azimut=40; - id=382; + id=386; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5001,7 +5073,7 @@ class Mission { position[]={26639.057,19.024429,24575.133}; azimut=130; - id=383; + id=387; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5010,7 +5082,7 @@ class Mission { position[]={26679.477,21.104219,24534.299}; azimut=40; - id=384; + id=388; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5019,7 +5091,7 @@ class Mission { position[]={26673.488,20.820801,24539.369}; azimut=40; - id=385; + id=389; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5028,7 +5100,7 @@ class Mission { position[]={26667.5,20.579432,24544.41}; azimut=40; - id=386; + id=390; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5037,7 +5109,7 @@ class Mission { position[]={26661.461,20.358904,24549.451}; azimut=40; - id=387; + id=391; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5046,7 +5118,7 @@ class Mission { position[]={26643.219,19.401995,24564.986}; azimut=40; - id=388; + id=392; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5055,7 +5127,7 @@ class Mission { position[]={26751.969,22.6106,24555.09}; azimut=105; - id=389; + id=393; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5064,7 +5136,7 @@ class Mission { position[]={26754.104,22.38545,24562.676}; azimut=105; - id=390; + id=394; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5073,7 +5145,7 @@ class Mission { position[]={26739.623,22.052719,24567.219}; azimut=105; - id=391; + id=395; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5082,7 +5154,7 @@ class Mission { position[]={26756.102,22.201479,24569.941}; azimut=105; - id=392; + id=396; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5091,7 +5163,7 @@ class Mission { position[]={26758.252,22.104448,24577.791}; azimut=105; - id=393; + id=397; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5100,7 +5172,7 @@ class Mission { position[]={26760.438,22.185312,24585.545}; azimut=105; - id=394; + id=398; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5109,7 +5181,7 @@ class Mission { position[]={26762.621,22.143852,24593.322}; azimut=105; - id=395; + id=399; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5118,7 +5190,7 @@ class Mission { position[]={26764.924,22.071524,24601.098}; azimut=105; - id=396; + id=400; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5127,7 +5199,7 @@ class Mission { position[]={26767.111,21.964348,24608.816}; azimut=105; - id=397; + id=401; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5136,7 +5208,7 @@ class Mission { position[]={26769.354,21.840157,24616.746}; azimut=105; - id=398; + id=402; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5145,7 +5217,7 @@ class Mission { position[]={26729.139,21.387865,24576.461}; azimut=130; - id=399; + id=403; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5154,7 +5226,7 @@ class Mission { position[]={26715.51,21.856211,24565.287}; azimut=40; - id=400; + id=404; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5163,7 +5235,7 @@ class Mission { position[]={26709.508,21.61656,24570.08}; azimut=40; - id=401; + id=405; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5172,7 +5244,7 @@ class Mission { position[]={26703.508,21.350954,24575.16}; azimut=40; - id=402; + id=406; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5181,7 +5253,7 @@ class Mission { position[]={26697.506,21.08437,24580.242}; azimut=40; - id=403; + id=407; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5190,7 +5262,7 @@ class Mission { position[]={26691.213,20.808163,24585.264}; azimut=40; - id=404; + id=408; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5199,7 +5271,7 @@ class Mission { position[]={26684.996,20.510431,24590.541}; azimut=40; - id=405; + id=409; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5208,7 +5280,7 @@ class Mission { position[]={26657.887,19.523048,24597.545}; azimut=130; - id=406; + id=410; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5217,7 +5289,7 @@ class Mission { position[]={26662.793,19.484375,24603.26}; azimut=130; - id=407; + id=411; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5226,7 +5298,7 @@ class Mission { position[]={26729.83,22.285027,24556.725}; azimut=40; - id=408; + id=412; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5235,7 +5307,7 @@ class Mission { position[]={26643.846,19.219412,24580.906}; azimut=130; - id=409; + id=413; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5244,7 +5316,7 @@ class Mission { position[]={26648.537,19.384808,24586.389}; azimut=130; - id=410; + id=414; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5253,7 +5325,7 @@ class Mission { position[]={26652.809,19.476467,24591.482}; azimut=130; - id=411; + id=415; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5262,7 +5334,7 @@ class Mission { position[]={26666.477,19.396427,24607.73}; azimut=130; - id=412; + id=416; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5271,7 +5343,7 @@ class Mission { position[]={26672.672,20.409813,24585.066}; azimut=130; - id=413; + id=417; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5280,7 +5352,7 @@ class Mission { position[]={26677.816,20.350107,24591.236}; azimut=130; - id=414; + id=418; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5289,7 +5361,7 @@ class Mission { position[]={26705.396,22.029596,24548.328}; azimut=130; - id=415; + id=419; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5298,7 +5370,7 @@ class Mission { position[]={26693.109,21.751245,24526.834}; azimut=130; - id=416; + id=420; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5307,7 +5379,7 @@ class Mission { position[]={26741.707,21.77603,24574.705}; azimut=105; - id=417; + id=421; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5316,7 +5388,7 @@ class Mission { position[]={26743.793,21.416069,24582.387}; azimut=105; - id=418; + id=422; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5325,7 +5397,7 @@ class Mission { position[]={26745.875,21.105661,24589.941}; azimut=105; - id=419; + id=423; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5334,7 +5406,7 @@ class Mission { position[]={26747.893,20.971319,24597.361}; azimut=105; - id=420; + id=424; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5343,7 +5415,7 @@ class Mission { position[]={26749.713,20.990934,24604.131}; azimut=105; - id=421; + id=425; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5352,7 +5424,7 @@ class Mission { position[]={26751.602,20.856359,24611.158}; azimut=105; - id=422; + id=426; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5361,7 +5433,7 @@ class Mission { position[]={26753.203,20.788649,24617.879}; azimut=105; - id=423; + id=427; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5370,7 +5442,7 @@ class Mission { position[]={26768.191,21.634184,24622.971}; azimut=40; - id=424; + id=428; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5379,7 +5451,7 @@ class Mission { position[]={26762.109,20.982016,24628.1}; azimut=40; - id=425; + id=429; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5388,7 +5460,7 @@ class Mission { position[]={26755.986,20.626633,24633.232}; azimut=40; - id=426; + id=430; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5397,7 +5469,7 @@ class Mission { position[]={26749.898,20.552198,24638.41}; azimut=40; - id=427; + id=431; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5406,7 +5478,7 @@ class Mission { position[]={26743.59,20.627979,24643.678}; azimut=40; - id=428; + id=432; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5415,7 +5487,7 @@ class Mission { position[]={26737.557,20.714441,24648.766}; azimut=40; - id=429; + id=433; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5424,7 +5496,7 @@ class Mission { position[]={26731.334,20.546713,24653.855}; azimut=40; - id=430; + id=434; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5433,7 +5505,7 @@ class Mission { position[]={26688.305,18.880514,24644.002}; azimut=40; - id=431; + id=435; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5442,7 +5514,7 @@ class Mission { position[]={26694.75,19.420786,24638.598}; azimut=40; - id=432; + id=436; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5451,7 +5523,7 @@ class Mission { position[]={26701.205,19.764318,24633.238}; azimut=40; - id=433; + id=437; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5460,7 +5532,7 @@ class Mission { position[]={26751.383,20.589741,24623.412}; azimut=40; - id=434; + id=438; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5469,7 +5541,7 @@ class Mission { position[]={26745.271,20.481247,24628.633}; azimut=40; - id=435; + id=439; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5478,7 +5550,7 @@ class Mission { position[]={26739.09,20.556242,24633.705}; azimut=40; - id=436; + id=440; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5487,7 +5559,7 @@ class Mission { position[]={26709.453,19.765211,24626.348}; azimut=40; - id=437; + id=441; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5496,25 +5568,25 @@ class Mission { position[]={26715.131,19.836035,24621.459}; azimut=40; - id=438; + id=442; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item357 { - position[]={26737.844,20.618467,24598.479}; + position[]={26737.615,20.611807,24598.479}; azimut=105; - id=439; + id=443; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; class Item358 { - position[]={26737.436,20.643652,24596.57}; + position[]={26735.711,20.738367,24591.393}; azimut=105; - id=440; + id=444; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5523,7 +5595,7 @@ class Mission { position[]={26736.076,20.535934,24603.951}; azimut=40; - id=441; + id=445; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5532,7 +5604,7 @@ class Mission { position[]={26731.945,20.52726,24603.467}; azimut=130; - id=442; + id=446; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5541,7 +5613,7 @@ class Mission { position[]={26726.82,20.576736,24597.291}; azimut=130; - id=443; + id=447; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5550,7 +5622,7 @@ class Mission { position[]={26721.689,20.650381,24591.301}; azimut=130; - id=444; + id=448; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5559,7 +5631,7 @@ class Mission { position[]={26719.191,20.72835,24588.303}; azimut=130; - id=445; + id=449; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5568,7 +5640,7 @@ class Mission { position[]={26716.107,20.093296,24616.869}; azimut=130; - id=446; + id=450; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5577,7 +5649,7 @@ class Mission { position[]={26711.385,20.183964,24611.238}; azimut=130; - id=447; + id=451; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5586,7 +5658,7 @@ class Mission { position[]={26706.348,20.141411,24605.154}; azimut=130; - id=448; + id=452; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5595,7 +5667,7 @@ class Mission { position[]={26701.492,20.190041,24599.432}; azimut=130; - id=449; + id=453; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5604,7 +5676,7 @@ class Mission { position[]={26774.969,19.319693,24689.727}; azimut=220; - id=450; + id=454; side="EMPTY"; vehicle="Land_Medevac_HQ_V1_F"; skill=0.60000002; @@ -5614,2073 +5686,2064 @@ class Mission }; class Item369 { - position[]={26724.889,19.836895,24640.998}; + position[]={26722.211,19.779617,24637.773}; azimut=40; offsetY=-0.41000399; - id=451; + id=455; side="EMPTY"; vehicle="BlockConcrete_F"; skill=0.60000002; }; class Item370 { - position[]={26721.717,19.78294,24637.072}; + position[]={26719.039,19.809465,24633.848}; azimut=40; offsetY=-0.41000399; - id=452; + id=456; side="EMPTY"; vehicle="BlockConcrete_F"; skill=0.60000002; }; class Item371 { - position[]={26718.484,19.807188,24633.146}; + position[]={26715.807,19.781178,24629.922}; azimut=40; offsetY=-0.41000399; - id=453; + id=457; side="EMPTY"; vehicle="BlockConcrete_F"; skill=0.60000002; }; class Item372 { - position[]={26717.803,19.801836,24646.971}; + position[]={26715.125,19.770168,24643.746}; azimut=40; offsetY=-0.41000399; - id=454; + id=458; side="EMPTY"; vehicle="BlockConcrete_F"; skill=0.60000002; }; class Item373 { - position[]={26714.631,19.77,24643.045}; + position[]={26711.953,19.77,24639.82}; azimut=40; offsetY=-0.41000399; - id=455; + id=459; side="EMPTY"; vehicle="BlockConcrete_F"; skill=0.60000002; }; class Item374 { - position[]={26711.398,19.77,24639.119}; + position[]={26708.721,19.769491,24635.895}; azimut=40; offsetY=-0.41000399; - id=456; + id=460; side="EMPTY"; vehicle="BlockConcrete_F"; skill=0.60000002; }; class Item375 { - position[]={26731.541,20.058329,24634.828}; + position[]={26728.863,20.086231,24631.604}; azimut=130; offsetY=0.2; - id=457; + id=461; side="EMPTY"; vehicle="Land_RampConcrete_F"; skill=0.60000002; }; class Item376 - { - position[]={26708.629,20.649017,24592.92}; - azimut=40; - id=458; - side="EMPTY"; - vehicle="Land_Radar_Small_F"; - skill=0.60000002; - }; - class Item377 { position[]={26689.299,19.729982,24609.551}; azimut=220; - id=459; + id=462; side="EMPTY"; vehicle="Target_F"; skill=0.60000002; }; - class Item378 + class Item377 { position[]={26688.359,19.699425,24610.385}; azimut=220; - id=460; + id=463; side="EMPTY"; vehicle="Target_F"; skill=0.60000002; }; - class Item379 + class Item378 { position[]={26687.389,19.672573,24611.092}; azimut=220; - id=461; + id=464; side="EMPTY"; vehicle="Target_F"; skill=0.60000002; }; - class Item380 + class Item379 { position[]={26686.451,19.643372,24611.881}; azimut=220; - id=462; + id=465; side="EMPTY"; vehicle="Target_F"; skill=0.60000002; }; - class Item381 + class Item380 { position[]={26688.523,19.690983,24610.688}; azimut=220; - id=463; + id=466; side="EMPTY"; vehicle="Target_F"; skill=0.60000002; }; - class Item382 + class Item381 { position[]={26687.586,19.661835,24611.477}; azimut=220; - id=464; + id=467; side="EMPTY"; vehicle="Target_F"; skill=0.60000002; }; - class Item383 + class Item382 { position[]={26686.799,19.635906,24612.184}; azimut=220; - id=465; + id=468; side="EMPTY"; vehicle="Target_F"; skill=0.60000002; }; - class Item384 + class Item383 { position[]={26685.861,19.606705,24612.973}; azimut=220; - id=466; + id=469; side="EMPTY"; vehicle="Target_F"; skill=0.60000002; }; - class Item385 + class Item384 { position[]={26685.262,19.690941,24610.123}; azimut=220; - id=467; + id=470; side="EMPTY"; vehicle="Land_CncWall4_F"; skill=0.60000002; }; - class Item386 + class Item385 { position[]={26689.168,19.805126,24606.854}; azimut=220; - id=468; + id=471; side="EMPTY"; vehicle="Land_CncWall4_F"; skill=0.60000002; }; - class Item387 + class Item386 { position[]={26699.342,19.73967,24627.666}; azimut=220; - id=469; + id=472; side="EMPTY"; vehicle="Land_BagFence_Long_F"; skill=0.60000002; }; - class Item388 + class Item387 { position[]={26699.922,19.750288,24628.352}; azimut=130; - id=470; + id=473; side="EMPTY"; vehicle="Land_BagFence_Short_F"; skill=0.60000002; }; - class Item389 + class Item388 { position[]={26705.822,19.760725,24630.543}; azimut=220; offsetY=2; - id=471; + id=474; side="EMPTY"; vehicle="Land_Billboard_F"; skill=0.60000002; init="this setObjectTexture [0,""Data\range.jpg""];"; }; - class Item390 + class Item389 { position[]={26733.902,20.970509,24584.654}; azimut=105; - id=472; + id=475; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item391 + class Item390 { position[]={26730.316,21.315418,24577.793}; azimut=130; - id=473; + id=476; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item392 + class Item391 { position[]={26728.279,21.849081,24569.846}; azimut=40; - id=474; + id=477; side="EMPTY"; vehicle="Land_HBarrier_1_F"; skill=0.60000002; }; - class Item393 + class Item392 { position[]={26730.23,21.922422,24568.209}; azimut=40; - id=475; + id=478; side="EMPTY"; vehicle="Land_HBarrier_1_F"; skill=0.60000002; }; - class Item394 + class Item393 { position[]={26721.561,22.028906,24561.854}; azimut=40; - id=476; + id=479; side="EMPTY"; vehicle="Land_HBarrier_1_F"; skill=0.60000002; }; - class Item395 + class Item394 { position[]={26724.102,22.110918,24560.127}; azimut=40; - id=477; + id=480; side="EMPTY"; vehicle="Land_HBarrier_1_F"; skill=0.60000002; }; - class Item396 + class Item395 { position[]={26723.801,22.240976,24555.557}; azimut=130; - id=478; + id=481; side="EMPTY"; vehicle="Land_BagFence_Long_F"; skill=0.60000002; }; - class Item397 + class Item396 { position[]={26720.705,22.287214,24551.543}; azimut=130; - id=479; + id=482; side="EMPTY"; vehicle="Land_BagFence_Long_F"; skill=0.60000002; }; - class Item398 + class Item397 { position[]={26717.49,22.295473,24547.91}; azimut=130; - id=480; + id=483; side="EMPTY"; vehicle="Land_BagFence_Long_F"; skill=0.60000002; }; - class Item399 + class Item398 { position[]={26711.395,22.260801,24540.74}; azimut=130; - id=481; + id=484; side="EMPTY"; vehicle="Land_BagFence_Long_F"; skill=0.60000002; }; - class Item400 + class Item399 { position[]={26714.371,22.28384,24544.277}; azimut=130; - id=482; + id=485; side="EMPTY"; vehicle="Land_BagFence_Long_F"; skill=0.60000002; }; - class Item401 + class Item400 { position[]={26705.451,22.090223,24542.871}; azimut=40; - id=483; + id=486; side="EMPTY"; vehicle="Land_BagFence_Short_F"; skill=0.60000002; }; - class Item402 + class Item401 { position[]={26708.174,22.179245,24540.736}; azimut=40; - id=484; + id=487; side="EMPTY"; vehicle="Land_BagFence_Short_F"; skill=0.60000002; }; - class Item403 + class Item402 { position[]={26720.295,20.300781,24614.643}; azimut=40; - id=485; + id=488; side="EMPTY"; vehicle="Land_CargoBox_V1_F"; skill=0.60000002; text="arsenal1"; init="this allowDamage false; this enableSimulation false;"; }; - class Item404 + class Item403 { position[]={26724.336,20.422735,24611.102}; azimut=40; - id=486; + id=489; side="EMPTY"; vehicle="Land_CargoBox_V1_F"; skill=0.60000002; text="arsenal2"; init="this allowDamage false; this enableSimulation false;"; }; - class Item405 + class Item404 { position[]={26728.24,20.482685,24607.891}; azimut=40; - id=487; + id=490; side="EMPTY"; vehicle="Land_CargoBox_V1_F"; skill=0.60000002; text="arsenal3"; init="this allowDamage false; this enableSimulation false;"; }; - class Item406 + class Item405 { position[]={26711.18,22.0415,24555.324}; azimut=130; - id=488; + id=491; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item407 + class Item406 { position[]={26715.658,21.985126,24561.012}; azimut=130; - id=489; + id=492; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item408 + class Item407 { position[]={26635.701,17.184708,24634.008}; azimut=130; - id=490; + id=493; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item409 + class Item408 { position[]={26644.895,17.18264,24644.811}; azimut=130; - id=491; + id=494; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item410 + class Item409 { position[]={26630.865,17.066372,24627.996}; azimut=130; - id=492; + id=495; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item411 + class Item410 { position[]={26625.508,17.049635,24621.688}; azimut=130; - id=493; + id=496; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item412 + class Item411 { position[]={26649.494,17.030989,24650.234}; azimut=130; - id=494; + id=497; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item413 + class Item412 { position[]={26621.303,16.868399,24621.418}; azimut=40; - id=495; + id=498; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item414 + class Item413 { position[]={26615.266,16.395088,24626.688}; azimut=40; - id=496; + id=499; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item415 + class Item414 { position[]={26609.273,15.972892,24631.91}; azimut=40; - id=497; + id=500; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item416 + class Item415 { position[]={26603.371,15.399126,24637.041}; azimut=40; - id=498; + id=501; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item417 + class Item416 { position[]={26603.129,15.072895,24641.246}; azimut=130; - id=499; + id=502; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item418 + class Item417 { position[]={26607.986,15.285261,24646.969}; azimut=130; - id=500; + id=503; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item419 + class Item418 { position[]={26609.777,15.251042,24649.406}; azimut=130; - id=501; + id=504; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item420 + class Item419 { position[]={26604.346,14.725122,24661.525}; azimut=130; - id=502; + id=505; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item421 + class Item420 { position[]={26640.527,15.845091,24671.23}; azimut=130; - id=503; + id=506; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item422 + class Item421 { position[]={26664.287,18.616407,24624.213}; azimut=40; - id=504; + id=507; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item423 + class Item422 { position[]={26658.387,18.233953,24629.162}; azimut=40; - id=505; + id=508; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item424 + class Item423 { position[]={26652.305,17.769665,24634.156}; azimut=40; - id=506; + id=509; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item425 + class Item424 { position[]={26646.402,17.444954,24639.197}; azimut=40; - id=507; + id=510; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item426 + class Item425 { position[]={26641.637,17.471817,24633.43}; azimut=40; - id=508; + id=511; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item427 + class Item426 { position[]={26647.809,17.856424,24628.164}; azimut=40; - id=509; + id=512; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item428 + class Item427 { position[]={26653.756,18.302242,24623.125}; azimut=40; - id=510; + id=513; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item429 + class Item428 { position[]={26659.793,18.745361,24617.99}; azimut=40; - id=511; + id=514; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item430 + class Item429 { position[]={26665.965,19.148048,24612.949}; azimut=40; - id=512; + id=515; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item431 + class Item430 { position[]={26655.859,16.85203,24666.896}; azimut=40; - id=513; + id=516; side="EMPTY"; vehicle="Land_Cargo20_brick_red_F"; skill=0.60000002; init="this allowDamage false; this enableSimulation false;"; }; - class Item432 + class Item431 { position[]={26654.176,16.718538,24668.332}; azimut=40; offsetY=2.5999999; - id=514; + id=517; side="EMPTY"; vehicle="Land_Cargo20_cyan_F"; skill=0.60000002; init="this allowDamage false; this enableSimulation false;"; }; - class Item433 + class Item432 { position[]={26651.035,16.35528,24670.83}; azimut=40; - id=515; + id=518; side="EMPTY"; vehicle="Land_Cargo20_military_green_F"; skill=0.60000002; init="this allowDamage false; this enableSimulation false;"; }; - class Item434 + class Item433 { position[]={26648.371,15.976167,24673.711}; azimut=40; - id=516; + id=519; side="EMPTY"; vehicle="Land_CargoBox_V1_F"; skill=0.60000002; init="this allowDamage false; this enableSimulation false;"; }; - class Item435 + class Item434 { position[]={26647.416,16.050579,24672.484}; azimut=40; - id=517; + id=520; side="EMPTY"; vehicle="Land_CargoBox_V1_F"; skill=0.60000002; init="this allowDamage false; this enableSimulation false;"; }; - class Item436 + class Item435 { position[]={26647.635,15.849356,24674.744}; azimut=40; - id=518; + id=521; side="EMPTY"; vehicle="Flag_NATO_F"; skill=0.60000002; text="depotFlag"; init="this allowDamage false; this enableSimulation false;"; }; - class Item437 + class Item436 { position[]={26617.756,16.159132,24635.441}; azimut=130; - id=519; + id=522; side="EMPTY"; vehicle="B_Truck_01_ammo_F"; skill=0.60000002; init="this allowDamage false; this enableSimulation false;"; }; - class Item438 + class Item437 { position[]={26632.08,17.02359,24633.594}; - id=520; + id=523; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; }; - class Item439 + class Item438 { position[]={26629.631,16.896288,24633.594}; - id=521; + id=524; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; }; - class Item440 + class Item439 { position[]={26627.088,16.76556,24633.549}; - id=522; + id=525; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; }; - class Item441 + class Item440 { position[]={26624.637,16.635166,24633.549}; - id=523; + id=526; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; }; - class Item442 + class Item441 { position[]={26622.459,16.476292,24634.363}; azimut=40; - id=524; + id=527; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; }; - class Item443 + class Item442 { position[]={26620.508,16.30262,24635.996}; azimut=40; - id=525; + id=528; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; }; - class Item444 + class Item443 { position[]={26618.465,16.123018,24637.633}; azimut=40; - id=526; + id=529; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; }; - class Item445 + class Item444 { position[]={26616.467,15.960167,24639.223}; azimut=40; - id=527; + id=530; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; }; - class Item446 + class Item445 { position[]={26615.309,15.837539,24641.145}; azimut=80; - id=528; + id=531; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; }; - class Item447 + class Item446 { position[]={26614.852,15.725796,24643.598}; azimut=80; - id=529; + id=532; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; }; - class Item448 + class Item447 { position[]={26614.4,15.610186,24645.959}; azimut=80; - id=530; + id=533; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; }; - class Item449 + class Item448 { position[]={26613.99,15.484892,24648.324}; azimut=80; - id=531; + id=534; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; }; - class Item450 + class Item449 { position[]={26613.67,15.395671,24650.229}; azimut=80; - id=532; + id=535; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; }; - class Item451 + class Item450 { position[]={26624.285,16.648668,24632.551}; - id=533; + id=536; side="EMPTY"; vehicle="Land_CargoBox_V1_F"; skill=0.60000002; init="this allowDamage false; this enableSimulation false;"; }; - class Item452 + class Item451 { position[]={26625.738,16.717413,24632.914}; - id=534; + id=537; side="EMPTY"; vehicle="Land_MetalBarrel_F"; skill=0.60000002; init="this allowDamage false; this enableSimulation false;"; }; - class Item453 + class Item452 { position[]={26625.557,16.742519,24631.918}; - id=535; + id=538; side="EMPTY"; vehicle="Land_MetalBarrel_F"; skill=0.60000002; init="this allowDamage false; this enableSimulation false;"; }; - class Item454 + class Item453 { position[]={26626.646,16.780445,24632.457}; - id=536; + id=539; side="EMPTY"; vehicle="Land_MetalBarrel_F"; skill=0.60000002; init="this allowDamage false; this enableSimulation false;"; }; - class Item455 + class Item454 { position[]={26614.215,15.792243,24641.068}; azimut=80; - id=537; + id=540; side="EMPTY"; vehicle="Box_NATO_AmmoVeh_F"; skill=0.60000002; init="this allowDamage false; this enableSimulation false;"; }; - class Item456 + class Item455 { position[]={26850.582,26.676523,24464.668}; azimut=-50; - id=538; + id=541; side="EMPTY"; vehicle="Land_BarGate_F"; skill=0.60000002; text="gate"; init="this allowDamage false;"; }; - class Item457 + class Item456 { position[]={26701.432,19.745771,24625.896}; azimut=220; - id=539; + id=542; side="EMPTY"; vehicle="Land_BagFence_Long_F"; skill=0.60000002; }; - class Item458 + class Item457 { position[]={26705.004,19.76,24626.742}; azimut=130; - id=540; + id=543; side="EMPTY"; vehicle="Land_BagFence_Long_F"; skill=0.60000002; }; - class Item459 + class Item458 { position[]={26699.105,19.746874,24629.549}; azimut=130; - id=541; + id=544; side="EMPTY"; vehicle="Land_BagFence_Long_F"; skill=0.60000002; }; - class Item460 + class Item459 { position[]={26700.652,19.761763,24631.32}; azimut=130; - id=542; + id=545; side="EMPTY"; vehicle="Land_BagFence_Long_F"; skill=0.60000002; }; - class Item461 + class Item460 { position[]={26701.148,19.751776,24627.307}; azimut=130; - id=543; + id=546; side="EMPTY"; vehicle="Land_BagFence_Short_F"; skill=0.60000002; }; - class Item462 + class Item461 { position[]={26702.465,19.753223,24626.262}; azimut=130; - id=544; + id=547; side="EMPTY"; vehicle="Land_BagFence_Short_F"; skill=0.60000002; }; - class Item463 + class Item462 { position[]={26703.869,19.75539,24625.264}; azimut=130; - id=545; + id=548; side="EMPTY"; vehicle="Land_BagFence_Short_F"; skill=0.60000002; }; - class Item464 + class Item463 { position[]={26885.941,21.712402,24671.758}; azimut=-110; - id=546; + id=549; side="EMPTY"; vehicle="B_Truck_01_ammo_F"; leader=1; skill=0.60000002; init="this allowDamage false; this enableSimulation false;"; }; - class Item465 + class Item464 { position[]={26874.359,21.821833,24667.549}; azimut=-110; - id=547; + id=550; side="EMPTY"; vehicle="B_Truck_01_fuel_F"; leader=1; skill=0.60000002; init="this allowDamage false; this enableSimulation false;"; }; - class Item466 + class Item465 { position[]={26862.107,21.893202,24663.219}; azimut=-110; - id=548; + id=551; side="EMPTY"; vehicle="B_Truck_01_Repair_F"; leader=1; skill=0.60000002; init="this allowDamage false; this enableSimulation false;"; }; - class Item467 + class Item466 { position[]={26878.283,22.158979,24655.021}; azimut=-20; - id=549; + id=552; side="EMPTY"; vehicle="Land_HelipadSquare_F"; skill=0.60000002; }; - class Item468 + class Item467 { position[]={26686.924,20.348951,24595.072}; azimut=40; - id=550; + id=553; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; }; - class Item469 + class Item468 { position[]={26690.42,20.527378,24592.121}; azimut=40; - id=551; + id=554; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; }; - class Item470 + class Item469 { position[]={26693.867,20.68795,24589.256}; azimut=40; - id=552; + id=555; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; }; - class Item471 + class Item470 { position[]={26697.949,20.878624,24585.85}; azimut=40; - id=553; + id=556; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; }; - class Item472 + class Item471 { position[]={26701.584,21.0429,24582.809}; azimut=40; - id=554; + id=557; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; }; - class Item473 + class Item472 { position[]={26705.033,21.195879,24579.943}; azimut=40; - id=555; + id=558; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; }; - class Item474 + class Item473 { position[]={26708.805,21.349888,24576.771}; azimut=40; - id=556; + id=559; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; }; - class Item475 + class Item474 { position[]={26712.438,21.49402,24573.775}; azimut=40; - id=557; + id=560; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; }; - class Item476 + class Item475 { position[]={26715.932,21.662668,24570.773}; azimut=40; - id=558; + id=561; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; }; - class Item477 + class Item476 { position[]={26719.514,21.822298,24567.777}; azimut=40; - id=559; + id=562; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; }; - class Item478 + class Item477 { position[]={26852.586,26.66349,24465.311}; - id=560; + id=563; side="EMPTY"; vehicle="Flag_US_F"; skill=0.60000002; }; - class Item479 + class Item478 { position[]={26637.924,19.04122,24569.504}; azimut=40; - id=561; + id=564; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item480 + class Item479 { position[]={26682.744,20.397991,24592.496}; azimut=40; - id=562; + id=565; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item481 + class Item480 { position[]={26866.293,26.069725,24495.127}; azimut=40; - id=563; + id=566; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item482 + class Item481 { position[]={26859.998,25.692705,24500.453}; azimut=40; - id=564; + id=567; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item483 + class Item482 { position[]={26876.273,25.842361,24506.547}; azimut=40; - id=565; + id=568; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item484 + class Item483 { position[]={26870.031,25.407507,24511.924}; azimut=40; - id=566; + id=569; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item485 + class Item484 { position[]={26654.242,16.941353,24655.814}; azimut=130; - id=567; + id=570; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item486 + class Item485 { position[]={26658.842,16.984211,24661.238}; azimut=130; - id=568; + id=571; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item487 + class Item486 { position[]={26630.936,16.038414,24659.818}; azimut=130; - id=569; + id=572; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item488 + class Item487 { position[]={26635.535,16.065893,24665.242}; azimut=130; - id=570; + id=573; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item489 + class Item488 { position[]={26643.184,15.658358,24674.449}; azimut=130; - id=571; + id=574; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item490 + class Item489 { position[]={26660.051,17.019289,24667.174}; azimut=40; - id=572; + id=575; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item491 + class Item490 { position[]={26654.059,16.459335,24672.029}; azimut=40; - id=573; + id=576; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item492 + class Item491 { position[]={26648.838,15.68101,24676.391}; azimut=40; - id=574; + id=577; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item493 + class Item492 { position[]={26609.477,15.076567,24653.619}; azimut=40; - id=575; + id=578; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item494 + class Item493 { position[]={26604.771,14.923363,24657.357}; azimut=40; - id=576; + id=579; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item495 + class Item494 { position[]={26609.207,14.478259,24667.311}; azimut=130; - id=577; + id=580; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item496 + class Item495 { position[]={26614.119,14.276504,24673.25}; azimut=130; - id=578; + id=581; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item497 + class Item496 { position[]={26618.332,14.452353,24673.588}; azimut=40; - id=579; + id=582; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item498 + class Item497 { position[]={26623.805,15.16127,24668.928}; azimut=40; - id=580; + id=583; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item499 + class Item498 { position[]={26629.027,15.720372,24664.627}; azimut=40; - id=581; + id=584; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item500 + class Item499 { position[]={26681.109,20.820713,24578.348}; azimut=130; - id=582; + id=585; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item501 + class Item500 { position[]={26685.877,20.759275,24584.045}; azimut=130; - id=583; + id=586; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item502 + class Item501 { position[]={26701.359,21.743464,24561.18}; azimut=130; - id=584; + id=587; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item503 + class Item502 { position[]={26706.488,21.659685,24567.242}; azimut=130; - id=585; + id=588; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item504 + class Item503 { position[]={26692.238,21.340002,24568.811}; azimut=130; - id=586; + id=589; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item505 + class Item504 { position[]={26697.367,21.272434,24574.873}; azimut=130; - id=587; + id=590; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item506 + class Item505 { position[]={26730.549,22.907766,24510.406}; azimut=40; - id=588; + id=591; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item507 + class Item506 { position[]={26724.557,22.715752,24515.4}; azimut=40; - id=589; + id=592; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item508 + class Item507 { position[]={26720.475,22.584196,24518.113}; azimut=130; - id=590; + id=593; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; text="garage_spawner_6"; init="this enableSimulationGlobal false;"; }; - class Item509 + class Item508 { position[]={26732.871,20.167839,24638.973}; azimut=40; - id=591; + id=594; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item510 + class Item509 { position[]={26727.377,19.844154,24643.605}; azimut=40; - id=592; - side="EMPTY"; - vehicle="Land_HBarrierBig_F"; - skill=0.60000002; - }; - class Item511 - { - position[]={26721.842,19.8235,24648.281}; - azimut=40; - id=593; + id=595; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item512 + class Item510 { - position[]={26716.168,19.79501,24653.186}; + position[]={26723.93,19.825832,24646.51}; azimut=40; - id=594; + id=596; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item513 + class Item511 { position[]={26700.139,19.607988,24648.037}; azimut=40; - id=595; + id=597; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item514 + class Item512 { position[]={26699.389,19.533976,24648.631}; azimut=40; - id=596; + id=598; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item515 + class Item513 { position[]={26698.549,19.438105,24649.336}; azimut=40; - id=597; + id=599; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item516 + class Item514 { position[]={26695.254,19.066944,24652.014}; azimut=40; - id=598; + id=600; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item517 + class Item515 { position[]={26697.752,19.350166,24649.949}; azimut=40; - id=599; + id=601; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item518 + class Item516 { position[]={26696.004,19.151583,24651.4}; azimut=40; - id=600; + id=602; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item519 + class Item517 { position[]={26696.867,19.251446,24650.65}; azimut=40; - id=601; + id=603; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item520 + class Item518 { position[]={26701.41,19.532892,24649.445}; azimut=40; - id=602; + id=604; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item521 + class Item519 { position[]={26700.66,19.501154,24650.039}; azimut=40; - id=603; + id=605; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item522 + class Item520 { position[]={26699.82,19.451242,24650.744}; azimut=40; - id=604; + id=606; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item523 + class Item521 { position[]={26696.525,19.0455,24653.422}; azimut=40; - id=605; + id=607; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item524 + class Item522 { position[]={26699.023,19.363174,24651.357}; azimut=40; - id=606; + id=608; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item525 + class Item523 { position[]={26697.275,19.153164,24652.809}; azimut=40; - id=607; + id=609; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item526 + class Item524 { position[]={26698.139,19.264454,24652.059}; azimut=40; - id=608; + id=610; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item527 + class Item525 { position[]={26702.727,19.522736,24650.854}; azimut=40; - id=609; + id=611; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item528 + class Item526 { position[]={26701.977,19.481646,24651.447}; azimut=40; - id=610; + id=612; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item529 + class Item527 { position[]={26701.137,19.436028,24652.152}; azimut=40; - id=611; + id=613; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item530 + class Item528 { position[]={26697.842,19.008881,24654.83}; azimut=40; - id=612; + id=614; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item531 + class Item529 { position[]={26700.34,19.365841,24652.766}; azimut=40; - id=613; + id=615; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item532 + class Item530 { position[]={26698.592,19.116364,24654.217}; azimut=40; - id=614; + id=616; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item533 + class Item531 { position[]={26699.455,19.243908,24653.467}; azimut=40; - id=615; + id=617; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item534 + class Item532 { - position[]={26713.977,19.811674,24651.25}; + position[]={26713.93,19.81259,24651.387}; azimut=130; - id=616; + id=618; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item535 + class Item533 { position[]={26709.846,19.780779,24646.615}; azimut=130; - id=617; + id=619; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item536 + class Item534 { position[]={26705.537,19.77,24641.348}; azimut=130; - id=618; + id=620; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item537 + class Item535 { position[]={26653.83,20.080389,24552.713}; azimut=5; - id=619; + id=621; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item538 + class Item536 { position[]={26656.238,20.20751,24552.484}; azimut=5; - id=620; + id=622; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item539 + class Item537 { position[]={26658.459,20.290365,24552.26}; azimut=5; - id=621; + id=623; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; skill=0.60000002; }; - class Item540 + class Item538 { position[]={26656.107,20.077408,24547.088}; azimut=140; - id=622; + id=624; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item541 + class Item539 { position[]={26649.938,19.729076,24541.777}; azimut=140; - id=623; + id=625; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item542 + class Item540 { position[]={26643.896,19.326979,24536.691}; azimut=140; - id=624; + id=626; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item543 + class Item541 { position[]={26638.406,19.213615,24563.252}; azimut=140; - id=625; + id=627; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item544 + class Item542 { position[]={26632.236,18.851871,24557.941}; azimut=140; - id=626; + id=628; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item545 + class Item543 { position[]={26626.195,18.437645,24552.855}; azimut=140; - id=627; + id=629; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item546 + class Item544 { position[]={26625.789,18.391869,24548.727}; azimut=50; - id=628; + id=630; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item547 + class Item545 { position[]={26630.6,18.653082,24542.871}; azimut=50; - id=629; + id=631; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item548 + class Item546 { position[]={26637.363,18.965082,24534.971}; azimut=50; - id=630; + id=632; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item549 + class Item547 { position[]={26634.822,18.849415,24537.92}; azimut=50; - id=631; + id=633; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item550 + class Item548 { position[]={26641.717,19.191948,24534.514}; azimut=140; - id=632; + id=634; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item551 + class Item549 { position[]={26683.902,20.202864,24597.375}; azimut=40; - id=633; + id=635; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; }; - class Item552 + class Item550 { position[]={26845.732,26.822699,24458.182}; - id=634; + id=636; side="EMPTY"; vehicle="Flag_UK_F"; skill=0.60000002; }; - class Item553 + class Item551 { position[]={26704.133,19.617399,24652.398}; azimut=40; - id=635; + id=637; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item554 + class Item552 { position[]={26703.383,19.527546,24652.992}; azimut=40; - id=636; + id=638; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item555 + class Item553 { position[]={26702.543,19.412371,24653.697}; azimut=40; - id=637; + id=639; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item556 + class Item554 { position[]={26699.248,18.962326,24656.375}; azimut=40; - id=638; + id=640; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item557 + class Item555 { position[]={26701.746,19.308037,24654.311}; azimut=40; - id=639; + id=641; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item558 + class Item556 { position[]={26699.998,19.069811,24655.762}; azimut=40; - id=640; + id=642; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item559 + class Item557 { position[]={26700.861,19.190624,24655.012}; azimut=40; - id=641; + id=643; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item560 + class Item558 { position[]={26708.316,19.796282,24648.941}; azimut=40; - id=642; + id=644; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item561 + class Item559 { position[]={26705.021,19.665495,24651.619}; azimut=40; - id=643; + id=645; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item562 + class Item560 { position[]={26707.52,19.800371,24649.555}; azimut=40; - id=644; + id=646; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item563 + class Item561 { position[]={26705.771,19.70645,24651.006}; azimut=40; - id=645; + id=647; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item564 + class Item562 { position[]={26706.635,19.753191,24650.256}; azimut=40; - id=646; + id=648; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item565 + class Item563 { position[]={26706.867,19.7481,24647.398}; azimut=40; - id=647; + id=649; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item566 + class Item564 { position[]={26703.572,19.568304,24650.076}; azimut=40; - id=648; + id=650; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item567 + class Item565 { position[]={26706.07,19.704399,24648.012}; azimut=40; - id=649; + id=651; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item568 + class Item566 { position[]={26704.322,19.609148,24649.463}; azimut=40; - id=650; + id=652; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item569 + class Item567 { position[]={26705.186,19.655998,24648.713}; azimut=40; - id=651; + id=653; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item570 + class Item568 { position[]={26705.551,19.714727,24646.035}; azimut=40; - id=652; + id=654; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item571 + class Item569 { position[]={26702.256,19.571953,24648.713}; azimut=40; - id=653; + id=655; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item572 + class Item570 { position[]={26704.754,19.682013,24646.648}; azimut=40; - id=654; + id=656; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item573 + class Item571 { position[]={26703.006,19.60457,24648.1}; azimut=40; - id=655; + id=657; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item574 + class Item572 { position[]={26703.869,19.644609,24647.35}; azimut=40; - id=656; + id=658; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item575 + class Item573 { position[]={26704.098,19.77,24644.717}; azimut=40; - id=657; + id=659; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item576 + class Item574 { position[]={26700.803,19.642265,24647.395}; azimut=40; - id=658; + id=660; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item577 + class Item575 { position[]={26703.301,19.752325,24645.33}; azimut=40; - id=659; + id=661; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item578 + class Item576 { position[]={26701.553,19.674883,24646.781}; azimut=40; - id=660; + id=662; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item579 + class Item577 { position[]={26702.416,19.714922,24646.031}; azimut=40; - id=661; + id=663; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item580 + class Item578 { position[]={26702.963,19.77,24642.992}; azimut=40; - id=662; + id=664; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item581 + class Item579 { position[]={26699.668,19.711184,24645.67}; azimut=40; - id=663; + id=665; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item582 + class Item580 { position[]={26702.166,19.77,24643.605}; azimut=40; - id=664; + id=666; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item583 + class Item581 { position[]={26700.418,19.766876,24645.057}; azimut=40; - id=665; + id=667; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item584 + class Item582 { position[]={26701.281,19.77,24644.307}; azimut=40; - id=666; + id=668; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; skill=0.60000002; }; - class Item585 + class Item583 { position[]={26702.117,19.746016,24625.258}; azimut=220; - id=667; + id=669; side="EMPTY"; vehicle="Land_BagFence_Long_F"; skill=0.60000002; }; - class Item586 + class Item584 { position[]={26676.719,18.424976,24639.863}; azimut=130; - id=668; + id=670; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item587 + class Item585 { position[]={26681.666,18.378428,24645.902}; azimut=130; - id=669; + id=671; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; - class Item588 + class Item586 { position[]={26685.85,18.624903,24646.271}; azimut=40; - id=670; + id=672; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; }; + class Item587 + { + position[]={26718.406,19.822062,24650.639}; + azimut=40; + id=673; + side="EMPTY"; + vehicle="Land_HBarrier_1_F"; + skill=0.60000002; + }; }; class Markers { - items=64; + items=75; class Item0 { position[]={14320.607,17.790001,15859.087}; @@ -7732,53 +7795,53 @@ class Mission }; class Item6 { - position[]={4947.5391,9,2438.9182}; + position[]={9098.7314,15.101182,21541.182}; name="mrk_airfield_2"; text="airfield"; markerType="RECTANGLE"; type="Empty"; colorName="ColorEAST"; fillName="SolidBorder"; - a=400; - b=100; - angle=30; + a=270; + b=120; + angle=143.5; drawBorder=1; }; class Item7 { - position[]={12094.896,158.93059,12671.143}; + position[]={11524.109,22.941881,11706.089}; name="mrk_airfield_1"; text="airfield"; markerType="RECTANGLE"; type="Empty"; colorName="ColorEAST"; fillName="SolidBorder"; - a=450; - b=120; - angle=20; + a=375; + b=180; + angle=123; drawBorder=1; }; class Item8 { - position[]={-16258.738,0.10806388,13298.195}; + position[]={30670.996,-0.15057068,30671.645}; name="mrk_area"; markerType="RECTANGLE"; type="Empty"; fillName="Border"; - a=7600; - b=7600; + a=50; + b=50; drawBorder=1; }; class Item9 { - position[]={5226.2222,9.0784979,2219.6648}; + position[]={9410.416,47.092777,21262.498}; name="mrk_jetSpawn_2"; text="jetSpawn"; type="Empty"; }; class Item10 { - position[]={12466.073,159,12575.866}; + position[]={11343.169,22.120678,11417.418}; name="mrk_jetSpawn_1"; text="jetSpawn"; type="Empty"; @@ -8012,165 +8075,113 @@ class Mission }; class Item34 { - position[]={5112.7568,9,2189.8379}; + position[]={9296.9492,33.014469,21232.672}; name="mrk_airfield_2_aa_0"; text="aa"; type="Empty"; }; class Item35 { - position[]={4624.6353,8.9058619,2482.9395}; + position[]={9011.4609,17.260447,21432.334}; name="mrk_airfield_2_aa_1"; text="aa"; type="Empty"; }; class Item36 { - position[]={4791.2861,8.6999998,2573.1758}; + position[]={9170.1299,14.77566,21622.721}; name="mrk_airfield_2_hangar_0"; text="hangar"; type="Empty"; - angle=210; + angle=143.5; }; class Item37 { - position[]={4756.2593,8.6999998,2593.72}; - name="mrk_airfield_2_hangar_1"; - text="hangar"; - type="Empty"; - angle=210; - }; - class Item38 - { - position[]={12312.272,159,12568.086}; + position[]={11533.105,22.363661,11567.022}; name="mrk_airfield_1_aa_0"; text="aa"; type="Empty"; angle=15; }; - class Item39 + class Item38 { - position[]={11806.655,159,12709.518}; + position[]={11708.546,22.868874,11860.304}; name="mrk_airfield_1_aa_1"; text="aa"; type="Empty"; angle=15; }; - class Item40 + class Item39 { - position[]={12057.019,158.8,12621.422}; + position[]={11598.289,23.69422,11945.348}; name="mrk_airfield_1_hangar_0"; text="hangar"; type="Empty"; - angle=15; - }; - class Item41 - { - position[]={12010.067,158.8,12636.979}; - name="mrk_airfield_1_hangar_1"; - text="hangar"; - type="Empty"; - angle=15; + angle=123; }; - class Item42 + class Item40 { - position[]={4748.8853,9,2539.3738}; + position[]={9189.6279,15.847826,21595.719}; name="mrk_heliSpawn_2"; text="heliSpawn"; type="Empty"; }; - class Item43 + class Item41 { - position[]={12056.696,159,12691.672}; + position[]={11638.211,21.303558,11732.865}; name="mrk_heliSpawn_1"; text="heliSpawn"; type="Empty"; }; - class Item44 + class Item42 { position[]={26733.039,20.414927,24618.402}; name="mrk_return"; type="Empty"; }; - class Item45 + class Item43 { position[]={26735.953,20.430264,24617.943}; name="mrk_base"; text="HQ"; type="b_hq"; }; - class Item46 + class Item44 { position[]={26698.836,21.544865,24566.797}; name="mrk_base_car"; text="Motorized"; type="b_motor_inf"; }; - class Item47 + class Item45 { position[]={26723.5,22.654688,24506.488}; name="mrk_base_mech"; text="Armor"; type="b_motor_inf"; }; - class Item48 + class Item46 { position[]={26835.041,23.404406,24603.641}; name="mrk_base_air"; text="Helicopters"; type="b_air"; }; - class Item49 + class Item47 { position[]={26645.486,16.6917,24660.332}; name="mrk_base_log"; text="Logistics"; type="b_support"; }; - class Item50 + class Item48 { position[]={26695.871,19.720098,24616.922}; name="mrk_base_range"; text="Firing range"; type="b_installation"; }; - class Item51 - { - position[]={-3925.6865,-0.14400321,27200.441}; - name="mrk_aaZone_3"; - markerType="RECTANGLE"; - type="Empty"; - a=3800; - b=3800; - }; - class Item52 - { - position[]={-3876.6858,-0.057105087,4044.9407}; - name="mrk_aaZone_1"; - markerType="RECTANGLE"; - type="Empty"; - a=3800; - b=3800; - }; - class Item53 - { - position[]={-3853.9927,-0.078167506,11787.758}; - name="mrk_aaZone_0"; - markerType="RECTANGLE"; - type="Empty"; - a=3800; - b=3800; - }; - class Item54 - { - position[]={-3899.3813,-0.19272989,19507.871}; - name="mrk_aaZone_2"; - markerType="RECTANGLE"; - type="Empty"; - a=3800; - b=3800; - }; - class Item55 + class Item49 { position[]={27574.826,34.944099,24980.523}; name="mrk_safeZone"; @@ -8182,14 +8193,14 @@ class Mission b=1200; drawBorder=1; }; - class Item56 + class Item50 { position[]={26639.047,19.247772,24548.904}; name="mrk_base_scrap"; text="Vehicle scrap"; type="b_service"; }; - class Item57 + class Item51 { position[]={22730.525,0.26061279,31718.543}; name="mrk_task_back"; @@ -8199,14 +8210,14 @@ class Mission a=8000; b=1000; }; - class Item58 + class Item52 { position[]={15768.367,0.14324018,31671.799}; name="mrk_task_text"; text="Current objective: "; type="mil_dot"; }; - class Item59 + class Item53 { position[]={26775.059,19.357115,24688.668}; name="mrk_base_hospital"; @@ -8214,7 +8225,7 @@ class Mission type="n_med"; colorName="ColorWEST"; }; - class Item60 + class Item54 { position[]={26622.322,16.28945,24639.371}; name="mrk_base_maintenance"; @@ -8222,27 +8233,145 @@ class Mission type="n_maint"; colorName="ColorWEST"; }; - class Item61 + class Item55 { position[]={26880.816,22.203371,24655.104}; name="mrk_base_heliService"; text="Helicopter Service"; type="b_maint"; }; - class Item62 + class Item56 { position[]={26703.334,20.930307,24584.398}; name="mrk_base_staging_ground"; text="Staging ground"; type="b_unknown"; }; - class Item63 + class Item57 { position[]={26718.367,19.774492,24640.066}; name="mrk_base_staging_air"; text="Landing pad"; type="b_unknown"; }; + class Item58 + { + position[]={21019.285,22.803896,7354.5449}; + name="mrk_airfield_3"; + text="airfield"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorEAST"; + fillName="SolidBorder"; + a=400; + b=250; + angle=123; + drawBorder=1; + }; + class Item59 + { + position[]={21070.014,26.671282,7075.3809}; + name="mrk_jetSpawn_3"; + text="jetSpawn"; + type="Empty"; + }; + class Item60 + { + position[]={21029.734,24.219715,7233.5459}; + name="mrk_airfield_3_aa_0"; + text="aa"; + type="Empty"; + angle=15; + }; + class Item61 + { + position[]={21228.307,17.308304,7593.8096}; + name="mrk_airfield_3_aa_1"; + text="aa"; + type="Empty"; + angle=15; + }; + class Item62 + { + position[]={20799.313,29.090904,7228.478}; + name="mrk_airfield_3_hangar_0"; + text="hangar"; + type="Empty"; + angle=-35; + }; + class Item63 + { + position[]={16567.51,11,12778.056}; + name="mrk_hq"; + text="HQ"; + type="flag_CSAT"; + }; + class Item64 + { + position[]={30301.66,-0.25301668,29633.105}; + name="mrk_compound"; + type="Empty"; + }; + class Item65 + { + position[]={14211.23,74.105072,21218.738}; + name="mrk_compound_1"; + type="Empty"; + }; + class Item66 + { + position[]={20931.396,12.336266,19245.465}; + name="mrk_compound_2"; + type="Empty"; + }; + class Item67 + { + position[]={17434.029,14.026167,13167.018}; + name="mrk_compound_3"; + type="Empty"; + }; + class Item68 + { + position[]={20083.828,101.00888,6728.4272}; + name="mrk_compound_4"; + type="Empty"; + }; + class Item69 + { + position[]={8301.5928,76.198982,10081.629}; + name="mrk_compound_5"; + type="Empty"; + }; + class Item70 + { + position[]={10014.203,16.497324,11237.176}; + name="mrk_compound_6"; + type="Empty"; + }; + class Item71 + { + position[]={6838.5962,60.950417,16062.318}; + name="mrk_compound_7"; + type="Empty"; + }; + class Item72 + { + position[]={23551.17,91.409821,21113.93}; + name="mrk_compound_8"; + type="Empty"; + }; + class Item73 + { + position[]={8387.5205,180.12947,18246.375}; + name="mrk_compound_9"; + type="Empty"; + }; + class Item74 + { + position[]={12827.477,86.716339,16707.449}; + name="mrk_compound_0"; + type="Empty"; + }; }; class Sensors { @@ -8305,7 +8434,7 @@ class Mission age="UNKNOWN"; name="trg_scrap"; expCond="(speed (list trg_scrap select 0)) < 1"; - expActiv="_nul0= [(list trg_scrap select 0)] spawn JOC_garageScrap;"; + expActiv="_nul0= [(list trg_scrap) select 0] spawn JOC_garageScrap;"; class Effects { }; diff --git a/mission.sqm.eden b/mission.sqm.eden new file mode 100644 index 0000000..33913fa --- /dev/null +++ b/mission.sqm.eden @@ -0,0 +1,15232 @@ +version=15; +class EditorData +{ + moveGridStep=1; + angleGridStep=0.017453292; + scaleGridStep=50; + autoGroupingDist=10; + toggles=129; + class ItemIDProvider + { + nextID=872; + }; + class MarkerIDProvider + { + nextID=99; + }; + class Camera + { + pos[]={20614.482,444.71362,9193.9629}; + dir[]={-0.056674939,-0.63783079,-0.76813263}; + up[]={-0.046936009,0.77014887,-0.63613439}; + aside[]={-0.99732673,-1.466542e-007,0.073585935}; + }; +}; +addons[]= +{ + "A3_Structures_F_Mil_Flags", + "A3_Structures_F_Mil_Helipads", + "A3_Structures_F_Civ_InfoBoards", + "A3_Structures_F_Walls", + "A3_Structures_F_Furniture", + "A3_Structures_F_Heli_Furniture", + "A3_Structures_F_Civ_Camping", + "A3_Structures_F_Items_Electronics", + "A3_Structures_F_Mil_Fortification", + "A3_Structures_F_Mil_Cargo", + "A3_Structures_F_Training", + "A3_Structures_F_Mil_BagFence", + "A3_Structures_F_Ind_Cargo", + "A3_Soft_F_Gamma_HEMTT", + "A3_Structures_F_Items_Vessels", + "A3_Weapons_F_Ammoboxes", + "ace_captives", + "ace_advanced_ballistics", + "ace_medical", + "ace_cargo", + "ace_explosives", + "ace_microdagr", + "A3_Modules_F_Curator_Curator", + "task_force_radio_items", + "ace_respawn", + "ace_zeus", + "ace_weather", + "ace_mk6mortar", + "ace_map", + "A3_Characters_F_BLUFOR", + "a3_characters_f", + "ace_sitting", + "ace_nametags", + "A3_Characters_F_OPFOR", + "ace_repair", + "ace_hearing", + "ace_interaction", + "A3_Signs_F", + "A3_Structures_F_Mil_Radar" +}; +randomSeed=13516156; +class Mission +{ + class Intel + { + timeOfChanges=1800.0002; + startWeather=0.30000001; + startWind=0.1; + startWaves=0.1; + forecastWeather=0.30000001; + forecastWind=0.1; + forecastWaves=0.1; + forecastLightnings=0.1; + year=2035; + month=6; + day=24; + hour=12; + minute=0; + startFogDecay=0.013; + forecastFogDecay=0.013; + }; + class Entities + { + items=736; + class Item0 + { + dataType="Marker"; + position[]={14320.607,17.790001,15859.087}; + name="mrk_jetSpawn_0"; + text="jetSpawn"; + type="Empty"; + id=0; + }; + class Item1 + { + dataType="Marker"; + position[]={14697.515,17.91,16726.178}; + name="mrk_heliSpawn_0"; + text="heliSpawn"; + type="Empty"; + id=1; + }; + class Item2 + { + dataType="Marker"; + position[]={30282.385,0.11041628,30157.143}; + name="mrk_hangar"; + text="hangar"; + type="Empty"; + id=2; + }; + class Item3 + { + dataType="Marker"; + position[]={14733.9,4.0267213e+036,16505.889}; + name="mrk_airfield_0"; + text="airfield"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorEAST"; + fillName="SolidBorder"; + a=1100; + b=500; + angle=135; + drawBorder=1; + id=3; + }; + class Item4 + { + dataType="Marker"; + position[]={15175.246,17.892538,17346.656}; + name="mrk_infSpawn"; + text="infSpawn"; + type="Empty"; + id=4; + }; + class Item5 + { + dataType="Marker"; + position[]={14790.578,17.91,16652.014}; + name="mrk_vehSpawn"; + text="vehSpawn"; + type="Empty"; + id=5; + }; + class Item6 + { + dataType="Marker"; + position[]={9109.7529,15.180453,21528.205}; + name="mrk_airfield_2"; + text="airfield"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorEAST"; + fillName="SolidBorder"; + a=220; + b=100; + angle=142.99995; + drawBorder=1; + id=6; + }; + class Item7 + { + dataType="Marker"; + position[]={11531.322,22.946444,11698.843}; + name="mrk_airfield_1"; + text="airfield"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorEAST"; + fillName="SolidBorder"; + a=400; + b=180; + angle=122.99997; + drawBorder=1; + id=7; + }; + class Item8 + { + dataType="Marker"; + position[]={30244.334,-121.22174,30199.971}; + name="mrk_area"; + markerType="RECTANGLE"; + type="Empty"; + fillName="Border"; + a=500; + b=500; + drawBorder=1; + id=8; + }; + class Item9 + { + dataType="Marker"; + position[]={8995.4238,26.682037,21368.186}; + name="mrk_jetSpawn_2"; + text="jetSpawn"; + type="Empty"; + id=9; + }; + class Item10 + { + dataType="Marker"; + position[]={11355.303,172.00636,11436.322}; + name="mrk_jetSpawn_1"; + text="jetSpawn"; + type="Empty"; + id=10; + }; + class Item11 + { + dataType="Marker"; + position[]={248.17393,0.0025174618,29848.816}; + name="mrk_show_radar"; + text="Radar"; + type="o_installation"; + id=11; + }; + class Item12 + { + dataType="Marker"; + position[]={246.30032,-0.18606594,29638.166}; + name="mrk_show_aa"; + text="AA-tank"; + type="o_mortar"; + id=12; + }; + class Item13 + { + dataType="Marker"; + position[]={243.60323,-0.022371098,29442.508}; + name="mrk_show_arty"; + text="Artillery"; + type="o_art"; + id=13; + }; + class Item14 + { + dataType="Marker"; + position[]={244.38618,0.078681201,29237.92}; + name="mrk_show_radio"; + text="Radio tower"; + type="loc_Transmitter"; + colorName="ColorEAST"; + id=14; + }; + class Item15 + { + dataType="Marker"; + position[]={248.62238,-0.084247626,30451.467}; + name="mrk_show_opZone"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorEAST"; + fillName="SolidBorder"; + a=50; + b=50; + drawBorder=1; + id=15; + }; + class Item16 + { + dataType="Marker"; + position[]={249.86264,0.24201679,30250.24}; + name="mrk_show_civZone"; + text="Unuccupied zone"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorCIV"; + fillName="SolidBorder"; + a=50; + b=50; + drawBorder=1; + id=16; + }; + class Item17 + { + dataType="Marker"; + position[]={249.37224,-0.079597332,30050.563}; + name="mrk_show_bluZone"; + text="Blufor zone"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorWEST"; + fillName="SolidBorder"; + a=50; + b=50; + drawBorder=1; + id=17; + }; + class Item18 + { + dataType="Marker"; + position[]={329.27768,0.11100048,30056.914}; + name="mrk_show_bluZoneText"; + text="Blufor zone"; + type="mil_circle"; + colorName="ColorWEST"; + a=0; + b=0; + id=18; + }; + class Item19 + { + dataType="Marker"; + position[]={330.142,-0.012917288,30459.199}; + name="mrk_show_opZoneText_1"; + text="Opfor zone"; + type="mil_circle"; + colorName="ColorEAST"; + a=0; + b=0; + id=19; + }; + class Item20 + { + dataType="Marker"; + position[]={329.85397,-0.034097187,30251.316}; + name="mrk_show_civZoneText"; + text="Unoccupied zone"; + type="mil_circle"; + colorName="ColorCIV"; + a=0; + b=0; + id=20; + }; + class Item21 + { + dataType="Marker"; + position[]={14161.794,20.510948,16195.094}; + name="mrk_airfield_0_hangar_0"; + text="hangar"; + type="Empty"; + fillName="SolidBorder"; + angle=111.62683; + drawBorder=1; + id=21; + }; + class Item22 + { + dataType="Marker"; + position[]={14242.848,19.4405,16284.763}; + name="mrk_airfield_0_hangar_1"; + text="hangar"; + type="Empty"; + fillName="SolidBorder"; + angle=143.00348; + drawBorder=1; + id=22; + }; + class Item23 + { + dataType="Marker"; + position[]={14263.628,19.368046,16298.966}; + name="mrk_airfield_0_hangar_2"; + text="hangar"; + type="Empty"; + fillName="SolidBorder"; + angle=154.46594; + drawBorder=1; + id=23; + }; + class Item24 + { + dataType="Marker"; + position[]={14345.779,18.858265,16321.463}; + name="mrk_airfield_0_hangar_3"; + text="hangar"; + type="Empty"; + fillName="SolidBorder"; + angle=-173.71501; + drawBorder=1; + id=24; + }; + class Item25 + { + dataType="Marker"; + position[]={14401.627,19.265234,16308.096}; + name="mrk_airfield_0_hangar_4"; + text="hangar"; + type="Empty"; + fillName="SolidBorder"; + angle=-156.65205; + drawBorder=1; + id=25; + }; + class Item26 + { + dataType="Marker"; + position[]={14419.516,18.719999,16244.664}; + name="mrk_airfield_0_hangar_5"; + text="hangar"; + type="Empty"; + fillName="SolidBorder"; + angle=35.747803; + drawBorder=1; + id=26; + }; + class Item27 + { + dataType="Marker"; + position[]={15102.359,17.993155,17252.305}; + name="mrk_airfield_0_hangar_6"; + text="hangar"; + type="Empty"; + fillName="SolidBorder"; + angle=135; + drawBorder=1; + id=27; + }; + class Item28 + { + dataType="Marker"; + position[]={15085.594,17.91,17234.98}; + name="mrk_airfield_0_hangar_7"; + text="hangar"; + type="Empty"; + fillName="SolidBorder"; + angle=135; + drawBorder=1; + id=28; + }; + class Item29 + { + dataType="Marker"; + position[]={14379.282,12.670757,15742.367}; + name="mrk_airfield_0_aa_0"; + text="aa"; + type="Empty"; + fillName="SolidBorder"; + angle=-2.1816616; + drawBorder=1; + id=29; + }; + class Item30 + { + dataType="Marker"; + position[]={13878.358,20.617273,16121.229}; + name="mrk_airfield_0_aa_1"; + text="aa"; + type="Empty"; + fillName="SolidBorder"; + angle=-2.1816616; + drawBorder=1; + id=30; + }; + class Item31 + { + dataType="Marker"; + position[]={15138.492,15.138349,17455.043}; + name="mrk_airfield_0_aa_2"; + text="aa"; + type="Empty"; + fillName="SolidBorder"; + angle=-2.1816616; + drawBorder=1; + id=31; + }; + class Item32 + { + dataType="Marker"; + position[]={14669.971,17.762991,16511.164}; + name="mrk_airfield_0_aa_3"; + text="aa"; + type="Empty"; + fillName="SolidBorder"; + angle=-2.1816616; + drawBorder=1; + id=32; + }; + class Item33 + { + dataType="Marker"; + position[]={15649.084,19.222511,16931.678}; + name="mrk_airfield_0_aa_4"; + text="aa"; + type="Empty"; + fillName="SolidBorder"; + angle=-2.1816616; + drawBorder=1; + id=33; + }; + class Item34 + { + dataType="Marker"; + position[]={8998.3467,39.995529,21427.469}; + name="mrk_airfield_2_aa_0"; + text="aa"; + type="Empty"; + id=34; + }; + class Item35 + { + dataType="Marker"; + position[]={9156.6143,24.827301,21558.135}; + name="mrk_airfield_2_aa_1"; + text="aa"; + type="Empty"; + id=35; + }; + class Item36 + { + dataType="Marker"; + position[]={9176.3916,40.524574,21656.625}; + name="mrk_airfield_2_hangar_0"; + text="hangar"; + type="Empty"; + angle=2.5413599; + id=36; + }; + class Item37 + { + dataType="Marker"; + position[]={11454.605,159,11464.044}; + name="mrk_airfield_1_aa_0"; + text="aa"; + type="Empty"; + angle=0.26179934; + id=38; + }; + class Item38 + { + dataType="Marker"; + position[]={11637.925,159,11982.918}; + name="mrk_airfield_1_aa_1"; + text="aa"; + type="Empty"; + angle=0.26179934; + id=39; + }; + class Item39 + { + dataType="Marker"; + position[]={11601.562,2.9210866e+019,11943.085}; + name="mrk_airfield_1_hangar_0"; + text="hangar"; + type="Empty"; + angle=121.59718; + id=40; + }; + class Item40 + { + dataType="Marker"; + position[]={9201.5586,24.395447,21607.443}; + name="mrk_heliSpawn_2"; + text="heliSpawn"; + type="Empty"; + id=42; + }; + class Item41 + { + dataType="Marker"; + position[]={11694.094,159.24251,11858.037}; + name="mrk_heliSpawn_1"; + text="heliSpawn"; + type="Empty"; + id=43; + }; + class Item42 + { + dataType="Marker"; + position[]={26733.039,20.414927,24618.402}; + name="mrk_return"; + type="Empty"; + id=44; + }; + class Item43 + { + dataType="Marker"; + position[]={26735.953,20.430264,24617.943}; + name="mrk_base"; + text="HQ"; + type="b_hq"; + id=45; + }; + class Item44 + { + dataType="Marker"; + position[]={26698.836,21.544865,24566.797}; + name="mrk_base_car"; + text="Motorized"; + type="b_motor_inf"; + id=46; + }; + class Item45 + { + dataType="Marker"; + position[]={26723.5,22.654688,24506.488}; + name="mrk_base_mech"; + text="Armor"; + type="b_motor_inf"; + id=47; + }; + class Item46 + { + dataType="Marker"; + position[]={26835.041,23.404406,24603.641}; + name="mrk_base_air"; + text="Helicopters"; + type="b_air"; + id=48; + }; + class Item47 + { + dataType="Marker"; + position[]={26645.486,16.6917,24660.332}; + name="mrk_base_log"; + text="Logistics"; + type="b_support"; + id=49; + }; + class Item48 + { + dataType="Marker"; + position[]={26695.871,19.720098,24616.922}; + name="mrk_base_range"; + text="Firing range"; + type="b_installation"; + id=50; + }; + class Item49 + { + dataType="Marker"; + position[]={27574.826,34.944099,24980.523}; + name="mrk_safeZone"; + markerType="ELLIPSE"; + type="Empty"; + colorName="ColorWEST"; + fillName="Border"; + a=1200; + b=1200; + drawBorder=1; + id=55; + }; + class Item50 + { + dataType="Marker"; + position[]={26639.047,19.247772,24548.904}; + name="mrk_base_scrap"; + text="Vehicle scrap"; + type="b_service"; + id=56; + }; + class Item51 + { + dataType="Marker"; + position[]={22730.525,0.26061279,31718.543}; + name="mrk_task_back"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorEAST"; + a=8000; + b=1000; + id=57; + }; + class Item52 + { + dataType="Marker"; + position[]={15768.367,0.14324018,31671.799}; + name="mrk_task_text"; + text="Current objective: "; + type="mil_dot"; + id=58; + }; + class Item53 + { + dataType="Marker"; + position[]={26775.059,19.357115,24688.668}; + name="mrk_base_hospital"; + text="Field hospital"; + type="n_med"; + colorName="ColorWEST"; + id=59; + }; + class Item54 + { + dataType="Marker"; + position[]={26622.322,16.28945,24639.371}; + name="mrk_base_maintenance"; + text="Maintenance"; + type="n_maint"; + colorName="ColorWEST"; + id=60; + }; + class Item55 + { + dataType="Marker"; + position[]={26880.816,22.203371,24655.104}; + name="mrk_base_heliService"; + text="Helicopter Service"; + type="b_maint"; + id=61; + }; + class Item56 + { + dataType="Marker"; + position[]={26703.334,20.930307,24584.398}; + name="mrk_base_staging_ground"; + text="Staging ground"; + type="b_unknown"; + id=62; + }; + class Item57 + { + dataType="Marker"; + position[]={26718.367,19.774492,24640.066}; + name="mrk_base_staging_air"; + text="Landing pad"; + type="b_unknown"; + id=63; + }; + class Item58 + { + dataType="Trigger"; + position[]={26878.824,22.146572,24655.305}; + angle=-0.34906572; + class Attributes + { + name="trg_rep_0"; + condition="(speed (list trg_rep_0 select 0)) < 1"; + onActivation="_nul0= [(list trg_rep_0 select 0)] spawn JOC_service"; + sizeA=10; + sizeB=10; + timeout[]={5,5,5}; + interuptable=1; + repeatable=1; + activationBy="WEST"; + isRectangle=1; + }; + id=64; + type="EmptyDetector"; + }; + class Item59 + { + dataType="Trigger"; + position[]={26621.543,16.24262,24639.375}; + angle=0.69813144; + class Attributes + { + name="trg_rep_1"; + condition="(speed (list trg_rep_1 select 0)) < 1"; + onActivation="_nul0= [(list trg_rep_1 select 0)] spawn JOC_service"; + sizeA=5; + sizeB=3; + timeout[]={5,5,5}; + interuptable=1; + repeatable=1; + activationBy="WEST"; + isRectangle=1; + }; + id=65; + type="EmptyDetector"; + }; + class Item60 + { + dataType="Trigger"; + position[]={26640.295,19.326323,24549.307}; + angle=0.87266451; + class Attributes + { + name="trg_scrap"; + condition="(speed (list trg_scrap select 0)) < 1"; + onActivation="_nul0= [(list trg_scrap select 0)] spawn JOC_garageScrap;"; + sizeA=10; + sizeB=10; + timeout[]={5,5,5}; + interuptable=1; + repeatable=1; + activationBy="WEST"; + isRectangle=1; + }; + id=66; + type="EmptyDetector"; + }; + class Item61 + { + dataType="Trigger"; + position[]={26845.193,26.636679,24465.512}; + angle=-0.87266451; + class Attributes + { + onActivation="gate animate [""Door_1_rot"", 1] "; + onDeactivation="gate animate [""Door_1_rot"", 0] "; + sizeA=7; + sizeB=25; + interuptable=1; + repeatable=1; + activationBy="WEST"; + isRectangle=1; + }; + id=67; + type="EmptyDetector"; + }; + class Item62 + { + dataType="Trigger"; + position[]={26870.51,21.673607,24679.086}; + angle=-0.34906572; + class Attributes + { + name="trg_rep_2"; + condition="(speed (list trg_rep_2 select 0)) < 1"; + onActivation="_nul0= [(list trg_rep_2 select 0)] spawn JOC_service"; + sizeA=20; + sizeB=10; + timeout[]={5,5,5}; + interuptable=1; + repeatable=1; + activationBy="WEST"; + isRectangle=1; + }; + id=68; + type="EmptyDetector"; + }; + class Item63 + { + dataType="Object"; + class PositionInfo + { + position[]={26751.152,24.621639,24619.891}; + angles[]={0.02666023,2.4434609,0.027990974}; + }; + InEditorATL=0.002986908; + side="Empty"; + class Attributes + { + skill=0.60000002; + name="flagPole"; + }; + id=69; + type="Flag_NATO_F"; + }; + class Item64 + { + dataType="Object"; + class PositionInfo + { + position[]={26679.932,20.602068,24585.189}; + angles[]={0.034652505,-2.4434612,0.019996032}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + name="fobSpawn"; + }; + id=70; + type="Land_HelipadEmpty_F"; + }; + class Item65 + { + dataType="Object"; + class PositionInfo + { + position[]={26853.795,22.974501,24627.014}; + angles[]={0.049293593,-0.85521173,0.049293593}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + name="garage_spawn_0"; + }; + id=71; + type="Land_HelipadSquare_F"; + }; + class Item66 + { + dataType="Object"; + class PositionInfo + { + position[]={26840.758,23.258154,24611.885}; + angles[]={0.050623242,-0.85521173,0.039977662}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + name="garage_spawn_1"; + }; + id=72; + type="Land_HelipadSquare_F"; + }; + class Item67 + { + dataType="Object"; + class PositionInfo + { + position[]={26814.207,23.667765,24580.438}; + angles[]={0.010664274,-0.85521173,0.0053265258}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + name="garage_spawn_3"; + }; + id=73; + type="Land_HelipadSquare_F"; + }; + class Item68 + { + dataType="Object"; + class PositionInfo + { + position[]={26827.711,23.467793,24596.537}; + angles[]={0.021331646,-0.85521173,0.018667053}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + name="garage_spawn_2"; + }; + id=74; + type="Land_HelipadSquare_F"; + }; + class Item69 + { + dataType="Object"; + class PositionInfo + { + position[]={26789.77,20.045813,24677.568}; + angles[]={0.042640556,-2.4434612,0.019999012}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + name="garage_spawn_med"; + }; + id=75; + type="Land_HelipadRescue_F"; + }; + class Item70 + { + dataType="Object"; + class PositionInfo + { + position[]={26616.869,15.110755,24661.656}; + angles[]={0.046633169,2.2689281,0.050623242}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + name="garage_spawn_4"; + }; + id=76; + type="Land_HelipadSquare_F"; + }; + class Item71 + { + dataType="Object"; + class PositionInfo + { + position[]={26736.77,20.429853,24618.402}; + angles[]={0.0080009829,0,0.0039967569}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + name="respawn_obj"; + }; + id=77; + type="Land_HelipadEmpty_F"; + }; + class Item72 + { + dataType="Object"; + class PositionInfo + { + position[]={26851.789,23.113501,24635.127}; + angles[]={0.03731497,2.2863812,0.049293593}; + }; + InEditorATL=9.727478e-005; + side="Empty"; + class Attributes + { + skill=0.60000002; + init="this enableSimulationGlobal false;"; + name="garage_spawner_0"; + }; + id=78; + type="Land_InfoStand_V1_F"; + }; + class Item73 + { + dataType="Object"; + class PositionInfo + { + position[]={26838.754,23.325039,24620.072}; + angles[]={0.069222413,2.2863812,0.018663859}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + init="this enableSimulationGlobal false;"; + name="garage_spawner_1"; + }; + id=79; + type="Land_InfoStand_V1_F"; + }; + class Item74 + { + dataType="Object"; + class PositionInfo + { + position[]={26825.6,23.807907,24604.809}; + angles[]={0.033321146,2.2863812,-0.0013372133}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + init="this enableSimulationGlobal false;"; + name="garage_spawner_2"; + }; + id=80; + type="Land_InfoStand_V1_F"; + }; + class Item75 + { + dataType="Object"; + class PositionInfo + { + position[]={26812.15,24.071131,24588.598}; + angles[]={0.030658109,2.2863812,0.012000273}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + init="this enableSimulationGlobal false;"; + name="garage_spawner_3"; + }; + id=81; + type="Land_InfoStand_V1_F"; + }; + class Item76 + { + dataType="Object"; + class PositionInfo + { + position[]={26625.162,16.208929,24661.652}; + angles[]={0.046631888,-0.87266493,0.055941612}; + }; + InEditorATL=9.8228455e-005; + side="Empty"; + class Attributes + { + skill=0.60000002; + init="this enableSimulationGlobal false;"; + name="garage_spawner_4"; + }; + id=82; + type="Land_InfoStand_V1_F"; + }; + class Item77 + { + dataType="Object"; + class PositionInfo + { + position[]={26697.623,22.281605,24557.924}; + angles[]={0.017329043,0.69813168,0.02666023}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + init="this enableSimulationGlobal false;"; + name="garage_spawner_5"; + }; + id=83; + type="Land_InfoStand_V1_F"; + }; + class Item78 + { + dataType="Object"; + class PositionInfo + { + position[]={26700.02,21.519724,24568.592}; + angles[]={0.027993103,-2.4434612,0.017332481}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + name="garage_spawn_5"; + }; + id=84; + type="Land_HelipadEmpty_F"; + }; + class Item79 + { + dataType="Object"; + class PositionInfo + { + position[]={26722.615,22.624599,24507.516}; + angles[]={-0.0039967569,-0.87266493,0.038647637}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + name="garage_spawn_6"; + }; + id=85; + type="Land_HelipadEmpty_F"; + }; + class Item80 + { + dataType="Object"; + class PositionInfo + { + position[]={26627.004,18.877012,24551.473}; + angles[]={-0.0039967569,2.4434609,0.071875811}; + }; + InEditorATL=0.001083374; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=86; + type="Land_CncBarrier_stripes_F"; + }; + class Item81 + { + dataType="Object"; + class PositionInfo + { + position[]={26630.365,19.105349,24554.289}; + angles[]={0.0013372133,2.4434609,0.066567369}; + }; + InEditorATL=0.00093841553; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=87; + type="Land_CncBarrier_stripes_F"; + }; + class Item82 + { + dataType="Object"; + class PositionInfo + { + position[]={26640.406,19.718681,24562.725}; + angles[]={0.02399601,2.4434609,0.043971907}; + }; + InEditorATL=0.00044631958; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=88; + type="Land_CncBarrier_stripes_F"; + }; + class Item83 + { + dataType="Object"; + class PositionInfo + { + position[]={26637.111,19.55443,24559.947}; + angles[]={0.0053265258,2.4434609,0.057270125}; + }; + InEditorATL=0.00070762634; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=89; + type="Land_CncBarrier_stripes_F"; + }; + class Item84 + { + dataType="Object"; + class PositionInfo + { + position[]={26633.68,19.333591,24557.059}; + angles[]={-0.0039967569,2.4434609,0.066567369}; + }; + InEditorATL=0.00094223022; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=90; + type="Land_CncBarrier_stripes_F"; + }; + class Item85 + { + dataType="Object"; + class PositionInfo + { + position[]={26642.494,19.8151,24562.535}; + angles[]={0.02399601,0.87266463,0.043971907}; + }; + InEditorATL=0.0004940033; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=91; + type="Land_CncBarrier_stripes_F"; + }; + class Item86 + { + dataType="Object"; + class PositionInfo + { + position[]={26653.699,20.373522,24549.168}; + angles[]={-0.02399601,0.87266463,0.063913256}; + }; + InEditorATL=0.0009727478; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=92; + type="Land_CncBarrier_stripes_F"; + }; + class Item87 + { + dataType="Object"; + class PositionInfo + { + position[]={26651.18,20.284212,24552.166}; + angles[]={-0.02399601,0.87266463,0.063913256}; + }; + InEditorATL=0.0009765625; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=93; + type="Land_CncBarrier_stripes_F"; + }; + class Item88 + { + dataType="Object"; + class PositionInfo + { + position[]={26644.922,19.953608,24559.604}; + angles[]={0.010669862,0.87266463,0.043971907}; + }; + InEditorATL=0.00041389465; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=94; + type="Land_CncBarrier_stripes_F"; + }; + class Item89 + { + dataType="Object"; + class PositionInfo + { + position[]={26651.629,20.331345,24552.938}; + angles[]={-0.02399601,0.08726646,0.063913256}; + }; + InEditorATL=0.00077819824; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=95; + type="Land_CncBarrier_stripes_F"; + }; + class Item90 + { + dataType="Object"; + class PositionInfo + { + position[]={26645.879,19.988142,24560.27}; + angles[]={0.010669862,1.6580628,0.043971907}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=96; + type="Land_CncBarrier_stripes_F"; + }; + class Item91 + { + dataType="Object"; + class PositionInfo + { + position[]={26640.102,19.495295,24535.854}; + angles[]={-0.0039967569,2.4434609,0.05461248}; + }; + InEditorATL=0.00059700012; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=97; + type="Land_CncBarrier_stripes_F"; + }; + class Item92 + { + dataType="Object"; + class PositionInfo + { + position[]={26643.455,19.715637,24538.664}; + angles[]={-0.015998369,2.4434609,0.06656827}; + }; + InEditorATL=0.00085258484; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=98; + type="Land_CncBarrier_stripes_F"; + }; + class Item93 + { + dataType="Object"; + class PositionInfo + { + position[]={26653.49,20.326618,24547.09}; + angles[]={-0.0080009829,2.4434609,0.057270125}; + }; + InEditorATL=0.00071525574; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=99; + type="Land_CncBarrier_stripes_F"; + }; + class Item94 + { + dataType="Object"; + class PositionInfo + { + position[]={26650.205,20.12093,24544.326}; + angles[]={0.0026744273,2.4434609,0.046631888}; + }; + InEditorATL=0.00049972534; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=100; + type="Land_CncBarrier_stripes_F"; + }; + class Item95 + { + dataType="Object"; + class PositionInfo + { + position[]={26646.781,19.973452,24541.441}; + angles[]={0.0026744273,2.4434609,0.039979152}; + }; + InEditorATL=0.00033569336; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=101; + type="Land_CncBarrier_stripes_F"; + }; + class Item96 + { + dataType="Object"; + class PositionInfo + { + position[]={26652.732,20.541344,24550.816}; + angles[]={-0.02399601,-2.2689281,0.063913256}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + init="this enableSimulationGlobal false;"; + name="garage_scrap"; + }; + id=102; + type="Land_InfoStand_V1_F"; + }; + class Item97 + { + dataType="Object"; + class PositionInfo + { + position[]={26696.553,19.829868,24644.807}; + angles[]={0,-2.4434612,0.10098849}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + name="cmd_desk"; + }; + id=103; + type="Land_TableDesk_F"; + }; + class Item98 + { + dataType="Object"; + class PositionInfo + { + position[]={26695.916,20.034264,24644.219}; + angles[]={0,-2.4434612,0.10098849}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=104; + type="Land_OfficeChair_01_F"; + }; + class Item99 + { + dataType="Object"; + class PositionInfo + { + position[]={26698.742,20.113899,24646.477}; + angles[]={0.053282689,0.69813168,0.069223277}; + }; + InEditorATL=0.00019454956; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=105; + type="Land_CampingChair_V1_F"; + }; + class Item100 + { + dataType="Object"; + class PositionInfo + { + position[]={26697.992,20.030209,24647.07}; + angles[]={0.053282689,0.69813168,0.069223277}; + }; + InEditorATL=0.00019454956; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=106; + type="Land_CampingChair_V1_F"; + }; + class Item101 + { + dataType="Object"; + class PositionInfo + { + position[]={26697.137,19.931568,24647.76}; + angles[]={0.021328852,0.69813168,0.10098849}; + }; + InEditorATL=9.727478e-005; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=107; + type="Land_CampingChair_V1_F"; + }; + class Item102 + { + dataType="Object"; + class PositionInfo + { + position[]={26693.842,19.540474,24650.438}; + angles[]={0.021328852,0.69813168,0.10098849}; + }; + InEditorATL=9.727478e-005; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=108; + type="Land_CampingChair_V1_F"; + }; + class Item103 + { + dataType="Object"; + class PositionInfo + { + position[]={26696.34,19.837809,24648.373}; + angles[]={0.021328852,0.69813168,0.10098849}; + }; + InEditorATL=9.727478e-005; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=109; + type="Land_CampingChair_V1_F"; + }; + class Item104 + { + dataType="Object"; + class PositionInfo + { + position[]={26694.592,19.629635,24649.824}; + angles[]={0.021328852,0.69813168,0.10098849}; + }; + InEditorATL=9.727478e-005; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=110; + type="Land_CampingChair_V1_F"; + }; + class Item105 + { + dataType="Object"; + class PositionInfo + { + position[]={26695.455,19.733044,24649.074}; + angles[]={0.021328852,0.69813168,0.10098849}; + }; + InEditorATL=9.727478e-005; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=111; + type="Land_CampingChair_V1_F"; + }; + class Item106 + { + dataType="Object"; + class PositionInfo + { + position[]={26696.553,20.404539,24644.777}; + angles[]={0,-2.4434612,0.10098849}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + init="this attachTo[cmd_desk,[0,0,0.58]];"; + name="cmd_laptop"; + }; + id=112; + type="Land_Laptop_unfolded_F"; + }; + class Item107 + { + dataType="Object"; + class PositionInfo + { + position[]={26781.289,20.474657,24676.15}; + angles[]={0.030658109,0.69813168,0.021331646}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + init="this enableSimulationGlobal false;"; + name="garage_spawner_med"; + }; + id=113; + type="Land_InfoStand_V1_F"; + }; + class Item108 + { + dataType="Object"; + class PositionInfo + { + position[]={26677.547,21.363718,24575.18}; + angles[]={0.019999012,0.69813168,0.030658109}; + }; + InEditorATL=9.727478e-005; + side="Empty"; + class Attributes + { + skill=0.60000002; + init="this enableSimulationGlobal false;_action = this addAction[""Spawn FOB"",{[{[]spawn JOC_fobSpawn},""BIS_fnc_spawn"",false,false] call BIS_fnc_MP;}];"; + name="fob_spawner"; + }; + id=114; + type="Land_InfoStand_V1_F"; + }; + class Item109 + { + dataType="Object"; + class PositionInfo + { + position[]={26644.076,16.950621,24650.637}; + angles[]={0.033321146,-2.4434612,0.041309625}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + name="logiSpawn_0"; + }; + id=115; + type="Land_HelipadEmpty_F"; + }; + class Item110 + { + dataType="Object"; + class PositionInfo + { + position[]={26648.682,16.888273,24656.238}; + angles[]={0.031988446,-2.4434612,-0.018663859}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + name="logiSpawn_1"; + }; + id=116; + type="Land_HelipadEmpty_F"; + }; + class Item111 + { + dataType="Object"; + class PositionInfo + { + position[]={26652.535,16.932177,24661.273}; + angles[]={0.035984326,-2.4434612,0.037316564}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + name="logiSpawn_2"; + }; + id=117; + type="Land_HelipadEmpty_F"; + }; + class Item112 + { + dataType="Object"; + class PositionInfo + { + position[]={26635.229,16.312897,24658.033}; + angles[]={0.033321146,-2.4434612,0.046631888}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + name="logiSpawn_3"; + }; + id=118; + type="Land_HelipadEmpty_F"; + }; + class Item113 + { + dataType="Object"; + class PositionInfo + { + position[]={26639.779,16.327471,24663.541}; + angles[]={0.037316564,-2.4434612,0.046633169}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + name="logiSpawn_4"; + }; + id=119; + type="Land_HelipadEmpty_F"; + }; + class Item114 + { + dataType="Object"; + class PositionInfo + { + position[]={26643.854,16.254807,24668.561}; + angles[]={0.09834861,-2.4434612,0.043970551}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + name="logiSpawn_5"; + }; + id=120; + type="Land_HelipadEmpty_F"; + }; + class Item115 + { + dataType="Object"; + class PositionInfo + { + position[]={26641.783,17.660604,24644.084}; + angles[]={0.035984326,0.69813168,0.039979152}; + }; + InEditorATL=9.727478e-005; + side="Empty"; + class Attributes + { + skill=0.60000002; + init="this enableSimulationGlobal false;"; + name="logiSpawner"; + }; + id=121; + type="Land_InfoStand_V1_F"; + }; + class Item116 + { + dataType="Object"; + class PositionInfo + { + position[]={26669.146,20.139309,24620.299}; + angles[]={0.038647637,0.69813168,0.031988446}; + }; + InEditorATL=0.0015239716; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=122; + type="Land_HBarrierBig_F"; + }; + class Item117 + { + dataType="Object"; + class PositionInfo + { + position[]={26675.178,20.352699,24615.291}; + angles[]={0.038646095,0.69813168,-0.0013372133}; + }; + InEditorATL=0.00093269348; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=123; + type="Land_HBarrierBig_F"; + }; + class Item118 + { + dataType="Object"; + class PositionInfo + { + position[]={26665.861,19.774521,24626.799}; + angles[]={0.02399601,2.2689281,0.049293593}; + }; + InEditorATL=0.0018558502; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=124; + type="Land_HBarrierBig_F"; + }; + class Item119 + { + dataType="Object"; + class PositionInfo + { + position[]={26670.248,19.793587,24632.041}; + angles[]={0.054611389,2.2689281,0.013332055}; + }; + InEditorATL=0.0018749237; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=125; + type="Land_HBarrierBig_F"; + }; + class Item120 + { + dataType="Object"; + class PositionInfo + { + position[]={26675.15,19.651974,24638.211}; + angles[]={0.16255316,2.2689281,0.050624419}; + }; + InEditorATL=0.017723083; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=126; + type="Land_HBarrierBig_F"; + }; + class Item121 + { + dataType="Object"; + class PositionInfo + { + position[]={26688.549,19.747368,24648.633}; + angles[]={0.086450629,2.2689281,0.041309625}; + }; + InEditorATL=0.0056209564; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=127; + type="Land_HBarrierBig_F"; + }; + class Item122 + { + dataType="Object"; + class PositionInfo + { + position[]={26693.645,19.965939,24654.498}; + angles[]={0.090419561,2.2689281,0.069222413}; + }; + InEditorATL=0.0077552795; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=128; + type="Land_HBarrierBig_F"; + }; + class Item123 + { + dataType="Object"; + class PositionInfo + { + position[]={26698.686,19.703529,24660.568}; + angles[]={0.22796687,2.2689281,0.067895547}; + }; + InEditorATL=0.034919739; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=129; + type="Land_HBarrierBig_F"; + }; + class Item124 + { + dataType="Object"; + class PositionInfo + { + position[]={26712.75,20.658073,24659.158}; + angles[]={0.038647637,0.69813168,0.051953323}; + }; + InEditorATL=0.0025005341; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=130; + type="Land_HBarrierBig_F"; + }; + class Item125 + { + dataType="Object"; + class PositionInfo + { + position[]={26707.193,19.922703,24663.906}; + angles[]={0.10494626,0.69813168,0.089096971}; + }; + InEditorATL=0.011608124; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=131; + type="Land_HBarrierBig_F"; + }; + class Item126 + { + dataType="Object"; + class PositionInfo + { + position[]={26701.867,19.417488,24664.498}; + angles[]={0.1325518,2.2689281,0.061256282}; + }; + InEditorATL=0.012792587; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=132; + type="Land_HBarrierBig_F"; + }; + class Item127 + { + dataType="Object"; + class PositionInfo + { + position[]={26681.082,20.730995,24610.381}; + angles[]={0.069222413,0.69813168,0.013332055}; + }; + InEditorATL=0.0030422211; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=133; + type="Land_HBarrierBig_F"; + }; + class Item128 + { + dataType="Object"; + class PositionInfo + { + position[]={26717.965,21.082314,24660.568}; + angles[]={0.0026744273,2.2689281,0.11285125}; + }; + InEditorATL=0.0076503754; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=134; + type="Land_HBarrierBig_F"; + }; + class Item129 + { + dataType="Object"; + class PositionInfo + { + position[]={26722.988,21.841339,24666.428}; + angles[]={-0.034652505,2.2689281,0.053282689}; + }; + InEditorATL=0.0024013519; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=135; + type="Land_HBarrierBig_F"; + }; + class Item130 + { + dataType="Object"; + class PositionInfo + { + position[]={26728.176,21.593719,24672.469}; + angles[]={0.041309625,2.2689281,0.039977662}; + }; + InEditorATL=0.0020751953; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=136; + type="Land_HBarrierBig_F"; + }; + class Item131 + { + dataType="Object"; + class PositionInfo + { + position[]={26733.268,21.3008,24678.457}; + angles[]={0.074527748,2.2689281,-0.0013372133}; + }; + InEditorATL=0.0034198761; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=137; + type="Land_HBarrierBig_F"; + }; + class Item132 + { + dataType="Object"; + class PositionInfo + { + position[]={26738.203,21.308601,24684.379}; + angles[]={0.051954471,2.2689281,0.0066771582}; + }; + InEditorATL=0.0016880035; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=138; + type="Land_HBarrierBig_F"; + }; + class Item133 + { + dataType="Object"; + class PositionInfo + { + position[]={26743.035,21.131702,24690.359}; + angles[]={0.15214813,2.2689281,0.029324362}; + }; + InEditorATL=0.014591217; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=139; + type="Land_HBarrierBig_F"; + }; + class Item134 + { + dataType="Object"; + class PositionInfo + { + position[]={26748.311,20.317707,24696.5}; + angles[]={0.12074303,2.2689281,0.017332481}; + }; + InEditorATL=0.0092105865; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=140; + type="Land_HBarrierBig_F"; + }; + class Item135 + { + dataType="Object"; + class PositionInfo + { + position[]={26753.41,19.64642,24702.498}; + angles[]={0.12468291,2.2689281,0.0039967569}; + }; + InEditorATL=0.0092868805; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=141; + type="Land_HBarrierBig_F"; + }; + class Item136 + { + dataType="Object"; + class PositionInfo + { + position[]={26767.842,20.115253,24699.619}; + angles[]={0.082478598,2.2689281,-0.010664274}; + }; + InEditorATL=0.0041904449; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=142; + type="Land_HBarrierBig_F"; + }; + class Item137 + { + dataType="Object"; + class PositionInfo + { + position[]={26862.494,27.486324,24486.031}; + angles[]={0.013332055,2.2689281,0.0053265258}; + }; + InEditorATL=0.00012779236; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=143; + type="Land_HBarrierBig_F"; + }; + class Item138 + { + dataType="Object"; + class PositionInfo + { + position[]={26846.193,27.516174,24475.641}; + angles[]={0.02666023,2.2689281,0.010664274}; + }; + InEditorATL=0.00055122375; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=144; + type="Land_HBarrierBig_F"; + }; + class Item139 + { + dataType="Object"; + class PositionInfo + { + position[]={26849.047,27.469933,24479.404}; + angles[]={0.022659576,2.2689281,0.014660771}; + }; + InEditorATL=0.00041007996; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=145; + type="Land_HBarrierBig_F"; + }; + class Item140 + { + dataType="Object"; + class PositionInfo + { + position[]={26854.092,27.425385,24485.475}; + angles[]={0.010664274,2.2689281,0.010664274}; + }; + InEditorATL=0.00015258789; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=146; + type="Land_HBarrierBig_F"; + }; + class Item141 + { + dataType="Object"; + class PositionInfo + { + position[]={26858.379,27.464485,24485.873}; + angles[]={0.010664274,0.69813168,0.0080009829}; + }; + InEditorATL=9.727478e-005; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=147; + type="Land_HBarrierBig_F"; + }; + class Item142 + { + dataType="Object"; + class PositionInfo + { + position[]={26686.932,21.036758,24605.42}; + angles[]={0.043971907,0.69813168,-0.018667053}; + }; + InEditorATL=0.001411438; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=148; + type="Land_HBarrierBig_F"; + }; + class Item143 + { + dataType="Object"; + class PositionInfo + { + position[]={26692.924,21.172043,24600.375}; + angles[]={0.019999012,0.69813168,0.021331646}; + }; + InEditorATL=0.00052642822; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=149; + type="Land_HBarrierBig_F"; + }; + class Item144 + { + dataType="Object"; + class PositionInfo + { + position[]={26698.961,21.588936,24595.355}; + angles[]={0.059928458,0.69813168,0.021331646}; + }; + InEditorATL=0.0024719238; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=150; + type="Land_HBarrierBig_F"; + }; + class Item145 + { + dataType="Object"; + class PositionInfo + { + position[]={26705.268,21.899906,24590.188}; + angles[]={0.021328852,0.69813168,0.013332055}; + }; + InEditorATL=0.0003452301; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=151; + type="Land_HBarrierBig_F"; + }; + class Item146 + { + dataType="Object"; + class PositionInfo + { + position[]={26711.479,22.030773,24585.008}; + angles[]={0.055941612,0.69813168,-0.0026520467}; + }; + InEditorATL=0.0015850067; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=152; + type="Land_HBarrierBig_F"; + }; + class Item147 + { + dataType="Object"; + class PositionInfo + { + position[]={26717.563,22.318352,24579.887}; + angles[]={0.055940546,0.69813168,0.0039967569}; + }; + InEditorATL=0.0018100739; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=153; + type="Land_HBarrierBig_F"; + }; + class Item148 + { + dataType="Object"; + class PositionInfo + { + position[]={26723.697,22.679558,24574.734}; + angles[]={0.070548877,0.69813168,0.0093350215}; + }; + InEditorATL=0.0029773712; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=154; + type="Land_HBarrierBig_F"; + }; + class Item149 + { + dataType="Object"; + class PositionInfo + { + position[]={26735.779,23.317089,24564.658}; + angles[]={0.035982672,0.69813168,0.0093286335}; + }; + InEditorATL=0.00085258484; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=155; + type="Land_HBarrierBig_F"; + }; + class Item150 + { + dataType="Object"; + class PositionInfo + { + position[]={26753.734,24.015385,24549.797}; + angles[]={0.031988446,0.69813168,0.014664836}; + }; + InEditorATL=0.00079345703; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=156; + type="Land_HBarrierBig_F"; + }; + class Item151 + { + dataType="Object"; + class PositionInfo + { + position[]={26759.816,24.259899,24544.705}; + angles[]={0.029326396,0.69813168,0.014664836}; + }; + InEditorATL=0.000623703; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=157; + type="Land_HBarrierBig_F"; + }; + class Item152 + { + dataType="Object"; + class PositionInfo + { + position[]={26765.852,24.510555,24539.66}; + angles[]={0.025327841,0.69813168,0.017332481}; + }; + InEditorATL=0.00053977966; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=158; + type="Land_HBarrierBig_F"; + }; + class Item153 + { + dataType="Object"; + class PositionInfo + { + position[]={26771.748,24.74387,24534.711}; + angles[]={0.025327841,0.69813168,0.018663859}; + }; + InEditorATL=0.00057601929; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=159; + type="Land_HBarrierBig_F"; + }; + class Item154 + { + dataType="Object"; + class PositionInfo + { + position[]={26777.691,24.987419,24529.762}; + angles[]={0.025327841,0.69813168,0.021328852}; + }; + InEditorATL=0.00061035156; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=160; + type="Land_HBarrierBig_F"; + }; + class Item155 + { + dataType="Object"; + class PositionInfo + { + position[]={26783.678,25.251743,24524.799}; + angles[]={0.015998369,0.69813168,0.031988446}; + }; + InEditorATL=0.00081634521; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=161; + type="Land_HBarrierBig_F"; + }; + class Item156 + { + dataType="Object"; + class PositionInfo + { + position[]={26789.578,25.520454,24519.805}; + angles[]={0.015998369,0.69813168,0.031988446}; + }; + InEditorATL=0.00081634521; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=162; + type="Land_HBarrierBig_F"; + }; + class Item157 + { + dataType="Object"; + class PositionInfo + { + position[]={26795.631,25.71587,24514.756}; + angles[]={0.012000273,0.69813168,0.019996032}; + }; + InEditorATL=0.00030899048; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=163; + type="Land_HBarrierBig_F"; + }; + class Item158 + { + dataType="Object"; + class PositionInfo + { + position[]={26801.602,25.822327,24509.771}; + angles[]={0.027993103,0.69813168,0.0013372133}; + }; + InEditorATL=0.00049781799; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=164; + type="Land_HBarrierBig_F"; + }; + class Item159 + { + dataType="Object"; + class PositionInfo + { + position[]={26807.467,25.987637,24504.736}; + angles[]={0.027990974,0.69813168,0.0080009829}; + }; + InEditorATL=0.00054168701; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=165; + type="Land_HBarrierBig_F"; + }; + class Item160 + { + dataType="Object"; + class PositionInfo + { + position[]={26813.332,26.198856,24499.801}; + angles[]={0.034652505,0.69813168,0.017332481}; + }; + InEditorATL=0.00091743469; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=166; + type="Land_HBarrierBig_F"; + }; + class Item161 + { + dataType="Object"; + class PositionInfo + { + position[]={26819.205,26.473194,24494.746}; + angles[]={0.025327841,0.69813168,0.017332481}; + }; + InEditorATL=0.00053596497; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=167; + type="Land_HBarrierBig_F"; + }; + class Item162 + { + dataType="Object"; + class PositionInfo + { + position[]={26825.125,26.732956,24489.627}; + angles[]={0.025327841,0.69813168,0.022662206}; + }; + InEditorATL=0.00064849854; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=168; + type="Land_HBarrierBig_F"; + }; + class Item163 + { + dataType="Object"; + class PositionInfo + { + position[]={26831.027,26.974358,24484.57}; + angles[]={0.019999012,0.69813168,0.021331646}; + }; + InEditorATL=0.00052833557; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=169; + type="Land_HBarrierBig_F"; + }; + class Item164 + { + dataType="Object"; + class PositionInfo + { + position[]={26836.965,27.217022,24479.582}; + angles[]={0.02666023,0.69813168,0.027990974}; + }; + InEditorATL=0.00082588196; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=170; + type="Land_HBarrierBig_F"; + }; + class Item165 + { + dataType="Object"; + class PositionInfo + { + position[]={26842.004,27.468273,24475.451}; + angles[]={0.02666023,0.69813168,0.027990974}; + }; + InEditorATL=0.00082778931; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=171; + type="Land_HBarrierBig_F"; + }; + class Item166 + { + dataType="Object"; + class PositionInfo + { + position[]={26748.537,24.120583,24543.605}; + angles[]={0.02399601,0.69813168,0.015998369}; + }; + InEditorATL=0.00055503845; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=172; + type="Land_HBarrierBig_F"; + }; + class Item167 + { + dataType="Object"; + class PositionInfo + { + position[]={26754.59,24.33939,24538.641}; + angles[]={0.02399601,0.69813168,0.017332481}; + }; + InEditorATL=0.00053787231; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=173; + type="Land_HBarrierBig_F"; + }; + class Item168 + { + dataType="Object"; + class PositionInfo + { + position[]={26760.488,24.563332,24533.598}; + angles[]={0.02399601,0.69813168,0.018663859}; + }; + InEditorATL=0.00057220459; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=174; + type="Land_HBarrierBig_F"; + }; + class Item169 + { + dataType="Object"; + class PositionInfo + { + position[]={26766.479,24.79826,24528.469}; + angles[]={0.02399601,0.69813168,0.018663859}; + }; + InEditorATL=0.00057411194; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=175; + type="Land_HBarrierBig_F"; + }; + class Item170 + { + dataType="Object"; + class PositionInfo + { + position[]={26772.652,25.049107,24523.105}; + angles[]={0.02399601,0.73303831,0.019996032}; + }; + InEditorATL=0.00057983398; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=176; + type="Land_HBarrierBig_F"; + }; + class Item171 + { + dataType="Object"; + class PositionInfo + { + position[]={26778.414,25.297695,24517.93}; + angles[]={0.023993526,0.73303831,0.022662206}; + }; + InEditorATL=0.00061798096; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=177; + type="Land_HBarrierBig_F"; + }; + class Item172 + { + dataType="Object"; + class PositionInfo + { + position[]={26784.357,25.559025,24512.479}; + angles[]={0.022662206,0.73303831,0.023993526}; + }; + InEditorATL=0.00061607361; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=178; + type="Land_HBarrierBig_F"; + }; + class Item173 + { + dataType="Object"; + class PositionInfo + { + position[]={26790.314,25.818859,24507.164}; + angles[]={0.022662206,0.73303831,0.013332055}; + }; + InEditorATL=0.0004119873; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=179; + type="Land_HBarrierBig_F"; + }; + class Item174 + { + dataType="Object"; + class PositionInfo + { + position[]={26795.994,26.017086,24501.908}; + angles[]={0.027993103,0.73303831,0.013336525}; + }; + InEditorATL=0.00059700012; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=180; + type="Land_HBarrierBig_F"; + }; + class Item175 + { + dataType="Object"; + class PositionInfo + { + position[]={26801.9,26.199585,24496.732}; + angles[]={0.027993103,0.73303831,0.0039967569}; + }; + InEditorATL=0.00053024292; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=181; + type="Land_HBarrierBig_F"; + }; + class Item176 + { + dataType="Object"; + class PositionInfo + { + position[]={26807.977,26.399456,24491.406}; + angles[]={0.031988446,0.73303831,0.0080009829}; + }; + InEditorATL=0.00067710876; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=182; + type="Land_HBarrierBig_F"; + }; + class Item177 + { + dataType="Object"; + class PositionInfo + { + position[]={26813.871,26.619228,24486.184}; + angles[]={0.033321146,0.73303831,0.010669862}; + }; + InEditorATL=0.00052261353; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=183; + type="Land_HBarrierBig_F"; + }; + class Item178 + { + dataType="Object"; + class PositionInfo + { + position[]={26819.814,26.85968,24480.961}; + angles[]={0.029326396,0.73303831,0.014664836}; + }; + InEditorATL=0.00059127808; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=184; + type="Land_HBarrierBig_F"; + }; + class Item179 + { + dataType="Object"; + class PositionInfo + { + position[]={26825.533,27.11665,24475.881}; + angles[]={0.033321146,0.73303831,0.015998369}; + }; + InEditorATL=0.00081825256; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=185; + type="Land_HBarrierBig_F"; + }; + class Item180 + { + dataType="Object"; + class PositionInfo + { + position[]={26831.523,27.418053,24470.633}; + angles[]={0.049293593,0.73303831,0.016002094}; + }; + InEditorATL=0.0016098022; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=186; + type="Land_HBarrierBig_F"; + }; + class Item181 + { + dataType="Object"; + class PositionInfo + { + position[]={26837.383,27.766224,24465.412}; + angles[]={0.049292382,0.73303831,0.014664836}; + }; + InEditorATL=0.0016727448; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=187; + type="Land_HBarrierBig_F"; + }; + class Item182 + { + dataType="Object"; + class PositionInfo + { + position[]={26841.363,27.925442,24461.779}; + angles[]={0.025327841,0.73303831,0.0146689}; + }; + InEditorATL=0.00054359436; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=188; + type="Land_HBarrierBig_F"; + }; + class Item183 + { + dataType="Object"; + class PositionInfo + { + position[]={26848.26,27.707355,24469.836}; + angles[]={0.031986579,0.73303831,0.010664274}; + }; + InEditorATL=0.00071525574; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=189; + type="Land_HBarrierBig_F"; + }; + class Item184 + { + dataType="Object"; + class PositionInfo + { + position[]={26867.354,27.380947,24491.727}; + angles[]={0.027990974,2.2863812,0.0080009829}; + }; + InEditorATL=0.00049209595; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=190; + type="Land_HBarrierBig_F"; + }; + class Item185 + { + dataType="Object"; + class PositionInfo + { + position[]={26872.469,27.270535,24497.59}; + angles[]={0.034652505,2.2863812,0.022662206}; + }; + InEditorATL=0.0010185242; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=191; + type="Land_HBarrierBig_F"; + }; + class Item186 + { + dataType="Object"; + class PositionInfo + { + position[]={26877.732,27.183483,24503.582}; + angles[]={0.033319358,2.2863812,0.022662206}; + }; + InEditorATL=0.00099945068; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=192; + type="Land_HBarrierBig_F"; + }; + class Item187 + { + dataType="Object"; + class PositionInfo + { + position[]={26882.98,27.182861,24509.568}; + angles[]={0.023993526,2.2863812,0.03731497}; + }; + InEditorATL=0.001247406; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=193; + type="Land_HBarrierBig_F"; + }; + class Item188 + { + dataType="Object"; + class PositionInfo + { + position[]={26888.211,27.272968,24515.414}; + angles[]={0.015998369,2.2863812,0.02666023}; + }; + InEditorATL=0.00060653687; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=194; + type="Land_HBarrierBig_F"; + }; + class Item189 + { + dataType="Object"; + class PositionInfo + { + position[]={26893.438,27.283978,24521.369}; + angles[]={0.02399601,2.2863812,0.047963165}; + }; + InEditorATL=0.0018501282; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=195; + type="Land_HBarrierBig_F"; + }; + class Item190 + { + dataType="Object"; + class PositionInfo + { + position[]={26898.529,27.303394,24527.281}; + angles[]={0.043970551,2.2863812,0.03731497}; + }; + InEditorATL=0.0020637512; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=196; + type="Land_HBarrierBig_F"; + }; + class Item191 + { + dataType="Object"; + class PositionInfo + { + position[]={26903.613,27.208843,24533.104}; + angles[]={0.070549726,2.2863812,0.042640556}; + }; + InEditorATL=0.0039653778; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=197; + type="Land_HBarrierBig_F"; + }; + class Item192 + { + dataType="Object"; + class PositionInfo + { + position[]={26908.682,27.012974,24538.936}; + angles[]={0.070549726,2.2863812,0.042641956}; + }; + InEditorATL=0.0039672852; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=198; + type="Land_HBarrierBig_F"; + }; + class Item193 + { + dataType="Object"; + class PositionInfo + { + position[]={26913.715,26.967987,24544.686}; + angles[]={0.057271164,2.2863812,0.046633169}; + }; + InEditorATL=0.003276825; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=199; + type="Land_HBarrierBig_F"; + }; + class Item194 + { + dataType="Object"; + class PositionInfo + { + position[]={26918.846,26.891388,24550.625}; + angles[]={0.049293593,2.2863812,0.046633169}; + }; + InEditorATL=0.0026950836; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=200; + type="Land_HBarrierBig_F"; + }; + class Item195 + { + dataType="Object"; + class PositionInfo + { + position[]={26924.07,26.812195,24556.602}; + angles[]={0.069223277,2.2863812,0.043971907}; + }; + InEditorATL=0.0041275024; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=201; + type="Land_HBarrierBig_F"; + }; + class Item196 + { + dataType="Object"; + class PositionInfo + { + position[]={26929.213,26.580887,24562.453}; + angles[]={0.063912325,2.2863812,0.031990308}; + }; + InEditorATL=0.0030765533; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=202; + type="Land_HBarrierBig_F"; + }; + class Item197 + { + dataType="Object"; + class PositionInfo + { + position[]={26934.453,26.37495,24568.266}; + angles[]={0.059928458,2.2863812,0.014664836}; + }; + InEditorATL=0.0022563934; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=203; + type="Land_HBarrierBig_F"; + }; + class Item198 + { + dataType="Object"; + class PositionInfo + { + position[]={26939.648,26.128109,24574.346}; + angles[]={0.049292382,2.2863812,0.02666023}; + }; + InEditorATL=0.0018844604; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=204; + type="Land_HBarrierBig_F"; + }; + class Item199 + { + dataType="Object"; + class PositionInfo + { + position[]={26944.768,25.937061,24580.258}; + angles[]={0.057270125,2.2863812,0.031988446}; + }; + InEditorATL=0.0026321411; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=205; + type="Land_HBarrierBig_F"; + }; + class Item200 + { + dataType="Object"; + class PositionInfo + { + position[]={26949.971,25.720474,24586.117}; + angles[]={0.05461248,2.2863812,0.012000273}; + }; + InEditorATL=0.0019702911; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=206; + type="Land_HBarrierBig_F"; + }; + class Item201 + { + dataType="Object"; + class PositionInfo + { + position[]={26955.004,25.483986,24591.881}; + angles[]={0.051952176,2.2863812,0.014664836}; + }; + InEditorATL=0.001832962; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=207; + type="Land_HBarrierBig_F"; + }; + class Item202 + { + dataType="Object"; + class PositionInfo + { + position[]={26960.004,25.291496,24597.645}; + angles[]={0.049292382,2.2863812,0.02666023}; + }; + InEditorATL=0.001832962; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=208; + type="Land_HBarrierBig_F"; + }; + class Item203 + { + dataType="Object"; + class PositionInfo + { + position[]={26964.979,25.052341,24603.297}; + angles[]={0.06258551,2.2863812,0.0066682254}; + }; + InEditorATL=0.0024719238; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=209; + type="Land_HBarrierBig_F"; + }; + class Item204 + { + dataType="Object"; + class PositionInfo + { + position[]={26969.898,24.881836,24609.076}; + angles[]={0.035984326,2.2514746,0.025325486}; + }; + InEditorATL=0.0012111664; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=210; + type="Land_HBarrierBig_F"; + }; + class Item205 + { + dataType="Object"; + class PositionInfo + { + position[]={26974.582,24.75996,24614.826}; + angles[]={0.022662206,2.2514746,0.018663859}; + }; + InEditorATL=0.00050926208; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=211; + type="Land_HBarrierBig_F"; + }; + class Item206 + { + dataType="Object"; + class PositionInfo + { + position[]={26979.506,24.631996,24620.912}; + angles[]={0.019996032,2.2514746,0}; + }; + InEditorATL=0.00028419495; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=212; + type="Land_HBarrierBig_F"; + }; + class Item207 + { + dataType="Object"; + class PositionInfo + { + position[]={26984.389,24.514214,24626.834}; + angles[]={0.015998369,2.2689281,0.027993103}; + }; + InEditorATL=0.00066184998; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=213; + type="Land_HBarrierBig_F"; + }; + class Item208 + { + dataType="Object"; + class PositionInfo + { + position[]={26989.242,24.380184,24632.57}; + angles[]={0.027993103,2.2689281,-0.0066682254}; + }; + InEditorATL=0.00046539307; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=214; + type="Land_HBarrierBig_F"; + }; + class Item209 + { + dataType="Object"; + class PositionInfo + { + position[]={26994.141,24.337425,24638.477}; + angles[]={0.029324362,2.2689281,-0.0026520467}; + }; + InEditorATL=0.0004863739; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=215; + type="Land_HBarrierBig_F"; + }; + class Item210 + { + dataType="Object"; + class PositionInfo + { + position[]={26998.572,24.243591,24644.068}; + angles[]={0.013332055,2.2863812,0.013332055}; + }; + InEditorATL=0.000207901; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=216; + type="Land_HBarrierBig_F"; + }; + class Item211 + { + dataType="Object"; + class PositionInfo + { + position[]={27003.84,24.155487,24650.057}; + angles[]={0.0080009829,2.2863812,0.0093286335}; + }; + InEditorATL=9.3460083e-005; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=217; + type="Land_HBarrierBig_F"; + }; + class Item212 + { + dataType="Object"; + class PositionInfo + { + position[]={27009.121,24.08765,24656.068}; + angles[]={0.021328852,2.2863812,-0.0039967569}; + }; + InEditorATL=0.00031280518; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=218; + type="Land_HBarrierBig_F"; + }; + class Item213 + { + dataType="Object"; + class PositionInfo + { + position[]={27014.313,24.004555,24661.912}; + angles[]={0.012000273,2.2863812,0.018663859}; + }; + InEditorATL=0.00033378601; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=219; + type="Land_HBarrierBig_F"; + }; + class Item214 + { + dataType="Object"; + class PositionInfo + { + position[]={27019.586,23.945503,24667.879}; + angles[]={0.029324362,2.2863812,0.0013372133}; + }; + InEditorATL=0.0005607605; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=220; + type="Land_HBarrierBig_F"; + }; + class Item215 + { + dataType="Object"; + class PositionInfo + { + position[]={27024.664,23.849628,24673.738}; + angles[]={0.0053265258,2.2863812,0.0013372133}; + }; + InEditorATL=2.2888184e-005; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=221; + type="Land_HBarrierBig_F"; + }; + class Item216 + { + dataType="Object"; + class PositionInfo + { + position[]={27029.742,23.804714,24679.533}; + angles[]={0.0093286335,2.2863812,0.011995304}; + }; + InEditorATL=0.00010681152; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=222; + type="Land_HBarrierBig_F"; + }; + class Item217 + { + dataType="Object"; + class PositionInfo + { + position[]={27034.811,23.742332,24685.363}; + angles[]={0.0066682254,2.2863812,0.010664274}; + }; + InEditorATL=9.5367432e-005; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=223; + type="Land_HBarrierBig_F"; + }; + class Item218 + { + dataType="Object"; + class PositionInfo + { + position[]={27039.861,23.73111,24691.133}; + angles[]={0.010664274,2.2863812,0.0013372133}; + }; + InEditorATL=5.1498413e-005; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=224; + type="Land_HBarrierBig_F"; + }; + class Item219 + { + dataType="Object"; + class PositionInfo + { + position[]={27044.986,23.712208,24697.076}; + angles[]={0.0053265258,2.2863812,0.0066682254}; + }; + InEditorATL=3.8146973e-005; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=225; + type="Land_HBarrierBig_F"; + }; + class Item220 + { + dataType="Object"; + class PositionInfo + { + position[]={27050.201,23.737221,24703.018}; + angles[]={-0.0026520467,2.2863812,0.012000273}; + }; + InEditorATL=8.2015991e-005; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=226; + type="Land_HBarrierBig_F"; + }; + class Item221 + { + dataType="Object"; + class PositionInfo + { + position[]={27055.336,23.778591,24708.883}; + angles[]={0.0026520467,2.2863812,0.0066682254}; + }; + InEditorATL=2.6702881e-005; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=227; + type="Land_HBarrierBig_F"; + }; + class Item222 + { + dataType="Object"; + class PositionInfo + { + position[]={27060.543,23.887657,24714.691}; + angles[]={-0.0039967569,2.2863812,0.015998369}; + }; + InEditorATL=0.00018310547; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=228; + type="Land_HBarrierBig_F"; + }; + class Item223 + { + dataType="Object"; + class PositionInfo + { + position[]={27065.748,24.015507,24720.801}; + angles[]={0.0093350215,2.2863812,0.021328852}; + }; + InEditorATL=0.00033569336; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=229; + type="Land_HBarrierBig_F"; + }; + class Item224 + { + dataType="Object"; + class PositionInfo + { + position[]={27070.875,24.094505,24726.688}; + angles[]={-0.0039967569,2.2863812,0.019996032}; + }; + InEditorATL=0.00022125244; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=230; + type="Land_HBarrierBig_F"; + }; + class Item225 + { + dataType="Object"; + class PositionInfo + { + position[]={27076.061,24.187515,24732.557}; + angles[]={0.0013372133,2.2863812,0.013332055}; + }; + InEditorATL=9.9182129e-005; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=231; + type="Land_HBarrierBig_F"; + }; + class Item226 + { + dataType="Object"; + class PositionInfo + { + position[]={27081.109,24.12743,24738.34}; + angles[]={0.014664836,2.2863812,0.0026520467}; + }; + InEditorATL=0.00014877319; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=232; + type="Land_HBarrierBig_F"; + }; + class Item227 + { + dataType="Object"; + class PositionInfo + { + position[]={27086.129,24.050819,24744.104}; + angles[]={0.012000273,2.2863812,0}; + }; + InEditorATL=6.8664551e-005; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=233; + type="Land_HBarrierBig_F"; + }; + class Item228 + { + dataType="Object"; + class PositionInfo + { + position[]={27091.074,24.023598,24749.727}; + angles[]={0.0026520467,2.2863812,0.0026520467}; + }; + InEditorATL=5.7220459e-006; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=234; + type="Land_HBarrierBig_F"; + }; + class Item229 + { + dataType="Object"; + class PositionInfo + { + position[]={27096.016,24.026695,24755.537}; + angles[]={0.0013372133,2.2514746,0.0039967569}; + }; + InEditorATL=1.335144e-005; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=235; + type="Land_HBarrierBig_F"; + }; + class Item230 + { + dataType="Object"; + class PositionInfo + { + position[]={27100.701,23.991814,24761.313}; + angles[]={0.0066682254,2.2514746,-0.0039967569}; + }; + InEditorATL=5.1498413e-005; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=236; + type="Land_HBarrierBig_F"; + }; + class Item231 + { + dataType="Object"; + class PositionInfo + { + position[]={27105.605,23.950802,24767.4}; + angles[]={0.0066682254,2.2514746,-0.0053265258}; + }; + InEditorATL=5.1498413e-005; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=237; + type="Land_HBarrierBig_F"; + }; + class Item232 + { + dataType="Object"; + class PositionInfo + { + position[]={27110.518,23.902725,24773.332}; + angles[]={0.011995304,2.2689281,-0.0013372133}; + }; + InEditorATL=8.0108643e-005; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=238; + type="Land_HBarrierBig_F"; + }; + class Item233 + { + dataType="Object"; + class PositionInfo + { + position[]={27115.328,23.870045,24779.047}; + angles[]={0.0039967569,2.2689281,-0.0013372133}; + }; + InEditorATL=9.5367432e-006; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=239; + type="Land_HBarrierBig_F"; + }; + class Item234 + { + dataType="Object"; + class PositionInfo + { + position[]={27120.236,23.812534,24784.957}; + angles[]={0.0093286335,2.2689281,-0.0053265258}; + }; + InEditorATL=8.5830688e-005; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=240; + type="Land_HBarrierBig_F"; + }; + class Item235 + { + dataType="Object"; + class PositionInfo + { + position[]={27125.018,23.76339,24790.246}; + angles[]={0,2.2863812,0.0026520467}; + }; + InEditorATL=7.6293945e-006; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=241; + type="Land_HBarrierBig_F"; + }; + class Item236 + { + dataType="Object"; + class PositionInfo + { + position[]={27130.279,23.789803,24796.234}; + angles[]={-0.0039967569,2.2863812,0.0053265258}; + }; + InEditorATL=2.6702881e-005; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=242; + type="Land_HBarrierBig_F"; + }; + class Item237 + { + dataType="Object"; + class PositionInfo + { + position[]={27135.553,23.809963,24802.238}; + angles[]={0.0026520467,2.2863812,-0.0013372133}; + }; + InEditorATL=9.5367432e-006; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=243; + type="Land_HBarrierBig_F"; + }; + class Item238 + { + dataType="Object"; + class PositionInfo + { + position[]={27140.77,23.822357,24808.086}; + angles[]={-0.0039967569,2.2863812,0}; + }; + InEditorATL=1.1444092e-005; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=244; + type="Land_HBarrierBig_F"; + }; + class Item239 + { + dataType="Object"; + class PositionInfo + { + position[]={27146.018,23.891319,24814.004}; + angles[]={-0.02666023,2.2863812,0.0039967569}; + }; + InEditorATL=0.00045585632; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=245; + type="Land_HBarrierBig_F"; + }; + class Item240 + { + dataType="Object"; + class PositionInfo + { + position[]={27151.09,24.095322,24819.881}; + angles[]={-0.035984326,2.2863812,0.0079935296}; + }; + InEditorATL=0.00083351135; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=246; + type="Land_HBarrierBig_F"; + }; + class Item241 + { + dataType="Object"; + class PositionInfo + { + position[]={27156.178,24.345524,24825.686}; + angles[]={-0.025325486,2.2863812,0.0093286335}; + }; + InEditorATL=0.00045204163; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=247; + type="Land_HBarrierBig_F"; + }; + class Item242 + { + dataType="Object"; + class PositionInfo + { + position[]={27161.246,24.567955,24831.514}; + angles[]={-0.027990974,2.2863812,0.0093286335}; + }; + InEditorATL=0.0005569458; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=248; + type="Land_HBarrierBig_F"; + }; + class Item243 + { + dataType="Object"; + class PositionInfo + { + position[]={27166.283,24.786236,24837.279}; + angles[]={-0.029324362,2.2863812,0.012000273}; + }; + InEditorATL=0.00057220459; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=249; + type="Land_HBarrierBig_F"; + }; + class Item244 + { + dataType="Object"; + class PositionInfo + { + position[]={27171.42,24.959465,24843.23}; + angles[]={-0.02666023,2.2863812,0.0066592805}; + }; + InEditorATL=0.00047492981; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=250; + type="Land_HBarrierBig_F"; + }; + class Item245 + { + dataType="Object"; + class PositionInfo + { + position[]={27176.646,25.126358,24849.186}; + angles[]={-0.023993526,2.2863812,0.0013372133}; + }; + InEditorATL=0.00035476685; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=251; + type="Land_HBarrierBig_F"; + }; + class Item246 + { + dataType="Object"; + class PositionInfo + { + position[]={27181.76,25.347687,24855.037}; + angles[]={-0.030658109,2.2863812,0.0146689}; + }; + InEditorATL=0.00067329407; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=252; + type="Land_HBarrierBig_F"; + }; + class Item247 + { + dataType="Object"; + class PositionInfo + { + position[]={27186.982,25.588387,24860.855}; + angles[]={-0.027990974,2.2863812,0.012000273}; + }; + InEditorATL=0.00057220459; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=253; + type="Land_HBarrierBig_F"; + }; + class Item248 + { + dataType="Object"; + class PositionInfo + { + position[]={27192.186,25.854683,24866.953}; + angles[]={-0.025327841,2.2863812,0.017332481}; + }; + InEditorATL=0.00057411194; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=254; + type="Land_HBarrierBig_F"; + }; + class Item249 + { + dataType="Object"; + class PositionInfo + { + position[]={27197.318,26.092094,24872.852}; + angles[]={-0.029324362,2.2863812,0.012000273}; + }; + InEditorATL=0.00057411194; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=255; + type="Land_HBarrierBig_F"; + }; + class Item250 + { + dataType="Object"; + class PositionInfo + { + position[]={27202.496,26.284542,24878.713}; + angles[]={-0.027990974,2.2863812,0.010664274}; + }; + InEditorATL=0.00057029724; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=256; + type="Land_HBarrierBig_F"; + }; + class Item251 + { + dataType="Object"; + class PositionInfo + { + position[]={27207.531,26.512508,24884.48}; + angles[]={-0.029326396,2.2863812,0.013336525}; + }; + InEditorATL=0.00059509277; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=257; + type="Land_HBarrierBig_F"; + }; + class Item252 + { + dataType="Object"; + class PositionInfo + { + position[]={27212.541,26.791748,24890.248}; + angles[]={-0.027993103,2.2863812,0.017332481}; + }; + InEditorATL=0.00067329407; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=258; + type="Land_HBarrierBig_F"; + }; + class Item253 + { + dataType="Object"; + class PositionInfo + { + position[]={27217.492,27.012711,24895.891}; + angles[]={-0.021328852,2.2863812,0.015998369}; + }; + InEditorATL=0.00045585632; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=259; + type="Land_HBarrierBig_F"; + }; + class Item254 + { + dataType="Object"; + class PositionInfo + { + position[]={27222.426,27.246082,24901.711}; + angles[]={-0.015998369,2.2514746,0.02399601}; + }; + InEditorATL=0.00043296814; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=260; + type="Land_HBarrierBig_F"; + }; + class Item255 + { + dataType="Object"; + class PositionInfo + { + position[]={27227.094,27.551662,24907.471}; + angles[]={-0.021328852,2.2514746,0.029326396}; + }; + InEditorATL=0.0011692047; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=261; + type="Land_HBarrierBig_F"; + }; + class Item256 + { + dataType="Object"; + class PositionInfo + { + position[]={27231.986,27.869713,24913.549}; + angles[]={-0.029324362,2.2514746,0.03731497}; + }; + InEditorATL=0.0013942719; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=262; + type="Land_HBarrierBig_F"; + }; + class Item257 + { + dataType="Object"; + class PositionInfo + { + position[]={27236.9,28.096916,24919.48}; + angles[]={-0.02666023,2.2689281,0.039979152}; + }; + InEditorATL=0.0013122559; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=263; + type="Land_HBarrierBig_F"; + }; + class Item258 + { + dataType="Object"; + class PositionInfo + { + position[]={26907.744,21.493469,24720.885}; + angles[]={0.047963165,2.2863812,-0.0026520467}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=264; + type="Land_HBarrierBig_F"; + }; + class Item259 + { + dataType="Object"; + class PositionInfo + { + position[]={26913.123,21.402996,24727.305}; + angles[]={0.019999012,2.2863812,0.04131107}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=265; + type="Land_HBarrierBig_F"; + }; + class Item260 + { + dataType="Object"; + class PositionInfo + { + position[]={26918.529,21.41806,24733.727}; + angles[]={0.02666023,2.2863812,0.0039967569}; + }; + InEditorATL=1.9073486e-006; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=266; + type="Land_HBarrierBig_F"; + }; + class Item261 + { + dataType="Object"; + class PositionInfo + { + position[]={26923.764,21.376194,24739.586}; + angles[]={0.017329043,2.2863812,0.043970551}; + }; + InEditorATL=1.9073486e-006; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=267; + type="Land_HBarrierBig_F"; + }; + class Item262 + { + dataType="Object"; + class PositionInfo + { + position[]={26928.963,21.296043,24745.523}; + angles[]={0.045302324,2.2863812,0.013336525}; + }; + InEditorATL=0.00031661987; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=268; + type="Land_HBarrierBig_F"; + }; + class Item263 + { + dataType="Object"; + class PositionInfo + { + position[]={26934.068,21.419155,24751.402}; + angles[]={0.0146689,2.2863812,0.025327841}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=269; + type="Land_HBarrierBig_F"; + }; + class Item264 + { + dataType="Object"; + class PositionInfo + { + position[]={26939.158,21.513988,24757.199}; + angles[]={0.0066682254,2.2863812,0.033321146}; + }; + InEditorATL=1.9073486e-006; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=270; + type="Land_HBarrierBig_F"; + }; + class Item265 + { + dataType="Object"; + class PositionInfo + { + position[]={26944.209,21.566719,24763.033}; + angles[]={0.0093350215,2.2863812,0.039979152}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=271; + type="Land_HBarrierBig_F"; + }; + class Item266 + { + dataType="Object"; + class PositionInfo + { + position[]={26949.264,21.663376,24768.809}; + angles[]={0.017332481,2.2863812,0.027993103}; + }; + InEditorATL=1.9073486e-006; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=272; + type="Land_HBarrierBig_F"; + }; + class Item267 + { + dataType="Object"; + class PositionInfo + { + position[]={26954.4,21.822994,24774.752}; + angles[]={0.012000273,2.2863812,0.033321146}; + }; + InEditorATL=1.9073486e-006; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=273; + type="Land_HBarrierBig_F"; + }; + class Item268 + { + dataType="Object"; + class PositionInfo + { + position[]={26959.615,21.897488,24780.699}; + angles[]={0.0080009829,2.2863812,0.02666023}; + }; + InEditorATL=1.9073486e-006; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=274; + type="Land_HBarrierBig_F"; + }; + class Item269 + { + dataType="Object"; + class PositionInfo + { + position[]={26964.764,21.905388,24786.563}; + angles[]={0.011995304,2.2863812,0.010664274}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=275; + type="Land_HBarrierBig_F"; + }; + class Item270 + { + dataType="Object"; + class PositionInfo + { + position[]={26969.977,21.884796,24792.381}; + angles[]={0.013332055,2.2863812,0.0053265258}; + }; + InEditorATL=1.9073486e-006; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=276; + type="Land_HBarrierBig_F"; + }; + class Item271 + { + dataType="Object"; + class PositionInfo + { + position[]={26975.182,21.936813,24798.457}; + angles[]={-0.0013372133,2.2863812,0.012000273}; + }; + InEditorATL=-1.9073486e-006; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=277; + type="Land_HBarrierBig_F"; + }; + class Item272 + { + dataType="Object"; + class PositionInfo + { + position[]={26980.309,22.072601,24804.33}; + angles[]={-0.025327841,2.2863812,0.019999012}; + }; + InEditorATL=1.9073486e-006; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=278; + type="Land_HBarrierBig_F"; + }; + class Item273 + { + dataType="Object"; + class PositionInfo + { + position[]={26991.525,22.485714,24816.629}; + angles[]={-0.015998369,2.3561945,0.010664274}; + }; + InEditorATL=1.9073486e-006; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=280; + type="Land_HBarrierBig_F"; + }; + class Item274 + { + dataType="Object"; + class PositionInfo + { + position[]={26996.086,22.603195,24821.303}; + angles[]={-0.010664274,2.3911009,0.014664836}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=281; + type="Land_HBarrierBig_F"; + }; + class Item275 + { + dataType="Object"; + class PositionInfo + { + position[]={27042.537,24.511005,24872.58}; + angles[]={-0.014664836,2.2863812,-0.0093286335}; + }; + InEditorATL=0.00017166138; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=290; + type="Land_HBarrierBig_F"; + }; + class Item276 + { + dataType="Object"; + class PositionInfo + { + position[]={27047.857,24.579918,24878.496}; + angles[]={-0.015998369,2.2863812,0.0013372133}; + }; + InEditorATL=0.0001411438; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=291; + type="Land_HBarrierBig_F"; + }; + class Item277 + { + dataType="Object"; + class PositionInfo + { + position[]={27053.248,24.634232,24884.357}; + angles[]={-0.010664274,2.2863812,0.0013372133}; + }; + InEditorATL=6.8664551e-005; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=292; + type="Land_HBarrierBig_F"; + }; + class Item278 + { + dataType="Object"; + class PositionInfo + { + position[]={27058.5,24.745831,24890.121}; + angles[]={-0.018660666,2.2863812,0}; + }; + InEditorATL=0.00019645691; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=293; + type="Land_HBarrierBig_F"; + }; + class Item279 + { + dataType="Object"; + class PositionInfo + { + position[]={27063.693,24.86879,24895.947}; + angles[]={-0.021328852,2.2863812,0.0013372133}; + }; + InEditorATL=0.00030899048; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=294; + type="Land_HBarrierBig_F"; + }; + class Item280 + { + dataType="Object"; + class PositionInfo + { + position[]={27068.939,24.9725,24901.449}; + angles[]={-0.021328852,2.2863812,0.014664836}; + }; + InEditorATL=0.00042915344; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=295; + type="Land_HBarrierBig_F"; + }; + class Item281 + { + dataType="Object"; + class PositionInfo + { + position[]={27074.02,25.112415,24907.293}; + angles[]={-0.012000273,2.2863812,0.0053265258}; + }; + InEditorATL=0.00010108948; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=296; + type="Land_HBarrierBig_F"; + }; + class Item282 + { + dataType="Object"; + class PositionInfo + { + position[]={27079.047,25.243362,24913.051}; + angles[]={-0.018663859,2.2863812,0.014664836}; + }; + InEditorATL=0.0003528595; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=297; + type="Land_HBarrierBig_F"; + }; + class Item283 + { + dataType="Object"; + class PositionInfo + { + position[]={27084.176,25.415878,24919.006}; + angles[]={-0.014664836,2.2863812,0.015998369}; + }; + InEditorATL=0.0002822876; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=298; + type="Land_HBarrierBig_F"; + }; + class Item284 + { + dataType="Object"; + class PositionInfo + { + position[]={27089.398,25.570793,24924.955}; + angles[]={-0.015998369,2.2863812,0.014664836}; + }; + InEditorATL=0.00028610229; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=299; + type="Land_HBarrierBig_F"; + }; + class Item285 + { + dataType="Object"; + class PositionInfo + { + position[]={27094.525,25.755501,24930.799}; + angles[]={-0.027993103,2.2863812,0.015998369}; + }; + InEditorATL=0.00067329407; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=300; + type="Land_HBarrierBig_F"; + }; + class Item286 + { + dataType="Object"; + class PositionInfo + { + position[]={27099.764,25.879715,24936.635}; + angles[]={-0.012000273,2.2863812,0}; + }; + InEditorATL=8.5830688e-005; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=301; + type="Land_HBarrierBig_F"; + }; + class Item287 + { + dataType="Object"; + class PositionInfo + { + position[]={27104.979,25.952923,24942.729}; + angles[]={-0.012000273,2.2863812,-0.0039967569}; + }; + InEditorATL=8.9645386e-005; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=302; + type="Land_HBarrierBig_F"; + }; + class Item288 + { + dataType="Object"; + class PositionInfo + { + position[]={27110.113,25.967831,24948.637}; + angles[]={-0.0079935296,2.2863812,-0.011995304}; + }; + InEditorATL=9.3460083e-005; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=303; + type="Land_HBarrierBig_F"; + }; + class Item289 + { + dataType="Object"; + class PositionInfo + { + position[]={27115.287,25.963764,24954.498}; + angles[]={-0.0080009829,2.2863812,-0.0080009829}; + }; + InEditorATL=8.0108643e-005; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=304; + type="Land_HBarrierBig_F"; + }; + class Item290 + { + dataType="Object"; + class PositionInfo + { + position[]={27120.326,25.953598,24960.289}; + angles[]={0.011995304,2.2863812,-0.0093286335}; + }; + InEditorATL=0.00015258789; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=305; + type="Land_HBarrierBig_F"; + }; + class Item291 + { + dataType="Object"; + class PositionInfo + { + position[]={27125.346,25.821953,24966.063}; + angles[]={0.015998369,2.2863812,-0.013332055}; + }; + InEditorATL=0.0002746582; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=306; + type="Land_HBarrierBig_F"; + }; + class Item292 + { + dataType="Object"; + class PositionInfo + { + position[]={27130.285,25.688148,24971.697}; + angles[]={0.015998369,2.2863812,-0.0053265258}; + }; + InEditorATL=0.00018882751; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=307; + type="Land_HBarrierBig_F"; + }; + class Item293 + { + dataType="Object"; + class PositionInfo + { + position[]={27135.205,25.636185,24977.488}; + angles[]={-0.0013372133,2.2514746,0.013332055}; + }; + InEditorATL=0.00010681152; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=308; + type="Land_HBarrierBig_F"; + }; + class Item294 + { + dataType="Object"; + class PositionInfo + { + position[]={27139.893,25.664612,24983.248}; + angles[]={-0.0066682254,2.2514746,0.0039967569}; + }; + InEditorATL=4.196167e-005; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=309; + type="Land_HBarrierBig_F"; + }; + class Item295 + { + dataType="Object"; + class PositionInfo + { + position[]={27144.777,25.687943,24989.354}; + angles[]={0.0080009829,2.2514746,0.018663859}; + }; + InEditorATL=0.00023460388; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=310; + type="Land_HBarrierBig_F"; + }; + class Item296 + { + dataType="Object"; + class PositionInfo + { + position[]={27149.736,25.657471,24995.301}; + angles[]={0.02399601,2.2689281,-0.015998369}; + }; + InEditorATL=0.00054931641; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=311; + type="Land_HBarrierBig_F"; + }; + class Item297 + { + dataType="Object"; + class PositionInfo + { + position[]={27154.566,25.567265,25001.035}; + angles[]={0.033321146,2.2689281,-0.031990308}; + }; + InEditorATL=0.0013160706; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=312; + type="Land_HBarrierBig_F"; + }; + class Item298 + { + dataType="Object"; + class PositionInfo + { + position[]={27158.523,25.341373,25005.699}; + angles[]={0.025327841,2.2689281,0.018663859}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=313; + type="Land_HBarrierBig_F"; + }; + class Item299 + { + dataType="Object"; + class PositionInfo + { + position[]={26757.559,19.735119,24702.854}; + angles[]={0.083802827,0.69813168,0.045302324}; + }; + InEditorATL=0.0055046082; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=314; + type="Land_HBarrierBig_F"; + }; + class Item300 + { + dataType="Object"; + class PositionInfo + { + position[]={26762.932,20.218689,24698.396}; + angles[]={0.083802827,0.69813168,0}; + }; + InEditorATL=0.0040569305; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=315; + type="Land_HBarrierBig_F"; + }; + class Item301 + { + dataType="Object"; + class PositionInfo + { + position[]={26771.348,19.785141,24703.773}; + angles[]={0.062583603,2.2689281,0.0093286335}; + }; + InEditorATL=0.0024547577; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=316; + type="Land_HBarrierBig_F"; + }; + class Item302 + { + dataType="Object"; + class PositionInfo + { + position[]={26776.607,19.673779,24705.621}; + angles[]={0.14693356,0.69813168,0.0080009829}; + }; + InEditorATL=0.013040543; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=317; + type="Land_HBarrierBig_F"; + }; + class Item303 + { + dataType="Object"; + class PositionInfo + { + position[]={26782.451,20.098366,24700.559}; + angles[]={0.06656827,0.69813168,0.0080009829}; + }; + InEditorATL=0.0027275085; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=318; + type="Land_HBarrierBig_F"; + }; + class Item304 + { + dataType="Object"; + class PositionInfo + { + position[]={26788.264,20.547802,24695.51}; + angles[]={0.042640556,0.69813168,0.027993103}; + }; + InEditorATL=0.0015621185; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=319; + type="Land_HBarrierBig_F"; + }; + class Item305 + { + dataType="Object"; + class PositionInfo + { + position[]={26793.873,20.811573,24690.699}; + angles[]={0.042640556,0.69813168,0.0026744273}; + }; + InEditorATL=0.0011634827; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=320; + type="Land_HBarrierBig_F"; + }; + class Item306 + { + dataType="Object"; + class PositionInfo + { + position[]={26799.676,21.061512,24685.773}; + angles[]={0.034652505,0.69813168,0.029324362}; + }; + InEditorATL=0.0011482239; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=321; + type="Land_HBarrierBig_F"; + }; + class Item307 + { + dataType="Object"; + class PositionInfo + { + position[]={26805.895,21.453705,24680.508}; + angles[]={0.039979152,0.69813168,0.046634447}; + }; + InEditorATL=0.0023059845; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=322; + type="Land_HBarrierBig_F"; + }; + class Item308 + { + dataType="Object"; + class PositionInfo + { + position[]={26811.742,21.789215,24679.582}; + angles[]={0.033321146,-0.38397264,0.053282689}; + }; + InEditorATL=0.0023193359; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=323; + type="Land_HBarrierBig_F"; + }; + class Item309 + { + dataType="Object"; + class PositionInfo + { + position[]={26817.344,21.932652,24681.879}; + angles[]={0.042640556,-0.38397264,0.035985984}; + }; + InEditorATL=0.00182724; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=324; + type="Land_HBarrierBig_F"; + }; + class Item310 + { + dataType="Object"; + class PositionInfo + { + position[]={26824.832,21.952244,24684.842}; + angles[]={0.079830162,-0.38397264,0.027993103}; + }; + InEditorATL=0.0043926239; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=325; + type="Land_HBarrierBig_F"; + }; + class Item311 + { + dataType="Object"; + class PositionInfo + { + position[]={26832.129,22.031052,24687.68}; + angles[]={0.054611389,-0.38397264,0.041309625}; + }; + InEditorATL=0.0029239655; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=326; + type="Land_HBarrierBig_F"; + }; + class Item312 + { + dataType="Object"; + class PositionInfo + { + position[]={26839.564,22.08453,24690.703}; + angles[]={0.098347999,-0.38397264,0.027993103}; + }; + InEditorATL=0.0062198639; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=327; + type="Land_HBarrierBig_F"; + }; + class Item313 + { + dataType="Object"; + class PositionInfo + { + position[]={26846.766,22.087383,24693.621}; + angles[]={0.057271164,-0.38397264,0.042641956}; + }; + InEditorATL=0.0030059814; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=328; + type="Land_HBarrierBig_F"; + }; + class Item314 + { + dataType="Object"; + class PositionInfo + { + position[]={26854.246,22.198975,24696.635}; + angles[]={0.050623242,-0.38397264,0.035984326}; + }; + InEditorATL=0.0022563934; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=329; + type="Land_HBarrierBig_F"; + }; + class Item315 + { + dataType="Object"; + class PositionInfo + { + position[]={26861.479,22.168507,24699.557}; + angles[]={0.095706634,-0.38397264,0.022662206}; + }; + InEditorATL=0.0058574677; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=330; + type="Land_HBarrierBig_F"; + }; + class Item316 + { + dataType="Object"; + class PositionInfo + { + position[]={26868.783,22.063362,24702.443}; + angles[]={0.067895547,-0.38397264,0.033321146}; + }; + InEditorATL=0.0033855438; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=331; + type="Land_HBarrierBig_F"; + }; + class Item317 + { + dataType="Object"; + class PositionInfo + { + position[]={26875.867,22.062248,24705.32}; + angles[]={0.14040335,-0.38397264,0.025327841}; + }; + InEditorATL=0.01244545; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=332; + type="Land_HBarrierBig_F"; + }; + class Item318 + { + dataType="Object"; + class PositionInfo + { + position[]={26883.057,21.908066,24708.141}; + angles[]={0.09966857,-0.38397264,0.0053377044}; + }; + InEditorATL=0.0059661865; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=333; + type="Land_HBarrierBig_F"; + }; + class Item319 + { + dataType="Object"; + class PositionInfo + { + position[]={26889.9,21.881466,24710.941}; + angles[]={0.043970551,-0.38397264,0.017329043}; + }; + InEditorATL=0.0013446808; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=334; + type="Land_HBarrierBig_F"; + }; + class Item320 + { + dataType="Object"; + class PositionInfo + { + position[]={26897.135,21.808929,24713.99}; + angles[]={0.06656827,-0.38397264,0.0026744273}; + }; + InEditorATL=0.0027198792; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=335; + type="Land_HBarrierBig_F"; + }; + class Item321 + { + dataType="Object"; + class PositionInfo + { + position[]={26901.494,21.726097,24716.021}; + angles[]={0.049293593,-0.38397264,0.019999012}; + }; + InEditorATL=1.9073486e-006; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=336; + type="Land_HBarrierBig_F"; + }; + class Item322 + { + dataType="Object"; + class PositionInfo + { + position[]={27236.871,28.231823,24924.305}; + angles[]={-0.030656165,0.83775806,0.039977662}; + }; + InEditorATL=0.0015544891; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=337; + type="Land_HBarrierBig_F"; + }; + class Item323 + { + dataType="Object"; + class PositionInfo + { + position[]={27231.779,28.19455,24929.963}; + angles[]={-0.030656165,0.83775806,0.050623242}; + }; + InEditorATL=0.0021343231; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=338; + type="Land_HBarrierBig_F"; + }; + class Item324 + { + dataType="Object"; + class PositionInfo + { + position[]={27226.762,27.88908,24935.555}; + angles[]={0.0093350215,0.83775806,0.050623242}; + }; + InEditorATL=0.0015926361; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=339; + type="Land_HBarrierBig_F"; + }; + class Item325 + { + dataType="Object"; + class PositionInfo + { + position[]={27221.459,27.428059,24941.371}; + angles[]={0.0093350215,0.83775806,0.090419561}; + }; + InEditorATL=0.0051116943; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=340; + type="Land_HBarrierBig_F"; + }; + class Item326 + { + dataType="Object"; + class PositionInfo + { + position[]={27216.268,26.974419,24947.258}; + angles[]={0.0053265258,0.83775806,0.035984326}; + }; + InEditorATL=0.00076675415; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=341; + type="Land_HBarrierBig_F"; + }; + class Item327 + { + dataType="Object"; + class PositionInfo + { + position[]={27211.01,26.755482,24953.145}; + angles[]={0.0026520467,0.83775806,0.035984326}; + }; + InEditorATL=0.00082015991; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=342; + type="Land_HBarrierBig_F"; + }; + class Item328 + { + dataType="Object"; + class PositionInfo + { + position[]={27205.779,26.629627,24959.033}; + angles[]={0.0026520467,0.83775806,0.017329043}; + }; + InEditorATL=0.00017929077; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=343; + type="Land_HBarrierBig_F"; + }; + class Item329 + { + dataType="Object"; + class PositionInfo + { + position[]={27200.414,26.471909,24964.727}; + angles[]={0.012000273,0.83775806,0.019996032}; + }; + InEditorATL=0.00031852722; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=344; + type="Land_HBarrierBig_F"; + }; + class Item330 + { + dataType="Object"; + class PositionInfo + { + position[]={27195.16,26.325462,24970.502}; + angles[]={0.0026744273,0.83775806,0.019996032}; + }; + InEditorATL=0.00024604797; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=345; + type="Land_HBarrierBig_F"; + }; + class Item331 + { + dataType="Object"; + class PositionInfo + { + position[]={27189.807,26.263302,24976.281}; + angles[]={-0.0013372133,0.83775806,0.0093286335}; + }; + InEditorATL=4.196167e-005; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=346; + type="Land_HBarrierBig_F"; + }; + class Item332 + { + dataType="Object"; + class PositionInfo + { + position[]={27184.447,26.228977,24981.963}; + angles[]={-0.0013372133,0.83775806,0.0066682254}; + }; + InEditorATL=3.0517578e-005; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=347; + type="Land_HBarrierBig_F"; + }; + class Item333 + { + dataType="Object"; + class PositionInfo + { + position[]={27179.184,26.119129,24987.766}; + angles[]={0.013332055,0.83775806,0.013332055}; + }; + InEditorATL=0.00020980835; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=348; + type="Land_HBarrierBig_F"; + }; + class Item334 + { + dataType="Object"; + class PositionInfo + { + position[]={27174.24,25.967304,24993.242}; + angles[]={0.017329043,0.83775806,0.013332055}; + }; + InEditorATL=0.00029563904; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=349; + type="Land_HBarrierBig_F"; + }; + class Item335 + { + dataType="Object"; + class PositionInfo + { + position[]={27168.977,25.748451,24999.041}; + angles[]={0.030658109,0.83775806,0.021331646}; + }; + InEditorATL=0.00084877014; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=350; + type="Land_HBarrierBig_F"; + }; + class Item336 + { + dataType="Object"; + class PositionInfo + { + position[]={27164.035,25.468021,25004.828}; + angles[]={0.030656165,0.83775806,0.018663859}; + }; + InEditorATL=0.00077819824; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=351; + type="Land_HBarrierBig_F"; + }; + class Item337 + { + dataType="Object"; + class PositionInfo + { + position[]={26754.918,24.439243,24534.549}; + angles[]={0.022662206,2.2689281,0.018663859}; + }; + InEditorATL=0.00057601929; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=352; + type="Land_HBarrierBig_F"; + }; + class Item338 + { + dataType="Object"; + class PositionInfo + { + position[]={26749.848,24.466385,24528.553}; + angles[]={0.019999012,2.2689281,0.019999012}; + }; + InEditorATL=0.00049591064; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=353; + type="Land_HBarrierBig_F"; + }; + class Item339 + { + dataType="Object"; + class PositionInfo + { + position[]={26745.018,24.449707,24522.838}; + angles[]={0.013327583,2.2689281,0.023993526}; + }; + InEditorATL=0.00046157837; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=354; + type="Land_HBarrierBig_F"; + }; + class Item340 + { + dataType="Object"; + class PositionInfo + { + position[]={26740.197,24.389256,24517.105}; + angles[]={0.0080009829,2.2689281,0.027990974}; + }; + InEditorATL=0.00053596497; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=355; + type="Land_HBarrierBig_F"; + }; + class Item341 + { + dataType="Object"; + class PositionInfo + { + position[]={26735.377,24.277931,24511.5}; + angles[]={0.0013372133,2.2689281,0.033321146}; + }; + InEditorATL=0.00067520142; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=356; + type="Land_HBarrierBig_F"; + }; + class Item342 + { + dataType="Object"; + class PositionInfo + { + position[]={26730.43,24.11636,24505.508}; + angles[]={0,2.2689281,0.035984326}; + }; + InEditorATL=0.00086975098; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=357; + type="Land_HBarrierBig_F"; + }; + class Item343 + { + dataType="Object"; + class PositionInfo + { + position[]={26725.418,23.935703,24499.525}; + angles[]={0.0039967569,2.2689281,0.038647637}; + }; + InEditorATL=0.0014648438; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=358; + type="Land_HBarrierBig_F"; + }; + class Item344 + { + dataType="Object"; + class PositionInfo + { + position[]={26721.27,23.740341,24499.357}; + angles[]={-0.0053265258,0.69813168,0.043970551}; + }; + InEditorATL=0.001159668; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=359; + type="Land_HBarrierBig_F"; + }; + class Item345 + { + dataType="Object"; + class PositionInfo + { + position[]={26715.277,23.508228,24504.35}; + angles[]={-0.0080084298,0.69813168,0.043971907}; + }; + InEditorATL=0.0011749268; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=360; + type="Land_HBarrierBig_F"; + }; + class Item346 + { + dataType="Object"; + class PositionInfo + { + position[]={26709.344,23.310162,24509.412}; + angles[]={-0.0080009829,0.69813168,0.039977662}; + }; + InEditorATL=0.0010223389; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=361; + type="Land_HBarrierBig_F"; + }; + class Item347 + { + dataType="Object"; + class PositionInfo + { + position[]={26703.543,23.185093,24514.301}; + angles[]={-0.0079935296,0.69813168,0.022662206}; + }; + InEditorATL=0.00033378601; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=362; + type="Land_HBarrierBig_F"; + }; + class Item348 + { + dataType="Object"; + class PositionInfo + { + position[]={26697.285,23.056393,24519.346}; + angles[]={-0.02399601,0.69813168,0.043971907}; + }; + InEditorATL=0.0014533997; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=363; + type="Land_HBarrierBig_F"; + }; + class Item349 + { + dataType="Object"; + class PositionInfo + { + position[]={26691.609,22.906544,24524.191}; + angles[]={-0.02399601,0.69813168,0.063913256}; + }; + InEditorATL=0.0028781891; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=364; + type="Land_HBarrierBig_F"; + }; + class Item350 + { + dataType="Object"; + class PositionInfo + { + position[]={26685.561,22.651741,24529.229}; + angles[]={-0.02666023,0.69813168,0.063912325}; + }; + InEditorATL=0.0029716492; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=365; + type="Land_HBarrierBig_F"; + }; + class Item351 + { + dataType="Object"; + class PositionInfo + { + position[]={26705.705,23.176159,24553.77}; + angles[]={0.013332055,0.69813168,0.022662206}; + }; + InEditorATL=0.00045204163; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=366; + type="Land_HBarrierBig_F"; + }; + class Item352 + { + dataType="Object"; + class PositionInfo + { + position[]={26701.939,23.039799,24556.998}; + angles[]={0.017332481,0.69813168,0.022664838}; + }; + InEditorATL=0.00046348572; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=367; + type="Land_HBarrierBig_F"; + }; + class Item353 + { + dataType="Object"; + class PositionInfo + { + position[]={26687.637,22.422768,24569.043}; + angles[]={0.022662206,0.69813168,0.02666023}; + }; + InEditorATL=0.00074195862; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=368; + type="Land_HBarrierBig_F"; + }; + class Item354 + { + dataType="Object"; + class PositionInfo + { + position[]={26681.531,22.135735,24574.32}; + angles[]={0.022664838,0.69813168,0.027993103}; + }; + InEditorATL=0.00078964233; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=369; + type="Land_HBarrierBig_F"; + }; + class Item355 + { + dataType="Object"; + class PositionInfo + { + position[]={26639.027,20.235634,24575.066}; + angles[]={0.012000273,2.2689281,0.057270125}; + }; + InEditorATL=0.0020942688; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=370; + type="Land_HBarrierBig_F"; + }; + class Item356 + { + dataType="Object"; + class PositionInfo + { + position[]={26679.469,22.317188,24534.326}; + angles[]={-0.010664274,0.69813168,0.073202357}; + }; + InEditorATL=0.0032138824; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=371; + type="Land_HBarrierBig_F"; + }; + class Item357 + { + dataType="Object"; + class PositionInfo + { + position[]={26673.51,22.033604,24539.396}; + angles[]={-0.010664274,0.69813168,0.047963165}; + }; + InEditorATL=0.001455307; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=372; + type="Land_HBarrierBig_F"; + }; + class Item358 + { + dataType="Object"; + class PositionInfo + { + position[]={26667.527,21.792019,24544.443}; + angles[]={-0.0066592805,0.69813168,0.043970551}; + }; + InEditorATL=0.0011577606; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=373; + type="Land_HBarrierBig_F"; + }; + class Item359 + { + dataType="Object"; + class PositionInfo + { + position[]={26661.51,21.570644,24549.488}; + angles[]={-0.0026744273,0.69813168,0.025327841}; + }; + InEditorATL=0.00038719177; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=374; + type="Land_HBarrierBig_F"; + }; + class Item360 + { + dataType="Object"; + class PositionInfo + { + position[]={26643.246,20.613022,24565.057}; + angles[]={0.02399601,0.69813168,0.043971907}; + }; + InEditorATL=0.0014896393; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=375; + type="Land_HBarrierBig_F"; + }; + class Item361 + { + dataType="Object"; + class PositionInfo + { + position[]={26752.025,23.822529,24555.074}; + angles[]={0.033321146,1.8325957,0.012000273}; + }; + InEditorATL=0.00069999695; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=376; + type="Land_HBarrierBig_F"; + }; + class Item362 + { + dataType="Object"; + class PositionInfo + { + position[]={26754.15,23.597839,24562.666}; + angles[]={0.03731497,1.8325957,0.019996032}; + }; + InEditorATL=0.0010280609; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=377; + type="Land_HBarrierBig_F"; + }; + class Item363 + { + dataType="Object"; + class PositionInfo + { + position[]={26739.68,23.26461,24567.207}; + angles[]={0.035984326,1.8325957,0.010664274}; + }; + InEditorATL=0.00082397461; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=378; + type="Land_HBarrierBig_F"; + }; + class Item364 + { + dataType="Object"; + class PositionInfo + { + position[]={26756.131,23.414135,24569.916}; + angles[]={0.02399601,1.8325957,0.033321146}; + }; + InEditorATL=0.0010643005; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=379; + type="Land_HBarrierBig_F"; + }; + class Item365 + { + dataType="Object"; + class PositionInfo + { + position[]={26758.264,23.3176,24577.775}; + angles[]={0.031988446,1.8325957,0.049293593}; + }; + InEditorATL=0.0020828247; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=380; + type="Land_HBarrierBig_F"; + }; + class Item366 + { + dataType="Object"; + class PositionInfo + { + position[]={26760.434,23.398262,24585.516}; + angles[]={0.021328852,1.8325957,0.061256282}; + }; + InEditorATL=0.0025501251; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=381; + type="Land_HBarrierBig_F"; + }; + class Item367 + { + dataType="Object"; + class PositionInfo + { + position[]={26762.623,23.356766,24593.291}; + angles[]={0.019996032,1.8325957,0.057270125}; + }; + InEditorATL=0.0021877289; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=382; + type="Land_HBarrierBig_F"; + }; + class Item368 + { + dataType="Object"; + class PositionInfo + { + position[]={26764.936,23.284454,24601.07}; + angles[]={0.022662206,1.8325957,0.047963165}; + }; + InEditorATL=0.001783371; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=383; + type="Land_HBarrierBig_F"; + }; + class Item369 + { + dataType="Object"; + class PositionInfo + { + position[]={26767.113,23.17741,24608.791}; + angles[]={0.025327841,1.8325957,0.057271164}; + }; + InEditorATL=0.002204895; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=384; + type="Land_HBarrierBig_F"; + }; + class Item370 + { + dataType="Object"; + class PositionInfo + { + position[]={26769.389,23.052715,24616.721}; + angles[]={0.025325486,1.8325957,0.029324362}; + }; + InEditorATL=0.00089073181; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=385; + type="Land_HBarrierBig_F"; + }; + class Item371 + { + dataType="Object"; + class PositionInfo + { + position[]={26729.17,22.600769,24576.469}; + angles[]={0.071875811,2.2689281,0.0080009829}; + }; + InEditorATL=0.0033149719; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=386; + type="Land_HBarrierBig_F"; + }; + class Item372 + { + dataType="Object"; + class PositionInfo + { + position[]={26715.576,23.065083,24565.367}; + angles[]={0.031986579,0.69813168,0.010664274}; + }; + InEditorATL=0.00074577332; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=387; + type="Land_HBarrierBig_F"; + }; + class Item373 + { + dataType="Object"; + class PositionInfo + { + position[]={26709.57,22.825363,24570.164}; + angles[]={0.035984326,0.69813168,0.014664836}; + }; + InEditorATL=0.00092124939; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=388; + type="Land_HBarrierBig_F"; + }; + class Item374 + { + dataType="Object"; + class PositionInfo + { + position[]={26703.572,22.559673,24575.244}; + angles[]={0.035984326,0.69813168,0.013332055}; + }; + InEditorATL=0.00087356567; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=389; + type="Land_HBarrierBig_F"; + }; + class Item375 + { + dataType="Object"; + class PositionInfo + { + position[]={26697.57,22.292976,24580.328}; + angles[]={0.03731497,0.69813168,0.013332055}; + }; + InEditorATL=0.00096702576; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=390; + type="Land_HBarrierBig_F"; + }; + class Item376 + { + dataType="Object"; + class PositionInfo + { + position[]={26691.271,22.017128,24585.348}; + angles[]={0.035984326,0.69813168,0.017332481}; + }; + InEditorATL=0.00098419189; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=391; + type="Land_HBarrierBig_F"; + }; + class Item377 + { + dataType="Object"; + class PositionInfo + { + position[]={26685.053,21.719475,24590.625}; + angles[]={0.035984326,0.69813168,0.018663859}; + }; + InEditorATL=0.0010890961; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=392; + type="Land_HBarrierBig_F"; + }; + class Item378 + { + dataType="Object"; + class PositionInfo + { + position[]={26657.883,20.735596,24597.502}; + angles[]={0.030656165,2.2689281,0.03731497}; + }; + InEditorATL=0.0013389587; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=393; + type="Land_HBarrierBig_F"; + }; + class Item379 + { + dataType="Object"; + class PositionInfo + { + position[]={26662.801,20.697369,24603.232}; + angles[]={0.043971907,2.2689281,0.02666023}; + }; + InEditorATL=0.0015926361; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=394; + type="Land_HBarrierBig_F"; + }; + class Item380 + { + dataType="Object"; + class PositionInfo + { + position[]={26729.896,23.494091,24556.803}; + angles[]={0.030658109,0.69813168,0.012000273}; + }; + InEditorATL=0.0006313324; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=395; + type="Land_HBarrierBig_F"; + }; + class Item381 + { + dataType="Object"; + class PositionInfo + { + position[]={26643.82,20.430687,24580.84}; + angles[]={0.012000273,2.2689281,0.05461248}; + }; + InEditorATL=0.0018844604; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=396; + type="Land_HBarrierBig_F"; + }; + class Item382 + { + dataType="Object"; + class PositionInfo + { + position[]={26648.516,20.596661,24586.332}; + angles[]={0.019996032,2.2689281,0.050623242}; + }; + InEditorATL=0.001832962; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=397; + type="Land_HBarrierBig_F"; + }; + class Item383 + { + dataType="Object"; + class PositionInfo + { + position[]={26652.795,20.688694,24591.434}; + angles[]={0.025327841,2.2689281,0.045302324}; + }; + InEditorATL=0.0016403198; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=398; + type="Land_HBarrierBig_F"; + }; + class Item384 + { + dataType="Object"; + class PositionInfo + { + position[]={26666.482,20.609436,24607.703}; + angles[]={0.043971907,2.2689281,0.029326396}; + }; + InEditorATL=0.0015850067; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=399; + type="Land_HBarrierBig_F"; + }; + class Item385 + { + dataType="Object"; + class PositionInfo + { + position[]={26672.676,21.622421,24585.025}; + angles[]={0.031988446,2.2689281,0.030656165}; + }; + InEditorATL=0.0012073517; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=400; + type="Land_HBarrierBig_F"; + }; + class Item386 + { + dataType="Object"; + class PositionInfo + { + position[]={26677.832,21.562717,24591.199}; + angles[]={0.034652505,2.2689281,0.019996032}; + }; + InEditorATL=0.00098609924; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=401; + type="Land_HBarrierBig_F"; + }; + class Item387 + { + dataType="Object"; + class PositionInfo + { + position[]={26705.408,23.241089,24548.262}; + angles[]={0.011995304,2.2689281,0.023993526}; + }; + InEditorATL=0.00043869019; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=402; + type="Land_HBarrierBig_F"; + }; + class Item388 + { + dataType="Object"; + class PositionInfo + { + position[]={26693.123,22.963036,24526.775}; + angles[]={0.017332481,2.2689281,0.021331646}; + }; + InEditorATL=0.00050163269; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=403; + type="Land_HBarrierBig_F"; + }; + class Item389 + { + dataType="Object"; + class PositionInfo + { + position[]={26741.76,22.988155,24574.695}; + angles[]={0.03731497,1.8325957,0.014664836}; + }; + InEditorATL=0.0010051727; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=404; + type="Land_HBarrierBig_F"; + }; + class Item390 + { + dataType="Object"; + class PositionInfo + { + position[]={26743.807,22.629288,24582.393}; + angles[]={0.050623242,1.8325957,0.046633169}; + }; + InEditorATL=0.0028991699; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=405; + type="Land_HBarrierBig_F"; + }; + class Item391 + { + dataType="Object"; + class PositionInfo + { + position[]={26745.904,22.318565,24589.951}; + angles[]={0.053282689,1.8325957,0.033321146}; + }; + InEditorATL=0.0025138855; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=406; + type="Land_HBarrierBig_F"; + }; + class Item392 + { + dataType="Object"; + class PositionInfo + { + position[]={26747.852,22.183315,24597.322}; + angles[]={0.013332055,1.8325957,0.091741346}; + }; + InEditorATL=0.0051670074; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=407; + type="Land_HBarrierBig_F"; + }; + class Item393 + { + dataType="Object"; + class PositionInfo + { + position[]={26749.715,22.204231,24604.137}; + angles[]={0.050623242,1.8325957,0.057270125}; + }; + InEditorATL=0.0034713745; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=408; + type="Land_HBarrierBig_F"; + }; + class Item394 + { + dataType="Object"; + class PositionInfo + { + position[]={26751.617,22.069252,24611.131}; + angles[]={0.022662206,1.8325957,0.045302324}; + }; + InEditorATL=0.0015239716; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=409; + type="Land_HBarrierBig_F"; + }; + class Item395 + { + dataType="Object"; + class PositionInfo + { + position[]={26753.178,22.001492,24617.855}; + angles[]={0.02666023,1.8325957,0.078505196}; + }; + InEditorATL=0.0042247772; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=410; + type="Land_HBarrierBig_F"; + }; + class Item396 + { + dataType="Object"; + class PositionInfo + { + position[]={26768.238,22.842075,24623.076}; + angles[]={0.053282689,0.69813168,0.027993103}; + }; + InEditorATL=0.0021247864; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=411; + type="Land_HBarrierBig_F"; + }; + class Item397 + { + dataType="Object"; + class PositionInfo + { + position[]={26762.109,22.190781,24628.205}; + angles[]={0.053282689,0.69813168,0.06656827}; + }; + InEditorATL=0.0043315887; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=412; + type="Land_HBarrierBig_F"; + }; + class Item398 + { + dataType="Object"; + class PositionInfo + { + position[]={26756.031,21.838509,24633.271}; + angles[]={-0.0013372133,0.69813168,0.029324362}; + }; + InEditorATL=0.00053977966; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=413; + type="Land_HBarrierBig_F"; + }; + class Item399 + { + dataType="Object"; + class PositionInfo + { + position[]={26750.031,21.76215,24638.566}; + angles[]={-0.0053265258,0.69813168,-0.0066682254}; + }; + InEditorATL=1.9073486e-006; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=414; + type="Land_HBarrierBig_F"; + }; + class Item400 + { + dataType="Object"; + class PositionInfo + { + position[]={26743.684,21.837254,24643.711}; + angles[]={-0.0053265258,0.69813168,-0.010664274}; + }; + InEditorATL=9.5367432e-005; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=415; + type="Land_HBarrierBig_F"; + }; + class Item401 + { + dataType="Object"; + class PositionInfo + { + position[]={26737.65,21.923672,24648.801}; + angles[]={-0.0039967569,0.69813168,-0.010664274}; + }; + InEditorATL=8.7738037e-005; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=416; + type="Land_HBarrierBig_F"; + }; + class Item402 + { + dataType="Object"; + class PositionInfo + { + position[]={26733.889,21.793587,24652.004}; + angles[]={-0.0039967569,0.69813168,0.039977662}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=417; + type="Land_HBarrierBig_F"; + }; + class Item403 + { + dataType="Object"; + class PositionInfo + { + position[]={26688.334,20.089836,24644.096}; + angles[]={0.043971907,0.69813168,0.041309625}; + }; + InEditorATL=0.0022220612; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=418; + type="Land_HBarrierBig_F"; + }; + class Item404 + { + dataType="Object"; + class PositionInfo + { + position[]={26694.76,20.630428,24638.691}; + angles[]={0.043973263,0.69813168,0.057270125}; + }; + InEditorATL=0.0032272339; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=419; + type="Land_HBarrierBig_F"; + }; + class Item405 + { + dataType="Object"; + class PositionInfo + { + position[]={26701.285,20.974369,24633.277}; + angles[]={-0.0012918708,0.69813168,0}; + }; + InEditorATL=-3.8146973e-006; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=420; + type="Land_HBarrierBig_F"; + }; + class Item406 + { + dataType="Object"; + class PositionInfo + { + position[]={26751.43,21.801903,24623.438}; + angles[]={-0.012000273,0.69813168,0.027990974}; + }; + InEditorATL=0.00057220459; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=421; + type="Land_HBarrierBig_F"; + }; + class Item407 + { + dataType="Object"; + class PositionInfo + { + position[]={26745.318,21.693409,24628.658}; + angles[]={-0.012000273,0.69813168,0.027990974}; + }; + InEditorATL=0.00052261353; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=422; + type="Land_HBarrierBig_F"; + }; + class Item408 + { + dataType="Object"; + class PositionInfo + { + position[]={26739.168,21.766914,24633.721}; + angles[]={-0.019996032,0.69813168,0.0013372133}; + }; + InEditorATL=0.00023841858; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=423; + type="Land_HBarrierBig_F"; + }; + class Item409 + { + dataType="Object"; + class PositionInfo + { + position[]={26709.529,20.975418,24626.389}; + angles[]={0,0.69813168,0.0026520467}; + }; + InEditorATL=3.8146973e-006; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=424; + type="Land_HBarrierBig_F"; + }; + class Item410 + { + dataType="Object"; + class PositionInfo + { + position[]={26715.18,21.044071,24621.561}; + angles[]={0.050623242,0.69813168,0.025327841}; + }; + InEditorATL=0.0019779205; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=425; + type="Land_HBarrierBig_F"; + }; + class Item411 + { + dataType="Object"; + class PositionInfo + { + position[]={26737.879,21.830833,24598.445}; + angles[]={0.018663859,1.8325957,0.029324362}; + }; + InEditorATL=0.00067901611; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=426; + type="Land_HBarrierBig_F"; + }; + class Item412 + { + dataType="Object"; + class PositionInfo + { + position[]={26737.5,21.854832,24596.537}; + angles[]={0.018663859,1.8325957,0.0053377044}; + }; + InEditorATL=0.00017929077; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=427; + type="Land_HBarrierBig_F"; + }; + class Item413 + { + dataType="Object"; + class PositionInfo + { + position[]={26736.154,21.745541,24604.004}; + angles[]={0.010664274,0.69813168,0.0013372133}; + }; + InEditorATL=4.9591064e-005; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=428; + type="Land_HBarrierBig_F"; + }; + class Item414 + { + dataType="Object"; + class PositionInfo + { + position[]={26731.979,21.737965,24603.395}; + angles[]={0.0066682254,2.2689281,0.0053265258}; + }; + InEditorATL=5.1498413e-005; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=429; + type="Land_HBarrierBig_F"; + }; + class Item415 + { + dataType="Object"; + class PositionInfo + { + position[]={26726.863,21.787552,24597.225}; + angles[]={0.011995304,2.2689281,-0.0013372133}; + }; + InEditorATL=8.5830688e-005; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=430; + type="Land_HBarrierBig_F"; + }; + class Item416 + { + dataType="Object"; + class PositionInfo + { + position[]={26721.734,21.86171,24591.248}; + angles[]={0.022662206,2.2689281,-0.0039967569}; + }; + InEditorATL=0.00030899048; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=431; + type="Land_HBarrierBig_F"; + }; + class Item417 + { + dataType="Object"; + class PositionInfo + { + position[]={26719.234,21.939667,24588.248}; + angles[]={0.021328852,2.2689281,-0.0026744273}; + }; + InEditorATL=0.00029754639; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=432; + type="Land_HBarrierBig_F"; + }; + class Item418 + { + dataType="Object"; + class PositionInfo + { + position[]={26716.117,21.306427,24616.85}; + angles[]={0.050623242,2.2689281,0.025327841}; + }; + InEditorATL=0.0018787384; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=433; + type="Land_HBarrierBig_F"; + }; + class Item419 + { + dataType="Object"; + class PositionInfo + { + position[]={26711.393,21.396549,24611.197}; + angles[]={0.031988446,2.2689281,0.02666023}; + }; + InEditorATL=0.0010528564; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=434; + type="Land_HBarrierBig_F"; + }; + class Item420 + { + dataType="Object"; + class PositionInfo + { + position[]={26706.379,21.353882,24605.121}; + angles[]={0.038646095,2.2689281,0.0079935296}; + }; + InEditorATL=0.00094795227; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=435; + type="Land_HBarrierBig_F"; + }; + class Item421 + { + dataType="Object"; + class PositionInfo + { + position[]={26701.496,21.403019,24599.404}; + angles[]={0.042640556,2.2689281,0.030658109}; + }; + InEditorATL=0.0016956329; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=436; + type="Land_HBarrierBig_F"; + }; + class Item422 + { + dataType="Object"; + class PositionInfo + { + position[]={26776.105,23.174925,24689.941}; + angles[]={0.034652505,-2.4434612,-0.0079935296}; + }; + InEditorATL=-0.021270752; + side="Empty"; + class Attributes + { + skill=0.60000002; + init="this allowDamage false"; + }; + id=437; + type="Land_Medevac_HQ_V1_F"; + }; + class Item423 + { + dataType="Object"; + class PositionInfo + { + position[]={26722.148,20.532743,24638.189}; + angles[]={-0.0053265258,0.69813168,0.0066682254}; + }; + InEditorATL=5.1498413e-005; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=438; + type="BlockConcrete_F"; + }; + class Item424 + { + dataType="Object"; + class PositionInfo + { + position[]={26718.986,20.55674,24634.275}; + angles[]={0.0093286335,0.69813168,0.0013372133}; + }; + InEditorATL=1.9073486e-006; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=439; + type="BlockConcrete_F"; + }; + class Item425 + { + dataType="Object"; + class PositionInfo + { + position[]={26715.748,20.529343,24630.342}; + angles[]={0,0.69813168,0.010664274}; + }; + InEditorATL=1.335144e-005; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=440; + type="BlockConcrete_F"; + }; + class Item426 + { + dataType="Object"; + class PositionInfo + { + position[]={26715.068,20.521435,24644.16}; + angles[]={0,0.69813168,0.0012918708}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=441; + type="BlockConcrete_F"; + }; + class Item427 + { + dataType="Object"; + class PositionInfo + { + position[]={26711.902,20.521341,24640.24}; + angles[]={0,0.69813168,0}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=442; + type="BlockConcrete_F"; + }; + class Item428 + { + dataType="Object"; + class PositionInfo + { + position[]={26708.67,20.521324,24636.314}; + angles[]={-0.0013372133,0.69813168,0.0013372133}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=443; + type="BlockConcrete_F"; + }; + class Item429 + { + dataType="Object"; + class PositionInfo + { + position[]={26730.033,20.641495,24630.785}; + angles[]={0.034652505,2.2689281,0.042640556}; + }; + InEditorATL=0.19996071; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=444; + type="Land_RampConcrete_F"; + }; + class Item430 + { + dataType="Object"; + class PositionInfo + { + position[]={26688.523,19.690983,24610.688}; + angles[]={0.030656165,-2.4434612,0.0053377044}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=450; + type="Target_F"; + }; + class Item431 + { + dataType="Object"; + class PositionInfo + { + position[]={26687.586,19.661835,24611.477}; + angles[]={0.030656165,-2.4434612,0.0053377044}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=451; + type="Target_F"; + }; + class Item432 + { + dataType="Object"; + class PositionInfo + { + position[]={26686.799,19.635906,24612.184}; + angles[]={0.030656165,-2.4434612,0.0053377044}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=452; + type="Target_F"; + }; + class Item433 + { + dataType="Object"; + class PositionInfo + { + position[]={26685.861,19.606705,24612.973}; + angles[]={0.030656165,-2.4434612,0.0053377044}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=453; + type="Target_F"; + }; + class Item434 + { + dataType="Object"; + class PositionInfo + { + position[]={26682.955,21.290688,24611.98}; + angles[]={0.030658109,-2.4434612,0.051953323}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=454; + type="Land_CncWall4_F"; + }; + class Item435 + { + dataType="Object"; + class PositionInfo + { + position[]={26686.861,21.507729,24608.693}; + angles[]={0.030656165,-2.4434612,0.0053377044}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=455; + type="Land_CncWall4_F"; + }; + class Item436 + { + dataType="Object"; + class PositionInfo + { + position[]={26699.344,20.159105,24627.678}; + angles[]={-0.0053265258,-2.4434612,0.012000273}; + }; + InEditorATL=4.196167e-005; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=456; + type="Land_BagFence_Long_F"; + }; + class Item437 + { + dataType="Object"; + class PositionInfo + { + position[]={26699.908,20.164404,24628.342}; + angles[]={-0.0053265258,2.2689281,0.012000273}; + }; + InEditorATL=3.4332275e-005; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=457; + type="Land_BagFence_Short_F"; + }; + class Item438 + { + dataType="Object"; + class PositionInfo + { + position[]={26705.504,23.503424,24630.164}; + angles[]={-0.0012918708,-2.4434612,0}; + }; + InEditorATL=2.0000172; + side="Empty"; + class Attributes + { + skill=0.60000002; + init="this setObjectTexture [0,""Data\range.jpg""];"; + }; + id=458; + type="Land_Billboard_F"; + }; + class Item439 + { + dataType="Object"; + class PositionInfo + { + position[]={26733.957,22.181786,24584.699}; + angles[]={0.08247932,1.8325957,0.013332055}; + }; + InEditorATL=0.0041790009; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=459; + type="Land_HBarrierBig_F"; + }; + class Item440 + { + dataType="Object"; + class PositionInfo + { + position[]={26730.311,22.528671,24577.783}; + angles[]={0.057270125,2.2689281,0.038649179}; + }; + InEditorATL=0.0029087067; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=460; + type="Land_HBarrierBig_F"; + }; + class Item441 + { + dataType="Object"; + class PositionInfo + { + position[]={26728.277,22.550619,24569.875}; + angles[]={0.033319358,0.69813168,0.0093286335}; + }; + InEditorATL=0.00042533875; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=461; + type="Land_HBarrier_1_F"; + }; + class Item442 + { + dataType="Object"; + class PositionInfo + { + position[]={26730.227,22.623955,24568.238}; + angles[]={0.033321146,0.69813168,0.012000273}; + }; + InEditorATL=0.00046920776; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=462; + type="Land_HBarrier_1_F"; + }; + class Item443 + { + dataType="Object"; + class PositionInfo + { + position[]={26721.559,22.730553,24561.879}; + angles[]={0.029324362,0.69813168,0.010664274}; + }; + InEditorATL=0.00025749207; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=463; + type="Land_HBarrier_1_F"; + }; + class Item444 + { + dataType="Object"; + class PositionInfo + { + position[]={26724.098,22.812555,24560.152}; + angles[]={0.029326396,0.69813168,0.013336525}; + }; + InEditorATL=0.00033187866; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=464; + type="Land_HBarrier_1_F"; + }; + class Item445 + { + dataType="Object"; + class PositionInfo + { + position[]={26723.781,22.659672,24555.576}; + angles[]={0.029326396,2.2689281,0.013336525}; + }; + InEditorATL=0.00018882751; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=465; + type="Land_BagFence_Long_F"; + }; + class Item446 + { + dataType="Object"; + class PositionInfo + { + position[]={26720.684,22.705946,24551.559}; + angles[]={0.022664838,2.2689281,0.017332481}; + }; + InEditorATL=0.00010108948; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=466; + type="Land_BagFence_Long_F"; + }; + class Item447 + { + dataType="Object"; + class PositionInfo + { + position[]={26717.467,22.714178,24547.926}; + angles[]={0.018667053,2.2689281,0.021331646}; + }; + InEditorATL=0.00017356873; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=467; + type="Land_BagFence_Long_F"; + }; + class Item448 + { + dataType="Object"; + class PositionInfo + { + position[]={26711.369,22.679514,24540.752}; + angles[]={0.010664274,2.2689281,0.025325486}; + }; + InEditorATL=0.00016784668; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=468; + type="Land_BagFence_Long_F"; + }; + class Item449 + { + dataType="Object"; + class PositionInfo + { + position[]={26714.348,22.7026,24544.291}; + angles[]={0.014664836,2.2689281,0.021328852}; + }; + InEditorATL=0.0001449585; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=469; + type="Land_BagFence_Long_F"; + }; + class Item450 + { + dataType="Object"; + class PositionInfo + { + position[]={26705.449,22.50462,24542.867}; + angles[]={0.010664274,0.69813168,0.023993526}; + }; + InEditorATL=0.00011634827; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=470; + type="Land_BagFence_Short_F"; + }; + class Item451 + { + dataType="Object"; + class PositionInfo + { + position[]={26708.17,22.593636,24540.732}; + angles[]={0.010664274,0.69813168,0.025325486}; + }; + InEditorATL=0.00016021729; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=471; + type="Land_BagFence_Short_F"; + }; + class Item452 + { + dataType="Object"; + class PositionInfo + { + position[]={26720.277,21.032738,24614.656}; + angles[]={0.018657569,0.69813168,0.025324726}; + }; + InEditorATL=1.9073486e-006; + side="Empty"; + class Attributes + { + skill=0.60000002; + init="this allowDamage false; this enableSimulation false;0 =[""AmmoboxInit"",[this,true]] spawn BIS_fnc_arsenal;"; + name="arsenal1"; + }; + id=472; + type="Land_CargoBox_V1_F"; + }; + class Item453 + { + dataType="Object"; + class PositionInfo + { + position[]={26724.336,21.154924,24611.115}; + angles[]={0.018657569,0.69813168,0}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + init="this allowDamage false; this enableSimulation false; 0 =[""AmmoboxInit"",[this,true]] spawn BIS_fnc_arsenal;"; + name="arsenal2"; + }; + id=473; + type="Land_CargoBox_V1_F"; + }; + class Item454 + { + dataType="Object"; + class PositionInfo + { + position[]={26728.24,21.214874,24607.904}; + angles[]={0.018657569,0.69813168,0}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + init="this allowDamage false; this enableSimulation false;0 =[""AmmoboxInit"",[this,true]] spawn BIS_fnc_arsenal;"; + name="arsenal3"; + }; + id=474; + type="Land_CargoBox_V1_F"; + }; + class Item455 + { + dataType="Object"; + class PositionInfo + { + position[]={26711.201,23.253494,24555.271}; + angles[]={0.022662206,2.2689281,0.015998369}; + }; + InEditorATL=0.00044059753; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=475; + type="Land_HBarrierBig_F"; + }; + class Item456 + { + dataType="Object"; + class PositionInfo + { + position[]={26715.678,23.197147,24560.959}; + angles[]={0.022664838,2.2689281,0.017332481}; + }; + InEditorATL=0.00046920776; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=476; + type="Land_HBarrierBig_F"; + }; + class Item457 + { + dataType="Object"; + class PositionInfo + { + position[]={26635.684,18.397301,24633.971}; + angles[]={0.034652505,2.2689281,0.047963165}; + }; + InEditorATL=0.0021400452; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=477; + type="Land_HBarrierBig_F"; + }; + class Item458 + { + dataType="Object"; + class PositionInfo + { + position[]={26644.887,18.395382,24644.773}; + angles[]={0.035984326,2.2689281,0.039979152}; + }; + InEditorATL=0.0017185211; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=478; + type="Land_HBarrierBig_F"; + }; + class Item459 + { + dataType="Object"; + class PositionInfo + { + position[]={26630.844,18.276039,24627.904}; + angles[]={-0.0093350215,2.2689281,0.051953323}; + }; + InEditorATL=0.0016651154; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=479; + type="Land_HBarrierBig_F"; + }; + class Item460 + { + dataType="Object"; + class PositionInfo + { + position[]={26625.604,18.258327,24621.641}; + angles[]={0.027993103,2.2689281,-0.045302324}; + }; + InEditorATL=0.0016765594; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=480; + type="Land_HBarrierBig_F"; + }; + class Item461 + { + dataType="Object"; + class PositionInfo + { + position[]={26649.58,18.240631,24650.195}; + angles[]={0.033319358,2.2689281,-0.03731497}; + }; + InEditorATL=0.0015735626; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=481; + type="Land_HBarrierBig_F"; + }; + class Item462 + { + dataType="Object"; + class PositionInfo + { + position[]={26621.313,18.079384,24621.492}; + angles[]={0.027993103,0.69813168,0.057271164}; + }; + InEditorATL=0.0025119781; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=482; + type="Land_HBarrierBig_F"; + }; + class Item463 + { + dataType="Object"; + class PositionInfo + { + position[]={26615.309,17.604618,24626.773}; + angles[]={0.03731497,0.69813168,0.030656165}; + }; + InEditorATL=0.0013961792; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=483; + type="Land_HBarrierBig_F"; + }; + class Item464 + { + dataType="Object"; + class PositionInfo + { + position[]={26609.291,17.181677,24632.014}; + angles[]={0.051953323,0.69813168,0.051953323}; + }; + InEditorATL=0.0031652451; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=484; + type="Land_HBarrierBig_F"; + }; + class Item465 + { + dataType="Object"; + class PositionInfo + { + position[]={26603.389,16.60791,24637.145}; + angles[]={0.051953323,0.69813168,0.051953323}; + }; + InEditorATL=0.0032596588; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=485; + type="Land_HBarrierBig_F"; + }; + class Item466 + { + dataType="Object"; + class PositionInfo + { + position[]={26603.107,16.285927,24641.26}; + angles[]={0.077179179,2.2689281,0.051953323}; + }; + InEditorATL=0.0051651001; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=486; + type="Land_HBarrierBig_F"; + }; + class Item467 + { + dataType="Object"; + class PositionInfo + { + position[]={26607.912,16.49301,24646.879}; + angles[]={-0.0079935296,2.2689281,0.094385199}; + }; + InEditorATL=0.005572319; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=487; + type="Land_HBarrierBig_F"; + }; + class Item468 + { + dataType="Object"; + class PositionInfo + { + position[]={26609.768,16.46406,24649.381}; + angles[]={0.045302324,2.2689281,0.041309625}; + }; + InEditorATL=0.0022335052; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=488; + type="Land_HBarrierBig_F"; + }; + class Item469 + { + dataType="Object"; + class PositionInfo + { + position[]={26640.514,17.057703,24671.27}; + angles[]={0.09834861,2.2689281,0.043970551}; + }; + InEditorATL=0.0070505142; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=490; + type="Land_HBarrierBig_F"; + }; + class Item470 + { + dataType="Object"; + class PositionInfo + { + position[]={26664.328,19.825642,24624.303}; + angles[]={0.041309625,0.69813168,0.031988446}; + }; + InEditorATL=0.001657486; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=491; + type="Land_HBarrierBig_F"; + }; + class Item471 + { + dataType="Object"; + class PositionInfo + { + position[]={26658.432,19.443073,24629.252}; + angles[]={0.041309625,0.69813168,0.029324362}; + }; + InEditorATL=0.0014877319; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=492; + type="Land_HBarrierBig_F"; + }; + class Item472 + { + dataType="Object"; + class PositionInfo + { + position[]={26652.406,18.969505,24634.305}; + angles[]={0.090419561,0.69813168,-0.017332481}; + }; + InEditorATL=0.005033493; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=493; + type="Land_HBarrierBig_F"; + }; + class Item473 + { + dataType="Object"; + class PositionInfo + { + position[]={26646.434,18.654942,24639.281}; + angles[]={0.035984326,0.69813168,0.039979152}; + }; + InEditorATL=0.0017738342; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=494; + type="Land_HBarrierBig_F"; + }; + class Item474 + { + dataType="Object"; + class PositionInfo + { + position[]={26641.666,18.681774,24633.516}; + angles[]={0.037316564,0.69813168,0.042640556}; + }; + InEditorATL=0.0019207001; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=495; + type="Land_HBarrierBig_F"; + }; + class Item475 + { + dataType="Object"; + class PositionInfo + { + position[]={26647.787,19.069233,24628.191}; + angles[]={-0.010664274,0.69813168,0.083802827}; + }; + InEditorATL=0.0042095184; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=496; + type="Land_HBarrierBig_F"; + }; + class Item476 + { + dataType="Object"; + class PositionInfo + { + position[]={26653.734,19.515053,24623.152}; + angles[]={-0.010664274,0.69813168,0.083802827}; + }; + InEditorATL=0.0042095184; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=497; + type="Land_HBarrierBig_F"; + }; + class Item477 + { + dataType="Object"; + class PositionInfo + { + position[]={26659.836,19.954292,24618.084}; + angles[]={0.043973263,0.69813168,0.030658109}; + }; + InEditorATL=0.0016937256; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=498; + type="Land_HBarrierBig_F"; + }; + class Item478 + { + dataType="Object"; + class PositionInfo + { + position[]={26666.012,20.356548,24613.047}; + angles[]={0.046631888,0.69813168,0.02666023}; + }; + InEditorATL=0.0017585754; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=499; + type="Land_HBarrierBig_F"; + }; + class Item479 + { + dataType="Object"; + class PositionInfo + { + position[]={26655.809,18.175121,24666.871}; + angles[]={-0.018663859,0.69813168,0.038647637}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + init="this allowDamage false; this enableSimulation false;"; + }; + id=500; + type="Land_Cargo20_brick_red_F"; + }; + class Item480 + { + dataType="Object"; + class PositionInfo + { + position[]={26654.125,20.641628,24668.307}; + angles[]={-0.018663859,0.69813168,0.038653806}; + }; + InEditorATL=2.359663; + side="Empty"; + class Attributes + { + skill=0.60000002; + init="this allowDamage false; this enableSimulation false;"; + }; + id=501; + type="Land_Cargo20_cyan_F"; + }; + class Item481 + { + dataType="Object"; + class PositionInfo + { + position[]={26650.98,17.673328,24670.953}; + angles[]={0.093063653,0.69813168,0.041309625}; + }; + InEditorATL=0.00058364868; + side="Empty"; + class Attributes + { + skill=0.60000002; + init="this allowDamage false; this enableSimulation false;"; + }; + id=502; + type="Land_Cargo20_military_green_F"; + }; + class Item482 + { + dataType="Object"; + class PositionInfo + { + position[]={26648.342,16.704988,24673.779}; + angles[]={0.093063653,0.69813168,0.041309625}; + }; + InEditorATL=0.00029087067; + side="Empty"; + class Attributes + { + skill=0.60000002; + init="this allowDamage false; this enableSimulation false;"; + }; + id=503; + type="Land_CargoBox_V1_F"; + }; + class Item483 + { + dataType="Object"; + class PositionInfo + { + position[]={26647.381,16.779238,24672.553}; + angles[]={0.093063653,0.69813168,0.049293593}; + }; + InEditorATL=0.00038909912; + side="Empty"; + class Attributes + { + skill=0.60000002; + init="this allowDamage false; this enableSimulation false;"; + }; + id=504; + type="Land_CargoBox_V1_F"; + }; + class Item484 + { + dataType="Object"; + class PositionInfo + { + position[]={26647.799,19.797571,24675.346}; + angles[]={0.093063653,0.69813168,0.041309625}; + }; + InEditorATL=0.037802696; + side="Empty"; + class Attributes + { + skill=0.60000002; + init="this allowDamage false; this enableSimulation false;"; + name="depotFlag"; + }; + id=505; + type="Flag_NATO_F"; + }; + class Item485 + { + dataType="Object"; + class PositionInfo + { + position[]={26617.643,18.080576,24635.51}; + angles[]={0.035984326,2.2689281,0.058600098}; + }; + InEditorATL=0.00019454956; + side="Empty"; + class Attributes + { + skill=0.60000002; + init="this allowDamage false; this enableSimulation false;"; + }; + id=506; + type="B_Truck_01_ammo_F"; + }; + class Item486 + { + dataType="Object"; + class PositionInfo + { + position[]={26632.061,17.408243,24633.615}; + angles[]={0.034654226,0,0.051953323}; + }; + InEditorATL=0.00069236755; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=507; + type="Land_CncBarrier_stripes_F"; + }; + class Item487 + { + dataType="Object"; + class PositionInfo + { + position[]={26629.611,17.280941,24633.615}; + angles[]={0.034654226,0,0.051953323}; + }; + InEditorATL=0.00078773499; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=508; + type="Land_CncBarrier_stripes_F"; + }; + class Item488 + { + dataType="Object"; + class PositionInfo + { + position[]={26627.068,17.150213,24633.57}; + angles[]={0.034654226,0,0.051953323}; + }; + InEditorATL=0.00078773499; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=509; + type="Land_CncBarrier_stripes_F"; + }; + class Item489 + { + dataType="Object"; + class PositionInfo + { + position[]={26624.613,17.019648,24633.57}; + angles[]={0.034652505,0,0.059928458}; + }; + InEditorATL=0.00088691711; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=510; + type="Land_CncBarrier_stripes_F"; + }; + class Item490 + { + dataType="Object"; + class PositionInfo + { + position[]={26622.441,16.861134,24634.383}; + angles[]={0.034652505,0.69813168,0.059928458}; + }; + InEditorATL=0.00090026855; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=511; + type="Land_CncBarrier_stripes_F"; + }; + class Item491 + { + dataType="Object"; + class PositionInfo + { + position[]={26620.49,16.687462,24636.016}; + angles[]={0.034652505,0.69813168,0.059928458}; + }; + InEditorATL=0.00085449219; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=512; + type="Land_CncBarrier_stripes_F"; + }; + class Item492 + { + dataType="Object"; + class PositionInfo + { + position[]={26618.447,16.507807,24637.652}; + angles[]={0.037316564,0.69813168,0.059928458}; + }; + InEditorATL=0.00096702576; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=513; + type="Land_CncBarrier_stripes_F"; + }; + class Item493 + { + dataType="Object"; + class PositionInfo + { + position[]={26616.455,16.345196,24639.242}; + angles[]={0.03731497,0.69813168,0.043970551}; + }; + InEditorATL=0.0005235672; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=514; + type="Land_CncBarrier_stripes_F"; + }; + class Item494 + { + dataType="Object"; + class PositionInfo + { + position[]={26615.299,16.222855,24641.16}; + angles[]={0.03731497,1.3962634,0.043970551}; + }; + InEditorATL=0.00065994263; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=515; + type="Land_CncBarrier_stripes_F"; + }; + class Item495 + { + dataType="Object"; + class PositionInfo + { + position[]={26614.842,16.111113,24643.613}; + angles[]={0.03731497,1.3962634,0.043970551}; + }; + InEditorATL=0.00059223175; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=516; + type="Land_CncBarrier_stripes_F"; + }; + class Item496 + { + dataType="Object"; + class PositionInfo + { + position[]={26614.391,15.995364,24645.979}; + angles[]={0.045302324,1.3962634,0.043971907}; + }; + InEditorATL=0.00082111359; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=517; + type="Land_CncBarrier_stripes_F"; + }; + class Item497 + { + dataType="Object"; + class PositionInfo + { + position[]={26613.98,15.87007,24648.344}; + angles[]={0.045302324,1.3962634,0.043971907}; + }; + InEditorATL=0.00082015991; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=518; + type="Land_CncBarrier_stripes_F"; + }; + class Item498 + { + dataType="Object"; + class PositionInfo + { + position[]={26613.658,15.7809,24650.244}; + angles[]={0.037316564,1.3962634,0.051953323}; + }; + InEditorATL=0.00074195862; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=519; + type="Land_CncBarrier_stripes_F"; + }; + class Item499 + { + dataType="Object"; + class PositionInfo + { + position[]={26624.242,17.37933,24632.576}; + angles[]={0.034652505,0,0.059928458}; + }; + InEditorATL=9.727478e-005; + side="Empty"; + class Attributes + { + skill=0.60000002; + init="this allowDamage false; this enableSimulation false;"; + }; + id=520; + type="Land_CargoBox_V1_F"; + }; + class Item500 + { + dataType="Object"; + class PositionInfo + { + position[]={26625.717,17.139265,24632.928}; + angles[]={0.034654226,0,0.051953323}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + init="this allowDamage false; this enableSimulation false;"; + }; + id=521; + type="Land_MetalBarrel_F"; + }; + class Item501 + { + dataType="Object"; + class PositionInfo + { + position[]={26625.535,17.164371,24631.932}; + angles[]={0.034654226,0,0.051953323}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + init="this allowDamage false; this enableSimulation false;"; + }; + id=522; + type="Land_MetalBarrel_F"; + }; + class Item502 + { + dataType="Object"; + class PositionInfo + { + position[]={26626.625,17.202297,24632.471}; + angles[]={0.034654226,0,0.051953323}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + init="this allowDamage false; this enableSimulation false;"; + }; + id=523; + type="Land_MetalBarrel_F"; + }; + class Item503 + { + dataType="Object"; + class PositionInfo + { + position[]={26614.18,16.580738,24641.098}; + angles[]={0.03731497,1.3962634,0.043970551}; + }; + InEditorATL=-9.5367432e-007; + side="Empty"; + class Attributes + { + skill=0.60000002; + init="this allowDamage false; this enableSimulation false;"; + }; + id=524; + type="Box_NATO_AmmoVeh_F"; + }; + class Item504 + { + dataType="Object"; + class PositionInfo + { + position[]={26848.646,30.764366,24462.895}; + angles[]={0.022662206,-0.87266463,0.0026520467}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + init="this allowDamage false;"; + name="gate"; + }; + id=525; + type="Land_BarGate_F"; + }; + class Item505 + { + dataType="Object"; + class PositionInfo + { + position[]={26701.436,20.165186,24625.908}; + angles[]={-0.0053265258,-2.4434612,0.0053265258}; + }; + InEditorATL=2.4795532e-005; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=526; + type="Land_BagFence_Long_F"; + }; + class Item506 + { + dataType="Object"; + class PositionInfo + { + position[]={26704.99,20.179312,24626.75}; + angles[]={0,2.2689281,0}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=527; + type="Land_BagFence_Long_F"; + }; + class Item507 + { + dataType="Object"; + class PositionInfo + { + position[]={26699.086,20.166014,24629.553}; + angles[]={-0.0053265258,2.2689281,0.012000273}; + }; + InEditorATL=2.6702881e-005; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=528; + type="Land_BagFence_Long_F"; + }; + class Item508 + { + dataType="Object"; + class PositionInfo + { + position[]={26700.639,20.181082,24631.326}; + angles[]={-0.0012918708,2.2689281,0}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=529; + type="Land_BagFence_Long_F"; + }; + class Item509 + { + dataType="Object"; + class PositionInfo + { + position[]={26701.139,20.165968,24627.297}; + angles[]={-0.0053265258,2.2689281,0.0053265258}; + }; + InEditorATL=1.335144e-005; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=530; + type="Land_BagFence_Short_F"; + }; + class Item510 + { + dataType="Object"; + class PositionInfo + { + position[]={26702.455,20.167416,24626.252}; + angles[]={-0.0053265258,2.2689281,0.0053265258}; + }; + InEditorATL=7.6293945e-006; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=531; + type="Land_BagFence_Short_F"; + }; + class Item511 + { + dataType="Object"; + class PositionInfo + { + position[]={26703.859,20.169582,24625.254}; + angles[]={-0.0053265258,2.2689281,0.0053265258}; + }; + InEditorATL=1.5258789e-005; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=532; + type="Land_BagFence_Short_F"; + }; + class Item512 + { + dataType="Object"; + class PositionInfo + { + position[]={26885.949,23.637894,24671.791}; + angles[]={0.017329043,-1.9198622,-0.0039967569}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + init="this allowDamage false; this enableSimulation false;"; + }; + id=533; + type="B_Truck_01_ammo_F"; + }; + class Item513 + { + dataType="Object"; + class PositionInfo + { + position[]={26874.367,23.737825,24667.576}; + angles[]={0.014664836,-1.9198622,-0.0039967569}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + init="this allowDamage false; this enableSimulation false;"; + }; + id=534; + type="B_Truck_01_fuel_F"; + }; + class Item514 + { + dataType="Object"; + class PositionInfo + { + position[]={26862.104,24.206684,24663.25}; + angles[]={0.013332055,-1.9198622,0.0013372133}; + }; + InEditorATL=1.9073486e-006; + side="Empty"; + class Attributes + { + skill=0.60000002; + init="this allowDamage false; this enableSimulation false;"; + }; + id=535; + type="B_Truck_01_Repair_F"; + }; + class Item515 + { + dataType="Object"; + class PositionInfo + { + position[]={26878.283,22.158979,24655.021}; + angles[]={0.043970551,-0.34906584,0}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=536; + type="Land_HelipadSquare_F"; + }; + class Item516 + { + dataType="Object"; + class PositionInfo + { + position[]={26686.924,20.733994,24595.096}; + angles[]={0.045302324,0.69813168,0.013336525}; + }; + InEditorATL=0.00036430359; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=537; + type="Land_CncBarrier_stripes_F"; + }; + class Item517 + { + dataType="Object"; + class PositionInfo + { + position[]={26690.42,20.912539,24592.143}; + angles[]={0.039977662,0.69813168,0.013332055}; + }; + InEditorATL=0.00036430359; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=538; + type="Land_CncBarrier_stripes_F"; + }; + class Item518 + { + dataType="Object"; + class PositionInfo + { + position[]={26693.867,21.073111,24589.277}; + angles[]={0.039977662,0.69813168,0.013332055}; + }; + InEditorATL=0.00036621094; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=539; + type="Land_CncBarrier_stripes_F"; + }; + class Item519 + { + dataType="Object"; + class PositionInfo + { + position[]={26697.949,21.263784,24585.871}; + angles[]={0.039977662,0.69813168,0.013332055}; + }; + InEditorATL=0.00029182434; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=540; + type="Land_CncBarrier_stripes_F"; + }; + class Item520 + { + dataType="Object"; + class PositionInfo + { + position[]={26701.584,21.428116,24582.828}; + angles[]={0.03731497,0.69813168,0.013332055}; + }; + InEditorATL=0.00029373169; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=541; + type="Land_CncBarrier_stripes_F"; + }; + class Item521 + { + dataType="Object"; + class PositionInfo + { + position[]={26705.033,21.581095,24579.963}; + angles[]={0.03731497,0.69813168,0.013332055}; + }; + InEditorATL=0.00029373169; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=542; + type="Land_CncBarrier_stripes_F"; + }; + class Item522 + { + dataType="Object"; + class PositionInfo + { + position[]={26708.814,21.734348,24576.801}; + angles[]={0.062584557,0.69813168,-0.011995304}; + }; + InEditorATL=0.00075531006; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=543; + type="Land_CncBarrier_stripes_F"; + }; + class Item523 + { + dataType="Object"; + class PositionInfo + { + position[]={26712.447,21.878481,24573.805}; + angles[]={0.062584557,0.69813168,-0.011995304}; + }; + InEditorATL=0.00075721741; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=544; + type="Land_CncBarrier_stripes_F"; + }; + class Item524 + { + dataType="Object"; + class PositionInfo + { + position[]={26715.932,22.047249,24570.803}; + angles[]={0.062584557,0.69813168,0.011995304}; + }; + InEditorATL=0.00074195862; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=545; + type="Land_CncBarrier_stripes_F"; + }; + class Item525 + { + dataType="Object"; + class PositionInfo + { + position[]={26719.514,22.20764,24567.795}; + angles[]={0.030658109,0.69813168,0.012000273}; + }; + InEditorATL=0.00017356873; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=546; + type="Land_CncBarrier_stripes_F"; + }; + class Item526 + { + dataType="Object"; + class PositionInfo + { + position[]={26852.428,30.591276,24466.836}; + angles[]={0.031988446,0,0.0013372133}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=547; + type="Flag_US_F"; + }; + class Item527 + { + dataType="Object"; + class PositionInfo + { + position[]={26637.939,20.252441,24569.574}; + angles[]={0.02399601,0.69813168,0.053282689}; + }; + InEditorATL=0.0021114349; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=548; + type="Land_HBarrierBig_F"; + }; + class Item528 + { + dataType="Object"; + class PositionInfo + { + position[]={26682.801,21.607033,24592.58}; + angles[]={0.035984326,0.69813168,0.018663859}; + }; + InEditorATL=0.0013790131; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=549; + type="Land_HBarrierBig_F"; + }; + class Item529 + { + dataType="Object"; + class PositionInfo + { + position[]={26866.359,27.277523,24495.223}; + angles[]={0.045301005,0.69813168,0.012000273}; + }; + InEditorATL=0.0013256073; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=550; + type="Land_HBarrierBig_F"; + }; + class Item530 + { + dataType="Object"; + class PositionInfo + { + position[]={26860.049,26.901199,24500.549}; + angles[]={0.045302324,0.69813168,0.02399601}; + }; + InEditorATL=0.001581192; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=551; + type="Land_HBarrierBig_F"; + }; + class Item531 + { + dataType="Object"; + class PositionInfo + { + position[]={26876.32,27.052517,24506.621}; + angles[]={0.027993103,0.69813168,0.027993103}; + }; + InEditorATL=0.00092697144; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=552; + type="Land_HBarrierBig_F"; + }; + class Item532 + { + dataType="Object"; + class PositionInfo + { + position[]={26870.057,26.614983,24512.039}; + angles[]={0.06258551,0.69813168,0.045302324}; + }; + InEditorATL=0.0035438538; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=553; + type="Land_HBarrierBig_F"; + }; + class Item533 + { + dataType="Object"; + class PositionInfo + { + position[]={26654.238,18.14975,24655.705}; + angles[]={-0.023993526,2.2689281,0.03731497}; + }; + InEditorATL=0.0011730194; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=554; + type="Land_HBarrierBig_F"; + }; + class Item534 + { + dataType="Object"; + class PositionInfo + { + position[]={26658.896,18.195576,24661.197}; + angles[]={0.031990308,2.2689281,-0.012000273}; + }; + InEditorATL=0.00073623657; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=555; + type="Land_HBarrierBig_F"; + }; + class Item535 + { + dataType="Object"; + class PositionInfo + { + position[]={26630.908,17.250774,24659.779}; + angles[]={0.033322938,2.2689281,0.055941612}; + }; + InEditorATL=0.0025577545; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=556; + type="Land_HBarrierBig_F"; + }; + class Item536 + { + dataType="Object"; + class PositionInfo + { + position[]={26635.52,17.278603,24665.207}; + angles[]={0.037316564,2.2689281,0.046633169}; + }; + InEditorATL=0.0020275116; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=557; + type="Land_HBarrierBig_F"; + }; + class Item537 + { + dataType="Object"; + class PositionInfo + { + position[]={26643.164,16.871075,24674.482}; + angles[]={0.093063653,2.2689281,0.049293593}; + }; + InEditorATL=0.0066976547; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=558; + type="Land_HBarrierBig_F"; + }; + class Item538 + { + dataType="Object"; + class PositionInfo + { + position[]={26660.084,18.232018,24667.191}; + angles[]={-0.018663859,0.69813168,0.038647637}; + }; + InEditorATL=0.0011463165; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=559; + type="Land_HBarrierBig_F"; + }; + class Item539 + { + dataType="Object"; + class PositionInfo + { + position[]={26654.059,17.666435,24672.152}; + angles[]={0.067895547,0.69813168,0.066567369}; + }; + InEditorATL=0.0055675507; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=560; + type="Land_HBarrierBig_F"; + }; + class Item540 + { + dataType="Object"; + class PositionInfo + { + position[]={26648.838,16.871119,24676.627}; + angles[]={0.1625528,0.69813168,0.06656827}; + }; + InEditorATL=0.018845558; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=561; + type="Land_HBarrierBig_F"; + }; + class Item541 + { + dataType="Object"; + class PositionInfo + { + position[]={26609.561,16.283766,24653.707}; + angles[]={0.039979152,0.69813168,-0.0026744273}; + }; + InEditorATL=0.00093841553; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=562; + type="Land_HBarrierBig_F"; + }; + class Item542 + { + dataType="Object"; + class PositionInfo + { + position[]={26604.801,16.135786,24657.393}; + angles[]={-0.0039967569,0.69813168,0.041309625}; + }; + InEditorATL=0.001074791; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=563; + type="Land_HBarrierBig_F"; + }; + class Item543 + { + dataType="Object"; + class PositionInfo + { + position[]={26609.217,15.691241,24667.283}; + angles[]={0.043971907,2.2689281,0.025327841}; + }; + InEditorATL=0.0015411377; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=564; + type="Land_HBarrierBig_F"; + }; + class Item544 + { + dataType="Object"; + class PositionInfo + { + position[]={26614.105,15.489675,24673.264}; + angles[]={0.077179953,2.2689281,0.043971907}; + }; + InEditorATL=0.0047254562; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=565; + type="Land_HBarrierBig_F"; + }; + class Item545 + { + dataType="Object"; + class PositionInfo + { + position[]={26618.334,15.658262,24673.723}; + angles[]={0.077179179,0.69813168,0.063913256}; + }; + InEditorATL=0.0061283112; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=566; + type="Land_HBarrierBig_F"; + }; + class Item546 + { + dataType="Object"; + class PositionInfo + { + position[]={26623.816,16.366018,24669.07}; + angles[]={0.085126832,0.69813168,0.055941612}; + }; + InEditorATL=0.0063209534; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=567; + type="Land_HBarrierBig_F"; + }; + class Item547 + { + dataType="Object"; + class PositionInfo + { + position[]={26629.027,16.930658,24664.713}; + angles[]={0.037316564,0.69813168,0.065240532}; + }; + InEditorATL=0.0034990311; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=568; + type="Land_HBarrierBig_F"; + }; + class Item548 + { + dataType="Object"; + class PositionInfo + { + position[]={26681.115,22.03294,24578.297}; + angles[]={0.02399601,2.2689281,0.027993103}; + }; + InEditorATL=0.0008430481; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=569; + type="Land_HBarrierBig_F"; + }; + class Item549 + { + dataType="Object"; + class PositionInfo + { + position[]={26685.891,21.971802,24584.004}; + angles[]={0.031990308,2.2689281,0.021328852}; + }; + InEditorATL=0.00096321106; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=570; + type="Land_HBarrierBig_F"; + }; + class Item550 + { + dataType="Object"; + class PositionInfo + { + position[]={26701.379,22.955482,24561.127}; + angles[]={0.022664838,2.2689281,0.017332481}; + }; + InEditorATL=0.00046730042; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=571; + type="Land_HBarrierBig_F"; + }; + class Item551 + { + dataType="Object"; + class PositionInfo + { + position[]={26706.512,22.872032,24567.199}; + angles[]={0.030658109,2.2689281,0.0146689}; + }; + InEditorATL=0.00065040588; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=572; + type="Land_HBarrierBig_F"; + }; + class Item552 + { + dataType="Object"; + class PositionInfo + { + position[]={26692.246,22.552151,24568.758}; + angles[]={0.022662206,2.2689281,0.02666023}; + }; + InEditorATL=0.00075149536; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=573; + type="Land_HBarrierBig_F"; + }; + class Item553 + { + dataType="Object"; + class PositionInfo + { + position[]={26697.391,22.48494,24574.836}; + angles[]={0.034652505,2.2689281,0.014664836}; + }; + InEditorATL=0.00088882446; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=574; + type="Land_HBarrierBig_F"; + }; + class Item554 + { + dataType="Object"; + class PositionInfo + { + position[]={26730.588,24.119701,24510.449}; + angles[]={0.0013372133,0.69813168,0.033321146}; + }; + InEditorATL=0.00065040588; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=575; + type="Land_HBarrierBig_F"; + }; + class Item555 + { + dataType="Object"; + class PositionInfo + { + position[]={26724.594,23.927898,24515.438}; + angles[]={-0.0026520467,0.69813168,0.034652505}; + }; + InEditorATL=0.00091362; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=576; + type="Land_HBarrierBig_F"; + }; + class Item556 + { + dataType="Object"; + class PositionInfo + { + position[]={26720.455,23.159239,24518.111}; + angles[]={-0.0026520467,2.2689281,0.033321146}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + init="this enableSimulationGlobal false;"; + name="garage_spawner_6"; + }; + id=577; + type="Land_InfoStand_V1_F"; + }; + class Item557 + { + dataType="Object"; + class PositionInfo + { + position[]={26732.834,21.379532,24639.023}; + angles[]={0.0080009829,0.69813168,0.097027972}; + }; + InEditorATL=0.0058460236; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=578; + type="Land_HBarrierBig_F"; + }; + class Item558 + { + dataType="Object"; + class PositionInfo + { + position[]={26727.453,21.054001,24643.656}; + angles[]={0.0080009829,0.69813168,0.0026520467}; + }; + InEditorATL=5.1498413e-005; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=579; + type="Land_HBarrierBig_F"; + }; + class Item559 + { + dataType="Object"; + class PositionInfo + { + position[]={26724.295,21.036419,24646.223}; + angles[]={-0.0013372133,0.69813168,0.0026520467}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=580; + type="Land_HBarrierBig_F"; + }; + class Item560 + { + dataType="Object"; + class PositionInfo + { + position[]={26713.211,20.805805,24655.893}; + angles[]={0.038647637,0.69813168,0.051953323}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=581; + type="Land_HBarrierBig_F"; + }; + class Item561 + { + dataType="Object"; + class PositionInfo + { + position[]={26700.139,20.114925,24648.064}; + angles[]={0.053282689,0.69813168,0}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=582; + type="Land_CampingChair_V1_F"; + }; + class Item562 + { + dataType="Object"; + class PositionInfo + { + position[]={26699.354,20.039896,24648.658}; + angles[]={0.053282689,0.69813168,0.069223277}; + }; + InEditorATL=0.00019454956; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=583; + type="Land_CampingChair_V1_F"; + }; + class Item563 + { + dataType="Object"; + class PositionInfo + { + position[]={26698.514,19.944025,24649.363}; + angles[]={0.053282689,0.69813168,0.069223277}; + }; + InEditorATL=0.00019454956; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=584; + type="Land_CampingChair_V1_F"; + }; + class Item564 + { + dataType="Object"; + class PositionInfo + { + position[]={26695.219,19.572865,24652.041}; + angles[]={0.053282689,0.69813168,0.069223277}; + }; + InEditorATL=0.00019454956; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=585; + type="Land_CampingChair_V1_F"; + }; + class Item565 + { + dataType="Object"; + class PositionInfo + { + position[]={26697.717,19.856087,24649.977}; + angles[]={0.053282689,0.69813168,0.069223277}; + }; + InEditorATL=0.00019454956; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=586; + type="Land_CampingChair_V1_F"; + }; + class Item566 + { + dataType="Object"; + class PositionInfo + { + position[]={26695.969,19.657503,24651.428}; + angles[]={0.053282689,0.69813168,0.069223277}; + }; + InEditorATL=0.00019454956; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=587; + type="Land_CampingChair_V1_F"; + }; + class Item567 + { + dataType="Object"; + class PositionInfo + { + position[]={26696.832,19.757366,24650.678}; + angles[]={0.053282689,0.69813168,0.069223277}; + }; + InEditorATL=0.00019454956; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=588; + type="Land_CampingChair_V1_F"; + }; + class Item568 + { + dataType="Object"; + class PositionInfo + { + position[]={26701.41,20.039829,24649.473}; + angles[]={0.053282689,0.69813168,0}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=589; + type="Land_CampingChair_V1_F"; + }; + class Item569 + { + dataType="Object"; + class PositionInfo + { + position[]={26700.66,20.008091,24650.066}; + angles[]={0.053282689,0.69813168,0}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=590; + type="Land_CampingChair_V1_F"; + }; + class Item570 + { + dataType="Object"; + class PositionInfo + { + position[]={26699.785,19.957163,24650.771}; + angles[]={0.053282689,0.69813168,0.069223277}; + }; + InEditorATL=0.00019454956; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=591; + type="Land_CampingChair_V1_F"; + }; + class Item571 + { + dataType="Object"; + class PositionInfo + { + position[]={26696.49,19.550367,24653.467}; + angles[]={0.090419561,0.69813168,0.069222413}; + }; + InEditorATL=0.0004863739; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=592; + type="Land_CampingChair_V1_F"; + }; + class Item572 + { + dataType="Object"; + class PositionInfo + { + position[]={26698.988,19.869095,24651.385}; + angles[]={0.053282689,0.69813168,0.069223277}; + }; + InEditorATL=0.00019454956; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=593; + type="Land_CampingChair_V1_F"; + }; + class Item573 + { + dataType="Object"; + class PositionInfo + { + position[]={26697.24,19.658031,24652.854}; + angles[]={0.090419561,0.69813168,0.069222413}; + }; + InEditorATL=0.0004863739; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=594; + type="Land_CampingChair_V1_F"; + }; + class Item574 + { + dataType="Object"; + class PositionInfo + { + position[]={26698.104,19.770374,24652.086}; + angles[]={0.053282689,0.69813168,0.069223277}; + }; + InEditorATL=0.00019454956; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=595; + type="Land_CampingChair_V1_F"; + }; + class Item575 + { + dataType="Object"; + class PositionInfo + { + position[]={26702.695,20.02947,24650.85}; + angles[]={-0.0066682254,0.69813168,0.059927464}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=596; + type="Land_CampingChair_V1_F"; + }; + class Item576 + { + dataType="Object"; + class PositionInfo + { + position[]={26701.945,19.98838,24651.443}; + angles[]={-0.0066682254,0.69813168,0.059927464}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=597; + type="Land_CampingChair_V1_F"; + }; + class Item577 + { + dataType="Object"; + class PositionInfo + { + position[]={26701.105,19.942762,24652.148}; + angles[]={-0.0066682254,0.69813168,0.059927464}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=598; + type="Land_CampingChair_V1_F"; + }; + class Item578 + { + dataType="Object"; + class PositionInfo + { + position[]={26697.807,19.513832,24654.877}; + angles[]={0.091741994,0.69813168,0.067896426}; + }; + InEditorATL=0.00058364868; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=599; + type="Land_CampingChair_V1_F"; + }; + class Item579 + { + dataType="Object"; + class PositionInfo + { + position[]={26700.309,19.870852,24652.813}; + angles[]={0.091741994,0.69813168,0.059928458}; + }; + InEditorATL=0.00038909912; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=600; + type="Land_CampingChair_V1_F"; + }; + class Item580 + { + dataType="Object"; + class PositionInfo + { + position[]={26698.557,19.621315,24654.264}; + angles[]={0.091741994,0.69813168,0.067896426}; + }; + InEditorATL=0.00058364868; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=601; + type="Land_CampingChair_V1_F"; + }; + class Item581 + { + dataType="Object"; + class PositionInfo + { + position[]={26699.42,19.748859,24653.514}; + angles[]={0.091741994,0.69813168,0.067896426}; + }; + InEditorATL=0.00058364868; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=602; + type="Land_CampingChair_V1_F"; + }; + class Item582 + { + dataType="Object"; + class PositionInfo + { + position[]={26714.018,21.021114,24651.162}; + angles[]={-0.0066592805,2.2689281,0}; + }; + InEditorATL=2.6702881e-005; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=603; + type="Land_HBarrierBig_F"; + }; + class Item583 + { + dataType="Object"; + class PositionInfo + { + position[]={26709.887,20.990219,24646.527}; + angles[]={-0.0066592805,2.2689281,0}; + }; + InEditorATL=2.6702881e-005; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=604; + type="Land_HBarrierBig_F"; + }; + class Item584 + { + dataType="Object"; + class PositionInfo + { + position[]={26705.578,20.98,24641.268}; + angles[]={0,2.2689281,0}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=605; + type="Land_HBarrierBig_F"; + }; + class Item585 + { + dataType="Object"; + class PositionInfo + { + position[]={26654.258,20.494335,24552.754}; + angles[]={-0.02399601,0.08726646,0.063913256}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=606; + type="Land_CncBarrier_stripes_F"; + }; + class Item586 + { + dataType="Object"; + class PositionInfo + { + position[]={26656.795,20.619471,24552.498}; + angles[]={-0.02399601,0.08726646,0.046631888}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=607; + type="Land_CncBarrier_stripes_F"; + }; + class Item587 + { + dataType="Object"; + class PositionInfo + { + position[]={26656.076,21.286316,24546.988}; + angles[]={-0.010669862,2.4434609,0.046631888}; + }; + InEditorATL=0.0015220642; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=609; + type="Land_HBarrierBig_F"; + }; + class Item588 + { + dataType="Object"; + class PositionInfo + { + position[]={26649.906,20.939194,24541.695}; + angles[]={0.0026744273,2.4434609,0.046631888}; + }; + InEditorATL=0.0013542175; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=610; + type="Land_HBarrierBig_F"; + }; + class Item589 + { + dataType="Object"; + class PositionInfo + { + position[]={26643.842,20.534496,24536.586}; + angles[]={-0.015998369,2.4434609,0.06656827}; + }; + InEditorATL=0.0028800964; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=611; + type="Land_HBarrierBig_F"; + }; + class Item590 + { + dataType="Object"; + class PositionInfo + { + position[]={26638.363,20.424591,24563.189}; + angles[]={0.019996032,2.4434609,0.057270125}; + }; + InEditorATL=0.0021457672; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=612; + type="Land_HBarrierBig_F"; + }; + class Item591 + { + dataType="Object"; + class PositionInfo + { + position[]={26632.17,20.060005,24557.852}; + angles[]={-0.0039967569,2.4434609,0.075853623}; + }; + InEditorATL=0.0036449432; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=613; + type="Land_HBarrierBig_F"; + }; + class Item592 + { + dataType="Object"; + class PositionInfo + { + position[]={26626.135,19.64603,24552.766}; + angles[]={-0.0039967569,2.4434609,0.071875811}; + }; + InEditorATL=0.0032291412; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=614; + type="Land_HBarrierBig_F"; + }; + class Item593 + { + dataType="Object"; + class PositionInfo + { + position[]={26625.787,19.605,24548.748}; + angles[]={-0.0039967569,0.87266463,0.071875811}; + }; + InEditorATL=0.0031833649; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=615; + type="Land_HBarrierBig_F"; + }; + class Item594 + { + dataType="Object"; + class PositionInfo + { + position[]={26630.598,19.866386,24542.877}; + angles[]={-0.017332481,0.87266463,0.071875811}; + }; + InEditorATL=0.0033416748; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=616; + type="Land_HBarrierBig_F"; + }; + class Item595 + { + dataType="Object"; + class PositionInfo + { + position[]={26637.379,20.178253,24534.982}; + angles[]={-0.012000273,0.87266463,0.058599081}; + }; + InEditorATL=0.0021800995; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=617; + type="Land_HBarrierBig_F"; + }; + class Item596 + { + dataType="Object"; + class PositionInfo + { + position[]={26634.848,20.062298,24537.941}; + angles[]={-0.0039967569,0.87266463,0.050623242}; + }; + InEditorATL=0.0015029907; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=618; + type="Land_HBarrierBig_F"; + }; + class Item597 + { + dataType="Object"; + class PositionInfo + { + position[]={26641.676,20.401207,24534.424}; + angles[]={-0.0039967569,2.4434609,0.05461248}; + }; + InEditorATL=0.0018196106; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=619; + type="Land_HBarrierBig_F"; + }; + class Item598 + { + dataType="Object"; + class PositionInfo + { + position[]={26683.902,20.587904,24597.398}; + angles[]={0.045302324,0.69813168,0.0146689}; + }; + InEditorATL=0.00044631958; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=620; + type="Land_CncBarrier_stripes_F"; + }; + class Item599 + { + dataType="Object"; + class PositionInfo + { + position[]={26845.58,30.788649,24458.609}; + angles[]={0.025327841,0,0}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=621; + type="Flag_UK_F"; + }; + class Item600 + { + dataType="Object"; + class PositionInfo + { + position[]={26704.102,20.124134,24652.395}; + angles[]={-0.0066682254,0.69813168,0.059927464}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=622; + type="Land_CampingChair_V1_F"; + }; + class Item601 + { + dataType="Object"; + class PositionInfo + { + position[]={26703.352,20.032557,24653.039}; + angles[]={0.091741994,0.69813168,0.059928458}; + }; + InEditorATL=0.00038909912; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=623; + type="Land_CampingChair_V1_F"; + }; + class Item602 + { + dataType="Object"; + class PositionInfo + { + position[]={26702.512,19.917381,24653.744}; + angles[]={0.091741994,0.69813168,0.059928458}; + }; + InEditorATL=0.00038909912; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=624; + type="Land_CampingChair_V1_F"; + }; + class Item603 + { + dataType="Object"; + class PositionInfo + { + position[]={26699.213,19.467278,24656.422}; + angles[]={0.091741994,0.69813168,0.067896426}; + }; + InEditorATL=0.00058364868; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=625; + type="Land_CampingChair_V1_F"; + }; + class Item604 + { + dataType="Object"; + class PositionInfo + { + position[]={26701.715,19.813047,24654.357}; + angles[]={0.091741994,0.69813168,0.059928458}; + }; + InEditorATL=0.00038909912; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=626; + type="Land_CampingChair_V1_F"; + }; + class Item605 + { + dataType="Object"; + class PositionInfo + { + position[]={26699.967,19.575016,24655.809}; + angles[]={0.091741994,0.69813168,0.059928458}; + }; + InEditorATL=0.00061798096; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=627; + type="Land_CampingChair_V1_F"; + }; + class Item606 + { + dataType="Object"; + class PositionInfo + { + position[]={26700.83,19.695635,24655.059}; + angles[]={0.091741994,0.69813168,0.059928458}; + }; + InEditorATL=0.00038909912; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=628; + type="Land_CampingChair_V1_F"; + }; + class Item607 + { + dataType="Object"; + class PositionInfo + { + position[]={26708.316,20.303925,24648.938}; + angles[]={-0.0066592805,0.69813168,0}; + }; + InEditorATL=-1.9073486e-006; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=629; + type="Land_CampingChair_V1_F"; + }; + class Item608 + { + dataType="Object"; + class PositionInfo + { + position[]={26704.99,20.17223,24651.615}; + angles[]={-0.0066682254,0.69813168,0.059927464}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=630; + type="Land_CampingChair_V1_F"; + }; + class Item609 + { + dataType="Object"; + class PositionInfo + { + position[]={26707.52,20.308014,24649.551}; + angles[]={-0.0066592805,0.69813168,0}; + }; + InEditorATL=-1.9073486e-006; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=631; + type="Land_CampingChair_V1_F"; + }; + class Item610 + { + dataType="Object"; + class PositionInfo + { + position[]={26705.74,20.213184,24651.002}; + angles[]={-0.0066682254,0.69813168,0.059927464}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=632; + type="Land_CampingChair_V1_F"; + }; + class Item611 + { + dataType="Object"; + class PositionInfo + { + position[]={26706.604,20.259926,24650.252}; + angles[]={-0.0066682254,0.69813168,0.059927464}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=633; + type="Land_CampingChair_V1_F"; + }; + class Item612 + { + dataType="Object"; + class PositionInfo + { + position[]={26706.836,20.254835,24647.395}; + angles[]={-0.0066682254,0.69813168,0.059927464}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=634; + type="Land_CampingChair_V1_F"; + }; + class Item613 + { + dataType="Object"; + class PositionInfo + { + position[]={26703.541,20.075039,24650.072}; + angles[]={-0.0066682254,0.69813168,0.059927464}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=635; + type="Land_CampingChair_V1_F"; + }; + class Item614 + { + dataType="Object"; + class PositionInfo + { + position[]={26706.039,20.211134,24648.008}; + angles[]={-0.0066682254,0.69813168,0.059927464}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=636; + type="Land_CampingChair_V1_F"; + }; + class Item615 + { + dataType="Object"; + class PositionInfo + { + position[]={26704.291,20.115883,24649.459}; + angles[]={-0.0066682254,0.69813168,0.059927464}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=637; + type="Land_CampingChair_V1_F"; + }; + class Item616 + { + dataType="Object"; + class PositionInfo + { + position[]={26705.154,20.162733,24648.709}; + angles[]={-0.0066682254,0.69813168,0.059927464}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=638; + type="Land_CampingChair_V1_F"; + }; + class Item617 + { + dataType="Object"; + class PositionInfo + { + position[]={26705.551,20.221664,24646.063}; + angles[]={0.053282689,0.69813168,0}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=639; + type="Land_CampingChair_V1_F"; + }; + class Item618 + { + dataType="Object"; + class PositionInfo + { + position[]={26702.256,20.07889,24648.74}; + angles[]={0.053282689,0.69813168,0}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=640; + type="Land_CampingChair_V1_F"; + }; + class Item619 + { + dataType="Object"; + class PositionInfo + { + position[]={26704.754,20.18895,24646.676}; + angles[]={0.053282689,0.69813168,0}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=641; + type="Land_CampingChair_V1_F"; + }; + class Item620 + { + dataType="Object"; + class PositionInfo + { + position[]={26703.006,20.111507,24648.127}; + angles[]={0.053282689,0.69813168,0}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=642; + type="Land_CampingChair_V1_F"; + }; + class Item621 + { + dataType="Object"; + class PositionInfo + { + position[]={26703.869,20.151546,24647.377}; + angles[]={0.053282689,0.69813168,0}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=643; + type="Land_CampingChair_V1_F"; + }; + class Item622 + { + dataType="Object"; + class PositionInfo + { + position[]={26704.098,20.277657,24644.717}; + angles[]={0,0.69813168,0}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=644; + type="Land_CampingChair_V1_F"; + }; + class Item623 + { + dataType="Object"; + class PositionInfo + { + position[]={26700.803,20.149202,24647.422}; + angles[]={0.053282689,0.69813168,0}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=645; + type="Land_CampingChair_V1_F"; + }; + class Item624 + { + dataType="Object"; + class PositionInfo + { + position[]={26703.301,20.259262,24645.357}; + angles[]={0.053282689,0.69813168,0}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=646; + type="Land_CampingChair_V1_F"; + }; + class Item625 + { + dataType="Object"; + class PositionInfo + { + position[]={26701.553,20.18182,24646.809}; + angles[]={0.053282689,0.69813168,0}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=647; + type="Land_CampingChair_V1_F"; + }; + class Item626 + { + dataType="Object"; + class PositionInfo + { + position[]={26702.416,20.221859,24646.059}; + angles[]={0.053282689,0.69813168,0}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=648; + type="Land_CampingChair_V1_F"; + }; + class Item627 + { + dataType="Object"; + class PositionInfo + { + position[]={26702.963,20.277657,24642.992}; + angles[]={0,0.69813168,0}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=649; + type="Land_CampingChair_V1_F"; + }; + class Item628 + { + dataType="Object"; + class PositionInfo + { + position[]={26699.633,20.217104,24645.697}; + angles[]={0.053282689,0.69813168,0.069223277}; + }; + InEditorATL=0.00019454956; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=650; + type="Land_CampingChair_V1_F"; + }; + class Item629 + { + dataType="Object"; + class PositionInfo + { + position[]={26702.166,20.277657,24643.605}; + angles[]={0,0.69813168,0}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=651; + type="Land_CampingChair_V1_F"; + }; + class Item630 + { + dataType="Object"; + class PositionInfo + { + position[]={26700.418,20.273813,24645.084}; + angles[]={0.053282689,0.69813168,0}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=652; + type="Land_CampingChair_V1_F"; + }; + class Item631 + { + dataType="Object"; + class PositionInfo + { + position[]={26701.281,20.277657,24644.307}; + angles[]={0,0.69813168,0}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=653; + type="Land_CampingChair_V1_F"; + }; + class Item632 + { + dataType="Object"; + class PositionInfo + { + position[]={26702.121,20.16543,24625.27}; + angles[]={-0.0053265258,-2.4434612,0.0053265258}; + }; + InEditorATL=2.4795532e-005; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=654; + type="Land_BagFence_Long_F"; + }; + class Item633 + { + dataType="Object"; + class PositionInfo + { + position[]={26676.553,19.62664,24639.834}; + angles[]={0.042640556,2.2689281,0.17033315}; + }; + InEditorATL=0.019075394; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=655; + type="Land_HBarrierBig_F"; + }; + class Item634 + { + dataType="Object"; + class PositionInfo + { + position[]={26681.648,19.584171,24646.037}; + angles[]={0.17680109,2.2689281,0.047963165}; + }; + InEditorATL=0.020505905; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=656; + type="Land_HBarrierBig_F"; + }; + class Item635 + { + dataType="Object"; + class PositionInfo + { + position[]={26685.879,19.829151,24646.416}; + angles[]={0.086450629,0.69813168,0.041309625}; + }; + InEditorATL=0.0055751801; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=657; + type="Land_HBarrierBig_F"; + }; + class Item636 + { + dataType="Logic"; + class PositionInfo + { + position[]={26463.611,-0.079100713,24713.971}; + }; + id=658; + type="ace_captives_moduleSettings"; + class CustomAttributes + { + class Attribute0 + { + property="ace_captives_moduleSettings_requireSurrender"; + expression="_this setVariable ['requireSurrender',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=1; + }; + }; + }; + class Attribute1 + { + property="ace_captives_moduleSettings_allowHandcuffOwnSide"; + expression="_this setVariable ['allowHandcuffOwnSide',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=1; + }; + }; + }; + class Attribute2 + { + property="ace_captives_moduleSettings_allowSurrender"; + expression="_this setVariable ['allowSurrender',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=1; + }; + }; + }; + }; + }; + class Item637 + { + dataType="Logic"; + class PositionInfo + { + position[]={26463.996,0.053912424,24757.287}; + }; + id=659; + type="ace_advanced_ballistics_ModuleSettings"; + class CustomAttributes + { + class Attribute0 + { + property="ace_advanced_ballistics_ModuleSettings_simulationRadius"; + expression="_this setVariable ['simulationRadius',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=3000; + }; + }; + }; + class Attribute1 + { + property="ace_advanced_ballistics_ModuleSettings_barrelLengthInfluenceEnabled"; + expression="_this setVariable ['barrelLengthInfluenceEnabled',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=1; + }; + }; + }; + class Attribute2 + { + property="ace_advanced_ballistics_ModuleSettings_bulletTraceEnabled"; + expression="_this setVariable ['bulletTraceEnabled',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + class Attribute3 + { + property="ace_advanced_ballistics_ModuleSettings_simulationInterval"; + expression="_this setVariable ['simulationInterval',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0; + }; + }; + }; + class Attribute4 + { + property="ace_advanced_ballistics_ModuleSettings_disabledInFullAutoMode"; + expression="_this setVariable ['disabledInFullAutoMode',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + class Attribute5 + { + property="ace_advanced_ballistics_ModuleSettings_simulateForEveryone"; + expression="_this setVariable ['simulateForEveryone',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + class Attribute6 + { + property="ace_advanced_ballistics_ModuleSettings_simulateForSnipers"; + expression="_this setVariable ['simulateForSnipers',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + class Attribute7 + { + property="ace_advanced_ballistics_ModuleSettings_simulateForGroupMembers"; + expression="_this setVariable ['simulateForGroupMembers',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + class Attribute8 + { + property="ace_advanced_ballistics_ModuleSettings_ammoTemperatureEnabled"; + expression="_this setVariable ['ammoTemperatureEnabled',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=1; + }; + }; + }; + class Attribute9 + { + property="ace_advanced_ballistics_ModuleSettings_enabled"; + expression="_this setVariable ['enabled',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=1; + }; + }; + }; + }; + }; + class Item638 + { + dataType="Logic"; + class PositionInfo + { + position[]={26471.863,-0.088919617,24757.506}; + }; + id=660; + type="ACE_moduleAdvancedMedicalSettings"; + class CustomAttributes + { + class Attribute0 + { + property="ACE_moduleAdvancedMedicalSettings_enableVehicleCrashes"; + expression="_this setVariable ['enableVehicleCrashes',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=1; + }; + }; + }; + class Attribute1 + { + property="ACE_moduleAdvancedMedicalSettings_consumeItem_SurgicalKit"; + expression="_this setVariable ['consumeItem_SurgicalKit',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=1; + }; + }; + }; + class Attribute2 + { + property="ACE_moduleAdvancedMedicalSettings_enableAdvancedWounds"; + expression="_this setVariable ['enableAdvancedWounds',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=1; + }; + }; + }; + class Attribute3 + { + property="ACE_moduleAdvancedMedicalSettings_consumeItem_PAK"; + expression="_this setVariable ['consumeItem_PAK',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0; + }; + }; + }; + class Attribute4 + { + property="ACE_moduleAdvancedMedicalSettings_useCondition_PAK"; + expression="_this setVariable ['useCondition_PAK',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0; + }; + }; + }; + class Attribute5 + { + property="ACE_moduleAdvancedMedicalSettings_medicSetting_PAK"; + expression="_this setVariable ['medicSetting_PAK',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=1; + }; + }; + }; + class Attribute6 + { + property="ACE_moduleAdvancedMedicalSettings_medicSetting_SurgicalKit"; + expression="_this setVariable ['medicSetting_SurgicalKit',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=1; + }; + }; + }; + class Attribute7 + { + property="ACE_moduleAdvancedMedicalSettings_healHitPointAfterAdvBandage"; + expression="_this setVariable ['healHitPointAfterAdvBandage',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + class Attribute8 + { + property="ACE_moduleAdvancedMedicalSettings_useLocation_SurgicalKit"; + expression="_this setVariable ['useLocation_SurgicalKit',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=3; + }; + }; + }; + class Attribute9 + { + property="ACE_moduleAdvancedMedicalSettings_useCondition_SurgicalKit"; + expression="_this setVariable ['useCondition_SurgicalKit',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0; + }; + }; + }; + class Attribute10 + { + property="ACE_moduleAdvancedMedicalSettings_useLocation_PAK"; + expression="_this setVariable ['useLocation_PAK',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=2; + }; + }; + }; + class Attribute11 + { + property="ACE_moduleAdvancedMedicalSettings_enableFor"; + expression="_this setVariable ['enableFor',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=1; + }; + }; + }; + class Attribute12 + { + property="ACE_moduleAdvancedMedicalSettings_painIsOnlySuppressed"; + expression="_this setVariable ['painIsOnlySuppressed',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=1; + }; + }; + }; + }; + }; + class Item639 + { + dataType="Logic"; + class PositionInfo + { + position[]={26472.102,0.011795267,24747.604}; + }; + id=661; + type="ACE_moduleMedicalSettings"; + class CustomAttributes + { + class Attribute0 + { + property="ACE_moduleMedicalSettings_litterCleanUpDelay"; + expression="_this setVariable ['litterCleanUpDelay',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=300; + }; + }; + }; + class Attribute1 + { + property="ACE_moduleMedicalSettings_enableScreams"; + expression="_this setVariable ['enableScreams',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=1; + }; + }; + }; + class Attribute2 + { + property="ACE_moduleMedicalSettings_preventInstaDeath"; + expression="_this setVariable ['preventInstaDeath',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + class Attribute3 + { + property="ACE_moduleMedicalSettings_bleedingCoefficient"; + expression="_this setVariable ['bleedingCoefficient',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=1; + }; + }; + }; + class Attribute4 + { + property="ACE_moduleMedicalSettings_remoteControlledAI"; + expression="_this setVariable ['remoteControlledAI',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=1; + }; + }; + }; + class Attribute5 + { + property="ACE_moduleMedicalSettings_enableUnconsciousnessAI"; + expression="_this setVariable ['enableUnconsciousnessAI',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=2; + }; + }; + }; + class Attribute6 + { + property="ACE_moduleMedicalSettings_painCoefficient"; + expression="_this setVariable ['painCoefficient',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=1; + }; + }; + }; + class Attribute7 + { + property="ACE_moduleMedicalSettings_AIDamageThreshold"; + expression="_this setVariable ['AIDamageThreshold',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=1; + }; + }; + }; + class Attribute8 + { + property="ACE_moduleMedicalSettings_playerDamageThreshold"; + expression="_this setVariable ['playerDamageThreshold',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=1; + }; + }; + }; + class Attribute9 + { + property="ACE_moduleMedicalSettings_level"; + expression="_this setVariable ['level',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=2; + }; + }; + }; + class Attribute10 + { + property="ACE_moduleMedicalSettings_allowLitterCreation"; + expression="_this setVariable ['allowLitterCreation',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=1; + }; + }; + }; + class Attribute11 + { + property="ACE_moduleMedicalSettings_keepLocalSettingsSynced"; + expression="_this setVariable ['keepLocalSettingsSynced',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=1; + }; + }; + }; + class Attribute12 + { + property="ACE_moduleMedicalSettings_medicSetting"; + expression="_this setVariable ['medicSetting',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=2; + }; + }; + }; + }; + }; + class Item640 + { + dataType="Logic"; + class PositionInfo + { + position[]={26456.918,0.0034812093,24729.619}; + }; + id=662; + type="ACE_moduleCargoSettings"; + class CustomAttributes + { + class Attribute0 + { + property="ACE_moduleCargoSettings_enable"; + expression="_this setVariable ['enable',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=1; + }; + }; + }; + }; + }; + class Item641 + { + dataType="Logic"; + class PositionInfo + { + position[]={26463.996,-0.28652379,24737.893}; + }; + id=663; + type="ACE_ModuleExplosive"; + class CustomAttributes + { + class Attribute0 + { + property="ACE_ModuleExplosive_RequireSpecialist"; + expression="_this setVariable ['RequireSpecialist',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=1; + }; + }; + }; + class Attribute1 + { + property="ACE_ModuleExplosive_PunishNonSpecialists"; + expression="_this setVariable ['PunishNonSpecialists',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=1; + }; + }; + }; + class Attribute2 + { + property="ACE_ModuleExplosive_ExplodeOnDefuse"; + expression="_this setVariable ['ExplodeOnDefuse',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=1; + }; + }; + }; + }; + }; + class Item642 + { + dataType="Logic"; + class PositionInfo + { + position[]={26463.457,-0.25014102,24706.092}; + }; + id=664; + type="ace_microdagr_dagrModule"; + class CustomAttributes + { + class Attribute0 + { + property="ace_microdagr_dagrModule_MapDataAvailable"; + expression="_this setVariable ['MapDataAvailable',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=2; + }; + }; + }; + }; + }; + class Item643 + { + dataType="Logic"; + class PositionInfo + { + position[]={26485.996,-0.20016393,24758.756}; + }; + name="zeusMod"; + id=665; + type="ModuleCurator_F"; + class CustomAttributes + { + class Attribute0 + { + property="ModuleCurator_F_Addons"; + expression="_this setVariable ['Addons',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=3; + }; + }; + }; + class Attribute1 + { + property="ModuleCurator_F_Owner"; + expression="_this setVariable ['Owner',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="#adminLogged"; + }; + }; + }; + class Attribute2 + { + property="ModuleCurator_F_Name"; + expression="_this setVariable ['Name',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value=""; + }; + }; + }; + class Attribute3 + { + property="ModuleCurator_F_Forced"; + expression="_this setVariable ['Forced',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0; + }; + }; + }; + }; + }; + class Item644 + { + dataType="Logic"; + class PositionInfo + { + position[]={26486.133,-0.27491012,24748.439}; + }; + id=666; + type="tfar_ModuleTaskForceRadioEnforceUsage"; + class CustomAttributes + { + class Attribute0 + { + property="tfar_ModuleTaskForceRadioEnforceUsage_radio_channel_password"; + expression="_this setVariable ['radio_channel_password',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="ModdedWithTFAR"; + }; + }; + }; + class Attribute1 + { + property="tfar_ModuleTaskForceRadioEnforceUsage_RiflemanRadio"; + expression="_this setVariable ['RiflemanRadio',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + class Attribute2 + { + property="tfar_ModuleTaskForceRadioEnforceUsage_radio_channel_name"; + expression="_this setVariable ['radio_channel_name',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="ArmA 3 EU #3 Modded w/ TFAR"; + }; + }; + }; + class Attribute3 + { + property="tfar_ModuleTaskForceRadioEnforceUsage_same_sw_frequencies_for_side"; + expression="_this setVariable ['same_sw_frequencies_for_side',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + class Attribute4 + { + property="tfar_ModuleTaskForceRadioEnforceUsage_TeamLeaderRadio"; + expression="_this setVariable ['TeamLeaderRadio',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + class Attribute5 + { + property="tfar_ModuleTaskForceRadioEnforceUsage_same_lr_frequencies_for_side"; + expression="_this setVariable ['same_lr_frequencies_for_side',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=1; + }; + }; + }; + class Attribute6 + { + property="tfar_ModuleTaskForceRadioEnforceUsage_terrain_interception_coefficient"; + expression="_this setVariable ['terrain_interception_coefficient',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=7; + }; + }; + }; + }; + }; + class Item645 + { + dataType="Logic"; + class PositionInfo + { + position[]={26463.48,-0.21529914,24698.939}; + }; + id=667; + type="ACE_ModuleRespawn"; + class CustomAttributes + { + class Attribute0 + { + property="ACE_ModuleRespawn_RemoveDeadBodiesDisconnected"; + expression="_this setVariable ['RemoveDeadBodiesDisconnected',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=1; + }; + }; + }; + class Attribute1 + { + property="ACE_ModuleRespawn_SavePreDeathGear"; + expression="_this setVariable ['SavePreDeathGear',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + }; + }; + class Item646 + { + dataType="Logic"; + class PositionInfo + { + position[]={26463.645,-0.066862352,24691.455}; + }; + id=668; + type="ace_zeus_moduleSettings"; + class CustomAttributes + { + class Attribute0 + { + property="ace_zeus_moduleSettings_remoteWind"; + expression="_this setVariable ['remoteWind',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + class Attribute1 + { + property="ace_zeus_moduleSettings_zeusAscension"; + expression="_this setVariable ['zeusAscension',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + class Attribute2 + { + property="ace_zeus_moduleSettings_radioOrdnance"; + expression="_this setVariable ['radioOrdnance',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=1; + }; + }; + }; + class Attribute3 + { + property="ace_zeus_moduleSettings_revealMines"; + expression="_this setVariable ['revealMines',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0; + }; + }; + }; + class Attribute4 + { + property="ace_zeus_moduleSettings_zeusBird"; + expression="_this setVariable ['zeusBird',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + }; + }; + class Item647 + { + dataType="Logic"; + class PositionInfo + { + position[]={26463.648,0.053146943,24683.975}; + }; + id=669; + type="ace_weather_ModuleSettings"; + class CustomAttributes + { + class Attribute0 + { + property="ace_weather_ModuleSettings_useACEWeather"; + expression="_this setVariable ['useACEWeather',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=1; + }; + }; + }; + class Attribute1 + { + property="ace_weather_ModuleSettings_serverUpdateInterval"; + expression="_this setVariable ['serverUpdateInterval',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=60; + }; + }; + }; + class Attribute2 + { + property="ace_weather_ModuleSettings_syncMisc"; + expression="_this setVariable ['syncMisc',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=1; + }; + }; + }; + class Attribute3 + { + property="ace_weather_ModuleSettings_syncRain"; + expression="_this setVariable ['syncRain',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=1; + }; + }; + }; + class Attribute4 + { + property="ace_weather_ModuleSettings_enableServerController"; + expression="_this setVariable ['enableServerController',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=1; + }; + }; + }; + class Attribute5 + { + property="ace_weather_ModuleSettings_syncWind"; + expression="_this setVariable ['syncWind',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=1; + }; + }; + }; + }; + }; + class Item648 + { + dataType="Logic"; + class PositionInfo + { + position[]={26463.797,-0.14229077,24747.873}; + }; + id=670; + type="ace_mk6mortar_module"; + class CustomAttributes + { + class Attribute0 + { + property="ace_mk6mortar_module_allowCompass"; + expression="_this setVariable ['allowCompass',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=1; + }; + }; + }; + class Attribute1 + { + property="ace_mk6mortar_module_airResistanceEnabled"; + expression="_this setVariable ['airResistanceEnabled',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=1; + }; + }; + }; + class Attribute2 + { + property="ace_mk6mortar_module_allowComputerRangefinder"; + expression="_this setVariable ['allowComputerRangefinder',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + }; + }; + class Item649 + { + dataType="Logic"; + class PositionInfo + { + position[]={26463.742,0.041599657,24677.99}; + }; + id=671; + type="ACE_ModuleBlueForceTracking"; + class CustomAttributes + { + class Attribute0 + { + property="ACE_ModuleBlueForceTracking_Interval"; + expression="_this setVariable ['Interval',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=30; + }; + }; + }; + class Attribute1 + { + property="ACE_ModuleBlueForceTracking_Enabled"; + expression="_this setVariable ['Enabled',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + class Attribute2 + { + property="ACE_ModuleBlueForceTracking_HideAiGroups"; + expression="_this setVariable ['HideAiGroups',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=1; + }; + }; + }; + }; + }; + class Item650 + { + dataType="Group"; + side="West"; + class Entities + { + items=2; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={30682.314,-0.090581104,23.92038}; + angles[]={0,-0.065571785,0}; + }; + InEditorATL=185.87798; + side="West"; + flags=2; + class Attributes + { + skill=0.60000002; + rank="COLONEL"; + init="(group this) setGroupId[""CMD""];"; + name="cmd1"; + description="Platoon commander"; + isPlayable=1; + }; + id=673; + type="B_officer_F"; + }; + class Item1 + { + dataType="Object"; + class PositionInfo + { + position[]={30687.619,-0.084012762,21.818996}; + angles[]={0,-0.065571785,0}; + }; + InEditorATL=185.88455; + side="West"; + class Attributes + { + skill=0.60000002; + rank="MAJOR"; + init="(group this) setGroupId[""CMD""];"; + name="cmd2"; + description="Battle captain"; + isPlayable=1; + }; + id=674; + type="B_officer_F"; + }; + }; + class Attributes + { + }; + id=672; + }; + class Item651 + { + dataType="Group"; + side="West"; + class Entities + { + items=2; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={30687.529,-0.12545243,28.324371}; + angles[]={0,-0.065571785,0}; + }; + InEditorATL=185.84311; + side="West"; + flags=2; + class Attributes + { + skill=0.60000002; + rank="SERGEANT"; + init="(group this) setGroupId[""ASL""];"; + name="a0_1"; + description="Alpha squad lead"; + isPlayer=1; + isPlayable=1; + }; + id=676; + type="B_Soldier_SL_F"; + }; + class Item1 + { + dataType="Object"; + class PositionInfo + { + position[]={30692.834,-0.089836657,26.222988}; + angles[]={0,-0.065571785,0}; + }; + InEditorATL=185.87872; + side="West"; + class Attributes + { + skill=0.60000002; + rank="CORPORAL"; + init="(group this) setGroupId[""ASL""];"; + name="a0_2"; + description="Alpha medic"; + isPlayable=1; + }; + id=677; + type="B_medic_F"; + }; + }; + class Attributes + { + }; + id=675; + }; + class Item652 + { + dataType="Group"; + side="West"; + class Entities + { + items=5; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={30687.545,-0.13328511,26.143951}; + angles[]={0,-0.065571785,0}; + }; + InEditorATL=185.83528; + side="West"; + flags=2; + class Attributes + { + skill=0.60000002; + init="(group this) setGroupId[""A2""];"; + name="a2_1"; + description="Alpha 2 team lead"; + isPlayable=1; + }; + id=679; + type="B_Soldier_TL_F"; + }; + class Item1 + { + dataType="Object"; + class PositionInfo + { + position[]={30692.85,-0.033489719,24.042568}; + angles[]={0,-0.065571785,0}; + }; + InEditorATL=185.93507; + side="West"; + class Attributes + { + skill=0.60000002; + rank="CORPORAL"; + init="(group this) setGroupId[""A2""];"; + name="a2_2"; + description="Alpha 2 rifleman(AT)"; + isPlayable=1; + }; + id=680; + type="B_soldier_LAT_F"; + }; + class Item2 + { + dataType="Object"; + class PositionInfo + { + position[]={30682.85,-0.097957328,24.042568}; + angles[]={0,-0.065571785,0}; + }; + InEditorATL=185.87061; + side="West"; + class Attributes + { + skill=0.60000002; + init="(group this) setGroupId[""A2""];"; + name="a2_3"; + description="Alpha 2 autorifleman"; + isPlayable=1; + }; + id=681; + type="B_soldier_AR_F"; + }; + class Item3 + { + dataType="Object"; + class PositionInfo + { + position[]={30698.154,0.14808297,20.554274}; + angles[]={0,-0.065571785,0}; + }; + InEditorATL=186.11664; + side="West"; + class Attributes + { + skill=0.60000002; + init="(group this) setGroupId[""A2""];"; + name="a2_4"; + description="Alpha 2 grenadier"; + isPlayable=1; + }; + id=682; + type="B_Soldier_GL_F"; + }; + class Item4 + { + dataType="Object"; + class PositionInfo + { + position[]={30678.154,-0.058933605,20.554274}; + angles[]={0,-0.065571785,0}; + }; + InEditorATL=185.90962; + side="West"; + class Attributes + { + skill=0.60000002; + init="(group this) setGroupId[""A2""];"; + name="a2_5"; + description="Alpha 2 rifleman"; + isPlayable=1; + }; + id=683; + type="B_Soldier_F"; + }; + }; + class Attributes + { + }; + id=678; + }; + class Item653 + { + dataType="Group"; + side="West"; + class Entities + { + items=5; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={30687.545,-0.132396,27.166534}; + angles[]={0,-0.065571785,0}; + }; + InEditorATL=185.83617; + side="West"; + flags=2; + class Attributes + { + skill=0.60000002; + rank="SERGEANT"; + init="(group this) setGroupId[""A1""];"; + name="a1_1"; + description="Alpha 1 team lead"; + isPlayable=1; + }; + id=685; + type="B_Soldier_TL_F"; + }; + class Item1 + { + dataType="Object"; + class PositionInfo + { + position[]={30692.85,-0.061035942,25.065151}; + angles[]={0,-0.065571785,0}; + }; + InEditorATL=185.90753; + side="West"; + class Attributes + { + skill=0.60000002; + rank="CORPORAL"; + init="(group this) setGroupId[""A1""];"; + name="a1_2"; + description="Alpha 1 marksman"; + isPlayable=1; + }; + id=686; + type="B_soldier_M_F"; + }; + class Item2 + { + dataType="Object"; + class PositionInfo + { + position[]={30682.85,-0.085195296,25.065151}; + angles[]={0,-0.065571785,0}; + }; + InEditorATL=185.88336; + side="West"; + class Attributes + { + skill=0.60000002; + init="(group this) setGroupId[""A1""];"; + name="a1_3"; + description="Alpha 1 rifleman"; + isPlayable=1; + }; + id=687; + type="B_Soldier_F"; + }; + class Item3 + { + dataType="Object"; + class PositionInfo + { + position[]={30698.154,0.13555601,21.576857}; + angles[]={0,-0.065571785,0}; + }; + InEditorATL=186.10413; + side="West"; + class Attributes + { + skill=0.60000002; + init="(group this) setGroupId[""A1""];"; + name="a1_4"; + description="Alpha 1 engineer"; + isPlayable=1; + }; + id=688; + type="B_engineer_F"; + }; + class Item4 + { + dataType="Object"; + class PositionInfo + { + position[]={30678.154,-0.041379843,21.576857}; + angles[]={0,-0.065571785,0}; + }; + InEditorATL=185.92719; + side="West"; + class Attributes + { + skill=0.60000002; + init="(group this) setGroupId[""A1""];"; + name="a1_5"; + description="Alpha 2 autorifleman"; + isPlayable=1; + }; + id=689; + type="B_soldier_AR_F"; + }; + }; + class Attributes + { + }; + id=684; + }; + class Item654 + { + dataType="Group"; + side="West"; + class Entities + { + items=2; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={30687.574,-0.12672834,24.759308}; + angles[]={0,-0.065571785,0}; + }; + InEditorATL=185.84183; + side="West"; + flags=2; + class Attributes + { + skill=0.60000002; + rank="SERGEANT"; + init="(group this) setGroupId[""BSL""];"; + name="b0_1"; + description="Bravo squad lead"; + isPlayable=1; + }; + id=691; + type="B_Soldier_SL_F"; + }; + class Item1 + { + dataType="Object"; + class PositionInfo + { + position[]={30692.879,0.0065918267,22.657925}; + angles[]={0,-0.065571785,0}; + }; + InEditorATL=185.97516; + side="West"; + class Attributes + { + skill=0.60000002; + rank="CORPORAL"; + init="(group this) setGroupId[""BSL""];"; + name="b0_2"; + description="Bravo medic"; + isPlayable=1; + }; + id=692; + type="B_medic_F"; + }; + }; + class Attributes + { + }; + id=690; + }; + class Item655 + { + dataType="Group"; + side="West"; + class Entities + { + items=5; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={30687.592,-0.098700657,22.578766}; + angles[]={0,-0.065571785,0}; + }; + InEditorATL=185.86986; + side="West"; + flags=2; + class Attributes + { + skill=0.60000002; + init="(group this) setGroupId[""B2""];"; + name="b2_1"; + description="Bravo 2 team lead"; + isPlayable=1; + }; + id=694; + type="B_Soldier_TL_F"; + }; + class Item1 + { + dataType="Object"; + class PositionInfo + { + position[]={30692.896,0.068854988,20.477383}; + angles[]={0,-0.065571785,0}; + }; + InEditorATL=186.03741; + side="West"; + class Attributes + { + skill=0.60000002; + rank="CORPORAL"; + init="(group this) setGroupId[""B2""];"; + name="b2_2"; + description="Bravo 2 rifleman(AT)"; + isPlayable=1; + }; + id=695; + type="B_soldier_LAT_F"; + }; + class Item2 + { + dataType="Object"; + class PositionInfo + { + position[]={30682.896,-0.10740099,20.477383}; + angles[]={0,-0.065571785,0}; + }; + InEditorATL=185.86116; + side="West"; + class Attributes + { + skill=0.60000002; + init="(group this) setGroupId[""B2""];"; + name="b2_3"; + description="Bravo 2 autorifleman"; + isPlayable=1; + }; + id=696; + type="B_soldier_AR_F"; + }; + class Item3 + { + dataType="Object"; + class PositionInfo + { + position[]={30698.201,0.15409118,16.989088}; + angles[]={0,-0.065571785,0}; + }; + InEditorATL=186.12265; + side="West"; + class Attributes + { + skill=0.60000002; + init="(group this) setGroupId[""B2""];"; + name="b2_4"; + description="Bravo 2 grenadier"; + isPlayable=1; + }; + id=697; + type="B_Soldier_GL_F"; + }; + class Item4 + { + dataType="Object"; + class PositionInfo + { + position[]={30678.201,-0.089006141,16.989088}; + angles[]={0,-0.065571785,0}; + }; + InEditorATL=185.87956; + side="West"; + class Attributes + { + skill=0.60000002; + init="(group this) setGroupId[""B2""];"; + name="b2_5"; + description="Bravo 2 rifleman"; + isPlayable=1; + }; + id=698; + type="B_Soldier_F"; + }; + }; + class Attributes + { + }; + id=693; + }; + class Item656 + { + dataType="Group"; + side="West"; + class Entities + { + items=5; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={30687.592,-0.11434114,23.601471}; + angles[]={0,-0.065571785,0}; + }; + InEditorATL=185.85422; + side="West"; + flags=2; + class Attributes + { + skill=0.60000002; + rank="SERGEANT"; + init="(group this) setGroupId[""B1""];"; + name="b1_1"; + description="Bravo 1 team lead"; + isPlayable=1; + }; + id=700; + type="B_Soldier_TL_F"; + }; + class Item1 + { + dataType="Object"; + class PositionInfo + { + position[]={30692.896,0.040278036,21.500088}; + angles[]={0,-0.065571785,0}; + }; + InEditorATL=186.00883; + side="West"; + class Attributes + { + skill=0.60000002; + rank="CORPORAL"; + init="(group this) setGroupId[""B1""];"; + name="b1_2"; + description="Bravo 1 marksman"; + isPlayable=1; + }; + id=701; + type="B_soldier_M_F"; + }; + class Item2 + { + dataType="Object"; + class PositionInfo + { + position[]={30682.896,-0.11082357,21.500088}; + angles[]={0,-0.065571785,0}; + }; + InEditorATL=185.85774; + side="West"; + class Attributes + { + skill=0.60000002; + init="(group this) setGroupId[""B1""];"; + name="b1_3"; + description="Bravo 1 rifleman"; + isPlayable=1; + }; + id=702; + type="B_Soldier_F"; + }; + class Item3 + { + dataType="Object"; + class PositionInfo + { + position[]={30698.201,0.15843195,18.011793}; + angles[]={0,-0.065571785,0}; + }; + InEditorATL=186.127; + side="West"; + class Attributes + { + skill=0.60000002; + init="(group this) setGroupId[""B1""];"; + name="b1_4"; + description="Bravo 1 engineer"; + isPlayable=1; + }; + id=703; + type="B_engineer_F"; + }; + class Item4 + { + dataType="Object"; + class PositionInfo + { + position[]={30678.201,-0.086210951,18.011793}; + angles[]={0,-0.065571785,0}; + }; + InEditorATL=185.88235; + side="West"; + class Attributes + { + skill=0.60000002; + init="(group this) setGroupId[""B1""];"; + name="b1_5"; + description="Bravo 2 autorifleman"; + isPlayable=1; + }; + id=704; + type="B_soldier_AR_F"; + }; + }; + class Attributes + { + }; + id=699; + }; + class Item657 + { + dataType="Group"; + side="West"; + class Entities + { + items=2; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={30687.391,-0.069330275,20.94339}; + angles[]={0,-0.065571785,0}; + }; + InEditorATL=185.89923; + side="West"; + flags=2; + class Attributes + { + skill=0.60000002; + rank="SERGEANT"; + init="(group this) setGroupId[""CSL""];"; + name="c0_1"; + description="Charlie squad lead"; + isPlayable=1; + }; + id=706; + type="B_Soldier_SL_F"; + }; + class Item1 + { + dataType="Object"; + class PositionInfo + { + position[]={30692.695,0.10676198,18.842007}; + angles[]={0,-0.065571785,0}; + }; + InEditorATL=186.07532; + side="West"; + class Attributes + { + skill=0.60000002; + rank="CORPORAL"; + init="(group this) setGroupId[""CSL""];"; + name="c0_2"; + description="Alpha medic"; + isPlayable=1; + }; + id=707; + type="B_medic_F"; + }; + }; + class Attributes + { + }; + id=705; + }; + class Item658 + { + dataType="Group"; + side="West"; + class Entities + { + items=5; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={30687.408,-0.014260937,18.762848}; + angles[]={0,-0.065571785,0}; + }; + InEditorATL=185.9543; + side="West"; + flags=2; + class Attributes + { + skill=0.60000002; + init="(group this) setGroupId[""C2""];"; + name="c2_1"; + description="Charlie 2 team lead"; + isPlayable=1; + }; + id=709; + type="B_Soldier_TL_F"; + }; + class Item1 + { + dataType="Object"; + class PositionInfo + { + position[]={30692.713,0.15233251,16.661465}; + angles[]={0,-0.065571785,0}; + }; + InEditorATL=186.1209; + side="West"; + class Attributes + { + skill=0.60000002; + rank="CORPORAL"; + init="(group this) setGroupId[""C2""];"; + name="c2_2"; + description="Charlie 2 rifleman(AT)"; + isPlayable=1; + }; + id=710; + type="B_soldier_LAT_F"; + }; + class Item2 + { + dataType="Object"; + class PositionInfo + { + position[]={30682.713,-0.057357803,16.661465}; + angles[]={0,-0.065571785,0}; + }; + InEditorATL=185.91121; + side="West"; + class Attributes + { + skill=0.60000002; + init="(group this) setGroupId[""C2""];"; + name="c2_3"; + description="Charlie 2 autorifleman"; + isPlayable=1; + }; + id=711; + type="B_soldier_AR_F"; + }; + class Item3 + { + dataType="Object"; + class PositionInfo + { + position[]={30698.018,0.10575805,13.17317}; + angles[]={0,-0.065571785,0}; + }; + InEditorATL=186.07433; + side="West"; + class Attributes + { + skill=0.60000002; + init="(group this) setGroupId[""C2""];"; + name="c2_4"; + description="Charlie 2 grenadier"; + isPlayable=1; + }; + id=712; + type="B_Soldier_GL_F"; + }; + class Item4 + { + dataType="Object"; + class PositionInfo + { + position[]={30678.018,-0.059518255,13.17317}; + angles[]={0,-0.065571785,0}; + }; + InEditorATL=185.90904; + side="West"; + class Attributes + { + skill=0.60000002; + init="(group this) setGroupId[""C2""];"; + name="c2_5"; + description="Charlie 2 rifleman"; + isPlayable=1; + }; + id=713; + type="B_Soldier_F"; + }; + }; + class Attributes + { + }; + id=708; + }; + class Item659 + { + dataType="Group"; + side="West"; + class Entities + { + items=5; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={30687.408,-0.041388646,19.785553}; + angles[]={0,-0.065571785,0}; + }; + InEditorATL=185.92717; + side="West"; + flags=2; + class Attributes + { + skill=0.60000002; + rank="SERGEANT"; + init="(group this) setGroupId[""C1""];"; + name="c1_1"; + description="Charlie 1 team lead"; + isPlayable=1; + }; + id=715; + type="B_Soldier_TL_F"; + }; + class Item1 + { + dataType="Object"; + class PositionInfo + { + position[]={30692.713,0.13304858,17.68417}; + angles[]={0,-0.065571785,0}; + }; + InEditorATL=186.10161; + side="West"; + class Attributes + { + skill=0.60000002; + rank="CORPORAL"; + init="(group this) setGroupId[""C1""];"; + name="c1_2"; + description="Charlie 1 marksman"; + isPlayable=1; + }; + id=716; + type="B_soldier_M_F"; + }; + class Item2 + { + dataType="Object"; + class PositionInfo + { + position[]={30682.713,-0.07662791,17.68417}; + angles[]={0,-0.065571785,0}; + }; + InEditorATL=185.89194; + side="West"; + class Attributes + { + skill=0.60000002; + init="(group this) setGroupId[""C1""];"; + name="c1_3"; + description="Charlie 1 rifleman"; + isPlayable=1; + }; + id=717; + type="B_Soldier_F"; + }; + class Item3 + { + dataType="Object"; + class PositionInfo + { + position[]={30698.018,0.12434091,14.195875}; + angles[]={0,-0.065571785,0}; + }; + InEditorATL=186.09291; + side="West"; + class Attributes + { + skill=0.60000002; + init="(group this) setGroupId[""C1""];"; + name="c1_4"; + description="Charlie 1 engineer"; + isPlayable=1; + }; + id=718; + type="B_engineer_F"; + }; + class Item4 + { + dataType="Object"; + class PositionInfo + { + position[]={30678.018,-0.073521592,14.195875}; + angles[]={0,-0.065571785,0}; + }; + InEditorATL=185.89503; + side="West"; + class Attributes + { + skill=0.60000002; + init="(group this) setGroupId[""C1""];"; + name="c1_5"; + description="Charlie 2 autorifleman"; + isPlayable=1; + }; + id=719; + type="B_soldier_AR_F"; + }; + }; + class Attributes + { + }; + id=714; + }; + class Item660 + { + dataType="Group"; + side="West"; + class Entities + { + items=4; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={30695.996,-0.07368537,28.167389}; + }; + InEditorATL=185.89488; + side="West"; + flags=2; + class Attributes + { + skill=0.60000002; + rank="LIEUTENANT"; + init="(group this) setGroupId[""Recon""];"; + name="r1"; + description="Recon lead"; + isPlayable=1; + }; + id=721; + type="B_recon_TL_F"; + }; + class Item1 + { + dataType="Object"; + class PositionInfo + { + position[]={30701.301,0.098517589,26.066006}; + }; + InEditorATL=186.06708; + side="West"; + class Attributes + { + skill=0.60000002; + rank="SERGEANT"; + init="(group this) setGroupId[""Recon""];"; + name="r2"; + description="Recon marksman"; + isPlayable=1; + }; + id=722; + type="B_recon_M_F"; + }; + class Item2 + { + dataType="Object"; + class PositionInfo + { + position[]={30691.301,-0.11171777,26.066006}; + angles[]={0,-0.065571785,0}; + }; + InEditorATL=185.85684; + side="West"; + class Attributes + { + skill=0.60000002; + rank="CORPORAL"; + init="(group this) setGroupId[""Recon""];"; + name="r3"; + description="Recon scout"; + isPlayable=1; + }; + id=723; + type="B_recon_F"; + }; + class Item3 + { + dataType="Object"; + class PositionInfo + { + position[]={30706.605,0.075388014,22.577711}; + angles[]={0,-0.065571785,0}; + }; + InEditorATL=186.04395; + side="West"; + class Attributes + { + skill=0.60000002; + rank="CORPORAL"; + init="(group this) setGroupId[""Recon""];"; + name="r4"; + description="Recon medic"; + isPlayable=1; + }; + id=724; + type="B_recon_medic_F"; + }; + }; + class Attributes + { + }; + id=720; + }; + class Item661 + { + dataType="Group"; + side="West"; + class Entities + { + items=4; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={30695.895,-0.025372047,26.332672}; + }; + InEditorATL=185.94319; + side="West"; + flags=2; + class Attributes + { + skill=0.60000002; + rank="SERGEANT"; + init="(group this) setGroupId[""Logistics""];"; + name="l1"; + description="Logistics lead"; + isPlayable=1; + }; + id=726; + type="B_Soldier_TL_F"; + }; + class Item1 + { + dataType="Object"; + class PositionInfo + { + position[]={30701.199,0.12672372,24.231289}; + }; + InEditorATL=186.09529; + side="West"; + class Attributes + { + skill=0.60000002; + rank="CORPORAL"; + init="(group this) setGroupId[""Logistics""];"; + name="l2"; + description="Logistics pilot"; + isPlayable=1; + }; + id=727; + type="B_Helipilot_F"; + }; + class Item2 + { + dataType="Object"; + class PositionInfo + { + position[]={30691.199,-0.074150115,24.231289}; + }; + InEditorATL=185.89441; + side="West"; + class Attributes + { + skill=0.60000002; + init="(group this) setGroupId[""Logistics""];"; + name="l3"; + description="Logistics member"; + isPlayable=1; + }; + id=728; + type="B_Soldier_F"; + }; + class Item3 + { + dataType="Object"; + class PositionInfo + { + position[]={30706.504,0.041185889,20.742994}; + }; + InEditorATL=186.00975; + side="West"; + class Attributes + { + skill=0.60000002; + init="(group this) setGroupId[""Logistics""];"; + name="l4"; + description="Logistics member"; + isPlayable=1; + }; + id=729; + type="B_Soldier_F"; + }; + }; + class Attributes + { + }; + id=725; + }; + class Item662 + { + dataType="Group"; + side="West"; + class Entities + { + items=4; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={30681.67,0.00483693,28.062653}; + angles[]={0,-0.065571785,0}; + }; + InEditorATL=185.9734; + side="West"; + flags=2; + class Attributes + { + skill=0.60000002; + rank="SERGEANT"; + init="(group this) setGroupId[""HAT""];"; + name="h1"; + description="HAT lead"; + isPlayable=1; + }; + id=731; + type="B_Soldier_TL_F"; + }; + class Item1 + { + dataType="Object"; + class PositionInfo + { + position[]={30686.975,-0.13069347,25.961269}; + angles[]={0,-0.065571785,0}; + }; + InEditorATL=185.83788; + side="West"; + class Attributes + { + skill=0.60000002; + rank="CORPORAL"; + init="(group this) setGroupId[""HAT""];"; + name="h2"; + description="HAT missile spec"; + isPlayable=1; + }; + id=732; + type="B_soldier_AT_F"; + }; + class Item2 + { + dataType="Object"; + class PositionInfo + { + position[]={30676.975,0.0910009,25.961269}; + angles[]={0,-0.065571785,0}; + }; + InEditorATL=186.05957; + side="West"; + class Attributes + { + skill=0.60000002; + init="(group this) setGroupId[""HAT""];"; + name="h3"; + description="HAT missile ass."; + isPlayable=1; + }; + id=733; + type="B_Soldier_F"; + }; + class Item3 + { + dataType="Object"; + class PositionInfo + { + position[]={30692.279,-0.0027550599,22.472975}; + angles[]={0,-0.065571785,0}; + }; + InEditorATL=185.96581; + side="West"; + class Attributes + { + skill=0.60000002; + init="(group this) setGroupId[""HAT""];"; + name="h4"; + description="HAT ammo bearer"; + isPlayable=1; + }; + id=734; + type="B_Soldier_A_F"; + }; + }; + class Attributes + { + }; + id=730; + }; + class Item663 + { + dataType="Group"; + side="West"; + class Entities + { + items=3; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={30681.77,-0.034009114,26.477203}; + angles[]={0,-0.065571785,0}; + }; + InEditorATL=185.93456; + side="West"; + flags=2; + class Attributes + { + skill=0.60000002; + rank="SERGEANT"; + init="(group this) setGroupId[""Anvil""];"; + name="anv1"; + description="Anvil commander"; + isPlayable=1; + }; + id=736; + type="B_crew_F"; + }; + class Item1 + { + dataType="Object"; + class PositionInfo + { + position[]={30687.074,-0.125256,24.37582}; + angles[]={0,-0.065571785,0}; + }; + InEditorATL=185.84331; + side="West"; + class Attributes + { + skill=0.60000002; + rank="SERGEANT"; + init="(group this) setGroupId[""Anvil""];"; + name="anv2"; + description="Anvil gunner"; + isPlayable=1; + }; + id=737; + type="B_crew_F"; + }; + class Item2 + { + dataType="Object"; + class PositionInfo + { + position[]={30677.074,0.050745003,24.37582}; + angles[]={0,-0.065571785,0}; + }; + InEditorATL=186.0193; + side="West"; + class Attributes + { + skill=0.60000002; + rank="SERGEANT"; + init="(group this) setGroupId[""Anvil""];"; + name="anv3"; + description="Anvil driver"; + isPlayable=1; + }; + id=738; + type="B_crew_F"; + }; + }; + class Attributes + { + }; + id=735; + }; + class Item664 + { + dataType="Group"; + side="West"; + class Entities + { + items=2; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={30682.209,-0.10625789,21.780426}; + angles[]={0,-0.065571785,0}; + }; + InEditorATL=185.8623; + side="West"; + flags=2; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + init="(group this) setGroupId[""Saint""];"; + name="s1"; + description="Saint pilot"; + isPlayable=1; + }; + id=740; + type="B_Helipilot_F"; + }; + class Item1 + { + dataType="Object"; + class PositionInfo + { + position[]={30687.514,-0.036359929,19.679043}; + angles[]={0,-0.065571785,0}; + }; + InEditorATL=185.93221; + side="West"; + class Attributes + { + skill=0.60000002; + rank="LIEUTENANT"; + init="(group this) setGroupId[""Saint""];"; + name="s2"; + description="Saint co-pilot"; + isPlayable=1; + }; + id=741; + type="B_helicrew_F"; + }; + }; + class Attributes + { + }; + id=739; + }; + class Item665 + { + dataType="Group"; + side="West"; + class Entities + { + items=2; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={30682.164,-0.10555205,20.055573}; + angles[]={0,-0.065571785,0}; + }; + InEditorATL=185.86301; + side="West"; + flags=2; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + init="(group this) setGroupId[""Vulture""];"; + name="v1"; + description="Vulture pilot"; + isPlayable=1; + }; + id=743; + type="B_Helipilot_F"; + }; + class Item1 + { + dataType="Object"; + class PositionInfo + { + position[]={30687.469,0.0096764322,17.954189}; + angles[]={0,-0.065571785,0}; + }; + InEditorATL=185.97824; + side="West"; + class Attributes + { + skill=0.60000002; + rank="LIEUTENANT"; + init="(group this) setGroupId[""Vulture""];"; + name="v2"; + description="Vulture co-pilot"; + isPlayable=1; + }; + id=744; + type="B_helicrew_F"; + }; + }; + class Attributes + { + }; + id=742; + }; + class Item666 + { + dataType="Group"; + side="West"; + class Entities + { + items=2; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={30682.115,-0.091833405,18.328522}; + }; + InEditorATL=185.87672; + side="West"; + flags=2; + class Attributes + { + skill=0.60000002; + rank="CAPTAIN"; + init="(group this) setGroupId[""Ripper""];"; + name="rip1"; + description="Ripper 1 pilot"; + isPlayable=1; + }; + id=746; + type="B_Pilot_F"; + }; + class Item1 + { + dataType="Object"; + class PositionInfo + { + position[]={30687.42,0.058153726,16.227139}; + }; + InEditorATL=186.02672; + side="West"; + class Attributes + { + skill=0.60000002; + rank="LIEUTENANT"; + init="(group this) setGroupId[""Ripper""];"; + name="rip2"; + description="Ripper 2 pilot"; + isPlayable=1; + }; + id=747; + type="B_Pilot_F"; + }; + }; + class Attributes + { + }; + id=745; + }; + class Item667 + { + dataType="Logic"; + class PositionInfo + { + position[]={26456.758,-0.056003612,24757.408}; + }; + id=748; + type="ACE_ModuleSitting"; + class CustomAttributes + { + class Attribute0 + { + property="ACE_ModuleSitting_enable"; + expression="_this setVariable ['enable',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=1; + }; + }; + }; + }; + }; + class Item668 + { + dataType="Logic"; + class PositionInfo + { + position[]={26456.691,-0.12101574,24737.6}; + }; + id=749; + type="ACE_ModuleNameTags"; + class CustomAttributes + { + class Attribute0 + { + property="ACE_ModuleNameTags_showCursorTagForVehicles"; + expression="_this setVariable ['showCursorTagForVehicles',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=1; + }; + }; + }; + class Attribute1 + { + property="ACE_ModuleNameTags_showNamesForAI"; + expression="_this setVariable ['showNamesForAI',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=-1; + }; + }; + }; + class Attribute2 + { + property="ACE_ModuleNameTags_showVehicleCrewInfo"; + expression="_this setVariable ['showVehicleCrewInfo',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=-1; + }; + }; + }; + class Attribute3 + { + property="ACE_ModuleNameTags_showPlayerNames"; + expression="_this setVariable ['showPlayerNames',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=-1; + }; + }; + }; + class Attribute4 + { + property="ACE_ModuleNameTags_playerNamesViewDistance"; + expression="_this setVariable ['playerNamesViewDistance',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=5; + }; + }; + }; + }; + }; + class Item669 + { + dataType="Logic"; + class PositionInfo + { + position[]={26456.879,-0.25502664,24747.689}; + }; + id=750; + type="ACE_ModuleMap"; + class CustomAttributes + { + class Attribute0 + { + property="ACE_ModuleMap_MapShake"; + expression="_this setVariable ['MapShake',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=1; + }; + }; + }; + class Attribute1 + { + property="ACE_ModuleMap_MapShowCursorCoordinates"; + expression="_this setVariable ['MapShowCursorCoordinates',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + class Attribute2 + { + property="ACE_ModuleMap_MapIllumination"; + expression="_this setVariable ['MapIllumination',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=1; + }; + }; + }; + class Attribute3 + { + property="ACE_ModuleMap_MapGlow"; + expression="_this setVariable ['MapGlow',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=1; + }; + }; + }; + class Attribute4 + { + property="ACE_ModuleMap_MapLimitZoom"; + expression="_this setVariable ['MapLimitZoom',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + }; + }; + class Item670 + { + dataType="Logic"; + class PositionInfo + { + position[]={26789.258,18.812231,24702.205}; + }; + id=751; + type="ACE_moduleAssignMedicalFacility"; + class CustomAttributes + { + class Attribute0 + { + property="ACE_moduleAssignMedicalFacility_enabled"; + expression="_this setVariable ['enabled',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=1; + }; + }; + }; + }; + }; + class Item671 + { + dataType="Group"; + side="East"; + class Entities + { + items=1; + class Item0 + { + dataType="Object"; + class PositionInfo + { + position[]={51.253784,0.0014388561,30685.379}; + }; + InEditorATL=185.97; + side="East"; + flags=2; + class Attributes + { + skill=0.60000002; + init="this enableSimulationGlobal false;this allowDamage false;this hideObjectGlobal true;"; + name="cacheGroupLeader"; + }; + id=753; + type="O_Soldier_F"; + }; + }; + class Attributes + { + }; + id=752; + }; + class Item672 + { + dataType="Logic"; + class PositionInfo + { + position[]={26457.484,-0.076730661,24721.232}; + }; + id=754; + type="ACE_moduleRepairSettings"; + class CustomAttributes + { + class Attribute0 + { + property="ACE_moduleRepairSettings_fullRepairLocation"; + expression="_this setVariable ['fullRepairLocation',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=2; + }; + }; + }; + class Attribute1 + { + property="ACE_moduleRepairSettings_engineerSetting_fullRepair"; + expression="_this setVariable ['engineerSetting_fullRepair',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=2; + }; + }; + }; + class Attribute2 + { + property="ACE_moduleRepairSettings_engineerSetting_Repair"; + expression="_this setVariable ['engineerSetting_Repair',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0; + }; + }; + }; + class Attribute3 + { + property="ACE_moduleRepairSettings_consumeItem_ToolKit"; + expression="_this setVariable ['consumeItem_ToolKit',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0; + }; + }; + }; + class Attribute4 + { + property="ACE_moduleRepairSettings_repairDamageThreshold"; + expression="_this setVariable ['repairDamageThreshold',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0.60000002; + }; + }; + }; + class Attribute5 + { + property="ACE_moduleRepairSettings_wheelRepairRequiredItems"; + expression="_this setVariable ['wheelRepairRequiredItems',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0; + }; + }; + }; + class Attribute6 + { + property="ACE_moduleRepairSettings_repairDamageThreshold_Engineer"; + expression="_this setVariable ['repairDamageThreshold_Engineer',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0.30000001; + }; + }; + }; + class Attribute7 + { + property="ACE_moduleRepairSettings_engineerSetting_Wheel"; + expression="_this setVariable ['engineerSetting_Wheel',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=0; + }; + }; + }; + class Attribute8 + { + property="ACE_moduleRepairSettings_addSpareParts"; + expression="_this setVariable ['addSpareParts',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=1; + }; + }; + }; + }; + }; + class Item673 + { + dataType="Logic"; + class PositionInfo + { + position[]={26463.996,-0.14168176,24729.428}; + }; + id=755; + type="ACE_ModuleHearing"; + class CustomAttributes + { + class Attribute0 + { + property="ACE_ModuleHearing_EnableCombatDeafness"; + expression="_this setVariable ['EnableCombatDeafness',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=1; + }; + }; + }; + class Attribute1 + { + property="ACE_ModuleHearing_enabledForZeusUnits"; + expression="_this setVariable ['enabledForZeusUnits',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=1; + }; + }; + }; + class Attribute2 + { + property="ACE_ModuleHearing_DisableEarRinging"; + expression="_this setVariable ['DisableEarRinging',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=-1; + }; + }; + }; + }; + }; + class Item674 + { + dataType="Logic"; + class PositionInfo + { + position[]={26463.641,-0.00070595741,24721.314}; + }; + id=756; + type="ACE_ModuleInteraction"; + class CustomAttributes + { + class Attribute0 + { + property="ACE_ModuleInteraction_EnableTeamManagement"; + expression="_this setVariable ['EnableTeamManagement',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "BOOL" + }; + }; + value=0; + }; + }; + }; + }; + }; + class Item675 + { + dataType="Logic"; + class PositionInfo + { + position[]={26457.549,-0.24855128,24713.74}; + }; + id=757; + type="ACE_moduleAssignEngineerRoles"; + class CustomAttributes + { + class Attribute0 + { + property="ACE_moduleAssignEngineerRoles_EnableList"; + expression="_this setVariable ['EnableList',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "STRING" + }; + }; + value="l1,l2,l3,l4"; + }; + }; + }; + class Attribute1 + { + property="ACE_moduleAssignEngineerRoles_role"; + expression="_this setVariable ['role',_value,true];"; + class Value + { + class data + { + class type + { + type[]= + { + "SCALAR" + }; + }; + value=2; + }; + }; + }; + }; + }; + class Item676 + { + dataType="Object"; + class PositionInfo + { + position[]={26727.723,20.574196,24639.094}; + angles[]={-0.0053265258,0.69813168,0.015998369}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=760; + type="Land_HBarrier_1_F"; + }; + class Item677 + { + dataType="Object"; + class PositionInfo + { + position[]={26718.986,20.525026,24650.701}; + angles[]={-0.0013372133,2.2817206,0.0013372133}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=761; + type="Land_HBarrier_1_F"; + }; + class Item678 + { + dataType="Marker"; + position[]={21080.508,20.768135,7320.3789}; + name="mrk_airfield_3"; + text="airfield"; + markerType="RECTANGLE"; + type="Empty"; + colorName="ColorEAST"; + fillName="SolidBorder"; + a=500; + b=200; + angle=142; + drawBorder=1; + id=762; + }; + class Item679 + { + dataType="Marker"; + position[]={21069.357,172.34491,7085.7388}; + name="mrk_jetSpawn_3"; + text="jetSpawn"; + type="Empty"; + id=763; + }; + class Item680 + { + dataType="Marker"; + position[]={21020.539,160.28094,7232.0161}; + name="mrk_airfield_1_aa_2"; + text="aa"; + type="Empty"; + angle=0.26179934; + id=764; + }; + class Item681 + { + dataType="Marker"; + position[]={21223.701,158.70709,7596.5376}; + name="mrk_airfield_1_aa_3"; + text="aa"; + type="Empty"; + angle=0.26179934; + id=765; + }; + class Item682 + { + dataType="Marker"; + position[]={20796.635,4.8354418e+036,7229.6221}; + name="mrk_airfield_1_hangar_1"; + text="hangar"; + type="Empty"; + angle=-38.188847; + id=766; + }; + class Item683 + { + dataType="Marker"; + position[]={20902.576,159.59897,7282.6025}; + name="mrk_heliSpawn_3"; + text="heliSpawn"; + type="Empty"; + id=767; + }; + class Item684 + { + dataType="Object"; + class PositionInfo + { + position[]={26598.691,15.679196,24662.16}; + angles[]={0.079830162,0.69813168,0.051953323}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=768; + type="Land_HBarrierBig_F"; + }; + class Item685 + { + dataType="Object"; + class PositionInfo + { + position[]={26592.457,14.763711,24667.178}; + angles[]={0.079830162,0.69813168,0.12599599}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=769; + type="Land_HBarrierBig_F"; + }; + class Item686 + { + dataType="Object"; + class PositionInfo + { + position[]={26586.465,13.424675,24671.795}; + angles[]={0.13778783,0.69813168,0.086450629}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=770; + type="Land_HBarrierBig_F"; + }; + class Item687 + { + dataType="Object"; + class PositionInfo + { + position[]={26580.129,12.323845,24676.83}; + angles[]={0.058599081,0.69813168,0.086450629}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=771; + type="Land_HBarrierBig_F"; + }; + class Item688 + { + dataType="Object"; + class PositionInfo + { + position[]={26574.301,11.42209,24681.389}; + angles[]={0.058600098,0.69813168,0.10890111}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=772; + type="Land_HBarrierBig_F"; + }; + class Item689 + { + dataType="Object"; + class PositionInfo + { + position[]={26604.041,15.523636,24667.713}; + angles[]={0.11811461,0.69813168,0.025327841}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=773; + type="Land_HBarrierBig_F"; + }; + class Item690 + { + dataType="Object"; + class PositionInfo + { + position[]={26597.807,14.45763,24672.73}; + angles[]={0.11811461,0.69813168,0.091741346}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=774; + type="Land_HBarrierBig_F"; + }; + class Item691 + { + dataType="Object"; + class PositionInfo + { + position[]={26591.814,13.436452,24677.348}; + angles[]={0.05461248,0.69813168,0.1141679}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=775; + type="Land_HBarrierBig_F"; + }; + class Item692 + { + dataType="Object"; + class PositionInfo + { + position[]={26585.479,12.483191,24682.383}; + angles[]={0.05461248,0.69813168,0.090418898}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=776; + type="Land_HBarrierBig_F"; + }; + class Item693 + { + dataType="Object"; + class PositionInfo + { + position[]={26579.65,11.567896,24686.941}; + angles[]={0.083802827,0.69813168,0.11153521}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=777; + type="Land_HBarrierBig_F"; + }; + class Item694 + { + dataType="Object"; + class PositionInfo + { + position[]={26568.744,10.458549,24685.654}; + angles[]={0.090419561,0.69813168,0.11021814}; + }; + InEditorATL=-9.5367432e-007; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=778; + type="Land_HBarrierBig_F"; + }; + class Item695 + { + dataType="Object"; + class PositionInfo + { + position[]={26573.527,10.337129,24691.688}; + angles[]={0.16903815,0.69813168,0.11153521}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=783; + type="Land_HBarrierBig_F"; + }; + class Item696 + { + dataType="Object"; + class PositionInfo + { + position[]={26565.293,9.1457176,24693.479}; + angles[]={0.15345061,2.2689281,0.1141679}; + }; + InEditorATL=-4.7683716e-007; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=785; + type="Land_HBarrierBig_F"; + }; + class Item697 + { + dataType="Object"; + class PositionInfo + { + position[]={26569.541,9.758688,24690.002}; + angles[]={0.15345061,0.70805919,0.1141679}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + }; + id=786; + type="Land_HBarrier_3_F"; + }; + class Item698 + { + dataType="Object"; + class PositionInfo + { + position[]={26604.756,15.892764,24662.1}; + angles[]={0.071875811,2.2689281,-0.0026744273}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=787; + type="Land_HBarrierBig_F"; + }; + class Item699 + { + dataType="Marker"; + position[]={14206.76,2.6121819e+019,21216.834}; + name="mrk_compound_0"; + type="Empty"; + id=788; + }; + class Item700 + { + dataType="Marker"; + position[]={8303.9395,2.6121819e+019,10083.085}; + name="mrk_compound_2"; + type="Empty"; + id=790; + }; + class Item701 + { + dataType="Marker"; + position[]={6205.5273,2.6121819e+019,16244.418}; + name="mrk_compound_8"; + type="Empty"; + id=796; + }; + class Item702 + { + dataType="Marker"; + position[]={14288.893,2.6121819e+019,13044.783}; + name="mrk_compound_10"; + type="Empty"; + id=798; + }; + class Item703 + { + dataType="Marker"; + position[]={17454.994,2.6121819e+019,13160.626}; + name="mrk_compound_11"; + type="Empty"; + id=799; + }; + class Item704 + { + dataType="Marker"; + position[]={8387.8271,180.19746,18244.83}; + name="mrk_compound_1"; + type="Empty"; + id=805; + }; + class Item705 + { + dataType="Marker"; + position[]={20946.746,14.200762,19255.932}; + name="mrk_compound_3"; + type="Empty"; + id=806; + }; + class Item706 + { + dataType="Marker"; + position[]={25310.463,82.781418,21831.738}; + name="mrk_compound_4"; + type="Empty"; + id=807; + }; + class Item707 + { + dataType="Marker"; + position[]={20084.4,101.00609,6728.3257}; + name="mrk_compound_5"; + type="Empty"; + id=808; + }; + class Item708 + { + dataType="Marker"; + position[]={16084.537,15.772153,17015.08}; + name="mrk_compound_6"; + type="Empty"; + id=809; + }; + class Item709 + { + dataType="Marker"; + position[]={6841.5298,60.870399,16061.911}; + name="mrk_compound_7"; + type="Empty"; + id=810; + }; + class Item710 + { + dataType="Marker"; + position[]={4215.1045,18.03396,15041.03}; + name="mrk_compound_9"; + type="Empty"; + id=811; + }; + class Item711 + { + dataType="Marker"; + position[]={10010.777,16.696846,11240.083}; + name="mrk_compound_12"; + type="Empty"; + id=812; + }; + class Item712 + { + dataType="Marker"; + position[]={23536.955,91.875206,21117.07}; + name="mrk_compound_13"; + type="Empty"; + id=813; + }; + class Item713 + { + dataType="Object"; + class PositionInfo + { + position[]={27001.396,22.710941,24826.541}; + angles[]={-0.017332481,2.4085543,0.017332481}; + }; + InEditorATL=1.9073486e-006; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=817; + type="Land_HBarrierBig_F"; + }; + class Item714 + { + dataType="Object"; + class PositionInfo + { + position[]={27005.373,22.832714,24830.684}; + angles[]={-0.011995304,2.2863812,0.011995304}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=818; + type="Land_HBarrierBig_F"; + }; + class Item715 + { + dataType="Object"; + class PositionInfo + { + position[]={27010.619,23.03091,24836.186}; + angles[]={-0.02399601,2.3736477,0.019996032}; + }; + InEditorATL=1.9073486e-006; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=819; + type="Land_HBarrierBig_F"; + }; + class Item716 + { + dataType="Object"; + class PositionInfo + { + position[]={27015.699,23.599361,24842.029}; + angles[]={-0.051953323,2.2863812,0.017329043}; + }; + InEditorATL=0.18161392; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=820; + type="Land_HBarrierBig_F"; + }; + class Item717 + { + dataType="Object"; + class PositionInfo + { + position[]={27020.727,23.742458,24847.787}; + angles[]={-0.049292382,2.2863812,0.0066682254}; + }; + InEditorATL=1.9073486e-006; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=821; + type="Land_HBarrierBig_F"; + }; + class Item718 + { + dataType="Object"; + class PositionInfo + { + position[]={27025.855,23.966454,24853.742}; + angles[]={-0.034652505,2.2863812,0}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=822; + type="Land_HBarrierBig_F"; + }; + class Item719 + { + dataType="Object"; + class PositionInfo + { + position[]={27031.078,24.116375,24859.691}; + angles[]={-0.022662206,2.2863812,0}; + }; + InEditorATL=1.9073486e-006; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=823; + type="Land_HBarrierBig_F"; + }; + class Item720 + { + dataType="Object"; + class PositionInfo + { + position[]={27036.205,24.301537,24865.535}; + angles[]={-0.033319358,2.2863812,-0.0080009829}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=824; + type="Land_HBarrierBig_F"; + }; + class Item721 + { + dataType="Object"; + class PositionInfo + { + position[]={27041.443,24.480049,24871.371}; + angles[]={-0.025327841,2.2863812,0.0013372133}; + }; + InEditorATL=1.9073486e-006; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=825; + type="Land_HBarrierBig_F"; + }; + class Item722 + { + dataType="Object"; + class PositionInfo + { + position[]={26984.742,22.263824,24809.877}; + angles[]={-0.019996032,2.2863812,0.014664836}; + }; + InEditorATL=1.9073486e-006; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=826; + type="Land_HBarrierBig_F"; + }; + class Item723 + { + dataType="Object"; + class PositionInfo + { + position[]={26989.088,22.422195,24814.285}; + angles[]={-0.015998369,2.3911009,0.010664274}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=827; + type="Land_HBarrierBig_F"; + }; + class Item724 + { + dataType="Object"; + class PositionInfo + { + position[]={26846.117,27.876991,24457.615}; + angles[]={0,-0.76794487,0}; + }; + InEditorATL=0; + side="Empty"; + flags=1; + class Attributes + { + }; + id=828; + type="Land_Sign_WarningMilitaryArea_F"; + }; + class Item725 + { + dataType="Object"; + class PositionInfo + { + position[]={26852.883,27.700504,24465.414}; + }; + InEditorATL=0; + side="Empty"; + flags=1; + class Attributes + { + }; + id=829; + type="Land_Sign_WarningMilAreaSmall_F"; + }; + class Item726 + { + dataType="Object"; + class PositionInfo + { + position[]={26728.861,22.84833,24570.58}; + angles[]={0,-2.3736477,0}; + }; + InEditorATL=0; + side="Empty"; + flags=1; + class Attributes + { + init="this enableSimulationGlobal false;"; + }; + id=835; + type="Land_Sign_WarningMilitaryVehicles_F"; + }; + class Item727 + { + dataType="Object"; + class PositionInfo + { + position[]={26723.326,23.164721,24559.303}; + angles[]={0,0.66322511,0}; + }; + InEditorATL=0; + side="Empty"; + flags=1; + class Attributes + { + init="this enableSimulationGlobal false;"; + }; + id=836; + type="Land_Sign_WarningMilitaryVehicles_F"; + }; + class Item728 + { + dataType="Object"; + class PositionInfo + { + position[]={26715.463,20.848913,24650.377}; + angles[]={0,-0.83775806,0}; + }; + InEditorATL=0; + side="Empty"; + flags=1; + class Attributes + { + init="this enableSimulationGlobal false;"; + }; + id=837; + type="Land_Sign_WarningMilitaryVehicles_F"; + }; + class Item729 + { + dataType="Marker"; + position[]={16568.5,2.7916356e+029,12777.418}; + name="mrk_hq"; + type="flag_CSAT"; + id=865; + }; + class Item730 + { + dataType="Marker"; + position[]={26983.375,9.6412584e+030,24704.553}; + name="marker_98"; + type="flag_NATO"; + id=866; + }; + class Item731 + { + dataType="Object"; + class PositionInfo + { + position[]={26708.605,26.890629,24594.006}; + angles[]={0.042640556,0.69813168,-0.0026744273}; + }; + InEditorATL=0.0056934357; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=445; + type="Land_Radar_Small_F"; + }; + class Item732 + { + dataType="Object"; + class PositionInfo + { + position[]={9196.9932,278.69711,19297.76}; + angles[]={-0.021326056,2.9862821,-0.0053377044}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=868; + type="Land_Radar_Small_F"; + }; + class Item733 + { + dataType="Object"; + class PositionInfo + { + position[]={6326.6689,126.30717,11194.339}; + angles[]={-0.0039967569,0.69813168,-0.053282689}; + }; + InEditorATL=-7.6293945e-006; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=869; + type="Land_Radar_Small_F"; + }; + class Item734 + { + dataType="Object"; + class PositionInfo + { + position[]={16551.031,109.59229,10795.516}; + angles[]={-0.051953323,0.69813168,-0.022662206}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=870; + type="Land_Radar_Small_F"; + }; + class Item735 + { + dataType="Object"; + class PositionInfo + { + position[]={23026.402,55.136536,7282.1309}; + angles[]={-0.0066682254,-2.5470223,0.033321146}; + }; + InEditorATL=0; + side="Empty"; + class Attributes + { + skill=0.60000002; + }; + id=871; + type="Land_Radar_Small_F"; + }; + }; + class Connections + { + class LinkIDProvider + { + nextID=1; + }; + class Links + { + items=1; + class Item0 + { + linkID=0; + item0=751; + item1=437; + class CustomData + { + type="Sync"; + }; + }; + }; + }; +}; diff --git a/missionInit.sqf b/missionInit.sqf index 1b13527..6364fc1 100644 --- a/missionInit.sqf +++ b/missionInit.sqf @@ -1,19 +1,16 @@ ///////////////////////// //Script made by Jochem// ///////////////////////// - //Parameters *FREE TO EDIT* townCount = 26; //Number of towns to occupy -baseCount = 10; //Number of military structures to occupy -aaCount = 8; //Number of AA Emplacements (AA-tank only) +baseCount = -1; //Number of military structures to occupy /// -1 for all +aaCount = 14; //Number of AA Emplacements roadCount = 20; //Number of roadblocks patrolCount = 25; //Number of patrolling vehicles -depotCount = 5; //Number of depots mineCount = 30; //Number of minefields artyCount = 4; //Number of artillery batteries -radioCount = 4; //Number of radio towers -officerCount = 5; //Number of officers -fobLimit = 5; //Limitamount of fobs at the same time +officerCount = 5; //Number of officers (+ 1 general) +fobLimit = 5; //Limit amount of fobs at the same time //Classnames infantryPool = ["rhs_vdv_rifleman","rhs_vdv_efreitor","rhs_vdv_engineer","rhs_vdv_grenadier","rhs_vdv_at","rhs_vdv_strelok_rpg_assist","rhs_vdv_junior_sergeant","rhs_vdv_machinegunner","rhs_vdv_machinegunner_assistant","rhs_vdv_marksman","rhs_vdv_medic","rhs_vdv_LAT","rhs_vdv_RShG2","rhs_vdv_sergeant"]; //infantry classnames sfPool = []; @@ -27,10 +24,10 @@ airPool = ["RHS_Mi8AMTSh_UPK23_vvsc","RHS_Mi8mt_vvsc","RHS_Mi8MTV3_vvsc"]; casPool = ["RHS_Ka52_UPK23_vvsc","RHS_Mi24P_CAS_vvsc"]; //cas helicopters classnames jetPool = ["O_Plane_CAS_02_F"]; //jet classnames //Markers -capitalName = "Chernogorsk"; //Name of capital -blackTowns = []; //Blacklist towns +capitalName = "Pyrgos"; //Name of capital +blackTowns = ["Sagonisi"]; //Blacklist towns blackMarkers = ["mrk_safeZone"]; -airfieldMarkers = ["mrk_airfield_0","mrk_airfield_1","mrk_airfield_2"]; //Markers for airfields +airfieldMarkers = ["mrk_airfield_0","mrk_airfield_1","mrk_airfield_2","mrk_airfield_3"]; //Markers for airfields "mrk_area" setMarkerPos [worldSize/2,worldSize/2]; "mrk_area" setMarkerSize [worldSize/2,worldSize/2]; @@ -51,7 +48,7 @@ airfieldMarkers = ["mrk_airfield_0","mrk_airfield_1","mrk_airfield_2"]; //Mark //Objects -leaderArray = [cmd1,cmd2,a1,b1,c1,h1,r1,anv1,s1,v1,rip1]; +leaderArray = [cmd1,cmd2,a0_1,b0_1,c0_1,h1,r1,anv1,s1,v1,rip1]; logisticsArray = ["l1","l2","l3","l4"]; logisticsVehArray = ["B_APC_Tracked_01_CRV_F"]; motorizedArray = ["rhsusf_m113_usarmy","RHS_M2A3_BUSKIII_wd","RHS_M6_wd"]; @@ -66,8 +63,11 @@ bluTownsN = []; indTowns = []; indTownsN = []; opTownMarkers = []; +bluTownMarkers = []; +indTownMarkers = []; +baseMarkers = []; activeTasks = []; -airfieldOccup = [false,false,false]; +airfieldOccup = [false,false,false,false]; capitalOccup = [false]; jetActive = false; jetTargets = []; @@ -75,6 +75,8 @@ groups = []; groundArray = []; officerArray = []; fobTrucks = []; +baseObjects = nearestObjects [(getMarkerPos "mrk_safeZone"), ["All"], 1200]; +eastHQ = createCenter east; //Script vars CHVD_allowNoGrass = false; // Set 'false' if you want to disable "Low" option for terrain (default: true) @@ -83,6 +85,8 @@ CHVD_maxObj = 12000; // Set maximimum object view distance (default: 12000) //Public var for local scripts publicVariable "logisticsArray"; +publicVariable "baseObjects"; +publicVariable "fobTrucks"; //Run init scripts //spawn -needs a seperate thread to work @@ -97,7 +101,7 @@ publicVariable "logisticsArray"; []call JOC_initDepot; []call JOC_initTowns; []call JOC_initAirfields; -//[]call JOC_initBases; -needs compositions +[]call JOC_initBases; []call JOC_initAA; []call JOC_initArty; //Uses AA []call JOC_initRadio; //Uses AA diff --git a/onPlayerRespawn.sqf b/onPlayerRespawn.sqf index 937a9de..9f96542 100644 --- a/onPlayerRespawn.sqf +++ b/onPlayerRespawn.sqf @@ -8,6 +8,7 @@ if(side player == east)then{ player setPosASL getPosASL _respawnPos; }; +[]spawn JOC_playerLoop; zeusMod addCuratorEditableObjects [[player],false]; cduEnabled = false; //[]spawn JOC_loadoutMaster; From 52414108997b372bc3a6be4e5049a1c375e4cd0e Mon Sep 17 00:00:00 2001 From: Jochem Date: Sun, 4 Oct 2015 16:46:39 +0200 Subject: [PATCH 15/17] RC v0.9 -various fixes for MP bugs --- Functions/Caching/cacheInit.sqf | 2 +- Functions/Player/playerLoop.sqf | 10 +++++++--- Functions/Vehicle/Garage/garageFnc.sqf | 5 ++--- Functions/Vehicle/Garage/scrap.sqf | 2 +- mission.sqm | 18 +++++++++--------- missionInit.sqf | 2 +- 6 files changed, 21 insertions(+), 18 deletions(-) diff --git a/Functions/Caching/cacheInit.sqf b/Functions/Caching/cacheInit.sqf index 1251794..d69e147 100644 --- a/Functions/Caching/cacheInit.sqf +++ b/Functions/Caching/cacheInit.sqf @@ -13,7 +13,7 @@ _location = _startloc; while {_xA < _hor}do{ while {_yA < _vert}do{ _trg = createTrigger ["EmptyDetector",_location,true]; - _trg setTriggerArea [4000,4000,4000,true]; + _trg setTriggerArea [2500,2500,2500,true]; _trg setTriggerActivation ["WEST","PRESENT", true]; _trg setTriggerStatements ["this","[getPos thisTrigger] spawn JOC_unCache","[getPos thisTrigger] spawn JOC_cache"]; _trg setTriggerTimeout [5,5,5,true]; diff --git a/Functions/Player/playerLoop.sqf b/Functions/Player/playerLoop.sqf index 65c3856..0503da5 100644 --- a/Functions/Player/playerLoop.sqf +++ b/Functions/Player/playerLoop.sqf @@ -15,9 +15,13 @@ while{alive player}do{ if(!isNull curatorCamera)then{ _curator = (getAssignedCuratorLogic player); - _curator addCuratorEditableObjects [(allUnits - [cacheGroupLeader]),false]; - _curator addCuratorEditableObjects [allDead,false]; - _curator addCuratorEditableObjects [vehicles,false]; + [[_curator],{ + _curator = _this select 0; + _curator addCuratorEditableObjects [(allUnits - [cacheGroupLeader]),false]; + _curator addCuratorEditableObjects [allDead,false]; + _curator addCuratorEditableObjects [vehicles,false]; + }] remoteExec ["BIS_fnc_spawn", 2]; + }; sleep 10; }; diff --git a/Functions/Vehicle/Garage/garageFnc.sqf b/Functions/Vehicle/Garage/garageFnc.sqf index bfd5645..c1a77ad 100644 --- a/Functions/Vehicle/Garage/garageFnc.sqf +++ b/Functions/Vehicle/Garage/garageFnc.sqf @@ -26,10 +26,9 @@ if(_dis > 4)then{hint "No vehicle spawned";}else{ _codeE = [_veh]call BIS_fnc_exportVehicle; deleteVehicle _veh; _codeS = [_codeE,"position player","(_this select 0)",true] call Zen_StringFindReplace; + _codeS = _codeS + " _veh"; _code = compile _codeS; - [(getPos _spawnObj)]call _code; - - _veh = nearestObject [_spawnObj, "AllVehicles"]; + _veh = [(getPos _spawnObj)]call _code; { deleteVehicle _x; diff --git a/Functions/Vehicle/Garage/scrap.sqf b/Functions/Vehicle/Garage/scrap.sqf index bd6617e..5c275a0 100644 --- a/Functions/Vehicle/Garage/scrap.sqf +++ b/Functions/Vehicle/Garage/scrap.sqf @@ -5,5 +5,5 @@ private ["_veh"]; _veh = _this select 0; _id = garage_scrap addAction["Scrap vehicle",{_veh = _this select 3; _pad = (_veh getVariable "pad"); _pad setVariable["count",((_pad getVariable "count") - 1),true]; deleteVehicle _veh},_veh]; -waitUntil{sleep 0.3;((_veh distance garage_scrap) > 10)}; +waitUntil{sleep 0.3;((_veh distance trg_scrap) > 10)}; garage_scrap removeAction _id; diff --git a/mission.sqm b/mission.sqm index 5aa03c8..be5ebab 100644 --- a/mission.sqm +++ b/mission.sqm @@ -2224,7 +2224,7 @@ class Mission vehicle="Logic"; leader=1; skill=0.60000002; - init="_veh = ""Land_Radar_Small_F"" createVehicle getPos this;"; + init="if(!isServer)exitWith{};_veh = ""Land_Radar_Small_F"" createVehicle getPos this;"; }; }; }; @@ -2242,7 +2242,7 @@ class Mission vehicle="Logic"; leader=1; skill=0.60000002; - init="_veh = ""Land_Radar_Small_F"" createVehicle getPos this;"; + init="if(!isServer)exitWith{};_veh = ""Land_Radar_Small_F"" createVehicle getPos this;"; }; }; }; @@ -2260,7 +2260,7 @@ class Mission vehicle="Logic"; leader=1; skill=0.60000002; - init="_veh = ""Land_Radar_Small_F"" createVehicle getPos this;"; + init="if(!isServer)exitWith{};_veh = ""Land_Radar_Small_F"" createVehicle getPos this; "; }; }; }; @@ -2278,7 +2278,7 @@ class Mission vehicle="Logic"; leader=1; skill=0.60000002; - init="_veh = ""Land_Radar_Small_F"" createVehicle getPos this;"; + init="if(!isServer)exitWith{};_veh = ""Land_Radar_Small_F"" createVehicle getPos this;"; }; }; }; @@ -7834,7 +7834,7 @@ class Mission }; class Item9 { - position[]={9410.416,47.092777,21262.498}; + position[]={8997.499,17.987202,21368.871}; name="mrk_jetSpawn_2"; text="jetSpawn"; type="Empty"; @@ -8005,7 +8005,7 @@ class Mission }; class Item27 { - position[]={15102.769,17.91,17252.922}; + position[]={15106.064,17.91,17256.611}; name="mrk_airfield_0_hangar_6"; text="hangar"; type="Empty"; @@ -8015,7 +8015,7 @@ class Mission }; class Item28 { - position[]={15085.594,17.91,17234.98}; + position[]={15084.26,17.91,17233.252}; name="mrk_airfield_0_hangar_7"; text="hangar"; type="Empty"; @@ -8075,7 +8075,7 @@ class Mission }; class Item34 { - position[]={9296.9492,33.014469,21232.672}; + position[]={9301.1113,16.64838,21513.551}; name="mrk_airfield_2_aa_0"; text="aa"; type="Empty"; @@ -8293,7 +8293,7 @@ class Mission }; class Item62 { - position[]={20799.313,29.090904,7228.478}; + position[]={20799.494,29.0991,7227.6157}; name="mrk_airfield_3_hangar_0"; text="hangar"; type="Empty"; diff --git a/missionInit.sqf b/missionInit.sqf index 6364fc1..b12952e 100644 --- a/missionInit.sqf +++ b/missionInit.sqf @@ -105,5 +105,5 @@ publicVariable "fobTrucks"; []call JOC_initAA; []call JOC_initArty; //Uses AA []call JOC_initRadio; //Uses AA -[]call JOC_initPatrols; +//[]call JOC_initPatrols; []call JOC_initMines; From f50e81acdc38993167da816c31e15381defcd268 Mon Sep 17 00:00:00 2001 From: Jochem Date: Wed, 7 Oct 2015 16:01:06 +0200 Subject: [PATCH 16/17] RC v0.9.1 -new way of handling occupation of towns/airfields/bases -Performance tweaks -Re-added tasks -Added Opfor spawns -Various minor tweaks/bug fixes --- CHVD/fn_init.sqf | 10 +- Functions/AI/arty.sqf | 2 +- Functions/AI/monitorMarker.sqf | 105 ++ Functions/AI/radioTower.sqf | 2 +- Functions/AI/spawnAirfield.sqf | 30 - Functions/AI/spawnBase.sqf | 15 + Functions/Init/initAirfields.sqf | 1 + Functions/Init/initBases.sqf | 6 +- Functions/Loadouts/arsenal.sqf | 26 +- Functions/Loadouts/master.sqf | 8 +- Functions/Opfor/getSpawnLocations.sqf | 34 + Functions/Tasks/convoy.sqf | 11 - Functions/Tasks/crashedChopper.sqf | 44 +- Functions/Tasks/rescue.sqf | 43 +- Functions/Tasks/setMainTask.sqf | 2 +- Functions/Tasks/taskManager.sqf | 24 +- Functions/Tasks/uav.sqf | 4 +- Functions/Towns/monitor.sqf | 5 +- Functions/Towns/occupy.sqf | 27 +- Functions/Vehicle/Garage/garageFnc.sqf | 4 +- Functions/fn_compile.sqf | 4 + initPlayerLocal.sqf | 6 +- mission.sqm | 1356 +++++++++++++----------- missionInit.sqf | 22 +- onPlayerRespawn.sqf | 27 +- 25 files changed, 1020 insertions(+), 798 deletions(-) create mode 100644 Functions/AI/monitorMarker.sqf create mode 100644 Functions/Opfor/getSpawnLocations.sqf delete mode 100644 Functions/Tasks/convoy.sqf diff --git a/CHVD/fn_init.sqf b/CHVD/fn_init.sqf index cdd19e2..43e1219 100644 --- a/CHVD/fn_init.sqf +++ b/CHVD/fn_init.sqf @@ -2,7 +2,7 @@ CHVD_scriptRunning = true; //Wait for mission init, in case there are variables defined some place else waitUntil {time > 0}; - + //Define variables, load from profileNamespace CHVD_allowNoGrass = if (isNil "CHVD_allowNoGrass") then {true} else {CHVD_allowNoGrass}; CHVD_maxView = if (isNil "CHVD_maxView") then {12000} else {CHVD_maxView}; @@ -29,8 +29,8 @@ waitUntil {!isNull findDisplay 46}; _actionText = if (isLocalized "STR_chvd_title") then {localize "STR_chvd_title"} else {"View Distance Settings"}; - player addAction [_actionText, CHVD_fnc_openDialog, [], -99, false, true]; - player addEventHandler ["Respawn", format ["player addAction ['%1', CHVD_fnc_openDialog, [], -99, false, true]", _actionText]]; + //player addAction [_actionText, CHVD_fnc_openDialog, [], -99, false, true]; + //player addEventHandler ["Respawn", format ["player addAction ['%1', CHVD_fnc_openDialog, [], -99, false, true]", _actionText]]; //Detect when to change setting type [] spawn { @@ -39,7 +39,7 @@ _currentVehicle = vehicle player; waitUntil {_currentVehicle != vehicle player}; }; - }; + }; [] spawn { for "_i" from 0 to 1 step 0 do { waitUntil {UAVControl (getConnectedUAV player) select 1 != ""}; @@ -48,4 +48,4 @@ [nil, false] call CHVD_fnc_updateSettings; }; }; -}; \ No newline at end of file +}; diff --git a/Functions/AI/arty.sqf b/Functions/AI/arty.sqf index d9a8c21..d6952ff 100644 --- a/Functions/AI/arty.sqf +++ b/Functions/AI/arty.sqf @@ -40,7 +40,7 @@ _arty2 setVariable["JOC_caching_disabled",true]; _trg = createTrigger ["EmptyDetector",_location,true]; _trg setTriggerArea [600,600,600,false]; _trg setTriggerActivation ["WEST","PRESENT", false]; -_trg setTriggerStatements ["(!((typeOf (thisList select 0)) in jetArray)) OR ((count thisList) > 1)","[getPos thisTrigger,350,[4,true],[0,false],[0,false],[1,false],[0,false],[0,false,""cas""],[0,false]] call JOC_spawnZone;",""]; +_trg setTriggerStatements ["((speed((thisList) select 0)) < 400) or (count thisList) > 1","[getPos thisTrigger,350,[4,true],[0,false],[0,false],[1,false],[0,false],[0,false,""cas""],[0,false]] call JOC_spawnZone;",""]; _trg setTriggerTimeout [5,5,5,true]; waitUntil{!alive _arty1 && !alive _arty2}; diff --git a/Functions/AI/monitorMarker.sqf b/Functions/AI/monitorMarker.sqf new file mode 100644 index 0000000..ef3c346 --- /dev/null +++ b/Functions/AI/monitorMarker.sqf @@ -0,0 +1,105 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +_marker = _this select 0; +_type = _this select 1; + +_town = 0; +if(_type == "town")then{ + _town = (nearestLocations [_marker, ["NameCityCapital","NameCity","NameVillage"], 100]) select 0; + _marker = text _town; +}; + +_markerI = 0; +if(_type == "base")then{ + _markerI = _marker; + _location = getMarkerPos _markerI; + + _marker = [4] call Zen_StringGenerateRandom; + _mrk = createMarker [_marker,_location]; + _marker setMarkerSize [300,300]; + _marker setMarkerShape "RECTANGLE"; + _marker setMarkerAlpha 0; +}; + +_owner = 1; //0 = BLUFOR|1 = OPFOR + +//Create object triggers +_location = getMarkerPos _marker; +_size = getMarkerSize _marker; +_dir = markerDir _marker; + +_trgO = createTrigger ["EmptyDetector",_location,true]; +_trgO setTriggerArea [(_size select 0),(_size select 1),1200,false]; +_trgO setTriggerActivation ["EAST","PRESENT", false]; +_trgO setTriggerStatements ["this","",""]; +_trgO setTriggerTimeout [5,5,5,true]; +_trgO setDir _dir; + +_trgB = createTrigger ["EmptyDetector",_location,true]; +_trgB setTriggerArea [(_size select 0),(_size select 1),1200,false]; +_trgB setTriggerActivation ["WEST","PRESENT", false]; +_trgB setTriggerStatements ["this","",""]; +_trgB setTriggerTimeout [5,5,5,true]; +_trgB setDir _dir; + +sleep 5; + +while{true}do{ + if(((count list _trgB >= 4) and (count list _trgO <= 5)) and _owner == 1)then{ + _marker setMarkerColor "ColorBLUFOR"; + + if(_type == "town")then{ + hint "lol"; + [bluTownsN,count bluTownsN,_marker] call Zen_ArrayInsert; + [bluTowns,count bluTowns,_town] call Zen_ArrayInsert; + opTowns = opTowns - [_town]; + opTownsN = opTownsN - [_marker]; + }; + + if(_type == "airfield")then{ + _stringId = [_marker,"mrk_airfield_",""]call Zen_StringFindReplace; + _id = parseNumber _stringId; + airfieldOccup set [_id,true]; + }; + + if(_type == "base")then{ + _markerI setMarkerColor "ColorBLUFOR"; + [baseMarkersB,count baseMarkersB,_markerI] call Zen_ArrayInsert; + baseMarkersO = baseMarkersO - [_markerI]; + }; + + _owner = 0; + }; + + if(((count list _trgB <= 3) and (count list _trgO >= 5)) and _owner == 0)then{ + _marker setMarkerColor "ColorOPFOR"; + + if(_type == "town")then{ + [opTownsN,count opTownsN,_marker] call Zen_ArrayInsert; + [opTowns,count opTowns,_town] call Zen_ArrayInsert; + bluTowns = bluTowns - [_town]; + bluTownsN = bluTownsN - [_marker]; + }; + + if(_type == "airfield")then{ + _stringId = [_marker,"mrk_airfield_",""]call Zen_StringFindReplace; + _id = parseNumber _stringId; + airfieldOccup set [_id,false]; + }; + + if(_type == "base")then{ + _markerI setMarkerColor "ColorOPFOR"; + [baseMarkersO,count baseMarkersO,_markerI] call Zen_ArrayInsert; + baseMarkersB = baseMarkersB - [_markerI]; + }; + + _owner = 1; + }; + + sleep 10; + publicVariable "opTowns"; + publicVariable "airfieldOccup"; + publicVariable "baseMarkersO"; + publicVariable "baseMarkersB"; +}; diff --git a/Functions/AI/radioTower.sqf b/Functions/AI/radioTower.sqf index 9fd0728..f5c5255 100644 --- a/Functions/AI/radioTower.sqf +++ b/Functions/AI/radioTower.sqf @@ -15,7 +15,7 @@ _name setMarkerSize [0.65, 0.65]; _trg = createTrigger ["EmptyDetector",_location,true]; _trg setTriggerArea [600,600,600,false]; _trg setTriggerActivation ["WEST","PRESENT", false]; -_trg setTriggerStatements ["(!((typeOf (thisList select 0)) in jetArray)) OR ((count thisList) > 1)","[getPos thisTrigger,600,[4,true],[0,false],[0,false],[1,false],[0,false],[0,false,""cas""],[0,false]] call JOC_spawnZone;",""]; +_trg setTriggerStatements ["((speed((thisList) select 0)) < 400) or (count thisList) > 1","[getPos thisTrigger,600,[4,true],[0,false],[0,false],[1,false],[0,false],[0,false,""cas""],[0,false]] call JOC_spawnZone;",""]; _trg setTriggerTimeout [5,5,5,true]; waitUntil{!alive _tower}; diff --git a/Functions/AI/spawnAirfield.sqf b/Functions/AI/spawnAirfield.sqf index dc06ee9..e6136df 100644 --- a/Functions/AI/spawnAirfield.sqf +++ b/Functions/AI/spawnAirfield.sqf @@ -52,33 +52,3 @@ while{_ok == 0}do{ }; _count = _count + 1; }; - -//Create object triggers -_trgO = createTrigger ["EmptyDetector",_location,true]; -_trgO setTriggerArea [(_size select 0),(_size select 1),1200,false]; -_trgO setTriggerActivation ["EAST","PRESENT", false]; -_trgO setTriggerStatements ["this","",""]; -_trgO setTriggerTimeout [5,5,5,true]; -_trgO setDir _dir; - -_trgB = createTrigger ["EmptyDetector",_location,true]; -_trgB setTriggerArea [(_size select 0),(_size select 1),1200,false]; -_trgB setTriggerActivation ["WEST","PRESENT", false]; -_trgB setTriggerStatements ["this","",""]; -_trgB setTriggerTimeout [5,5,5,true]; -_trgB setDir _dir; - -waitUntil{sleep 30;(count (list _trgO)) >= 5}; - -while{(count (list _trgO)) >= 5}do{ - if((count (list _trgB)) >= 5)then{ - airfieldOccup set [_id,true]; - sleep 30; - }else{ - airfieldOccup set [_id,false]; - }; -}; - -deleteMarker _trgO; - -[airfieldOccup,_id,true] call Zen_ArrayInsert; diff --git a/Functions/AI/spawnBase.sqf b/Functions/AI/spawnBase.sqf index 4c6664d..a3474c1 100644 --- a/Functions/AI/spawnBase.sqf +++ b/Functions/AI/spawnBase.sqf @@ -35,3 +35,18 @@ _compoundsR = [_compoundsS, ((count _compoundsS)/2)]call Zen_ArrayGetRandomSeque //Spawn patrolling infantry [_location,300,[7,true],[2,false],[0,false],[1,false],[1,false],[0,false,"cas"],[0,false]] call JOC_spawnZone; + +_trgO = createTrigger ["EmptyDetector",_location]; +_trgO setTriggerArea [_size,_size,_size,false]; +_trgO setTriggerActivation ["EAST","PRESENT", false]; +_trgO setTriggerStatements ["this","",""]; + +_marker = ""; + +{ + if((_location distance (getMarkerPos _x)) < 100)then{ + _marker = _x; + }; +} forEach baseMarkersO; + +[_marker, "base"]spawn JOC_monitorMarker; diff --git a/Functions/Init/initAirfields.sqf b/Functions/Init/initAirfields.sqf index b2438b7..e1eec00 100644 --- a/Functions/Init/initAirfields.sqf +++ b/Functions/Init/initAirfields.sqf @@ -7,5 +7,6 @@ airfieldGroup = createGroup east; _s = 0; while{_s < count _airfields}do{ [(_airfields select _s),_s]spawn JOC_spawnAirfield; + [(_airfields select _s),"airfield"]spawn JOC_monitorMarker; _s = _s + 1; }; diff --git a/Functions/Init/initBases.sqf b/Functions/Init/initBases.sqf index 1ba2cf2..e9c113b 100644 --- a/Functions/Init/initBases.sqf +++ b/Functions/Init/initBases.sqf @@ -31,7 +31,7 @@ while {_s < baseCount} do { _trg = createTrigger ["EmptyDetector",_location,true]; _trg setTriggerArea [900,900,900,false]; _trg setTriggerActivation ["WEST","PRESENT", false]; - _trg setTriggerStatements ["this","[getPos thisTrigger] call JOC_spawnBase;deleteVehicle thisTrigger;",""]; + _trg setTriggerStatements ["((speed((thisList) select 0)) < 400) or (count thisList) > 1","[getPos thisTrigger] call JOC_spawnBase;deleteVehicle thisTrigger;",""]; _trg setTriggerTimeout [5,5,5,true]; //Create marker @@ -40,7 +40,9 @@ while {_s < baseCount} do { _name setMarkerType "o_hq"; _name setMarkerSize [0.65, 0.65]; - baseMarkers pushback _name; + baseMarkersO pushback _name; _s = _s + 1; }; + +publicVariable "baseMarkersO"; diff --git a/Functions/Loadouts/arsenal.sqf b/Functions/Loadouts/arsenal.sqf index 22238d2..5e88d60 100644 --- a/Functions/Loadouts/arsenal.sqf +++ b/Functions/Loadouts/arsenal.sqf @@ -5,14 +5,9 @@ private["_box","_unit","_uniforms","_vests","_helmets","_backpacks"]; _box = _this select 0; _weapons = [ - "arifle_MX_F", - "arifle_MXC_F", - "RH_m4_ris", - "RH_m4a1_ris", - "RH_m16a4", - "", - "RH_m9", - "tf47_at4_HEDP" + "UK3CB_BAF_L85A2_RIS", + "UK3CB_BAF_L131A1", + "UK3CB_BAF_AT4_AP_Launcher" ]; _magazines = [ @@ -78,16 +73,9 @@ _items = [ "ACE_HandFlare_Yellow", "ACE_M84", - "SMA_eotech552", - "SMA_eotech552_3XDOWN", - "RH_compm4s", - "RH_ta01nsn", - "RH_ta31rmr", - "optic_MRCO", - "optic_Hamr", - "muzzle_snds_H", - "RH_fa556" - + "UK3CB_BAF_Eotech", + "UK3CB_BAF_SpecterLDS_Dot_3D", + "UK3CB_BAF_LLM_IR", ]; weaponsT = _weapons; magazinesT = _magazines; @@ -207,4 +195,4 @@ if(player in [r1,r2,r3,r4])then{ [_box,_weapons,false,true] call BIS_fnc_addVirtualWeaponCargo; [_box,_magazines,false,true] call BIS_fnc_addVirtualMagazineCargo; [_box,_backpacks,false,true] call BIS_fnc_addVirtualBackpackCargo; -[_box,(_uniforms + _vests + _helmets + _items),false,true] call BIS_fnc_addVirtualItemCargo; \ No newline at end of file +[_box,(_uniforms + _vests + _helmets + _items),false,true] call BIS_fnc_addVirtualItemCargo; diff --git a/Functions/Loadouts/master.sqf b/Functions/Loadouts/master.sqf index 04d1620..ede2368 100644 --- a/Functions/Loadouts/master.sqf +++ b/Functions/Loadouts/master.sqf @@ -14,12 +14,12 @@ if(!(player in [r1,r2,r3,r4,s1,s2,v1,v2,rip1,rip2,cmd1,cmd2]))then{ removeHeadgear player; removeGoggles player; - player forceAddUniform "TRYK_U_B_MARPAT_Wood_Tshirt"; - player addVest "TRYK_V_ArmorVest_Brown2"; - player addHeadgear "TRYK_H_Helmet_MARPAT_Wood"; + player forceAddUniform "BAF_Soldier_Base_L_M_Uniform_DG1"; + player addVest "BAF_Soldier_Officer_Vest_M_DG1"; + player addHeadgear "BAF_Soldier_Engineer_Headgear_M_DG1"; player linkItem "ItemMap"; player linkItem "ItemCompass"; player linkItem "tf_microdagr"; player linkItem "tf_anprc152_1"; -}; \ No newline at end of file +}; diff --git a/Functions/Opfor/getSpawnLocations.sqf b/Functions/Opfor/getSpawnLocations.sqf new file mode 100644 index 0000000..4aea32d --- /dev/null +++ b/Functions/Opfor/getSpawnLocations.sqf @@ -0,0 +1,34 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// +_array = []; + +_baseLoc = []; +{ + if(getMarkerColor _x != "")then{ + _baseLoc pushBack (getMarkerPos _x); + }; +} forEach baseMarkersO; + +_townLoc = []; +{ + _townLoc pushBack (position _x); +} forEach opTowns; + + +{ + _arrayN = [ + _x, + {player setPos (_this select 0);}, + "Spawn here", + "Choose this as your respawn point", + "", + "", + 1, + [] + ]; + + _array = _array + [_arrayN]; +}forEach (_baseLoc + _townLoc); + +_array diff --git a/Functions/Tasks/convoy.sqf b/Functions/Tasks/convoy.sqf deleted file mode 100644 index 2bd4ad6..0000000 --- a/Functions/Tasks/convoy.sqf +++ /dev/null @@ -1,11 +0,0 @@ -///////////////////////// -//Script made by Jochem// -///////////////////////// -_name = [5] call Zen_StringGenerateRandom; -convoyArrived = 0; -convoy = 0; -_ok = 0; - -//Get loc -startLoc = -endLoc = \ No newline at end of file diff --git a/Functions/Tasks/crashedChopper.sqf b/Functions/Tasks/crashedChopper.sqf index 6f48d35..68f3fa4 100644 --- a/Functions/Tasks/crashedChopper.sqf +++ b/Functions/Tasks/crashedChopper.sqf @@ -3,10 +3,8 @@ ///////////////////////// //Set up var _name = [5] call Zen_StringGenerateRandom; -pilotRescued = 0; -pilotDead = 0; _ok = 0; - +_location = 0; //Get position while{_ok == 0}do{ @@ -17,13 +15,9 @@ while{_ok == 0}do{ _nearestPlayers pushBack _x; }; } forEach (playableUnits + switchableUnits); - if(count _nearestPlayers == 0)then{_ok = 1; locationT = _location;}; + if(count _nearestPlayers == 0)then{_ok = 1;}; }; -_location = locationT; - -_dropLocation = getMarkerPos "mrk_return"; - //Create marker _marker = createMarker [_nameM, _location]; _nameM setMarkerType "mil_objective"; @@ -35,10 +29,9 @@ _chopper = [_location, "Land_Wreck_Heli_Attack_01_F"] call Zen_SpawnVehicle; _locationP= [_location, random 20, random 20] call BIS_fnc_relPos; _groupPilot = createGroup west; -Sleep 20; -pilot = _groupPilot createUnit ["B_Helipilot_F",_locationP, [], 0, "NONE"]; -pilot setCaptive true; -[pilot, true, 9999] call ace_medical_fnc_setUnconscious; +sleep 20; +_pilot = _groupPilot createUnit ["B_Helipilot_F",_locationP, [], 0, "NONE"]; +[_pilot, true, 9999] call ace_medical_fnc_setUnconscious; //Create task markers @@ -62,38 +55,27 @@ _x = 0; _trg = createTrigger ["EmptyDetector",_location,true]; _trg setTriggerArea [900,900,900,false]; _trg setTriggerActivation ["WEST","PRESENT", false]; -_trg setTriggerStatements ["(!((typeOf (thisList select 0)) in jetArray)) OR ((count thisList) > 1)","[getPos thisTrigger,300,[4,true],[3,false],[0,false],[0,false],[0,false],[0,false,""cas""],[0,false]] spawn JOC_spawnZone;[getPos thisTrigger,600] spawn JOC_monitorTown;",""]; - +_trg setTriggerStatements ["this","[getPos thisTrigger,300,[4,true],[3,false],[0,false],[0,false],[0,false],[0,false,""cas""],[0,false]] spawn JOC_spawnZone; deleteVehicle thisTrigger",""]; +_trg setTriggerTimeout [5,5,5,true]; -//Spawn complete trigger -_trgdrop = createTrigger ["EmptyDetector",_dropLocation]; -_trgdrop setTriggerArea [10,10,10,false]; -_trgdrop setTriggerActivation ["BLUFOR","PRESENT", false]; -_trgdrop setTriggerStatements ["{[thisTrigger, _x]call BIS_fnc_inTrigger}count [pilot, blu_hostage_2] > 0","pilotRescued = 1",""]; +_pilot allowDamage true; -//Spawn dead trigger -_trgdead = createTrigger ["EmptyDetector",_dropLocation]; -_trgdead setTriggerStatements ["!alive pilot","pilotDead = 1",""]; - -pilot allowDamage true; - -waitUntil {pilotRescued == 1 or pilotDead == 1}; +waitUntil {(!alive _pilot) or ((_pilot distance respawn_obj) < 10)}; //Complete task -if(pilotRescued == 1) then{ +if((_pilot distance respawn_obj) < 10) then{ [_name, "succeeded"] call Zen_UpdateTask; }; -if(pilotDead == 1) then{ +if(!alive _pilot) then{ [_name, "failed"] call Zen_UpdateTask; }; -Sleep 5; +sleep 5; taskActive = 1; - //Cleanup deleteMarker _marker; -deleteVehicle pilot; \ No newline at end of file +deleteVehicle _pilot; diff --git a/Functions/Tasks/rescue.sqf b/Functions/Tasks/rescue.sqf index 4880e0e..7db2921 100644 --- a/Functions/Tasks/rescue.sqf +++ b/Functions/Tasks/rescue.sqf @@ -2,76 +2,55 @@ //Script made by Jochem// ///////////////////////// //Set up var -rescued = 0; -dead = 0; _x = 0; _y = 0; _ok = 0; _name = [5] call Zen_StringGenerateRandom; - //Get position _targetTown = opTownMarkers call BIS_fnc_selectRandom; _location = getMarkerPos (_targetTown); -//Set location for triggers -_missionDropoffzone = getMarkerPos "mrk_return"; - - //Create task _task = [west, "A journalist Journalist has been taken hostage by enemy SOF. Attempts to negotiate with them have unfortunately failed and plans are made to move him to Iran. This could have a big influence on public opinions, something we cannot afford at all. Rescue him and return him to the Return point","Rescue journalist",_location,true,"",_name] call Zen_InvokeTask; - //Create marker _marker = createMarker [_name, _location]; _name setMarkerType "mil_objective"; _name setMarkerColor "ColorOPFOR"; - //Spawn hostage _locationS = [_location,[0,50],0,1,[1,150]] call Zen_FindGroundPosition; _groupHostage = createGroup civilian; -CIV = _groupHostage createUnit ["C_journalist_F",_locationS, [], 0, "NONE"]; -CIV allowFleeing 0; +_civ = _groupHostage createUnit ["C_journalist_F",_locationS, [], 0, "NONE"]; +_civ allowFleeing 0; _locationHostage = _locationS; -CIV setPos _locationHostage; +_civ setPos _locationHostage; //Hostage set behaviour -CIV setBehaviour "Careless"; -doStop CIV; -commandStop CIV; -CIV switchMove "AmovPercMstpSsurWnonDnon"; +_civ setBehaviour "Careless"; +doStop _civ; +commandStop _civ; +_civ switchMove "AmovPercMstpSsurWnonDnon"; //Spawn enemy [_locationHostage, east, "sof", 4,"SF"] call Zen_SpawnInfantry; -//Spawn dropoff trigger -_trgdrop = createTrigger ["EmptyDetector",_missionDropoffzone]; -_trgdrop setTriggerArea [50,50,50,false]; -_trgdrop setTriggerActivation ["CIV","PRESENT", false]; -_trgdrop setTriggerStatements ["{[thisTrigger, _x]call BIS_fnc_inTrigger}count [CIV, blu_hostage_2] > 0","rescued = 1",""]; - - -//Spawn dead trigger -_trgdead = createTrigger ["EmptyDetector",_missionDropoffzone]; -_trgdead setTriggerStatements ["!alive CIV","dead = 1",""]; - - //Wait until complete or failed -waitUntil {dead == 1 or rescued == 1}; +waitUntil {(!alive _civ) or ((_civ distance respawn_obj) < 10)}; -if ( dead == 1) then{ +if (!alive _civ) then{ [_name, "failed"] call Zen_UpdateTask; }; -if ( rescued == 1) then{ +if ((_civ distance respawn_obj) < 10) then{ [_name, "succeeded"] call Zen_UpdateTask; }; sleep 15; //Cleanup -deleteVehicle CIV; +deleteVehicle _civ; deleteMarker _marker; taskActive = 0; diff --git a/Functions/Tasks/setMainTask.sqf b/Functions/Tasks/setMainTask.sqf index 9814574..98b87e7 100644 --- a/Functions/Tasks/setMainTask.sqf +++ b/Functions/Tasks/setMainTask.sqf @@ -2,4 +2,4 @@ //Script made by Jochem// ///////////////////////// _tasks = []call JOC_getMainTasks; -[(findDisplay 46), (getMarkerPos "mrk_area"), _tasks, [], [], [], 1, false, 2, true, "Assign a task", false] call BIS_fnc_strategicMapOpen; +[(findDisplay 46), (getMarkerPos "mrk_area"), _tasks, [], [], [], 1, false, 10, true, "Assign a task", false] call BIS_fnc_strategicMapOpen; diff --git a/Functions/Tasks/taskManager.sqf b/Functions/Tasks/taskManager.sqf index d934695..97def07 100644 --- a/Functions/Tasks/taskManager.sqf +++ b/Functions/Tasks/taskManager.sqf @@ -3,35 +3,23 @@ ///////////////////////// taskActive = 0; -convoy = 0; crash = 0; -kill = 0; nuke = 0; rescue = 0; uavM = 0; -_tasks = ["crash","kill","rescue","uav"];//All (almost)finished tasks are in here +_tasks = ["crash","rescue","uav"];//All (almost)finished tasks are in here sleep 60; while{true}do{ _task = _tasks call BIS_fnc_selectRandom; - - if(_task == "convoy" and convoy < 1) then{ - []execVM "Tasks\convoy.sqf"; - taskActive = 1; - convoy = 5; - }; + if(_task == "crash" and crash < 1) then{ []spawn JOC_taskCrash; taskActive = 1; crash = 4; }; - if(_task == "kill" and kill < 1) then{ - []spawn JOC_taskKill; - taskActive = 1; - kill = 4; - }; if(_task == "nuke" and nuke < 1) then{ []execVM "Tasks\nuke.sqf"; taskActive = 1; @@ -47,16 +35,14 @@ while{true}do{ taskActive = 1; uavM = 3; }; - + if(taskActive == 1)then{ - convoy = convoy - 1; crash = crash - 1; - kill = kill - 1; nuke = nuke - 1; rescue = rescue - 1; uavM = uavM - 1; }; - + waitUntil{sleep 60;taskActive == 0;}; Sleep 1200; -}; \ No newline at end of file +}; diff --git a/Functions/Tasks/uav.sqf b/Functions/Tasks/uav.sqf index 75be70d..61aaf04 100644 --- a/Functions/Tasks/uav.sqf +++ b/Functions/Tasks/uav.sqf @@ -67,4 +67,6 @@ taskActive = 0; Sleep 15; deleteMarker _marker; -deleteVehicle uav; \ No newline at end of file +deleteVehicle uav; +deleteVehicle _trgdead; +deleteVehicle _trgD; diff --git a/Functions/Towns/monitor.sqf b/Functions/Towns/monitor.sqf index 82abec6..5bb74bf 100644 --- a/Functions/Towns/monitor.sqf +++ b/Functions/Towns/monitor.sqf @@ -40,6 +40,7 @@ while{true}do{ bluTownsN = bluTownsN - [_nameT]; _owner = 1; }; - + Sleep 10; -}; \ No newline at end of file + publicVariable "opTowns"; +}; diff --git a/Functions/Towns/occupy.sqf b/Functions/Towns/occupy.sqf index 3b98684..76a553c 100644 --- a/Functions/Towns/occupy.sqf +++ b/Functions/Towns/occupy.sqf @@ -14,11 +14,22 @@ _targetTown = 0; _townName = 0; while{_ok == 0}do{ _targetTown = _villages select (floor (random (count _villages))); - if((count _towns + count _capitals) > count opTownsN)then{_targetTown = _towns select ((count opTownsN) - count _capitals);}; - if((count _capitals) > count opTownsN)then{_targetTown = _capitals select (count opTownsN);}; + if((count _towns + count _capitals) > count opTownsN)then{ + _targetTown = _towns select ((count opTownsN) - count _capitals); + }; + + if((count _capitals) > count opTownsN)then{ + _targetTown = _capitals select (count opTownsN); + }; + _townName = text _targetTown; - if (!(_townName in opTownsN) && !(_townName in blackTowns))then{_ok = 1; [opTownsN,count opTownsN,_townName] call Zen_ArrayInsert; [opTowns,count opTowns,_targetTown] call Zen_ArrayInsert;}; - Sleep 1; + if (!(_townName in opTownsN) && !(_townName in blackTowns))then{ + _ok = 1; + [opTownsN,count opTownsN,_townName] call Zen_ArrayInsert; + [opTowns,count opTowns,_targetTown] call Zen_ArrayInsert; + }; + + sleep 1; }; if(_targetTown in _towns)then{ @@ -28,7 +39,7 @@ if(_targetTown in _towns)then{ _trg = createTrigger ["EmptyDetector",_location,true]; _trg setTriggerArea [900,900,900,false]; _trg setTriggerActivation ["WEST","PRESENT", false]; - _trg setTriggerStatements ["this","[getPos thisTrigger,475,[11,true],[5,false],[0,false],[3,false],[1,false],[0,false,""cas""],[0,false]] call JOC_spawnZone;[getPos thisTrigger,600] spawn JOC_monitorTown;deleteVehicle thisTrigger;",""]; + _trg setTriggerStatements ["((speed((thisList) select 0)) < 400) or (count thisList) > 1","[getPos thisTrigger,475,[9,true],[3,false],[0,false],[2,false],[1,false],[0,false,""cas""],[0,false]] call JOC_spawnZone;[getPos thisTrigger,""town""] spawn JOC_monitorMarker;deleteVehicle thisTrigger;",""]; _trg setTriggerTimeout [5,5,5,true]; _marker = createMarker [_nameT, _location]; @@ -48,7 +59,7 @@ if(_targetTown in _villages)then{ _trg = createTrigger ["EmptyDetector",_location,true]; _trg setTriggerArea [700,700,700,false]; _trg setTriggerActivation ["WEST","PRESENT", false]; - _trg setTriggerStatements ["this","[getPos thisTrigger,250,[7,true],[2,false],[0,false],[0,false],[0,false],[0,false,""cas""],[0,false]] call JOC_spawnZone;[getPos thisTrigger,400] spawn JOC_monitorTown; deleteVehicle thisTrigger;",""]; + _trg setTriggerStatements ["((speed((thisList) select 0)) < 400) or (count thisList) > 1","[getPos thisTrigger,250,[5,true],[2,false],[0,false],[0,false],[0,false],[0,false,""cas""],[0,false]] call JOC_spawnZone;[getPos thisTrigger,""town""] spawn JOC_monitorMarker;deleteVehicle thisTrigger;",""]; _trg setTriggerTimeout [5,5,5,true]; _marker = createMarker [_nameT, _location]; @@ -68,7 +79,7 @@ if(_targetTown in _capitals)then{ _trg = createTrigger ["EmptyDetector",_location,true]; _trg setTriggerArea [1200,1200,1200,false]; _trg setTriggerActivation ["WEST","PRESENT", false]; - _trg setTriggerStatements ["this","[getPos thisTrigger,700,[15,true],[7,false],[0,false],[5,false],[2,false],[0,false,""cas""],[0,false]] call JOC_spawnZone;[getPos thisTrigger,800] spawn JOC_monitorTown;deleteVehicle thisTrigger;",""]; + _trg setTriggerStatements ["((speed((thisList) select 0)) < 400) or (count thisList) > 1","[getPos thisTrigger,700,[11,true],[4,false],[0,false],[3,false],[2,false],[0,false,""cas""],[0,false]] call JOC_spawnZone;[getPos thisTrigger,""town""] spawn JOC_monitorMarker;deleteVehicle thisTrigger;",""]; _trg setTriggerTimeout [5,5,5,true]; _marker = createMarker [_nameT, _location]; @@ -79,3 +90,5 @@ if(_targetTown in _capitals)then{ [opTownMarkers,count opTownMarkers,_nameT] call Zen_ArrayInsert; }; + +publicVariable "opTowns"; diff --git a/Functions/Vehicle/Garage/garageFnc.sqf b/Functions/Vehicle/Garage/garageFnc.sqf index c1a77ad..37c4e6f 100644 --- a/Functions/Vehicle/Garage/garageFnc.sqf +++ b/Functions/Vehicle/Garage/garageFnc.sqf @@ -18,11 +18,11 @@ while{!(isNull(uiNamespace getVariable ["BIS_fnc_arsenal_cam",objNull]))}do{ waitUntil {isNull(uiNamespace getVariable ["BIS_fnc_arsenal_cam",objNull])}; -sleep 0.5; +sleep 1; _veh = nearestObject [_spawnObj, "AllVehicles"]; _dis = _veh distance _spawnObj; -if(_dis > 4)then{hint "No vehicle spawned";}else{ +if(_dis > 5)then{hint "No vehicle spawned";}else{ _codeE = [_veh]call BIS_fnc_exportVehicle; deleteVehicle _veh; _codeS = [_codeE,"position player","(_this select 0)",true] call Zen_StringFindReplace; diff --git a/Functions/fn_compile.sqf b/Functions/fn_compile.sqf index f5c0828..ad29e31 100644 --- a/Functions/fn_compile.sqf +++ b/Functions/fn_compile.sqf @@ -14,6 +14,7 @@ JOC_mineField = compileFinal preprocessFileLineNumbers "Functions\AI\mineField.s JOC_radioTower = compileFinal preprocessFileLineNumbers "Functions\AI\radioTower.sqf"; JOC_arty = compileFinal preprocessFileLineNumbers "Functions\AI\arty.sqf"; JOC_patrol = compileFinal preprocessFileLineNumbers "Functions\AI\patrol.sqf"; +JOC_monitorMarker = compileFinal preprocessFileLineNumbers "Functions\AI\monitorMarker.sqf"; //Bluforce tracking JOC_bftManager = compileFinal preprocessFileLineNumbers "Functions\BFT\manager.sqf"; @@ -52,6 +53,9 @@ JOC_loadoutMaster = compileFinal preprocessFileLineNumbers "Functions\Loadouts\m JOC_crateInit = compileFinal preprocessFileLineNumbers "Functions\Logistics\crateInit.sqf"; JOC_spawnComposition = compileFinal preprocessFileLineNumbers "Functions\Logistics\spawnComposition.sqf"; +//Opfor +JOC_opforGetSpawnLocations = compileFinal preprocessFileLineNumbers "Functions\Opfor\getSpawnLocations.sqf"; + //Performance JOC_perfLoop = compileFinal preprocessFileLineNumbers "Functions\Performance\loop.sqf"; JOC_objectRemove = compileFinal preprocessFileLineNumbers "Functions\Performance\objectRemove.sqf"; diff --git a/initPlayerLocal.sqf b/initPlayerLocal.sqf index e549dca..726f418 100644 --- a/initPlayerLocal.sqf +++ b/initPlayerLocal.sqf @@ -14,7 +14,8 @@ _name = name player; _textDate = format["%3/%2/%1 - %4:%5",_year,_month,_day,_hour,_minute]; _textName = format["%1 %2",_rank,_name]; -sleep 1; +waitUntil {!isNull player}; +waitUntil {player == player}; [ [ @@ -32,3 +33,6 @@ sleep 1; []spawn JOC_playerClick; []call JOC_garage; ["KeyDown", "_this call JOC_playerButton"] call CBA_fnc_addDisplayHandler; + +viewDistanceI = ["ViewDistance","View distance","",{[]spawn CHVD_fnc_openDialog},{true}] call ace_interact_menu_fnc_createAction; +[player, 1, ["ACE_SelfActions"], viewDistanceI] call ace_interact_menu_fnc_addActionToObject; diff --git a/mission.sqm b/mission.sqm index be5ebab..3db84b9 100644 --- a/mission.sqm +++ b/mission.sqm @@ -108,7 +108,7 @@ class Mission }; class Groups { - items=44; + items=46; class Item0 { side="LOGIC"; @@ -2282,6 +2282,116 @@ class Mission }; }; }; + class Item44 + { + side="EAST"; + class Vehicles + { + items=5; + class Item0 + { + position[]={30706.711,0.10880187,29.344849}; + id=86; + side="EAST"; + vehicle="O_recon_TL_F"; + player="PLAY CDG"; + leader=1; + rank="LIEUTENANT"; + skill=0.60000002; + text="o1"; + description="Recon team lead"; + }; + class Item1 + { + position[]={30707.969,0.10786925,29.318848}; + id=87; + side="EAST"; + vehicle="O_recon_medic_F"; + player="PLAY CDG"; + rank="CORPORAL"; + skill=0.60000002; + text="o2"; + description="Recon paramedic"; + }; + class Item2 + { + position[]={30709.17,0.099708334,29.32251}; + azimut=-363.75699; + offsetY=17; + id=88; + side="EAST"; + vehicle="O_recon_M_F"; + player="PLAY CDG"; + rank="CORPORAL"; + skill=0.60000002; + text="o3"; + description="Recon marksman"; + }; + class Item3 + { + position[]={30710.211,-185.97,29.278564}; + azimut=-363.75699; + offsetY=17; + id=89; + side="EAST"; + vehicle="O_recon_F"; + player="PLAY CDG"; + rank="CORPORAL"; + skill=0.60000002; + text="o4"; + description="Recon scout"; + }; + class Item4 + { + position[]={30711.254,0.069486372,29.278564}; + azimut=-363.75699; + offsetY=17; + id=90; + side="EAST"; + vehicle="O_recon_F"; + player="PLAY CDG"; + rank="CORPORAL"; + skill=0.60000002; + text="o5"; + description="Recon scout"; + }; + }; + }; + class Item45 + { + side="EAST"; + class Vehicles + { + items=2; + class Item0 + { + position[]={30706.762,-185.97,28.05542}; + azimut=-363.75699; + offsetY=17; + id=91; + side="EAST"; + vehicle="O_helipilot_F"; + player="PLAY CDG"; + leader=1; + rank="CAPTAIN"; + skill=0.60000002; + description="Heli pilot"; + }; + class Item1 + { + position[]={30708.033,-185.97,28.05542}; + azimut=-363.75699; + offsetY=17; + id=92; + side="EAST"; + vehicle="O_helicrew_F"; + player="PLAY CDG"; + rank="LIEUTENANT"; + skill=0.60000002; + description="Heli co-pilot"; + }; + }; + }; }; class Vehicles { @@ -2290,7 +2400,7 @@ class Mission { position[]={26751.092,20.63332,24620.148}; azimut=140; - id=86; + id=93; side="EMPTY"; vehicle="Flag_NATO_F"; skill=0.60000002; @@ -2300,7 +2410,7 @@ class Mission { position[]={26679.932,20.602068,24585.189}; azimut=220; - id=87; + id=94; side="EMPTY"; vehicle="Land_HelipadEmpty_F"; skill=0.60000002; @@ -2310,7 +2420,7 @@ class Mission { position[]={26853.795,22.974501,24627.014}; azimut=311; - id=88; + id=95; side="EMPTY"; vehicle="Land_HelipadSquare_F"; leader=1; @@ -2321,7 +2431,7 @@ class Mission { position[]={26840.758,23.258154,24611.885}; azimut=311; - id=89; + id=96; side="EMPTY"; vehicle="Land_HelipadSquare_F"; leader=1; @@ -2332,7 +2442,7 @@ class Mission { position[]={26814.207,23.667765,24580.438}; azimut=311; - id=90; + id=97; side="EMPTY"; vehicle="Land_HelipadSquare_F"; leader=1; @@ -2343,7 +2453,7 @@ class Mission { position[]={26827.711,23.467793,24596.537}; azimut=311; - id=91; + id=98; side="EMPTY"; vehicle="Land_HelipadSquare_F"; leader=1; @@ -2354,7 +2464,7 @@ class Mission { position[]={26789.77,20.045813,24677.568}; azimut=220; - id=92; + id=99; side="EMPTY"; vehicle="Land_HelipadRescue_F"; leader=1; @@ -2365,7 +2475,7 @@ class Mission { position[]={26616.869,15.110755,24661.656}; azimut=130; - id=93; + id=100; side="EMPTY"; vehicle="Land_HelipadSquare_F"; leader=1; @@ -2375,7 +2485,7 @@ class Mission class Item8 { position[]={26736.77,20.429853,24618.402}; - id=94; + id=101; side="EMPTY"; vehicle="Land_HelipadEmpty_F"; leader=1; @@ -2386,7 +2496,7 @@ class Mission { position[]={26851.818,22.539137,24635.105}; azimut=131; - id=95; + id=102; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; @@ -2397,7 +2507,7 @@ class Mission { position[]={26838.764,22.751152,24620.033}; azimut=131; - id=96; + id=103; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; @@ -2408,7 +2518,7 @@ class Mission { position[]={26825.6,23.232862,24604.789}; azimut=131; - id=97; + id=104; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; @@ -2419,7 +2529,7 @@ class Mission { position[]={26812.158,23.496078,24588.58}; azimut=131; - id=98; + id=105; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; @@ -2430,7 +2540,7 @@ class Mission { position[]={26625.193,15.63499,24661.625}; azimut=310; - id=99; + id=106; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; @@ -2441,7 +2551,7 @@ class Mission { position[]={26697.639,21.706532,24557.914}; azimut=40; - id=100; + id=107; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; @@ -2452,7 +2562,7 @@ class Mission { position[]={26700.02,21.519724,24568.592}; azimut=220; - id=101; + id=108; side="EMPTY"; vehicle="Land_HelipadEmpty_F"; leader=1; @@ -2463,7 +2573,7 @@ class Mission { position[]={26722.615,22.624599,24507.516}; azimut=310; - id=102; + id=109; side="EMPTY"; vehicle="Land_HelipadEmpty_F"; leader=1; @@ -2474,7 +2584,7 @@ class Mission { position[]={26627.027,18.492004,24551.48}; azimut=140; - id=103; + id=110; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -2484,7 +2594,7 @@ class Mission { position[]={26630.387,18.720192,24554.295}; azimut=140; - id=104; + id=111; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -2494,7 +2604,7 @@ class Mission { position[]={26640.418,19.333132,24562.721}; azimut=140; - id=105; + id=112; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -2504,7 +2614,7 @@ class Mission { position[]={26637.129,19.169079,24559.951}; azimut=140; - id=106; + id=113; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -2514,7 +2624,7 @@ class Mission { position[]={26633.701,18.948469,24557.066}; azimut=140; - id=107; + id=114; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -2524,7 +2634,7 @@ class Mission { position[]={26642.506,19.42977,24562.521}; azimut=50; - id=108; + id=115; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -2534,7 +2644,7 @@ class Mission { position[]={26653.719,19.988251,24549.172}; azimut=50; - id=109; + id=116; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -2544,7 +2654,7 @@ class Mission { position[]={26651.199,19.898941,24552.17}; azimut=50; - id=110; + id=117; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -2554,7 +2664,7 @@ class Mission { position[]={26644.934,19.568123,24559.594}; azimut=50; - id=111; + id=118; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -2564,7 +2674,7 @@ class Mission { position[]={26651.652,19.946342,24552.939}; azimut=5; - id=112; + id=119; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -2574,7 +2684,7 @@ class Mission { position[]={26645.73,19.599613,24559.926}; azimut=95; - id=113; + id=120; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -2584,7 +2694,7 @@ class Mission { position[]={26640.117,19.109953,24535.861}; azimut=140; - id=114; + id=121; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -2594,7 +2704,7 @@ class Mission { position[]={26643.477,19.330631,24538.676}; azimut=140; - id=115; + id=122; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -2604,7 +2714,7 @@ class Mission { position[]={26653.508,19.941353,24547.1}; azimut=140; - id=116; + id=123; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -2614,7 +2724,7 @@ class Mission { position[]={26650.219,19.73543,24544.33}; azimut=140; - id=117; + id=124; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -2624,7 +2734,7 @@ class Mission { position[]={26646.791,19.587873,24541.445}; azimut=140; - id=118; + id=125; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -2634,7 +2744,7 @@ class Mission { position[]={26652.77,19.967319,24550.83}; azimut=230; - id=119; + id=126; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; @@ -2645,7 +2755,7 @@ class Mission { position[]={26696.594,19.424883,24644.807}; azimut=220; - id=120; + id=127; side="EMPTY"; vehicle="Land_TableDesk_F"; leader=1; @@ -2656,7 +2766,7 @@ class Mission { position[]={26695.984,19.363281,24644.219}; azimut=220; - id=121; + id=128; side="EMPTY"; vehicle="Land_OfficeChair_01_F"; leader=1; @@ -2666,7 +2776,7 @@ class Mission { position[]={26698.777,19.607979,24646.449}; azimut=40; - id=122; + id=129; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -2676,7 +2786,7 @@ class Mission { position[]={26698.027,19.524288,24647.043}; azimut=40; - id=123; + id=130; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -2686,7 +2796,7 @@ class Mission { position[]={26697.188,19.426514,24647.748}; azimut=40; - id=124; + id=131; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -2696,7 +2806,7 @@ class Mission { position[]={26693.893,19.035419,24650.426}; azimut=40; - id=125; + id=132; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -2706,7 +2816,7 @@ class Mission { position[]={26696.391,19.332754,24648.361}; azimut=40; - id=126; + id=133; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -2716,7 +2826,7 @@ class Mission { position[]={26694.643,19.12458,24649.813}; azimut=40; - id=127; + id=134; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -2726,7 +2836,7 @@ class Mission { position[]={26695.506,19.227989,24649.063}; azimut=40; - id=128; + id=135; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -2736,7 +2846,7 @@ class Mission { position[]={26697.381,19.504669,24643.703}; azimut=220; - id=129; + id=136; side="EMPTY"; vehicle="Land_Laptop_unfolded_F"; leader=1; @@ -2748,7 +2858,7 @@ class Mission { position[]={26781.301,19.899694,24676.133}; azimut=40; - id=130; + id=137; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; @@ -2759,7 +2869,7 @@ class Mission { position[]={26677.564,20.788641,24575.168}; azimut=40; - id=131; + id=138; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; @@ -2770,7 +2880,7 @@ class Mission { position[]={26644.076,16.950621,24650.637}; azimut=220; - id=132; + id=139; side="EMPTY"; vehicle="Land_HelipadEmpty_F"; skill=0.60000002; @@ -2780,7 +2890,7 @@ class Mission { position[]={26648.682,16.888273,24656.238}; azimut=220; - id=133; + id=140; side="EMPTY"; vehicle="Land_HelipadEmpty_F"; skill=0.60000002; @@ -2790,7 +2900,7 @@ class Mission { position[]={26652.535,16.932177,24661.273}; azimut=220; - id=134; + id=141; side="EMPTY"; vehicle="Land_HelipadEmpty_F"; skill=0.60000002; @@ -2800,7 +2910,7 @@ class Mission { position[]={26635.229,16.312897,24658.033}; azimut=220; - id=135; + id=142; side="EMPTY"; vehicle="Land_HelipadEmpty_F"; skill=0.60000002; @@ -2810,7 +2920,7 @@ class Mission { position[]={26639.779,16.327471,24663.541}; azimut=220; - id=136; + id=143; side="EMPTY"; vehicle="Land_HelipadEmpty_F"; skill=0.60000002; @@ -2820,7 +2930,7 @@ class Mission { position[]={26643.854,16.254807,24668.561}; azimut=220; - id=137; + id=144; side="EMPTY"; vehicle="Land_HelipadEmpty_F"; skill=0.60000002; @@ -2830,7 +2940,7 @@ class Mission { position[]={26641.807,17.085974,24644.063}; azimut=40; - id=138; + id=145; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; @@ -2841,7 +2951,7 @@ class Mission { position[]={26669.105,18.929838,24620.211}; azimut=40; - id=139; + id=146; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2850,7 +2960,7 @@ class Mission { position[]={26675.096,19.145273,24615.203}; azimut=40; - id=140; + id=147; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2859,7 +2969,7 @@ class Mission { position[]={26665.881,18.562429,24626.85}; azimut=130; - id=141; + id=148; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2868,7 +2978,7 @@ class Mission { position[]={26670.225,18.580593,24632.055}; azimut=130; - id=142; + id=149; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2877,7 +2987,7 @@ class Mission { position[]={26675.172,18.44449,24638.094}; azimut=130; - id=143; + id=150; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2886,7 +2996,7 @@ class Mission { position[]={26688.559,18.534348,24648.607}; azimut=130; - id=144; + id=151; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2895,7 +3005,7 @@ class Mission { position[]={26693.688,18.753759,24654.469}; azimut=130; - id=145; + id=152; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2904,7 +3014,7 @@ class Mission { position[]={26698.727,18.506804,24660.373}; azimut=130; - id=146; + id=153; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2913,7 +3023,7 @@ class Mission { position[]={26713.186,19.482183,24658.797}; azimut=40; - id=147; + id=154; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2922,7 +3032,7 @@ class Mission { position[]={26707.221,18.721292,24663.738}; azimut=40; - id=148; + id=155; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2931,7 +3041,7 @@ class Mission { position[]={26701.9,18.207329,24664.418}; azimut=130; - id=149; + id=156; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2940,7 +3050,7 @@ class Mission { position[]={26681.018,19.525734,24610.256}; azimut=40; - id=150; + id=157; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2949,7 +3059,7 @@ class Mission { position[]={26718.061,19.875248,24660.645}; azimut=130; - id=151; + id=158; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2958,7 +3068,7 @@ class Mission { position[]={26723.012,20.634399,24666.549}; azimut=130; - id=152; + id=159; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2967,7 +3077,7 @@ class Mission { position[]={26728.184,20.3808,24672.498}; azimut=130; - id=153; + id=160; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2976,7 +3086,7 @@ class Mission { position[]={26733.225,20.088259,24678.447}; azimut=130; - id=154; + id=161; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2985,7 +3095,7 @@ class Mission { position[]={26738.17,20.095839,24684.396}; azimut=130; - id=155; + id=162; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2994,7 +3104,7 @@ class Mission { position[]={26743.029,19.922901,24690.256}; azimut=130; - id=156; + id=163; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3003,7 +3113,7 @@ class Mission { position[]={26748.291,19.106367,24696.434}; azimut=130; - id=157; + id=164; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3012,7 +3122,7 @@ class Mission { position[]={26753.375,18.435715,24702.428}; azimut=130; - id=158; + id=165; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3021,7 +3131,7 @@ class Mission { position[]={26767.789,18.903276,24699.6}; azimut=130; - id=159; + id=166; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3030,7 +3140,7 @@ class Mission { position[]={26862.461,26.275167,24486.096}; azimut=130; - id=160; + id=167; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3039,7 +3149,7 @@ class Mission { position[]={26846.166,26.304111,24475.688}; azimut=130; - id=161; + id=168; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3048,7 +3158,7 @@ class Mission { position[]={26849.023,26.257971,24479.457}; azimut=130; - id=162; + id=169; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3057,7 +3167,7 @@ class Mission { position[]={26854.064,26.214239,24485.541}; azimut=130; - id=163; + id=170; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3066,7 +3176,7 @@ class Mission { position[]={26858.309,26.254385,24485.82}; azimut=40; - id=164; + id=171; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3075,7 +3185,7 @@ class Mission { position[]={26686.828,19.831408,24605.326}; azimut=40; - id=165; + id=172; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3084,7 +3194,7 @@ class Mission { position[]={26692.869,19.961664,24600.311}; azimut=40; - id=166; + id=173; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3093,7 +3203,7 @@ class Mission { position[]={26698.906,20.382103,24595.242}; azimut=40; - id=167; + id=174; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3102,7 +3212,7 @@ class Mission { position[]={26705.203,20.690088,24590.121}; azimut=40; - id=168; + id=175; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3111,7 +3221,7 @@ class Mission { position[]={26711.395,20.825146,24584.9}; azimut=40; - id=169; + id=176; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3120,7 +3230,7 @@ class Mission { position[]={26717.488,21.112198,24579.779}; azimut=40; - id=170; + id=177; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3129,7 +3239,7 @@ class Mission { position[]={26723.629,21.47473,24574.609}; azimut=40; - id=171; + id=178; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3138,7 +3248,7 @@ class Mission { position[]={26735.711,22.108635,24564.574}; azimut=40; - id=172; + id=179; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3147,7 +3257,7 @@ class Mission { position[]={26753.672,22.806257,24549.717}; azimut=40; - id=173; + id=180; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3156,7 +3266,7 @@ class Mission { position[]={26759.754,23.050566,24544.629}; azimut=40; - id=174; + id=181; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3165,7 +3275,7 @@ class Mission { position[]={26765.793,23.300764,24539.59}; azimut=40; - id=175; + id=182; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3174,7 +3284,7 @@ class Mission { position[]={26771.691,23.534,24534.641}; azimut=40; - id=176; + id=183; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3183,7 +3293,7 @@ class Mission { position[]={26777.637,23.777401,24529.691}; azimut=40; - id=177; + id=184; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3192,7 +3302,7 @@ class Mission { position[]={26783.637,24.040606,24524.738}; azimut=40; - id=178; + id=185; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3201,7 +3311,7 @@ class Mission { position[]={26789.537,24.309319,24519.744}; azimut=40; - id=179; + id=186; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3210,7 +3320,7 @@ class Mission { position[]={26795.574,24.505087,24514.701}; azimut=40; - id=180; + id=187; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3219,7 +3329,7 @@ class Mission { position[]={26801.523,24.613827,24509.697}; azimut=40; - id=181; + id=188; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3228,7 +3338,7 @@ class Mission { position[]={26807.396,24.778641,24504.662}; azimut=40; - id=182; + id=189; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3237,7 +3347,7 @@ class Mission { position[]={26813.273,24.989782,24499.719}; azimut=40; - id=183; + id=190; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3246,7 +3356,7 @@ class Mission { position[]={26819.146,25.263405,24494.676}; azimut=40; - id=184; + id=191; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3255,7 +3365,7 @@ class Mission { position[]={26825.072,25.522869,24489.557}; azimut=40; - id=185; + id=192; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3264,7 +3374,7 @@ class Mission { position[]={26830.973,25.763977,24484.506}; azimut=40; - id=186; + id=193; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3273,7 +3383,7 @@ class Mission { position[]={26836.918,26.006767,24479.51}; azimut=40; - id=187; + id=194; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3282,7 +3392,7 @@ class Mission { position[]={26841.957,26.258018,24475.379}; azimut=40; - id=188; + id=195; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3291,7 +3401,7 @@ class Mission { position[]={26748.477,22.910776,24543.535}; azimut=40; - id=189; + id=196; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3300,7 +3410,7 @@ class Mission { position[]={26754.531,23.129507,24538.57}; azimut=40; - id=190; + id=197; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3309,7 +3419,7 @@ class Mission { position[]={26760.432,23.353369,24533.527}; azimut=40; - id=191; + id=198; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3318,7 +3428,7 @@ class Mission { position[]={26766.422,23.588297,24528.398}; azimut=40; - id=192; + id=199; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3327,7 +3437,7 @@ class Mission { position[]={26772.596,23.838976,24523.039}; azimut=42; - id=193; + id=200; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3336,7 +3446,7 @@ class Mission { position[]={26778.359,24.087416,24517.863}; azimut=42; - id=194; + id=201; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3345,7 +3455,7 @@ class Mission { position[]={26784.305,24.348587,24512.414}; azimut=42; - id=195; + id=202; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3354,7 +3464,7 @@ class Mission { position[]={26790.25,24.609047,24507.1}; azimut=42; - id=196; + id=203; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3363,7 +3473,7 @@ class Mission { position[]={26795.93,24.807636,24501.836}; azimut=42; - id=197; + id=204; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3372,7 +3482,7 @@ class Mission { position[]={26801.824,24.990799,24496.66}; azimut=42; - id=198; + id=205; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3381,7 +3491,7 @@ class Mission { position[]={26807.904,25.190668,24491.33}; azimut=42; - id=199; + id=206; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3390,7 +3500,7 @@ class Mission { position[]={26813.803,25.410355,24486.105}; azimut=42; - id=200; + id=207; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3399,7 +3509,7 @@ class Mission { position[]={26819.75,25.650244,24480.889}; azimut=42; - id=201; + id=208; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3408,7 +3518,7 @@ class Mission { position[]={26825.471,25.907431,24475.803}; azimut=42; - id=202; + id=209; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3417,7 +3527,7 @@ class Mission { position[]={26831.461,26.210234,24470.535}; azimut=42; - id=203; + id=210; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3426,7 +3536,7 @@ class Mission { position[]={26837.318,26.558489,24465.314}; azimut=42; - id=204; + id=211; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3435,7 +3545,7 @@ class Mission { position[]={26841.299,26.715721,24461.711}; azimut=42; - id=205; + id=212; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3444,7 +3554,7 @@ class Mission { position[]={26848.191,26.498379,24469.76}; azimut=42; - id=206; + id=213; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3453,7 +3563,7 @@ class Mission { position[]={26867.324,26.16889,24491.773}; azimut=131; - id=207; + id=214; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3462,7 +3572,7 @@ class Mission { position[]={26872.457,26.057894,24497.629}; azimut=131; - id=208; + id=215; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3471,7 +3581,7 @@ class Mission { position[]={26877.721,25.970894,24503.623}; azimut=131; - id=209; + id=216; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3480,7 +3590,7 @@ class Mission { position[]={26882.986,25.970659,24509.619}; azimut=131; - id=210; + id=217; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3489,7 +3599,7 @@ class Mission { position[]={26888.205,26.061222,24515.475}; azimut=131; - id=211; + id=218; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3498,7 +3608,7 @@ class Mission { position[]={26893.457,26.071909,24521.42}; azimut=131; - id=212; + id=219; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3507,7 +3617,7 @@ class Mission { position[]={26898.535,26.090406,24527.309}; azimut=131; - id=213; + id=220; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3516,7 +3626,7 @@ class Mission { position[]={26903.625,25.995604,24533.1}; azimut=131; - id=214; + id=221; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3525,7 +3635,7 @@ class Mission { position[]={26908.693,25.799734,24538.932}; azimut=131; - id=215; + id=222; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3534,7 +3644,7 @@ class Mission { position[]={26913.732,25.75485,24544.697}; azimut=131; - id=216; + id=223; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3543,7 +3653,7 @@ class Mission { position[]={26918.863,25.678379,24550.646}; azimut=131; - id=217; + id=224; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3552,7 +3662,7 @@ class Mission { position[]={26924.084,25.598967,24556.598}; azimut=131; - id=218; + id=225; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3561,7 +3671,7 @@ class Mission { position[]={26929.213,25.367577,24562.457}; azimut=131; - id=219; + id=226; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3570,7 +3680,7 @@ class Mission { position[]={26934.432,25.16185,24568.273}; azimut=131; - id=220; + id=227; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3579,7 +3689,7 @@ class Mission { position[]={26939.643,24.914995,24574.367}; azimut=131; - id=221; + id=228; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3588,7 +3698,7 @@ class Mission { position[]={26944.768,24.723801,24580.27}; azimut=131; - id=222; + id=229; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3597,7 +3707,7 @@ class Mission { position[]={26949.945,24.507494,24586.131}; azimut=131; - id=223; + id=230; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3606,7 +3716,7 @@ class Mission { position[]={26954.982,24.270988,24591.898}; azimut=131; - id=224; + id=231; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3615,7 +3725,7 @@ class Mission { position[]={26959.998,24.078382,24597.666}; azimut=131; - id=225; + id=232; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3624,7 +3734,7 @@ class Mission { position[]={26964.947,23.839434,24603.301}; azimut=131; - id=226; + id=233; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3633,7 +3743,7 @@ class Mission { position[]={26969.887,23.669096,24609.111}; azimut=129; - id=227; + id=234; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3642,7 +3752,7 @@ class Mission { position[]={26974.563,23.547907,24614.879}; azimut=129; - id=228; + id=235; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3651,7 +3761,7 @@ class Mission { position[]={26979.465,23.420652,24620.967}; azimut=129; - id=229; + id=236; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3660,7 +3770,7 @@ class Mission { position[]={26984.383,23.302431,24626.895}; azimut=130; - id=230; + id=237; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3669,7 +3779,7 @@ class Mission { position[]={26989.193,23.168716,24632.617}; azimut=130; - id=231; + id=238; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3678,7 +3788,7 @@ class Mission { position[]={26994.098,23.125713,24638.521}; azimut=130; - id=232; + id=239; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3687,7 +3797,7 @@ class Mission { position[]={26998.549,23.032211,24644.133}; azimut=131; - id=233; + id=240; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3696,7 +3806,7 @@ class Mission { position[]={27003.813,22.944569,24650.127}; azimut=131; - id=234; + id=241; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3705,7 +3815,7 @@ class Mission { position[]={27009.078,22.876373,24656.123}; azimut=131; - id=235; + id=242; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3714,7 +3824,7 @@ class Mission { position[]={27014.297,22.793158,24661.979}; azimut=131; - id=236; + id=243; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3723,7 +3833,7 @@ class Mission { position[]={27019.549,22.733606,24667.924}; azimut=131; - id=237; + id=244; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3732,7 +3842,7 @@ class Mission { position[]={27024.627,22.639164,24673.813}; azimut=131; - id=238; + id=245; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3741,7 +3851,7 @@ class Mission { position[]={27029.717,22.593636,24679.604}; azimut=131; - id=239; + id=246; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3750,7 +3860,7 @@ class Mission { position[]={27034.785,22.531475,24685.436}; azimut=131; - id=240; + id=247; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3759,7 +3869,7 @@ class Mission { position[]={27039.824,22.520269,24691.201}; azimut=131; - id=241; + id=248; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3768,7 +3878,7 @@ class Mission { position[]={27044.955,22.501562,24697.15}; azimut=131; - id=242; + id=249; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3777,7 +3887,7 @@ class Mission { position[]={27050.176,22.527058,24703.102}; azimut=131; - id=243; + id=250; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3786,7 +3896,7 @@ class Mission { position[]={27055.305,22.568148,24708.961}; azimut=131; - id=244; + id=251; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3795,7 +3905,7 @@ class Mission { position[]={27060.523,22.677519,24714.777}; azimut=131; - id=245; + id=252; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3804,7 +3914,7 @@ class Mission { position[]={27065.734,22.804249,24720.871}; azimut=131; - id=246; + id=253; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3813,7 +3923,7 @@ class Mission { position[]={27070.859,22.884298,24726.773}; azimut=131; - id=247; + id=254; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3822,7 +3932,7 @@ class Mission { position[]={27076.037,22.976995,24732.635}; azimut=131; - id=248; + id=255; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3831,7 +3941,7 @@ class Mission { position[]={27081.074,22.916277,24738.402}; azimut=131; - id=249; + id=256; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3840,7 +3950,7 @@ class Mission { position[]={27086.09,22.839939,24744.17}; azimut=131; - id=250; + id=257; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3849,7 +3959,7 @@ class Mission { position[]={27091.039,22.81329,24749.805}; azimut=131; - id=251; + id=258; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3858,7 +3968,7 @@ class Mission { position[]={27095.979,22.816433,24755.615}; azimut=129; - id=252; + id=259; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3867,7 +3977,7 @@ class Mission { position[]={27100.654,22.78149,24761.383}; azimut=129; - id=253; + id=260; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3876,7 +3986,7 @@ class Mission { position[]={27105.557,22.740541,24767.471}; azimut=129; - id=254; + id=261; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3885,7 +3995,7 @@ class Mission { position[]={27110.475,22.69191,24773.398}; azimut=130; - id=255; + id=262; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3894,7 +4004,7 @@ class Mission { position[]={27115.285,22.659792,24779.121}; azimut=130; - id=256; + id=263; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3903,7 +4013,7 @@ class Mission { position[]={27120.189,22.602074,24785.025}; azimut=130; - id=257; + id=264; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3912,7 +4022,7 @@ class Mission { position[]={27124.982,22.553291,24790.326}; azimut=131; - id=258; + id=265; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3921,7 +4031,7 @@ class Mission { position[]={27130.246,22.579947,24796.32}; azimut=131; - id=259; + id=266; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3930,7 +4040,7 @@ class Mission { position[]={27135.512,22.599806,24802.316}; azimut=131; - id=260; + id=267; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3939,7 +4049,7 @@ class Mission { position[]={27140.73,22.612692,24808.172}; azimut=131; - id=261; + id=268; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3948,7 +4058,7 @@ class Mission { position[]={27145.982,22.683754,24814.117}; azimut=131; - id=262; + id=269; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3957,7 +4067,7 @@ class Mission { position[]={27151.061,22.888737,24820.006}; azimut=131; - id=263; + id=270; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3966,7 +4076,7 @@ class Mission { position[]={27156.15,23.137646,24825.797}; azimut=131; - id=264; + id=271; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3975,7 +4085,7 @@ class Mission { position[]={27161.219,23.360374,24831.629}; azimut=131; - id=265; + id=272; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3984,7 +4094,7 @@ class Mission { position[]={27166.258,23.578741,24837.395}; azimut=131; - id=266; + id=273; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3993,7 +4103,7 @@ class Mission { position[]={27171.389,23.751812,24843.344}; azimut=131; - id=267; + id=274; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4002,7 +4112,7 @@ class Mission { position[]={27176.609,23.918591,24849.295}; azimut=131; - id=268; + id=275; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4011,7 +4121,7 @@ class Mission { position[]={27181.738,24.140285,24855.154}; azimut=131; - id=269; + id=276; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4020,7 +4130,7 @@ class Mission { position[]={27186.957,24.380737,24860.971}; azimut=131; - id=270; + id=277; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4029,7 +4139,7 @@ class Mission { position[]={27192.168,24.64662,24867.064}; azimut=131; - id=271; + id=278; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4038,7 +4148,7 @@ class Mission { position[]={27197.293,24.884598,24872.967}; azimut=131; - id=272; + id=279; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4047,7 +4157,7 @@ class Mission { position[]={27202.471,25.076929,24878.828}; azimut=131; - id=273; + id=280; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4056,7 +4166,7 @@ class Mission { position[]={27207.508,25.304981,24884.596}; azimut=131; - id=274; + id=281; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4065,7 +4175,7 @@ class Mission { position[]={27212.523,25.583986,24890.363}; azimut=131; - id=275; + id=282; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4074,7 +4184,7 @@ class Mission { position[]={27217.473,25.804237,24895.998}; azimut=131; - id=276; + id=283; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4083,7 +4193,7 @@ class Mission { position[]={27222.412,26.03685,24901.809}; azimut=129; - id=277; + id=284; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4092,7 +4202,7 @@ class Mission { position[]={27227.088,26.342924,24907.576}; azimut=129; - id=278; + id=285; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4101,7 +4211,7 @@ class Mission { position[]={27231.99,26.66184,24913.664}; azimut=129; - id=279; + id=286; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4110,7 +4220,7 @@ class Mission { position[]={27236.908,26.888828,24919.592}; azimut=130; - id=280; + id=287; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4119,7 +4229,7 @@ class Mission { position[]={26911.383,20.310577,24721.336}; azimut=131; - id=281; + id=288; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4128,7 +4238,7 @@ class Mission { position[]={26915.623,20.318466,24726.201}; azimut=131; - id=282; + id=289; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4137,7 +4247,7 @@ class Mission { position[]={26920.889,20.2661,24732.197}; azimut=131; - id=283; + id=290; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4146,7 +4256,7 @@ class Mission { position[]={26926.107,20.252979,24738.053}; azimut=131; - id=284; + id=291; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4155,7 +4265,7 @@ class Mission { position[]={26931.359,20.199335,24743.998}; azimut=131; - id=285; + id=292; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4164,7 +4274,7 @@ class Mission { position[]={26936.438,20.289927,24749.887}; azimut=131; - id=286; + id=293; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4173,7 +4283,7 @@ class Mission { position[]={26941.527,20.380867,24755.678}; azimut=131; - id=287; + id=294; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4182,7 +4292,7 @@ class Mission { position[]={26946.596,20.466448,24761.51}; azimut=131; - id=288; + id=295; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4191,7 +4301,7 @@ class Mission { position[]={26951.635,20.546368,24767.275}; azimut=131; - id=289; + id=296; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4200,7 +4310,7 @@ class Mission { position[]={26956.766,20.691349,24773.225}; azimut=131; - id=290; + id=297; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4209,7 +4319,7 @@ class Mission { position[]={26961.986,20.762905,24779.176}; azimut=131; - id=291; + id=298; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4218,7 +4328,7 @@ class Mission { position[]={26967.115,20.738791,24785.035}; azimut=131; - id=292; + id=299; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4227,7 +4337,7 @@ class Mission { position[]={26972.334,20.732651,24790.852}; azimut=131; - id=293; + id=300; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4236,7 +4346,7 @@ class Mission { position[]={26977.545,20.753572,24796.945}; azimut=131; - id=294; + id=301; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4245,7 +4355,7 @@ class Mission { position[]={26982.67,20.872278,24802.848}; azimut=131; - id=295; + id=302; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4254,7 +4364,7 @@ class Mission { position[]={26987.848,21.078085,24808.709}; azimut=131; - id=296; + id=303; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4263,7 +4373,7 @@ class Mission { position[]={26992.885,21.255266,24814.477}; azimut=131; - id=297; + id=304; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4272,7 +4382,7 @@ class Mission { position[]={26997.9,21.405054,24820.244}; azimut=131; - id=298; + id=305; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4281,7 +4391,7 @@ class Mission { position[]={27002.85,21.514683,24825.879}; azimut=131; - id=299; + id=306; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4290,7 +4400,7 @@ class Mission { position[]={27007.789,21.667664,24831.689}; azimut=129; - id=300; + id=307; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4299,7 +4409,7 @@ class Mission { position[]={27012.465,21.917414,24837.457}; azimut=129; - id=301; + id=308; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4308,7 +4418,7 @@ class Mission { position[]={27017.367,22.3155,24843.545}; azimut=129; - id=302; + id=309; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4317,7 +4427,7 @@ class Mission { position[]={27022.285,22.602488,24849.473}; azimut=130; - id=303; + id=310; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4326,7 +4436,7 @@ class Mission { position[]={27027.096,22.806007,24855.195}; azimut=130; - id=304; + id=311; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4335,7 +4445,7 @@ class Mission { position[]={27032,22.939093,24861.1}; azimut=130; - id=305; + id=312; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4344,7 +4454,7 @@ class Mission { position[]={27037.051,23.122993,24866.682}; azimut=131; - id=306; + id=313; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4353,7 +4463,7 @@ class Mission { position[]={27042.486,23.302736,24872.678}; azimut=131; - id=307; + id=314; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4362,7 +4472,7 @@ class Mission { position[]={27047.82,23.371313,24878.596}; azimut=131; - id=308; + id=315; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4371,7 +4481,7 @@ class Mission { position[]={27053.211,23.42511,24884.451}; azimut=131; - id=309; + id=316; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4380,7 +4490,7 @@ class Mission { position[]={27058.461,23.537548,24890.225}; azimut=131; - id=310; + id=317; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4389,7 +4499,7 @@ class Mission { position[]={27063.656,23.660736,24896.055}; azimut=131; - id=311; + id=318; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4398,7 +4508,7 @@ class Mission { position[]={27068.918,23.764055,24901.557}; azimut=131; - id=312; + id=319; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4407,7 +4517,7 @@ class Mission { position[]={27073.986,23.903282,24907.389}; azimut=131; - id=313; + id=320; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4416,7 +4526,7 @@ class Mission { position[]={27079.025,24.034636,24913.154}; azimut=131; - id=314; + id=321; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4425,7 +4535,7 @@ class Mission { position[]={27084.156,24.206724,24919.104}; azimut=131; - id=315; + id=322; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4434,7 +4544,7 @@ class Mission { position[]={27089.377,24.361795,24925.055}; azimut=131; - id=316; + id=323; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4443,7 +4553,7 @@ class Mission { position[]={27094.506,24.547764,24930.914}; azimut=131; - id=317; + id=324; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4452,7 +4562,7 @@ class Mission { position[]={27099.725,24.670773,24936.73}; azimut=131; - id=318; + id=325; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4461,7 +4571,7 @@ class Mission { position[]={27104.936,24.744146,24942.824}; azimut=131; - id=319; + id=326; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4470,7 +4580,7 @@ class Mission { position[]={27110.061,24.759069,24948.727}; azimut=131; - id=320; + id=327; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4479,7 +4589,7 @@ class Mission { position[]={27115.238,24.754801,24954.588}; azimut=131; - id=321; + id=328; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4488,7 +4598,7 @@ class Mission { position[]={27120.275,24.743135,24960.355}; azimut=131; - id=322; + id=329; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4497,7 +4607,7 @@ class Mission { position[]={27125.291,24.611444,24966.123}; azimut=131; - id=323; + id=330; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4506,7 +4616,7 @@ class Mission { position[]={27130.24,24.477238,24971.758}; azimut=131; - id=324; + id=331; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4515,7 +4625,7 @@ class Mission { position[]={27135.18,24.425842,24977.568}; azimut=129; - id=325; + id=332; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4524,7 +4634,7 @@ class Mission { position[]={27139.855,24.455009,24983.336}; azimut=129; - id=326; + id=333; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4533,7 +4643,7 @@ class Mission { position[]={27144.758,24.476776,24989.424}; azimut=129; - id=327; + id=334; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4542,7 +4652,7 @@ class Mission { position[]={27149.676,24.446703,24995.352}; azimut=130; - id=328; + id=335; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4551,7 +4661,7 @@ class Mission { position[]={27154.486,24.357185,25001.074}; azimut=130; - id=329; + id=336; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4560,7 +4670,7 @@ class Mission { position[]={27158.758,24.122019,25006.242}; azimut=130; - id=330; + id=337; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4569,7 +4679,7 @@ class Mission { position[]={26757.533,18.530378,24702.711}; azimut=40; - id=331; + id=338; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4578,7 +4688,7 @@ class Mission { position[]={26762.852,19.016323,24698.256}; azimut=40; - id=332; + id=339; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4587,7 +4697,7 @@ class Mission { position[]={26771.318,18.572186,24703.777}; azimut=130; - id=333; + id=340; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4596,7 +4706,7 @@ class Mission { position[]={26776.537,18.482143,24705.404}; azimut=40; - id=334; + id=341; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4605,7 +4715,7 @@ class Mission { position[]={26782.381,18.893139,24700.438}; azimut=40; - id=335; + id=342; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4614,7 +4724,7 @@ class Mission { position[]={26788.217,19.338865,24695.418}; azimut=40; - id=336; + id=343; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4623,7 +4733,7 @@ class Mission { position[]={26793.797,19.604189,24690.607}; azimut=40; - id=337; + id=344; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4632,7 +4742,7 @@ class Mission { position[]={26799.631,19.851816,24685.691}; azimut=40; - id=338; + id=345; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4641,7 +4751,7 @@ class Mission { position[]={26805.871,20.243877,24680.418}; azimut=40; - id=339; + id=346; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4650,7 +4760,7 @@ class Mission { position[]={26811.805,20.58449,24679.453}; azimut=338; - id=340; + id=347; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4659,7 +4769,7 @@ class Mission { position[]={26817.385,20.728291,24681.738}; azimut=338; - id=341; + id=348; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4668,7 +4778,7 @@ class Mission { position[]={26824.863,20.753666,24684.656}; azimut=338; - id=342; + id=349; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4677,7 +4787,7 @@ class Mission { position[]={26832.178,20.828703,24687.523}; azimut=338; - id=343; + id=350; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4686,7 +4796,7 @@ class Mission { position[]={26839.596,20.889597,24690.496}; azimut=338; - id=344; + id=351; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4695,7 +4805,7 @@ class Mission { position[]={26846.814,20.885517,24693.463}; azimut=338; - id=345; + id=352; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4704,7 +4814,7 @@ class Mission { position[]={26854.287,20.995777,24696.484}; azimut=338; - id=346; + id=353; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4713,7 +4823,7 @@ class Mission { position[]={26861.504,20.972878,24699.352}; azimut=338; - id=347; + id=354; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4722,7 +4832,7 @@ class Mission { position[]={26868.822,20.862839,24702.271}; azimut=338; - id=348; + id=355; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4731,7 +4841,7 @@ class Mission { position[]={26875.896,20.877035,24705.063}; azimut=338; - id=349; + id=356; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4740,7 +4850,7 @@ class Mission { position[]={26883.061,20.712994,24707.932}; azimut=338; - id=350; + id=357; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4749,7 +4859,7 @@ class Mission { position[]={26889.92,20.676723,24710.799}; azimut=338; - id=351; + id=358; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4758,7 +4868,7 @@ class Mission { position[]={26897.137,20.607569,24713.82}; azimut=338; - id=352; + id=359; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4767,7 +4877,7 @@ class Mission { position[]={26904.762,20.454643,24716.941}; azimut=338; - id=353; + id=360; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4776,7 +4886,7 @@ class Mission { position[]={27236.834,27.019085,24924.313}; azimut=48; - id=354; + id=361; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4785,7 +4895,7 @@ class Mission { position[]={27231.756,26.981491,24929.971}; azimut=48; - id=355; + id=362; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4794,7 +4904,7 @@ class Mission { position[]={27226.738,26.676661,24935.514}; azimut=48; - id=356; + id=363; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4803,7 +4913,7 @@ class Mission { position[]={27221.484,26.215664,24941.33}; azimut=48; - id=357; + id=364; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4812,7 +4922,7 @@ class Mission { position[]={27216.227,25.762321,24947.223}; azimut=48; - id=358; + id=365; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4821,7 +4931,7 @@ class Mission { position[]={27210.969,25.543297,24953.113}; azimut=48; - id=359; + id=366; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4830,7 +4940,7 @@ class Mission { position[]={27205.715,25.418421,24959.002}; azimut=48; - id=360; + id=367; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4839,7 +4949,7 @@ class Mission { position[]={27200.354,25.260889,24964.684}; azimut=48; - id=361; + id=368; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4848,7 +4958,7 @@ class Mission { position[]={27195.1,25.11409,24970.471}; azimut=48; - id=362; + id=369; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4857,7 +4967,7 @@ class Mission { position[]={27189.732,25.052525,24976.254}; azimut=48; - id=363; + id=370; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4866,7 +4976,7 @@ class Mission { position[]={27184.371,25.0184,24981.936}; azimut=48; - id=364; + id=371; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4875,7 +4985,7 @@ class Mission { position[]={27179.115,24.908602,24987.721}; azimut=48; - id=365; + id=372; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4884,7 +4994,7 @@ class Mission { position[]={27174.172,24.756964,24993.191}; azimut=48; - id=366; + id=373; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4893,7 +5003,7 @@ class Mission { position[]={27168.918,24.538374,24998.975}; azimut=48; - id=367; + id=374; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4902,7 +5012,7 @@ class Mission { position[]={27163.973,24.258104,25004.762}; azimut=48; - id=368; + id=375; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4911,7 +5021,7 @@ class Mission { position[]={26754.9,23.227198,24534.602}; azimut=130; - id=369; + id=376; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4920,7 +5030,7 @@ class Mission { position[]={26749.832,23.254463,24528.609}; azimut=130; - id=370; + id=377; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4929,7 +5039,7 @@ class Mission { position[]={26745.006,23.238129,24522.902}; azimut=130; - id=371; + id=378; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4938,7 +5048,7 @@ class Mission { position[]={26740.191,23.177996,24517.176}; azimut=130; - id=372; + id=379; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4947,7 +5057,7 @@ class Mission { position[]={26735.377,23.067152,24511.578}; azimut=130; - id=373; + id=380; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4956,7 +5066,7 @@ class Mission { position[]={26730.434,22.905687,24505.588}; azimut=130; - id=374; + id=381; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4965,7 +5075,7 @@ class Mission { position[]={26725.424,22.724735,24499.6}; azimut=130; - id=375; + id=382; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4974,7 +5084,7 @@ class Mission { position[]={26721.242,22.527798,24499.324}; azimut=40; - id=376; + id=383; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4983,7 +5093,7 @@ class Mission { position[]={26715.25,22.295599,24504.318}; azimut=40; - id=377; + id=384; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4992,7 +5102,7 @@ class Mission { position[]={26709.313,22.097647,24509.381}; azimut=40; - id=378; + id=385; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5001,7 +5111,7 @@ class Mission { position[]={26703.49,21.973309,24514.27}; azimut=40; - id=379; + id=386; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5010,7 +5120,7 @@ class Mission { position[]={26697.258,21.843426,24519.334}; azimut=40; - id=380; + id=387; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5019,7 +5129,7 @@ class Mission { position[]={26691.607,21.693287,24524.18}; azimut=40; - id=381; + id=388; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5028,7 +5138,7 @@ class Mission { position[]={26685.559,21.438457,24529.221}; azimut=40; - id=382; + id=389; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5037,7 +5147,7 @@ class Mission { position[]={26705.652,21.965303,24553.713}; azimut=40; - id=383; + id=390; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5046,7 +5156,7 @@ class Mission { position[]={26701.887,21.82918,24556.938}; azimut=40; - id=384; + id=391; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5055,7 +5165,7 @@ class Mission { position[]={26687.59,21.212294,24568.975}; azimut=40; - id=385; + id=392; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5064,7 +5174,7 @@ class Mission { position[]={26681.484,20.9252,24574.252}; azimut=40; - id=386; + id=393; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5073,7 +5183,7 @@ class Mission { position[]={26639.057,19.024429,24575.133}; azimut=130; - id=387; + id=394; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5082,7 +5192,7 @@ class Mission { position[]={26679.477,21.104219,24534.299}; azimut=40; - id=388; + id=395; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5091,7 +5201,7 @@ class Mission { position[]={26673.488,20.820801,24539.369}; azimut=40; - id=389; + id=396; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5100,7 +5210,7 @@ class Mission { position[]={26667.5,20.579432,24544.41}; azimut=40; - id=390; + id=397; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5109,7 +5219,7 @@ class Mission { position[]={26661.461,20.358904,24549.451}; azimut=40; - id=391; + id=398; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5118,7 +5228,7 @@ class Mission { position[]={26643.219,19.401995,24564.986}; azimut=40; - id=392; + id=399; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5127,7 +5237,7 @@ class Mission { position[]={26751.969,22.6106,24555.09}; azimut=105; - id=393; + id=400; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5136,7 +5246,7 @@ class Mission { position[]={26754.104,22.38545,24562.676}; azimut=105; - id=394; + id=401; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5145,7 +5255,7 @@ class Mission { position[]={26739.623,22.052719,24567.219}; azimut=105; - id=395; + id=402; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5154,7 +5264,7 @@ class Mission { position[]={26756.102,22.201479,24569.941}; azimut=105; - id=396; + id=403; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5163,7 +5273,7 @@ class Mission { position[]={26758.252,22.104448,24577.791}; azimut=105; - id=397; + id=404; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5172,7 +5282,7 @@ class Mission { position[]={26760.438,22.185312,24585.545}; azimut=105; - id=398; + id=405; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5181,7 +5291,7 @@ class Mission { position[]={26762.621,22.143852,24593.322}; azimut=105; - id=399; + id=406; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5190,7 +5300,7 @@ class Mission { position[]={26764.924,22.071524,24601.098}; azimut=105; - id=400; + id=407; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5199,7 +5309,7 @@ class Mission { position[]={26767.111,21.964348,24608.816}; azimut=105; - id=401; + id=408; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5208,7 +5318,7 @@ class Mission { position[]={26769.354,21.840157,24616.746}; azimut=105; - id=402; + id=409; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5217,7 +5327,7 @@ class Mission { position[]={26729.139,21.387865,24576.461}; azimut=130; - id=403; + id=410; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5226,7 +5336,7 @@ class Mission { position[]={26715.51,21.856211,24565.287}; azimut=40; - id=404; + id=411; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5235,7 +5345,7 @@ class Mission { position[]={26709.508,21.61656,24570.08}; azimut=40; - id=405; + id=412; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5244,7 +5354,7 @@ class Mission { position[]={26703.508,21.350954,24575.16}; azimut=40; - id=406; + id=413; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5253,7 +5363,7 @@ class Mission { position[]={26697.506,21.08437,24580.242}; azimut=40; - id=407; + id=414; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5262,7 +5372,7 @@ class Mission { position[]={26691.213,20.808163,24585.264}; azimut=40; - id=408; + id=415; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5271,7 +5381,7 @@ class Mission { position[]={26684.996,20.510431,24590.541}; azimut=40; - id=409; + id=416; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5280,7 +5390,7 @@ class Mission { position[]={26657.887,19.523048,24597.545}; azimut=130; - id=410; + id=417; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5289,7 +5399,7 @@ class Mission { position[]={26662.793,19.484375,24603.26}; azimut=130; - id=411; + id=418; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5298,7 +5408,7 @@ class Mission { position[]={26729.83,22.285027,24556.725}; azimut=40; - id=412; + id=419; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5307,7 +5417,7 @@ class Mission { position[]={26643.846,19.219412,24580.906}; azimut=130; - id=413; + id=420; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5316,7 +5426,7 @@ class Mission { position[]={26648.537,19.384808,24586.389}; azimut=130; - id=414; + id=421; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5325,7 +5435,7 @@ class Mission { position[]={26652.809,19.476467,24591.482}; azimut=130; - id=415; + id=422; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5334,7 +5444,7 @@ class Mission { position[]={26666.477,19.396427,24607.73}; azimut=130; - id=416; + id=423; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5343,7 +5453,7 @@ class Mission { position[]={26672.672,20.409813,24585.066}; azimut=130; - id=417; + id=424; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5352,7 +5462,7 @@ class Mission { position[]={26677.816,20.350107,24591.236}; azimut=130; - id=418; + id=425; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5361,7 +5471,7 @@ class Mission { position[]={26705.396,22.029596,24548.328}; azimut=130; - id=419; + id=426; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5370,7 +5480,7 @@ class Mission { position[]={26693.109,21.751245,24526.834}; azimut=130; - id=420; + id=427; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5379,7 +5489,7 @@ class Mission { position[]={26741.707,21.77603,24574.705}; azimut=105; - id=421; + id=428; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5388,7 +5498,7 @@ class Mission { position[]={26743.793,21.416069,24582.387}; azimut=105; - id=422; + id=429; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5397,7 +5507,7 @@ class Mission { position[]={26745.875,21.105661,24589.941}; azimut=105; - id=423; + id=430; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5406,7 +5516,7 @@ class Mission { position[]={26747.893,20.971319,24597.361}; azimut=105; - id=424; + id=431; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5415,7 +5525,7 @@ class Mission { position[]={26749.713,20.990934,24604.131}; azimut=105; - id=425; + id=432; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5424,7 +5534,7 @@ class Mission { position[]={26751.602,20.856359,24611.158}; azimut=105; - id=426; + id=433; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5433,7 +5543,7 @@ class Mission { position[]={26753.203,20.788649,24617.879}; azimut=105; - id=427; + id=434; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5442,7 +5552,7 @@ class Mission { position[]={26768.191,21.634184,24622.971}; azimut=40; - id=428; + id=435; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5451,7 +5561,7 @@ class Mission { position[]={26762.109,20.982016,24628.1}; azimut=40; - id=429; + id=436; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5460,7 +5570,7 @@ class Mission { position[]={26755.986,20.626633,24633.232}; azimut=40; - id=430; + id=437; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5469,7 +5579,7 @@ class Mission { position[]={26749.898,20.552198,24638.41}; azimut=40; - id=431; + id=438; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5478,7 +5588,7 @@ class Mission { position[]={26743.59,20.627979,24643.678}; azimut=40; - id=432; + id=439; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5487,7 +5597,7 @@ class Mission { position[]={26737.557,20.714441,24648.766}; azimut=40; - id=433; + id=440; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5496,7 +5606,7 @@ class Mission { position[]={26731.334,20.546713,24653.855}; azimut=40; - id=434; + id=441; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5505,7 +5615,7 @@ class Mission { position[]={26688.305,18.880514,24644.002}; azimut=40; - id=435; + id=442; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5514,7 +5624,7 @@ class Mission { position[]={26694.75,19.420786,24638.598}; azimut=40; - id=436; + id=443; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5523,7 +5633,7 @@ class Mission { position[]={26701.205,19.764318,24633.238}; azimut=40; - id=437; + id=444; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5532,7 +5642,7 @@ class Mission { position[]={26751.383,20.589741,24623.412}; azimut=40; - id=438; + id=445; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5541,7 +5651,7 @@ class Mission { position[]={26745.271,20.481247,24628.633}; azimut=40; - id=439; + id=446; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5550,7 +5660,7 @@ class Mission { position[]={26739.09,20.556242,24633.705}; azimut=40; - id=440; + id=447; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5559,7 +5669,7 @@ class Mission { position[]={26709.453,19.765211,24626.348}; azimut=40; - id=441; + id=448; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5568,7 +5678,7 @@ class Mission { position[]={26715.131,19.836035,24621.459}; azimut=40; - id=442; + id=449; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5577,7 +5687,7 @@ class Mission { position[]={26737.615,20.611807,24598.479}; azimut=105; - id=443; + id=450; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5586,7 +5696,7 @@ class Mission { position[]={26735.711,20.738367,24591.393}; azimut=105; - id=444; + id=451; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5595,7 +5705,7 @@ class Mission { position[]={26736.076,20.535934,24603.951}; azimut=40; - id=445; + id=452; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5604,7 +5714,7 @@ class Mission { position[]={26731.945,20.52726,24603.467}; azimut=130; - id=446; + id=453; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5613,7 +5723,7 @@ class Mission { position[]={26726.82,20.576736,24597.291}; azimut=130; - id=447; + id=454; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5622,7 +5732,7 @@ class Mission { position[]={26721.689,20.650381,24591.301}; azimut=130; - id=448; + id=455; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5631,7 +5741,7 @@ class Mission { position[]={26719.191,20.72835,24588.303}; azimut=130; - id=449; + id=456; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5640,7 +5750,7 @@ class Mission { position[]={26716.107,20.093296,24616.869}; azimut=130; - id=450; + id=457; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5649,7 +5759,7 @@ class Mission { position[]={26711.385,20.183964,24611.238}; azimut=130; - id=451; + id=458; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5658,7 +5768,7 @@ class Mission { position[]={26706.348,20.141411,24605.154}; azimut=130; - id=452; + id=459; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5667,7 +5777,7 @@ class Mission { position[]={26701.492,20.190041,24599.432}; azimut=130; - id=453; + id=460; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5676,7 +5786,7 @@ class Mission { position[]={26774.969,19.319693,24689.727}; azimut=220; - id=454; + id=461; side="EMPTY"; vehicle="Land_Medevac_HQ_V1_F"; skill=0.60000002; @@ -5689,7 +5799,7 @@ class Mission position[]={26722.211,19.779617,24637.773}; azimut=40; offsetY=-0.41000399; - id=455; + id=462; side="EMPTY"; vehicle="BlockConcrete_F"; skill=0.60000002; @@ -5699,7 +5809,7 @@ class Mission position[]={26719.039,19.809465,24633.848}; azimut=40; offsetY=-0.41000399; - id=456; + id=463; side="EMPTY"; vehicle="BlockConcrete_F"; skill=0.60000002; @@ -5709,7 +5819,7 @@ class Mission position[]={26715.807,19.781178,24629.922}; azimut=40; offsetY=-0.41000399; - id=457; + id=464; side="EMPTY"; vehicle="BlockConcrete_F"; skill=0.60000002; @@ -5719,7 +5829,7 @@ class Mission position[]={26715.125,19.770168,24643.746}; azimut=40; offsetY=-0.41000399; - id=458; + id=465; side="EMPTY"; vehicle="BlockConcrete_F"; skill=0.60000002; @@ -5729,7 +5839,7 @@ class Mission position[]={26711.953,19.77,24639.82}; azimut=40; offsetY=-0.41000399; - id=459; + id=466; side="EMPTY"; vehicle="BlockConcrete_F"; skill=0.60000002; @@ -5739,7 +5849,7 @@ class Mission position[]={26708.721,19.769491,24635.895}; azimut=40; offsetY=-0.41000399; - id=460; + id=467; side="EMPTY"; vehicle="BlockConcrete_F"; skill=0.60000002; @@ -5749,7 +5859,7 @@ class Mission position[]={26728.863,20.086231,24631.604}; azimut=130; offsetY=0.2; - id=461; + id=468; side="EMPTY"; vehicle="Land_RampConcrete_F"; skill=0.60000002; @@ -5758,7 +5868,7 @@ class Mission { position[]={26689.299,19.729982,24609.551}; azimut=220; - id=462; + id=469; side="EMPTY"; vehicle="Target_F"; skill=0.60000002; @@ -5767,7 +5877,7 @@ class Mission { position[]={26688.359,19.699425,24610.385}; azimut=220; - id=463; + id=470; side="EMPTY"; vehicle="Target_F"; skill=0.60000002; @@ -5776,7 +5886,7 @@ class Mission { position[]={26687.389,19.672573,24611.092}; azimut=220; - id=464; + id=471; side="EMPTY"; vehicle="Target_F"; skill=0.60000002; @@ -5785,7 +5895,7 @@ class Mission { position[]={26686.451,19.643372,24611.881}; azimut=220; - id=465; + id=472; side="EMPTY"; vehicle="Target_F"; skill=0.60000002; @@ -5794,7 +5904,7 @@ class Mission { position[]={26688.523,19.690983,24610.688}; azimut=220; - id=466; + id=473; side="EMPTY"; vehicle="Target_F"; skill=0.60000002; @@ -5803,7 +5913,7 @@ class Mission { position[]={26687.586,19.661835,24611.477}; azimut=220; - id=467; + id=474; side="EMPTY"; vehicle="Target_F"; skill=0.60000002; @@ -5812,7 +5922,7 @@ class Mission { position[]={26686.799,19.635906,24612.184}; azimut=220; - id=468; + id=475; side="EMPTY"; vehicle="Target_F"; skill=0.60000002; @@ -5821,7 +5931,7 @@ class Mission { position[]={26685.861,19.606705,24612.973}; azimut=220; - id=469; + id=476; side="EMPTY"; vehicle="Target_F"; skill=0.60000002; @@ -5830,7 +5940,7 @@ class Mission { position[]={26685.262,19.690941,24610.123}; azimut=220; - id=470; + id=477; side="EMPTY"; vehicle="Land_CncWall4_F"; skill=0.60000002; @@ -5839,7 +5949,7 @@ class Mission { position[]={26689.168,19.805126,24606.854}; azimut=220; - id=471; + id=478; side="EMPTY"; vehicle="Land_CncWall4_F"; skill=0.60000002; @@ -5848,7 +5958,7 @@ class Mission { position[]={26699.342,19.73967,24627.666}; azimut=220; - id=472; + id=479; side="EMPTY"; vehicle="Land_BagFence_Long_F"; skill=0.60000002; @@ -5857,7 +5967,7 @@ class Mission { position[]={26699.922,19.750288,24628.352}; azimut=130; - id=473; + id=480; side="EMPTY"; vehicle="Land_BagFence_Short_F"; skill=0.60000002; @@ -5867,7 +5977,7 @@ class Mission position[]={26705.822,19.760725,24630.543}; azimut=220; offsetY=2; - id=474; + id=481; side="EMPTY"; vehicle="Land_Billboard_F"; skill=0.60000002; @@ -5877,7 +5987,7 @@ class Mission { position[]={26733.902,20.970509,24584.654}; azimut=105; - id=475; + id=482; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5886,7 +5996,7 @@ class Mission { position[]={26730.316,21.315418,24577.793}; azimut=130; - id=476; + id=483; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5895,7 +6005,7 @@ class Mission { position[]={26728.279,21.849081,24569.846}; azimut=40; - id=477; + id=484; side="EMPTY"; vehicle="Land_HBarrier_1_F"; skill=0.60000002; @@ -5904,7 +6014,7 @@ class Mission { position[]={26730.23,21.922422,24568.209}; azimut=40; - id=478; + id=485; side="EMPTY"; vehicle="Land_HBarrier_1_F"; skill=0.60000002; @@ -5913,7 +6023,7 @@ class Mission { position[]={26721.561,22.028906,24561.854}; azimut=40; - id=479; + id=486; side="EMPTY"; vehicle="Land_HBarrier_1_F"; skill=0.60000002; @@ -5922,7 +6032,7 @@ class Mission { position[]={26724.102,22.110918,24560.127}; azimut=40; - id=480; + id=487; side="EMPTY"; vehicle="Land_HBarrier_1_F"; skill=0.60000002; @@ -5931,7 +6041,7 @@ class Mission { position[]={26723.801,22.240976,24555.557}; azimut=130; - id=481; + id=488; side="EMPTY"; vehicle="Land_BagFence_Long_F"; skill=0.60000002; @@ -5940,7 +6050,7 @@ class Mission { position[]={26720.705,22.287214,24551.543}; azimut=130; - id=482; + id=489; side="EMPTY"; vehicle="Land_BagFence_Long_F"; skill=0.60000002; @@ -5949,7 +6059,7 @@ class Mission { position[]={26717.49,22.295473,24547.91}; azimut=130; - id=483; + id=490; side="EMPTY"; vehicle="Land_BagFence_Long_F"; skill=0.60000002; @@ -5958,7 +6068,7 @@ class Mission { position[]={26711.395,22.260801,24540.74}; azimut=130; - id=484; + id=491; side="EMPTY"; vehicle="Land_BagFence_Long_F"; skill=0.60000002; @@ -5967,7 +6077,7 @@ class Mission { position[]={26714.371,22.28384,24544.277}; azimut=130; - id=485; + id=492; side="EMPTY"; vehicle="Land_BagFence_Long_F"; skill=0.60000002; @@ -5976,7 +6086,7 @@ class Mission { position[]={26705.451,22.090223,24542.871}; azimut=40; - id=486; + id=493; side="EMPTY"; vehicle="Land_BagFence_Short_F"; skill=0.60000002; @@ -5985,7 +6095,7 @@ class Mission { position[]={26708.174,22.179245,24540.736}; azimut=40; - id=487; + id=494; side="EMPTY"; vehicle="Land_BagFence_Short_F"; skill=0.60000002; @@ -5994,40 +6104,40 @@ class Mission { position[]={26720.295,20.300781,24614.643}; azimut=40; - id=488; + id=495; side="EMPTY"; vehicle="Land_CargoBox_V1_F"; skill=0.60000002; text="arsenal1"; - init="this allowDamage false; this enableSimulation false;"; + init="this allowDamage false; this enableSimulation false;0 = [""AmmoboxInit"",[this,true]] spawn BIS_fnc_arsenal;"; }; class Item403 { position[]={26724.336,20.422735,24611.102}; azimut=40; - id=489; + id=496; side="EMPTY"; vehicle="Land_CargoBox_V1_F"; skill=0.60000002; text="arsenal2"; - init="this allowDamage false; this enableSimulation false;"; + init="this allowDamage false; this enableSimulation false;0 = [""AmmoboxInit"",[this,true]] spawn BIS_fnc_arsenal;"; }; class Item404 { position[]={26728.24,20.482685,24607.891}; azimut=40; - id=490; + id=497; side="EMPTY"; vehicle="Land_CargoBox_V1_F"; skill=0.60000002; text="arsenal3"; - init="this allowDamage false; this enableSimulation false;"; + init="this allowDamage false; this enableSimulation false;0 = [""AmmoboxInit"",[this,true]] spawn BIS_fnc_arsenal;"; }; class Item405 { position[]={26711.18,22.0415,24555.324}; azimut=130; - id=491; + id=498; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6036,7 +6146,7 @@ class Mission { position[]={26715.658,21.985126,24561.012}; azimut=130; - id=492; + id=499; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6045,7 +6155,7 @@ class Mission { position[]={26635.701,17.184708,24634.008}; azimut=130; - id=493; + id=500; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6054,7 +6164,7 @@ class Mission { position[]={26644.895,17.18264,24644.811}; azimut=130; - id=494; + id=501; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6063,7 +6173,7 @@ class Mission { position[]={26630.865,17.066372,24627.996}; azimut=130; - id=495; + id=502; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6072,7 +6182,7 @@ class Mission { position[]={26625.508,17.049635,24621.688}; azimut=130; - id=496; + id=503; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6081,7 +6191,7 @@ class Mission { position[]={26649.494,17.030989,24650.234}; azimut=130; - id=497; + id=504; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6090,7 +6200,7 @@ class Mission { position[]={26621.303,16.868399,24621.418}; azimut=40; - id=498; + id=505; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6099,7 +6209,7 @@ class Mission { position[]={26615.266,16.395088,24626.688}; azimut=40; - id=499; + id=506; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6108,7 +6218,7 @@ class Mission { position[]={26609.273,15.972892,24631.91}; azimut=40; - id=500; + id=507; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6117,7 +6227,7 @@ class Mission { position[]={26603.371,15.399126,24637.041}; azimut=40; - id=501; + id=508; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6126,7 +6236,7 @@ class Mission { position[]={26603.129,15.072895,24641.246}; azimut=130; - id=502; + id=509; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6135,7 +6245,7 @@ class Mission { position[]={26607.986,15.285261,24646.969}; azimut=130; - id=503; + id=510; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6144,7 +6254,7 @@ class Mission { position[]={26609.777,15.251042,24649.406}; azimut=130; - id=504; + id=511; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6153,7 +6263,7 @@ class Mission { position[]={26604.346,14.725122,24661.525}; azimut=130; - id=505; + id=512; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6162,7 +6272,7 @@ class Mission { position[]={26640.527,15.845091,24671.23}; azimut=130; - id=506; + id=513; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6171,7 +6281,7 @@ class Mission { position[]={26664.287,18.616407,24624.213}; azimut=40; - id=507; + id=514; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6180,7 +6290,7 @@ class Mission { position[]={26658.387,18.233953,24629.162}; azimut=40; - id=508; + id=515; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6189,7 +6299,7 @@ class Mission { position[]={26652.305,17.769665,24634.156}; azimut=40; - id=509; + id=516; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6198,7 +6308,7 @@ class Mission { position[]={26646.402,17.444954,24639.197}; azimut=40; - id=510; + id=517; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6207,7 +6317,7 @@ class Mission { position[]={26641.637,17.471817,24633.43}; azimut=40; - id=511; + id=518; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6216,7 +6326,7 @@ class Mission { position[]={26647.809,17.856424,24628.164}; azimut=40; - id=512; + id=519; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6225,7 +6335,7 @@ class Mission { position[]={26653.756,18.302242,24623.125}; azimut=40; - id=513; + id=520; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6234,7 +6344,7 @@ class Mission { position[]={26659.793,18.745361,24617.99}; azimut=40; - id=514; + id=521; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6243,7 +6353,7 @@ class Mission { position[]={26665.965,19.148048,24612.949}; azimut=40; - id=515; + id=522; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6252,7 +6362,7 @@ class Mission { position[]={26655.859,16.85203,24666.896}; azimut=40; - id=516; + id=523; side="EMPTY"; vehicle="Land_Cargo20_brick_red_F"; skill=0.60000002; @@ -6263,7 +6373,7 @@ class Mission position[]={26654.176,16.718538,24668.332}; azimut=40; offsetY=2.5999999; - id=517; + id=524; side="EMPTY"; vehicle="Land_Cargo20_cyan_F"; skill=0.60000002; @@ -6273,7 +6383,7 @@ class Mission { position[]={26651.035,16.35528,24670.83}; azimut=40; - id=518; + id=525; side="EMPTY"; vehicle="Land_Cargo20_military_green_F"; skill=0.60000002; @@ -6283,7 +6393,7 @@ class Mission { position[]={26648.371,15.976167,24673.711}; azimut=40; - id=519; + id=526; side="EMPTY"; vehicle="Land_CargoBox_V1_F"; skill=0.60000002; @@ -6293,7 +6403,7 @@ class Mission { position[]={26647.416,16.050579,24672.484}; azimut=40; - id=520; + id=527; side="EMPTY"; vehicle="Land_CargoBox_V1_F"; skill=0.60000002; @@ -6303,7 +6413,7 @@ class Mission { position[]={26647.635,15.849356,24674.744}; azimut=40; - id=521; + id=528; side="EMPTY"; vehicle="Flag_NATO_F"; skill=0.60000002; @@ -6314,7 +6424,7 @@ class Mission { position[]={26617.756,16.159132,24635.441}; azimut=130; - id=522; + id=529; side="EMPTY"; vehicle="B_Truck_01_ammo_F"; skill=0.60000002; @@ -6323,7 +6433,7 @@ class Mission class Item437 { position[]={26632.08,17.02359,24633.594}; - id=523; + id=530; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; @@ -6331,7 +6441,7 @@ class Mission class Item438 { position[]={26629.631,16.896288,24633.594}; - id=524; + id=531; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; @@ -6339,7 +6449,7 @@ class Mission class Item439 { position[]={26627.088,16.76556,24633.549}; - id=525; + id=532; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; @@ -6347,7 +6457,7 @@ class Mission class Item440 { position[]={26624.637,16.635166,24633.549}; - id=526; + id=533; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; @@ -6356,7 +6466,7 @@ class Mission { position[]={26622.459,16.476292,24634.363}; azimut=40; - id=527; + id=534; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; @@ -6365,7 +6475,7 @@ class Mission { position[]={26620.508,16.30262,24635.996}; azimut=40; - id=528; + id=535; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; @@ -6374,7 +6484,7 @@ class Mission { position[]={26618.465,16.123018,24637.633}; azimut=40; - id=529; + id=536; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; @@ -6383,7 +6493,7 @@ class Mission { position[]={26616.467,15.960167,24639.223}; azimut=40; - id=530; + id=537; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; @@ -6392,7 +6502,7 @@ class Mission { position[]={26615.309,15.837539,24641.145}; azimut=80; - id=531; + id=538; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; @@ -6401,7 +6511,7 @@ class Mission { position[]={26614.852,15.725796,24643.598}; azimut=80; - id=532; + id=539; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; @@ -6410,7 +6520,7 @@ class Mission { position[]={26614.4,15.610186,24645.959}; azimut=80; - id=533; + id=540; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; @@ -6419,7 +6529,7 @@ class Mission { position[]={26613.99,15.484892,24648.324}; azimut=80; - id=534; + id=541; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; @@ -6428,7 +6538,7 @@ class Mission { position[]={26613.67,15.395671,24650.229}; azimut=80; - id=535; + id=542; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; @@ -6436,7 +6546,7 @@ class Mission class Item450 { position[]={26624.285,16.648668,24632.551}; - id=536; + id=543; side="EMPTY"; vehicle="Land_CargoBox_V1_F"; skill=0.60000002; @@ -6445,7 +6555,7 @@ class Mission class Item451 { position[]={26625.738,16.717413,24632.914}; - id=537; + id=544; side="EMPTY"; vehicle="Land_MetalBarrel_F"; skill=0.60000002; @@ -6454,7 +6564,7 @@ class Mission class Item452 { position[]={26625.557,16.742519,24631.918}; - id=538; + id=545; side="EMPTY"; vehicle="Land_MetalBarrel_F"; skill=0.60000002; @@ -6463,7 +6573,7 @@ class Mission class Item453 { position[]={26626.646,16.780445,24632.457}; - id=539; + id=546; side="EMPTY"; vehicle="Land_MetalBarrel_F"; skill=0.60000002; @@ -6473,7 +6583,7 @@ class Mission { position[]={26614.215,15.792243,24641.068}; azimut=80; - id=540; + id=547; side="EMPTY"; vehicle="Box_NATO_AmmoVeh_F"; skill=0.60000002; @@ -6481,9 +6591,9 @@ class Mission }; class Item455 { - position[]={26850.582,26.676523,24464.668}; + position[]={26850.945,26.667337,24465.121}; azimut=-50; - id=541; + id=548; side="EMPTY"; vehicle="Land_BarGate_F"; skill=0.60000002; @@ -6494,7 +6604,7 @@ class Mission { position[]={26701.432,19.745771,24625.896}; azimut=220; - id=542; + id=549; side="EMPTY"; vehicle="Land_BagFence_Long_F"; skill=0.60000002; @@ -6503,7 +6613,7 @@ class Mission { position[]={26705.004,19.76,24626.742}; azimut=130; - id=543; + id=550; side="EMPTY"; vehicle="Land_BagFence_Long_F"; skill=0.60000002; @@ -6512,7 +6622,7 @@ class Mission { position[]={26699.105,19.746874,24629.549}; azimut=130; - id=544; + id=551; side="EMPTY"; vehicle="Land_BagFence_Long_F"; skill=0.60000002; @@ -6521,7 +6631,7 @@ class Mission { position[]={26700.652,19.761763,24631.32}; azimut=130; - id=545; + id=552; side="EMPTY"; vehicle="Land_BagFence_Long_F"; skill=0.60000002; @@ -6530,7 +6640,7 @@ class Mission { position[]={26701.148,19.751776,24627.307}; azimut=130; - id=546; + id=553; side="EMPTY"; vehicle="Land_BagFence_Short_F"; skill=0.60000002; @@ -6539,7 +6649,7 @@ class Mission { position[]={26702.465,19.753223,24626.262}; azimut=130; - id=547; + id=554; side="EMPTY"; vehicle="Land_BagFence_Short_F"; skill=0.60000002; @@ -6548,7 +6658,7 @@ class Mission { position[]={26703.869,19.75539,24625.264}; azimut=130; - id=548; + id=555; side="EMPTY"; vehicle="Land_BagFence_Short_F"; skill=0.60000002; @@ -6557,7 +6667,7 @@ class Mission { position[]={26885.941,21.712402,24671.758}; azimut=-110; - id=549; + id=556; side="EMPTY"; vehicle="B_Truck_01_ammo_F"; leader=1; @@ -6568,7 +6678,7 @@ class Mission { position[]={26874.359,21.821833,24667.549}; azimut=-110; - id=550; + id=557; side="EMPTY"; vehicle="B_Truck_01_fuel_F"; leader=1; @@ -6579,7 +6689,7 @@ class Mission { position[]={26862.107,21.893202,24663.219}; azimut=-110; - id=551; + id=558; side="EMPTY"; vehicle="B_Truck_01_Repair_F"; leader=1; @@ -6590,7 +6700,7 @@ class Mission { position[]={26878.283,22.158979,24655.021}; azimut=-20; - id=552; + id=559; side="EMPTY"; vehicle="Land_HelipadSquare_F"; skill=0.60000002; @@ -6599,7 +6709,7 @@ class Mission { position[]={26686.924,20.348951,24595.072}; azimut=40; - id=553; + id=560; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; @@ -6608,7 +6718,7 @@ class Mission { position[]={26690.42,20.527378,24592.121}; azimut=40; - id=554; + id=561; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; @@ -6617,7 +6727,7 @@ class Mission { position[]={26693.867,20.68795,24589.256}; azimut=40; - id=555; + id=562; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; @@ -6626,7 +6736,7 @@ class Mission { position[]={26697.949,20.878624,24585.85}; azimut=40; - id=556; + id=563; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; @@ -6635,7 +6745,7 @@ class Mission { position[]={26701.584,21.0429,24582.809}; azimut=40; - id=557; + id=564; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; @@ -6644,7 +6754,7 @@ class Mission { position[]={26705.033,21.195879,24579.943}; azimut=40; - id=558; + id=565; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; @@ -6653,7 +6763,7 @@ class Mission { position[]={26708.805,21.349888,24576.771}; azimut=40; - id=559; + id=566; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; @@ -6662,7 +6772,7 @@ class Mission { position[]={26712.438,21.49402,24573.775}; azimut=40; - id=560; + id=567; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; @@ -6671,7 +6781,7 @@ class Mission { position[]={26715.932,21.662668,24570.773}; azimut=40; - id=561; + id=568; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; @@ -6680,7 +6790,7 @@ class Mission { position[]={26719.514,21.822298,24567.777}; azimut=40; - id=562; + id=569; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; @@ -6688,7 +6798,7 @@ class Mission class Item477 { position[]={26852.586,26.66349,24465.311}; - id=563; + id=570; side="EMPTY"; vehicle="Flag_US_F"; skill=0.60000002; @@ -6697,7 +6807,7 @@ class Mission { position[]={26637.924,19.04122,24569.504}; azimut=40; - id=564; + id=571; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6706,7 +6816,7 @@ class Mission { position[]={26682.744,20.397991,24592.496}; azimut=40; - id=565; + id=572; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6715,7 +6825,7 @@ class Mission { position[]={26866.293,26.069725,24495.127}; azimut=40; - id=566; + id=573; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6724,7 +6834,7 @@ class Mission { position[]={26859.998,25.692705,24500.453}; azimut=40; - id=567; + id=574; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6733,7 +6843,7 @@ class Mission { position[]={26876.273,25.842361,24506.547}; azimut=40; - id=568; + id=575; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6742,7 +6852,7 @@ class Mission { position[]={26870.031,25.407507,24511.924}; azimut=40; - id=569; + id=576; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6751,7 +6861,7 @@ class Mission { position[]={26654.242,16.941353,24655.814}; azimut=130; - id=570; + id=577; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6760,7 +6870,7 @@ class Mission { position[]={26658.842,16.984211,24661.238}; azimut=130; - id=571; + id=578; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6769,7 +6879,7 @@ class Mission { position[]={26630.936,16.038414,24659.818}; azimut=130; - id=572; + id=579; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6778,7 +6888,7 @@ class Mission { position[]={26635.535,16.065893,24665.242}; azimut=130; - id=573; + id=580; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6787,7 +6897,7 @@ class Mission { position[]={26643.184,15.658358,24674.449}; azimut=130; - id=574; + id=581; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6796,7 +6906,7 @@ class Mission { position[]={26660.051,17.019289,24667.174}; azimut=40; - id=575; + id=582; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6805,7 +6915,7 @@ class Mission { position[]={26654.059,16.459335,24672.029}; azimut=40; - id=576; + id=583; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6814,7 +6924,7 @@ class Mission { position[]={26648.838,15.68101,24676.391}; azimut=40; - id=577; + id=584; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6823,7 +6933,7 @@ class Mission { position[]={26609.477,15.076567,24653.619}; azimut=40; - id=578; + id=585; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6832,7 +6942,7 @@ class Mission { position[]={26604.771,14.923363,24657.357}; azimut=40; - id=579; + id=586; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6841,7 +6951,7 @@ class Mission { position[]={26609.207,14.478259,24667.311}; azimut=130; - id=580; + id=587; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6850,7 +6960,7 @@ class Mission { position[]={26614.119,14.276504,24673.25}; azimut=130; - id=581; + id=588; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6859,7 +6969,7 @@ class Mission { position[]={26618.332,14.452353,24673.588}; azimut=40; - id=582; + id=589; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6868,7 +6978,7 @@ class Mission { position[]={26623.805,15.16127,24668.928}; azimut=40; - id=583; + id=590; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6877,7 +6987,7 @@ class Mission { position[]={26629.027,15.720372,24664.627}; azimut=40; - id=584; + id=591; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6886,7 +6996,7 @@ class Mission { position[]={26681.109,20.820713,24578.348}; azimut=130; - id=585; + id=592; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6895,7 +7005,7 @@ class Mission { position[]={26685.877,20.759275,24584.045}; azimut=130; - id=586; + id=593; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6904,7 +7014,7 @@ class Mission { position[]={26701.359,21.743464,24561.18}; azimut=130; - id=587; + id=594; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6913,7 +7023,7 @@ class Mission { position[]={26706.488,21.659685,24567.242}; azimut=130; - id=588; + id=595; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6922,7 +7032,7 @@ class Mission { position[]={26692.238,21.340002,24568.811}; azimut=130; - id=589; + id=596; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6931,7 +7041,7 @@ class Mission { position[]={26697.367,21.272434,24574.873}; azimut=130; - id=590; + id=597; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6940,7 +7050,7 @@ class Mission { position[]={26730.549,22.907766,24510.406}; azimut=40; - id=591; + id=598; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6949,7 +7059,7 @@ class Mission { position[]={26724.557,22.715752,24515.4}; azimut=40; - id=592; + id=599; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6958,7 +7068,7 @@ class Mission { position[]={26720.475,22.584196,24518.113}; azimut=130; - id=593; + id=600; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; @@ -6969,7 +7079,7 @@ class Mission { position[]={26732.871,20.167839,24638.973}; azimut=40; - id=594; + id=601; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6978,7 +7088,7 @@ class Mission { position[]={26727.377,19.844154,24643.605}; azimut=40; - id=595; + id=602; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6987,7 +7097,7 @@ class Mission { position[]={26723.93,19.825832,24646.51}; azimut=40; - id=596; + id=603; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6996,7 +7106,7 @@ class Mission { position[]={26700.139,19.607988,24648.037}; azimut=40; - id=597; + id=604; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7006,7 +7116,7 @@ class Mission { position[]={26699.389,19.533976,24648.631}; azimut=40; - id=598; + id=605; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7016,7 +7126,7 @@ class Mission { position[]={26698.549,19.438105,24649.336}; azimut=40; - id=599; + id=606; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7026,7 +7136,7 @@ class Mission { position[]={26695.254,19.066944,24652.014}; azimut=40; - id=600; + id=607; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7036,7 +7146,7 @@ class Mission { position[]={26697.752,19.350166,24649.949}; azimut=40; - id=601; + id=608; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7046,7 +7156,7 @@ class Mission { position[]={26696.004,19.151583,24651.4}; azimut=40; - id=602; + id=609; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7056,7 +7166,7 @@ class Mission { position[]={26696.867,19.251446,24650.65}; azimut=40; - id=603; + id=610; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7066,7 +7176,7 @@ class Mission { position[]={26701.41,19.532892,24649.445}; azimut=40; - id=604; + id=611; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7076,7 +7186,7 @@ class Mission { position[]={26700.66,19.501154,24650.039}; azimut=40; - id=605; + id=612; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7086,7 +7196,7 @@ class Mission { position[]={26699.82,19.451242,24650.744}; azimut=40; - id=606; + id=613; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7096,7 +7206,7 @@ class Mission { position[]={26696.525,19.0455,24653.422}; azimut=40; - id=607; + id=614; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7106,7 +7216,7 @@ class Mission { position[]={26699.023,19.363174,24651.357}; azimut=40; - id=608; + id=615; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7116,7 +7226,7 @@ class Mission { position[]={26697.275,19.153164,24652.809}; azimut=40; - id=609; + id=616; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7126,7 +7236,7 @@ class Mission { position[]={26698.139,19.264454,24652.059}; azimut=40; - id=610; + id=617; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7136,7 +7246,7 @@ class Mission { position[]={26702.727,19.522736,24650.854}; azimut=40; - id=611; + id=618; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7146,7 +7256,7 @@ class Mission { position[]={26701.977,19.481646,24651.447}; azimut=40; - id=612; + id=619; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7156,7 +7266,7 @@ class Mission { position[]={26701.137,19.436028,24652.152}; azimut=40; - id=613; + id=620; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7166,7 +7276,7 @@ class Mission { position[]={26697.842,19.008881,24654.83}; azimut=40; - id=614; + id=621; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7176,7 +7286,7 @@ class Mission { position[]={26700.34,19.365841,24652.766}; azimut=40; - id=615; + id=622; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7186,7 +7296,7 @@ class Mission { position[]={26698.592,19.116364,24654.217}; azimut=40; - id=616; + id=623; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7196,7 +7306,7 @@ class Mission { position[]={26699.455,19.243908,24653.467}; azimut=40; - id=617; + id=624; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7206,7 +7316,7 @@ class Mission { position[]={26713.93,19.81259,24651.387}; azimut=130; - id=618; + id=625; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -7215,7 +7325,7 @@ class Mission { position[]={26709.846,19.780779,24646.615}; azimut=130; - id=619; + id=626; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -7224,7 +7334,7 @@ class Mission { position[]={26705.537,19.77,24641.348}; azimut=130; - id=620; + id=627; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -7233,7 +7343,7 @@ class Mission { position[]={26653.83,20.080389,24552.713}; azimut=5; - id=621; + id=628; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -7243,7 +7353,7 @@ class Mission { position[]={26656.238,20.20751,24552.484}; azimut=5; - id=622; + id=629; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -7253,7 +7363,7 @@ class Mission { position[]={26658.459,20.290365,24552.26}; azimut=5; - id=623; + id=630; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -7263,7 +7373,7 @@ class Mission { position[]={26656.107,20.077408,24547.088}; azimut=140; - id=624; + id=631; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -7272,7 +7382,7 @@ class Mission { position[]={26649.938,19.729076,24541.777}; azimut=140; - id=625; + id=632; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -7281,7 +7391,7 @@ class Mission { position[]={26643.896,19.326979,24536.691}; azimut=140; - id=626; + id=633; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -7290,7 +7400,7 @@ class Mission { position[]={26638.406,19.213615,24563.252}; azimut=140; - id=627; + id=634; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -7299,7 +7409,7 @@ class Mission { position[]={26632.236,18.851871,24557.941}; azimut=140; - id=628; + id=635; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -7308,7 +7418,7 @@ class Mission { position[]={26626.195,18.437645,24552.855}; azimut=140; - id=629; + id=636; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -7317,7 +7427,7 @@ class Mission { position[]={26625.789,18.391869,24548.727}; azimut=50; - id=630; + id=637; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -7326,7 +7436,7 @@ class Mission { position[]={26630.6,18.653082,24542.871}; azimut=50; - id=631; + id=638; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -7335,7 +7445,7 @@ class Mission { position[]={26637.363,18.965082,24534.971}; azimut=50; - id=632; + id=639; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -7344,7 +7454,7 @@ class Mission { position[]={26634.822,18.849415,24537.92}; azimut=50; - id=633; + id=640; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -7353,7 +7463,7 @@ class Mission { position[]={26641.717,19.191948,24534.514}; azimut=140; - id=634; + id=641; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -7362,7 +7472,7 @@ class Mission { position[]={26683.902,20.202864,24597.375}; azimut=40; - id=635; + id=642; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; @@ -7370,7 +7480,7 @@ class Mission class Item550 { position[]={26845.732,26.822699,24458.182}; - id=636; + id=643; side="EMPTY"; vehicle="Flag_UK_F"; skill=0.60000002; @@ -7379,7 +7489,7 @@ class Mission { position[]={26704.133,19.617399,24652.398}; azimut=40; - id=637; + id=644; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7389,7 +7499,7 @@ class Mission { position[]={26703.383,19.527546,24652.992}; azimut=40; - id=638; + id=645; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7399,7 +7509,7 @@ class Mission { position[]={26702.543,19.412371,24653.697}; azimut=40; - id=639; + id=646; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7409,7 +7519,7 @@ class Mission { position[]={26699.248,18.962326,24656.375}; azimut=40; - id=640; + id=647; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7419,7 +7529,7 @@ class Mission { position[]={26701.746,19.308037,24654.311}; azimut=40; - id=641; + id=648; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7429,7 +7539,7 @@ class Mission { position[]={26699.998,19.069811,24655.762}; azimut=40; - id=642; + id=649; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7439,7 +7549,7 @@ class Mission { position[]={26700.861,19.190624,24655.012}; azimut=40; - id=643; + id=650; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7449,7 +7559,7 @@ class Mission { position[]={26708.316,19.796282,24648.941}; azimut=40; - id=644; + id=651; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7459,7 +7569,7 @@ class Mission { position[]={26705.021,19.665495,24651.619}; azimut=40; - id=645; + id=652; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7469,7 +7579,7 @@ class Mission { position[]={26707.52,19.800371,24649.555}; azimut=40; - id=646; + id=653; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7479,7 +7589,7 @@ class Mission { position[]={26705.771,19.70645,24651.006}; azimut=40; - id=647; + id=654; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7489,7 +7599,7 @@ class Mission { position[]={26706.635,19.753191,24650.256}; azimut=40; - id=648; + id=655; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7499,7 +7609,7 @@ class Mission { position[]={26706.867,19.7481,24647.398}; azimut=40; - id=649; + id=656; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7509,7 +7619,7 @@ class Mission { position[]={26703.572,19.568304,24650.076}; azimut=40; - id=650; + id=657; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7519,7 +7629,7 @@ class Mission { position[]={26706.07,19.704399,24648.012}; azimut=40; - id=651; + id=658; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7529,7 +7639,7 @@ class Mission { position[]={26704.322,19.609148,24649.463}; azimut=40; - id=652; + id=659; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7539,7 +7649,7 @@ class Mission { position[]={26705.186,19.655998,24648.713}; azimut=40; - id=653; + id=660; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7549,7 +7659,7 @@ class Mission { position[]={26705.551,19.714727,24646.035}; azimut=40; - id=654; + id=661; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7559,7 +7669,7 @@ class Mission { position[]={26702.256,19.571953,24648.713}; azimut=40; - id=655; + id=662; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7569,7 +7679,7 @@ class Mission { position[]={26704.754,19.682013,24646.648}; azimut=40; - id=656; + id=663; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7579,7 +7689,7 @@ class Mission { position[]={26703.006,19.60457,24648.1}; azimut=40; - id=657; + id=664; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7589,7 +7699,7 @@ class Mission { position[]={26703.869,19.644609,24647.35}; azimut=40; - id=658; + id=665; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7599,7 +7709,7 @@ class Mission { position[]={26704.098,19.77,24644.717}; azimut=40; - id=659; + id=666; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7609,7 +7719,7 @@ class Mission { position[]={26700.803,19.642265,24647.395}; azimut=40; - id=660; + id=667; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7619,7 +7729,7 @@ class Mission { position[]={26703.301,19.752325,24645.33}; azimut=40; - id=661; + id=668; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7629,7 +7739,7 @@ class Mission { position[]={26701.553,19.674883,24646.781}; azimut=40; - id=662; + id=669; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7639,7 +7749,7 @@ class Mission { position[]={26702.416,19.714922,24646.031}; azimut=40; - id=663; + id=670; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7649,7 +7759,7 @@ class Mission { position[]={26702.963,19.77,24642.992}; azimut=40; - id=664; + id=671; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7659,7 +7769,7 @@ class Mission { position[]={26699.668,19.711184,24645.67}; azimut=40; - id=665; + id=672; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7669,7 +7779,7 @@ class Mission { position[]={26702.166,19.77,24643.605}; azimut=40; - id=666; + id=673; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7679,7 +7789,7 @@ class Mission { position[]={26700.418,19.766876,24645.057}; azimut=40; - id=667; + id=674; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7689,7 +7799,7 @@ class Mission { position[]={26701.281,19.77,24644.307}; azimut=40; - id=668; + id=675; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7699,7 +7809,7 @@ class Mission { position[]={26702.117,19.746016,24625.258}; azimut=220; - id=669; + id=676; side="EMPTY"; vehicle="Land_BagFence_Long_F"; skill=0.60000002; @@ -7708,7 +7818,7 @@ class Mission { position[]={26676.719,18.424976,24639.863}; azimut=130; - id=670; + id=677; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -7717,7 +7827,7 @@ class Mission { position[]={26681.666,18.378428,24645.902}; azimut=130; - id=671; + id=678; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -7726,7 +7836,7 @@ class Mission { position[]={26685.85,18.624903,24646.271}; azimut=40; - id=672; + id=679; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -7735,7 +7845,7 @@ class Mission { position[]={26718.406,19.822062,24650.639}; azimut=40; - id=673; + id=680; side="EMPTY"; vehicle="Land_HBarrier_1_F"; skill=0.60000002; @@ -7743,7 +7853,7 @@ class Mission }; class Markers { - items=75; + items=83; class Item0 { position[]={14320.607,17.790001,15859.087}; @@ -7782,14 +7892,14 @@ class Mission class Item4 { position[]={15175.246,17.892538,17346.656}; - name="mrk_infSpawn"; + name="mrk_infSpawn_0"; text="infSpawn"; type="Empty"; }; class Item5 { position[]={14790.578,17.91,16652.014}; - name="mrk_vehSpawn"; + name="mrk_vehSpawn_0"; text="vehSpawn"; type="Empty"; }; @@ -8372,6 +8482,60 @@ class Mission name="mrk_compound_0"; type="Empty"; }; + class Item75 + { + position[]={11617.063,23.492149,11985.335}; + name="mrk_vehSpawn_1"; + text="vehSpawn"; + type="Empty"; + }; + class Item76 + { + position[]={9184.334,14.42393,21657.68}; + name="mrk_vehSpawn_2"; + text="vehSpawn"; + type="Empty"; + }; + class Item77 + { + position[]={20782.428,29.174158,7212.0952}; + name="mrk_vehSpawn_3"; + text="vehSpawn"; + type="Empty"; + }; + class Item78 + { + position[]={11567.18,23.684727,11920.242}; + name="mrk_infSpawn_1"; + text="infSpawn"; + type="Empty"; + }; + class Item79 + { + position[]={9199.2139,14.482924,21674.072}; + name="mrk_infSpawn_2"; + text="infSpawn"; + type="Empty"; + }; + class Item80 + { + position[]={20833.895,26.951988,7290.4648}; + name="mrk_infSpawn_3"; + text="infSpawn"; + type="Empty"; + }; + class Item81 + { + position[]={16600.41,34.735432,19014.51}; + name="mrk_compound_10"; + type="Empty"; + }; + class Item82 + { + position[]={12444.249,74.080551,15201.133}; + name="mrk_compound_11"; + type="Empty"; + }; }; class Sensors { diff --git a/missionInit.sqf b/missionInit.sqf index b12952e..1ccb0e7 100644 --- a/missionInit.sqf +++ b/missionInit.sqf @@ -33,20 +33,6 @@ airfieldMarkers = ["mrk_airfield_0","mrk_airfield_1","mrk_airfield_2","mrk_airfi "mrk_area" setMarkerSize [worldSize/2,worldSize/2]; "mrk_area" setMarkerAlpha 0; -"mrk_aaZone_0" setMarkerPos [worldSize*0.25,worldSize*0.25]; -"mrk_aaZone_0" setMarkerSize [worldSize/4,worldSize/4]; -"mrk_aaZone_0" setMarkerAlpha 0; -"mrk_aaZone_1" setMarkerPos [worldSize*0.75,worldSize*0.25]; -"mrk_aaZone_1" setMarkerSize [worldSize/4,worldSize/4]; -"mrk_aaZone_1" setMarkerAlpha 0; -"mrk_aaZone_2" setMarkerPos [worldSize*0.25,worldSize*0.75]; -"mrk_aaZone_2" setMarkerSize [worldSize/4,worldSize/4]; -"mrk_aaZone_2" setMarkerAlpha 0; -"mrk_aaZone_3" setMarkerPos [worldSize*0.75,worldSize*0.75]; -"mrk_aaZone_3" setMarkerSize [worldSize/4,worldSize/4]; -"mrk_aaZone_3" setMarkerAlpha 0; - - //Objects leaderArray = [cmd1,cmd2,a0_1,b0_1,c0_1,h1,r1,anv1,s1,v1,rip1]; logisticsArray = ["l1","l2","l3","l4"]; @@ -65,7 +51,9 @@ indTownsN = []; opTownMarkers = []; bluTownMarkers = []; indTownMarkers = []; -baseMarkers = []; +baseMarkersO = []; +baseMarkersB = []; +airfieldMarkersB = []; activeTasks = []; airfieldOccup = [false,false,false,false]; capitalOccup = [false]; @@ -87,18 +75,20 @@ CHVD_maxObj = 12000; // Set maximimum object view distance (default: 12000) publicVariable "logisticsArray"; publicVariable "baseObjects"; publicVariable "fobTrucks"; +publicVariable "airfieldMarkers"; //Run init scripts //spawn -needs a seperate thread to work []spawn JOC_fobManager; []spawn JOC_bftManager; -//[] spawn JOC_taskManager; +[] spawn JOC_taskManager; []spawn JOC_cacheInit; //Dunno why I can't use a call for this []spawn JOC_cmdManager; []spawn JOC_perfLoop; //call -doesn't need a seperate thread []call JOC_initDepot; +[]call JOC_initPlayerBase; []call JOC_initTowns; []call JOC_initAirfields; []call JOC_initBases; diff --git a/onPlayerRespawn.sqf b/onPlayerRespawn.sqf index 9f96542..0af2153 100644 --- a/onPlayerRespawn.sqf +++ b/onPlayerRespawn.sqf @@ -1,25 +1,18 @@ +///////////////////////// +//Script made by Jochem// +///////////////////////// if(side player == west)then{ player setPosASL getPosASL respawn_obj; }; if(side player == east)then{ - _airfieldID = [false,airfieldOccup]call Zen_ValueFindInArray; - _mrkN = format ["mrk_infSpawn_%1",_airfieldID]; - _respawnPos = getMarkerPos _mrkN; - player setPosASL getPosASL _respawnPos; + waitUntil{!isNil{baseMarkers} && !isNil{opTowns}}; + player setPos [worldSize * 3, worldSize * 3, 0]; + player hideObject true; + _spawnArray = []call JOC_opforGetSpawnLocations; + [(findDisplay 46), getpos (_this select 1), _spawnArray, [], [], [], 5, true] call BIS_fnc_strategicMapOpen; + player hideObject false; }; []spawn JOC_playerLoop; -zeusMod addCuratorEditableObjects [[player],false]; cduEnabled = false; -//[]spawn JOC_loadoutMaster; - - - - - -/*player addEventHandler ["fired", { -if((_this select 0) distance respawn_obj < 500)then{ - hint "Don't fire in base!"; - deleteVehicle (_this select 6); -}; -}]; //Base protection*/ +[]spawn JOC_loadoutMaster; From 4eb4684360a1cb0e2f051ee3fde6349420716761 Mon Sep 17 00:00:00 2001 From: Jochem Date: Sun, 11 Oct 2015 11:18:33 +0200 Subject: [PATCH 17/17] RC v0.9.2 -Added civilians -Improved grouping -Task cleanup -Various small changes --- Functions/AI/arty.sqf | 2 +- Functions/Init/initAA.sqf | 2 +- Functions/Radio/freqTable.sqf | 30 - Functions/Tasks/Functions/countdown.sqf | 5 +- Functions/Tasks/crashedChopper.sqf | 2 +- Functions/Tasks/nuke.sqf | 96 +- Functions/Vehicle/Garage/main.sqf | 15 + Functions/Vehicle/vehInit.sqf | 45 +- cos/addScript_Unit.sqf | 7 + cos/addScript_Vehicle.sqf | 6 + cos/cosCore.sqf | 288 ++++++ cos/cosInit.sqf | 190 ++++ cos/cosPatrol.sqf | 30 + cos/localScript.sqf | 28 + cos/patrolFnc.sqf | 14 + mission.sqm | 1232 ++++++++++++----------- 16 files changed, 1242 insertions(+), 750 deletions(-) delete mode 100644 Functions/Radio/freqTable.sqf create mode 100644 cos/addScript_Unit.sqf create mode 100644 cos/addScript_Vehicle.sqf create mode 100644 cos/cosCore.sqf create mode 100644 cos/cosInit.sqf create mode 100644 cos/cosPatrol.sqf create mode 100644 cos/localScript.sqf create mode 100644 cos/patrolFnc.sqf diff --git a/Functions/AI/arty.sqf b/Functions/AI/arty.sqf index d6952ff..dc6c1b9 100644 --- a/Functions/AI/arty.sqf +++ b/Functions/AI/arty.sqf @@ -34,7 +34,7 @@ _arty2 addEventHandler["fired", {(_this select 0) setVehicleAmmo 1}]; _arty2 setFuel 0; _arty2 setVariable["JOC_caching_disabled",true]; -[_arty1,_arty2] join artyGroup; +((crew _arty1) + (crew _arty2)) joinSilent artyGroup; //Spawn enemy's _trg = createTrigger ["EmptyDetector",_location,true]; diff --git a/Functions/Init/initAA.sqf b/Functions/Init/initAA.sqf index e32d31f..cf52560 100644 --- a/Functions/Init/initAA.sqf +++ b/Functions/Init/initAA.sqf @@ -35,7 +35,7 @@ while {_tank < aaCount} do _aaTank setFuel 0; _aaTank addEventHandler["fired", {(_this select 0) setVehicleAmmo 1}]; _aaTank setVariable["JOC_caching_disabled",true]; - [_aaTank] joinSilent aaGroup; + (crew _aaTank) joinSilent aaGroup; _name = [5] call Zen_StringGenerateRandom; _marker = createMarker [_name, _location]; diff --git a/Functions/Radio/freqTable.sqf b/Functions/Radio/freqTable.sqf deleted file mode 100644 index 80bf95a..0000000 --- a/Functions/Radio/freqTable.sqf +++ /dev/null @@ -1,30 +0,0 @@ -///////////////////////// -//Script made by Jochem// -///////////////////////// -while{true}do{ - []call TFAR_fnc_processGroupFrequencySettings; - - /*(group r1) getVariable "tf_sw_frequency") select 3) select 0) - (group h1) getVariable "tf_sw_frequency") select 3) select 0) - (group log1) getVariable "tf_sw_frequency") select 3) select 0) - (group anv1) getVariable "tf_sw_frequency") select 3) select 0) - (group s1) getVariable "tf_sw_frequency") select 3) select 0) - (group v1) getVariable "tf_sw_frequency") select 3) select 0) - (group rip1) getVariable "tf_sw_frequency") select 3) select 0)*/ - - "mrk_freq_alpha_1" setMarkerText ("ASL SW: "+((((group a0_1) getVariable "tf_sw_frequency") select 2) select 0)); - "mrk_freq_alpha_2" setMarkerText ("A1 SW: "+((((group a1_1) getVariable "tf_sw_frequency") select 2) select 0)); - "mrk_freq_alpha_3" setMarkerText ("A2 SW: "+((((group a2_1) getVariable "tf_sw_frequency") select 2) select 0)); - - "mrk_freq_bravo_1" setMarkerText ("BSL SW: "+((((group b0_1) getVariable "tf_sw_frequency") select 2) select 0)); - "mrk_freq_bravo_2" setMarkerText ("B1 SW: "+((((group b1_1) getVariable "tf_sw_frequency") select 2) select 0)); - "mrk_freq_bravo_3" setMarkerText ("B2 SW: "+((((group b2_1) getVariable "tf_sw_frequency") select 2) select 0)); - - "mrk_freq_charlie_1" setMarkerText ("CSL SW: "+((((group c0_1) getVariable "tf_sw_frequency") select 2) select 0)); - "mrk_freq_charlie_2" setMarkerText ("C1 SW: "+((((group c1_1) getVariable "tf_sw_frequency") select 2) select 0)); - "mrk_freq_charlie_3" setMarkerText ("C2 SW: "+((((group c2_1) getVariable "tf_sw_frequency") select 2) select 0)); - - "mrk_freq_cmd" setMarkerText ("CMD SW: "+((((group cmd1) getVariable "tf_sw_frequency") select 2) select 0)); - - sleep 5; -}; diff --git a/Functions/Tasks/Functions/countdown.sqf b/Functions/Tasks/Functions/countdown.sqf index 4c133c3..d3badce 100644 --- a/Functions/Tasks/Functions/countdown.sqf +++ b/Functions/Tasks/Functions/countdown.sqf @@ -1,8 +1,9 @@ _time = _this select 0; +_icbm = _this select 1; _x = 0; Crossroads = [West,"HQ"]; -while{_x != _time && disabled == 0 && destroyed == 0}do{ +while{_x != _time && (alive _icbm)}do{ Sleep 1; _text = format["%1 seconds until launch",_time - _x]; Crossroads sideChat _text;//Needs global @@ -11,4 +12,4 @@ while{_x != _time && disabled == 0 && destroyed == 0}do{ Sleep 1; -launched = 1; \ No newline at end of file +launched = 1; diff --git a/Functions/Tasks/crashedChopper.sqf b/Functions/Tasks/crashedChopper.sqf index 68f3fa4..19ae2ff 100644 --- a/Functions/Tasks/crashedChopper.sqf +++ b/Functions/Tasks/crashedChopper.sqf @@ -8,7 +8,7 @@ _location = 0; //Get position while{_ok == 0}do{ - _location = [0,0,0,1,0,0,[1,0,10],0,0,[1,5,5],[1,[0,0,0],10]] call Zen_FindGroundPosition; + _location = ["mrk_area",0,[airfieldMarkers + blackMarkers,[],[]],1,0,0,[1,0,10],0,0,[1,5,5],[1,[0,0,0],10]] call Zen_FindGroundPosition; _nearestPlayers = []; { if (isPlayer _x && _x distance _location < 1000) then { diff --git a/Functions/Tasks/nuke.sqf b/Functions/Tasks/nuke.sqf index 2131927..aee7089 100644 --- a/Functions/Tasks/nuke.sqf +++ b/Functions/Tasks/nuke.sqf @@ -1,16 +1,11 @@ ///////////////////////// //Script made by Jochem// ///////////////////////// -//var -disabled = 0; -launched = 0; -destroyed = 0; _name = [5] call Zen_StringGenerateRandom; - +launched = 0; //location -_location = getMarkerPos "mrk_jetSpawn";//[0,0,occupiedMarkers,1,0,0,[1,0,10],0,0,[1,5,5],[1,[10,-1,-1],120]] call Zen_FindGroundPosition; - +_location = getMarkerPos "mrk_airfield_0";//["mrk_area",0,[airfieldMarkers + blackMarkers,[],[]],1,0,0,[1,0,10],0,0,[1,5,5],[1,[10,-1,-1],120]] call Zen_FindGroundPosition; //Create task _text = "Russian forces are preparing a nuclear attack. ROE on the vehicle is hold fire, since it is likely the nuke will go off if it gets blown up"; @@ -22,92 +17,33 @@ _name setMarkerType "hd_objective"; _name setMarkerColor "ColorOPFOR"; //Spawn icbm -icbm = [_location, "rhs_9k79_B"] call Zen_SpawnVehicle; -[icbm,east] call Zen_SpawnVehicleCrew; -Sleep 1; -[icbm,1] spawn rhs_fnc_ss21_AI_prepare; - - +_icbm = [_location, "rhs_9k79_B"] call Zen_SpawnVehicle; +[_icbm,east] call Zen_SpawnVehicleCrew; +sleep 1; +[_icbm,1] spawn rhs_fnc_ss21_AI_prepare; //Spawn enemy's -_groupCount = 7; -_garrisonCount = 10; -_carCount = 5; -_lightCount = 2; -_tankCount = 3; -_helicopterCount = 3; - -_x = 0; - -//infantry -while{_x < _groupCount} do{ - _locationS = [_location, random 200, random 200] call BIS_fnc_relPos; - _locationS = [_locationS,1,1] call Zen_ExtendPosition; - _group = [_locationS, east, "infantry", 4,"Basic"] call Zen_SpawnInfantry; - [_group,_location,[0,300],[0,360],"limited","safe"] spawn Zen_OrderInfantryPatrol; - _x = _x + 1; -}; - -_x = 0; - -//IFV -while{_x < _lightCount} do{ - _locationS = [_location, random 300, random 300] call BIS_fnc_relPos; - _locationS = [_locationS,0,0,1,[1,700]] call Zen_FindGroundPosition; - _veh = [_locationS,(ifvPool call BIS_fnc_selectRandom)] call Zen_SpawnVehicle; - [_veh,east] call Zen_SpawnVehicleCrew; - _x = _x + 1; -}; - -_x = 0; - -//tanks -while{_x < _tankCount} do{ - _locationS = [_location, random 300, random 300] call BIS_fnc_relPos; - _locationS = [_locationS,1,1] call Zen_ExtendPosition; - _locationS = [_locationS,0,0,1,[1,700]] call Zen_FindGroundPosition; - _veh = [_locationS,(tankPool call BIS_fnc_selectRandom)] call Zen_SpawnVehicle; - [_veh,east] call Zen_SpawnVehicleCrew; - _x = _x + 1; -}; - -_x = 0; - -//Helicopters -while{_x < _helicopterCount} do{ - _locationS = [_location, random 500, random 500] call BIS_fnc_relPos; - _heliA = [_locationS,casPool,50] call Zen_SpawnHelicopter; - _x = _x + 1; - -}; - - - -//Spawn fail trigger -_trg = createTrigger ["EmptyDetector",_location]; -_trg setTriggerStatements ["!alive icbm","destroyed = 1",""]; - - -//Spawn complete trigger -_trg2 = createTrigger ["EmptyDetector",_location]; -_trg2 setTriggerStatements ["!alive (crew icbm select 0) && !alive (crew icbm select 1)","disabled = 1",""]; - +_trg = createTrigger ["EmptyDetector",_location,true]; +_trg setTriggerArea [900,900,900,false]; +_trg setTriggerActivation ["WEST","PRESENT", false]; +_trg setTriggerStatements ["this","[getPos thisTrigger,300,[5,true],[2,false],[0,false],[2,false],[0,false],[1,false,""cas""],[0,false]] spawn JOC_spawnZone; deleteVehicle thisTrigger",""]; +_trg setTriggerTimeout [5,5,5,true]; -[600]execVM "Tasks\functions\countdown.sqf"; +[600,_icbm]execVM "Functions\Tasks\Functions\countdown.sqf"; //Wait until complete -waitUntil{disabled == 1 or launched == 1 or destroyed == 1}; +waitUntil{(!alive (crew icbm select 0) && !alive (crew icbm select 1)) or (launched == 1) or (!alive _icbm)}; -if (disabled == 1) then{ +if (!alive (crew icbm select 0) && !alive (crew icbm select 1)) then{ [_name, "succeeded"] call Zen_UpdateTask; }; if (launched == 1) then{ [_name, "failed"] call Zen_UpdateTask; - icbm doTarget targetNuke; + [_icbm,cacheGroupLeader]spawn RHS_fnc_ss21_AI_launch }; -if (destroyed == 1) then{ +if (!alive _icbm) then{ [_name, "failed"] call Zen_UpdateTask; [_location,10000,1000] call rhs_fnc_ss21_nuke }; diff --git a/Functions/Vehicle/Garage/main.sqf b/Functions/Vehicle/Garage/main.sqf index 60205da..07e2c3d 100644 --- a/Functions/Vehicle/Garage/main.sqf +++ b/Functions/Vehicle/Garage/main.sqf @@ -126,3 +126,18 @@ garage_spawner_med addAction ["Request vehicle",{ [garage_spawn_med]spawn JOC_garageFnc; }; },_medA]; + +garage_spawn_jet setVariable["count",0]; +garage_spawner_jet addAction ["Request vehicle",{ + if(garage_spawn_jet getVariable "unable")exitWith{hint "Pad not available"}; + _veh = (nearestObjects [(getPos garage_spawn_jet),["AllVehicles"],3] - [garage_spawn_jet]); + if(((count _veh) >= 1) or ((garage_spawn_jet getVariable "count") >= 1))then{ + hint "Pad not clear or max vehicles reached"; + }else{ + BIS_fnc_garage_center = createVehicle ["Land_HelipadEmpty_F", (getPos garage_spawn_jet), [], 0, "CAN_COLLIDE" ]; + _array = [(_this select 3)]call JOC_garageGetArray; + BIS_fnc_garage_data = _array; + ["Open",true] call BIS_fnc_garage; + [garage_spawn_jet]spawn JOC_garageFnc; + }; +},_jetA]; diff --git a/Functions/Vehicle/vehInit.sqf b/Functions/Vehicle/vehInit.sqf index 6889974..5a671bf 100644 --- a/Functions/Vehicle/vehInit.sqf +++ b/Functions/Vehicle/vehInit.sqf @@ -12,45 +12,14 @@ _time = 0; sleep 1; _vehicle setDamage 0; -//Blackhwk -if(_vehicletype == "RHS_UH60M")then{ -}; - -//Apache -if(_vehicletype == "RHS_AH64D_wd_AA")then{ -}; - //Medical heli if(_vehicletype == "RHS_UH60M_MEV" or _vehicletype == "rhsusf_m113_usarmy_medical" or _vehicletype == "B_Truck_0")then{ _vehicle setVariable ["ace_medical_medicClass", 1]; }; -//LittleBird -if(_vehicletype == "MELB_AH6M_M")then{ -}; - -//Chinook -if(_vehicletype == "B_Heli_Transport_03_unarmed_F" or _vehicletype == "RHS_CH_47F")then{ -}; - //Tank -if(_vehicle isKindOf "Tank")then{ -}; - -//IFV -if(_vehicletype == "RHS_M2A3_BUSKIII_wd" or _vehicleType == "RHS_M6_wd")then{ -}; - -//MRAP -if(_vehicletype == "rhsusf_rg33_m2_wd")then{ -}; - -//HMVEE -if(_vehicletype == "rhsusf_m1025_w_s_m2" or _vehicletype == "rhsusf_m1025_w_s_Mk19")then{ -}; - -//APC -if(_vehicletype == "rhsusf_m113_usarmy")then{ +if(_vehicle isKindOf "Helicopter")then{ + [_veh]call Zen_AddFastRope; }; //Bulldozer @@ -58,17 +27,7 @@ if(_vehicletype == "B_APC_Tracked_01_CRV_F")then{ [_vehicle]spawn JOC_tow; }; -//Support trucks -if(_vehicletype == "B_Truck_01_fuel_F" or _vehicletype == "B_Truck_01_ammo_F" or _vehicletype == "B_Truck_01_Repair_F")then{ -}; - -//Transport truck -if(_vehicletype == "rhsusf_M1078A1P2_B_M2_wd_fmtv_usarmy")then{ -}; - //Ammo container if(_vehicletype == "B_Slingload_01_Ammo_F" or _vehicletype == "B_Slingload_01_Fuel_F" or _vehicletype == "B_Slingload_01_Medevac_F" or _vehicletype == "B_Slingload_01_Cargo_F" or _vehicletype == "B_Slingload_01_Repair_F" or _vehicletype == "B_CargoNet_01_ammo_F")then{ [_vehicle]spawn JOC_crateInit; }; - -zeusMod addCuratorEditableObjects [[_vehicle],false]; diff --git a/cos/addScript_Unit.sqf b/cos/addScript_Unit.sqf new file mode 100644 index 0000000..7e88f51 --- /dev/null +++ b/cos/addScript_Unit.sqf @@ -0,0 +1,7 @@ +/* +Add Script to individual units spawned by COS. +_unit = unit. Refer to Unit as _unit. +*/ + +_unit =(_this select 0); +_unit addAction ["Hello", {hint "Open AddScript_Unit.sqf to apply pedestrian scripts"}];// EXAMPLE SCRIPT \ No newline at end of file diff --git a/cos/addScript_Vehicle.sqf b/cos/addScript_Vehicle.sqf new file mode 100644 index 0000000..608f24f --- /dev/null +++ b/cos/addScript_Vehicle.sqf @@ -0,0 +1,6 @@ +/* +Add Script to vehicles spawned by COS. +_veh = Vehicle. Refer to vehicle as _veh. +*/ + +_veh =(_this select 0); diff --git a/cos/cosCore.sqf b/cos/cosCore.sqf new file mode 100644 index 0000000..da5f8d3 --- /dev/null +++ b/cos/cosCore.sqf @@ -0,0 +1,288 @@ +if (!isServer) exitWith {}; +private ["_groupCount","_localGrpCount","_grp","_rdCount","_n","_r","_tempUnit","_tempVeh"]; +_mkr= (_this select 0); + +// Get trigger status +_trigID=format["trig%1", _mkr]; +_isActive=server getvariable _trigID; + +// Get stored town variables +_popVar=format["population%1", _mkr]; +_information=server getvariable _popVar; + _civilians=(_information select 0); + _vehicles=(_information select 1); + _parked=(_information select 2); + _roadPosArray=(_information select 3); + + + IF (debugCOS) + then { + COSGlobalSideChat=[_civilians,_vehicles,_parked, _mkr];publicvariable "COSGlobalSideChat"; + player groupChat (format ["Town:%4 .Civilians:%1 .Vehicles:%2 .Parked:%3",_civilians,_vehicles,_parked, _mkr]);//for singleplayer + }; + +_showRoads=false; + IF (_showRoads) + then { + { + _txt=format["roadMkr%1",_x]; + _debugMkr=createMarker [_txt,getpos _x]; + _debugMkr setMarkerShape "ICON"; + _debugMkr setMarkerType "hd_dot"; + }foreach _roadPosArray; + }; + + +_glbGrps=server getvariable "cosGrpCount"; +_townGrp=createGroup DefaultSide; +_localGrps=1; + +waituntil {!populating_COS}; +populating_COS=true; +_glbGrps=server getvariable "cosGrpCount"; + + +//SPAWN CIVILIANS NOW +_civilianArray=[]; +_vehicleArray=[]; +_PatrolVehArray=[]; +_ParkedArray=[]; + +_roadPosArray=_roadPosArray call BIS_fnc_arrayShuffle; +_UnitList=COScivPool call BIS_fnc_arrayShuffle; +_vehList=COSmotPool call BIS_fnc_arrayShuffle; +_countVehPool=count _vehList; +_countPool=count _UnitList; +_v=0; +_n=0; +_rdCount=0; + +// SPAWN PEDESTRIANS +for "_i" from 1 to _civilians do { + if (!(server getvariable _trigID)) exitwith {_isActive=false;}; + + if (_i >= _countPool) + then { + if (_n >= _countPool) then {_n=0;}; + _tempUnit=_UnitList select _n; + _n=_n+1; + }; + if (_i < _countPool) + then { + _tempUnit=_UnitList select _i; + }; + + _tempPos=_roadPosArray select _rdCount; + _rdCount=_rdCount+1; + + if (COSmaxGrps < (_glbGrps+_localGrps+1)) + then { + _grp=_townGrp; + }else{ + _grp=createGroup DefaultSide; + _localGrps=_localGrps+1; + }; + + _unit = _grp createUnit [_tempUnit, _tempPos, [], 0, "NONE"]; + _civilianArray set [count _civilianArray,_grp]; + + null =[_unit] execVM "cos\addScript_Unit.sqf"; + + IF (debugCOS) then { + _txt=format["INF%1,MKR%2",_i,_mkr]; + _debugMkr=createMarker [_txt,getpos _unit]; + _debugMkr setMarkerShape "ICON"; + _debugMkr setMarkerType "hd_dot"; + _debugMkr setMarkerText "Civ Spawn"; + }; + }; + +// SPAWN VEHICLES +for "_i" from 1 to _vehicles do { + +if (!(server getvariable _trigID)) exitwith {_isActive=false;}; + + if (_i >= _countVehPool) + then { + if (_v >= _countVehPool) then {_v=0;}; + _tempVeh=_vehList select _v; + _v=_v+1; + }; + if (_i < _countVehPool) + then { + _tempVeh=_vehList select _i; + }; + + if (_i >= _countPool) + then { + if (_n >= _countPool) then {_n=0;}; + _tempUnit=_UnitList select _n; + _n=_n+1; + }; + if (_i < _countPool) + then { + _tempUnit=_UnitList select _i; + }; + + _tempPos=_roadPosArray select _rdCount; + _rdCount=_rdCount+1; + _roadConnectedTo = roadsConnectedTo _tempPos; + _connectedRoad = _roadConnectedTo select 0; + _direction = [_tempPos, _connectedRoad] call BIS_fnc_DirTo; + + if (COSmaxGrps < (_glbGrps+_localGrps+1)) + then { + _grp=_townGrp; + }else{ + _grp=createGroup DefaultSide; + _localGrps=_localGrps+1; + }; + + _veh = createVehicle [_tempVeh, _tempPos, [], 0, "NONE"]; + _unit = _grp createUnit [_tempUnit, getpos _veh, [], 0, "CAN_COLLIDE"]; + _veh setdir _direction; + + _unit assignAsDriver _veh; + _unit moveInDriver _veh; + + _vehPack=[_veh,_unit,_grp]; + _PatrolVehArray set [count _PatrolVehArray,_grp]; + _vehicleArray set [count _vehicleArray,_vehPack]; + + +null =[_veh] execVM "cos\addScript_Vehicle.sqf"; +null =[_unit] execVM "cos\addScript_Unit.sqf"; + + IF (debugCOS) then { + _txt=format["veh%1,mkr%2",_i,_mkr]; + _debugMkr=createMarker [_txt,getpos _unit]; + _debugMkr setMarkerShape "ICON"; + _debugMkr setMarkerType "hd_dot"; + _debugMkr setMarkerText "VEH Spawn"; + }; + }; + + +// SPAWN PARKED VEHICLES +for "_i" from 1 to _parked do { + +if (!(server getvariable _trigID)) exitwith {_isActive=false;}; + + if (_i >= _countVehPool) + then { + if (_v >= _countVehPool) then {_v=0;}; + _tempVeh=_vehList select _v; + _v=_v+1; + }; + if (_i < _countVehPool) + then { + _tempVeh=_vehList select _i; + }; + + _tempPos=_roadPosArray select _rdCount; + _rdCount=_rdCount+1; + _roadConnectedTo = roadsConnectedTo _tempPos; + _connectedRoad = _roadConnectedTo select 0; + _direction = [_tempPos, _connectedRoad] call BIS_fnc_DirTo; + + _veh = createVehicle [_tempVeh, _tempPos, [], 0, "NONE"]; + _veh setdir _direction; + _veh setPos [(getPos _veh select 0)-6, getPos _veh select 1, getPos _veh select 2]; + + _ParkedArray set [count _ParkedArray,_veh]; + + +null =[_veh] execVM "cos\addScript_Vehicle.sqf"; + + IF (debugCOS) then { + _txt=format["Park%1,mkr%2",_i,_mkr]; + _debugMkr=createMarker [_txt,getpos _veh]; + _debugMkr setMarkerShape "ICON"; + _debugMkr setMarkerType "hd_dot"; + _debugMkr setMarkerText "Park Spawn"; + }; + }; + + +// Apply Patrol script to all units +null =[_civilianArray,_PatrolVehArray,_roadPosArray] execVM "cos\CosPatrol.sqf"; + +if (debugCOS) then {player sidechat (format ["Roads used:%1. Roads Stored %2",_rdCount,count _roadPosArray])}; + +// Count groups +_glbGrps=server getvariable "cosGrpCount"; +_glbGrps=_glbGrps+_localGrps; +server setvariable ["cosGrpCount",_glbGrps]; +populating_COS=false; + +// Show town label if town still active +if (showTownLabel and (server getvariable _trigID)) + then { + + COSTownLabel=[(_civilians+_vehicles),_mkr];PUBLICVARIABLE "COSTownLabel"; + _population=format ["Population: %1",_civilians+_vehicles]; + 0=[markerText _mkr,_population] spawn BIS_fnc_infoText;// FOR USE IN SINGLEPLAYER + }; + + +// Check every second until trigger is deactivated + while {_isActive} do + { + _isActive=server getvariable _trigID; + if (!_isActive) exitwith {}; + sleep 1; + }; + +// If another town is populating wait until it has finished before deleting population +waituntil {!populating_COS}; + +// Delete all pedestrians + _counter=0; + { + _grp=_x; + _counter=_counter+1; + if (debugCOS) then { deletemarker (format["INF%1,MKR%2",_counter,_mkr]);}; + { deleteVehicle _x } forEach units _grp; + deleteGroup _grp; + }foreach _civilianArray; + + +// Delete all vehicles and crew + _counter=0; + { + _veh=_x select 0; + _unit=_x select 1; + _grp=_x select 2; + _counter=_counter+1; + if (debugCOS) then {deletemarker (format["veh%1,mkr%2",_counter,_mkr]);}; + + +// CHECK VEHICLE IS NOT TAKEN BY PLAYER + if ({isPlayer _veh} count (crew _veh) == 0) + then { + {deleteVehicle _x} forEach (crew _veh); deleteVehicle _veh; + }; + deletevehicle _unit; + deletegroup _grp; + + }foreach _vehicleArray; + +// Delete all parked vehicles + _counter=0; + { + _counter=_counter+1; + if (debugCOS) then {deletemarker (format["Park%1,mkr%2",_counter,_mkr]);}; + + // CHECK VEHICLE IS NOT TAKEN BY PLAYER + if ({isPlayer _x} count (crew _x) == 0) + then { + deletevehicle _x; + }; + }foreach _ParkedArray; + +deletegroup _townGrp; + +// Update global groups +_glbGrps=server getvariable "cosGrpCount"; +_glbGrps=_glbGrps-_localGrps; +server setvariable ["cosGrpCount",_glbGrps]; diff --git a/cos/cosInit.sqf b/cos/cosInit.sqf new file mode 100644 index 0000000..71ebffe --- /dev/null +++ b/cos/cosInit.sqf @@ -0,0 +1,190 @@ +/* + Civilian Occupation System (COS) + By BangaBob v0.5 + + null=[] execVM "cos/cosInit.sqf"; + + IMPORTANT: BEFORE PROCEEDING ADD AN OBJECT NAMED SERVER INTO THE EDITOR. + + To edit population of zones browse to line 95 + Open COS/AddScript_Unit.sqf to apply scripts to spawned units. + Open COS/AddScript_Vehicle.sqf to apply scripts to spawned vehicles. + To get Array of COS markers use _allMarkers=SERVER getvariable "COSmarkers"; +*/ + +if (isnil "SERVER") then {Hint "You must ADD a object named SERVER";Player Sidechat "You must ADD a object named SERVER";}else{ +if (isServer) then { +IF (!isnil ("COScomplete")) then {Hint "Check your call. COS was called twice!";}else{ + +COS_distance=500;//Set spawn distance +_aerielActivation=true;// Set if flying units can activate civilian Zones + +blackListTowns = ["sagonisi","triadi","ekali"];// Remove towns from COS + +whiteListMkrs=[];// Add Custom Markers for COS to populate + +DefaultSide = Civilian;// Set side of units spawned + +_showMarker=false;// Show COS markers on map + +showTownLabel = false;// Show town information when entering COS zones + +debugCOS=false;// Show spawned units on the map + +COSpedestrians=true; //Spawn pedestrians +COScars=true;// Spawn Cars +COSparked=false;// Spawn parked cars + +// Types of units that will be spawned as civilians. +COScivPool =["C_man_1","C_man_1_1_F","C_man_1_2_F","C_man_1_3_F","C_man_hunter_1_F","C_man_p_beggar_F","C_man_p_beggar_F_afro","C_man_p_fugitive_F","C_man_p_shorts_1_F","C_man_polo_1_F","C_man_polo_2_F","C_man_polo_3_F","C_man_polo_4_F","C_man_polo_5_F","C_man_polo_6_F","C_man_shorts_1_F","C_man_shorts_2_F","C_man_shorts_3_F","C_man_shorts_4_F","C_man_w_worker_F"]; +COSmotPool =["C_Hatchback_01_F","C_Hatchback_01_sport_F","C_Offroad_01_F","C_SUV_01_F","C_Van_01_box_F","C_Van_01_fuel_F","C_Van_01_transport_F"]; + +COSmaxGrps=1;//Set Maximum group limit for COS at any one time (If limit is hit then civilians will be placed into a single group for each town) + +// Browse to line 81 to customise number of civilians that spawn. +private ["_sizeX","_sizeY","_name","_pos","_mSize","_rad","_civilians","_vehicles","_parked","_actCond"]; +breakPatrol_FNC=compile preprocessFileLineNumbers "cos\patrolFnc.sqf";unitScript_FNC=compile preprocessFileLineNumbers "cos\addScript_Unit.sqf";vehScript_FNC=compile preprocessFileLineNumbers "cos\addScript_Vehicle.sqf"; +COScomplete=false;publicvariable "COScomplete";publicvariable "COS_distance";populating_COS=false; +cosMkrArray=[]; +server setvariable ["cosGrpCount",0];//Set global group count +_rad=50;// Radius increase increment for finding minimum spawn points +_slack=2;// Additional spawn points + +{ +// Organise towns and markers + if (_x in whiteListMkrs) + then { + _sizeX=getMarkerSize _x select 0; + _sizeY=getMarkerSize _x select 1; + _pos=markerpos _x; + _name=markerText _x;// Get the markers description + if (_name == "") then {_name= _x;};// If description is empty then use marker name + deletemarker _x;// Delete user placed marker + + }else{ + _name = text _x;// Get name + _sizeX = getNumber (configFile >> "CfgWorlds" >> worldName >> "Names" >> (text _x) >> "radiusA"); + _sizeY = getNumber (configFile >> "CfgWorlds" >> worldName >> "Names" >> (text _x) >> "radiusB"); + _pos=getpos _x; + }; +if (({_name==_x} count blackListTowns)>0 OR (_name == "")) then {}else{ + + +// Scan for houses around the town area + if (_sizeX < 50) then {_sizeX=300;}; + if (_sizeY < 50) then {_sizeY=300;}; + if (_sizeY>_sizeX) then {_mSize=_sizeY}else{_mSize=_sizeX};// Get the largest size + _houses= count (nearestObjects [_pos, ["house"], _mSize]);// Count number of houses in town + + +// Customise population by number of houses +_randomisation=7; + if (_houses <= 10) + then { + _civilians=2+ round(random _randomisation);// Civilians spawned + _vehicles=0;// Moving Vehicles Spawned + _parked=1;// Parked Vehicles Spawned + }; + if (_houses <= 30 and _houses > _randomisation) + then { + _civilians=6+ round(random _randomisation);// Civilians spawned + _vehicles=2;// Moving Vehicles Spawned + _parked=2;// Parked Vehicles Spawned + }; + + if (_houses <= 70 and _houses > 30) + then { + _civilians=14+ round(random _randomisation);// Civilians spawned + _vehicles=4;// Moving Vehicles Spawned + _parked=2;// Parked Vehicles Spawned + }; + + if (_houses <= 140 and _houses > 70) + then { + _civilians=28+ round(random _randomisation);// Civilians spawned + _vehicles=5;// Moving Vehicles Spawned + _parked=3;// Parked Vehicles Spawned + }; + if (_houses > 140) + then { + _civilians=35+ round(random _randomisation);// Civilians spawned + _vehicles=5;// Moving Vehicles Spawned + _parked=3;// Parked Vehicles Spawned + }; + + if (!COSpedestrians) then {_civilians=0;}; // If pedestrians disabled spawn 0 + if (!COScars) then {_vehicles=0;};// If cars disabled spawn 0 + if (!COSparked) then {_parked=0;};// If parked cars disabled spawn 0 + + +// Create marker over town + _markerID=format ["COSmkrID%1",_name]; + _foo = createmarker [_markerID, _pos]; + _foo setMarkerSize [_sizeX, _sizeY]; + _foo setMarkerShape "ELLIPSE"; + _foo setMarkerBrush "SOLID"; + _foo setMarkerColor "ColorGreen"; + _foo setMarkerText _name; + cosMkrArray set [count cosMkrArray,_foo]; + if (!_showMarker) then {_foo setmarkerAlpha 0;}else{_foo setmarkerAlpha 0.5;};// Show or hide marker + + +// Get positions until we have enough for the population + _roadlist = _pos nearRoads _mSize; + _minPositions=(_civilians+_vehicles+_parked+_slack); + if (count _roadlist < _minPositions) + then { + while {count _roadlist < _minPositions} do + { + _rad=_rad+_rad; + _roadlist = _pos nearRoads (_mSize+_rad); + sleep 0.1; + }; + }; + +// Sort a position for each civilian +_roadPosArray = []; +_roadPosArray resize _minPositions; +_roadlist=_roadlist call BIS_fnc_arrayShuffle; + + for "_n" from 0 to _minPositions do + { + _roadPosArray set [_n, _roadlist select _n]; + }; + +// Save all information + _information=[_civilians,_vehicles,_parked,_roadPosArray]; + _popVar=format["population%1",_foo]; + server setvariable [_popVar,_information]; + +// Create a trigger over town + _trigger = createTrigger ["EmptyDetector",_pos]; + _trigger setTriggerArea [(COS_distance+_sizeX),(COS_distance+_sizeY),0,FALSE]; + _trigger setTriggerActivation ["ANY","PRESENT",true]; + _trigger setTriggerTimeout [1, 1, 1, true]; + if _aerielActivation // Set whether units above 50m high will trigger + then { + _actCond="{vehicle _x in thisList && isplayer _x} count allunits > 0"; + }else{ + _actCond="{vehicle _x in thisList && isplayer _x && ((getPosATL _x) select 2) < 50} count allunits > 0"; + }; + _var=format["trig%1", _markerID]; + _trigAct=format ["null= [%1] execVM ""cos\cosCore.sqf"";server setvariable [%2,true];",str _foo,str _var]; + _trigDe=format ["server setvariable [%1,false];",str _var]; + _trigger setTriggerStatements [_actCond,_trigAct,_trigDe]; + }; + +}foreach (nearestLocations [getArray (configFile >> "CfgWorlds" >> worldName >> "centerPosition"), ["NameCityCapital","NameCity","NameVillage","CityCenter"], 25000]) +whiteListMkrs; + +// All towns have been saved into cos Marker Array. +SERVER setvariable ["COSmarkers",cosMkrArray,true]; +COScomplete=true;publicvariable "COScomplete"; +}; + +// LOCAL SCRIPTS +waituntil {COScomplete}; +_mkrs=SERVER getvariable "COSmarkers";// Use this to get all town markers +null=[] execVM "COS\localScript.sqf";// This shows messages for players during multiplayer + +}; +}; diff --git a/cos/cosPatrol.sqf b/cos/cosPatrol.sqf new file mode 100644 index 0000000..a103101 --- /dev/null +++ b/cos/cosPatrol.sqf @@ -0,0 +1,30 @@ +private ["_waypoints","_findWps"]; +_grpArray=(_this select 0); +_grpArrayTwo=(_this select 1); +_waypoints=(_this select 2); + +_findWps = 4 +round(random 3); +if (count _waypoints < _findWps) then {_findWps=count _waypoints;}; + + { + +_group=_x; +_group setBehaviour "SAFE"; +_group setSpeedMode "LIMITED"; + + _EHkilledIdx = (leader _group) addEventHandler ["FiredNear", {_this call breakPatrol_FNC;}]; + +_shuffleWaypoints=_waypoints call BIS_fnc_arrayShuffle; + for "_i" from 0 to _findWps do { + _wp=_shuffleWaypoints select _i; + _wp = _group addWaypoint [_wp, 0]; + _wp setWaypointType "MOVE"; + _wp setWaypointCompletionRadius 10; + [_group,_i] setWaypointTimeout [0,2,4]; + }; + + _wp1 = _group addWaypoint [_shuffleWaypoints select 0, 0]; + _wp1 setWaypointType "CYCLE"; + _wp1 setWaypointCompletionRadius 10; + + }foreach _grpArrayTwo+_grpArray; diff --git a/cos/localScript.sqf b/cos/localScript.sqf new file mode 100644 index 0000000..9b365b4 --- /dev/null +++ b/cos/localScript.sqf @@ -0,0 +1,28 @@ +"COSTownLabel" addPublicVariableEventHandler +{ +private ["_GHint","_GHint1","_Hintg","_sizeX","_sizeY"]; +_Hintg = (_this select 1); +_GHint = (_Hintg select 0); +_GHint1= (_Hintg select 1); + _sizeX=getMarkerSize _GHint1 select 0; + _sizeY=getMarkerSize _GHint1 select 1; + + if (_sizeY>_sizeX) then {_mSize=_sizeY}else{_mSize=_sizeX}; + if (player distance markerpos _GHint1 < (COS_distance+ _mSize)) + then { + _population=format ["Population: %1",_GHint]; + 0=[markertext _GHint1,_population] spawn BIS_fnc_infoText; + }; +}; + +//ENABLE GLOBAL SIDECHAT +"COSGlobalSideChat" addPublicVariableEventHandler +{ +private ["_GHint","_ghint1","_ghint2","_ghint3","_hintg"]; +_hintg= (_this select 1); +_GHint = (_hintg select 0); +_ghint1= (_hintg select 1); +_ghint2= (_hintg select 2); +_ghint3= (_hintg select 3); +player groupChat (format ["Town:%4 .Civilians:%1 .Vehicles:%2 .Parked:%3",_GHint,_ghint1,_ghint2, _ghint3]); +}; \ No newline at end of file diff --git a/cos/patrolFnc.sqf b/cos/patrolFnc.sqf new file mode 100644 index 0000000..efef83f --- /dev/null +++ b/cos/patrolFnc.sqf @@ -0,0 +1,14 @@ +_group=group (_this select 0); +_group setBehaviour "Combat"; +_group setSpeedMode "Normal"; + + if (side (_this select 0) == CIVILIAN) + then { + _index = currentWaypoint group player; + deleteWaypoint [_group, _index]; + _group allowFleeing 1; + }else{ + deleteWaypoint [_group, _index]; + }; + +(_this select 0) removeAllEventHandlers "FiredNear"; \ No newline at end of file diff --git a/mission.sqm b/mission.sqm index 3db84b9..18da353 100644 --- a/mission.sqm +++ b/mission.sqm @@ -108,7 +108,7 @@ class Mission }; class Groups { - items=46; + items=47; class Item0 { side="LOGIC"; @@ -2392,15 +2392,34 @@ class Mission }; }; }; + class Item46 + { + side="LOGIC"; + class Vehicles + { + items=1; + class Item0 + { + position[]={15048.764,0,14542.713}; + id=93; + side="LOGIC"; + vehicle="Logic"; + leader=1; + skill=0.60000002; + text="SERVER"; + init="null=[] execVM ""cos\cosInit.sqf"";"; + }; + }; + }; }; class Vehicles { - items=588; + items=590; class Item0 { position[]={26751.092,20.63332,24620.148}; azimut=140; - id=93; + id=94; side="EMPTY"; vehicle="Flag_NATO_F"; skill=0.60000002; @@ -2410,7 +2429,7 @@ class Mission { position[]={26679.932,20.602068,24585.189}; azimut=220; - id=94; + id=95; side="EMPTY"; vehicle="Land_HelipadEmpty_F"; skill=0.60000002; @@ -2420,7 +2439,7 @@ class Mission { position[]={26853.795,22.974501,24627.014}; azimut=311; - id=95; + id=96; side="EMPTY"; vehicle="Land_HelipadSquare_F"; leader=1; @@ -2431,7 +2450,7 @@ class Mission { position[]={26840.758,23.258154,24611.885}; azimut=311; - id=96; + id=97; side="EMPTY"; vehicle="Land_HelipadSquare_F"; leader=1; @@ -2442,7 +2461,7 @@ class Mission { position[]={26814.207,23.667765,24580.438}; azimut=311; - id=97; + id=98; side="EMPTY"; vehicle="Land_HelipadSquare_F"; leader=1; @@ -2453,7 +2472,7 @@ class Mission { position[]={26827.711,23.467793,24596.537}; azimut=311; - id=98; + id=99; side="EMPTY"; vehicle="Land_HelipadSquare_F"; leader=1; @@ -2464,7 +2483,7 @@ class Mission { position[]={26789.77,20.045813,24677.568}; azimut=220; - id=99; + id=100; side="EMPTY"; vehicle="Land_HelipadRescue_F"; leader=1; @@ -2475,7 +2494,7 @@ class Mission { position[]={26616.869,15.110755,24661.656}; azimut=130; - id=100; + id=101; side="EMPTY"; vehicle="Land_HelipadSquare_F"; leader=1; @@ -2485,7 +2504,7 @@ class Mission class Item8 { position[]={26736.77,20.429853,24618.402}; - id=101; + id=102; side="EMPTY"; vehicle="Land_HelipadEmpty_F"; leader=1; @@ -2496,7 +2515,7 @@ class Mission { position[]={26851.818,22.539137,24635.105}; azimut=131; - id=102; + id=103; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; @@ -2507,7 +2526,7 @@ class Mission { position[]={26838.764,22.751152,24620.033}; azimut=131; - id=103; + id=104; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; @@ -2518,7 +2537,7 @@ class Mission { position[]={26825.6,23.232862,24604.789}; azimut=131; - id=104; + id=105; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; @@ -2529,7 +2548,7 @@ class Mission { position[]={26812.158,23.496078,24588.58}; azimut=131; - id=105; + id=106; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; @@ -2540,7 +2559,7 @@ class Mission { position[]={26625.193,15.63499,24661.625}; azimut=310; - id=106; + id=107; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; @@ -2551,7 +2570,7 @@ class Mission { position[]={26697.639,21.706532,24557.914}; azimut=40; - id=107; + id=108; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; @@ -2562,7 +2581,7 @@ class Mission { position[]={26700.02,21.519724,24568.592}; azimut=220; - id=108; + id=109; side="EMPTY"; vehicle="Land_HelipadEmpty_F"; leader=1; @@ -2573,7 +2592,7 @@ class Mission { position[]={26722.615,22.624599,24507.516}; azimut=310; - id=109; + id=110; side="EMPTY"; vehicle="Land_HelipadEmpty_F"; leader=1; @@ -2584,7 +2603,7 @@ class Mission { position[]={26627.027,18.492004,24551.48}; azimut=140; - id=110; + id=111; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -2594,7 +2613,7 @@ class Mission { position[]={26630.387,18.720192,24554.295}; azimut=140; - id=111; + id=112; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -2604,7 +2623,7 @@ class Mission { position[]={26640.418,19.333132,24562.721}; azimut=140; - id=112; + id=113; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -2614,7 +2633,7 @@ class Mission { position[]={26637.129,19.169079,24559.951}; azimut=140; - id=113; + id=114; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -2624,7 +2643,7 @@ class Mission { position[]={26633.701,18.948469,24557.066}; azimut=140; - id=114; + id=115; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -2634,7 +2653,7 @@ class Mission { position[]={26642.506,19.42977,24562.521}; azimut=50; - id=115; + id=116; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -2644,7 +2663,7 @@ class Mission { position[]={26653.719,19.988251,24549.172}; azimut=50; - id=116; + id=117; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -2654,7 +2673,7 @@ class Mission { position[]={26651.199,19.898941,24552.17}; azimut=50; - id=117; + id=118; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -2664,7 +2683,7 @@ class Mission { position[]={26644.934,19.568123,24559.594}; azimut=50; - id=118; + id=119; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -2674,7 +2693,7 @@ class Mission { position[]={26651.652,19.946342,24552.939}; azimut=5; - id=119; + id=120; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -2684,7 +2703,7 @@ class Mission { position[]={26645.73,19.599613,24559.926}; azimut=95; - id=120; + id=121; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -2694,7 +2713,7 @@ class Mission { position[]={26640.117,19.109953,24535.861}; azimut=140; - id=121; + id=122; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -2704,7 +2723,7 @@ class Mission { position[]={26643.477,19.330631,24538.676}; azimut=140; - id=122; + id=123; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -2714,7 +2733,7 @@ class Mission { position[]={26653.508,19.941353,24547.1}; azimut=140; - id=123; + id=124; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -2724,7 +2743,7 @@ class Mission { position[]={26650.219,19.73543,24544.33}; azimut=140; - id=124; + id=125; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -2734,7 +2753,7 @@ class Mission { position[]={26646.791,19.587873,24541.445}; azimut=140; - id=125; + id=126; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -2744,7 +2763,7 @@ class Mission { position[]={26652.77,19.967319,24550.83}; azimut=230; - id=126; + id=127; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; @@ -2755,7 +2774,7 @@ class Mission { position[]={26696.594,19.424883,24644.807}; azimut=220; - id=127; + id=128; side="EMPTY"; vehicle="Land_TableDesk_F"; leader=1; @@ -2766,7 +2785,7 @@ class Mission { position[]={26695.984,19.363281,24644.219}; azimut=220; - id=128; + id=129; side="EMPTY"; vehicle="Land_OfficeChair_01_F"; leader=1; @@ -2776,7 +2795,7 @@ class Mission { position[]={26698.777,19.607979,24646.449}; azimut=40; - id=129; + id=130; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -2786,7 +2805,7 @@ class Mission { position[]={26698.027,19.524288,24647.043}; azimut=40; - id=130; + id=131; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -2796,7 +2815,7 @@ class Mission { position[]={26697.188,19.426514,24647.748}; azimut=40; - id=131; + id=132; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -2806,7 +2825,7 @@ class Mission { position[]={26693.893,19.035419,24650.426}; azimut=40; - id=132; + id=133; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -2816,7 +2835,7 @@ class Mission { position[]={26696.391,19.332754,24648.361}; azimut=40; - id=133; + id=134; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -2826,7 +2845,7 @@ class Mission { position[]={26694.643,19.12458,24649.813}; azimut=40; - id=134; + id=135; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -2836,7 +2855,7 @@ class Mission { position[]={26695.506,19.227989,24649.063}; azimut=40; - id=135; + id=136; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -2846,7 +2865,7 @@ class Mission { position[]={26697.381,19.504669,24643.703}; azimut=220; - id=136; + id=137; side="EMPTY"; vehicle="Land_Laptop_unfolded_F"; leader=1; @@ -2858,7 +2877,7 @@ class Mission { position[]={26781.301,19.899694,24676.133}; azimut=40; - id=137; + id=138; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; @@ -2869,7 +2888,7 @@ class Mission { position[]={26677.564,20.788641,24575.168}; azimut=40; - id=138; + id=139; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; @@ -2880,7 +2899,7 @@ class Mission { position[]={26644.076,16.950621,24650.637}; azimut=220; - id=139; + id=140; side="EMPTY"; vehicle="Land_HelipadEmpty_F"; skill=0.60000002; @@ -2890,7 +2909,7 @@ class Mission { position[]={26648.682,16.888273,24656.238}; azimut=220; - id=140; + id=141; side="EMPTY"; vehicle="Land_HelipadEmpty_F"; skill=0.60000002; @@ -2900,7 +2919,7 @@ class Mission { position[]={26652.535,16.932177,24661.273}; azimut=220; - id=141; + id=142; side="EMPTY"; vehicle="Land_HelipadEmpty_F"; skill=0.60000002; @@ -2910,7 +2929,7 @@ class Mission { position[]={26635.229,16.312897,24658.033}; azimut=220; - id=142; + id=143; side="EMPTY"; vehicle="Land_HelipadEmpty_F"; skill=0.60000002; @@ -2920,7 +2939,7 @@ class Mission { position[]={26639.779,16.327471,24663.541}; azimut=220; - id=143; + id=144; side="EMPTY"; vehicle="Land_HelipadEmpty_F"; skill=0.60000002; @@ -2930,7 +2949,7 @@ class Mission { position[]={26643.854,16.254807,24668.561}; azimut=220; - id=144; + id=145; side="EMPTY"; vehicle="Land_HelipadEmpty_F"; skill=0.60000002; @@ -2940,7 +2959,7 @@ class Mission { position[]={26641.807,17.085974,24644.063}; azimut=40; - id=145; + id=146; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; @@ -2951,7 +2970,7 @@ class Mission { position[]={26669.105,18.929838,24620.211}; azimut=40; - id=146; + id=147; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2960,7 +2979,7 @@ class Mission { position[]={26675.096,19.145273,24615.203}; azimut=40; - id=147; + id=148; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2969,7 +2988,7 @@ class Mission { position[]={26665.881,18.562429,24626.85}; azimut=130; - id=148; + id=149; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2978,7 +2997,7 @@ class Mission { position[]={26670.225,18.580593,24632.055}; azimut=130; - id=149; + id=150; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2987,7 +3006,7 @@ class Mission { position[]={26675.172,18.44449,24638.094}; azimut=130; - id=150; + id=151; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -2996,7 +3015,7 @@ class Mission { position[]={26688.559,18.534348,24648.607}; azimut=130; - id=151; + id=152; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3005,7 +3024,7 @@ class Mission { position[]={26693.688,18.753759,24654.469}; azimut=130; - id=152; + id=153; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3014,7 +3033,7 @@ class Mission { position[]={26698.727,18.506804,24660.373}; azimut=130; - id=153; + id=154; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3023,7 +3042,7 @@ class Mission { position[]={26713.186,19.482183,24658.797}; azimut=40; - id=154; + id=155; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3032,7 +3051,7 @@ class Mission { position[]={26707.221,18.721292,24663.738}; azimut=40; - id=155; + id=156; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3041,7 +3060,7 @@ class Mission { position[]={26701.9,18.207329,24664.418}; azimut=130; - id=156; + id=157; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3050,7 +3069,7 @@ class Mission { position[]={26681.018,19.525734,24610.256}; azimut=40; - id=157; + id=158; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3059,7 +3078,7 @@ class Mission { position[]={26718.061,19.875248,24660.645}; azimut=130; - id=158; + id=159; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3068,7 +3087,7 @@ class Mission { position[]={26723.012,20.634399,24666.549}; azimut=130; - id=159; + id=160; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3077,7 +3096,7 @@ class Mission { position[]={26728.184,20.3808,24672.498}; azimut=130; - id=160; + id=161; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3086,7 +3105,7 @@ class Mission { position[]={26733.225,20.088259,24678.447}; azimut=130; - id=161; + id=162; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3095,7 +3114,7 @@ class Mission { position[]={26738.17,20.095839,24684.396}; azimut=130; - id=162; + id=163; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3104,7 +3123,7 @@ class Mission { position[]={26743.029,19.922901,24690.256}; azimut=130; - id=163; + id=164; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3113,7 +3132,7 @@ class Mission { position[]={26748.291,19.106367,24696.434}; azimut=130; - id=164; + id=165; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3122,7 +3141,7 @@ class Mission { position[]={26753.375,18.435715,24702.428}; azimut=130; - id=165; + id=166; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3131,7 +3150,7 @@ class Mission { position[]={26767.789,18.903276,24699.6}; azimut=130; - id=166; + id=167; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3140,7 +3159,7 @@ class Mission { position[]={26862.461,26.275167,24486.096}; azimut=130; - id=167; + id=168; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3149,7 +3168,7 @@ class Mission { position[]={26846.166,26.304111,24475.688}; azimut=130; - id=168; + id=169; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3158,7 +3177,7 @@ class Mission { position[]={26849.023,26.257971,24479.457}; azimut=130; - id=169; + id=170; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3167,7 +3186,7 @@ class Mission { position[]={26854.064,26.214239,24485.541}; azimut=130; - id=170; + id=171; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3176,7 +3195,7 @@ class Mission { position[]={26858.309,26.254385,24485.82}; azimut=40; - id=171; + id=172; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3185,7 +3204,7 @@ class Mission { position[]={26686.828,19.831408,24605.326}; azimut=40; - id=172; + id=173; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3194,7 +3213,7 @@ class Mission { position[]={26692.869,19.961664,24600.311}; azimut=40; - id=173; + id=174; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3203,7 +3222,7 @@ class Mission { position[]={26698.906,20.382103,24595.242}; azimut=40; - id=174; + id=175; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3212,7 +3231,7 @@ class Mission { position[]={26705.203,20.690088,24590.121}; azimut=40; - id=175; + id=176; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3221,7 +3240,7 @@ class Mission { position[]={26711.395,20.825146,24584.9}; azimut=40; - id=176; + id=177; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3230,7 +3249,7 @@ class Mission { position[]={26717.488,21.112198,24579.779}; azimut=40; - id=177; + id=178; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3239,7 +3258,7 @@ class Mission { position[]={26723.629,21.47473,24574.609}; azimut=40; - id=178; + id=179; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3248,7 +3267,7 @@ class Mission { position[]={26735.711,22.108635,24564.574}; azimut=40; - id=179; + id=180; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3257,7 +3276,7 @@ class Mission { position[]={26753.672,22.806257,24549.717}; azimut=40; - id=180; + id=181; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3266,7 +3285,7 @@ class Mission { position[]={26759.754,23.050566,24544.629}; azimut=40; - id=181; + id=182; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3275,7 +3294,7 @@ class Mission { position[]={26765.793,23.300764,24539.59}; azimut=40; - id=182; + id=183; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3284,7 +3303,7 @@ class Mission { position[]={26771.691,23.534,24534.641}; azimut=40; - id=183; + id=184; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3293,7 +3312,7 @@ class Mission { position[]={26777.637,23.777401,24529.691}; azimut=40; - id=184; + id=185; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3302,7 +3321,7 @@ class Mission { position[]={26783.637,24.040606,24524.738}; azimut=40; - id=185; + id=186; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3311,7 +3330,7 @@ class Mission { position[]={26789.537,24.309319,24519.744}; azimut=40; - id=186; + id=187; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3320,7 +3339,7 @@ class Mission { position[]={26795.574,24.505087,24514.701}; azimut=40; - id=187; + id=188; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3329,7 +3348,7 @@ class Mission { position[]={26801.523,24.613827,24509.697}; azimut=40; - id=188; + id=189; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3338,7 +3357,7 @@ class Mission { position[]={26807.396,24.778641,24504.662}; azimut=40; - id=189; + id=190; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3347,7 +3366,7 @@ class Mission { position[]={26813.273,24.989782,24499.719}; azimut=40; - id=190; + id=191; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3356,7 +3375,7 @@ class Mission { position[]={26819.146,25.263405,24494.676}; azimut=40; - id=191; + id=192; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3365,7 +3384,7 @@ class Mission { position[]={26825.072,25.522869,24489.557}; azimut=40; - id=192; + id=193; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3374,7 +3393,7 @@ class Mission { position[]={26830.973,25.763977,24484.506}; azimut=40; - id=193; + id=194; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3383,7 +3402,7 @@ class Mission { position[]={26836.918,26.006767,24479.51}; azimut=40; - id=194; + id=195; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3392,7 +3411,7 @@ class Mission { position[]={26841.957,26.258018,24475.379}; azimut=40; - id=195; + id=196; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3401,7 +3420,7 @@ class Mission { position[]={26748.477,22.910776,24543.535}; azimut=40; - id=196; + id=197; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3410,7 +3429,7 @@ class Mission { position[]={26754.531,23.129507,24538.57}; azimut=40; - id=197; + id=198; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3419,7 +3438,7 @@ class Mission { position[]={26760.432,23.353369,24533.527}; azimut=40; - id=198; + id=199; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3428,7 +3447,7 @@ class Mission { position[]={26766.422,23.588297,24528.398}; azimut=40; - id=199; + id=200; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3437,7 +3456,7 @@ class Mission { position[]={26772.596,23.838976,24523.039}; azimut=42; - id=200; + id=201; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3446,7 +3465,7 @@ class Mission { position[]={26778.359,24.087416,24517.863}; azimut=42; - id=201; + id=202; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3455,7 +3474,7 @@ class Mission { position[]={26784.305,24.348587,24512.414}; azimut=42; - id=202; + id=203; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3464,7 +3483,7 @@ class Mission { position[]={26790.25,24.609047,24507.1}; azimut=42; - id=203; + id=204; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3473,7 +3492,7 @@ class Mission { position[]={26795.93,24.807636,24501.836}; azimut=42; - id=204; + id=205; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3482,7 +3501,7 @@ class Mission { position[]={26801.824,24.990799,24496.66}; azimut=42; - id=205; + id=206; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3491,7 +3510,7 @@ class Mission { position[]={26807.904,25.190668,24491.33}; azimut=42; - id=206; + id=207; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3500,7 +3519,7 @@ class Mission { position[]={26813.803,25.410355,24486.105}; azimut=42; - id=207; + id=208; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3509,7 +3528,7 @@ class Mission { position[]={26819.75,25.650244,24480.889}; azimut=42; - id=208; + id=209; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3518,7 +3537,7 @@ class Mission { position[]={26825.471,25.907431,24475.803}; azimut=42; - id=209; + id=210; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3527,7 +3546,7 @@ class Mission { position[]={26831.461,26.210234,24470.535}; azimut=42; - id=210; + id=211; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3536,7 +3555,7 @@ class Mission { position[]={26837.318,26.558489,24465.314}; azimut=42; - id=211; + id=212; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3545,7 +3564,7 @@ class Mission { position[]={26841.299,26.715721,24461.711}; azimut=42; - id=212; + id=213; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3554,7 +3573,7 @@ class Mission { position[]={26848.191,26.498379,24469.76}; azimut=42; - id=213; + id=214; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3563,7 +3582,7 @@ class Mission { position[]={26867.324,26.16889,24491.773}; azimut=131; - id=214; + id=215; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3572,7 +3591,7 @@ class Mission { position[]={26872.457,26.057894,24497.629}; azimut=131; - id=215; + id=216; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3581,7 +3600,7 @@ class Mission { position[]={26877.721,25.970894,24503.623}; azimut=131; - id=216; + id=217; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3590,7 +3609,7 @@ class Mission { position[]={26882.986,25.970659,24509.619}; azimut=131; - id=217; + id=218; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3599,7 +3618,7 @@ class Mission { position[]={26888.205,26.061222,24515.475}; azimut=131; - id=218; + id=219; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3608,7 +3627,7 @@ class Mission { position[]={26893.457,26.071909,24521.42}; azimut=131; - id=219; + id=220; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3617,7 +3636,7 @@ class Mission { position[]={26898.535,26.090406,24527.309}; azimut=131; - id=220; + id=221; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3626,7 +3645,7 @@ class Mission { position[]={26903.625,25.995604,24533.1}; azimut=131; - id=221; + id=222; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3635,7 +3654,7 @@ class Mission { position[]={26908.693,25.799734,24538.932}; azimut=131; - id=222; + id=223; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3644,7 +3663,7 @@ class Mission { position[]={26913.732,25.75485,24544.697}; azimut=131; - id=223; + id=224; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3653,7 +3672,7 @@ class Mission { position[]={26918.863,25.678379,24550.646}; azimut=131; - id=224; + id=225; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3662,7 +3681,7 @@ class Mission { position[]={26924.084,25.598967,24556.598}; azimut=131; - id=225; + id=226; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3671,7 +3690,7 @@ class Mission { position[]={26929.213,25.367577,24562.457}; azimut=131; - id=226; + id=227; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3680,7 +3699,7 @@ class Mission { position[]={26934.432,25.16185,24568.273}; azimut=131; - id=227; + id=228; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3689,7 +3708,7 @@ class Mission { position[]={26939.643,24.914995,24574.367}; azimut=131; - id=228; + id=229; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3698,7 +3717,7 @@ class Mission { position[]={26944.768,24.723801,24580.27}; azimut=131; - id=229; + id=230; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3707,7 +3726,7 @@ class Mission { position[]={26949.945,24.507494,24586.131}; azimut=131; - id=230; + id=231; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3716,7 +3735,7 @@ class Mission { position[]={26954.982,24.270988,24591.898}; azimut=131; - id=231; + id=232; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3725,7 +3744,7 @@ class Mission { position[]={26959.998,24.078382,24597.666}; azimut=131; - id=232; + id=233; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3734,7 +3753,7 @@ class Mission { position[]={26964.947,23.839434,24603.301}; azimut=131; - id=233; + id=234; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3743,7 +3762,7 @@ class Mission { position[]={26969.887,23.669096,24609.111}; azimut=129; - id=234; + id=235; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3752,7 +3771,7 @@ class Mission { position[]={26974.563,23.547907,24614.879}; azimut=129; - id=235; + id=236; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3761,7 +3780,7 @@ class Mission { position[]={26979.465,23.420652,24620.967}; azimut=129; - id=236; + id=237; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3770,7 +3789,7 @@ class Mission { position[]={26984.383,23.302431,24626.895}; azimut=130; - id=237; + id=238; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3779,7 +3798,7 @@ class Mission { position[]={26989.193,23.168716,24632.617}; azimut=130; - id=238; + id=239; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3788,7 +3807,7 @@ class Mission { position[]={26994.098,23.125713,24638.521}; azimut=130; - id=239; + id=240; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3797,7 +3816,7 @@ class Mission { position[]={26998.549,23.032211,24644.133}; azimut=131; - id=240; + id=241; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3806,7 +3825,7 @@ class Mission { position[]={27003.813,22.944569,24650.127}; azimut=131; - id=241; + id=242; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3815,7 +3834,7 @@ class Mission { position[]={27009.078,22.876373,24656.123}; azimut=131; - id=242; + id=243; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3824,7 +3843,7 @@ class Mission { position[]={27014.297,22.793158,24661.979}; azimut=131; - id=243; + id=244; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3833,7 +3852,7 @@ class Mission { position[]={27019.549,22.733606,24667.924}; azimut=131; - id=244; + id=245; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3842,7 +3861,7 @@ class Mission { position[]={27024.627,22.639164,24673.813}; azimut=131; - id=245; + id=246; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3851,7 +3870,7 @@ class Mission { position[]={27029.717,22.593636,24679.604}; azimut=131; - id=246; + id=247; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3860,7 +3879,7 @@ class Mission { position[]={27034.785,22.531475,24685.436}; azimut=131; - id=247; + id=248; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3869,7 +3888,7 @@ class Mission { position[]={27039.824,22.520269,24691.201}; azimut=131; - id=248; + id=249; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3878,7 +3897,7 @@ class Mission { position[]={27044.955,22.501562,24697.15}; azimut=131; - id=249; + id=250; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3887,7 +3906,7 @@ class Mission { position[]={27050.176,22.527058,24703.102}; azimut=131; - id=250; + id=251; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3896,7 +3915,7 @@ class Mission { position[]={27055.305,22.568148,24708.961}; azimut=131; - id=251; + id=252; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3905,7 +3924,7 @@ class Mission { position[]={27060.523,22.677519,24714.777}; azimut=131; - id=252; + id=253; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3914,7 +3933,7 @@ class Mission { position[]={27065.734,22.804249,24720.871}; azimut=131; - id=253; + id=254; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3923,7 +3942,7 @@ class Mission { position[]={27070.859,22.884298,24726.773}; azimut=131; - id=254; + id=255; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3932,7 +3951,7 @@ class Mission { position[]={27076.037,22.976995,24732.635}; azimut=131; - id=255; + id=256; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3941,7 +3960,7 @@ class Mission { position[]={27081.074,22.916277,24738.402}; azimut=131; - id=256; + id=257; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3950,7 +3969,7 @@ class Mission { position[]={27086.09,22.839939,24744.17}; azimut=131; - id=257; + id=258; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3959,7 +3978,7 @@ class Mission { position[]={27091.039,22.81329,24749.805}; azimut=131; - id=258; + id=259; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3968,7 +3987,7 @@ class Mission { position[]={27095.979,22.816433,24755.615}; azimut=129; - id=259; + id=260; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3977,7 +3996,7 @@ class Mission { position[]={27100.654,22.78149,24761.383}; azimut=129; - id=260; + id=261; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3986,7 +4005,7 @@ class Mission { position[]={27105.557,22.740541,24767.471}; azimut=129; - id=261; + id=262; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -3995,7 +4014,7 @@ class Mission { position[]={27110.475,22.69191,24773.398}; azimut=130; - id=262; + id=263; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4004,7 +4023,7 @@ class Mission { position[]={27115.285,22.659792,24779.121}; azimut=130; - id=263; + id=264; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4013,7 +4032,7 @@ class Mission { position[]={27120.189,22.602074,24785.025}; azimut=130; - id=264; + id=265; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4022,7 +4041,7 @@ class Mission { position[]={27124.982,22.553291,24790.326}; azimut=131; - id=265; + id=266; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4031,7 +4050,7 @@ class Mission { position[]={27130.246,22.579947,24796.32}; azimut=131; - id=266; + id=267; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4040,7 +4059,7 @@ class Mission { position[]={27135.512,22.599806,24802.316}; azimut=131; - id=267; + id=268; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4049,7 +4068,7 @@ class Mission { position[]={27140.73,22.612692,24808.172}; azimut=131; - id=268; + id=269; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4058,7 +4077,7 @@ class Mission { position[]={27145.982,22.683754,24814.117}; azimut=131; - id=269; + id=270; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4067,7 +4086,7 @@ class Mission { position[]={27151.061,22.888737,24820.006}; azimut=131; - id=270; + id=271; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4076,7 +4095,7 @@ class Mission { position[]={27156.15,23.137646,24825.797}; azimut=131; - id=271; + id=272; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4085,7 +4104,7 @@ class Mission { position[]={27161.219,23.360374,24831.629}; azimut=131; - id=272; + id=273; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4094,7 +4113,7 @@ class Mission { position[]={27166.258,23.578741,24837.395}; azimut=131; - id=273; + id=274; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4103,7 +4122,7 @@ class Mission { position[]={27171.389,23.751812,24843.344}; azimut=131; - id=274; + id=275; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4112,7 +4131,7 @@ class Mission { position[]={27176.609,23.918591,24849.295}; azimut=131; - id=275; + id=276; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4121,7 +4140,7 @@ class Mission { position[]={27181.738,24.140285,24855.154}; azimut=131; - id=276; + id=277; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4130,7 +4149,7 @@ class Mission { position[]={27186.957,24.380737,24860.971}; azimut=131; - id=277; + id=278; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4139,7 +4158,7 @@ class Mission { position[]={27192.168,24.64662,24867.064}; azimut=131; - id=278; + id=279; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4148,7 +4167,7 @@ class Mission { position[]={27197.293,24.884598,24872.967}; azimut=131; - id=279; + id=280; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4157,7 +4176,7 @@ class Mission { position[]={27202.471,25.076929,24878.828}; azimut=131; - id=280; + id=281; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4166,7 +4185,7 @@ class Mission { position[]={27207.508,25.304981,24884.596}; azimut=131; - id=281; + id=282; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4175,7 +4194,7 @@ class Mission { position[]={27212.523,25.583986,24890.363}; azimut=131; - id=282; + id=283; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4184,7 +4203,7 @@ class Mission { position[]={27217.473,25.804237,24895.998}; azimut=131; - id=283; + id=284; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4193,7 +4212,7 @@ class Mission { position[]={27222.412,26.03685,24901.809}; azimut=129; - id=284; + id=285; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4202,7 +4221,7 @@ class Mission { position[]={27227.088,26.342924,24907.576}; azimut=129; - id=285; + id=286; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4211,7 +4230,7 @@ class Mission { position[]={27231.99,26.66184,24913.664}; azimut=129; - id=286; + id=287; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4220,7 +4239,7 @@ class Mission { position[]={27236.908,26.888828,24919.592}; azimut=130; - id=287; + id=288; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4229,7 +4248,7 @@ class Mission { position[]={26911.383,20.310577,24721.336}; azimut=131; - id=288; + id=289; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4238,7 +4257,7 @@ class Mission { position[]={26915.623,20.318466,24726.201}; azimut=131; - id=289; + id=290; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4247,7 +4266,7 @@ class Mission { position[]={26920.889,20.2661,24732.197}; azimut=131; - id=290; + id=291; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4256,7 +4275,7 @@ class Mission { position[]={26926.107,20.252979,24738.053}; azimut=131; - id=291; + id=292; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4265,7 +4284,7 @@ class Mission { position[]={26931.359,20.199335,24743.998}; azimut=131; - id=292; + id=293; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4274,7 +4293,7 @@ class Mission { position[]={26936.438,20.289927,24749.887}; azimut=131; - id=293; + id=294; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4283,7 +4302,7 @@ class Mission { position[]={26941.527,20.380867,24755.678}; azimut=131; - id=294; + id=295; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4292,7 +4311,7 @@ class Mission { position[]={26946.596,20.466448,24761.51}; azimut=131; - id=295; + id=296; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4301,7 +4320,7 @@ class Mission { position[]={26951.635,20.546368,24767.275}; azimut=131; - id=296; + id=297; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4310,7 +4329,7 @@ class Mission { position[]={26956.766,20.691349,24773.225}; azimut=131; - id=297; + id=298; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4319,7 +4338,7 @@ class Mission { position[]={26961.986,20.762905,24779.176}; azimut=131; - id=298; + id=299; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4328,7 +4347,7 @@ class Mission { position[]={26967.115,20.738791,24785.035}; azimut=131; - id=299; + id=300; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4337,7 +4356,7 @@ class Mission { position[]={26972.334,20.732651,24790.852}; azimut=131; - id=300; + id=301; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4346,7 +4365,7 @@ class Mission { position[]={26977.545,20.753572,24796.945}; azimut=131; - id=301; + id=302; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4355,7 +4374,7 @@ class Mission { position[]={26982.67,20.872278,24802.848}; azimut=131; - id=302; + id=303; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4364,7 +4383,7 @@ class Mission { position[]={26987.848,21.078085,24808.709}; azimut=131; - id=303; + id=304; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4373,7 +4392,7 @@ class Mission { position[]={26992.885,21.255266,24814.477}; azimut=131; - id=304; + id=305; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4382,7 +4401,7 @@ class Mission { position[]={26997.9,21.405054,24820.244}; azimut=131; - id=305; + id=306; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4391,7 +4410,7 @@ class Mission { position[]={27002.85,21.514683,24825.879}; azimut=131; - id=306; + id=307; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4400,7 +4419,7 @@ class Mission { position[]={27007.789,21.667664,24831.689}; azimut=129; - id=307; + id=308; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4409,7 +4428,7 @@ class Mission { position[]={27012.465,21.917414,24837.457}; azimut=129; - id=308; + id=309; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4418,7 +4437,7 @@ class Mission { position[]={27017.367,22.3155,24843.545}; azimut=129; - id=309; + id=310; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4427,7 +4446,7 @@ class Mission { position[]={27022.285,22.602488,24849.473}; azimut=130; - id=310; + id=311; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4436,7 +4455,7 @@ class Mission { position[]={27027.096,22.806007,24855.195}; azimut=130; - id=311; + id=312; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4445,7 +4464,7 @@ class Mission { position[]={27032,22.939093,24861.1}; azimut=130; - id=312; + id=313; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4454,7 +4473,7 @@ class Mission { position[]={27037.051,23.122993,24866.682}; azimut=131; - id=313; + id=314; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4463,7 +4482,7 @@ class Mission { position[]={27042.486,23.302736,24872.678}; azimut=131; - id=314; + id=315; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4472,7 +4491,7 @@ class Mission { position[]={27047.82,23.371313,24878.596}; azimut=131; - id=315; + id=316; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4481,7 +4500,7 @@ class Mission { position[]={27053.211,23.42511,24884.451}; azimut=131; - id=316; + id=317; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4490,7 +4509,7 @@ class Mission { position[]={27058.461,23.537548,24890.225}; azimut=131; - id=317; + id=318; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4499,7 +4518,7 @@ class Mission { position[]={27063.656,23.660736,24896.055}; azimut=131; - id=318; + id=319; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4508,7 +4527,7 @@ class Mission { position[]={27068.918,23.764055,24901.557}; azimut=131; - id=319; + id=320; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4517,7 +4536,7 @@ class Mission { position[]={27073.986,23.903282,24907.389}; azimut=131; - id=320; + id=321; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4526,7 +4545,7 @@ class Mission { position[]={27079.025,24.034636,24913.154}; azimut=131; - id=321; + id=322; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4535,7 +4554,7 @@ class Mission { position[]={27084.156,24.206724,24919.104}; azimut=131; - id=322; + id=323; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4544,7 +4563,7 @@ class Mission { position[]={27089.377,24.361795,24925.055}; azimut=131; - id=323; + id=324; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4553,7 +4572,7 @@ class Mission { position[]={27094.506,24.547764,24930.914}; azimut=131; - id=324; + id=325; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4562,7 +4581,7 @@ class Mission { position[]={27099.725,24.670773,24936.73}; azimut=131; - id=325; + id=326; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4571,7 +4590,7 @@ class Mission { position[]={27104.936,24.744146,24942.824}; azimut=131; - id=326; + id=327; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4580,7 +4599,7 @@ class Mission { position[]={27110.061,24.759069,24948.727}; azimut=131; - id=327; + id=328; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4589,7 +4608,7 @@ class Mission { position[]={27115.238,24.754801,24954.588}; azimut=131; - id=328; + id=329; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4598,7 +4617,7 @@ class Mission { position[]={27120.275,24.743135,24960.355}; azimut=131; - id=329; + id=330; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4607,7 +4626,7 @@ class Mission { position[]={27125.291,24.611444,24966.123}; azimut=131; - id=330; + id=331; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4616,7 +4635,7 @@ class Mission { position[]={27130.24,24.477238,24971.758}; azimut=131; - id=331; + id=332; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4625,7 +4644,7 @@ class Mission { position[]={27135.18,24.425842,24977.568}; azimut=129; - id=332; + id=333; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4634,7 +4653,7 @@ class Mission { position[]={27139.855,24.455009,24983.336}; azimut=129; - id=333; + id=334; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4643,7 +4662,7 @@ class Mission { position[]={27144.758,24.476776,24989.424}; azimut=129; - id=334; + id=335; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4652,7 +4671,7 @@ class Mission { position[]={27149.676,24.446703,24995.352}; azimut=130; - id=335; + id=336; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4661,7 +4680,7 @@ class Mission { position[]={27154.486,24.357185,25001.074}; azimut=130; - id=336; + id=337; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4670,7 +4689,7 @@ class Mission { position[]={27158.758,24.122019,25006.242}; azimut=130; - id=337; + id=338; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4679,7 +4698,7 @@ class Mission { position[]={26757.533,18.530378,24702.711}; azimut=40; - id=338; + id=339; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4688,7 +4707,7 @@ class Mission { position[]={26762.852,19.016323,24698.256}; azimut=40; - id=339; + id=340; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4697,7 +4716,7 @@ class Mission { position[]={26771.318,18.572186,24703.777}; azimut=130; - id=340; + id=341; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4706,7 +4725,7 @@ class Mission { position[]={26776.537,18.482143,24705.404}; azimut=40; - id=341; + id=342; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4715,7 +4734,7 @@ class Mission { position[]={26782.381,18.893139,24700.438}; azimut=40; - id=342; + id=343; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4724,7 +4743,7 @@ class Mission { position[]={26788.217,19.338865,24695.418}; azimut=40; - id=343; + id=344; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4733,7 +4752,7 @@ class Mission { position[]={26793.797,19.604189,24690.607}; azimut=40; - id=344; + id=345; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4742,7 +4761,7 @@ class Mission { position[]={26799.631,19.851816,24685.691}; azimut=40; - id=345; + id=346; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4751,7 +4770,7 @@ class Mission { position[]={26805.871,20.243877,24680.418}; azimut=40; - id=346; + id=347; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4760,7 +4779,7 @@ class Mission { position[]={26811.805,20.58449,24679.453}; azimut=338; - id=347; + id=348; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4769,7 +4788,7 @@ class Mission { position[]={26817.385,20.728291,24681.738}; azimut=338; - id=348; + id=349; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4778,7 +4797,7 @@ class Mission { position[]={26824.863,20.753666,24684.656}; azimut=338; - id=349; + id=350; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4787,7 +4806,7 @@ class Mission { position[]={26832.178,20.828703,24687.523}; azimut=338; - id=350; + id=351; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4796,7 +4815,7 @@ class Mission { position[]={26839.596,20.889597,24690.496}; azimut=338; - id=351; + id=352; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4805,7 +4824,7 @@ class Mission { position[]={26846.814,20.885517,24693.463}; azimut=338; - id=352; + id=353; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4814,7 +4833,7 @@ class Mission { position[]={26854.287,20.995777,24696.484}; azimut=338; - id=353; + id=354; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4823,7 +4842,7 @@ class Mission { position[]={26861.504,20.972878,24699.352}; azimut=338; - id=354; + id=355; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4832,7 +4851,7 @@ class Mission { position[]={26868.822,20.862839,24702.271}; azimut=338; - id=355; + id=356; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4841,7 +4860,7 @@ class Mission { position[]={26875.896,20.877035,24705.063}; azimut=338; - id=356; + id=357; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4850,7 +4869,7 @@ class Mission { position[]={26883.061,20.712994,24707.932}; azimut=338; - id=357; + id=358; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4859,7 +4878,7 @@ class Mission { position[]={26889.92,20.676723,24710.799}; azimut=338; - id=358; + id=359; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4868,7 +4887,7 @@ class Mission { position[]={26897.137,20.607569,24713.82}; azimut=338; - id=359; + id=360; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4877,7 +4896,7 @@ class Mission { position[]={26904.762,20.454643,24716.941}; azimut=338; - id=360; + id=361; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4886,7 +4905,7 @@ class Mission { position[]={27236.834,27.019085,24924.313}; azimut=48; - id=361; + id=362; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4895,7 +4914,7 @@ class Mission { position[]={27231.756,26.981491,24929.971}; azimut=48; - id=362; + id=363; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4904,7 +4923,7 @@ class Mission { position[]={27226.738,26.676661,24935.514}; azimut=48; - id=363; + id=364; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4913,7 +4932,7 @@ class Mission { position[]={27221.484,26.215664,24941.33}; azimut=48; - id=364; + id=365; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4922,7 +4941,7 @@ class Mission { position[]={27216.227,25.762321,24947.223}; azimut=48; - id=365; + id=366; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4931,7 +4950,7 @@ class Mission { position[]={27210.969,25.543297,24953.113}; azimut=48; - id=366; + id=367; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4940,7 +4959,7 @@ class Mission { position[]={27205.715,25.418421,24959.002}; azimut=48; - id=367; + id=368; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4949,7 +4968,7 @@ class Mission { position[]={27200.354,25.260889,24964.684}; azimut=48; - id=368; + id=369; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4958,7 +4977,7 @@ class Mission { position[]={27195.1,25.11409,24970.471}; azimut=48; - id=369; + id=370; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4967,7 +4986,7 @@ class Mission { position[]={27189.732,25.052525,24976.254}; azimut=48; - id=370; + id=371; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4976,7 +4995,7 @@ class Mission { position[]={27184.371,25.0184,24981.936}; azimut=48; - id=371; + id=372; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4985,7 +5004,7 @@ class Mission { position[]={27179.115,24.908602,24987.721}; azimut=48; - id=372; + id=373; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -4994,7 +5013,7 @@ class Mission { position[]={27174.172,24.756964,24993.191}; azimut=48; - id=373; + id=374; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5003,7 +5022,7 @@ class Mission { position[]={27168.918,24.538374,24998.975}; azimut=48; - id=374; + id=375; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5012,7 +5031,7 @@ class Mission { position[]={27163.973,24.258104,25004.762}; azimut=48; - id=375; + id=376; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5021,7 +5040,7 @@ class Mission { position[]={26754.9,23.227198,24534.602}; azimut=130; - id=376; + id=377; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5030,7 +5049,7 @@ class Mission { position[]={26749.832,23.254463,24528.609}; azimut=130; - id=377; + id=378; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5039,7 +5058,7 @@ class Mission { position[]={26745.006,23.238129,24522.902}; azimut=130; - id=378; + id=379; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5048,7 +5067,7 @@ class Mission { position[]={26740.191,23.177996,24517.176}; azimut=130; - id=379; + id=380; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5057,7 +5076,7 @@ class Mission { position[]={26735.377,23.067152,24511.578}; azimut=130; - id=380; + id=381; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5066,7 +5085,7 @@ class Mission { position[]={26730.434,22.905687,24505.588}; azimut=130; - id=381; + id=382; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5075,7 +5094,7 @@ class Mission { position[]={26725.424,22.724735,24499.6}; azimut=130; - id=382; + id=383; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5084,7 +5103,7 @@ class Mission { position[]={26721.242,22.527798,24499.324}; azimut=40; - id=383; + id=384; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5093,7 +5112,7 @@ class Mission { position[]={26715.25,22.295599,24504.318}; azimut=40; - id=384; + id=385; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5102,7 +5121,7 @@ class Mission { position[]={26709.313,22.097647,24509.381}; azimut=40; - id=385; + id=386; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5111,7 +5130,7 @@ class Mission { position[]={26703.49,21.973309,24514.27}; azimut=40; - id=386; + id=387; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5120,7 +5139,7 @@ class Mission { position[]={26697.258,21.843426,24519.334}; azimut=40; - id=387; + id=388; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5129,7 +5148,7 @@ class Mission { position[]={26691.607,21.693287,24524.18}; azimut=40; - id=388; + id=389; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5138,7 +5157,7 @@ class Mission { position[]={26685.559,21.438457,24529.221}; azimut=40; - id=389; + id=390; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5147,7 +5166,7 @@ class Mission { position[]={26705.652,21.965303,24553.713}; azimut=40; - id=390; + id=391; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5156,7 +5175,7 @@ class Mission { position[]={26701.887,21.82918,24556.938}; azimut=40; - id=391; + id=392; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5165,7 +5184,7 @@ class Mission { position[]={26687.59,21.212294,24568.975}; azimut=40; - id=392; + id=393; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5174,7 +5193,7 @@ class Mission { position[]={26681.484,20.9252,24574.252}; azimut=40; - id=393; + id=394; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5183,7 +5202,7 @@ class Mission { position[]={26639.057,19.024429,24575.133}; azimut=130; - id=394; + id=395; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5192,7 +5211,7 @@ class Mission { position[]={26679.477,21.104219,24534.299}; azimut=40; - id=395; + id=396; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5201,7 +5220,7 @@ class Mission { position[]={26673.488,20.820801,24539.369}; azimut=40; - id=396; + id=397; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5210,7 +5229,7 @@ class Mission { position[]={26667.5,20.579432,24544.41}; azimut=40; - id=397; + id=398; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5219,7 +5238,7 @@ class Mission { position[]={26661.461,20.358904,24549.451}; azimut=40; - id=398; + id=399; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5228,7 +5247,7 @@ class Mission { position[]={26643.219,19.401995,24564.986}; azimut=40; - id=399; + id=400; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5237,7 +5256,7 @@ class Mission { position[]={26751.969,22.6106,24555.09}; azimut=105; - id=400; + id=401; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5246,7 +5265,7 @@ class Mission { position[]={26754.104,22.38545,24562.676}; azimut=105; - id=401; + id=402; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5255,7 +5274,7 @@ class Mission { position[]={26739.623,22.052719,24567.219}; azimut=105; - id=402; + id=403; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5264,7 +5283,7 @@ class Mission { position[]={26756.102,22.201479,24569.941}; azimut=105; - id=403; + id=404; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5273,7 +5292,7 @@ class Mission { position[]={26758.252,22.104448,24577.791}; azimut=105; - id=404; + id=405; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5282,7 +5301,7 @@ class Mission { position[]={26760.438,22.185312,24585.545}; azimut=105; - id=405; + id=406; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5291,7 +5310,7 @@ class Mission { position[]={26762.621,22.143852,24593.322}; azimut=105; - id=406; + id=407; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5300,7 +5319,7 @@ class Mission { position[]={26764.924,22.071524,24601.098}; azimut=105; - id=407; + id=408; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5309,7 +5328,7 @@ class Mission { position[]={26767.111,21.964348,24608.816}; azimut=105; - id=408; + id=409; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5318,7 +5337,7 @@ class Mission { position[]={26769.354,21.840157,24616.746}; azimut=105; - id=409; + id=410; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5327,7 +5346,7 @@ class Mission { position[]={26729.139,21.387865,24576.461}; azimut=130; - id=410; + id=411; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5336,7 +5355,7 @@ class Mission { position[]={26715.51,21.856211,24565.287}; azimut=40; - id=411; + id=412; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5345,7 +5364,7 @@ class Mission { position[]={26709.508,21.61656,24570.08}; azimut=40; - id=412; + id=413; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5354,7 +5373,7 @@ class Mission { position[]={26703.508,21.350954,24575.16}; azimut=40; - id=413; + id=414; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5363,7 +5382,7 @@ class Mission { position[]={26697.506,21.08437,24580.242}; azimut=40; - id=414; + id=415; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5372,7 +5391,7 @@ class Mission { position[]={26691.213,20.808163,24585.264}; azimut=40; - id=415; + id=416; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5381,7 +5400,7 @@ class Mission { position[]={26684.996,20.510431,24590.541}; azimut=40; - id=416; + id=417; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5390,7 +5409,7 @@ class Mission { position[]={26657.887,19.523048,24597.545}; azimut=130; - id=417; + id=418; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5399,7 +5418,7 @@ class Mission { position[]={26662.793,19.484375,24603.26}; azimut=130; - id=418; + id=419; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5408,7 +5427,7 @@ class Mission { position[]={26729.83,22.285027,24556.725}; azimut=40; - id=419; + id=420; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5417,7 +5436,7 @@ class Mission { position[]={26643.846,19.219412,24580.906}; azimut=130; - id=420; + id=421; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5426,7 +5445,7 @@ class Mission { position[]={26648.537,19.384808,24586.389}; azimut=130; - id=421; + id=422; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5435,7 +5454,7 @@ class Mission { position[]={26652.809,19.476467,24591.482}; azimut=130; - id=422; + id=423; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5444,7 +5463,7 @@ class Mission { position[]={26666.477,19.396427,24607.73}; azimut=130; - id=423; + id=424; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5453,7 +5472,7 @@ class Mission { position[]={26672.672,20.409813,24585.066}; azimut=130; - id=424; + id=425; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5462,7 +5481,7 @@ class Mission { position[]={26677.816,20.350107,24591.236}; azimut=130; - id=425; + id=426; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5471,7 +5490,7 @@ class Mission { position[]={26705.396,22.029596,24548.328}; azimut=130; - id=426; + id=427; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5480,7 +5499,7 @@ class Mission { position[]={26693.109,21.751245,24526.834}; azimut=130; - id=427; + id=428; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5489,7 +5508,7 @@ class Mission { position[]={26741.707,21.77603,24574.705}; azimut=105; - id=428; + id=429; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5498,7 +5517,7 @@ class Mission { position[]={26743.793,21.416069,24582.387}; azimut=105; - id=429; + id=430; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5507,7 +5526,7 @@ class Mission { position[]={26745.875,21.105661,24589.941}; azimut=105; - id=430; + id=431; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5516,7 +5535,7 @@ class Mission { position[]={26747.893,20.971319,24597.361}; azimut=105; - id=431; + id=432; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5525,7 +5544,7 @@ class Mission { position[]={26749.713,20.990934,24604.131}; azimut=105; - id=432; + id=433; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5534,7 +5553,7 @@ class Mission { position[]={26751.602,20.856359,24611.158}; azimut=105; - id=433; + id=434; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5543,7 +5562,7 @@ class Mission { position[]={26753.203,20.788649,24617.879}; azimut=105; - id=434; + id=435; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5552,7 +5571,7 @@ class Mission { position[]={26768.191,21.634184,24622.971}; azimut=40; - id=435; + id=436; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5561,7 +5580,7 @@ class Mission { position[]={26762.109,20.982016,24628.1}; azimut=40; - id=436; + id=437; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5570,7 +5589,7 @@ class Mission { position[]={26755.986,20.626633,24633.232}; azimut=40; - id=437; + id=438; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5579,7 +5598,7 @@ class Mission { position[]={26749.898,20.552198,24638.41}; azimut=40; - id=438; + id=439; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5588,7 +5607,7 @@ class Mission { position[]={26743.59,20.627979,24643.678}; azimut=40; - id=439; + id=440; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5597,7 +5616,7 @@ class Mission { position[]={26737.557,20.714441,24648.766}; azimut=40; - id=440; + id=441; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5606,7 +5625,7 @@ class Mission { position[]={26731.334,20.546713,24653.855}; azimut=40; - id=441; + id=442; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5615,7 +5634,7 @@ class Mission { position[]={26688.305,18.880514,24644.002}; azimut=40; - id=442; + id=443; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5624,7 +5643,7 @@ class Mission { position[]={26694.75,19.420786,24638.598}; azimut=40; - id=443; + id=444; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5633,7 +5652,7 @@ class Mission { position[]={26701.205,19.764318,24633.238}; azimut=40; - id=444; + id=445; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5642,7 +5661,7 @@ class Mission { position[]={26751.383,20.589741,24623.412}; azimut=40; - id=445; + id=446; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5651,7 +5670,7 @@ class Mission { position[]={26745.271,20.481247,24628.633}; azimut=40; - id=446; + id=447; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5660,7 +5679,7 @@ class Mission { position[]={26739.09,20.556242,24633.705}; azimut=40; - id=447; + id=448; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5669,7 +5688,7 @@ class Mission { position[]={26709.453,19.765211,24626.348}; azimut=40; - id=448; + id=449; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5678,7 +5697,7 @@ class Mission { position[]={26715.131,19.836035,24621.459}; azimut=40; - id=449; + id=450; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5687,7 +5706,7 @@ class Mission { position[]={26737.615,20.611807,24598.479}; azimut=105; - id=450; + id=451; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5696,7 +5715,7 @@ class Mission { position[]={26735.711,20.738367,24591.393}; azimut=105; - id=451; + id=452; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5705,7 +5724,7 @@ class Mission { position[]={26736.076,20.535934,24603.951}; azimut=40; - id=452; + id=453; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5714,7 +5733,7 @@ class Mission { position[]={26731.945,20.52726,24603.467}; azimut=130; - id=453; + id=454; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5723,7 +5742,7 @@ class Mission { position[]={26726.82,20.576736,24597.291}; azimut=130; - id=454; + id=455; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5732,7 +5751,7 @@ class Mission { position[]={26721.689,20.650381,24591.301}; azimut=130; - id=455; + id=456; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5741,7 +5760,7 @@ class Mission { position[]={26719.191,20.72835,24588.303}; azimut=130; - id=456; + id=457; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5750,7 +5769,7 @@ class Mission { position[]={26716.107,20.093296,24616.869}; azimut=130; - id=457; + id=458; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5759,7 +5778,7 @@ class Mission { position[]={26711.385,20.183964,24611.238}; azimut=130; - id=458; + id=459; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5768,7 +5787,7 @@ class Mission { position[]={26706.348,20.141411,24605.154}; azimut=130; - id=459; + id=460; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5777,7 +5796,7 @@ class Mission { position[]={26701.492,20.190041,24599.432}; azimut=130; - id=460; + id=461; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5786,7 +5805,7 @@ class Mission { position[]={26774.969,19.319693,24689.727}; azimut=220; - id=461; + id=462; side="EMPTY"; vehicle="Land_Medevac_HQ_V1_F"; skill=0.60000002; @@ -5799,7 +5818,7 @@ class Mission position[]={26722.211,19.779617,24637.773}; azimut=40; offsetY=-0.41000399; - id=462; + id=463; side="EMPTY"; vehicle="BlockConcrete_F"; skill=0.60000002; @@ -5809,7 +5828,7 @@ class Mission position[]={26719.039,19.809465,24633.848}; azimut=40; offsetY=-0.41000399; - id=463; + id=464; side="EMPTY"; vehicle="BlockConcrete_F"; skill=0.60000002; @@ -5819,7 +5838,7 @@ class Mission position[]={26715.807,19.781178,24629.922}; azimut=40; offsetY=-0.41000399; - id=464; + id=465; side="EMPTY"; vehicle="BlockConcrete_F"; skill=0.60000002; @@ -5829,7 +5848,7 @@ class Mission position[]={26715.125,19.770168,24643.746}; azimut=40; offsetY=-0.41000399; - id=465; + id=466; side="EMPTY"; vehicle="BlockConcrete_F"; skill=0.60000002; @@ -5839,7 +5858,7 @@ class Mission position[]={26711.953,19.77,24639.82}; azimut=40; offsetY=-0.41000399; - id=466; + id=467; side="EMPTY"; vehicle="BlockConcrete_F"; skill=0.60000002; @@ -5849,7 +5868,7 @@ class Mission position[]={26708.721,19.769491,24635.895}; azimut=40; offsetY=-0.41000399; - id=467; + id=468; side="EMPTY"; vehicle="BlockConcrete_F"; skill=0.60000002; @@ -5859,7 +5878,7 @@ class Mission position[]={26728.863,20.086231,24631.604}; azimut=130; offsetY=0.2; - id=468; + id=469; side="EMPTY"; vehicle="Land_RampConcrete_F"; skill=0.60000002; @@ -5868,7 +5887,7 @@ class Mission { position[]={26689.299,19.729982,24609.551}; azimut=220; - id=469; + id=470; side="EMPTY"; vehicle="Target_F"; skill=0.60000002; @@ -5877,7 +5896,7 @@ class Mission { position[]={26688.359,19.699425,24610.385}; azimut=220; - id=470; + id=471; side="EMPTY"; vehicle="Target_F"; skill=0.60000002; @@ -5886,7 +5905,7 @@ class Mission { position[]={26687.389,19.672573,24611.092}; azimut=220; - id=471; + id=472; side="EMPTY"; vehicle="Target_F"; skill=0.60000002; @@ -5895,7 +5914,7 @@ class Mission { position[]={26686.451,19.643372,24611.881}; azimut=220; - id=472; + id=473; side="EMPTY"; vehicle="Target_F"; skill=0.60000002; @@ -5904,7 +5923,7 @@ class Mission { position[]={26688.523,19.690983,24610.688}; azimut=220; - id=473; + id=474; side="EMPTY"; vehicle="Target_F"; skill=0.60000002; @@ -5913,7 +5932,7 @@ class Mission { position[]={26687.586,19.661835,24611.477}; azimut=220; - id=474; + id=475; side="EMPTY"; vehicle="Target_F"; skill=0.60000002; @@ -5922,7 +5941,7 @@ class Mission { position[]={26686.799,19.635906,24612.184}; azimut=220; - id=475; + id=476; side="EMPTY"; vehicle="Target_F"; skill=0.60000002; @@ -5931,7 +5950,7 @@ class Mission { position[]={26685.861,19.606705,24612.973}; azimut=220; - id=476; + id=477; side="EMPTY"; vehicle="Target_F"; skill=0.60000002; @@ -5940,7 +5959,7 @@ class Mission { position[]={26685.262,19.690941,24610.123}; azimut=220; - id=477; + id=478; side="EMPTY"; vehicle="Land_CncWall4_F"; skill=0.60000002; @@ -5949,7 +5968,7 @@ class Mission { position[]={26689.168,19.805126,24606.854}; azimut=220; - id=478; + id=479; side="EMPTY"; vehicle="Land_CncWall4_F"; skill=0.60000002; @@ -5958,7 +5977,7 @@ class Mission { position[]={26699.342,19.73967,24627.666}; azimut=220; - id=479; + id=480; side="EMPTY"; vehicle="Land_BagFence_Long_F"; skill=0.60000002; @@ -5967,7 +5986,7 @@ class Mission { position[]={26699.922,19.750288,24628.352}; azimut=130; - id=480; + id=481; side="EMPTY"; vehicle="Land_BagFence_Short_F"; skill=0.60000002; @@ -5977,7 +5996,7 @@ class Mission position[]={26705.822,19.760725,24630.543}; azimut=220; offsetY=2; - id=481; + id=482; side="EMPTY"; vehicle="Land_Billboard_F"; skill=0.60000002; @@ -5987,7 +6006,7 @@ class Mission { position[]={26733.902,20.970509,24584.654}; azimut=105; - id=482; + id=483; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -5996,7 +6015,7 @@ class Mission { position[]={26730.316,21.315418,24577.793}; azimut=130; - id=483; + id=484; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6005,7 +6024,7 @@ class Mission { position[]={26728.279,21.849081,24569.846}; azimut=40; - id=484; + id=485; side="EMPTY"; vehicle="Land_HBarrier_1_F"; skill=0.60000002; @@ -6014,7 +6033,7 @@ class Mission { position[]={26730.23,21.922422,24568.209}; azimut=40; - id=485; + id=486; side="EMPTY"; vehicle="Land_HBarrier_1_F"; skill=0.60000002; @@ -6023,7 +6042,7 @@ class Mission { position[]={26721.561,22.028906,24561.854}; azimut=40; - id=486; + id=487; side="EMPTY"; vehicle="Land_HBarrier_1_F"; skill=0.60000002; @@ -6032,7 +6051,7 @@ class Mission { position[]={26724.102,22.110918,24560.127}; azimut=40; - id=487; + id=488; side="EMPTY"; vehicle="Land_HBarrier_1_F"; skill=0.60000002; @@ -6041,7 +6060,7 @@ class Mission { position[]={26723.801,22.240976,24555.557}; azimut=130; - id=488; + id=489; side="EMPTY"; vehicle="Land_BagFence_Long_F"; skill=0.60000002; @@ -6050,7 +6069,7 @@ class Mission { position[]={26720.705,22.287214,24551.543}; azimut=130; - id=489; + id=490; side="EMPTY"; vehicle="Land_BagFence_Long_F"; skill=0.60000002; @@ -6059,7 +6078,7 @@ class Mission { position[]={26717.49,22.295473,24547.91}; azimut=130; - id=490; + id=491; side="EMPTY"; vehicle="Land_BagFence_Long_F"; skill=0.60000002; @@ -6068,7 +6087,7 @@ class Mission { position[]={26711.395,22.260801,24540.74}; azimut=130; - id=491; + id=492; side="EMPTY"; vehicle="Land_BagFence_Long_F"; skill=0.60000002; @@ -6077,7 +6096,7 @@ class Mission { position[]={26714.371,22.28384,24544.277}; azimut=130; - id=492; + id=493; side="EMPTY"; vehicle="Land_BagFence_Long_F"; skill=0.60000002; @@ -6086,7 +6105,7 @@ class Mission { position[]={26705.451,22.090223,24542.871}; azimut=40; - id=493; + id=494; side="EMPTY"; vehicle="Land_BagFence_Short_F"; skill=0.60000002; @@ -6095,7 +6114,7 @@ class Mission { position[]={26708.174,22.179245,24540.736}; azimut=40; - id=494; + id=495; side="EMPTY"; vehicle="Land_BagFence_Short_F"; skill=0.60000002; @@ -6104,7 +6123,7 @@ class Mission { position[]={26720.295,20.300781,24614.643}; azimut=40; - id=495; + id=496; side="EMPTY"; vehicle="Land_CargoBox_V1_F"; skill=0.60000002; @@ -6115,7 +6134,7 @@ class Mission { position[]={26724.336,20.422735,24611.102}; azimut=40; - id=496; + id=497; side="EMPTY"; vehicle="Land_CargoBox_V1_F"; skill=0.60000002; @@ -6126,7 +6145,7 @@ class Mission { position[]={26728.24,20.482685,24607.891}; azimut=40; - id=497; + id=498; side="EMPTY"; vehicle="Land_CargoBox_V1_F"; skill=0.60000002; @@ -6137,7 +6156,7 @@ class Mission { position[]={26711.18,22.0415,24555.324}; azimut=130; - id=498; + id=499; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6146,7 +6165,7 @@ class Mission { position[]={26715.658,21.985126,24561.012}; azimut=130; - id=499; + id=500; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6155,7 +6174,7 @@ class Mission { position[]={26635.701,17.184708,24634.008}; azimut=130; - id=500; + id=501; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6164,7 +6183,7 @@ class Mission { position[]={26644.895,17.18264,24644.811}; azimut=130; - id=501; + id=502; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6173,7 +6192,7 @@ class Mission { position[]={26630.865,17.066372,24627.996}; azimut=130; - id=502; + id=503; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6182,7 +6201,7 @@ class Mission { position[]={26625.508,17.049635,24621.688}; azimut=130; - id=503; + id=504; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6191,7 +6210,7 @@ class Mission { position[]={26649.494,17.030989,24650.234}; azimut=130; - id=504; + id=505; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6200,7 +6219,7 @@ class Mission { position[]={26621.303,16.868399,24621.418}; azimut=40; - id=505; + id=506; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6209,7 +6228,7 @@ class Mission { position[]={26615.266,16.395088,24626.688}; azimut=40; - id=506; + id=507; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6218,7 +6237,7 @@ class Mission { position[]={26609.273,15.972892,24631.91}; azimut=40; - id=507; + id=508; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6227,7 +6246,7 @@ class Mission { position[]={26603.371,15.399126,24637.041}; azimut=40; - id=508; + id=509; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6236,7 +6255,7 @@ class Mission { position[]={26603.129,15.072895,24641.246}; azimut=130; - id=509; + id=510; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6245,7 +6264,7 @@ class Mission { position[]={26607.986,15.285261,24646.969}; azimut=130; - id=510; + id=511; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6254,7 +6273,7 @@ class Mission { position[]={26609.777,15.251042,24649.406}; azimut=130; - id=511; + id=512; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6263,7 +6282,7 @@ class Mission { position[]={26604.346,14.725122,24661.525}; azimut=130; - id=512; + id=513; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6272,7 +6291,7 @@ class Mission { position[]={26640.527,15.845091,24671.23}; azimut=130; - id=513; + id=514; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6281,7 +6300,7 @@ class Mission { position[]={26664.287,18.616407,24624.213}; azimut=40; - id=514; + id=515; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6290,7 +6309,7 @@ class Mission { position[]={26658.387,18.233953,24629.162}; azimut=40; - id=515; + id=516; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6299,7 +6318,7 @@ class Mission { position[]={26652.305,17.769665,24634.156}; azimut=40; - id=516; + id=517; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6308,7 +6327,7 @@ class Mission { position[]={26646.402,17.444954,24639.197}; azimut=40; - id=517; + id=518; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6317,7 +6336,7 @@ class Mission { position[]={26641.637,17.471817,24633.43}; azimut=40; - id=518; + id=519; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6326,7 +6345,7 @@ class Mission { position[]={26647.809,17.856424,24628.164}; azimut=40; - id=519; + id=520; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6335,7 +6354,7 @@ class Mission { position[]={26653.756,18.302242,24623.125}; azimut=40; - id=520; + id=521; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6344,7 +6363,7 @@ class Mission { position[]={26659.793,18.745361,24617.99}; azimut=40; - id=521; + id=522; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6353,7 +6372,7 @@ class Mission { position[]={26665.965,19.148048,24612.949}; azimut=40; - id=522; + id=523; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6362,7 +6381,7 @@ class Mission { position[]={26655.859,16.85203,24666.896}; azimut=40; - id=523; + id=524; side="EMPTY"; vehicle="Land_Cargo20_brick_red_F"; skill=0.60000002; @@ -6373,7 +6392,7 @@ class Mission position[]={26654.176,16.718538,24668.332}; azimut=40; offsetY=2.5999999; - id=524; + id=525; side="EMPTY"; vehicle="Land_Cargo20_cyan_F"; skill=0.60000002; @@ -6383,7 +6402,7 @@ class Mission { position[]={26651.035,16.35528,24670.83}; azimut=40; - id=525; + id=526; side="EMPTY"; vehicle="Land_Cargo20_military_green_F"; skill=0.60000002; @@ -6393,7 +6412,7 @@ class Mission { position[]={26648.371,15.976167,24673.711}; azimut=40; - id=526; + id=527; side="EMPTY"; vehicle="Land_CargoBox_V1_F"; skill=0.60000002; @@ -6403,7 +6422,7 @@ class Mission { position[]={26647.416,16.050579,24672.484}; azimut=40; - id=527; + id=528; side="EMPTY"; vehicle="Land_CargoBox_V1_F"; skill=0.60000002; @@ -6413,7 +6432,7 @@ class Mission { position[]={26647.635,15.849356,24674.744}; azimut=40; - id=528; + id=529; side="EMPTY"; vehicle="Flag_NATO_F"; skill=0.60000002; @@ -6424,7 +6443,7 @@ class Mission { position[]={26617.756,16.159132,24635.441}; azimut=130; - id=529; + id=530; side="EMPTY"; vehicle="B_Truck_01_ammo_F"; skill=0.60000002; @@ -6433,7 +6452,7 @@ class Mission class Item437 { position[]={26632.08,17.02359,24633.594}; - id=530; + id=531; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; @@ -6441,7 +6460,7 @@ class Mission class Item438 { position[]={26629.631,16.896288,24633.594}; - id=531; + id=532; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; @@ -6449,7 +6468,7 @@ class Mission class Item439 { position[]={26627.088,16.76556,24633.549}; - id=532; + id=533; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; @@ -6457,7 +6476,7 @@ class Mission class Item440 { position[]={26624.637,16.635166,24633.549}; - id=533; + id=534; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; @@ -6466,7 +6485,7 @@ class Mission { position[]={26622.459,16.476292,24634.363}; azimut=40; - id=534; + id=535; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; @@ -6475,7 +6494,7 @@ class Mission { position[]={26620.508,16.30262,24635.996}; azimut=40; - id=535; + id=536; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; @@ -6484,7 +6503,7 @@ class Mission { position[]={26618.465,16.123018,24637.633}; azimut=40; - id=536; + id=537; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; @@ -6493,7 +6512,7 @@ class Mission { position[]={26616.467,15.960167,24639.223}; azimut=40; - id=537; + id=538; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; @@ -6502,7 +6521,7 @@ class Mission { position[]={26615.309,15.837539,24641.145}; azimut=80; - id=538; + id=539; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; @@ -6511,7 +6530,7 @@ class Mission { position[]={26614.852,15.725796,24643.598}; azimut=80; - id=539; + id=540; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; @@ -6520,7 +6539,7 @@ class Mission { position[]={26614.4,15.610186,24645.959}; azimut=80; - id=540; + id=541; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; @@ -6529,7 +6548,7 @@ class Mission { position[]={26613.99,15.484892,24648.324}; azimut=80; - id=541; + id=542; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; @@ -6538,7 +6557,7 @@ class Mission { position[]={26613.67,15.395671,24650.229}; azimut=80; - id=542; + id=543; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; @@ -6546,7 +6565,7 @@ class Mission class Item450 { position[]={26624.285,16.648668,24632.551}; - id=543; + id=544; side="EMPTY"; vehicle="Land_CargoBox_V1_F"; skill=0.60000002; @@ -6555,7 +6574,7 @@ class Mission class Item451 { position[]={26625.738,16.717413,24632.914}; - id=544; + id=545; side="EMPTY"; vehicle="Land_MetalBarrel_F"; skill=0.60000002; @@ -6564,7 +6583,7 @@ class Mission class Item452 { position[]={26625.557,16.742519,24631.918}; - id=545; + id=546; side="EMPTY"; vehicle="Land_MetalBarrel_F"; skill=0.60000002; @@ -6573,7 +6592,7 @@ class Mission class Item453 { position[]={26626.646,16.780445,24632.457}; - id=546; + id=547; side="EMPTY"; vehicle="Land_MetalBarrel_F"; skill=0.60000002; @@ -6583,7 +6602,7 @@ class Mission { position[]={26614.215,15.792243,24641.068}; azimut=80; - id=547; + id=548; side="EMPTY"; vehicle="Box_NATO_AmmoVeh_F"; skill=0.60000002; @@ -6593,7 +6612,7 @@ class Mission { position[]={26850.945,26.667337,24465.121}; azimut=-50; - id=548; + id=549; side="EMPTY"; vehicle="Land_BarGate_F"; skill=0.60000002; @@ -6604,7 +6623,7 @@ class Mission { position[]={26701.432,19.745771,24625.896}; azimut=220; - id=549; + id=550; side="EMPTY"; vehicle="Land_BagFence_Long_F"; skill=0.60000002; @@ -6613,7 +6632,7 @@ class Mission { position[]={26705.004,19.76,24626.742}; azimut=130; - id=550; + id=551; side="EMPTY"; vehicle="Land_BagFence_Long_F"; skill=0.60000002; @@ -6622,7 +6641,7 @@ class Mission { position[]={26699.105,19.746874,24629.549}; azimut=130; - id=551; + id=552; side="EMPTY"; vehicle="Land_BagFence_Long_F"; skill=0.60000002; @@ -6631,7 +6650,7 @@ class Mission { position[]={26700.652,19.761763,24631.32}; azimut=130; - id=552; + id=553; side="EMPTY"; vehicle="Land_BagFence_Long_F"; skill=0.60000002; @@ -6640,7 +6659,7 @@ class Mission { position[]={26701.148,19.751776,24627.307}; azimut=130; - id=553; + id=554; side="EMPTY"; vehicle="Land_BagFence_Short_F"; skill=0.60000002; @@ -6649,7 +6668,7 @@ class Mission { position[]={26702.465,19.753223,24626.262}; azimut=130; - id=554; + id=555; side="EMPTY"; vehicle="Land_BagFence_Short_F"; skill=0.60000002; @@ -6658,7 +6677,7 @@ class Mission { position[]={26703.869,19.75539,24625.264}; azimut=130; - id=555; + id=556; side="EMPTY"; vehicle="Land_BagFence_Short_F"; skill=0.60000002; @@ -6667,7 +6686,7 @@ class Mission { position[]={26885.941,21.712402,24671.758}; azimut=-110; - id=556; + id=557; side="EMPTY"; vehicle="B_Truck_01_ammo_F"; leader=1; @@ -6678,7 +6697,7 @@ class Mission { position[]={26874.359,21.821833,24667.549}; azimut=-110; - id=557; + id=558; side="EMPTY"; vehicle="B_Truck_01_fuel_F"; leader=1; @@ -6689,7 +6708,7 @@ class Mission { position[]={26862.107,21.893202,24663.219}; azimut=-110; - id=558; + id=559; side="EMPTY"; vehicle="B_Truck_01_Repair_F"; leader=1; @@ -6700,7 +6719,7 @@ class Mission { position[]={26878.283,22.158979,24655.021}; azimut=-20; - id=559; + id=560; side="EMPTY"; vehicle="Land_HelipadSquare_F"; skill=0.60000002; @@ -6709,7 +6728,7 @@ class Mission { position[]={26686.924,20.348951,24595.072}; azimut=40; - id=560; + id=561; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; @@ -6718,7 +6737,7 @@ class Mission { position[]={26690.42,20.527378,24592.121}; azimut=40; - id=561; + id=562; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; @@ -6727,7 +6746,7 @@ class Mission { position[]={26693.867,20.68795,24589.256}; azimut=40; - id=562; + id=563; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; @@ -6736,7 +6755,7 @@ class Mission { position[]={26697.949,20.878624,24585.85}; azimut=40; - id=563; + id=564; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; @@ -6745,7 +6764,7 @@ class Mission { position[]={26701.584,21.0429,24582.809}; azimut=40; - id=564; + id=565; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; @@ -6754,7 +6773,7 @@ class Mission { position[]={26705.033,21.195879,24579.943}; azimut=40; - id=565; + id=566; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; @@ -6763,7 +6782,7 @@ class Mission { position[]={26708.805,21.349888,24576.771}; azimut=40; - id=566; + id=567; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; @@ -6772,7 +6791,7 @@ class Mission { position[]={26712.438,21.49402,24573.775}; azimut=40; - id=567; + id=568; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; @@ -6781,7 +6800,7 @@ class Mission { position[]={26715.932,21.662668,24570.773}; azimut=40; - id=568; + id=569; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; @@ -6790,7 +6809,7 @@ class Mission { position[]={26719.514,21.822298,24567.777}; azimut=40; - id=569; + id=570; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; @@ -6798,7 +6817,7 @@ class Mission class Item477 { position[]={26852.586,26.66349,24465.311}; - id=570; + id=571; side="EMPTY"; vehicle="Flag_US_F"; skill=0.60000002; @@ -6807,7 +6826,7 @@ class Mission { position[]={26637.924,19.04122,24569.504}; azimut=40; - id=571; + id=572; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6816,7 +6835,7 @@ class Mission { position[]={26682.744,20.397991,24592.496}; azimut=40; - id=572; + id=573; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6825,7 +6844,7 @@ class Mission { position[]={26866.293,26.069725,24495.127}; azimut=40; - id=573; + id=574; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6834,7 +6853,7 @@ class Mission { position[]={26859.998,25.692705,24500.453}; azimut=40; - id=574; + id=575; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6843,7 +6862,7 @@ class Mission { position[]={26876.273,25.842361,24506.547}; azimut=40; - id=575; + id=576; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6852,7 +6871,7 @@ class Mission { position[]={26870.031,25.407507,24511.924}; azimut=40; - id=576; + id=577; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6861,7 +6880,7 @@ class Mission { position[]={26654.242,16.941353,24655.814}; azimut=130; - id=577; + id=578; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6870,7 +6889,7 @@ class Mission { position[]={26658.842,16.984211,24661.238}; azimut=130; - id=578; + id=579; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6879,7 +6898,7 @@ class Mission { position[]={26630.936,16.038414,24659.818}; azimut=130; - id=579; + id=580; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6888,7 +6907,7 @@ class Mission { position[]={26635.535,16.065893,24665.242}; azimut=130; - id=580; + id=581; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6897,7 +6916,7 @@ class Mission { position[]={26643.184,15.658358,24674.449}; azimut=130; - id=581; + id=582; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6906,7 +6925,7 @@ class Mission { position[]={26660.051,17.019289,24667.174}; azimut=40; - id=582; + id=583; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6915,7 +6934,7 @@ class Mission { position[]={26654.059,16.459335,24672.029}; azimut=40; - id=583; + id=584; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6924,7 +6943,7 @@ class Mission { position[]={26648.838,15.68101,24676.391}; azimut=40; - id=584; + id=585; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6933,7 +6952,7 @@ class Mission { position[]={26609.477,15.076567,24653.619}; azimut=40; - id=585; + id=586; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6942,7 +6961,7 @@ class Mission { position[]={26604.771,14.923363,24657.357}; azimut=40; - id=586; + id=587; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6951,7 +6970,7 @@ class Mission { position[]={26609.207,14.478259,24667.311}; azimut=130; - id=587; + id=588; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6960,7 +6979,7 @@ class Mission { position[]={26614.119,14.276504,24673.25}; azimut=130; - id=588; + id=589; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6969,7 +6988,7 @@ class Mission { position[]={26618.332,14.452353,24673.588}; azimut=40; - id=589; + id=590; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6978,7 +6997,7 @@ class Mission { position[]={26623.805,15.16127,24668.928}; azimut=40; - id=590; + id=591; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6987,7 +7006,7 @@ class Mission { position[]={26629.027,15.720372,24664.627}; azimut=40; - id=591; + id=592; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -6996,7 +7015,7 @@ class Mission { position[]={26681.109,20.820713,24578.348}; azimut=130; - id=592; + id=593; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -7005,7 +7024,7 @@ class Mission { position[]={26685.877,20.759275,24584.045}; azimut=130; - id=593; + id=594; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -7014,7 +7033,7 @@ class Mission { position[]={26701.359,21.743464,24561.18}; azimut=130; - id=594; + id=595; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -7023,7 +7042,7 @@ class Mission { position[]={26706.488,21.659685,24567.242}; azimut=130; - id=595; + id=596; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -7032,7 +7051,7 @@ class Mission { position[]={26692.238,21.340002,24568.811}; azimut=130; - id=596; + id=597; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -7041,7 +7060,7 @@ class Mission { position[]={26697.367,21.272434,24574.873}; azimut=130; - id=597; + id=598; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -7050,7 +7069,7 @@ class Mission { position[]={26730.549,22.907766,24510.406}; azimut=40; - id=598; + id=599; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -7059,7 +7078,7 @@ class Mission { position[]={26724.557,22.715752,24515.4}; azimut=40; - id=599; + id=600; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -7068,7 +7087,7 @@ class Mission { position[]={26720.475,22.584196,24518.113}; azimut=130; - id=600; + id=601; side="EMPTY"; vehicle="Land_InfoStand_V1_F"; skill=0.60000002; @@ -7079,7 +7098,7 @@ class Mission { position[]={26732.871,20.167839,24638.973}; azimut=40; - id=601; + id=602; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -7088,7 +7107,7 @@ class Mission { position[]={26727.377,19.844154,24643.605}; azimut=40; - id=602; + id=603; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -7097,7 +7116,7 @@ class Mission { position[]={26723.93,19.825832,24646.51}; azimut=40; - id=603; + id=604; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -7106,7 +7125,7 @@ class Mission { position[]={26700.139,19.607988,24648.037}; azimut=40; - id=604; + id=605; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7116,7 +7135,7 @@ class Mission { position[]={26699.389,19.533976,24648.631}; azimut=40; - id=605; + id=606; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7126,7 +7145,7 @@ class Mission { position[]={26698.549,19.438105,24649.336}; azimut=40; - id=606; + id=607; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7136,7 +7155,7 @@ class Mission { position[]={26695.254,19.066944,24652.014}; azimut=40; - id=607; + id=608; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7146,7 +7165,7 @@ class Mission { position[]={26697.752,19.350166,24649.949}; azimut=40; - id=608; + id=609; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7156,7 +7175,7 @@ class Mission { position[]={26696.004,19.151583,24651.4}; azimut=40; - id=609; + id=610; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7166,7 +7185,7 @@ class Mission { position[]={26696.867,19.251446,24650.65}; azimut=40; - id=610; + id=611; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7176,7 +7195,7 @@ class Mission { position[]={26701.41,19.532892,24649.445}; azimut=40; - id=611; + id=612; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7186,7 +7205,7 @@ class Mission { position[]={26700.66,19.501154,24650.039}; azimut=40; - id=612; + id=613; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7196,7 +7215,7 @@ class Mission { position[]={26699.82,19.451242,24650.744}; azimut=40; - id=613; + id=614; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7206,7 +7225,7 @@ class Mission { position[]={26696.525,19.0455,24653.422}; azimut=40; - id=614; + id=615; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7216,7 +7235,7 @@ class Mission { position[]={26699.023,19.363174,24651.357}; azimut=40; - id=615; + id=616; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7226,7 +7245,7 @@ class Mission { position[]={26697.275,19.153164,24652.809}; azimut=40; - id=616; + id=617; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7236,7 +7255,7 @@ class Mission { position[]={26698.139,19.264454,24652.059}; azimut=40; - id=617; + id=618; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7246,7 +7265,7 @@ class Mission { position[]={26702.727,19.522736,24650.854}; azimut=40; - id=618; + id=619; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7256,7 +7275,7 @@ class Mission { position[]={26701.977,19.481646,24651.447}; azimut=40; - id=619; + id=620; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7266,7 +7285,7 @@ class Mission { position[]={26701.137,19.436028,24652.152}; azimut=40; - id=620; + id=621; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7276,7 +7295,7 @@ class Mission { position[]={26697.842,19.008881,24654.83}; azimut=40; - id=621; + id=622; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7286,7 +7305,7 @@ class Mission { position[]={26700.34,19.365841,24652.766}; azimut=40; - id=622; + id=623; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7296,7 +7315,7 @@ class Mission { position[]={26698.592,19.116364,24654.217}; azimut=40; - id=623; + id=624; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7306,7 +7325,7 @@ class Mission { position[]={26699.455,19.243908,24653.467}; azimut=40; - id=624; + id=625; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7316,7 +7335,7 @@ class Mission { position[]={26713.93,19.81259,24651.387}; azimut=130; - id=625; + id=626; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -7325,7 +7344,7 @@ class Mission { position[]={26709.846,19.780779,24646.615}; azimut=130; - id=626; + id=627; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -7334,7 +7353,7 @@ class Mission { position[]={26705.537,19.77,24641.348}; azimut=130; - id=627; + id=628; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -7343,7 +7362,7 @@ class Mission { position[]={26653.83,20.080389,24552.713}; azimut=5; - id=628; + id=629; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -7353,7 +7372,7 @@ class Mission { position[]={26656.238,20.20751,24552.484}; azimut=5; - id=629; + id=630; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -7363,7 +7382,7 @@ class Mission { position[]={26658.459,20.290365,24552.26}; azimut=5; - id=630; + id=631; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; leader=1; @@ -7373,7 +7392,7 @@ class Mission { position[]={26656.107,20.077408,24547.088}; azimut=140; - id=631; + id=632; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -7382,7 +7401,7 @@ class Mission { position[]={26649.938,19.729076,24541.777}; azimut=140; - id=632; + id=633; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -7391,7 +7410,7 @@ class Mission { position[]={26643.896,19.326979,24536.691}; azimut=140; - id=633; + id=634; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -7400,7 +7419,7 @@ class Mission { position[]={26638.406,19.213615,24563.252}; azimut=140; - id=634; + id=635; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -7409,7 +7428,7 @@ class Mission { position[]={26632.236,18.851871,24557.941}; azimut=140; - id=635; + id=636; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -7418,7 +7437,7 @@ class Mission { position[]={26626.195,18.437645,24552.855}; azimut=140; - id=636; + id=637; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -7427,7 +7446,7 @@ class Mission { position[]={26625.789,18.391869,24548.727}; azimut=50; - id=637; + id=638; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -7436,7 +7455,7 @@ class Mission { position[]={26630.6,18.653082,24542.871}; azimut=50; - id=638; + id=639; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -7445,7 +7464,7 @@ class Mission { position[]={26637.363,18.965082,24534.971}; azimut=50; - id=639; + id=640; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -7454,7 +7473,7 @@ class Mission { position[]={26634.822,18.849415,24537.92}; azimut=50; - id=640; + id=641; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -7463,7 +7482,7 @@ class Mission { position[]={26641.717,19.191948,24534.514}; azimut=140; - id=641; + id=642; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -7472,7 +7491,7 @@ class Mission { position[]={26683.902,20.202864,24597.375}; azimut=40; - id=642; + id=643; side="EMPTY"; vehicle="Land_CncBarrier_stripes_F"; skill=0.60000002; @@ -7480,7 +7499,7 @@ class Mission class Item550 { position[]={26845.732,26.822699,24458.182}; - id=643; + id=644; side="EMPTY"; vehicle="Flag_UK_F"; skill=0.60000002; @@ -7489,7 +7508,7 @@ class Mission { position[]={26704.133,19.617399,24652.398}; azimut=40; - id=644; + id=645; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7499,7 +7518,7 @@ class Mission { position[]={26703.383,19.527546,24652.992}; azimut=40; - id=645; + id=646; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7509,7 +7528,7 @@ class Mission { position[]={26702.543,19.412371,24653.697}; azimut=40; - id=646; + id=647; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7519,7 +7538,7 @@ class Mission { position[]={26699.248,18.962326,24656.375}; azimut=40; - id=647; + id=648; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7529,7 +7548,7 @@ class Mission { position[]={26701.746,19.308037,24654.311}; azimut=40; - id=648; + id=649; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7539,7 +7558,7 @@ class Mission { position[]={26699.998,19.069811,24655.762}; azimut=40; - id=649; + id=650; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7549,7 +7568,7 @@ class Mission { position[]={26700.861,19.190624,24655.012}; azimut=40; - id=650; + id=651; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7559,7 +7578,7 @@ class Mission { position[]={26708.316,19.796282,24648.941}; azimut=40; - id=651; + id=652; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7569,7 +7588,7 @@ class Mission { position[]={26705.021,19.665495,24651.619}; azimut=40; - id=652; + id=653; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7579,7 +7598,7 @@ class Mission { position[]={26707.52,19.800371,24649.555}; azimut=40; - id=653; + id=654; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7589,7 +7608,7 @@ class Mission { position[]={26705.771,19.70645,24651.006}; azimut=40; - id=654; + id=655; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7599,7 +7618,7 @@ class Mission { position[]={26706.635,19.753191,24650.256}; azimut=40; - id=655; + id=656; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7609,7 +7628,7 @@ class Mission { position[]={26706.867,19.7481,24647.398}; azimut=40; - id=656; + id=657; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7619,7 +7638,7 @@ class Mission { position[]={26703.572,19.568304,24650.076}; azimut=40; - id=657; + id=658; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7629,7 +7648,7 @@ class Mission { position[]={26706.07,19.704399,24648.012}; azimut=40; - id=658; + id=659; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7639,7 +7658,7 @@ class Mission { position[]={26704.322,19.609148,24649.463}; azimut=40; - id=659; + id=660; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7649,7 +7668,7 @@ class Mission { position[]={26705.186,19.655998,24648.713}; azimut=40; - id=660; + id=661; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7659,7 +7678,7 @@ class Mission { position[]={26705.551,19.714727,24646.035}; azimut=40; - id=661; + id=662; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7669,7 +7688,7 @@ class Mission { position[]={26702.256,19.571953,24648.713}; azimut=40; - id=662; + id=663; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7679,7 +7698,7 @@ class Mission { position[]={26704.754,19.682013,24646.648}; azimut=40; - id=663; + id=664; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7689,7 +7708,7 @@ class Mission { position[]={26703.006,19.60457,24648.1}; azimut=40; - id=664; + id=665; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7699,7 +7718,7 @@ class Mission { position[]={26703.869,19.644609,24647.35}; azimut=40; - id=665; + id=666; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7709,7 +7728,7 @@ class Mission { position[]={26704.098,19.77,24644.717}; azimut=40; - id=666; + id=667; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7719,7 +7738,7 @@ class Mission { position[]={26700.803,19.642265,24647.395}; azimut=40; - id=667; + id=668; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7729,7 +7748,7 @@ class Mission { position[]={26703.301,19.752325,24645.33}; azimut=40; - id=668; + id=669; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7739,7 +7758,7 @@ class Mission { position[]={26701.553,19.674883,24646.781}; azimut=40; - id=669; + id=670; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7749,7 +7768,7 @@ class Mission { position[]={26702.416,19.714922,24646.031}; azimut=40; - id=670; + id=671; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7759,7 +7778,7 @@ class Mission { position[]={26702.963,19.77,24642.992}; azimut=40; - id=671; + id=672; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7769,7 +7788,7 @@ class Mission { position[]={26699.668,19.711184,24645.67}; azimut=40; - id=672; + id=673; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7779,7 +7798,7 @@ class Mission { position[]={26702.166,19.77,24643.605}; azimut=40; - id=673; + id=674; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7789,7 +7808,7 @@ class Mission { position[]={26700.418,19.766876,24645.057}; azimut=40; - id=674; + id=675; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7799,7 +7818,7 @@ class Mission { position[]={26701.281,19.77,24644.307}; azimut=40; - id=675; + id=676; side="EMPTY"; vehicle="Land_CampingChair_V1_F"; leader=1; @@ -7809,7 +7828,7 @@ class Mission { position[]={26702.117,19.746016,24625.258}; azimut=220; - id=676; + id=677; side="EMPTY"; vehicle="Land_BagFence_Long_F"; skill=0.60000002; @@ -7818,7 +7837,7 @@ class Mission { position[]={26676.719,18.424976,24639.863}; azimut=130; - id=677; + id=678; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -7827,7 +7846,7 @@ class Mission { position[]={26681.666,18.378428,24645.902}; azimut=130; - id=678; + id=679; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -7836,7 +7855,7 @@ class Mission { position[]={26685.85,18.624903,24646.271}; azimut=40; - id=679; + id=680; side="EMPTY"; vehicle="Land_HBarrierBig_F"; skill=0.60000002; @@ -7845,15 +7864,37 @@ class Mission { position[]={26718.406,19.822062,24650.639}; azimut=40; - id=680; + id=681; side="EMPTY"; vehicle="Land_HBarrier_1_F"; skill=0.60000002; }; + class Item588 + { + position[]={26780.6,21.607943,24632.102}; + azimut=311; + id=682; + side="EMPTY"; + vehicle="Land_HelipadSquare_F"; + leader=1; + skill=0.60000002; + text="garage_spawn_jet"; + }; + class Item589 + { + position[]={26772.477,21.774422,24622.592}; + azimut=221; + id=683; + side="EMPTY"; + vehicle="Land_InfoStand_V1_F"; + skill=0.60000002; + text="garage_spawner_jet"; + init="this enableSimulationGlobal false;"; + }; }; class Markers { - items=83; + items=84; class Item0 { position[]={14320.607,17.790001,15859.087}; @@ -7933,7 +7974,7 @@ class Mission }; class Item8 { - position[]={30670.996,-0.15057068,30671.645}; + position[]={30670.416,0,30667.336}; name="mrk_area"; markerType="RECTANGLE"; type="Empty"; @@ -8536,6 +8577,13 @@ class Mission name="mrk_compound_11"; type="Empty"; }; + class Item83 + { + position[]={26789.178,21.506792,24639.277}; + name="mrk_base_air_1"; + text="Helicopters"; + type="b_air"; + }; }; class Sensors {