Skip to content

Yapılandırma

Yapılandırma

BUPA Chat'in yapılandırması shared/config/*.lua dosyaları arasında bölünmüştür. Bu dosyaların tamamı escrow_ignore içindedir, bu sayede satın alım sonrasında düzenlenebilir kalırlar. Bu sayfa genel, görünüm, emoji, animasyon (emote) ve mesaj ayarlarını ele alır. Kategoriler ve Discord'un kendilerine ait sayfaları vardır.

Genel — general.lua

Tuşlar, sesler, varsayılanlar ve maske sistemi.

shared/config/general.lua
config.chatKey = "T"            -- sohbet girişini açma tuşu
config.chatVisibilityKey = ""    -- görünürlük modunu değiştirmek için tuş ("" = atanmamış)
config.clearCommand = { "clear", "temizle" } -- sohbet geçmişini temizleyen komutlar
config.closeOnOutsideClick = true            -- dışarı tıklamak girdiyi kapatır
config.typingSound = true                    -- yazarken klavye sesi
config.allowNoSlashCommands = true           -- eğik çizgi (slash) kullanmadan komut çalıştırma
config.uiUpdateRate = 24                      -- kafa göstergeleri için milisaniye güncelleme hızı
config.defaultAddTag = true                   -- etiket verilmediğinde ilk argüman etiket olur
config.showPrintsOnChat = false               -- sunucu çıktılarını sohbete yansıt
config.discordTagCacheTime = 60 * 60          -- Discord rol önbelleği (saniye)
config.defaultChatCategory = "command"        -- açılışta odaklanılan sekme

Giriş / çıkış mesajları standart convar'ları takip eder:

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

Yetkili (Admin) sohbet adı kaynağı

admin kategorisi, karakter adından farklı bir ad kaynağı gösterebilir:

shared/config/general.lua
config.adminChatName = {
    mode = "discord",   -- "character" | "steam" | "discord"
    discord = {
        botToken = "",  -- "discord" modu için gereklidir
        guildId  = "",
        cacheTime = 600,      -- takma ad önbellek saniyesi
        fallback  = "steam",  -- bir takma ad bulunamadığında kullanılır
    },
}

Maskeye duyarlı adlar — config.noneMask

config.noneMask, sohbette bir oyuncunun adını gizlememesi gereken maske çizilebilir öğelerini (ped modeli, koleksiyonu ve indeksi ile) listeler. Etkin olduğunda, maskeli bir oyuncunun adı, kategori showWearingMask = true olarak ayarlanmadıkça veya giyilen maske bu izin verilenler listesinde bulunmadıkça Bilinmeyen olarak gösterilir.

Görünüm — display.lua

Özel mesajlar — config.pm

shared/config/display.lua
config.pm = {
    active = true,
    command = { "pm", "dm" },     -- özel mesaj gönder
    webhookKey = "chatMessage",   -- Discord log anahtarı
    maxLength = 300,
    sender   = { --[[ gönderen kopyası için etiketler/renk/ad/id/meslek/discordEtiketi/saat ]] },
    receiver = { --[[ alıcı kopyası için aynı yapı ]] },
}

Gönderen ve alıcının her birinin bağımsız stilleri vardır (etiketler, color, showPlayerName, showPlayerId, showPlayerJob, discordTag, showHour).

Kafa metni & oyuncu ID gösterimi

shared/config/display.lua
config.headTextMaxStack = 4      -- bir oyuncu üzerinde üst üste binen maksimum kafa metni

config.playerIdDisplay = {
    active = false,              -- sohbet açıkken kafaların üzerinde ID'leri göster
    showOwn = true,             -- kendi ID'ni dahil et
    dist = 5.0,                 -- maksimum görüntüleme mesafesi (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" },
}

template şablonu şu yer tutucuları destekler: {serverId}, {name}, {steamId}, {discordId}, {fivemId}, \n satır sonları ve satır içi HTML/CSS.

Emojiler — emojis.lua

Emoji seçici tamamen veri odaklıdır. Her kategori { tab = "<icon emoji>", label = "<HEADER>", list = { ... } } şeklindedir ve her emoji { emoji, name, code } içerir.

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

Dört grup ile birlikte gelir — Smileys, Gestures, Symbols ve Objects. Serbestçe ekleyin, kaldırın veya yeniden sıralayın; code, önizlemenin altında gösterilen aranabilir kısa kodudur.

Animasyonlar (Emotes) — emotes.lua

Yazma göstergesi — config.chatOpenEmote

Bir oyuncu yazarken kafasının üzerinde beliren animasyonlu noktalar:

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,   -- diğerlerinin bunu ne kadar uzaktan görebileceği (m)
}
config.emoteOneAt_a_Time = true  -- her oyuncu için her emote komutunun tek aktif örneği

Animasyon komutları — config.emoteCommands

/me, /do, /dice (/zar) ve /rps (/tkm) ile birlikte gelir. Her animasyon bir hareket oynatabilir, kafa metni oluşturabilir ve isteğe bağlı olarak sohbete yansıtılabilir:

shared/config/emotes.lua
{
    command = "me",
    desc = "EMOTE_ME_COMMAND_DESC",
    webhookKey = "emoteCommand",   -- Discord logu (isteğe bağlı)
    dist = 8.0,
    time = 10000,                   -- kafa metni süresi (ms)
    template = "{text}",            -- {text} {playerName} {playerCensoredName}
    cssStyle = { color = "#b6a8ff", fontStyle = "italic" },
    sendToChat = { active = true, tags = { { tag = "ME" } }, color = { 182, 168, 255 } },
}

Ek alanlar: anim (dict, clip, flag, duration), headText (kemik/ofset/ölçek), params (yardım tuşlarıyla özel yazılmış argümanlar) ve hesaplanmış çıktı için msgCb(args) (/dice ve /rps tarafından kullanılır).

Mesajlar — messages.lua

Otomatik duyurular, hoş geldin mesajları ve txAdmin etkinlik biçimlendirmesi — hepsi varsayılan olarak kapalıdır.

config.autoMessages = {