diff --git a/addons/common/stringtable.xml b/addons/common/stringtable.xml index af85800ae6..5a2234da05 100644 --- a/addons/common/stringtable.xml +++ b/addons/common/stringtable.xml @@ -1661,5 +1661,21 @@ Разрядить оружие Descargar arma + + Load + Beladen + Załaduj + Carregar + Загрузить + Naložit + Cargar + Carica + Charger + 積み込む + 싣기 + 裝載 + 装载 + Yükle + diff --git a/addons/dragging/XEH_postInit.sqf b/addons/dragging/XEH_postInit.sqf index 6f7d6001c6..59fbc70517 100644 --- a/addons/dragging/XEH_postInit.sqf +++ b/addons/dragging/XEH_postInit.sqf @@ -2,8 +2,12 @@ #include "script_component.hpp" if (isServer) then { - // release object on hard disconnection. Function is identical to killed - addMissionEventHandler ["HandleDisconnect", {_this call FUNC(handleKilled)}]; + // 'HandleDisconnect' EH triggers too late + addMissionEventHandler ["PlayerDisconnected", { + private _unit = (getUserInfo (_this select 5)) select 10; + + _unit call FUNC(handleKilled); + }]; }; if (!hasInterface) exitWith {}; diff --git a/addons/dragging/functions/fnc_canCarry.sqf b/addons/dragging/functions/fnc_canCarry.sqf index dac874f6c0..b80a39ed55 100644 --- a/addons/dragging/functions/fnc_canCarry.sqf +++ b/addons/dragging/functions/fnc_canCarry.sqf @@ -31,10 +31,11 @@ if (_target isKindOf "StaticWeapon") exitWith { crew _target findIf {getText (configOf _x >> "simulation") != "UAVPilot"} == -1 }; -// Units need to be unconscious or limping +// Units need to be unconscious or limping; Units also need to not be in ragdoll, as that causes desync issues if (_target isKindOf "CAManBase") exitWith { - lifeState _target isEqualTo "INCAPACITATED" - || {_target getHitPointDamage "HitLegs" >= 0.5} + !(alive _target != isAwake _target) && + {lifeState _target isEqualTo "INCAPACITATED" || + {_target getHitPointDamage "HitLegs" >= 0.5}} }; // Check max items for WeaponHolders diff --git a/addons/dragging/functions/fnc_canDrag.sqf b/addons/dragging/functions/fnc_canDrag.sqf index 8336e20f2d..d5aac56693 100644 --- a/addons/dragging/functions/fnc_canDrag.sqf +++ b/addons/dragging/functions/fnc_canDrag.sqf @@ -27,10 +27,11 @@ if (_target isKindOf "StaticWeapon") exitWith { crew _target findIf {getText (configOf _x >> "simulation") != "UAVPilot"} == -1 }; -// Units need to be unconscious or limping +// Units need to be unconscious or limping; Units also need to not be in ragdoll, as that causes desync issues if (_target isKindOf "CAManBase") exitWith { - lifeState _target isEqualTo "INCAPACITATED" - || {_target getHitPointDamage "HitLegs" >= 0.5} + !(alive _target != isAwake _target) && + {lifeState _target isEqualTo "INCAPACITATED" || + {_target getHitPointDamage "HitLegs" >= 0.5}} }; // Check max items for WeaponHolders diff --git a/addons/dragging/functions/fnc_carryObjectPFH.sqf b/addons/dragging/functions/fnc_carryObjectPFH.sqf index 072b688b9d..3cba029f24 100644 --- a/addons/dragging/functions/fnc_carryObjectPFH.sqf +++ b/addons/dragging/functions/fnc_carryObjectPFH.sqf @@ -58,11 +58,12 @@ if ( if (_target isKindOf "CAManBase") then { [_cursorObject, 0, true] call EFUNC(common,nearestVehiclesFreeSeat) isNotEqualTo [] } else { - [_target, _cursorObject] call EFUNC(cargo,canLoadItemIn) + ["ace_cargo"] call EFUNC(common,isModLoaded) && + {[_target, _cursorObject] call EFUNC(cargo,canLoadItemIn)} } } ) then { - _hintLMB = localize ELSTRING(Cargo,loadObject); + _hintLMB = localize ELSTRING(common,loadObject); }; private _hintMMB = localize LSTRING(RaiseLowerRotate); diff --git a/addons/dragging/functions/fnc_dropObject_carry.sqf b/addons/dragging/functions/fnc_dropObject_carry.sqf index 0b43873e79..1b475e7b36 100644 --- a/addons/dragging/functions/fnc_dropObject_carry.sqf +++ b/addons/dragging/functions/fnc_dropObject_carry.sqf @@ -91,7 +91,7 @@ if (_mass != 0) then { _target setVariable [QGVAR(carryDirection_temp), nil]; // try loading into vehicle -if (_tryLoad && {!isNull cursorObject} && {([ACE_player, cursorObject, []] call EFUNC(common,canInteractWith))}) then { +if (_tryLoad && {!isNull cursorObject} && {([ACE_player, cursorObject, ["isNotCarrying"]] call EFUNC(common,canInteractWith))}) then { if (_target isKindOf "CAManBase") then { private _vehicles = [cursorObject, 0, true] call EFUNC(common,nearestVehiclesFreeSeat); if ([cursorObject] isEqualTo _vehicles) then { @@ -102,7 +102,10 @@ if (_tryLoad && {!isNull cursorObject} && {([ACE_player, cursorObject, []] call }; }; } else { - if ([_target, cursorObject] call EFUNC(cargo,canLoadItemIn)) then { + if ( + ["ace_cargo"] call EFUNC(common,isModLoaded) && + {[_target, cursorObject] call EFUNC(cargo,canLoadItemIn)} + ) then { [player, _target, cursorObject] call EFUNC(cargo,startLoadIn); }; };