نظام دردشة النص داخل اللعبة، المدعوم من TextChatService، يتيح للاعبين التواصل بسهولة والتفاعل مع بعضهم في الألعاب الحية. بالإضافة إلى دعم دردشة النص الافتراضية، يمكنك تخصيص واجهة المستخدم الأمامية.
تكوين نافذة الدردشة
تتكون نافذة الدردشة العامة من:
- نافذة الدردشة
- شريط الإدخال
- علامات القناة (اختياري)

تكون علامات القناة غير مفعلة بشكل افتراضي ويمكن تبديل كل مكون بين التشغيل والإيقاف في Studio أو من خلال البرمجة:
في نافذة استكشاف، قم بتوسيع فرع TextChatService واختر ChatWindowConfiguration أو ChatInputBarConfiguration أو ChannelTabsConfiguration. ثم قم بتمكين أو تعطيل المكون في نافذة الخصائص.

عند تمكين ChannelTabsConfiguration، تظهر كل TextChannel افتراضية في علامة كما هو موضح في الجدول التالي. بالإضافة إلى ذلك، يقوم كل TextChannel مخصص بإنشاء علامة تتوافق مع خاصية Name للقناة.
| القناة الافتراضية | اسم العلامة |
|---|---|
| RBXGeneral | عام |
| RBXSystem | عام (مجمع في علامة واحدة مع RBXGeneral) |
| RBXTeam | فريق |
| RBXWhisper | اسم المستخدم للاعب الآخر |
مظهر النافذة
يمكن تعديل مظهر نافذة الدردشة العامة من خلال ChatWindowConfiguration.

| الخاصية | الوصف | افتراضي |
|---|---|---|
| BackgroundColor3 | لون الخلفية من نوع Color3 لنافذة الدردشة. | [25, 27, 29] |
| BackgroundTransparency | شفافية خلفية نافذة الدردشة. | 0.3 |
| Enabled | ما إذا كان سيتم عرض نافذة الدردشة الافتراضية. اضبط على false للإخفاء. | true |
| FontFace | خط Font لنص نافذة الدردشة. | BuilderSansMedium |
| TextColor3 | لون Color3 لنص نافذة الدردشة. | [255, 255, 255] |
| TextSize | حجم نص نافذة الدردشة. | 14 |
| TextStrokeColor3 | لون Color3 للحد حول نص نافذة الدردشة. | [0, 0, 0] |
| TextStrokeTransparency | شفافية الحد حول نص نافذة الدردشة. | 0.5 |
| HorizontalAlignment | المحاذاة الأفقية لنافذة الدردشة. | Left |
| VerticalAlignment | المحاذاة الرأسية لنافذة الدردشة. | Top |
| HeightScale | مقياس الارتفاع لنافذة الدردشة نسبة إلى حجم الشاشة. | 1 |
| WidthScale | مقياس العرض لنافذة الدردشة نسبة إلى حجم الشاشة. | 1 |
مظهر شريط الإدخال
يمكن تعديل مظهر شريط إدخال الدردشة من خلال ChatInputBarConfiguration.

| الخاصية | الوصف | افتراضي |
|---|---|---|
| BackgroundColor3 | لون الخلفية من نوع Color3 لشريط إدخال الدردشة. | [25, 27, 29] |
| BackgroundTransparency | شفافية خلفية شريط إدخال الدردشة. | 0.2 |
| FontFace | خط Font لنص إدخال الدردشة. | BuilderSansMedium |
| PlaceholderColor3 | لون Color3 لنص الإدخال في أداة الإدخال. | [178, 178, 178] |
| TextColor3 | لون Color3 لنص الإدخال الذي يدخله اللاعب. | [255, 255, 255] |
| TextSize | حجم نص الإدخال في الدردشة. | 14 |
| TextStrokeColor3 | لون Color3 للحد حول نص إدخال الدردشة. | [0, 0, 0] |
| TextStrokeTransparency | شفافية الحد حول نص إدخال الدردشة. | 0.5 |
| AutocompleteEnabled | ما إذا كان نظام دردشة النص يعرض خيارات الإكمال التلقائي للرموز التعبيرية والأوامر. يتم الإكمال التلقائي للرموز التعبيرية من خلال كتابة : متبوعًا بأحرف غير بيضاء، بينما يتم الإكمال التلقائي للأوامر من خلال كتابة /. | true |
| KeyboardKeyCode | زر إضافي يمكن للاعبين الضغط عليه لتفعيل التركيز على شريط إدخال الدردشة الافتراضي. | Slash |
مظهر علامات القناة
يمكن تعديل مظهر علامات القناة من خلال ChannelTabsConfiguration.

| الخاصية | الوصف | افتراضي |
|---|---|---|
| BackgroundColor3 | لون الخلفية من نوع Color3 لعلامات القناة. | [25, 27, 29] |
| BackgroundTransparency | شفافية خلفية علامات القناة. | 0 |
| HoverBackgroundColor3 | لون الخلفية من نوع Color3 للعلامات عند التحويم فوقها. | [125, 125, 125] |
| FontFace | خط Font للنص في علامات القناة. | BuilderSansBold |
| TextColor3 | لون Color3 للنص في علامة غير محددة. | [175, 175, 175] |
| SelectedTabTextColor3 | لون Color3 للنص في علامة محددة. | [255, 255, 255] |
| TextSize | حجم النص في علامات القناة. | 18 |
| TextStrokeColor3 | لون Color3 للحد حول النص في علامات القناة. | [0, 0, 0] |
| TextStrokeTransparency | شفافية الحد حول النص في علامات القناة. | 1 |
تخصيص الرسائل
يمكنك تخصيص مظهر نصوص الرسائل وأجزاء الرسائل باستخدام ChatWindowMessageProperties واستدعاءات TextChatService.OnChatWindowAdded دون الحاجة إلى تجاوز واجهة المستخدم الحالية. تتيح لك خيارات التخصيص تعديل مظهر رسائل الدردشة لتتناسب مع موضوع لعبتك، ويمكنك أيضًا تصنيف أو تمييز الرسائل من مجموعات مستخدمين مختلفة من خلال تلوين الأجزاء أو إضافة علامات الدردشة.
تلوين أسماء المستخدمين
عند إرسال مستخدم رسالة دردشة، يتم عرض DisplayName كجزء من رسالة الدردشة. بشكل افتراضي، يتم تلوين اسم كل مستخدم وفقًا لـ Player.TeamColor ولكن يمكنك تغيير ألوان أسماء الدردشة باستخدام ChatWindowMessageProperties وOnChatWindowAdded. يقوم LocalScript في StarterPlayerScripts بتعيين لون محدد مسبقًا لكل مستخدم، يختار عشوائيًا من جدول من ألوان RGB.

LocalScript - ألوان أسماء المستخدمين العشوائية
local TextChatService = game:GetService("TextChatService")
local chatWindowConfiguration = TextChatService.ChatWindowConfiguration
local nameColors = {
Color3.fromRGB(255, 0, 0),
Color3.fromRGB(0, 255, 0),
Color3.fromRGB(0, 0, 255),
Color3.fromRGB(255, 255, 0),
}
TextChatService.OnChatWindowAdded = function(message: TextChatMessage)
local properties = chatWindowConfiguration:DeriveNewMessageProperties()
local textSource = message.TextSource
if textSource then
local index: number = (textSource.UserId % #nameColors) + 1
local randomColor: Color3 = nameColors[index]
properties.PrefixTextProperties = chatWindowConfiguration:DeriveNewMessageProperties()
properties.PrefixTextProperties.TextColor3 = randomColor
end
return properties
end
يمكنك أيضًا تطبيق تدرجات الألوان والشفافية لتلوين أجزاء الرسالة باستخدام UIGradient.

تدرجات ألوان أسماء المستخدمين
local TextChatService = game:GetService("TextChatService")
local chatWindowConfiguration = TextChatService.ChatWindowConfiguration
local gradient = Instance.new("UIGradient")
gradient.Color = ColorSequence.new{
ColorSequenceKeypoint.new(0, Color3.fromRGB(255, 0, 0)),
ColorSequenceKeypoint.new(0.5, Color3.fromRGB(255, 255, 0)),
ColorSequenceKeypoint.new(1, Color3.fromRGB(255, 0, 255))
}
TextChatService.OnChatWindowAdded = function(message: TextChatMessage)
local properties = chatWindowConfiguration:DeriveNewMessageProperties()
local textSource = message.TextSource
if textSource then
properties.PrefixTextProperties = chatWindowConfiguration:DeriveNewMessageProperties()
gradient:Clone().Parent = properties.PrefixTextProperties
end
return properties
end
تخصيص النص الغني
يمكن استخدام علامات لون الخط النص الغني لتنسيق رسائل الدردشة، وهذا مفيد إذا كنت ترغب في تطبيق التنسيق على أجزاء دقيقة جدًا من الرسالة. يجب ملاحظة أن النص الغني لا يدعم التدرجات، ولكن عينة الكود التالية توضح كيفية نقل اسم المستخدم (المخزن في TextChatMessage.PrefixText) إلى نص الرسالة ثم تطبيق علامات نصية غنية فقط على الجزء الخاص بالاسم.

تخصيص النص الغني
local TextChatService = game:GetService("TextChatService")
local Players = game:GetService("Players")
local chatWindowConfiguration = TextChatService.ChatWindowConfiguration
local gradient = Instance.new("UIGradient")
gradient.Color = ColorSequence.new{
ColorSequenceKeypoint.new(0, Color3.fromRGB(255, 0, 0)),
ColorSequenceKeypoint.new(0.5, Color3.fromRGB(255, 255, 0)),
ColorSequenceKeypoint.new(1, Color3.fromRGB(255, 0, 255))
}
TextChatService.OnChatWindowAdded = function(message: TextChatMessage)
local properties = chatWindowConfiguration:DeriveNewMessageProperties()
if message.TextSource then
properties.PrefixText = "[VIP]"
properties.Text = string.format("<font color='#00ffff'>%s</font>", message.PrefixText) .. " " .. message.Text
properties.PrefixTextProperties = chatWindowConfiguration:DeriveNewMessageProperties()
gradient:Clone().Parent = properties.PrefixTextProperties
end
return properties
end
الرسائل من مصادر غير اللاعبين
عندما يكون TextChatService.CreateDefaultTextChannels هو true، واحدة من القنوات النصية الافتراضية هي قناة RBXSystem. تقوم السكربتات الخاصة بالدردشة الافتراضية تلقائيًا بعرض الرسائل النظامية في هذه القناة. يمكنك تخصيص مظهر هذه الرسائل باستخدام استدعاء TextChannel.OnIncomingMessage.
قد ترغب في تخصيص أو تعديل الرسائل النظامية التي يتم إصدارها تلقائيًا بواسطة نظام الدردشة. بما أن الرسائل النظامية الافتراضية محلية للغات المستخدمين، يجب عليك الإشارة إليها بواسطة TextChatMessage.Metadata في استدعاءات دردشة النص إذا كنت ترغب في تخصيص مظهرها. على سبيل المثال، يمكنك استخدام Metadata لتحديد الرسائل النظامية أو رسائل الخطأ أو الرسائل من أنظمة معينة في لعبتك.
النظام
لإرسال رسالة نظام إلى اللاعب المحلي، مثل "خطاب" من نظام إعلان عام، قم باستدعاء DisplaySystemMessage() من القناة الافتراضية RBXGeneral مع بادئة قبل اسم عرض اللاعب.
برنامج نصي للعميلlocal Players = game:GetService("Players")local TextChatService = game:GetService("TextChatService")local player = Players.LocalPlayerlocal generalChannel: TextChannel = TextChatService:WaitForChild("TextChannels").RBXGenerallocal PREFIX = "[دليل] مرحبًا "-- أرسل "رسالة النظام" إلى اللاعب مع إضافة اسم عرضهمgeneralChannel:DisplaySystemMessage(PREFIX .. player.DisplayName)

NPC/كائن
يمكنك أيضًا تزيين حوارات غير اللاعبين وإضافة فقاعات دردشة لتظهر كما لو كانت الرسائل قادمة من NPC أو كائن داخل العالم ثلاثي الأبعاد.
برنامج نصي للعميل
local TextChatService = game:GetService("TextChatService")
local Workspace = game:GetService("Workspace")
local generalChannel: TextChannel = TextChatService:WaitForChild("TextChannels").RBXGeneral
TextChatService.OnIncomingMessage = function(textChatMessage: TextChatMessage)
local properties = Instance.new("TextChatMessageProperties")
-- تحقق من الرسائل النظامية التي تحتوي على بيانات وصفية
if not textChatMessage.TextSource and textChatMessage.Metadata ~= "" then
-- أضف بادئة لجعل الرسالة تبدو كما لو كانت قد أرسلت بواسطة لاعب
properties.PrefixText = string.format("<font color='#%s'>%s: </font>", "#50C999", textChatMessage.Metadata)
-- أضف فقاعات دردشة
TextChatService:DisplayBubble(Workspace.Statue, textChatMessage.Text)
end
return properties
end
local message = "مرحبًا! سأكون مرشدك."
local speakerName = "فارس قديم"
generalChannel:DisplaySystemMessage(message, speakerName)
