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:
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:
-- 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.
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 messagesBUPA 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.
-- notify one player (server -> client): source, then Notify args
TriggerClientEvent("bupa-chat:notify", targetSrc, "MY_LOCALE_KEY", "success", 4000)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:
TriggerEvent("bupa:changeLanguage", "fr")Vedi Localization per i dettagli.