ACE3/addons/vehicles/functions/fnc_speedLimiter.sqf

52 lines
1.3 KiB
Plaintext
Raw Normal View History

/*
* Author: commy2
* Toggle speed limiter for Driver in Vehicle.
*
* Arguments:
* 0: Driver <OBJECT>
* 1: Vehicle <OBJECT>
*
* Return Value:
* None
*
* Example:
* [player, car] call ace_vehicles_fnc_speedLimiter
*
* Public: No
*/
2015-01-16 13:20:41 +00:00
#include "script_component.hpp"
private "_maxSpeed";
2015-01-16 13:20:41 +00:00
params ["_driver", "_vehicle"];
2015-01-16 13:20:41 +00:00
if (GETGVAR(isSpeedLimiter,false)) exitWith {
2015-05-28 19:59:04 +00:00
[localize LSTRING(Off)] call EFUNC(common,displayTextStructured);
2015-01-16 13:20:41 +00:00
playSound "ACE_Sound_Click";
GVAR(isSpeedLimiter) = false;
};
2015-05-28 19:59:04 +00:00
[localize LSTRING(On)] call EFUNC(common,displayTextStructured);
2015-01-16 13:20:41 +00:00
playSound "ACE_Sound_Click";
GVAR(isSpeedLimiter) = true;
_maxSpeed = speed _vehicle max 10;
[{
params ["_args", "_idPFH"];
_args params ["_driver", "_vehicle", "_maxSpeed"];
2015-01-16 13:20:41 +00:00
if (!GVAR(isSpeedLimiter) || {_driver != driver _vehicle}) exitWith {
GVAR(isSpeedLimiter) = false;
[_idPFH] call CBA_fnc_removePerFrameHandler;
2015-01-16 13:20:41 +00:00
};
private "_speed";
_speed = speed _vehicle;
if (_speed > _maxSpeed) then {
_vehicle setVelocity ((velocity _vehicle) vectorMultiply ((_maxSpeed / _speed) - 0.00001)); // fix 1.42-hotfix PhysX libraries applying force in previous direction when turning
2015-01-16 13:20:41 +00:00
};
} , 0, [_driver, _vehicle, _maxSpeed]] call CBA_fnc_addPerFrameHandler;