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