Developer API
Developer API
Omdat BUPA Chat provide 'chat' gebruikt, implementeert het de standaard FiveM chat API. Elke resource die al gebruikmaakt van chat:addMessage, chat:addSuggestion etc. blijft ongewijzigd werken. BUPA Chat stelt elk hiervan beschikbaar als zowel een networked event (chat:<name>) als een export (in lowercase en Capitalized vorm).
Het API-oppervlak is geregistreerd 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 koppelt het event chat:<name>, plus exports(name) en exports(Name), waardoor alle drie onderstaande aanroepstijlen equivalent zijn.
Een chatbericht toevoegen
Client-side, stuur een bericht direct naar de chat:
-- Standaard event (werkt vanuit elke resource)
TriggerEvent("chat:addMessage", {
color = { 255, 0, 0 },
multiline = true,
args = { "Dispatch", "A robbery is in progress downtown." },
})
-- Export vorm
exports.chat:addMessage({ args = { "System", "Server restarting soon." } })Berichtstructuur:
| Veld | Type | Beschrijving |
|---|---|---|
args |
table | Berichtonderdelen. Met config.defaultAddTag, als er meer dan één arg is en geen tags, wordt de eerste arg een tag en de rest de hoofdtekst |
color |
RGB | Bericht- / eerste-tag kleur { r, g, b } |
tags |
table[] | Expliciete tags { tag, bgColor, textColor } |
multiline |
boolean | Sta toe dat het bericht over meerdere regels doorloopt |
Het klassieke chatMessage client event wordt ook afgehandeld (name, color, message), dus oude TriggerClientEvent('chatMessage', ...) output verschijnt nog steeds.
Suggesties
Suggesties sturen het commando-autocompletionpaneel aan. Ze kunnen één voor één of in bulk worden toegevoegd, en op dezelfde manier worden verwijderd.
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() -- wis alle berichtenBUPA Chat vult suggesties automatisch op basis van elk geregistreerd commando waar de speler ACE-toegang toe heeft (command.<name>), zowel bij het laden als wanneer een resource start/stopt. Je hebt chat:addSuggestion(s) alleen nodig voor commando's die aangepaste helptekst of parameters vereisen.
Notificaties
BUPA Chat stelt een notificatie-event beschikbaar genaamd <resource>:notify — d.w.z. bupa-chat:notify — aangedreven door ox_lib's lib.notify. Dit werkt vanuit zowel client als server.
-- notificeer één speler (server -> client): source, daarna Notify args
TriggerClientEvent("bupa-chat:notify", targetSrc, "MY_LOCALE_KEY", "success", 4000)TriggerEvent("bupa-chat:notify", "MY_LOCALE_KEY", "error", 5000)De handler is Notify(text, notifyType, duration, ...). text wordt door de t() localisatie-wrapper geleid, dus je kunt een locale sleutel (met format args) of platte tekst doorgeven. notifyType is standaard inform en duration is standaard 4000 ms.
Localisatiehelpers
De volgende globals zijn beschikbaar binnen de resource (en voor bestanden die in de context ervan worden geladen):
| Symbool | Beschrijving |
|---|---|
t(key, ...) |
Dunne wrapper over ox_lib locale(). Formatteert met %s/%d args en retourneert de sleutel zelf als de vertaling ontbreekt |
GetLang() |
Retourneert het huidige afgeplatte locale-woordenboek |
Notify(text, type, duration, ...) |
Triggert de bupa-chat:notify notificatie |
Runtime taalwissel — bupa:changeLanguage
Triggert dit client event om de chattaal van een speler live te wijzigen, zonder herstart. Het laadt de locale opnieuw en stuurt deze naar de React UI:
TriggerEvent("bupa:changeLanguage", "fr")Zie Localization voor details.