Chat Categories
فئات الدردشة
الفئات هي الأعتاب (Tabs) الموجودة في صندوق إدخال الدردشة. كل فئة تمثل قناة منفصلة بألوانها الخاصة، وعلاماتها (Tags)، وصلاحياتها، وقواعد إرسالها، وشارات هويتها. يتم تعريفها في ملف shared/config/categories.lua تحت اسم config.chatCategories.
تبويب الأوامر المدمج
فئة command يتم تضمينها دائماً كأول تبويب عند التشغيل (من خلال ملف 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) عند فتح الدردشة:
config.defaultChatCategory = "command"الأوامر برمز مائل مقابل الأوامر بدون رمز مائل
--- true = تعمل الأوامر مع وبدون الرمز المائل في البداية ("me hi" تشغل الأمر /me)
--- false = تعمل الأوامر حصراً عند إدراج الرمز المائل في البداية ("/me hi")
config.allowNoSlashCommands = trueبارامترات الفئة
تتدعم كل فئة مجموعة غنية من الحقول. إليك مثال مختصر:
{
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.