تصفية النصوص

*This content is translated using AI (Beta) and may contain errors. To view this page in English, click here.

تُطبق على مصادر ومدخلات متنوعة، تصفية النصوص تمنع المستخدمين من رؤية اللغة غير المناسبة والمعلومات الشخصية القابلة للتحديد مثل أرقام الهواتف. تقوم Roblox تلقائيًا بتصفية المخرجات النصية الشائعة مثل الرسائل التي مرت عبر دردشة النص داخل اللعبة، ولكن أنت مسؤول عن تصفية أي نص معروض لا تملك تحكمًا صريحًا عليه.

سيناريوهات التصفية

يمكن جمع النصوص و/أو عرضها على المستخدمين في مجموعة متنوعة من السيناريوهات، بما في ذلك:

  • لعبة تجمع مدخلات نصية من المستخدمين من خلال إدخالات TextBox، أو واجهة مستخدم مخصصة مع أزرار مثل واجهة لوحة المفاتيح/لوحة المفاتيح الرقمية، أو نموذج لوحة مفاتيح تفاعلي في الفضاء ثلاثي الأبعاد.

  • لعبة تولد كلمات من أحرف عشوائية وتعرضها على المستخدمين، حيث هناك احتمال أن تنتج كلمات غير مناسبة.

  • لعبة تتصل بخادم ويب خارجي لجلب محتوى يتم عرضه داخل اللعبة. غالبًا لن يكون لديك تحكم على محتوى الموقع الخارجي ويمكن لطرف ثالث تعديل المعلومات.

  • لعبة تخزن نصوصًا مثل أسماء حيوانات المستخدمين باستخدام مخازن البيانات، حيث قد تتضمن النصوص المخزنة كلمات غير مناسبة يجب تصفيتها عند استرجاعها.

عملية التصفية

TextService:FilterStringAsync() تصفّي النصوص داخل اللعبة من خلال أخذ سلسلة نصية وUserId للمستخدم الذي أنشأ النص كمدخلات. تعيد كائن TextFilterResult الذي يحتوي على طريقتين إضافيتين يمكنك استدعاؤهما في سيناريوهات مختلفة:

في سياق إدخال TextBox، يجمع المثال التالي المدخلات عند حدث FocusLost ويرسلها إلى الخادم من خلال RemoteEvent. على الخادم، يتم تصفيتها أولاً من خلال FilterStringAsync() ثم GetNonChatStringForBroadcastAsync() مع نية أن يتم عرض النص لجميع المستخدمين على كائن جانب الخادم مثل SurfaceGui في العالم ثلاثي الأبعاد.

تصفية إدخال النص - سكربت العميل
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local textBox = script.Parent
textBox.ClearTextOnFocus = false
textBox.PlaceholderText = "..."
textBox.TextXAlignment = Enum.TextXAlignment.Left
textBox.TextScaled = true
-- RemoteEvent لإرسال إدخال النص إلى الخادم للتصفية
local inputRemoteEvent = ReplicatedStorage:FindFirstChild("InputRemoteEvent")
-- معالج الحدث لفقدان التركيز وضغط زر الإدخال
local function onFocusLost(enterPressed, inputObject)
if enterPressed then
print("تم الإرسال:", textBox.Text)
if inputRemoteEvent then
inputRemoteEvent:FireServer(textBox.Text)
end
end
end
textBox.FocusLost:Connect(onFocusLost)
تصفية إدخال النص - سكربت الخادم
local TextService = game:GetService("TextService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- RemoteEvent لاستقبال إدخال النص من العميل للتصفية
local inputRemoteEvent = ReplicatedStorage:FindFirstChild("InputRemoteEvent")
local function getFilterResult(text, fromUserId)
local filterResult
local success, errorMessage = pcall(function()
filterResult = TextService:FilterStringAsync(text, fromUserId)
end)
if success then
return filterResult
else
warn("خطأ في توليد TextFilterResult:", errorMessage)
end
end
-- يتم استدعاؤه عندما يقدم العميل الإدخال من TextBox
local function onInputReceived(player, text)
if text ~= "" then
local filterResult = getFilterResult(text, player.UserId)
if filterResult then
local success, filteredText = pcall(function()
return filterResult:GetNonChatStringForBroadcastAsync()
end)
if success then
print("تم تصفيته:", filteredText)
else
warn("خطأ في تصفية النص!")
end
end
end
end
inputRemoteEvent.OnServerEvent:Connect(onInputReceived)
©2026 شركة Roblox Corporation. تُعد منصّة Roblox، وشعار Roblox وشعار "توسيع حدود المخيلة"، من ضمن علاماتنا التجارية المسجّلة وغير المسجّلة في الولايات المتحدة وبلدان أخرى.