ACE3/addons/sandbag/functions/fnc_carry.sqf
ulteq da28aa3c64 More sandbag features:
* You can now carry sandbags
* Different sandbag model during deployment (no geometry)
* Deploying sandbags now requires an appropriate surface
* Proper PhysX activation chain when you deploy/pickup sandbags
* Sandbags are now destructible
* Some stringtable fixes
2015-06-04 11:13:12 +02:00

57 lines
1.5 KiB
Plaintext

/*
* Author: Ruthberg
* Carry sandbag
*
* Arguments:
* 0: sandbag <OBJECT>
* 1: unit <OBJECT>
*
* Return Value:
* None
*
* Example:
* [_sandbag, _unit] call ace_sandbag_fnc_carry;
*
* Public: No
*/
#include "script_component.hpp"
PARAMS_2(_sandbag,_unit);
_unit playActionNow "PutDown";
_unit setVariable [QGVAR(usingSandbag), true];
[{
PARAMS_2(_sandbag,_unit);
GVAR(carrier) = ACE_player;
[GVAR(carrier), "ACE_Sandbag", true] call EFUNC(common,setForceWalkStatus);
deleteVehicle _sandbag;
GVAR(sandBag) = createVehicle ["ACE_SandbagObject_NoGeo", [0,0,0], [], 0, "NONE"];
GVAR(sandBag) enableSimulationGlobal false;
// Force physx update
{
_x setPosASL (getPosASL _x);
} forEach (GVAR(carrier) nearObjects ["ACE_SandbagObject", 5]);
GVAR(carryPFH) = [{
if (GVAR(carrier) != ACE_player) exitWith {
call FUNC(drop);
};
GVAR(sandBag) setPosASL ((eyePos ACE_player) vectorAdd (positionCameraToWorld [0,0,1] vectorDiff positionCameraToWorld [0,0,0]));
GVAR(sandBag) setDir (GVAR(deployDirection) + getDir ACE_player);
}, 0, []] call CBA_fnc_addPerFrameHandler;
[localize "STR_ACE_AC_DROP", "", ""] call EFUNC(interaction,showMouseHint);
GVAR(carrier) setVariable [QGVAR(drop),
[GVAR(carrier), "DefaultAction",
{GVAR(carryPFH) != -1 && !isNull (GVAR(sandBag))},
{call FUNC(drop);}
] call EFUNC(common,AddActionEventHandler)];
}, [_sandbag, _unit], 1, 0.5] call EFUNC(common,waitAndExecute);