Konfiguracja
Konfiguracja
Konfiguracja BUPA Chat jest podzielona na pliki w katalogu shared/config/*.lua. Wszystkie te pliki znajdują się w sekcji escrow_ignore, dzięki czemu pozostają edytowalne po zakupie. Ta strona omawia ustawienia ogólne, wyświetlania, emoji, animacji (emote) oraz wiadomości. Kategorie i system Discord mają własne strony.
Ogólne — general.lua
Klawisze, dźwięki, wartości domyślne oraz system masek.
config.chatKey = "T" -- klawisz otwierający pole wpisywania czatu
config.chatVisibilityKey = "" -- klawisz przełączający tryb widoczności ("" = przypisany brak)
config.clearCommand = { "clear", "temizle" } -- komendy czyszczące historię czatu
config.closeOnOutsideClick = true -- kliknięcie poza oknem zamyka pole wpisywania
config.typingSound = true -- dźwięk klawiatury podczas pisania
config.allowNoSlashCommands = true -- wykonywanie komend bez ukośnika na początku
config.uiUpdateRate = 24 -- częstotliwość aktualizacji UI w ms dla wskaźników nad głową
config.defaultAddTag = true -- pierwszy argument staje się tagiem, jeśli nie podano innych tagów
config.showPrintsOnChat = false -- powielanie logów serwera na czacie
config.discordTagCacheTime = 60 * 60 -- pamięć podręczna ról Discorda (w sekundach)
config.defaultChatCategory = "command" -- domyślnie wybrano tę zakładkę po otwarciuWiadomości o dołączeniu / wyjściu z serwera korzystają ze standardowych convarów:
config.showJoinMessages = GetConvarInt('chat_showJoins', 1) == 0
config.showQuitMessages = GetConvarInt('chat_showQuits', 1) == 0Źródło nazwy administratora na czacie
Kategoria admin może wyświetlać inne źródło nazwy niż imię postaci:
config.adminChatName = {
mode = "discord", -- "character" | "steam" | "discord"
discord = {
botToken = "", -- wymagane dla trybu "discord"
guildId = "",
cacheTime = 600, -- czas cache'owania nicku w sekundach
fallback = "steam", -- używane, gdy nie można ustalić nicku
},
}Nazwy uwzględniające maski — config.noneMask
config.noneMask zawiera listę elementów masek (według modelu peda, kolekcji i indeksu), które nie powinny ukrywać imienia gracza na czacie. Gdy funkcja jest aktywna, imię zamaskowanego gracza jest wyświetlane jako Nieznany, chyba że kategoria ma ustawione showWearingMask = true lub założona maska znajduje się na tej liście dozwolonych.
Wyświetlanie — display.lua
Prywatne wiadomości — config.pm
config.pm = {
active = true,
command = { "pm", "dm" }, -- wysyłanie prywatnej wiadomości
webhookKey = "chatMessage", -- klucz logów Discord
maxLength = 300,
sender = { --[[ tagi/kolor/nazwa/id/job/discordTag/godzina dla kopii nadawcy ]] },
receiver = { --[[ ten sam układ dla kopii odbiorcy ]] },
}Nadawca i odbiorca posiadają niezależne style (tagi, color, showPlayerName, showPlayerId, showPlayerJob, discordTag, showHour).
Tekst nad głową i wyświetlanie ID gracza
config.headTextMaxStack = 4 -- maksymalna liczba tekstów nad głową jednego gracza
config.playerIdDisplay = {
active = false, -- wyświetlanie ID nad głowami, gdy czat jest otwarty
showOwn = true, -- uwzględnianie własnego ID
dist = 5.0, -- maksymalna odległość wyświetlania (m)
template = "[{serverId}] {discordId}", -- {serverId}{name}{steamId}{discordId}{fivemId}
headText = { bone = 31086, offset = vector3(0.3, 0.0, 0.0), maxRenderDist = 30.0 },
cssStyle = { color = "#fff", fontSize = "1.8vh", fontWeight = "600" },
}Szablon template obsługuje zmienne {serverId}, {name}, {steamId}, {discordId}, {fivemId}, znaki nowej linii \n oraz wbudowany kod HTML/CSS.
Emoji — emojis.lua
Wybór emoji opiera się w pełni na danych. Każda kategoria ma postać { tab = "<icon emoji>", label = "<HEADER>", list = { ... } }, a każde emoji to { emoji, name, code }.
config.emojis = {
{
tab = "😀", label = "SMILEYS",
list = {
{ emoji = "😀", name = "Grinning", code = ":grinning:" },
{ emoji = "😂", name = "Joy", code = ":joy:" },
-- ...
},
},
-- GESTY (👍), SYMBOLE (❤️), OBIEKTY (🚗)
}Zawiera domyślnie cztery grupy — Smileys, Gestures, Symbols oraz Objects. Możesz je swobodnie dodawać, usuwać lub zmieniać ich kolejność; code to wyszukiwany shortcode wyświetlany pod podglądem.
Animacje (emote) — emotes.lua
Wskaźnik pisania — config.chatOpenEmote
Animowane kropki nad głową gracza podczas pisania wiadomości:
config.chatOpenEmote = {
active = true,
texts = { { text = "•", time = 500 }, { text = "••", time = 500 }, { text = "•••", time = 500 } },
cssStyle = { color = "#fff", fontSize = "1.6vh" },
dist = 8.0, -- odległość, z której inni mogą to zobaczyć (m)
}
config.emoteOneAtATime = true -- tylko jedna aktywna instancja każdej komendy animacji na graczaKomendy animacji — config.emoteCommands
Zawiera domyślnie /me, /do, /dice (/zar) oraz /rps (/tkm). Każda animacja może odtwarzać ruch, wyświetlać tekst nad głową oraz opcjonalnie przesyłać wiadomość na czat:
{
command = "me",
desc = "EMOTE_ME_COMMAND_DESC",
webhookKey = "emoteCommand", -- logi Discord (opcjonalnie)
dist = 8.0,
time = 10000, -- czas trwania tekstu nad głową (ms)
template = "{text}", -- {text} {playerName} {playerCensoredName}
cssStyle = { color = "#b6a8ff", fontStyle = "italic" },
sendToChat = { active = true, tags = { { tag = "ME" } }, color = { 182, 168, 255 } },
}Dodatkowe pola: anim (dict, clip, flag, duration), headText (kość/offset/skala), params (niestandardowe argumenty tekstowe z kluczami pomocy) oraz msgCb(args) dla generowanego wyniku (u