S4_Chat - Modern FiveM Chat Resource
A fully custom chat resource for FiveM. Drops in as a standalone replacement for the default chat — works with ESX, QBCore, or no framework at all.
Features:
- Proximity & global routing —
/ooc,/me,/doare range-based (20 m by default); only nearby players see them - 3D floating emotes —
/meand/dodisplay floating text above the player’s head, visible within 20 m for 8 seconds, fading out gracefully - Anti-spam protection — burst-based throttle: 5 messages per second max, 5 second cooldown after hitting the limit
- Automatic announcements — 8 configurable messages sent on a 15-minute cycle, random or sequential order
- Emoji conversion —
:code:shortcodes are automatically converted to Unicode emoji - Player ID chips — optional server ID shown next to player names in messages
- Export API — any other script can send messages or register commands via
exports['s4_chat'] - Autocomplete suggestions — all commands appear in the input hint with descriptions
- Fully configurable — range, duration, anti-spam thresholds, UI fade timeout, commands, and announcements all in
config.lua - Lightweight — ~0.00–0.01ms idle, no impact on server performance
Export examples:
-- Send a message to one player (server-side)
exports['s4_chat']:SendMessage(source, {
badge = 'INFO',
message = 'Hello!',
color = '#4ec98f',
icon = 'bx-bell',
})
-- Register a command from another script (server-side)
exports['s4_chat']:RegisterCommand({
cmd = 'radio',
badge = 'RADIO',
type = 'global',
format = 'name',
color = '#46c5ff',
icon = 'bx-radio',
help = 'Send a radio message.',
})
Download: Download - Tebex
Documentation: S4Development
Screenshot:
| Code is accessible | No (escrow-protected) |
| Subscription-based | No |
| Lines (approximately) | ~1,270 |
| Requirements | Standalone (ESX / QBCore / no framework) |
| Support | Yes |

