Skip to content

Commit bd4ed96

Browse files
authored
feat: GetVehicleClass server export (#566)
* feat: GetVehicleModel export * fix: check for empty cache * fix: lint * remove unused meta table
1 parent 674864a commit bd4ed96

File tree

2 files changed

+32
-0
lines changed

2 files changed

+32
-0
lines changed

client/main.lua

+11
Original file line numberDiff line numberDiff line change
@@ -63,3 +63,14 @@ CreateThread(function()
6363
end
6464
end
6565
end)
66+
67+
lib.callback.register('qbx_core:client:getVehicleClasses', function()
68+
local models = GetAllVehicleModels()
69+
local classes = {}
70+
for i = 1, #models do
71+
local model = models[i]
72+
local class = GetVehicleClassFromName(model)
73+
classes[model] = class
74+
end
75+
return classes
76+
end)

server/main.lua

+21
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,27 @@ QBX.Player_Buckets = {}
3535
QBX.Entity_Buckets = {}
3636
QBX.UsableItems = {}
3737

38+
---@alias Model number
39+
---@alias VehicleClass integer see https://docs.fivem.net/natives/?_0x29439776AAA00A62
40+
---@type table<Model, VehicleClass>
41+
local vehicleClasses = {}
42+
43+
---Caches the vehicle classes the first time this is called by getting the data from a random client.
44+
---Returns nil if there is no cache and no client is connected to get the data from.
45+
---@param model number
46+
---@return VehicleClass?
47+
function GetVehicleClass(model)
48+
if #vehicleClasses == 0 then
49+
local players = GetPlayers()
50+
if #players == 0 then return end
51+
local playerId = players[math.random(#players)]
52+
vehicleClasses = lib.callback.await('qbx_core:client:getVehicleClasses', playerId)
53+
end
54+
return vehicleClasses[model]
55+
end
56+
57+
exports('GetVehicleClass', GetVehicleClass)
58+
3859
---@return table<string, Vehicle>
3960
function GetVehiclesByName()
4061
return QBX.Shared.Vehicles

0 commit comments

Comments
 (0)