Skip to content

Configurare

Configurare

Configurarea BUPA Chat este împărțită în fișierele shared/config/*.lua. Toate aceste fișiere se află în escrow_ignore, astfel încât rămân editabile după achiziție. Această pagină prezintă setările generale, de afișare, pentru emoji-uri, emote-uri și mesaje. Categoriile și Discordul au paginile lor dedicate.

General — general.lua

Chei, sunete, valori implicite și sistemul de măști.

shared/config/general.lua
config.chatKey = "T"            -- key to open the chat input
config.chatVisibilityKey = ""    -- key to cycle visibility mode ("" = unbound)
config.clearCommand = { "clear", "temizle" } -- commands that clear chat history
config.closeOnOutsideClick = true            -- click outside closes the input
config.typingSound = true                    -- keyboard sound while typing
config.allowNoSlashCommands = true           -- run commands without a leading slash
config.uiUpdateRate = 24                      -- ms update rate for head indicators
config.defaultAddTag = true                   -- first arg becomes a tag when no tags given
config.showPrintsOnChat = false               -- mirror server prints into chat
config.discordTagCacheTime = 60 * 60          -- Discord role cache (seconds)
config.defaultChatCategory = "command"        -- tab focused on open

Mesajele de conectare / deconectare urmează conventiile standard (convars):

lua
config.showJoinMessages = GetConvarInt('chat_showJoins', 1) == 0
config.showQuitMessages = GetConvarInt('chat_showQuits', 1) == 0

Sursa numelui pentru chatul de admin

Categoria admin poate afișa o altă sursă pentru nume decât numele caracterului:

shared/config/general.lua
config.adminChatName = {
    mode = "discord",   -- "character" | "steam" | "discord"
    discord = {
        botToken = "",  -- required for "discord" mode
        guildId  = "",
        cacheTime = 600,      -- nick cache seconds
        fallback  = "steam",  -- used when a nick can't be resolved
    },
}

Nume care țin cont de mască — config.noneMask

config.noneMask listează elementele de mască (după modelul de ped, colecție și index) care nu ar trebui să ascundă numele unui jucător în chat. Când este activat, numele unui jucător mascat este afișat ca Necunoscut, cu excepția cazului în care categoria setează showWearingMask = true sau masca purtată se află în această listă permisiuni (allow-list).

Afișaj — display.lua

Mesaje private — config.pm

shared/config/display.lua
config.pm = {
    active = true,
    command = { "pm", "dm" },     -- send a private message
    webhookKey = "chatMessage",   -- Discord log key
    maxLength = 300,
    sender   = { --[[ tags/color/name/id/job/discordTag/hour for the sender copy ]] },
    receiver = { --[[ same shape for the receiver copy ]] },
}

Expeditorul și destinatarul au fiecare stiluri independente (etichete, color, showPlayerName, showPlayerId, showPlayerJob, discordTag, showHour).

Text deasupra capului și afișarea ID-ului jucătorului

shared/config/display.lua
config.headTextMaxStack = 4      -- max head texts stacked on one player

config.playerIdDisplay = {
    active = false,              -- show IDs above heads while chat is open
    showOwn = true,             -- include your own ID
    dist = 5.0,                 -- max display distance (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" },
}

Câmpul template suportă variabilele {serverId}, {name}, {steamId}, {discordId}, {fivemId}, pauze de linie \n și HTML/CSS inline.

Emoji-uri — emojis.lua

Selectorul de emoji-uri este bazat în totalitate pe date. Fiecare categorie este de forma { tab = "<icon emoji>", label = "<HEADER>", list = { ... } }, iar fiecare emoji este { emoji, name, code }.

shared/config/emojis.lua
config.emojis = {
    {
        tab = "😀", label = "SMILEYS",
        list = {
            { emoji = "😀", name = "Grinning", code = ":grinning:" },
            { emoji = "😂", name = "Joy",      code = ":joy:" },
            -- ...
        },
    },
    -- GESTURES (👍), SYMBOLS (❤️), OBJECTS (🚗)
}

Vine cu patru grupuri predefinite — Smileys, Gestures, Symbols și Objects. Adaugă, elimină sau reordonează după preferințe; code este scurtătura căutabilă afișată sub previzualizare.

Emote-uri — emotes.lua

Indicator de scriere — config.chatOpenEmote

Puncte animate deasupra capului unui jucător în timp ce tastează:

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,   -- how far others can see it (m)
}
config.emoteOneAtATime = true  -- one active instance of each emote command per player

Comenzi de emote-uri — config.emoteCommands

Include comenzile /me, /do, /dice (/zar) și /rps (/tkm). Fiecare emote poate rula o animație, poate afișa text deasupra capului și, opțional, poate fi oglindit în chat:

shared/config/emotes.lua
{
    command = "me",
    desc = "EMOTE_ME_COMMAND_DESC",
    webhookKey = "emoteCommand",   -- Discord log (optional)
    dist = 8.0,
    time = 10000,                   -- head text duration (ms)
    template = "{text}",            -- {text} {playerName} {playerCensoredName}
    cssStyle = { color = "#b6a8ff", fontStyle = "italic" },
    sendToChat = { active = true, tags = { { tag = "ME" } }, color = { 182, 168, 255 } },
}

Câmpuri suplimentare: anim (dict, clip, flag, duration), headText (os/offset/scală), params (argumente personalizate introduse de utilizator cu taste de ajutor) și msgCb(args) pentru rezultate calculate (utilizat de /dice și /rps).

Mesaje — messages.lua

Anunțuri automate, mesaje de bun venit și stilizare pentru evenimentele txAdmin — toate dezactivate în mod implicit.

config.autoMessages = {
    active = false,
    messages = {
        { interval = 3600000, tags = { { tag = "Auto Message" } }, color = { 88, 166, 255 },
          args = { "Test message