65 lines
2.2 KiB
Plaintext
65 lines
2.2 KiB
Plaintext
/*
|
|
File: fn_crateToStorage.sqf
|
|
Author: KP Liberation Dev Team - https://github.com/KillahPotatoes
|
|
Date: 2017-03-27
|
|
Last Update: 2020-04-23
|
|
License: MIT License - http://www.opensource.org/licenses/MIT
|
|
|
|
Description:
|
|
Attach given crate at storage area.
|
|
|
|
Parameter(s):
|
|
_crate - Crate [OBJECT, defaults to objNull]
|
|
_storage - Storage [OBJECT, defaults to objNull]
|
|
_update - Update sector resources [BOOL, defaults to false]
|
|
|
|
Returns:
|
|
Function reached the end [BOOL]
|
|
*/
|
|
|
|
params [
|
|
["_crate", objNull, [objNull]],
|
|
["_storage", objNull, [objNull]],
|
|
["_update", false, [false]]
|
|
];
|
|
|
|
// Validate parameters
|
|
if (isNull _crate) exitWith {["Null object given"] call BIS_fnc_error; false};
|
|
|
|
// Handle return values from nearestObjects of function call in ammobox action manager
|
|
if (!isNull _storage) then {
|
|
// Get storage and crate specific values
|
|
([_storage] call KPLIB_fnc_getStoragePositions) params ["_storage_positions", "_unload_distance"];
|
|
private _height = [typeOf _crate] call KPLIB_fnc_getCrateHeight;
|
|
|
|
// Remove possible cargo from crate
|
|
[_crate, true] call KPLIB_fnc_clearCargo;
|
|
|
|
// Check for enough space in storage
|
|
private _crates_count = count (attachedObjects _storage);
|
|
if (_crates_count >= (count _storage_positions)) exitWith {if (!isDedicated) then {[] spawn {hint localize "STR_BOX_CANTSTORE"; sleep 2; hintSilent "";};};};
|
|
|
|
// Store crate
|
|
_crate attachTo [_storage, [(_storage_positions select _crates_count) select 0, (_storage_positions select _crates_count) select 1, _height]];
|
|
[_crate, false] remoteExec ["enableRopeAttach"];
|
|
if(KP_liberation_ace) then {[_crate, false, [0, 1.5, 0], 0] remoteExec ["ace_dragging_fnc_setCarryable"];};
|
|
|
|
// Update sector resource values, if requested
|
|
if (_update) then {
|
|
if ((_storage getVariable ["KP_liberation_storage_type", -1]) == 1) then {
|
|
recalculate_sectors = true;
|
|
publicVariable "recalculate_sectors";
|
|
};
|
|
};
|
|
} else {
|
|
if (!isDedicated) then {
|
|
[] spawn {
|
|
hint localize "STR_BOX_CANTSTORE";
|
|
sleep 2;
|
|
hintSilent "";
|
|
};
|
|
};
|
|
};
|
|
|
|
true
|