TrapsSpa¶
Luxury spa — desk, pool, saunas, bar, boss UI, snacks & supplies (qb-core).
Features¶
- Multiple NUI pages (
html/: desk, pool, asana, drinks, boss, etc.) - Pool / asana / snack flows split across
client/+server/ - Soft compatibility with ox_inventory / qb-inventory (see manifest comments)
Dependencies¶
qb-core
Notes¶
- Edit
config.luaandconfig_blend.lua(both in escrow ignore list). - Supply / steal loops are server-driven — tune before going live.
Inventory items¶
Must match Config.Items (membership + minerals) and Config.Snacks ids. Add PNGs to your inventory icon path where required.
qb-inventory
Add to qb-core/shared/items.lua. Snacks should be useable (resource registers QBCore.Functions.CreateUseableItem on start).
["spa_membership"] = { name = "spa_membership", label = "Spa membership", weight = 50, type = "item", image = "spa_membership.png", unique = true, useable = false, shouldClose = true, description = "Rockford Retreat visitor access (TrapsSpa)." },
["spa_mineral_magnesium"] = { name = "spa_mineral_magnesium", label = "Spa mineral (magnesium)", weight = 200, type = "item", image = "spa_mineral_magnesium.png", unique = false, useable = false, shouldClose = false, description = "Blend mineral (TrapsSpa)." },
["spa_mineral_sulfur"] = { name = "spa_mineral_sulfur", label = "Spa mineral (sulfur)", weight = 200, type = "item", image = "spa_mineral_sulfur.png", unique = false, useable = false, shouldClose = false, description = "Blend mineral (TrapsSpa)." },
["spa_mineral_lithium"] = { name = "spa_mineral_lithium", label = "Spa mineral (lithium)", weight = 200, type = "item", image = "spa_mineral_lithium.png", unique = false, useable = false, shouldClose = false, description = "Blend mineral (TrapsSpa)." },
["spa_mineral_silica"] = { name = "spa_mineral_silica", label = "Spa mineral (silica)", weight = 200, type = "item", image = "spa_mineral_silica.png", unique = false, useable = false, shouldClose = false, description = "Blend mineral (TrapsSpa)." },
["spa_snack_almonds"] = { name = "spa_snack_almonds", label = "Salted almonds", weight = 80, type = "item", image = "spa_snack_almonds.png", unique = false, useable = true, shouldClose = true, description = "Spa snack (TrapsSpa)." },
["spa_snack_trail_mix"] = { name = "spa_snack_trail_mix", label = "Spa trail mix", weight = 90, type = "item", image = "spa_snack_trail_mix.png", unique = false, useable = true, shouldClose = true, description = "Spa snack (TrapsSpa)." },
["spa_snack_fruit_cup"] = { name = "spa_snack_fruit_cup", label = "Fresh fruit cup", weight = 120, type = "item", image = "spa_snack_fruit_cup.png", unique = false, useable = true, shouldClose = true, description = "Spa snack (TrapsSpa)." },
["spa_snack_granola_bar"] = { name = "spa_snack_granola_bar", label = "Honey granola bar", weight = 85, type = "item", image = "spa_snack_granola_bar.png", unique = false, useable = true, shouldClose = true, description = "Spa snack (TrapsSpa)." },
["spa_snack_dark_chocolate"] = { name = "spa_snack_dark_chocolate", label = "Dark chocolate square", weight = 40, type = "item", image = "spa_snack_dark_chocolate.png", unique = false, useable = true, shouldClose = true, description = "Spa snack (TrapsSpa)." },
["spa_snack_rice_cakes"] = { name = "spa_snack_rice_cakes", label = "Rice cakes", weight = 70, type = "item", image = "spa_snack_rice_cakes.png", unique = false, useable = true, shouldClose = true, description = "Spa snack (TrapsSpa)." },
["spa_snack_retreat_box"] = { name = "spa_snack_retreat_box", label = "Rockford retreat box", weight = 350, type = "item", image = "spa_snack_retreat_box.png", unique = false, useable = true, shouldClose = true, description = "Premium spa snack box (TrapsSpa)." },
ox_inventory
Add to ox_inventory/data/items.lua. For snacks, wire the resource export (see server/snacks.lua):
server = { export = 'TrapsSpa.useSpaSnack' }
['spa_membership'] = {
label = 'Spa membership',
weight = 50,
stack = false,
close = true,
description = 'Rockford Retreat visitor access (TrapsSpa).',
},
['spa_mineral_magnesium'] = {
label = 'Spa mineral (magnesium)',
weight = 200,
stack = true,
close = false,
description = 'Blend mineral (TrapsSpa).',
},
['spa_mineral_sulfur'] = {
label = 'Spa mineral (sulfur)',
weight = 200,
stack = true,
close = false,
description = 'Blend mineral (TrapsSpa).',
},
['spa_mineral_lithium'] = {
label = 'Spa mineral (lithium)',
weight = 200,
stack = true,
close = false,
description = 'Blend mineral (TrapsSpa).',
},
['spa_mineral_silica'] = {
label = 'Spa mineral (silica)',
weight = 200,
stack = true,
close = false,
description = 'Blend mineral (TrapsSpa).',
},
['spa_snack_almonds'] = {
label = 'Salted almonds',
weight = 80,
stack = true,
close = true,
description = 'Spa snack (TrapsSpa).',
server = { export = 'TrapsSpa.useSpaSnack' },
},
['spa_snack_trail_mix'] = {
label = 'Spa trail mix',
weight = 90,
stack = true,
close = true,
description = 'Spa snack (TrapsSpa).',
server = { export = 'TrapsSpa.useSpaSnack' },
},
['spa_snack_fruit_cup'] = {
label = 'Fresh fruit cup',
weight = 120,
stack = true,
close = true,
description = 'Spa snack (TrapsSpa).',
server = { export = 'TrapsSpa.useSpaSnack' },
},
['spa_snack_granola_bar'] = {
label = 'Honey granola bar',
weight = 85,
stack = true,
close = true,
description = 'Spa snack (TrapsSpa).',
server = { export = 'TrapsSpa.useSpaSnack' },
},
['spa_snack_dark_chocolate'] = {
label = 'Dark chocolate square',
weight = 40,
stack = true,
close = true,
description = 'Spa snack (TrapsSpa).',
server = { export = 'TrapsSpa.useSpaSnack' },
},
['spa_snack_rice_cakes'] = {
label = 'Rice cakes',
weight = 70,
stack = true,
close = true,
description = 'Spa snack (TrapsSpa).',
server = { export = 'TrapsSpa.useSpaSnack' },
},
['spa_snack_retreat_box'] = {
label = 'Rockford retreat box',
weight = 350,
stack = false,
close = true,
description = 'Premium spa snack box (TrapsSpa).',
server = { export = 'TrapsSpa.useSpaSnack' },
},
Installation¶
How to install¶
- Copy
TrapsSpatoresources/TrapsSpa(exact name). - Configure
config.lua/config_blend.lua. ensure qb-corethenTrapsSpa.- Restart.
YouTube Video¶
YouTube Video