Skip to content

EXTER-LOCKPICK TAKES INSPIRATION FROM ONE OF THE ROLEPLAY SERVERS, NOPIXEL 4.0

License

Notifications You must be signed in to change notification settings

ExterCore/exter-lockpick

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

exter-lockpick

EXTER-LOCKPICK TAKES INSPIRATION FROM ONE OF THE ROLEPLAY SERVERS, NOPIXEL 4.0

npx

qb-vehiclekeys usage

STEP 1 : DELETED qb-lockpick

STEP 2 : FOLLOW THESE INSTRUCTIONS

search this in qb-vehiclekeys/client/main.lua

for old repository qb-vehiclekeys

RegisterNetEvent('lockpicks:UseLockpick', function(isAdvanced)
    LockpickDoor(isAdvanced)
end)

for new repository qb-vehiclekeys

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)

and replace with this code if you using ox_inventory

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)

and replace with this code if you using qb-inventory

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 )

About

EXTER-LOCKPICK TAKES INSPIRATION FROM ONE OF THE ROLEPLAY SERVERS, NOPIXEL 4.0

Resources

License

Stars

Watchers

Forks

Packages

No packages published