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

# Configuration

***

<mark style="color:$success;">Config.lua</mark>

```lua
Config = {}

Config.Language = 'en' -- en, de, fr, es, pt, it, nl, pl, sv, ar, jp, zh, he, fi, no
Config.CustomNotify = false

Config.Theme = 'blue' -- blue, red, green, purple, orange, pink, yellow, cyan, white, custom (you can customize the 'custom' theme colors in shared/themes/custom.css)

Config.Target = false

Config.MaxQueueSize = 5
Config.RefundOnCancel = true

Config.Creator = {
    command = 'benches',
    allowedGroups = { 'god', 'admin', 'superadmin' },
}

Config.Functions = {}

Config.Functions.Notify = function(type, message, title)
    if Config.CustomNotify then
        lib.notify({ type = type, description = message, title = title })
    else
        TriggerEvent('stg-crafting:internal:notify', type, message, title)
    end
end

Config.Functions.ShowHelpNotify = function(message)
    lib.showTextUI(message, { position = 'left-center', icon = 'hammer' })
end

Config.Functions.HideHelpNotify = function()
    lib.hideTextUI()
end

Config.Benches = {
    ['bench_weapon_1'] = {
        label = Locales[Config.Language]['bench_weapon'],
        coords = vector3(717.5297, -973.0, 30.3953),
        heading = -90.0,
        radius = 1.5,
        job = nil,
        minLevel = 0,
        recipes = {
            'm4a9_nike',
            'ak47_custom',
            'pistol_mk2',
            'combat_pdw',
            'ap_pistol',
            'heavy_pistol',
            'micro_smg',
            'smg_mk2',
            'pump_shotgun',
            'sawnoff_shotgun',
            'marksman_rifle',
            'sniper_rifle',
        },
        blip = { sprite = 110, color = 1, scale = 0.7, visible = false },
        prop = 'prop_tool_bench02',
    },
    -- ['bench_tools_1'] = {
    --     label = Locales[Config.Language]['bench_tools'],
    --     coords = vector3(711.12, -964.18, 30.41),
    --     heading = 90.0,
    --     radius = 1.5,
    --     job = nil,
    --     minLevel = 0,
    --     recipes = {
    --         'lockpick',
    --         'advanced_lockpick',
    --         'sandwich',
    --     },
    --     blip = { sprite = 280, color = 5, scale = 0.7, visible = false },
    --     prop = {
    --         model = 'prop_tool_bench02',
    --         coords = vector3(711.12, -964.18, 29.41),
    --         heading = 90.0,
    --     },
    -- },
    ['bench_3'] = {
        label = Locales[Config.Language]['bench_weapon'],
        coords = vector3(-343.0393, -140.2928, 39.0097),
        heading = 159.5148,
        radius = 1.5,
        job = nil,
        minLevel = 0,
        recipes = {
            'm4a9_nike',
            'ak47_custom',
            'pistol_mk2',
            'combat_pdw',
            'ap_pistol',
            'heavy_pistol',
            'micro_smg',
            'smg_mk2',
            'pump_shotgun',
            'sawnoff_shotgun',
            'marksman_rifle',
            'sniper_rifle',
        },
        blip = { sprite = 110, color = 1, scale = 0.7, visible = true },
    },
}

Config.LevelSystem = {
    enabled = true,
    xpPerCraft = 10,
    maxLevel = 50,
    Ranks = {
        { level = 1,  label = 'Novice' },
        { level = 5,  label = 'Apprentice' },
        { level = 15, label = 'Journeyman' },
        { level = 30, label = 'Expert' },
        { level = 45, label = 'Master Crafter' },
    },
}
```

<mark style="color:$success;">recipes.lua</mark>

```lua
Config.Recipes = {
    ['m4a9_nike'] = {
        label = 'M4A9 - Nike Edition',
        description = 'Custom M4A9 carbine rifle with Nike-inspired aesthetic finish.',
        image = 'weapons/weapon_carbinerifle.png',
        category = 'weapon',
        resultType = 'weapon',
        craftTime = 900,
        minLevel = 0,
        ingredients = {
            { item = 'iron',          count = 6, label = 'Iron',          image = 'materials/iron.png' },
            { item = 'metalscrap',    count = 8, label = 'Metal Scrap',   image = 'materials/metalscrap.png' },
            { item = 'plastic',       count = 4, label = 'Plastic',       image = 'materials/plastic.png' },
            { item = 'electronickit', count = 1, label = 'Electronic Kit', image = 'materials/electronickit.png' },
        },
        result = { item = 'weapon_carbinerifle', count = 1, ammo = 0 },
    },

    ['ak47_custom'] = {
        label = 'AK-47 Custom',
        description = 'A customized AK-47 assault rifle built from salvaged parts.',
        image = 'weapons/weapon_assaultrifle.png',
        category = 'weapon',
        resultType = 'weapon',
        craftTime = 480,
        minLevel = 3,
        ingredients = {
            { item = 'iron',          count = 5, label = 'Iron',          image = 'materials/iron.png' },
            { item = 'metalscrap',    count = 7, label = 'Metal Scrap',   image = 'materials/metalscrap.png' },
            { item = 'rubber',        count = 2, label = 'Rubber',        image = 'materials/rubber.png' },
            { item = 'electronickit', count = 1, label = 'Electronic Kit', image = 'materials/electronickit.png' },
        },
        result = { item = 'weapon_assaultrifle', count = 1, ammo = 0 },
    },

    ['pistol_mk2'] = {
        label = 'Pistol MK2',
        description = 'Upgraded pistol with improved accuracy and damage.',
        image = 'weapons/weapon_pistol_mk2.png',
        category = 'weapon',
        resultType = 'weapon',
        craftTime = 300,
        minLevel = 1,
        ingredients = {
            { item = 'iron',       count = 3, label = 'Iron',        image = 'materials/iron.png' },
            { item = 'metalscrap', count = 4, label = 'Metal Scrap', image = 'materials/metalscrap.png' },
            { item = 'plastic',    count = 2, label = 'Plastic',     image = 'materials/plastic.png' },
        },
        result = { item = 'weapon_pistol_mk2', count = 1, ammo = 0 },
    },

    ['combat_pdw'] = {
        label = 'Combat PDW',
        description = 'Compact personal defense weapon for close encounters.',
        image = 'weapons/weapon_combatpdw.png',
        category = 'weapon',
        resultType = 'weapon',
        craftTime = 420,
        minLevel = 5,
        ingredients = {
            { item = 'iron',          count = 4, label = 'Iron',          image = 'materials/iron.png' },
            { item = 'metalscrap',    count = 5, label = 'Metal Scrap',   image = 'materials/metalscrap.png' },
            { item = 'plastic',       count = 3, label = 'Plastic',       image = 'materials/plastic.png' },
            { item = 'electronickit', count = 1, label = 'Electronic Kit', image = 'materials/electronickit.png' },
        },
        result = { item = 'weapon_combatpdw', count = 1, ammo = 0 },
    },

    ['ap_pistol'] = {
        label = 'AP Pistol',
        description = 'Armor-piercing pistol favored by street enforcers.',
        image = 'weapons/weapon_appistol.png',
        category = 'weapon',
        resultType = 'weapon',
        craftTime = 360,
        minLevel = 2,
        ingredients = {
            { item = 'iron',       count = 3, label = 'Iron',        image = 'materials/iron.png' },
            { item = 'metalscrap', count = 5, label = 'Metal Scrap', image = 'materials/metalscrap.png' },
            { item = 'plastic',    count = 2, label = 'Plastic',     image = 'materials/plastic.png' },
        },
        result = { item = 'weapon_appistol', count = 1, ammo = 0 },
    },

    ['micro_smg'] = {
        label = 'Micro SMG',
        description = 'Ultra-compact submachine gun, easy to conceal.',
        image = 'weapons/weapon_microsmg.png',
        category = 'weapon',
        resultType = 'weapon',
        craftTime = 420,
        minLevel = 4,
        ingredients = {
            { item = 'iron',       count = 3, label = 'Iron',        image = 'materials/iron.png' },
            { item = 'metalscrap', count = 5, label = 'Metal Scrap', image = 'materials/metalscrap.png' },
            { item = 'plastic',    count = 3, label = 'Plastic',     image = 'materials/plastic.png' },
        },
        result = { item = 'weapon_microsmg', count = 1, ammo = 0 },
    },

    ['pump_shotgun'] = {
        label = 'Pump Shotgun',
        description = 'Reliable pump-action shotgun with brutal close-range power.',
        image = 'weapons/weapon_pumpshotgun.png',
        category = 'weapon',
        resultType = 'weapon',
        craftTime = 540,
        minLevel = 4,
        ingredients = {
            { item = 'iron',       count = 4, label = 'Iron',        image = 'materials/iron.png' },
            { item = 'metalscrap', count = 6, label = 'Metal Scrap', image = 'materials/metalscrap.png' },
            { item = 'rubber',     count = 2, label = 'Rubber',      image = 'materials/rubber.png' },
        },
        result = { item = 'weapon_pumpshotgun', count = 1, ammo = 0 },
    },

    ['sawnoff_shotgun'] = {
        label = 'Sawn-Off Shotgun',
        description = 'Shortened barrel for raw close-range damage.',
        image = 'weapons/weapon_sawnoffshotgun.png',
        category = 'weapon',
        resultType = 'weapon',
        craftTime = 360,
        minLevel = 2,
        ingredients = {
            { item = 'iron',       count = 3, label = 'Iron',        image = 'materials/iron.png' },
            { item = 'metalscrap', count = 4, label = 'Metal Scrap', image = 'materials/metalscrap.png' },
            { item = 'rubber',     count = 1, label = 'Rubber',      image = 'materials/rubber.png' },
        },
        result = { item = 'weapon_sawnoffshotgun', count = 1, ammo = 0 },
    },

    ['smg_mk2'] = {
        label = 'SMG MK2',
        description = 'Upgraded submachine gun with improved recoil control.',
        image = 'weapons/weapon_smg_mk2.png',
        category = 'weapon',
        resultType = 'weapon',
        craftTime = 600,
        minLevel = 6,
        ingredients = {
            { item = 'iron',          count = 4, label = 'Iron',          image = 'materials/iron.png' },
            { item = 'metalscrap',    count = 6, label = 'Metal Scrap',   image = 'materials/metalscrap.png' },
            { item = 'plastic',       count = 3, label = 'Plastic',       image = 'materials/plastic.png' },
            { item = 'electronickit', count = 2, label = 'Electronic Kit', image = 'materials/electronickit.png' },
        },
        result = { item = 'weapon_smg_mk2', count = 1, ammo = 0 },
    },

    ['marksman_rifle'] = {
        label = 'Marksman Rifle',
        description = 'Precision mid-range rifle with a tactical scope.',
        image = 'weapons/weapon_marksmanrifle.png',
        category = 'weapon',
        resultType = 'weapon',
        craftTime = 720,
        minLevel = 7,
        ingredients = {
            { item = 'iron',          count = 6, label = 'Iron',          image = 'materials/iron.png' },
            { item = 'metalscrap',    count = 8, label = 'Metal Scrap',   image = 'materials/metalscrap.png' },
            { item = 'plastic',       count = 3, label = 'Plastic',       image = 'materials/plastic.png' },
            { item = 'electronickit', count = 2, label = 'Electronic Kit', image = 'materials/electronickit.png' },
        },
        result = { item = 'weapon_marksmanrifle', count = 1, ammo = 0 },
    },

    ['sniper_rifle'] = {
        label = 'Sniper Rifle',
        description = 'Long-range precision weapon for skilled operators.',
        image = 'weapons/weapon_sniperrifle.png',
        category = 'weapon',
        resultType = 'weapon',
        craftTime = 900,
        minLevel = 9,
        ingredients = {
            { item = 'iron',          count = 8, label = 'Iron',          image = 'materials/iron.png' },
            { item = 'metalscrap',    count = 10, label = 'Metal Scrap',  image = 'materials/metalscrap.png' },
            { item = 'plastic',       count = 4, label = 'Plastic',       image = 'materials/plastic.png' },
            { item = 'electronickit', count = 3, label = 'Electronic Kit', image = 'materials/electronickit.png' },
        },
        result = { item = 'weapon_sniperrifle', count = 1, ammo = 0 },
    },

    ['heavy_pistol'] = {
        label = 'Heavy Pistol',
        description = 'Oversized pistol packing serious stopping power.',
        image = 'weapons/weapon_heavypistol.png',
        category = 'weapon',
        resultType = 'weapon',
        craftTime = 360,
        minLevel = 3,
        ingredients = {
            { item = 'iron',       count = 4, label = 'Iron',        image = 'materials/iron.png' },
            { item = 'metalscrap', count = 5, label = 'Metal Scrap', image = 'materials/metalscrap.png' },
            { item = 'plastic',    count = 2, label = 'Plastic',     image = 'materials/plastic.png' },
        },
        result = { item = 'weapon_heavypistol', count = 1, ammo = 0 },
    },

    ['lockpick'] = {
        label = 'Lockpick',
        description = 'A basic lockpick for opening simple locks.',
        image = 'lockpick.png',
        category = 'tool',
        resultType = 'item',
        craftTime = 60,
        minLevel = 0,
        ingredients = {
            { item = 'bobby_pin',       count = 2, label = 'Bobby Pin',       image = 'materials/bobby_pin.png' },
            { item = 'tension_wrench',  count = 1, label = 'Tension Wrench',  image = 'materials/tension_wrench.png' },
        },
        result = { item = 'lockpick', count = 1 },
    },

    ['advanced_lockpick'] = {
        label = 'Advanced Lockpick',
        description = 'A high-quality lockpick capable of bypassing advanced locks.',
        image = 'advanced_lockpick.png',
        category = 'tool',
        resultType = 'item',
        craftTime = 180,
        minLevel = 4,
        ingredients = {
            { item = 'tension_wrench',    count = 1, label = 'Tension Wrench',    image = 'materials/tension_wrench.png' },
            { item = 'micro_motor',       count = 1, label = 'Micro Motor',       image = 'materials/micro_motor.png' },
            { item = 'precision_spring',  count = 1, label = 'Precision Spring',  image = 'materials/precision_spring.png' },
        },
        result = { item = 'advancedlockpick', count = 1 },
    },
}
```
