Passer au contenu principal
Quand un véhicule est supprimé par une commande admin ou rangé en garage, il faut souvent le retirer de la persistance pour qu’il ne réapparaisse pas plus tard.
Voici des exemples avec l’export ForgetVehicle.

Commande supprimer véhicule (/dv)

Si vous supprimez un véhicule à la main, retirez-le de la persistance pour éviter qu’il soit restauré automatiquement.
Ajoutez : exports['ts-persistence']:ForgetVehicle(nil, QBCore.Functions.GetPlate(veh))
resources/[qb]/qb-core/client/events.lua
    RegisterNetEvent('QBCore:Command:DeleteVehicle', function()
        local ped = PlayerPedId()
        local veh = GetVehiclePedIsUsing(ped)
        if veh ~= 0 then
            -- Retirer le véhicule de la persistance
            exports['ts-persistence']:ForgetVehicle(nil, QBCore.Functions.GetPlate(veh))
            
            SetEntityAsMissionEntity(veh, true, true)
            DeleteVehicle(veh)
        else
            local pcoords = GetEntityCoords(ped)
            local vehicles = GetGamePool('CVehicle')
            for _, v in pairs(vehicles) do
                if #(pcoords - GetEntityCoords(v)) <= 5.0 then
                    -- Retirer le véhicule de la persistance
                    exports['ts-persistence']:ForgetVehicle(nil, QBCore.Functions.GetPlate(v))
                    
                    SetEntityAsMissionEntity(v, true, true)
                    DeleteVehicle(v)
                end
            end
        end
    end)

Synchroniser l’etat de verrouillage des portes

Quand votre script de cles verrouille/deverrouille un vehicule, mettez aussi a jour ts-persistence avec : exports['ts-persistence']:UpdateDoorStatus(vehicle, status)
  • status = 2 pour verrouiller
  • status = 1 pour deverrouiller
Exemple avec lfKeys (meme logique a appliquer a n’importe quel script de cles) :
if locked == 1 or locked == 0 then
    -- votre logique de lock
    exports['ts-persistence']:UpdateDoorStatus(vehicle, 2)
elseif locked == 2 then
    -- votre logique d'unlock
    exports['ts-persistence']:UpdateDoorStatus(vehicle, 1)
end
Important : l’exemple lfKeys est seulement une reference.
Pour tout autre script de cles, appelez simplement UpdateDoorStatus juste apres le changement de statut des portes.

Intégration à un système de garage

Lorsqu’un véhicule est correctement rangé, appelez l’export pour qu’il ne soit plus restauré par la persistance. Exemple avec qb-garages quand un véhicule est déposé :
Ajoutez : exports['ts-persistence']:ForgetVehicle(nil, plate)
resources/[qb]/qb-garages/client/main.lua
    local function DepositVehicle(veh, data)
        local plate = QBCore.Functions.GetPlate(veh)
        QBCore.Functions.TriggerCallback('qb-garages:server:canDeposit', function(canDeposit)
            if canDeposit then
                local bodyDamage = math.ceil(GetVehicleBodyHealth(veh))
                local engineDamage = math.ceil(GetVehicleEngineHealth(veh))
                local totalFuel = exports[Config.FuelResource]:GetFuel(veh)
                TriggerServerEvent('qb-mechanicjob:server:SaveVehicleProps', QBCore.Functions.GetVehicleProperties(veh))
                TriggerServerEvent('qb-garages:server:updateVehicleStats', plate, totalFuel, engineDamage, bodyDamage)
                
                -- Retirer le véhicule de la persistance
                exports['ts-persistence']:ForgetVehicle(nil, plate)
                
                CheckPlayers(veh)
                if plate then TriggerServerEvent('qb-garages:server:UpdateOutsideVehicle', plate, nil) end
                QBCore.Functions.Notify(Lang:t('success.vehicle_parked'), 'primary', 4500)
            else
                QBCore.Functions.Notify(Lang:t('error.not_owned'), 'error', 3500)
            end
        end, plate, data.type, data.indexgarage, 1)
    end
Last modified on April 1, 2026