Skip to content

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 :

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 :

client
-- É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.

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()   -- effacer tous les messages

BUPA 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.

server
-- notifier un joueur (serveur -> client) : source, puis les arguments de Notify
TriggerClientEvent("bupa-chat:notify", targetSrc, "MY_LOCALE_KEY", "success", 4000)
client
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 :

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

Voir Localization pour plus de détails.