arma2-epoch-server/MPMissions/DayZ_Epoch_24.Napf/scripts/deployAnything/wrapper.sqf
2022-04-21 16:15:41 +03:00

181 lines
5.2 KiB
Plaintext
Executable File

/* 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;
};