Transform your streets into a living canvas
Vigi Spray is a premium, high-performance graffiti system. Players can spray paint on any wall, clean existing tags, and express their creativity in real-time. Fully integrated admin panel, Discord logging, multi-framework support, everything you need, nothing you don’t.
Showcase
UPDATE 1.0.1 : Transform your server with the new Stencil System!
Features
Core Gameplay
- Freehand spray painting on any flat surface in the world
- Real-time Sync - Watch other players tag live
- Cleaning system - Remove graffiti with a sponge item
- Realistic pressure mechanic - Shake the can to build pressure, spray until it runs out
- Color picker - Presets, custom hex color, and recent colors history
- Adjustable brush size - Scroll wheel to resize (thin → large)
- Full persistence - Tags survive server restarts (JSON + PNG storage)
- Auto-expiration - Tags auto-delete after configurable days
- 3D spatial audio - Nearby players hear shaking and cleaning sounds with distance attenuation
Performance
- Atlas Rendering System - All visible tags rendered via a single optimized texture atlas
- Configurable tag limits - Control max simultaneous renders
- Zero external dependencies - No xsound, no external libraries needed
Admin Panel
- Dashboard with total tags, active artists, today’s creations
- Interactive World Map - See all tags on a Leaflet map with clustering
- Search & Filter - Find tags by artist, ID, date
- Remote delete - Remove any tag from the panel
- Teleport - Jump to any tag location instantly
- Full preview - View tag images directly in the panel
Hidden link for visitors, to see
Log in or register now.
Hidden link for visitors, to see
Log in or register now.
Exports for Developers
Client-Side:-- Check if player is currently spraying/cleaning
exports['vigi_spray']:IsSprayMode() -- returns boolean
-- Open admin panel from your own admin menu
exports['vigi_spray']:OpenAdminPanel()
Server-Side:
-- Delete a tag programmatically (e.g. police script)
exports['vigi_spray']DeleteTag(tagId) -- returns boolean
-- Get tags near a position (e.g. investigation script)
exports['vigi_spray']:GetNearbyTags(vector3(x,y,z), radius) -- returns table
Configuration
Everything is configurable via config.lua:- Framework & Inventory (auto-detect or manual)
- Item names, prop models, bone attachments
- Spray distance, brush sizes, pressure system
- Cleaning speed, eraser size, range
- Audio hearing range
- Item consumption toggle
- Admin command name
- Discord webhook
- Tag expiration
- Render distance & max tags
- Debug mode
Full documentation included in readme.md.
“OP Gangs” Integration
The script is now fully compatible with OP Gangs. You can restrict spraying to turf zones and influence gang loyaltyCompatibility
- ESX & QBCore - Auto-detection included
- qs-inventory, ox_inventory, codem-inventory, qb-inventory - Auto-detection included
- Multilingual - * English, French, Spanish, German, Italian, Portuguese (PT & BR), Russian & Arabic included, easily extensible
- Discord Webhook - Automatic logging with embedded tag images
Purchase
Hidden link for visitors, to see
Log in or register now.
Hidden link for visitors, to see
Log in or register now.
Hidden link for visitors, to see
Log in or register now.
Hidden link for visitors, to see
Log in or register now.