دردشة قائمة على القرب

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

هذا المثال يوضح كيفية تنفيذ دردشة حصرية للمستخدمين الذين يكونون قريبين من بعضهم البعض في العالم ثلاثي الأبعاد. يقوم بتمديد الاستدعاء مع دالة باستخدام TextSource لتحديد مواقع المستخدمين الذين قد يكونون مستقبلين محتملين للرسائل. إذا كانت هذه الدالة تعيد false، فهذا يعني أن المستخدم يقع على بعد أكبر من النطاق المحدد الصالح من مرسل الرسالة، لذا لا يقوم النظام بتسليم الرسالة إلى ذلك المستخدم.

أضف ما يلي إلى Script في ServerScriptService:

Server

local TextChatService = game:GetService("TextChatService")
local Players = game:GetService("Players")
-- الحصول على قناة الدردشة للدردشة القائمة على القرب
-- يمكنك استبدال هذه القناة العامة بقناة مخصصة
local generalChannel: TextChannel = TextChatService:WaitForChild("TextChannels").RBXGeneral
-- دالة للحصول على موقع شخصية المستخدم
local function getPositionFromUserId(userId: number)
-- الحصول على اللاعب المرتبط بمعرف المستخدم المعطى
local targetPlayer = Players:GetPlayerByUserId(userId)
-- إذا كان اللاعب موجودًا، احصل على موقع شخصيته
if targetPlayer then
local targetCharacter = targetPlayer.Character
if targetCharacter then
return targetCharacter:GetPivot().Position
end
end
-- إرجاع موقع افتراضي إذا لم يتم العثور على اللاعب أو الشخصية
return Vector3.zero
end
-- تعيين الاستدعاء لقناة الدردشة العامة للتحكم في تسليم الرسائل
generalChannel.ShouldDeliverCallback = function(textChatMessage: TextChatMessage, targetTextSource: TextSource)
-- الحصول على مواقع مرسل الرسالة والمستهدف
local sourcePos = getPositionFromUserId(textChatMessage.TextSource.UserId)
local targetPos = getPositionFromUserId(targetTextSource.UserId)
-- تسليم الرسالة إذا كانت المسافة بين المرسل والمستهدف أقل من 50 وحدة
return (targetPos - sourcePos).Magnitude < 50
end
©2026 شركة Roblox Corporation. تُعد منصّة Roblox، وشعار Roblox وشعار "توسيع حدود المخيلة"، من ضمن علاماتنا التجارية المسجّلة وغير المسجّلة في الولايات المتحدة وبلدان أخرى.