# Config

```
Config = {} -- do not edit

-- Version / Important
Config.PlayerWeight = true -- only works if you are using ESX 1.2 and above.

Config.FirstTitle = 'C'
Config.SecondTitle = 'Service'


-- General
Config.DefaultOpenKey = "i" -- default open key (users can change in their settings) | FiveM Keys
Config.DropTimeout = 600 -- change the amount of time that drops will stay on the ground (seconds)
Config.CloseOnAllUse = true  -- true = always close inventory, no matter which item
Config.CloseOnUse = {"dice"} -- all items in this array will close the inventory when used
Config.ClickOutsideToClose = true -- when the user clicks outside of the inventory it will close
Config.MiddleClickToUse = true -- uses item when middle click is pressed over an item

-- Discord
Config.Discord = false -- enables discord logs
Config.WebhookURL = "" -- discord webhook url

-- Inventory
Config.Items = true -- toggle items on/off
Config.Weapons = true -- toggle weapon on/off
Config.Cash = true -- toggle cash on/off
Config.DirtyCash = 'black_money' -- toggle dirty cash on/off (put your black_money `id` here from esx or put `false` if you dont want dirty cash)


-- Only applies for Weapons and Cash if Config.PlayerWeight is enabled.
Config.Weights = {
   -- ["cash"] = 0,
  --  ["black_money"] = 0,
  --  ['Swimsuit'] = 1
}

Config.DropDisplay = "prop" -- marker / prop

Config.DropMarker = {
    Type = 2,
    Scale = { x = 0.3, y = 0.3, z = 0.3 },
    Color = { r = 255, g = 255, b = 255, a = 60 }
}

Config.DropProp = {
    Model = "h4_prop_h4_med_bag_01b", -- Bag — you can change it
    ZOffset = -1.0                    -- Adjust height so it doesn’t float
}

-- Plugins
Config.Player = true -- toggle player plugin on/off
Config.Glovebox = true -- toggle glovebox on/off
Config.Trunk = true -- toggle trunk plugin on/off
Config.Rob = false -- toggle rob plugin on/off

-- Rob
Config.HandsupKey = "++" -- default handsup key (users can change in their settings) | FiveM Keys
Config.RobTimeout = 3000 -- amount of time it takes for the Robbery to load (server loading wont be affected) (milliseconds)
Config.BlacklistedItems = {"money", "case", ""} -- will not allow the robber to remove items that are put in this array

-- Glovebox
Config.GloveboxWeight = 30 -- weight of glovebox
Config.GloveboxTimeout = 1000 -- amount of time it takes for the Glovebox to load (server loading wont be affected) (milliseconds)
Config.GloveboxSave = false -- saves glovebox to database (owned_vehicles required in database)
Config.BlacklistedVehicleTypesGB = {13, 8} -- vehicle types that should not have a glovebox

-- Trunk
Config.TrunkKey = "j" -- default trunk open key (users can change in their settings) | FiveM Keys
Config.TrunkSave = true -- must have a owned_vehicles table in your database
Config.TrunkTimeout = 1000 -- amount of time it takes for the Trunk to load (server loading wont be affected) (milliseconds)
Config.TrunkWeights = {
    [0] = 50, --Compact
    [1] = 50, --Sedan
    [2] = 70, --SUV
    [3] = 50, --Coupes
    [4] = 50, --Muscle
    [5] = 50, --Sports Classics
    [6] = 50, --Sports
    [7] = 50, --Super
    [8] = 50, --Motorcycles
    [9] = 50, --Off-road
    [10] = 60, --Industrial
    [11] = 10, --Utility
    [12] = 50, --Vans
    [13] = 0, --Cycles
    [14] = 10, --Boats
    [15] = 5, --Helicopters
    [16] = 0, --Planes
    [17] = 250, --Service
    [18] = 250, --Emergency
    [19] = 250, --Military
    [20] = 250, --Commercial
    [21] = 0 --Trains
}

Config.VehicleModel = {
    ['pounder'] = 2600,
    ['mule'] = 1000,
    ['burrito'] = 500,
    ['burrito2'] = 500,
    ['burrito3'] = 500,
    ['guardian'] = 5000,
    ['rallytruck'] = 15000,
    ---- Imports ----
    ['zrgpr'] = 200,
    ['cyphart'] = 300,
    ['cypherwb'] = 300,
    ['SSG_Comet6'] = 400,
}

Config.GloveModels = {
    [joaat('w222mansory')] = 10,
    [joaat('cc_g63keyvany')] = 10,
    [joaat('limgto62')] = 15,
    [joaat('ikx3gls60021')] = 20,
    [joaat('supramk4v2')] = 20,
    [joaat('x5rk')] = 30
}

Config.BlacklistedVehicleTypes = {
    [13] = true
}

Config.Stashes = {
    ["70"] = {
        label = "Lager",
        job = "polizei",
        slots = 30,
        weight = 50000,
        coords = vector3(412.7637, 7514.0674, 4.567),
        marker = {
            type = 1,
            scale = vector3(0.5, 0.5, 0.5),
            color = {r = 0, g = 255, b = 0},
            drawDistance = 15.0
        }
    }
}


  -------      ist in der Beta, Bekannter BUG item dropen wieder aufnehmen zeit gestappelt wird noch gefixxt ! 
  
  
Config.ItemAblauf = { 
    ['water']  = { time = 2, unit = 's' },  -- 30 minutes
    ['bread']  = { time = 1,  unit = 'h' },  -- 1 hour
    ['burger'] = { time = 1,  unit = 'd' },  -- 1 day
    ['energy'] = { time = 15, unit = 's' }   -- 15 seconds (for testing)
}

Config.Locale = {
    itemExpired = 'Die folgenden abgelaufenen Gegenstände wurden entfernt: %s',
    itemAdded   = '%s wurde deinem Inventar hinzugefügt.',
    itemRemoved = '%s wurde aus deinem Inventar entfernt.',
    overweight  = 'Dein Inventar ist zu schwer!',
    noSpace     = 'Du hast keinen Platz für weitere Gegenstände!',
	cannotAffordWeapon = 'Du kannst dir diese Waffe nicht leisten!',
	cannotAffordItem = 'Du kannst dir diesen Gegenstand nicht leisten!',
	inventoryFull = 'Dein Inventar ist voll!',
	limitReached = 'Limit erreicht!',
	itemMoved = '%s %s wurde in %s verschoben!',
	singleItemMoved = '%s wurde in %s verschoben!',
    notifyTitle = 'Inventar',
	itemPurchased = '%s %s gekauft!',
	alreadyHasWeapon = 'Du besitzt diese Waffe bereits!',
	playerAlreadyHasWeapon = 'Der Spieler besitzt diese Waffe bereits!',
	playerInventoryFull = 'Das Inventar des Spielers ist voll!',
	playerLimitReached = 'Das Limit des Spielers ist erreicht!',
    itemDropped = '%s %s wurde %s!',
	singleItemDropped = '%s wurde %s!',
	playerDoesNotExist = 'Spieler existiert nicht!',
	cannotViewOwnInventory = 'Du kannst dein eigenes Inventar nicht ansehen!',
    unknownStorage = 'Unbekanntes Lager!',
    noAccessToStorage = 'Kein Zugriff auf Lager!',
	openStorage = 'Drücke E um Lager zu öffnen',
	storagekey = 'E',
    noTrunk = 'Fahrzeug hat kein Kofferraum!',
	vehicleLocked = 'Auto ist abgeschlossen!',
	noPlayerNearby = 'Kein Spieler in der Nähe!',
	itemExpiredSimple = 'Item abgelaufen!',
	openTrunkDesc = "Kofferraum öffnen",
	give = "Geben",
	cancel = "Abbrechen",
	noItems = "😢 Keine items gefunden",
    noAccess = "🚫 Keine Rechte auf das Lager",
    loading = "⏳ Wird geladen...",
    searchPlaceholder = "suchen..",
    amountPlaceholder = "menge"

}


Config.NotifyTypes = {
    info    = 'info',
    success = 'success',
    error   = 'error',
    warning = 'warning'
}

Config.Notify = function(srcOrMessageKey, messageKeyOrParam, messageParamOrType, notifyType)
    local isServer = IsDuplicityVersion()

    local src, messageKey, messageParam, nType

    if isServer then
        src = srcOrMessageKey
        messageKey = messageKeyOrParam
        messageParam = messageParamOrType
        nType = notifyType
    else
        src = nil
        messageKey = srcOrMessageKey
        messageParam = messageKeyOrParam
        nType = messageParamOrType
    end

    local msg = Config.Locale[messageKey] or tostring(messageKey) or "Unbekannte Nachricht"
    local text = msg

    if msg:find("%%") then
        if type(messageParam) == "table" then
            text = string.format(msg, messageParam.count or "", messageParam.label or "", messageParam.target or "")
        elseif type(messageParam) == "string" or type(messageParam) == "number" then
            text = string.format(msg, messageParam)
        end
    end

    nType = Config.NotifyTypes[nType] or "info"

    if isServer then
        TriggerClientEvent('a_hud::AddNotification', src, nType, 'Inventar', text, 3000)
    else
        TriggerEvent('a_hud::AddNotification', nType, 'Inventar', text, 3000)
    end
end




Config.HelpNotify = function(srcOrLocaleKey, localeKeyOrKey, keyOrParam, messageParam)
    local isServer = IsDuplicityVersion()

    local src, localeKey, key, text

    if isServer then
        -- SERVER-SEITE: (src, localeKey, key, messageParam)
        src = srcOrLocaleKey
        localeKey = localeKeyOrKey
        key = keyOrParam
        text = Config.Locale[localeKey] or localeKey
    else
        -- CLIENT-SEITE: (localeKey, key, messageParam)
        src = nil
        localeKey = srcOrLocaleKey
        key = localeKeyOrKey
        text = Config.Locale[localeKey] or localeKey
    end

    -- Parameter ersetzen (z. B. %s im Text)
    if type(messageParam) == "table" then
        text = string.format(text, table.unpack(messageParam))
    elseif type(messageParam) == "string" or type(messageParam) == "number" then
        text = string.format(text, messageParam)
    end

    local keyChar = key or "E"

    if isServer then
        -- 🔹 SERVER sendet an Client
        TriggerClientEvent("a_hud::HelpNotification", src, keyChar, text)
    else
        -- 🔹 CLIENT zeigt direkt an
        TriggerEvent("a_hud::HelpNotification", keyChar, text)
    end
end



```


---

# Agent Instructions: 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://c-service.gitbook.io/c-service-docs/v1/inventory/config.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.
