Main

return {
    -- Locale Configuration
    -- Defines which language file to use from the locales folder
    -- Available: 'en' (English), 'de' (German)
    Locale = 'en',

    Debug = false,

    -- Crafting Behavior Settings
    -- Controls what happens when the player closes the UI while crafting
    CraftingBehavior = {
        preventCloseWhileCrafting = true, -- If true, player cannot close the UI while crafting (must cancel or wait)
        cancelCraftOnClose = false, -- If preventCloseWhileCrafting is false, cancel craft and refund materials when closing
        allowCraftingNearby = {
            enabled = false, -- If true and cancelCraftOnClose is false, crafting continues while player stays nearby
            distance = 5.0, -- Maximum distance from workbench to continue crafting
        },
        sharedCrafting = {
            placed = true, -- If true, crafting queue is shared for placed workbenches
            static = false, -- If true, crafting queue is shared for static workbenches (defined in Stations)
        },
    },

    -- Blueprint system settings
    Blueprints = {
        enabled = true,
        -- Random destruction chance (legacy system - disabled if durability is enabled)
        destroyOnCraft = {
            enabled = false,
            chance = 15
        },
        -- Durability system (ox_inventory exclusive - uses item metadata)
        -- When enabled, blueprints have durability that degrades with each craft
        -- This overrides the destroyOnCraft system when active
        durability = {
            enabled = true, -- Enable durability system (requires ox_inventory)
            defaultDurability = 100, -- Default max durability for new blueprints
            defaultLoss = 10, -- Default durability loss per craft if not specified in recipe (blueprintDurabilityLoss)
        }
    },

    -- Inventory Panel & Staging System
    -- When enabled, shows the left panel with player inventory and a crafting inventory
    -- where players can stage items for crafting
    InventoryPanel = {
        enabled = true,        -- Show inventory panel with staging functionality
        showAllItems = true,   -- Show all items (true) or only items used in recipes (false)
        maxSlots = 20,          -- Maximum slots in the crafting inventory
        maxWeight = 500000,     -- Maximum weight in crafting inventory (0 = unlimited)
        perWorkbench = {
            placed = true,     -- If true, staged items are shared per-workbench for placed workbenches; if false, per-player
            static = false,     -- If true, staged items are shared per-workbench for static workbenches; if false, per-player
        },
        returnOnClose = false,  -- Return staged items to player inventory when closing UI
    },

    -- Leveling system settings
    Leveling = {
        enabled = true,
        perWorkbenchType = true, -- If true, players have separate levels per workbench type (basic, advanced, etc.)
        defaultXpReward = {
            enabled = true, -- If false, recipes without xpReward specified will give no XP
            amount = 5,    -- Default XP amount when recipe doesn't specify
        },

        -- Default level config (used when perWorkbenchType is false, or as fallback)
        levels = {
            [1] = 0,
            [2] = 100,
            [3] = 250,
            [4] = 500,
            [5] = 850,
            [6] = 1300,
            [7] = 1900,
            [8] = 2650,
            [9] = 3550,
            [10] = 4600,
        },
        maxLevel = 10,

        -- Per-workbench-type level configurations (only used when perWorkbenchType is true)
        -- If a type is not defined here, it uses the default levels/maxLevel above
        workbenchTypes = {
            ['basic'] = {
                levels = {
                    [1] = 0,
                    [2] = 100,
                    [3] = 250,
                    [4] = 500,
                    [5] = 850,
                    [6] = 1300,
                    [7] = 1900,
                    [8] = 2650,
                    [9] = 3550,
                    [10] = 4600,
                },
                maxLevel = 10,
            },
            ['advanced'] = {
                levels = {
                    [1] = 0,
                    [2] = 200,
                    [3] = 500,
                    [4] = 1000,
                    [5] = 1700,
                    [6] = 2600,
                    [7] = 3800,
                    [8] = 5300,
                    [9] = 7100,
                    [10] = 9200,
                    [11] = 11600,
                    [12] = 14300,
                    [13] = 17300,
                    [14] = 20600,
                    [15] = 24200,
                },
                maxLevel = 15,
            },
        },
    },

    -- ==========================================
    -- SHOP PEDS CONFIGURATION
    -- ==========================================
    -- Shop peds that sell workbenches and crafting items
    Shops = {
        ['workbench_vendor'] = {
            label = 'Workbench Vendor',
            coords = vector3(342.95, -1298.04, 32.51), -- Position of the ped
            heading = 159.2, -- Direction the ped faces
            model = 's_m_m_autoshop_02', -- Ped model
            spawnRadius = 50.0, -- Distance at which ped spawns
            scenario = 'WORLD_HUMAN_CLIPBOARD', -- Ped animation/scenario
            useItemImages = false, -- If true, uses item images from inventory. If false, uses the icon defined per item
            blip = {
                enabled = true,
                sprite = 566, -- Wrench/tool icon
                color = 2,
                scale = 0.7,
                label = 'Workbench Vendor'
            },
            -- Items this shop sells
            items = {
                {
                    id = 'portable_workbench',
                    label = 'Portable Workbench',
                    description = 'A small portable workbench for crafting on the go',
                    icon = 'fa-solid fa-toolbox',
                    price = 5000,
                },
                {
                    id = 'advanced_workbench',
                    label = 'Advanced Workbench',
                    description = 'A high-tech workbench with advanced crafting capabilities',
                    icon = 'fa-solid fa-gears',
                    price = 15000,
                },
            }
        },
        -- Example of another shop
        -- ['materials_vendor'] = {
        --     label = 'Materials Vendor',
        --     coords = vector3(100.0, 200.0, 30.0),
        --     heading = 90.0,
        --     model = 's_m_y_construct_01',
        --     spawnRadius = 50.0,
        --     scenario = 'WORLD_HUMAN_CLIPBOARD',
        --     blip = {
        --         enabled = true,
        --         sprite = 478,
        --         color = 5,
        --         scale = 0.7,
        --         label = 'Materials Shop'
        --     },
        --     items = {
        --         {
        --             id = 'metalscrap',
        --             label = 'Metal Scrap',
        --             description = 'Raw metal scraps for crafting',
        --             icon = 'fa-solid fa-cube',
        --             price = 50,
        --             currency = 'cash',
        --         },
        --     }
        -- },
    },

    -- ==========================================
    -- PLACEABLE WORKBENCHES CONFIGURATION
    -- ==========================================
    -- Placement method: true = use object_gizmo, false = use raycast placement (like sd-beekeeping)
    useGizmo = false,
    raycastDistance = 10.0, -- Max distance for raycast placement (only used when useGizmo = false)

    -- Permissions system for placed workbenches
    -- When enabled, only the owner and players they add can use placed workbenches
    Permissions = {
        enabled = true, -- Enable permissions system for placed workbenches
    },

    -- Items that can be placed as portable workbenches
    -- 'recipes' specifies which recipe TABLES to use (from configs/recipes.lua)
    -- e.g., { 'all', 'basic' } = recipes from 'all' table + 'basic' table
    -- 'techTrees' specifies which tech trees to use (from configs/techtrees.lua)
    -- e.g., { 'basic_survival', 'technology' } = tech trees from techtrees.lua
    --
    -- Job/Gang Locking (optional):
    --   job = { name = 'mechanic', minGrade = 0 }  -- Lock to specific job (minGrade is optional, defaults to 0)
    --   gang = 'ballas'                             -- Lock to specific gang (QBCore only)
    PlaceableWorkbenches = {
        ['workbench'] = {
            label = 'Basic Workbench',
            type = 'basic', -- Type of workbench (used for per-workbench leveling)
            prop = 'prop_tool_bench02', -- Prop model to spawn
            recipes = { 'all', 'basic' }, -- Recipe tables: 'all' + 'basic' (from recipes.lua)
            techTrees = { 'basic_survival', 'basic_exploration' }, -- Tech trees from techtrees.lua
            -- job = { name = 'mechanic', minGrade = 0 }, -- Optional: Lock to mechanic job
            -- gang = 'ballas', -- Optional: Lock to gang (QBCore only)
        },
        ['advanced_workbench'] = {
            label = 'Advanced Workbench',
            type = 'advanced', -- Type of workbench
            prop = 'gr_prop_gr_bench_04b', -- Advanced workbench prop
            recipes = { 'all', 'basic', 'advanced' }, -- Recipe tables: 'all' + 'basic' + 'advanced' (from recipes.lua)
            techTrees = { 'technology', 'exploration', 'survival', 'engineering' }, -- Tech trees from techtrees.lua
            -- job = { name = 'mechanic', minGrade = 2 }, -- Optional: Lock to mechanic job grade 2+
        },
    },

    -- Crafting stations configuration
    -- 'recipes' specifies which recipe TABLES to use (from configs/recipes.lua)
    -- 'techTrees' specifies which tech trees to use (from configs/techtrees.lua)
    --
    -- Job/Gang Locking (optional):
    --   job = { name = 'mechanic', minGrade = 0 }  -- Lock to specific job (minGrade is optional, defaults to 0)
    --   gang = 'ballas'                             -- Lock to specific gang (QBCore only)
    Stations = {
        ['workbench'] = {
            label = 'Workbench',
            type = 'basic', -- Workbench type for per-workbench leveling (basic, advanced, etc.)
            coords = vector3(-1.89, -200.97, 52.74),
            heading = 340.7, -- Heading for the prop
            radius = 2.0,
            recipes = { 'all', 'basic' }, -- Recipe tables to use from configs/recipes.lua
            techTrees = { 'basic_survival', 'basic_exploration' }, -- Tech trees from techtrees.lua
            -- job = { name = 'mechanic', minGrade = 0 }, -- Optional: Lock to mechanic job
            -- gang = 'ballas', -- Optional: Lock to gang (QBCore only)
            prop = {
                enabled = true,
                model = 'prop_tool_bench02',
                spawnRadius = 50.0, -- Distance at which prop spawns
                offset = vector3(0.0, 0.0, -1.0), -- Offset from coords (adjust Z for ground level)
            },
            blip = {
                enabled = true,
                sprite = 566,
                color = 2,
                scale = 0.7,
                label = 'Workbench'
            }
        },
    },

}

Last updated