Skip to content

Recipes & Categories

All recipes are defined in Config.Recipes and organized by categories.

Categories

Each category has a label, image, optional job restriction, and accent color.

lua
Categories = {
    ['misc'] = {
        Label = 'Misc',
        Image = 'repairkit',
        Jobs = {},
        Color = '#4CAF50'
    },
    ['weapons'] = {
        Label = 'Weapons',
        Image = 'weapon_pistol',
        Jobs = {},
        Color = '#F44336'
    },
    ['medical'] = {
        Label = 'Medical',
        Image = 'bandage',
        Jobs = {},
        Color = '#2196F3'
    },
    ['drugs'] = {
        Label = 'Illegal',
        Image = 'joint',
        Jobs = {},
        Color = '#7f25d9'
    },
},

TIP

The Image value should match an item image in your inventory system. Jobs can restrict an entire category to specific jobs.

Recipe Structure

Each recipe is a key-value pair where the key is the output item name.

lua
['bandage'] = {
    Level = 0,                    -- Minimum crafting level required
    ExperiancePerCraft = 5,       -- XP gained per craft
    Category = 'medical',         -- Which category tab this appears in
    isGun = false,                -- Set true for weapon items (equips on craft)
    Jobs = {},                    -- Job restriction (empty = all jobs)
    JobGrades = {},               -- Grade restriction (empty = all grades)
    Amount = 2,                   -- Quantity produced per craft
    SuccessRate = 100,            -- Chance to succeed (0-100)
    requireBlueprint = false,     -- Requires blueprint discovery
    Time = 8,                     -- Crafting time in seconds
    Metadata = nil,               -- Optional metadata (QB-Core only)
    Ingredients = {
        ['plastic'] = 2,
    }
},

Recipe Fields

FieldTypeDescription
LevelnumberMinimum crafting level (100 XP = 1 level)
ExperiancePerCraftnumberXP awarded on successful craft
CategorystringCategory key from Config.Categories
isGunbooleanAuto-equip weapon after crafting
JobstableJob whitelist (empty = no restriction)
JobGradestableGrade whitelist (empty = no restriction)
AmountnumberItems produced per craft
SuccessRatenumberSuccess chance percentage (0–100)
requireBlueprintbooleanMust discover blueprint first
TimenumberCrafting duration in seconds
Metadatatable/nilItem metadata attached on craft (QB-Core only)
IngredientstableRequired items and quantities

Example Recipes

Simple Recipe

lua
['lockpick'] = {
    Level = 1,
    ExperiancePerCraft = 5,
    Category = 'misc',
    isGun = false,
    Jobs = {},
    JobGrades = {},
    Amount = 3,
    SuccessRate = 100,
    requireBlueprint = false,
    Time = 12,
    Ingredients = {
        ['metalscrap'] = 2,
    }
},

Job-Restricted Recipe

lua
['repairkit'] = {
    Level = 3,
    ExperiancePerCraft = 15,
    Category = 'misc',
    isGun = false,
    Jobs = {'mechanic'},
    JobGrades = {},
    Amount = 1,
    SuccessRate = 100,
    requireBlueprint = false,
    Time = 25,
    Ingredients = {
        ['metalscrap'] = 8,
        ['plastic'] = 4,
        ['rubber'] = 2,
        ['screwdriverset'] = 1,  -- PermanentItem: not consumed
    }
},

Blueprint-Required Recipe with Metadata

lua
['firstaid'] = {
    Level = 5,
    ExperiancePerCraft = 15,
    Category = 'medical',
    isGun = false,
    Jobs = {'ambulance'},
    JobGrades = {},
    Amount = 1,
    SuccessRate = 100,
    requireBlueprint = true,
    Time = 20,
    Metadata = {quality = 100, crafted = true},
    Ingredients = {
        ['bandage'] = 3,
        ['painkillers'] = 1,
        ['plastic'] = 1,
    }
},

Weapon Recipe

lua
['weapon_pistol'] = {
    Level = 15,
    ExperiancePerCraft = 50,
    Category = 'weapons',
    isGun = true,
    Jobs = {},
    JobGrades = {},
    Amount = 1,
    SuccessRate = 80,
    requireBlueprint = true,
    Time = 60,
    Ingredients = {
        ['steel'] = 10,
        ['plastic'] = 5,
        ['rubber'] = 2,
    }
},

Permanent Items

Items listed in Config.PermanentItems are required as ingredients but not consumed during crafting. Use this for tools:

lua
PermanentItems = {
    ['screwdriverset'] = true,
    ['wrench'] = true
},

When a recipe includes a permanent item as an ingredient, the player must have it in their inventory, but it won't be removed after crafting.

Adding a Custom Recipe

  1. Add the item to your inventory system
  2. Add the recipe to Config.Recipes:
lua
['your_item'] = {
    Level = 0,
    ExperiancePerCraft = 10,
    Category = 'misc',        -- Must match a key in Config.Categories
    isGun = false,
    Jobs = {},
    JobGrades = {},
    Amount = 1,
    SuccessRate = 100,
    requireBlueprint = false,
    Time = 15,
    Ingredients = {
        ['metalscrap'] = 3,
        ['plastic'] = 2,
    }
},

WARNING

The recipe key (e.g., your_item) must match the item name in your inventory system exactly.