NullSect
Systems nominal

Scripts / systems · v1.8.0

Chat

A small chat for voice-RP servers: me, do and status above the character, no IC text chat.

  • Qbox
  • QBCore
  • ESX
Coming soon

Features

  1. 01

    Built for voice RP

    me, do and a persistent status shown in chat and above the character. Plain text that is not a command is ignored.

  2. 02

    Channels

    ooc, local OOC, private messages, twt, ad and 911 for emergency jobs only.

  3. 03

    Two themes

    Classic lines or modern bubbles, with a player settings panel for size, position, background and fade.

  4. 04

    Drop-in replacement

    Compatible with the default chat: chat:addMessage, exports, suggestions and templates.

  5. 05

    Server-authoritative

    Distance checks, cooldowns, flood protection and text sanitising. No database, no idle loops.

Requirements

Frameworks
Qbox, QBCore, ESX
Requires
OneSync
Works with
Default chat API (chat:addMessage, exports.chat)
Version
1.8.0

Recent changes

Read the docs →

1.8.0

Added

  • Input lock: while LocalPlayer.state.nsInputLock holds the name of a running resource, the open keys (Enter / T) do not open the chat. ns-animpos sets it while its editor runs, so confirming a pose with Enter no longer opens the chat. A lock left by a stopped resource is ignored.

1.7.0

Added

  • Default chat templates: chat:addTemplate / exports.chat:addTemplate store a template (up to 64, 1000 characters each) and chat:addMessage { templateId = ..., args = { ... } } uses it. Built in: default, defaultAlt, print. HTML is shown as plain text, like every external message. Before, templateId was ignored and addTemplate did nothing.

Development

  • Offline tests (lua5.4 tests/run_tests.lua): command router, delivery range and routing bucket, validation, cooldown, flood, PM / reply, 911 routing, status, typing state, default chat exports, templates. Not shipped.

1.6.0

Added

  • Typing indicator: an animated "..." bubble above the head while a player has the chat open (Overhead.Typing, Overhead.TypingTimeout). Players walking into range see it too.

Related

Cart

Your cart is empty.