Developer API
API Développeur
Puisque BUPA Chat provide 'chat', il implémente l'API de chat standard FiveM. Toute ressource utilisant déjà chat:addMessage, chat:addSuggestion etc. continuera de fonctionner sans modification. BUPA Chat expose chacune de ces fonctions à la fois comme un événement réseau (chat:<name>) et comme un export (sous forme en minuscules et Capitalisée).
La surface de l'API est enregistrée dans 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 configure l'événement chat:<name>, ainsi que exports(name) et exports(Name), de sorte que les trois styles d'appel ci-dessous soient équivalents.
Ajouter un message dans le chat
Côté client, envoyez un message directement dans le chat :
-- Événement standard (fonctionne depuis n'importe quelle ressource)
TriggerEvent("chat:addMessage", {
color = { 255, 0, 0 },
multiline = true,
args = { "Dispatch", "A robbery is in progress downtown." },
})
-- Format d'export
exports.chat:addMessage({ args = { "System", "Server restarting soon." } })Structure du message :
| Champ | Type | Description |
|---|---|---|
args |
table | Parties du message. Avec config.defaultAddTag, s'il y a plus d'un argument et aucun tags, le premier argument devient un tag et le reste constitue le corps du message |
color |
RGB | Couleur du message / premier tag { r, g, b } |
tags |
table[] | Tags explicites { tag, bgColor, textColor } |
multiline |
boolean | Permet au message de s'étendre sur plusieurs lignes |
L'événement client classique chatMessage est également pris en charge (name, color, message), de sorte que les anciens outputs TriggerClientEvent('chatMessage', ...) s'affichent toujours.
Suggestions
Les suggestions alimentent le panneau de saisie semi-automatique des commandes. Elles peuvent être ajoutées une par une ou en masse, et supprimées de la même manière.
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() -- effacer tous les messagesBUPA Chat remplit automatiquement les suggestions à partir de chaque commande enregistrée à laquelle le joueur a accès via ACE (command.<name>), à la fois au chargement et chaque fois qu'une ressource démarre ou s'arrête. Vous avez seulement besoin de chat:addSuggestion(s) pour les commandes qui nécessitent un texte d'aide ou des paramètres personnalisés.
Notifications
BUPA Chat expose un événement de notification nommé <resource>:notify — c'est-à-dire bupa-chat:notify — propulsé par lib.notify d'ox_lib. Il fonctionne à la fois côté client et côté serveur.
-- notifier un joueur (serveur -> client) : source, puis les arguments de Notify
TriggerClientEvent("bupa-chat:notify", targetSrc, "MY_LOCALE_KEY", "success", 4000)TriggerEvent("bupa-chat:notify", "MY_LOCALE_KEY", "error", 5000)Le gestionnaire est Notify(text, notifyType, duration, ...). text passe par le wrapper de localisation t(), vous pouvez donc passer une clé de langue (avec des arguments de formatage) ou du texte brut. notifyType est défini par défaut sur inform et duration sur 4000 ms.
Assistants de localisation
Les variables globales suivantes sont disponibles dans la ressource (et pour les fichiers chargés dans son contexte) :
| Symbole | Description |
|---|---|
t(key, ...) |
Léger wrapper autour de locale() d'ox_lib. Formate avec les arguments %s/%d et renvoie la clé elle-même si la traduction est manquante |
GetLang() |
Renvoie le dictionnaire de langue aplati actuel |
Notify(text, type, duration, ...) |
Déclenche la notification bupa-chat:notify |
Changement de langue à chaud — bupa:changeLanguage
Déclenchez cet événement client pour changer la langue du chat d'un joueur en direct, sans redémarrage. Il recharge la langue et l'envoie à l'interface React :
TriggerEvent("bupa:changeLanguage", "fr")Voir Localization pour plus de détails.