API de Desenvolvedor
Developer API
Como o BUPA Chat provide 'chat', ele implementa a API de chat padrão do FiveM. Qualquer recurso que já utilize chat:addMessage, chat:addSuggestion etc. continua funcionando sem alterações. O BUPA Chat expõe cada um deles tanto como um evento de rede (chat:<name>) quanto como um export (em formato lowercase e Capitalized).
A superfície da API é registrada em utils/chat.lua:
registerEvent("addMessage", chatUtility.addMessage)
registerEvent("addSuggestion", chatUtility.addSuggestion)
registerEvent("addSuggestions", chatUtility.addSuggestions)
registerEvent("removeSuggestion", chatUtility.removeSuggestion)
registerEvent("removeSuggestions", chatUtility.removeSuggestions)
registerEvent("clear", chatUtility.clearMessages)O registerEvent configura o evento chat:<name>, além de exports(name) e exports(Name), portanto, os três estilos de chamada abaixo são equivalentes.
Adding a chat message
No lado do cliente, envie uma mensagem diretamente para o chat:
-- Evento padrão (funciona a partir de qualquer recurso)
TriggerEvent("chat:addMessage", {
color = { 255, 0, 0 },
multiline = true,
args = { "Dispatch", "A robbery is in progress downtown." },
})
-- Forma de export
exports.chat:addMessage({ args = { "System", "Server restarting soon." } })Formato da mensagem:
| Field | Type | Description |
|---|---|---|
args |
table | Partes da mensagem. Com config.defaultAddTag, se houver mais de um argumento e nenhum tags, o primeiro argumento vira uma tag e o restante é o corpo |
color |
RGB | Cor da mensagem / primeira tag { r, g, b } |
tags |
table[] | Tags explícitas { tag, bgColor, textColor } |
multiline |
boolean | Permitir que a mensagem quebre em várias linhas |
O evento de cliente clássico chatMessage também é tratado (name, color, message), de modo que a saída legada de TriggerClientEvent('chatMessage', ...) ainda apareça.
Suggestions
As sugestões alimentam o painel de preenchimento automático de comandos. Elas podem ser adicionadas uma a uma ou em lote, e removidas da mesma forma.
TriggerEvent("chat:addSuggestion", "/revive", "Revive a nearby player", {
{ name = "id", help = "Server ID of the target" },
})
TriggerEvent("chat:addSuggestions", {
{ name = "/heal", help = "Heal yourself" },
{ name = "/car", help = "Spawn a vehicle", params = {
{ name = "model", help = "Vehicle model", optional = true },
} },
})
TriggerEvent("chat:removeSuggestion", "/car")
exports.chat:clear() -- limpa todas as mensagensO BUPA Chat preenche automaticamente as sugestões de cada comando registrado que o jogador possui acesso ACE (command.<name>), tanto ao carregar quanto sempre que um recurso iniciar/parar. Você só precisa de chat:addSuggestion(s) para comandos que necessitam de texto de ajuda personalizado ou parâmetros.
Notifications
O BUPA Chat expõe um evento de notificação chamado <resource>:notify — ou seja, bupa-chat:notify — alimentado pelo lib.notify do ox_lib. Ele funciona tanto no cliente quanto no servidor.
-- notifica um jogador (servidor -> cliente): source, seguido pelos argumentos de Notify
TriggerClientEvent("bupa-chat:notify", targetSrc, "MY_LOCALE_KEY", "success", 4000)TriggerEvent("bupa-chat:notify", "MY_LOCALE_KEY", "error", 5000)O manipulador é Notify(text, notifyType, duration, ...). O text é processado pelo wrapper de localização t(), então você pode passar uma chave de localidade (com argumentos de formatação) ou texto simples. O notifyType tem como padrão inform e o duration, 4000 ms.
Localization helpers
As seguintes variáveis globais estão disponíveis dentro do recurso (e nos arquivos carregados no contexto dele):
| Symbol | Description |
|---|---|
t(key, ...) |
Um wrapper leve sobre locale() do ox_lib. Formata com argumentos %s/%d e retorna a própria chave caso a tradução esteja ausente |
GetLang() |
Retorna o dicionário de localidade achatado atual |
Notify(text, type, duration, ...) |
Dispara a notificação bupa-chat:notify |
Runtime language switch — bupa:changeLanguage
Dispare este evento de cliente para alterar o idioma do chat de um jogador em tempo real, sem precisar reiniciar. Ele recarrega a localidade e a envia para a interface React:
TriggerEvent("bupa:changeLanguage", "fr")Consulte Localization para obter detalhes.