Oxide Chat

Complete replacement for the FiveM default chat, built for roleplay servers.

Oxide Chat is a complete replacement for the FiveM default chat, built for roleplay servers. It drops in over the stock chat resource — every other script that posts messages or registers command suggestions keeps working through a full compatibility layer — and replaces it with a modern, deeply customizable chat that players and admins configure in-game.

The core of the resource is roleplay-aware messaging: proximity commands (/me, /do, /whisper, /shout, /looc) with per-command ranges and optional line-of-sight, global and local OOC, private messages with /reply, and job radios for police, EMS, and mechanics. On top of that sits a data-driven channel system — any number of custom slash-command channels with their own styling, audience scope, job/admin restrictions, minimum grade, duty requirement, and cooldown — plus a persistent friends and block list, @mention autocomplete, switchable category tabs, inline image and GIF embeds, and rotating automatic announcements.

Players make the chat their own with 10 visual style presets and per-player settings for position, size, font, timestamps, colors, and per-type visibility. Server owners manage everything else through a live database-backed settings editor (/chat settings) — after the first start, configuration is edited in-game with no file edits or restarts.

Key Features

  • Drop-in Replacement - provide 'chat' with a full compatibility layer, so messages and command suggestions from every other resource keep working
  • Proximity Roleplay Commands - /me, /do, /whisper, /shout, /looc with configurable per-command ranges and optional line-of-sight checks
  • OOC, PMs & Job Radios - Global and local OOC, private messages (/msg, /reply), and built-in radios for police, EMS, and mechanics
  • Custom Chat Channels - Any number of slash-command channels with their own aliases, styling, scope, job/admin restriction, minimum grade, on-duty requirement, and cooldown — editable live in-game
  • Friends & Block List - Persistent per-character friends with consent-based requests, online presence notifications, and two-way PM blocking
  • @Mentions - Autocomplete of online players with Discord-style highlighting
  • Category Tabs - Switchable tabs above the message list (All / Local / Global / Job / PMs by default), fully configurable
  • Inline Images & GIFs - Whitelisted image links embed in any message type, plus a Giphy-powered GIF picker searched server-side so the API key never reaches players
  • Automatic Announcements - A rotating broadcast list on a configurable timer, sequential or random, empty-server aware
  • 10 Style Presets - Bubbles, Discord, Timeline, Masonry, Compact, Cards, Float, Panel, Retro, Glass — plus per-player customization via /chat customize
  • Live Server Settings - Database-backed configuration via /chat settings, no file edits or restarts after setup
  • Server-Authoritative - Message sanitization, per-type rate limiting, and server-side validation of channel access, image links, and permissions
  • Framework-Agnostic - Works with QBCore, ESX, QBX, or custom frameworks through o-link, and is localizable via locales/*.lua

Quick Start

-- Messages work exactly like default chat
TriggerClientEvent('chat:addMessage', source, {
    args = { 'System', 'Welcome to the server!' },
    color = { 255, 255, 255 }
})

-- Oxide Chat exports also available
exports['oxide-chat']:addMessage({
    args = { 'Bank', 'You deposited $1,000' },
    color = '#00FF00'
})

Requirements

DependencyRequiredPurpose
o-linkYesFramework abstraction for character identity and names, jobs and duty, admin checks, notifications, and logging
ox_libYesLocale and shared runtime helpers
oxmysqlYesDatabase access for friends, blocks, and live settings

Database

TablePurpose
chat_friendsPer-character friends list and pending friend requests
chat_blocksPer-character block list (blocks stop private messages in both directions)
oxide_settingsShared cross-resource settings store backing the live /chat settings editor

All tables are created automatically on first server start; the schema also ships in sql/install.sql and sql/migrations/.

Documentation