mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
Add: Unloading and fix full vehicle
This commit is contained in:
parent
af7a5e94a7
commit
a420865b5b
@ -40,24 +40,32 @@ if (_item isEqualType objNull) then {
|
||||
if (
|
||||
(_vehicle canVehicleCargo _item) isEqualTo [false, true] && // Could be loaded if _vehicle was empty
|
||||
{_vehicleCargo findIf {
|
||||
!(_x in _loaded) &&
|
||||
!(_x in _loaded) && // Don't use ViV if ViV was used outside of ACE Cargo
|
||||
!(typeOf _x isEqualTo "CargoNet_01_box_F")
|
||||
} isEqualTo -1} // Don't use ViV if ViV was used outside of ACE Cargo
|
||||
} isEqualTo -1}
|
||||
) then {
|
||||
private _cargoBox = createVehicle ["CargoNet_01_box_F", [0, 0, 0], [], 0, "CAN_COLLIDE"];
|
||||
if ((_vehicle canVehicleCargo _cargoBox) select 1) then {
|
||||
while {!(_vehicle setVehicleCargo _cargoBox)} do { // Move ViV cargo to ACE Cargo
|
||||
private _cargoNet = createVehicle ["CargoNet_01_box_F", [0, 0, 0], [], 0, "CAN_COLLIDE"];
|
||||
if ((_vehicle canVehicleCargo _cargoNet) select 1) then {
|
||||
while {!(_vehicle setVehicleCargo _cargoNet)} do { // Move ViV cargo to ACE Cargo
|
||||
private _itemViV = _vehicleCargo deleteAt 0;
|
||||
if !(objNull setVehicleCargo _itemViV) exitWith {deleteVehicle _cargoBox;};
|
||||
if (typeOf _itemViV isEqualTo "CargoNet_01_box_F") exitWith { // The vehicle is already full of "CargoNet_01_box_F")
|
||||
deleteVehicle _cargoNet;
|
||||
_item setVariable [QGVAR(cargoNet), _itemViV, true];
|
||||
};
|
||||
if !(objNull setVehicleCargo _itemViV) exitWith {deleteVehicle _cargoNet;};
|
||||
|
||||
_itemViV attachTo [_vehicle,[0,0,-100]];
|
||||
_itemViV setVariable [QGVAR(cargoNet), _cargoNet, true];
|
||||
_itemViV attachTo [_vehicle, [0,0,-100]];
|
||||
[QEGVAR(common,hideObjectGlobal), [_itemViV, true]] call CBA_fnc_serverEvent;
|
||||
|
||||
// Some objects below water will take damage over time and eventualy become "water logged" and unfixable (because of negative z attach)
|
||||
[_itemViV, "blockDamage", "ACE_cargo", true] call EFUNC(common,statusEffect_set);
|
||||
};
|
||||
if !(isNull _cargoNet) then {
|
||||
_item setVariable [QGVAR(cargoNet), _cargoNet, true];
|
||||
};
|
||||
} else {
|
||||
deleteVehicle _cargoBox;
|
||||
deleteVehicle _cargoNet;
|
||||
};
|
||||
};
|
||||
_item attachTo [_vehicle, [0,0,-100]];
|
||||
|
@ -48,14 +48,23 @@ private _itemSize = [_item] call FUNC(getSizeItem);
|
||||
_vehicle setVariable [QGVAR(space), (_space + _itemSize), true];
|
||||
|
||||
if (_item isEqualType objNull) then {
|
||||
if (isVehicleCargo _item) then {
|
||||
objNull setVehicleCargo _item;
|
||||
_item setPosASL (AGLtoASL _emptyPosAGL);
|
||||
} else {
|
||||
if (isNull isVehicleCargo _item) then {
|
||||
detach _item;
|
||||
// hideObjectGlobal must be executed before setPos to ensure light objects are rendered correctly
|
||||
// do both on server to ensure they are executed in the correct order
|
||||
[QGVAR(serverUnload), [_item, _emptyPosAGL]] call CBA_fnc_serverEvent;
|
||||
|
||||
private _cargoNet = _item getVariable [QGVAR(cargoNet), objNull];
|
||||
if !(isNull _cargoNet) then {
|
||||
private _itemsRemaining = _loaded select {_x getVariable [QGVAR(cargoNet), objNull] isEqualTo _cargoNet};
|
||||
if (_itemsRemaining isEqualTo []) then {
|
||||
objNull setVehicleCargo _cargoNet;
|
||||
deleteVehicle _cargoNet;
|
||||
};
|
||||
};
|
||||
} else {
|
||||
objNull setVehicleCargo _item;
|
||||
_item setPosASL (AGLtoASL _emptyPosAGL);
|
||||
};
|
||||
} else {
|
||||
private _newItem = createVehicle [_item, _emptyPosAGL, [], 0, "NONE"];
|
||||
|
Loading…
Reference in New Issue
Block a user