mirror of
https://github.com/CommunityOx/ox_lib.git
synced 2026-08-19 16:06:02 +01:00
refactor(resource/vehicleProperties): typings and formatting
This commit is contained in:
@@ -1,3 +1,85 @@
|
||||
---@class VehicleProperties
|
||||
---@field model? string
|
||||
---@field plate? string
|
||||
---@field plateIndex? number
|
||||
---@field bodyHealth? number
|
||||
---@field engineHealth? number
|
||||
---@field tankHealth? number
|
||||
---@field fuelLevel? number
|
||||
---@field oilLevel? number
|
||||
---@field dirtLevel? number
|
||||
---@field color1? number
|
||||
---@field color2? number
|
||||
---@field pearlescentColor? number
|
||||
---@field interiorColor? number
|
||||
---@field dashboardColor? number
|
||||
---@field wheelColor? number
|
||||
---@field wheelWidth? number
|
||||
---@field wheelSize? number
|
||||
---@field wheels? number
|
||||
---@field windowTint? number
|
||||
---@field xenonColor? number
|
||||
---@field neonEnabled? boolean[]
|
||||
---@field neonColor? number | number[]
|
||||
---@field extras? boolean[]
|
||||
---@field tyreSmokeColor? number | number[]
|
||||
---@field modSpoilers? number
|
||||
---@field modFrontBumper? number
|
||||
---@field modRearBumper? number
|
||||
---@field modSideSkirt? number
|
||||
---@field modExhaust? number
|
||||
---@field modFrame? number
|
||||
---@field modGrille? number
|
||||
---@field modHood? number
|
||||
---@field modFender? number
|
||||
---@field modRightFender? number
|
||||
---@field modRoof? number
|
||||
---@field modEngine? number
|
||||
---@field modBrakes? number
|
||||
---@field modTransmission? number
|
||||
---@field modHorns? number
|
||||
---@field modSuspension? number
|
||||
---@field modArmor? number
|
||||
---@field modNitrous? number
|
||||
---@field modTurbo? boolean
|
||||
---@field modSubwoofer? boolean
|
||||
---@field modSmokeEnabled? boolean
|
||||
---@field modHydraulics? boolean
|
||||
---@field modXenon? boolean
|
||||
---@field modFrontWheels? number
|
||||
---@field modBackWheels? number
|
||||
---@field modCustomTiresF? boolean
|
||||
---@field modCustomTiresR? boolean
|
||||
---@field modPlateHolder? number
|
||||
---@field modVanityPlate? number
|
||||
---@field modTrimA? number
|
||||
---@field modOrnaments? number
|
||||
---@field modDashboard? number
|
||||
---@field modDial? number
|
||||
---@field modDoorSpeaker? number
|
||||
---@field modSeats? number
|
||||
---@field modSteeringWheel? number
|
||||
---@field modShifterLeavers? number
|
||||
---@field modAPlate? number
|
||||
---@field modSpeakers? number
|
||||
---@field modTrunk? number
|
||||
---@field modHydrolic? number
|
||||
---@field modEngineBlock? number
|
||||
---@field modAirFilter? number
|
||||
---@field modStruts? number
|
||||
---@field modArchCover? number
|
||||
---@field modAerials? number
|
||||
---@field modTrimB? number
|
||||
---@field modTank? number
|
||||
---@field modWindows? number
|
||||
---@field modDoorR? number
|
||||
---@field modLivery? number
|
||||
---@field modRoofLivery? number
|
||||
---@field modLightbar? number
|
||||
---@field windows? number[]
|
||||
---@field doors? number[]
|
||||
---@field tyres? number[]
|
||||
|
||||
RegisterNetEvent('ox_lib:setVehicleProperties', function(netid, data)
|
||||
local timeout = 100
|
||||
while not NetworkDoesEntityExistWithNetworkId(netid) and timeout > 0 do
|
||||
@@ -9,17 +91,20 @@ RegisterNetEvent('ox_lib:setVehicleProperties', function(netid, data)
|
||||
end
|
||||
end)
|
||||
|
||||
---@param vehicle number
|
||||
---@return VehicleProperties?
|
||||
function lib.getVehicleProperties(vehicle)
|
||||
if DoesEntityExist(vehicle) then
|
||||
---@type number | number[], number | number[]
|
||||
local colorPrimary, colorSecondary = GetVehicleColours(vehicle)
|
||||
local pearlescentColor, wheelColor = GetVehicleExtraColours(vehicle)
|
||||
|
||||
if GetIsVehiclePrimaryColourCustom(vehicle) then
|
||||
colorPrimary = {GetVehicleCustomPrimaryColour(vehicle)}
|
||||
colorPrimary = { GetVehicleCustomPrimaryColour(vehicle) }
|
||||
end
|
||||
|
||||
if GetIsVehicleSecondaryColourCustom(vehicle) then
|
||||
colorSecondary = {GetVehicleCustomSecondaryColour(vehicle)}
|
||||
colorSecondary = { GetVehicleCustomSecondaryColour(vehicle) }
|
||||
end
|
||||
|
||||
local extras = {}
|
||||
@@ -84,6 +169,7 @@ function lib.getVehicleProperties(vehicle)
|
||||
engineHealth = math.floor(GetVehicleEngineHealth(vehicle) + 0.5),
|
||||
tankHealth = math.floor(GetVehiclePetrolTankHealth(vehicle) + 0.5),
|
||||
fuelLevel = math.floor(GetVehicleFuelLevel(vehicle) + 0.5),
|
||||
oilLevel = math.floor(GetVehicleOilLevel(vehicle) + 0.5),
|
||||
dirtLevel = math.floor(GetVehicleDirtLevel(vehicle) + 0.5),
|
||||
color1 = colorPrimary,
|
||||
color2 = colorSecondary,
|
||||
@@ -97,9 +183,9 @@ function lib.getVehicleProperties(vehicle)
|
||||
windowTint = GetVehicleWindowTint(vehicle),
|
||||
xenonColor = GetVehicleXenonLightsColor(vehicle),
|
||||
neonEnabled = neons,
|
||||
neonColor = {GetVehicleNeonLightsColour(vehicle)},
|
||||
neonColor = { GetVehicleNeonLightsColour(vehicle) },
|
||||
extras = extras,
|
||||
tyreSmokeColor = {GetVehicleTyreSmokeColor(vehicle)},
|
||||
tyreSmokeColor = { GetVehicleTyreSmokeColor(vehicle) },
|
||||
modSpoilers = GetVehicleMod(vehicle, 0),
|
||||
modFrontBumper = GetVehicleMod(vehicle, 1),
|
||||
modRearBumper = GetVehicleMod(vehicle, 2),
|
||||
@@ -156,19 +242,25 @@ function lib.getVehicleProperties(vehicle)
|
||||
windows = damage.windows,
|
||||
doors = damage.doors,
|
||||
tyres = damage.tyres,
|
||||
leftHeadlight = damage.leftHeadlight,
|
||||
rightHeadlight = damage.rightHeadlight,
|
||||
frontBumper = damage.frontBumper,
|
||||
rearBumper = damage.rearBumper,
|
||||
-- no setters?
|
||||
-- leftHeadlight = GetIsLeftVehicleHeadlightDamaged(vehicle),
|
||||
-- rightHeadlight = GetIsRightVehicleHeadlightDamaged(vehicle),
|
||||
-- frontBumper = IsVehicleBumperBrokenOff(vehicle, true),
|
||||
-- rearBumper = IsVehicleBumperBrokenOff(vehicle, false),
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
---@param vehicle number Entity handle
|
||||
---@param props table Properties
|
||||
---@param vehicle number
|
||||
---@param props VehicleProperties
|
||||
---@return boolean?
|
||||
function lib.setVehicleProperties(vehicle, props)
|
||||
if not DoesEntityExist(vehicle) then error(("Unable to set vehicle properties for '%s' (entity does not exist)"):format(vehicle)) end
|
||||
if NetworkGetEntityIsNetworked(vehicle) and NetworkGetEntityOwner(vehicle) ~= cache.playerId then error(("Unable to set vehicle properties for '%s' (client is not entity owner)"):format(vehicle)) end
|
||||
if not DoesEntityExist(vehicle) then error(("Unable to set vehicle properties for '%s' (entity does not exist)"):
|
||||
format(vehicle))
|
||||
end
|
||||
if NetworkGetEntityIsNetworked(vehicle) and NetworkGetEntityOwner(vehicle) ~= cache.playerId then error((
|
||||
"Unable to set vehicle properties for '%s' (client is not entity owner)"):format(vehicle))
|
||||
end
|
||||
|
||||
local colorPrimary, colorSecondary = GetVehicleColours(vehicle)
|
||||
local pearlescentColor, wheelColor = GetVehicleExtraColours(vehicle)
|
||||
@@ -290,8 +382,8 @@ function lib.setVehicleProperties(vehicle, props)
|
||||
SetVehicleNeonLightsColour(vehicle, props.neonColor[1], props.neonColor[2], props.neonColor[3])
|
||||
end
|
||||
|
||||
if props.modSmokeEnabled then
|
||||
ToggleVehicleMod(vehicle, 20, true)
|
||||
if props.modSmokeEnabled ~= nil then
|
||||
ToggleVehicleMod(vehicle, 20, props.modSmokeEnabled)
|
||||
end
|
||||
|
||||
if props.tyreSmokeColor then
|
||||
@@ -370,19 +462,19 @@ function lib.setVehicleProperties(vehicle, props)
|
||||
SetVehicleMod(vehicle, 17, props.modNitrous, false)
|
||||
end
|
||||
|
||||
if props.modTurbo then
|
||||
if props.modTurbo ~= nil then
|
||||
ToggleVehicleMod(vehicle, 18, props.modTurbo)
|
||||
end
|
||||
|
||||
if props.modSubwoofer then
|
||||
if props.modSubwoofer ~= nil then
|
||||
ToggleVehicleMod(vehicle, 19, props.modSubwoofer)
|
||||
end
|
||||
|
||||
if props.modHydraulics then
|
||||
if props.modHydraulics ~= nil then
|
||||
ToggleVehicleMod(vehicle, 21, props.modHydraulics)
|
||||
end
|
||||
|
||||
if props.modXenon then
|
||||
if props.modXenon ~= nil then
|
||||
ToggleVehicleMod(vehicle, 22, props.modXenon)
|
||||
end
|
||||
|
||||
@@ -495,6 +587,10 @@ function lib.setVehicleProperties(vehicle, props)
|
||||
SetVehicleLivery(vehicle, props.modLivery)
|
||||
end
|
||||
|
||||
if props.modRoofLivery then
|
||||
SetVehicleRoofLivery(vehicle, props.modRoofLivery)
|
||||
end
|
||||
|
||||
if props.modLightbar then
|
||||
SetVehicleMod(vehicle, 49, props.modLightbar, false)
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user