Decal V: Graffiti and Vehicle Sticker

Preview Video

The video was recorded on an earlier version; the script has kept growing since, and everything below describes the current build.

Hand players a spray can. Tag a wall, sticker a car, dial in size, angle and color on a live preview, and the art stays: synced to everyone, saved through restarts, back on the vehicle every time it spawns. A 340+ decal catalog ships in the box, admins design new art without leaving the game, and none of it needs code edits.


The Catalog

One command or usable item opens the catalog; pick art for the wall in front of you or the car next to you.

  • 340+ ready-made decals across JDM, pixel art, memes, emojis, portraits, tattoo work, racing, text and patterns, all shipped as streamed textures.
  • Category chips and free-text search keep big collections browsable.
  • A separate browse-only catalog command lets customers window-shop at a tuning bay without placing anything.
  • Run it graffiti-only or sticker-only by switching either half off in the config.
  • Players can hide vehicle stickers and/or graffiti for themselves from the catalog settings; the choice is saved per player.


Live Placement

The decal rides your aim as a full-opacity preview; what you see is exactly what saves.

  • Width and height adjust separately or aspect-locked, rotation moves in fine steps, and an RGB picker tints the art.
  • Scroll to rotate, ctrl+scroll to resize, shift+scroll for depth; everything also lives on sliders, and the on-screen hints track the live values.
  • A depth nudge seats the decal into or off the surface, so art lands cleanly even on modded vehicles whose bodywork sits off their collision.
  • Server-side caps on size, per-vehicle count and save rate keep player freedom inside your rules.
  • Opacity control per decal, with a server-enforced minimum.


Vehicle Stickers

Stickers are keyed to the plate and model, so the car keeps its look for as long as it exists.

  • They survive restarts, respawns and streaming: whenever the vehicle shows up, its stickers come back with it.
  • True mirror places a reflected copy on the far side of the body using a real reflection raycast, so it sits right on curved panels; a flip switch handles asymmetric art.
  • Ownership is checked through your framework’s garage data, with bypass jobs and shop zones so mechanics can sticker customer cars in place.
  • A model blacklist protects the emergency fleet, and stickers whose vehicle hasn’t been seen for a configurable period prune themselves.


What players actually build with it, from live servers:



Graffiti

Walls, floors, bridges, tunnels: anything with collision takes a tag.

  • Saving plays a synced spray-can animation with particle effects, so tagging looks like tagging to everyone watching.
  • Tags sync by area: players nearby see new art the moment it saves, and joiners fetch only the cells around them.
  • A configurable density cap decides how much art fits in one spot.



Clearing

Cleanup is its own mode with markers in the world, not a blind chat command.

  • Labels float over every decal in range; arrow keys cycle through them and a details panel shows exactly what is selected and who placed it.
  • Removal is verified against the engine, so cleared means cleared, for every player.
  • By default only the creator, the vehicle owner or an admin can remove a decal; one flag opens it up.
  • Scraper and cleaning-spray items ship ready-made for ox_inventory, qb and esx.


Custom Art & the In-Game Editor

The bundled catalog is a starting point; your server’s own art is the point.

  • Drop a webp, png or jpg into the assets folder and add one line to the open decals.lua catalog.
  • Big packs ship as streamed ytd dictionaries that render with zero runtime decoding; included Node tools convert image folders to ytd and generate the flipped twins.
  • Admins import art from a URL in-game: the server downloads it under strict validation and size caps, then hands back a ready-to-paste catalog snippet.
  • The built-in editor composes decals from text, catalog art and image layers: 27 fonts out of the box (add any Google Fonts URL or font file in the config), outlines and shadows, drag, rotate, align, undo/redo, export up to 1024².
  • Animated GIF decals are an opt-in extra with a per-client cap, added from a URL through the same admin flow.






Permissions & Zones

Open it to the whole city or gate every single decal.

  • Per-decal or per-category access by job, gang, identifier allowlist or admin-only flag, plus a canUse server function for anything custom.
  • Faction decals: pin a category to jobs and vehicle models, so police art goes only on police cars, placed only by police.
  • Restricted zones block placement where you want it blocked (admins bypass); entries accept ox_lib and PolyZone shapes, so existing definitions paste over unchanged, and violation attempts fire a server hook you can route to dispatch.
  • Entry points are commands, items or both; locking commands to admins is one flag, and every rule is enforced server-side on save.

The Admin Panel

/decals_admin manages every decal on the server without touching the database.

  • Searchable, paginated lists of all stickers and graffiti with thumbnails, creator identity and when each vehicle was last seen.
  • Jump to any graffiti in the world, delete a single decal live, or wipe everything by one creator in a confirmed bulk action.
  • Permanent decals never expire and only admins can remove them: server branding that outlives every restart.
  • URL import, GIF import and the editor sit in the panel header, admin-gated end to end.
  • A support overlay shows catalog, streaming and render state, and can be flipped onto another player’s screen to diagnose their reports.


Discord Logging

Every placement and clear can land in your log channel with the artwork attached.

  • Creations and removals post to a webhook with the decal image embedded, plus player identity and the plate or coordinates.
  • The logger is an open server file, off by default: add your webhook, reshape the embeds however you like.
  • Server events fire on decal add, decal remove and restricted-zone attempts for your own logging or anticheat; v2 event names keep firing for existing handlers.


Performance

Heavy only when someone is actually using it.

  • Rendering runs on coarse one-second ticks; per-frame work exists only while a player is actively placing or clearing.
  • Render budgets bound the worst case: the farthest graffiti yield first, and distant vehicles render a reduced sticker set.
  • Streamed ytd textures draw with no runtime decoding; plain images decode into a bounded, recycled texture pool.
  • Engine decal slots are pooled, reference-counted and reused, and every removal is verified, so long-uptime servers stay clean.
  • The catalog syncs to joining players at a throttled rate, so it never competes with join-time streaming.
  • Visibility culling releases decals nobody can currently see and brings them back the moment they are visible, keeping the engine’s live decal load low.

Framework & Compatibility

Auto-detects your framework and bridges to your existing systems; pick auto or force any option in the config:

  • Frameworks: ESX · QBCore · QBox (auto-detect)
  • Notify: builtin · ox_lib · qb · esx · okokNotify · ps-ui · lation_ui · wasabi_notify · zsxui

Configurable cfg.lua, open locales/ for any language, open bridge files to integrate anything we don’t cover; database tables create and migrate themselves, and the streamed decal packs live in a fully open companion resource. Upgrading from v2 keeps your database, catalog and event handlers working.

More compatibility options are added over time; open a ticket for the most up-to-date list.


Purchase

Docs: Decal V: Graffiti & Vehicle Sticker | RAINMAD Documentation
Discord: RAINMAD Scripts
YouTube: https://www.youtube.com/rainmad0
Store: https://store.rainmad.com


Code is accessible Partially — cfg.lua, the decals.lua catalog, full bridge/, discord logger, the DB layer and the assets resource is fully open
Subscription-based No
Lines (approximately) +10K
Requirements ox_lib · oxmysql · OneSync
Support Yes
745 Likes
Illegal Corners: Selling Goods
Gangs - Territory, Wars & Tribute Zones!
House Robbery with Welding Minigame
Bounty Board
Towtruck + Missions
Chopshop with Welding Minigame
Dialog with NPC
[K4MB1/GABZ] Bobcat Security Heist
Boombox with Watch Party
Weapon V: Realism
Vault Heist: Los Santos
[ESX][QB] Throw Everything [item, weapon, object]
Spawn Selector but never seen before
Drugs V: Grow, Cook & Space!
Police Riot with Interior
Realistic Airdrop
Gun Store Heist
ATM Robbery - 4 in 1!
Zombies & Dungeon
Lootbag
PVP Utils: KillFeed, Effects & More
[RAINMAD] Below the Vault Heist
Heist Subscription (30 unique main & side heist scripts)
3D Hacking Device: In-hand phone hacking tool
Mad Mini Bikes
Ropes V: G-Rappel/Lasso/Zipline & more!
MAD DAY: ATM ROBBERY (14 APPROACH)
Cops V: Database
Roller Blades & Ice Skates
Mad Clothes Pack #FAST2
Camper V: Drug Caravans
[RAINMAD] Cargo Ship Heist
Mad Ped Pack #BALLAS1
[RAINMAD] Cash Exchange Heist
[FREE][STANDALONE] GTA:O First Death
[FREE][STANDALONE][WIP] Gun Dual Wield
Moonshine: Bootleg Empire!
Drugs V: Business Labs
[RAINMAD] NPC Mechanic
[RAINMAD] Barge Heist
Bank Truck Robbery - 4 in 1!
Drugs V: Money Laundering
Drugs V: Laboratories
Trade Between Players
Mad Day: Vangelico Jewelry Heist (supports 5+ maps & multiplayer heist board)
Skateboard, Snowboard & Hoverboard
[ESX][QB] Train Heist
Drop and Dead Info.
Mad Clothes Pack #FAST1
ID Card: 3D View & Fake Cards
[BEST] Mad RC Cars (10+ car)
3D Tuning Tablet: Colorful Nitro Flames & Props, Glowing Brakes, Anti-Lag & more!
Custom Plates with Flipper
Jobs V: Legal Multiplayer Job Pack
Minigame Bundle (16 Minigame)
Drugs V: Effects
Drugs V: Goods Deal
[RAINMAD] Mountain Vault Heist

Nice release :love_you_gesture:

22 Likes

Nice script

2 Likes

successful project :heavy_heart_exclamation:

3 Likes

Really nice script

2 Likes

good work

2 Likes

nice release and artwork! :fire::fire:

3 Likes

Thanks a lot for all comments! :slight_smile:

1 Like

why was it flagged for?

1 Like

Jealous people :slight_smile:

1 Like

It has re-opened.

1 Like

great work :slight_smile:

2 Likes

nice scipt

2 Likes

I think you are the 2nd person after Rcore which released graffiti script :+1:

2 Likes

You should release graffiti script as its own, not with cars - and maybe cheaper ;/

2 Likes

Thanks a lot for all comments! :slight_smile:

1 Like

I have a question: do graffiti remain after a reboot or when parking a car in the garage? In addition, will the wall graffiti be saved if they are made in the shell of the house that the player enters through the script of the houses?

If everything is saved, then how is it done? Are you using MySQL or a NoSQL database?

1 Like

Decals remain after server restart. No matter the garage script, the stickers are loaded when all vehicles leave the garage. We are currently using json for saving, maybe we can return to the database later on.

1 Like

Thanks a lot.

Nice Script

1 Like