Files
DayZ-Epoch/SQF/dayz_code/compile/fn_removeItems.sqf
ebaydayz 6a6db58291 Compiles.sqf cleanup
- Moved player_countMagazines to \compile\ folder
- Removed several unused and obsolete files
- Moved some epoch functions out of compiles.sqf into individual files
- Synced order and formatting with 1.8.7. Much easier to compare now.

Any changes I make to official DayZ Mod code and files I also submit as
a pull request to them.
2016-03-17 16:34:15 -04:00

55 lines
1.7 KiB
Plaintext

/*
Description:
Removes the items (magazines) from the player's inventory
and performs a double check for the required items.
Parameter(s):
_this: <array> list of item names to be removed (can also be an sub-array with item name and quantity)
Returns:
Boolean (true if all items have been removed from the player's inventory)
How to use:
_removed = [["PartGeneric",4], "PartEngine", ["ItemGenerator"]] call player_removeItems;
*/
private ["_items","_inventory","_temp_removed_array","_removed_total","_tobe_removed_total","_removed","_itemIn","_countIn","_num_removed"];
_items = _this;
_inventory = magazines player;
_temp_removed_array = [];
_removed_total = 0;
_tobe_removed_total = 0;
{
_removed = 0;
_itemIn = "";
_countIn = 1;
if (typeName _x == "ARRAY") then {
if (count _x > 0) then {
_itemIn = _x select 0;
if (count _x > 1) then {
_countIn = _x select 1;
};
};
} else {
_itemIn = _x;
};
if (_itemIn != "") then {
_tobe_removed_total = _tobe_removed_total + _countIn;
{
if ((_removed < _countIn) && ((_x == _itemIn) || configName(inheritsFrom(configFile >> "cfgMagazines" >> _x)) == _itemIn)) then {
_num_removed = ([player,_x] call BIS_fnc_invRemove);
_removed = _removed + _num_removed;
_removed_total = _removed_total + _num_removed;
if (_num_removed >= 1) then {
_temp_removed_array set [count _temp_removed_array, _x];
};
};
} forEach _inventory;
};
} forEach _items;
// all parts removed
if (_tobe_removed_total == _removed_total) exitWith { true };
// missing parts
{ player addMagazine _x; } count _temp_removed_array;
cutText [format[(localize "STR_EPOCH_ACTIONS_5"), _removed_total, _tobe_removed_total], "PLAIN DOWN"];
false