v65a Bug Fixes and Modifications
The fixes are: * Fixed OccupyVehicles spawning out of control * Tidied up the config * Corrected a few typos * Corrected a few variable names The modifications are: * Static Heli Crashes postions * Heli Crash guards * Survivor and Bandit vehicles are now separate * Added Random Spawn AI Custom Loadout * Enable/disable naming the Random AI targeted player * Enable/disable Loot Crate and Heli Crash guards * Fixed Loot Crates and Heli Crashes spawning on the edge of Chernarus map * Version number updated to reflect changes
This commit is contained in:
parent
1bec9af295
commit
c46f217663
54
README.md
54
README.md
@ -1,26 +1,28 @@
|
||||
# Exile Occupation (a3_exile_occupation)
|
||||
|
||||
![Arma 1.62](https://img.shields.io/badge/Arma-1.62-blue.svg) ![Exile 1.0.1 Sweet Potato](https://img.shields.io/badge/Exile-1.0.1%20Sweet%20Potato-C72651.svg)
|
||||
|
||||
WTF is Occupation?
|
||||
An AI spawner and monitor to be used in conjunction with DMS and will not work without it:
|
||||
http://www.exilemod.com/topic/61-dms-defents-mission-system/
|
||||
|
||||
Download the pbo version here:
|
||||
|
||||
https://github.com/secondcoming/a3_exile_occupation/blob/development/pre-packaged%20pbo/a3_exile_occupation.pbo
|
||||
|
||||
|
||||
To install place the pbo into the @ExileServer/addons folder
|
||||
|
||||
For more info:
|
||||
http://www.exilemod.com/topic/12517-release-exile-occupation-roaming-ai
|
||||
|
||||
###License Overview:
|
||||
This work is protected by [Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0)](http://creativecommons.org/licenses/by-nc-sa/4.0/). By using, downloading, or copying any of the work contained, you agree to the license included.
|
||||
|
||||
<a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a><br /><span xmlns:dct="http://purl.org/dc/terms/" href="http://purl.org/dc/dcmitype/Text" property="dct:title" rel="dct:type">Exile Occupation</span> by <a xmlns:cc="http://creativecommons.org/ns#" href="https://github.com/secondcoming/a3_exile_occupation" property="cc:attributionName" rel="cc:attributionURL">second_coming</a> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>.
|
||||
|
||||
### Donations:
|
||||
Anyone wishing to donate can do so here http://exileyorkshire.co.uk/
|
||||
All donations go towards coffee to keep me awake :)
|
||||
# Exile Occupation (a3_exile_occupation)
|
||||
|
||||
![v65a Bug Fix](https://img.shields.io/badge/v65a-Bug%20Fix-red.svg) ![Arma 1.66](https://img.shields.io/badge/Arma-1.66-blue.svg) ![Exile 1.0.2 Sweet Potato](https://img.shields.io/badge/Exile-1.0.2%20Sweet%20Potato-C72651.svg)
|
||||
|
||||
WTF is Occupation?
|
||||
An AI spawner and monitor to be used in conjunction with DMS and will not work without it:
|
||||
http://www.exilemod.com/topic/61-dms-defents-mission-system/
|
||||
|
||||
How to install?
|
||||
To install place the pbo into the @ExileServer/addons folder
|
||||
|
||||
How edit and compile?
|
||||
You'll find the files in the source folder. Edit the config as you need and then compile the PBO with PBO Manager 1.4b:
|
||||
http://www.armaholic.com/page.php?id=16369 - (Please note, only use the x64 version)
|
||||
|
||||
For more info:
|
||||
http://www.exilemod.com/topic/12517-release-exile-occupation-roaming-ai
|
||||
|
||||
###License Overview:
|
||||
This work is protected by [Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0)](http://creativecommons.org/licenses/by-nc-sa/4.0/). By using, downloading, or copying any of the work contained, you agree to the license included.
|
||||
|
||||
<a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a><br /><span xmlns:dct="http://purl.org/dc/terms/" href="http://purl.org/dc/dcmitype/Text" property="dct:title" rel="dct:type">Exile Occupation</span> by <a xmlns:cc="http://creativecommons.org/ns#" href="https://github.com/secondcoming/a3_exile_occupation" property="cc:attributionName" rel="cc:attributionURL">second_coming</a> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>.
|
||||
|
||||
### Donations:
|
||||
Anyone wishing to donate can do so here http://exileyorkshire.co.uk/
|
||||
All donations go towards coffee to keep me awake :)
|
||||
|
||||
###Updated and modified by [FPS]kuplion
|
Binary file not shown.
@ -1,26 +1,28 @@
|
||||
# Exile Occupation (a3_exile_occupation)
|
||||
|
||||
![Arma 1.62](https://img.shields.io/badge/Arma-1.62-blue.svg) ![Exile 1.0.0 Potato](https://img.shields.io/badge/Exile-1.0.1%20Sweet%20Potato-C72651.svg)
|
||||
|
||||
WTF is Occupation?
|
||||
An AI spawner and monitor to be used in conjunction with DMS and will not work without it:
|
||||
http://www.exilemod.com/topic/61-dms-defents-mission-system/
|
||||
|
||||
Download the pbo version here:
|
||||
|
||||
https://github.com/secondcoming/a3_exile_occupation/blob/development/pre-packaged%20pbo/a3_exile_occupation.pbo
|
||||
|
||||
|
||||
To install place the pbo into the @ExileServer/addons folder
|
||||
|
||||
For more info:
|
||||
http://www.exilemod.com/topic/12517-release-exile-occupation-roaming-ai
|
||||
|
||||
###License Overview:
|
||||
This work is protected by [Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0)](http://creativecommons.org/licenses/by-nc-sa/4.0/). By using, downloading, or copying any of the work contained, you agree to the license included.
|
||||
|
||||
<a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a><br /><span xmlns:dct="http://purl.org/dc/terms/" href="http://purl.org/dc/dcmitype/Text" property="dct:title" rel="dct:type">Exile Occupation</span> by <a xmlns:cc="http://creativecommons.org/ns#" href="https://github.com/secondcoming/a3_exile_occupation" property="cc:attributionName" rel="cc:attributionURL">second_coming</a> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>.
|
||||
|
||||
### Donations:
|
||||
Anyone wishing to donate can do so here http://exileyorkshire.co.uk/
|
||||
All donations go towards coffee to keep me awake :)
|
||||
# Exile Occupation (a3_exile_occupation)
|
||||
|
||||
![v65a Bug Fix](https://img.shields.io/badge/v65a-Bug%20Fix-red.svg) ![Arma 1.66](https://img.shields.io/badge/Arma-1.66-blue.svg) ![Exile 1.0.2 Sweet Potato](https://img.shields.io/badge/Exile-1.0.2%20Sweet%20Potato-C72651.svg)
|
||||
|
||||
WTF is Occupation?
|
||||
An AI spawner and monitor to be used in conjunction with DMS and will not work without it:
|
||||
http://www.exilemod.com/topic/61-dms-defents-mission-system/
|
||||
|
||||
How to install?
|
||||
To install place the pbo into the @ExileServer/addons folder
|
||||
|
||||
How edit and compile?
|
||||
You'll find the files in the source folder. Edit the config as you need and then compile the PBO with PBO Manager 1.4b:
|
||||
http://www.armaholic.com/page.php?id=16369 - (Please note, only use the x64 version)
|
||||
|
||||
For more info:
|
||||
http://www.exilemod.com/topic/12517-release-exile-occupation-roaming-ai
|
||||
|
||||
###License Overview:
|
||||
This work is protected by [Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0)](http://creativecommons.org/licenses/by-nc-sa/4.0/). By using, downloading, or copying any of the work contained, you agree to the license included.
|
||||
|
||||
<a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a><br /><span xmlns:dct="http://purl.org/dc/terms/" href="http://purl.org/dc/dcmitype/Text" property="dct:title" rel="dct:type">Exile Occupation</span> by <a xmlns:cc="http://creativecommons.org/ns#" href="https://github.com/secondcoming/a3_exile_occupation" property="cc:attributionName" rel="cc:attributionURL">second_coming</a> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>.
|
||||
|
||||
### Donations:
|
||||
Anyone wishing to donate can do so here http://exileyorkshire.co.uk/
|
||||
All donations go towards coffee to keep me awake :)
|
||||
|
||||
###Updated and modified by [FPS]kuplion
|
@ -4,9 +4,9 @@ class CfgPatches
|
||||
units[] = {};
|
||||
weapons[] = {};
|
||||
requiredVersion = 0.1;
|
||||
a3_exile_occupation_version = "V65 (30-08-2016)";
|
||||
a3_exile_occupation_version = "V65a (04-03-2017)";
|
||||
requiredAddons[] = {"a3_dms"};
|
||||
author[]= {"second_coming"};
|
||||
author[]= {"second_coming - modified by [FPS]kuplion"};
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -13,20 +13,18 @@
|
||||
|
||||
// Shared Config for each occupation monitor
|
||||
|
||||
SC_debug = false; // set to true to turn on debug features (not recommended for live servers)
|
||||
SC_debug = false; // set to true to turn on debug features (not recommended for live servers)
|
||||
SC_extendedLogging = false; // set to true for additional
|
||||
SC_infiSTAR_log = true; // true Use infiSTAR logging, false logs to server rpt
|
||||
|
||||
SC_useApexClasses = true; // true if you want to use the Apex class list over rides, false to use vanilla Arma gear
|
||||
SC_useMapOverrides = true; // set to true to enable over riding options per map (see the bottom of this file for examples)
|
||||
SC_extendedLogging = false; // set to true for additional logging
|
||||
|
||||
SC_infiSTAR_log = true; // true Use infiSTAR logging, false logs to server rpt
|
||||
SC_maxAIcount = 100; // the maximum amount of AI, if the AI count is above this then additional AI won't spawn
|
||||
SC_mapMarkers = false; // Place map markers at the occupied areas (occupyPlaces and occupyMilitary only) true/false
|
||||
SC_minFPS = 5; // any lower than minFPS on the server and additional AI won't spawn
|
||||
SC_scaleAI = 10; // any more than _scaleAI players on the server and _maxAIcount is reduced for each extra player
|
||||
|
||||
SC_removeUserMapMarkers = true; // true to delete map markers placed by players every 10 seconds
|
||||
|
||||
// Distance limits for selecting safe places to spawn AI
|
||||
SC_minDistanceToSpawnZones = 750; // Minimum distance in metres to the nearest spawn zone
|
||||
SC_minDistanceToTraders = 750; // Minimum distance in metres to the nearest trader zone
|
||||
SC_minDistanceToTerritory = 350; // Minimum distance in metres to the nearest player territory
|
||||
@ -50,6 +48,7 @@ SC_occupyMilitary = false; // true if you want military buildings
|
||||
SC_occupyVehicle = true; // true if you want to have roaming AI land vehicles
|
||||
SC_occupySky = true; // true if you want to have roaming AI helis
|
||||
SC_occupySea = false; // true if you want to have roaming AI boats
|
||||
SC_occupyHeliCrashes = true; // true if you want to have Dayz style helicrashes
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Fast nights Setup
|
||||
@ -71,11 +70,11 @@ SC_randomSpawnMaxGroupSize = 5; // Maximum amount of ra
|
||||
SC_randomSpawnChance = 12; // Percentage chance of spawning if suitable player found
|
||||
SC_randomSpawnIgnoreCount = true; // true if you want spawn random AI groups regardless of overall AI count (they still count towards the total though)
|
||||
SC_randomSpawnFrequency = 3600; // time in seconds between the possibility of random AI hunting the same player (1800 for 30 minutes)
|
||||
SC_randomSpawnAnnounce = true; // true if you want a warning toast issued to all players when AI spawns
|
||||
|
||||
SC_randomSpawnNearBases = true; // true if you want to allow random spawns in range of territories
|
||||
SC_randomSpawnNearSpawns = false; // true if you want to allow random spawns in range of spawn zones
|
||||
SC_randomSpawnTargetBambis = false; // true if you want to allow random spawns to target bambis
|
||||
SC_randomSpawnAnnounce = true; // true if you want a warning toast issued to all players when AI spawns
|
||||
SC_randomSpawnNameTarget = false; // true if you want to name the targeted player
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Occupy Places Setup
|
||||
@ -90,7 +89,7 @@ SC_occupyPlacesSurvivors = true; // true if you want a chance to spawn sur
|
||||
SC_occupyTraderDetails = [
|
||||
//["Tanoa","Lifou Traders",[7317,7217,0],"trader1.sqf",true],
|
||||
//["Tanoa","Lijnhaven Traders",[11580,2051,0],"trader1.sqf",true],
|
||||
["Napf","Hafen Traders",[9286,17606,0],"trader1.sqf",true]
|
||||
//["Napf","Hafen Traders",[9286,17606,0],"trader1.sqf",true]
|
||||
]; //["mapname","Name",[x,y,z],"filename",true] trader name, location, safezone true/false
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
@ -141,6 +140,7 @@ SC_occupyLootCratesLocations = [
|
||||
[3000,3000,0],
|
||||
[4000,4000,0]
|
||||
];
|
||||
SC_SpawnLootCrateGuards = true; // true if you want to enable AI guards
|
||||
SC_numberofLootCrates = 6; // if SC_occupyLootCrates = true spawn this many loot crates (overrided below for Namalsk)
|
||||
SC_LootCrateGuards = 2; // number of AI to spawn at each crate
|
||||
SC_LootCrateGuardsRandomize = true; // Use a random number of guards up to a maximum = SC_LootCrateGuards (so between 1 and SC_LootCrateGuards)
|
||||
@ -196,9 +196,18 @@ SC_blackListedAreas = [
|
||||
// Heli Crash Setup
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
SC_occupyHeliCrashes = true; // true if you want to have Dayz style helicrashes
|
||||
SC_numberofHeliCrashesFire = true; // true if you want the crash on fire, false if you just want smoke
|
||||
SC_numberofHeliCrashes = 5; // if SC_occupyHeliCrashes = true spawn this many loot crates
|
||||
SC_occupyHeliCrashesStatic = false; // true if you want to have random Heli Crash spawn in pre-defined locations set in SC_occupyHeliCrashesLocations
|
||||
SC_occupyHeliCrashesLocations = [
|
||||
[1000,1000,0],
|
||||
[2000,2000,0],
|
||||
[3000,3000,0],
|
||||
[4000,4000,0]
|
||||
];
|
||||
SC_HeliCrashesOnFire = true; // true if you want the crash on fire, false if you just want smoke
|
||||
SC_SpawnHeliCrashGuards = true; // true if you want to enable AI guards
|
||||
SC_numberofHeliCrashes = 5; // if SC_occupyHeliCrashes = true spawn this many Heli Crashes
|
||||
SC_HeliCrashGuards = 6; // number of AI to spawn at each crate
|
||||
SC_HeliCrashGuardsRandomize = true; // Use a random number of guards up to a maximum = SC_HeliCrashGuards (so between 1 and SC_HeliCrashGuards)
|
||||
|
||||
// Array of possible common items to go in heli crash crates ["classname",fixed amount,random amount] NOT INCLUDING WEAPONS
|
||||
// ["HandGrenade",0,2] this example would add between 0 and 2 HandGrenade to the crate (fixed 0 plus 0-2 random)
|
||||
@ -272,6 +281,21 @@ SC_VehicleClassToUseRare = [
|
||||
["Exile_Car_Offroad_Armed_Guerilla03",1],
|
||||
["Exile_Car_Tempest",1]
|
||||
];
|
||||
|
||||
// Array of arrays of ground vehicles which can be used by Survivor AI patrols (the number next to next vehicle is the maximum amount of that class allowed, 0 for no limit)
|
||||
SC_SurvivorVehicleClassToUse = [
|
||||
["Exile_Car_LandRover_Green",0],
|
||||
["Exile_Bike_QuadBike_Black",2],
|
||||
["Exile_Car_UAZ_Open_Green",2]
|
||||
];
|
||||
SC_SurvivorVehicleClassToUseRare = [
|
||||
["Exile_Car_Hunter",1],
|
||||
["Exile_Car_HEMMT",1],
|
||||
["Exile_Car_Zamak",1],
|
||||
["Exile_Car_Offroad_Armed_Guerilla12",1],
|
||||
["Exile_Car_Offroad_Armed_Guerilla03",1],
|
||||
["Exile_Car_Tempest",1]
|
||||
];
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Roaming Aircraft Setup
|
||||
@ -391,7 +415,21 @@ SC_BanditPistol = ["hgun_ACPC2_F","hgun_P07_F","hgun_Pistol_heavy_0
|
||||
SC_BanditPistolAttachments = [];
|
||||
SC_BanditAssignedItems = ["ItemMap","ItemCompass","ItemRadio","ItemWatch"]; // all these items will be added
|
||||
SC_BanditLauncher = [];
|
||||
SC_BanditBackpack = ["B_HuntingBackpack","B_Kitbag_cbr","B_Kitbag_mcamo","B_Kitbag_sgg","B_OutdoorPack_blk","B_OutdoorPack_blu","B_OutdoorPack_tan","B_TacticalPack_blk","B_TacticalPack_mcamo","B_TacticalPack_ocamo","B_TacticalPack_oli","B_TacticalPack_rgr"];
|
||||
SC_BanditBackpack = ["B_HuntingBackpack","B_Kitbag_cbr","B_Kitbag_mcamo","B_Kitbag_sgg","B_OutdoorPack_blk","B_OutdoorPack_blu","B_OutdoorPack_tan","B_TacticalPack_blk","B_TacticalPack_mcamo","B_TacticalPack_ocamo","B_TacticalPack_oli","B_TacticalPack_rgr"];
|
||||
|
||||
// Possible equipment for random ai to spawn with
|
||||
// spawning random ai without vests or backpacks will result in them having no ammunition
|
||||
SC_RandomUniforms = ["U_B_GEN_Soldier_F"];
|
||||
SC_RandomVests = ["V_TacVest_gen_F"];
|
||||
SC_RandomHeadgear = ["H_Cap_police"];
|
||||
SC_RandomWeapon = ["SMG_05_F"];
|
||||
SC_RandomWeaponAttachments = ["muzzle_snds_L"];
|
||||
SC_RandomMagazines = ["Exile_Item_InstaDoc","Exile_Item_Vishpirin","Exile_Item_Bandage","Exile_Item_DuctTape","Exile_Item_PlasticBottleFreshWater","Exile_Item_Energydrink","Exile_Item_EMRE","Exile_Item_Cheathas","Exile_Item_Noodles","Exile_Item_BBQSandwich","Exile_Item_Catfood"];
|
||||
SC_RandomPistol = ["hgun_Rook40_F"];
|
||||
SC_RandomPistolAttachments = ["muzzle_snds_L"];
|
||||
SC_RandomAssignedItems = ["ItemMap","ItemCompass","ItemRadio","ItemWatch"]; // all these items will be added
|
||||
SC_RandomLauncher = [];
|
||||
SC_RandomBackpack = ["B_AssaultPack_blk"];
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Map Specific Overrides
|
||||
@ -424,22 +462,64 @@ if (worldName == 'Tanoa' AND SC_useMapOverrides) then
|
||||
|
||||
if(SC_useApexClasses) then
|
||||
{
|
||||
SC_BanditWeapon = [ "arifle_MX_khk_F","arifle_MX_GL_khk_F","arifle_MX_SW_khk_F","arifle_MXC_khk_F","arifle_MXM_khk_F","arifle_AK12_F","arifle_AK12_GL_F","arifle_AKM_F",
|
||||
"arifle_AKS_F","arifle_ARX_blk_F","arifle_ARX_ghex_F","arifle_ARX_hex_F","arifle_CTAR_blk_F","arifle_CTAR_GL_blk_F","arifle_CTARS_blk_F","arifle_SPAR_01_blk_F","arifle_SPAR_01_khk_F",
|
||||
"arifle_SPAR_01_snd_F","arifle_SPAR_01_GL_blk_F","arifle_SPAR_01_GL_khk_F","arifle_SPAR_01_GL_snd_F","arifle_SPAR_02_blk_F","arifle_SPAR_02_khk_F","arifle_SPAR_02_snd_F",
|
||||
"arifle_SPAR_03_blk_F","arifle_SPAR_03_khk_F","arifle_SPAR_03_snd_F"];
|
||||
SC_BanditUniforms = [ "U_I_C_Soldier_Para_1_F","U_I_C_Soldier_Para_2_F","U_I_C_Soldier_Para_3_F","U_I_C_Soldier_Para_4_F","U_I_C_Soldier_Para_5_F","U_I_C_Soldier_Bandit_1_F","U_I_C_Soldier_Bandit_2_F",
|
||||
"U_I_C_Soldier_Bandit_3_F","U_I_C_Soldier_Bandit_4_F","U_I_C_Soldier_Bandit_5_F","U_I_C_Soldier_Camo_F","U_B_CTRG_Soldier_urb_1_F","U_B_CTRG_Soldier_urb_2_F","U_B_CTRG_Soldier_urb_3_F"];
|
||||
SC_VehicleClassToUse = [
|
||||
SC_BanditWeapon = [
|
||||
"arifle_MX_khk_F",
|
||||
"arifle_MX_GL_khk_F",
|
||||
"arifle_MX_SW_khk_F",
|
||||
"arifle_MXC_khk_F",
|
||||
"arifle_MXM_khk_F",
|
||||
"arifle_AK12_F",
|
||||
"arifle_AK12_GL_F",
|
||||
"arifle_AKM_F",
|
||||
"arifle_AKS_F",
|
||||
"arifle_ARX_blk_F",
|
||||
"arifle_ARX_ghex_F",
|
||||
"arifle_ARX_hex_F",
|
||||
"arifle_CTAR_blk_F",
|
||||
"arifle_CTAR_GL_blk_F",
|
||||
"arifle_CTARS_blk_F",
|
||||
"arifle_SPAR_01_blk_F",
|
||||
"arifle_SPAR_01_khk_F",
|
||||
"arifle_SPAR_01_snd_F",
|
||||
"arifle_SPAR_01_GL_blk_F",
|
||||
"arifle_SPAR_01_GL_khk_F",
|
||||
"arifle_SPAR_01_GL_snd_F",
|
||||
"arifle_SPAR_02_blk_F",
|
||||
"arifle_SPAR_02_khk_F",
|
||||
"arifle_SPAR_02_snd_F",
|
||||
"arifle_SPAR_03_blk_F",
|
||||
"arifle_SPAR_03_khk_F",
|
||||
"arifle_SPAR_03_snd_F"
|
||||
];
|
||||
|
||||
SC_BanditUniforms = [
|
||||
"U_I_C_Soldier_Para_1_F",
|
||||
"U_I_C_Soldier_Para_2_F",
|
||||
"U_I_C_Soldier_Para_3_F",
|
||||
"U_I_C_Soldier_Para_4_F",
|
||||
"U_I_C_Soldier_Para_5_F",
|
||||
"U_I_C_Soldier_Bandit_1_F",
|
||||
"U_I_C_Soldier_Bandit_2_F",
|
||||
"U_I_C_Soldier_Bandit_3_F",
|
||||
"U_I_C_Soldier_Bandit_4_F",
|
||||
"U_I_C_Soldier_Bandit_5_F",
|
||||
"U_I_C_Soldier_Camo_F",
|
||||
"U_B_CTRG_Soldier_urb_1_F",
|
||||
"U_B_CTRG_Soldier_urb_2_F",
|
||||
"U_B_CTRG_Soldier_urb_3_F"
|
||||
];
|
||||
|
||||
SC_VehicleClassToUse = [
|
||||
["B_GEN_Offroad_01_gen_F",0],
|
||||
["C_Offroad_02_unarmed_F",0],
|
||||
["I_C_Offroad_02_unarmed_F",0]
|
||||
];
|
||||
];
|
||||
|
||||
SC_VehicleClassToUseRare = [
|
||||
["B_LSV_01_unarmed_black_F",1],
|
||||
["O_T_LSV_02_unarmed_black_F",1],
|
||||
["O_T_Truck_03_device_ghex_F",1]
|
||||
];
|
||||
];
|
||||
};
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -15,6 +15,11 @@ if (worldName == 'Esseker') then
|
||||
_maxDist = 5000;
|
||||
};
|
||||
|
||||
if (worldName == 'Chernarus') then
|
||||
{
|
||||
_maxDist = _middle - 1500;;
|
||||
};
|
||||
|
||||
if(_roadSpawn) then
|
||||
{
|
||||
_maxDist = _maxDist - 1400;
|
||||
|
@ -56,17 +56,28 @@ switch (_side) do
|
||||
};
|
||||
case "cops":
|
||||
{
|
||||
_uniform = "U_B_GEN_Soldier_F";
|
||||
_vest = "V_TacVest_gen_F";
|
||||
_headgear = "H_Cap_police";
|
||||
_weapon = "SMG_05_F";
|
||||
_weaponAttachments = ["muzzle_snds_L"];
|
||||
_pistol = "hgun_Rook40_F";
|
||||
_pistolAttachments = ["muzzle_snds_L"];
|
||||
_launcher = "";
|
||||
_backpack = "";
|
||||
_assignedItems = ["ItemMap","ItemCompass","ItemRadio","ItemWatch"];
|
||||
_magazines = ["30Rnd_9x21_Mag_SMG_02","30Rnd_9x21_Mag_SMG_02","16Rnd_9x21_Mag","16Rnd_9x21_Mag"];
|
||||
if(count SC_RandomUniforms == 0) then { _uniform = ""; } else { _uniform = SC_RandomUniforms call BIS_fnc_selectRandom; };
|
||||
if(count SC_RandomVests == 0) then { _vest = ""; } else { _vest = SC_RandomVests call BIS_fnc_selectRandom; };
|
||||
if(count SC_RandomHeadgear == 0) then { _headgear = ""; } else { _headgear = SC_RandomHeadgear call BIS_fnc_selectRandom; };
|
||||
if(count SC_RandomWeapon == 0) then { _weapon = ""; } else { _weapon = SC_RandomWeapon call BIS_fnc_selectRandom; };
|
||||
if(count SC_RandomWeaponAttachments == 0) then { _weaponAttachments = [""]; } else { _weaponAttachments = [SC_RandomWeaponAttachments call BIS_fnc_selectRandom]; };
|
||||
if(count SC_RandomPistol == 0) then { _pistol = ""; } else { _pistol = SC_RandomPistol call BIS_fnc_selectRandom; };
|
||||
if(count SC_RandomPistolAttachments == 0) then { _pistolAttachments = [""]; } else { _pistolAttachments = [SC_RandomPistolAttachments call BIS_fnc_selectRandom]; };
|
||||
if(count SC_RandomLauncher == 0) then { _launcher = ""; } else { _launcher = SC_RandomLauncher call BIS_fnc_selectRandom; };
|
||||
if(count SC_RandomBackpack == 0) then { _backpack = ""; } else { _backpack = SC_RandomBackpack call BIS_fnc_selectRandom; };
|
||||
_assignedItems = SC_RandomAssignedItems;
|
||||
|
||||
_magazines = [];
|
||||
if(count SC_RandomMagazines > 0) then
|
||||
{
|
||||
_amountOfMagazines = 1 + round random (2);
|
||||
for "_i" from 1 to _amountOfMagazines do
|
||||
{
|
||||
_newMagazine = SC_RandomMagazines call BIS_fnc_selectRandom;
|
||||
_quantity = 1 + round random (2);
|
||||
_magazines pushBack [_newMagazine,_quantity];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -16,7 +16,22 @@ for "_i" from 1 to SC_numberofHeliCrashes do
|
||||
while{!_validspot} do
|
||||
{
|
||||
sleep 0.2;
|
||||
_position = [ false, false ] call SC_fnc_findsafePos;
|
||||
if(SC_occupyHeliCrashesStatic) then
|
||||
{
|
||||
_tempPosition = SC_occupyHeliCrashesLocations call BIS_fnc_selectRandom;
|
||||
SC_occupyHeliCrashesLocations = SC_occupyHeliCrashesLocations - _tempPosition;
|
||||
|
||||
_position = [_tempPosition select 0, _tempPosition select 1, _tempPosition select 2];
|
||||
if(isNil "_position") then
|
||||
{
|
||||
_position = [ false, false ] call SC_fnc_findsafePos;
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
_position = [ false, false ] call SC_fnc_findsafePos;
|
||||
};
|
||||
|
||||
_validspot = true;
|
||||
|
||||
//Check if near another heli crash site
|
||||
@ -37,7 +52,7 @@ for "_i" from 1 to SC_numberofHeliCrashes do
|
||||
|
||||
_effect = "test_EmptyObjectForSmoke";
|
||||
|
||||
if(SC_numberofHeliCrashesFire) then
|
||||
if(SC_HeliCrashesOnFire) then
|
||||
{
|
||||
_effect = "test_EmptyObjectForFireBig";
|
||||
};
|
||||
@ -45,6 +60,65 @@ for "_i" from 1 to SC_numberofHeliCrashes do
|
||||
_heliFire = _effect createVehicle (position _vehHeli);
|
||||
_heliFire attachto [_vehHeli, [0,0,-1]];
|
||||
_vehHeli setPos _position;
|
||||
|
||||
if (SC_SpawnHeliCrashGuards) then
|
||||
{
|
||||
//Infantry spawn using DMS
|
||||
_AICount = SC_HeliCrashGuards;
|
||||
|
||||
if(SC_HeliCrashGuardsRandomize) then
|
||||
{
|
||||
_AICount = 1 + (round (random (SC_HeliCrashGuards-1)));
|
||||
};
|
||||
|
||||
if(_AICount > 0) then
|
||||
{
|
||||
_spawnPosition = [_position select 0, _position select 1, 0];
|
||||
|
||||
_initialGroup = createGroup SC_BanditSide;
|
||||
_initialGroup setCombatMode "BLUE";
|
||||
_initialGroup setBehaviour "SAFE";
|
||||
|
||||
for "_i" from 1 to _AICount do
|
||||
{
|
||||
_loadOut = ["bandit"] call SC_fnc_selectGear;
|
||||
_unit = [_initialGroup,_spawnPosition,"custom","random","bandit","soldier",_loadOut] call DMS_fnc_SpawnAISoldier;
|
||||
_unitName = ["bandit"] call SC_fnc_selectName;
|
||||
if(!isNil "_unitName") then { _unit setName _unitName; };
|
||||
reload _unit;
|
||||
};
|
||||
|
||||
// Get the AI to shut the fuck up :)
|
||||
enableSentences false;
|
||||
enableRadio false;
|
||||
|
||||
|
||||
_group = createGroup SC_BanditSide;
|
||||
_group setVariable ["DMS_LockLocality",nil];
|
||||
_group setVariable ["DMS_SpawnedGroup",true];
|
||||
_group setVariable ["DMS_Group_Side", SC_BanditSide];
|
||||
|
||||
{
|
||||
_unit = _x;
|
||||
[_unit] joinSilent grpNull;
|
||||
[_unit] joinSilent _group;
|
||||
_unit setCaptive false;
|
||||
}foreach units _initialGroup;
|
||||
deleteGroup _initialGroup;
|
||||
|
||||
[_group, _spawnPosition, 100] call bis_fnc_taskPatrol;
|
||||
_group setBehaviour "STEALTH";
|
||||
_group setCombatMode "RED";
|
||||
|
||||
_logDetail = format ["[OCCUPATION:HeliCrash]:: Creating HeliCrash %3 at %1 with %2 guards",_position,_AICount,_i];
|
||||
[_logDetail] call SC_fnc_log;
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
_logDetail = format ["[OCCUPATION:HeliCrash]:: Creating HeliCrash %2 at %1 with no guards",_position,_i];
|
||||
[_logDetail] call SC_fnc_log;
|
||||
};
|
||||
|
||||
_positionOfBox = [_position,3,10,1,0,10,0] call BIS_fnc_findSafePos;
|
||||
_box = "Box_NATO_Ammo_F" createvehicle _positionOfBox;
|
||||
|
@ -49,55 +49,58 @@ for "_i" from 1 to SC_numberofLootCrates do
|
||||
_event_marker setMarkerSize [(3), (3)];
|
||||
};
|
||||
|
||||
//Infantry spawn using DMS
|
||||
_AICount = SC_LootCrateGuards;
|
||||
|
||||
if(SC_LootCrateGuardsRandomize) then
|
||||
{
|
||||
_AICount = 1 + (round (random (SC_LootCrateGuards-1)));
|
||||
};
|
||||
|
||||
if(_AICount > 0) then
|
||||
if (SC_SpawnLootCrateGuards) then
|
||||
{
|
||||
_spawnPosition = [_position select 0, _position select 1, 0];
|
||||
|
||||
_initialGroup = createGroup SC_BanditSide;
|
||||
_initialGroup setCombatMode "BLUE";
|
||||
_initialGroup setBehaviour "SAFE";
|
||||
|
||||
for "_i" from 1 to _AICount do
|
||||
{
|
||||
_loadOut = ["bandit"] call SC_fnc_selectGear;
|
||||
_unit = [_initialGroup,_spawnPosition,"custom","random","bandit","soldier",_loadOut] call DMS_fnc_SpawnAISoldier;
|
||||
_unitName = ["bandit"] call SC_fnc_selectName;
|
||||
if(!isNil "_unitName") then { _unit setName _unitName; };
|
||||
reload _unit;
|
||||
};
|
||||
|
||||
// Get the AI to shut the fuck up :)
|
||||
enableSentences false;
|
||||
enableRadio false;
|
||||
//Infantry spawn using DMS
|
||||
_AICount = SC_LootCrateGuards;
|
||||
|
||||
if(SC_LootCrateGuardsRandomize) then
|
||||
{
|
||||
_AICount = 1 + (round (random (SC_LootCrateGuards-1)));
|
||||
};
|
||||
|
||||
|
||||
_group = createGroup SC_BanditSide;
|
||||
_group setVariable ["DMS_LockLocality",nil];
|
||||
_group setVariable ["DMS_SpawnedGroup",true];
|
||||
_group setVariable ["DMS_Group_Side", SC_BanditSide];
|
||||
if(_AICount > 0) then
|
||||
{
|
||||
_spawnPosition = [_position select 0, _position select 1, 0];
|
||||
|
||||
_initialGroup = createGroup SC_BanditSide;
|
||||
_initialGroup setCombatMode "BLUE";
|
||||
_initialGroup setBehaviour "SAFE";
|
||||
|
||||
for "_i" from 1 to _AICount do
|
||||
{
|
||||
_loadOut = ["bandit"] call SC_fnc_selectGear;
|
||||
_unit = [_initialGroup,_spawnPosition,"custom","random","bandit","soldier",_loadOut] call DMS_fnc_SpawnAISoldier;
|
||||
_unitName = ["bandit"] call SC_fnc_selectName;
|
||||
if(!isNil "_unitName") then { _unit setName _unitName; };
|
||||
reload _unit;
|
||||
};
|
||||
|
||||
// Get the AI to shut the fuck up :)
|
||||
enableSentences false;
|
||||
enableRadio false;
|
||||
|
||||
{
|
||||
_unit = _x;
|
||||
[_unit] joinSilent grpNull;
|
||||
[_unit] joinSilent _group;
|
||||
_unit setCaptive false;
|
||||
}foreach units _initialGroup;
|
||||
deleteGroup _initialGroup;
|
||||
|
||||
[_group, _spawnPosition, 100] call bis_fnc_taskPatrol;
|
||||
_group setBehaviour "STEALTH";
|
||||
_group setCombatMode "RED";
|
||||
|
||||
_group = createGroup SC_BanditSide;
|
||||
_group setVariable ["DMS_LockLocality",nil];
|
||||
_group setVariable ["DMS_SpawnedGroup",true];
|
||||
_group setVariable ["DMS_Group_Side", SC_BanditSide];
|
||||
|
||||
_logDetail = format ["[OCCUPATION:LootCrates]:: Creating crate %3 at drop zone %1 with %2 guards",_position,_AICount,_i];
|
||||
[_logDetail] call SC_fnc_log;
|
||||
{
|
||||
_unit = _x;
|
||||
[_unit] joinSilent grpNull;
|
||||
[_unit] joinSilent _group;
|
||||
_unit setCaptive false;
|
||||
}foreach units _initialGroup;
|
||||
deleteGroup _initialGroup;
|
||||
|
||||
[_group, _spawnPosition, 100] call bis_fnc_taskPatrol;
|
||||
_group setBehaviour "STEALTH";
|
||||
_group setCombatMode "RED";
|
||||
|
||||
_logDetail = format ["[OCCUPATION:LootCrates]:: Creating crate %3 at drop zone %1 with %2 guards",_position,_AICount,_i];
|
||||
[_logDetail] call SC_fnc_log;
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -449,7 +449,14 @@ _livePlayers call BIS_fnc_arrayShuffle;
|
||||
|
||||
if(SC_randomSpawnAnnounce) then
|
||||
{
|
||||
if (SC_randomSpawnNameTarget) then
|
||||
{
|
||||
["toastRequest", ["InfoTitleAndText", format["Raid group Incoming!", "A squad of Police have been despatched to take out %1!",name _selectedPlayer]]] call ExileServer_system_network_send_broadcast;
|
||||
}
|
||||
else
|
||||
{
|
||||
["toastRequest", ["InfoTitleAndText", ["Raid group Incoming!", "A squad of Police have been despatched to take out a trouble prisoner."]]] call ExileServer_system_network_send_broadcast;
|
||||
};
|
||||
};
|
||||
|
||||
_logDetail = format ["[OCCUPATION:RandomSpawn]:: Spawning a group of AI @ %2 to hunt player %1",_selectedPlayer,_spawnLocation];
|
||||
|
@ -43,28 +43,37 @@ _maxDistance = _middle;
|
||||
|
||||
for "_i" from 1 to _vehiclesToSpawn do
|
||||
{
|
||||
private["_group"];
|
||||
|
||||
_locationArray = SC_occupyBoatFixedPositions;
|
||||
// Select the spawn position
|
||||
_spawnLocation = [0,0,0];
|
||||
_radius = 4000;
|
||||
if(SC_occupyBoatUseFixedPos) then
|
||||
if (_vehiclesToSpawn > 0) then
|
||||
{
|
||||
{
|
||||
_vehLocation = _x getVariable "SC_vehicleSpawnLocation";
|
||||
_locationArray = _locationArray - _vehLocation;
|
||||
}forEach SC_liveBoatsArray;
|
||||
private["_group"];
|
||||
|
||||
if(count _locationArray > 0) then
|
||||
_locationArray = SC_occupyBoatFixedPositions;
|
||||
// Select the spawn position
|
||||
_spawnLocation = [0,0,0];
|
||||
_radius = 4000;
|
||||
if(SC_occupyBoatUseFixedPos) then
|
||||
{
|
||||
_randomLocation = _locationArray call BIS_fnc_selectRandom;
|
||||
diag_log format["_randomLocation: %1",_randomLocation];
|
||||
_tempLocation = _randomLocation select 0;
|
||||
_spawnLocation = [_tempLocation select 0, _tempLocation select 1, _tempLocation select 2];
|
||||
_radius = _randomLocation select 1;
|
||||
_locationArray = _locationArray - _randomLocation;
|
||||
{
|
||||
_vehLocation = _x getVariable "SC_vehicleSpawnLocation";
|
||||
_locationArray = _locationArray - _vehLocation;
|
||||
}forEach SC_liveBoatsArray;
|
||||
|
||||
if(count _locationArray > 0) then
|
||||
{
|
||||
_randomLocation = _locationArray call BIS_fnc_selectRandom;
|
||||
diag_log format["_randomLocation: %1",_randomLocation];
|
||||
_tempLocation = _randomLocation select 0;
|
||||
_spawnLocation = [_tempLocation select 0, _tempLocation select 1, _tempLocation select 2];
|
||||
_radius = _randomLocation select 1;
|
||||
_locationArray = _locationArray - _randomLocation;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
_potentialspawnLocation = [ _spawnCenter, 0, _maxDistance + 500, 25, 2, 1, 1] call BIS_fnc_findSafePos;
|
||||
_spawnLocation = [_potentialspawnLocation select 0, _potentialspawnLocation select 1,0];
|
||||
_radius = 4000;
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -72,193 +81,188 @@ for "_i" from 1 to _vehiclesToSpawn do
|
||||
_spawnLocation = [_potentialspawnLocation select 0, _potentialspawnLocation select 1,0];
|
||||
_radius = 4000;
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
_potentialspawnLocation = [ _spawnCenter, 0, _maxDistance + 500, 25, 2, 1, 1] call BIS_fnc_findSafePos;
|
||||
_spawnLocation = [_potentialspawnLocation select 0, _potentialspawnLocation select 1,0];
|
||||
_radius = 4000;
|
||||
};
|
||||
|
||||
diag_log format["[OCCUPATION:Sea] found position %1",_spawnLocation];
|
||||
_group = createGroup SC_BanditSide;
|
||||
_group setVariable ["DMS_AllowFreezing",false];
|
||||
[_group,false] call DMS_fnc_FreezeToggle;
|
||||
_group setVariable ["DMS_LockLocality",true];
|
||||
_group setVariable ["DMS_SpawnedGroup",true];
|
||||
_group setVariable ["DMS_Group_Side", SC_BanditSide];
|
||||
_VehicleClass = SC_BoatClassToUse call BIS_fnc_selectRandom;
|
||||
_VehicleClassToUse = _VehicleClass select 0;
|
||||
|
||||
boatOkToSpawn = false;
|
||||
while{!boatOkToSpawn} do
|
||||
{
|
||||
diag_log format["[OCCUPATION:Sea] found position %1",_spawnLocation];
|
||||
_group = createGroup SC_BanditSide;
|
||||
_group setVariable ["DMS_AllowFreezing",false];
|
||||
[_group,false] call DMS_fnc_FreezeToggle;
|
||||
_group setVariable ["DMS_LockLocality",true];
|
||||
_group setVariable ["DMS_SpawnedGroup",true];
|
||||
_group setVariable ["DMS_Group_Side", SC_BanditSide];
|
||||
_VehicleClass = SC_BoatClassToUse call BIS_fnc_selectRandom;
|
||||
_VehicleClassToUse = _VehicleClass select 0;
|
||||
_VehicleClassAllowedCount = _VehicleClass select 1;
|
||||
_vehicleCount = 0;
|
||||
_VehicleClassToUse = _VehicleClass select 0;
|
||||
|
||||
boatOkToSpawn = false;
|
||||
while{!boatOkToSpawn} do
|
||||
{
|
||||
if(_VehicleClassToUse == typeOf _x) then { _vehicleCount = _vehicleCount + 1; };
|
||||
}forEach SC_liveHelisArray;
|
||||
if(_vehicleCount < _VehicleClassAllowedCount OR _VehicleClassAllowedCount == 0) then { boatOkToSpawn = true; };
|
||||
};
|
||||
_VehicleClass = SC_BoatClassToUse call BIS_fnc_selectRandom;
|
||||
_VehicleClassToUse = _VehicleClass select 0;
|
||||
_VehicleClassAllowedCount = _VehicleClass select 1;
|
||||
_vehicleCount = 0;
|
||||
{
|
||||
if(_VehicleClassToUse == typeOf _x) then { _vehicleCount = _vehicleCount + 1; };
|
||||
}forEach SC_liveHelisArray;
|
||||
if(_vehicleCount < _VehicleClassAllowedCount OR _VehicleClassAllowedCount == 0) then { boatOkToSpawn = true; };
|
||||
};
|
||||
|
||||
_vehicle = createVehicle [_VehicleClassToUse, _spawnLocation, [], 0, "NONE"];
|
||||
|
||||
if(!isNull _vehicle) then
|
||||
{
|
||||
_vehicle setPosASL _spawnLocation;
|
||||
_vehicle setVariable["vehPos",_spawnLocation,true];
|
||||
_vehicle setVariable["vehClass",_VehicleClassToUse,true];
|
||||
_vehicle = createVehicle [_VehicleClassToUse, _spawnLocation, [], 0, "NONE"];
|
||||
|
||||
_SC_vehicleSpawnLocation = [_spawnLocation,_radius,worldName];
|
||||
_vehicle setVariable ["SC_vehicleSpawnLocation", _SC_vehicleSpawnLocation,true];
|
||||
|
||||
// Remove the overpowered weapons from boats
|
||||
_vehicle removeWeaponTurret ["HMG_01",[0]];
|
||||
_vehicle removeWeaponTurret ["GMG_40mm",[0]];
|
||||
if(!isNull _vehicle) then
|
||||
{
|
||||
_vehicle setPosASL _spawnLocation;
|
||||
_vehicle setVariable["vehPos",_spawnLocation,true];
|
||||
_vehicle setVariable["vehClass",_VehicleClassToUse,true];
|
||||
|
||||
_SC_vehicleSpawnLocation = [_spawnLocation,_radius,worldName];
|
||||
_vehicle setVariable ["SC_vehicleSpawnLocation", _SC_vehicleSpawnLocation,true];
|
||||
|
||||
// Remove the overpowered weapons from boats
|
||||
_vehicle removeWeaponTurret ["HMG_01",[0]];
|
||||
_vehicle removeWeaponTurret ["GMG_40mm",[0]];
|
||||
|
||||
SC_liveBoats = SC_liveBoats + 1;
|
||||
SC_liveBoatsArray = SC_liveBoatsArray + [_vehicle];
|
||||
SC_liveBoats = SC_liveBoats + 1;
|
||||
SC_liveBoatsArray = SC_liveBoatsArray + [_vehicle];
|
||||
|
||||
_vehicle setVehiclePosition [_spawnLocation, [], 0, "NONE"];
|
||||
_vehicle setVariable ["vehicleID", _spawnLocation, true];
|
||||
_vehicle setFuel 1;
|
||||
_vehicle setDamage 0;
|
||||
_vehicle engineOn true;
|
||||
_vehicle lock 0;
|
||||
_vehicle setVehicleLock "UNLOCKED";
|
||||
_vehicle setVariable ["ExileIsLocked", 0, true];
|
||||
_vehicle setVariable ["ExileIsPersistent", false];
|
||||
_vehicle action ["LightOn", _vehicle];
|
||||
sleep 0.2;
|
||||
_group addVehicle _vehicle;
|
||||
|
||||
// Calculate the number of seats in the vehicle and fill the required amount
|
||||
_crewRequired = SC_minimumCrewAmount;
|
||||
if(SC_maximumCrewAmount > SC_minimumCrewAmount) then
|
||||
{
|
||||
_crewRequired = floor(random[SC_minimumCrewAmount,SC_maximumCrewAmount-SC_minimumCrewAmount,SC_maximumCrewAmount]);
|
||||
};
|
||||
_amountOfCrew = 0;
|
||||
_unitPlaced = false;
|
||||
_vehicleRoles = (typeOf _vehicle) call bis_fnc_vehicleRoles;
|
||||
{
|
||||
_unitPlaced = false;
|
||||
_vehicleRole = _x select 0;
|
||||
_vehicleSeat = _x select 1;
|
||||
if(_vehicleRole == "Driver") then
|
||||
{
|
||||
_unit = [_group,_spawnLocation,"assault","random","bandit","Vehicle"] call DMS_fnc_SpawnAISoldier;
|
||||
_amountOfCrew = _amountOfCrew + 1;
|
||||
_unit assignAsDriver _vehicle;
|
||||
_unit moveInDriver _vehicle;
|
||||
_unit setVariable ["DMS_AssignedVeh",_vehicle];
|
||||
_unitPlaced = true;
|
||||
};
|
||||
if(_vehicleRole == "Turret") then
|
||||
{
|
||||
_unit = [_group,_spawnLocation,"assault","random","bandit","Vehicle"] call DMS_fnc_SpawnAISoldier;
|
||||
_amountOfCrew = _amountOfCrew + 1;
|
||||
_unit moveInTurret [_vehicle, _vehicleSeat];
|
||||
_unit setVariable ["DMS_AssignedVeh",_vehicle];
|
||||
_unitPlaced = true;
|
||||
};
|
||||
if(_vehicleRole == "CARGO" && _amountOfCrew < _crewRequired) then
|
||||
{
|
||||
_unit = [_group,_spawnLocation,"assault","random","bandit","Vehicle"] call DMS_fnc_SpawnAISoldier;
|
||||
_amountOfCrew = _amountOfCrew + 1;
|
||||
_unit assignAsCargo _vehicle;
|
||||
_unit moveInCargo _vehicle;
|
||||
_unit setVariable ["DMS_AssignedVeh",_vehicle];
|
||||
_unitPlaced = true;
|
||||
};
|
||||
_vehicle setVehiclePosition [_spawnLocation, [], 0, "NONE"];
|
||||
_vehicle setVariable ["vehicleID", _spawnLocation, true];
|
||||
_vehicle setFuel 1;
|
||||
_vehicle setDamage 0;
|
||||
_vehicle engineOn true;
|
||||
_vehicle lock 0;
|
||||
_vehicle setVehicleLock "UNLOCKED";
|
||||
_vehicle setVariable ["ExileIsLocked", 0, true];
|
||||
_vehicle setVariable ["ExileIsPersistent", false];
|
||||
_vehicle action ["LightOn", _vehicle];
|
||||
sleep 0.2;
|
||||
_group addVehicle _vehicle;
|
||||
|
||||
// Calculate the number of seats in the vehicle and fill the required amount
|
||||
_crewRequired = SC_minimumCrewAmount;
|
||||
if(SC_maximumCrewAmount > SC_minimumCrewAmount) then
|
||||
{
|
||||
_crewRequired = floor(random[SC_minimumCrewAmount,SC_maximumCrewAmount-SC_minimumCrewAmount,SC_maximumCrewAmount]);
|
||||
};
|
||||
_amountOfCrew = 0;
|
||||
_unitPlaced = false;
|
||||
_vehicleRoles = (typeOf _vehicle) call bis_fnc_vehicleRoles;
|
||||
{
|
||||
_unitPlaced = false;
|
||||
_vehicleRole = _x select 0;
|
||||
_vehicleSeat = _x select 1;
|
||||
if(_vehicleRole == "Driver") then
|
||||
{
|
||||
_unit = [_group,_spawnLocation,"assault","random","bandit","Vehicle"] call DMS_fnc_SpawnAISoldier;
|
||||
_amountOfCrew = _amountOfCrew + 1;
|
||||
_unit assignAsDriver _vehicle;
|
||||
_unit moveInDriver _vehicle;
|
||||
_unit setVariable ["DMS_AssignedVeh",_vehicle];
|
||||
_unitPlaced = true;
|
||||
};
|
||||
if(_vehicleRole == "Turret") then
|
||||
{
|
||||
_unit = [_group,_spawnLocation,"assault","random","bandit","Vehicle"] call DMS_fnc_SpawnAISoldier;
|
||||
_amountOfCrew = _amountOfCrew + 1;
|
||||
_unit moveInTurret [_vehicle, _vehicleSeat];
|
||||
_unit setVariable ["DMS_AssignedVeh",_vehicle];
|
||||
_unitPlaced = true;
|
||||
};
|
||||
if(_vehicleRole == "CARGO" && _amountOfCrew < _crewRequired) then
|
||||
{
|
||||
_unit = [_group,_spawnLocation,"assault","random","bandit","Vehicle"] call DMS_fnc_SpawnAISoldier;
|
||||
_amountOfCrew = _amountOfCrew + 1;
|
||||
_unit assignAsCargo _vehicle;
|
||||
_unit moveInCargo _vehicle;
|
||||
_unit setVariable ["DMS_AssignedVeh",_vehicle];
|
||||
_unitPlaced = true;
|
||||
};
|
||||
|
||||
if(SC_extendedLogging && _unitPlaced) then
|
||||
{
|
||||
_logDetail = format['[OCCUPATION:Sky] %1 added to %2',_vehicleRole,_vehicle];
|
||||
[_logDetail] call SC_fnc_log;
|
||||
};
|
||||
} forEach _vehicleRoles;
|
||||
|
||||
{
|
||||
_unit = _x;
|
||||
_unitName = ["bandit"] call SC_fnc_selectName;
|
||||
if(!isNil "_unitName") then { _unit setName _unitName; };
|
||||
[_unit] joinSilent grpNull;
|
||||
[_unit] joinSilent _group;
|
||||
}foreach units _group;
|
||||
if(SC_extendedLogging && _unitPlaced) then
|
||||
{
|
||||
_logDetail = format['[OCCUPATION:Sky] %1 added to %2',_vehicleRole,_vehicle];
|
||||
[_logDetail] call SC_fnc_log;
|
||||
};
|
||||
} forEach _vehicleRoles;
|
||||
|
||||
{
|
||||
_unit = _x;
|
||||
_unitName = ["bandit"] call SC_fnc_selectName;
|
||||
if(!isNil "_unitName") then { _unit setName _unitName; };
|
||||
[_unit] joinSilent grpNull;
|
||||
[_unit] joinSilent _group;
|
||||
}foreach units _group;
|
||||
|
||||
if(SC_infiSTAR_log) then
|
||||
{
|
||||
_logDetail = format['[OCCUPATION:Sea] %1 spawned @ %2',_VehicleClassToUse,_spawnLocation];
|
||||
[_logDetail] call SC_fnc_log;
|
||||
};
|
||||
if(SC_infiSTAR_log) then
|
||||
{
|
||||
_logDetail = format['[OCCUPATION:Sea] %1 spawned @ %2',_VehicleClassToUse,_spawnLocation];
|
||||
[_logDetail] call SC_fnc_log;
|
||||
};
|
||||
|
||||
|
||||
clearMagazineCargoGlobal _vehicle;
|
||||
clearWeaponCargoGlobal _vehicle;
|
||||
clearItemCargoGlobal _vehicle;
|
||||
|
||||
clearMagazineCargoGlobal _vehicle;
|
||||
clearWeaponCargoGlobal _vehicle;
|
||||
clearItemCargoGlobal _vehicle;
|
||||
|
||||
_vehicle addMagazineCargoGlobal ["HandGrenade", (random 2)];
|
||||
_vehicle addItemCargoGlobal ["ItemGPS", (random 1)];
|
||||
_vehicle addItemCargoGlobal ["Exile_Item_InstaDoc", (random 1)];
|
||||
_vehicle addItemCargoGlobal ["Exile_Item_PlasticBottleFreshWater", 2 + (random 2)];
|
||||
_vehicle addItemCargoGlobal ["Exile_Item_EMRE", 2 + (random 2)];
|
||||
|
||||
// Add weapons with ammo to the vehicle
|
||||
_possibleWeapons =
|
||||
[
|
||||
"arifle_MXM_Black_F",
|
||||
"arifle_MXM_F",
|
||||
"srifle_DMR_01_F",
|
||||
"srifle_DMR_02_camo_F",
|
||||
"srifle_DMR_02_F",
|
||||
"srifle_DMR_02_sniper_F",
|
||||
"srifle_DMR_03_F",
|
||||
"srifle_DMR_03_khaki_F",
|
||||
"srifle_DMR_03_multicam_F",
|
||||
"srifle_DMR_03_tan_F",
|
||||
"srifle_DMR_03_woodland_F",
|
||||
"srifle_DMR_04_F",
|
||||
"srifle_DMR_04_Tan_F",
|
||||
"srifle_DMR_05_blk_F",
|
||||
"srifle_DMR_05_hex_F",
|
||||
"srifle_DMR_05_tan_f",
|
||||
"srifle_DMR_06_camo_F",
|
||||
"srifle_DMR_06_olive_F",
|
||||
"srifle_EBR_F",
|
||||
"srifle_GM6_camo_F",
|
||||
"srifle_GM6_F",
|
||||
"srifle_LRR_camo_F",
|
||||
"srifle_LRR_F"
|
||||
];
|
||||
_amountOfWeapons = 1 + (random 3);
|
||||
|
||||
for "_i" from 1 to _amountOfWeapons do
|
||||
{
|
||||
_weaponToAdd = _possibleWeapons call BIS_fnc_selectRandom;
|
||||
_vehicle addWeaponCargoGlobal [_weaponToAdd,1];
|
||||
|
||||
_magazinesToAdd = getArray (configFile >> "CfgWeapons" >> _weaponToAdd >> "magazines");
|
||||
_vehicle addMagazineCargoGlobal [(_magazinesToAdd select 0),round random 3];
|
||||
};
|
||||
_vehicle addMagazineCargoGlobal ["HandGrenade", (random 2)];
|
||||
_vehicle addItemCargoGlobal ["ItemGPS", (random 1)];
|
||||
_vehicle addItemCargoGlobal ["Exile_Item_InstaDoc", (random 1)];
|
||||
_vehicle addItemCargoGlobal ["Exile_Item_PlasticBottleFreshWater", 2 + (random 2)];
|
||||
_vehicle addItemCargoGlobal ["Exile_Item_EMRE", 2 + (random 2)];
|
||||
|
||||
// Add weapons with ammo to the vehicle
|
||||
_possibleWeapons =
|
||||
[
|
||||
"arifle_MXM_Black_F",
|
||||
"arifle_MXM_F",
|
||||
"srifle_DMR_01_F",
|
||||
"srifle_DMR_02_camo_F",
|
||||
"srifle_DMR_02_F",
|
||||
"srifle_DMR_02_sniper_F",
|
||||
"srifle_DMR_03_F",
|
||||
"srifle_DMR_03_khaki_F",
|
||||
"srifle_DMR_03_multicam_F",
|
||||
"srifle_DMR_03_tan_F",
|
||||
"srifle_DMR_03_woodland_F",
|
||||
"srifle_DMR_04_F",
|
||||
"srifle_DMR_04_Tan_F",
|
||||
"srifle_DMR_05_blk_F",
|
||||
"srifle_DMR_05_hex_F",
|
||||
"srifle_DMR_05_tan_f",
|
||||
"srifle_DMR_06_camo_F",
|
||||
"srifle_DMR_06_olive_F",
|
||||
"srifle_EBR_F",
|
||||
"srifle_GM6_camo_F",
|
||||
"srifle_GM6_F",
|
||||
"srifle_LRR_camo_F",
|
||||
"srifle_LRR_F"
|
||||
];
|
||||
_amountOfWeapons = 1 + (random 3);
|
||||
|
||||
for "_i" from 1 to _amountOfWeapons do
|
||||
{
|
||||
_weaponToAdd = _possibleWeapons call BIS_fnc_selectRandom;
|
||||
_vehicle addWeaponCargoGlobal [_weaponToAdd,1];
|
||||
|
||||
_magazinesToAdd = getArray (configFile >> "CfgWeapons" >> _weaponToAdd >> "magazines");
|
||||
_vehicle addMagazineCargoGlobal [(_magazinesToAdd select 0),round random 3];
|
||||
};
|
||||
|
||||
|
||||
[_group, _spawnLocation, _radius] call bis_fnc_taskPatrol;
|
||||
_group setBehaviour "AWARE";
|
||||
_group setCombatMode "RED";
|
||||
_vehicle addEventHandler ["getin", "_this call SC_fnc_claimVehicle;"];
|
||||
_vehicle addMPEventHandler ["mpkilled", "_this call SC_fnc_vehicleDestroyed;"];
|
||||
_vehicle addMPEventHandler ["mphit", "_this call SC_fnc_hitSea;"];
|
||||
_vehicle setVariable ["SC_crewEjected", false,true];
|
||||
sleep 0.2;
|
||||
}
|
||||
else
|
||||
{
|
||||
_logDetail = format['[OCCUPATION:Sea] vehicle %1 failed to spawn (check classname is correct)',_VehicleClassToUse];
|
||||
[_logDetail] call SC_fnc_log;
|
||||
};
|
||||
|
||||
[_group, _spawnLocation, _radius] call bis_fnc_taskPatrol;
|
||||
_group setBehaviour "AWARE";
|
||||
_group setCombatMode "RED";
|
||||
_vehicle addEventHandler ["getin", "_this call SC_fnc_claimVehicle;"];
|
||||
_vehicle addMPEventHandler ["mpkilled", "_this call SC_fnc_vehicleDestroyed;"];
|
||||
_vehicle addMPEventHandler ["mphit", "_this call SC_fnc_hitSea;"];
|
||||
_vehicle setVariable ["SC_crewEjected", false,true];
|
||||
sleep 0.2;
|
||||
}
|
||||
else
|
||||
{
|
||||
_logDetail = format['[OCCUPATION:Sea] vehicle %1 failed to spawn (check classname is correct)',_VehicleClassToUse];
|
||||
[_logDetail] call SC_fnc_log;
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
|
@ -65,27 +65,40 @@ _i = 0;
|
||||
|
||||
for "_i" from 1 to _vehiclesToSpawn do
|
||||
{
|
||||
private["_group"];
|
||||
_height = 350 + (round (random 200));
|
||||
_locationArray = SC_occupyHeliFixedPositions;
|
||||
|
||||
// Select the spawn position
|
||||
_spawnLocation = [0,0,0];
|
||||
_radius = 2000;
|
||||
if(SC_occupyHeliUseFixedPos) then
|
||||
if (_vehiclesToSpawn > 0) then
|
||||
{
|
||||
{
|
||||
_vehLocation = _x getVariable "SC_vehicleSpawnLocation";
|
||||
_locationArray = _locationArray - _vehLocation;
|
||||
}forEach SC_liveHelisArray;
|
||||
private["_group"];
|
||||
_height = 350 + (round (random 200));
|
||||
_locationArray = SC_occupyHeliFixedPositions;
|
||||
|
||||
if(count _locationArray > 0) then
|
||||
// Select the spawn position
|
||||
_spawnLocation = [0,0,0];
|
||||
_radius = 2000;
|
||||
if(SC_occupyHeliUseFixedPos) then
|
||||
{
|
||||
_randomLocation = _locationArray call BIS_fnc_selectRandom;
|
||||
diag_log format["_randomLocation: %1",_randomLocation];
|
||||
_tempLocation = _randomLocation select 0;
|
||||
_spawnLocation = [_tempLocation select 0, _tempLocation select 1, _tempLocation select 2];
|
||||
_radius = _randomLocation select 1;
|
||||
{
|
||||
_vehLocation = _x getVariable "SC_vehicleSpawnLocation";
|
||||
_locationArray = _locationArray - _vehLocation;
|
||||
}forEach SC_liveHelisArray;
|
||||
|
||||
if(count _locationArray > 0) then
|
||||
{
|
||||
_randomLocation = _locationArray call BIS_fnc_selectRandom;
|
||||
diag_log format["_randomLocation: %1",_randomLocation];
|
||||
_tempLocation = _randomLocation select 0;
|
||||
_spawnLocation = [_tempLocation select 0, _tempLocation select 1, _tempLocation select 2];
|
||||
_radius = _randomLocation select 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
_Location = _locations call BIS_fnc_selectRandom;
|
||||
_pos = position _Location;
|
||||
_position = [_pos select 0, _pos select 1, 300];
|
||||
_safePos = [_position,10,100,5,0,20,0] call BIS_fnc_findSafePos;
|
||||
_spawnLocation = [_safePos select 0, _safePos select 1, _height];
|
||||
_spawnLocation = [_safePos select 0, _safePos select 1, _height];
|
||||
_radius = 2000;
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -97,203 +110,193 @@ for "_i" from 1 to _vehiclesToSpawn do
|
||||
_spawnLocation = [_safePos select 0, _safePos select 1, _height];
|
||||
_radius = 2000;
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
_Location = _locations call BIS_fnc_selectRandom;
|
||||
_pos = position _Location;
|
||||
_position = [_pos select 0, _pos select 1, 300];
|
||||
_safePos = [_position,10,100,5,0,20,0] call BIS_fnc_findSafePos;
|
||||
_spawnLocation = [_safePos select 0, _safePos select 1, _height];
|
||||
_spawnLocation = [_safePos select 0, _safePos select 1, _height];
|
||||
_radius = 2000;
|
||||
};
|
||||
|
||||
diag_log format["[OCCUPATION:Sky] found position %1",_spawnLocation];
|
||||
_group = createGroup SC_BanditSide;
|
||||
_group setVariable ["DMS_AllowFreezing",false];
|
||||
[_group,false] call DMS_fnc_FreezeToggle;
|
||||
_group setVariable ["DMS_LockLocality",true];
|
||||
_group setVariable ["DMS_SpawnedGroup",true];
|
||||
_group setVariable ["DMS_Group_Side", SC_BanditSide];
|
||||
|
||||
_VehicleClass = SC_HeliClassToUse call BIS_fnc_selectRandom;
|
||||
_VehicleClassToUse = _VehicleClass select 0;
|
||||
|
||||
heliOkToSpawn = false;
|
||||
while{!heliOkToSpawn} do
|
||||
{
|
||||
diag_log format["[OCCUPATION:Sky] found position %1",_spawnLocation];
|
||||
_group = createGroup SC_BanditSide;
|
||||
_group setVariable ["DMS_AllowFreezing",false];
|
||||
[_group,false] call DMS_fnc_FreezeToggle;
|
||||
_group setVariable ["DMS_LockLocality",true];
|
||||
_group setVariable ["DMS_SpawnedGroup",true];
|
||||
_group setVariable ["DMS_Group_Side", SC_BanditSide];
|
||||
|
||||
_VehicleClass = SC_HeliClassToUse call BIS_fnc_selectRandom;
|
||||
_VehicleClassToUse = _VehicleClass select 0;
|
||||
_VehicleClassAllowedCount = _VehicleClass select 1;
|
||||
_vehicleCount = 0;
|
||||
_VehicleClassToUse = _VehicleClass select 0;
|
||||
|
||||
heliOkToSpawn = false;
|
||||
while{!heliOkToSpawn} do
|
||||
{
|
||||
if(_VehicleClassToUse == typeOf _x) then { _vehicleCount = _vehicleCount + 1; };
|
||||
}forEach SC_liveHelisArray;
|
||||
if(_vehicleCount < _VehicleClassAllowedCount OR _VehicleClassAllowedCount == 0) then { heliOkToSpawn = true; };
|
||||
};
|
||||
|
||||
_vehicle = createVehicle [_VehicleClassToUse, _spawnLocation, [], 0, "NONE"];
|
||||
|
||||
if(!isNull _vehicle) then
|
||||
{
|
||||
_group addVehicle _vehicle;
|
||||
_vehicle setVariable["vehPos",_spawnLocation,true];
|
||||
_vehicle setVariable["vehClass",_VehicleClassToUse,true];
|
||||
_SC_vehicleSpawnLocation = [_spawnLocation,_radius,worldName];
|
||||
diag_log format ["[occupationSky] _SC_vehicleSpawnLocation: %1",_SC_vehicleSpawnLocation];
|
||||
_vehicle setVariable ["SC_vehicleSpawnLocation", _SC_vehicleSpawnLocation,true];
|
||||
|
||||
SC_liveHelis = SC_liveHelis + 1;
|
||||
SC_liveHelisArray = SC_liveHelisArray + [_vehicle];
|
||||
|
||||
_vehicle setVehiclePosition [_spawnLocation, [], 0, "FLY"];
|
||||
_vehicle setVariable ["vehicleID", _spawnLocation, true];
|
||||
_vehicle setFuel 1;
|
||||
_vehicle setDamage 0;
|
||||
_vehicle engineOn true;
|
||||
_vehicle flyInHeight 150;
|
||||
_vehicle lock 0;
|
||||
_vehicle setVehicleLock "UNLOCKED";
|
||||
_vehicle setVariable ["ExileIsLocked", 0, true];
|
||||
_vehicle setVariable ["ExileIsPersistent", false];
|
||||
_vehicle action ["LightOn", _vehicle];
|
||||
|
||||
// Calculate the number of seats in the vehicle and fill the required amount
|
||||
_crewRequired = SC_minimumCrewAmount;
|
||||
if(SC_maximumCrewAmount > SC_minimumCrewAmount) then
|
||||
{
|
||||
_crewRequired = floor(random[SC_minimumCrewAmount,SC_maximumCrewAmount-SC_minimumCrewAmount,SC_maximumCrewAmount]);
|
||||
};
|
||||
_amountOfCrew = 0;
|
||||
_unitPlaced = false;
|
||||
_vehicleRoles = (typeOf _vehicle) call bis_fnc_vehicleRoles;
|
||||
{
|
||||
_unitPlaced = false;
|
||||
_vehicleRole = _x select 0;
|
||||
_vehicleSeat = _x select 1;
|
||||
if(_vehicleRole == "Driver") then
|
||||
_VehicleClass = SC_HeliClassToUse call BIS_fnc_selectRandom;
|
||||
_VehicleClassToUse = _VehicleClass select 0;
|
||||
_VehicleClassAllowedCount = _VehicleClass select 1;
|
||||
_vehicleCount = 0;
|
||||
{
|
||||
_loadOut = ["bandit"] call SC_fnc_selectGear;
|
||||
_unit = [_group,_spawnLocation,"custom","random","bandit","Vehicle",_loadOut] call DMS_fnc_SpawnAISoldier;
|
||||
_amountOfCrew = _amountOfCrew + 1;
|
||||
_unit assignAsDriver _vehicle;
|
||||
_unit moveInDriver _vehicle;
|
||||
//_vehicle lockDriver true;
|
||||
_unit setVariable ["DMS_AssignedVeh",_vehicle];
|
||||
removeBackpackGlobal _unit;
|
||||
_unit addBackpackGlobal "B_Parachute";
|
||||
_unitPlaced = true;
|
||||
};
|
||||
if(_vehicleRole == "Turret") then
|
||||
{
|
||||
_loadOut = ["bandit"] call SC_fnc_selectGear;
|
||||
_unit = [_group,_spawnLocation,"custom","random","bandit","Vehicle",_loadOut] call DMS_fnc_SpawnAISoldier;
|
||||
_amountOfCrew = _amountOfCrew + 1;
|
||||
_unit moveInTurret [_vehicle, _vehicleSeat];
|
||||
_unit setVariable ["DMS_AssignedVeh",_vehicle];
|
||||
removeBackpackGlobal _unit;
|
||||
_unit addBackpackGlobal "B_Parachute";
|
||||
_unitPlaced = true;
|
||||
};
|
||||
if(_vehicleRole == "CARGO" && _amountOfCrew < _crewRequired) then
|
||||
{
|
||||
_loadOut = ["bandit"] call SC_fnc_selectGear;
|
||||
_unit = [_group,_spawnLocation,"custom","random","bandit","Vehicle",_loadOut] call DMS_fnc_SpawnAISoldier;
|
||||
_amountOfCrew = _amountOfCrew + 1;
|
||||
_unit assignAsCargo _vehicle;
|
||||
_unit moveInCargo _vehicle;
|
||||
_unit setVariable ["DMS_AssignedVeh",_vehicle];
|
||||
removeBackpackGlobal _unit;
|
||||
_unit addBackpackGlobal "B_Parachute";
|
||||
_unitPlaced = true;
|
||||
};
|
||||
if(SC_extendedLogging) then
|
||||
{
|
||||
_logDetail = format['[OCCUPATION:Sky] %1 added to %2',_vehicleRole,_vehicle];
|
||||
[_logDetail] call SC_fnc_log;
|
||||
};
|
||||
} forEach _vehicleRoles;
|
||||
|
||||
if(_VehicleClassToUse == typeOf _x) then { _vehicleCount = _vehicleCount + 1; };
|
||||
}forEach SC_liveHelisArray;
|
||||
if(_vehicleCount < _VehicleClassAllowedCount OR _VehicleClassAllowedCount == 0) then { heliOkToSpawn = true; };
|
||||
};
|
||||
|
||||
_vehicle = createVehicle [_VehicleClassToUse, _spawnLocation, [], 0, "NONE"];
|
||||
|
||||
if(!isNull _vehicle) then
|
||||
{
|
||||
_unit = _x;
|
||||
_unitName = ["bandit"] call SC_fnc_selectName;
|
||||
if(!isNil "_unitName") then { _unit setName _unitName; };
|
||||
[_unit] joinSilent grpNull;
|
||||
[_unit] joinSilent _group;
|
||||
}foreach units _group;
|
||||
_group addVehicle _vehicle;
|
||||
_vehicle setVariable["vehPos",_spawnLocation,true];
|
||||
_vehicle setVariable["vehClass",_VehicleClassToUse,true];
|
||||
_SC_vehicleSpawnLocation = [_spawnLocation,_radius,worldName];
|
||||
diag_log format ["[occupationSky] _SC_vehicleSpawnLocation: %1",_SC_vehicleSpawnLocation];
|
||||
_vehicle setVariable ["SC_vehicleSpawnLocation", _SC_vehicleSpawnLocation,true];
|
||||
|
||||
if(SC_extendedLogging && _unitPlaced) then
|
||||
{
|
||||
_logDetail = format['[OCCUPATION:Sky] %1 spawned @ %2',_VehicleClassToUse,_spawnLocation];
|
||||
[_logDetail] call SC_fnc_log;
|
||||
};
|
||||
|
||||
clearMagazineCargoGlobal _vehicle;
|
||||
clearWeaponCargoGlobal _vehicle;
|
||||
clearItemCargoGlobal _vehicle;
|
||||
SC_liveHelis = SC_liveHelis + 1;
|
||||
SC_liveHelisArray = SC_liveHelisArray + [_vehicle];
|
||||
|
||||
_vehicle addMagazineCargoGlobal ["HandGrenade", (random 2)];
|
||||
_vehicle addItemCargoGlobal ["ItemGPS", (random 1)];
|
||||
_vehicle addItemCargoGlobal ["Exile_Item_InstaDoc", (random 1)];
|
||||
_vehicle addItemCargoGlobal ["Exile_Item_PlasticBottleFreshWater", 2 + (random 2)];
|
||||
_vehicle addItemCargoGlobal ["Exile_Item_EMRE", 2 + (random 2)];
|
||||
|
||||
// Add weapons with ammo to the vehicle
|
||||
_possibleWeapons =
|
||||
[
|
||||
"arifle_MXM_Black_F",
|
||||
"arifle_MXM_F",
|
||||
"srifle_DMR_01_F",
|
||||
"srifle_DMR_02_camo_F",
|
||||
"srifle_DMR_02_F",
|
||||
"srifle_DMR_02_sniper_F",
|
||||
"srifle_DMR_03_F",
|
||||
"srifle_DMR_03_khaki_F",
|
||||
"srifle_DMR_03_multicam_F",
|
||||
"srifle_DMR_03_tan_F",
|
||||
"srifle_DMR_03_woodland_F",
|
||||
"srifle_DMR_04_F",
|
||||
"srifle_DMR_04_Tan_F",
|
||||
"srifle_DMR_05_blk_F",
|
||||
"srifle_DMR_05_hex_F",
|
||||
"srifle_DMR_05_tan_f",
|
||||
"srifle_DMR_06_camo_F",
|
||||
"srifle_DMR_06_olive_F",
|
||||
"srifle_EBR_F",
|
||||
"srifle_GM6_camo_F",
|
||||
"srifle_GM6_F",
|
||||
"srifle_LRR_camo_F",
|
||||
"srifle_LRR_F"
|
||||
];
|
||||
_amountOfWeapons = 1 + (random 3);
|
||||
|
||||
for "_i" from 1 to _amountOfWeapons do
|
||||
_vehicle setVehiclePosition [_spawnLocation, [], 0, "FLY"];
|
||||
_vehicle setVariable ["vehicleID", _spawnLocation, true];
|
||||
_vehicle setFuel 1;
|
||||
_vehicle setDamage 0;
|
||||
_vehicle engineOn true;
|
||||
_vehicle flyInHeight 150;
|
||||
_vehicle lock 0;
|
||||
_vehicle setVehicleLock "UNLOCKED";
|
||||
_vehicle setVariable ["ExileIsLocked", 0, true];
|
||||
_vehicle setVariable ["ExileIsPersistent", false];
|
||||
_vehicle action ["LightOn", _vehicle];
|
||||
|
||||
// Calculate the number of seats in the vehicle and fill the required amount
|
||||
_crewRequired = SC_minimumCrewAmount;
|
||||
if(SC_maximumCrewAmount > SC_minimumCrewAmount) then
|
||||
{
|
||||
_crewRequired = floor(random[SC_minimumCrewAmount,SC_maximumCrewAmount-SC_minimumCrewAmount,SC_maximumCrewAmount]);
|
||||
};
|
||||
_amountOfCrew = 0;
|
||||
_unitPlaced = false;
|
||||
_vehicleRoles = (typeOf _vehicle) call bis_fnc_vehicleRoles;
|
||||
{
|
||||
_unitPlaced = false;
|
||||
_vehicleRole = _x select 0;
|
||||
_vehicleSeat = _x select 1;
|
||||
if(_vehicleRole == "Driver") then
|
||||
{
|
||||
_loadOut = ["bandit"] call SC_fnc_selectGear;
|
||||
_unit = [_group,_spawnLocation,"custom","random","bandit","Vehicle",_loadOut] call DMS_fnc_SpawnAISoldier;
|
||||
_amountOfCrew = _amountOfCrew + 1;
|
||||
_unit assignAsDriver _vehicle;
|
||||
_unit moveInDriver _vehicle;
|
||||
//_vehicle lockDriver true;
|
||||
_unit setVariable ["DMS_AssignedVeh",_vehicle];
|
||||
removeBackpackGlobal _unit;
|
||||
_unit addBackpackGlobal "B_Parachute";
|
||||
_unitPlaced = true;
|
||||
};
|
||||
if(_vehicleRole == "Turret") then
|
||||
{
|
||||
_loadOut = ["bandit"] call SC_fnc_selectGear;
|
||||
_unit = [_group,_spawnLocation,"custom","random","bandit","Vehicle",_loadOut] call DMS_fnc_SpawnAISoldier;
|
||||
_amountOfCrew = _amountOfCrew + 1;
|
||||
_unit moveInTurret [_vehicle, _vehicleSeat];
|
||||
_unit setVariable ["DMS_AssignedVeh",_vehicle];
|
||||
removeBackpackGlobal _unit;
|
||||
_unit addBackpackGlobal "B_Parachute";
|
||||
_unitPlaced = true;
|
||||
};
|
||||
if(_vehicleRole == "CARGO" && _amountOfCrew < _crewRequired) then
|
||||
{
|
||||
_loadOut = ["bandit"] call SC_fnc_selectGear;
|
||||
_unit = [_group,_spawnLocation,"custom","random","bandit","Vehicle",_loadOut] call DMS_fnc_SpawnAISoldier;
|
||||
_amountOfCrew = _amountOfCrew + 1;
|
||||
_unit assignAsCargo _vehicle;
|
||||
_unit moveInCargo _vehicle;
|
||||
_unit setVariable ["DMS_AssignedVeh",_vehicle];
|
||||
removeBackpackGlobal _unit;
|
||||
_unit addBackpackGlobal "B_Parachute";
|
||||
_unitPlaced = true;
|
||||
};
|
||||
if(SC_extendedLogging) then
|
||||
{
|
||||
_logDetail = format['[OCCUPATION:Sky] %1 added to %2',_vehicleRole,_vehicle];
|
||||
[_logDetail] call SC_fnc_log;
|
||||
};
|
||||
} forEach _vehicleRoles;
|
||||
|
||||
{
|
||||
_unit = _x;
|
||||
_unitName = ["bandit"] call SC_fnc_selectName;
|
||||
if(!isNil "_unitName") then { _unit setName _unitName; };
|
||||
[_unit] joinSilent grpNull;
|
||||
[_unit] joinSilent _group;
|
||||
}foreach units _group;
|
||||
|
||||
if(SC_extendedLogging && _unitPlaced) then
|
||||
{
|
||||
_logDetail = format['[OCCUPATION:Sky] %1 spawned @ %2',_VehicleClassToUse,_spawnLocation];
|
||||
[_logDetail] call SC_fnc_log;
|
||||
};
|
||||
|
||||
clearMagazineCargoGlobal _vehicle;
|
||||
clearWeaponCargoGlobal _vehicle;
|
||||
clearItemCargoGlobal _vehicle;
|
||||
|
||||
_vehicle addMagazineCargoGlobal ["HandGrenade", (random 2)];
|
||||
_vehicle addItemCargoGlobal ["ItemGPS", (random 1)];
|
||||
_vehicle addItemCargoGlobal ["Exile_Item_InstaDoc", (random 1)];
|
||||
_vehicle addItemCargoGlobal ["Exile_Item_PlasticBottleFreshWater", 2 + (random 2)];
|
||||
_vehicle addItemCargoGlobal ["Exile_Item_EMRE", 2 + (random 2)];
|
||||
|
||||
// Add weapons with ammo to the vehicle
|
||||
_possibleWeapons =
|
||||
[
|
||||
"arifle_MXM_Black_F",
|
||||
"arifle_MXM_F",
|
||||
"srifle_DMR_01_F",
|
||||
"srifle_DMR_02_camo_F",
|
||||
"srifle_DMR_02_F",
|
||||
"srifle_DMR_02_sniper_F",
|
||||
"srifle_DMR_03_F",
|
||||
"srifle_DMR_03_khaki_F",
|
||||
"srifle_DMR_03_multicam_F",
|
||||
"srifle_DMR_03_tan_F",
|
||||
"srifle_DMR_03_woodland_F",
|
||||
"srifle_DMR_04_F",
|
||||
"srifle_DMR_04_Tan_F",
|
||||
"srifle_DMR_05_blk_F",
|
||||
"srifle_DMR_05_hex_F",
|
||||
"srifle_DMR_05_tan_f",
|
||||
"srifle_DMR_06_camo_F",
|
||||
"srifle_DMR_06_olive_F",
|
||||
"srifle_EBR_F",
|
||||
"srifle_GM6_camo_F",
|
||||
"srifle_GM6_F",
|
||||
"srifle_LRR_camo_F",
|
||||
"srifle_LRR_F"
|
||||
];
|
||||
_amountOfWeapons = 1 + (random 3);
|
||||
|
||||
for "_i" from 1 to _amountOfWeapons do
|
||||
{
|
||||
_weaponToAdd = _possibleWeapons call BIS_fnc_selectRandom;
|
||||
_vehicle addWeaponCargoGlobal [_weaponToAdd,1];
|
||||
|
||||
_magazinesToAdd = getArray (configFile >> "CfgWeapons" >> _weaponToAdd >> "magazines");
|
||||
_vehicle addMagazineCargoGlobal [(_magazinesToAdd select 0),round random 3];
|
||||
};
|
||||
|
||||
|
||||
[_group, _spawnLocation, _radius] call bis_fnc_taskPatrol;
|
||||
_group setBehaviour "AWARE";
|
||||
_group setCombatMode "RED";
|
||||
_vehicle addEventHandler ["getin", "_this call SC_fnc_claimVehicle;"];
|
||||
_vehicle addMPEventHandler ["mpkilled", "_this call SC_fnc_vehicleDestroyed;"];
|
||||
_vehicle addMPEventHandler ["mphit", "_this call SC_fnc_hitAir;"];
|
||||
_vehicle setVariable ["SC_crewEjected", false,true];
|
||||
sleep 0.2;
|
||||
}
|
||||
else
|
||||
{
|
||||
_weaponToAdd = _possibleWeapons call BIS_fnc_selectRandom;
|
||||
_vehicle addWeaponCargoGlobal [_weaponToAdd,1];
|
||||
|
||||
_magazinesToAdd = getArray (configFile >> "CfgWeapons" >> _weaponToAdd >> "magazines");
|
||||
_vehicle addMagazineCargoGlobal [(_magazinesToAdd select 0),round random 3];
|
||||
_logDetail = format['[OCCUPATION:Sky] aircraft %1 failed to spawn (check classname is correct)',_VehicleClassToUse];
|
||||
[_logDetail] call SC_fnc_log;
|
||||
};
|
||||
|
||||
|
||||
[_group, _spawnLocation, _radius] call bis_fnc_taskPatrol;
|
||||
_group setBehaviour "AWARE";
|
||||
_group setCombatMode "RED";
|
||||
_vehicle addEventHandler ["getin", "_this call SC_fnc_claimVehicle;"];
|
||||
_vehicle addMPEventHandler ["mpkilled", "_this call SC_fnc_vehicleDestroyed;"];
|
||||
_vehicle addMPEventHandler ["mphit", "_this call SC_fnc_hitAir;"];
|
||||
_vehicle setVariable ["SC_crewEjected", false,true];
|
||||
sleep 0.2;
|
||||
}
|
||||
else
|
||||
{
|
||||
_logDetail = format['[OCCUPATION:Sky] aircraft %1 failed to spawn (check classname is correct)',_VehicleClassToUse];
|
||||
[_logDetail] call SC_fnc_log;
|
||||
};
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
@ -54,264 +54,296 @@ if(_vehiclesToSpawn > 0) then
|
||||
};
|
||||
|
||||
_useLaunchers = DMS_ai_use_launchers;
|
||||
for "_j" from 1 to _vehiclesToSpawn do
|
||||
for "_i" from 1 to _vehiclesToSpawn do
|
||||
{
|
||||
private["_group"];
|
||||
|
||||
_locationArray = SC_occupyVehicleFixedPositions;
|
||||
|
||||
// Select the spawn position
|
||||
_spawnLocation = [0,0,0];
|
||||
_radius = 2000;
|
||||
if(SC_occupyVehicleUseFixedPos) then
|
||||
if (_vehiclesToSpawn > 0) then
|
||||
{
|
||||
{
|
||||
_vehLocation = _x getVariable "SC_vehicleSpawnLocation";
|
||||
_locationArray = _locationArray - [_vehLocation];
|
||||
}forEach SC_liveVehiclesArray;
|
||||
private["_group"];
|
||||
|
||||
if(count _locationArray > 0) then
|
||||
_locationArray = SC_occupyVehicleFixedPositions;
|
||||
|
||||
// Select the spawn position
|
||||
_spawnLocation = [0,0,0];
|
||||
_radius = 2000;
|
||||
if(SC_occupyVehicleUseFixedPos) then
|
||||
{
|
||||
_randomLocation = _locationArray call BIS_fnc_selectRandom;
|
||||
_spawnLocation = _randomLocation select 0;
|
||||
_radius = _randomLocation select 1;
|
||||
_locationArray = _locationArray - [_randomLocation];
|
||||
{
|
||||
_vehLocation = _x getVariable "SC_vehicleSpawnLocation";
|
||||
_locationArray = _locationArray - [_vehLocation];
|
||||
}forEach SC_liveVehiclesArray;
|
||||
|
||||
if(count _locationArray > 0) then
|
||||
{
|
||||
_randomLocation = _locationArray call BIS_fnc_selectRandom;
|
||||
_spawnLocation = _randomLocation select 0;
|
||||
_radius = _randomLocation select 1;
|
||||
_locationArray = _locationArray - [_randomLocation];
|
||||
}
|
||||
else
|
||||
{
|
||||
_spawnLocation = [ true, false ] call SC_fnc_findsafePos;
|
||||
_radius = 2000;
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
_spawnLocation = [ true, false ] call SC_fnc_findsafePos;
|
||||
_radius = 2000;
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
_spawnLocation = [ true, false ] call SC_fnc_findsafePos;
|
||||
_radius = 2000;
|
||||
};
|
||||
|
||||
diag_log format["[OCCUPATION:Vehicle] found position %1",_spawnLocation];
|
||||
_group = createGroup SC_BanditSide;
|
||||
if(_side == "survivor") then
|
||||
{
|
||||
deleteGroup _group;
|
||||
_group = createGroup SC_SurvivorSide;
|
||||
};
|
||||
_group setVariable ["DMS_AllowFreezing",false];
|
||||
_group setVariable ["DMS_LockLocality",false];
|
||||
_group setVariable ["DMS_SpawnedGroup",true];
|
||||
_group setVariable ["DMS_Group_Side", _side];
|
||||
|
||||
_VehicleClass = SC_VehicleClassToUse call BIS_fnc_selectRandom;
|
||||
_VehicleClassToUse = _VehicleClass select 0;
|
||||
vehicleOkToSpawn = false;
|
||||
|
||||
// Percentage chance to spawn a rare vehicle
|
||||
_rareChance = round (random 100);
|
||||
if(_rareChance >= 90) then
|
||||
{
|
||||
|
||||
while{!vehicleOkToSpawn} do
|
||||
{
|
||||
_VehicleClass = SC_VehicleClassToUseRare call BIS_fnc_selectRandom;
|
||||
_VehicleClassToUse = _VehicleClass select 0;
|
||||
_VehicleClassAllowedCount = _VehicleClass select 1;
|
||||
_vehicleCount = 0;
|
||||
{
|
||||
if(_VehicleClassToUse == typeOf _x) then { _vehicleCount = _vehicleCount + 1; };
|
||||
}forEach SC_liveVehiclesArray;
|
||||
if(_vehicleCount < _VehicleClassAllowedCount OR _VehicleClassAllowedCount == 0) then { vehicleOkToSpawn = true; };
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
while{!vehicleOkToSpawn} do
|
||||
{
|
||||
_VehicleClass = SC_VehicleClassToUse call BIS_fnc_selectRandom;
|
||||
_VehicleClassToUse = _VehicleClass select 0;
|
||||
_VehicleClassAllowedCount = _VehicleClass select 1;
|
||||
_vehicleCount = 0;
|
||||
{
|
||||
if(_VehicleClassToUse == typeOf _x) then { _vehicleCount = _vehicleCount + 1; };
|
||||
}forEach SC_liveVehiclesArray;
|
||||
if(_vehicleCount < _VehicleClassAllowedCount OR _VehicleClassAllowedCount == 0) then { vehicleOkToSpawn = true; };
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
_vehicle = createVehicle [_VehicleClassToUse, _spawnLocation, [], 0, "NONE"];
|
||||
|
||||
if(!isNull _vehicle) then
|
||||
{
|
||||
_group addVehicle _vehicle;
|
||||
|
||||
SC_liveVehiclesArray = SC_liveVehiclesArray + [_vehicle];
|
||||
|
||||
_vehicle setVariable ["SC_repairStatus",false,true];
|
||||
_vehicle setVariable ["vehPos",_spawnLocation,true];
|
||||
_vehicle setVariable ["vehClass",_VehicleClassToUse,true];
|
||||
_SC_vehicleSpawnLocation = [_spawnLocation,_radius,worldName];
|
||||
_vehicle setVariable ["SC_vehicleSpawnLocation", _SC_vehicleSpawnLocation,true];
|
||||
_vehicle setFuel 1;
|
||||
_vehicle engineOn true;
|
||||
|
||||
if(SC_occupyVehiclesLocked) then
|
||||
{
|
||||
_vehicle lock 2;
|
||||
_vehicle setVehicleLock "LOCKED";
|
||||
_vehicle setVariable ["ExileIsLocked", 1, true];
|
||||
}
|
||||
else
|
||||
{
|
||||
_vehicle lock 0;
|
||||
_vehicle setVehicleLock "UNLOCKED";
|
||||
_vehicle setVariable ["ExileIsLocked", 0, true];
|
||||
};
|
||||
|
||||
diag_log format["[OCCUPATION:Vehicle] found position %1",_spawnLocation];
|
||||
_group = createGroup SC_BanditSide;
|
||||
if(_side == "survivor") then
|
||||
{
|
||||
deleteGroup _group;
|
||||
_group = createGroup SC_SurvivorSide;
|
||||
};
|
||||
_group setVariable ["DMS_AllowFreezing",false];
|
||||
_group setVariable ["DMS_LockLocality",false];
|
||||
_group setVariable ["DMS_SpawnedGroup",true];
|
||||
_group setVariable ["DMS_Group_Side", _side];
|
||||
|
||||
_vehicle setVariable ["ExileIsPersistent", false];
|
||||
_vehicle setSpeedMode "LIMITED";
|
||||
_vehicle limitSpeed 60;
|
||||
_vehicle action ["LightOn", _vehicle];
|
||||
_vehicle addEventHandler ["getin", "_this call SC_fnc_getIn;"];
|
||||
_vehicle addEventHandler ["getout", "_this call SC_fnc_getOut;"];
|
||||
_vehicle addMPEventHandler ["mpkilled", "_this call SC_fnc_vehicleDestroyed;"];
|
||||
_vehicle addMPEventHandler ["mphit", "_this call SC_fnc_hitLand;"];
|
||||
|
||||
_VehicleClass = SC_VehicleClassToUse call BIS_fnc_selectRandom;
|
||||
_VehicleClassToUse = _VehicleClass select 0;
|
||||
vehicleOkToSpawn = false;
|
||||
|
||||
// Percentage chance to spawn a rare vehicle
|
||||
_rareChance = round (random 100);
|
||||
if(_rareChance >= 90) then
|
||||
{
|
||||
|
||||
while{!vehicleOkToSpawn} do
|
||||
{
|
||||
if (_side == "survivor") then {
|
||||
|
||||
_VehicleClass = SC_SurvivorVehicleClassToUseRare call BIS_fnc_selectRandom;
|
||||
_VehicleClassToUse = _VehicleClass select 0;
|
||||
_VehicleClassAllowedCount = _VehicleClass select 1;
|
||||
_vehicleCount = 0;
|
||||
{
|
||||
if(_VehicleClassToUse == typeOf _x) then { _vehicleCount = _vehicleCount + 1; };
|
||||
}forEach SC_liveVehiclesArray;
|
||||
if(_vehicleCount < _VehicleClassAllowedCount OR _VehicleClassAllowedCount == 0) then { vehicleOkToSpawn = true; };
|
||||
|
||||
} else {
|
||||
|
||||
_VehicleClass = SC_VehicleClassToUseRare call BIS_fnc_selectRandom;
|
||||
_VehicleClassToUse = _VehicleClass select 0;
|
||||
_VehicleClassAllowedCount = _VehicleClass select 1;
|
||||
_vehicleCount = 0;
|
||||
{
|
||||
if(_VehicleClassToUse == typeOf _x) then { _vehicleCount = _vehicleCount + 1; };
|
||||
}forEach SC_liveVehiclesArray;
|
||||
if(_vehicleCount < _VehicleClassAllowedCount OR _VehicleClassAllowedCount == 0) then { vehicleOkToSpawn = true; };
|
||||
};
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
while{!vehicleOkToSpawn} do
|
||||
{
|
||||
if (_side == "survivor") then {
|
||||
|
||||
_VehicleClass = SC_SurvivorVehicleClassToUse call BIS_fnc_selectRandom;
|
||||
_VehicleClassToUse = _VehicleClass select 0;
|
||||
_VehicleClassAllowedCount = _VehicleClass select 1;
|
||||
_vehicleCount = 0;
|
||||
{
|
||||
if(_VehicleClassToUse == typeOf _x) then { _vehicleCount = _vehicleCount + 1; };
|
||||
}forEach SC_liveVehiclesArray;
|
||||
if(_vehicleCount < _VehicleClassAllowedCount OR _VehicleClassAllowedCount == 0) then { vehicleOkToSpawn = true; };
|
||||
|
||||
} else {
|
||||
|
||||
_VehicleClass = SC_VehicleClassToUse call BIS_fnc_selectRandom;
|
||||
_VehicleClassToUse = _VehicleClass select 0;
|
||||
_VehicleClassAllowedCount = _VehicleClass select 1;
|
||||
_vehicleCount = 0;
|
||||
{
|
||||
if(_VehicleClassToUse == typeOf _x) then { _vehicleCount = _vehicleCount + 1; };
|
||||
}forEach SC_liveVehiclesArray;
|
||||
if(_vehicleCount < _VehicleClassAllowedCount OR _VehicleClassAllowedCount == 0) then { vehicleOkToSpawn = true; };
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
_vehicle = createVehicle [_VehicleClassToUse, _spawnLocation, [], 0, "NONE"];
|
||||
|
||||
if(!isNull _vehicle) then
|
||||
{
|
||||
_group addVehicle _vehicle;
|
||||
|
||||
SC_liveVehiclesArray = SC_liveVehiclesArray + [_vehicle];
|
||||
|
||||
|
||||
|
||||
// Calculate the number of seats in the vehicle and fill the required amount
|
||||
_crewRequired = SC_minimumCrewAmount;
|
||||
if(SC_maximumCrewAmount > SC_minimumCrewAmount) then
|
||||
{
|
||||
_crewRequired = ceil(random[SC_minimumCrewAmount,SC_maximumCrewAmount-SC_minimumCrewAmount,SC_maximumCrewAmount]);
|
||||
};
|
||||
_amountOfCrew = 0;
|
||||
_unitPlaced = false;
|
||||
_vehicleRoles = (typeOf _vehicle) call bis_fnc_vehicleRoles;
|
||||
{
|
||||
_unitPlaced = false;
|
||||
_vehicleRole = _x select 0;
|
||||
_vehicleSeat = _x select 1;
|
||||
if(_vehicleRole == "Driver") then
|
||||
{
|
||||
_loadOut = [_side] call SC_fnc_selectGear;
|
||||
_unit = [_group,_spawnLocation,"custom","random",_side,"Vehicle",_loadOut] call DMS_fnc_SpawnAISoldier;
|
||||
_amountOfCrew = _amountOfCrew + 1;
|
||||
_unit disableAI "FSM";
|
||||
_unit disableAI "MOVE";
|
||||
[_side,_unit] call SC_fnc_addMarker;
|
||||
_unit removeAllMPEventHandlers "mphit";
|
||||
_unit removeAllMPEventHandlers "mpkilled";
|
||||
_unit disableAI "TARGET";
|
||||
_unit disableAI "AUTOTARGET";
|
||||
_unit disableAI "AUTOCOMBAT";
|
||||
_unit disableAI "COVER";
|
||||
_unit disableAI "SUPPRESSION";
|
||||
_unit assignAsDriver _vehicle;
|
||||
_unit moveInDriver _vehicle;
|
||||
_unit setVariable ["DMS_AssignedVeh",_vehicle];
|
||||
_unit setVariable ["SC_drivenVehicle", _vehicle,true];
|
||||
_unit addMPEventHandler ["mpkilled", "_this call SC_fnc_driverKilled;"];
|
||||
_vehicle setVariable ["SC_assignedDriver", _unit,true];
|
||||
_vehicle setVariable ["SC_repairStatus",false,true];
|
||||
_vehicle setVariable ["vehPos",_spawnLocation,true];
|
||||
_vehicle setVariable ["vehClass",_VehicleClassToUse,true];
|
||||
_SC_vehicleSpawnLocation = [_spawnLocation,_radius,worldName];
|
||||
_vehicle setVariable ["SC_vehicleSpawnLocation", _SC_vehicleSpawnLocation,true];
|
||||
_vehicle setFuel 1;
|
||||
_vehicle engineOn true;
|
||||
|
||||
if(SC_occupyVehiclesLocked) then
|
||||
{
|
||||
_vehicle lock 2;
|
||||
_vehicle setVehicleLock "LOCKED";
|
||||
_vehicle setVariable ["ExileIsLocked", 1, true];
|
||||
}
|
||||
else
|
||||
{
|
||||
_vehicle lock 0;
|
||||
_vehicle setVehicleLock "UNLOCKED";
|
||||
_vehicle setVariable ["ExileIsLocked", 0, true];
|
||||
};
|
||||
|
||||
_vehicle setVariable ["ExileIsPersistent", false];
|
||||
_vehicle setSpeedMode "LIMITED";
|
||||
_vehicle limitSpeed 60;
|
||||
_vehicle action ["LightOn", _vehicle];
|
||||
_vehicle addEventHandler ["getin", "_this call SC_fnc_getIn;"];
|
||||
_vehicle addEventHandler ["getout", "_this call SC_fnc_getOut;"];
|
||||
_vehicle addMPEventHandler ["mpkilled", "_this call SC_fnc_vehicleDestroyed;"];
|
||||
_vehicle addMPEventHandler ["mphit", "_this call SC_fnc_hitLand;"];
|
||||
|
||||
|
||||
};
|
||||
if(_vehicleRole == "Turret" && _amountOfCrew < _crewRequired) then
|
||||
{
|
||||
_loadOut = [_side] call SC_fnc_selectGear;
|
||||
_unit = [_group,_spawnLocation,"custom","random",_side,"Vehicle",_loadOut] call DMS_fnc_SpawnAISoldier;
|
||||
_amountOfCrew = _amountOfCrew + 1;
|
||||
[_side,_unit] call SC_fnc_addMarker;
|
||||
_unit moveInTurret [_vehicle, _vehicleSeat];
|
||||
_unit setVariable ["DMS_AssignedVeh",_vehicle];
|
||||
_unit addMPEventHandler ["mpkilled", "_this call SC_fnc_unitMPKilled;"];
|
||||
_unitPlaced = true;
|
||||
};
|
||||
if(_vehicleRole == "CARGO" && _amountOfCrew < _crewRequired) then
|
||||
{
|
||||
_loadOut = [_side] call SC_fnc_selectGear;
|
||||
_unit = [_group,_spawnLocation,"custom","random",_side,"Vehicle",_loadOut] call DMS_fnc_SpawnAISoldier;
|
||||
_amountOfCrew = _amountOfCrew + 1;
|
||||
[_side,_unit] call SC_fnc_addMarker;
|
||||
_unit assignAsCargo _vehicle;
|
||||
_unit moveInCargo _vehicle;
|
||||
_unit setVariable ["DMS_AssignedVeh",_vehicle];
|
||||
_unit addMPEventHandler ["mpkilled", "_this call SC_fnc_unitMPKilled;"];
|
||||
_unitPlaced = true;
|
||||
};
|
||||
if(SC_extendedLogging && _unitPlaced) then
|
||||
{
|
||||
_logDetail = format['[OCCUPATION:Vehicle] %1 %2 added to vehicle %3',_side,_vehicleRole,_vehicle];
|
||||
[_logDetail] call SC_fnc_log;
|
||||
};
|
||||
if(_amountOfCrew == _crewRequired) exitWith{};
|
||||
} forEach _vehicleRoles;
|
||||
|
||||
|
||||
// Calculate the number of seats in the vehicle and fill the required amount
|
||||
_crewRequired = SC_minimumCrewAmount;
|
||||
if(SC_maximumCrewAmount > SC_minimumCrewAmount) then
|
||||
{
|
||||
_crewRequired = ceil(random[SC_minimumCrewAmount,SC_maximumCrewAmount-SC_minimumCrewAmount,SC_maximumCrewAmount]);
|
||||
};
|
||||
_amountOfCrew = 0;
|
||||
_unitPlaced = false;
|
||||
_vehicleRoles = (typeOf _vehicle) call bis_fnc_vehicleRoles;
|
||||
{
|
||||
_unitPlaced = false;
|
||||
_vehicleRole = _x select 0;
|
||||
_vehicleSeat = _x select 1;
|
||||
if(_vehicleRole == "Driver") then
|
||||
{
|
||||
_loadOut = [_side] call SC_fnc_selectGear;
|
||||
_unit = [_group,_spawnLocation,"custom","random",_side,"Vehicle",_loadOut] call DMS_fnc_SpawnAISoldier;
|
||||
_amountOfCrew = _amountOfCrew + 1;
|
||||
_unit disableAI "FSM";
|
||||
_unit disableAI "MOVE";
|
||||
[_side,_unit] call SC_fnc_addMarker;
|
||||
_unit removeAllMPEventHandlers "mphit";
|
||||
_unit removeAllMPEventHandlers "mpkilled";
|
||||
_unit disableAI "TARGET";
|
||||
_unit disableAI "AUTOTARGET";
|
||||
_unit disableAI "AUTOCOMBAT";
|
||||
_unit disableAI "COVER";
|
||||
_unit disableAI "SUPPRESSION";
|
||||
_unit assignAsDriver _vehicle;
|
||||
_unit moveInDriver _vehicle;
|
||||
_unit setVariable ["DMS_AssignedVeh",_vehicle];
|
||||
_unit setVariable ["SC_drivenVehicle", _vehicle,true];
|
||||
_unit addMPEventHandler ["mpkilled", "_this call SC_fnc_driverKilled;"];
|
||||
_vehicle setVariable ["SC_assignedDriver", _unit,true];
|
||||
|
||||
// Get the AI to shut the fuck up :)
|
||||
enableSentences false;
|
||||
enableRadio false;
|
||||
};
|
||||
if(_vehicleRole == "Turret" && _amountOfCrew < _crewRequired) then
|
||||
{
|
||||
_loadOut = [_side] call SC_fnc_selectGear;
|
||||
_unit = [_group,_spawnLocation,"custom","random",_side,"Vehicle",_loadOut] call DMS_fnc_SpawnAISoldier;
|
||||
_amountOfCrew = _amountOfCrew + 1;
|
||||
[_side,_unit] call SC_fnc_addMarker;
|
||||
_unit moveInTurret [_vehicle, _vehicleSeat];
|
||||
_unit setVariable ["DMS_AssignedVeh",_vehicle];
|
||||
_unit addMPEventHandler ["mpkilled", "_this call SC_fnc_unitMPKilled;"];
|
||||
_unitPlaced = true;
|
||||
};
|
||||
if(_vehicleRole == "CARGO" && _amountOfCrew < _crewRequired) then
|
||||
{
|
||||
_loadOut = [_side] call SC_fnc_selectGear;
|
||||
_unit = [_group,_spawnLocation,"custom","random",_side,"Vehicle",_loadOut] call DMS_fnc_SpawnAISoldier;
|
||||
_amountOfCrew = _amountOfCrew + 1;
|
||||
[_side,_unit] call SC_fnc_addMarker;
|
||||
_unit assignAsCargo _vehicle;
|
||||
_unit moveInCargo _vehicle;
|
||||
_unit setVariable ["DMS_AssignedVeh",_vehicle];
|
||||
_unit addMPEventHandler ["mpkilled", "_this call SC_fnc_unitMPKilled;"];
|
||||
_unitPlaced = true;
|
||||
};
|
||||
if(SC_extendedLogging && _unitPlaced) then
|
||||
{
|
||||
_logDetail = format['[OCCUPATION:Vehicle] %1 %2 added to vehicle %3',_side,_vehicleRole,_vehicle];
|
||||
[_logDetail] call SC_fnc_log;
|
||||
};
|
||||
if(_amountOfCrew == _crewRequired) exitWith{};
|
||||
} forEach _vehicleRoles;
|
||||
|
||||
_logDetail = format['[OCCUPATION:Vehicle] %3 vehicle %1 spawned @ %2',_VehicleClassToUse,_spawnLocation,_side];
|
||||
[_logDetail] call SC_fnc_log;
|
||||
sleep 2;
|
||||
|
||||
{
|
||||
_unit = _x;
|
||||
_unit enableAI "FSM";
|
||||
_unit enableAI "MOVE";
|
||||
_unit enableAI "TARGET";
|
||||
_unit enableAI "AUTOTARGET";
|
||||
_unit enableAI "AUTOCOMBAT";
|
||||
_unit allowCrewInImmobile false;
|
||||
reload _unit;
|
||||
_unitName = [_side] call SC_fnc_selectName;
|
||||
if(!isNil "_unitName") then { _unit setName _unitName; };
|
||||
}forEach units _group;
|
||||
[_group,false] call DMS_fnc_FreezeToggle;
|
||||
|
||||
[units _group] orderGetIn true;
|
||||
sleep 10;
|
||||
|
||||
[_group, _spawnLocation, 2000] call bis_fnc_taskPatrol;
|
||||
_group setBehaviour "AWARE";
|
||||
_group setCombatMode "RED";
|
||||
sleep 0.2;
|
||||
|
||||
clearMagazineCargoGlobal _vehicle;
|
||||
clearWeaponCargoGlobal _vehicle;
|
||||
clearItemCargoGlobal _vehicle;
|
||||
// Get the AI to shut the fuck up :)
|
||||
enableSentences false;
|
||||
enableRadio false;
|
||||
|
||||
_vehicle addMagazineCargoGlobal ["HandGrenade", (random 2)];
|
||||
_vehicle addItemCargoGlobal ["ItemGPS", (random 1)];
|
||||
_vehicle addItemCargoGlobal ["Exile_Item_InstaDoc", (random 1)];
|
||||
_vehicle addItemCargoGlobal ["Exile_Item_PlasticBottleFreshWater", 2 + (random 2)];
|
||||
_vehicle addItemCargoGlobal ["Exile_Item_EMRE", 2 + (random 2)];
|
||||
|
||||
// Add weapons with ammo to the vehicle
|
||||
_possibleWeapons =
|
||||
[
|
||||
"arifle_MXM_Black_F",
|
||||
"arifle_MXM_F",
|
||||
"arifle_MX_SW_Black_F",
|
||||
"arifle_MX_SW_F",
|
||||
"LMG_Mk200_F",
|
||||
"LMG_Zafir_F"
|
||||
];
|
||||
_amountOfWeapons = 1 + (random 3);
|
||||
|
||||
for "_i" from 1 to _amountOfWeapons do
|
||||
{
|
||||
_weaponToAdd = _possibleWeapons call BIS_fnc_selectRandom;
|
||||
_vehicle addWeaponCargoGlobal [_weaponToAdd,1];
|
||||
|
||||
_magazinesToAdd = getArray (configFile >> "CfgWeapons" >> _weaponToAdd >> "magazines");
|
||||
_vehicle addMagazineCargoGlobal [(_magazinesToAdd select 0),round random 3];
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
_logDetail = format['[OCCUPATION:Vehicle] vehicle %1 failed to spawn (check classname is correct)',_VehicleClassToUse];
|
||||
[_logDetail] call SC_fnc_log;
|
||||
};
|
||||
_logDetail = format['[OCCUPATION:Vehicle] %3 vehicle %1 spawned @ %2',_VehicleClassToUse,_spawnLocation,_side];
|
||||
[_logDetail] call SC_fnc_log;
|
||||
sleep 2;
|
||||
|
||||
{
|
||||
_unit = _x;
|
||||
_unit enableAI "FSM";
|
||||
_unit enableAI "MOVE";
|
||||
_unit enableAI "TARGET";
|
||||
_unit enableAI "AUTOTARGET";
|
||||
_unit enableAI "AUTOCOMBAT";
|
||||
_unit allowCrewInImmobile false;
|
||||
reload _unit;
|
||||
_unitName = [_side] call SC_fnc_selectName;
|
||||
if(!isNil "_unitName") then { _unit setName _unitName; };
|
||||
}forEach units _group;
|
||||
[_group,false] call DMS_fnc_FreezeToggle;
|
||||
|
||||
[units _group] orderGetIn true;
|
||||
sleep 10;
|
||||
|
||||
[_group, _spawnLocation, 2000] call bis_fnc_taskPatrol;
|
||||
_group setBehaviour "AWARE";
|
||||
_group setCombatMode "RED";
|
||||
sleep 0.2;
|
||||
|
||||
clearMagazineCargoGlobal _vehicle;
|
||||
clearWeaponCargoGlobal _vehicle;
|
||||
clearItemCargoGlobal _vehicle;
|
||||
|
||||
_vehicle addMagazineCargoGlobal ["HandGrenade", (random 2)];
|
||||
_vehicle addItemCargoGlobal ["ItemGPS", (random 1)];
|
||||
_vehicle addItemCargoGlobal ["Exile_Item_InstaDoc", (random 1)];
|
||||
_vehicle addItemCargoGlobal ["Exile_Item_PlasticBottleFreshWater", 2 + (random 2)];
|
||||
_vehicle addItemCargoGlobal ["Exile_Item_EMRE", 2 + (random 2)];
|
||||
|
||||
// Add weapons with ammo to the vehicle
|
||||
_possibleWeapons =
|
||||
[
|
||||
"arifle_MXM_Black_F",
|
||||
"arifle_MXM_F",
|
||||
"arifle_MX_SW_Black_F",
|
||||
"arifle_MX_SW_F",
|
||||
"LMG_Mk200_F",
|
||||
"LMG_Zafir_F"
|
||||
];
|
||||
_amountOfWeapons = 1 + (random 3);
|
||||
|
||||
for "_i" from 1 to _amountOfWeapons do
|
||||
{
|
||||
_weaponToAdd = _possibleWeapons call BIS_fnc_selectRandom;
|
||||
_vehicle addWeaponCargoGlobal [_weaponToAdd,1];
|
||||
|
||||
_magazinesToAdd = getArray (configFile >> "CfgWeapons" >> _weaponToAdd >> "magazines");
|
||||
_vehicle addMagazineCargoGlobal [(_magazinesToAdd select 0),round random 3];
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
_logDetail = format['[OCCUPATION:Vehicle] vehicle %1 failed to spawn (check classname is correct)',_VehicleClassToUse];
|
||||
[_logDetail] call SC_fnc_log;
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
};
|
||||
SC_liveVehicles = count(SC_liveVehiclesArray);
|
||||
|
Loading…
Reference in New Issue
Block a user