diff --git a/addons/vehicles/functions/fnc_speedLimiter.sqf b/addons/vehicles/functions/fnc_speedLimiter.sqf index da2f7bf19a..6d76293bff 100644 --- a/addons/vehicles/functions/fnc_speedLimiter.sqf +++ b/addons/vehicles/functions/fnc_speedLimiter.sqf @@ -21,9 +21,13 @@ params ["_driver", "_vehicle"]; if (GVAR(isSpeedLimiter)) exitWith { [localize LSTRING(Off)] call EFUNC(common,displayTextStructured); playSound "ACE_Sound_Click"; + _vehicle setCruiseControl [0, false]; GVAR(isSpeedLimiter) = false; }; +(getCruiseControl _vehicle) params ["_speedLimit"]; +if (_speedLimit != 0) exitWith { TRACE_1("speed limit set by external source",_speedLimit); }; + [localize LSTRING(On)] call EFUNC(common,displayTextStructured); playSound "ACE_Sound_Click"; GVAR(isSpeedLimiter) = true; @@ -38,21 +42,24 @@ GVAR(speedLimit) = speed _vehicle max 5; private _uavControll = UAVControl _vehicle; if ((_uavControll select 0) != _driver || _uavControll select 1 != "DRIVER") then { GVAR(isSpeedLimiter) = false; + _vehicle setCruiseControl [0, false]; }; } else { if (_driver != driver _vehicle) then { GVAR(isSpeedLimiter) = false; + _vehicle setCruiseControl [0, false]; }; }; if (!GVAR(isSpeedLimiter)) exitWith { + _vehicle setCruiseControl [0, false]; [_idPFH] call CBA_fnc_removePerFrameHandler; }; - private _speed = speed _vehicle; - - if (_speed > GVAR(speedLimit)) then { - _vehicle setVelocity ((velocity _vehicle) vectorMultiply ((GVAR(speedLimit) / _speed) - 0.00001)); // fix 1.42-hotfix PhysX libraries applying force in previous direction when turning + getCruiseControl _vehicle params ["_currentSpeedLimit"]; + if (_currentSpeedLimit != GVAR(speedLimit)) then { + _vehicle setCruiseControl [GVAR(speedLimit), false]; }; + }, 0, [_driver, _vehicle]] call CBA_fnc_addPerFrameHandler;