Description
A working QBCore tattoo studio: the player browses a catalog of body-zone tattoos, a camera zooms to the selected zone (arm, torso, neck) for a close preview, and each applied tattoo is purchased server-side from a priced catalog. Tattoos can be removed and the full decoration set is re-applied cleanly. Tattoo apply/remove is in every appearance pack, so the zoned zoom camera is what clears the polish bar buyers expect.
Prompt Template
You are writing a FiveM resource for qb-core (exports['qb-core']:GetCoreObject()).
The full prompt template and its reference Lua are part of a one-time pack. Pick your depth, both are lifetime access, no subscription, ever.
- 60 prompts + syntax-validated reference Lua
- Lifetime access, pay once
- All 510 prompts, the full library
- Per-prompt profit/trend intelligence (CSV + playbook)
- Lifetime free updates, new niches as the market moves
$49 for 60 · $199 for all 510 + intelligence, one-time, no subscription.
Expected Output
The reference Lua lives at content/expected-outputs/appearance/03-tattoo-studio-zoned.lua. It implements a catalog of zoned tattoos, a per-zone zoom camera, decoration apply/remove via…
The full prompt template and its reference Lua are part of a one-time pack. Pick your depth, both are lifetime access, no subscription, ever.
- 60 prompts + syntax-validated reference Lua
- Lifetime access, pay once
- All 510 prompts, the full library
- Per-prompt profit/trend intelligence (CSV + playbook)
- Lifetime free updates, new niches as the market moves
$49 for 60 · $199 for all 510 + intelligence, one-time, no subscription.
Known Failure Modes & Corrective Prompt
- Client-applied catalog, Claude lets the client pick any decoration and pay locally; validate the name against a server Prices table and charge there.
- Anim before load, the pose no-ops if the dict isn't loaded; always
RequestAnimDict+while not HasAnimDictLoaded(dict) do Wait(0) end. - One-sided net event,
tattoo:buy/tattoo:boughton only one side breaks the purchase; both sides useRegisterNetEvent+AddEventHandler. - Stale decorations, applying without
ClearPedDecorationsfirst stacks duplicates; re-apply the whole set each change.
Corrective re-prompt: "In the server tattoo:buy handler, reject any name not in the Prices table, verify GetMoney('bank') covers it, RemoveMoney once and only then fire tattoo:bought with the name. The client applies the decoration only after the server confirms; never apply or charge locally."
Framework Integration
- ESX: swap to
exports['es_extended']:getSharedObject()and charge withxPlayer.removeMoney(price)against the catalog. - QBCore: as written,
Player.Functions.RemoveMoney('bank', price, 'tattoo-studio'). - QBox: use
exports.qbx_core:GetPlayer(src)thenplayer.Functions.RemoveMoney('bank', price); decoration logic is identical.
Profit Potential
$90-$1150/mo on Tebex (expected ~$300), priced inside the $50-389 script band against a corpus of comparable Tebex sellers (median ~$11.85K/mo); a saturated category where the zoom-camera polish carries the sale.
Trend Signal
↘ saturated, corpus: Tattoo apply/remove ships in every major appearance resource; zoned zoom camera is the standard polish bar.
Sales Angle
The tattoo studio with per-zone zoom and server-validated catalog pricing that meets the polish bar buyers compare against, sold to servers that want a believable parlor. Recommended Tebex price $99.
Difficulty & Ship Time
intermediate · ships in 4-6h.
