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:
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:
-- 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.
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ściBUPA 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.
-- powiadom jednego gracza (serwer -> klient): source, a następnie argumenty Notify
TriggerClientEvent("bupa-chat:notify", targetSrc, "MY_LOCALE_KEY", "success", 4000)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:
TriggerEvent("bupa:changeLanguage", "fr")Szczegóły znajdziesz w sekcji Lokalizacja.