mirror of
https://github.com/Defent/DMS_Exile.git
synced 2024-08-30 16:52:12 +00:00
70fae7bc44
* **NEW CONFIG VALUES:** DMS_SpawnFlareOnReinforcements DMS_MissionMarkerWinDot_Type DMS_MissionMarkerLoseDot_Type DMS_EnableBoxMoving DMS_BasesToImportOnServerStart DMS_AI_Classname DMS_AI_AimCoef_easy DMS_AI_AimCoef_moderate DMS_AI_AimCoef_difficult DMS_AI_AimCoef_hardcore DMS_AI_EnableStamina_easy DMS_AI_EnableStamina_moderate DMS_AI_EnableStamina_difficult DMS_AI_EnableStamina_hardcore DMS_AI_destroyStaticWeapon DMS_AI_destroyStaticWeapon_chance DMS_ai_SupportedRandomClasses DMS_random_non_assault_AI DMS_random_non_MG_AI DMS_random_non_sniper_AI * Please check out the new config values in config.sqf to see what they do :) * Fixed issue with "thieves" mission (and DMS-spawned persistent vehicles in general). Big thank you to [JamieKG from Eternal Gamer](http://eternal-gamer.com/) and Torndeco. * **New static mission: "slums"** * Credit for the base goes to [William from Refugees of the Fallen](http://refugeesofthefallen.enjin.com/) * Spawns 2 crates at 2 different locations from a list of 5 locations. * No AI vehicles, only infantry (introduces Close Quarters Combat) * Added to Altis by default. * Static bases can now be imported on server startup instead of mission spawns. Enabled by default for saltflats and slums. * Increased "DMS_MissionTimeoutResetRange" from 1000 to 1500. * Removed the Navid from config (MG AI and box weapons). * Edited panthera3_config to reduce SpawnZoneNear and TraderZoneNear blacklists. * Edited "blackhawkdown" and "donthasslethehoff" missions to use a slightly different heli wreck classname. * Increased marker circle diameter for saltflats mission to 750 meters. * Moved "DMS_Version" variable assignment to pre-init. * Moved Map Center and Map Radius assignments to post-init. * Added support for 2 new optional parameters: _onMonitorStart and _onMonitorEnd, run before and after the Mission Monitor checks the mission, but AFTER "Mission Success State" is checked. * Mines should now be deleted when a mission fails. * Script optimizations for almost all functions using new command(s) introduced in ArmA v1.54, as well as improved technique(s). * "ExileServer_system_garbageCollector_deleteObject" is now used to actually delete items by DMS_fnc_CleanUp. * AI and vehicle cleanup should now be completely handled by Exile. * Added support for mARMA logging. * **You can now disable the movement/lifting of loot crates after the mission is complete using "DMS_EnableBoxMoving".** * Added some debug code to DMS_fnc_FindSafePos and DMS_fnc_IsValidPosition (commented out by default) * New group reinforcement type "increasing_difficulty". * DMS_fnc_IsNearWater now checks for invalid parameter(s). * DMS_fnc_PlayerAwardOnAIKill now checks for roadkill values AFTER unit-defined respect/tabs. * You can now define different marker types for mission completion/failure using "DMS_MissionMarkerWinDot_Type" and "DMS_MissionMarkerLoseDot_Type" respectively. * "DMS_fnc_SetGroupBehavior" can now take a unit as parameter as well. It will also now return true if behavior was changed, false otherwise. * "DMS_fnc_SpawnAIGroup" and "DMS_fnc_SpawnAIGroup_MultiPos" now supports the definition of custom gear sets. * Improved function documentation for "DMS_fnc_SpawnAIGroup", "DMS_fnc_SpawnAIGroup_MultiPos", and "DMS_fnc_SpawnAISoldier". * "DMS_fnc_SpawnAISoldier" now supports multiple different random AI class presets. This means that you can define a certain "random" class preset, but have it select from a specially defined list that excludes classes that you don't want. * Added default values to certain "missionNameSpace getVariable"s in DMS_fnc_SpawnAISoldier to prevent script errors in the event of invalid definitions. * Slight logic tweak/fix to DMS_fnc_TargetsKilled (it shouldn't throw errors when there aren't any).
118 lines
2.6 KiB
Plaintext
118 lines
2.6 KiB
Plaintext
/*
|
|
DMS_fnc_SpawnPersistentVehicle
|
|
Created by eraser1
|
|
|
|
Usage:
|
|
[
|
|
_vehicleClass, // STRING: Vehicle classname to spawn.
|
|
_pos, // ARRAY (positionATL or position2d): Where the vehicle will be spawned (strict)
|
|
_pinCode // STRING or NUMBER: String has to be 4 digits. Number has to be between 0-9999, and will be automatically formatted.
|
|
_spawnATL // (OPTIONAL) BOOLEAN: Whether or not to spawn the vehicle ATL (Above Terrain Level) or ASL (Above Sea Level). Default: true (ATL)
|
|
] call DMS_fnc_SpawnPersistentVehicle;
|
|
|
|
Returns the created vehicle object.
|
|
*/
|
|
|
|
|
|
private ["_vehicleClass", "_pos", "_pinCode", "_vehObj"];
|
|
|
|
|
|
_vehObj = objNull;
|
|
|
|
try
|
|
{
|
|
if !(params
|
|
[
|
|
["_vehicleClass","",[""]],
|
|
["_pos",[],[[]],[2,3]],
|
|
["_pinCode","",[0,""]]
|
|
])
|
|
then
|
|
{
|
|
throw (format ["invalid parameters: %1",_this]);
|
|
};
|
|
|
|
if !(isClass (configFile >> "CfgVehicles" >> _vehicleClass)) then
|
|
{
|
|
throw (format ["non-existent vehicle className: %1",_vehicleClass]);
|
|
};
|
|
|
|
|
|
if ((count _pos) isEqualTo 2) then
|
|
{
|
|
_pos set [2,0];
|
|
};
|
|
|
|
|
|
if (_pinCode isEqualType 0) then
|
|
{
|
|
if (_pinCode<0 || {_pinCode>9999}) then
|
|
{
|
|
throw (format ["invalid SCALAR _pinCode value (must be between 0 and 9999): %1",_pinCode]);
|
|
};
|
|
|
|
switch (true) do
|
|
{
|
|
case (_pinCode<10):
|
|
{
|
|
_pinCode = format ["000%1",_pinCode];
|
|
};
|
|
|
|
case (_pinCode<100):
|
|
{
|
|
_pinCode = format ["00%1",_pinCode];
|
|
};
|
|
|
|
case (_pinCode<1000):
|
|
{
|
|
_pinCode = format ["0%1",_pinCode];
|
|
};
|
|
|
|
default
|
|
{
|
|
_pinCode = str _pinCode;
|
|
};
|
|
};
|
|
};
|
|
|
|
if ((count _pinCode)!=4) then
|
|
{
|
|
throw (format ["invalid STRING _pinCode value (must be 4 digits): %1",_pinCode]);
|
|
};
|
|
|
|
_spawnATL = if ((count _this)>3) then {_this select 3} else {true};
|
|
|
|
// Create and set the vehicle
|
|
_vehObj = [_vehicleClass,_pos] call DMS_fnc_SpawnNonPersistentVehicle;
|
|
|
|
if (_spawnATL) then
|
|
{
|
|
_vehObj setPosATL _pos;
|
|
}
|
|
else
|
|
{
|
|
_vehObj setPosASL _pos;
|
|
};
|
|
|
|
// Save vehicle on exit.
|
|
_vehObj addEventHandler ["GetOut", { _this call ExileServer_object_vehicle_event_onGetOut}];
|
|
|
|
// Set up vars
|
|
_vehObj setVariable ["ExileIsPersistent", true];
|
|
_vehObj setVariable ["ExileAccessCode", _pinCode];
|
|
_vehObj setVariable ["ExileOwnerUID", "76561198027700602"]; // That is my (eraser1's) PUID. Just so you don't think I'm trying to be sneaky...
|
|
|
|
// Deny access until specified to do so.
|
|
_vehObj setVariable ["ExileIsLocked",-1];
|
|
_vehObj setVariable ["ExileLastLockToggleAt", time];
|
|
_vehObj setVariable ["ExileAccessDenied", true];
|
|
_vehObj setVariable ["ExileAccessDeniedExpiresAt", 999999];
|
|
}
|
|
catch
|
|
{
|
|
diag_log format ["DMS ERROR :: Calling DMS_fnc_SpawnPersistentVehicle with %1!",_exception];
|
|
};
|
|
|
|
|
|
|
|
_vehObj |