forked from Simnation/Main
64 lines
2.2 KiB
Lua
64 lines
2.2 KiB
Lua
local vehicleDefaults = {}
|
|
|
|
local function ApplyVehicleRoofboxHandling(vehicle)
|
|
if not Config.handling.enabled then
|
|
return
|
|
end
|
|
|
|
local vecCentreOfMassOffset = GetVehicleHandlingVector(vehicle, 'CHandlingData', 'vecCentreOfMassOffset')
|
|
local fInitialDragCoeff = GetVehicleHandlingFloat(vehicle, 'CHandlingData', 'fInitialDragCoeff')
|
|
|
|
Entity(vehicle).state.kq_roofbox_handling = {
|
|
vecCentreOfMassOffset = vecCentreOfMassOffset,
|
|
fInitialDragCoeff = fInitialDragCoeff,
|
|
}
|
|
|
|
SetVehicleHandlingVector(vehicle, 'CHandlingData', 'vecCentreOfMassOffset', vecCentreOfMassOffset + vector3(0, 0, 1))
|
|
SetVehicleHandlingFloat(vehicle, 'CHandlingData', 'fInitialDragCoeff', math.min(120, fInitialDragCoeff + 6))
|
|
|
|
-- This seems necessary to refresh vehicle handling
|
|
ModifyVehicleTopSpeed(vehicle, 0.0)
|
|
|
|
Debug('Applied handling data')
|
|
end
|
|
|
|
|
|
local function ResetVehicleRoofboxHandling(vehicle)
|
|
if not Config.handling.enabled then
|
|
return
|
|
end
|
|
|
|
local state = Entity(vehicle).state.kq_roofbox_handling
|
|
SetVehicleHandlingVector(vehicle, 'CHandlingData', 'vecCentreOfMassOffset', state.vecCentreOfMassOffset)
|
|
SetVehicleHandlingFloat(vehicle, 'CHandlingData', 'fInitialDragCoeff', state.fInitialDragCoeff)
|
|
|
|
-- This seems necessary to refresh vehicle handling
|
|
ModifyVehicleTopSpeed(vehicle, 0.0)
|
|
|
|
Entity(vehicle).state.kq_roofbox_handling = nil
|
|
|
|
Debug('Reset handling data')
|
|
end
|
|
|
|
if Config.handling.enabled then
|
|
Citizen.CreateThread(function()
|
|
|
|
while true do
|
|
local sleep = 5000
|
|
|
|
local playerPed = PlayerPedId()
|
|
local vehicle = GetVehiclePedIsUsing(playerPed)
|
|
if vehicle > 0 then
|
|
if ShouldVehicleHaveRoofbox(vehicle) then
|
|
if not Entity(vehicle).state.kq_roofbox_handling then
|
|
ApplyVehicleRoofboxHandling(vehicle)
|
|
end
|
|
elseif Entity(vehicle).state.kq_roofbox_handling then
|
|
ResetVehicleRoofboxHandling(vehicle)
|
|
end
|
|
end
|
|
|
|
Citizen.Wait(sleep)
|
|
end
|
|
end)
|
|
end
|