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:
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:
-- 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.
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 mensajesBUPA 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.
-- notificar a un jugador (servidor -> cliente): source, luego los argumentos de Notify
TriggerClientEvent("bupa-chat:notify", targetSrc, "MY_LOCALE_KEY", "success", 4000)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:
TriggerEvent("bupa:changeLanguage", "fr")Consulta Localization para obtener más detalles.