Core 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.
What this pack contains
Save €15.00What it does
The decoration slot problem, gone rather than managed
A GTA ped has a single decoration slot, shared by every resource on the server, and clearing it clears everyone. Hair bases and tattoos both live in it. Run the three separate resources and each one has to put the others back after every redraw, which works but is a truce. Here they are drawn and saved together, so there is no handover to get wrong.
Technical
specifications
Everything you
get
-
The three shops, at one price
The barber shop, the tattoo parlour and the clothing store, with everything each of them ships on its own. Buying the bundle costs less than the three separately, and you can still turn a module off if you only need two of them.
-
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.
-
Eight bridges, one file each
Framework, notifications, interaction, clothing, inventory, decorations, screenshots 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.
-
Everything tunable stays open
The 36 shops, every price table, the collection multipliers, the zone corrections, the camera, the lighting, the VIP lists and the overrides the in-game editor writes. `config/*.lua`, `locales/*.lua` and `bridges/*.lua` are escrow exempt and editable in production.
Integration guide
Installation
-
Drop the resource
Grab the script from your Tebex account, copy the folder into your resources directory and add
ensure avenida_core_skinto your server config, afterensure oxmysql. Use the folder name as it ships, it is what the manifest declares. -
Run the SQL, all of section [A]
Section [A] holds every table the resource owns, including the ledger of paid garments. Sections [B], [C] and [D] are conditional and the file says when each applies. [D] is the inventory items, only needed if you turn
Config.Clothes.GiveAsItemson, and it is the one people forget. -
Choose your modules
Open
config/config.luaand setConfig.Modules. A module set to false costs nothing at all: no blip, no interaction point, no thread. CheckConfig.Localewhile you are there. -
Grant the admin permissions
Add
add_ace group.admin avenida_skin.admin allowandadd_ace group.admin avenida_skin.vip allow. The first opens the in-game catalogue editor, the second unlocks whatever you put behind the VIP list. -
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, and remember it only controls logging, the editor has its own switch.
Quickstart
Run only the shops you need
The three modules are independent. A server that already has a clothing store it likes can keep the barber and the tattoo parlour, and nothing of the disabled module runs.
-- config/config.lua
Config.Modules = {
Barber = true,
Tattoo = true,
Clothes = false, -- no blip, no point, no thread
}
Config.Locale = 'en'
Config.Framework = 'auto' -- 'qbcore' | 'esx' | 'vrp' | 'standalone' | 'custom'
Config.Notif = 'auto'
Config.Interact = 'auto'
Config.Clothing = 'auto'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_skin']:GetHairbase() --> { c = collection, t = nameHash } | nilThe hair base worn by the ped. The bundle runs the three shops on one decoration slot, so this is the single place to read it from, whichever shop the player last visited.
GetTattoos
exports['avenida_skin']:GetTattoos() --> { { c, t }, ... }The tattoos currently on the ped. Because barber, ink and wardrobe share one registry here, you get one list instead of chasing three resources for the same answer.
Server
GetBagStorage
exports['avenida_skin']:GetBagStorage(sex, drawable) --> { weight, slots } | nilWhat a backpack drawable is worth in weight and slots, read from the wardrobe configuration. Returns nil for a drawable that is not declared as a bag.
Recipes
Real-world copy-paste examples. Drop them into your own resource, tweak the values, ship.
Each store declares its own sections, and each section its own pricing mode. A flat rate for a whole section, a multiplier that makes later drawables dearer, or a table when only a handful of pieces deserve their own price.
-- config/clothes_shops.lua
categories = {
tops = {
enabled = true,
price = { mode = 'fixed', base = 300 },
},
pants = {
enabled = true,
-- price = base + index * mult
price = { mode = 'multiplier', base = 100, mult = 2 },
},
mask = {
enabled = true,
price = { mode = 'table', map = { [12] = 900, [45] = 1500 } },
},
}One flat rate covers the 1615 designs, and a multiplier per DLC collection does the rest, so you never price a catalogue by hand. Laser removal keeps its own fee and is never multiplied.
-- config/tattoo.lua
Config.Tattoo.Prices = {
flat = 1000,
reset = 3000, -- laser removal, per tattoo removed
}
Config.Tattoo.CollectionMultipliers = {
multiplayer_overlays = 0.80, -- base game, cheaper
mpHipster_overlays = 0.85,
-- anything not listed stays at 1.0
}The camera pivots on the head, so the same height values work standing or seated. The lighting and the depth of field are what make the character read as the subject rather than a ped in a dark room.
-- config/config.lua
Config.Camera = {
Sensitivity = 1.0, -- rotation, zoom and height, clamped to 0.1 - 5.0
InvertY = false,
}
Config.UI = {
Tutorial = true,
Timecycle = 'casino_brightroom',
TimecycleFadeMs = 400,
DofStrength = 0.1,
}The resource fires a client event when a menu opens and closes, for all three modules. Hook it rather than polling, it is the same signal the built-in HUD handling uses.
AddEventHandler('avenida_skin:client:uiStateChanged', function(hidden)
if hidden then
exports['myhud']:hide()
else
exports['myhud']:show()
end
end)Troubleshooting
- The bundle if you want all three, it costs less and it is one thing to install and update. The separate resources if you only need one or two, or if you already run a clothing store you are happy with. What you must never do is run both 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.
- Set `Config.Clothes = false` in `Config.Modules`. A disabled module registers nothing: no blip, no interaction point, no thread, and its config is simply never read. You can also buy the two separate resources instead, the choice is about price rather than about what runs.
- Yes. It reads and writes the same character shape as the separate resources and goes through the same appearance bridge, so qb-clothing, illenium-appearance, fivem-appearance, esx_skin or its own table all keep working. Characters that already exist are seeded from what they wear, including for the clothing ownership ledger.
- 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, `ox_target` for the interaction prompt, `ox_inventory` for clothing items and backpack containers, and oxmysql as the one hard dependency. Nothing there is required except oxmysql.
- vRP stores clothing components and props, and nothing else. It has no field for head overlays, face features, hair colour, eye colour or ped decorations, so on vRP the whole character is kept in a table of its own instead. vRP still gets the clothing part, refreshed after a change. vRP 2 and vRP 0.5 are not supported, and the resource says so in the console rather than misbehaving quietly.
- Check `Config.Clothes.RequireOwnership`. The ledger seeds a character from what they are already wearing the first time it sees them, so turning it on does not take a wardrobe away. What it refuses is a write for a garment with no purchase behind it, which is also what a tampered client sends.
- 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. A disabled module costs nothing at all, since none of its code runs.
What buyers say
5.0 1 verified review
Glades Ravage-rp.fr Excellent resource — and genuinely open where it matters Every point where this touches the rest of the server goes through one readable file in bridges/. Each one documents what it detects, what it writes, and what each target actually costs you. That meant I could plug the clothing store into an inventory system it was never designed for — clothing as real items in dedicated equipment slots — without touching a single encrypted file. I wrapped the inventory bridge, translated names and metadata on the way through, and everything else kept working.
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.
FEATURED Avenida TeamTattoo 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.