Skip to content

Developer API

Developer API

Poiché BUPA Chat fornisce provide 'chat', implementa la standard FiveM chat API. Qualsiasi risorsa che utilizza già chat:addMessage, chat:addSuggestion ecc. continuerà a funzionare senza modifiche. BUPA Chat espone ciascuno di questi sia come evento di rete (chat:<name>) che come export (in formato lowercase e Capitalized).

La superficie dell'API è registrata in 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 collega l'evento chat:<name>, oltre a exports(name) e exports(Name), quindi tutti e tre gli stili di chiamata sottostanti sono equivalenti.

Adding a chat message

Lato client, invia un messaggio direttamente in chat:

client
-- Standard event (works from any resource)
TriggerEvent("chat:addMessage", {
    color = { 255, 0, 0 },
    multiline = true,
    args = { "Dispatch", "A robbery is in progress downtown." },
})

-- Export form
exports.chat:addMessage({ args = { "System", "Server restarting soon." } })

Struttura del messaggio:

Field Type Description
args table Parti del messaggio. Con config.defaultAddTag, se c'è più di un argomento e nessun tags, il primo argomento diventa un tag e il resto costituisce il corpo
color RGB Colore del messaggio / primo tag { r, g, b }
tags table[] Tag espliciti { tag, bgColor, textColor }
multiline boolean Consente al messaggio di andare a capo su più righe

Anche il classico evento client chatMessage viene gestito (name, color, message), quindi l'output legacy di TriggerClientEvent('chatMessage', ...) continuerà ad apparire.

Suggestions

I suggerimenti alimentano il pannello di autocompletamento dei comandi. Possono essere aggiunti uno alla volta o in blocco, e rimossi allo stesso modo.

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()   -- clear all messages

BUPA Chat popola automaticamente i suggerimenti da ogni comando registrato a cui il giocatore ha accesso tramite ACE (command.<name>), sia al caricamento che ogni volta che una risorsa si avvia o si ferma. Devi usare chat:addSuggestion(s) solo per i comandi che richiedono testo di aiuto o parametri personalizzati.

Notifications

BUPA Chat espone un evento di notifica denominato <resource>:notify — ovvero bupa-chat:notify — basato su lib.notify di ox_lib. Funziona sia da client che da server.

server
-- notify one player (server -> client): source, then Notify args
TriggerClientEvent("bupa-chat:notify", targetSrc, "MY_LOCALE_KEY", "success", 4000)
client
TriggerEvent("bupa-chat:notify", "MY_LOCALE_KEY", "error", 5000)

L'handler è Notify(text, notifyType, duration, ...). text viene elaborato tramite il wrapper di localizzazione t(), quindi puoi passare una chiave di localizzazione (con argomenti di formattazione) o del testo semplice. notifyType predefinito è inform e duration è 4000 ms.

Localization helpers

Le seguenti variabili globali sono disponibili all'interno della risorsa (e per i file caricati nel suo contesto):

Symbol Description
t(key, ...) Sottile wrapper su locale() di ox_lib. Esegue la formattazione con argomenti %s/%d e restituisce la chiave stessa se la traduzione manca
GetLang() Restituisce il dizionario della lingua corrente appiattito
Notify(text, type, duration, ...) Attiva la notifica bupa-chat:notify

Runtime language switch — bupa:changeLanguage

Attiva questo evento client per cambiare la lingua della chat di un giocatore in tempo reale, senza riavviare. Ricarica la lingua e la invia all'interfaccia utente in React:

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

Vedi Localization per i dettagli.