> ## Documentation Index
> Fetch the complete documentation index at: https://docs.rageon.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Weapon skins

> Paint a weapon skin on the weapon's own texture and apply it by id on a FiveM server.

A **Skin** is a weapon texture your server applies by name. It is marked **FiveM** because it only works on a FiveM server: skins always go in game through `rageon-bridge`, never as a replaced file.

## Create a skin

**1. Pick the weapon**

In **New edit**, select **Skin**, search for a weapon such as `w_pi_pistol`, click it, and click **Continue**. If the project already has a skin for this weapon texture, Rageon reopens it and skips the naming step.

**2. Name the skin**

**Skin name** asks for an **Id**, the name your server calls it by. Rageon suggests one from the weapon name. Typing lowercases the id and turns spaces into `_`. Click **Create**.

![Skin name dialog with the Id field and the weapon name](https://mintcdn.com/rageon/TCzaS11pSGz1CPPK/images/textures/texturing-skin-name.webp?fit=max\&auto=format\&n=TCzaS11pSGz1CPPK\&q=85\&s=c9bc800692dd99b0c82c510e7d1e7395)

The Skin name dialog.

**3. Paint on the stage**

The stage shows the weapon's own texture with the game pixels underneath. Add layers ([Layers and tools](/projects/texturing/layers-and-tools.md)). **Text** layers on a skin can use live variables such as `{ammo}`; click the **?** button for the list. Imported GIFs animate on skins.

![Skin open on the pistol with a text layer and the weapon in the 3D preview](https://mintcdn.com/rageon/TCzaS11pSGz1CPPK/images/textures/texturing-skin-stage.webp?fit=max\&auto=format\&n=TCzaS11pSGz1CPPK\&q=85\&s=a63515bed329bc4a7fd0ee4e70598a14)

A skin with a text layer using \{ammo}.

Double-click the id in the header to rename it later. There is no **File** | **In game** switch on skins.

## Use it in game

Export writes `skins.json` and a `skins/<id>/` folder containing `art.webp` for a still skin or `frame_*.webp` for animation, plus `player.html`. Keep these files together in the exported resource.

Install `rageon-bridge` on the server (**Settings** › **Bridge**) and start it before your resource: `ensure rageon-bridge`. Players apply a skin with `/skin`, `/skin <id>`, and `/skin off`, or from a script:

```lua theme={null}
exports['rageon-bridge']:applySkin('<id>')
```

> [!WARNING]
>
> The swap is global on the client: every weapon of that model shows the skin, only one skin is active at a time, and the art is mirrored across the weapon's two sides.

## Troubleshooting

> **The id cannot be empty.**
>
> Type an id in the **Id** field.

> **48 characters at most.**
>
> Shorten the id.

> **Only lowercase letters, numbers and \_.**
>
> Remove other characters from the id.

> **A skin with this id already exists in this project.**
>
> Choose a different id.

> **Another skin or swap in this project uses the same id — the export will refuse**
>
> Double-click the name on one of the cards and rename it.

> **The … server needs rageon-bridge … or later for in-game swaps.**
>
> Update `rageon-bridge` on the server in **Settings** › **Bridge**.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.