Skip to content

Kategori Obrolan

Chat Categories

Categories adalah tab pada kolom input chat. Setiap kategori adalah channel terpisah dengan warna, tag, izin, aturan pengiriman, dan lencana identitasnya sendiri. Kategori-kategori ini ditentukan di dalam shared/config/categories.lua sebagai config.chatCategories.

Tab Commands bawaan

Kategori command selalu disematkan sebagai tab pertama saat runtime (dari shared/main.lua) — Anda tidak perlu mendefinisikannya sendiri:

shared/main.lua
table.insert(config.chatCategories, 1, {
    label = "CATEGORY_COMMANDS_LABEL",
    type = "command",
    icon = "terminal",
    placeholder = "CATEGORY_COMMANDS_PLACEHOLDER",
})

Apa pun yang diketik di tab ini akan dieksekusi sebagai command. Dengan config.allowNoSlashCommands = true, nama command yang dikenal dapat berfungsi dengan atau tanpa garis miring di awal (mengetik me hi akan menjalankan /me hi).

Apa saja yang aktif secara default

Secara default, hanya kategori Admin yang aktif di config.chatCategories. Contoh siap pakai untuk OOC (Global), OOC (Local/terdekat), Police, EMS, dan Gang disertakan di dalam file namun dijadikan komentar — silakan aktifkan kembali dan sesuaikan jika diperlukan.

Category type Cara pembatasan akses
Commands command Selalu ada (disematkan otomatis)
Admin admin Izin ACE command / admin / adminchat
OOC (Global) ooc Terbuka untuk semua orang (contoh)
OOC (Local) oocclosest Kedekatan — distance dalam meter (contoh)
Police pdchat jobs = { police = {...grades} } (contoh)
EMS emschat jobs = { ambulance = true } (contoh)
Gang gang gangs = { ... } (contoh)

Kategori default

config.defaultChatCategory menentukan tab mana yang menjadi fokus saat chat dibuka:

shared/config/general.lua
config.defaultChatCategory = "command"

Command dengan garis miring vs. tanpa garis miring

shared/config/general.lua
--- true  = command berfungsi DENGAN dan TANPA garis miring di awal ("me hi" menjalankan /me)
--- false = command hanya memicu dengan garis miring di awal ("/me hi")
config.allowNoSlashCommands = true

Parameter kategori

Setiap kategori mendukung berbagai macam field yang kaya. Contoh yang dipangkas:

shared/config/categories.lua
{
    label = "CATEGORY_ADMIN_LABEL",  -- kunci terjemahan untuk nama tab
    type = "admin",                  -- id unik untuk kategori ini
    icon = "shield-alt",             -- Ikon FontAwesome
    webhookKey = "chatMessage",      -- Webhook log Discord (lihat Discord Logging)
    placeholder = "CATEGORY_ADMIN_PLACEHOLDER",
    permissions = { "command", "admin", "adminchat" }, -- izin ACE yang diperlukan
    maxLength = 500,                 -- panjang maksimum pesan
    tags = {                         -- tag tetap yang ditampilkan sebelum pesan
        { tag = "Admin", textColor = { 51, 51, 51 }, bgColor = { 255, 105, 97 } },
    },
    color = { 255, 105, 97 },        -- warna teks pesan default
    showPlayerName = { active = true, censored = false, showWearingMask = true },
    showPlayerId   = { active = false, type = "serverId" },
    showPlayerJob  = { active = false, showLabel = true, showGrade = false },
    discordTag     = { active = false, maxShow = 1, roles = { ... } },
    showHour       = { active = true },
}

Referensi field lengkap (semuanya opsional kecuali dinyatakan lain):

Field Type Deskripsi
label string Kunci terjemahan untuk nama tampilan tab
type string Wajib. Pengidentifikasi unik untuk kategori
icon string Nama ikon FontAwesome
webhookKey string Kunci webhook Discord untuk mencatat pesan kategori ini
command string / string[] Command chat yang diarahkan ke kategori ini
placeholder string Kunci terjemahan untuk placeholder input
distance number Jarak pengiriman maksimum dalam meter; kosongkan untuk global
maxLength number Panjang karakter pesan maksimum
permissions string[] Izin ACE yang diperlukan untuk melihat/menggunakan kategori
jobs table Pekerjaan yang diperlukan — true = semua grade, number[] = grade tertentu
gangs table Geng yang diperlukan — format sama dengan jobs
tags table[] Tag tetap yang ditampilkan sebelum pesan (tag, textColor, bgColor)
color RGB Warna teks pesan default { r, g, b }
showPlayerName table active, censored, bgColor, textColor, showWearingMask
showPlayerId table active, type = "serverId", warna
showPlayerJob table active, showLabel, showGrade, warna, penggantian per-pekerjaan
discordTag table active, maxShow, roles[] (Peran Discord → tag)
showHour table active, warna — menambahkan waktu pesan

Penyensoran nama menampilkan nama yang disamarkan (misalnya J*** D**). Jika pemain sedang memakai masker, nama mereka akan disembunyikan sebagai Unknown kecuali showWearingMask = true — pemeriksaan masker diatur oleh config.noneMask di general.lua.