Skip to content

Retro Graffiti

This script uses standard FiveM resource installation.

  1. Put required resources in your resources folder:
    • rs_graff
    • rs_nui
  2. Ensure start order in server.cfg:
ensure ox_lib
ensure oxmysql
ensure rs_nui
ensure rs_graff
  1. Add required items and UV weapon entries (copy/paste below).
  2. Restart server.
RequirementDescription
ox_libRequired dependency
oxmysqlRequired when persistence enabled
FrameworkQBCore / QBox / ESX / Standalone
Inventoryox_inventory or framework inventory
  • Discord webhook notifications (Config.Discord.Enabled)
  • screenshot-basic for finalize screenshot capture

rs_graff needs these items:

  • spraycan
  • rag
  • uvspraycan

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.'
},

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' }
},

This resource is configured for weapon-based UV reveal:

Config.UVUseWeapon = true
Config.UVLightWeapons = { "WEAPON_UVLIGHT" }

Do not register old uvlight as a normal usable item when using weapon mode.

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'
},

Add this entry in ox_inventory/data/weapons.lua:

['WEAPON_UVLIGHT'] = {
label = 'UV Flashlight',
weight = 900,
durability = 0.0,
ammoname = nil
},

Copy images from rs_graff/INSTALL GUIDE/inventory images/ into your inventory image folder:

  • spraycan.png
  • rag.png
  • UVspraycan.png
  • UVlight.png
  1. Give: spraycan, rag, uvspraycan, and UV flashlight weapon (WEAPON_UVLIGHT / weapon_uvlight).
  2. Place and edit graffiti.
  3. Finalize and verify viewer PNG render.
  4. Use rag and verify clean removal.