Skip to content

Developer API

Developer API

Ponieważ BUPA Chat provide 'chat', implementuje on standardowe API chatu FiveM. Każdy zasób, który już korzysta z chat:addMessage, chat:addSuggestion itp., będzie działał bez zmian. BUPA Chat udostępnia każdą z tych funkcji zarówno jako zdarzenie sieciowe (chat:<name>), jak i eksport (w formie lowercase oraz Capitalized).

Powierzchnia API jest rejestrowana w 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 powiązuje zdarzenie chat:<name> oraz exports(name) i exports(Name), dzięki czemu wszystkie trzy poniższe style wywoływania są równoważne.

Dodawanie wiadomości na chacie

Po stronie klienta wyślij wiadomość bezpośrednio na chat:

client
-- Standardowe zdarzenie (działa z poziomu każdego zasobu)
TriggerEvent("chat:addMessage", {
    color = { 255, 0, 0 },
    multiline = true,
    args = { "Dispatch", "A robbery is in progress downtown." },
})

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

Struktura wiadomości:

Pole Typ Opis
args table Części wiadomości. Przy config.defaultAddTag, jeśli istnieje więcej niż jeden argument i brak tags, pierwszy argument staje się tagiem, a reszta stanowi treść
color RGB Kolor wiadomości / pierwszego targu { r, g, b }
tags table[] Wyraźne tagi { tag, bgColor, textColor }
multiline boolean Zezwalaj na zawijanie wiadomości w wielu wierszach

Klasyczne zdarzenie klienta chatMessage jest również obsługiwane (name, color, message), więc starsze dane wyjściowe TriggerClientEvent('chatMessage', ...) nadal się pojawiają.

Sugestie

Sugestie napędzają panel autouzupełniania komend. Można je dodawać pojedynczo lub masowo oraz usuwać w ten sam sposób.

client
TriggerEvent("chat:addSuggestion", "/revive", "Ożyw pobliskiego gracza", {
    { name = "id", help = "ID gracza docelowego na serwerze" },
})

TriggerEvent("chat:addSuggestions", {
    { name = "/heal", help = "Ulecz siebie" },
    { name = "/car",  help = "Zespawnuj pojazd", params = {
        { name = "model", help = "Model pojazdu", optional = true },
    } },
})

TriggerEvent("chat:removeSuggestion", "/car")
exports.chat:clear()   -- wyczyść wszystkie wiadomości

BUPA Chat automatycznie uzupełnia sugestie z każdej zarejestrowanej komend, do której gracz posiada dostęp ACE (command.<name>), zarówno podczas ładowania, jak i po każdym uruchomieniu/zatrzymaniu zasobu. Potrzebujesz chat:addSuggestion(s) tylko dla komend, które wymagają niestandardowego tekstu pomocy lub parametrów.

Powiadomienia

BUPA Chat udostępnia zdarzenie powiadomień o nazwie <resource>:notify — tj. bupa-chat:notify — wspierane przez lib.notify z ox_lib. Działa ono zarówno po stronie klienta, jak i serwera.

server
-- powiadom jednego gracza (serwer -> klient): source, a następnie argumenty Notify
TriggerClientEvent("bupa-chat:notify", targetSrc, "MY_LOCALE_KEY", "success", 4000)
client
TriggerEvent("bupa-chat:notify", "MY_LOCALE_KEY", "error", 5000)

Program obsługi to Notify(text, notifyType, duration, ...). text jest przesyłany przez wrapper lokalizacji t(), więc możesz przekazać klucz lokalizacji (z argumentami formatowania) lub zwykły tekst. notifyType domyślnie przyjmuje wartość inform, a duration wynosi 4000 ms.

Pomocnicy lokalizacji

Następujące zmienne globalne są dostępne wewnątrz zasobu (oraz dla plików ładowanych w jego kontekście):

Symbol Opis
t(key, ...) Cienki wrapper nad locale() z ox_lib. Formatuje za pomocą argumentów %s/%d i zwraca sam klucz, jeśli brakuje tłumaczenia
GetLang() Zwraca aktualny spłaszczony słownik lokalizacji
Notify(text, type, duration, ...) Wyzwala powiadomienie bupa-chat:notify

Zmiana języka w czasie rzeczywistym — bupa:changeLanguage

Wyzwól to zdarzenie klienta, aby zmienić język chatu gracza na żywo, bez konieczności restartu. Powoduje ono ponowne załadowanie lokalizaji i przesłanie jej do interfejsu React:

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

Szczegóły znajdziesz w sekcji Lokalizacja.