ACE3/addons/common/functions/fnc_loadPerson.sqf

47 lines
1.5 KiB
Plaintext
Raw Normal View History

#include "script_component.hpp"
2015-09-18 16:28:19 +00:00
/*
* Author: Glowbal
* Loads a specified unit into any nearby vehicle, or _vehicle parameter.
2015-01-16 23:21:47 +00:00
*
2015-09-18 16:28:19 +00:00
* Arguments:
* 0: Unit that will load <OBJECT>
* 1: Unit to be loaded <OBJECT>
* 2: Vehicle that the unit will be loaded in <OBJECT> (default: objNull)
2015-09-18 16:28:19 +00:00
*
* Return Value:
* Vehicle that the unitToBeloaded has been loaded in. Returns objNull if function failed <OBJECT>
2015-09-18 16:28:19 +00:00
*
* Example:
* [bob, kevin] call ace_common_fnc_loadPerson
*
2015-09-18 16:28:19 +00:00
* Public: Yes
2015-01-16 23:21:47 +00:00
*/
2015-09-18 19:12:40 +00:00
#define GROUP_SWITCH_ID QFUNC(loadPerson)
2015-01-16 23:21:47 +00:00
params ["_caller", "_unit", ["_vehicle", objNull]];
TRACE_3("loadPerson",_caller,_unit,_vehicle);
2015-01-16 23:21:47 +00:00
if (!([_caller, _unit, ["isNotDragging", "isNotCarrying", "isNotSwimming"]] call FUNC(canInteractWith)) || {_caller == _unit}) exitWith { objNull };
2015-01-16 23:21:47 +00:00
// Try to use nearest vehicle if a vehicle hasn't been supplied
if (isNull _vehicle) then {
_vehicle = ([_unit] call FUNC(nearestVehiclesFreeSeat)) param [0, objNull];
};
2015-09-18 16:28:19 +00:00
2015-01-16 23:21:47 +00:00
if (!isNull _vehicle) then {
switch (true) do {
case ((crew _vehicle isEqualTo []) && {side group _caller != side group _unit}): {
[_unit, true, GROUP_SWITCH_ID, side group _caller] call FUNC(switchToGroupSide);
};
case (side group _vehicle != side group _unit): {
[_unit, true, GROUP_SWITCH_ID, side group _vehicle] call FUNC(switchToGroupSide);
};
};
TRACE_3("sending ace_loadPersonEvent",_unit,_vehicle,_caller);
2016-05-24 13:13:11 +00:00
["ace_loadPersonEvent", [_unit, _vehicle, _caller], _unit] call CBA_fnc_targetEvent;
2015-01-16 23:21:47 +00:00
};
2015-09-18 16:28:19 +00:00
_vehicle