الرسائل عبر الخوادم

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

عادةً، يمكن أن يؤثر الشيفرة داخل اللعبة فقط على الخادم أو العملاء الذين تعمل عليهم، ولكن قد تكون هناك حالات تريد فيها من خوادم مختلفة التواصل مع بعضها البعض، بما في ذلك:

  • إعلانات عالمية — إرسال إعلانات مثل "اكتشف مستخدم عنصرًا خاصًا!" إلى جميع خوادم اللعبة.
  • متصفح الخادم في الوقت الفعلي — تجميع قائمة بجميع خوادم اللعبة والأشخاص الموجودين فيها (تُحدث كل دقيقة) وعرض القائمة على أقصى 20 خادمًا.

يمكنك دعم الرسائل عبر الخوادم في لعبتك باستخدام MessagingService. يمكنك أيضًا استخدام لعبة Teleportation Playground النموذجية لرؤية كيفية عمل الرسائل عبر الخوادم قبل تنفيذها. وأخيرًا، يمكنك الاطلاع على هنا لاستكشاف التواصل عبر الخوادم باستخدام أدوات خارجية.

إعداد الرسائل عبر الخوادم

لتمكين الرسائل عبر الخوادم، يجب عليك إعداد موضوع وهو قناة رسالة مخصصة يمكن الوصول إليها من عدة خوادم. بعد إنشاء موضوع، يمكنك اشتراك المستخدمين في الموضوع لتلقي الرسائل وتمكين نشر الرسائل إلى الموضوع.

اشتراك المستخدمين لتلقي الرسائل

استخدم MessagingService:SubscribeAsync() لاشتراك المستخدمين في موضوع وحدد دالة رد نداء تكشف عن الرسائل المنشورة في ذلك الموضوع. على سبيل المثال، يتضمن نموذج الشيفرة التالي اشتراك جميع المستخدمين في موضوع FriendServerEvent الذي يتلقى رسائل عندما يتم نقل أي مستخدم إلى خادم مختلف.


local MessagingService = game:GetService("MessagingService")
local Players = game:GetService("Players")
local MESSAGING_TOPIC = "FriendServerEvent"
Players.PlayerAdded:Connect(function(player)
-- الاشتراك في الموضوع
local subscribeSuccess, subscribeConnection = pcall(function()
return MessagingService:SubscribeAsync(MESSAGING_TOPIC, function(message)
print(message.Data)
end)
end)
if subscribeSuccess then
-- إلغاء الاشتراك من الموضوع عند تغيير نسب اللاعب
player.AncestryChanged:Connect(function()
subscribeConnection:Disconnect()
end)
end
end)

نشر الرسائل

استخدم MessagingService:PublishAsync() لمطابقة موضوع محدد ونشر رسالة إليه. على سبيل المثال، يستخدم نموذج الشيفرة التالي PublishAsync() لإعلام جميع المستخدمين عندما ينضم مستخدم إلى خادم جديد، بما في ذلك Player.Name الذي يمثل اسم عرض المستخدم وJobId، وهو معرف فريد لمثيل خادم اللعبة الجاري.


local MessagingService = game:GetService("MessagingService")
local Players = game:GetService("Players")
local MESSAGING_TOPIC = "FriendServerEvent"
Players.PlayerAdded:Connect(function(player)
-- نشر إلى الموضوع
local publishSuccess, publishResult = pcall(function()
local message = player.Name .. " انضم للخادم مع 'JobId' و هو " .. game.JobId
MessagingService:PublishAsync(MESSAGING_TOPIC, message)
end)
if not publishSuccess then
print(publishResult)
end
end)
©2026 شركة Roblox Corporation. تُعد منصّة Roblox، وشعار Roblox وشعار "توسيع حدود المخيلة"، من ضمن علاماتنا التجارية المسجّلة وغير المسجّلة في الولايات المتحدة وبلدان أخرى.