Configuration · origen_graffiti
Configuration is split across two files:
config.lua— essential settings for server owners (language, admins, shop)config.advanced.lua— technical tuning (render, sync, rate limits, distances)
Only touch config.advanced.lua if you are measuring impact (TPS, latency, network load). Change one value at a time and test with 10+ players. If things get worse, revert.
config.lua
General
| Variable | Default | Description |
|---|---|---|
Config.Language | 'en' | Locale language — matches a file in locales/*.json |
Config.AdminGroups | {'admin','god','superadmin'} | Groups with access to admin panel and commands |
Config.AdminCommand | 'graffiti_admin' | Chat command to open the admin panel |
Shop
| Variable | Default | Description |
|---|---|---|
Config.Shop.enterRadius | 2.5 | Proximity radius in meters to open the shop |
Config.Shop.sprayItem | 'graffiti_spray' | Inventory item name for spray cans |
Config.Shop.eraserItem | 'graffiti_eraser' | Inventory item name for erasers |
Config.Shop.defaultDurability | 100 | Initial durability injected at purchase |
Config.Shop.durabilityUvThreshold | 0.3 | Accumulated UV distance (0–1) to consume 1 durability point |
Config.Shop.eraserDurabilityPerUse | 25 | Durability cost per full tag erase |
Shop locations — add as many vector4(x, y, z, heading) entries as needed:
lua
Config.Shop.locations = {
vector4(-1123.5, -1440.04, 5.19, 304.08),
}Default shop catalog:
| ID | Type | Label | Price | Color |
|---|---|---|---|---|
borrador | eraser | Eraser | $150 | — |
spray_custom | spray_custom | Free Color Spray | $350 | any |
spray_negro | spray_preset | Black Spray | $200 | #111111 |
spray_blanco | spray_preset | White Spray | $200 | #F0F0F0 |
spray_rojo | spray_preset | Red Spray | $220 | #CC2222 |
spray_azul | spray_preset | Blue Spray | $220 | #2255CC |
spray_amarillo | spray_preset | Yellow Spray | $220 | #DDC000 |
spray_verde | spray_preset | Green Spray | $220 | #228822 |
spray_naranja | spray_preset | Orange Spray | $220 | #CC6600 |
spray_violeta | spray_preset | Violet Spray | $220 | #8822CC |
spray_rosa | spray_preset | Pink Spray | $220 | #CC3388 |
spray_celeste | spray_preset | Light Blue Spray | $220 | #33AADD |
Auto Purge
Optionally delete old graffiti on resource start:
lua
Config.AutoPurge = {
enabled = false,
days = 30, -- delete graffiti older than this many days
}Zone Graffiti Limit
Optionally cap how many graffitis can exist within a radius before new sessions are blocked:
lua
Config.ZoneGraffitiLimit = {
enabled = false,
radius = 60.0, -- meters
maxTags = 8,
}config.advanced.lua
Painting
| Variable | Default | Description |
|---|---|---|
Config.PaintMaxDistance | 8.0 | Max distance in meters to paint on a canvas |
Config.BrushRadiusMin | 0.002 | Minimum brush size (UV) |
Config.BrushRadiusMax | 0.08 | Maximum brush size (UV) |
Config.BrushRadiusDefault | 0.012 | Default brush size on session start |
Config.SprayDistMin | 0.4 | Min camera distance for spray scaling |
Config.SprayDistMax | 7.0 | Max camera distance for spray scaling |
Config.SprayRadiusMulClose | 0.78 | Radius multiplier when camera is close (tighter spray) |
Config.SprayRadiusMulFar | 1.45 | Radius multiplier when camera is far (wider spray) |
Config.SprayIntensityMulClose | 1.15 | Intensity multiplier close |
Config.SprayIntensityMulFar | 0.4 | Intensity multiplier far |
Strokes & Rate Limiting
| Variable | Default | Description |
|---|---|---|
Config.MaxStrokesPerTag | 4000 | Max strokes per tag (payload + DB load) |
Config.MinStrokesPerSave | 700 | Saves with fewer strokes than this are rejected |
Config.CollaborationMaxStrokesPerSecond | 90 | Server-side rate limit per player (1s window) |
Collaboration & Streaming
| Variable | Default | Description |
|---|---|---|
Config.CollaborationSessionTimeout | 1800 | Session auto-close after this many seconds of inactivity |
Config.CollaborationJoinDistance | 8.0 | Max distance in meters to join an active session |
Config.SpectatorDistance | 28.0 | Radius to see live strokes without joining |
Config.SyncLoadRadius | 200.0 | Server search radius for tags per player |
Config.SyncMaxTagsPerQuery | 180 | Max tags returned per sync query |
Config.StreamDistance | 70.0 | Distance in meters to create/destroy a DUI for each graffiti |
Config.ServerCellCheckIntervalMs | 3000 | Interval in ms for zone-change detection thread |
Visual
| Variable | Default | Description |
|---|---|---|
Config.DuiResolution | 256 | DUI canvas resolution in pixels — must be power of 2 (256, 512, 1024) |
Config.TagAlpha | 190 | Rendered canvas opacity (0–255) |
Config.TagTimeBrightnessEnabled | true | Dynamic brightness based on in-game time |
Config.TagNightStartHour | 21 | Night mode start hour |
Config.TagNightEndHour | 6 | Night mode end hour |
Config.TagDayBrightness | 1.00 | Brightness multiplier during day (1.0 = original) |
Config.TagNightBrightness | 0.40 | Brightness multiplier during night |
Config.EraseTagDuration | 15000 | Hold duration in ms to erase a tag |
Config.CanvasOffsetStep | 0.005 | Canvas offset adjustment step in meters per keypress |
Config.CanvasOffsetMin | -0.30 | Max inward offset (30 cm into wall) |
Config.CanvasOffsetMax | 0.50 | Max outward offset (50 cm from wall) |