181 lines
5.2 KiB
Plaintext
181 lines
5.2 KiB
Plaintext
|
/* this sqf file is used to manipulate the deployable array to work more like a class than an array */
|
||
|
|
||
|
/* this gets the item that makes the deployable */
|
||
|
getDeployableKitClass = {
|
||
|
(DZE_DEPLOYABLES select _this) select 0
|
||
|
};
|
||
|
|
||
|
/* this gets the distance of the deployable */
|
||
|
getDeployableDistanceOffset = {
|
||
|
(DZE_DEPLOYABLES select _this) select 1
|
||
|
};
|
||
|
|
||
|
/* this gets the distance a player must be to pack the deployable back up */
|
||
|
getDeployablePackDistance = {
|
||
|
(DZE_DEPLOYABLES select _this) select 2
|
||
|
};
|
||
|
|
||
|
/* if the damage is higher than this, it can't be packed again */
|
||
|
getDamageLimit = {
|
||
|
(DZE_DEPLOYABLES select _this) select 3
|
||
|
};
|
||
|
|
||
|
/* should players be allowed to pack deployables placed by others? */
|
||
|
getDeployablePackOthers = {
|
||
|
(DZE_DEPLOYABLES select _this) select 4
|
||
|
};
|
||
|
|
||
|
/* checks if cargo should be cleared for this item */
|
||
|
getClearCargo = {
|
||
|
(DZE_DEPLOYABLES select _this) select 5
|
||
|
};
|
||
|
|
||
|
/* should vehicle ammo be cleared when spawned? */
|
||
|
getDeployableClearAmmo = {
|
||
|
(DZE_DEPLOYABLES select _this) select 6
|
||
|
};
|
||
|
|
||
|
/* should the vehicle be saved permanently to the database */
|
||
|
getPermanent = {
|
||
|
(DZE_DEPLOYABLES select _this) select 7
|
||
|
};
|
||
|
|
||
|
/* does the deployable require a plot to build ? */
|
||
|
getDeployableRequirePlot = {
|
||
|
(DZE_DEPLOYABLES select _this) select 8
|
||
|
};
|
||
|
|
||
|
/* does the object have simulation enabled? */
|
||
|
getDeployableSimulation = {
|
||
|
(DZE_DEPLOYABLES select _this) select 9
|
||
|
};
|
||
|
|
||
|
/* can the object be built on a road? */
|
||
|
getDeployableBuildOnRoad = {
|
||
|
(DZE_DEPLOYABLES select _this) select 10
|
||
|
};
|
||
|
|
||
|
/* this gets the class of the deployable */
|
||
|
getDeployableClass = {
|
||
|
(DZE_DEPLOYABLES select _this) select 11
|
||
|
};
|
||
|
|
||
|
getDeployableNeedNearBy = {
|
||
|
(DZE_DEPLOYABLES select _this) select 12
|
||
|
};
|
||
|
|
||
|
/* the parts required to make this item */
|
||
|
getDeployableParts = {
|
||
|
(DZE_DEPLOYABLES select _this) select 13
|
||
|
};
|
||
|
|
||
|
/* what condition is used to determine whether or not the player sees the option? */
|
||
|
getDeployableCondition = {
|
||
|
(DZE_DEPLOYABLES select _this) select 14
|
||
|
};
|
||
|
|
||
|
/* should players be allowed to pack deployables at all? */
|
||
|
getDeployablePackAny = {
|
||
|
((_this call getDamageLimit) >= 0) || (!(isNull player) && {dayz_playerUID in DZE_DEPLOYABLE_ADMINS});
|
||
|
};
|
||
|
|
||
|
/* this gets what type of item the kit is*/
|
||
|
getDeployableKitType = {
|
||
|
private["_return"];
|
||
|
if(isClass(configFile >> "CfgWeapons" >> (_this call getDeployableKitClass))) then {
|
||
|
_return = "CfgWeapons";
|
||
|
} else {
|
||
|
_return = "CfgMagazines";
|
||
|
};
|
||
|
_return
|
||
|
};
|
||
|
|
||
|
/* this is a wrapper function for getting the value of the scroll action */
|
||
|
getActionId = {
|
||
|
call compile format["
|
||
|
if (isNil 'DZE_ACTION_DEPLOYABLE_PACK_%1') then {
|
||
|
DZE_ACTION_DEPLOYABLE_PACK_%1 = -1;
|
||
|
};
|
||
|
DZE_ACTION_DEPLOYABLE_PACK_%1
|
||
|
",_this];
|
||
|
};
|
||
|
|
||
|
/* this is a wrapper function for setting the value of the scroll action */
|
||
|
setActionId = {
|
||
|
call compile format["DZE_ACTION_DEPLOYABLE_PACK_%1 = %2;",_this select 0,_this select 1];
|
||
|
};
|
||
|
|
||
|
/* this gets the display name of the kit or falls back to class name if unsuccessful */
|
||
|
getDeployableKitDisplay = {
|
||
|
private["_display"];
|
||
|
_display = getText (configFile >> (_this call getDeployableKitType) >> (_this call getDeployableKitClass) >> "displayName");
|
||
|
if((isNil "_display")||_display == "") then {
|
||
|
_display = (_this call getDeployableKitClass);
|
||
|
};
|
||
|
_display
|
||
|
};
|
||
|
|
||
|
/* this gets the display name of the deployable or falls back to class name if unsuccessful */
|
||
|
getDeployableDisplay = {
|
||
|
private["_display","_class"];
|
||
|
_class = (_this call getDeployableClass);
|
||
|
_display = getText (configFile >> "CfgVehicles" >> _class >> "displayName");
|
||
|
if((isNil "_display")||_display == "") then {
|
||
|
_display = _class;
|
||
|
};
|
||
|
{
|
||
|
if(_class == (_x select 0)) then {
|
||
|
_display = (_x select 1);
|
||
|
};
|
||
|
} forEach DZE_DEPLOYABLE_NAME_MAP;
|
||
|
_display
|
||
|
};
|
||
|
|
||
|
/* looks up the index of a deployable based on the class */
|
||
|
getDeployableIndex = {
|
||
|
private["_return"];
|
||
|
_return = -1;
|
||
|
{
|
||
|
if(_this == (_forEachIndex call getDeployableClass)) then {
|
||
|
_return = _forEachIndex;
|
||
|
}
|
||
|
} forEach DZE_DEPLOYABLES;
|
||
|
_return
|
||
|
};
|
||
|
|
||
|
/* check if player has required parts to build the item */
|
||
|
/* [player,_partIndex] call getHasDeployableParts; */
|
||
|
getHasDeployableParts = {
|
||
|
private["_player","_weapons","_parts","_item","_params","_index","_part","_return","_inventory"];
|
||
|
_params = _this;
|
||
|
_player = _params select 0;
|
||
|
_index = _params select 1;
|
||
|
_parts = _index call getDeployableParts;
|
||
|
_inventory = (weapons _player) + (magazines _player);
|
||
|
_return = true;
|
||
|
{
|
||
|
_part = _x;
|
||
|
if(!(_part in _inventory)) exitWith {_return = false;};
|
||
|
{
|
||
|
_item = _x;
|
||
|
if(_item == _part) exitWith {_inventory set [_forEachIndex,"nil"];};
|
||
|
} forEach _inventory;
|
||
|
} forEach _parts;
|
||
|
_return
|
||
|
};
|
||
|
|
||
|
/* remove this item's parts from the players inventory */
|
||
|
/* [player,_partIndex] call removeDeployableParts; */
|
||
|
removeDeployableParts = {
|
||
|
private["_player","_params","_index","_parts","_part"];
|
||
|
_params = _this;
|
||
|
_player = _params select 0;
|
||
|
_index = _params select 1;
|
||
|
_parts = _index call getDeployableParts;
|
||
|
{
|
||
|
_part = _x;
|
||
|
_player removeWeapon _part;
|
||
|
_player removeMagazine _part;
|
||
|
} forEach _parts;
|
||
|
};
|