عند انضمام مستخدم Roblox إلى لعبة، يتم تمثيله كـ Player في DataModel. يحتوي كائن Player هذا على معلومات عن المستخدم تكون عالمية عبر الألعاب، مثل اسم المستخدم وقائمة الأصدقاء وشخصية الصورة الرمزية المحفوظة، بالإضافة إلى الخصائص والأساليب والأحداث التي تؤثر على دورة حياة المستخدم بين الانضمام والمغادرة من اللعبة. كما أن كل كائن Player يحتوي أيضًا على أربعة حاويات مهمة يمكنك استخدامها لتخصيص تجربة المستخدم: Backpack وStarterGear وPlayerGui وPlayerScripts.
كما أن كل Player يكشف عن خاصية Player.User، وهي قيمة User تمثل هوية اللاعب ضمن نطاق المجال في اللعبة الحالية. لمزيد من المعلومات حول كيفية عمل تحديد الهوية للمستخدم، بما في ذلك معرّفات المستخدمين ضمن نطاق المجال ونوع User، انظر المستخدمون ومعرّفات المستخدمين ضمن نطاق المجال.

دورة الحياة
تحتوي خدمة Players على جميع مثيلات Player في لعبة. يمكن لكل من البرامج النصية على جانب العميل والخادم الاتصال بأحداث Players.PlayerAdded وPlayers.PlayerRemoved لأداء إجراءات استجابةً لدورة حياة كائن Player. يمكن للبرامج النصية أيضًا الاتصال بأحداث Player.CharacterAdded وPlayer.CharacterRemoving لأداء إجراءات متعلقة باللعب عندما تظهر الشخصية أو تختفي.
انضمام المستخدم
عندما يتصل عميل مستخدم بلعبة، يتم تشغيل حدث Players.PlayerAdded ويمرر كائن Player للمستخدم الذي انضم؛ يمكنك استخدام هذا الكائن لأغراض عديدة مثل تحميل بيانات المستخدم من مخزن بيانات أو تعيين اللاعب إلى فريق.
على سبيل المثال، لتحميل بيانات مستخدم عند انضمامه إلى اللعبة، استخدم حدث PlayerAdded في Script لاسترجاع بيانات المستخدم المخزنة في مخزن البيانات تحت معرّف المستخدم:
Script in ServerScriptService
local DataStoreService = game:GetService("DataStoreService")
local Players = game:GetService("Players")
local playerDataStore = DataStoreService:GetDataStore("PlayerData")
Players.PlayerAdded:Connect(function(player)
local userId = player.UserId
-- قراءة مفتاح المخزن
local getSuccess, currentData = pcall(function()
return playerDataStore:GetAsync(userId)
end)
if getSuccess then
print(currentData)
end
-- قم بعمل إجراءات إضافية مع currentData
end)
ظهور الشخصية
بشكل افتراضي، يمثل نموذج Player.Character الخاص بالمستخدم صورة منصته وPlayers.CharacterAutoLoads تكون true، مما يعني أن نموذج الشخصية يظهر تلقائيًا عندما ينضم المستخدم إلى لعبة.
عندما تظهر شخصية مستخدم Player.Character، يتم استنساخ Scripts وLocalScripts في StarterCharacterScripts إلى نموذج الشخصية ويتم تشغيل حدث Player.CharacterAdded. يمرر هذا الحدث نموذج الشخصية الجديد إلى مستمعيه، والذي يمكنك استخدامه للعثور على كائن Humanoid للشخصية وتعديل سلوكه. على سبيل المثال، يمكنك استخدام Humanoid:ApplyDescription() لتغيير مظهر الصورة الرمزية.
اختفاء الشخصية
عندما يموت Humanoid الخاص باللاعب، يقوم الخادم تلقائيًا بإزالة نموذج الشخصية بعد المدة المحددة من قبل Players.RespawnTime. يمكنك بعد ذلك استخدام حدث Player.CharacterRemoving لإعادة تعيين كائنات أخرى أو تحديث البيانات المرتبطة بالشخصية.
مغادرة المستخدم
عندما ينفصل عميل مستخدم عن لعبة، يقوم الخادم بتدمير كائن Player المرتبط به داخل خدمة Players. في هذه المرحلة، يتم تشغيل حدث Players.PlayerRemoving ويمرر كائن Player للمستخدم الذي انفصل. يمكنك استخدام هذا لأغراض عديدة مثل حفظ بيانات المستخدم أو إزالة إحصائيات اللاعب من لوحة النتائج أو تدمير النماذج التي أنشأها اللاعب في اللعبة.
تستمع المثال التالي Script لحدث PlayerRemoving وتحاول حفظ بيانات المستخدم في مخزن البيانات تحت معرّف المستخدم:
Script in ServerScriptService
local DataStoreService = game:GetService("DataStoreService")
local Players = game:GetService("Players")
local playerDataStore = DataStoreService:GetDataStore("PlayerData")
Players.PlayerRemoving:Connect(function(player)
local userId = player.UserId
-- الحصول على حالة بيانات اللاعب في اللعبة
local currentData = getCurrentData(player)
-- حفظ إلى مخزن البيانات
local setSuccess, errorMessage = pcall(function()
playerDataStore:SetAsync(userId, currentData)
end)
if not setSuccess then
warn(errorMessage)
end
end)
الحاويات
يحتوي كل كائن Player الذي يمثل عميل مستخدم على عدة حاويات مهمة: Backpack وStarterGear وPlayerGui وPlayerScripts. أثناء وقت تشغيل اللعبة، تقوم عدة حاويات في نموذج البيانات "التحرير" بنسخ محتوياتها إلى هذه الحاويات Player، بما في ذلك StarterGui إلى PlayerGui وStarterPack إلى Backpack وStarterPlayerScripts إلى PlayerScripts.

تشكل كائنات Tool في Backpack جرد اللاعب وتظهر كأزرار أيقونات في أسفل الشاشة. راجع أدوات في اللعبة لمزيد من المعلومات.
كما هو موضح أعلاه، يتم نسخ محتويات StarterPack وStarterGear الخاص باللاعب إلى Backpack عندما تظهر الشخصية الخاصة باللاعب. عندما تموت الشخصية، يدمر العميل Backpack ويستبدله بآخر جديد.
لإيقاف تشغيل واجهة المستخدم الافتراضية للحقيبة في Roblox واستبدالها بأخرى خاصة بك، قم باستدعاء StarterGui:SetCoreGuiEnabled() في LocalScript كما هو موضح في تعطيل واجهة المستخدم الافتراضية.
حظر المستخدمين
لضمان السلوك اللائق واللعب العادل في ألعابك، يمكنك حظر المستخدمين الذين ينتهكون القواعد أو إرشادات المجتمع. يمكنك تعديل فترات الحظر، ورسائل الحظر، وحتى تمديد الحظر لحسابات بديلة محتملة. عند استخدام هذه الميزة، يجب عليك اتباع إرشادات الحظر والرسائل.
لديك عدة خيارات للعمل مع الحظر:
- تحتوي كل صفحة لعبة على Creator Hub على لوحة معلومات الحظر.
- للاستخدام البرمجي مع واجهة برمجة التطبيقات للمحرك، انظر Players:BanAsync().
- لـ Open Cloud، انظر الحظر والحجب.
حجب الأجهزة
بالإضافة إلى حظر حساب، يدعم Players:BanAsync() حجب الأجهزة من خلال حقل ApplyDeviceBlock في جدول الإعدادات. عندما تحظر مستخدمًا متصلًا حاليًا بلعبتك مع تعيين ApplyDeviceBlock على true، يتم أيضًا حجب الجهاز المرتبط بذلك المستخدم من الانضمام مرة أخرى لمدة 24 ساعة. تضيف هذه الخيار احتكاكًا ضد التهرب من الحظر؛ لا يستطيع اللاعبون المحظورون الانضمام مجددًا على الفور من حساب جديد على نفس الجهاز.
- تطبيق حجب الجهاز حاليًا ينطبق فقط على اللاعبين على سطح المكتب (Windows وmacOS). لا ينطبق على الأجهزة المحمولة أو أجهزة التحكم.
- لا ينتشر حجب الجهاز كحظر على أي حسابات أخرى استخدمت الجهاز.
- استدعاء واجهة برمجة التطبيقات لفك الحظر على المستخدم المتأثر يزيل على الفور أي حجب جهاز نشط مرتبط بجهاز ذلك المستخدم، مما يسمح له بالانضمام مرة أخرى إلى اللعبة.
إرشادات الحظر
عند تنفيذ الحظر في لعبتك، التزم بالإرشادات التالية:
- يجب ألا تتعارض قواعد اللعبة مع معايير المجتمع وشروط الاستخدام الخاصة بـ Roblox. على سبيل المثال، لا يمكنك إنشاء قاعدة لعبة تستبعد شخصًا بسبب جنسه، حيث أن ذلك ينتهك سياسة Roblox بشأن التمييز، والألفاظ النابية، وخطاب الكراهية.
- يجب أن يوضح المبدعون قواعد لعبتهم في مكان يمكن لجميع المستخدمين الوصول إليه.
- يجب على المبدعين تطبيق قواعد لعبتهم بشكل عادل وألا تستهدف بشكل تعسفي بعض المستخدمين.
- يمكن للمستخدمين الطعن أمام المبدعين مباشرة إذا اعتقدوا أن حظرهم كان غير صحيح. لن تتوسط Roblox في هذه الطعون، ما لم يعتقد المستخدم أن قواعد اللعبة للمبدع أو تنفيذ قواعده تنتهك معايير المجتمع.
- يمكن لـ Roblox تعديل لعبة إذا كان هناك سبب للاعتقاد بأن قواعد لعبة المبدع أو تنفيذ قواعده تنتهك معايير المجتمع.
إرشادات الرسالة
عند حظر مستخدم، يتلقى نموذج خطأ يعرض معلومات مثل مدة الحظر والسبب. في الرسالة المصفاة نصيًا، يمكنك تضمين معلومات إضافية مثل معلومات الاستئناف أو الاتصال طالما أنك تلتزم بـ معايير المجتمع.
على سبيل المثال، في رسائل الحظر الخاصة بك، يُسمح لك بالإشارة إلى أسماء العلامات التجارية والمنصات:
- "زر موقع Discord في مجموعةي/صفحة اللعبة"
- "راسلني على Twitter أو X"
لا يُسمح بالإشارة إلى المعلومات الشخصية أو الروابط المباشرة في حقل الرسالة هذا. يشمل ذلك نشر اسم مستخدم أو مقبض محدد، أو توفير رابط مباشر إلى خادم Discord أو حساب X.