Skip to content

Developer API

Developer API

Eftersom BUPA Chat provide 'chat', implementerar den standard FiveM chat API:et. Alla resurser som redan använder chat:addMessage, chat:addSuggestion etc. fortsätter att fungera oförändrat. BUPA Chat exponerar var och en av dessa både som ett nätverksevent (chat:<name>) och som en export (i lowercase och Capitalized-form).

API-ytan registreras i 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 kopplar ihop eventet chat:<name>, plus exports(name) och exports(Name), så alla tre anropsstilar nedan är likvärdiga.

Adding a chat message

På klienten, skicka ett meddelande direkt in i chatten:

client
-- Standard event (fungerar från alla resurser)
TriggerEvent("chat:addMessage", {
    color = { 255, 0, 0 },
    multiline = true,
    args = { "Dispatch", "A robbery is in progress downtown." },
})

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

Meddelandets struktur:

Fält Typ Beskrivning
args table Meddelandedelar. Med config.defaultAddTag, om det finns mer än ett argument och inga tags, blir det första argumentet en tagg och resten är själva meddelandetexten
color RGB Färg för meddelande / första tagg { r, g, b }
tags table[] Explicita taggar { tag, bgColor, textColor }
multiline boolean Tillåt meddelandet att radbrytas över flera rader

Det klassiska chatMessage-klienteventet hanteras också (name, color, message), så äldre TriggerClientEvent('chatMessage', ...)-utdata visas fortfarande.

Suggestions

Förslag driver kommandots autoavslutningspanel. De kan läggas till en i taget eller i bulk, och tas bort på samma sätt.

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()   -- rensa alla meddelanden

BUPA Chat fyller i förslag automatiskt från varje registrerat kommando som spelaren har ACE-åtkomst till (command.<name>), både vid laddning och när en resurs startar/stoppar. Du behöver bara chat:addSuggestion(s) för kommandon som kräver anpassad hjälptext eller parametrar.

Notifications

BUPA Chat exponerar ett notisevent som heter <resource>:notify – d.v.s. bupa-chat:notify – som drivs av ox_libs lib.notify. Det fungerar från både klient och server.

server
-- meddela en spelare (server -> klient): source, sedan Notify-argument
TriggerClientEvent("bupa-chat:notify", targetSrc, "MY_LOCALE_KEY", "success", 4000)
client
TriggerEvent("bupa-chat:notify", "MY_LOCALE_KEY", "error", 5000)

Hanteraren är Notify(text, notifyType, duration, ...). text skickas genom t()-lokaliseringsomslutningen, så du kan skicka en lokaliseringsnyckel (med formatargument) eller vanlig text. notifyType standardiseras till inform och duration till 4000 ms.

Localization helpers

Följande globaler är tillgängliga i resursen (och för filer som laddas i dess kontext):

Symbol Beskrivning
t(key, ...) Tunn omslutning runt ox_lib locale(). Formaterar med %s/%d-argument och returnerar själva nyckeln om översättningen saknas
GetLang() Returnerar den aktuella plattade lokaliseringsordlistan
Notify(text, type, duration, ...) Utlöser bupa-chat:notify-notisen

Runtime language switch — bupa:changeLanguage

Utlös detta klientevent för att ändra en spelares chattpråk direkt, utan omstart. Det laddar om lokaliseringen och skickar den till React-gränssnittet:

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

Se Localization för detaljer.