Skip to content

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:

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:

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." } })

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.

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

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)

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:

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

Vezi secțiunea Localization pentru detalii.