Skip to content

API de Desarrollador

Developer API

Como BUPA Chat provee provide 'chat', implementa la API de chat estándar de FiveM. Cualquier recurso que ya utilice chat:addMessage, chat:addSuggestion, etc., seguirá funcionando sin cambios. BUPA Chat expone cada una de estas tanto como un evento en red (chat:<name>) como una exportación (en formato minúsculas y Capitalizada).

La superficie de la API está registrada en utils/chat.lua:

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)

registerEvent configura el evento chat:<name>, además de exports(name) y exports(Name), por lo que los tres estilos de llamada siguientes son equivalentes.

Añadir un mensaje de chat

Del lado del cliente, envía un mensaje directamente al chat:

client
-- Evento estándar (funciona desde cualquier recurso)
TriggerEvent("chat:addMessage", {
    color = { 255, 0, 0 },
    multiline = true,
    args = { "Dispatch", "A robbery is in progress downtown." },
})

-- Forma de exportación
exports.chat:addMessage({ args = { "System", "Server restarting soon." } })

Estructura del mensaje:

Campo Tipo Descripción
args table Partes del mensaje. Con config.defaultAddTag, si hay más de un argumento y ningún tags, el primer argumento se convierte en una etiqueta y el resto es el cuerpo
color RGB Color del mensaje / primera etiqueta { r, g, b }
tags table[] Etiquetas explícitas { tag, bgColor, textColor }
multiline boolean Permite que el mensaje salte de línea

El clásico evento de cliente chatMessage también es manejado (name, color, message), por lo que la salida heredada de TriggerClientEvent('chatMessage', ...) seguirá apareciendo.

Sugerencias

Las sugerencias controlan el panel de autocompletado de comandos. Se pueden añadir de una en una o en masa, y eliminarse de la misma manera.

client
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()   -- borra todos los mensajes

BUPA Chat rellena automáticamente las sugerencias de cada comando registrado al que el jugador tenga acceso por ACE (command.<name>), tanto al cargar como cada vez que un recurso se inicia o se detiene. Solo necesitas chat:addSuggestion(s) para comandos que requieran texto de ayuda personalizado o parámetros.

Notificaciones

BUPA Chat expone un evento de notificación llamado <resource>:notify — es decir, bupa-chat:notify — respaldado por lib.notify de ox_lib. Funciona tanto desde el cliente como desde el servidor.

server
-- notificar a un jugador (servidor -> cliente): source, luego los argumentos de Notify
TriggerClientEvent("bupa-chat:notify", targetSrc, "MY_LOCALE_KEY", "success", 4000)
client
TriggerEvent("bupa-chat:notify", "MY_LOCALE_KEY", "error", 5000)

El gestor es Notify(text, notifyType, duration, ...). text pasa a través del envoltorio de localización t(), por lo que puedes pasar una clave de localización (con argumentos de formato) o texto plano. notifyType tiene por defecto inform y duration por defecto 4000 ms.

Ayudas de localización

Las siguientes variables globales están disponibles dentro del recurso (y para los archivos cargados en su contexto):

Símbolo Descripción
t(key, ...) Envoltorio ligero sobre locale() de ox_lib. Formatea con argumentos %s/%d y devuelve la propia clave si falta la traducción
GetLang() Devuelve el diccionario de localización aplanado actual
Notify(text, type, duration, ...) Dispara la notificación bupa-chat:notify

Cambio de idioma en tiempo de ejecución — bupa:changeLanguage

Dispara este evento de cliente para cambiar el idioma del chat de un jugador en vivo, sin reiniciar. Recarga la localización y la envía a la interfaz de React:

client
TriggerEvent("bupa:changeLanguage", "fr")

Consulta Localization para obtener más detalles.