المستخدمين ومعرفات المستخدم محدودة المجال

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

تقوم Roblox بتعيين معرف مستخدم فريد محدود المجال لكل لعبة أو تطبيق يتفاعل معه المستخدم. تشرح هذه الصفحة كيفية عمل تعريف المستخدم المحدود المجال وكيفية استخدام نوع User في رمز لعبتك.

المفاهيم التالية هي الأساس في تعريف المستخدم:

المفهومالوصف
المستخدمحساب دائم على Roblox.
اللاعبتمثيل المستخدم داخل نموذج بيانات لعبة قيد التشغيل (راجع اللاعبون).
نوع بيانات Userنوع بيانات يمثل هوية المستخدم داخل نطاق معين. هذا هو المعرف القياسي للإشارة إلى المستخدمين في رمز اللعبة.
معرف المستخدم محدود المجالمعرف رقمي يحدد بشكل فريد مستخدمًا داخل نطاق معين. هذا المعرف مختلف في كل لعبة وتطبيق.

معرفات المستخدم محدودة المجال

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

أنواع النطاق تمثلها Enum.DomainType:

نوع النطاقمحدد إلىمثال
Enum.DomainType.EXPERIENCEلعبة معينة (كون)معرف اللاعب في لعبتك
Enum.DomainType.OAUTHتطبيق OAuth معينمعرف المستخدم في أداتك الخارجية

كيف تعمل المعرفات محدودة المجال

عندما ينضم لاعب إلى لعبتك، يتلقى معرف مستخدم محدود المجال يكون فريدًا لتلك اللعبة. اللاعب نفسه الذي ينضم إلى لعبة مختلفة يحصل على معرف مستخدم محدود المجال مختلف. وهذا يعني:

  • معرفات المستخدم محدودة المجال هي أعداد صحيحة، مشابهة لمعرفات المستخدم العالمية الموجودة.
  • لا يتعارض معرف المستخدم محدود المجال مع أي معرف شخصي عالمي موجود.
  • قد يظهر نفس القيمة الرقمية في مجالات مختلفة لمستخدمين مختلفين. المفتاح الفريد هو مجموعة نوع النطاق، معرف النطاق، ومعرف المستخدم محدود المجال.

سيناريو المثال

توضح المثال التالي كيف تشير ألعاب مختلفة إلى نفس المستخدم:

السيناريوسياق المستخدممعرف المستخدم الذي تراه اللعبة
المستخدم يتصل بـ اللعبة Aلاعب عائد (زار قبل معرفات النطاق)123 (معرف عالمي، غير متغير)
المستخدم يتصل بـ اللعبة Bأول زيارة بعد طرح معرفات النطاق500789 (معرف المستخدم محدودة المجال للعبة B)
المستخدم يتصل بـ اللعبة Cأول زيارة بعد طرح معرفات النطاق302441 (معرف المستخدم محدودة المجال للعبة C)

اللاعبون العائدون

إذا كان اللاعب قد انضم بالفعل إلى لعبتك قبل طرح المعرفات المحدودة، فإنه يحتفظ بمعرفه العالمي الأصلي في تلك اللعبة. يضمن ذلك استمرار عمل مفاتيح تخزين البيانات الحالية، لوحات المتصدرين، والمخازن دون أي تغييرات.

العمل مع نوع المستخدم

User هو الطريقة القياسية لتحديد المستخدمين في رمز اللعبة. يحمل قيمة User معرف المستخدم محدودة المجال جنبًا إلى جنب مع نوع النطاق ومعرف النطاق، بحيث يسير سياق الهوية دائمًا مع المعرف. للحصول على تفاصيل API الكاملة، راجع مرجع User.

الحصول على مستخدم من لاعب

الطريقة الرئيسية للحصول على User هي من خلال Player المتصل عن طريق Player.User:


local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
local user = player.User
print("معرف المستخدم النطاق:", user.Id)
print("نوع النطاق:", user.DomainType)
print("معرف النطاق:", user.DomainId)
end)

إنشاء مستخدم من معرف

لإنشاء User من معرف مستخدم معروف داخل اللعبة الحالية، استخدم User.fromId():


local user = User.fromId(knownUserId)

استخدام المستخدم مع واجهات API للمحرك

تقبل واجهات API للمحرك التي تقبل معلمة معرف المستخدم أيضًا قيم User مباشرة. يُوصى باستخدام User:


-- كلا الشكلين يعمل:
BadgeService:AwardBadge(player.User, badgeId) -- موصى به
BadgeService:AwardBadge(player.UserId, badgeId)

-- كلا الشكلين يعمل:
local target = Players:GetPlayerByUserId(player.User) -- موصى به
local target = Players:GetPlayerByUserId(someUserId)

عند تمرير معرف مستخدم رقمي إلى واجهة API للمحرك التي تقبل معرفات المستخدم، يتم تلقائيًا تغليفه في User داخليًا.

واجهات API للمحرك التي تعيد معرفات المستخدم

تستمر واجهات API للمحرك التي تعيد معرفات المستخدم الرقمية في استخدام نفس أسماء الحقول والأنواع. كل معرف معاد هو معرف عالمي أو معرف مستخدم محدودة المجال اعتمادًا على ما إذا كان المستخدم قد انضم إلى اللعبة قبل أو بعد طرح معرفات النطاق:

  • اللاعبون العائدون (انضموا أولاً قبل إطلاق معرفات النطاق) — ترجع واجهة API معرف المستخدم العالمي.
  • اللاعبون الجدد (الانضمام الأول بعد إطلاق معرفات النطاق) — ترجع واجهة API معرف المستخدم محدودة المجال.

كلا من معرّفات المستخدم العالمية ومحدودة المجال هي أعداد صحيحة قياسية لا تتعارض، لذا فإن الشيفرة الموجودة التي تقرأ هذه الحقول الرقمية تستمر في العمل.

تخزين هوية المستخدم

لمفاتيح تخزين البيانات داخل لعبة واحدة، استخدم user.Id مباشرة:


local key = ("player_%d"):format(player.User.Id)
PlayerDataStore:SetAsync(key, data)

بالنسبة للقيم التي قد تقرأها أنظمة أخرى أو تحتاج إلى سياق المجال الكامل، قم بتسلسل User باستخدام ToString():


local encoded = player.User:ToString()
SomeDataStore:SetAsync("support_ticket_user", encoded)
-- لاحقًا، استعادة من السلسلة
local user = User.fromString(encoded)

للحصول على مزيد من التفاصيل حول ضمانات التسلسل، راجع مرجع User.

أفضل الممارسات

  • استخدم Player.User كمحدد قياسي في الشيفرات الجديدة.
  • استخدم ToString() وfromString() عند الحفاظ على أو نقل قيمة User.
  • لا تستخدم معرف مستخدم رقمي من نطاق واحد لتحديد مستخدم في نطاق آخر.

متى تستخدم المستخدم أو اللاعب

  • استخدم Player للعمليات داخل الخادم: حركة الشخصية، واجهة المستخدم، الانتقال، الدردشة، المخزون.
  • استخدم User للهوية التي تستمر بعد الجلسة: تخزين البيانات، أدوات Open Cloud، الإشارات عبر الألعاب.
©2026 شركة Roblox Corporation. تُعد منصّة Roblox، وشعار Roblox وشعار "توسيع حدود المخيلة"، من ضمن علاماتنا التجارية المسجّلة وغير المسجّلة في الولايات المتحدة وبلدان أخرى.