# Configuration

```lua
CFG = {}

CFG.FRAMEWORK = 'qb' -- 'qb', 'qbx', 'esx'
CFG.INVENTORY = 'qb' -- 'qb', 'ox', 'qs', 'ps', 'lj'
CFG.NOTIFY = 'ox' -- 'qb', 'esx', 'ox', 'default'
CFG.TARGET = 'qb' -- 'qb', 'ox'

CFG.SETTINGS = {
    admin_groups = {
        'group.admin',
        'group.god'
    },
    admin_command = 'checkstorages',
    
    checking_data = 10, -- every 10 min.,, handles saving and deletation of expired storages

    min_dist_between_crates = 5.0, -- minimal distance between storages
    max_dist_for_placing = 5.0, -- max distance of storage from player to place it

    increase_lifetime = 1 * 86400, -- one day
    max_lifetime = 10 * 86400, -- ten days

    lifetime_item = false, -- any item name, example -> 'wood'
    decoy_item = false, -- any item name, example -> 'decoy'
    destroy_item = false, -- any item name, example -> 'hammer'

    -- zones that have disabled placing of storages
    restricted_zones = {
        -- radius and position x y z

        { radius = 50.0, pos = vector3(448.6, -988.75, 30.69) }, -- mrpd
        -- { radius = 50.0, pos = vec3(0.0, 0.0, 0.0) }, -- example
    },

    crates = {
        storage_1 = { -- item name
            lifetime = 1 * 86400, -- 1 day

            model = `gr_prop_gr_rsply_crate03a`,
            distance = 1.35,

            size = { slots = 15, weight = 50000 },
            
            duration = {
                destroy = 1000,
                decoy = 1000,
                increase_lifetime = 1000,
            }
        },

        storage_2 = { -- item name
            lifetime = 1 * 86400, -- 1 day

            model = `prop_box_wood07a`,
            distance = 1.35,

            size = { slots = 30, weight = 150000 },

            duration = {
                destroy = 1000,
                decoy = 1000,
                increase_lifetime = 1000,
            }
        },

        storage_3 = { -- item name
            lifetime = 1 * 86400, -- 1 day

            model = `prop_container_03mb`,
            distance = 1.35,

            size = { slots = 150, weight = 1000000 },

            duration = {
                destroy = 1000,
                decoy = 1000,
                increase_lifetime = 1000,
            }
        },
    },
}

CFG.LANG = {
    hint_e = 'Press ~INPUT_PICKUP~ to ~g~place~w~ storage.\nPress ~INPUT_CELLPHONE_CANCEL~ to ~r~cancel~w~ placing.\nPress ~INPUT_CELLPHONE_LEFT~ to ~y~rotate~w~ left.\nPress ~INPUT_CELLPHONE_RIGHT~ to ~b~rotate~w~ right.',

    restricted_zone = "This zone is restricted from placing storages.",
    too_far = "You can't place it that far from you....",
    too_close = "You can't place it that close to another storage...",
    canceled = "Placing storage was canceled.",
    placed = 'Storage was placed.',

    set_decoy = "Decoy storage was set, don't open it!!!",
    already_decoy = 'Storage is set as decoy already.',
    setting_decoy = 'Setting storage as decoy...',

    insert_pin = 'Insert pin',
    pin_set = 'Pin was set.',
    pin_removed = 'Pin was removed.',
    wrong_pin = 'You entered wrong pin...',

    destroying = 'Destroying storage...',
    increasing_lt = 'Increasing lifetime...',

    expire_at = "You storage will expire: %s.%s.%s at %s:%s",

    increase_lifetime = 'Lifetime was increased.',
    max_lifetime_reached = "Lifetime limit was reached.",

    no_item = "You missing item for this action.",
    no_storages = "There isn't created any storage units.",

    dialog_header = 'Hey!',
    dialog_msg = 'Are you sure you want to destroy this storage?  \nAll items will be lost by doing that!',

    dialog_header2 = "Hey!",
    dialog_msg2 = "Are you sure you wanna do that?  \nYou can't change it!",

    -- admin menu
    header = 'Storages',
    title = 'Storage #',
    manage_storage = 'Manage Storage',
    open_storage = 'Open Storage',
    teleport = 'Teleport',
    delete_storage = 'Delete Storage',
    back = 'Go Back',
    owner_id = 'Owner ID',
    unique_id = 'Unique ID',
    coords = 'Coords',
    expire = 'Expire',

    -- target --
    open = 'Open storage',
    set_pin = 'Set pincode',
    destroy = 'Destroy',
    check_lifetime = 'Check lifetime',
    increase_lifetime2 = 'Increase lifetime',
    set_as_decoy = 'Set as decoy',
}
```


---

# 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://andrew-grenade.gitbook.io/sheen-scripts/paid-resources/sh-storages/configuration.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.
