Retro Graffiti
This script uses standard FiveM resource installation.
Quick Installation
Section titled โQuick Installationโ- Put required resources in your
resourcesfolder:rs_graffrs_nui
- Ensure start order in
server.cfg:
ensure ox_libensure oxmysqlensure rs_nuiensure rs_graff- Add required items and UV weapon entries (copy/paste below).
- Restart server.
Requirements
Section titled โRequirementsโ| Requirement | Description |
|---|---|
ox_lib | Required dependency |
oxmysql | Required when persistence enabled |
| Framework | QBCore / QBox / ESX / Standalone |
| Inventory | ox_inventory or framework inventory |
Optional Integrations
Section titled โOptional Integrationsโ- Discord webhook notifications (
Config.Discord.Enabled) screenshot-basicfor finalize screenshot capture
Add Inventory Items
Section titled โAdd Inventory Itemsโrs_graff needs these items:
spraycanraguvspraycan
QBCore (qb-core/shared/items.lua)
Section titled โQBCore (qb-core/shared/items.lua)โPaste these entries into qb-core/shared/items.lua:
spraycan = { name = 'spraycan', label = 'Spray Can', weight = 200, type = 'item', image = 'spraycan.png', unique = false, useable = true, shouldClose = true, description = 'Used for tagging walls.'},
rag = { name = 'rag', label = 'Rag', weight = 100, type = 'item', image = 'rag.png', unique = false, useable = true, shouldClose = true, description = 'Used for erasing graffiti.'},
uvspraycan = { name = 'uvspraycan', label = 'UV Spray Can', weight = 200, type = 'item', image = 'uvspraycan.png', unique = false, useable = true, shouldClose = true, description = 'Used for placing UV (blacklight) graffiti.'},ox_inventory (ox_inventory/data/items.lua)
Section titled โox_inventory (ox_inventory/data/items.lua)โPaste these entries into ox_inventory/data/items.lua:
['spraycan'] = { label = 'Spray Can', weight = 200, stack = true, close = true, consume = 0, client = { event = 'rs_graff:client:use_spraycan' }},
['rag'] = { label = 'Rag', weight = 100, stack = true, close = true, consume = 0, client = { event = 'rs_graff:client:use_rag' }},
['uvspraycan'] = { label = 'UV Spray Can', weight = 200, stack = true, close = true, consume = 0, client = { event = 'rs_graff:client:use_uvspraycan' }},Add UV Flashlight Weapon
Section titled โAdd UV Flashlight WeaponโThis resource is configured for weapon-based UV reveal:
Config.UVUseWeapon = trueConfig.UVLightWeapons = { "WEAPON_UVLIGHT" }Do not register old uvlight as a normal usable item when using weapon mode.
QBCore Weapon Setup
Section titled โQBCore Weapon SetupโAdd this weapon entry in qb-core/shared/weapons.lua:
[`weapon_uvlight`] = { name = 'weapon_uvlight', label = 'UV Flashlight', weapontype = 'Melee', ammotype = nil, damagereason = 'Melee killed / Whacked / Executed / Beat down / Murdered / Battered'},Also add this item-style weapon row in qb-core/shared/items.lua:
weapon_uvlight = { name = 'weapon_uvlight', label = 'UV Flashlight', weight = 900, type = 'weapon', ammotype = nil, image = 'weapon_uvlight', unique = true, useable = true, description = 'UV flashlight'},ox_inventory Weapon Setup
Section titled โox_inventory Weapon SetupโAdd this entry in ox_inventory/data/weapons.lua:
['WEAPON_UVLIGHT'] = { label = 'UV Flashlight', weight = 900, durability = 0.0, ammoname = nil},Inventory Images
Section titled โInventory ImagesโCopy images from rs_graff/INSTALL GUIDE/inventory images/ into your inventory image folder:
spraycan.pngrag.pngUVspraycan.pngUVlight.png
Quick Test
Section titled โQuick Testโ- Give:
spraycan,rag,uvspraycan, and UV flashlight weapon (WEAPON_UVLIGHT/weapon_uvlight). - Place and edit graffiti.
- Finalize and verify viewer PNG render.
- Use rag and verify clean removal.