1
0
Fork 0
forked from Simnation/Main
Main/resources/[carscripts]/kq_roofboxes/client/editable/handling.lua
2025-06-07 08:51:21 +02:00

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