🖌️SLEEK TATTOO
Here check the installation guide
Tattoo shop resource for FiveM — business management, NPC employees, custom addon tattoos, henna, minigames, and a modern UI.
Features
Auto-detection of ESX / QBCore — no manual framework config needed
6 pre-configured parlor locations
Full business system with worker/owner ranks and revenue split
NPC employees that generate passive income
Supply system — parlors consume supplies per tattoo
Henna (temporary tattoos) — auto-expire after configurable real-time days
Tattooing minigame — optional ox_lib skillCheck
Duty system — clock in/out with auto-off-duty on distance
Custom addon tattoos with a CUSTOM badge in the shop UI
Per-parlor tattoo removal station
Full GTA vanilla catalog + custom collections
Modern NUI with configurable colors, blur, particles, and sounds
ox_target / qb-target or classic marker + keypress
9 banking integrations (ESX, QB, neon-boss, OKOK, FD, TGG, WASABI, CODEM, JUSTBANKING)
5 clothing resource integrations (illenium-appearance, rcore_clothing, fivem-appearance, qb-clothing, esx_skin)
Discord webhooks for sale logging
Multi-language (EN, ES, FR, DE, IT, TR, ZH, AR)
Requirements
Installation
Step 1 — Place the resource
Copy forge-tattoo into your server's resources/ directory.
Step 2 — Database
The resource auto-creates all required tables on first start (Cfg.AutoMigrateDB = true by default). No manual SQL import is needed.
Tables created:
forge_business— parlor balances, supply levels, NPC employeesA
tattooscolumn in your framework's player/users table
Step 3 — server.cfg
ox_lib must start before forge-tattoo.
Step 4 — Create jobs (if using business mode)
If your parlors use isBusiness = true, register the job names in your framework.
ESX:
QBCore — add equivalent entries in qb-core/shared/jobs.lua.
Step 5 — Start your server
The resource auto-detects your framework and clothing resource. Edit the files inside config/ to customize.
Configuration
All configuration lives in the config/ folder:
config.lua
Master config — economy, NPCs, supplies, henna, minigame, UI, markers, camera
shops.lua
Parlor locations, coordinates, NPC spawn, business settings
tattoos.lua
Full tattoo catalog — vanilla GTA + custom addon entries
translation.lua
UI and notification text (8 languages)
bridge_client.lua
Client framework bridge (usually no edits needed)
bridge_server.lua
Server framework bridge (usually no edits needed)
Auto-detection
The framework is detected automatically:
es_extendedrunning → ESX modeqb-corerunning → QBCore mode
The clothing resource is auto-detected in this priority order: illenium-appearance → rcore_clothing → fivem-appearance → qb-clothing → esx_skin.
Parlor Locations
Defined in config/shops.lua. Ships with 6 locations:
parlor_elburro
El Burro Heights
tattoo1
parlor_vinewood
Vinewood
tattoo2
parlor_chumash
Chumash
tattoo3
parlor_vespucci
Vespucci Beach
tattoo4
parlor_sandy
Sandy Shores
tattoo5
parlor_paleto
Paleto Bay
tattoo6
Adding a new parlor
Copy an existing parlor entry in
shops.luaChange the key name (e.g.
'parlor_legion')Update all coordinates
Set a new
assignedJoband register it in your frameworkRestart the resource
Non-business mode
Set isBusiness = false on any parlor to make it a public self-service shop — no job required.
Key parlor fields
Business & Economy
Revenue split
Payment routing
Built-in balance (default) — stored in forge_business, managed via in-game panel:
External banking — route money to your society/banking resource:
Each parlor's societyKey must match what the banking resource expects.
Neon-Boss integration
Automatically sets UseBuiltinBalance = false and routes all money through neon-boss. Each parlor needs a bossMenuPoint coordinate and the assignedJob must be registered in neon-boss.
NPC Employees
Parlors can hire virtual NPC artists from a rotating candidate pool. NPCs earn a salary and generate passive income.
How it works
Candidates are defined in
Cfg.NPCPoolwith name, ped model, and skill level (1–4)The available-for-hire list rotates every
Cfg.NPCRotationMinutes(default: 120 min)Each parlor holds up to
Cfg.MaxNPCEmployees(default: 3) NPCsSalary is paid from the parlor balance every
NPCSalaryIntervalMinminutesOwners hire/fire through the management panel
Passive income
When Cfg.EnableExtraSales = true, each NPC generates revenue every ExtraSaleIntervalMin minutes:
1
$60
$120
$150
-$130
2
$170
$340
$300
-$60
3
$312
$624
$450
+$74
4
$480
$960
$600
+$260
Level 1–2 NPCs need real customer purchases to break even. With the team bonus, 3 NPCs get ×1.30.
NPC happiness
3 (Happy)
×1.00
Supplies above threshold
2 (Okay)
×0.75
Normal state
1 (Unhappy)
×0.35
Supplies below SupplyAngerThreshold (50)
0 (Miserable)
×0.00
Supplies below SupplyCriticalThreshold (10) — NPC may quit
Supply System
Parlors consume supply units per tattoo applied/removed. Owners restock through the management panel.
DefaultSupplyMax
100
Max supply capacity
SupplyPerTattoo
2
Units consumed per tattoo
SupplyPerRemoval
1
Units consumed per removal
SupplyUnitPrice
$50
Cost per supply unit
SupplyBuyIncrement
10
Step size for the buy button
If supplies run out, tattoos cannot be applied. Supply level also affects NPC happiness (see above).
Henna (Temporary Tattoos)
Henna tattoos use the same application flow as permanent tattoos and are marked differently in the catalog.
Minigame
Optional skill check before a worker can apply a tattoo. Only affects real player workers, not NPC-only parlors.
Uses ox_lib skillCheck.
Duty System
Workers clock in/out at the parlor's dutyPoint. The system auto-clocks workers off if they leave the area.
Interaction Modes
Target mode (ox_target / qb-target):
Marker mode (default):
Each interaction type (seats, removal, duty, management) has its own marker style configurable in Cfg.MarkerStyles.
UI Customization
The full color palette is configurable in Cfg.UIColors:
Camera & Preview
When browsing tattoos, a studio outfit is applied so clothes don't hide the preview. Both the outfit and camera angles are configurable:
Camera presets per body zone are in Cfg.StandingCamAngles and Cfg.ProcessCam.
Inventory Items
Optionally require physical items to apply tattoos:
Webhooks
Discord webhook notifications for sales. Configure the webhook URL in bridge_server.lua. Sends embeds with sale title, description, and player identifier.
Custom Addon Tattoos
Forge Tattoo supports custom addon tattoos that appear with a CUSTOM badge in the shop UI.
Step 1 — Create the texture
Use OpenIV to extract an existing GTA tattoo
.ytdas a template, or start from scratchCreate your design in a graphics editor (Photoshop, GIMP, etc.)
Save as
.pngwith transparency
Step 2 — Prepare the .ytd file
Name it following the convention:
forge_[name]_[zone].ytd(e.g.forge_skull_face.ytd)Copy any existing
.ytdfromstream/as a base, rename itOpen in OpenIV → delete the existing texture → import your
.pngPlace the finished
.ytdin thestream/folder
Step 3 — Register in the XML
Open ADDON/forge_overlays_custom.xml and add an <Item> entry for male and female:
For the female version, use _F suffix in nameHash, set faction to FM_F, and gender to GENDER_FEMALE.
uvPos
Position on the body UV map
scale
Size on the body (default 0.1 / 0.1)
nameHash
Unique ID — must end in _M or _F
txdHash / txtHash
Must match the .ytd filename (without extension)
zone
ZONE_HEAD, ZONE_TORSO, ZONE_LEFT_ARM, ZONE_RIGHT_ARM, ZONE_LEFT_LEG, ZONE_RIGHT_LEG
faction
FM (male), FM_F (female)
Step 4 — Add to the catalog
In config/tattoos.lua, find the forge_overlays_custom collection and add:
Parameters: ctat(label, hashMale, hashFemale, cost, eraseCost, pose, camera)
pose
1 = face-down (front), 2 = face-up (back)
camera
Preset string ('f_head', 'f_neck', 'b_torso', etc.) or custom {cameraOffset, lookAtOffset} table
Camera presets: f_head, f_neck, b_neck, b_face, b_face_r, b_face_l, b_torso, b_torso_r, b_torso_l, b_belly
For arms/legs, use a custom offset table:
Step 5 — Restart and test
Your tattoo will appear in the shop with the CUSTOM badge.
Translations
All strings are in config/translation.lua. To add a language, copy the en block and translate the values.
Skin Manager Compatibility
Most skin managers call ClearPedDecorations() when loading a player's appearance, which removes all tattoo overlays. The skin manager must call forge-tattoo's export to re-apply them:
Does my skin manager need modification?
esx_skin / skinchanger
No — works out of the box
illenium-appearance (ESX)
Yes
illenium-appearance (QB)
Yes
fivem-appearance (ESX)
Yes
qb-clothing (QB)
Yes
rcore_clothing
No — compatible natively
Pre-modified downloads
Don't want to modify it yourself? Use the version that already includes full forge compatibility:
These versions auto-detect all three forge scripts (tattoo, barber, clothes). When a forge script is running, the skin manager disables its own overlapping shop and calls the appropriate export after every appearance load.
What the modifications do
Auto-detection — checks
GetResourceStateat startup for each forge scriptShop deactivation — skips creating the built-in tattoo/barber/clothing blips, zones, and targets when the corresponding forge script is running
Overlay sync — calls
ReloadPlayerInk()after everyClearPedDecorationsto re-apply tattoos
Manual modification guide
Support
Join our Discord — installation help, bug reports, feature requests, and free custom tattoo designs.
License
© CodeForge — All rights reserved.
Last updated