This page covers the setup parts you should finish before editing benches or recipes: dependencies, server.cfg order, database behavior, localization, inventory items, image paths, and the optional camp fire object note.
Required Dependencies#
Recommended server.cfg Start Order#
start oxmysql
start ox_lib
start framework -- es_extended, qb-core, or qbx_core
-- other resources
start 0r_lib
start 0r-craft-v2
Database#
You do not need to import SQL manually for this script.
The real resource creates the profile table automatically in modules/mysql/server.lua:
CREATE TABLE `0resmon_craft_profiles`
Localization#
This script follows the server locale from ox_lib.
Set your server language in server.cfg:
set ox:locale "en"
Then make sure the matching file exists inside:
locales/
Camp Fire Object Note#
3fe_campfire is not listed as a hard dependency in fxmanifest.lua.
However, the default bench config includes a Camp Fire bench with:
objectModel = '3fe_beach_fire'
That means you have two valid choices:
- keep that bench only if your server already has that object available
- disable or replace the Camp Fire bench in
escrow/bench/config.lua
Ready To Paste Item Tables#
If you want to install the default source recipes fast, use the blocks below directly in your inventory files.
These blocks focus on the default craft ingredients, food outputs, and attachment items used by the recipe and component config.
Weapon outputs such as WEAPON_ASSAULTRIFLE, WEAPON_PISTOL, WEAPON_KNIFE, and similar names are normal weapon entries and should already exist in the weapon system used by your server.
OX Inventory#
{% tabs fullWidth="false" %}
--- # start 0r-craft-v2
['scrapmetal'] = { label = 'Scrap Metal', weight = 100, stack = true },
['iron'] = { label = 'Iron', weight = 100, stack = true },
['screwdriver'] = { label = 'Screwdriver', weight = 100, stack = true },
['carbonfiber'] = { label = 'Carbon Fiber', weight = 100, stack = true },
['scope_lens'] = { label = 'Scope Lens', weight = 100, stack = true },
['steel'] = { label = 'Steel', weight = 100, stack = true },
['screws'] = { label = 'Screws', weight = 100, stack = true },
['plastic'] = { label = 'Plastic', weight = 100, stack = true },
['triggerkit'] = { label = 'Trigger Kit', weight = 100, stack = true },
['ducttape'] = { label = 'Tape', weight = 100, stack = true },
['wood'] = { label = 'Wood', weight = 100, stack = true },
['emptybottle'] = { label = 'Empty Bottle', weight = 100, stack = true },
['alcohol'] = { label = 'Alcohol', weight = 100, stack = true },
['cloth'] = { label = 'Cloth', weight = 100, stack = true },
['gunoil'] = { label = 'Gun Oil', weight = 100, stack = true },
['wrench'] = { label = 'Wrench', weight = 100, stack = true },
['raw_meat'] = { label = 'Raw Meat', weight = 100, stack = true },
['salt'] = { label = 'Salt', weight = 100, stack = true },
['spices'] = { label = 'Spices', weight = 100, stack = true },
['lettuce'] = { label = 'Lettuce', weight = 100, stack = true },
['tomato'] = { label = 'Tomato', weight = 100, stack = true },
['wrapbread'] = { label = 'Wrap', weight = 100, stack = true },
['bun'] = { label = 'Bun', weight = 100, stack = true },
['cheese'] = { label = 'Cheese', weight = 100, stack = true },
['beef_patty'] = { label = 'Patty', weight = 100, stack = true },
['coffee_beans'] = { label = 'Coffee Beans', weight = 100, stack = true },
['water'] = { label = 'Water Bottle', weight = 100, stack = true },
['sugar'] = { label = 'Sugar', weight = 100, stack = true },
['grilled_steak'] = { label = 'Grilled Steak', weight = 100, stack = true },
['veggie_wrap'] = { label = 'Veggie Wrap', weight = 100, stack = true },
['cheeseburger'] = { label = 'Cheeseburger', weight = 100, stack = true },
['coffee'] = { label = 'Hot Coffee', weight = 100, stack = true },
['clip_attachment'] = { label = 'Clip Attachment', weight = 100, stack = true },
['scope_attachment'] = { label = 'Scope Attachment', weight = 100, stack = true },
['smallscope_attachment'] = { label = 'Small Scope Attachment', weight = 100, stack = true },
['medscope_attachment'] = { label = 'Medium Scope Attachment', weight = 100, stack = true },
['grip_attachment'] = { label = 'Grip Attachment', weight = 100, stack = true },
['flashlight_attachment'] = { label = 'Flashlight Attachment', weight = 100, stack = true },
['suppressor_attachment'] = { label = 'Suppressor Attachment', weight = 100, stack = true },
['luxuryfinish_attachment'] = { label = 'Luxury Finish Attachment', weight = 100, stack = true },
['at_clip_extended_pistol'] = { label = 'Extended Pistol Clip', weight = 100, stack = true },
['at_clip_extended_smg'] = { label = 'Extended SMG Clip', weight = 100, stack = true },
['at_clip_drum_smg'] = { label = 'Drum Mag', weight = 100, stack = true },
['at_clip_extended_rifle'] = { label = 'Extended Rifle Clip', weight = 100, stack = true },
['at_clip_drum_rifle'] = { label = 'Drum Rifle Mag', weight = 100, stack = true },
['at_clip_extended_shotgun'] = { label = 'Extended Shotgun Clip', weight = 100, stack = true },
['at_clip_drum_shotgun'] = { label = 'Drum Shotgun Mag', weight = 100, stack = true },
['at_clip_extended_mg'] = { label = 'Extended MG Clip', weight = 100, stack = true },
['at_clip_extended_sniper'] = { label = 'Extended Sniper Clip', weight = 100, stack = true },
['at_flashlight'] = { label = 'Flashlight', weight = 100, stack = true },
['at_suppressor_light'] = { label = 'Suppressor', weight = 100, stack = true },
['at_suppressor_heavy'] = { label = 'Heavy Suppressor', weight = 100, stack = true },
['at_skin_luxe'] = { label = 'Luxury Finish', weight = 100, stack = true },
['at_grip'] = { label = 'Grip', weight = 100, stack = true },
['at_scope_macro'] = { label = 'Macro Scope', weight = 100, stack = true },
['at_scope_small'] = { label = 'Small Scope', weight = 100, stack = true },
['at_scope_medium'] = { label = 'Medium Scope', weight = 100, stack = true },
['at_scope_large'] = { label = 'Large Scope', weight = 100, stack = true },
['at_scope_advanced'] = { label = 'Advanced Scope', weight = 100, stack = true },
--- # end 0r-craft-v2
QB Core#
{% tabs fullWidth="false" %}
scrapmetal = { name = 'scrapmetal', label = 'Scrap Metal', weight = 100, type = 'item', image = 'scrapmetal.png', unique = false, useable = false, shouldClose = false, description = 'Scrap Metal' },
iron = { name = 'iron', label = 'Iron', weight = 100, type = 'item', image = 'iron.png', unique = false, useable = false, shouldClose = false, description = 'Iron' },
screwdriver = { name = 'screwdriver', label = 'Screwdriver', weight = 100, type = 'item', image = 'screwdriver.png', unique = false, useable = false, shouldClose = false, description = 'Screwdriver' },
carbonfiber = { name = 'carbonfiber', label = 'Carbon Fiber', weight = 100, type = 'item', image = 'carbonfiber.png', unique = false, useable = false, shouldClose = false, description = 'Carbon Fiber' },
scope_lens = { name = 'scope_lens', label = 'Scope Lens', weight = 100, type = 'item', image = 'scope_lens.png', unique = false, useable = false, shouldClose = false, description = 'Scope Lens' },
steel = { name = 'steel', label = 'Steel', weight = 100, type = 'item', image = 'steel.png', unique = false, useable = false, shouldClose = false, description = 'Steel' },
screws = { name = 'screws', label = 'Screws', weight = 100, type = 'item', image = 'screws.png', unique = false, useable = false, shouldClose = false, description = 'Screws' },
plastic = { name = 'plastic', label = 'Plastic', weight = 100, type = 'item', image = 'plastic.png', unique = false, useable = false, shouldClose = false, description = 'Plastic' },
triggerkit = { name = 'triggerkit', label = 'Trigger Kit', weight = 100, type = 'item', image = 'triggerkit.png', unique = false, useable = false, shouldClose = false, description = 'Trigger Kit' },
ducttape = { name = 'ducttape', label = 'Tape', weight = 100, type = 'item', image = 'ducttape.png', unique = false, useable = false, shouldClose = false, description = 'Tape' },
wood = { name = 'wood', label = 'Wood', weight = 100, type = 'item', image = 'wood.png', unique = false, useable = false, shouldClose = false, description = 'Wood' },
emptybottle = { name = 'emptybottle', label = 'Empty Bottle', weight = 100, type = 'item', image = 'emptybottle.png', unique = false, useable = false, shouldClose = false, description = 'Empty Bottle' },
alcohol = { name = 'alcohol', label = 'Alcohol', weight = 100, type = 'item', image = 'alcohol.png', unique = false, useable = false, shouldClose = false, description = 'Alcohol' },
cloth = { name = 'cloth', label = 'Cloth', weight = 100, type = 'item', image = 'cloth.png', unique = false, useable = false, shouldClose = false, description = 'Cloth' },
gunoil = { name = 'gunoil', label = 'Gun Oil', weight = 100, type = 'item', image = 'gunoil.png', unique = false, useable = false, shouldClose = false, description = 'Gun Oil' },
wrench = { name = 'wrench', label = 'Wrench', weight = 100, type = 'item', image = 'wrench.png', unique = false, useable = false, shouldClose = false, description = 'Wrench' },
raw_meat = { name = 'raw_meat', label = 'Raw Meat', weight = 100, type = 'item', image = 'raw_meat.png', unique = false, useable = false, shouldClose = false, description = 'Raw Meat' },
salt = { name = 'salt', label = 'Salt', weight = 100, type = 'item', image = 'salt.png', unique = false, useable = false, shouldClose = false, description = 'Salt' },
spices = { name = 'spices', label = 'Spices', weight = 100, type = 'item', image = 'spices.png', unique = false, useable = false, shouldClose = false, description = 'Spices' },
lettuce = { name = 'lettuce', label = 'Lettuce', weight = 100, type = 'item', image = 'lettuce.png', unique = false, useable = false, shouldClose = false, description = 'Lettuce' },
tomato = { name = 'tomato', label = 'Tomato', weight = 100, type = 'item', image = 'tomato.png', unique = false, useable = false, shouldClose = false, description = 'Tomato' },
wrapbread = { name = 'wrapbread', label = 'Wrap', weight = 100, type = 'item', image = 'wrapbread.png', unique = false, useable = false, shouldClose = false, description = 'Wrap' },
bun = { name = 'bun', label = 'Bun', weight = 100, type = 'item', image = 'bun.png', unique = false, useable = false, shouldClose = false, description = 'Bun' },
cheese = { name = 'cheese', label = 'Cheese', weight = 100, type = 'item', image = 'cheese.png', unique = false, useable = false, shouldClose = false, description = 'Cheese' },
beef_patty = { name = 'beef_patty', label = 'Patty', weight = 100, type = 'item', image = 'beef_patty.png', unique = false, useable = false, shouldClose = false, description = 'Patty' },
coffee_beans = { name = 'coffee_beans', label = 'Coffee Beans', weight = 100, type = 'item', image = 'coffee_beans.png', unique = false, useable = false, shouldClose = false, description = 'Coffee Beans' },
water = { name = 'water', label = 'Water Bottle', weight = 100, type = 'item', image = 'water.png', unique = false, useable = false, shouldClose = false, description = 'Water Bottle' },
sugar = { name = 'sugar', label = 'Sugar', weight = 100, type = 'item', image = 'sugar.png', unique = false, useable = false, shouldClose = false, description = 'Sugar' },
grilled_steak = { name = 'grilled_steak', label = 'Grilled Steak', weight = 100, type = 'item', image = 'grilled_steak.png', unique = false, useable = false, shouldClose = false, description = 'Grilled Steak' },
veggie_wrap = { name = 'veggie_wrap', label = 'Veggie Wrap', weight = 100, type = 'item', image = 'veggie_wrap.png', unique = false, useable = false, shouldClose = false, description = 'Veggie Wrap' },
cheeseburger = { name = 'cheeseburger', label = 'Cheeseburger', weight = 100, type = 'item', image = 'cheeseburger.png', unique = false, useable = false, shouldClose = false, description = 'Cheeseburger' },
coffee = { name = 'coffee', label = 'Hot Coffee', weight = 100, type = 'item', image = 'coffee.png', unique = false, useable = false, shouldClose = false, description = 'Hot Coffee' },
clip_attachment = { name = 'clip_attachment', label = 'Clip Attachment', weight = 100, type = 'item', image = 'clip_attachment.png', unique = false, useable = false, shouldClose = false, description = 'Clip Attachment' },
scope_attachment = { name = 'scope_attachment', label = 'Scope Attachment', weight = 100, type = 'item', image = 'scope_attachment.png', unique = false, useable = false, shouldClose = false, description = 'Scope Attachment' },
smallscope_attachment = { name = 'smallscope_attachment', label = 'Small Scope Attachment', weight = 100, type = 'item', image = 'smallscope_attachment.png', unique = false, useable = false, shouldClose = false, description = 'Small Scope Attachment' },
medscope_attachment = { name = 'medscope_attachment', label = 'Medium Scope Attachment', weight = 100, type = 'item', image = 'medscope_attachment.png', unique = false, useable = false, shouldClose = false, description = 'Medium Scope Attachment' },
grip_attachment = { name = 'grip_attachment', label = 'Grip Attachment', weight = 100, type = 'item', image = 'grip_attachment.png', unique = false, useable = false, shouldClose = false, description = 'Grip Attachment' },
flashlight_attachment = { name = 'flashlight_attachment', label = 'Flashlight Attachment', weight = 100, type = 'item', image = 'flashlight_attachment.png', unique = false, useable = false, shouldClose = false, description = 'Flashlight Attachment' },
suppressor_attachment = { name = 'suppressor_attachment', label = 'Suppressor Attachment', weight = 100, type = 'item', image = 'suppressor_attachment.png', unique = false, useable = false, shouldClose = false, description = 'Suppressor Attachment' },
luxuryfinish_attachment = { name = 'luxuryfinish_attachment', label = 'Luxury Finish Attachment', weight = 100, type = 'item', image = 'luxuryfinish_attachment.png', unique = false, useable = false, shouldClose = false, description = 'Luxury Finish Attachment' },
at_clip_extended_pistol = { name = 'at_clip_extended_pistol', label = 'Extended Pistol Clip', weight = 100, type = 'item', image = 'at_clip_extended_pistol.png', unique = false, useable = false, shouldClose = false, description = 'Extended Pistol Clip' },
at_clip_extended_smg = { name = 'at_clip_extended_smg', label = 'Extended SMG Clip', weight = 100, type = 'item', image = 'at_clip_extended_smg.png', unique = false, useable = false, shouldClose = false, description = 'Extended SMG Clip' },
at_clip_drum_smg = { name = 'at_clip_drum_smg', label = 'Drum Mag', weight = 100, type = 'item', image = 'at_clip_drum_smg.png', unique = false, useable = false, shouldClose = false, description = 'Drum Mag' },
at_clip_extended_rifle = { name = 'at_clip_extended_rifle', label = 'Extended Rifle Clip', weight = 100, type = 'item', image = 'at_clip_extended_rifle.png', unique = false, useable = false, shouldClose = false, description = 'Extended Rifle Clip' },
at_clip_drum_rifle = { name = 'at_clip_drum_rifle', label = 'Drum Rifle Mag', weight = 100, type = 'item', image = 'at_clip_drum_rifle.png', unique = false, useable = false, shouldClose = false, description = 'Drum Rifle Mag' },
at_clip_extended_shotgun = { name = 'at_clip_extended_shotgun', label = 'Extended Shotgun Clip', weight = 100, type = 'item', image = 'at_clip_extended_shotgun.png', unique = false, useable = false, shouldClose = false, description = 'Extended Shotgun Clip' },
at_clip_drum_shotgun = { name = 'at_clip_drum_shotgun', label = 'Drum Shotgun Mag', weight = 100, type = 'item', image = 'at_clip_drum_shotgun.png', unique = false, useable = false, shouldClose = false, description = 'Drum Shotgun Mag' },
at_clip_extended_mg = { name = 'at_clip_extended_mg', label = 'Extended MG Clip', weight = 100, type = 'item', image = 'at_clip_extended_mg.png', unique = false, useable = false, shouldClose = false, description = 'Extended MG Clip' },
at_clip_extended_sniper = { name = 'at_clip_extended_sniper', label = 'Extended Sniper Clip', weight = 100, type = 'item', image = 'at_clip_extended_sniper.png', unique = false, useable = false, shouldClose = false, description = 'Extended Sniper Clip' },
at_flashlight = { name = 'at_flashlight', label = 'Flashlight', weight = 100, type = 'item', image = 'at_flashlight.png', unique = false, useable = false, shouldClose = false, description = 'Flashlight' },
at_suppressor_light = { name = 'at_suppressor_light', label = 'Suppressor', weight = 100, type = 'item', image = 'at_suppressor_light.png', unique = false, useable = false, shouldClose = false, description = 'Suppressor' },
at_suppressor_heavy = { name = 'at_suppressor_heavy', label = 'Heavy Suppressor', weight = 100, type = 'item', image = 'at_suppressor_heavy.png', unique = false, useable = false, shouldClose = false, description = 'Heavy Suppressor' },
at_skin_luxe = { name = 'at_skin_luxe', label = 'Luxury Finish', weight = 100, type = 'item', image = 'at_skin_luxe.png', unique = false, useable = false, shouldClose = false, description = 'Luxury Finish' },
at_grip = { name = 'at_grip', label = 'Grip', weight = 100, type = 'item', image = 'at_grip.png', unique = false, useable = false, shouldClose = false, description = 'Grip' },
at_scope_macro = { name = 'at_scope_macro', label = 'Macro Scope', weight = 100, type = 'item', image = 'at_scope_macro.png', unique = false, useable = false, shouldClose = false, description = 'Macro Scope' },
at_scope_small = { name = 'at_scope_small', label = 'Small Scope', weight = 100, type = 'item', image = 'at_scope_small.png', unique = false, useable = false, shouldClose = false, description = 'Small Scope' },
at_scope_medium = { name = 'at_scope_medium', label = 'Medium Scope', weight = 100, type = 'item', image = 'at_scope_medium.png', unique = false, useable = false, shouldClose = false, description = 'Medium Scope' },
at_scope_large = { name = 'at_scope_large', label = 'Large Scope', weight = 100, type = 'item', image = 'at_scope_large.png', unique = false, useable = false, shouldClose = false, description = 'Large Scope' },
at_scope_advanced = { name = 'at_scope_advanced', label = 'Advanced Scope', weight = 100, type = 'item', image = 'at_scope_advanced.png', unique = false, useable = false, shouldClose = false, description = 'Advanced Scope' },
If your image path is different, update Config.InventoryImagesFolder in config.lua.
Final Checklist#
0r_libstarts without errors0r-craft-v2starts without errors- Your recipe items exist in the inventory system
- Your item images load from the folder set in
Config.InventoryImagesFolder - The profile table is created automatically in MySQL
- The Camp Fire bench is either supported by your server object setup or disabled