qb-vehiclekeys usage
STEP 1 : DELETED qb-lockpick
STEP 2 : FOLLOW THESE INSTRUCTIONS
search this in qb-vehiclekeys/client/main.lua
RegisterNetEvent('lockpicks:UseLockpick', function(isAdvanced)
LockpickDoor(isAdvanced)
end)
RegisterNetEvent('lockpicks:UseLockpick', function(isAdvanced)
local ped = PlayerPedId()
local pos = GetEntityCoords(ped)
local vehicle = QBCore.Functions.GetClosestVehicle()
if vehicle == nil or vehicle == 0 then return end
if HasKeys(QBCore.Functions.GetPlate(vehicle)) then return end
if #(pos - GetEntityCoords(vehicle)) > 2.5 then return end
if GetVehicleDoorLockStatus(vehicle) <= 0 then return end
local difficulty = isAdvanced and 'easy' or 'medium' -- Easy for advanced lockpick, medium by default
local success = exports['qb-minigames']:Skillbar(difficulty)
local chance = math.random()
if success then
TriggerServerEvent('hud:server:GainStress', math.random(1, 4))
lastPickedVehicle = vehicle
if GetPedInVehicleSeat(vehicle, -1) == PlayerPedId() then
TriggerServerEvent('qb-vehiclekeys:server:AcquireVehicleKeys', QBCore.Functions.GetPlate(vehicle))
else
QBCore.Functions.Notify(Lang:t('notify.vlockpick'), 'success')
TriggerServerEvent('qb-vehiclekeys:server:setVehLockState', NetworkGetNetworkIdFromEntity(vehicle), 1)
end
else
TriggerServerEvent('hud:server:GainStress', math.random(1, 4))
AttemptPoliceAlert('steal')
end
if isAdvanced then
if chance <= Config.RemoveLockpickAdvanced then
TriggerServerEvent('qb-vehiclekeys:server:breakLockpick', 'advancedlockpick')
end
else
if chance <= Config.RemoveLockpickNormal then
TriggerServerEvent('qb-vehiclekeys:server:breakLockpick', 'lockpick')
end
end
end)
RegisterNetEvent('lockpicks:UseLockpick', function(isAdvanced)
local ped = PlayerPedId()
local pos = GetEntityCoords(ped)
local vehicle = QBCore.Functions.GetClosestVehicle()
if vehicle == nil or vehicle == 0 then return end
if HasKeys(QBCore.Functions.GetPlate(vehicle)) then return end
if #(pos - GetEntityCoords(vehicle)) > 2.5 then return end
if GetVehicleDoorLockStatus(vehicle) <= 0 then return end
local itemName = isAdvanced and "advancedlockpick" or "lockpick"
-- Cek apakah pemain punya lockpick sebelum digunakan
if exports.ox_inventory:Search('count', itemName) > 0 then
exports['exter-lockpick']:OpenLockpickMinigame(function(success)
-- 🔥 Lockpick tetap dihapus, baik sukses maupun gagal
TriggerServerEvent('ox_inventory:removeItem', itemName, 1)
if success then
-- 🔹 Logic sukses
TriggerServerEvent('hud:server:GainStress', math.random(1, 4))
lastPickedVehicle = vehicle
if GetPedInVehicleSeat(vehicle, -1) == PlayerPedId() then
TriggerServerEvent('qb-vehiclekeys:server:AcquireVehicleKeys', QBCore.Functions.GetPlate(vehicle))
else
QBCore.Functions.Notify("Kunci berhasil dibuka!", "success")
TriggerServerEvent('qb-vehiclekeys:server:setVehLockState', NetworkGetNetworkIdFromEntity(vehicle), 1)
end
else
-- 🔹 Logic gagal
TriggerServerEvent('hud:server:GainStress', math.random(1, 4))
AttemptPoliceAlert("steal")
end
end, vehicle, isAdvanced and 'advanced' or 'normal')
else
QBCore.Functions.Notify("Kamu tidak memiliki lockpick!", "error")
end
end)
RegisterNetEvent('lockpicks:UseLockpick', function(isAdvanced)
local ped = PlayerPedId()
local pos = GetEntityCoords(ped)
local vehicle = QBCore.Functions.GetClosestVehicle()
if vehicle == nil or vehicle == 0 then return end
if HasKeys(QBCore.Functions.GetPlate(vehicle)) then return end
if #(pos - GetEntityCoords(vehicle)) > 2.5 then return end
if GetVehicleDoorLockStatus(vehicle) <= 0 then return end
local itemName = isAdvanced and "advancedlockpick" or "lockpick"
-- Cek apakah pemain punya lockpick sebelum digunakan
QBCore.Functions.TriggerCallback('QBCore:HasItem', function(hasItem)
if hasItem then
exports['exter-lockpick']:OpenLockpickMinigame(function(success)
-- 🔥 Hapus Lockpick di Server-Side untuk mencegah duplikasi
TriggerServerEvent('qb-inventory:server:RemoveItem', itemName, 1)
if success then
-- 🔹 Logic sukses
TriggerServerEvent('hud:server:GainStress', math.random(1, 4))
lastPickedVehicle = vehicle
if GetPedInVehicleSeat(vehicle, -1) == PlayerPedId() then
TriggerServerEvent('qb-vehiclekeys:server:AcquireVehicleKeys', QBCore.Functions.GetPlate(vehicle))
else
QBCore.Functions.Notify("Kunci berhasil dibuka!", "success")
TriggerServerEvent('qb-vehiclekeys:server:setVehLockState', NetworkGetNetworkIdFromEntity(vehicle), 1)
end
else
-- 🔹 Logic gagal
TriggerServerEvent('hud:server:GainStress', math.random(1, 4))
AttemptPoliceAlert("steal")
end
end, vehicle, isAdvanced and 'advanced' or 'normal')
else
QBCore.Functions.Notify("Kamu tidak memiliki lockpick!", "error")
end
end, itemName)
end)
to make game shorter / faster adjust the time from the OpenDevice function in client.lua see below example for time adjustment
function OpenDevice(successCallback, target, time)
SetNuiFocus(true, true)
time = 50 -- Change to suit your needs
SendNUIMessage({type = "open", target = target, time = time})
ORIGINAL REPOSITORY ( https://github.com/MaximilianAdF/NoPixel-MiniGames-4.0 )