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.
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 openMesajele de conectare / deconectare urmează conventiile standard (convars):
config.showJoinMessages = GetConvarInt('chat_showJoins', 1) == 0
config.showQuitMessages = GetConvarInt('chat_showQuits', 1) == 0Sursa numelui pentru chatul de admin
Categoria admin poate afișa o altă sursă pentru nume decât numele caracterului:
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
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
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 }.
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ă:
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 playerComenzi 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:
{
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