Skip to content

TrapBeauty

Beauty / salon — shop flow, crafting, and NPC selling for QBCore.

Features

  • Salon NUI with recipe SVGs (html/recipes/…)
  • Client + server scripts (client.lua, server.lua)
  • Image assets under images/**

Dependencies

  • qb-core
  • oxmysql

Notes

  • config.lua is the editable surface (escrow ignore).
  • Add inventory items / images to match your framework’s item setup.

Inventory items

Names must match Config.Items (shop materials) and recipe reward fields in Config.Recipes. Put matching PNGs in your inventory images path (resource ships references under images/).

qb-inventory

Add to qb-core/shared/items.lua (merge with your existing table).

["nails_supplies"]             = { name = "nails_supplies", label = "Nails Supplies", weight = 120, type = "item", image = "nails_supplies.png", unique = false, useable = false, shouldClose = false, description = "Salon material (TrapBeauty)." },
["wig_material"]               = { name = "wig_material", label = "Wig Materials", weight = 200, type = "item", image = "wig_material.png", unique = false, useable = false, shouldClose = false, description = "Salon material (TrapBeauty)." },
["shampoo"]                    = { name = "shampoo", label = "Shampoo", weight = 80, type = "item", image = "shampoo.png", unique = false, useable = false, shouldClose = false, description = "Salon material (TrapBeauty)." },
["conditioner"]                = { name = "conditioner", label = "Conditioner", weight = 80, type = "item", image = "conditioner.png", unique = false, useable = false, shouldClose = false, description = "Salon material (TrapBeauty)." },
["perm_kit"]                   = { name = "perm_kit", label = "Perm Kit", weight = 250, type = "item", image = "perm_kit.png", unique = false, useable = false, shouldClose = false, description = "Salon material (TrapBeauty)." },
["relaxer_kit"]                = { name = "relaxer_kit", label = "Relaxer Kit", weight = 260, type = "item", image = "relaxer_kit.png", unique = false, useable = false, shouldClose = false, description = "Salon material (TrapBeauty)." },
["wig"]                        = { name = "wig", label = "Vogue Platinum Wig", weight = 300, type = "item", image = "wig.png", unique = false, useable = false, shouldClose = false, description = "Salon product (TrapBeauty)." },
["nails"]                      = { name = "nails", label = "Gel Extensions Set", weight = 120, type = "item", image = "nails.png", unique = false, useable = false, shouldClose = false, description = "Salon product (TrapBeauty)." },
["hair_product"]               = { name = "hair_product", label = "Keratin Infusion", weight = 140, type = "item", image = "hair_product.png", unique = false, useable = false, shouldClose = false, description = "Salon product (TrapBeauty)." },
["weave_closure"]              = { name = "weave_closure", label = "Lace Weave Closure", weight = 160, type = "item", image = "weave_closure.png", unique = false, useable = false, shouldClose = false, description = "Salon product (TrapBeauty)." },
["ponytail_piece"]             = { name = "ponytail_piece", label = "Drawstring Ponytail", weight = 140, type = "item", image = "ponytail_piece.png", unique = false, useable = false, shouldClose = false, description = "Salon product (TrapBeauty)." },
["blowout_serum"]              = { name = "blowout_serum", label = "Blowout Serum", weight = 100, type = "item", image = "blowout_serum.png", unique = false, useable = false, shouldClose = false, description = "Salon product (TrapBeauty)." },
["nail_chrome_set"]            = { name = "nail_chrome_set", label = "Chrome Nail Capsule", weight = 110, type = "item", image = "nail_chrome_set.png", unique = false, useable = false, shouldClose = false, description = "Salon product (TrapBeauty)." },
["gel_art_palette"]            = { name = "gel_art_palette", label = "Gel Art Palette", weight = 110, type = "item", image = "gel_art_palette.png", unique = false, useable = false, shouldClose = false, description = "Salon product (TrapBeauty)." },
["lash_strip_set"]             = { name = "lash_strip_set", label = "Lash Strip Set", weight = 60, type = "item", image = "lash_strip_set.png", unique = false, useable = false, shouldClose = false, description = "Salon product (TrapBeauty)." },
["lip_gloss_pack"]             = { name = "lip_gloss_pack", label = "Lip Gloss Pack", weight = 60, type = "item", image = "lip_gloss_pack.png", unique = false, useable = false, shouldClose = false, description = "Salon product (TrapBeauty)." },
["scalp_scrub_spa"]            = { name = "scalp_scrub_spa", label = "Scalp Scrub Spa", weight = 130, type = "item", image = "scalp_scrub_spa.png", unique = false, useable = false, shouldClose = false, description = "Salon product (TrapBeauty)." },
["edge_wax_pro"]               = { name = "edge_wax_pro", label = "Edge Wax Pro", weight = 90, type = "item", image = "edge_wax_pro.png", unique = false, useable = false, shouldClose = false, description = "Salon product (TrapBeauty)." },
ox_inventory

Add to ox_inventory/data/items.lua. Match spawn names to config.lua.

['nails_supplies'] = {
    label = 'Nails Supplies',
    weight = 120,
    stack = true,
    close = false,
    description = 'Salon material (TrapBeauty).',
},

['wig_material'] = {
    label = 'Wig Materials',
    weight = 200,
    stack = true,
    close = false,
    description = 'Salon material (TrapBeauty).',
},

['shampoo'] = {
    label = 'Shampoo',
    weight = 80,
    stack = true,
    close = false,
    description = 'Salon material (TrapBeauty).',
},

['conditioner'] = {
    label = 'Conditioner',
    weight = 80,
    stack = true,
    close = false,
    description = 'Salon material (TrapBeauty).',
},

['perm_kit'] = {
    label = 'Perm Kit',
    weight = 250,
    stack = true,
    close = false,
    description = 'Salon material (TrapBeauty).',
},

['relaxer_kit'] = {
    label = 'Relaxer Kit',
    weight = 260,
    stack = true,
    close = false,
    description = 'Salon material (TrapBeauty).',
},

['wig'] = {
    label = 'Vogue Platinum Wig',
    weight = 300,
    stack = true,
    close = false,
    description = 'Salon product (TrapBeauty).',
},

['nails'] = {
    label = 'Gel Extensions Set',
    weight = 120,
    stack = true,
    close = false,
    description = 'Salon product (TrapBeauty).',
},

['hair_product'] = {
    label = 'Keratin Infusion',
    weight = 140,
    stack = true,
    close = false,
    description = 'Salon product (TrapBeauty).',
},

['weave_closure'] = {
    label = 'Lace Weave Closure',
    weight = 160,
    stack = true,
    close = false,
    description = 'Salon product (TrapBeauty).',
},

['ponytail_piece'] = {
    label = 'Drawstring Ponytail',
    weight = 140,
    stack = true,
    close = false,
    description = 'Salon product (TrapBeauty).',
},

['blowout_serum'] = {
    label = 'Blowout Serum',
    weight = 100,
    stack = true,
    close = false,
    description = 'Salon product (TrapBeauty).',
},

['nail_chrome_set'] = {
    label = 'Chrome Nail Capsule',
    weight = 110,
    stack = true,
    close = false,
    description = 'Salon product (TrapBeauty).',
},

['gel_art_palette'] = {
    label = 'Gel Art Palette',
    weight = 110,
    stack = true,
    close = false,
    description = 'Salon product (TrapBeauty).',
},

['lash_strip_set'] = {
    label = 'Lash Strip Set',
    weight = 60,
    stack = true,
    close = false,
    description = 'Salon product (TrapBeauty).',
},

['lip_gloss_pack'] = {
    label = 'Lip Gloss Pack',
    weight = 60,
    stack = true,
    close = false,
    description = 'Salon product (TrapBeauty).',
},

['scalp_scrub_spa'] = {
    label = 'Scalp Scrub Spa',
    weight = 130,
    stack = true,
    close = false,
    description = 'Salon product (TrapBeauty).',
},

['edge_wax_pro'] = {
    label = 'Edge Wax Pro',
    weight = 90,
    stack = true,
    close = false,
    description = 'Salon product (TrapBeauty).',
},

Installation

How to install

  1. Copy to resources/[TrapLadies]/TrapBeauty.
  2. Run any SQL the resource ships (check repo for *.sql).
  3. Register items / images in your inventory resource.
  4. ensure qb-core, oxmysql, then TrapBeauty.
  5. Restart.

YouTube Video

YouTube Video