// by PabstMirror, commy2 #include "script_component.hpp" if (isServer) then { // release object on hard disconnection. Function is identical to killed addMissionEventHandler ["HandleDisconnect", {_this call FUNC(handleKilled)}]; }; if (!hasInterface) exitWith {}; if (isNil "ACE_maxWeightDrag") then { ACE_maxWeightDrag = 800; }; if (isNil "ACE_maxWeightCarry") then { ACE_maxWeightCarry = 600; }; ["isNotDragging", {!((_this select 0) getVariable [QGVAR(isDragging), false])}] call EFUNC(common,addCanInteractWithCondition); ["isNotCarrying", {!((_this select 0) getVariable [QGVAR(isCarrying), false])}] call EFUNC(common,addCanInteractWithCondition); // release object on player change. This does work when returning to lobby, but not when hard disconnecting. ["unit", FUNC(handlePlayerChanged)] call CBA_fnc_addPlayerEventHandler; ["vehicle", {[ACE_player, objNull] call FUNC(handlePlayerChanged)}] call CBA_fnc_addPlayerEventHandler; ["weapon", FUNC(handlePlayerWeaponChanged)] call CBA_fnc_addPlayerEventHandler; // handle waking up dragged unit and falling unconscious while dragging ["ace_unconscious", {_this call FUNC(handleUnconscious)}] call CBA_fnc_addEventHandler; // display event handler ["MouseZChanged", {_this select 1 call FUNC(handleScrollWheel)}] call CBA_fnc_addDisplayHandler; //@todo Captivity? //Add Keybind: ["ACE3 Common", QGVAR(drag), (localize LSTRING(DragKeybind)), { if (!alive ACE_player) exitWith {false}; if !([ACE_player, objNull, ["isNotDragging", "isNotCarrying"]] call EFUNC(common,canInteractWith)) exitWith {false}; // If we are drag/carrying something right now then just drop it: if (ACE_player getVariable [QGVAR(isDragging), false]) exitWith { [ACE_player, ACE_player getVariable [QGVAR(draggedObject), objNull]] call FUNC(dropObject); false }; if (ACE_player getVariable [QGVAR(isCarrying), false]) exitWith { [ACE_player, ACE_player getVariable [QGVAR(carriedObject), objNull]] call FUNC(dropObject_carry); false }; private _cursor = cursorObject; if ((isNull _cursor) || {(_cursor distance ACE_player) > 2.6}) exitWith {false}; if (!([ACE_player, _cursor] call FUNC(canDrag))) exitWith {false}; [ACE_player, _cursor] call FUNC(startDrag); false }, {}, [-1, [false, false, false]]] call CBA_fnc_addKeybind; // UNBOUND ["ACE3 Common", QGVAR(carry), (localize LSTRING(CarryKeybind)), { if (!alive ACE_player) exitWith {false}; if !([ACE_player, objNull, ["isNotDragging", "isNotCarrying"]] call EFUNC(common,canInteractWith)) exitWith {false}; // If we are drag/carrying something right now then just drop it: if (ACE_player getVariable [QGVAR(isDragging), false]) exitWith { [ACE_player, ACE_player getVariable [QGVAR(draggedObject), objNull]] call FUNC(dropObject); false }; if (ACE_player getVariable [QGVAR(isCarrying), false]) exitWith { [ACE_player, ACE_player getVariable [QGVAR(carriedObject), objNull]] call FUNC(dropObject_carry); false }; private _cursor = cursorObject; if ((isNull _cursor) || {(_cursor distance ACE_player) > 2.6}) exitWith {false}; if (!([ACE_player, _cursor] call FUNC(canCarry))) exitWith {false}; [ACE_player, _cursor] call FUNC(startCarry); false }, {}, [-1, [false, false, false]]] call CBA_fnc_addKeybind; // UNBOUND