I see two chat UIs or the default chat still opens
0r-chat uses provide 'chat'. Remove or stop the stock chat resource from server.cfg so only 0r-chat runs.
Restart the server (or ensure order) after the change.
Player names look wrong or everyone is Anonymous
- Make sure ESX, QBCore, or Qbox starts before
0r-chat— names and jobs come from LTBridge. - If only masked players are Anonymous, that is
maskDetectionworking as intended. Set it tofalsein Configuration to show real names while masked.
Announcements do nothing / permission denied
/announcement (or your renamed command) needs framework admin or ACE command.<commandName>.
Example for the default name:
add_ace group.admin command.announcement allow
/img fails or says the link is invalid
Use a full HTTPS URL that points at an image (common extensions like .png, .jpg, .webp). HTTP or non-image links are rejected.
Also wait out imageCooldown if you just posted one.
/song fails or will not change track
Pass a valid YouTube URL. Resolution uses YouTube oEmbed — bad or blocked links show an error.
Respect songCooldown between track changes. Disable the feature with enableSong = false if you do not want it.
Proximity messages missing after teleporting closer
With useServerProximity, only players currently in range receive messages. Enable proximityCatchUp so players who enter the sender’s range shortly after still get active nearby lines.
If catch-up is off or proximity is client-only, late joiners will not see older bubbles.
Chat will not open from another resource / hooks ignored
registerChatHook only runs when enableHooks = true. If hooks are disabled, registerChatHook returns false and open is never blocked.
A hook must return false (exactly) to block; other return values allow open.
Console is noisy or chat fills with prints
Make sure to keep debug = 1 in config/main.lua for production.
Keep systemPrints = false unless you deliberately want server prints mirrored into chat.
Tags never show for jobs or admins
Confirm tags.enabled and the matching job / ace subsection are enabled. Job names must match your framework job ids. ACE tags need the principal listed in tags.ace.data (for example chat.admin) actually assigned to the player.
How do I add another language?
Copy locales/en.json, translate it, and set locale to the new file key. See Configuration#locales.