Skip to content

Developer API

Developer API

Protože BUPA Chat provide 'chat', implementuje standardní FiveM chat API. Jakýkoliv zdroj, který již používá chat:addMessage, chat:addSuggestion atd., funguje beze změny. BUPA Chat zpřístupňuje každou z těchto funkcí jak jako síťovou událost (networked event) (chat:<name>), tak jako export (v malých pismenech a ve formátu Capitalized).

API rozhraní je zaregistrováno v 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 propojuje událost chat:<name>, plus exports(name) a exports(Name), takže všechny tři níže uvedené styly volání jsou ekvivalentní.

Adding a chat message

Na straně klienta odešlete zprávu přímo do chatu:

client
-- Standardní událost (funguje z libovolného zdroje)
TriggerEvent("chat:addMessage", {
    color = { 255, 0, 0 },
    multiline = true,
    args = { "Dispatch", "A robbery is in progress downtown." },
})

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

Struktura zprávy:

Položka Typ Popis
args table Části zprávy. S config.defaultAddTag, pokud existuje více než jeden argument a žádné tags, se první argument stane tagem a zbytek tvoří tělo
color RGB Barva zprávy / prvního tagu { r, g, b }
tags table[] Explicitní tagy { tag, bgColor, textColor }
multiline boolean Povolit zprávě zalamování na více řádků

Klasická klientská událost chatMessage je také podporována (name, color, message), takže starší výstup z TriggerClientEvent('chatMessage', ...) se stále zobrazuje.

Suggestions

Návrhy pohánějí panel automatického doplňování příkazů. Mohou být přidávány po jednom nebo hromadně a stejným způsobem je lze také odebrat.

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()   -- vymazat všechny zprávy

BUPA Chat automaticky načítá návrhy ze všech registrovaných příkazů, ke kterým má hráč ACE přístup (command.<name>), a to jak při načtení, tak kdykoliv se zdroj spustí/zastaví. chat:addSuggestion(s) potřebujete pouze pro příkazy, které vyžadují vlastní text nápovědy nebo parametry.

Notifications

BUPA Chat zpřístupňuje notifikační událost s názvem <resource>:notify — tzn. bupa-chat:notify — poháněnou funkcí lib.notify z ox_lib. Funguje jak z klienta, tak ze serveru.

server
-- upozornit jednoho hráče (server -> client): source a poté argumenty pro Notify
TriggerClientEvent("bupa-chat:notify", targetSrc, "MY_LOCALE_KEY", "success", 4000)
client
TriggerEvent("bupa-chat:notify", "MY_LOCALE_KEY", "error", 5000)

Obsluha je Notify(text, notifyType, duration, ...). text prochází přes lokalizační obal t(), takže můžete předat klíč lokalizace (s formátovacími argumenty) nebo prostý text. notifyType má výchozí hodnotu inform a duration 4000 ms.

Localization helpers

Uvnitř zdroje (a pro soubory načtené v jeho kontextu) jsou k dispozici následující globální proměnné:

Symbol Popis
t(key, ...) Tenký obal nad locale() z ox_lib. Formátuje pomocí argumentů %s/%d a vrací samotný klíč, pokud překlad chybí
GetLang() Vrátí aktuální zploštělý lokalizační slovník
Notify(text, type, duration, ...) Vyvolá notifikaci bupa-chat:notify

Runtime language switch — bupa:changeLanguage

Spusťte tuto klientskou událost pro změnu jazyka chatu hráče za chodu, bez nutnosti restartu. Znovu načte lokalizaci a odešle ji do React UI:

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

Podrobnosti naleznete v Localization.