Docs
Rarx Tattoos cover

Rarx Tattoos

Rarx Tattoos

Advanced tattoo shop system for FiveM

  • Qbox
  • QBCore
  • ESX
  • rarx_tattoos

Rarx Tattoos Preview

Overview#

RARX Tattoos is a complete tattoo shop system for FiveM servers featuring an immersive experience with NPC employees, custom animations, and a modern UI.

Requirements#

  • oxmysql
  • ESX or QBCore/QBox framework
  • Compatible clothing system (auto-detected)

Features#

Multiple Stores

Multiple tattoo shop locations with custom configurations

NPC Employees

Animated tattoo artists that perform the tattoo process

Custom Animations

Immersive customer and employee animations

Modern UI

Clean, intuitive interface for browsing and applying tattoos

Additional Features#

  • Mouse drag rotation — Click and drag outside the panel to smoothly rotate your character
  • Mouse wheel rotation — Scroll to rotate in 30° steps
  • On-screen controls legend — Keybinds and controls displayed at the bottom of the screen
  • Auto-detection of framework and clothing system
  • Multi-language support (Spanish, English, etc.)
  • Custom tattoo collections including DLCs
  • Fixed camera angles for precise tattoo application
  • Configurable prices per tattoo
  • Blocked tattoos system for exclusive/restricted designs

Supported Clothing Systems#

The script auto-detects your installed clothing system:

  • origen_clothing
  • bl_appearance
  • illenium-appearance
  • fivem-appearance
  • qb-clothing
  • skinchanger
  • esx_skin

Installation#

  1. Download

    Download rarx_tattoos from your Keymaster and extract to your resources folder.

  2. Configure server.cfg

    server.cfg
    ensure rarx_tattoos
  3. Configure

    Edit shared/config.lua to customize settings.

  4. Restart

    Restart your server.

Configuration#

Framework & Language#

Lua
Config.Framework = 'auto' -- 'auto', 'qb-core', 'esx'
Config.Language = 'es' -- Language code
Config.ClothingSystem = 'auto' -- Auto-detect or specify manually

Store Locations#

Each store has configurable:

  • Coordinates and blip
  • Fixed camera position
  • Customer chair position and animation
  • Employee idle and tattoo positions
  • Employee NPC model
Lua
Config.Stores = {
    {
        coords = vector3(-1154.59, -1426.55, 4.95),
        blip = true,
        fixedCamera = vector4(-1153.76, -1424.30, 4.95, 163.47),
        customer = {
            chair = vector4(-1154.36, -1426.24, 4.95, 190.87),
            coords = vector4(-1154.31, -1427.57, 3.83, 350.44),
            anim = 'customer_loop',
            dict = 'misstattoo_parlour@shop_ig_4',
        },
        employee = {
            idle = {
                coords = vector4(-1152.65, -1425.57, 4.95, 136.05),
                anim = 'base',
                dict = 'rcmnigel1a',
            },
            tattoo = {
                coords = vector4(-1153.75, -1427.45, 4.95, 100.52),
                anim = 'tattooist_loop',
                dict = 'misstattoo_parlour@shop_ig_4',
            },
            model = 'IG_DJSolMike',
        },
    },
}

Pricing#

Lua
Config.DefaultTattooPrice = 200

Tattoo Collections#

The script includes multiple tattoo collections:

Lua
Config.TattooLists = {
    'BaseTattoos.json',
    'DLC_enterprise.json',
    'DLC_mpchristmas3.json',
    'DLC_mp2023_02.json',
    'DLC_mpheist3.json',
    'DLC_mpheist4.json',
    'DLC_mpsecurity.json',
    'DLC_mpvinewood.json',
    'HairFades.json',
    'HairFades2.json',
    'StreetDreams.json',
    'yakuzatattoo.json',
    'rarxnetwork.json',
}

Blocked Tattoos#

Restrict specific tattoos to certain players:

Lua
Config.BlockedTattoos = {
    ['rarx_tattoo_092_M'] = {
        'CLS30468', -- CitizenID allowed
    },
}

Tattoo Gun Prop#

Customize the tattoo gun prop attachment:

Lua
Config.Prop = {
    model = 'v_ilev_ta_tatgun',
    bone = 60309,
    xPos = 0.09,
    yPos = 0.06,
    zPos = 0.036,
    xRot = 0.0,
    yRot = -110.0,
    zRot = -90.0,
}

Events & Exports#

Client Events#

Lua
-- Update/restore player tattoos from database
TriggerEvent('rarx_tattoos:client:UpdatePlayerTattoos')

-- Update tattoos with a specific list
TriggerEvent('rarx_tattoos:client:updateTattoos', tattooList)

Usage Example#

Restore player tattoos after character selection or clothing change:

Lua
-- In your multicharacter or clothing script
TriggerEvent('rarx_tattoos:client:UpdatePlayerTattoos')

In-Game Controls#

Control Action
Mouse Drag Smoothly rotate your character
Mouse Wheel Rotate in 30° increments
Z Zoom in
C Zoom out
X Hands up pose
ESC Close tattoo shop

Adding Custom Tattoos#

  1. Create a new JSON file in assets_tattoos/
  2. Add your tattoo definitions
  3. Add the filename to Config.TattooLists
  4. If using custom overlays, add XML files to stream/