Skip to content

Chat ​

Substitui o chat padrão do FiveM. Tem abas por grupo, fala local, mensagem anônima, /me, post-it no mapa, sugestão de comandos, emojis e filtro de palavras. O servidor decide quem recebe cada mensagem, o nome que aparece, o tamanho do texto e o anti-spam.

Precisa de: ox_lib, krs_helper

Instalação ​

  1. Apague a pasta resources/[cfx-default]/[gameplay]/chat. Duas pastas com o nome chat dão conflito.
  2. Copie a pasta chat para resources/.
  3. No server.cfg, deixe uma linha só, depois do krs_helper:
cfg
ensure chat

O server.cfg padrão do FiveM já traz ensure chat. Mova essa linha em vez de repetir. Veja a ordem de instalação.

O script não cria tabela no banco.

Como usar ​

TeclaO que faz
TAbre o chat. Cada jogador troca em Configurações > Teclas > FiveM
EscFecha
EnterEnvia
Setas para cima e para baixoMensagens que você já mandou
TabCompleta o comando sugerido

O chat não abre com o menu de pausa aberto, com o telefone aberto ou durante a recarga da arma. No krs, também não abre antes de o personagem carregar nem com os estados de BlockedStates.

AbaO que faz
GERALMostra todas as mensagens. O que você escreve aqui sai como OOC
OOCFala local. Chega a quem está até LocalDistance metros, na mesma dimensão
AçãoMensagem anônima para o servidor inteiro. O autor real vai só para o log
ImportanteAvisos enviados por scripts do servidor. Só leitura
Abas de grupoAparecem só para quem está em serviço no grupo

O sino liga ou desliga a abertura do chat quando chega mensagem nova. O rosto abre os emojis.

/me ​

/me confere o pulso da pessoa caída

Mostra o texto em cima da cabeça para quem está até Me.Distance metros. Dura de 5 a 15 segundos, conforme o tamanho do texto. O limite é de 100 letras. /me sem texto abre uma janela para escolher humor e cor do ícone.

Post-it ​

  1. Use o item do post-it no inventário.
  2. Mire com a câmera e aperte E. Backspace cancela.
  3. Escreva o recado, até 100 letras, e escolha de quantos metros ele aparece.

O item só é gasto ao colar. Para apagar, chegue a até 2 m e aperte G. Só o dono do post-it ou o grupo de Postit.Admin apagam. Os post-its somem quando o servidor reinicia.

FrameworkItem
krsJá funciona, pelo inventory
QBCoreFunciona ao criar o item (abaixo)
Creative, vRPO item só funciona se o seu inventário chamar o uso do krs_helper. Veja a página do krs_helper
Sem frameworkNão funciona, porque não há inventário

Em QBCore, cole em qb-core/shared/items.lua:

lua
postit = { name = 'postit', label = 'Post-it', weight = 10, type = 'item', image = 'postit.png', unique = false, useable = true, shouldClose = true, description = 'Use para colar um recado.' },

Abas de grupo ​

Channels lista os grupos com aba. A aba aparece, manda e recebe só para quem está em serviço.

FrameworkNome na listaEm serviço
krs, CreativeGrupo do framework, como LSPDServiço do framework
QBCoreJob ou gangue, como police. Admin é a permissão adminJob com serviço ligado. Gangue e Admin contam sempre
vRPGrupo do vRPBasta ter o grupo
Sem frameworkPermissão no server.cfgBasta ter a permissão

Os nomes que vêm na config são de exemplo para o krs. Em QBCore, troque pelos seus:

lua
Config.Channels = { "Admin","police","ambulance" }

Sem framework, coloque o jogador no grupo pelo server.cfg:

cfg
add_principal identifier.license:LICENSE_DO_JOGADOR group.police
add_ace group.police group.police allow

Permissão ​

O grupo Admin apaga post-it de qualquer um e vê a aba de staff quando em serviço.

FrameworkComo liberar
krs, CreativeGrupo Admin do framework
vRPGrupos god, admin ou mod
QBCore, sem frameworkAs linhas abaixo no server.cfg
cfg
add_principal identifier.license:SUA_LICENSE group.admin
add_ace group.admin admin allow
add_ace group.admin group.Admin allow

Log no Discord ​

As mensagens da aba Ação vão para o log com o número do jogador, o identificador do personagem e o texto. Para enviar ao Discord:

cfg
set krs_helper_webhook "URL_DO_SEU_WEBHOOK"

Use set, nunca setr. Assim o link fica só no servidor.

Configuração ​

Tudo fica em config.lua. Só precisa ter o que você mudou. Os textos ficam em locales/*.json, inclusive o nome no topo do chat, ui.brand.

OpçãoPadrãoO que muda
Key"T"Tecla de abrir
MaxLength200Tamanho máximo da mensagem, em letras
FloodMessages = 4, Seconds = 5Limite de mensagens por jogador. Chat e /me contam juntos
LocalDistance10.0Alcance da aba OOC, em metros
Anonymoustruefalse desliga a aba Ação
ChannelsAdmin, LSPD, BCSO, SAPR, Paramedico, PoliciaAbas de grupo
ColorsVazio. O config.lua traz cores de exemploCor de cada aba, em "#RRGGBB". A chave é o nome da aba
BlockedWordsVazio. O config.lua traz uma listaPalavras recusadas no chat, no /me e no post-it
BlockedStatesHandcuff, CarryEstados que impedem abrir o chat. Só têm efeito no krs
Me.Enabledtruefalse desliga o /me
Me.Distance5.0Até quantos metros os outros veem
Postit.Item"postit"Nome do item
Postit.Admin"Admin"Grupo que apaga post-it de qualquer um
Postit.MinDistance3Menor alcance que o jogador pode escolher
Postit.MaxDistance15Maior alcance que o jogador pode escolher
Postit.HiddenStatesCreation, SpawningEstados que escondem os post-its. Só têm efeito no krs
SuggestVazio. O config.lua traz listas de exemploComandos sugeridos ao digitar /

A lista de BlockedWords que vem no config.lua barra palavras comuns e recusa frases como "carro preto". Revise antes de abrir o servidor. A palavra é bloqueada em qualquer parte da frase quando termina ali. Lista vazia desliga o filtro.

Suggest só muda a lista de sugestões. Quem pode usar cada comando é o script dono dele.

CampoFormato
HideComandos que nunca aparecem: nome exato, "@resource" ou padrão Lua iniciado por ^, como "^keys%-"
GroupsComando ou "@resource" que só aparece para quem tem um dos grupos. "Admin-2" é o grupo Admin, cargo 2 ou mais alto
Helpnome = { "descrição", { "parametro", "opcional?" } }. Aceita texto ou chave de locales/*.json. ? no fim marca opcional

Para programadores ​

lua
-- servidor: mensagem para um jogador, ou -1 para todos
TriggerClientEvent("chat:ClientMessage", source, "Autor", "Texto", "OOC", Html, Highlight)

-- servidor: formato do chat padrão do FiveM. Sempre texto, na aba OOC
TriggerClientEvent("chat:addMessage", source, { args = { "Autor", "Texto" } })

-- servidor: post-it na dimensão 0 por N segundos. Devolve o id ou false
local id = exports.chat:Postit(CharId, vector3(x, y, z), "texto", 30)

-- servidor: abre a mira do post-it. Admin = true só copia a coordenada
TriggerClientEvent("chat:postit_new", source, Admin)

Html = true aceita só <b>, <i>, <u>, <small>, <br>, <strong>, <yellow>, <green>, <red> e <blue>, sem atributos. Use apenas com texto do seu script. Highlight = true destaca a mensagem. A aba Importante só recebe mensagem de script do servidor.

Eventos de cliente no formato do chat padrão: chat:addSuggestion, chat:addSuggestions e chat:removeSuggestion.

Problemas comuns ​

MensagemCausa
Você está mandando mensagens rápido demais. Aguarde alguns segundos.O jogador passou do limite de Flood
Essa mensagem tem uma palavra proibida.O texto bate com BlockedWords
Você não tem um post-it.O item não estava no inventário ao colar
item usável não disponível neste frameworkO framework não tem uso de item pelo krs_helper. O post-it não funciona, o resto do chat sim