mirror of
https://github.com/Defent/DMS_Exile.git
synced 2024-08-30 16:52:12 +00:00
Bunch of stuff...
* NEW CONFIG VALUES: ```DMS_GodmodeCrates``` and ```DMS_CrateCase_Sniper```. DMS_GodmodeCrates is pretty self-explanatory :P * NEW FEATURE FOR "DMS_fnc_FillCrate": You can now define "crate cases" in the config (such as "DMS_CrateCase_Sniper"). Passing the "crate case" name (such as "Sniper") will make the crate spawn with the exact gear defined in the config. Refer to the testmission.sqf (line 80) and "DMS_CrateCase_Sniper" config for an example. * Spawned vehicles will now be LOCKED and INVINCIBLE until the mission is completed. * Spawned vehicles spawn with 100% fuel. * "Fixed" some cases where killing from a mounted gun would reset your money/respect (maybe). * Fixed some spelling errors and incorrect names in some of the mission messages/markers. * Fixed DMS_fnc_FindSafePos for Bornholm. If you have any issues with custom maps, please let us know. * Fixed backpack spawning on the ground behind an AI unit that was supposed to get a launcher.
This commit is contained in:
parent
21878d400c
commit
2650157577
@ -417,6 +417,40 @@ DMS_DEBUG = false;
|
||||
|
||||
|
||||
/* Loot Settings */
|
||||
DMS_GodmodeCrates = true; // Whether or not crates will have godmode after being filled with loot.
|
||||
DMS_CrateCase_Sniper = [ // If you pass "Sniper" in _lootValues, then it will spawn these weapons/items/backpacks
|
||||
[
|
||||
["Rangefinder",1],
|
||||
["srifle_GM6_F",1],
|
||||
["srifle_LRR_F",1],
|
||||
["srifle_EBR_DMS_pointer_snds_F",1],
|
||||
["hgun_Pistol_heavy_01_MRD_F",1],
|
||||
["hgun_PDW2000_Holo_snds_F",1]
|
||||
],
|
||||
[
|
||||
["ItemGPS",1],
|
||||
["U_B_FullGhillie_ard",1],
|
||||
["U_I_FullGhillie_lsh",1],
|
||||
["U_O_FullGhillie_sard",1],
|
||||
["U_O_GhillieSuit",1],
|
||||
["V_PlateCarrierGL_blk",1],
|
||||
["V_HarnessO_brn",1],
|
||||
["Exile_Item_InstaDoc",3],
|
||||
["Exile_Item_Surstromming_Cooked",5],
|
||||
["Exile_Item_PlasticBottleFreshWater",5],
|
||||
["optic_LRPS",1],
|
||||
["muzzle_snds_acp",1],
|
||||
["5Rnd_127x108_APDS_Mag",3],
|
||||
["7Rnd_408_Mag",3],
|
||||
["20Rnd_762x51_Mag",5],
|
||||
["11Rnd_45ACP_Mag",3],
|
||||
["30Rnd_9x21_Mag",3]
|
||||
],
|
||||
[
|
||||
["B_Carryall_cbr",1],
|
||||
["B_Kitbag_mcamo",1]
|
||||
]
|
||||
];
|
||||
DMS_BoxWeapons = [ // List of weapons that can spawn in a crate
|
||||
"Exile_Melee_Axe",
|
||||
"arifle_Katiba_GL_F",
|
||||
|
@ -75,7 +75,7 @@ _msgWIN = format["<t color='#0080ff' size='1.25'>Humantarian Supplies! </t><br/>
|
||||
_msgLOSE = format["<t color='#FF0000' size='1.25'>Humantarian Supplies! </t><br/> The bandits have taken the humanitarian supplies and escaped!"];
|
||||
|
||||
// Define mission name (for map marker and logging)
|
||||
_missionName = "Humantarian Supplies";
|
||||
_missionName = "Humanitarian Supplies";
|
||||
|
||||
// Create Markers
|
||||
_markers =
|
||||
|
@ -64,13 +64,13 @@ _missionObjs =
|
||||
];
|
||||
|
||||
// Define Mission Start message
|
||||
_msgStart = format["<t color='#FFFF00' size='1.25'>Car Dealer Robbery! </t><br/> A squad of proffesional Navy Seals team is performing gorilla warfare in convict land, deal with them!"];
|
||||
_msgStart = format["<t color='#FFFF00' size='1.25'>Navy Seals! </t><br/> A squad of professional Navy Seals team is performing gorilla warfare in convict land, deal with them!"];
|
||||
|
||||
// Define Mission Win message
|
||||
_msgWIN = format["<t color='#0080ff' size='1.25'>Car Dealer Robbery! </t><br/> Convicts have successfully taken care of the Navy Seals, you must be the top of your class!"];
|
||||
_msgWIN = format["<t color='#0080ff' size='1.25'>Navy Seals! </t><br/> Convicts have successfully taken care of the Navy Seals, you must be the top of your class!"];
|
||||
|
||||
// Define Mission Lose message
|
||||
_msgLOSE = format["<t color='#FF0000' size='1.25'>Car Dealer Robbery! </t><br/> The Navy Seals have escaped and are now planning their next raid!"];
|
||||
_msgLOSE = format["<t color='#FF0000' size='1.25'>Navy Seals! </t><br/> The Navy Seals have escaped and are now planning their next raid!"];
|
||||
|
||||
// Define mission name (for map marker and logging)
|
||||
_missionName = "Rogue Navy Seals";
|
||||
|
@ -33,11 +33,12 @@ _group =
|
||||
_side // "bandit","hero", etc.
|
||||
] call DMS_fnc_SpawnAIGroup;
|
||||
|
||||
_dir = random 180;
|
||||
_staticGuns =
|
||||
[
|
||||
[
|
||||
[(_pos select 0)+(5+(random 5)),(_pos select 1)+(5+(random 5)),0],
|
||||
[(_pos select 0) + -1*(5+(random 5)),(_pos select 1) + -1*(5+(random 5)),0]
|
||||
[_pos,5+random 5,_dir] call DMS_fnc_SelectOffsetPos,
|
||||
[_pos,5+random 5,_dir+180] call DMS_fnc_SelectOffsetPos
|
||||
],
|
||||
_group,
|
||||
"assault",
|
||||
@ -48,7 +49,13 @@ _staticGuns =
|
||||
|
||||
// Create Crate
|
||||
_crate = ["Box_NATO_Wps_F",_pos] call DMS_fnc_SpawnCrate;
|
||||
_vehicle = ["Exile_Car_Offroad_Armed_Guerilla01",_pos] call DMS_fnc_SpawnNonPersistentVehicle;
|
||||
|
||||
// Spawn vehicle
|
||||
_vehicle = ["Exile_Car_Offroad_Armed_Guerilla01",[_pos,3+random 10,_dir+90] call DMS_fnc_SelectOffsetPos] call DMS_fnc_SpawnNonPersistentVehicle;
|
||||
|
||||
//trololol
|
||||
_crate setObjectTextureGlobal [0,"#(rgb,8,8,3)color(1,0,0.1,1)"];
|
||||
_crate setObjectTextureGlobal [1,"#(rgb,8,8,3)color(1,0,0.1,1)"];
|
||||
|
||||
// Set crate loot values
|
||||
_crate_loot_values =
|
||||
@ -70,7 +77,7 @@ _missionObjs =
|
||||
[
|
||||
_staticGuns, // We only spawn the static guns
|
||||
[_vehicle],
|
||||
[[_crate,_crate_loot_values]]
|
||||
[[_crate,"Sniper"]]
|
||||
];
|
||||
|
||||
// Define Mission Start message
|
||||
|
@ -6,29 +6,33 @@
|
||||
|
||||
Usage:
|
||||
[
|
||||
_crate,
|
||||
_crate, // The crate object
|
||||
_lootValues // Array, string, or number. String or number refers to a crate case in config.cfg; array determines random crate weapons/items/backpacks
|
||||
] call DMS_fnc_FillCrate;
|
||||
|
||||
Loot values can be a number or a string with a corresponding "Crate Case" defined in the config. EG: DMS_CrateCase_Sniper. Or it can be an array.
|
||||
|
||||
In the array, the loot values are defined as:
|
||||
[
|
||||
_weapons,
|
||||
_items,
|
||||
_backpacks
|
||||
]
|
||||
] call DMS_fnc_FillCrate;
|
||||
|
||||
Each loot argument can be an explicitly defined array of weapons with a number to spawn, or simply a number and weapons defined in the config.sqf are used
|
||||
|
||||
Each loot argument can be an explicitly defined array of weapons with a number to spawn, or simply a number and weapons defined in the config.sqf are used.
|
||||
|
||||
For example, _weapons could simply be a number, in which case the given number of weapons are selected from "DMS_boxWeapons",
|
||||
or an array as [_wepCount,_weps], where _wepCount is the number of weapons, and _weps is an array of weapons from which the guns are randomly selected.
|
||||
*/
|
||||
|
||||
if (isNil "_this") exitWith
|
||||
{
|
||||
diag_log "DMS ERROR :: Calling DMS_FillCrate with nil argument!";
|
||||
};
|
||||
private ["_crate","_lootValues","_wepCount","_weps","_itemCount","_items","_backpackCount","_backpacks","_weapon","_ammo","_item","_backpack","_crateValues"];
|
||||
|
||||
|
||||
private ["_crate","_lootValues","_wepCount","_weps","_itemCount","_items","_backpackCount","_backpacks","_weapon","_ammo","_item","_backpack"];
|
||||
|
||||
_OK = params
|
||||
[
|
||||
["_crate",objNull,[objNull]],
|
||||
["_lootValues",[0,0,0],[[]],[3]]
|
||||
["_lootValues","",[0,"",[]],[3]]
|
||||
];
|
||||
|
||||
if (!_OK || {isNull _crate}) exitWith
|
||||
@ -36,95 +40,135 @@ if (!_OK || {isNull _crate}) exitWith
|
||||
diag_log format ["DMS ERROR :: Calling DMS_FillCrate with invalid parameters: %1",_this];
|
||||
};
|
||||
|
||||
// Weapons
|
||||
if(typeName (_lootValues select 0) == "ARRAY") then
|
||||
if !(DMS_GodmodeCrates) then
|
||||
{
|
||||
_wepCount = (_lootValues select 0) select 0;
|
||||
_weps = (_lootValues select 0) select 1;
|
||||
_crate allowDamage true;
|
||||
};
|
||||
|
||||
|
||||
if ((typeName _lootValues)=="ARRAY") then
|
||||
{
|
||||
// Weapons
|
||||
if(typeName (_lootValues select 0) == "ARRAY") then
|
||||
{
|
||||
_wepCount = (_lootValues select 0) select 0;
|
||||
_weps = (_lootValues select 0) select 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
_wepCount = _lootValues select 0;
|
||||
_weps = DMS_boxWeapons;
|
||||
};
|
||||
|
||||
|
||||
// Items
|
||||
if(typeName (_lootValues select 1) == "ARRAY") then
|
||||
{
|
||||
_itemCount = (_lootValues select 1) select 0;
|
||||
_items = (_lootValues select 1) select 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
_itemCount = _lootValues select 1;
|
||||
_items = DMS_boxItems;
|
||||
};
|
||||
|
||||
|
||||
// Backpacks
|
||||
if(typeName (_lootValues select 2) == "ARRAY") then
|
||||
{
|
||||
_backpackCount = (_lootValues select 2) select 0;
|
||||
_backpacks = (_lootValues select 2) select 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
_backpackCount = _lootValues select 2;
|
||||
_backpacks = DMS_boxBackpacks;
|
||||
};
|
||||
|
||||
|
||||
if(DMS_DEBUG) then
|
||||
{
|
||||
diag_log format["DMS_DEBUG FillCrate :: Filling %4 with %1 guns, %2 items and %3 backpacks",_wepCount,_itemCount,_backpackCount,_crate];
|
||||
};
|
||||
|
||||
|
||||
if ((_wepCount>0) && {count _weps>0}) then
|
||||
{
|
||||
// Add weapons + mags
|
||||
for "_i" from 1 to _wepCount do
|
||||
{
|
||||
_weapon = _weps call BIS_fnc_selectRandom;
|
||||
_ammo = _weapon call DMS_fnc_selectMagazine;
|
||||
if ((typeName _weapon)=="STRING") then
|
||||
{
|
||||
_weapon = [_weapon,1];
|
||||
};
|
||||
_crate addWeaponCargoGlobal _weapon;
|
||||
_crate addItemCargoGlobal [_ammo, (4 + floor(random 3))];
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
if ((_itemCount > 0) && {count _items>0}) then
|
||||
{
|
||||
// Add items
|
||||
for "_i" from 1 to _itemCount do
|
||||
{
|
||||
_item = _items call BIS_fnc_selectRandom;
|
||||
if ((typeName _item)=="STRING") then
|
||||
{
|
||||
_item = [_item,1];
|
||||
};
|
||||
_crate addItemCargoGlobal _item;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
if ((_backpackCount > 0) && {count _backpacks>0}) then
|
||||
{
|
||||
// Add backpacks
|
||||
for "_i" from 1 to _backpackCount do
|
||||
{
|
||||
_backpack = _backpacks call BIS_fnc_selectRandom;
|
||||
if ((typeName _backpack)=="STRING") then
|
||||
{
|
||||
_backpack = [_backpack,1];
|
||||
};
|
||||
_crate addBackpackCargoGlobal _backpack;
|
||||
};
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
_wepCount = _lootValues select 0;
|
||||
_weps = DMS_boxWeapons;
|
||||
};
|
||||
_crateValues = missionNamespace getVariable [ format ["DMS_CrateCase_%1",_lootValues], [[], [], []] ];
|
||||
|
||||
|
||||
// Items
|
||||
if(typeName (_lootValues select 1) == "ARRAY") then
|
||||
{
|
||||
_itemCount = (_lootValues select 1) select 0;
|
||||
_items = (_lootValues select 1) select 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
_itemCount = _lootValues select 1;
|
||||
_items = DMS_boxItems;
|
||||
};
|
||||
|
||||
|
||||
// Backpacks
|
||||
if(typeName (_lootValues select 2) == "ARRAY") then
|
||||
{
|
||||
_backpackCount = (_lootValues select 2) select 0;
|
||||
_backpacks = (_lootValues select 2) select 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
_backpackCount = _lootValues select 2;
|
||||
_backpacks = DMS_boxBackpacks;
|
||||
};
|
||||
|
||||
|
||||
if(DMS_DEBUG) then
|
||||
{
|
||||
diag_log format["DMS_DEBUG FillCrate :: Filling %4 with %1 guns, %2 items and %3 backpacks",_wepCount,_itemCount,_backpackCount,_crate];
|
||||
};
|
||||
|
||||
|
||||
if ((_wepCount>0) && {count _weps>0}) then
|
||||
{
|
||||
// Add weapons + mags
|
||||
for "_i" from 1 to _wepCount do
|
||||
// Weapons
|
||||
{
|
||||
_weapon = _weps call BIS_fnc_selectRandom;
|
||||
_ammo = _weapon call DMS_fnc_selectMagazine;
|
||||
if ((typeName _weapon)=="STRING") then
|
||||
if ((typeName _x)=="STRING") then
|
||||
{
|
||||
_weapon = [_weapon,1];
|
||||
_x = [_x,1];
|
||||
};
|
||||
_crate addWeaponCargoGlobal _weapon;
|
||||
_crate addItemCargoGlobal [_ammo, (4 + floor(random 3))];
|
||||
};
|
||||
};
|
||||
_crate addWeaponCargoGlobal _x;
|
||||
} forEach (_crateValues select 0);
|
||||
|
||||
|
||||
if ((_itemCount > 0) && {count _items>0}) then
|
||||
{
|
||||
// Add items
|
||||
for "_i" from 1 to _itemCount do
|
||||
// Items/Mags
|
||||
{
|
||||
_item = _items call BIS_fnc_selectRandom;
|
||||
if ((typeName _item)=="STRING") then
|
||||
if ((typeName _x)=="STRING") then
|
||||
{
|
||||
_item = [_item,1];
|
||||
_x = [_x,1];
|
||||
};
|
||||
_crate addItemCargoGlobal _item;
|
||||
};
|
||||
};
|
||||
_crate addItemCargoGlobal _x;
|
||||
} forEach (_crateValues select 1);
|
||||
|
||||
|
||||
if ((_backpackCount > 0) && {count _backpacks>0}) then
|
||||
{
|
||||
// Add backpacks
|
||||
for "_i" from 1 to _backpackCount do
|
||||
// Backpacks
|
||||
{
|
||||
_backpack = _backpacks call BIS_fnc_selectRandom;
|
||||
if ((typeName _backpack)=="STRING") then
|
||||
if ((typeName _x)=="STRING") then
|
||||
{
|
||||
_backpack = [_backpack,1];
|
||||
_x = [_x,1];
|
||||
};
|
||||
_crate addBackpackCargoGlobal _backpack;
|
||||
};
|
||||
_crate addBackpackCargoGlobal _x;
|
||||
} forEach (_crateValues select 2);
|
||||
};
|
||||
|
||||
|
||||
@ -143,13 +187,15 @@ if(DMS_RareLoot && {count DMS_RareLootList>0}) then
|
||||
};
|
||||
|
||||
|
||||
if(DMS_SpawnBoxSmoke && {sunOrMoon == 1}) then {
|
||||
if(DMS_SpawnBoxSmoke && {sunOrMoon == 1}) then
|
||||
{
|
||||
_marker = "SmokeShellPurple" createVehicle getPosATL _crate;
|
||||
_marker setPosATL (getPosATL _crate);
|
||||
_marker attachTo [_crate,[0,0,0]];
|
||||
};
|
||||
|
||||
if (DMS_SpawnBoxIRGrenade && {sunOrMoon != 1}) then {
|
||||
if (DMS_SpawnBoxIRGrenade && {sunOrMoon != 1}) then
|
||||
{
|
||||
_marker = "B_IRStrobe" createVehicle getPosATL _crate;
|
||||
_marker setPosATL (getPosATL _crate);
|
||||
_marker attachTo [_crate, [0,0,0.5]];
|
||||
|
@ -18,46 +18,52 @@ params
|
||||
["_maxTerrainGradient",10,[0]]
|
||||
];
|
||||
|
||||
_safePosParams =
|
||||
[
|
||||
[[],0,-1,_nearestObjectMinDistance,0,_maxTerrainGradient,0,DMS_findSafePosBlacklist],
|
||||
[[16000,16000],0,16000,_nearestObjectMinDistance,0,_maxTerrainGradient,0,DMS_findSafePosBlacklist] //[16000,16000] w/ radius of 16000 works well for Altis
|
||||
] select (worldName=="Altis");
|
||||
|
||||
// Some custom maps don't have the proper safePos config entries.
|
||||
// If you are using one and you have an issue with mission spawns, please create an issue on GitHub or post a comment in the DMS thread.
|
||||
switch (toLower worldName) do
|
||||
{
|
||||
case "altis" : { _safePosParams = [[16000,16000],0,16000,_nearestObjectMinDistance,0,_maxTerrainGradient,0,DMS_findSafePosBlacklist]; }; //[16000,16000] w/ radius of 16000 works well for Altis
|
||||
case "bornholm" : { _safePosParams = [[11264,11264],0,12000,_nearestObjectMinDistance,0,_maxTerrainGradient,0,DMS_findSafePosBlacklist]; }; // Thanks to thirdhero for testing this info
|
||||
default { _safePosParams = [[],0,-1,_nearestObjectMinDistance,0,_maxTerrainGradient,0,DMS_findSafePosBlacklist]; };
|
||||
};
|
||||
|
||||
|
||||
_validspot = false;
|
||||
_i = 0;
|
||||
while{!_validspot} do {
|
||||
while{!_validspot} do
|
||||
{
|
||||
_pos = _safePosParams call BIS_fnc_findSafePos;
|
||||
_i = _i+1;
|
||||
try
|
||||
{
|
||||
// Check for nearby water
|
||||
if ([_pos,DMS_WaterNearBlacklist] call DMS_fnc_isNearWater) exitWith
|
||||
if ([_pos,DMS_WaterNearBlacklist] call DMS_fnc_isNearWater) then
|
||||
{
|
||||
throw ("water");
|
||||
};
|
||||
|
||||
// Check for nearby players
|
||||
if ([_pos,DMS_PlayerNearBlacklist] call DMS_fnc_IsPlayerNearby) exitWith
|
||||
if ([_pos,DMS_PlayerNearBlacklist] call DMS_fnc_IsPlayerNearby) then
|
||||
{
|
||||
throw ("players");
|
||||
};
|
||||
|
||||
{
|
||||
// Check for nearby spawn points
|
||||
if (((markertype _x) == "ExileSpawnZone") && {((getMarkerPos _x) distance2D _pos)<=DMS_SpawnZoneNearBlacklist}) exitWith
|
||||
if (((markertype _x) == "ExileSpawnZone") && {((getMarkerPos _x) distance2D _pos)<=DMS_SpawnZoneNearBlacklist}) then
|
||||
{
|
||||
throw ("a spawn zone");
|
||||
};
|
||||
|
||||
// Check for nearby trader zones
|
||||
if (((markertype _x) == "ExileTraderZone") && {((getMarkerPos _x) distance2D _pos)<=DMS_TraderZoneNearBlacklist}) exitWith
|
||||
if (((markertype _x) == "ExileTraderZone") && {((getMarkerPos _x) distance2D _pos)<=DMS_TraderZoneNearBlacklist}) then
|
||||
{
|
||||
throw ("a trader zone");
|
||||
};
|
||||
|
||||
// Check for nearby missions
|
||||
if (((_x find "DMS_MissionMarkerDot")>-1) && {((getMarkerPos _x) distance2D _pos)<=DMS_MissionNearBlacklist}) exitWith
|
||||
if (((_x find "DMS_MissionMarkerDot")>-1) && {((getMarkerPos _x) distance2D _pos)<=DMS_MissionNearBlacklist}) then
|
||||
{
|
||||
throw ("another mission");
|
||||
};
|
||||
@ -68,7 +74,8 @@ while{!_validspot} do {
|
||||
}
|
||||
catch
|
||||
{
|
||||
if (DMS_DEBUG) then {
|
||||
if (DMS_DEBUG) then
|
||||
{
|
||||
diag_log format ["DMS_DEBUG findSafePos :: Exception in attempt %1 | Position %2 is too close to %3!",_i,_pos,_exception];
|
||||
};
|
||||
};
|
||||
|
@ -63,6 +63,11 @@ private ["_pos", "_success", "_timeStarted", "_timeUntilFail", "_units", "_build
|
||||
|
||||
_arr = DMS_Mission_Arr deleteAt _forEachIndex;
|
||||
|
||||
{
|
||||
_x lock 0;
|
||||
_x allowDamage true;
|
||||
} forEach _vehs;
|
||||
|
||||
{
|
||||
_x call DMS_fnc_FillCrate;
|
||||
} forEach _crate_info_array;
|
||||
|
@ -122,7 +122,7 @@ if (isPlayer _player) then
|
||||
};};
|
||||
|
||||
|
||||
if ((!isNull _playerObj) && {((getPlayerUID _playerObj) != "")}) then
|
||||
if ((!isNull _playerObj) && {((getPlayerUID _playerObj) != "") && {_playerObj isKindOf "Exile_Unit_Player"}}) then
|
||||
{
|
||||
_moneyGain = missionNamespace getVariable [format ["DMS_%1_%2_MoneyGain",_side,_type],0];
|
||||
_repGain = missionNamespace getVariable [format ["DMS_%1_%2_RepGain",_side,_type],0];
|
||||
|
@ -87,6 +87,7 @@ if ((!isNil "_launcher") || {DMS_ai_use_launchers && {(random 100) <= DMS_ai_use
|
||||
|
||||
_launcher = ((missionNamespace getVariable [format ["DMS_AI_wep_launchers_%1",_launcher],["launch_NLAW_F"]]) call BIS_fnc_selectRandom);
|
||||
|
||||
removeBackpack _unit;
|
||||
_unit addBackpack "B_Carryall_mcamo";
|
||||
|
||||
[_unit, _launcher, DMS_AI_launcher_ammo_count] call BIS_fnc_addWeapon;
|
||||
|
@ -26,6 +26,8 @@ if (!_OK) then
|
||||
|
||||
_crate = createVehicle [_crateClassName,_pos,[], 0, "CAN_COLLIDE"];
|
||||
|
||||
_crate allowDamage false;
|
||||
|
||||
clearWeaponCargoGlobal _crate;
|
||||
clearItemCargoGlobal _crate;
|
||||
clearMagazineCargoGlobal _crate;
|
||||
|
@ -41,8 +41,10 @@ while{count _vehpos < 1} do
|
||||
_maxDistance = (_maxDistance + 15);
|
||||
};
|
||||
|
||||
_vehObj = ObjNull;
|
||||
_vehObj = [_vehicleClass, _vehpos, (random 360), true] call ExileServer_object_vehicle_createNonPersistentVehicle;
|
||||
_vehObj allowDamage false;
|
||||
_vehObj setFuel 1;
|
||||
_vehObj lock 2;
|
||||
|
||||
if (DMS_DEBUG) then
|
||||
{
|
||||
|
Binary file not shown.
16
README.md
16
README.md
@ -78,6 +78,17 @@ if (!hasInterface && !isServer) then
|
||||
|
||||
|
||||
## Changelog:
|
||||
#### September 10, 2015 (8:30 PM CST-America):
|
||||
* NEW CONFIG VALUES: ```DMS_GodmodeCrates``` and ```DMS_CrateCase_Sniper```. DMS_GodmodeCrates is pretty self-explanatory :P
|
||||
* NEW FEATURE FOR "DMS_fnc_FillCrate": You can now define "crate cases" in the config (such as "DMS_CrateCase_Sniper"). Passing the "crate case" name (such as "Sniper") will make the crate spawn with the exact gear defined in the config. Refer to the testmission.sqf (line 80) and "DMS_CrateCase_Sniper" config for an example.
|
||||
* Spawned vehicles will now be LOCKED and INVINCIBLE until the mission is completed.
|
||||
* Spawned vehicles spawn with 100% fuel.
|
||||
* "Fixed" some cases where killing from a mounted gun would reset your money/respect (maybe).
|
||||
* Fixed some spelling errors and incorrect names in some of the mission messages/markers.
|
||||
* Fixed DMS_fnc_FindSafePos for Bornholm. If you have any issues with custom maps, please let us know.
|
||||
* Fixed backpack spawning on the ground behind an AI unit that was supposed to get a launcher.
|
||||
|
||||
|
||||
#### September 10, 2015 (6:00 PM CST-America):
|
||||
* NEW CONFIG VALUES: ```DMS_MarkerPosRandomization```, ```DMS_MarkerPosRandomRadius```, and ```DMS_RandomMarkerBrush```
|
||||
* With the above configs, you can randomize the marker positions in a random position around the actual mission center.
|
||||
@ -87,6 +98,7 @@ if (!hasInterface && !isServer) then
|
||||
* Adjusted a couple functions to use them.
|
||||
* Fixed ```DMS_fnc_IsNearWater```.
|
||||
|
||||
|
||||
#### September 9, 2015 (10:00 PM CST-America):
|
||||
* Added static AI! The "donthasslethehoff" mission has them included by default. :D
|
||||
* New config values: ```DMS_Bandit_Static_MoneyGain``` and ```DMS_Bandit_Static_RepGain```.
|
||||
@ -97,19 +109,23 @@ if (!hasInterface && !isServer) then
|
||||
* NOTE: If you use custom ```DMS_fnc_SpawnAISoldier``` calls, you will have to update your calling parameters! Make sure you add "Soldier" at the end of the array, or before ```_customGearSet``` if you're using it!
|
||||
* Added ```_launcher``` option for ```_customGearSet``` in ```DMS_fnc_SpawnAISoldier```. NOTE: This changes the order of the gearset parameters for the AI. ```_launcher``` is between ```_items``` and ```_helmet```! Use empty string ```""``` if you don't want any launcher on the AI unit.
|
||||
|
||||
|
||||
#### September 8, 2015 (11:00 PM CST-America):
|
||||
* AI Bodies should now be properly cleaned when run over (if configured to do so with ```DMS_remove_roadkill``` and ```DMS_remove_roadkill_chance```).
|
||||
* Added config option ```DMS_credit_roadkill```. If set to true, players will get poptabs/respect for running over AI. Default: false.
|
||||
* Fixed giving poptabs/respect for killing AI from vehicles. Passengers and mounted gunners should properly receive poptabs/respect when they kill AI.
|
||||
* Launchers should now be reliably removed from AI bodies that have them.
|
||||
|
||||
|
||||
#### September 7, 2015 (7:00 PM CST-America):
|
||||
* AI bodies should now be cleared if configured to do so with "DMS_clear_AI_body" and "DMS_clear_AI_body_chance".
|
||||
|
||||
|
||||
#### September 5, 2015 (1:00 AM CST-America):
|
||||
* Created new function "DMS_fnc_IsPlayerNearby" to replace "ExileServer_util_position_isPlayerNearby".
|
||||
* Fix IR Strobes spawning inside the crate and not appearing.
|
||||
|
||||
|
||||
#### September 4, 2015 (11:20 PM CST-America):
|
||||
* Improved crate handling by DMS. You can now spawn multiple crates with different loot, or simply no crates at all. (REQUIRES FILE CHANGES FOR EACH MISSION)
|
||||
* Accounted for case sensitivity in switch-do statements for SpawnAISolder.
|
||||
|
Loading…
Reference in New Issue
Block a user