Fivem Car Key Script -
client_scripts { 'config.lua', 'client.lua' }
dependencies { 'es_extended' -- or 'qb-core' depending on your framework } Config = {} -- Framework (esx or qb) Config.Framework = 'esx' -- change to 'qb' if using QBCore fivem car key script
-- Engine start keybind (optional) Config.EngineKeybind = 'U' client_scripts { 'config
-- Toggle engine on/off (only if you have key) Citizen.CreateThread(function() while true do Citizen.Wait(0) if IsControlJustPressed(0, 303) then -- U key (change in config) local ped = PlayerPedId() if IsPedInAnyVehicle(ped, false) then local vehicle = GetVehiclePedIsIn(ped, false) local plate = GetVehicleNumberPlateText(vehicle) lib.callback.await('carkeys:hasKey', false, plate) if hasKey then engineOn = not engineOn SetVehicleEngineOn(vehicle, engineOn, false, true) if engineOn then Config.Notify('Engine started', 'success') else Config.Notify('Engine turned off', 'info') end else Config.Notify('You don't have the key!', 'error') end end end end end) client_scripts { 'config.lua'
-- Lock/Unlock vehicle with key Citizen.CreateThread(function() while true do Citizen.Wait(0) if IsControlJustPressed(0, 38) and IsControlPressed(0, 21) then -- L key (change in config) local ped = PlayerPedId() local vehicle = GetVehiclePedIsIn(ped, false) if vehicle == 0 then -- Not in vehicle, find nearest vehicle within distance local pos = GetEntityCoords(ped) local vehicle = GetClosestVehicle(pos.x, pos.y, pos.z, Config.InteractDistance, 0, 70) if vehicle ~= 0 then local plate = GetVehicleNumberPlateText(vehicle) lib.callback.await('carkeys:hasKey', false, plate) if hasKey then if GetVehicleDoorLockStatus(vehicle) == 2 then SetVehicleDoorsLocked(vehicle, 1) vehicleLocked = false Config.Notify('Vehicle unlocked', 'success') else SetVehicleDoorsLocked(vehicle, 2) vehicleLocked = true Config.Notify('Vehicle locked', 'info') end else Config.Notify('You don't have the key for this vehicle', 'error') end end else -- Inside vehicle, lock/unlock current vehicle local plate = GetVehicleNumberPlateText(vehicle) lib.callback.await('carkeys:hasKey', false, plate) if hasKey then if GetVehicleDoorLockStatus(vehicle) == 2 then SetVehicleDoorsLocked(vehicle, 1) vehicleLocked = false Config.Notify('Vehicle unlocked', 'success') else SetVehicleDoorsLocked(vehicle, 2) vehicleLocked = true Config.Notify('Vehicle locked', 'info') end end end end end end)
-- Key item name (create this in your database/items) Config.KeyItem = 'car_key'
-- Remove key from player (when vehicle is sold/destroyed) RegisterNetEvent('carkeys:removeKey') AddEventHandler('carkeys:removeKey', function(plate) local src = source local xPlayer = Framework.GetPlayerFromId(src) local keyItem = string.format('%s_%s', Config.KeyItem, plate) xPlayer.removeInventoryItem(keyItem, 1) end)