by Avenida Team ESX · QBCore · vRP · Standalone · oxmysql

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.

Delivery Instant
Updates Free for life
Support Daily on Discord
01 · FEATURES

What it does

02 · SPECS

Technical
specifications

Framework Auto-detected QBCore · ESX · vRP · Standalone · Custom
Dependencies oxmysql ox_lib · ox_target · ox_inventory supported
Contents 3 shops in 1 Barber · Tattoo · Clothing · 36 locations
In-game locales 15 included ar · cs · de · en · es · fr · id · it · nl · pl · pt-br · ro · ru · th · tr
Performance 0.00ms idle Nothing runs while no one is in a shop
03 · INCLUDED

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.

04 · DOCUMENTATION

Integration guide

01

Installation

  1. Drop the resource

    Grab the script from your Tebex account, copy the folder into your resources directory and add ensure avenida_core_skin to your server config, after ensure oxmysql. Use the folder name as it ships, it is what the manifest declares.

  2. 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.GiveAsItems on, and it is the one people forget.

  3. Choose your modules

    Open config/config.lua and set Config.Modules. A module set to false costs nothing at all: no blip, no interaction point, no thread. Check Config.Locale while you are there.

  4. Grant the admin permissions

    Add add_ace group.admin avenida_skin.admin allow and add_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.

  5. 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 to false once the lines match your server, and remember it only controls logging, the editor has its own switch.

02

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.

lua
-- 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'
03

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 } | nil

    The 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 } | nil

    What 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.

04

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.

lua
-- 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 } },
    },
}
05

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.
REVIEWS

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.

    View on Discord ↗
Cart
Spirit RP
Discord