Skip to main content

Installing in FiveM

Exporting the resource

Click Download resource in the top right of the editor. The server rebuilds the resource from scratch every time so it always reflects the current state of all your overlays.

The downloaded <collection>.zip contains:

<collection>/
├── fxmanifest.lua
├── <collection>_overlays.xml # PedDecorationCollection
├── shop_tattoo.meta # tattoo shop entries for both genders
└── stream/
├── <collection>_tat_000.ytd
├── <collection>_tat_001.ytd
└── …

The generated fxmanifest.lua registers the data files automatically:

fx_version 'cerulean'
game 'gta5'

file '<collection>_overlays.xml'

data_file 'PED_OVERLAY_FILE' '<collection>_overlays.xml'
data_file 'TATTOO_SHOP_DLC_FILE' 'shop_tattoo.meta'

Installing on a FiveM server

  1. Unzip into your server's resources/ folder (e.g. resources/[tattoos]/<collection>/).
  2. Add ensure <collection> to your server.cfg.
  3. If your server uses a custom tattoo script (most do), register the new tattoos with it - see Using the tattoos with a custom tattoo script below.
  4. Restart the server (or just the affected resources). Your tattoos should now show up both in the stock GTA V tattoo shop (via the generated shop_tattoo.meta) and inside your custom tattoo script's menu.

Naming convention

grzyTattooTool generates predictable names from your collection name. If your collection is called mypack, the export produces:

AssetName
Overlay XMLmypack_overlays.xml
Collection hashmypack_overlays
Preset name hashmypack_tat_000_m / mypack_tat_000_f
YTD filemypack_tat_000.ytd

The numeric index (000, 001, …) follows the overlay order inside the collection. The trailing _m / _f indicates the ped gender. These are the exact values you'll need if you reference the tattoos from another script.

Using the tattoos with a custom tattoo script

There is no single "default" tattoo script for FiveM - every server runs a different one (e.g. ESX/QBCore tattoo shops, character creators, etc.). If your server uses a custom script you'll need to register each tattoo with that script as well.

The steps are always roughly the same, regardless of which script you're using:

  1. Open your tattoo script's folder on the server.

  2. Find its config file - it's the file that lists every tattoo the script offers (often named config.lua, tattoos.lua, shared.lua, or similar). Open it and look at how an existing tattoo entry is structured.

  3. Copy that existing entry for each new tattoo you want to add and fill in the values from the Naming convention table above:

    • Wherever the script asks for a collection / dictionary / overlay name, use <collection>_overlays.
    • Wherever it asks for a name hash / preset / overlay hash, use <collection>_tat_<NNN>_<m|f> - one entry per gender you want it available for.
    • The numeric index <NNN> is the overlay's position in your collection (starts at 000).
  4. Save the config, restart the tattoo script resource on your server, and the new tattoos should show up in its menu.

tip

If you're not sure which field is which, look at one tattoo that already works in the script in-game and copy its format exactly - just swap the strings for your collection / name hash values.

Still stuck? Hop into the grzy.tools Discord and share which tattoo script you're using - chances are someone else has already integrated it.

Tips & best practices

  • Use one collection per pack. Don't pile unrelated tattoos into the same collection - every export bundles the entire collection into one resource.
  • Name collections like FiveM resources. Lowercase, no spaces; use _ or -. The collection name is reused for the resource folder, the <nameHash>, every YTD name and the shop_tattoo.meta entries.
  • Mirror instead of re-importing. If a tattoo should exist on both sides (e.g. left and right forearm), upload it once and use the mirror button - the position is flipped automatically.
  • Re-export after every change. The .zip you uploaded to FiveM is a snapshot - download a fresh one after any meaningful changes.