Drag dynyx_crafting into your resources folder then ensure dynyx_crafting in your cfg file.
Install all Dependencies
Import the SQL file to your SQL
Now navigate into the inventory folder. You will need to follow a different guide depending on your chosen inventory. The item images can be found in the images folder
/
Configuration
Introducing the most advanced and customizable crafting system for FiveM – built for QBCore, QBOX, and ESX! Whether you're running a realistic RP server, a survival-based economy, or a black-market crafting system, this script brings a fully interactive and immersive crafting experience to your players.
With our custom-built placement system, you can precisely position crafting benches anywhere. The intuitive 3D UI makes crafting seamless, displaying available recipes, required materials, and level restrictions. The progressive XP system ensures players work their way up, unlocking more advanced items as they craft.
🔹 Supports multiple frameworks, inventories, and target systems
🔹 Crafting benches persist through restarts but despawn after a set time for realism
🔹 Fully configurable XP, level progression, and crafting recipes
🔹 Webhook logging for Discord to track crafting activities
Whether you want to add weapon crafting, tool-making, or even illegal black-market crafting, this system is designed to be fully customizable and easy to integrate into your server.
Config = {}
Config.Lan = 'en' -- Sets the language for the script. Options: 'en' (English), 'es' (Spanish), 'de' (German), 'fr' (French)
-- Framework and system integrations
Config.Target = "ox_target" -- Determines which targeting system to use. Options: 'ox_target' or 'qb-target'
Config.Inventory = "ox_inventory" -- Determines which inventory system to use. Options: 'ox_inventory' or 'qb-inventory'
Config.Notifications = "ox_lib" -- Determines which notification system to use. Options: 'qb-core' or 'ox_lib'
Config.Progressbar = "ox_lib" -- Determines which progress bar system to use. Options: 'qb-core' or 'ox_lib'
-- Inventory image directory path
Config.InventoryImagePath = "ox_inventory/web/images" -- Sets the directory path for item images. Change based on the inventory system used.
-- Crafting level system
Config.LevelSystem = {
StarterLevel = 0, -- The initial level when a player starts crafting. Recommended: 0
IncreaseByAfterEachLevelUp = 500 -- The XP required for the next level increases by this amount each time the player levels up
}
-- Webhook settings for logging
Config.WebHooks = false -- Enable or disable webhook logging. 'false' means logging is disabled.
Config.WebHookURL = "PLACE_YOUR_WEBHOOK_HERE" -- Webhook URL for logging crafting-related activities (only used if WebHooks = true)
-- Crafting bench settings
Config.LifetimeofBench = 999999 -- Duration (in seconds) before the crafting bench despawns. '999999' effectively makes it permanent.
Config.SecondsBeforeXpGain = 5 -- The delay (in seconds) before a player gains XP after crafting an item.
Config.PreSetTables = {
["Table1"] = { -- Unique identifier for this crafting table (must be different for each table)
Label = "Crafting table", -- The name of the crafting table (displayed in UI)
BenchProp = "gr_prop_gr_bench_02a", -- The prop model for the crafting bench
BenchCoords = vector4(586.8718, -3274.8003, 6.0696, 90.0), -- Position & heading of the bench
Groups = { "mechanic", "lostmc" }, -- Jobs/Gangs allowed to use this bench
CitizenID = { "MNT68646" }, -- Specific players allowed to use this bench (QBCore/QBOX Use CitizenID, ESX Use Identifier)
["Items"] = { -- List of craftable items for this table
["WEAPON_PISTOL"] = { -- ITEM NAME
Label = "Pistol", -- Display name for the weapon
XPEnable = false, -- Enable XP system (true = XP is earned, false = no XP)
Level = 0, -- Required crafting level to create this item
xpGain = 5, -- Amount of XP gained when crafting this item
UseBlueprint = true, -- Requires a blueprint to craft this item
ShowOnList = false, -- If true, always shows the item in the crafting list; if false, only shows if the player owns the blueprint
RemoveBlueprint = true, -- If true, the blueprint is consumed upon crafting
BlueprintItem = "blueprint_pistol", -- Name of the blueprint item required to craft
["Material"] = { -- Materials required for crafting
["rubber"] = { Label = "Rubber", amount = 1 }, -- Material name, label, and amount required
},
["Prop"] = { -- Visual representation of the crafted item on the table
model = "w_pi_pistol", -- The prop model to be displayed when crafting
offset = vector3(1.3, 0.0, -0.3), -- Position offset for placing the prop on the table
rotation = vector3(0, 0, 0) -- Rotation values for positioning the prop correctly
}
},
}
-- REST OF THE CODE HERE
Config.PlaceableTables = {
["table_weapon"] = { -- Item name of the bench/table
Label = "Weapon Crafting Table", -- The name of the crafting table (displayed in UI)
BenchProp = "gr_prop_gr_bench_02a", -- The prop model for the crafting bench
["Items"] = { -- List of craftable items for this table
["WEAPON_PISTOL"] = { -- Weapon identifier (FiveM weapon hash name)
Label = "Pistol", -- Display name for the weapon
XPEnable = true, -- Enable XP system (true = XP is earned, false = no XP)
Level = 0, -- Required crafting level to create this item
xpGain = 3, -- Amount of XP gained when crafting this item
UseBlueprint = true, -- Requires a blueprint to craft this item
ShowOnList = false, -- If true, always shows the item in the crafting list; if false, only shows if the player owns the blueprint
RemoveBlueprint = true, -- If true, the blueprint is consumed upon crafting
BlueprintItem = "blueprint_pistol", -- Name of the blueprint item required to craft
["Material"] = { -- Materials required for crafting
["rubber"] = { Label = "Rubber", amount = 1 }, -- Material name, label, and amount required
},
["Prop"] = { -- Visual representation of the crafted item on the table
model = "w_pi_pistol", -- The prop model to be displayed when crafting
offset = vector3(1.3, 0.0, -0.3), -- Position offset for placing the prop on the table
rotation = vector3(0, 0, 0) -- Rotation values for positioning the prop correctly
}
},
["WEAPON_COMBATPISTOL"] = {
Label = "Combat Pistol",
XPEnable = true,
Level = 0,
xpGain = 3,
UseBlueprint = true,
ShowOnList = true,
RemoveBlueprint = true,
BlueprintItem = "blueprint_combatpistol",
["Material"] = {
["rubber"] = { Label = "Rubber", amount = 15 },
["iron"] = { Label = "Iron", amount = 25 },
["plastic"] = { Label = "Plastic", amount = 20 },
},
["Prop"] = {
model = "w_pi_combatpistol",
offset = vector3(1.3, 0.0, -0.3),
rotation = vector3(0, 0, 0)
}
},
-- REST OF THE CODE HERE