> For the complete documentation index, see [llms.txt](https://atiysus-organization.gitbook.io/aty-scripts/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://atiysus-organization.gitbook.io/aty-scripts/weapon-editor/guide/who-sees-your-skin.md).

# Who sees your skin

## Who sees your skin

**Skins are shared.** Other players see the designs your players make, and the sync is on by default — nothing needs enabling.

{% hint style="warning" %}
If you were told at any point that skins are private to their owner "because of engine limits", that was wrong and we apologise for it. Sync has been in the resource, on by default, since it shipped. What *is* limited is how many different designs can be shown at once on the **same weapon model**, and that is what the rest of this page explains.
{% endhint %}

### The short version

| Weapon                                                              | What others see                                                                           |
| ------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
| One of the **ten prop-lane weapons**                                | Your actual design, on the whole weapon                                                   |
| **Carbine Rifle Mk II**, **Marksman Rifle Mk II**, **Pistol Mk II** | Your actual design, on the weapon's camo surfaces                                         |
| Anything else                                                       | The design of whichever nearby player is closest, on everyone's copy of that weapon model |

In every case the weapon has to be **in the player's hands**. A skinned weapon in a pocket shows nothing, because nothing is drawn.

Range is `Config.Sync.radius`, 25 metres by default.

### Why the third row exists

The game replaces weapon textures at **model level, not per entity**. There is exactly one texture slot per weapon model on each client. Two players holding a Combat Pistol cannot show two different Combat Pistol textures at the same time — not a limitation of this script, but of the native it has to use.

Two of the three mechanisms exist purely to work around that.

#### Prop lane — full body, ten weapons

The real weapon is hidden and a **per-slot copy of its model** is overlaid on it. Because each copy is a separate model, each one has its own texture dictionary, so the players in a scene stop competing for one slot. This is the only path that covers the whole weapon.

The real weapon stays equipped throughout: inventory, ammo, damage, recoil, firing, muzzle flash, animations and the serial number are all untouched.

```lua
Config.Lanes.prop = {
    enabled = true,
    slots   = 4,   -- how many different designs can show at once in one scene
    weapons = { 'WEAPON_PISTOL', 'WEAPON_COMBATPISTOL', ... },  -- ten weapons
}
```

`slots = 4` is not "four players per server". Slots are handed out **by proximity**, so players who cannot see each other share a slot and four slots cover an entire server. The limit only bites when more than four skinned players holding covered weapons stand together, and the extras fall back to the third row rather than showing something wrong. Two players who walk into each other while holding the same slot are reassigned within a few seconds.

Adding weapons to this lane is on Adding weapons.

#### Camo lane — Mk II camo surfaces

Every Mk II camo component is its own model, so it has its own texture dictionary. Painting a camo slot affects only the players wearing that slot, which makes it a second way around the model-level limit — and this one the game replicates natively.

```lua
Config.Lanes.camo = {
    enabled   = true,
    slots     = 10,
    baseModel = 'vanilla',
}
```

The camo component sits *on top of* the weapon body; it does not cover it. The body still uses the base model's texture, which is model-level and cannot be separated per player. `baseModel` decides what happens there, and there are only two coherent options:

| Value                   | The weapon body                   | Trade-off                                                                                                     |
| ----------------------- | --------------------------------- | ------------------------------------------------------------------------------------------------------------- |
| `'vanilla'` *(default)* | Left alone                        | Nobody ever sees a wrong design; the weapon does not look fully covered                                       |
| `'own'`                 | Carries the local player's design | Your own weapon looks fully skinned, but everyone else holding that model shows your design on their body too |

Verified camo slots exist for Pistol Mk II, Carbine Rifle Mk II and Marksman Rifle Mk II. SMG Mk II and Assault Rifle Mk II are locked — see Adding weapons.

#### Fallback — nearest player wins

For every other weapon, the model's single texture slot goes to the **nearest** player holding that model. In practice you see the design of whoever you are actually looking at.

A challenger has to be meaningfully closer than the current holder before it takes the slot (`Config.Sync.hysteresis`, default `0.8`). Without that, two players at a similar distance would trade the slot on every scan and the weapon would visibly flicker.

### "My design appeared on someone else's gun"

That is the model-level limit, and it is the most visible symptom of it. It is not a bug, and it is not your configuration.

`Config.Sync.conflict` decides what happens when someone else nearby carries a weapon of the same model as yours:

| Value                | Behaviour                                                                                                                                            |
| -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| `'mine'` *(default)* | Stay on your design. Your own weapon is always correct; other players carrying that model look like you                                              |
| `'vanilla'`          | Drop the design entirely while the clash lasts. Nobody shows a wrong design — but you lose your own skin too, until they walk away or switch weapons |

Neither is right. It is a trade between your weapon looking correct and other players not looking wrong. If your server finds the copying more jarring than losing the effect, switch to `'vanilla'`.

The clean answer is to put the weapon on the prop lane, where the problem does not arise at all.

### "My design shows on a second copy of the same gun in my own inventory"

Same cause. One texture slot per model per client means every Combat Pistol on your screen — yours, the spare in your inventory, the one on the player next to you — shares it. True per-weapon separation only exists on the prop and camo lanes.

### Turning sync off

```lua
Config.Sync = {
    enabled = false,
}
```

Designs then stay private to their owner. The other tuning knobs:

| Key          | Default  | Meaning                                             |
| ------------ | -------- | --------------------------------------------------- |
| `radius`     | `25.0`   | Metres. Past this a design is not worth rendering   |
| `interval`   | `700`    | Milliseconds between scans                          |
| `maxModels`  | `12`     | How many texture targets may be live at once        |
| `hysteresis` | `0.8`    | How much closer a challenger must be to take a slot |
| `conflict`   | `'mine'` | See above                                           |

{% hint style="info" %}
`maxModels` is a floor, not a tuned value. Ten camo slots plus the local player plus headroom is twelve; below that, the oldest entries are evicted and those players' skins quietly disappear. Raise it if you run large scenes, and watch your frame time.
{% endhint %}

### Checking it on a live server

```
/gunsmithsync      what the sync scanner currently sees
/gunsmithlook      the local player's own appearance state
/gunsmithpool      the texture pool and what is holding each slot
```

All three print to the console and change nothing.

### See also

* Adding weapons — putting a weapon on the prop lane
* Weapon catalogue — which lane covers which weapon
* Troubleshooting
