> For the complete documentation index, see [llms.txt](https://unknown-development.gitbook.io/unknown-development/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://unknown-development.gitbook.io/unknown-development/scripts/unknown_cargoheist.md).

# unknown\_cargoHeist

*<mark style="color:$info;">Are you searching for a high-quality criminal experience to upgrade your FiveM server? Look no further! Our Cargo Heist system brings a fully immersive and action-packed robbery experience, built to create intense gameplay for both criminals and police.</mark>*

<table data-view="cards"><thead><tr><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td>Buy yours now</td><td><a href="https://mjwvf0ib8.fragmentor.site/resources/cargoheist">https://mjwvf0ib8.fragmentor.site/resources/cargoheist</a></td></tr><tr><td>Checkout all our scripts</td><td><a href="https://mjwvf0ib8.fragmentor.site/resources">https://mjwvf0ib8.fragmentor.site/resources</a></td></tr></tbody></table>

## Showcase

YT video here

## Config

{% tabs %}
{% tab title="config.lua" %}

```lua
Config = {}

-- Framework
Config.Framework = 'qb' -- 'esx', 'qb', 'qbox'

-- Inventory
Config.Inventory = 'ox_inventory' -- 'ox_inventory', 'qb-inventory', 'esx'

-- Target
Config.Target = 'ox_target' -- 'ox_target', 'qb-target', 'bt-target'

-- Minigame
Config.Minigame = 'bl_ui' -- 'bl_ui', 'devhub_hackingMinigames', 'devhub_minigames', 'ox_lib', 'ps-ui' (DON'T FORGET TO CONFIGURE MINIGAME SETTINGS IN SHARED/MINIGAMES.LUA)

-- Progress bar
Config.ProgressBar = 'ox_lib_circle' -- 'ox_lib_bar', 'ox_lib_circle', 'qb-core', 'unknown_ui' (UNRELEASED...), 'progressBars'

-- Notification
Config.Notify = 'ox_lib' -- 'ox_lib', 'qb-core', 'esx', 'unknown_ui' (UNRELEASED...), 'okokNotify'

-- Dispatch
Config.Dispatch = 'cd_dispatch' -- 'cd_dispatch', 'tk_dispatch', 'rcore_dispatch', 'ps-dispatch' (DON'T FORGET TO CONFIGURE DISPATCH SETTINGS IN SHARED/DISPATCH.LUA)

-- Locale
Config.Locale = 'en' -- 'en', 'lt'

-- Cargo settings
Config.CargoModel = 'tr_prop_tr_container_01a' -- Cargo container model (NOT RECOMMENDED TO CHANGE)
Config.RequiredItem = 'lockpick' -- Item needed to start heist
Config.RemoveItemOnHack = true -- Remove item after hacking
Config.Cooldown = 10 -- Minutes before cargo resets

-- Cargo spawn locations
Config.CargoLocations = {
    vector4(578.457, -1888.041, 24.274, 42.7),
    vector4(594.042, -1894.315, 24.274, -115.6),
    vector4(598.614, -1864.183, 23.728, -34.2),
    vector4(591.360, -1860.744, 26.520, 56.6)
}

-- Heist settings
Config.LootingDuration = 35000 -- 35 seconds (milliseconds)

-- Animations
Config.Animations = {
    hack = {'anim@heists@prison_heistig1_p1_guard_checks_bus', 'loop'},
    loot = {'anim@scripted@heist@ig1_table_grab@cash@male@', 'grab'},
}

-- Loot items (chance format: 1 = 100%)
Config.LootItems = {
    {item = 'goldbar', min = 1, max = 5, chance = 0.8},
    {item = 'diamond', min = 2, max = 8, chance = 0.7},
    {item = 'cash', min = 5000, max = 20000, chance = 1.0},
    {item = 'advancedlockpick', min = 1, max = 3, chance = 0.5},
}

-- Webhook settings
Config.Webhooks = {
    heist_started = 'https://discord.com/api/webhooks/',
    heist_completed = 'https://discord.com/api/webhooks/
}

-- Police settings
Config.PoliceRequired = 1 -- Minimum police online
Config.AlertPolice = true -- Send alert to police
Config.PoliceJobName = 'police' -- Police job name

-- Debug mode
Config.Debug = false -- Enable debug prints
```

{% endtab %}

{% tab title="shared/dispatch.lua" %}

```lua
function SendPoliceAlert(coords, message)
    if not Config.AlertPolice then 
        return 
    end
    
    local locale = Locales[Config.Locale] or Locales['en']
    local dispatchMessage = message or locale['dispatch_message'] or 'Cargo heist in progress!'
    
    if Config.Dispatch == 'cd_dispatch' and GetResourceState('cd_dispatch') == 'started' then
        TriggerServerEvent('cd_dispatch:AddNotification', {
            job_table = {Config.PoliceJobName or 'police'},
            coords = coords,
            title = '10-90 - Cargo Heist in Progress',
            message = dispatchMessage,
            flash = 0,
            uniqueId = 'cargo_heist_' .. os.time(),
            sound = 1,
            blip = {
                sprite = 761,
                scale = 1.0,
                colour = 1,
                flashes = true,
                text = '10-90 - Cargo Heist',
                time = 10,
                radius = 0
            }
        })
        
    elseif Config.Dispatch == 'tk_dispatch' and GetResourceState('tk_dispatch') == 'started' then
        exports['tk_dispatch']:addCall({
            jobs = {Config.PoliceJobName or 'police'},
            coords = coords,
            title = 'Cargo Heist',
            priority = 'Priority 1',
            message = dispatchMessage,
            removeTime = 1000 * 60 * 10,
            code = '10-90',
            blip = {
                sprite = 761,
                color = 1,
                scale = 1.0,
            }
        })
        
    elseif Config.Dispatch == 'ps-dispatch' and GetResourceState('ps-dispatch') == 'started' then
        exports['ps-dispatch']:CargoHeist()

            -- ADD THIS TO YOUR PS-DISPATCH CONFIG (MORE: https://github.com/Project-Sloth/ps-dispatch/blob/main/README.md)

            -- ['cargoHeist'] = { -- Need to match the codeName in alerts.lua
            --     radius = 0,
            --     sprite = 761,
            --     color = 1,
            --     scale = 1.0,
            --     length = 300,
            --     sound = 'Lose_1st',
            --     sound2 = 'GTAO_FM_Events_Soundset',
            --     offset = false,
            --     flash = true
            -- },

            -- ADD THIS TO YOUR PS-DISPATCH CLIENT/ALERTS.LUA

            -- local function CargoHeist()
            --     local coords = GetEntityCoords(cache.ped)
            --     local dispatchData = {
            --         message = 'Cargo heist in progress!', -- add this into your locale
            --         codeName = 'cargoHeist', -- this should be the same as in config.lua
            --         code = '10-90',
            --         icon = 'fa-solid fa-box',
            --         priority = 1,
            --         coords = coords,
            --         jobs = { 'leo' },
            --     }

            --     TriggerServerEvent('ps-dispatch:server:notify', dispatchData)
            -- end
            -- exports('CargoHeist', CargoHeist)
        
    elseif Config.Dispatch == 'rcore_dispatch' and GetResourceState('rcore_dispatch') == 'started' then
        local alertData = {
            code = '10-90',                         -- Alert code
            default_priority = 'high',              -- 'low', 'medium', or 'high'
            coords = coords,                        -- Alert location
            job = Config.PoliceJobName or 'police', -- Job(s) to receive alert (string or table)
            text = dispatchMessage,                 -- Alert description
            type = 'alerts',                        -- Alert type for statistics
            blip_time = 500,                        -- Optional: Blip fade time (seconds)
            -- image = 'url_to_image.jpg',          -- Optional: Image URL
            -- custom_sound = 'url_to_sound.mp3',   -- Optional: Custom sound URL
            blip = {                                -- Optional: Custom blip settings
                sprite = 761,
                colour = 1,
                scale = 1.0,
                text = '10-90 Cargo Heist',
                flashes = false,
                radius = 0,
            }
        }

        TriggerServerEvent('rcore_dispatch:server:sendAlert', alertData)
        
    else
        Notify(0, dispatchMessage, 'info')
    end
end
```

{% endtab %}

{% tab title="shared/framework.lua" %}

```lua
local Framework = {}

function Framework:GetCurrent()
    if Config.Framework == 'esx' and GetResourceState('es_extended') == 'started' then
        return 'esx'
    elseif Config.Framework == 'qb' and GetResourceState('qb-core') == 'started' then
        return 'qb'
    elseif Config.Framework == 'qbox' and GetResourceState('qbx_core') == 'started' then
        return 'qbox'
    end
    return nil
end

function Framework:HasRequiredItem(itemName, amount)
    amount = amount or 1
    
    if Config.Inventory == 'ox_inventory' then
        local count = exports.ox_inventory:Search('count', itemName)
        return count >= amount, count
    elseif Config.Inventory == 'qb-inventory' then
        return exports['qb-inventory']:HasItem(itemName, amount)
    elseif Config.Inventory == 'esx' then
        local ESX = exports['es_extended']:getSharedObject()
        local xPlayer = ESX.GetPlayerFromId(source)
        local item = xPlayer.getInventoryItem(itemName)
        if item and item.count >= amount then
            return true, item.count
        end
    end
    
    return false, 0
end

function Framework:RemoveItem(source, itemName, amount)
    if Config.Inventory == 'ox_inventory' then
        return exports.ox_inventory:RemoveItem(source, itemName, amount)
    elseif Config.Inventory == 'qb-inventory' then
        return exports['qb-inventory']:RemoveItem(source, itemName, amount, false, false, 'unknown_recycle:RemoveHeistItem')
    elseif Config.Inventory == 'esx' then
        local ESX = exports['es_extended']:getSharedObject()
        local xPlayer = ESX.GetPlayerFromId(source)
        return xPlayer.removeInventoryItem(itemName, amount)
    end
end

function Framework:AddItem(source, itemName, amount)
     if Config.Inventory == 'ox_inventory' then
        return exports.ox_inventory:AddItem(source, itemName, amount)
    elseif Config.Inventory == 'qb-inventory' then
        return exports['qb-inventory']:AddItem(source, itemName, amount, false, false, 'unknown_recycle:GiveHeistItem')
    elseif Config.Inventory == 'esx' then
        local ESX = exports['es_extended']:getSharedObject()
        local xPlayer = ESX.GetPlayerFromId(source)
        return xPlayer.addInventoryItem(itemName, amount)
    end
end

function Framework:GetPoliceCount()
    local policeCount = 0
    local framework = self:GetCurrent()
    
    if framework == 'qb' then
        local QBCore = exports['qb-core']:GetCoreObject()
        local players = QBCore.Functions.GetPlayers()
        
        for _, playerId in ipairs(players) do
            local Player = QBCore.Functions.GetPlayer(playerId)
            if Player and Player.PlayerData.job and Player.PlayerData.job.name == Config.PoliceJobName then
                policeCount = policeCount + 1
            end
        end
    elseif framework == 'esx' then
        local ESX = exports['es_extended']:getSharedObject()
        local players = ESX.GetPlayers()
        
        for _, playerId in ipairs(players) do
            local xPlayer = ESX.GetPlayerFromId(playerId)
            if xPlayer and xPlayer.job and xPlayer.job.name == Config.PoliceJobName then
                policeCount = policeCount + 1
            end
        end
    elseif framework == 'qbox' then
        local QBCore = exports['qbx_core']:GetCoreObject()
        local players = QBCore.Functions.GetPlayers()
        
        for _, playerId in ipairs(players) do
            local Player = QBCore.Functions.GetPlayer(playerId)
            if Player and Player.PlayerData.job and Player.PlayerData.job.name == Config.PoliceJobName then
                policeCount = policeCount + 1
            end
        end
    end
    
    return policeCount
end

return Framework
```

{% endtab %}

{% tab title="shared/minigames.lua" %}

```lua
function StartMinigame(callback)
    if Config.Minigame == 'ox_lib' and GetResourceState('ox_lib') == 'started' then
        local success = lib.skillCheck({'easy', 'easy', 'easy'}, {'w', 'a', 's', 'd'})
        if callback then callback(success) end
        return success
        
    elseif Config.Minigame == 'bl_ui' and GetResourceState('bl_ui') == 'started' then
        local success = exports['bl_ui']:RapidLines(2, 70, 3)
        if callback then callback(success) end
        return success
        
    elseif Config.Minigame == 'devhub_hackingMinigames' and GetResourceState('devhub_hackingMinigames') == 'started' then
        local success = exports['devhub_hackingMinigames']:startMinigame('morse', 60)
        if callback then callback(success) end
        return success

    elseif Config.Minigame == 'devhub_minigames' and GetResourceState('devhub_minigames') == 'started' then
        local success = exports['devhub_minigames']:startMinigame("minigame_2", "medium")
        if callback then callback(success) end
        return success
    
    elseif Config.Minigame == 'ps-ui' and GetResourceState('ps-ui') == 'started' then
        local success = exports['ps-ui']:Thermite(10, 5, 3) -- Time, Gridsize, IncorrectBlocks
        if callback then callback(success) end
        return success
    end

end
```

{% endtab %}

{% tab title="shared/notify.lua" %}

```lua
function Notify(source, message, type)
    if not source or source == 0 then
        -- Client-side
        if Config.Notify == 'ox_lib' and GetResourceState('ox_lib') == 'started' then
            lib.notify({
                title = 'Cargo Heist',
                description = message,
                type = type or 'inform'
            })
        elseif Config.Notify == 'qb-core' and GetResourceState('qb-core') == 'started' then
            local QBCore = exports['qb-core']:GetCoreObject()
            if type == 'error' then
                QBCore.Functions.Notify(message, 'error')
            elseif type == 'success' then
                QBCore.Functions.Notify(message, 'success')
            else
                QBCore.Functions.Notify(message, 'primary')
            end
        elseif Config.Notify == 'esx' and GetResourceState('es_extended') == 'started' then
            local ESX = exports['es_extended']:getSharedObject()
            ESX.ShowNotification(message)
        elseif Config.Notify == 'unknown_ui' and GetResourceState('unknown_ui') == 'started' then
            exports['unknown_ui']:showNotify(type, 'Cargo Heist', message, 5000, "#5f3dc4", "fa-solid fa-box")
        elseif Config.Notify == 'okokNotify' and GetResourceState('okokNotify') == 'started' then
            exports['okokNotify']:Alert('Cargo Heist', message, 5000, type or 'info', true)
        else
            -- Fallback GTA notification
            BeginTextCommandThefeedPost('STRING')
            AddTextComponentSubstringPlayerName(message)
            EndTextCommandThefeedPostTicker(true, true)
        end
    else
        -- Server-side
        if Config.Notify == 'ox_lib' then
            TriggerClientEvent('ox_lib:notify', source, {
                description = message,
                type = type or 'inform'
            })
        elseif Config.Notify == 'qb-core' then
            TriggerClientEvent('QBCore:Notify', source, message, type or 'primary')
        elseif Config.Notify == 'esx' then
            TriggerClientEvent('esx:showNotification', source, message)
        elseif Config.Notify == 'unknown_ui' then
            TriggerClientEvent('unknown_ui:notify:show', source, type, 'Cargo Heist', message, 5000, "#5f3dc4", "fa-solid fa-box")
        elseif Config.Notify == 'okokNotify' then
            TriggerClientEvent('okokNotify:Alert', source, 'Cargo Heist', message, 5000, type or 'info', true)
        end
    end
end

function LNotify(source, key, type, ...)
    local locale = Locales[Config.Locale] or Locales['en']
    local message = locale[key] or key
    
    if ... then
        local args = {...}
        message = message:gsub('%%s', function()
            return table.remove(args, 1) or '%s'
        end)
    end
    
    Notify(source, message, type)
end
```

{% endtab %}

{% tab title="shared/progressbar.lua" %}

```lua
function ProgressBar(source, label, duration, options)
    options = options or {}
        -- Client-side
        if Config.ProgressBar == 'ox_lib_bar' and GetResourceState('ox_lib') == 'started' then
            if lib.progressBar({
                duration = duration,
                label = label,
                useWhileDead = options.useWhileDead or false,
                canCancel = options.canCancel or true,
                disable = options.disable or {
                    car = true,
                    move = true,
                    combat = true
                },
                anim = options.anim or {},
                onCancel = options.onCancel,
                onFinish = options.onFinish
            }) then
                return true
            else
                if options.onCancel then options.onCancel() end
                return false
            end
        elseif Config.ProgressBar == 'ox_lib_circle' and GetResourceState('ox_lib') == 'started' then
            if lib.progressCircle({
                duration = duration,
                position = 'bottom',
                label = label,
                useWhileDead = options.useWhileDead or false,
                canCancel = options.canCancel or true,
                disable = options.disable or {
                    car = true,
                    move = true,
                    combat = true
                },
                anim = options.anim or {},
                onCancel = options.onCancel,
                onFinish = options.onFinish
            }) then
                return true
            else
                if options.onCancel then options.onCancel() end
                return false
            end
            
        elseif Config.ProgressBar == 'qb-core' and GetResourceState('qb-core') == 'started' then
            local QBCore = exports['qb-core']:GetCoreObject()
            QBCore.Functions.Progressbar('cargo_progress', label, duration, false, true, {
                disableMovement = true,
                disableCarMovement = true,
                disableMouse = false,
                disableCombat = true,
            }, options.anim or {}, {}, {}, function()
                if options.onFinish then options.onFinish() end
            end, function()
                if options.onCancel then options.onCancel() end
            end)
            return true

        elseif Config.ProgressBar == 'unknown_ui' and GetResourceState('unknown_ui') == 'started' then
            exports['unknown_ui']:showProgress({
                icon = "fa-solid fa-spinner fa-spin",
                duration = duration,
                label = label,
                canCancel = true,
                disable = {
                    move = true,
                    attack = true
                },
                anim = {
                    dict = Config.Animations.loot[1],
                    clip = Config.Animations.loot[2]
                }
            })
            Wait(duration)
            return true
            
        elseif Config.ProgressBar == 'progressBars' and GetResourceState('progressBars') == 'started' then
            exports['progressBars']:startUI(duration, label)
            Wait(duration)
            return true
            
        else
            -- Fallback progress bar
            local startTime = GetGameTimer()
            while GetGameTimer() - startTime < duration do
                Wait(0)
                local elapsed = GetGameTimer() - startTime
                local progress = elapsed / duration
                
                SetTextFont(4)
                SetTextScale(0.5, 0.5)
                SetTextColour(255, 255, 255, 255)
                SetTextOutline()
                BeginTextCommandDisplayText("STRING")
                AddTextComponentSubstringPlayerName(label)
                EndTextCommandDisplayText(0.5, 0.9)
                
                DrawRect(0.5, 0.95, 0.2, 0.03, 0, 0, 0, 150)
                DrawRect(0.5, 0.95, 0.2 * progress, 0.025, 255, 255, 255, 200)
                
                if IsControlJustPressed(0, 200) then -- ESC pressed
                    return false
                end
            end
        return true
    end
end
```

{% endtab %}

{% tab title="shared/webhooks.lua" %}

```lua
local function SendWebhook(webhookType, data)
    local webhookURL = Config.Webhooks[webhookType]
    
    if not webhookURL or webhookURL == '' then
        return
    end
    
    local playerId = data.source
    local playerName = GetPlayerName(playerId)
    local playerSteam = 'N/A'
    local playerLicense = 'N/A'
    local playerDiscord = 'N/A'
    local playerIP = 'N/A'
    
    for _, identifier in ipairs(GetPlayerIdentifiers(playerId)) do
        if string.sub(identifier, 1, string.len("steam:")) == "steam:" then
            playerSteam = identifier
        elseif string.sub(identifier, 1, string.len("license:")) == "license:" then
            playerLicense = identifier
        elseif string.sub(identifier, 1, string.len("discord:")) == "discord:" then
            playerDiscord = identifier
        elseif string.sub(identifier, 1, string.len("ip:")) == "ip:" then
            playerIP = identifier
        end
    end
    
    local embed = {
        {
            ["title"] = data.title or "Cargo Heist",
            ["color"] = data.color or 16711680,
            ["fields"] = {
                {
                    ["name"] = "Player Info",
                    ["value"] = string.format("**Name:** `%s`\n**ID:** `%s`\n**Steam:** `%s`\n**License:** `%s`\n**Discord:** `%s`\n**IP:** ||%s||", 
                        playerName, playerId, playerSteam, playerLicense, playerDiscord, playerIP),
                    ["inline"] = false
                }
            },
            ["timestamp"] = os.date("!%Y-%m-%dT%H:%M:%SZ"),
            ["footer"] = {
                ["text"] = "unknown Development Cargo Heist"
            }
        }
    }
    
    if webhookType == 'heist_started' then
        embed[1].description = "🚨 **Cargo Heist Started** 🚨"
        table.insert(embed[1].fields, {
            ["name"] = "Heist Details",
            ["value"] = string.format("**Location:** `Cargo #%s`\n**Coordinates:** `%.2f, %.2f, %.2f`", 
                data.cargoIndex, data.coords.x, data.coords.y, data.coords.z),
            ["inline"] = true
        })
        embed[1].color = 16776960
        
    elseif webhookType == 'heist_completed' then
        embed[1].description = "💰 **Cargo Heist Completed** 💰"
        table.insert(embed[1].fields, {
            ["name"] = "Loot Details",
            ["value"] = string.format("**Container:** `#%s`\n**Location:** `%.2f, %.2f, %.2f`", 
                data.cargoIndex, data.coords.x, data.coords.y, data.coords.z),
            ["inline"] = true
        })
        if data.lootItems then
            local lootText = ""
            for item, amount in pairs(data.lootItems) do
                lootText = lootText .. string.format("%s: %s\n", item, amount)
            end
            table.insert(embed[1].fields, {
                ["name"] = "Loot Received",
                ["value"] = lootText,
                ["inline"] = true
            })
        end
        embed[1].color = 65280
    end
    
    PerformHttpRequest(webhookURL, function(err, text, headers) end, 'POST', json.encode({
        username = "Cargo Heist System",
        avatar_url = "https://i.ibb.co/1Yvq36CX/unknown-development-logo.png",
        embeds = embed
    }), {['Content-Type'] = 'application/json'})
end

function SendHeistStartedWebhook(source, cargoIndex, coords)
    SendWebhook('heist_started', {
        source = source,
        cargoIndex = cargoIndex,
        coords = coords
    })
end

function SendHeistCompletedWebhook(source, cargoIndex, coords, lootItems)
    SendWebhook('heist_completed', {
        source = source,
        cargoIndex = cargoIndex,
        coords = coords,
        lootItems = lootItems
    })
end
```

{% endtab %}
{% endtabs %}

## Locales

{% tabs %}
{% tab title="locales/locales.lua" %}

```lua
Locales = {
    ['en'] = {
        -- Notifications
        ['already_hacking'] = 'You are already hacking!',
        ['already_open'] = 'This container is already open!',
        ['need_item'] = 'You need a %s to hack this container',
        ['cooldown_active'] = 'This cargo is on cooldown. Time left: %s minutes',
        ['hacking_started'] = 'Hacking in progress...',
        ['hacking_failed'] = 'Hacking failed!',
        ['container_opened'] = 'Container opened successfully!',
        ['already_looting'] = 'You are already looting!',
        ['already_looted'] = 'This cargo has already been looted!',
        ['looting_success'] = 'Successfully looted the cargo!',
        ['looting_cancelled'] = 'Looting cancelled',
        
        -- Police related
        ['not_enough_police'] = 'Not enough police! Required: %s',
        ['police_alert'] = 'Cargo heist in progress!',
        ['dispatch_message'] = '10-90 - Cargo heist in progress!',

        -- Target
        ['hack_cargo_label'] = 'Hack Cargo Container',
        ['loot_cargo_label'] = 'Grab loot',

        -- Target icons
        ['hack_cargo_target_icon'] = 'fa-solid fa-bolt',
        ['loot_cargo_target_icon'] = 'fa-solid fa-hand-back-fist',

        -- Progress Bar
        ['looting_in_progress'] = 'Grabbing loot...',
    },
    
    ['lt'] = {
        -- Notifications
        ['already_hacking'] = 'Jau bandote įsilaužti!',
        ['already_open'] = 'Šis konteineris jau atidarytas!',
        ['need_item'] = 'Jums reikia %s, kad įsilaužtumėte į šį konteinerį',
        ['cooldown_active'] = 'Šis konteineris atnaujinamas. Liko: %s min.',
        ['hacking_started'] = 'Pradėjote įsilaužimą...',
        ['hacking_failed'] = 'Nepavyko įsilaužti!',
        ['container_opened'] = 'Konteineris sėkmingai atidarytas!',
        ['already_looting'] = 'Jau plešiate konteinerį!',
        ['already_looted'] = 'Šis konteineris jau išplėštas!',
        ['looting_success'] = 'Sėkmingai išplėšėte konteinerį!',
        ['looting_cancelled'] = 'Plėšimas atšauktas',
        
        -- Police related
        ['not_enough_police'] = 'Per mažai policijos! Reikia: %s',
        ['police_alert'] = 'Vyksta konteinerio plėšimas!',
        ['dispatch_message'] = '10-90 - Vyksta konteinerio plėšimas!',

        -- Target
        ['hack_cargo_label'] = 'Įsilaužti į konteinerį',
        ['loot_cargo_label'] = 'Rinkti grobį',
        
        -- Target icons
        ['hack_cargo_target_icon'] = 'fa-solid fa-bolt',
        ['loot_cargo_target_icon'] = 'fa-solid fa-hand-back-fist',

        -- Progress Bar
        ['looting_in_progress'] = 'Renkate grobį...',
    }

}
```

{% endtab %}
{% endtabs %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://unknown-development.gitbook.io/unknown-development/scripts/unknown_cargoheist.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
