> For the complete documentation index, see [llms.txt](https://docs.rainmad.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.rainmad.com/resources/decal-v-graffiti-and-vehicle-sticker/admin-panel.md).

# Admin Panel

Open with `/decals_admin` (configurable). Access requires the ace permission `command` or an entry in `cfg.adminList`.

## Managing decals

Two tabs, **Stickers** and **Graffiti**, each with search, pagination, and a thumbnail per row:

* **Teleport** to any graffiti's position.
* **Delete:** removes a single decal, live for every player.
* **Delete all by creator:** bulk-removes everything one player ever placed, with a confirmation step.
* **Permanent:** permanent decals survive the inactivity prune and only admins can clear them. Admins can also flip the *Permanent* switch while placing a decal.

## Growing the catalog

Three import flows live in the panel header; each ends with a ready-to-paste `decals.lua` snippet ([details](/resources/decal-v-graffiti-and-vehicle-sticker/adding-decals.md)):

* **Add from URL:** validates and downloads an https image (3 MB cap, webp/png/jpg).
* **Add GIF:** animated decals behind `cfg.enableGifDecals`, with an admin-only recommendation baked into the dialog.
* **Decal editor:** full-screen canvas with text layers (27 runtime-loaded fonts), outline/shadow controls, catalog and URL image layers, drag/resize/rotate handles, alignment tools, undo/redo, and 256/512/1024 export.

## Debug overlay

`/decals_debug` toggles a diagnostics overlay (also a button in the panel); `/decals_debug <serverId>` flips it on another player's screen so they can read values out during a support case. It shows:

* **Catalog:** whether the client received the decal catalog.
* **decals.dat probe:** whether the decal types from `rm_decalv_assets` registered in this session. **This is the first thing to check** when decals don't render: a failed probe means the player joined while `rm_decalv_assets` wasn't running, or another resource overrode the level meta.
* **gta5.meta owners:** which resource owns the level meta (expected: `rm_decalv_assets`).
* **Decal type slots:** how many of the 280 patchable decal types this session is using.
* **Runtime texture pool:** locked/capacity per bucket (256²/512²/1024²) for image-file decals.
* **GIF DUI browsers:** active browser instances vs the `cfg.maxGifDuis` cap.
* **Rendering:** tracked/rendered vehicles, loaded graffiti cells/rows, rendered graffiti.

While the overlay is open, **Alt** grabs the cursor (and Alt/Esc releases it). During placement, a small preview sprite in the bottom-right corner shows the raw texture: if the sprite renders but the decal doesn't, the texture is fine and the decal types simply didn't register in this session (a join-order or level-meta condition, see [Troubleshooting](/resources/decal-v-graffiti-and-vehicle-sticker/troubleshooting.md)).

The card-by-card diagnosis flow for "decals aren't showing" lives on [Troubleshooting](/resources/decal-v-graffiti-and-vehicle-sticker/troubleshooting.md).
