├── mpmissions
└── Evannex.Altis
│ ├── core
│ ├── server
│ │ ├── functions
│ │ │ ├── fn_getRandomVector.sqf
│ │ │ ├── fn_deleteGroup.sqf
│ │ │ ├── fn_getGroundUnitsLocation.sqf
│ │ │ ├── fn_ejectCrew.sqf
│ │ │ ├── fn_refillDefenceAmmo.sqf
│ │ │ ├── fn_getUnitAliveCount.sqf
│ │ │ ├── fn_getRandomLocation.sqf
│ │ │ ├── fn_ejectGroup.sqf
│ │ │ ├── fn_spawnGroup.sqf
│ │ │ ├── fn_getUnitsInVehicle.sqf
│ │ │ ├── fn_setRandomDirection.sqf
│ │ │ ├── vehicles
│ │ │ │ ├── fn_createLandingNearZoneOnRoad.sqf
│ │ │ │ ├── fn_getWatingEvacGroups.sqf
│ │ │ │ ├── fn_getWaitingGroups.sqf
│ │ │ │ └── fn_waitUntillArrived.sqf
│ │ │ ├── fn_setDirectionOfMarker.sqf
│ │ │ ├── fn_ejectUnits.sqf
│ │ │ ├── fn_checkPlayersAround.sqf
│ │ │ ├── fn_addToZeus.sqf
│ │ │ ├── fn_checkPosition.sqf
│ │ │ ├── fn_commandGroupIntoVehicle.sqf
│ │ │ ├── fn_removeDeadAIRequestedVehicle.sqf
│ │ │ ├── fn_getPlayersInVehicle.sqf
│ │ │ ├── helicopters
│ │ │ │ ├── fn_createLandingNearObject.sqf
│ │ │ │ ├── fn_dropEvacedUnitsAtBase.sqf
│ │ │ │ ├── fn_createLandingNearZone.sqf
│ │ │ │ ├── fn_createHelicopterCrew.sqf
│ │ │ │ ├── fn_waitUntillLanded.sqf
│ │ │ │ └── fn_landHelicopter.sqf
│ │ │ ├── fn_createVehicleCrew.sqf
│ │ │ ├── fn_checkVehicleAndCrewAlive.sqf
│ │ │ ├── fn_createComposition.sqf
│ │ │ ├── fn_waitForGroupToEnterVehicle.sqf
│ │ │ ├── fn_findGroupsInQueue.sqf
│ │ │ └── fn_selectRandomGroupToSpawn.sqf
│ │ ├── recruit
│ │ │ ├── fn_deleteDeadRecruit.sqf
│ │ │ ├── fn_reassignRecruitAI.sqf
│ │ │ └── fn_createRecruitAI.sqf
│ │ ├── handlers
│ │ │ ├── fn_objectInitEvents.sqf
│ │ │ └── fn_requestVehicle.sqf
│ │ ├── markers
│ │ │ ├── fn_deleteMakerAfterGivenTime.sqf
│ │ │ ├── fn_createTextMarker.sqf
│ │ │ └── fn_createRadiusMarker.sqf
│ │ ├── debug
│ │ │ └── fnc_unitToEvac.sqf
│ │ ├── task
│ │ │ └── fn_playerZoneTasking.sqf
│ │ ├── base
│ │ │ ├── fn_customTransport.sqf
│ │ │ ├── fn_createBaseDefence.sqf
│ │ │ ├── fn_friendlySpawnAI.sqf
│ │ │ ├── fn_customTransportRun.sqf
│ │ │ ├── fn_createVehicle.sqf
│ │ │ ├── fn_createTransportVehicle.sqf
│ │ │ ├── fn_createHelis.sqf
│ │ │ └── fn_createObjectiveUnits.sqf
│ │ ├── zone
│ │ │ ├── fn_placeMines.sqf
│ │ │ ├── fn_commandEnemyGroups.sqf
│ │ │ ├── fn_checkFriendlyFindEnemy.sqf
│ │ │ ├── fn_commandFriendlyGroups.sqf
│ │ │ └── fn_zoneSpawnAI.sqf
│ │ ├── zone_objective
│ │ │ ├── fn_groupChecker.sqf
│ │ │ ├── fn_groupRoam.sqf
│ │ │ └── fn_createObjective.sqf
│ │ ├── garbage_collector
│ │ │ ├── fn_garbageCollector.sqf
│ │ │ └── fn_checkFriendyAIPositions.sqf
│ │ ├── side_objective
│ │ │ └── fn_runObjectives.sqf
│ │ └── cache
│ │ │ └── fn_functions.sqf
│ ├── spawnlists
│ │ ├── RHSSAF
│ │ │ ├── friendly_transport.sqf
│ │ │ ├── friendly_jets.sqf
│ │ │ ├── friendly_base_defence.sqf
│ │ │ ├── friendly_vehicles.sqf
│ │ │ ├── custom_unit_compositions.sqf
│ │ │ ├── friendly_vehicle_transport.sqf
│ │ │ ├── friendly_objective_squad_vehicles.sqf
│ │ │ ├── unit_composition_types.sqf
│ │ │ ├── enemy_speicals.sqf
│ │ │ ├── friendly_recruit.sqf
│ │ │ ├── unit_compositions.sqf
│ │ │ └── enemy_side_units.sqf
│ │ ├── RHSAFRF
│ │ │ ├── friendly_objective_squad_vehicles.sqf
│ │ │ ├── friendly_base_defence.sqf
│ │ │ ├── friendly_jets.sqf
│ │ │ ├── friendly_transport.sqf
│ │ │ ├── friendly_recruit.sqf
│ │ │ ├── friendly_vehicle_transport.sqf
│ │ │ ├── custom_unit_compositions.sqf
│ │ │ ├── unit_composition_types.sqf
│ │ │ ├── friendly_vehicles.sqf
│ │ │ ├── enemy_speicals.sqf
│ │ │ ├── enemy_side_units.sqf
│ │ │ └── unit_compositions.sqf
│ │ ├── OPF_F
│ │ │ ├── friendly_objective_squad_vehicles.sqf
│ │ │ ├── friendly_base_defence.sqf
│ │ │ ├── friendly_transport.sqf
│ │ │ ├── friendly_jets.sqf
│ │ │ ├── friendly_recruit.sqf
│ │ │ ├── friendly_vehicle_transport.sqf
│ │ │ ├── unit_composition_types.sqf
│ │ │ ├── custom_unit_compositions.sqf
│ │ │ ├── unit_compositions.sqf
│ │ │ ├── friendly_vehicles.sqf
│ │ │ ├── enemy_side_units.sqf
│ │ │ └── enemy_speicals.sqf
│ │ ├── RHSUSAF
│ │ │ ├── friendly_jets.sqf
│ │ │ ├── friendly_base_defence.sqf
│ │ │ ├── friendly_transport.sqf
│ │ │ ├── friendly_objective_squad_vehicles.sqf
│ │ │ ├── custom_unit_compositions.sqf
│ │ │ ├── friendly_vehicle_transport.sqf
│ │ │ ├── unit_composition_types.sqf
│ │ │ ├── friendly_recruit.sqf
│ │ │ ├── friendly_vehicles.sqf
│ │ │ ├── enemy_speicals.sqf
│ │ │ ├── enemy_side_units.sqf
│ │ │ └── unit_compositions.sqf
│ │ ├── RHSGREF
│ │ │ ├── friendly_base_defence.sqf
│ │ │ ├── unit_compositions.sqf
│ │ │ ├── friendly_jets.sqf
│ │ │ ├── friendly_transport.sqf
│ │ │ ├── unit_composition_types.sqf
│ │ │ ├── friendly_vehicle_transport.sqf
│ │ │ ├── friendly_objective_squad_vehicles.sqf
│ │ │ ├── friendly_recruit.sqf
│ │ │ ├── friendly_vehicles.sqf
│ │ │ ├── custom_unit_compositions.sqf
│ │ │ ├── enemy_side_units.sqf
│ │ │ └── enemy_speicals.sqf
│ │ └── BLU_F
│ │ │ ├── friendly_objective_squad_vehicles.sqf
│ │ │ ├── friendly_base_defence.sqf
│ │ │ ├── friendly_recruit.sqf
│ │ │ ├── unit_composition_types.sqf
│ │ │ ├── custom_unit_compositions.sqf
│ │ │ ├── friendly_vehicle_transport.sqf
│ │ │ ├── unit_compositions.sqf
│ │ │ ├── friendly_jets.sqf
│ │ │ ├── friendly_transport.sqf
│ │ │ ├── enemy_side_units.sqf
│ │ │ ├── friendly_vehicles.sqf
│ │ │ └── enemy_speicals.sqf
│ ├── client
│ │ ├── task
│ │ │ ├── fn_completeObjective.sqf
│ │ │ ├── fn_completeZoneTask.sqf
│ │ │ └── fn_giveTaskZone.sqf
│ │ ├── fn_displayStartingScreen.sqf
│ │ ├── fn_createAddRecurit.sqf
│ │ ├── fn_createTeleportToZone.sqf
│ │ ├── fn_setPlayerSettings.sqf
│ │ └── fn_createVehicleSpawner.sqf
│ ├── savedassets
│ │ ├── radio_towers.sqf
│ │ ├── zone_objectives.sqf
│ │ ├── side_missions.sqf
│ │ ├── mine_fields.sqf
│ │ ├── small_bases.sqf
│ │ └── bases.sqf
│ └── evannexInit.sqf
│ ├── SBGF
│ ├── description.ext
│ ├── cfgfunctions.hpp
│ ├── fn_posConversion.sqf
│ ├── fn_groupGarrison.sqf
│ ├── fn_buildingPositions.sqf
│ └── fn_garrison.sqf
│ ├── mission.sqm
│ ├── init.sqf
│ ├── textures
│ └── mission_thumbnail.paa
│ └── Description.ext
├── .gitignore
└── README.md
/mpmissions/Evannex.Altis/core/server/functions/fn_getRandomVector.sqf:
--------------------------------------------------------------------------------
1 | [random 360, random 360, random 360];
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/RHSSAF/friendly_transport.sqf:
--------------------------------------------------------------------------------
1 | [
2 | "rhssaf_airforce_ht48"
3 | ];
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/SBGF/description.ext:
--------------------------------------------------------------------------------
1 | class CfgFunctions
2 | {
3 | #include "SBGF\cfgfunctions.hpp"
4 | };
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/RHSAFRF/friendly_objective_squad_vehicles.sqf:
--------------------------------------------------------------------------------
1 | [
2 | "rhs_gaz66_msv"
3 | ]
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/OPF_F/friendly_objective_squad_vehicles.sqf:
--------------------------------------------------------------------------------
1 | [
2 | "O_Truck_03_transport_F"
3 | ]
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/RHSUSAF/friendly_jets.sqf:
--------------------------------------------------------------------------------
1 | [
2 | "RHS_C130J",
3 | "RHS_A10",
4 | "rhsusf_f22"
5 | ];
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/mission.sqm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Bradenm1/Evannex/HEAD/mpmissions/Evannex.Altis/mission.sqm
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/RHSSAF/friendly_jets.sqf:
--------------------------------------------------------------------------------
1 | [
2 | "rhssaf_airforce_l_18",
3 | "rhssaf_airforce_l_18_101"
4 | ];
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # User-specific files
2 | *.Arma3Profile
3 | *.json
4 | *.cfg
5 |
6 | # Dirs
7 | [Cc]ompositions/
8 | [Ss]aved/
9 | [Uu]serSaved/
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/RHSGREF/friendly_base_defence.sqf:
--------------------------------------------------------------------------------
1 | [
2 | "rhsgref_cdf_b_Igla_AA_pod",
3 | "rhsgref_cdf_b_ZU23"
4 | ];
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/BLU_F/friendly_objective_squad_vehicles.sqf:
--------------------------------------------------------------------------------
1 | [
2 | "B_Truck_01_transport_F",
3 | "B_Truck_01_covered_F"
4 | ]
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/BLU_F/friendly_base_defence.sqf:
--------------------------------------------------------------------------------
1 | [
2 | "B_AAA_System_01_F",
3 | "B_SAM_System_01_F",
4 | "B_SAM_System_02_F"
5 | ];
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/OPF_F/friendly_base_defence.sqf:
--------------------------------------------------------------------------------
1 | [
2 | "B_AAA_System_01_F",
3 | "B_SAM_System_01_F",
4 | "B_SAM_System_02_F"
5 | ];
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/RHSSAF/friendly_base_defence.sqf:
--------------------------------------------------------------------------------
1 | [
2 | "B_AAA_System_01_F",
3 | "B_SAM_System_01_F",
4 | "B_SAM_System_02_F"
5 | ];
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/RHSAFRF/friendly_base_defence.sqf:
--------------------------------------------------------------------------------
1 | [
2 | "B_AAA_System_01_F",
3 | "B_SAM_System_01_F",
4 | "B_SAM_System_02_F"
5 | ];
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/RHSSAF/friendly_vehicles.sqf:
--------------------------------------------------------------------------------
1 | [
2 | "rhssaf_m1025_olive_m2",
3 | "rhssaf_army_t72s",
4 | "rhssaf_army_ural_fuel"
5 | ];
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/RHSUSAF/friendly_base_defence.sqf:
--------------------------------------------------------------------------------
1 | [
2 | "B_AAA_System_01_F",
3 | "B_SAM_System_01_F",
4 | "B_SAM_System_02_F"
5 | ];
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/init.sqf:
--------------------------------------------------------------------------------
1 | // Run evannex gamemode
2 | execVM "core\evannexInit.sqf";
3 | // Enable friendly markers
4 | execVM "core\client\QS_icons.sqf";
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/textures/mission_thumbnail.paa:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Bradenm1/Evannex/HEAD/mpmissions/Evannex.Altis/textures/mission_thumbnail.paa
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/client/task/fn_completeObjective.sqf:
--------------------------------------------------------------------------------
1 | _textOnTaken = _this select 0;
2 | ["TaskSucceeded",["", _textOnTaken]] call bis_fnc_showNotification;
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/RHSAFRF/friendly_jets.sqf:
--------------------------------------------------------------------------------
1 | [
2 | "rhs_mig29s_vvsc",
3 | "RHS_Su25SM_vvsc",
4 | "rhs_mig29sm_vvsc",
5 | "rhs_pchela1t_vvsc"
6 | ];
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/functions/fn_deleteGroup.sqf:
--------------------------------------------------------------------------------
1 | private _group = _this select 0;
2 |
3 | { deleteVehicle _x } forEach units _group;
4 | deleteGroup _group;
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/functions/fn_getGroundUnitsLocation.sqf:
--------------------------------------------------------------------------------
1 | (getMarkerPos "marker_ai_spawn_friendly_ground_units") getPos [5 * sqrt random 180, random 360];
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/savedassets/radio_towers.sqf:
--------------------------------------------------------------------------------
1 | [
2 | [["Land_TTowerBig_1_F",[-2.07031,-0.623047,0.0295334],0]],
3 | [["Land_TTowerBig_2_F",[-2.07031,-0.623047,0.0295334],0]]
4 | ];
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/recruit/fn_deleteDeadRecruit.sqf:
--------------------------------------------------------------------------------
1 | private _unit = _this select 0;
2 |
3 | waitUntil { sleep 10; !(alive _unit); };
4 | sleep 120;
5 | deleteVehicle _unit;
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/client/fn_displayStartingScreen.sqf:
--------------------------------------------------------------------------------
1 | titleText ["Welcome to Evannex
AI vs AI Gamemode", "PLAIN", 1, true, true];
2 |
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/client/task/fn_completeZoneTask.sqf:
--------------------------------------------------------------------------------
1 | { _x setTaskState "Succeeded"; } forEach (simpleTasks player);
2 | { player removeSimpleTask _x; } forEach (simpleTasks player);
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/functions/fn_ejectCrew.sqf:
--------------------------------------------------------------------------------
1 | private _vehicle = _this select 0;
2 | {
3 | _x action ["Eject", _vehicle]; _x leaveVehicle _vehicle;
4 | } foreach (crew _vehicle);
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/functions/fn_refillDefenceAmmo.sqf:
--------------------------------------------------------------------------------
1 | private _vehicle = _this select 0;
2 |
3 | while {alive _vehicle} do {
4 | _vehicle setVehicleAmmo 1;
5 | sleep 120;
6 | };
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/RHSGREF/unit_compositions.sqf:
--------------------------------------------------------------------------------
1 | [
2 | [
3 | "rhsgref_group_cdf_b_reg_infantry_squad",
4 | "rhsgref_group_cdf_b_reg_infantry_squad_weap"
5 | ]
6 | ]
7 |
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/RHSGREF/friendly_jets.sqf:
--------------------------------------------------------------------------------
1 | [
2 | "RHS_AN2_B",
3 | "rhs_l159_cdf_b_CDF",
4 | "rhs_l39_cdf_b_cdf",
5 | "rhsgref_cdf_b_mig29s",
6 | "rhsgref_cdf_b_su25"
7 | ];
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/functions/fn_getUnitAliveCount.sqf:
--------------------------------------------------------------------------------
1 | private _tempGroup = _this select 0;
2 | private _count = 0;
3 | { if (alive _x) then {_count = _count + 1}; } forEach (units _tempGroup);
4 | _count;
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/handlers/fn_objectInitEvents.sqf:
--------------------------------------------------------------------------------
1 | private _object = _this select 0;
2 |
3 | _object addEventHandler ["killed", "br_dead_objects pushBack (_this select 0);"];
4 | [_object] call fn_addToZeus;
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/functions/fn_getRandomLocation.sqf:
--------------------------------------------------------------------------------
1 | // Gets a random location within the zone radius
2 | br_current_zone getPos [br_zone_radius * sqrt random br_min_radius_distance, random br_max_radius_distance];
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/RHSAFRF/friendly_transport.sqf:
--------------------------------------------------------------------------------
1 | [
2 | "RHS_Mi8AMT_vdv",
3 | "RHS_Mi8MTV3_vdv",
4 | "RHS_Mi8MTV3_heavy_vdv",
5 | "RHS_Mi8mt_vv",
6 | "rhs_ka60_c",
7 | "RHS_Mi24P_vvsc",
8 | "RHS_Mi8MTV3_vvsc"
9 | ];
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/functions/fn_ejectGroup.sqf:
--------------------------------------------------------------------------------
1 | private _group = _this select 0;
2 | private _vehicle = _this select 1;
3 |
4 | {
5 | _x action ["Eject", _vehicle]; _x leaveVehicle _vehicle;
6 | } foreach (units _group);
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/OPF_F/friendly_transport.sqf:
--------------------------------------------------------------------------------
1 | [
2 | "I_Heli_Transport_02_F",
3 | "I_Heli_light_03_unarmed_F",
4 | "O_Heli_Light_02_v2_F",
5 | "O_Heli_Transport_04_bench_F",
6 | "O_Heli_Transport_04_covered_F"
7 | ];
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/RHSAFRF/friendly_recruit.sqf:
--------------------------------------------------------------------------------
1 | [
2 | "rhs_vdv_medic",
3 | "rhs_vdv_marksman",
4 | "rhs_vdv_engineer",
5 | "rhs_vdv_at",
6 | "rhs_vdv_aa",
7 | "rhs_vdv_rifleman",
8 | "rhs_vdv_machinegunner"
9 | ]
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/RHSAFRF/friendly_vehicle_transport.sqf:
--------------------------------------------------------------------------------
1 | [
2 | "rhs_gaz66o_msv",
3 | "rhs_gaz66_flat_msv",
4 | "RHS_Ural_MSV_01",
5 | "RHS_Ural_Open_MSV_01",
6 | "rhs_zil131_msv",
7 | "rhs_zil131_open_msv"
8 | ];
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/OPF_F/friendly_jets.sqf:
--------------------------------------------------------------------------------
1 | [
2 | "O_Plane_Fighter_02_F",
3 | "O_T_UAV_04_CAS_F",
4 | "O_Plane_CAS_02_F",
5 | "O_T_VTOL_02_infantry_F",
6 | "O_Plane_Fighter_02_F",
7 | "O_UAV_02_F",
8 | "O_UAV_02_CAS_F"
9 | ];
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/functions/fn_spawnGroup.sqf:
--------------------------------------------------------------------------------
1 | [_this select 5, _this select 0, (configFile >> "CfgGroups" >> _this select 1 >> _this select 2 >> _this select 3 >> _this select 4), [], [], [br_ai_skill, br_ai_skill]] call BIS_fnc_spawnGroup;
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/BLU_F/friendly_recruit.sqf:
--------------------------------------------------------------------------------
1 | [
2 | "B_Soldier_F",
3 | "B_soldier_AR_F",
4 | "B_soldier_M_F",
5 | "B_Soldier_GL_F",
6 | "B_medic_F",
7 | "B_soldier_AT_F",
8 | "B_soldier_AA_F",
9 | "B_engineer_F"
10 | ]
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/OPF_F/friendly_recruit.sqf:
--------------------------------------------------------------------------------
1 | [
2 | "O_Soldier_F",
3 | "O_soldier_AR_F",
4 | "O_soldier_M_F",
5 | "O_Soldier_GL_F",
6 | "O_medic_F",
7 | "O_soldier_AT_F",
8 | "O_soldier_AA_F",
9 | "O_engineer_F"
10 | ]
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/functions/fn_getUnitsInVehicle.sqf:
--------------------------------------------------------------------------------
1 | private _group = _this select 0;
2 | private _vehicle = _this select 1;
3 | private _count = 0;
4 | { if (_x in _vehicle) then { _count = _count + 1}; } forEach (units _group);
5 | _count;
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/RHSGREF/friendly_transport.sqf:
--------------------------------------------------------------------------------
1 | [
2 | "rhsgref_cdf_b_Mi24D",
3 | "rhsgref_cdf_b_Mi24D_Early",
4 | "rhsgref_b_mi24g_CAS",
5 | "rhsgref_cdf_b_Mi35",
6 | "rhsgref_cdf_b_reg_Mi8amt",
7 | "rhsgref_cdf_b_reg_Mi17Sh"
8 | ];
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/RHSUSAF/friendly_transport.sqf:
--------------------------------------------------------------------------------
1 | [
2 | "RHS_CH_47F",
3 | "RHS_CH_47F_light",
4 | "RHS_UH60M",
5 | "RHS_UH60M_MEV",
6 | "RHS_UH60M_MEV2",
7 | "RHS_UH1Y",
8 | "RHS_UH1Y_FFAR",
9 | "RHS_UH1Y_UNARMED",
10 | "RHS_MELB_MH6M"
11 | ];
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/SBGF/cfgfunctions.hpp:
--------------------------------------------------------------------------------
1 | class SBGF
2 | {
3 | tag = "SBGF";
4 | class Garrison
5 | {
6 | file = "SBGF";
7 | class garrison {};
8 | class buildingPositions {};
9 | class groupGarrison {};
10 | class posConversion {};
11 | };
12 | };
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/OPF_F/friendly_vehicle_transport.sqf:
--------------------------------------------------------------------------------
1 | [
2 | "O_G_Van_01_transport_F",
3 | "O_APC_Wheeled_02_rcws_F",
4 | "O_APC_Wheeled_02_rcws_v2_F",
5 | "B_APC_Wheeled_03_cannon_F",
6 | "O_Truck_03_covered_F",
7 | "O_Truck_03_transport_F"
8 | ];
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/BLU_F/unit_composition_types.sqf:
--------------------------------------------------------------------------------
1 | [
2 | [
3 | "West"
4 | ],
5 | [
6 | "BLU_F"
7 | ],
8 | [
9 | "Infantry" // This aligns with the unit compositions. Since this is index 0 it will use index 0 from the other file.
10 | ]
11 | ]
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/OPF_F/unit_composition_types.sqf:
--------------------------------------------------------------------------------
1 | [
2 | [
3 | "East"
4 | ],
5 | [
6 | "OPF_F"
7 | ],
8 | [
9 | "Infantry" // This aligns with the unit compositions. Since this is index 0 it will use index 0 from the other file.
10 | ]
11 | ]
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/RHSUSAF/friendly_objective_squad_vehicles.sqf:
--------------------------------------------------------------------------------
1 | [
2 | "rhsusf_M1078A1P2_B_M2_WD_fmtv_usarmy",
3 | "rhsusf_M1078A1P2_B_M2_WD_open_fmtv_usarmy",
4 | "rhsusf_M1237_MK19_usarmy_wd",
5 | "rhsusf_M1220_usarmy_wd",
6 | "rhsusf_M1230_M2_usarmy_wd"
7 | ]
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/functions/fn_setRandomDirection.sqf:
--------------------------------------------------------------------------------
1 | private _group = _this select 0;
2 |
3 | {
4 | _x setVectorDir call fn_getRandomVector;
5 | if (!(isNull objectParent _x)) then { (vehicle _x) setVectorDir call fn_getRandomVector; };
6 | } forEach (units _group);
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/functions/vehicles/fn_createLandingNearZoneOnRoad.sqf:
--------------------------------------------------------------------------------
1 | private _pos = call fn_createLandingNearZone;
2 | private _nearestRoad = [_pos, 500] call BIS_fnc_nearestRoad;
3 | if (!isNull _nearestRoad) then {
4 | _pos = getPos _nearestRoad;
5 | };
6 | _pos;
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/functions/fn_setDirectionOfMarker.sqf:
--------------------------------------------------------------------------------
1 | private _group = _this select 0;
2 | private _marker = _this select 1;
3 |
4 | {
5 | _x setDir (markerDir _marker);
6 | if (!(isNull objectParent _x)) then { (vehicle _x) setDir (markerDir _marker); };
7 | } forEach (units _group);
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/BLU_F/custom_unit_compositions.sqf:
--------------------------------------------------------------------------------
1 | // Custom groups can go here
2 | [
3 | //Example
4 | /*[
5 | "unitClassName",
6 | "unitClassName",
7 | "unitClassName",
8 | "unitClassName"
9 | ]
10 | [
11 | "unitClassName",
12 | "unitClassName"
13 | ]*/
14 | ];
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/OPF_F/custom_unit_compositions.sqf:
--------------------------------------------------------------------------------
1 | // Custom groups can go here
2 | [
3 | //Example
4 | /*[
5 | "unitClassName",
6 | "unitClassName",
7 | "unitClassName",
8 | "unitClassName"
9 | ]
10 | [
11 | "unitClassName",
12 | "unitClassName"
13 | ]*/
14 | ];
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/RHSAFRF/custom_unit_compositions.sqf:
--------------------------------------------------------------------------------
1 | // Custom groups can go here
2 | [
3 | //Example
4 | /*[
5 | "unitClassName",
6 | "unitClassName",
7 | "unitClassName",
8 | "unitClassName"
9 | ]
10 | [
11 | "unitClassName",
12 | "unitClassName"
13 | ]*/
14 | ];
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/RHSSAF/custom_unit_compositions.sqf:
--------------------------------------------------------------------------------
1 | // Custom groups can go here
2 | [
3 | //Example
4 | /*[
5 | "unitClassName",
6 | "unitClassName",
7 | "unitClassName",
8 | "unitClassName"
9 | ]
10 | [
11 | "unitClassName",
12 | "unitClassName"
13 | ]*/
14 | ];
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/RHSUSAF/custom_unit_compositions.sqf:
--------------------------------------------------------------------------------
1 | // Custom groups can go here
2 | [
3 | //Example
4 | /*[
5 | "unitClassName",
6 | "unitClassName",
7 | "unitClassName",
8 | "unitClassName"
9 | ]
10 | [
11 | "unitClassName",
12 | "unitClassName"
13 | ]*/
14 | ];
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/functions/fn_ejectUnits.sqf:
--------------------------------------------------------------------------------
1 | private _vehicle = _this select 0;
2 | private _includePlayers = _this select 1;
3 | {
4 | if ((!isPlayer _x) || (isPlayer _x && _includePlayers)) then {
5 | _x action ["Eject", _vehicle]; _x leaveVehicle _vehicle;
6 | };
7 | } foreach (units _vehicle);
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/BLU_F/friendly_vehicle_transport.sqf:
--------------------------------------------------------------------------------
1 | [
2 | "B_Truck_01_transport_F",
3 | "B_Truck_01_covered_F",
4 | "B_APC_Wheeled_01_cannon_F",
5 | "B_APC_Wheeled_03_cannon_F",
6 | "B_T_LSV_01_armed_F",
7 | "B_T_LSV_01_AT_F",
8 | "B_T_LSV_01_armed_CTRG_F",
9 | "B_T_LSV_01_unarmed_F"
10 | ];
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/RHSGREF/unit_composition_types.sqf:
--------------------------------------------------------------------------------
1 | [
2 | [
3 | "West"
4 | ],
5 | [
6 | "rhsgref_faction_cdf_b_ground"
7 | ],
8 | [
9 | "rhsgref_group_cdf_b_reg_infantry" // This aligns with the unit compositions. Since this is index 0 it will use index 0 from the other file.
10 | ]
11 | ]
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/client/fn_createAddRecurit.sqf:
--------------------------------------------------------------------------------
1 | private _ai = _this select 0;
2 |
3 | _ai addAction ["Recruit", {
4 | [_this select 0] join group (_this select 1);
5 | (_this select 0) removeAction (_this select 2);
6 | }];
7 |
8 | _ai addAction ["Delete", {
9 | deleteVehicle (_this select 0) select 0;
10 | }];
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/functions/fn_checkPlayersAround.sqf:
--------------------------------------------------------------------------------
1 | private _position = _this select 0;
2 | private _radius = _this select 1;
3 | private _nearPlayer = FALSE;
4 |
5 | {
6 | if (_position distance (getpos _x) < _radius) then
7 | {
8 | _nearPlayer = TRUE;
9 | };
10 | } forEach call BIS_fnc_listPlayers;
11 |
12 | _nearPlayer;
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/markers/fn_deleteMakerAfterGivenTime.sqf:
--------------------------------------------------------------------------------
1 | private _marker = _this select 0; // The marker
2 | private _time = _this select 1; // Future time
3 |
4 | waitUntil { sleep 1; time >= _time || br_zone_taken || getMarkerColor _marker == ""; };
5 |
6 | br_markers_marked deleteAt (br_markers_marked find _marker);
7 | deleteMarker _marker;
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/RHSGREF/friendly_vehicle_transport.sqf:
--------------------------------------------------------------------------------
1 | [
2 | "rhsgref_cdf_b_btr60",
3 | "rhsgref_cdf_b_btr70",
4 | "rhsgref_cdf_b_reg_uaz_ags",
5 | "rhsgref_cdf_b_reg_uaz_dshkm",
6 | "rhsgref_cdf_b_gaz66",
7 | "rhsgref_cdf_b_gaz66o",
8 | "rhsgref_cdf_b_ural",
9 | "rhsgref_cdf_b_ural_open",
10 | "rhsgref_cdf_b_reg_uaz_open"
11 | ];
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/RHSGREF/friendly_objective_squad_vehicles.sqf:
--------------------------------------------------------------------------------
1 | [
2 | "rhsgref_cdf_b_btr60",
3 | "rhsgref_cdf_b_btr70",
4 | "rhsgref_cdf_b_reg_uaz_ags",
5 | "rhsgref_cdf_b_reg_uaz_dshkm",
6 | "rhsgref_cdf_b_gaz66",
7 | "rhsgref_cdf_b_gaz66o",
8 | "rhsgref_cdf_b_ural",
9 | "rhsgref_cdf_b_ural_open",
10 | "rhsgref_cdf_b_reg_uaz_open"
11 | ];
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/RHSSAF/friendly_vehicle_transport.sqf:
--------------------------------------------------------------------------------
1 | [
2 | "rhssaf_m1025_olive_m2",
3 | "rhssaf_m1025_olive",
4 | "rhssaf_m998_olive_2dr_fulltop",
5 | "rhssaf_m998_olive_2dr_halftop",
6 | "rhssaf_army_pts",
7 | "rhssaf_army_ural_open",
8 | "rhssaf_army_ural",
9 | "rhssaf_un_uaz",
10 | "rhssaf_un_uaz_open",
11 | "rhssaf_un_ural"
12 | ]
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/debug/fnc_unitToEvac.sqf:
--------------------------------------------------------------------------------
1 | private _pad = _this select 0; // The position where the AI will spawn
2 | private _index = _this select 1; // The index of the helictoper given other helicopters
3 |
4 | private _group = createGroup WEST;
5 | "C_man_p_beggar_F" createUnit [getMarkerPos _pad, _group];
6 | br_friendly_groups_wating_for_evac pushBack _group;
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/RHSSAF/friendly_objective_squad_vehicles.sqf:
--------------------------------------------------------------------------------
1 | [
2 | "rhssaf_m1025_olive_m2",
3 | "rhssaf_m1025_olive",
4 | "rhssaf_m998_olive_2dr_fulltop",
5 | "rhssaf_m998_olive_2dr_halftop",
6 | "rhssaf_army_pts",
7 | "rhssaf_army_ural_open",
8 | "rhssaf_army_ural",
9 | "rhssaf_un_uaz",
10 | "rhssaf_un_uaz_open",
11 | "rhssaf_un_ural"
12 | ]
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/OPF_F/unit_compositions.sqf:
--------------------------------------------------------------------------------
1 | [
2 | [
3 | "OI_reconPatrol",
4 | "OI_reconSentry",
5 | "OI_reconTeam",
6 | "OI_SniperTeam",
7 | "OIA_InfAssault",
8 | "OIA_InfSentry",
9 | "OIA_InfSquad",
10 | "OIA_InfSquad_Weapons",
11 | "OIA_InfTeam",
12 | "OIA_InfTeam_AA",
13 | "OIA_InfTeam_AT",
14 | "OIA_ReconSquad"
15 | ]
16 | ];
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/BLU_F/unit_compositions.sqf:
--------------------------------------------------------------------------------
1 | [
2 | [
3 | "BUS_InfSentry",
4 | "BUS_InfSquad",
5 | "BUS_InfAssault",
6 | "BUS_InfSquad_Weapons",
7 | "BUS_InfTeam",
8 | "BUS_InfTeam_AA",
9 | "BUS_InfTeam_AT",
10 | "BUS_ReconPatrol",
11 | "BUS_ReconSentry",
12 | "BUS_ReconTeam",
13 | "BUS_ReconSquad",
14 | "BUS_SniperTeam"
15 | ]
16 | ];
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/functions/vehicles/fn_getWatingEvacGroups.sqf:
--------------------------------------------------------------------------------
1 | private _vehicle = _this select 0;
2 | private _groups = [];
3 | // Get some waiting groups, if any
4 | if (count br_friendly_groups_waiting > 0) then {
5 | _groups = [_groups, br_friendly_groups_wating_for_evac, _vehicle] call fn_findGroupsInQueue;
6 | { _x setBehaviour "SAFE"; } forEach _groups;
7 | };
8 | _groups;
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/task/fn_playerZoneTasking.sqf:
--------------------------------------------------------------------------------
1 | private _delayForAssignment = 5;
2 |
3 | // Creates a task for the player
4 | br_fnc_createPlayerTask = {
5 | [[[],"core\client\task\fn_giveTaskZone.sqf"],"BIS_fnc_execVM",true,true] call BIS_fnc_MP;
6 | };
7 |
8 | // Allows zone to be created before an assignment can happen if host.
9 | sleep _delayForAssignment;
10 |
11 | [] call br_fnc_createPlayerTask;
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/functions/fn_addToZeus.sqf:
--------------------------------------------------------------------------------
1 | private _object = _this select 0;
2 | if ("ZeusSeesAI" call BIS_fnc_getParamValue == 1) then {
3 | {
4 | [_x, _object] remoteExec ["br_fn_addToZeus"];
5 | //_x addCuratorEditableObjects [[_object],true];
6 | } forEach allCurators;
7 | };
8 |
9 | br_fn_addToZeus = {
10 | params["_zeus", "_object"];
11 | _zeus addCuratorEditableObjects [[_object], true];
12 | };
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/BLU_F/friendly_jets.sqf:
--------------------------------------------------------------------------------
1 | [
2 | "B_Plane_CAS_01_F",
3 | "B_UAV_02_F",
4 | "B_UAV_02_CAS_F",
5 | //"B_T_VTOL_01_armed_F",
6 | "B_Plane_Fighter_01_F",
7 | "B_UAV_05_F",
8 | "B_Plane_Fighter_01_Stealth_F",
9 | "B_Plane_CAS_01_Cluster_F",
10 | "O_T_UAV_04_CAS_F"
11 | //"I_Plane_Fighter_04_F",
12 | //"O_Plane_CAS_02_F",
13 | //"O_T_VTOL_02_infantry_F",
14 | //"O_Plane_Fighter_02_F"
15 | ];
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/markers/fn_createTextMarker.sqf:
--------------------------------------------------------------------------------
1 | private _name = _this select 0;
2 | private _loc = _this select 1;
3 | private _txt = _this select 2;
4 | private _color = _this select 3;
5 | private _alpha = _this select 4;
6 | createMarker [_name, _loc];
7 | _name setMarkerShape "ICON";
8 | _name setMarkerText _txt;
9 | _name setMarkerType "mil_triangle";
10 | _name setMarkerColor _color;
11 | _name setMarkerAlpha _alpha;
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/client/task/fn_giveTaskZone.sqf:
--------------------------------------------------------------------------------
1 | _markerPos = getMarkerPos "ZONE_ICON";
2 | _task = player createSimpleTask ["TAKE_THE_ZONE"];
3 | _task setSimpleTaskDescription ["The enemy has taken a zone! You need to take it back!","Take the Zone",""];
4 | _task setTaskState "Assigned";
5 | _task setSimpleTaskDestination (_markerPos);
6 | player setCurrentTask _task;
7 | ["TaskAssigned",["", "Take the zone!"]] call bis_fnc_showNotification;
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/RHSUSAF/friendly_vehicle_transport.sqf:
--------------------------------------------------------------------------------
1 | [
2 | "rhsusf_mrzr4_d",
3 | "rhsusf_m998_w_4dr_fulltop",
4 | "rhsusf_m1025_w_m2",
5 | "rhsusf_m998_w_4dr",
6 | "rhsusf_m998_w_2dr_halftop",
7 | "rhsusf_M1078A1P2_B_M2_WD_fmtv_usarmy",
8 | "rhsusf_M1237_MK19_usarmy_wd",
9 | "rhsusf_M1230_M2_usarmy_wd",
10 | "rhsusf_M1220_usarmy_wd",
11 | "rhsusf_M1220_M153_M2_usarmy_wd",
12 | "rhsusf_M1232_M2_usarmy_wd"
13 | ];
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/functions/fn_checkPosition.sqf:
--------------------------------------------------------------------------------
1 | private _object = _this select 0;
2 | private _position = _object getVariable "checkPosition";
3 |
4 | if (isNil "_position") then {
5 | _object setVariable ["checkPosition", getPos _object];
6 | } else {
7 | if ((_position distance (getPos _object)) <= 0.5) then {
8 | _object setDamage 1;
9 | } else {
10 | _object setVariable ["checkPosition", getPos _object];
11 | };
12 | };
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/client/fn_createTeleportToZone.sqf:
--------------------------------------------------------------------------------
1 | this addAction ["Teleport to zone", {
2 | private _position = [getMarkerPos "ZONE_RADIUS", (("ZoneRadius" call BIS_fnc_getParamValue) * 1.5) * sqrt 360, 600, 1, 0, 0, 0] call BIS_fnc_findSafePos;
3 | _group = group (_this select 1);
4 | (_this select 1) setPos _position;
5 | { if (!(isplayer _x)) then { if (isNull objectParent _x) then { _x setPos _position; };}; } forEach (units _group)
6 | }];
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/functions/fn_commandGroupIntoVehicle.sqf:
--------------------------------------------------------------------------------
1 | private _group = _this select 0;
2 | private _getOut = _this select 1;
3 | private _vehicle = _this select 2;
4 | if (_getOut) then {
5 | _group leaveVehicle _vehicle;
6 | } else {
7 | _group addVehicle _vehicle;
8 | };
9 | {
10 | //_x assignAsCargo _vehicle;
11 | if (_getOut) then { _x action ["Eject", _vehicle]; } else { [_x] orderGetIn true; };
12 | } foreach (units _group);
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/RHSSAF/unit_composition_types.sqf:
--------------------------------------------------------------------------------
1 | [
2 | [
3 | //"Indep",
4 | "Indep",
5 | "Indep"
6 | ],
7 | [
8 | //"rhssaf_faction_un",
9 | "rhssaf_faction_army",
10 | "rhssaf_faction_army"
11 | ],
12 | [
13 | //"rhssaf_group_un_infantry", // This aligns with the unit compositions. Since this is index 0 it will use index 0 from the other file.
14 | "rhssaf_group_army_m10_digital_infantry",
15 | "rhssaf_group_army_m93_oakleaf_infantry"
16 | ]
17 | ]
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/functions/vehicles/fn_getWaitingGroups.sqf:
--------------------------------------------------------------------------------
1 | private _vehicle = _this select 0;
2 | private _groups = [];
3 | // Check if any groups are waiting
4 | if (count br_friendly_groups_waiting > 0) then {
5 | // Get some waiting groups, if any
6 | _groups = [_groups, br_friendly_groups_waiting, _vehicle] call fn_findGroupsInQueue;
7 | } else {
8 | // Check if any players are waiting in helicopter
9 | _groups = [_vehicle] call fn_getPlayersInVehicle;
10 | };
11 | _groups;
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/functions/fn_removeDeadAIRequestedVehicle.sqf:
--------------------------------------------------------------------------------
1 | params["_vehicle", "_group"];
2 |
3 | waitUntil { sleep br_garbage_collection_interval; !alive _vehicle};
4 |
5 | // Remove the AI from the vehicle groups
6 | br_friendly_ai_groups deleteAt (br_friendly_ai_groups find _group);
7 | br_friendly_vehicles deleteAt (br_friendly_vehicles find _group);
8 |
9 | // Append the units as normal ground units
10 | br_friendly_ground_groups pushBack _group;
11 | br_friendly_ai_groups pushBack _group;
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/functions/fn_getPlayersInVehicle.sqf:
--------------------------------------------------------------------------------
1 | private _vehicle = _this select 0;
2 | private _group = [];
3 |
4 | /*{
5 | if (_x in _vehicle && !(group _x in _group)) then { _group pushBack group _x };
6 | } forEach switchableUnits;
7 |
8 | {
9 | if (_x in _vehicle && !(group _x in _group)) then { _group pushBack group _x };
10 | } forEach playableUnits;*/
11 |
12 | {
13 | if (_x in _vehicle && !(group _x in _group)) then { _group pushBack group _x };
14 | } forEach allPlayers;
15 |
16 | _group;
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/base/fn_customTransport.sqf:
--------------------------------------------------------------------------------
1 | private _position = _this select 0;
2 |
3 | // run the vehicle
4 | br_startCustomTransport = {
5 | while {TRUE} do {
6 | _entList = _position nearEntities 5;
7 | {
8 | private _driver = driver _x;
9 | if !(isNull _driver) then {
10 | if (isPlayer _driver) then {
11 | [_driver, _x] execVM "core\server\base\fn_customTransportRun.sqf";
12 | };
13 | };
14 | } forEach _entList;
15 | sleep 5;
16 | };
17 | };
18 |
19 | call br_startCustomTransport;
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/BLU_F/friendly_transport.sqf:
--------------------------------------------------------------------------------
1 | [
2 | "B_Heli_Transport_03_F",
3 | "B_Heli_Transport_03_unarmed_F",
4 | "B_Heli_Transport_03_black_F",
5 | "B_Heli_Transport_03_unarmed_green_F",
6 | "B_CTRG_Heli_Transport_01_sand_F",
7 | "B_CTRG_Heli_Transport_01_tropic_F",
8 | "B_Heli_Light_01_F",
9 | "B_Heli_Transport_01_F",
10 | "B_Heli_Transport_01_camo_F",
11 | "I_Heli_Transport_02_F",
12 | "I_Heli_light_03_unarmed_F",
13 | "O_Heli_Light_02_v2_F",
14 | "O_Heli_Transport_04_bench_F",
15 | "O_Heli_Transport_04_covered_F"
16 | ];
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/functions/helicopters/fn_createLandingNearObject.sqf:
--------------------------------------------------------------------------------
1 | private _object = _this select 0; // An object/unit/vehicle to use.
2 |
3 | private _spaceMult = 1;
4 | private _pos = [getpos _object, 0, 300 * _spaceMult, 24, 0, br_heli_land_max_angle, 0] call BIS_fnc_findSafePos;
5 | // We also find another position if it returns a null position
6 | while {count _pos > 2} do {
7 | _pos = [getpos _object, 0, 300 * _spaceMult, 24, 0, br_heli_land_max_angle, 0] call BIS_fnc_findSafePos;
8 | _spaceMult = _spaceMult + 0.1;
9 | sleep 0.1;
10 | };
11 | _pos;
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/RHSUSAF/unit_composition_types.sqf:
--------------------------------------------------------------------------------
1 | [
2 | [
3 | //"West",
4 | "West",
5 | //"West",
6 | "West"
7 | ],
8 | [
9 | //"rhs_faction_usarmy_d",
10 | "rhs_faction_usarmy_wd",
11 | //"rhs_faction_usmc_d",
12 | "rhs_faction_usmc_wd"
13 | ],
14 | [
15 | //"rhs_group_nato_usarmy_d_infantry", // This aligns with the unit compositions. Since this is index 0 it will use index 0 from the other file.
16 | "rhs_group_nato_usarmy_wd_infantry",
17 | //"rhs_group_nato_usmc_d_infantry",
18 | "rhs_group_nato_usmc_wd_infantry"
19 | ]
20 | ]
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/functions/fn_createVehicleCrew.sqf:
--------------------------------------------------------------------------------
1 | private _vehicle = _this select 0;
2 | private _group = _this select 1;
3 |
4 | // Create its crew
5 | createVehicleCrew _vehicle;
6 | private _temp = group ((crew _vehicle) select 0);
7 | // If vehicle is another faction it can spawn people on the wrong side, we need them to be on our side.
8 | (units _temp) joinSilent _group;
9 | { _x setBehaviour "AWARE"; _x setSkill br_ai_skill; } forEach (units _group);
10 | // Apply the zone AI to the vehicle
11 | //br_friendly_ai_groups pushBack _attackVehicleGroup;
12 | _group;
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/functions/fn_checkVehicleAndCrewAlive.sqf:
--------------------------------------------------------------------------------
1 | private _vehicle = _this select 0; // The vehicle
2 | private _vehicleGroup = _this select 1; // The group controlling the vehicle
3 | private _leaderDistanceMatters = _this select 2; // Matters if the leader is too far away
4 |
5 | private _isAlive = TRUE;
6 | if (_leaderDistanceMatters) then {
7 | if (((leader _vehicleGroup) distance _vehicle) >= 30) then {
8 | _isAlive = FALSE;
9 | };
10 | };
11 | if (({(alive _x)} count (units _vehicleGroup) == 0) && {!(alive _vehicle)}) then { _isAlive = FALSE; };
12 | _isAlive;
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/recruit/fn_reassignRecruitAI.sqf:
--------------------------------------------------------------------------------
1 | While {TRUE} do {
2 | {
3 | private _group = group _x;
4 | if ((leader _group) == _x) then { // Check no-under player control, if not then add to AI control
5 | br_recruits deleteAt (br_recruits find _x);
6 | _x groupChat "This group is now under AI control.";
7 | br_friendly_ground_groups pushBack _group; // This will either delete if they're too far from the zone or add them as another group unit within the zone
8 | br_friendly_ai_groups pushBack _group;
9 | };
10 | } forEach br_recruits;
11 | sleep 45;
12 | };
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/functions/helicopters/fn_dropEvacedUnitsAtBase.sqf:
--------------------------------------------------------------------------------
1 | private _vehicle = _this select 0;
2 | private _groups = _this select 1;
3 |
4 | private _tempTime = 0;
5 | {
6 | private _y = _x;
7 | _tempTime = time + br_groupsStuckTeleportDelay;
8 | waitUntil { sleep 1; [_vehicle, TRUE] call fn_ejectUnits; {_x in _vehicle} count (units _y) == 0 || time > _tempTime};
9 | // Move group to waiting groups
10 | private _playerCount = ({isPlayer _x} count (units _y));
11 | if (_playerCount == 0) then {
12 | br_friendly_groups_waiting pushBack _y;
13 | };
14 | } forEach _groups;
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/RHSUSAF/friendly_recruit.sqf:
--------------------------------------------------------------------------------
1 | [
2 | "rhsusf_army_ucp_autorifleman",
3 | "rhsusf_army_ucp_aa",
4 | "rhsusf_army_ucp_autoriflemana",
5 | "rhsusf_army_ucp_engineer",
6 | "rhsusf_army_ucp_explosives",
7 | "rhsusf_army_ucp_grenadier",
8 | "rhsusf_army_ucp_javelin",
9 | "rhsusf_army_ucp_machinegunner",
10 | "rhsusf_army_ucp_marksman",
11 | "rhsusf_army_ucp_medic",
12 | "rhsusf_army_ucp_rifleman",
13 | "rhsusf_army_ucp_rifleman_m16",
14 | "rhsusf_army_ucp_rifleman_m4",
15 | "rhsusf_army_ucp_rifleman_m590",
16 | "rhsusf_army_ucp_sniper",
17 | "rhsusf_army_ucp_aa"
18 | ]
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/functions/fn_createComposition.sqf:
--------------------------------------------------------------------------------
1 | private _source = _this select 0;
2 | private _composition = _this select 1;
3 | private _objectGroup = [];
4 |
5 | {
6 | _x params ["_type", "_offset", "_newDir"];
7 | private _obj = _type createVehicle [0,0,0];
8 | [_source, _obj, _offset, _newDir] call BIS_fnc_relPosObject;
9 | private _newPos = getPosASL _obj;
10 | _newPos set [2, 0];
11 | _obj setPosATL _newPos;
12 | _obj setVectorUp (surfaceNormal _newPos);
13 | _objectGroup pushBack _obj;
14 | sleep 0.1;
15 | _obj enableDynamicSimulation true;
16 | } forEach _composition;
17 | _objectGroup;
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/zone/fn_placeMines.sqf:
--------------------------------------------------------------------------------
1 | fn_place_mines = {
2 | private _nMines = random 100;
3 | private _minesPlaced = 0;
4 | while {_minesPlaced < _nMines} do {
5 | private _pos = [getMarkerPos "ZONE_RADIUS", 0, br_zone_radius * sqrt br_max_radius_distance, 2, 0, 60, 0] call BIS_fnc_findSafePos;
6 | private _mine = createMine [selectrandom ["ATMine", "APERSMine", "APERSBoundingMine", "SLAMDirectionalMine", "APERSTripMine", "Claymore_F", "IEDLandBig_F", "IEDLandSmall_F"], _pos, [], 0];
7 | br_placed_mines pushBack _mine;
8 | _minesPlaced = _minesPlaced + 1;
9 | };
10 | };
11 |
12 | call fn_place_mines;
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/client/fn_setPlayerSettings.sqf:
--------------------------------------------------------------------------------
1 | private _aim = 0.3;
2 |
3 | br_fnc_Fatigue = {
4 | if ("Fatigue" call BIS_fnc_getParamValue == 1) then { TRUE } else { FALSE };
5 | };
6 |
7 | br_fnc_Stamina = {
8 | if ("Stamina" call BIS_fnc_getParamValue == 1) then { TRUE } else { FALSE };
9 | };
10 |
11 | br_fnc_CustomAim = {
12 | if ("CustomAim" call BIS_fnc_getParamValue == 1) then { TRUE } else { FALSE };
13 | };
14 |
15 | // Disable annoying crap
16 | player enableFatigue ([] call br_fnc_Fatigue);
17 | player enableStamina ([] call br_fnc_Stamina);
18 | if ([] call br_fnc_CustomAim) then {player setCustomAimCoef _aim};
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/markers/fn_createRadiusMarker.sqf:
--------------------------------------------------------------------------------
1 | private _name = _this select 0;
2 | private _loc = _this select 1;
3 | private _radi = _this select 2;
4 | private _maxD = _this select 3;
5 | private _color = _this select 4;
6 | private _txt = _this select 5;
7 | private _alpha = _this select 6;
8 | private _brush = _this select 7;
9 | private _shape = _this select 8;
10 |
11 | createMarker [_name, _loc];
12 | _name setMarkerSize [_radi * sqrt _maxD, _radi * sqrt _maxD];
13 | _name setMarkerBrush _brush;
14 | _name setMarkerShape _shape;
15 | _name setMarkerColor _color;
16 | _name setMarkerText _txt;
17 | _name setMarkerAlpha _alpha;
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/functions/helicopters/fn_createLandingNearZone.sqf:
--------------------------------------------------------------------------------
1 | private _spaceMult = 1;
2 | private _pos = [getMarkerPos "ZONE_RADIUS", (br_zone_radius * 2) * sqrt br_max_radius_distance, 600 * _spaceMult, 24, 0, br_heli_land_max_angle, 0] call BIS_fnc_findSafePos;
3 | // We also find another position if it's too far from the zone
4 | while {count _pos > 2 || _pos distance br_current_zone > (br_max_ai_distance_before_delete - 50)} do {
5 | _pos = [getMarkerPos "ZONE_RADIUS", (br_zone_radius * 2) * sqrt br_max_radius_distance, 600 * _spaceMult, 24, 0, br_heli_land_max_angle, 0] call BIS_fnc_findSafePos;
6 | _spaceMult = _spaceMult + 0.1;
7 | sleep 0.1;
8 | };
9 | _pos;
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/OPF_F/friendly_vehicles.sqf:
--------------------------------------------------------------------------------
1 | [
2 | "O_APC_Wheeled_02_rcws_F",
3 | "O_APC_Wheeled_02_rcws_v2_F",
4 | "O_UGV_01_F",
5 | "O_UGV_01_rcws_F",
6 | "O_Truck_03_repair_F",
7 | "O_Truck_03_ammo_F",
8 | "O_Truck_03_fuel_F",
9 | "O_Truck_03_medical_F",
10 | "O_Heli_Attack_02_F",
11 | "O_Heli_Attack_02_black_F",
12 | "O_APC_Tracked_02_cannon_F",
13 | "O_APC_Tracked_02_AA_F",
14 | "O_MBT_02_cannon_F",
15 | "O_MRAP_02_hmg_F",
16 | "O_MRAP_02_gmg_F",
17 | "O_G_Offroad_01_armed_F",
18 | "O_G_Offroad_01_AT_F",
19 | "O_Quadbike_01_F",
20 | "I_LT_01_cannon_F",
21 | "I_LT_01_AA_F",
22 | "I_LT_01_scout_F",
23 | "I_LT_01_AT_F",
24 | "C_Kart_01_Red_F"
25 | ];
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/RHSSAF/enemy_speicals.sqf:
--------------------------------------------------------------------------------
1 | [
2 | "rhssaf_army_pts",
3 | "rhssaf_army_d30",
4 | "rhssaf_army_m252",
5 | "rhssaf_m1025_olive_m2",
6 | "rhssaf_m1025_olive",
7 | "rhssaf_m998_olive_2dr_fulltop",
8 | "rhssaf_m998_olive_2dr_halftop",
9 | "rhssaf_army_t72s",
10 | "rhssaf_army_m93_oakleaf_summer_crew",
11 | "rhssaf_army_ural_fuel",
12 | "rhssaf_army_ural",
13 | "rhssaf_army_metis_9k115",
14 | "rhssaf_army_ags30_tripod",
15 | "rhssaf_army_nsv_tripod",
16 | "rhssaf_army_m2staticmg_minitripod",
17 | "rhssaf_airforce_ht48",
18 | "rhssaf_airforce_l_18",
19 | "rhssaf_airforce_l_18_101",
20 | "rhssaf_un_uaz",
21 | "rhssaf_un_uaz_open",
22 | "rhssaf_un_ural"
23 | ];
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/SBGF/fn_posConversion.sqf:
--------------------------------------------------------------------------------
1 | /* //////////////////////////////////////////////
2 | Author: J.Shock
3 |
4 | Function: fn_posConversion.sqf
5 |
6 | Description: Takes an object/string and gets the position.
7 |
8 | Parameters:
9 | 1- (string/object/position array)
10 |
11 | Return: Position.
12 |
13 | *///////////////////////////////////////////////
14 | params
15 | [
16 | ["_data",[0,0,0]]
17 | ];
18 |
19 | switch (typeName _data) do
20 | {
21 | case "OBJECT": { _data = getPos _data; };
22 | case "STRING": { _data = getMarkerPos _data; };
23 | case "ARRAY": { _data; };
24 | default { diag_log "Center position undefined >> SBGF\fn_buildingPositions.sqf"; };
25 | };
26 |
27 | _data;
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/RHSGREF/friendly_recruit.sqf:
--------------------------------------------------------------------------------
1 | [
2 | "rhsgref_cdf_b_reg_specialist_aa",
3 | "rhsgref_cdf_b_reg_grenadier_rpg",
4 | "rhsgref_cdf_b_reg_crew",
5 | "rhsgref_cdf_b_reg_crew_commander",
6 | "rhsgref_cdf_b_reg_engineer",
7 | "rhsgref_cdf_b_reg_engineer",
8 | "rhsgref_cdf_b_reg_general",
9 | "rhsgref_cdf_b_reg_machinegunner",
10 | "rhsgref_cdf_b_reg_marksman",
11 | "rhsgref_cdf_b_reg_medic",
12 | "rhsgref_cdf_b_reg_officer",
13 | "rhsgref_cdf_b_reg_rifleman",
14 | "rhsgref_cdf_b_reg_rifleman_akm",
15 | "rhsgref_cdf_b_reg_rifleman_aks74",
16 | "rhsgref_cdf_b_reg_grenadier",
17 | "rhsgref_cdf_b_reg_rifleman_lite",
18 | "rhsgref_cdf_b_reg_rifleman_rpg75",
19 | "rhsgref_cdf_b_reg_squadleader"
20 | ]
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/RHSAFRF/unit_composition_types.sqf:
--------------------------------------------------------------------------------
1 | [
2 | [
3 | "East",
4 | //"East",
5 | "East",
6 | "East",
7 | "East",
8 | "East",
9 | "East"
10 | ],
11 | [
12 | "rhs_faction_msv",
13 | //"rhs_faction_vdv",
14 | "rhs_faction_vdv",
15 | "rhs_faction_vdv",
16 | "rhs_faction_vdv",
17 | "rhs_faction_vdv",
18 | "rhs_faction_vmf"
19 | ],
20 | [
21 | "rhs_group_rus_msv_infantry_emr", // This aligns with the unit compositions. Since this is index 0 it will use index 0 from the other file.
22 | //"rhs_group_rus_vdv_des_infantry",
23 | "rhs_group_rus_vdv_infantry",
24 | "rhs_group_rus_vdv_infantry_flora",
25 | "rhs_group_rus_vdv_infantry_mflora",
26 | "rhs_group_rus_vdv_infantry_recon"
27 | ]
28 | ]
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/functions/fn_waitForGroupToEnterVehicle.sqf:
--------------------------------------------------------------------------------
1 | private _group = _this select 0;
2 | private _vehicle = _this select 1;
3 | private _vehicleGroup = _this select 2;
4 | private _timeBeforeTeleport = 0;
5 |
6 | { _x selectweapon primaryWeapon _x; /*_x setDamage 0*/ } foreach (units _group);
7 | _timeBeforeTeleport = time + br_groupsStuckTeleportDelay;
8 | waitUntil { sleep 2; {_x in _vehicle} count (units _group) == {(alive _x)} count (units _group) || !([_vehicle, _vehicleGroup, TRUE] call fn_checkVehicleAndCrewAlive) || time >= _timeBeforeTeleport || _vehicle emptyPositions "cargo" == 0 || (getPos _vehicle select 2 > 10) };
9 | if (time >= _timeBeforeTeleport || getPos _vehicle select 2 > 10) then { { _x moveInCargo _vehicle; } forEach units _group; };
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/recruit/fn_createRecruitAI.sqf:
--------------------------------------------------------------------------------
1 | private _spawnPad = _this select 0; // Spawn position
2 | private _recruitIndex = _this select 1; // Index
3 | private _unitChance = _this select 2;
4 |
5 | // Run the script
6 | fn_createRecruitAI = {
7 | While {TRUE} do {
8 | private _grp = createGroup WEST;
9 | (selectrandom _unitChance) createUnit [getmarkerpos _spawnPad, _grp];
10 | _grp setFormDir (markerDir _spawnPad);
11 | private _unit = (units (_grp)) select 0;
12 | [[[_unit],"core\client\fn_createAddRecurit.sqf"],"BIS_fnc_execVM",true,true] call BIS_fnc_MP;
13 | [_unit] call fn_objectInitEvents;
14 | // waits untill has recruited ai
15 | waitUntil { sleep 10; count units _grp == 0 };
16 | };
17 | };
18 |
19 | call fn_createRecruitAI;
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/zone_objective/fn_groupChecker.sqf:
--------------------------------------------------------------------------------
1 | private _groups = _this select 0;
2 | private _objectivePos = _this select 1;
3 | private _radius = _this select 2;
4 |
5 | private _nDead = 0;
6 |
7 | While {TRUE} do {
8 | _nDead = 0;
9 | {
10 | private _group = _x;
11 | if ((getpos (leader _group)) distance _objectivePos > (_radius * sqrt 360) + 100) then { // Delete objective group if too far from objective
12 | [_group] call br_fnc_deleteGroups; // function from zoneCreation.sqf
13 | _nDead = _nDead + 1;
14 | } else {
15 | if ((({alive _x} count units _group) < 1)) then {
16 | _groups deleteAt (_groups find _group);
17 | };
18 | };
19 | } forEach _groups;
20 | if (_nDead >= count _groups) exitWith {
21 | FALSE;
22 | };
23 | sleep 30;
24 | };
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/functions/fn_findGroupsInQueue.sqf:
--------------------------------------------------------------------------------
1 | // Group to append to
2 | private _groups = _this select 0;
3 | private _groupWait = _this select 1;
4 | private _vehicle = _this select 2;
5 | // Number of people
6 | private _Peps = 0;
7 |
8 | {
9 | // Get the alive units for each group
10 | private _unitsAlive = [_x] call fn_getUnitAliveCount;
11 | if (_unitsAlive > 0) then {
12 | private _emptyPositions = ((_vehicle emptyPositions "Cargo") + (_vehicle emptyPositions "Gunner") + (_vehicle emptyPositions "Commander") + (_vehicle emptyPositions "Driver") + (count (allTurrets [_vehicle, true])));
13 | if ((_Peps + _unitsAlive) <= _emptyPositions) then {
14 | _groupWait deleteAt (_groupWait find _x);
15 | _groups pushBack _x;
16 | _Peps = _Peps + _unitsAlive;
17 | sleep 3;
18 | };
19 | };
20 | } forEach _groupWait;
21 | _groups;
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/functions/fn_selectRandomGroupToSpawn.sqf:
--------------------------------------------------------------------------------
1 | // The side number
2 | private _side = _this select 0;
3 | private _sideTypes = _this select 1;
4 | private _unitTypes = _this select 2;
5 | private _types = _this select 3;
6 | private _units = _this select 4;
7 | private _location = _this select 5;
8 | private _mainGroup = _this select 6;
9 |
10 | // Picks random type of units
11 | private _index = floor random count _unitTypes;
12 | // Selects unit side given the side
13 | private _type = _types select _index;
14 | private _typeSide = _sideTypes select _index;
15 | // Selects group side from the units array
16 | private _groups = _units select _index;
17 | private _group = [_side, _typeSide, _type, _unitTypes select _index, selectrandom _groups, _location] call fn_spawnGroup;
18 | //_group setBehaviour "SAFE";
19 | _mainGroup pushBack _group;
20 | _group;
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/zone_objective/fn_groupRoam.sqf:
--------------------------------------------------------------------------------
1 | private _group = _this select 0;
2 | private _position = _this select 1;
3 | private _radius = _this select 2;
4 |
5 | While {({alive _x} count units _group) > 0} do {
6 | // Check number of waypoints, if less then 3 add more.
7 | if (count (waypoints _group) < 3) then {
8 | private _pos = [_position, 0, _radius * sqrt br_max_radius_distance, 2, 0, 60, 0] call BIS_fnc_findSafePos;
9 | private _wp = _group addWaypoint [_pos, 0];
10 | _wp setWaypointStatements ["true","deleteWaypoint [group this, currentWaypoint (group this)]"];
11 | };
12 | sleep br_command_delay;
13 | };
14 |
15 | {
16 | private _vehicle = (vehicle _x);
17 | if (!(isNull _vehicle)) then {
18 | deleteVehicle _vehicle;
19 | };
20 | deleteVehicle _x;
21 | } forEach (units _group);
22 |
23 | deleteGroup _group;
24 | _group = grpNull;
25 | _group = nil;
26 |
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/RHSAFRF/friendly_vehicles.sqf:
--------------------------------------------------------------------------------
1 | [
2 | "rhs_btr70_msv",
3 | "rhs_btr80a_msv",
4 | "rhs_btr60_msv",
5 | "rhs_brm1k_msv",
6 | "rhs_bmp3_msv",
7 | "rhs_bmp2k_msv",
8 | "rhs_bmp2e_msv",
9 | "rhs_bmp2d_msv",
10 | "rhs_bmp2_msv",
11 | "rhs_bmp1p_msv",
12 | "rhs_bmp1k_msv",
13 | "rhs_bmp1d_msv",
14 | "rhs_bmp1_msv",
15 | "RHS_Mi24V_vvs",
16 | "RHS_Mi24V_vdv",
17 | "RHS_Ka52_vvs",
18 | "rhs_sprut_vdv",
19 | "rhs_gaz66_zu23_vdv",
20 | "RHS_BM21_VDV_01",
21 | "rhs_zsu234_aa",
22 | "rhs_bmd1",
23 | "rhs_bmd1p",
24 | "rhs_bmd1pk",
25 | "rhs_bmd1r",
26 | "rhs_bmd2",
27 | "rhs_bmd2m",
28 | "rhs_bmd4_vdv",
29 | "rhs_bmd4m_vdv",
30 | "rhs_bmd4ma_vdv",
31 | "rhs_bmp1_vdv",
32 | "rhs_bmp1d_vdv",
33 | "rhs_bmp1k_vdv",
34 | "rhs_bmp1p_vdv",
35 | "rhs_bmp2_vdv",
36 | "rhs_bmp2d_vdv",
37 | "rhs_bmp2e_vdv",
38 | "rhs_bmp3_late_msv",
39 | "rhs_bmp3_msv",
40 | "rhs_bmp3m_msv",
41 | "rhs_bmp3mera_msv"
42 | ];
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/evannexInit.sqf:
--------------------------------------------------------------------------------
1 | if (isServer) then {
2 | // Run the gamemode
3 | call compile preprocessFileLineNumbers "core\server\cache\fn_functions.sqf";
4 | execVM "core\server\zone\zoneCreation.sqf";
5 | execVM "core\server\handlers\fn_requestVehicle.sqf";
6 | ["Initialize"] call BIS_fnc_dynamicGroups;
7 | };
8 |
9 | // If it's a client
10 | if (hasInterface) then {
11 | // Disable annoying crap
12 | execVM "core\client\fn_setPlayerSettings.sqf";
13 | player addeventhandler ["respawn","_this execvm 'core\client\fn_setPlayerSettings.sqf'"];
14 | execVM "core\client\fn_displayStartingScreen.sqf";
15 | if ("VirutalSupport" call BIS_fnc_getParamValue == 1) then { br_support_module synchronizeObjectsAdd [player]; };
16 | ["InitializePlayer", [player, TRUE]] call BIS_fnc_dynamicGroups;
17 | } else {
18 | setViewDistance (parseNumber "ViewDistance" call BIS_fnc_getParamValue);
19 | setObjectViewDistance (parseNumber "ViewDistance" call BIS_fnc_getParamValue);
20 | };
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/RHSSAF/friendly_recruit.sqf:
--------------------------------------------------------------------------------
1 | [
2 | "rhssaf_army_m10_digital_asst_mgun",
3 | "rhssaf_army_m10_digital_asst_spec_aa",
4 | "rhssaf_army_m10_digital_asst_spec_at",
5 | "rhssaf_army_m10_digital_crew_armored_nco",
6 | "rhssaf_army_m10_digital_crew_armored",
7 | "rhssaf_army_m10_digital_crew",
8 | "rhssaf_army_m10_digital_engineer",
9 | "rhssaf_army_m10_digital_medic",
10 | "rhssaf_army_m10_digital_gl",
11 | "rhssaf_army_m10_digital_sniper_m76",
12 | "rhssaf_army_m10_digital_spec_aa",
13 | "rhssaf_army_m10_digital_spec_at",
14 | "rhssaf_army_m10_digital_officer",
15 | "rhssaf_army_m10_digital_repair",
16 | "rhssaf_army_m10_digital_rifleman_ammo",
17 | "rhssaf_army_m10_digital_rifleman_at",
18 | "rhssaf_army_m10_digital_rifleman_m21",
19 | "rhssaf_army_m10_digital_rifleman_m70",
20 | "rhssaf_army_m10_digital_spotter",
21 | "rhssaf_army_m10_digital_sq_lead",
22 | "rhssaf_army_m10_digital_exp",
23 | "rhssaf_army_m10_digital_ft_lead",
24 | "rhssaf_army_m10_digital_mgun_m84"
25 | ]
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/functions/vehicles/fn_waitUntillArrived.sqf:
--------------------------------------------------------------------------------
1 | private _vehicle = _this select 0; // The helictoper
2 | private _drivingPosition = _this select 1; // Position to drive to
3 | private _vehicleGroup = _this select 2; // The group controlling the vehicle
4 |
5 | _vehicle setDamage 0;
6 | _vehicle setFuel 1;
7 | _vehicleGroup setBehaviour "AWARE";
8 | {_x enableAI "MOVE"; } forEach units _vehicleGroup;
9 |
10 | // Do WP stuff
11 | private _wp = _vehicleGroup addWaypoint [_drivingPosition, 0];
12 | _wp setWaypointType "MOVE";
13 | _wp setWaypointStatements ["true","deleteWaypoint [group this, currentWaypoint (group this)]"];
14 |
15 | _vehicle engineOn true;
16 | waitUntil { sleep 2; _vehicle distance _drivingPosition < 10 || {!([_vehicle, _vehicleGroup, TRUE] call fn_checkVehicleAndCrewAlive)} || (count (waypoints _vehicleGroup)) == 0 || {br_zone_taken}};
17 | /*while {(count (waypoints _vehicleGroup)) > 0} do
18 | {
19 | deleteWaypoint ((waypoints _vehicleGroup) select 0);
20 | };*/
21 | _vehicle engineOn false;
22 | [_vehicleGroup] call fn_deleteGroup;
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/BLU_F/enemy_side_units.sqf:
--------------------------------------------------------------------------------
1 | [
2 | ["HQ", ["B_officer_F", "B_Soldier_F", "B_medic_F", "B_Soldier_F", "B_Soldier_F"]],
3 | ["Construction Site", ["B_Soldier_F", "B_Soldier_F", "B_Soldier_F", "B_Soldier_F", "B_Soldier_F", "B_Soldier_F", "B_Soldier_F", "B_Soldier_F", "B_Soldier_F", "B_Soldier_F", "B_Soldier_F", "B_Soldier_F", "B_Soldier_F", "B_Soldier_F", "B_Soldier_F", "B_Soldier_F", "B_Soldier_F"]],
4 | ["AA", ["B_T_APC_Tracked_01_AA_F", "B_T_APC_Tracked_01_AA_F", "B_T_MRAP_01_gmg_F"]],
5 | ["Artillery", ["B_T_MBT_01_arty_F", "B_T_MRAP_01_hmg_F"]],
6 | ["Enemy Survivors", ["B_Survivor_F", "B_Survivor_F", "B_Survivor_F", "B_Survivor_F", "B_Survivor_F", "B_Survivor_F"]],
7 | ["Enemy Mortars",["B_Mortar_01_F", "B_Mortar_01_F", "B_Mortar_01_F", "B_Mortar_01_F", "B_MRAP_01_gmg_F"]],
8 | ["EMP", ["O_Truck_03_device_F"]],
9 | ["Helicopter", ["B_Heli_Attack_01_F"]],
10 | ["AA_Zone", ["B_T_APC_Tracked_01_AA_F"]],
11 | ["Enemy_Camp", ["B_Soldier_F", "B_Soldier_F", "B_soldier_AA_F", "B_soldier_AT_F", "B_Soldier_F"]],
12 | ["Enemy_Mortors", ["B_Mortar_01_F", "B_Mortar_01_F", "B_Mortar_01_F", "B_Mortar_01_F"]]
13 | ]
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/RHSUSAF/friendly_vehicles.sqf:
--------------------------------------------------------------------------------
1 | [
2 | "rhsusf_M1078A1P2_fmtv_usarmy",
3 | "rhsusf_M1078A1P2_open_fmtv_usarmy",
4 | "rhsusf_m113_usarmy_supply",
5 | "rhsusf_m113_usarmy_MK19_90",
6 | "rhsusf_m113_usarmy_MK19",
7 | "rhsusf_m113_usarmy_medical",
8 | "rhsusf_m113_usarmy_M240",
9 | "rhsusf_m113_usarmy_M2_90",
10 | "rhsusf_m109_usarmy",
11 | "rhsusf_m113_usarmy_MK19_90",
12 | "rhsusf_m966_w",
13 | "rhsusf_m1025_w_mk19",
14 | "rhsusf_m1025_w_m2",
15 | "rhsusf_m1045_w",
16 | "rhsusf_m1043_w_mk19",
17 | "RHS_AH64D_wd",
18 | "RHS_M2A2_wd",
19 | "RHS_M2A3_wd",
20 | "RHS_M2A3_BUSKI_wd",
21 | "RHS_M2A3_BUSKIII_wd",
22 | "RHS_M6_wd",
23 | "rhsusf_M1117_W",
24 | "rhsusf_M1237_M2_usarmy_wd",
25 | "rhsusf_M1237_MK19_usarmy_wd",
26 | "rhsusf_m1a1aimwd_usarmy",
27 | "rhsusf_m1a1aim_tuski_wd",
28 | "rhsusf_m1a2sep1wd_usarmy",
29 | "rhsusf_m1a2sep1tuskiwd_usarmy",
30 | "rhsusf_m1a2sep1tuskiiwd_usarmy",
31 | "rhsusf_M977A4_AMMO_usarmy_wd",
32 | "rhsusf_M977A4_REPAIR_BKIT_usarmy_wd",
33 | "rhsusf_M977A4_AMMO_BKIT_M2_usarmy_wd",
34 | "rhsusf_M1085A1P2_B_WD_Medical_fmtv_usarmy",
35 | "rhsusf_mrzr4_d"
36 | ];
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/OPF_F/enemy_side_units.sqf:
--------------------------------------------------------------------------------
1 | [
2 | ["HQ", ["O_officer_F", "O_Soldier_F", "O_Soldier_AT_F", "O_Soldier_AA_F", "O_medic_F", "O_Soldier_GL_F"]],
3 | ["Construction Site", ["O_Soldier_F", "O_Soldier_F", "O_Soldier_F", "O_Soldier_F", "O_Soldier_F", "O_Soldier_F", "O_Soldier_F", "O_Soldier_F", "O_Soldier_F", "O_Soldier_F", "O_Soldier_F", "O_Soldier_F", "O_Soldier_F", "O_Soldier_F", "O_Soldier_F", "O_Soldier_F", "O_Soldier_F"]],
4 | ["AA", ["O_APC_Tracked_02_AA_F", "O_APC_Tracked_02_AA_F", "O_T_LSV_02_armed_F"]],
5 | ["Artillery", ["O_MBT_02_arty_F", "O_T_MRAP_02_hmg_ghex_F"]],
6 | ["Enemy Survivors", ["O_Survivor_F", "O_Survivor_F", "O_Survivor_F", "O_Survivor_F", "O_Survivor_F", "O_Survivor_F"]],
7 | ["Enemy Mortars",["O_Mortar_01_F", "O_Mortar_01_F", "O_Mortar_01_F", "O_Mortar_01_F", "B_MRAP_01_gmg_F"]],
8 | ["EMP", ["O_Truck_03_device_F"]],
9 | ["Helicopter", ["O_Heli_Attack_02_F"]],
10 | ["AA_Zone", ["O_APC_Tracked_02_AA_F"]],
11 | ["Enemy_Camp", ["O_Soldier_F", "O_Soldier_F", "O_Soldier_AT_F", "O_Soldier_F", "O_Soldier_F"]],
12 | ["Enemy_Mortors", ["O_Mortar_01_F", "O_Mortar_01_F", "O_Mortar_01_F", "O_Mortar_01_F"]]
13 | ]
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/RHSAFRF/enemy_speicals.sqf:
--------------------------------------------------------------------------------
1 | [
2 | "rhs_2s3_tv",
3 | "rhs_bmd1",
4 | "rhs_bmd1p",
5 | "rhs_bmd1pk",
6 | "rhs_bmd1r",
7 | "rhs_bmd2",
8 | "rhs_bmd2m",
9 | "rhs_bmd4_vdv",
10 | "rhs_bmd4m_vdv",
11 | "rhs_bmd4ma_vdv",
12 | "rhs_bmp1_vdv",
13 | "rhs_bmp1d_vdv",
14 | "rhs_bmp1k_vdv",
15 | "rhs_bmp1p_vdv",
16 | "rhs_bmp2_vdv",
17 | "rhs_bmp2d_vdv",
18 | "rhs_bmp2e_vdv",
19 | "rhs_bmp3_late_msv",
20 | "rhs_bmp3_msv",
21 | "rhs_bmp3m_msv",
22 | "rhs_bmp3mera_msv",
23 | "rhs_brm1k_vdv",
24 | "rhs_prp3_vdv",
25 | "rhs_pts_vmf",
26 | "rhs_sprut_vdv",
27 | "rhs_t72ba_tv",
28 | "rhs_t72bb_tv",
29 | "rhs_t72bc_tv",
30 | "rhs_t72bd_tv",
31 | "rhs_t80",
32 | "rhs_t80a",
33 | "rhs_t80b",
34 | "rhs_t80bv",
35 | "rhs_t80u",
36 | "rhs_t80u45m",
37 | "rhs_t80ue1",
38 | "rhs_t80uk",
39 | "rhs_t80um",
40 | "rhs_t90_tv",
41 | "rhs_t90a_tv",
42 | "rhs_zsu234_aa",
43 | "RHS_Ka52_vvsc",
44 | "RHS_Mi24P_vvs",
45 | "RHS_Mi24V_vvs",
46 | "RHS_Mi24Vt_vvs",
47 | "RHS_Mi8AMTSh_vvs",
48 | "RHS_Mi8AMT_vvs",
49 | "RHS_Mi8MTV3_vvs",
50 | "RHS_Mi8mt_vvs",
51 | "rhs_ka60_c",
52 | "rhs_ka60_grey",
53 | "RHS_Su25SM_vvs",
54 | "RHS_T50_vvs_051",
55 | "rhs_pchela1t_vvsc"
56 | ];
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/RHSGREF/friendly_vehicles.sqf:
--------------------------------------------------------------------------------
1 | [
2 | "rhsgref_cdf_b_btr60",
3 | "rhsgref_cdf_b_btr70",
4 | "rhsgref_cdf_b_zsu234",
5 | "rhsgref_cdf_b_reg_uaz_ags",
6 | "rhsgref_cdf_b_reg_uaz_dshkm",
7 | "rhsgref_cdf_b_reg_uaz_spg9",
8 | "rhsgref_cdf_b_bmd1",
9 | "rhsgref_cdf_b_bmd1k",
10 | "rhsgref_cdf_b_bmd1pk",
11 | "rhsgref_cdf_b_bmd2",
12 | "rhsgref_cdf_b_bmd2k",
13 | "rhsgref_cdf_b_bmp1",
14 | "rhsgref_cdf_b_bmp1d",
15 | "rhsgref_cdf_b_bmp1k",
16 | "rhsgref_cdf_b_bmp1p",
17 | "rhsgref_cdf_b_bmp2e",
18 | "rhsgref_cdf_b_bmp2",
19 | "rhsgref_cdf_b_bmp2d",
20 | "rhsgref_cdf_b_bmp2k",
21 | "rhsgref_BRDM2_b",
22 | "rhsgref_BRDM2_ATGM_b",
23 | "rhsgref_BRDM2UM_b",
24 | "rhsgref_BRDM2_HQ_b",
25 | "rhsgref_cdf_b_t72ba_tv",
26 | "rhsgref_cdf_b_t72bb_tv",
27 | "rhsgref_cdf_b_t80b_tv",
28 | "rhsgref_cdf_b_t80bv_tv",
29 | "rhsgref_cdf_b_reg_BM21",
30 | "rhsgref_cdf_b_gaz66",
31 | "rhsgref_cdf_b_gaz66o",
32 | "rhsgref_cdf_b_gaz66_zu23",
33 | "rhsgref_cdf_b_ural",
34 | "rhsgref_cdf_b_ural_fuel",
35 | "rhsgref_cdf_b_ural_open",
36 | "rhsgref_cdf_b_ural_Zu23",
37 | "rhsgref_cdf_b_reg_uaz",
38 | "rhsgref_cdf_b_reg_uaz_open",
39 | "rhsgref_cdf_b_gaz66_ammo"
40 | ];
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/BLU_F/friendly_vehicles.sqf:
--------------------------------------------------------------------------------
1 | [
2 | "B_MRAP_01_gmg_F",
3 | "B_MRAP_01_hmg_F",
4 | "B_G_Offroad_01_armed_F",
5 | "B_MBT_01_cannon_F",
6 | "B_APC_Tracked_01_AA_F",
7 | "B_UGV_01_rcws_F",
8 | "B_APC_Tracked_01_CRV_F",
9 | "B_Truck_01_medical_F",
10 | "B_Truck_01_fuel_F",
11 | "B_Truck_01_ammo_F",
12 | "B_Truck_01_Repair_F",
13 | "B_APC_Wheeled_01_cannon_F",
14 | "B_MBT_01_TUSK_F",
15 | "B_APC_Wheeled_03_cannon_F",
16 | "B_T_LSV_01_armed_F",
17 | "B_T_LSV_01_armed_CTRG_F",
18 | "B_LSV_01_armed_F",
19 | "B_LSV_01_AT_F",
20 | "B_LSV_01_armed_black_F",
21 | "B_T_LSV_01_armed_black_F",
22 | "B_T_MRAP_01_gmg_F",
23 | "B_T_MRAP_01_hmg_F",
24 | "B_T_UAV_03_F",
25 | "B_G_Quadbike_01_F",
26 | "B_Heli_Light_01_armed_F",
27 | //"I_APC_tracked_03_cannon_F",
28 | "I_LT_01_cannon_F",
29 | "I_LT_01_AA_F",
30 | "I_LT_01_scout_F",
31 | "I_LT_01_AT_F",
32 | "C_Kart_01_Red_F",
33 | "B_AFV_Wheeled_01_cannon_F",
34 | "B_T_AFV_Wheeled_01_cannon_F",
35 | "B_AFV_Wheeled_01_up_cannon_F",
36 | "B_T_AFV_Wheeled_01_up_cannon_F",
37 | "B_APC_Tracked_01_AA_F",
38 | "B_APC_Tracked_01_rcws_F",
39 | "B_Heli_Attack_01_F",
40 | "B_UGV_01_F",
41 | "rhsgref_cdf_b_t80b_tc"
42 | ];
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/garbage_collector/fn_garbageCollector.sqf:
--------------------------------------------------------------------------------
1 | br_empty_vehicles_in_garbage_collection = []; // empty vehicles
2 |
3 | while {TRUE} do {
4 | {
5 | if (!([getpos _x, br_garbage_collection_player_distance] call fn_checkPlayersAround)) then {
6 | br_dead_objects deleteAt (br_dead_objects find _x);
7 | deleteVehicle _x ;
8 | };
9 | } forEach br_dead_objects;
10 | {
11 | if (!([getpos _x, br_garbage_collection_player_distance] call fn_checkPlayersAround) && (count (crew _x)) == 0) then {
12 | br_empty_vehicles_in_garbage_collection pushBack _x;
13 | };
14 | } forEach br_enemy_vehicle_objects;
15 | _playerindex = 0;
16 | while {count br_empty_vehicles_in_garbage_collection > 5 && _playerindex < (count br_empty_vehicles_in_garbage_collection)} do {
17 | _veh = br_empty_vehicles_in_garbage_collection select _playerindex;
18 | if (!([getpos _veh, br_garbage_collection_player_distance] call fn_checkPlayersAround)) then {
19 | if (count (crew _veh) == 0) then {
20 | deleteVehicle _veh;
21 | br_empty_vehicles_in_garbage_collection deleteAt _playerindex;
22 | } else {
23 | _playerindex = _playerindex + 1;
24 | };
25 | };
26 | sleep 0.5;
27 | };
28 | sleep br_garbage_collection_interval;
29 | };
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/functions/helicopters/fn_createHelicopterCrew.sqf:
--------------------------------------------------------------------------------
1 | private _vehicle = _this select 0;
2 | private _side = _this select 1;
3 | private _fms = _this select 2;
4 |
5 | // Check gunner seats
6 | deleteVehicle (driver _vehicle);
7 | private _tempGroup = createVehicleCrew _vehicle;
8 | //hint format["%1", count (units _tempGroup)];
9 | private _vehicleGroup = createGroup _side;
10 | // This hotfix won't work if crew count is saw as group in vehicle
11 | private _vehCfg = configFile >> "CfgVehicles" >> typeOf _vehicle;
12 | private _crewCount = {round getNumber (_x >> "dontCreateAI") < 1 &&
13 | ((_x == _vehCfg && {round getNumber (_x >> "hasDriver") > 0}) ||
14 | (_x != _vehCfg && {round getNumber (_x >> "hasGunner") > 0}))} count ([_vehicle, configNull] call BIS_fnc_getTurrets);
15 | if (_crewCount == (count (units _tempGroup))) then {
16 | units _tempGroup joinSilent _vehicleGroup;
17 | { deleteVehicle _x; } forEach (units (group (driver _vehicle))) - [driver _vehicle];
18 | };
19 | [driver _vehicle] joinSilent _vehicleGroup;
20 | {
21 | private _y = _x;
22 | {
23 | _y disableAI _x;
24 | } forEach _fms;
25 |
26 | _y setSkill br_ai_skill;
27 | [_y] call fn_objectInitEvents;
28 | } forEach units _vehicleGroup;
29 | _vehicle engineOn false;
30 | _vehicleGroup;
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/base/fn_createBaseDefence.sqf:
--------------------------------------------------------------------------------
1 | private _vehicle = nil; // The vehicle
2 | private _spawnPad = _this select 0; // The spawnpad for it
3 | private _unitChance = _this select 1;
4 |
5 | // Spawn custom units
6 | br_fnc_createDefence = {
7 | // Select a random unit from the above list to spawn
8 | _vehicle = (selectrandom _unitChance) createVehicle (getMarkerPos _spawnPad);
9 | private _group = createGroup WEST;
10 | _group = [_vehicle, _group] call fn_createVehicleCrew;
11 | _vehicle setDir (markerDir _spawnPad);
12 | {
13 | _x setBehaviour "AWARE"; _x setSkill br_ai_skill; _x disableAI "PATH";
14 | [_x] call fn_objectInitEvents;
15 | } forEach (units _group);
16 | [_vehicle] call fn_addToZeus;
17 | // Apply the zone AI to the vehicle
18 | br_base_defences pushBack _vehicle;
19 | };
20 |
21 | br_fnc_runDefence = {
22 | while {True} do {
23 | // Spawn vehicle
24 | call br_fnc_createDefence;
25 | // Apply a refill ammo script as to not allow the machines to run out of ammo
26 | [_vehicle] execVM "core\server\functions\fn_refillDefenceAmmo.sqf";
27 | // Wait untill it dies
28 | waituntil{ sleep 25; (!alive _vehicle)};
29 | br_base_defences deleteAt (br_base_defences find _vehicle);
30 | // Do some cleanup cause it died
31 | deleteVehicle _vehicle;
32 | };
33 | };
34 |
35 | call br_fnc_runDefence;
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/RHSAFRF/enemy_side_units.sqf:
--------------------------------------------------------------------------------
1 | [
2 | ["HQ", ["rhs_msv_emr_officer", "rhs_msv_emr_rifleman", "rhs_msv_emr_at", "rhs_msv_emr_aa", "rhs_msv_emr_medic", "rhs_msv_emr_rifleman"]],
3 | ["Construction Site", ["rhs_msv_emr_rifleman", "rhs_msv_emr_rifleman", "rhs_msv_emr_rifleman", "rhs_msv_emr_rifleman", "rhs_msv_emr_rifleman", "rhs_msv_emr_rifleman", "rhs_msv_emr_rifleman", "rhs_msv_emr_rifleman", "rhs_msv_emr_rifleman", "rhs_msv_emr_rifleman", "rhs_msv_emr_rifleman", "rhs_msv_emr_rifleman", "rhs_msv_emr_rifleman", "rhs_msv_emr_rifleman", "rhs_msv_emr_rifleman", "rhs_msv_emr_rifleman", "rhs_msv_emr_rifleman"]],
4 | ["AA", ["rhs_zsu234_aa", "rhs_zsu234_aa", "rhs_tigr_sts_vmf"]],
5 | ["Artillery", ["rhs_D30_msv", "rhs_D30_msv", "rhs_D30_msv", "rhs_tigr_sts_vmf"]],
6 | ["Enemy Survivors", ["rhs_msv_crew", "rhs_msv_crew", "rhs_msv_crew", "rhs_msv_crew", "rhs_msv_crew", "rhs_msv_crew"]],
7 | ["Enemy Mortars",["O_Mortar_01_F", "O_Mortar_01_F", "O_Mortar_01_F", "O_Mortar_01_F", "rhs_tigr_sts_vmf"]],
8 | ["EMP", ["rhs_typhoon_vdv"]],
9 | ["Helicopter", ["RHS_Mi24P_vdv"]],
10 | ["AA_Zone", ["rhs_zsu234_aa"]],
11 | ["Enemy_Camp", ["rhs_msv_emr_rifleman", "rhs_msv_emr_rifleman", "rhs_msv_emr_at", "rhs_msv_emr_rifleman", "rhs_msv_emr_rifleman"]],
12 | ["Enemy_Mortors", ["O_Mortar_01_F", "O_Mortar_01_F", "O_Mortar_01_F", "O_Mortar_01_F"]]
13 | ]
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/savedassets/zone_objectives.sqf:
--------------------------------------------------------------------------------
1 | [
2 | ["EMP", "EMP", 6, [], "Kill", TRUE, "EMP Destroyed!", ["O_Truck_03_device_F"], TRUE, TRUE, "Border", "ELLIPSE", getMarkerPos "ZONE_RADIUS", TRUE, [], FALSE],
3 | ["Helicopter", "Helicopter", 6, [], "Kill", TRUE, "Attack Helicopter Destroyed!", ["O_Heli_Attack_02_F"], TRUE, TRUE, "Border", "ELLIPSE", getMarkerPos "ZONE_RADIUS", TRUE, [], FALSE],
4 | ["AA_Zone", "AA", 4, [], "Kill", TRUE, "AA Destroyed!", ["O_APC_Tracked_02_AA_F"], TRUE, TRUE, "Border", "ELLIPSE", getMarkerPos "ZONE_RADIUS", TRUE, [], FALSE],
5 | ["Enemy_Camp", "Enemy Camp", 2, selectrandom (call compile preprocessFileLineNumbers "core\savedassets\small_bases.sqf"), "Kill", TRUE, "Enemy Base Taken!", ["O_officer_F", "O_Soldier_F", "O_Soldier_AT_F", "O_Soldier_AA_F", "O_Soldier_F"], TRUE, TRUE, "Border", "ELLIPSE", getMarkerPos "ZONE_RADIUS", TRUE, [["PATH", FALSE]], FALSE],
6 | ["Enemy_Mortors", "Enemy Mortors", 5, [], "Kill", TRUE, "Mortors Killed!", ["O_Mortar_01_F", "O_Mortar_01_F", "O_Mortar_01_F", "O_Mortar_01_F"] , TRUE, TRUE, "Border", "ELLIPSE", getMarkerPos "ZONE_RADIUS", TRUE, [["PATH", FALSE]], FALSE ]
7 | //["Enemy_Mine_Field", "Mine Field", 2, selectrandom (call compile preprocessFileLineNumbers "core\compositions\mine_fields.sqf"), "Kill", TRUE, "AA Destroyed!", [], TRUE, TRUE, "Border", "ELLIPSE", getMarkerPos "ZONE_RADIUS", TRUE, [], FALSE]
8 | ]
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/BLU_F/enemy_speicals.sqf:
--------------------------------------------------------------------------------
1 | [
2 | "B_MRAP_01_gmg_F",
3 | "B_MRAP_01_hmg_F",
4 | "B_G_Offroad_01_armed_F",
5 | "B_MBT_01_cannon_F",
6 | "B_APC_Tracked_01_AA_F",
7 | "B_UGV_01_rcws_F",
8 | "B_APC_Tracked_01_CRV_F",
9 | "B_Truck_01_medical_F",
10 | "B_Truck_01_fuel_F",
11 | "B_Truck_01_ammo_F",
12 | "B_Truck_01_Repair_F",
13 | "B_APC_Wheeled_01_cannon_F",
14 | "B_MBT_01_TUSK_F",
15 | "B_APC_Wheeled_03_cannon_F",
16 | "B_T_LSV_01_armed_F",
17 | "B_T_LSV_01_armed_CTRG_F",
18 | "B_LSV_01_armed_F",
19 | "B_LSV_01_AT_F",
20 | "B_LSV_01_armed_black_F",
21 | "B_T_LSV_01_armed_black_F",
22 | "B_T_MRAP_01_gmg_F",
23 | "B_T_MRAP_01_hmg_F",
24 | "B_T_UAV_03_F",
25 | "B_G_Quadbike_01_F",
26 | "B_Heli_Light_01_armed_F",
27 | "I_LT_01_cannon_F",
28 | "I_LT_01_AA_F",
29 | "I_LT_01_scout_F",
30 | "I_LT_01_AT_F",
31 | "C_Kart_01_Red_F",
32 | "B_AFV_Wheeled_01_cannon_F",
33 | "B_T_AFV_Wheeled_01_cannon_F",
34 | "B_AFV_Wheeled_01_up_cannon_F",
35 | "B_T_AFV_Wheeled_01_up_cannon_F",
36 | "B_APC_Tracked_01_AA_F",
37 | "B_APC_Tracked_01_rcws_F",
38 | "B_Heli_Attack_01_F",
39 | "B_UGV_01_F",
40 | "B_static_AA_F",
41 | "B_static_AT_F",
42 | "B_Static_Designator_01_F",
43 | "B_T_Static_AA_F",
44 | "B_T_Static_AT_F",
45 | "B_T_GMG_01_F",
46 | "B_T_HMG_01_F",
47 | "B_T_Mortar_01_F",
48 | "B_Boat_Armed_01_minigun_F",
49 | "B_Boat_Armed_01_minigun_F",
50 | "B_Boat_Armed_01_minigun_F"
51 | ];
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/RHSUSAF/enemy_speicals.sqf:
--------------------------------------------------------------------------------
1 | [
2 | "rhsusf_M1078A1P2_B_M2_fmtv_usarmy",
3 | "rhsusf_M1078A1P2_B_M2_open_fmtv_usarmy",
4 | "rhsusf_M1078A1P2_B_open_fmtv_usarmy",
5 | "rhsusf_M1078A1P2_fmtv_usarmy",
6 | "rhsusf_M1078A1P2_open_fmtv_usarmy",
7 | "rhsusf_M1083A1P2_B_D_fmtv_usarmy",
8 | "rhsusf_M1083A1P2_B_D_open_fmtv_usarmy",
9 | "rhsusf_m113_usarmy_supply",
10 | "rhsusf_m113_usarmy_MK19_90",
11 | "rhsusf_m113_usarmy_MK19",
12 | "rhsusf_m113_usarmy_medical",
13 | "rhsusf_m113_usarmy_M240",
14 | "rhsusf_m113_usarmy_M2_90",
15 | "rhsusf_m109_usarmy",
16 | "rhsusf_m109d_usarmy",
17 | "rhsusf_m113_usarmy_MK19_90",
18 | "rhsusf_m966_w",
19 | "rhsusf_m1025_w_mk19",
20 | "rhsusf_m1025_w_m2",
21 | "rhsusf_m1045_w",
22 | "rhsusf_m1043_w_mk19",
23 | "RHS_AH64D_wd",
24 | "RHS_M2A2_wd",
25 | "RHS_M2A3_wd",
26 | "RHS_M2A3_BUSKI_wd",
27 | "RHS_M2A3_BUSKIII_wd",
28 | "RHS_M6_wd",
29 | "rhsusf_M1117_W",
30 | "rhsusf_M1237_M2_usarmy_wd",
31 | "rhsusf_M1237_MK19_usarmy_wd",
32 | "rhsusf_m1a1aimwd_usarmy",
33 | "rhsusf_m1a1aim_tuski_wd",
34 | "rhsusf_m1a2sep1wd_usarmy",
35 | "rhsusf_m1a2sep1tuskiwd_usarmy",
36 | "rhsusf_m1a2sep1tuskiiwd_usarmy",
37 | "rhsusf_M977A4_AMMO_usarmy_wd",
38 | "rhsusf_M977A4_REPAIR_BKIT_usarmy_wd",
39 | "rhsusf_M977A4_AMMO_BKIT_M2_usarmy_wd",
40 | "rhsusf_M1085A1P2_B_WD_Medical_fmtv_usarmy",
41 | "rhsusf_mrzr4_d",
42 | "rhsusf_mkvsoc",
43 | "rhsusf_mkvsoc"
44 | ];
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/garbage_collector/fn_checkFriendyAIPositions.sqf:
--------------------------------------------------------------------------------
1 | // Checks units too far from the zone and delete them
2 | br_fnc_deleteDumbAI = {
3 | private _group = _this select 0;
4 | private _sidePosition = _this select 1;
5 | private _postionMatters = _this select 2;
6 |
7 | {
8 | _y = _x;
9 | {
10 | if !([getpos _x, br_garbage_collection_player_distance] call fn_checkPlayersAround) then {
11 | if ((isNull objectParent _x) && {((getpos _x) distance (getMarkerPos "ZONE_ICON") > br_max_ai_distance_before_delete) && ((getpos _x) distance _sidePosition > br_max_ai_distance_before_delete)} && {!br_zone_taken}) then { deleteVehicle _x };
12 | if (_postionMatters) then { [_x] call fn_checkPosition; };
13 | };
14 | } forEach (units _y);
15 | } foreach _group;
16 | };
17 |
18 | br_fnc_checkObjectives = {
19 | private _group = _this select 0;
20 | private _postionMatters = _this select 1;
21 | {
22 | [_group, _x select 0, _postionMatters] call br_fnc_deleteDumbAI;
23 | } foreach br_current_sides;
24 | };
25 |
26 | While {TRUE} do {
27 | if (!br_zone_taken) then {
28 | [br_friendly_objective_groups, TRUE] call br_fnc_checkObjectives;
29 | [br_friendly_ai_groups, TRUE] call br_fnc_checkObjectives;
30 | [br_ai_groups - br_special_ai_groups, TRUE] call br_fnc_checkObjectives;
31 | [br_special_ai_groups, FALSE] call br_fnc_checkObjectives;
32 | [br_groups_in_buildings, FALSE] call br_fnc_checkObjectives;
33 | };
34 | sleep br_garbage_collection_positions_interval;
35 | };
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/functions/helicopters/fn_waitUntillLanded.sqf:
--------------------------------------------------------------------------------
1 | private _vehicle = _this select 0; // The helictoper
2 | private _landingPosition = _this select 1; // Position to land at
3 | private _alreadyFlying = _this select 2; // If the helicopter is already flying
4 | private _vehicleGroup = _this select 3; // The group controlling the vehicle
5 |
6 | if (!_alreadyFlying) then {
7 | // If group already exists delete it
8 | [_vehicleGroup] call fn_deleteGroup;
9 | // Create units
10 | _vehicleGroup = [_helicopterVehicle, WEST, ["MOVE", "TARGET", "AUTOTARGET", "FSM", "AUTOCOMBAT", "AIMINGERROR", "SUPPRESSION", "MINEDETECTION", "WEAPONAIM", "CHECKVISIBLE"]] call fn_createHelicopterCrew;
11 | // Since we are grounded we want to start the engine
12 | _vehicle engineOn true;
13 | };
14 |
15 | _vehicle setDamage 0;
16 | _vehicle setFuel 1;
17 | _vehicleGroup setBehaviour "CARELESS";
18 | {_x enableAI "MOVE"; } forEach units _vehicleGroup;
19 |
20 | // Do WP stuff
21 | private _wp = _vehicleGroup addWaypoint [_landingPosition, 0];
22 | _wp setWaypointType "GETOUT";
23 |
24 | // Wait untill landed
25 | waitUntil { sleep 3; (getPos _vehicle select 2 > 10) || {!([_vehicle, _vehicleGroup, TRUE] call fn_checkVehicleAndCrewAlive)} || {!(isEngineOn _vehicle)} || {br_zone_taken}};
26 | // Has landed
27 | waitUntil { sleep 3; (getPos _vehicle select 2 < 1) || {!([_vehicle, _vehicleGroup, TRUE] call fn_checkVehicleAndCrewAlive)} || {br_zone_taken}};
28 | [_vehicleGroup] call fn_deleteGroup;
29 | _vehicle engineOn false;
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/SBGF/fn_groupGarrison.sqf:
--------------------------------------------------------------------------------
1 | /* //////////////////////////////////////////////
2 | Author: J.Shock
3 |
4 | Function: fn_groupGarrison.sqf
5 |
6 | Description: Fills buildings within a defined radius with pre-spawned (editor placed) units.
7 |
8 | Parameters:
9 | 1- Unit/Group Leader: (object) (note: for use with unit's name or init field using "this" as the parameter)
10 | 2- Center position: (string/object/position array) (default: objNull)
11 | 3- Radius for building search: (scalar) (default: 200)
12 |
13 | Example: [this,"mrkName",200] call SBGF_fnc_groupGarrison;
14 |
15 | Return: True when completed.
16 |
17 | *///////////////////////////////////////////////
18 | params
19 | [
20 | "_unit",
21 | ["_center",objNull,["",objNull,[]],[3]],
22 | ["_radius",200,[0]]
23 | ];
24 | private ["_unitsGroup","_completed","_buildings"];
25 |
26 | _unitsGroup = units group (_unit);
27 | _completed = false;
28 | _buildings = [_center,_radius] call SBGF_fnc_buildingPositions;
29 | _positionsUsed = [];
30 |
31 | {
32 | _rndPos = ((_buildings select 1) select floor(random(count (_buildings select 1))));
33 |
34 | if (!(isNil "_rndPos")) then {
35 | if (!(_rndPos in _positionsUsed)) then {
36 | _x setPosATL (_rndPos);
37 |
38 | doStop _x;
39 |
40 | _x setDir (random 359);
41 |
42 | _x setUnitPos "UP";
43 |
44 | _buildings set [1,((_buildings select 1) - [_rndPos])];
45 | _positionsUsed append [_rndPos];
46 | };
47 | };
48 |
49 | } forEach _unitsGroup;
50 | _completed = true;
51 |
52 | _completed;
53 |
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/RHSGREF/custom_unit_compositions.sqf:
--------------------------------------------------------------------------------
1 | // Custom groups can go here
2 | [
3 | //Example
4 | /*[
5 | "unitClassName",
6 | "unitClassName",
7 | "unitClassName",
8 | "unitClassName"
9 | ]
10 | [
11 | "unitClassName",
12 | "unitClassName"
13 | ]*/
14 | [
15 | "rhsgref_cdf_b_para_squadleader",
16 | "rhsgref_cdf_b_para_rifleman",
17 | "rhsgref_cdf_b_para_machinegunner",
18 | "rhsgref_cdf_b_para_rifleman_lite",
19 | "rhsgref_cdf_b_para_marksman"
20 | ],
21 | [
22 | "rhsgref_cdf_b_para_squadleader",
23 | "rhsgref_cdf_b_para_rifleman",
24 | "rhsgref_cdf_b_para_machinegunner",
25 | "rhsgref_cdf_b_para_rifleman_lite",
26 | "rhsgref_cdf_b_para_specialist_aa",
27 | "rhsgref_cdf_b_para_rifleman_lite"
28 | ],
29 | [
30 | "rhsgref_cdf_b_para_squadleader",
31 | "rhsgref_cdf_b_para_marksman",
32 | "rhsgref_cdf_b_para_machinegunner",
33 | "rhsgref_cdf_b_para_machinegunner",
34 | "rhsgref_cdf_b_para_rifleman_lite"
35 | ],
36 | [
37 | "rhsgref_cdf_b_para_squadleader",
38 | "rhsgref_cdf_b_para_rifleman",
39 | "rhsgref_cdf_b_para_machinegunner",
40 | "rhsgref_cdf_b_para_rifleman_lite",
41 | "rhsgref_cdf_b_para_specialist_aa"
42 | ],
43 | [
44 | "rhsgref_cdf_b_para_officer",
45 | "rhsgref_cdf_b_para_rifleman",
46 | "rhsgref_cdf_b_para_machinegunner"
47 | ],
48 | [
49 | "rhsgref_cdf_b_para_squadleader",
50 | "rhsgref_cdf_b_para_marksman",
51 | "rhsgref_cdf_b_para_machinegunner",
52 | "rhsgref_cdf_b_para_rifleman_lite",
53 | "rhsgref_cdf_b_para_rifleman_lite"
54 | ]
55 | ];
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/RHSUSAF/enemy_side_units.sqf:
--------------------------------------------------------------------------------
1 | [
2 | ["HQ", ["rhsusf_army_ucp_officer", "rhsusf_army_ucp_rifleman", "rhsusf_army_ucp_arb_medic", "rhsusf_army_ucp_rifleman", "rhsusf_army_ucp_rifleman"]],
3 | ["Construction Site", ["rhsusf_army_ucp_rifleman", "rhsusf_army_ucp_rifleman", "rhsusf_army_ucp_rifleman", "rhsusf_army_ucp_rifleman", "rhsusf_army_ucp_rifleman", "rhsusf_army_ucp_rifleman", "rhsusf_army_ucp_rifleman", "rhsusf_army_ucp_rifleman", "rhsusf_army_ucp_rifleman", "rhsusf_army_ucp_rifleman", "rhsusf_army_ucp_rifleman", "rhsusf_army_ucp_rifleman", "rhsusf_army_ucp_rifleman", "rhsusf_army_ucp_rifleman", "rhsusf_army_ucp_rifleman", "rhsusf_army_ucp_rifleman", "rhsusf_army_ucp_rifleman"]],
4 | ["AA", ["B_T_APC_Tracked_01_AA_F", "B_T_APC_Tracked_01_AA_F", "rhsusf_m1043_w_m2"]],
5 | ["Artillery", ["rhsusf_m109_usarmy", "B_T_MRAP_01_hmg_F"]],
6 | ["Enemy Survivors", ["rhsusf_army_ucp_ah64_pilot", "rhsusf_army_ucp_ah64_pilot", "rhsusf_army_ucp_ah64_pilot", "rhsusf_army_ucp_ah64_pilot", "rhsusf_army_ucp_ah64_pilot", "rhsusf_army_ucp_ah64_pilot"]],
7 | ["Enemy Mortars",["B_Mortar_01_F", "B_Mortar_01_F", "B_Mortar_01_F", "B_Mortar_01_F", "rhsusf_m1043_w_m2"]],
8 | ["EMP", ["rhsusf_M977A4_REPAIR_BKIT_M2_usarmy_wd"]],
9 | ["Helicopter", ["RHS_AH1Z_wd"]],
10 | ["AA_Zone", ["B_T_APC_Tracked_01_AA_F"]],
11 | ["Enemy_Camp", ["rhsusf_army_ucp_rifleman", "rhsusf_army_ucp_rifleman", "rhsusf_army_ucp_aa", "rhsusf_army_ucp_at", "rhsusf_army_ucp_rifleman"]],
12 | ["Enemy_Mortors", ["B_Mortar_01_F", "B_Mortar_01_F", "B_Mortar_01_F", "B_Mortar_01_F"]]
13 | ]
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/OPF_F/enemy_speicals.sqf:
--------------------------------------------------------------------------------
1 | [
2 | "O_Heli_Light_02_dynamicLoadout_F",
3 | "I_LT_01_AT_F",
4 | "O_Plane_CAS_02_dynamicLoadout_F",
5 | "O_Truck_02_box_F",
6 | "O_APC_Tracked_02_AA_F",
7 | "O_MBT_02_cannon_F",
8 | "O_Heli_Attack_02_F",
9 | "O_G_Offroad_01_armed_F",
10 | "O_MRAP_02_gmg_F",
11 | "O_Truck_02_medical_F",
12 | "O_Truck_02_fuel_F",
13 | "O_static_AT_F",
14 | "O_static_AA_F",
15 | "O_T_LSV_02_armed_F",
16 | "I_GMG_01_high_F",
17 | "I_HMG_01_A_F",
18 | "I_HMG_01_high_F",
19 | "I_HMG_01_F",
20 | "I_G_Offroad_01_repair_F",
21 | "I_MRAP_03_F",
22 | "I_Heli_light_03_F",
23 | "O_Quadbike_01_F",
24 | "O_G_Van_01_transport_F",
25 | "O_APC_Wheeled_02_rcws_F",
26 | "O_UAV_01_F",
27 | "O_UGV_01_rcws_F",
28 | "O_Heli_Transport_04_box_F",
29 | "O_Mortar_01_F",
30 | "O_G_Mortar_01_F",
31 | "O_UAV_02_F",
32 | "O_UAV_02_CAS_F",
33 | "O_UGV_01_F",
34 | "O_Truck_03_transport_F",
35 | "O_Truck_03_ammo_F",
36 | "O_Truck_03_device_F",
37 | "O_Static_Designator_02_F",
38 | "O_T_UAV_04_CAS_F",
39 | "O_Plane_Fighter_02_F",
40 | "O_Plane_CAS_02_Cluster_F",
41 | "O_Plane_Fighter_02_Cluster_F",
42 | "O_MBT_04_cannon_F",
43 | "O_T_MBT_04_cannon_F",
44 | "O_MBT_04_command_F",
45 | "O_T_MBT_04_command_F",
46 | "O_Radar_System_02_F",
47 | "O_SAM_System_04_F",
48 | "O_Plane_Fighter_02_Stealth_F",
49 | "I_MRAP_03_gmg_F",
50 | "I_MRAP_03_hmg_F",
51 | "C_Kart_01_yellow_F",
52 | "O_T_VTOL_02_infantry_F",
53 | "O_Boat_Armed_01_hmg_F",
54 | "O_Boat_Armed_01_hmg_F",
55 | "I_Boat_Armed_01_minigun_F",
56 | "I_Boat_Armed_01_minigun_F"
57 | ];
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/RHSGREF/enemy_side_units.sqf:
--------------------------------------------------------------------------------
1 | [
2 | ["HQ", ["rhsusf_army_ucp_officer", "rhsgref_cdf_b_reg_rifleman", "rhsgref_cdf_b_reg_medic", "rhsgref_cdf_b_reg_rifleman", "rhsgref_cdf_b_reg_rifleman"]],
3 | ["Construction Site", ["rhsgref_cdf_b_reg_rifleman", "rhsgref_cdf_b_reg_rifleman", "rhsgref_cdf_b_reg_rifleman", "rhsgref_cdf_b_reg_rifleman", "rhsgref_cdf_b_reg_rifleman", "rhsgref_cdf_b_reg_rifleman", "rhsgref_cdf_b_reg_rifleman", "rhsgref_cdf_b_reg_rifleman", "rhsgref_cdf_b_reg_rifleman", "rhsgref_cdf_b_reg_rifleman", "rhsgref_cdf_b_reg_rifleman", "rhsgref_cdf_b_reg_rifleman", "rhsgref_cdf_b_reg_rifleman", "rhsgref_cdf_b_reg_rifleman", "rhsgref_cdf_b_reg_rifleman", "rhsgref_cdf_b_reg_rifleman", "rhsgref_cdf_b_reg_rifleman"]],
4 | ["AA", ["rhsgref_cdf_b_zsu234", "rhsgref_cdf_b_zsu234", "rhsgref_cdf_b_bmd1pk"]],
5 | ["Artillery", ["rhsgref_cdf_b_reg_BM21", "rhsgref_cdf_b_reg_uaz_dshkm"]],
6 | ["Enemy Survivors", ["rhsgref_cdf_b_reg_crew", "rhsgref_cdf_b_reg_crew", "rhsgref_cdf_b_reg_crew", "rhsgref_cdf_b_reg_crew", "rhsgref_cdf_b_reg_crew", "rhsgref_cdf_b_reg_crew"]],
7 | ["Enemy Mortars",["rhsgref_cdf_b_reg_M252", "rhsgref_cdf_b_reg_M252", "rhsgref_cdf_b_reg_M252", "rhsgref_cdf_b_reg_M252", "rhsgref_cdf_b_bmd1pk"]],
8 | ["EMP", ["rhsgref_cdf_b_gaz66_ammo"]],
9 | ["Helicopter", ["rhsgref_b_mi24g_CAS"]],
10 | ["AA_Zone", ["rhsgref_cdf_b_zsu234"]],
11 | ["Enemy_Camp", ["rhsgref_cdf_b_reg_rifleman", "rhsgref_cdf_b_reg_rifleman", "rhsgref_cdf_b_reg_specialist_aa", "rhsgref_cdf_b_reg_grenadier_rpg", "rhsgref_cdf_b_reg_rifleman"]],
12 | ["Enemy_Mortors", ["rhsgref_cdf_b_reg_M252", "rhsgref_cdf_b_reg_M252", "rhsgref_cdf_b_reg_M252", "rhsgref_cdf_b_reg_M252"]]
13 | ]
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/RHSSAF/unit_compositions.sqf:
--------------------------------------------------------------------------------
1 | [
2 | /*[
3 | "rhssaf_group_un_infantry_company_hq",
4 | "rhssaf_group_un_infantry_infantry_squad",
5 | "rhssaf_group_un_infantry_infantry_squad_sniper",
6 | "rhssaf_group_un_infantry_infantry_team",
7 | "rhssaf_group_un_infantry_infantry_team_AA",
8 | "rhssaf_group_un_infantry_infantry_team_heavy_at",
9 | "rhssaf_group_un_infantry_infantry_team_mg",
10 | "rhssaf_group_un_infantry_infantry_team_support",
11 | "rhssaf_group_un_infantry_infantry_weaponsquad",
12 | "rhssaf_group_un_infantry_platoon_hq"
13 | ],*/
14 | [
15 | "rhssaf_group_army_m10_digital_company_hq",
16 | "rhssaf_group_army_m10_digital_infantry_squad",
17 | "rhssaf_group_army_m10_digital_infantry_squad_sniper",
18 | "rhssaf_group_army_m10_digital_infantry_team",
19 | "rhssaf_group_army_m10_digital_infantry_team_AA",
20 | "rhssaf_group_army_m10_digital_infantry_team_heavy_at",
21 | "rhssaf_group_army_m10_digital_infantry_team_mg",
22 | "rhssaf_group_army_m10_digital_infantry_team_support",
23 | "rhssaf_group_army_m10_digital_infantry_weaponsquad",
24 | "rhssaf_group_army_m10_digital_platoon_hq"
25 | ],
26 | [
27 | "rhssaf_group_army_m93_oakleaf_company_hq",
28 | "rhssaf_group_army_m93_oakleaf_infantry_squad",
29 | "rhssaf_group_army_m93_oakleaf_infantry_squad_sniper",
30 | "rhssaf_group_army_m93_oakleaf_infantry_team",
31 | "rhssaf_group_army_m93_oakleaf_infantry_team_AA",
32 | "rhssaf_group_army_m93_oakleaf_infantry_team_heavy_at",
33 | "rhssaf_group_army_m93_oakleaf_infantry_team_mg",
34 | "rhssaf_group_army_m93_oakleaf_infantry_team_support",
35 | "rhssaf_group_army_m93_oakleaf_infantry_weaponsquad",
36 | "rhssaf_group_army_m93_oakleaf_platoon_hq"
37 | ]
38 | ]
39 |
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/SBGF/fn_buildingPositions.sqf:
--------------------------------------------------------------------------------
1 | /* //////////////////////////////////////////////
2 | Author: J.Shock
3 |
4 | Function: fn_buildingPositions.sqf
5 |
6 | Description: Gets all building positions within a defined radius of
7 | given marker/object/position center.
8 |
9 | Parameters:
10 | 1- Center position: (string/object/position array) (default: objNull)
11 | 2- Radius from center: (scalar) (default: 200)
12 |
13 | Example: ["mrkName",200] call SBGF_fnc_buildingPositions;
14 |
15 | Return: A multi-dimension array of the number of buildings and building positions:
16 | [#,[[x,y,z],[x,y,z],[x,y,z]]]
17 |
18 | **DISCLAIMER**
19 | Do not remove this header from this function. Any reproduced and/or otherwise used
20 | portions of this code must include credits to the author (J.Shock).
21 |
22 | *///////////////////////////////////////////////
23 | params
24 | [
25 | ["_ctr",objNull,["",objNull,[]],[3]],
26 | ["_radius",200,[0]]
27 | ];
28 | private ["_houses","_insideHousePos","_singlePosArray"];
29 |
30 | _center = _ctr call SBGF_fnc_posConversion;
31 |
32 | _houses = nearestObjects [_center, ["Building"], _radius];
33 |
34 | _insideHousePos = [];
35 |
36 | {
37 | if ([_x] call BIS_fnc_isBuildingEnterable) then
38 | {
39 | _buildPos = [_x] call BIS_fnc_buildingPositions;
40 | _insideHousePos pushBack _buildPos;
41 | };
42 | } forEach _houses;
43 |
44 | _singlePosArray = [];
45 |
46 | for "_i" from 0 to ((count _insideHousePos) - 1) step 1 do
47 | {
48 | _singleHouse = _insideHousePos select _i;
49 |
50 | for "_a" from 0 to ((count _singleHouse) - 1) step 1 do
51 | {
52 | _singlePos = _singleHouse select _a;
53 | _singlePosArray pushBack _singlePos;
54 | };
55 | };
56 |
57 | [count _insideHousePos,_singlePosArray];
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/side_objective/fn_runObjectives.sqf:
--------------------------------------------------------------------------------
1 | private _missions = call compile preprocessFileLineNumbers "core\savedassets\side_missions.sqf";
2 |
3 | br_create_side_objective = {
4 | private _distance = 0;
5 | private _objectivePosition = [0,0];
6 |
7 | if (br_random_side_locations) then {
8 | // Side objective cannot be within n of meters
9 | while {_distance < br_min_side_distance_to_zone} do {
10 | _objectivePosition = [[], 0, -1, 0, 0, 25, 0] call BIS_fnc_findSafePos;
11 | _distance = br_current_zone distance2D _objectivePosition;
12 | };
13 | } else {
14 | if (count br_sides != 0) then {
15 | _objectivePosition = selectRandom br_sides;
16 | };
17 | };
18 |
19 | _sideObjectName = (format ["Side_Objective_%1", count br_current_sides]);
20 |
21 | _selected = selectrandom _missions;
22 | private _groupSpawn = [_selected select 0, _selected select 3] call br_get_groups;
23 | [_sideObjectName, _selected select 0, _selected select 4, _selected select 2, "Kill", TRUE, _selected select 1, _groupSpawn, TRUE, FALSE, "Border", "ELLIPSE", _objectivePosition, FALSE, [], _selected select 5] execVM "core\server\zone_objective\fn_createObjective.sqf";
24 | br_current_sides pushBack [_objectivePosition, _sideObjectName];
25 | };
26 |
27 | br_fn_run_sides = {
28 | while {TRUE} do {
29 | // Check if any side mission have been completed and delete them
30 | {
31 | if (missionNamespace getVariable (format ["br_%1", _x select 1])) then {
32 | br_current_sides deleteAt (br_current_sides find _x)
33 | }
34 | } foreach (br_current_sides);
35 | sleep 1;
36 | while {(count br_current_sides) < br_max_current_sides} do {
37 | call br_create_side_objective;
38 | sleep 1;
39 | };
40 | sleep 30;
41 | };
42 | };
43 |
44 | [] call br_fn_run_sides;
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/zone/fn_commandEnemyGroups.sqf:
--------------------------------------------------------------------------------
1 | While {TRUE} do {
2 | // Delete groups where all units are dead
3 | { // Add waypoint to group (Will do for all groups)
4 | private _y = _x;
5 | // Check number of waypoints, if less then 3 add more.
6 | if (count (waypoints _y) < 3) then {
7 | private _pos = [getMarkerPos "ZONE_RADIUS", 0, br_zone_radius * sqrt br_max_radius_distance, 2, 0, 60, 0] call BIS_fnc_findSafePos;
8 | while {count _pos > 2} do {
9 | _pos = [getMarkerPos "ZONE_RADIUS", 0, br_zone_radius * sqrt br_max_radius_distance, 2, 0, 60, 0] call BIS_fnc_findSafePos;
10 | sleep 0.1;
11 | };
12 | _wp = _y addWaypoint [_pos, 0];
13 | _wp setWaypointFormation (selectrandom ["NO CHANGE", "COLUMN", "STAG COLUMN", "WEDGE", "ECH LEFT", "ECH RIGHT", "VEE", "LINE", "FILE", "DIAMOND"]);
14 | _wp setWaypointSpeed (selectrandom ["UNCHANGED", "LIMITED", "NORMAL", "FULL"]);
15 | _wp setWaypointBehaviour (selectrandom ["CARELESS", "AWARE", "STEALTH"]);
16 | _wp setWaypointStatements ["true","deleteWaypoint [group this, currentWaypoint (group this)]"];
17 | };
18 | // Check group is empty, remove it from groups and delete it
19 | if (({alive _x} count units _y) < 1) then {
20 | br_ai_groups deleteAt (br_ai_groups find _y); if (_y in br_special_ai_groups) then { br_special_ai_groups deleteAt (br_special_ai_groups find _y); { deleteVehicle _x } forEach units _y; }; deleteGroup _y; _y = grpNull; _y = nil;
21 | };
22 | } foreach br_ai_groups;
23 | {
24 | private _y = _x;
25 | if (({alive _x} count units _y) < 1) then { br_groups_in_buildings deleteAt (br_groups_in_buildings find _y); /*{ deleteVehicle _x } forEach units _y;*/ deleteGroup _y; _y = grpNull; _y = nil;};
26 | } forEach br_groups_in_buildings;
27 | sleep br_command_delay;
28 | }
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/RHSSAF/enemy_side_units.sqf:
--------------------------------------------------------------------------------
1 | [
2 | ["HQ", ["rhssaf_army_m10_para_officer", "rhssaf_army_m10_para_rifleman_g36", "rhssaf_army_m10_para_medic", "rhssaf_army_m10_para_rifleman_g36", "rhssaf_army_m10_para_rifleman_g36"]],
3 | ["Construction Site", ["rhssaf_army_m10_para_rifleman_g36", "rhssaf_army_m10_para_rifleman_g36", "rhssaf_army_m10_para_rifleman_g36", "rhssaf_army_m10_para_rifleman_g36", "rhssaf_army_m10_para_rifleman_g36", "rhssaf_army_m10_para_rifleman_g36", "rhssaf_army_m10_para_rifleman_g36", "rhssaf_army_m10_para_rifleman_g36", "rhssaf_army_m10_para_rifleman_g36", "rhssaf_army_m10_para_rifleman_g36", "rhssaf_army_m10_para_rifleman_g36", "rhssaf_army_m10_para_rifleman_g36", "rhssaf_army_m10_para_rifleman_g36", "rhssaf_army_m10_para_rifleman_g36", "rhssaf_army_m10_para_rifleman_g36", "rhssaf_army_m10_para_rifleman_g36", "rhssaf_army_m10_para_rifleman_g36"]],
4 | ["AA", ["B_T_APC_Tracked_01_AA_F", "B_T_APC_Tracked_01_AA_F", "rhssaf_m1025_olive_m2"]],
5 | ["Artillery", ["rhssaf_army_d30", "rhssaf_m1025_olive_m2"]],
6 | ["Enemy Survivors", ["rhssaf_army_m10_para_crew", "rhssaf_army_m10_para_crew", "rhssaf_army_m10_para_crew", "rhssaf_army_m10_para_crew", "rhssaf_army_m10_para_crew", "rhssaf_army_m10_para_crew"]],
7 | ["Enemy Mortars",["rhssaf_army_m252", "rhssaf_army_m252", "rhssaf_army_m252", "rhssaf_army_m252", "rhssaf_m1025_olive_m2"]],
8 | ["EMP", ["rhssaf_army_ural"]],
9 | ["Helicopter", ["rhssaf_airforce_ht48"]],
10 | ["AA_Zone", ["B_T_APC_Tracked_01_AA_F"]],
11 | ["Enemy_Camp", ["rhssaf_army_m10_para_rifleman_g36", "rhssaf_army_m10_para_rifleman_g36", "rhssaf_army_m10_para_spec_at", "rhssaf_army_m10_para_spec_aa", "rhssaf_army_m10_para_rifleman_g36"]],
12 | ["Enemy_Mortors", ["rhssaf_army_m252", "rhssaf_army_m252", "rhssaf_army_m252", "rhssaf_army_m252"]]
13 | ]
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/RHSUSAF/unit_compositions.sqf:
--------------------------------------------------------------------------------
1 | [
2 | /*[
3 | "rhs_group_nato_usarmy_d_company_hq",
4 | "rhs_group_nato_usarmy_d_infantry_squad",
5 | "rhs_group_nato_usarmy_d_infantry_squad_sniper",
6 | "rhs_group_nato_usarmy_d_infantry_team",
7 | "rhs_group_nato_usarmy_d_infantry_team_AA",
8 | "rhs_group_nato_usarmy_d_infantry_team_AT",
9 | "rhs_group_nato_usarmy_d_infantry_team_MG",
10 | "rhs_group_nato_usarmy_d_infantry_team_support",
11 | "rhs_group_nato_usarmy_d_infantry_weaponsquad",
12 | "rhs_group_nato_usarmy_d_platoon_hq"
13 | ],*/
14 | [
15 | "rhs_group_nato_usarmy_wd_company_hq",
16 | "rhs_group_nato_usarmy_wd_infantry_squad",
17 | "rhs_group_nato_usarmy_wd_infantry_squad_sniper",
18 | "rhs_group_nato_usarmy_wd_infantry_team",
19 | "rhs_group_nato_usarmy_wd_infantry_team_AA",
20 | "rhs_group_nato_usarmy_wd_infantry_team_heavy_AT",
21 | "rhs_group_nato_usarmy_wd_infantry_team_MG",
22 | "rhs_group_nato_usarmy_wd_infantry_team_support",
23 | "rhs_group_nato_usarmy_wd_infantry_weaponsquad",
24 | "rhs_group_nato_usarmy_wd_platoon_hq"
25 | ],
26 | /*[
27 | "rhs_group_nato_usmc_recon_d_infantry_team",
28 | "rhs_group_nato_usmc_recon_d_infantry_team_fast",
29 | "rhs_group_nato_usmc_recon_d_infantry_team_lite",
30 | "rhs_group_nato_usmc_recon_d_infantry_team_MG",
31 | "rhs_group_nato_usmc_recon_d_infantry_team_support"
32 | ],*/
33 | [
34 | "rhs_group_nato_usmc_wd_infantry_squad",
35 | "rhs_group_nato_usmc_wd_infantry_squad_sniper",
36 | "rhs_group_nato_usmc_wd_infantry_team",
37 | "rhs_group_nato_usmc_wd_infantry_team_AA",
38 | "rhs_group_nato_usmc_wd_infantry_team_heavy_AT",
39 | "rhs_group_nato_usmc_wd_infantry_team_MG",
40 | "rhs_group_nato_usmc_wd_infantry_team_support",
41 | "rhs_group_nato_usmc_wd_infantry_weaponsquad"
42 | ]
43 | ]
44 |
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/client/fn_createVehicleSpawner.sqf:
--------------------------------------------------------------------------------
1 | // https://forums.bohemia.net/forums/topic/180297-virtual-garage-possible-to-use-as-spawner-like-vvs/
2 | removeAllActions (_this select 1);
3 | private _aiControlled = _this select 3;
4 | disableSerialization;
5 | uiNamespace setVariable [ "current_garage", ( _this select 0 ) ];
6 | { deleteVehicle _x; } forEach nearestObjects [ getMarkerPos ( _this select 0 ), [ "AllVehicles" ], 10 ];
7 | _veh = createVehicle [ "Land_HelipadEmpty_F", getMarkerPos ( _this select 0 ), [], 0, "CAN_COLLIDE" ];
8 | missionNamespace setVariable [ "BIS_fnc_arsenal_fullGarage", true ];
9 | with missionNamespace do { BIS_fnc_garage_center = _veh; };
10 | with uiNamespace do {
11 | _displayMission = [] call ( uiNamespace getVariable "bis_fnc_displayMission" );
12 | if !( isNull findDisplay 312 ) then { _displayMission = findDisplay 312; };
13 | _displayMission createDisplay "RscDisplayGarage";
14 | uiNamespace setVariable [ "running_garage", true ];
15 | waitUntil { sleep 0.25; isNull ( uiNamespace getVariable [ "BIS_fnc_arsenal_cam", objNull ] ) };
16 | _marker = uiNamespace getVariable "current_garage";
17 | deleteVehicle _veh;
18 | _veh_list = ( getMarkerPos _marker ) nearEntities 5;
19 | {
20 | _vehType = typeOf _x;
21 | _textures = getObjectTextures _x;
22 |
23 | _crew = crew _x;
24 | {
25 | deleteVehicle _x;
26 | } forEach _crew;
27 | deleteVehicle _x;
28 | sleep 0.5;
29 | [_vehType, _marker, _textures, _aiControlled] remoteExec ["MP_request_vehicle", 2];
30 | } forEach _veh_list;
31 | };
32 |
33 | sleep 3;
34 | _this select 1 addaction ["Virtual Garage", { [("garage_spawner"), _this select 0, _this select 2, FALSE] call compile preprocessFileLineNumbers "core\client\fn_createVehicleSpawner.sqf"; }];
35 | _this select 1 addaction ["Virtual Garage AI", { [("garage_spawner"), _this select 0, _this select 2, TRUE] call compile preprocessFileLineNumbers "core\client\fn_createVehicleSpawner.sqf"; }];
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/RHSGREF/enemy_speicals.sqf:
--------------------------------------------------------------------------------
1 | [
2 | "rhsgref_cdf_b_btr60",
3 | "rhsgref_cdf_b_btr70",
4 | "rhsgref_cdf_b_zsu234",
5 | "rhsgref_cdf_b_reg_uaz",
6 | "rhsgref_cdf_b_reg_uaz_ags",
7 | "rhsgref_cdf_b_reg_uaz_dshkm",
8 | "rhsgref_cdf_b_reg_uaz_open",
9 | "rhsgref_cdf_b_reg_uaz_spg9",
10 | "rhsgref_cdf_b_bmd1",
11 | "rhsgref_cdf_b_bmd1k",
12 | "rhsgref_cdf_b_bmd1pk",
13 | "rhsgref_cdf_b_bmd2",
14 | "rhsgref_cdf_b_bmd2k",
15 | "rhsgref_cdf_b_bmp1",
16 | "rhsgref_cdf_b_bmp1d",
17 | "rhsgref_cdf_b_bmp1k",
18 | "rhsgref_cdf_b_bmp1p",
19 | "rhsgref_cdf_b_bmp2e",
20 | "rhsgref_cdf_b_bmp2",
21 | "rhsgref_cdf_b_bmp2d",
22 | "rhsgref_cdf_b_bmp2k",
23 | "rhsgref_BRDM2_b",
24 | "rhsgref_BRDM2_ATGM_b",
25 | "rhsgref_BRDM2UM_b",
26 | "rhsgref_BRDM2_HQ_b",
27 | "rhsgref_cdf_b_t72ba_tv",
28 | "rhsgref_cdf_b_t72bb_tv",
29 | "rhsgref_cdf_b_t80b_tv",
30 | "rhsgref_cdf_b_t80bv_tv",
31 | "rhsgref_cdf_b_reg_BM21",
32 | "rhsgref_cdf_b_gaz66",
33 | "rhsgref_cdf_b_gaz66_ammo",
34 | "rhsgref_cdf_b_gaz66_flat",
35 | "rhsgref_cdf_b_gaz66o",
36 | "rhsgref_cdf_b_gaz66o_flat",
37 | "rhsgref_cdf_b_gaz66_r142",
38 | "rhsgref_cdf_b_gaz66_zu23",
39 | "rhsgref_cdf_b_gaz66_ap2",
40 | "rhsgref_cdf_b_gaz66_repair",
41 | "rhsgref_cdf_b_ural",
42 | "rhsgref_cdf_b_ural_fuel",
43 | "rhsgref_cdf_b_ural_open",
44 | "rhsgref_cdf_b_ural_repair",
45 | "rhsgref_cdf_b_ural_Zu23",
46 | "rhsgref_cdf_b_Igla_AA_pod",
47 | "rhsgref_cdf_b_AGS30_TriPod",
48 | "rhsgref_cdf_b_DSHKM",
49 | "rhsgref_cdf_b_DSHKM_Mini_TriPod",
50 | "rhsgref_cdf_b_NSV_TriPod",
51 | "rhsgref_cdf_b_SPG9",
52 | "rhsgref_cdf_b_SPG9M",
53 | "rhsgref_cdf_b_ZU23",
54 | "rhsgref_cdf_b_Mi24D",
55 | "rhsgref_cdf_b_Mi24D_Early",
56 | "rhsgref_b_mi24g_CAS",
57 | "rhsgref_cdf_b_Mi35",
58 | "rhsgref_cdf_b_reg_Mi8amt",
59 | "rhsgref_cdf_b_reg_Mi17Sh",
60 | "RHS_AN2_B",
61 | "rhs_l159_cdf_b_CDF",
62 | "rhs_l39_cdf_b_cdf",
63 | "rhsgref_cdf_b_mig29s",
64 | "rhsgref_cdf_b_su25",
65 | "rhsgref_cdf_b_reg_d30",
66 | "rhsgref_cdf_b_reg_d30_at",
67 | "rhsgref_cdf_b_reg_M252"
68 | ];
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/savedassets/side_missions.sqf:
--------------------------------------------------------------------------------
1 | [
2 | [
3 | "Construction Site", // Display Name
4 | 'Side Objective Completed!', // On capture display
5 | [["Land_WIP_F",[0,-0.0507813,-0.00150204],90],["Land_Timbers_F",[13.9121,-10.6738,0.0107546],0],["Land_Timbers_F",[15.9121,-10.6699,0.0362072],0],["Land_Coil_F",[21.7617,-5.17578,0.00733948],359.995],["Land_Bricks_V1_F",[-23.001,-1.02148,-0.00148678],359.999],["Land_ConcretePipe_F",[24.2402,-2.82422,-0.0548391],134.993],["Land_WorkStand_F",[18.9775,-17.0605,-0.00149536],359.999],["Land_Bricks_V1_F",[-21.748,-16.3535,-0.00148392],0.00241089],["Land_CinderBlocks_F",[14.665,22.9082,0.00676537],0.00378418],["Land_CinderBlocks_F",[8.74805,-27.1953,0.00154877],0.0162659],["Land_Pipes_large_F",[16.0508,24.9141,0.0151329],45.0771],["Land_Crane_F",[-15.8037,-31.3691,0.28975],315],["Land_CinderBlocks_F",[-7.99023,-34.0508,0.00563145],0.0267944]],
6 | ["I_soldier_F", "I_soldier_F", "I_soldier_F", "I_soldier_F", "I_soldier_F", "I_soldier_F", "I_soldier_F", "I_soldier_F", "I_soldier_F", "I_soldier_F", "I_soldier_F", "I_soldier_F", "I_soldier_F", "I_soldier_F", "I_soldier_F", "I_soldier_F", "I_soldier_F"],
7 | 10,
8 | TRUE
9 | ],
10 | [
11 | "AA", // Display Name
12 | 'Side Objective Completed!', // On capture display
13 | [],
14 | ["O_APC_Tracked_02_AA_F", "O_APC_Tracked_02_AA_F", "O_T_LSV_02_armed_F"],
15 | 10,
16 | FALSE
17 | ],
18 | [
19 | "Artillery", // Display Name
20 | 'Side Objective Completed!', // On capture display
21 | [],
22 | ["O_MBT_02_arty_F", "O_T_MRAP_02_hmg_ghex_F"],
23 | 10,
24 | FALSE
25 | ],
26 | [
27 | "Enemy Survivors", // Display Name
28 | 'Side Objective Completed!', // On capture display
29 | [],
30 | ["O_Survivor_F", "O_Survivor_F", "O_Survivor_F", "O_Survivor_F", "O_Survivor_F", "O_Survivor_F"],
31 | 8,
32 | TRUE
33 | ],
34 | [
35 | "Enemy Mortars", // Display Name
36 | 'Side Objective Completed!', // On capture display
37 | [],
38 | ["O_Mortar_01_F", "O_Mortar_01_F", "O_Mortar_01_F", "O_Mortar_01_F", "O_MRAP_02_gmg_F"],
39 | 10,
40 | FALSE
41 | ]
42 | ];
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/handlers/fn_requestVehicle.sqf:
--------------------------------------------------------------------------------
1 | MP_request_vehicle = {
2 | params ["_vehType", "_marker", "_textures", "_aiControlled"];
3 |
4 | private _new_veh = createVehicle [ _vehType, getMarkerPos _marker, [], 0, "CAN_COLLIDE" ];
5 | private _vehDir = markerDir _marker;
6 | _new_veh setPosATL [ ( position _new_veh select 0 ), ( position _new_veh select 1 ), 0.25 ];
7 | _new_veh setDir _vehDir;
8 |
9 | private _count = 0;
10 | {
11 | _new_veh setObjectTextureGlobal [ _count, _x ];
12 | _count = _count + 1;
13 | } forEach _textures;
14 |
15 | br_spawned_vehicles pushBack _new_veh;
16 |
17 | // If crew has AI
18 | if (_aiControlled) then {
19 | // Create its crew
20 | createVehicleCrew _new_veh;
21 | // Get the vehicle commander
22 | private _commander = driver _new_veh;
23 | // Get the group from the commander
24 | private _temp = group _commander;
25 | // If vehicle is another faction it can spawn people on the wrong side, we need them to be on our side.
26 | _attackVehicleGroup = createGroup WEST;
27 | (units _temp) joinSilent _attackVehicleGroup;
28 | { _x setBehaviour "AWARE"; _x setSkill br_ai_skill; } forEach (units _attackVehicleGroup);
29 | // Apply the zone AI to the vehicle
30 | br_friendly_ai_groups pushBack _attackVehicleGroup;
31 | br_friendly_vehicles pushBack _attackVehicleGroup;
32 | // Removes the AI from the above groups when vehicle is not alive anymore
33 | [_new_veh, _attackVehicleGroup] execVM "core\server\functions\fn_removeDeadAIRequestedVehicle.sqf";
34 | };
35 |
36 | // Deletes vehicles if there's too much spawned given the param
37 | { if (!alive _x) then { br_spawned_vehicles deleteAt (br_spawned_vehicles find _x); deleteVehicle _x; }; } forEach br_spawned_vehicles;
38 | while {count br_spawned_vehicles > br_max_user_vehicles} do {
39 | private _toDelete = br_spawned_vehicles select 0;
40 | format ["The server has hit the spawnable vehicles limit: %1. Deleting one.", count br_spawned_vehicles, getText (configFile >> "CfgVehicles" >> (typeof _new_veh) >> "displayName")] remoteExec ["systemChat"];
41 | br_spawned_vehicles deleteAt (br_spawned_vehicles find _toDelete);
42 | deleteVehicle _toDelete;
43 | };
44 | };
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/functions/helicopters/fn_landHelicopter.sqf:
--------------------------------------------------------------------------------
1 |
2 | private _vehicle = _this select 0; // The vehicle itself
3 | private _vehicleGroup = _this select 1; // The vehicle group
4 | private _groups = _this select 2; // Groups inside the helicopter
5 | private _position = _this select 3; // The landing position
6 | private _displayOnMap = _this select 4; // If should display on the map
7 | private _ejectUnits = _this select 5; // If the units get ejected apon arrival
8 | private _markerName = _this select 6; // The marker text on the map
9 | private _markerColour = _this select 7; // The colour of the icon on the map
10 | private _isAirVehicle = _this select 8; // Is helicopter or ground vehicle
11 | private _unquieNumber = _vehicle call BIS_fnc_netId;
12 |
13 | // Place a marker on the map
14 | if (_displayOnMap) then { [format ["%1 - %2", _markerName, _unquieNumber], _position, format ["%1 - %2", _markerName, groupId (group (driver _vehicle))], _markerColour, 1] call fn_createTextMarker; };
15 | _vehicle setUnloadInCombat [FALSE, FALSE];
16 | if (_isAirVehicle) then {
17 | _landMarker = createVehicle [ "Land_HelipadEmpty_F", _position, [], 0, "CAN_COLLIDE" ];
18 | // Wait until landed
19 | [_vehicle, _position, FALSE, _vehicleGroup] call fn_waitUntillLanded;
20 | } else {
21 | [_vehicle, _position, _vehicleGroup] call fn_waitUntillArrived;
22 | };
23 | sleep 1;
24 |
25 | // Do this if units should be ejected once landed
26 | if (_ejectUnits) then {
27 | private _tempTime = 0;
28 | [_vehicle, "Ejecting units!"] remoteExec ["vehicleChat"];
29 | // Tell the groups to getout
30 | [_vehicle, TRUE] call fn_ejectUnits;
31 | { [_x, true, _vehicle] call fn_commandGroupIntoVehicle; } forEach _groups;
32 | // Wait until all units are out
33 | _tempTime = time + br_groupsStuckTeleportDelay;
34 | { waitUntil { sleep 1; [_x, _vehicle] call fn_getUnitsInVehicle == 0 || time > _tempTime}; } forEach _groups;
35 | // Set group as aware
36 | { _x setBehaviour "AWARE"; } forEach _groups;
37 | };
38 | _vehicle setUnloadInCombat [TRUE, TRUE];
39 | if (_isAirVehicle) then { deleteVehicle _landMarker; };
40 | // Delete the marker on the map
41 | if (_displayOnMap) then { deleteMarker format ["%1 - %2", _markerName, _unquieNumber]; };
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/zone/fn_checkFriendlyFindEnemy.sqf:
--------------------------------------------------------------------------------
1 | br_markers_marked = [];
2 | _marerRemovalLimit = 180; // Time before marker is removed if enemy is not seen again
3 | _markerLimit = 6; // Markers limit
4 |
5 | // Checks if any units in group are seen
6 | fnc_checkUnitSeen = {
7 | params ["_friendlyGroup", "_enemyGroup"];
8 | private _knows = FALSE;
9 | {
10 | if ((_friendlyGroup knowsAbout _x) > 0) then { _knows = TRUE };
11 | if (_friendlyGroup knowsAbout (Vehicle _x) > 0) then { _knows = TRUE };
12 | } forEach (units _enemyGroup);
13 | _knows;
14 | };
15 |
16 | // Create the marker on the map
17 | fnc_createMapMarker = {
18 | params ["_marker", "_group", "_name"];
19 | [_marker, getpos (leader _group), _name, "ColorBlack", 0.5] call fn_createTextMarker;
20 | };
21 |
22 | // Create a maker given the type
23 | fnc_createMarkerType = {
24 | params ["_type", "_marker", "_group"];
25 | switch (_type) do {
26 | case "Vehicle": { [_marker, _group, format ["%1 Around Here!", getText (configFile >> "CfgVehicles" >> typeof (Vehicle (leader _group)) >> "displayName")]] call fnc_createMapMarker; };
27 | case "Ground Unit": { [_marker, _group, "Ground Units Around Here!"] call fnc_createMapMarker; };
28 | default { [_marker, _group, "Enemy Around Here!"] call fnc_createMapMarker; };
29 | };
30 | };
31 |
32 | // Check if any groups are seen
33 | fnc_checkGroupSeen = {
34 | params ["_friendlyGroup"];
35 | {
36 | if (count br_markers_marked >= _markerLimit) exitWith {};
37 | // Check if group already has a marker
38 | //if (!(_x in br_groups_marked)) then {
39 | // Check if friendlys can see any units in a group
40 | if ([_friendlyGroup, _x] call fnc_checkUnitSeen) then {
41 | if (!(isNull objectParent (leader _x))) then {
42 | ["Vehicle", groupId _x, _x] call fnc_createMarkerType;
43 | } else {
44 | ["Ground Unit", groupId _x, _x] call fnc_createMarkerType;
45 | };
46 | if (!(groupId _x in br_markers_marked)) then {
47 | br_markers_marked pushBack groupId _x;
48 | [groupId _x,time + _marerRemovalLimit] execVM "core\server\markers\fn_deleteMakerAfterGivenTime.sqf";
49 | }
50 | };
51 | //};
52 | } forEach br_ai_groups;
53 | };
54 |
55 | while {TRUE} do {
56 | if (count br_markers_marked < _markerLimit) then {
57 | { [_x] call fnc_checkGroupSeen; } foreach br_friendly_ai_groups;
58 | { [_x] call fnc_checkGroupSeen; } foreach br_friendly_objective_groups;
59 | };
60 | sleep 10;
61 | };
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/zone/fn_commandFriendlyGroups.sqf:
--------------------------------------------------------------------------------
1 | While {TRUE} do {
2 | if (!br_zone_taken) then {
3 | // Delete groups where all units are dead
4 | { // Add waypoint to group (Will do for all groups)
5 | private _y = _x;
6 | // Check number of waypoints, if less then 3 add more.
7 | if (count (waypoints _y) < 3 && !br_zone_taken) then {
8 | //_pos = [] call getLocation;
9 | private _pos = [getMarkerPos "ZONE_RADIUS", 0, br_zone_radius * sqrt br_max_radius_distance, 2, 0, 60, 0] call BIS_fnc_findSafePos;
10 | while {count _pos > 2} do {
11 | _pos = [getMarkerPos "ZONE_RADIUS", 0, br_zone_radius * sqrt br_max_radius_distance, 2, 0, 60, 0] call BIS_fnc_findSafePos;
12 | sleep 0.1;
13 | };
14 | private _wp = _y addWaypoint [_pos, 0];
15 | _wp setWaypointType (selectrandom ["Sentry", "Move", "Destroy"]);
16 | _wp setWaypointStatements ["true","deleteWaypoint [group this, currentWaypoint (group this)]"];
17 | };
18 | // Check group is empty, remove it from groups and delete it
19 | if (({alive _x} count units _y) < 1) then {
20 | br_friendly_ai_groups deleteAt (br_friendly_ai_groups find _y); /*{ deleteVehicle _x } forEach units _y;*/ deleteGroup _y; _y = grpNull; _y = nil;
21 | };
22 | } foreach br_friendly_ai_groups;
23 | {
24 | private _y = _x;
25 | if (({alive _x} count units _y) < 1) then { br_friendly_ground_groups deleteAt (br_friendly_ground_groups find _y); { deleteVehicle _x } forEach units _y; deleteGroup _y; _y = grpNull; _y = nil;};
26 | } forEach br_friendly_ground_groups;
27 | {
28 | private _y = _x;
29 | // Check number of waypoints, if less then 1 add more.
30 | if (count (waypoints _y) < 3) then {
31 | private _pos = [getMarkerPos "ZONE_RADIUS", 0, br_zone_radius * sqrt br_max_radius_distance, 2, 0, 60, 0] call BIS_fnc_findSafePos;
32 | while {count _pos > 2} do {
33 | _pos = [getMarkerPos "ZONE_RADIUS", 0, br_zone_radius * sqrt br_max_radius_distance, 2, 0, 60, 0] call BIS_fnc_findSafePos;
34 | sleep 0.1;
35 | };
36 | _wp = _y addWaypoint [_pos, 0];
37 | _wp setWaypointFormation "NO CHANGE";
38 | _wp setWaypointSpeed "FULL";
39 | _wp setWaypointBehaviour "AWARE";
40 | _wp setWaypointStatements ["true","while {(count (waypoints this)) > 0} do { deleteWaypoint ((waypoints this) select 0); }; br_friendly_ai_groups pushBack this;"];
41 | };
42 | } forEach br_friendly_ground_on_foot_to_zone;
43 | };
44 | sleep br_command_delay;
45 | };
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/base/fn_friendlySpawnAI.sqf:
--------------------------------------------------------------------------------
1 | private _unitChance = _this select 0;
2 | private _aiSpawnRate = 1; // Delay in seconds
3 | private _allSpawnedDelay = 10; // Seconds to wait untill checking if any groups died
4 |
5 | br_fnc_spawnFriendlyAI = {
6 | while {True} do {
7 | // Spawn AI untill reached limit
8 | while {((count br_friendly_ground_groups) < br_min_friendly_ai_groups)} do {
9 | private _group = nil;
10 | _rNumber = floor (random ((count _unitChance) + (count br_custom_unit_compositions_friendly) + br_custom_units_chosen_offset));
11 | if (((count _unitChance) != 0) && (_rNumber <= (count _unitChance))) then {
12 | _group = [WEST, br_unit_type_compositions_friendly select 0, br_unit_type_compositions_friendly select 2, br_unit_type_compositions_friendly select 1, _unitChance, call fn_getGroundUnitsLocation, call br_fnc_setInitCommandGroup] call fn_selectRandomGroupToSpawn;
13 | } else {
14 | _group = [call fn_getGroundUnitsLocation, WEST, selectrandom br_custom_unit_compositions_friendly] call BIS_fnc_spawnGroup;
15 | (call br_fnc_setInitCommandGroup) pushback _group;
16 | };
17 | {
18 | [_x] call fn_objectInitEvents;
19 | } forEach units _group;
20 | // Now split the groups
21 | private _splitGroups = [_group];
22 | br_friendly_ground_groups pushBack _group;
23 | scopeName "split";
24 | while {TRUE} do {
25 | private _tempDidSplit = FALSE;
26 | private _splitGroupsTemp = [];
27 | {
28 | if (count (units _x) > br_max_friendly_group_size) then {
29 | private _tempGroup = createGroup WEST;
30 | [(units _x), 0, (count (units _x) / 2)] call BIS_fnc_subSelect joinSilent _tempGroup;
31 | _splitGroupsTemp pushBack _tempGroup;
32 | _splitGroupsTemp pushBack _x;
33 | br_friendly_ground_groups pushBack _x;
34 | (call br_fnc_setInitCommandGroup) pushback _tempGroup;
35 | _group = _x;
36 | _tempDidSplit = TRUE;
37 | };
38 | } forEach (_splitGroups);
39 | _splitGroups = _splitGroupsTemp;
40 | if (!_tempDidSplit) then { breakOut "split" };
41 | };
42 | sleep _aiSpawnRate;
43 | };
44 | // Save memory instead of constant checking
45 | sleep _allSpawnedDelay;
46 | };
47 | };
48 |
49 | // Sets the init commanding group
50 | br_fnc_setInitCommandGroup = {
51 | if (br_friendlies_use_transport) then {
52 | br_friendly_groups_waiting;
53 | } else {
54 | br_friendly_ground_on_foot_to_zone;
55 | };
56 | };
57 |
58 | [] call br_fnc_spawnFriendlyAI;
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/SBGF/fn_garrison.sqf:
--------------------------------------------------------------------------------
1 | /* //////////////////////////////////////////////
2 | Author: J.Shock
3 |
4 | Function: fn_garrison.sqf
5 |
6 | Description: Fills defined percentage of building positions with a set of
7 | defined units within defined radius.
8 |
9 | Parameters:
10 | 1- Center position: (string/object/position array) (default: objNull)
11 | 2- Side of units: (side) (default: EAST)
12 | 3- Radius for building search: (scalar) (default: 200)
13 | 4- Percentage of used building positions: (scalar (0-1)) (default: 0.2)
14 | 5- Types of units to spawn: (array of classnames) (default: ["O_Soldier_F","O_Soldier_AR_F"])
15 | 6- (Optional)Define the limit of spawned units: (scalar) (default: -1)
16 | **This overrides parameter 4 (percent of used building positions) unless (-1) is used**
17 |
18 | Example: _units = ["mrkName",EAST,300,0.3,["O_Soldier_F","O_Soldier_AR_F"],-1] call SBGF_fnc_garrison;
19 |
20 | Return: Array of spawned units.
21 |
22 | *///////////////////////////////////////////////
23 | params
24 | [
25 | ["_center",objNull,["",objNull,[]],[3]],
26 | ["_grpParam",EAST,[WEST]],
27 | ["_radius",200,[0]],
28 | ["_pctFill",0.2,[0.0]],
29 | ["_manType",["O_Soldier_F","O_Soldier_AR_F"],[[]]],
30 | ["_positionCount",-1,[0]]
31 | ];
32 | private ["_sideGrp","_buildings","_buildCount","_buildPosCount","_cntManType","_spawnedUnits"];
33 |
34 | _sideGrp = createGroup _grpParam;
35 |
36 | _buildings = [_center,_radius] call SBGF_fnc_buildingPositions;
37 | _buildCount = (_buildings select 0);
38 | _buildPosCount = count (_buildings select 1);
39 | _cntManType = (count _manType);
40 |
41 | if (_pctFill > 1 || _pctFill < 0) then
42 | {
43 | _pctFill = 0.2;
44 | diag_log "_pctFill must be between 0 and 1, defaulted to 0.2 >> SBGF\fn_garrison.sqf";
45 | };
46 |
47 | if (_positionCount isEqualTo -1) then
48 | {
49 | _positionCount = round(_buildCount * _pctFill);
50 | }
51 | else
52 | {
53 | if (_positionCount > _buildPosCount) then
54 | {
55 | _positionCount = _buildPosCount;
56 | };
57 | };
58 | _spawnedUnits = [];
59 |
60 | for "_i" from 0 to (_positionCount) step 1 do
61 | {
62 | _rndPos = ((_buildings select 1) select floor(random(count (_buildings select 1))));
63 | _rndMan = (_manType select floor(random(_cntManType)));
64 |
65 | _unit = _sideGrp createUnit [_rndMan, (_rndPos), [], 0, "NONE"];
66 |
67 | doStop _unit;
68 |
69 | _unit setDir (random 359);
70 |
71 | _unit setUnitPos "UP";
72 |
73 | _spawnedUnits pushBack _unit;
74 | _buildings set [1,((_buildings select 1) - [_rndPos])];
75 | };
76 |
77 | _spawnedUnits;
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/base/fn_customTransportRun.sqf:
--------------------------------------------------------------------------------
1 | private _player = _this select 0;
2 | private _vehicle = _this select 1;
3 | private _id = format["CTV-%1", getPlayerUID _player];
4 | private _hasEjectAction = format["HEA-%1", getPlayerUID _player];
5 |
6 | // Check the status of the driver
7 | br_checkDriverStatus = {
8 | private _status = TRUE;
9 | if ((isNull driver _vehicle) || !(alive (driver _vehicle))) then {
10 | _status = FALSE;
11 | };
12 | _status;
13 | };
14 |
15 | // Do this while running
16 | br_runningCustomTransport = {
17 | private _groups = _this select 0;
18 | [_vehicle, "Group(s) found!"] remoteExec ["vehicleChat"];
19 | private _ejectAction = -1;
20 | // Check if player already has eject option
21 | if !(_player getVariable[_hasEjectAction, FALSE]) then {
22 | _ejectAction = _player addAction ["Eject Units", {
23 | params ["_object", "_caller", "_id", "_args"];
24 | _args params ["_playerID", "_hasEject"];
25 | _object setVariable [_playerID, FALSE];
26 | _object setVariable [_hasEject, FALSE];
27 | _object removeAction _id;
28 | }, [_id, _hasEjectAction]];
29 | _player setVariable [_hasEjectAction, TRUE];
30 | };
31 | { [_x, FALSE, _vehicle] call fn_commandGroupIntoVehicle; } forEach _groups;
32 | _vehicle setUnloadInCombat [FALSE, FALSE];
33 | waitUntil { sleep 3; (!(call br_checkDriverStatus) || !(_player getVariable _id)) };
34 | _vehicle setUnloadInCombat [TRUE, TRUE];
35 | // Check if the player ejected with units still within the vehicle
36 | if (_ejectAction != -1) then {
37 | _player removeAction _ejectAction;
38 | };
39 | // Add them to the zone group
40 | {
41 | private _y = _x;
42 | private _playerCount = ({isPlayer _x} count (units _y));
43 | if (_playerCount == 0) then {
44 | br_friendly_ai_groups pushBack _y;
45 | };
46 | } forEach _groups;
47 | { _x setBehaviour "AWARE"; [_x, _vehicle] call fn_ejectGroup; } forEach _groups;
48 | };
49 |
50 | br_runCustomTransport = {
51 | [_vehicle, "Checking if any groups are waiting..."] remoteExec ["vehicleChat"];
52 | // Check if any groups are waiting
53 | if (count br_friendly_groups_waiting > 0) then {
54 | private _groups = [];
55 | // Get some waiting groups, if any
56 | _groups = [_groups, br_friendly_groups_waiting, _vehicle] call fn_findGroupsInQueue;
57 | if (count _groups > 0) then {
58 | _player setVariable [_id, TRUE];
59 | [_groups] call br_runningCustomTransport;
60 | } else {
61 | [_vehicle, "No groups waiting or not enough seats..."] remoteExec ["vehicleChat"];
62 | };
63 | } else {
64 | [_vehicle, "No groups waiting or not enough seats..."] remoteExec ["vehicleChat"];
65 | };
66 | };
67 |
68 | call br_runCustomTransport;
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/base/fn_createVehicle.sqf:
--------------------------------------------------------------------------------
1 | private _attackVehicleGroup = nil; // The group in the vehicle
2 | private _attackVehicle = nil; // The vehicle
3 | private _spawnPad = _this select 0; // The spawnpad for it
4 | private _unitChance = _this select 1;
5 |
6 | // Spawn custom units
7 | br_fnc_createAttackVehicle = {
8 | // Select a random unit from the above list to spawn
9 | _attackVehicle = (selectrandom _unitChance) createVehicle (getMarkerPos _spawnPad);
10 | //_attackVehicleGroup = [_attackVehicle] call fn_createVehicleCrew;
11 | // Create its crew
12 | createVehicleCrew _attackVehicle;
13 | // If vehicle is another faction it can spawn people on the wrong side, we need them to be on our side.
14 | _attackVehicleGroup = createGroup WEST;
15 | (units (group ((crew _attackVehicle) select 0))) joinSilent _attackVehicleGroup;
16 | {
17 | [_x] call fn_objectInitEvents;
18 | } forEach crew _attackVehicle + units _attackVehicleGroup;
19 | [_attackVehicle] call fn_objectInitEvents;
20 | [_attackVehicleGroup, _spawnPad] call fn_setDirectionOfMarker;
21 | // Apply the zone AI to the vehicle
22 | br_friendly_ai_groups pushBack _attackVehicleGroup;
23 | br_friendly_vehicles pushBack _attackVehicleGroup;
24 | //br_headquarters sideChat format ["%1 - Ready for action!", getText (configFile >> "CfgVehicles" >> typeof (Vehicle (leader _attackVehicleGroup)) >> "displayName")]
25 | };
26 |
27 | // What to do if the vehicle is dead but some units controlling the vehicle are alive
28 | br_fnc_noVehicle = {
29 | while {(count (waypoints _attackVehicleGroup)) > 0} do {
30 | deleteWaypoint ((waypoints _attackVehicleGroup) select 0);
31 | };
32 | br_friendly_ai_groups pushBack _attackVehicleGroup;
33 | };
34 |
35 | // run the vehicle
36 | br_fnc_runVehicleUnit = {
37 | while {True} do {
38 | // Spawn vehicle
39 | [] call br_fnc_createAttackVehicle;
40 | // Wait untill they die
41 | waituntil{ sleep 5; ({(alive _x)} count (units _attackVehicleGroup) == 0) || (!alive _attackVehicle) || (fuel _attackVehicle == 0)};
42 | // Do some cleanup cause they died
43 | if (!alive _attackVehicle && fuel _attackVehicle == 0) then { deleteVehicle _attackVehicle; } else { br_empty_vehicles_in_garbage_collection pushBack _attackVehicle; };
44 | if (({(alive _x)} count (units _attackVehicleGroup) < 1)) then
45 | {
46 | br_friendly_ai_groups deleteAt (br_friendly_ai_groups find _attackVehicleGroup);
47 | } else {
48 | // What to do if the units are alive somehow
49 | call br_fnc_noVehicle;
50 | };
51 | br_friendly_vehicles deleteAt (br_friendly_vehicles find _attackVehicleGroup);
52 | deleteGroup _attackVehicleGroup;
53 | };
54 | };
55 |
56 | [] call br_fnc_runVehicleUnit;
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/spawnlists/RHSAFRF/unit_compositions.sqf:
--------------------------------------------------------------------------------
1 | [
2 | [
3 | "rhs_group_rus_msv_infantry_chq",
4 | "rhs_group_rus_msv_infantry_fireteam",
5 | "rhs_group_rus_msv_infantry_MANEUVER",
6 | "rhs_group_rus_msv_infantry_section_AA",
7 | "rhs_group_rus_msv_infantry_section_AT",
8 | "rhs_group_rus_msv_infantry_section_marksman",
9 | "rhs_group_rus_msv_infantry_section_mg",
10 | "rhs_group_rus_msv_infantry_squad",
11 | "rhs_group_rus_msv_infantry_squad_2mg",
12 | "rhs_group_rus_msv_infantry_squad_mg_sniper",
13 | "rhs_group_rus_msv_infantry_squad_sniper"
14 | ],
15 | /*[
16 | "rhs_group_rus_vdv_des_infantry_chq",
17 | "rhs_group_rus_vdv_des_infantry_fireteam",
18 | "rhs_group_rus_vdv_des_infantry_MANEUVER",
19 | "rhs_group_rus_vdv_des_infantry_section_AA",
20 | "rhs_group_rus_vdv_des_infantry_section_AT",
21 | "rhs_group_rus_vdv_des_infantry_section_marksman",
22 | "rhs_group_rus_vdv_des_infantry_section_mg",
23 | "rhs_group_rus_vdv_des_infantry_squad",
24 | "rhs_group_rus_vdv_des_infantry_squad_2mg",
25 | "rhs_group_rus_vdv_des_infantry_squad_mg_sniper",
26 | "rhs_group_rus_vdv_des_infantry_squad_sniper"
27 | ],*/
28 | [
29 | "rhs_group_rus_vdv_infantry_chq",
30 | "rhs_group_rus_vdv_infantry_fireteam",
31 | "rhs_group_rus_vdv_infantry_MANEUVER",
32 | "rhs_group_rus_vdv_infantry_section_AA",
33 | "rhs_group_rus_vdv_infantry_section_AT",
34 | "rhs_group_rus_vdv_infantry_section_marksman",
35 | "rhs_group_rus_vdv_infantry_section_mg",
36 | "rhs_group_rus_vdv_infantry_squad",
37 | "rhs_group_rus_vdv_infantry_squad_2mg",
38 | "rhs_group_rus_vdv_infantry_squad_mg_sniper",
39 | "rhs_group_rus_vdv_infantry_squad_sniper"
40 | ],
41 | [
42 | "rhs_group_rus_vdv_infantry_flora_chq",
43 | "rhs_group_rus_vdv_infantry_flora_fireteam",
44 | "rhs_group_rus_vdv_infantry_flora_MANEUVER",
45 | "rhs_group_rus_vdv_infantry_flora_section_AA",
46 | "rhs_group_rus_vdv_infantry_flora_section_AT",
47 | "rhs_group_rus_vdv_infantry_flora_section_marksman",
48 | "rhs_group_rus_vdv_infantry_flora_section_mg",
49 | "rhs_group_rus_vdv_infantry_flora_squad",
50 | "rhs_group_rus_vdv_infantry_flora_squad_2mg",
51 | "rhs_group_rus_vdv_infantry_flora_squad_mg_sniper",
52 | "rhs_group_rus_vdv_infantry_flora_squad_sniper"
53 | ],
54 | [
55 | "rhs_group_rus_vdv_infantry_mflora_chq",
56 | "rhs_group_rus_vdv_infantry_mflora_fireteam",
57 | "rhs_group_rus_vdv_infantry_mflora_MANEUVER",
58 | "rhs_group_rus_vdv_infantry_mflora_section_AA",
59 | "rhs_group_rus_vdv_infantry_mflora_section_AT",
60 | "rhs_group_rus_vdv_infantry_mflora_section_marksman",
61 | "rhs_group_rus_vdv_infantry_mflora_section_mg",
62 | "rhs_group_rus_vdv_infantry_mflora_squad",
63 | "rhs_group_rus_vdv_infantry_mflora_squad_2mg",
64 | "rhs_group_rus_vdv_infantry_mflora_squad_mg_sniper",
65 | "rhs_group_rus_vdv_infantry_mflora_squad_sniper"
66 | ],
67 | [
68 | "rhs_group_rus_vdv_infantry_recon_chq",
69 | "rhs_group_rus_vdv_infantry_recon_fireteam",
70 | "rhs_group_rus_vdv_infantry_recon_MANEUVER",
71 | "rhs_group_rus_vdv_infantry_recon_squad",
72 | "rhs_group_rus_vdv_infantry_recon_squad_2mg",
73 | "rhs_group_rus_vdv_infantry_recon_squad_mg_sniper",
74 | "rhs_group_rus_vdv_infantry_recon_squad_sniper"
75 | ],
76 | [
77 | "rhs_group_rus_vmf_infantry_recon_chq",
78 | "rhs_group_rus_vmf_infantry_recon_fireteam",
79 | "rhs_group_rus_vmf_infantry_recon_MANEUVER",
80 | "rhs_group_rus_vmf_infantry_recon_squad",
81 | "rhs_group_rus_vmf_infantry_recon_squad_2mg",
82 | "rhs_group_rus_vmf_infantry_recon_squad_mg_sniper",
83 | "rhs_group_rus_vmf_infantry_recon_squad_sniper"
84 | ]
85 | ];
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Evannex Gamemode
2 | ---
3 | Arma 3 - AI vs AI Gamemode. Zones are randomly generated around the map you need to capture these zones by completing objectives and killing the AI within the zone. This game mode does not require any players input. AI will command themselves leaving players to do without having to micro manage the AI.
4 |
5 | Note: This is my first ArmA 3 mod. This gamemode is also based off Invade & Annex and is very similar. I did not use their framework or code because I wanted to learn the SQF language and thought it would be fun to make my own version. This is why it does not include the same things.
6 |
7 | 
8 |
9 | ## Features:
10 | ---
11 | - Customizeable & dynamic systems (Includes mission parameters)
12 | - Mini central intelligences controlling both enemy & friendly AI
13 | - Friendies can mark enemies on the map
14 | - Friendly transport & evac (Includes helicopters & vehicles)
15 | - Friendly vehicles & helictopers & jets
16 | - Friendly units respawn as a different unit
17 | - Friendly squads which do the objectives (Includes side missions)
18 | - Enemies can garrison structures
19 | - Recruitable friendly units
20 | - Randomly generated enemy zones (Includes the objectives)
21 | - Randomly generated side missions
22 | - Randomly generated enemy & friendly units
23 | - Randomly generated Base Defences
24 | - Randomly generated mines within the zone
25 | - Random enemy group formations, combat styles & speed
26 | - Utilizes compositions
27 | - Spawnable vehicles
28 | - Easy to add support for custom maps
29 | - Teleport to zone button
30 | - Virutal support
31 | - Virutal Arsenal
32 | - Networked tasks
33 | - DLC support
34 | - Co-op support
35 |
36 | ## Server Params:
37 | ---
38 | Currently not listed...
39 |
40 | ## Markers:
41 | ---
42 | Note: 'n' refers to some number.
43 | ##### "zone_spawn_n":
44 | Location where zones can potentially spawn
45 | ##### "marker_ai_spawn_friendly_ground_units":
46 | Friendly ground units spawn.
47 | ##### "recruit_n":
48 | Friendly recruits spawn.
49 | ##### "defence_spawn_n":
50 | Friendly base defences spawn
51 | ##### "helicopter_transport_n":
52 | Friendly transport helicopter spawn
53 | ##### "helicopter_evac_n":
54 | Friendly evac helicopter spawn
55 | ##### "vehicle_spawn_n":
56 | Friendly vehicle spawn
57 | ##### "vehicle_evac_spawn_n":
58 | Friendly evac helicopter spawn
59 | ##### "vehicle_transport_spawn_n":
60 | Friendly vehicle spawn
61 | ##### "jet_spawn_n":
62 | Friendly jet spawn
63 | ##### "objective_squad_n":
64 | Friendly Objetive squad spawn
65 |
66 | ## Adding Custom Faction:
67 | ---
68 | 1. Clone a one of the directories within 'core/spawnlists'.
69 | 2. Name the cloned directory according to the custom faction being added. e.g 'FOOBAR'.
70 | 3. Add the custom faction to the 'Description.ext' file within the one or both classes 'FriendlyFaction' & 'EnemyFaction' as a text and value. E.G:
71 | ⋅⋅⋅values[] = {0,1,2,3,4};⋅⋅
72 | ⋅⋅⋅texts[] = {"BLU_F", "OPF_F", "RHSUSAF", "RHSAFRF", "FOOBAR"};⋅⋅
73 | 6. Add the custom faction to the switch statement as a case in the function 'br_fnc_get_faction' within 'core/server/zone/zoneCreation.sqf' file. E.G: 'case 4: { _faction = "FOOBAR" };'.
74 | 7. Lastly change the asset classes held within the 'FOOBAR' directory to spawn the custom faction units. E.G: changing the class names within 'friendly_jets.sqf' would change what type of jets spawn at the "jet_spawn_n" marker.
75 |
76 | See other included factions for examples.
77 |
78 | ## Credits:
79 | ---
80 | - J.Shock - Shock's Building Garrison Function - Garrisons units into buildings
81 | - Quiksilver - Soldier Tracker - Shows units on the map.
82 | - Quiksilver (Again) - Invade & Annex gamemode which this was inspired from
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/cache/fn_functions.sqf:
--------------------------------------------------------------------------------
1 | // Events
2 | fn_objectInitEvents = compileFinal preprocessFileLineNumbers "core\server\handlers\fn_objectInitEvents.sqf";
3 |
4 | // Map markers
5 | fn_createTextMarker = compileFinal preprocessFileLineNumbers "core\server\markers\fn_createTextMarker.sqf";
6 | fn_createRadiusMarker = compileFinal preprocessFileLineNumbers "core\server\markers\fn_createRadiusMarker.sqf";
7 |
8 | // Assets
9 | radio_towers = compileFinal preprocessFileLineNumbers "core\savedassets\radio_towers.sqf";
10 | zone_objectives = compileFinal preprocessFileLineNumbers "core\savedassets\zone_objectives.sqf";
11 |
12 | // Vehicles
13 | fn_createVehicleCrew = compileFinal preprocessFileLineNumbers "core\server\functions\fn_createVehicleCrew.sqf";
14 | fn_commandGroupIntoVehicle = compileFinal preprocessFileLineNumbers "core\server\functions\fn_commandGroupIntoVehicle.sqf";
15 | fn_ejectUnits = compileFinal preprocessFileLineNumbers "core\server\functions\fn_ejectUnits.sqf";
16 | fn_ejectGroup = compileFinal preprocessFileLineNumbers "core\server\functions\fn_ejectGroup.sqf";
17 | fn_getUnitsInVehicle = compileFinal preprocessFileLineNumbers "core\server\functions\fn_getUnitsInVehicle.sqf";
18 | fn_getPlayersInVehicle = compileFinal preprocessFileLineNumbers "core\server\functions\fn_getPlayersInVehicle.sqf";
19 | fn_waitForGroupToEnterVehicle = compileFinal preprocessFileLineNumbers "core\server\functions\fn_waitForGroupToEnterVehicle.sqf";
20 | fn_checkVehicleAndCrewAlive = compileFinal preprocessFileLineNumbers "core\server\functions\fn_checkVehicleAndCrewAlive.sqf";
21 | fn_createLandingNearZoneOnRoad = compileFinal preprocessFileLineNumbers "core\server\functions\vehicles\fn_createLandingNearZoneOnRoad.sqf";
22 | fn_waitUntillArrived = compileFinal preprocessFileLineNumbers "core\server\functions\vehicles\fn_waitUntillArrived.sqf";
23 | fn_getWaitingGroups = compileFinal preprocessFileLineNumbers "core\server\functions\vehicles\fn_getWaitingGroups.sqf";
24 | fn_getWatingEvacGroups = compileFinal preprocessFileLineNumbers "core\server\functions\vehicles\fn_getWatingEvacGroups.sqf";
25 |
26 | // Helicopters
27 | fn_createHelicopterCrew = compileFinal preprocessFileLineNumbers "core\server\functions\helicopters\fn_createHelicopterCrew.sqf";
28 | fn_waitUntillLanded = compileFinal preprocessFileLineNumbers "core\server\functions\helicopters\fn_waitUntillLanded.sqf";
29 | fn_landHelicopter = compileFinal preprocessFileLineNumbers "core\server\functions\helicopters\fn_landHelicopter.sqf";
30 | fn_createLandingNearZone = compileFinal preprocessFileLineNumbers "core\server\functions\helicopters\fn_createLandingNearZone.sqf";
31 | fn_dropEvacedUnitsAtBase = compileFinal preprocessFileLineNumbers "core\server\functions\helicopters\fn_dropEvacedUnitsAtBase.sqf";
32 |
33 | // Groups
34 | fn_findGroupsInQueue = compileFinal preprocessFileLineNumbers "core\server\functions\fn_findGroupsInQueue.sqf";
35 | fn_selectRandomGroupToSpawn = compileFinal preprocessFileLineNumbers "core\server\functions\fn_selectRandomGroupToSpawn.sqf";
36 | fn_deleteGroup = compileFinal preprocessFileLineNumbers "core\server\functions\fn_deleteGroup.sqf";
37 | fn_getUnitAliveCount = compile preprocessFileLineNumbers "core\server\functions\fn_getUnitAliveCount.sqf";
38 | fn_spawnGroup = compileFinal preprocessFileLineNumbers "core\server\functions\fn_spawnGroup.sqf";
39 |
40 | // Units
41 | fn_getGroundUnitsLocation = compileFinal preprocessFileLineNumbers "core\server\functions\fn_getGroundUnitsLocation.sqf";
42 |
43 | // Directions
44 | fn_setRandomDirection = compileFinal preprocessFileLineNumbers "core\server\functions\fn_setRandomDirection.sqf";
45 | fn_setDirectionOfMarker = compileFinal preprocessFileLineNumbers "core\server\functions\fn_setDirectionOfMarker.sqf";
46 |
47 | // Players
48 | fn_createLandingNearObject = compileFinal preprocessFileLineNumbers "core\server\functions\helicopters\fn_createLandingNearObject.sqf";
49 | fn_checkPlayersAround = compileFinal preprocessFileLineNumbers "core\server\functions\fn_checkPlayersAround.sqf";
50 |
51 | // Random
52 | fn_getRandomVector = compileFinal preprocessFileLineNumbers "core\server\functions\fn_getRandomVector.sqf";
53 | fn_addToZeus = compileFinal preprocessFileLineNumbers "core\server\functions\fn_addToZeus.sqf";
54 | fn_checkPosition = compileFinal preprocessFileLineNumbers "core\server\functions\fn_checkPosition.sqf";
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/savedassets/mine_fields.sqf:
--------------------------------------------------------------------------------
1 | [
2 | [["APERSMine_Range_Ammo",[0.896484,-8.0625,0.021446],0],["ModuleMine_APERSMine_F",[0.896484,-8.0625,-0.00143838],0],["ModuleMine_APERSMine_F",[-4.52734,8.11719,-0.00143838],0],["APERSMine_Range_Ammo",[-4.52734,8.11719,0.021446],0],["ModuleMine_APERSMine_F",[9.14844,-2.71289,-0.00143838],0],["APERSMine_Range_Ammo",[9.14844,-2.71289,0.021446],0],["APERSBoundingMine_Range_Ammo",[-10.6836,-4.53125,0.0986147],0],["ModuleMine_APERSBoundingMine_F",[-10.6836,-4.53125,-0.00143838],0],["ModuleMine_APERSBoundingMine_F",[10.8418,5.33594,-0.00143838],0],["APERSBoundingMine_Range_Ammo",[10.8418,5.33594,0.0986147],0],["ModuleMine_APERSMine_F",[2.31641,17.5215,-0.00143838],0],["APERSMine_Range_Ammo",[2.31641,17.5215,0.021446],0],["ModuleMine_APERSMine_F",[-5.94727,-17.4668,-0.00143838],0],["APERSMine_Range_Ammo",[-5.94727,-17.4668,0.021446],0],["ModuleMine_APERSMine_F",[18.3438,-10.4922,-0.00143838],0],["APERSMine_Range_Ammo",[18.3438,-10.4922,0.021446],0],["APERSBoundingMine_Range_Ammo",[-19.1484,-10.707,0.0986147],0],["ModuleMine_APERSBoundingMine_F",[-19.1484,-10.707,-0.00143838],0],["APERSBoundingMine_Range_Ammo",[9.42188,-20.248,0.0986147],0],["ModuleMine_APERSBoundingMine_F",[9.42188,-20.248,-0.00143838],0],["APERSMine_Range_Ammo",[-21.791,5.49609,0.021446],0],["ModuleMine_APERSMine_F",[-21.791,5.49609,-0.00143838],0],["ModuleMine_APERSBoundingMine_F",[-9.26367,21.0527,-0.00143838],0],["APERSBoundingMine_Range_Ammo",[-9.26367,21.0527,0.0986147],0],["ModuleMine_APERSBoundingMine_F",[-17.7285,14.877,-0.00143838],0],["APERSBoundingMine_Range_Ammo",[-17.7285,14.877,0.0986147],0],["APERSMine_Range_Ammo",[19.7637,15.0918,0.021446],0],["ModuleMine_APERSMine_F",[19.7637,15.0918,-0.00143838],0],["ModuleMine_APERSMine_F",[10.5684,22.8711,-0.00143838],0],["APERSMine_Range_Ammo",[10.5684,22.8711,0.021446],0],["ModuleMine_APERSMine_F",[27.4922,-2.73828,-0.00143838],0],["APERSMine_Range_Ammo",[27.4922,-2.73828,0.021446],0],["APERSMine_Range_Ammo",[-30.3359,-1.86328,0.021446],0],["ModuleMine_APERSMine_F",[-30.3359,-1.86328,-0.00143838],0],["APERSMine_Range_Ammo",[-23.2109,-20.0879,0.021446],0],["ModuleMine_APERSMine_F",[-23.2109,-20.0879,-0.00143838],0],["APERSMine_Range_Ammo",[31.3438,4.49414,0.021446],0],["ModuleMine_APERSMine_F",[31.3438,4.49414,-0.00143838],0],["APERSBoundingMine_Range_Ammo",[-30.1738,13.0059,0.0986147],0],["ModuleMine_APERSBoundingMine_F",[-30.1738,13.0059,-0.00143838],0],["APERSBoundingMine_Range_Ammo",[-31.5938,-12.5781,0.0986147],0],["ModuleMine_APERSBoundingMine_F",[-31.5938,-12.5781,-0.00143838],0],["ModuleMine_APERSMine_F",[29.9238,-21.0898,-0.00143838],0],["APERSMine_Range_Ammo",[29.9238,-21.0898,0.021446],0],["APERSMine_Range_Ammo",[28.9121,22.8457,0.021446],0],["ModuleMine_APERSMine_F",[28.9121,22.8457,-0.00143838],0],["APERSMine_Range_Ammo",[-28.916,23.7207,0.021446],0],["ModuleMine_APERSMine_F",[-28.916,23.7207,-0.00143838],0],["CamCurator",[-26.8184,1.22266,44.6946],92.4936]],
3 | [["ATMine_Range_Ammo",[5.07422,6.37305,0.0866652],0],["ModuleMine_ATMine_F",[5.07422,6.37305,-0.00143886],0],["ATMine_Range_Ammo",[9.58398,-5.74805,0.0866652],0],["ModuleMine_ATMine_F",[9.58398,-5.74805,-0.00143886],0],["ModuleMine_ATMine_F",[-6.76367,10.8418,-0.00143886],0],["ATMine_Range_Ammo",[-6.76367,10.8418,0.0866652],0],["ATMine_Range_Ammo",[-11.623,-6.65625,0.0866652],0],["ModuleMine_ATMine_F",[-11.623,-6.65625,-0.00143886],0],["ModuleMine_ATMine_F",[-9.46484,-18.7402,-0.00143886],0],["ATMine_Range_Ammo",[-9.46484,-18.7402,0.0866652],0],["ATMine_Range_Ammo",[17.8145,11.4395,0.0866652],0],["ModuleMine_ATMine_F",[17.8145,11.4395,-0.00143886],0],["ATMine_Range_Ammo",[2.37305,-23.209,0.0866652],0],["ModuleMine_ATMine_F",[2.37305,-23.209,-0.00143886],0],["ATMine_Range_Ammo",[15.1133,-18.1426,0.0866652],0],["ModuleMine_ATMine_F",[15.1133,-18.1426,-0.00143886],0],["ModuleMine_ATMine_F",[-17.5254,16.0859,-0.00143886],0],["ATMine_Range_Ammo",[-17.5254,16.0859,0.0866652],0],["ATMine_Range_Ammo",[-20.2266,-13.4961,0.0866652],0],["ModuleMine_ATMine_F",[-20.2266,-13.4961,-0.00143886],0],["ModuleMine_ATMine_F",[-8.92188,22.9258,-0.00143886],0],["ATMine_Range_Ammo",[-8.92188,22.9258,0.0866652],0],["ModuleMine_ATMine_F",[-25.9336,-4.11133,-0.00143886],0],["ATMine_Range_Ammo",[-25.9336,-4.11133,0.0866652],0],["ATMine_Range_Ammo",[12.2852,23.834,0.0866652],0],["ModuleMine_ATMine_F",[12.2852,23.834,-0.00143886],0],["ModuleMine_ATMine_F",[-26.5586,4.55469,-0.00143886],0],["ATMine_Range_Ammo",[-26.5586,4.55469,0.0866652],0],["ModuleMine_ATMine_F",[27.3262,-5.7832,-0.00143886],0],["ATMine_Range_Ammo",[27.3262,-5.7832,0.0866652],0],["ModuleMine_ATMine_F",[29.127,5.94531,-0.00143886],0],["ATMine_Range_Ammo",[29.127,5.94531,0.0866652],0],["ATMine_Range_Ammo",[-23.2324,25.4707,0.0866652],0],["ModuleMine_ATMine_F",[-23.2324,25.4707,-0.00143886],0],["ATMine_Range_Ammo",[26.4258,-23.6367,0.0866652],0],["ModuleMine_ATMine_F",[26.4258,-23.6367,-0.00143886],0],["ATMine_Range_Ammo",[30.0273,23.7988,0.0866652],0],["ModuleMine_ATMine_F",[30.0273,23.7988,-0.00143886],0],["ModuleMine_ATMine_F",[-29.2598,-25.0273,-0.00143886],0],["ATMine_Range_Ammo",[-29.2598,-25.0273,0.0866652],0],["CamCurator",[-41.4023,2.51758,78.8887],87.6157]]
4 | ];
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/base/fn_createTransportVehicle.sqf:
--------------------------------------------------------------------------------
1 | private _spawnPad = _this select 0; // The spawnpad for it
2 | private _vehIndex = _this select 1;
3 | private _unitChance = _this select 2;
4 | private _evacVehicle = _this select 3;
5 | private _vehicleGroup = nil; // The group in the vehicle
6 | private _vehicle = nil; // The vehicle
7 | private _landMarker = nil; // Used to tell the AI where to land
8 | private _fmsDisable = ["MOVE", "TARGET", "AUTOTARGET", "FSM", "AUTOCOMBAT", "AIMINGERROR", "SUPPRESSION", "MINEDETECTION", "WEAPONAIM", "CHECKVISIBLE"];
9 |
10 | // Deletes the current Vehicle units
11 | br_fnc_deleteOldVehicleUnits = {
12 | br_heliGroups deleteAt (br_heliGroups find _vehicleGroup);
13 | [_vehicleGroup] call fn_deleteGroup;
14 | };
15 |
16 | // Spawn custom units
17 | br_fnc_createVehicleUnit = {
18 | // Select a random unit from the above list to spawn
19 | _vehicle = (selectrandom _unitChance) createVehicle (getMarkerPos _spawnPad);
20 | [_vehicle] call fn_addToZeus;
21 | _vehicle setUnloadInCombat [FALSE, FALSE];
22 | _vehicleGroup = [_vehicle, WEST, _fmsDisable] call fn_createHelicopterCrew;
23 | [_vehicleGroup, _spawnPad] call fn_setDirectionOfMarker;
24 | { _x setBehaviour "AWARE"; _x setSkill br_ai_skill; } forEach (units _vehicleGroup);
25 | };
26 |
27 | // Go and land at zone
28 | br_fuc_MoveGroupTotZone = {
29 | private _groups = _this select 0;
30 | [_vehicle, "Waiting for all units to enter the vehicle..."] remoteExec ["vehicleChat"];
31 | // Command groups into helicopter
32 | { [_x, FALSE, _vehicle] call fn_commandGroupIntoVehicle; } forEach _groups;
33 | // Wait for the units to enter the helicopter
34 | { [_x, _vehicle, _vehicleGroup] call fn_waitForGroupToEnterVehicle; } forEach _groups;
35 | [_vehicle, "Departing in 15 seconds!"] remoteExec ["vehicleChat"];
36 | sleep 15;
37 | private _dropPosition = call fn_createLandingNearZoneOnRoad;
38 | [_vehicle, _vehicleGroup, _groups, _dropPosition, TRUE, TRUE, "LZ", "ColorGreen", FALSE] call fn_landHelicopter;
39 | [_vehicleGroup] call fn_deleteGroup;
40 | _vehicleGroup = [_vehicle, WEST, _fmsDisable] call fn_createHelicopterCrew;
41 | // Move groups into commanding zone group
42 | {
43 | private _y = _x;
44 | private _playerCount = ({isPlayer _x} count (units _y));
45 | if (_playerCount == 0) then {
46 | br_friendly_ai_groups pushBack _y;
47 | };
48 | } forEach _groups;
49 | // Goto helipad and land
50 | //[getMarkerPos _spawnPad] call br_fnc_move;
51 | [_vehicle, _vehicleGroup, _groups, getMarkerPos _spawnPad, TRUE, FALSE, "RTB", "ColorOrange", FALSE] call fn_landHelicopter;
52 | _vehicleGroup = [_vehicle, WEST, _fmsDisable] call fn_createHelicopterCrew;
53 | {_x disableAI "MOVE"; } forEach units _vehicleGroup;
54 | };
55 |
56 |
57 | br_fnc_runEvacVehicle = {
58 | private _groups = _this select 0;
59 | // Get drop position
60 | private _pickUpPosition = [leader (_groups select 0)] call fn_createLandingNearObject;
61 | [_vehicle, _vehicleGroup, _groups, _pickUpPosition, TRUE, FALSE, "EVAC", "ColorCIV", FALSE] call fn_landHelicopter;
62 | _vehicleGroup = [_vehicle, WEST, _fmsDisable] call fn_createHelicopterCrew;
63 | // Wait for group to get in
64 | { [_x, false, _vehicle] call fn_commandGroupIntoVehicle; } forEach _groups;
65 | [_vehicle, "Waiting for all units to enter the helicopter..."] remoteExec ["vehicleChat"];
66 | // Wait for units to enter the helicopter
67 | { [_x, _vehicle, _vehicleGroup] call fn_waitForGroupToEnterVehicle; } forEach _groups;
68 | [_vehicle, "Departing in 15 seconds!"] remoteExec ["vehicleChat"];
69 | sleep 15;
70 | [_vehicle, _vehicleGroup, _groups, getMarkerPos _spawnPad, TRUE, TRUE, "RTB", "ColorOrange", FALSE] call fn_landHelicopter;
71 | // Wait for units to eject and return to base
72 | [_vehicle, _groups] call fn_dropEvacedUnitsAtBase;
73 | _vehicleGroup = [_vehicle, WEST, _fmsDisable] call fn_createHelicopterCrew;
74 | };
75 |
76 | // run the vehicle
77 | br_fnc_runVehicleUnit = {
78 | _landMarker = createVehicle [ "Land_HelipadEmpty_F", getMarkerPos _spawnPad, [], 0, "CAN_COLLIDE" ];
79 | while {True} do {
80 | // Spawn vehicle
81 | [] call br_fnc_createVehicleUnit;
82 | while {({(alive _x)} count (units _vehicleGroup) > 0) && {(alive _vehicle)} && {(((leader _vehicleGroup) distance _vehicle) < 30)};} do {
83 | sleep 25;
84 | if (_evacVehicle) then {
85 | private _groups = [_vehicle] call fn_getWatingEvacGroups;
86 | if (count _groups > 0) then { [_groups] call br_fnc_runEvacVehicle; };
87 | } else {
88 | private _groups = [_vehicle] call fn_getWaitingGroups;
89 | if (count _groups > 0) then { [_groups] call br_fuc_MoveGroupTotZone; };
90 | };
91 | _vehicle setFuel 1;
92 | _vehicle setDamage 0;
93 | // Veh should be on the pad, destory if not
94 | if ((getMarkerPos _spawnPad) distance _vehicle > 10) then { _vehicle setdamage 1; };
95 | };
96 | sleep 15;
97 | // Do some cleanup cause they died
98 | call br_fnc_deleteOldVehicleUnits;
99 | deleteVehicle _vehicle;
100 | };
101 | };
102 |
103 | [] call br_fnc_runVehicleUnit;
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/base/fn_createHelis.sqf:
--------------------------------------------------------------------------------
1 | private _heliPad = _this select 0; // The position where the AI will spawn
2 | private _heliIndex = _this select 1; // The index of the helictoper given other helicopters
3 | private _evacChopper = _this select 2; // If te helicopter is a evac helicopter or not
4 | private _vehicleGroup = nil; // The group in the heli
5 | private _helicopterVehicle = nil; // The helicopter
6 | private _landMarker = nil; // Used to tell the AI where to land
7 | private _unitChance = _this select 3;
8 | private _fmsDisable = ["MOVE", "TARGET", "AUTOTARGET", "FSM", "AUTOCOMBAT", "AIMINGERROR", "SUPPRESSION", "MINEDETECTION", "WEAPONAIM", "CHECKVISIBLE"];
9 |
10 | // Spawn custom units
11 | br_fnc_createChopperUnit = {
12 | _helicopterVehicle = (selectrandom _unitChance) createVehicle getMarkerPos _heliPad;
13 | [_helicopterVehicle] call fn_addToZeus;
14 | _vehicleGroup = [_helicopterVehicle, WEST, _fmsDisable] call fn_createHelicopterCrew;
15 | waitUntil { sleep 3; {_x in _helicopterVehicle} count (units _vehicleGroup) == {(alive _x)} count (units _vehicleGroup) };
16 | };
17 |
18 | // Go and land at zone
19 | br_fuc_landGroupAtZone = {
20 | private _groups = _this select 0;
21 | [_helicopterVehicle, "Waiting for all units to enter the helicopter..."] remoteExec ["vehicleChat"];
22 | // Command groups into helicopter
23 | { [_x, false, _helicopterVehicle] call fn_commandGroupIntoVehicle; } forEach _groups;
24 | // Wait for the units to enter the helicopter
25 | { [_x, _helicopterVehicle, _vehicleGroup] call fn_waitForGroupToEnterVehicle; } forEach _groups;
26 | [_helicopterVehicle, "Departing in 15 seconds!"] remoteExec ["vehicleChat"];
27 | //br_headquarters sideChat format ["Air Transport Departing Soon - %1", groupId (group (driver _helicopterVehicle))];
28 | sleep 15;
29 | // Generate landing zone and move to it and land
30 | private _landPosition = call fn_createLandingNearZone;
31 | [_helicopterVehicle, _vehicleGroup, _groups, _landPosition, TRUE, TRUE, "LZ", "ColorGreen", TRUE] call fn_landHelicopter;
32 | // Move groups into commanding zone group
33 | {
34 | private _y = _x;
35 | private _playerCount = ({isPlayer _x} count (units _y));
36 | if (_playerCount == 0) then {
37 | br_friendly_ai_groups pushBack _y;
38 | };
39 | } forEach _groups;
40 | //_vehicleGroup = [_helicopterVehicle, WEST, _fmsDisable] call fn_createHelicopterCrew;
41 | // Goto helipad and land
42 | [_helicopterVehicle, _vehicleGroup, [], getMarkerPos _heliPad, TRUE, FALSE, "RTB", "ColorOrange", TRUE] call fn_landHelicopter;
43 | // Create a temp group
44 | _vehicleGroup = [_helicopterVehicle, WEST, _fmsDisable] call fn_createHelicopterCrew;
45 | };
46 |
47 | // If the chopper is evac
48 | br_fnc_runEvacChopper = {
49 | private _groups = _this select 0;
50 | // Moveto LZ
51 | private _landPosition = [(leader (_groups select 0))] call fn_createLandingNearObject;
52 | [_helicopterVehicle, _vehicleGroup, [], _landPosition, TRUE, FALSE, "EVAC", "ColorCIV", TRUE] call fn_landHelicopter;
53 | { [_x, false, _helicopterVehicle] call fn_commandGroupIntoVehicle; } forEach _groups;
54 | //_vehicleGroup = [_helicopterVehicle, WEST, _fmsDisable] call fn_createHelicopterCrew;
55 | // Wait for units to enter the helicopter
56 | [_helicopterVehicle, "Waiting for all units to enter the helicopter..."] remoteExec ["vehicleChat"];
57 | { [_x, _helicopterVehicle, _vehicleGroup] call fn_waitForGroupToEnterVehicle; } forEach _groups;
58 | [_helicopterVehicle, "Departing in 15 seconds!"] remoteExec ["vehicleChat"];
59 | sleep 15;
60 | [_helicopterVehicle, _vehicleGroup, _groups, getMarkerPos _heliPad, TRUE, TRUE, "RTB", "ColorOrange", TRUE] call fn_landHelicopter;
61 | // Wait for units to eject and return to base
62 | [_helicopterVehicle, _groups] call fn_dropEvacedUnitsAtBase;
63 | _vehicleGroup = [_helicopterVehicle, WEST, _fmsDisable] call fn_createHelicopterCrew;
64 | };
65 |
66 | // Run AI
67 | br_fnc_createHelis = {
68 | _landMarker = createVehicle [ "Land_HelipadEmpty_F", getMarkerPos _heliPad, [], 0, "CAN_COLLIDE" ];
69 | while {True} do {
70 | // Create chopper units
71 | [] call br_fnc_createChopperUnit;
72 | // Set angle vector
73 | [_vehicleGroup, _heliPad] call fn_setDirectionOfMarker;
74 | // Check if units inside chopper are dead, or helicopter is dead or pilot ran away
75 | while {({(alive _x)} count (units _vehicleGroup) > 0) && (alive _helicopterVehicle) && (((leader _vehicleGroup) distance _helicopterVehicle) < 30) && (fuel _helicopterVehicle > 0.2)} do {
76 | sleep 25;
77 | if (_evacChopper) then {
78 | private _groups = [_helicopterVehicle] call fn_getWatingEvacGroups;
79 | if (count _groups > 0) then { [_groups] call br_fnc_runEvacChopper; };
80 | } else {
81 | private _groups = [_helicopterVehicle] call fn_getWaitingGroups;
82 | if (count _groups > 0) then { [_groups] call br_fuc_landGroupAtZone; };
83 | };
84 | _helicopterVehicle setFuel 1;
85 | _helicopterVehicle setDamage 0;
86 | // Heli should be on the pad, destory if not
87 | if ((getMarkerPos _heliPad) distance _helicopterVehicle > 10) then { _helicopterVehicle setdamage 1; };
88 | };
89 | sleep 15;
90 | // Do the below because the heli died or some bullcrap happened
91 | [_vehicleGroup] call fn_deleteGroup;
92 | deleteVehicle _helicopterVehicle;
93 | };
94 | };
95 |
96 | [] call br_fnc_createHelis;
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/zone/fn_zoneSpawnAI.sqf:
--------------------------------------------------------------------------------
1 | private _spawningMarker = _this select 0; // The marker which spawns the AI if active
2 | private _speicalChance = _this select 1; // The list of units that have a chance to spawn
3 | private _unitChance = _this select 2;
4 |
5 | private _aiSpawnRate = 0; // Delay in seconds
6 | private _allSpawnedDelay = 30; // Seconds to wait untill checking if any groups died
7 | private _currentGarrisons = 0;
8 |
9 | // Gets a safe zone within the zone
10 | br_fnc_getGroupEnemySpawn = {
11 | [getMarkerPos "ZONE_RADIUS", 0, br_zone_radius * sqrt br_max_radius_distance, 5, 0, 60, 0] call BIS_fnc_findSafePos;
12 | };
13 |
14 | // Spawn given units at a certain location
15 | br_fnc_spawnGivenUnitsAt = {
16 | // Getting the params
17 | params ["_group", "_spawnAmount","_position", "_groupunits"];
18 | // Number AI to spawn
19 | for "_i" from 1 to _spawnAmount do {
20 | {
21 | // Create and return the AI(s) group
22 | _tempGroup = [_position, side _group, [_x],[],[],[],[],[],180] call BIS_fnc_spawnGroup;
23 | // Place the AI(s) in that group into another group
24 | units _tempGroup join _group;
25 | //_position = _position vectorAdd _vectorAdd;
26 | } foreach _groupunits;
27 | };
28 | _group;
29 | };
30 |
31 | // Gets a position near no players
32 | br_fnc_getPositionNearNoPlayersAtZone = {
33 | _newPos = nil;
34 | _aroundnoPlayers = TRUE;
35 | _distance = br_spawn_enemy_to_player_dis;
36 | while {_aroundNoPlayers} do {
37 | _newPos = [] call br_fnc_getGroupEnemySpawn;
38 | _nearAPlayer = FALSE;
39 | { if (_newPos distance (getpos _x) < _distance ) then { _nearAPlayer = TRUE; }; } forEach allPlayers;
40 | if (_nearAPlayer) then { _aroundNoPlayers = TRUE; } else { _aroundNoPlayers = FALSE; };
41 | _distance = _distance - 15;
42 | };
43 | _newPos;
44 | };
45 |
46 | // run main
47 | br_fnc_spawnAI = {
48 | while {!br_zone_taken} do {
49 | // Spawn AI untill reached limit
50 | while {(count br_ai_groups <= br_min_ai_groups) && (getMarkerColor _spawningMarker == "ColorRed" || !br_radio_tower_enabled)} do {
51 | _newPos = [] call br_fnc_getPositionNearNoPlayersAtZone;
52 | _rNumber = floor (random ((count _unitChance) + (count br_custom_unit_compositions_enemy) + br_custom_units_chosen_offset));
53 | private _group = nil;
54 | if (((count _unitChance) != 0) && (_rNumber <= (count _unitChance))) then {
55 | _group = [EAST, br_unit_type_compositions_enemy select 0, br_unit_type_compositions_enemy select 2, br_unit_type_compositions_enemy select 1, _unitChance, _newPos, br_ai_groups] call fn_selectRandomGroupToSpawn;
56 | } else {
57 | _group = [_newPos, EAST, selectrandom br_custom_unit_compositions_enemy] call BIS_fnc_spawnGroup;
58 | br_ai_groups pushBack _group;
59 | };
60 | [_group] call fn_setRandomDirection;
61 | { [_x] call fn_objectInitEvents; } forEach units _group;
62 | if (_currentGarrisons < br_max_garrisons) then {
63 | private _completed = [leader _group, "ZONE_RADIUS", br_zone_radius * sqrt br_max_radius_distance] call SBGF_fnc_groupGarrison;
64 | private _tempGroup = createGroup EAST;
65 | if (_completed) then {
66 | {
67 | _x disableAI "PATH";
68 | [_x] joinSilent _tempGroup;
69 | br_groups_in_buildings append [_tempGroup];
70 | } forEach (units _group);
71 | _currentGarrisons = _currentGarrisons + 1;
72 | };
73 | };
74 | sleep 0.5;
75 | };
76 | // Spawn spawn special units untill
77 | while {(count br_special_ai_groups <= br_min_special_groups) && (getMarkerColor _spawningMarker == "ColorRed" || !br_radio_tower_enabled)} do {
78 | _newPos = [] call br_fnc_getPositionNearNoPlayersAtZone;
79 | _group = [createGroup EAST, 1, _newPos, [selectRandom _speicalChance], 1] call br_fnc_spawnGivenUnitsAt;
80 | [_group] call fn_setRandomDirection;
81 | {
82 | _x setSkill br_ai_skill;
83 | [_x] call fn_setRandomDirection;
84 | } forEach (units _group);
85 | br_special_ai_groups pushBack _group;
86 | br_ai_groups pushBack _group;
87 | // Add all vehicles in the group to a list
88 | {
89 | _vehicle = (vehicle _x);
90 | // Check if vehicle is null
91 | if (!(isNull _vehicle)) then {
92 | br_enemy_vehicle_objects pushBack _vehicle;
93 | [_vehicle] call fn_objectInitEvents;
94 | { [_x] call fn_objectInitEvents; } forEach (crew _vehicle);
95 | switch ((_vehicle call BIS_fnc_objectType) select 1) do {
96 | case "Helicopter";
97 | case "Plane": { _vehicle setPosASL [getPosASL _vehicle select 0, getPosASL _vehicle select 1, getTerrainHeightASL (position _vehicle) + 100 + random 500]; };
98 | case "Ship": {
99 | private _waterPos = [getMarkerPos "ZONE_RADIUS", 0, (br_zone_radius * 1.8) * sqrt br_max_radius_distance, 5, 2] call BIS_fnc_findSafePos;
100 | if (count _waterPos != 3 && surfaceIsWater _waterPos) then {
101 | _vehicle setpos _waterPos;
102 | } else {
103 | br_enemy_vehicle_objects deleteAt (br_enemy_vehicle_objects find _vehicle);
104 | br_special_ai_groups deleteAt (br_special_ai_groups find _group);
105 | br_ai_groups deleteAt (br_ai_groups find _group);
106 | deleteVehicle _vehicle;
107 | [_group] call br_fnc_deleteGroups;
108 | };
109 | };
110 | default {};
111 | };
112 | };
113 | } forEach (units _group);
114 | sleep 0.01;
115 | };
116 | // Save memory instead of constant checking
117 | sleep _allSpawnedDelay;
118 | };
119 | };
120 |
121 | sleep 1;
122 | [] call br_fnc_spawnAI;
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/zone_objective/fn_createObjective.sqf:
--------------------------------------------------------------------------------
1 | private _uniqueName = _this select 0; // Has to be unique mission will have issues if not
2 | private _displayName = _this select 1; // Display Text
3 | private _zoneRadius = _this select 2; // Radius of the zone
4 | private _objectToUse = _this select 3; // Object to use such as a building or vehicle
5 | private _objective = _this select 4; // The objective type
6 | private _deleteMarkerOnCapture = _this select 5; // If the marker is deleted on capture
7 | private _textOnTaken = _this select 6; // Text when object is completed
8 | private _groupsIfKill = _this select 7; // units to spawn at objective
9 | private _mattersToObjectiveSquad = _this select 8; // If the friendly AI will ignore this objective
10 | private _requiresCompletedToCaptureZone = _this select 9; // If the capture of the main zone requires the capture of this zone
11 | private _brushType = _this select 10;
12 | private _shapeType = _this select 11;
13 | private _position = _this select 12;
14 | private _removeOnZoneCompleted = _this select 13;
15 | private _aiStates = _this select 14;
16 | private _garrison = _this select 15;
17 |
18 | private _spawnedObj = nil;
19 | private _objectivePosition = nil;
20 | private _objectiveOrigin = nil;
21 | private _groupsToKill = []; // Groups spawned at objective
22 | private _radiusName = format ["ZONE_%1_RADIUS", _uniqueName];
23 | private _textName = format ["ZONE_%1_ICON", _uniqueName];
24 | private _zoneVarName = format ["br_%1", _uniqueName]; // Used to check if objective has been completed outside this local script
25 | private _objectiveLocation = format ["ZONE_%1_OBJ", _uniqueName];
26 | private _objects = [];
27 |
28 | // Spawn given units at a certain location
29 | br_fnc_spawnGivenUnitsAt = {
30 | params ["_group", "_spawnAmount","_position", "_groupunits"];
31 | // Number AI to spawn
32 | for "_i" from 1 to _spawnAmount do {
33 | {
34 | // Create and return the AI(s) group
35 | private _tempGroup = [_position, side _group, [_x],[],[],[],[],[],180] call BIS_fnc_spawnGroup;
36 | // Place the AI(s) in that group into another group
37 | units _tempGroup join _group;
38 | } foreach _groupunits;
39 | };
40 | _group;
41 | };
42 |
43 | br_ai_state = {
44 | params ["_group", "_state","_desure"];
45 | {
46 | if (_desure) then {
47 | _x enableAI _state;
48 | } else {
49 | _x disableAI _state;
50 | };
51 | } forEach (units _group);
52 | };
53 |
54 | br_set_states = {
55 | params ["_group"];
56 | {
57 | [_group, _x select 0, _x select 1] call br_ai_state;
58 | } forEach _aiStates;
59 | };
60 |
61 | // Spawn group
62 | br_fnc_spawnGroups = {
63 | {
64 | private _safeSpot = [_objectiveOrigin, 0, _zoneRadius * sqrt random 360, 20, 0, 20, 0] call BIS_fnc_findSafePos;
65 | _group = [createGroup EAST, 1, _safeSpot, [_x]] call br_fnc_spawnGivenUnitsAt;
66 | //{ _x setSkill br_ai_skill } forEach units _group;
67 | [_group] call fn_setRandomDirection;
68 | _groupsToKill pushBack _group;
69 | if (_garrison) then { _garrison = [leader _group, _objectiveLocation, 100] call SBGF_fnc_groupGarrison; }
70 | else { [_group, _safeSpot, _zoneRadius] execVM "core\server\zone_objective\fn_groupRoam.sqf"; };
71 | [_group] call br_set_states;
72 | {
73 | if (!isNull objectParent _x) then {
74 | _objects pushBack vehicle _x;
75 | [vehicle _x] call fn_objectInitEvents;
76 | };
77 | [_x] call fn_objectInitEvents;
78 | } forEach units _group;
79 | } forEach _groupsIfKill;
80 | // Delete group if too far away from objective
81 | [_groupsToKill, _objectiveOrigin, _zoneRadius] execVM "core\server\zone_objective\fn_groupChecker.sqf";
82 | };
83 |
84 | // Do this and wait untill done
85 | br_fnc_DoObjectiveAndWaitTillComplete = {
86 | switch (_objective) do {
87 | case "Destory & Kill": { call br_fnc_spawnGroups; { waitUntil { sleep 1; !alive _x} } foreach _objects; { _y = _x; waitUntil { sleep 1; ({alive _x} count units _y < 1)}; } forEach _groupsToKill};
88 | case "Destory": { { sleep 5; waitUntil { sleep 1; !alive _x} } foreach _objects; };
89 | case "Kill": { call br_fnc_spawnGroups; { _y = _x; waitUntil { sleep 1; ({alive _x} count units _y < 1)}; } forEach _groupsToKill};
90 | default { hint "Objective Error: " + _uniqueName};
91 | };
92 | };
93 |
94 | // Delete markers
95 | br_fnc_deleteObjMarkers = {
96 | deleteMarker _radiusName;
97 | deleteMarker _textName;
98 | deleteMarker _objectiveLocation;
99 | };
100 |
101 | // Creates the Objective
102 | br_fnc_createObjective = {
103 | missionNamespace setVariable [_zoneVarName, FALSE];
104 | // Creates center
105 | private _maxGrad = 20;
106 | _objectiveOrigin = [];
107 | if (br_objectives_require_cleared_space) then {
108 | while {count _objectiveOrigin < 2} do {
109 | _objectiveOrigin = [_position, 0, br_zone_radius * sqrt br_max_radius_distance, _maxGrad, 0, br_objective_max_angle, 0] call BIS_fnc_findSafePos;
110 | _maxGrad = _maxGrad + 1;
111 | sleep 0.1;
112 | };
113 | };
114 | // Gets position near center
115 | if (br_objectives_require_cleared_space) then {
116 | _objectivePosition = [_objectiveOrigin, 0, _zoneRadius * sqrt random 360, 20, 0, 10, 0] call BIS_fnc_findSafePos;
117 | } else {
118 | _objectiveOrigin = _position getPos [br_zone_radius * sqrt random br_max_radius_distance, random br_max_radius_distance];
119 | _objectivePosition = _objectiveOrigin getPos [_zoneRadius * sqrt random 360, random 360];
120 | };
121 | // Place near center
122 | _spawnedObj = "Land_LampAirport_F" createVehicle _objectivePosition;
123 | _spawnedObj hideObjectGlobal true;
124 | _spawnedObj enableSimulationGlobal false;
125 | if (count _objectToUse != 0) then { _objects append ([_spawnedObj, _objectToUse] call compile preprocessFileLineNumbers "core\server\functions\fn_createComposition.sqf"); };
126 | // Creates the radius
127 | [_radiusName, _objectiveOrigin, _zoneRadius, 360, "ColorRed", _radiusName, 1, _brushType, _shapeType] call fn_createRadiusMarker;
128 | // Create text icon
129 | [_textName, _objectiveOrigin, _displayName, "ColorBlue", 1] call fn_createTextMarker;
130 | [_objectiveLocation, _objectivePosition, "", "ColorBlue", 0] call fn_createTextMarker;
131 | br_objectives pushBack [_uniqueName, _spawnedObj, _groupsToKill, _objective, _mattersToObjectiveSquad, _zoneVarName, _requiresCompletedToCaptureZone, _removeOnZoneCompleted, _objectiveOrigin, _zoneRadius, _radiusName];
132 | // Wait untill objective is completed
133 | [] call br_fnc_DoObjectiveAndWaitTillComplete;
134 | // Take the objective
135 | [] call br_fnc_onTaken;
136 | };
137 |
138 | // Called when the objective is taken
139 | br_fnc_onTaken = {
140 | [[[_textOnTaken],"core\client\task\fn_completeObjective.sqf"],"BIS_fnc_execVM",true,true] call BIS_fnc_MP;
141 |
142 | if (_deleteMarkerOnCapture) then { [] call br_fnc_deleteObjMarkers; }
143 | else { _radiusName setMarkerColor "ColorBlue"; };
144 |
145 | // Set objective as taken
146 | missionNamespace setVariable [_zoneVarName, TRUE];
147 | br_objectives deleteAt (br_objectives find [[_uniqueName, _spawnedObj, _groupsToKill, _objective, _mattersToObjectiveSquad, _zoneVarName, _requiresCompletedToCaptureZone, _removeOnZoneCompleted, _objectiveOrigin, _zoneRadius, _radiusName]]);
148 |
149 | if (_removeOnZoneCompleted) then {
150 | // Wait untill main zone is taken
151 | waitUntil { sleep 2; br_zone_taken };
152 | };
153 |
154 | [] call br_fnc_onZoneTakenAfterComplete;
155 | };
156 |
157 | // When zone is taken after
158 | br_fnc_onZoneTakenAfterComplete = {
159 | // Do some cleanup
160 | if (!_deleteMarkerOnCapture) then { [] call br_fnc_deleteObjMarkers; };
161 | sleep 120;
162 | { deleteVehicle _x } foreach _objects;
163 | deleteVehicle _spawnedObj;
164 | };
165 |
166 | [] call br_fnc_createObjective;
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/server/base/fn_createObjectiveUnits.sqf:
--------------------------------------------------------------------------------
1 | private _spawnPad = _this select 0; // The position where the AI will spawn
2 | private _bombIndex = _this select 1; // Index when created
3 | private _vehicleChance = _this select 2;
4 | private _unitChance = _this select 3;
5 | private _allSpawnedDelay = 1; // Seconds to wait untill checking if any groups diedg
6 | private _getOutOfVehicleRadius = 400; // Range from objective to eject vehicle
7 | private _objectiveGroup = createGroup WEST; // The unit group
8 | private _transportVehicle = nil; // The vehicle the group is usin
9 | private _objective = nil; // The objective for the group
10 |
11 | // Creat the units
12 | br_fnc_createBombUnits = {
13 | _transportVehicle = (selectrandom _vehicleChance) createVehicle getMarkerPos _spawnPad;
14 | [_transportVehicle] call fn_addToZeus;
15 | // Delete if existing group
16 | //_objectiveGroup = [WEST, _types select 0, _types select 2, _types select 1, selectrandom _unitChance, getMarkerPos _spawnPad] call fn_spawnGroup;
17 | while {{(alive _x)} count (units _objectiveGroup) == 0} do {
18 | _rNumber = floor (random ((count _unitChance) + (count br_custom_unit_compositions_friendly) + br_custom_units_chosen_offset));
19 | if (((count _unitChance) != 0) && (_rNumber <= (count _unitChance))) then {
20 | _objectiveGroup = [WEST, br_unit_type_compositions_friendly select 0, br_unit_type_compositions_friendly select 2, br_unit_type_compositions_friendly select 1, _unitChance, getMarkerPos _spawnPad, []] call fn_selectRandomGroupToSpawn;
21 | } else {
22 | _objectiveGroup = [getMarkerPos _spawnPad, WEST, selectrandom br_custom_unit_compositions_friendly] call BIS_fnc_spawnGroup;
23 | };
24 | };
25 | (leader _objectiveGroup) moveInAny _transportVehicle;
26 | { if (_x != (leader _objectiveGroup)) then { if (!(_x moveInAny _transportVehicle)) then { deleteVehicle _x; }; }; } forEach (units _objectiveGroup);
27 | // Give each unit a sactelCharge
28 | {
29 | _oldPack = unitBackpack _x; removeBackpack _x; deleteVehicle _oldPack;
30 | _x addBackpack "B_Carryall_ocamo"; _x addMagazines ["SatchelCharge_Remote_Mag", 1];
31 | _x setBehaviour "SAFE";
32 | [_x] call fn_objectInitEvents;
33 | } forEach (units _objectiveGroup);
34 | [_transportVehicle, _spawnPad] call fn_setDirectionOfMarker;
35 | //br_friendly_objective_groups pushBack _objectiveGroup;
36 | //sleep 5;
37 | waitUntil { sleep 1; {_x in _transportVehicle} count (units _objectiveGroup) == {(alive _x)} count (units _objectiveGroup) || !(alive _transportVehicle) || {({(alive _x)} count (units _objectiveGroup) == 0)} };
38 | _transportVehicle setUnloadInCombat [FALSE, FALSE];
39 | // Wait a second
40 | sleep 1;
41 | };
42 |
43 | // Tell the unit to touchoff the bomb
44 | br_fnc_placeBomb = {
45 | private _bomb = "satchelcharge_remote_ammo" createVehicle (getpos (_objective select 1));
46 | _bomb setDamage 1;
47 | (_objective select 1) setDamage 1;
48 | };
49 |
50 | br_near_players = {
51 | private _nearAPlayer = FALSE;
52 | { if (getpos (_objective select 1) distance (getpos _x) < _getOutOfVehicleRadius ) then { _nearAPlayer = TRUE; }; } forEach allPlayers;
53 | _nearAPlayer;
54 | };
55 |
56 | br_fn_killGivenGroup = {
57 | private _group = _this select 0;
58 | timeToComplete = time + 600;
59 | {
60 | _wp = _objectiveGroup addWaypoint [getpos _x, 0];
61 | _wp setWaypointType "DESTROY";
62 | _wp setWaypointSpeed "FULL";
63 | waitUntil { sleep 5; ((timeToComplete < time) && !([] call br_near_players)) || !(alive _x) || {({(alive _x)} count (units _objectiveGroup) == 0)}; };
64 | if (timeToComplete < time) then { _x setDamage 1; }
65 | call br_fnc_deleteWayPoints;
66 | } forEach (units _group);
67 | };
68 |
69 | // Kill all groups at objective
70 | br_fnc_goKillPeople = {
71 | private _groups = _this select 0;
72 | if (count _groups > 0) then {
73 | {
74 | [_x] call br_fn_killGivenGroup;
75 | } forEach (_groups);
76 | };
77 | };
78 |
79 | // Do the objectives
80 | br_fnc_DoObjective = {
81 | private _obj = _this select 0;
82 | switch (_obj) do {
83 | case "Destory & Kill": { [_objective select 2] call br_fnc_goKillPeople; call br_fnc_placeBomb; };
84 | case "Destory": { call br_fnc_placeBomb; };
85 | case "Kill": { [_objective select 2] call br_fnc_goKillPeople; };
86 | default { hint "Objective Error in command group"};
87 | };
88 | };
89 |
90 | // Find objective
91 | br_fnc_findObjective = {
92 | private _foundObjective = FALSE;
93 | // Try find an objective
94 | while {!_foundObjective} do {
95 | _objective = selectRandom br_objectives;
96 | if ( (_objective select 4) ) then { _foundObjective = TRUE; }
97 | else { sleep 10; };
98 | };
99 | _foundObjective
100 | };
101 |
102 | // Delete waypoints
103 | br_fnc_deleteWayPoints = {
104 | while {(count (waypoints _objectiveGroup)) > 0} do {
105 | deleteWaypoint ((waypoints _objectiveGroup) select 0);
106 | };
107 | };
108 |
109 | // AI script for the group
110 | br_fnc_runRadioBombUnit = {
111 | call br_fnc_createBombUnits;
112 | while {TRUE} do {
113 | waitUntil { sleep 5; !br_zone_taken && {count br_objectives > 0} || {(alive _x)} count (units _objectiveGroup) == 0 || !(alive _transportVehicle)};
114 | // Find a objective
115 | call br_fnc_findObjective;
116 | missionNamespace setVariable [(format ["br_objective_%1", _objective select 0]), FALSE];
117 | // Get position to exit vehicle
118 | if (br_friendlies_use_transport) then {
119 | br_friendly_objective_groups pushBack _objectiveGroup;
120 | private _getPos = [getpos (_objective select 1), _getOutOfVehicleRadius, 50, 1, 0, 60, 0] call BIS_fnc_findSafePos;
121 | while {count _getPos > 2} do {
122 | _getPos = [getpos (_objective select 1), 0, 50, 1, 0, 60, 0] call BIS_fnc_findSafePos;
123 | sleep 0.1;
124 | };
125 | private _wp = _objectiveGroup addWaypoint [_getPos, 0];
126 | _wp setWaypointType "GETOUT";
127 | _wp setWaypointStatements ["true","deleteWaypoint [group this, currentWaypoint (group this)]"];
128 | // Wait until group is within a given range
129 | waitUntil { sleep 5; (count (waypoints _objectiveGroup)) == 0 || missionNamespace getVariable (_objective select 5) || (missionNamespace getVariable (format ["br_objective_%1", _objective select 0])) || !(alive _transportVehicle) || {(alive _x)} count (units _objectiveGroup) == 0};
130 | _transportVehicle setUnloadInCombat [TRUE, TRUE];
131 | call br_fnc_deleteWayPoints;
132 | } else {
133 | [_transportVehicle, FALSE] call fn_ejectUnits;
134 | call br_fnc_deleteWayPoints;
135 | };
136 | // Tell group to get out of transport vehicle
137 | if (!(missionNamespace getVariable (_objective select 5))) then {
138 | //{[_x] allowGetIn false; unassignVehicle _x; _x action ["Eject", _transportVehicle]; _x action ["GetOut", _transportVehicle];} forEach (crew _transportVehicle);
139 | waitUntil { sleep 2; missionNamespace getVariable (_objective select 5) || (missionNamespace getVariable (format ["br_objective_%1", _objective select 0])) || ({_x in _transportVehicle} count (units _objectiveGroup) == 0) || {(alive _x)} count (units _objectiveGroup) == 0 };
140 | // Move the units to the objective
141 | private _getPos = [getpos (_objective select 1), 0, 50, 1, 0, 60, 0] call BIS_fnc_findSafePos;
142 | while {count _getPos > 2} do {
143 | _getPos = [getpos (_objective select 1), 0, 50, 1, 0, 60, 0] call BIS_fnc_findSafePos;
144 | sleep 0.1;
145 | };
146 | private _wp = _objectiveGroup addWaypoint [_getPos, 0];
147 | _wp setWaypointType "MOVE";
148 | _wp setWaypointBehaviour "AWARE";
149 | _wp setWaypointStatements ["true",(format ["deleteWaypoint [group this, currentWaypoint (group this)]; br_objective_%1 = TRUE;", _objective select 0])];
150 | timeToComplete = time + 600;
151 | waitUntil { sleep 2; ((timeToComplete < time) && !([] call br_near_players)) || missionNamespace getVariable (_objective select 5) || (missionNamespace getVariable (format ["br_objective_%1", _objective select 0])) || {(alive _x)} count (units _objectiveGroup) == 0; };
152 | // Check if objective is not completed
153 | if (!(missionNamespace getVariable (_objective select 5)) && (missionNamespace getVariable (format ["br_objective_%1", _objective select 0]))) then {
154 | // Wait untill group has reached radio tower
155 | waitUntil { sleep 1; (((timeToComplete < time) && !([] call br_near_players)) || (missionNamespace getVariable (format ["br_objective_%1", _objective select 0])) || missionNamespace getVariable (_objective select 5) || {(alive _x)} count (units _objectiveGroup) == 0); };
156 | // Touch off bomb at radio tower if still alive and radio tower not already blown up
157 | if (({(alive _x)} count (units _objectiveGroup) > 0) && {!(missionNamespace getVariable (_objective select 5))} && {(missionNamespace getVariable (format ["br_objective_%1", _objective select 0]))}) then
158 | {
159 | [(_objective select 3)] call br_fnc_DoObjective;
160 | };
161 | };
162 | };
163 | if (count br_objectives == 0 || ({(alive _x)} count (units _objectiveGroup) == 0)) then {
164 | { deleteVehicle _x; } forEach (units _objectiveGroup);
165 | deleteVehicle _transportVehicle;
166 | deleteGroup _objectiveGroup;
167 | br_friendly_objective_groups deleteAt (br_friendly_objective_groups find _objectiveGroup);
168 | call br_fnc_createBombUnits;
169 | };
170 | call br_fnc_deleteWayPoints;
171 | };
172 | };
173 |
174 | [] call br_fnc_runRadioBombUnit;
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/Description.ext:
--------------------------------------------------------------------------------
1 | title = "Evannex";
2 | author = "Bradenm1";
3 | onLoadName = "Evannex";
4 | onLoadMission = "An AI vs AI gamemode";
5 | loadScreen = "textures\mission_thumbnail.paa";
6 |
7 | corpseManagerMode = 3;
8 | corpseLimit = 10;
9 | corpseRemovalMinTime = 10;
10 | corpseRemovalMaxTime = 20;
11 | minPlayerDistance = 50;
12 |
13 | wreckManagerMode = 1;
14 | wreckLimit = 10;
15 | wreckRemovalMinTime = 15;
16 | briefing = -1;
17 |
18 | reviveMode = 1;
19 | aiKills = 1;
20 | enableItemsDropping = 0;
21 |
22 | disabledAI = 1;
23 | respawn = "base";
24 | respawnButton = 1;
25 | respawnDelay = 10;
26 |
27 | class Header {
28 | gameType = Coop; // Game type
29 | minPlayers = 1; // minimum number of players the mission supports
30 | maxPlayers = 32; // maximum number of players the mission supports
31 | };
32 |
33 | // Server params
34 | class Params {
35 | class FriendlyFaction {
36 | title = "Friendly Faction";
37 | values[] = {0,1,2,3,4,5};
38 | texts[] = {"BLU_F", "OPF_F", "RHSUSAF", "RHSAFRF", "RHSSAF", "RHSGREF"};
39 | default = 0;
40 | };
41 | class EnemyFaction {
42 | title = "Enemy Faction";
43 | values[] = {0,1,2,3,4,5};
44 | texts[] = {"BLU_F", "OPF_F", "RHSUSAF", "RHSAFRF", "RHSSAF", "RHSGREF"};
45 | default = 1;
46 | };
47 | class Time {
48 | title = "Time";
49 | values[] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24};
50 | default = 12;
51 | };
52 | class ViewDistance {
53 | title = "View distance (in metres)";
54 | values[] = {200,300,500,1000,1500,1600,2000,2500,3000,3500,4000,4500,5000,12000,40000};
55 | default = 1600;
56 | };
57 | class AISkill {
58 | title = "AI Skill"; // Param name visible in the list
59 | values[] = {0,1,2}; // Values; must be integers; has to have the same number of elements as 'texts'
60 | texts[] = {"Recruit","Regular","Veteran"}; // Description of each selectable item
61 | default = 2; // Default value; must be listed in 'values' array, otherwise 0 is used
62 | // Default values that are not whole numbers do not work. Param will default to 0 (or 1 if defined)
63 | };
64 | class NumberFriendlyGroups {
65 | title = "Max Friendly Groups"; // Param name visible in the list
66 | values[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 17, 20, 25, 30, 40, 50, 100}; // Values; must be integers; has to have the same number of elements as 'texts'
67 | default = 8; // Default value; must be listed in 'values' array, otherwise 0 is used
68 | // Default values that are not whole numbers do not work. Param will default to 0 (or 1 if defined)
69 | };
70 | class NumberEnemyGroups {
71 | title = "Max Enemy Groups"; // Param name visible in the list
72 | values[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 17, 20, 25, 30, 40, 50, 100}; // Values; must be integers; has to have the same number of elements as 'texts'
73 | default = 10; // Default value; must be listed in 'values' array, otherwise 0 is used
74 | // Default values that are not whole numbers do not work. Param will default to 0 (or 1 if defined)
75 | };
76 | class NumberEnemySpecialGroups {
77 | title = "Max Special Enemy Groups"; // Param name visible in the list
78 | values[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 17, 20, 25, 30, 40, 50, 100}; // Values; must be integers; has to have the same number of elements as 'texts'
79 | default = 7; // Default value; must be listed in 'values' array, otherwise 0 is used
80 | // Default values that are not whole numbers do not work. Param will default to 0 (or 1 if defined)
81 | }
82 | class MinEnemyGroupsForCapture {
83 | title = "Minimum Enemy Groups For Zone Capture"; // Param name visible in the list
84 | values[] = {0, 1, 2, 3, 4, 5, 10, 15, 20, 25, 30, 40, 50, 100}; // Values; must be integers; has to have the same number of elements as 'texts'
85 | default = 3; // Default value; must be listed in 'values' array, otherwise 0 is used
86 | // Default values that are not whole numbers do not work. Param will default to 0 (or 1 if defined)
87 | }
88 | class MinAIDistanceForDeleteion {
89 | title = "Minimum AI Distance For Deleteion"; // Param name visible in the list
90 | values[] = {100, 500, 1000, 1500, 2000, 2500, 3000, 3500, 4000, 5000, 10000, 99999999}; // Values; must be integers; has to have the same number of elements as 'texts'
91 | default = 1500; // Default value; must be listed in 'values' array, otherwise 0 is used
92 | // Default values that are not whole numbers do not work. Param will default to 0 (or 1 if defined)
93 | }
94 | class ZoneRadius {
95 | title = "Zone Radius";
96 | values[] = {1,5,10,15, 20, 30, 40, 50, 55, 60, 70, 80, 90, 100, 200, 400, 500, 700, 800, 1000};
97 | default = 40;
98 | };
99 | /*class Checks {
100 | title = "Number of checks (Finds zones, spawners..)";
101 | values[] = {10, 50, 100, 200, 300, 400, 500, 1000};
102 | // When 'texts' are missing, values will be displayed directly instead
103 | default = 1000;
104 | };*/
105 | class HQEnabled {
106 | title = "HQ Enabled";
107 | values[] = {0,1};
108 | texts[] = {"Disabled","Enabled"};
109 | default = 1;
110 | };
111 | class FriendlyAIEnabled {
112 | title = "Friendly AI Enabled";
113 | values[] = {0,1};
114 | texts[] = {"Disabled","Enabled"};
115 | default = 1;
116 | };
117 | class FriendlyMarkEnemy {
118 | title = "Friendly Units Mark Enemy Positions?";
119 | values[] = {0,1};
120 | texts[] = {"Disabled","Enabled"};
121 | default = 1;
122 | };
123 | class ZeusSeesAI {
124 | title = "Allow Zeus to see spawned AI";
125 | values[] = {0,1};
126 | texts[] = {"Disabled","Enabled"};
127 | default = 1;
128 | }
129 | class Fatigue {
130 | title = "Player Fatigue";
131 | values[] = {0,1};
132 | texts[] = {"Disabled","Enabled"};
133 | default = 0;
134 | };
135 | class Stamina {
136 | title = "Player Stamina";
137 | values[] = {0,1};
138 | texts[] = {"Disabled","Enabled"};
139 | default = 0;
140 | };
141 | class CustomAim {
142 | title = "More Steady Aim";
143 | values[] = {0,1};
144 | texts[] = {"Disabled","Enabled"};
145 | default = 1;
146 | };
147 | class SideObjectives {
148 | title = "Enabled Side Objectives";
149 | values[] = {0,1};
150 | texts[] = {"Disabled","Enabled"};
151 | default = 1;
152 | };
153 | class RandomMines {
154 | title = "Enabled Random Mines";
155 | values[] = {0,1};
156 | texts[] = {"Disabled","Enabled"};
157 | default = 1;
158 | };
159 | class NSides {
160 | title = "Number of Side Missions";
161 | values[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
162 | texts[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
163 | default = 1;
164 | };
165 | class NGarrisons {
166 | title = "Number of Garrisons";
167 | values[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
168 | texts[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
169 | default = 2;
170 | };
171 | class PlaceZoneRandomly {
172 | title = "Place Zone Randomly";
173 | values[] = {0,1};
174 | texts[] = {"Disabled","Enabled"};
175 | default = 0;
176 | };
177 | class RandomSideLocations {
178 | title = "Place Side Mission Randomly";
179 | values[] = {0,1};
180 | texts[] = {"Disabled","Enabled"};
181 | default = 1;
182 | };
183 | class ZoneSideEnabled {
184 | title = "Zone Sides Enabled";
185 | values[] = {0,1};
186 | texts[] = {"Disabled","Enabled"};
187 | default = 1;
188 | };
189 | class VirutalSupport {
190 | title = "Virutal Support";
191 | values[] = {0,1};
192 | texts[] = {"Disabled","Enabled"};
193 | default = 0;
194 | };
195 | class FriendliesUseTransport {
196 | title = "Friendlies Use Transport";
197 | values[] = {0,1};
198 | texts[] = {"Disabled","Enabled"};
199 | default = 1;
200 | };
201 | class ObjectivesRequireClearedSpace {
202 | title = "Objectives Require Cleared Space";
203 | values[] = {0,1};
204 | texts[] = {"Disabled","Enabled"};
205 | default = 1;
206 | };
207 | class MaxUserVehicles {
208 | title = "Max User Vehicles"; // Param name visible in the list
209 | values[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 17, 20, 25, 30, 40, 50, 100}; // Values; must be integers; has to have the same number of elements as 'texts'
210 | default = 10; // Default value; must be listed in 'values' array, otherwise 0 is used
211 | // Default values that are not whole numbers do not work. Param will default to 0 (or 1 if defined)
212 | };
213 | class MaxFriendlyGroupSize {
214 | title = "Max Friendly Group Unit Size";
215 | values[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
216 | texts[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
217 | default = 8;
218 | }
219 |
220 | //#define WEATHER_DEFAULT 25
221 | //#define DEBUGCONSOLE_DEFAULT 0
222 | //#define TIMEACCELERATION_DEFAULT 1
223 |
224 | //#include "\a3\functions_f\Params\paramWeather.hpp"
225 | //#include "\a3\functions_f\Params\paramDebugConsole.hpp"
226 | //#include "\a3\Functions_F_MP_Mark\Params\paramTimeAcceleration.hpp"
227 | };
228 |
229 | class CfgFunctions
230 | {
231 | #include "SBGF\cfgfunctions.hpp"
232 | };
233 |
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/savedassets/small_bases.sqf:
--------------------------------------------------------------------------------
1 | [
2 | [["Land_WoodenLog_F",[1.07129,-0.955078,-0.00138474],77.2196],["Land_Campfire_F",[1.14063,0.96875,0.0295668],26.91],["Land_TinContainer_F",[1.42676,-0.582031,-0.000266075],237.558],["Land_Camping_Light_F",[1.00684,-1.04492,-0.00442123],76.5047],["Land_WoodenBox_F",[-0.582031,2.6582,0.000217438],135.188],["Land_Axe_F",[-2.30664,-1.76953,-0.00481892],248.026],["Land_CanisterFuel_F",[-2.3584,-2.85742,-0.00136948],35.7561],["Land_WoodPile_F",[-3.21973,-2.09375,0.00680637],1.20349],["Land_Canteen_F",[4.33984,-2.92773,-0.020875],17.1193],["Land_Basket_F",[5.03027,-4.31445,-0.00144577],161.779],["Land_TentA_F",[6.51855,1.0918,0.00547409],87.4059],["Land_TentA_F",[6.06836,-2.73633,0.00526237],118.201],["Land_TentA_F",[5.54883,4.67773,0.00543118],57.6669],["Land_Sack_F",[6.03516,-4.11328,-0.0025053],18.1454],["Land_BakedBeans_F",[0.142578,10.084,-0.00141048],37.8012],["Land_RiceBox_F",[0.356445,10.0938,-0.00139904],352.615],["Land_DuctTape_F",[-2.63477,9.75586,-0.0014267],99.5906],["Land_CanisterPlastic_F",[-3.25977,9.57031,-0.00134277],196.45],["Land_GasCooker_F",[2.67871,9.76953,-0.00141716],130.591],["Land_CerealsBox_F",[1.12207,10.1016,-0.00139999],92.0207],["Land_CerealsBox_F",[0.938477,10.2109,-0.00140095],67.7811],["Land_Shovel_F",[-2.06152,10.0762,0.0229559],36.5465],["Land_BottlePlastic_V2_F",[0.418945,10.3184,-0.00155735],73.7823],["Land_RiceBox_F",[0.168945,10.332,-0.00140858],50.8427],["Land_Canteen_F",[1.99316,10.2813,-0.00138855],340.633],["Land_CanisterPlastic_F",[-2.79102,10.4648,-0.00134087],243.848],["Land_Sacks_heap_F",[3.20898,10.5313,0.00529099],22.6578],["Land_BagFence_Round_F",[-3.49121,10.9434,-0.0146694],136.007],["Land_BagFence_Long_F",[-0.654297,11.3945,0.0239439],358.245],["Land_BagFence_Short_F",[9.28223,-6.64648,0.00858021],259.245],["Land_BagFence_Short_F",[7.30371,-8.86914,-0.00410652],179.445],["Land_BagFence_Long_F",[2.26074,11.4766,0.0374737],358.245],["Land_BagFence_Round_F",[5.00488,11.082,-0.00682926],222.777],["Land_BagFence_Short_F",[8.84668,-8.08789,-0.00895214],131.63],["Land_BagFence_Round_F",[-9.375,-8.59961,0.0162601],4.48328],["Land_BagFence_Round_F",[-11.0381,-6.58008,-0.0119972],93.8593]],
3 | [["Land_Sleeping_bag_F",[0.282227,-0.912109,-0.00237751],317.35],["Land_FMradio_F",[-0.69043,-1.51367,-0.00146294],171.781],["Land_Garbage_square5_F",[-0.561523,1.84766,-0.00021553],189.408],["Land_Campfire_F",[-1.66602,1.50586,0.032712],209.891],["Land_Sleeping_bag_brown_F",[1.60449,0.957031,0.00481129],281.452],["Land_Gloves_F",[0.885742,2.18945,-0.00138187],281.034],["Land_BakedBeans_F",[0.25293,2.36133,-0.00145626],266.51],["Land_Axe_F",[1.0752,2.27148,-0.004632],24.8821],["Land_Sleeping_bag_F",[-1.60059,-1.88281,-0.00605297],357.809],["Land_WoodPile_F",[2.12695,2.80273,-0.00228596],277.738],["Land_MetalWire_F",[0.907227,4.02148,-0.00146294],207.207],["Land_Camping_Light_F",[-3.56543,2.49023,-0.0031786],178.612],["Land_TinContainer_F",[-4.11133,-1.45898,-0.000237465],269.245],["Land_CampingChair_V1_F",[-4.08496,1.85156,0.00164986],280.354],["Land_CampingChair_V1_F",[-2.05176,4.11523,0.00165749],346.681],["Land_CanisterPlastic_F",[-4.44629,-1.53125,-0.00142384],78.4126],["Land_CanisterPlastic_F",[-4.79395,-0.970703,-0.00143051],209.03],["Land_Can_V1_F",[-1.18262,6.10156,-0.00141621],252.481],["Land_BakedBeans_F",[-1.00586,6.13867,-0.00142765],328.906],["Land_Can_V2_F",[-1.17383,6.22266,-0.00142765],186.893],["Land_Canteen_F",[-0.999023,6.30469,-0.00138187],41.0492],["Land_Bucket_F",[2.38281,6.14453,-0.0013504],246.272],["Land_BakedBeans_F",[-0.417969,6.79688,-0.00141525],96.2595],["Land_CerealsBox_F",[-0.286133,6.9043,-0.00135708],212.178],["Land_Sacks_heap_F",[-4.95605,7.55664,-0.0014267],93.1118],["Land_TentDome_F",[2.48145,9.18555,-0.00572014],280.81],["Land_TentDome_F",[-1.84473,9.80469,-0.00369453],267.031],["Land_CanisterPlastic_F",[2.45801,-10.8574,-0.00127411],99.8662],["Land_BagFence_Short_F",[-1.31543,-11.791,0.00749207],224.336],["Land_BagFence_Short_F",[2.53223,-12.0039,0.0190773],315.165],["Land_BagFence_Round_F",[0.563477,-13.1738,0.00586128],2.52777],["Land_Basket_F",[11.6787,5.96094,6.00815e-005],137.234],["Land_CerealsBox_F",[10.6885,8.30664,-0.00066185],161.616],["Land_Razorwire_F",[-12.0029,-7.82813,-0.0152721],40.7118],["Land_BagFence_Round_F",[13.1924,6.69531,0.0284271],282.554],["Land_BagFence_Round_F",[11.8057,9.12891,-0.0760994],195.948],["Land_BagFence_Round_F",[-13.4482,6.66016,0.0103884],29.3438],["Land_Razorwire_F",[10.4658,-10.584,0.414007],316.292],["Land_Razorwire_F",[-15.4932,-0.818359,-0.0549603],72.4336],["Land_BagFence_Round_F",[-11.624,10.2715,-0.0136042],200.141],["Land_Razorwire_F",[15.1885,-4.35352,0.13454],284.578],["Land_BagFence_Round_F",[-14.1982,9.28516,-0.0255947],113.641]],
4 | [["Land_Campfire_F",[0.268555,-0.339844,0.0238438],27.421],["Land_Matches_F",[-0.306641,0.503906,-0.00164032],5.04147],["Land_DuctTape_F",[-1.98047,-1.03906,-0.00165939],33.5587],["Land_Garbage_square3_F",[0.078125,-2.41406,0.000915527],198.821],["Land_Canteen_F",[-2.30762,-1,-0.00162697],73.5094],["Land_Axe_fire_F",[-1.74023,-2.34766,-0.0050087],5.82855],["Land_PainKillers_F",[2.8418,0.802734,-0.00164604],5.05222],["Land_Canteen_F",[2.96973,0.546875,-0.00163841],43.1024],["Land_Sleeping_bag_brown_F",[-2.53711,-0.242188,-0.00622177],91.1087],["Land_Sleeping_bag_brown_F",[-1.7793,1.84961,-0.000364304],135.534],["Land_Ammobox_rounds_F",[-1,2.9707,-0.00178814],36.7424],["Land_Sleeping_bag_F",[0.482422,2.59766,0.00267315],182.544],["Land_BakedBeans_F",[0.273438,-3.18945,-0.00164604],333.796],["Land_BakedBeans_F",[0.441406,-3.20508,-0.00164223],30.5862],["Land_Ammobox_rounds_F",[-1.39258,3.01758,-0.00179768],80.3249],["Land_Sleeping_bag_F",[2.52344,1.47852,0.00913715],230.32],["Land_WoodPile_F",[-1.25195,-3.24414,-0.00181484],120.173],["Land_Sleeping_bag_brown_F",[3.20313,-0.964844,-0.000113487],284.139],["Land_Sleeping_bag_F",[1.4707,-3.02148,-0.00391102],337.361],["Land_Bandage_F",[-7.69141,-1.19336,-0.00162125],294.507],["Land_Bandage_F",[-7.74609,-1.32422,-0.00161934],26.0187],["Land_ButaneCanister_F",[-7.83887,-1.43164,-0.00160027],4.30548],["Land_GasCanister_F",[-7.87598,-1.20898,-0.00161362],39.9283],["Land_CanisterPlastic_F",[-7.80273,-2.0625,-0.00154877],210.409],["Land_Sacks_heap_F",[8.41016,1.75391,-0.0014677],27.14],["Land_WoodenBox_F",[8.66797,-1.30859,-0.00164223],290.321],["Land_BagFence_Short_F",[-9.16992,1.03711,0.00908756],358.922],["Land_BagFence_Short_F",[-9.11133,-2.64648,0.00989246],1.99283],["Land_WoodenBox_F",[9.98242,-0.304688,-0.00164032],250.213],["Land_CratesShabby_F",[9.92578,1.68555,-0.000764847],358.386],["Land_BagFence_Round_F",[-11.3398,0.613281,-0.02071],131.316],["Land_BagFence_Round_F",[-11.2813,-2.1543,-0.00391483],43.7192]],
5 | [["Land_HBarrier_5_F",[-0.498047,-3.70703,-0.00287771],218.506],["Land_HBarrier_5_F",[-2.35547,3.37109,-0.00287771],127.37],["Land_Cargo_House_V1_F",[5.82813,-0.726563,-0.00287771],37.6699],["CamoNet_BLUFOR_open_Curator_F",[-0.958984,-6.25781,-0.00287795],37.6699],["Land_HBarrier_5_F",[-1.58203,4.24609,-0.00287771],306.67],["Land_Loudspeakers_F",[2.75977,6.19336,-0.00287795],307.287],["Land_BagFence_End_F",[-7.30273,2.4668,-0.00387764],32.6901],["Land_BagFence_Long_F",[-4.58203,6.99805,-0.00387788],32.0698],["Land_HBarrierBig_F",[4.72266,7.19727,-0.00287795],216.67],["Land_BagFence_Long_F",[-6.1875,-6.32617,-0.00531673],218.67],["Land_BagFence_End_F",[-4.33984,-7.84961,-0.00387764],37.6699],["Land_BagFence_Long_F",[-0.125,9.35742,-0.00387788],35.3246],["Land_Pallet_MilBoxes_F",[-9.43555,-0.392578,-0.00287771],37.6699],["Land_BagFence_Long_F",[-9.41406,3.76953,-0.00387788],213.69],["Land_PaperBox_open_full_F",[-10.127,2.35547,-0.00287771],37.6699],["Land_BagFence_End_F",[-0.996094,-10.1895,-0.00387764],216.67],["Land_HBarrier_Big_F",[-10.5938,-2.76563,-0.00287795],218.67],["Land_HBarrier_Big_F",[10.498,-3.44727,-0.00287795],128.67],["Land_PaperBox_open_empty_F",[-11.2852,0.740234,-0.00287771],37.6699],["Land_HBarrier_Big_F",[5.24609,-10.0664,-0.00287795],128.67],["Land_HBarrier_Big_F",[11.2578,2.09961,-0.00287795],40.6699],["Land_BagFence_Long_F",[0.921875,-11.6328,-0.00387788],214.67],["Land_HBarrier_Big_F",[-7.88086,9.81055,-0.00287795],126.67],["Land_BagFence_Long_F",[-4.32813,12.1836,-0.00387788],32.2847],["Land_HBarrier_Big_F",[-12.7617,3.03516,-0.00287795],124.67],["CamCurator",[-13.8789,-19.25,19.7933],32.3149]],
6 | [["Land_HBarrier_5_F",[0.335938,-3.28906,-0.00287771],269.333],["Land_BagFence_Long_F",[2.53516,-3.68164,-0.00387788],182.413],["Land_HBarrier_5_F",[0.277344,2.72656,-0.00287771],269.333],["CamoNet_BLUFOR_open_Curator_F",[3.41797,-5.16016,-0.00287795],0],["Land_Cargo_House_V1_F",[5.41016,3.36523,-0.00287771],0],["Land_BagFence_Long_F",[5.47656,-3.82031,-0.00387788],182.413],["Land_Cargo_Patrol_V1_F",[-6.0625,3.74805,-0.00287795],177],["Land_BagFence_Long_F",[-0.679688,-8.41016,-0.00387788],181.819],["Land_BagFence_End_F",[1.71484,-8.48438,-0.00387764],0],["Land_HBarrierBig_F",[-0.230469,8.84375,-0.00287795],179],["Land_Pallet_MilBoxes_F",[-6.87695,-5.69727,-0.00287771],0],["Land_PaperBox_open_full_F",[-9.10352,-3.94531,-0.00287771],0],["Land_BagFence_End_F",[5.78906,-8.29492,-0.00387764],179.891],["Land_HBarrier_Big_F",[-6.3418,-8.2832,-0.00287795],181],["Land_PaperBox_open_empty_F",[-9.0332,-5.92969,-0.00287771],0],["Land_BagFence_Long_F",[8.18945,-8.26563,-0.00387788],177.975],["Land_HBarrier_Big_F",[10.7676,4.06836,-0.00287795],91.9795],["Land_HBarrier_Big_F",[10.6563,-4.38086,-0.00287795],91.9795],["Land_HBarrier_Big_F",[7.98047,8.92188,-0.00287795],3.17938],["Land_HBarrier_Big_F",[-8.70117,8.41992,-0.00287795],0],["Land_HBarrier_Big_F",[-11.8809,3.32813,-0.00287795],89],["Land_HBarrier_Big_F",[-11.6055,-5.01758,-0.00287795],87],["CamCurator",[-2.04492,-3.41992,25.2372],26.8199],["Eagle_F",[-1.36914,-42.5625,76.9717],198.719]],
7 | [["Land_ClutterCutter_large_F",[-1.00586,0.642578,-0.00288033],0],["Land_WoodenTable_small_F",[1.87305,0.0195313,-0.0119958],198.626],["Land_ChairWood_F",[2.23242,1.04688,-0.00143766],28.8102],["Land_PaperBox_open_empty_F",[-2.84961,-0.609375,-0.00288033],59.845],["Land_HBarrier_5_F",[2.89648,-1.40234,-0.00288033],288.738],["Land_WaterBarrel_F",[2.69336,2.86133,-0.00143886],359.95],["Land_MetalBarrel_F",[1.95898,3.4668,-0.00143743],0.539886],["CamoNet_OPFOR_big_Curator_F",[-1.22266,3.35742,-0.00288033],0],["Land_MetalBarrel_F",[2.71094,4.06836,-0.00143743],1.2182],["Land_HBarrier_5_F",[-6.19727,1.90039,-0.00288033],61.5163],["CamoNet_OPFOR_Curator_F",[-0.580078,-5.40234,-0.00288033],179.956],["Land_Sack_F",[-4.54102,3.19336,-0.00288033],0],["Land_Pallet_MilBoxes_F",[-3.74219,4.02344,-0.00288033],110.717],["Land_PowerGenerator_F",[0.865234,5.73047,-0.00288033],141.364],["Land_HBarrier_5_F",[4.17188,4.125,-0.00288033],231.307],["Land_HBarrier_3_F",[0.474609,-6.37109,-0.00288033],176.049],["Land_PaperBox_closed_F",[-3.14063,5.74414,-0.00288033],205.704],["Land_MetalBarrel_empty_F",[3.62305,-6.3418,-0.00288033],0],["Land_BagFence_Long_F",[2.41602,-6.97852,-0.00388026],0],["Land_HBarrier_5_F",[-4.74414,7.23828,-0.00288033],107.007],["Land_HBarrier_1_F",[4.54492,-6.44336,-0.00288033],0],["Land_BagFence_Long_F",[-3.75586,-6.93945,-0.00388026],0],["Land_BarrelTrash_F",[-4.8125,-6.4043,-0.00143695],0.00332642],["Land_HBarrier_5_F",[-4.12109,7.95703,-0.00288033],0],["Land_HBarrier_1_F",[-5.81055,-6.4668,-0.00288033],0],["CamCurator",[-1.60352,2.05664,24.6859],92.7859]],
8 | [["Land_Pallet_MilBoxes_F",[-0.443359,-1.31641,-0.00287771],88.4461],["Land_HBarrier_5_F",[1.42578,-2.16797,-0.00287771],269.358],["Land_Pallet_MilBoxes_F",[-0.417969,1.76758,-0.00287771],0],["CamoNet_OPFOR_open_Curator_F",[1.62305,-0.117188,-0.0435665],0],["Land_BagFence_Short_F",[-0.152344,-2.55859,-0.00287771],0],["Land_MetalBarrel_F",[2.77734,0.160156,-0.00143743],0.606232],["Land_MetalBarrel_F",[2.77539,-0.759766,-0.00143743],359.616],["Land_MetalBarrel_F",[2.80078,1.13867,-0.00143743],359.992],["Land_MetalBarrel_F",[3.48047,0.740234,-0.00143743],357.821],["Land_MetalBarrel_F",[2.77734,2.28711,-0.00143743],359.503],["Land_BagFence_Short_F",[2.81641,-2.47656,-0.00387788],0],["Land_MetalBarrel_F",[3.4082,1.74609,-0.00143743],359.22],["Land_HBarrier_5_F",[-1.05859,3.6543,-0.00287771],0],["Land_PaperBox_closed_F",[-4.63281,0.148438,-0.00287771],0],["Land_PaperBox_open_empty_F",[-4.58594,-1.42188,-0.00287771],0],["Land_CargoBox_V1_F",[-4.64648,1.74805,0.0291028],359.274],["Land_BagFence_Short_F",[-4.71094,-2.53516,-0.00387788],0],["Land_HBarrier_5_F",[-6.58203,3.61523,-0.00287771],0],["Land_HBarrier_5_F",[-6.29492,-2.18555,-0.00287771],269.358],["Land_WaterTank_F",[6.91797,0.980469,-0.00142074],268.037],["Land_WaterBarrel_F",[7.40039,-1.50586,-0.00143862],3.26099],["Land_HBarrier_5_F",[4.39258,3.6543,-0.00287771],0],["Land_BagFence_Short_F",[7.20117,-2.50977,-0.00387788],0],["Land_HBarrier_5_F",[8.82813,-2.09961,-0.00287771],269.358],["CamCurator",[-1.4668,2.05859,24.6859],92.7859],["Eagle_F",[0.398438,15.3691,76.8202],274.933]],
9 | [["Land_Scrap_MRAP_01_F",[-1.40234,0.417969,-0.00143886],354.33],["Land_ClutterCutter_large_F",[-0.822266,3.19727,-0.00143886],0],["CamoNet_INDP_big_Curator_F",[-0.914063,2.94531,-0.00143886],10.1089],["Land_WheelieBin_01_F",[3.26172,2.20703,-0.00142527],92.9104],["Land_ClutterCutter_large_F",[-0.929688,-4.53516,-0.00143886],0],["Land_Tyre_F",[3.41602,3.13086,-0.0057416],0.960449],["Land_MetalBarrel_F",[-4.52539,1.28125,-0.00243759],359.958],["Land_HBarrier_1_F",[4.66406,-0.03125,-0.00143886],90.84],["Land_HBarrier_1_F",[4.67188,-1.4375,-0.00143886],90.84],["Land_MetalBarrel_F",[-4.46094,2.35547,-0.00143743],359.946],["Land_GasTank_02_F",[3.49219,3.77344,-0.00140262],359.227],["Land_Tyre_F",[-3.37695,4.12305,-0.0057416],0.0437012],["Land_WeldingTrolley_01_F",[0.955078,5.38086,-0.00143909],91.7979],["Land_Tyre_F",[-4.19141,3.63281,-0.0057416],0.0549622],["Land_Hammer_F",[-0.826172,5.44531,-0.0409029],243.498],["Land_GasTank_02_F",[3.45508,4.36328,-0.00140262],359.316],["Land_ExtensionCord_F",[-0.0292969,5.68555,-0.00143909],0.258026],["Land_CncBarrier_stripes_F",[4.21484,-3.88086,-0.00143886],0],["Land_HBarrier_1_F",[-5.80664,-0.0449219,-0.00143886],90.84],["Land_HBarrier_5_F",[4.79688,5.61523,-0.00143886],90.9838],["Land_Workbench_01_F",[-1.91016,5.55273,-0.00243711],359.299],["Land_PortableLight_double_F",[2.85547,5.19922,-0.00143886],33.2272],["Land_HBarrier_1_F",[-5.83984,-1.24219,-0.00143886],90.84],["Land_Gloves_F",[-1.66992,5.79297,0.812379],91.0959],["Land_PortableLight_double_F",[-3.96094,5.02344,-0.00143886],339.638],["Land_HBarrier_5_F",[-5.62695,5.67969,-0.00143886],90.9838],["Land_CncBarrier_stripes_F",[-5.75781,-3.82031,-0.00143886],0],["Land_HBarrier_5_F",[4.41797,6.9043,-0.00143886],180.927],["Land_HBarrier_5_F",[-1.23828,6.91797,-0.00143886],180.927],["Land_Grinder_F",[-2.10547,5.81445,-13.2751],175.925],["CamCurator",[-2.09961,4.27539,25.0657],96.4426],["Eagle_F",[41.1113,16.4883,76.9659],80.5562]]
10 | ];
--------------------------------------------------------------------------------
/mpmissions/Evannex.Altis/core/savedassets/bases.sqf:
--------------------------------------------------------------------------------
1 | [
2 | // Base_01
3 | [["Land_PaperBox_open_empty_F",[-3.54883,-1.07813,0.00102806],0],["CamoNet_BLUFOR_open_F",[-3.44531,-2.00391,-0.0343361],270.131],["Land_PaperBox_open_full_F",[-3.54883,-3.08789,0.00146484],0],["Land_Pallet_MilBoxes_F",[-2.90918,-5.08203,-0.00928497],0],["Land_PaperBox_closed_F",[-5.53516,-2.06641,-0.000469208],0],["Land_Cargo_House_V1_F",[0.5,11.9277,-0.00151062],0],["Land_Cargo_House_V1_F",[-6.5,11.9277,-0.00151062],0],["Land_Cargo_HQ_V1_F",[11.6982,-5.40234,0.00348854],0],["Land_Medevac_house_V1_F",[-13.6914,9.14063,-0.00151062],315],["Land_HBarrier_Big_F",[2.90723,-15.8984,0.0026474],0],["Land_HBarrier_Big_F",[-1.99219,17.834,0.000629425],0],["Land_Cargo_Patrol_V1_F",[-17.2471,-7.54883,-0.00151062],90],["Land_HBarrier_Big_F",[-8.16797,-16.5,-0.00100136],225.003],["Land_HBarrier_Big_F",[6.93262,18.0859,0.00233269],0],["Land_HBarrier_Big_F",[11.9346,-15.6582,0.00165939],0],["Land_HBarrier_Big_F",[-16.2871,-13.3887,-0.00100708],0],["Land_HBarrier_Big_F",[-11.084,17.8242,0.00461006],0],["Land_HBarrier_Big_F",[17.1006,14.5059,0.000671387],225.01],["Land_HBarrier_Big_F",[-21.5693,5.97852,-0.0024929],89.9967],["Land_HBarrier_Big_F",[-21.1738,-8.02148,0.00804138],90.0232],["Land_HBarrier_Big_F",[22.3535,3.52734,0.00663757],89.89],["Land_HBarrier_Big_F",[-18.5869,13.9844,-0.00123978],135.055],["Land_HBarrier_Big_F",[22.8516,-5.5293,0.00448227],90.0334],["Land_HBarrier_Big_F",[19.9912,-13.6348,-0.00193977],315.017]],
4 | // Base_02
5 | [["Land_Wreck_BRDM2_F",[-3.04199,-0.162109,-0.0366125],135.067],["Land_Cargo_HQ_V1_F",[9.77344,-3.8457,-0.00167942],90],["Land_Cargo_House_V1_F",[-2,11.9277,0.0203733],0],["Land_Cargo_House_V1_F",[5,11.9277,-0.00167942],0],["Land_Bulldozer_01_wreck_F",[-12.0293,-1.07813,-0.0011282],45.0099],["Land_HBarrier_Big_F",[3.90723,-14.1387,0.00186062],0],["Land_HBarrier_Big_F",[-4.03711,-14.1113,-0.00287914],0],["Land_Cargo_House_V1_F",[12,11.9277,-0.00167942],0],["Land_Cargo_Patrol_V1_F",[-12.8799,11.832,-0.00167942],135],["Land_HBarrier_Big_F",[17.0615,-2.08789,-0.00287724],270.001],["Land_HBarrier_Big_F",[2.50781,16.834,0.000460625],0],["Land_Cargo_Patrol_V1_F",[-13.8838,-10.9297,-0.00167942],45],["Land_HBarrier_Big_F",[-16.0693,6.95313,-0.00299549],89.9845],["Land_HBarrier_Big_F",[11.6807,-13.9277,0.00369549],0],["Land_HBarrier_Big_F",[-6.58398,16.8242,0.00444126],0],["Land_HBarrier_Big_F",[-11.7871,-14.3887,-0.00117588],0],["Land_HBarrier_Big_F",[-13.0273,14.043,-0.00101185],135.001],["Land_HBarrier_Big_F",[17.0771,-10.0703,-0.00236034],269.997],["Land_HBarrier_Big_F",[-17.1738,-11.0215,0.00787449],90.0232],["Land_HBarrier_Big_F",[11.4326,17.0859,0.00216389],0],["Land_HBarrier_Big_F",[17.1006,13.9355,-0.000788689],270.016]],
6 | // Base 03
7 | [["Land_ScrapHeap_2_F",[-0.551758,-2.11914,0.00587463],310.547],["Land_HBarrier_5_F",[-2.45801,2.52344,-0.131306],134.863],["Land_Garbage_square5_F",[-1.08008,-4.82813,0.00265503],160.013],["Land_GarbageBarrel_01_F",[2.13184,-4.36719,-0.00654411],335.473],["Land_ScrapHeap_1_F",[-4.91797,-6.38086,-0.00376892],130.652],["Land_HBarrier_5_F",[-6.32031,-1.40039,0.0020752],134.807],["Land_Loudspeakers_F",[-6.83887,5.10156,-0.00486755],136.827],["Land_HBarrier_5_F",[5.24316,10.2832,-0.112869],135.163],["Land_CratesShabby_F",[8.37402,-5.11523,-0.00529289],26.8406],["Land_Pallets_stack_F",[9.27539,-3.85742,-0.00653458],269.485],["Land_GarbageBags_F",[2.0918,12.5645,-0.0400238],166.6],["Land_JunkPile_F",[11.3789,-3.96094,-0.0098772],135.794],["MetalBarrel_burning_F",[-4.54004,12.0996,-0.00577927],154.21],["Land_Garbage_square5_F",[-4.79004,12.5645,-0.00670815],84.5348],["Land_HBarrier_5_F",[6.38965,11.1152,-0.0281086],227.123],["Land_HBarrier_5_F",[-10.2119,-5.33203,0.0645638],134.809],["Land_Cargo_HQ_V2_F",[-13.1377,2.82422,-0.0057354],135.541],["Land_HBarrier_5_F",[16.8906,0.265625,0.006567],227.054],["Land_HBarrier_5_F",[16.0693,7.35938,0.00713348],135.668],["Land_Garbage_square5_F",[8.69531,13.248,-0.0128937],136.806],["Land_HBarrier_5_F",[-11.209,-12.4609,0.000621796],225.024],["Land_HBarrier_3_F",[16.876,-2.09961,0.00662804],271.487],["Land_HBarrier_5_F",[5.63867,18.2266,0.0797901],135.648],["Land_HBarrier_5_F",[-7.24707,-16.4688,0.0135269],225.024],["Land_HBarrier_5_F",[12.998,-11.5098,-0.103704],134.817],["Land_HBarrier_5_F",[16.8447,-3.01367,-0.00771332],88.7651],["Land_HBarrier_5_F",[1.66113,16.1816,-0.00832939],227.077],["Land_HBarrier_5_F",[16.9131,-7.63086,0.0516663],134.81],["Land_HBarrier_5_F",[-18.3135,-5.29688,0.0772877],45.6531],["Land_HBarrier_5_F",[9.03418,-15.4238,-0.0925503],134.843],["Land_Cargo_Patrol_V2_F",[7.77246,17.8379,-0.0057373],226.92],["Land_HBarrier_5_F",[8.32813,-16.2363,-0.0998363],134.843],["Land_Cargo_Patrol_V2_F",[1.2666,-19.8164,-0.0057354],351.833],["Land_HBarrier_5_F",[-3.30957,-20.4004,-0.031023],225.028],["Land_HBarrier_3_F",[-4.00293,19.4355,0.0320492],355.001],["Land_HBarrier_3_F",[10.793,15.5234,0.035759],317.504],["Land_HBarrier_3_F",[2.42285,-19.877,0.0158653],353.418],["Land_HBarrier_5_F",[-13.8096,14.459,-0.0753403],134.778],["Land_HBarrier_5_F",[1.47559,-19.9238,-0.00323296],170.71],["Land_HBarrier_5_F",[-4.89746,19.3711,-0.0340176],172.289],["Land_HBarrier_5_F",[-9.8252,18.5059,-0.0333271],134.786],["Land_HBarrier_5_F",[-22.1719,-1.28125,0.0772877],45.6531],["Land_HBarrier_5_F",[20.0957,11.3438,0.0303345],135.669],["Land_HBarrier_5_F",[-17.6787,10.6309,0.0641289],134.781],["Land_HBarrier_5_F",[9.6582,22.1641,0.0154819],135.651],["Land_HBarrier_5_F",[13.5527,17.8438,0.009058],227.067],["Land_Sign_WarningMilitaryArea_F",[13.7666,19.4063,-0.00517845],227.32],["Land_HBarrier_5_F",[-21.6904,6.64453,-0.137802],134.838],["Land_HBarrier_5_F",[-25.8486,2.66016,-0.0166302],45.6821]],
8 | // Base 04
9 | [["Land_ToiletBox_F",[-3.92676,2.37305,0.00161362],268.572],["Land_PortableLight_double_F",[-1.14844,4.17773,-0.0924358],271.052],["Land_HBarrierBig_F",[7.2959,-4.08203,0.0143719],91.0157],["Land_HBarrierBig_F",[7.20313,4.47656,0.0142212],91.0346],["Land_HBarrierBig_F",[-7.95215,-4.35156,0.0162029],89.2291],["Land_HBarrierBig_F",[-8.32715,3.94336,0.0153427],90.023],["Land_HBarrier_5_F",[7.97266,-9.12109,0.0421352],178.314],["Land_PortableLight_double_F",[-3.60156,-4.09961,-0.261477],88.9744],["Land_HBarrier_5_F",[7.49805,9.68555,0.0763283],179.126],["Land_WaterTank_F",[11.0605,1.54492,-0.000587463],359.445],["Land_HBarrier_5_F",[-4.27832,9.12109,0.00864029],178.493],["Land_HBarrier_5_F",[-3.44336,-9.59375,0.0788002],178.861],["Land_WaterTank_F",[11.1895,-1.28711,0.00101089],359.424],["Land_Cargo_Tower_V1_F",[-1.61133,0.236328,-0.00147438],268.844],["Land_Pallets_stack_F",[-16.4326,1.87109,-0.000646591],263.829],["Land_Pallets_stack_F",[-16.4521,4.26172,-0.00127602],225.142],["Land_PaperBox_closed_F",[-7.67285,-15.8477,0.0141735],270.027],["Land_HBarrier_3_F",[15.9932,7.25195,0.0548115],244.721],["Land_HBarrier_3_F",[14.4365,-13.1582,0.0680962],129.291],["Land_PaperBox_closed_F",[-8.8584,-17.6309,0.0134602],300.469],["Land_HBarrier_3_F",[-2.31543,20.252,-0.0132465],357.596],["Land_HBarrier_3_F",[-20.0244,5.83203,0.0384693],298.347],["Land_HBarrier_3_F",[-14.3877,-16.2344,0.0368099],230.164],["Land_HBarrierBig_F",[25.4775,-5.54688,0.0122032],274.343],["Land_HBarrierBig_F",[27.2383,2.83203,0.0130329],292.294],["Land_HBarrierBig_F",[10.8164,-27.0371,0.0119648],178.689],["Land_HBarrierBig_F",[17.6045,23.4727,0.0151997],209.017],["Land_HBarrierBig_F",[-9.62988,-28.1836,0.0105667],181.952],["Land_HBarrierBig_F",[10.6729,28.5664,0.0142174],226.952],["Land_HBarrier_3_F",[27.1445,13.7129,-0.0267658],244.546],["Land_HBarrier_3_F",[22.792,-20.2891,0.0170746],129.254],["Land_HBarrierBig_F",[-14.3936,27.2969,0.012991],135.98],["Land_HBarrierBig_F",[-21.5137,22.3242,0.0103493],158.782],["Land_HBarrierBig_F",[-29.9932,-9.92383,0.0118065],260.948],["Land_HBarrierBig_F",[-32.7012,-1.74023,0.0121059],246.765],["Land_HBarrier_3_F",[-2.62109,33.1094,-0.0215597],357.597],["Land_HBarrier_3_F",[-22.9082,-24.4043,0.0279102],230.159],["Land_Razorwire_F",[33.5869,-3.75391,-0.270882],279.57],["Land_HBarrier_3_F",[-32.6025,11.0137,0.0304337],298.372],["Land_Razorwire_F",[28.1221,-23.4453,0.0726814],130.773],["Land_Razorwire_F",[20.0879,31.1348,0.316656],214.373],["Land_Razorwire_F",[12.5742,-35.7734,-0.067831],175.732],["Land_Razorwire_F",[32.2715,19.4375,0.104],63.322],["Land_Razorwire_F",[-7.66797,-37.4277,-0.123928],177.922],["Land_Razorwire_F",[-21.4102,32.7012,0.0681944],142.911],["Land_Razorwire_F",[-4.37793,39.9375,-0.183687],353.964],["Land_Razorwire_F",[-24.1865,-32.6484,-0.153818],212.611],["Land_Razorwire_F",[-39.9189,-10.543,0.270908],251.497],["Land_Razorwire_F",[-40.7246,13.3887,0.162291],298.818],["",[-56.5752,21.2266,2.8695],243.014]],
10 | // Base 05
11 | [["Land_HBarrier_5_F",[5.22559,-10.9766,-0.140451],224.2],["Land_WaterBarrel_F",[-7.91602,-6.47461,-2.67029e-005],189.665],["Land_MetalBarrel_F",[-7.77148,-7.54492,-0.00041008],297.432],["Land_HBarrier_5_F",[-1.94238,8.65039,-0.0261307],228.78],["Land_HBarrier_5_F",[-12.3545,-4.96094,0.0232162],0.823456],["Land_BarrelTrash_grey_F",[-8.20508,-8.14844,-0.000423431],6.95267],["Land_BarrelEmpty_grey_F",[-8.93555,-7.97852,-0.00043869],0.839752],["Land_HBarrier_5_F",[8.7002,6.50977,0.117586],0.564545],["Land_Cargo20_military_green_F",[13.6016,3.09375,0.00745964],180.634],["Land_Cargo20_military_green_F",[14.166,-5.55664,0.00149155],133.007],["Land_HBarrier_5_F",[5.06641,-16.6758,-0.170187],272.084],["Land_HBarrier_5_F",[-4.84082,13.3164,-0.164545],270.207],["Land_Pallets_F",[14.4248,8.19336,-0.00226688],354.878],["Land_HBarrierBig_F",[-17.3564,-4.92773,0.00527382],0.822693],["Land_WaterTank_F",[-17.3135,-8.34961,0.00030899],358.843],["Land_HBarrierBig_F",[18.2178,6.77539,0.00637245],178.681],["Land_WaterTank_F",[-17.3867,-11.6133,-0.000541687],358.841],["Land_PaperBox_closed_F",[-21.0977,0.0625,0.000276566],126.382],["Land_ToiletBox_F",[18.9521,10.4414,0.00335503],90.3875],["Land_Cargo20_military_green_F",[18.1182,-12.4355,0.0390606],20.6411],["Land_Pallets_stack_F",[-22.1309,1.96289,0.00456429],0.820618],["Land_PaperBox_closed_F",[-22.1729,-2.6875,0.000688553],274.657],["Land_PortableLight_double_F",[-14.5713,-17.2637,0.00505066],241.444],["Land_HBarrier_5_F",[-4.17871,-24.5137,0.0261841],272.07],["Land_ToiletBox_F",[18.9287,12.6523,0.00879478],90.3398],["Land_BagBunker_Large_F",[9.02051,-22.0391,0.00726128],0.821899],["Land_Cargo_Patrol_V1_F",[-9.65918,-22.7266,-0.00812721],0.104889],["Land_BagBunker_Large_F",[-8.77832,22.8945,-0.00780296],178.683],["Land_HBarrier_5_F",[4.30371,25.8477,-0.120178],90.1511],["Land_HBarrierBig_F",[-22.6064,-8.06836,-0.00182915],272.355],["Land_HBarrierBig_F",[-19.1572,-15.3242,-0.000331879],217.583],["Land_HBarrierBig_F",[23.3369,10.1133,0.000427246],90.245],["Land_Cargo_Patrol_V1_F",[9.94824,24.248,0.0186253],178.764],["Land_HBarrierBig_F",[17.8604,-18.5391,0.0038681],0.822876],["Land_HBarrierBig_F",[-17.4951,19.0664,0.00564003],178.683],["Land_Cargo20_military_green_F",[25.6719,-3.86133,0.0409832],89.5551],["Land_HBarrierBig_F",[19.6162,17.2285,-0.00188637],35.4757],["Land_PortableLight_double_F",[-9.32129,-24.3242,0.00250244],0.822998],["Land_HBarrier_5_F",[-8.4873,-25.7813,-0.0514412],0.822876],["Land_HBarrierBig_F",[-15.5596,-22.3164,0.00411797],272.569],["Land_PortableLight_double_F",[9.46777,25.709,-0.00536346],178.683],["Land_PortableLight_double_F",[-23.8018,14.1602,0.00551224],314.869],["Land_HBarrier_5_F",[8.56934,27.3066,-0.00629807],178.683],["Land_HBarrier_5_F",[-14.0303,-25.7168,0.182226],0.820984],["Land_HBarrier_5_F",[-28.5137,-0.847656,0.0954304],272.941],["Land_HBarrier_5_F",[-24.3672,-11.4824,-0.0928059],183.776],["Land_HBarrierBig_F",[15.7744,24.0977,0.00742722],90.3444],["Land_HBarrier_5_F",[-28.6572,-6.49219,-0.0225201],271.387],["Land_HBarrier_5_F",[29.0576,1.65625,0.0503702],90.8217],["Land_HBarrierBig_F",[-28.1611,8.49805,-0.00207901],90.6102],["Land_HBarrierBig_F",[-25.1494,15.7129,0.00137329],136.36],["Land_HBarrier_5_F",[29.1807,7.27344,-0.0120487],90.797],["Land_HBarrier_5_F",[14.1553,27.4785,0.00863075],178.684],["Land_HBarrierBig_F",[25.6455,-15.4668,-0.00260162],318.467],["Land_HBarrierBig_F",[29.1025,-7.88867,-0.000631332],272.81],["Land_HBarrier_5_F",[25.0127,13.2305,0.217297],1.63885]],
12 | // Base 06
13 | [["Land_Cargo_House_V1_F",[-7.39844,-2.14063,-0.041584],267.76],["Land_Cargo_House_V1_F",[6.27539,5.20703,0.0154552],87.6723],["Land_ToiletBox_F",[8.6875,0.349609,0.00214005],88.4595],["Land_GarbageBarrel_01_F",[8.26172,-3.54102,-0.00686455],164.087],["Land_ToiletBox_F",[8.78906,-2.20898,0.00855637],88.4094],["Land_PaperBox_closed_F",[-7.98242,5.22461,-0.000961304],69.6534],["Land_WaterTank_F",[-6.8457,-7.33398,0.000228882],358.428],["Land_PortableLight_double_F",[-4.33691,-8.92969,0.00204849],340.729],["Land_TTowerSmall_2_F",[5.52539,2.30273,-0.0273952],358.802],["Land_HBarrier_5_F",[10.7813,3.57813,0.117632],87.6331],["Land_PortableLight_double_F",[8.5791,-7.42969,-0.00489235],136.662],["Land_HBarrier_5_F",[7.20898,-10.1172,-0.10253],178.557],["Land_PaperBox_closed_F",[-9.91992,5.90039,-0.000875473],312.004],["Land_HBarrier_5_F",[11.2441,-6.51758,-0.0603428],267.491],["Land_HBarrier_5_F",[-3.78418,-10.4375,0.0731983],178.557],["Land_HBarrier_5_F",[-12.2051,3.53906,0.0660686],87.9712],["Land_HBarrier_5_F",[11.0811,-6.76953,0.0473347],135.876],["Land_Cargo_Patrol_V1_F",[-0.724609,12.8809,-0.0195713],178.651],["Land_HBarrier_5_F",[-11.8711,-6.56445,-0.0331516],268.18],["Land_HBarrier_5_F",[10.5254,9.1543,-0.114149],88.1381],["Land_HBarrier_5_F",[1.45996,13.1035,0.108351],178.556],["Land_HBarrier_5_F",[-8.5625,-10.4688,-0.0192261],227.108],["Land_HBarrier_5_F",[6.95703,13.2773,-0.0734062],178.556],["Land_HBarrier_5_F",[-12.4941,9.07422,-0.0630779],87.3079],["Land_HBarrier_5_F",[-8.59961,12.6973,-0.0211639],356.643],["Land_HBarrier_5_F",[7.21484,13.0664,-0.0502892],46.9642],["Land_HBarrier_1_F",[-9.36523,12.5098,0.00015831],48.1699],["Land_HBarrier_1_F",[-12.3477,9.73242,-0.000488281],42.7654],["Land_HBarrier_3_F",[2.83008,-16.9102,-0.0179882],358.802],["Land_HBarrier_3_F",[-5.84375,-17.2051,0.0816154],358.802],["Land_Razorwire_F",[17.9551,0.259766,-0.186394],265.378],["Land_HBarrier_1_F",[18.4512,-2.94141,0.00143623],173.375],["Land_Razorwire_F",[12.5645,-13.9746,0.414766],314.606],["Land_HBarrier_1_F",[-18.5898,-3.23438,-0.000867844],355.469],["Land_HBarrier_1_F",[17.6758,6.84766,-0.000944138],173.383],["Land_Razorwire_F",[-19.0098,-0.197266,-0.127333],265.389],["Land_HBarrier_1_F",[10.3965,-16.3086,0.000324249],224.658],["Land_HBarrier_1_F",[17.166,-9.41602,0.00131607],224.539],["Land_Razorwire_F",[-13.3145,-14.7129,-0.0266418],226.576],["Land_HBarrier_1_F",[-17.627,-9.76367,-0.000732422],318.374],["Land_HBarrier_1_F",[-10.8633,-17.043,0.000484467],318.35],["Land_HBarrier_3_F",[-17.0293,10.9688,0.026001],305.422],["Land_HBarrier_1_F",[-19.4668,6.18945,-0.00028038],355.467],["Land_HBarrier_3_F",[-12.5293,16.2051,0.0167198],324.758],["Land_Razorwire_F",[0.458984,20.8301,0.0660839],177.219],["Land_Razorwire_F",[14.4668,15.293,0.0855465],226.448],["Land_HBarrier_1_F",[16.8789,13.2188,-0.000432968],137.684],["Land_HBarrier_1_F",[-5.97461,20.6172,0.000370026],86.8875],["Land_HBarrier_1_F",[3.66406,21.1641,-0.000595093],86.9325],["Land_HBarrier_1_F",[10.1289,20.0547,-0.000684738],137.674]],
14 | [["Land_GarbageBags_F",[12.4766,2.24805,0.0841446],252.654],["Land_Cargo_HQ_V2_F",[-8.8418,6.89648,0.182183],179.046],["Land_Tyres_F",[7.43359,9.51367,0.0941868],246.021],["Land_Cargo_Tower_V2_ruins_F",[10.7324,-9.31641,-0.00148678],89.1787],["Land_JunkPile_F",[2.86914,12.7246,0.126101],177.116],["Land_Wreck_T72_turret_F",[-9.58887,-8.73242,0.071105],176.212],["Land_Wreck_Ural_F",[10.4727,11.2383,0.227198],351.891],["Land_Wreck_BMP2_F",[-15.4736,-3.07422,0.153996],269.347],["Land_Wreck_UAZ_F",[-3.38574,-16.2793,0.129733],158.36],["Land_HBarrierBig_F",[16.9688,1.84375,0.115066],271.094],["Land_HBarrierBig_F",[3.57031,-16.7227,0.120467],0.792419],["Land_HBarrierBig_F",[17.0283,-4.65039,0.114875],270.364],["Land_HBarrierBig_F",[-1.00195,17.6758,0.12671],181.375],["Land_Wreck_T72_hull_F",[-13.5049,-11.127,0.131454],281.823],["Land_HBarrierBig_F",[-5.37109,17.666,0.115951],181.375],["Land_HBarrierBig_F",[7.59375,17.7656,0.124765],181.375],["Land_HBarrierBig_F",[11.9805,-16.5352,0.118581],359.697],["Land_HBarrierBig_F",[-20.8516,3.54492,0.116107],271.217],["Land_HBarrierBig_F",[-20.8271,-4.83203,0.11552],271.208],["Land_HBarrierBig_F",[16.9893,-13.168,0.113999],271.978],["Land_Mil_WiredFence_F",[21.1758,3.66406,0.0248632],269.14],["Land_Mil_WiredFence_F",[21.2471,-4.21094,-0.00492191],269.14],["Land_HBarrierBig_F",[16.9287,14.3965,0.115841],271.972],["Land_HBarrierBig_F",[13.7061,17.7148,0.1157],181.89],["Land_HBarrierBig_F",[-14.9971,-16.6543,0.120269],0.79245],["Land_Mil_WiredFence_F",[1.6543,22.8789,0.255454],179.508],["Land_Mil_WiredFence_F",[2.37402,-23.4785,0.103677],359.2],["Land_Mil_WiredFence_F",[-6.14648,22.8008,0.148141],179.508],["Land_Mil_WiredFence_F",[21.1094,11.5176,0.104203],269.14],["Land_HBarrierBig_F",[-20.9639,12.0254,0.116933],271.606],["Land_Sign_WarningMilitaryArea_F",[0.536133,-24.2988,0.116515],359.892],["Land_Mil_WiredFence_F",[21.3164,-11.9844,0.0665903],269.14],["Land_HBarrierBig_F",[-20.627,-13.5078,0.123145],269.282],["Land_HBarrierBig_F",[-17.8057,17.459,0.117766],181.375],["Land_Mil_WiredFenceD_F",[9.49707,22.9238,0.226886],179.244],["Land_Mil_WiredFence_F",[-25.1182,3.37891,0.114829],89.3037],["Land_Mil_WiredFence_F",[-24.9727,-4.42969,0.146773],89.3037],["Land_Mil_WiredFence_F",[10.2109,-23.332,0.0770636],0.102386],["Land_Mil_WiredFence_F",[-13.9785,22.7109,0.14178],179.508],["Land_Mil_WiredFence_F",[-13.2646,-23.5254,0.107581],359.2],["Land_Mil_WiredFenceD_F",[-25.2764,11.1719,0.281589],89.5986],["Land_Mil_WiredFence_F",[-25.0078,-12.2637,0.14763],89.3037],["Land_Mil_WiredFence_F",[20.9658,19.3984,0.108518],269.14],["Land_Mil_WiredFence_F",[17.3467,23.0078,0.203137],179.508],["Land_Mil_WiredFence_F",[21.4434,-19.832,-0.0538054],269.14],["Land_Mil_WiredFence_F",[17.9805,-23.3184,-0.0515146],0.102386],["Land_Mil_WiredFence_F",[-21.8281,22.6367,0.193471],179.508],["Land_Mil_WiredFence_F",[-25.3613,19.0098,0.257112],89.3037],["Land_Mil_WiredFence_F",[-21.1807,-23.582,0.0778704],359.2],["Land_Mil_WiredFence_F",[-24.8574,-20.0781,0.121158],89.3037]],
15 | [["Land_HBarrier_5_F",[-2.69922,-5.77539,-0.00143886],0.486694],["CamoNet_INDP_open_Curator_F",[7.25781,3.55469,-0.00143886],271.571],["Land_HBarrier_5_F",[0.423828,10.4238,-0.00143886],0],["Land_HBarrier_5_F",[-4.84375,10.4434,-0.00143886],0],["Land_Cargo_HQ_V1_F",[-9.33008,-3.42969,-0.00143886],89.112],["Land_HBarrierBig_F",[12.2266,0.923828,-0.00143886],271.209],["Land_HBarrierBig_F",[12.2422,-7.45898,-0.00143886],271.209],["Land_HBarrier_5_F",[3.48438,-17.0938,-0.00143886],270.531],["Land_Cargo_House_V1_F",[7.50977,-14.3398,-0.00143886],180.445],["Land_HBarrierBig_F",[12.1563,9.42188,-0.00143886],271.209],["CamoNet_INDP_open_Curator_F",[-13.2949,11.127,-0.00143886],178.49],["Land_HBarrierBig_F",[-8.28906,-15.3379,-0.00143886],180.796],["Land_HBarrierBig_F",[-7.8125,15.8691,-0.00143886],0.85144],["Land_HBarrierBig_F",[-2.84766,-18.6328,-0.00143886],270.094],["Land_HBarrierBig_F",[12.2246,-15.8086,-0.00143886],271.209],["Land_HBarrierBig_F",[3.64063,19.6973,-0.00143886],270.888],["Land_HBarrierBig_F",[6.74023,-18.9355,-0.00143886],181.513],["Land_Tank_rust_F",[-7.83984,-18.709,-0.00143886],0],["Land_HBarrierBig_F",[-20.4395,-2.40234,-0.00143886],271.207],["Land_Cargo_Patrol_V1_F",[7.64258,20.0508,-0.00143886],180.641],["Land_HBarrierBig_F",[-20.4766,6.23047,-0.00143886],270.269],["Land_HBarrierBig_F",[12.1699,17.8438,-0.00143886],271.209],["Land_CratesShabby_F",[-14.1152,-17.4121,-0.00143886],0],["Land_StallWater_F",[-5.96289,-21.666,-0.00143886],0],["Land_HBarrierBig_F",[-16.2246,15.7695,-0.00143886],0.85144],["Land_HBarrierBig_F",[-20.3223,-10.5176,-0.00143886],270.269],["Land_HBarrierBig_F",[-16.8105,-15.543,-0.00143886],179.946],["Land_HBarrier_5_F",[-3.32617,-23.6445,-0.00143886],0],["Land_HBarrier_5_F",[2.32031,-23.6484,-0.00143886],0],["Land_Sack_F",[-16.2891,-17.7793,-0.00143886],0],["Land_BagBunker_Small_F",[-21.3262,12.6914,-0.00143886],88.7408],["Land_HBarrier_5_F",[-8.97266,-23.6445,-0.00143886],0],["Land_HBarrierBig_F",[8.74414,23.0156,-0.00143886],0.585754],["Land_cargo_addon02_V1_F",[-16.4277,-18.8848,-0.00143886],0],["Land_CratesWooden_F",[-17.9551,-17.7324,-0.00143886],0],["Land_HBarrier_3_F",[-12.1191,-23.7227,-0.00143886],0],["Land_HBarrier_5_F",[-20.1641,-21.6738,-0.00143886],269.452],["Land_HBarrier_1_F",[-20.1289,-22.959,-0.00143886],0],["CamCurator",[-3.95117,-7.02539,46.4545],357.798],["Eagle_F",[7.09375,-54.3477,79.9532],337.543]]
16 | ];
--------------------------------------------------------------------------------