Skip to content

Chat Categories

فئات الدردشة

الفئات هي الأعتاب (Tabs) الموجودة في صندوق إدخال الدردشة. كل فئة تمثل قناة منفصلة بألوانها الخاصة، وعلاماتها (Tags)، وصلاحياتها، وقواعد إرسالها، وشارات هويتها. يتم تعريفها في ملف shared/config/categories.lua تحت اسم config.chatCategories.

تبويب الأوامر المدمج

فئة command يتم تضمينها دائماً كأول تبويب عند التشغيل (من خلال ملف shared/main.lua) — ولست بحاجة إلى تعريفها بنفسك:

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

أي شيء يتم كتابته في هذا التبويب يتم تنفيذه كأمر. مع تفعيل config.allowNoSlashCommands = true، سيعمل اسم الأمر المعروف سواءً أتم إدراج الرمز المائل في البداية أم لا (كتابة me hi ستشغل الأمر /me hi).

ما يأتي مفَعلاً بشكل افتراضي

خارج الصندوق، فئة الإداريين (Admin) وحدها هي النشطة في config.chatCategories. تم تضمين أمثلة جاهزة للاستخدام لكل من OOC (عام)، OOC (محلي/الأقرب)، الشرطة (Police)، الإسعاف (EMS)، والعصابات (Gang) داخل الملف ولكنها معطلة كملاحظات (Commented out) — قم بإلغاء التعليق وتعديلها حسب حاجتك.

الفئة type طريقة تقييد الوصول
الأوامر command موجودة دائماً (تتم إضافتها تلقائياً)
الإداريين admin صلاحيات ACE command / admin / adminchat
OOC (عام) ooc متاح للجميع (مثال)
OOC (محلي) oocclosest حسب القرب — distance بالمتر (مثال)
الشرطة pdchat jobs = { police = {...grades} } (مثال)
الإسعاف emschat jobs = { ambulance = true } (مثال)
العصابة gang gangs = { ... } (مثال)

الفئة الافتراضية

متغير config.defaultChatCategory يحدد أي تبويب يكون محدد التركيز (Focused) عند فتح الدردشة:

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

الأوامر برمز مائل مقابل الأوامر بدون رمز مائل

shared/config/general.lua
--- true  = تعمل الأوامر مع وبدون الرمز المائل في البداية ("me hi" تشغل الأمر /me)
--- false = تعمل الأوامر حصراً عند إدراج الرمز المائل في البداية ("/me hi")
config.allowNoSlashCommands = true

بارامترات الفئة

تتدعم كل فئة مجموعة غنية من الحقول. إليك مثال مختصر:

shared/config/categories.lua
{
    label = "CATEGORY_ADMIN_LABEL",  -- مفتاح الترجمة لاسم التبويب
    type = "admin",                  -- المعرف الفريد لهذه الفئة
    icon = "shield-alt",             -- أيقونة FontAwesome
    webhookKey = "chatMessage",      -- ويب هوك سجلات ديسكورد (راجع قسم تسجيل الديسكورد)
    placeholder = "CATEGORY_ADMIN_PLACEHOLDER",
    permissions = { "command", "admin", "adminchat" }, -- صلاحيات ACE المطلوبة
    maxLength = 500,                 -- الحد الأقصى لطول الرسالة
    tags = {                         -- العلامات الثابتة التي تظهر قبل الرسالة
        { tag = "Admin", textColor = { 51, 51, 51 }, bgColor = { 255, 105, 97 } },
    },
    color = { 255, 105, 97 },        -- لون نص الرسالة الافتراضي
    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 },
}

مرجع الحقول الكامل (جميعها اختيارية ما لم يُذكر خلاف ذلك):

الحقل النوع الوصف
label string مفتاح الترجمة لاسم عرض التبويب
type string مطلوب. المعرف الفريد للفئة
icon string اسم أيقونة FontAwesome
webhookKey string مفتاح ويب هوك ديسكورد لتسجيل رسائل هذه الفئة
command string / string[] أمر (أو أوامر) الدردشة التي توجّه إلى هذه الفئة
placeholder string مفتاح الترجمة لنص حقل الإدخال المؤقت
distance number أقصى مسافة إرسال بالأمتار؛ اتركها فارغة لتكون عالمية
maxLength number الحد الأقصى لعدد أحرف الرسالة
permissions string[] صلاحيات ACE المطلوبة لرؤية/استخدام الفئة
jobs table الوظائف المطلوبة — true = جميع الرتب، number[] = رتب محددة
gangs table العصابات المطلوبة — نفس هيكل jobs
tags table[] العلامات الثابتة التي تظهر قبل الرسائل (tag, textColor, bgColor)
color RGB لون نص الرسالة الافتراضي { r, g, b }
showPlayerName table active, censored, bgColor, textColor, showWearingMask
showPlayerId table active, type = "serverId", الألوان
showPlayerJob table active, showLabel, showGrade, الألوان، والتجاوزات حسب الوظيفة
discordTag table active, maxShow, roles[] (رتبة ديسكورد ← العلامة)
showHour table active, الألوان — تلحق وقت إرسال الرسالة

إخفاء الأسماء (Censoring) يعرض اسماً مُموّهاً (مثال: J*** D**). إذا كان اللاعب يرتدي قناعاً، سيتم إخفاء اسمه ليظهر كـ مجهول (Unknown) ما لم يتم ضبط showWearingMask = true — يتم التحكم بفحص القناع عبر config.noneMask في ملف general.lua.