From b4edc5bac6a214c14c8376d53ce2f57c9215a286 Mon Sep 17 00:00:00 2001 From: Linden <65407488+thelindat@users.noreply.github.com> Date: Mon, 22 May 2023 03:38:36 +1000 Subject: [PATCH] feat(client/vehicleProperties): support extra props Add modKit and bulletProofTyres. --- .../client/resource/vehicleProperties/index.ts | 2 ++ resource/vehicleProperties/client.lua | 17 +++++++++++------ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/package/client/resource/vehicleProperties/index.ts b/package/client/resource/vehicleProperties/index.ts index 2d646aa..27ac9c1 100644 --- a/package/client/resource/vehicleProperties/index.ts +++ b/package/client/resource/vehicleProperties/index.ts @@ -23,6 +23,7 @@ interface VehicleProperties { neonColor: [number, number, number]; extras: boolean[]; tyreSmokeColor: [number, number, number]; + modKit: number; modSpoilers: number; modFrontBumper: number; modRearBumper: number; @@ -83,6 +84,7 @@ interface VehicleProperties { rightHeadlight: boolean; frontBumper: boolean; rearBumper: boolean; + bulletProofTyres: boolean; } export const getVehicleProperties = (vehicle: number): VehicleProperties => diff --git a/resource/vehicleProperties/client.lua b/resource/vehicleProperties/client.lua index b68b71e..d3cce67 100644 --- a/resource/vehicleProperties/client.lua +++ b/resource/vehicleProperties/client.lua @@ -25,6 +25,7 @@ if cache.game == 'redm' then return end ---@field neonColor? number | number[] ---@field extras? boolean[] ---@field tyreSmokeColor? number | number[] +---@field modKit number ---@field modSpoilers? number ---@field modFrontBumper? number ---@field modRearBumper? number @@ -81,6 +82,7 @@ if cache.game == 'redm' then return end ---@field windows? number[] ---@field doors? number[] ---@field tyres? number[] +---@field bulletProofTyres? boolean RegisterNetEvent('ox_lib:setVehicleProperties', function(netid, data) local timeout = 100 @@ -160,6 +162,7 @@ function lib.getVehicleProperties(vehicle) end return { + modKit = GetVehicleModKit(vehicle), model = GetEntityModel(vehicle), plate = GetVehicleNumberPlateText(vehicle), plateIndex = GetVehicleNumberPlateTextIndex(vehicle), @@ -240,6 +243,7 @@ function lib.getVehicleProperties(vehicle) windows = damage.windows, doors = damage.doors, tyres = damage.tyres, + bulletProofTyres = GetVehicleTyresCanBurst(vehicle), -- no setters? -- leftHeadlight = GetIsLeftVehicleHeadlightDamaged(vehicle), -- rightHeadlight = GetIsRightVehicleHeadlightDamaged(vehicle), @@ -256,6 +260,7 @@ 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 @@ -263,7 +268,7 @@ function lib.setVehicleProperties(vehicle, props) local colorPrimary, colorSecondary = GetVehicleColours(vehicle) local pearlescentColor, wheelColor = GetVehicleExtraColours(vehicle) - SetVehicleModKit(vehicle, 0) + SetVehicleModKit(vehicle, props.modKit or 0) SetVehicleAutoRepairDisabled(vehicle, true) if props.plate then @@ -368,11 +373,7 @@ function lib.setVehicleProperties(vehicle, props) if props.tyres then for tyre, state in pairs(props.tyres) do - if state == 1 then - SetVehicleTyreBurst(vehicle, tyre, false, 1000.0) - else - SetVehicleTyreBurst(vehicle, tyre, true, 1000.0) - end + SetVehicleTyreBurst(vehicle, tyre, state == 2, 1000.0) end end @@ -593,5 +594,9 @@ function lib.setVehicleProperties(vehicle, props) SetVehicleMod(vehicle, 49, props.modLightbar, false) end + if props.bulletProofTyres ~= nil then + SetVehicleTyresCanBurst(vehicle, props.bulletProofTyres) + end + return true end