3D PRINTER- ADVANCED CRAFTING [QBCore / ESX / QBOX]

3D PRINTER- ADVANCED CRAFTING [QBCore / ESX / QBOX]
gif newwww




Code is accessible 80%
Subscription-based No
Lines (approximately) 10k +
Requirements qb-core/ qbox / esx_core
Support Yes

:white_check_mark: Two Printer Sizes
Small/Medium printer for standard items
XL printer for large objects

:white_check_mark: Realistic Connectivity
Printers must be powered ON to connect
One printer = one laptop connection (no interference!)

:white_check_mark: Fully Customizable Laptop
Set a password for security
Change username, background wallpaper & user avatar
Persistent data—pick it up and move it anywhere!

:white_check_mark: USB Blueprint System
Create USBs with metadata (easy to set up!)
Use as heist rewards, shop items, or rare loot
Export blueprints to your crafting lab
NO duplicate exports—prevents exploitation!

:white_check_mark: Crafting Lab Application
View exported blueprints with required printer size
Clear material requirements for each print
Live progress tracking when printing

:white_check_mark: Smart Material Management
See exactly what materials are missing
Printer stash system for materials
Cannot turn off printer mid-print—no abuse!

:white_check_mark: Persistent Data System
Laptops keep all data when moved
Connected USBs stay connected
Perfect for mobile crafting labs & criminal operations

:white_check_mark: Multiple Crafting Categories (you can add more)
Weapons (Pistol .50, SMG, Assault Rifle)
Tools (Screwdriver)
Armor (Body Armor)
Vehicle Parts (Engine Parts, Brake Discs)

:white_check_mark: Fully Configurable
Everything in Config.lua
Set printer size restrictions per item
Configure materials, durations, and more!

Works perfectly with:
ox_target :white_check_mark:
qb-target :white_check_mark:
interact :white_check_mark:

:globe_showing_europe_africa: MULTILANGUAGE
Supports 10 Languages: English, Spanish, Italian, Portuguese, Polish, Turkish, Arabic, Russian, Bulgarian, French, German

  • Config.lua :
Config = {}
-- ====================================
--  BASIC SETTINGS
-- ====================================
Config.Debug        = true
Config.Language     = 'en' -- Supported languages: 'en', 'es', 'it', 'pt', 'pl', 'tr', 'ar', 'ru', 'bg', 'fr', 'de'
Config.Refresh      = 30  -- minutes
Config.MaxDistance  = 5  -- distance to detect the printers
Config.Items        = {
    printer_m = {
        name = 'printer_m',
        model = 'prop_printer_m',
        size = 'm'
    },
    printer_xl = {
        name = 'printer_xl',
        model = 'prop_printer_xl',
        size = 'xl'
    },
    laptop  = {
        name = 'laptop3d',
        model = 'gr_prop_gr_laptop_01a',
    },
    usb  = {
        name = 'usb3d',
        model = nil,
    }
}

Config.Prints = {
    ['weapons'] = {
        ['pistol50'] = {
            name = 'Pistol .50',
            item = 'weapon_pistol50',
            model = 'w_pi_pistol',
            duration = 60000,
            blueprint = 'blueprint_pistol',
            experience = 100,
            rotation_speed = 0.5,
            size = 'm',  
            materials = {
                ['plastic_filament'] = 2,
                ['metal_filament'] = 1,
                ['carbon_filament'] = 1
            }
        },
        ['smg'] = {
            name = 'SMG',
            item = 'weapon_smg',
            model = 'w_sb_smg',
            duration = 90000,
            blueprint = 'blueprint_smg',
            experience = 150,
            rotation_speed = 1.5,
            size = 'm',  
            materials = {
                ['plastic_filament'] = 3,
                ['metal_filament'] = 2,
                ['carbon_filament'] = 2
            }
        },
        ['ak47'] = {
            name = 'Assault Rifle',
            item = 'weapon_assaultrifle',
            model = 'w_ar_assaultriflemk2',
            duration = 90000,
            blueprint = 'blueprint_assaultrifle',
            experience = 150,
            rotation_speed = 0.5,
            size = 'xl', 
            materials = {
                ['plastic_filament'] = 4,
                ['metal_filament'] = 3,
                ['carbon_filament'] = 2,
                ['abs_filament'] = 1
            }
        },
    },
    ['tools'] = {
        ['screwdriver'] = {
            name = 'Screwdriver',
            item = 'screwdriver',
            model = 'prop_tool_screwdvr01',
            duration = 30000,
            blueprint = false,
            experience = 10,
            rotation_speed = 0.5,
            size = 'm', 
            materials = {
                ['plastic_filament'] = 1,
                ['metal_filament'] = 1
            }
        },
    },
    ['armor'] = {
        ['vest'] = {
            name = 'Body Armor',
            item = 'bodyarmour',
            model = 'prop_bodyarmour_06',
            duration = 45000,
            blueprint = 'blueprint_vest',
            experience = 75,
            rotation_speed = 0.8,
            size = 'm', 
            materials = {
                ['carbon_filament'] = 3,
                ['nylon_filament'] = 2,
                ['tpu_filament'] = 1
            }
        },
    },
    ['vehicle'] = {
        ['engine_part'] = {
            name = 'Engine Part',
            item = 'engine_part',
            model = 'prop_car_engine_01',
            duration = 60000,
            blueprint = 'blueprint_engine',
            experience = 100,
            rotation_speed = 0.7,
            size = 'xl',  
            materials = {
                ['metal_filament'] = 4,
                ['carbon_filament'] = 3,
                ['abs_filament'] = 2
            }
        },
        ['brake_disc'] = {
            name = 'Brake Disc',
            item = 'brake_disc',
            model = 'imp_prop_impexp_brake_caliper_01a',
            duration = 45000,
            blueprint = 'blueprint_brakes',
            experience = 75,
            rotation_speed = 0.6,
            size = 'xl', 
            materials = {
                ['metal_filament'] = 3,
                ['carbon_filament'] = 2
            }
        },
    }
}

-- ====================================
--  OPTIMISATION PART
-- ====================================
-- Description  : this part is responsable on deleting the not needed props when no players are nearby
-- refreshprops : is the time to check if there is someone near the props or not
-- radius       : is to check how far is the player from the prop if it is < then the prop will be deleted until someone is nearby...
Config.RefreshProps = 1     -- 15 seconds
Config.Radius       = 100.0  -- if the distance between the player and the prop is < 50 then the prop will be deleted.
----------------------------------------------------------------------------------------------------------------------------------------


:clapper: Showcase : Showcase Video

:shopping_cart: Tebex: Tebex | ZaT Scipts

QBCore / QBox :
:open_book: Documentation: 3D Printer | ZaT Scripts
ESX :
:open_book: Documentation: 3D Printer | ZaT Scripts

1 Like