Advanced Garages
Custom Key System
If we don't support your key system out of the box, you can add your own.
- Go to the
frameworkfolder, and opencl-functions.lua - Find the
VehicleGiveKeysandVehicleRemoveKeysfunctions, which should look something like this:
function Framework.Client.VehicleGiveKeys(plate, vehicleEntity)
if not DoesEntityExist(vehicleEntity) then return false end
if Config.VehicleKeys == "qb-vehiclekeys" then
TriggerEvent("vehiclekeys:client:SetOwner", plate)
elseif Config.VehicleKeys == "jaksam-vehicles-keys" then
TriggerServerEvent("vehicles_keys:selfGiveVehicleKeys", plate)
elseif Config.VehicleKeys == "mk_vehiclekeys" then
exports["mk_vehiclekeys"]:AddKey(vehicleEntity)
elseif Config.VehicleKeys == "qs-vehiclekeys" then
local model = GetDisplayNameFromVehicleModel(GetEntityModel(vehicleEntity))
exports['qs-vehiclekeys']:GiveKeys(plate, model)
elseif Config.VehicleKeys == "wasabi_carlock" then
exports.wasabi_carlock:GiveKey(plate)
elseif Config.VehicleKeys == "cd_garage" then
TriggerEvent('cd_garage:AddKeys', plate)
elseif Config.VehicleKeys == "okokGarage" then
TriggerServerEvent("okokGarage:GiveKeys", plate)
elseif Config.VehicleKeys == "t1ger_keys" then
TriggerServerEvent('t1ger_keys:updateOwnedKeys', plate, true)
else
-- Setup custom key system here...
end
end
function Framework.Client.VehicleRemoveKeys(plate, vehicleEntity)
if not DoesEntityExist(vehicleEntity) then return false end
if Config.VehicleKeys == "qs-vehiclekeys" then
local model = GetDisplayNameFromVehicleModel(GetEntityModel(vehicleEntity))
exports['qs-vehiclekeys']:RemoveKeys(plate, model)
elseif Config.VehicleKeys == "wasabi_carlock" then
exports.wasabi_carlock:RemoveKey(plate)
elseif Config.VehicleKeys == "t1ger_keys" then
TriggerServerEvent('t1ger_keys:updateOwnedKeys', plate, false)
else
-- Setup custom key system here...
end
end- Inside the
VehicleGiveKeysfunction, within theelseblock where it says
return 65 -- Setup custom key system here...
replace it with your custom give keys export. Also make sure you're providing the correct variables to the export based on the ones available:
plate- Vehicle plate
vehicleEntity- Physical vehicle entity
If you need to get the vehicle model/spawn code, you can use:
local model = GetDisplayNameFromVehicleModel(GetEntityModel(vehicleEntity)) - If your key script can remove keys, do the same inside the
VehicleRemoveKeysfunction, replacing the line that says
-- Setup custom key system here...
with the remove keys export of your key script. Again, make sure you're using the available variables,plateandvehicleEntity. - In
config/config.lua, setConfig.VehicleKeys = "none".
Last updated 21 July 2026