Developer API
Developer API
Deoarece BUPA Chat provide 'chat', acesta implementează API-ul standard FiveM chat. Orice resursă care folosește deja chat:addMessage, chat:addSuggestion etc. va continua să funcționeze fără modificări. BUPA Chat expune fiecare dintre acestea atât ca eveniment în rețea (chat:<name>), cât și ca export (în formă lowercase și Capitalized).
Suprafața API este înregistrată în 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 configurează evenimentul chat:<name>, plus exports(name) și exports(Name), astfel încât toate cele trei stiluri de apel de mai jos sunt echivalente.
Adding a chat message
Pe partea de client, trimite un mesaj direct în 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." } })Structura mesajului:
| Field | Type | Description |
|---|---|---|
args |
table | Părțile mesajului. Cu config.defaultAddTag, dacă există mai mult de un argument și niciun tags, primul argument devine un tag, iar restul reprezintă conținutul |
color |
RGB | Culoarea mesajului / primului tag { r, g, b } |
tags |
table[] | Tag-uri explicite { tag, bgColor, textColor } |
multiline |
boolean | Permite mesajului să se întindă pe mai multe rânduri |
Evenimentul clasic de client chatMessage este de asemenea gestionat (name, color, message), astfel încât output-ul moștenit TriggerClientEvent('chatMessage', ...) va apărea în continuare.
Suggestions
Sugestiile alimentează panoul de autocompletare a comenzilor. Acestea pot fi adăugate pe rând sau în masă și eliminate în același mod.
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 populează automat sugestiile din fiecare comandă înregistrată la care jucătorul are acces ACE (command.<name>), atât la încărcare, cât și ori de câte ori o resursă pornește sau se oprește. Ai nevoie de chat:addSuggestion(s) doar pentru comenzile care necesită text de ajutor personalizat sau parametri.
Notifications
BUPA Chat expune un eveniment de notificare numit <resource>:notify — adică bupa-chat:notify — susținut de funcția lib.notify din ox_lib. Funcționează atât de pe client, cât și de pe 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)Handler-ul este Notify(text, notifyType, duration, ...). text este trecut prin wrapper-ul de localizare t(), așa că poți pasa o cheie de localizare (cu argumente de formatare) sau text simplu. notifyType are valoarea implicită inform, iar duration are valoarea 4000 ms.
Localization helpers
Următoarele variabile globale sunt disponibile în interiorul resursei (și pentru fișierele încărcate în contextul său):
| Symbol | Description |
|---|---|
t(key, ...) |
Un wrapper subțire peste locale() din ox_lib. Formatează cu argumente %s/%d și returnează chiar cheia dacă traducerea lipsește |
GetLang() |
Returnează dicționarul de localizare curent aplatizat |
Notify(text, type, duration, ...) |
Declanșează notificarea bupa-chat:notify |
Runtime language switch — bupa:changeLanguage
Declanșează acest eveniment de client pentru a schimba limba de chat a unui jucător în timp real, fără a fi nevoie de un restart. Acesta reîncarcă fișierul de localizare și îl trimite către interfața React:
TriggerEvent("bupa:changeLanguage", "fr")Vezi secțiunea Localization pentru detalii.