mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
54 lines
1.5 KiB
Plaintext
54 lines
1.5 KiB
Plaintext
/**
|
|
* fn_limitMovementSpeed.sqf
|
|
* @Descr: Limits the movement speed of a unit
|
|
* @Author: Glowbal
|
|
*
|
|
* @Arguments: [unit OBJECT, fallDown BOOL (Optional)]
|
|
* @Return: void
|
|
* @PublicAPI: true
|
|
*/
|
|
|
|
#include "script_component.hpp"
|
|
|
|
private ["_unit","_carriedObj"];
|
|
_unit = _this select 0;
|
|
_fallDown = false;
|
|
if (count _this > 1) then {
|
|
_fallDown = _this select 1;
|
|
};
|
|
|
|
if ((_unit getvariable [QGVAR(limitMovementSpeed),false])) exitwith {
|
|
_unit setvariable [QGVAR(limitMovementSpeed),nil,true];
|
|
};
|
|
|
|
[{
|
|
private["_unit","_fallDown","_carriedObj"];
|
|
_unit = (_this select 0) select 0;
|
|
_fallDown = (_this select 0) select 1;
|
|
|
|
_carriedObj = [_unit] call FUNC(getCarriedObj);
|
|
|
|
if !(_unit getvariable [QGVAR(limitMovementSpeed),false]) exitwith {
|
|
[(_this select 1)] call cba_fnc_removePerFrameHandler;
|
|
};
|
|
if !((!isNull _carriedObj) && (alive _unit)) exitwith {
|
|
[(_this select 1)] call cba_fnc_removePerFrameHandler;
|
|
};
|
|
|
|
if (speed _unit > 12 && vehicle _unit == _unit && isTouchingGround _unit) then {
|
|
|
|
_unit setVelocity [0,0,0];
|
|
|
|
if (_fallDown) then {
|
|
_unit playMove "amovppnemstpsraswrfldnon";
|
|
};
|
|
|
|
if (_carriedObj isKindOf "Man") then {
|
|
hint "You can not move this fast while transporting this person.";
|
|
} else {
|
|
hint "You can not move this fast while carrying this object";
|
|
};
|
|
[_unit,ObjNull] call FUNC(carryObj);
|
|
};
|
|
}, 0.5, [_unit,_fallDown] ] call CBA_fnc_addPerFrameHandler;
|