Tattoo shop
The whole vanilla tattoo catalogue, with a cart and a chair you actually sit in. 1615 designs across 26 DLC collections, previewed live on your own character as you add them, paid for in one go. Laser removal included, and an artist who walks in and does the work.
What it does
The entire vanilla catalogue, 1615 designs
26 DLC collections, every tattoo the game ships. Labels are read from the Rockstar locale files rather than retyped, so a player running the game in Turkish sees the Turkish name of each design. Newer collections are merged in by game build: a tattoo your client cannot render is never listed.
Technical
specifications
Everything you
get
-
Fifteen locale files, shipped filled
Your players read the script in their own language from the first start, and the files sit outside escrow so you can edit any line in production. Honest note: they are translated and reviewed by us, not proofread by native speakers of all fifteen. Tell us what reads wrong in yours and it gets fixed.
-
Seven bridges, one file each
Framework, notifications, interaction, clothing, inventory, decorations and compat. Every file documents its targets, what it detects, and what each target costs you. Detection probes the actual export rather than the resource state, so a renamed export degrades quietly instead of throwing at boot.
-
The whole tattoo economy stays open
Flat price, per-zone prices, collection multipliers, laser fee, the seven shops, the scene camera and the 368 zone corrections. `config/*.lua`, `locales/*.lua` and `bridges/*.lua` are escrow exempt and editable in production.
-
An install report you can paste into support
`/avenida_tattoo_check` prints which bridge was picked for each category, whether the tables and columns exist, and what your game build actually ships. It answers most integration questions before you have to ask them.
Integration guide
Installation
-
Drop the resource
Grab the script from your Tebex account, then copy the
avenida_tattoo/folder into your resources directory and addensure avenida_tattooto your server config, afterensure oxmysql. -
Run the SQL
Run section [A] of
INSTALL.sqlon your database. Section [B] is conditional, the file header says when you need it. -
Set your prices
Open
config/tattoo.lua. The flat rate, the per-collection multipliers and the laser fee are the three numbers worth deciding before you open the doors.config/config.luaholds the language and the bridges. -
Verify the integrations
Set
Config.Debug = true, restart, and read the console: one line per bridge category names the target that was picked. Set it back tofalseonce the lines match your server, the diagnostic commands it unlocks cost a frame hitch. -
Grant yourself the admin features
Add
add_ace group.admin avenida_tattoo.admin allowto your server config, then run/avenida_tattoo_checkin game for the full install report.
Quickstart
Set the price of ink
One flat rate covers the whole catalogue, and the multipliers make old collections cheap and rare ones expensive without pricing 1615 designs by hand. Everything is recomputed server side at payment.
-- config/tattoo.lua
Config.Tattoo.Prices = {
flat = 1000, -- every tattoo, unless PricePerZone is on
hair = 500,
reset = 3000, -- laser removal, per tattoo removed
}
Config.Tattoo.PricePerZone = false
Config.Tattoo.CollectionMultipliers = {
multiplayer_overlays = 0.80, -- base game, cheaper
mpHipster_overlays = 0.85,
mpBeach_overlays = 0.85,
-- anything not listed stays at 1.0
}API Reference
Public exports grouped by domain. Each row shows the call signature and what it does, not how it does it.
Client
GetHairbase
exports['avenida_tattoo']:GetHairbase() --> { c = collection, t = nameHash } | nilThe hair base the ped currently wears. The ink studio does not own it, but it has to give it back after every redraw, and so does any resource of yours that clears decorations.
GetTattoos
exports['avenida_tattoo']:GetTattoos() --> { { c, t }, ... }The full list of tattoos worn, as collection and name hash pairs. This is the authoritative copy: the laser removes from it, and a purchase adds to it, so read it rather than caching your own.
GetSkinData
exports['avenida_tattoo']:GetSkinData()The stored character, including the zone corrections that place ink correctly on torso, arms and legs. Handy when your own script needs to know what body it is drawing on.
ApplySkin
exports['avenida_tattoo']:ApplySkin(data, ped)Pushes an appearance onto a ped, tattoos included. The decoration slot is rebuilt in one pass, which avoids the flicker you get when ink is applied piece by piece.
ApplyClothing
exports['avenida_tattoo']:ApplyClothing(data, ped, temporary)Dresses a ped without touching the ink. The third argument keeps the change out of the database, which is what you want for a scene that ends when the player walks away.
Recipes
Real-world copy-paste examples. Drop them into your own resource, tweak the values, ship.
With `PricePerZone` on, the server bills from the GTA decoration zone of each design. Careful with the trade-off documented in the config: only tattoos that resolve to a declared zone are sold, so anything left uncorrected disappears from the shop rather than being sold at the wrong price.
-- config/tattoo.lua
Config.Tattoo.PricePerZone = true
Config.Tattoo.Prices = {
[0] = 1250, -- torso / back
[1] = 1000, -- head
[2] = 600, -- left arm
[3] = 600, -- right arm
[4] = 750, -- left leg
[5] = 750, -- right leg
[6] = 750, -- unknown
reset = 3000,
}GTA files a lot of DLC designs in the wrong zone. 368 are already corrected, and the list is open so you can add yours. Turn `Config.Debug` on to read a nameHash in game, then declare it.
-- config/tattoo.lua
Config.Tattoo.SubZoneOverrides = {
['FM_Hip_M_Tat_000'] = 'back',
['MP_Buis_M_Tat_021'] = 'neck',
-- 'back' | 'chest' | 'neck' | 'head'
}The scene camera is measured on the player, in their own axes, not on the chair prop. That is deliberate: the seat is rarely where the prop origin sits, and the gap varies by several metres between chairs, which is what makes a naive chair-relative camera film the player back.
-- config/tattoo.lua
Config.Tattoo.ApplyScene = true
Config.Tattoo.SceneCamera = {
Enabled = true,
Distance = 1.5, -- metres in front of the player
Height = 0.75, -- metres above their feet
TargetHeight = 0.6, -- aim at chest height
Fov = 42.0,
}The ped has one decoration slot for the whole server. If your script calls `ClearPedDecorations`, read what this resource owns first and hand it back afterwards, otherwise you wipe every tattoo the player paid for.
local hairbase = exports['avenida_tattoo']:GetHairbase()
local tattoos = exports['avenida_tattoo']:GetTattoos()
ClearPedDecorations(PlayerPedId())
-- your own decoration work here
if hairbase then
AddPedDecorationFromHashes(PlayerPedId(), hairbase.c, hairbase.t)
end
for _, dec in ipairs(tattoos) do
AddPedDecorationFromHashes(PlayerPedId(), dec.c, dec.t)
endTroubleshooting
- Two reasons, both deliberate. Newer DLC collections are merged in by game build, so a design your client cannot render is never listed rather than listed and broken. And with `PricePerZone` on, only tattoos that resolve to a declared zone are sold, which is stated in the config: most of the catalogue disappears until you fill the overrides in. With `PricePerZone` off, the default, the whole catalogue is on sale.
- That is GTA, not the script: the game files a large share of DLC designs under a zone that does not match where they land on the body. 368 are already corrected by hand, 310 to back and 58 to neck. For the rest, turn `Config.Debug` on to read the nameHash in game and add a line to `Config.Tattoo.SubZoneOverrides`, which is escrow exempt.
- QBCore, ESX and vRP, plus a standalone mode that needs no framework at all and a `custom` branch in `bridges/framework.lua` for anything else. Detection runs at startup and probes the real export. Qbox and ox_core have no dedicated branch: they run through the standalone or custom path, not through a tested target.
- Yes, everywhere it matters: `ox_lib` for notifications through `Config.UseOxLib`, `ox_target` for the interaction prompt, `ox_inventory` for items, and oxmysql as the one hard dependency. Nothing there is required except oxmysql. What has no dedicated branch is `ox_core` as a framework: on an ox_core server the resource runs standalone, or through the `custom` branch of `bridges/framework.lua`.
- vRP stores clothing components and props, and nothing else. It has no field for ped decorations, so tattoos have nowhere to live in it. On vRP this resource keeps the whole character in its own table instead. The practical consequence: a vRP native skinshop will not show the ink. vRP 2 and vRP 0.5 are not supported, and the resource says so in the console rather than misbehaving quietly.
- Yes, that is what they are built for. Each one owns its half of the single ped decoration slot and puts the others back after any redraw. What you must not do is run the separate resources and the `avenida_skin` bundle at the same time: they would each place their own blip and each write their own copy of the same character. The resource detects the overlap and says so in the console at startup.
- They are not retyped at all: each entry carries the Rockstar locale key and the game resolves it in the language the player runs. That is why the names match what a player already knows from story mode, in every language the game ships, and why nothing has to be maintained when a name changes.
- 0.00ms. The interaction points share one thread that parks at one second when nobody is nearby, blips are created once, and every session thread is killed on exit. Nothing runs between two customers.
What buyers say
5.0 15 verified reviews
ΔΈΞΉrowdev πͺ Le script est est excellent rien Γ dire
Blockerman Very nice support.
Shuntzu_Gamer Very nice support.
Woufy Very nice support, fast and pro !
- α΄Κα΄xΚ'; I had an issue where i lost access to my script and these guys couldn't help me at first but they went out there way to fix the issue and contacted me, amazing script
ReCore OoT Randomizer I bought the tattoo shop first, thanks to the very patient and efficient support I was able to make it work, I bought the barber shop afterwards and I am very happy with both scripts, it works like a charm! Congratulations again to the support !
Bl4cky 2 Scripts enjoyed by our Players already. The NPCs doing the work on the Tattoos and your Hair add a nice touch which makes it feel more lifely. Stacking Tattoos is a nice feature and the Checkout System of the Barber Shop is unbeatable. (Normally we try to avoid NPCs, this is one of the only times, where it is a nice feature). was also fast and able to help. All in all i am looking forward to new Avenida Scripts
Dominik Love it waiting for more scripts like this
theara the scripts are perfect, and the Tattoo/vending script still remains up to date and compatible.
Billy Bob i love the tattoo script !! it is AMAZING & and the support is the BEST !!!! they made me feel like a friend and not just a customer. Thank you guys!!!
OGDeuceMoney OneState USA Awesome script that works and I had a question that was answered quickly and clear! Thank you
Kikreto Historias RP Best script, best support! Friendly support!!
JACKSON Script de qualité, support rapide et très sympa ! Content de mon achat !
D3DI - Adriaan Dragon3dInteractive The best script 4 tatoos damm it works perfect love it
Mikaβ’ Bullineo Like a good Vine.. we can't like it before taste it ! Quality.. Fast support and friendly !
FEATURED Avenida TeamCore Skin (3 in 1)
Barber shop, tattoo parlour and clothing store in one FiveM resource. 1615 tattoos, every clothing component and prop, the whole head and skin set, spread across 36 shops. One interface, one camera, one purchase flow, and one thing to install on ESX, QBCore, vRP or standalone.
FEATURED Avenida TeamBarber shop
A barbershop staged like a scene, with a camera the player actually controls. The character walks in, sits down, and the barber gets to work while an orbit camera frames the head. Hair, beard, overlays and the full skin-detail set, previewed live before a single dollar is spent.
FEATURED Avenida TeamClothing store
A clothing store with saved outfits, company wardrobes and an editor that prices the catalogue from inside the game. Every component and every prop, bought one garment at a time or as a whole look, with a server-side ledger that stops anyone wearing what they never paid for.