Tutorials
How to lock/unlock vehicle with third party script ?
How to make your vehicle drivable after lockpicking it while Config.NeedKeysToStartVehicles is true
How to create vehicle_keys table in your database
1.
---@param vehicle integer
---@param status Optional[integer] (1 || 2)
exports.fivecode_carkeys:ToggleLock(vehicle, status)
-- For example in ox_target
exports.ox_target:addGlobalVehicle({
{
name = 'ox_target:driverF',
icon = 'fa-solid fa-car-side',
label = 'Toggle Lock Vehicle',
bones = { 'bodyshell' },
canInteract = function(entity, distance, coords, name)
local boneId = GetEntityBoneIndexByName(entity, 'door_dside_f')
if boneId ~= -1 then
return #(coords - GetWorldPositionOfEntityBone(entity, boneId)) < 0.5 or #(coords - GetWorldPositionOfEntityBone(entity, GetEntityBoneIndexByName(entity, 'seat_dside_f'))) < 0.72
end
end,
onSelect = function(data)
exports.fivecode_carkeys:ToggleLock(data.entity)
end
}
})
2.
Client side:
---@param vehicle integer
---@param isSociety boolean [default false]
---@param giveKey boolean [true - give key, false - remove key]
exports.fivecode_carkeys:GiveKey(vehicle, isSociety, giveKey)
Script used for this demonstration: https://github.com/esx-framework/esx_vehicleshop
ESX.RegisterServerCallback('esx_vehicleshop:buyVehicle', function(source, cb, model, plate)
local xPlayer = ESX.GetPlayerFromId(source)
local modelPrice = getVehicleFromModel(model).price
if modelPrice and xPlayer.getMoney() >= modelPrice then
xPlayer.removeMoney(modelPrice, "Vehicle Purchase")
MySQL.insert('INSERT INTO owned_vehicles (owner, plate, vehicle) VALUES (?, ?, ?)', {xPlayer.identifier, plate, json.encode({model = joaat(model), plate = plate})
}, function(rowsChanged)
xPlayer.showNotification(TranslateCap('vehicle_belongs', plate))
ESX.OneSync.SpawnVehicle(joaat(model), Config.Zones.ShopOutside.Pos, Config.Zones.ShopOutside.Heading,{plate = plate}, function(vehicle)
Wait(100)
local vehicle = NetworkGetEntityFromNetworkId(vehicle)
Wait(300)
TaskWarpPedIntoVehicle(GetPlayerPed(source), vehicle, -1)
exports.fivecode_carkeys:GiveKey(source, {vehicle = vehicle, plate = plate, model = model}, false, true)
end)
cb(true)
end)
else
cb(false)
end
end)
3.
---@param vehicle integer
---@param hasStored boolean [true - Store(Take keys), false - Take out(Give Keys)]
exports.fivecode_carkeys:StoreVehicleKey(vehicle, hasStored)
4.
---@param vehicle integer
---@param status boolean [true - Can drive without a key(lockpicked), false - Can't drive without a key(not lockpicked)]
exports.fivecode_carkeys:LockpickedVehicle(vehicle, status)
5.
CREATE TABLE IF NOT EXISTS `vehicle_keys` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`vehId` VARCHAR(50) NULL DEFAULT NULL COMMENT 'num or society (Universal key)' COLLATE 'utf8mb4_general_ci',
`isActive` TINYINT(4) NOT NULL DEFAULT '1',
`isStored` TINYINT(4) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`) USING BTREE
);
If you need help with anything, do not hesitate and open a support ticket in our discord.
Last updated
Was this helpful?