Skip to main content

Tattoo Menu

The tattoo menu handles all tattoo-related workflows inside XDEV Appearance.

This system supports:

  • tattoo previews
  • tattoo opacity
  • tattoo categories
  • tattoo searching
  • tattoo synchronization
  • tattoo rebuilding

Freemode Requirement

The tattoo system requires freemode models:

mp_m_freemode_01
mp_f_freemode_01

Custom/addon peds may not support GTA overlay tattoos correctly.


Tattoo Zones

Supported tattoo zones:

ZONE_HEAD
ZONE_TORSO
ZONE_LEFT_ARM
ZONE_RIGHT_ARM
ZONE_LEFT_LEG
ZONE_RIGHT_LEG

These zones are used for:

  • filtering
  • organization
  • rebuilding
  • synchronization

Tattoo Categories

The UI automatically groups tattoos by zone.

Example workflow:

1. Select zone
2. Browse tattoos
3. Preview tattoo
4. Adjust opacity
5. Save appearance

Live Preview System

Tattoo previews are applied instantly during selection.

The system internally:

1. Clears overlays
2. Rebuilds active tattoos
3. Applies preview tattoo
4. Updates opacity

This allows accurate real-time previews.


Tattoo Search

The tattoo menu includes a search/filter system.

Supported search targets:

label
name

Example:

Pirate Skull
TAT_BB_021

This improves navigation across large tattoo collections.


Opacity Support

The tattoo system supports adjustable opacity.

Internal range:

0.0 -> 1.0

UI systems may internally display:

0 -> 100

and automatically normalize values.


Tattoo Save Structure

Saved tattoo example:

tattoos = {
ZONE_HEAD = {
{
name = "TAT_BB_021",
opacity = 0.4
}
}
}

Internal Tattoo Workflow

When tattoos are applied:

1. Existing overlays are cleared
2. Saved tattoos are rebuilt
3. Tattoo hashes are resolved
4. Overlays are applied
5. Opacity values are synchronized

Tattoo Refresh System

The resource includes a full tattoo refresh workflow.

This is used after:

ped reloads
appearance saves
ped switching
menu closing
reconnects

Purpose:

  • prevent overlay loss
  • prevent desync
  • restore tattoo states

Save Workflow

When tattoos are saved:

1. Tattoo state is collected
2. Opacity values are normalized
3. Tattoo structure is synchronized
4. Database save is triggered

Cancel Workflow

When changes are cancelled:

previous tattoo state is restored

including:

  • active tattoos
  • opacity values
  • zone data

Compatibility Support

The tattoo system supports compatibility workflows for:

  • Illenium Appearance
  • legacy tattoo structures
  • simplified tattoo formats

through internal converters.


Illenium-Compatible Structure

Example compatible structure:

{
collection = "mpbeach_overlays",
name = "TAT_BB_021",
label = "Pirate Skull",
zone = "ZONE_HEAD",
hashMale = "MP_Bea_M_Head_000",
hashFemale = "",
opacity = 0.6
}

XDEV Internal Structure

Internally, XDEV may also rebuild tattoos using simplified structures.

Example:

{
value = "TAT_BB_021",
opacity = 35
}

depending on synchronization stage.


Synchronization Notes

The system intentionally separates:

skin
tattoo
peddata

This architecture improves tattoo rebuilding reliability after:

  • model changes
  • reconnects
  • menu rebuilds
  • compatibility conversions

Common Desync Causes

Typical tattoo desync causes include:

non-freemode peds
overlay clearing
incomplete rebuilds
external appearance systems
cached appearance states

The refresh workflow exists specifically to reduce these issues.


Recommended Workflow

Recommended player workflow:

1. Open tattoo menu
2. Select zone
3. Search/select tattoo
4. Adjust opacity
5. Preview tattoo
6. Save or cancel

Developer Notes

Unlike many tattoo systems, XDEV rebuilds tattoos independently from clothing synchronization.

Purpose:

better overlay stability
cleaner rebuild logic
compatibility support
ped synchronization reliability