مكافآت التفاعل

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

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

احصل على الحزمة

  1. من قائمة نافذة في الاستوديو أو شريط أدوات علامة التبويب الرئيسية، افتح صندوق الأدوات.

  2. في نافذة صندوق الأدوات، انقر على علامة التبويب المخزون. يتم عرض فرز نماذجي.

    نافذة صندوق أدوات الاستوديو مع علامة التبويب المخزون مميزة.
  3. انقر على بلاطة حزمة ميزات Core، ثم بلاطة حزمة ميزات مكافآت التفاعل. يتم عرض كلا مجلدات الحزمة في نافذة المستكشف.

  4. اسحب المجلدات إلى ReplicatedStorage.

تهيئة الحزمة

نقل الحزم إلى ReplicatedStorage واختبار لعبتك يقوم بتشغيل البرنامج النصي EngagementRewardsExample في ReplicatedStorage.EngagementRewards.Server.Examples.

يظهر هذا البرنامج النصي كيفية تهيئة الحزمة للاستخدام في لعبتك، والتي تتضمن استدعاء عدة برامج نصية وحدات وتعريف دالة rewardClaimedHandlerFunction() التي تعطي في النهاية المكافأة (المكافآت) للاعب.

يجب أن تعيد هذه الدالة قيمة منطقية. في البرنامج النصي المثال، يمكنك أن ترى أنها لا تعطي أي مكافآت للاعب؛ إنها فقط تطبع اللاعب، المكافأة، والكمية التي يتم المطالبة بها.

EngagementRewardsExample
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EngagementRewardsConfig = require(ReplicatedStorage.EngagementRewards.Configs.EngagementRewardsConfig)
local EngagementRewards = require(ReplicatedStorage.EngagementRewards.Server.EngagementRewards)
local EngagementRewardsUtils = require(ReplicatedStorage.EngagementRewards.Utils.EngagementRewardsUtils)
local Types = require(ReplicatedStorage.EngagementRewards.Configs.Types)
-- استبدل هذه الدالة بمعالج المكافآت الخاص بك
-- يجب أن تتعامل هذه الدالة مع حدث المطالبة بالمكافأة للـ rewardId الممرر
local function rewardClaimedHandlerFunction(player: Player, rewardId: RewardId, quantity: number): (boolean, string?)
print(`تم المطالبة بالمكافأة {rewardId} من قبل {player} بكمية {quantity}`)
return true
end
-- المزيد

يمكنك إما تعديل هذا البرنامج النصي مباشرة أو نقله إلى ServerScriptService إذا كان هذا هو الموقع المفضل لديك لشفرة الخادم. كما هو، البرنامج النصي مفيد فقط لأغراض الاختبار.

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

إضافة المكافآت والمعايير

تحدث معظم تخصيصات المكافآت داخل ReplicatedStorage.EngagementRewards.Configs.EngagementRewardsConfig. يحدد هذا البرنامج النصي الوحدوي المكافأة والمتطلبات لفتحها.

يمكنك رؤية جميع إعلانات الأنواع الكاملة (أو إضافة أنواع جديدة) في ReplicatedStorage.EngagementRewards.Configs.Types، ولكنك ربما تحتاج فقط للعمل مع EngagementRewardsConfig. تتضمن حزمة الميزات نوعين من المكافآت: Time وDaily.

local engagementRewardsConfig: Types.EngagementRewardsConfig = {
[Types.RewardType.Time] = {
tabDisplayName = "الوقت",
tabOrder = 1,
description = "استمر في اللعب لفتح المكافآت!",
rewards = {
MinutesPlayed1 = {
icon = 116913478160966,
displayName = "رمح الجليد",
requiredSecondsInGame = 1 * 5,
},
-- المزيد
[Types.RewardType.Daily] = {
tabDisplayName = "يومي",
tabOrder = 2,
description = "العب يوميًا لفتح المكافآت!",
rewards = {
DailyStreak1 = {
icon = 116913478160966,
displayName = "رمح الجليد",
requiredDaysVisitedStreak = 1,
effect = Types.RewardEffect.Valuable,
},
-- المزيد

تتطلب كلا نوعي المكافآت أيقونة، وهي معرف أصل Roblox لصورة (ليس ديكال). من المحتمل أنك تريد أيضًا اسم عرض للاستخدام في واجهة المستخدم. حدد quantity للقيم غير 1. يمكنك أيضًا اختيار تعيين مكافأة كقيمة (effect = Types.RewardEffect.Valuable) لمنحها إطار خلفية مختلف في واجهة المستخدم.

VariableTypeDescriptionDefaultRequired
iconNumberمعرف أصل Roblox لأيقونة واجهة المستخدم.N/Aنعم
displayNameStringاسم للمكافآت للاستخدام في واجهة المستخدم.الـ RewardIdلا
quantityNumberعدد العناصر التي سيتم مكافأتها.1لا
effectRewardEffectالتأثير البصري للاستخدام في واجهة المستخدم. انظر تخصيص واجهة المستخدم.Types.RewardEffect.Defaultلا

مكافآت الوقت

تفتح مكافآت Time بعد عدد معين من الثواني في اللعبة. خصص هذه الأرقام لتلبية احتياجاتك. قد تستخدم أرقام صغيرة للاختبار السهل، وفي اللعبة المنشورة، تمنح مكافأة بعد 10 دقائق، وأخرى بعد 30 دقيقة، وأخرى بعد ساعة، وهكذا.

تجعل الضرب الأرقام بالثواني أسهل للبشر للعمل بها، لذا لمدة ساعتين، قد تفضل تحديد 2 * 60 * 60 بدلاً من 7200.

VariableTypeDescriptionDefaultRequired
requiredSecondsInGameNumberعدد الثواني (عدد صحيح موجب) التي يجب أن يقضيها اللاعب في اللعبة لكسب المكافأة.N/Aنعم

مكافآت يومية

تفتح مكافآت Daily بعد عدد معين من تسجيلات الدخول اليومية المتتالية. على سبيل المثال، في اليوم الأول الذي يسجل فيه اللاعب الدخول، قد تعطيهم ثلاث جرعات أو لفافة قرفة. في الأيام التالية، قد تكافئهم بمستهلكات أكثر قيمة، تليها عنصر دائم، مثل صنارة صيد جديدة، بعد سبعة أيام متتالية.

VariableTypeDescriptionDefaultRequired
requiredDaysVisitedStreakNumberعدد الأيام المتتالية التي يجب أن يتصل فيها اللاعب باللعبة لكسب المكافأة.N/Aنعم

هناك خياران إضافيان لتكوين مكافآت يومية متاحة في DailyRewardTabConfig.

[Types.RewardType.Daily] = {
tabDisplayName = "يومي",
tabOrder = 2,
description = "العب يوميًا لفتح المكافآت!",
isHiddenOnJoin = true,
isAlignedToStreakResetTime = true,
rewards = {
DailyStreak1 = {
icon = 116913478160966,
displayName = "رمح الجليد",
requiredDaysVisitedStreak = 1,
},
-- المزيد
VariableTypeDescriptionDefaultRequired
isHiddenOnJoinBooleanعندما تكون صحيحة، لا تظهر المكافآت تلقائيًا عند الانضمام إلى اللعبة. عندما تكون خاطئة، تظهر المكافآت تلقائيًا عند الانضمام إلى اللعبة إذا كان لدى اللاعب مكافأة يومية جديدة للمطالبة بها.خاطئةلا
isAlignedToStreakResetTimeBooleanعندما تكون صحيحة، يمكن المطالبة بمكافآت اليوم الثاني بعد 24 ساعة من وقت المطالبة باليوم الأول. عندما تكون خاطئة، يمكن المطالبة بمكافآت اليوم الثاني في منتصف الليل الأول بعد وقت المطالبة باليوم الأول. على سبيل المثال، إذا سجل اللاعب الدخول في الساعة 11:00 مساءً (23:00) وطالب بمكافأته في اليوم الأول، تعني القيمة الصحيحة أنهم لا يمكنهم المطالبة بمكافأة اليوم الثاني حتى الساعة 11:00 مساءً في اليوم التالي. تعني القيمة الخاطئة أنهم يمكنهم المطالبة بمكافأة اليوم الثاني في الساعة 12:00 صباحًا (00:00)، بعد ساعة واحدة. تكون المكافآت لليوم الثالث وما بعده متاحة دائمًا بعد 24 ساعة من وقت المطالبة باليوم السابق.خاطئةلا

تخصيص واجهة المستخدم

في القسم السابق، قد تكون قد لاحظت الحقول tabDisplayName وtabOrder وdescription، التي تسمح بتخصيص أساسي لواجهة المستخدم. يمكنك أيضًا العثور على بعض سلاسل واجهة المستخدم في ReplicatedStorage.FeaturePackagesCore.Configs.TranslationStrings.

  • لتحديد خلفية مكافأة جديدة باستخدام المتغير effect، أضف إطارًا إلى ReplicatedStorage.EngagementRewards.Objects.RewardItemFrames. ثم أضف اسم الإطار إلى جدول Types.RewardEffect في ReplicatedStorage.EngagementRewards.Configs.Types.

  • لمزيد من التخصيص الشامل، قم بتعديل الكائنات في ReplicatedStorage.EngagementRewards.Objects. على سبيل المثال، قد تقوم بتعديل BackgroundColor3 لإطار RewardsHudButton.Background أو Color لـ FooterContentFrame.ClaimableUIGradient.

  • نقطة الدخول لواجهة المستخدم هي البرنامج النصي ReplicatedStorage.EngagementRewards.Client.UIController، الذي يحصل على الكائنات اللازمة ويهيئ واجهة المستخدم. إذا قمت بإضافة أو إعادة تسمية كائنات على المستوى الأعلى (بدلاً من إضافة أطفال فقط أو تعديل الخصائص)، فمن المحتمل أنك بحاجة إلى تحديث الشفرة في هذا المجلد للتعامل معها.

©2026 شركة Roblox Corporation. تُعد منصّة Roblox، وشعار Roblox وشعار "توسيع حدود المخيلة"، من ضمن علاماتنا التجارية المسجّلة وغير المسجّلة في الولايات المتحدة وبلدان أخرى.