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
| Field | Type | Description |
|---|---|---|
Level | number | Minimum crafting level (100 XP = 1 level) |
ExperiancePerCraft | number | XP awarded on successful craft |
Category | string | Category key from Config.Categories |
isGun | boolean | Auto-equip weapon after crafting |
Jobs | table | Job whitelist (empty = no restriction) |
JobGrades | table | Grade whitelist (empty = no restriction) |
Amount | number | Items produced per craft |
SuccessRate | number | Success chance percentage (0–100) |
requireBlueprint | boolean | Must discover blueprint first |
Time | number | Crafting duration in seconds |
Metadata | table/nil | Item metadata attached on craft (QB-Core only) |
Ingredients | table | Required 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
- Add the item to your inventory system
- 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.
