Skip to content

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.

shared/config/general.lua
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 otwarciu

Wiadomości o dołączeniu / wyjściu z serwera korzystają ze standardowych convarów:

lua
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:

shared/config/general.lua
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

shared/config/display.lua
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

shared/config/display.lua
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 }.

shared/config/emojis.lua
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:

shared/config/emotes.lua
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 gracza

Komendy 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:

shared/config/emotes.lua
{
    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