تقدم حزمة ميزة المهام وظائف جاهزة لإنشاء مهام يمكن للاعبين إكمالها لتحقيق المكافآت والتقدم في لعبتك. يجب أن تحتوي جميع المهام على معرف، فئة، وقائمة من المهام التي يجب على اللاعبين إكمالها لإنهاء المهمة. ومع ذلك، يمكن أن تكون قائمة المهام فارغة، مما يسمح بالمطالبة بمكافآت المهمة على الفور.
باستخدام خيارات التخصيص في الحزمة، يمكنك تخصيص جميع المهام لتلبية متطلبات أسلوب اللعب الفريدة الخاصة بك، مثل:
- استهداف احتفاظ D7 و D30 من خلال إضافة أهداف متوسطة إلى طويلة الأجل وإحساس بالتقدم.
- زيادة التفاعل من خلال عرض الأنظمة المختلفة في لعبتك ومكافأة اللاعبين على التفاعل معها.

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

انقر على بلاطة حزمة ميزة النواة، ثم بلاطة حزمة ميزة المهام. يتم عرض كلا مجلدي الحزمة في نافذة المستكشف.
اسحب مجلدي الحزمة إلى ReplicatedStorage.
تعريف المهام
تتضمن كل مهمة قابلة للإكمال مجموعة من المهام التي يجب إنهاؤها لإكمال المهمة، وخيارات التكوين، وبيانات العرض الاختيارية، والتي يمكن تعريفها جميعًا داخل ReplicatedStorage.Missions.Configs.Missions، مع الأنواع المستخرجة من نص Types في نفس المجلد.
الحقول المطلوبة
الحقول التالية مطلوبة لكل مهمة.
| الاسم | النوع | الوصف |
|---|---|---|
| missionId | string | المفتاح الرئيسي لجدول المهام. يتم التعرف على جميع المهام من خلال سلسلة فريدة خاصة بها. |
| categoryId | string | يجب أن تنتمي المهام إلى فئة، ويتم تجميعها حسب الفئة في واجهة المستخدم. |
| tasks | table | قائمة من المهام التي يجب على اللاعب إنهاؤها لإكمال المهمة. |
شروط الفتح
بشكل افتراضي، يتم فتح المهام للاعبين تلقائيًا ويمكن إكمالها مرة واحدة فقط. ومع ذلك، يمكنك استخدام خيارات التكوين الاختيارية التالية لتغيير هذا السلوك.
| الاسم | النوع | الوصف |
|---|---|---|
| prerequisites | table | قائمة من معرفات المهام الأخرى التي يجب إكمالها قبل أن يمكن فتح المهمة. |
| manualOnly | bool | تعطيل الفتح التلقائي للمهمة. بدلاً من ذلك، يجب استدعاء دالة لفتح المهمة. يجب أيضًا استيفاء أي شروط فتح أخرى. |
| availableAfterUtc | bool | لا يمكن فتح المهمة قبل الوقت المحدد بتوقيت UTC. |
| availableBeforeUtc | bool | لا يمكن فتح المهمة بعد الوقت المحدد بتوقيت UTC. إذا تم فتحها ولكن لم تكتمل قبل هذا الوقت، ستفشل المهمة. |
| repeatable | bool | تفتح المهمة مرة أخرى بعد إكمالها. |
| repeatLimit | number | إذا كانت المهمة قابلة للتكرار، فلا يمكن تكرارها أكثر من هذا العدد من المرات. |
| repeatCooldownSeconds | number | إذا كانت المهمة قابلة للتكرار، فهناك تأخير قبل أن تصبح مفتوحة. |
| expireSeconds | number | إذا كانت المهمة مفتوحة ولم تكتمل خلال عدد الثواني المحدد، فسوف تفشل بدلاً من ذلك. |
| expireCountOffline | bool | إذا كانت المهمة تحتوي على expireSeconds وتم تعيين expireCountOffline على true، فسيتم احتساب الوقت الذي لا يكون فيه اللاعب فعليًا في اللعبة نحو انتهاء المهمة. |
البيانات الوصفية
تمتلك المهام بيانات وصفية تحدد كيفية عرضها في واجهة مستخدم المهام. يمكنك استخدام الحقول الاختيارية التالية لتخصيص بياناتها الوصفية.
| الاسم | النوع | الوصف |
|---|---|---|
| displayName | string | اسم لعرضه للمهمة في واجهة المستخدم بدلاً من missionId. |
| description | string | كتلة نصية أطول توفر معلومات أو سياق إضافي حول المهمة. |
| visibleAfterComplete | bool | إذا تم تعيينها على true، ستظهر المهمة في قائمة المهام حتى بعد إكمالها ولكن معلمة كمكتملة. |
| visibleAfterFailed | bool | إذا تم تعيينها على true، ستظهر المهمة في قائمة المهام حتى بعد فشلها ولكن معلمة كفاشلة. |
| visibleBeforeUnlocked | bool | إذا تم تعيينها على true، ستكون المهمة مرئية ولكن مقفلة في قائمة المهام قبل أن تكون متاحة للإكمال. |
| invisibleWhileActive | bool | إذا تم تعيينها على true، ستكون المهمة غير مرئية حتى أثناء التقدم الفعلي. |
| rewards | table | قائمة بمعلومات عرض المكافآت.
|
تعريف المهام
يمكن أن تحتوي كل مهمة على صفر أو أكثر من المهام. إذا كانت المهمة تحتوي على صفر من المهام، يمكن المطالبة بها على الفور بعد فتحها؛ إذا كانت المهمة تحتوي على واحدة أو أكثر من المهام، بمجرد إكمال المهام، يمكن للاعب جمع أي مكافآت مرتبطة بالمهمة. تحتوي كل مهمة على taskId، وهو المفتاح المرتبط بالمهمة لمهمة معينة.
تأتي المهام في نوعين:
- مهام مؤقتة - تتيح لك بدء وإيقاف المهمة في نقاط زمنية مختلفة. يجب أن يمر مقدار معين من الوقت بينما يكون مؤقت المهمة قيد التشغيل، ثم تكتمل المهمة.
- مهام عد - تتيح لك إضافة إلى أو تعيين تقدم المهمة. عندما يصل التقدم إلى قيمة محددة، تكتمل المهمة.
تشارك كلا نوعي المهام الحقول التالية:
| الاسم | النوع | الوصف |
|---|---|---|
| taskType | string | يحدد ما إذا كان نوع المهمة عد أو مؤقت. |
| counter | object | (اختياري) العداد الذي تتبعه هذه المهمة. العدادات هي تخزين دائم محدد للاعب لعدد أو مؤقت. يمكن أن تتبع مهام متعددة عدادًا واحدًا؛ على سبيل المثال، إذا كانت هناك أكثر من مهمة تتبع عدد العملات التي جمعها اللاعب، فيمكنها جميعًا مشاركة نفس عداد "العملات". يمكن أن تتبع هذه المهام بشكل مستقل العملات الجديدة المجمعة، بدءًا من الصفر، أو تواصل العد من قيمة العداد (جميع العملات التي تم جمعها بالفعل).
|
| metadata | object | (اختياري) معلومات حول كيفية عرض المهمة في واجهة المستخدم.
|
| callToAction | object | (اختياري) زر يقوم بتفعيل دالة رد نداء.
|
حقول مهام العد
تحتوي مهام العد على قيمة مطلوبة. عندما يتوافق تقدم المهمة مع هذا المبلغ، تكتمل المهمة.
| الاسم | النوع | الوصف |
|---|---|---|
| goalCount | number | (اختياري) التقدم المطلوب لإكمال المهمة. |
حقول مهام الوقت
تحتوي مهام الوقت على مقدار مستهدف من الوقت المنقضي، ويتم بدءها وإيقافها. عندما يتم الوصول إلى مقدار الوقت المستهدف، تكتمل المهمة.
| الاسم | النوع | الوصف |
|---|---|---|
| goalSeconds | number | عدد الثواني التي يجب أن تمر لإكمال المهمة. |
| startImmediately | bool | إذا كانت المهمة يجب أن تبدأ في عد الوقت بمجرد فتحها، بدلاً من فقط بعد بدءها. |
| includesOfflineTime | bool | إذا كانت المهمة يجب أن تشمل الوقت الذي يقضيه اللاعب أثناء عدم وجوده في اللعبة بنشاط. |
تكوين الفئات
لا يتعين تعريف الفئات بشكل صريح لاستخدامها، حيث تحتوي الفئة لمهمة على قيم افتراضية سيتم استخدامها. ومع ذلك، يمكنك تكوين هذه القيم في ReplicatedStorage.Missions.Configs.Categories لإضافة تأثيرات إضافية إلى الفئة. يتم التعرف على الفئات بواسطة CategoryIds الفريدة، نفس تلك المشار إليها في تكوين المهام.
| الاسم | النوع | الوصف |
|---|---|---|
| repeatDelaySeconds | number | (اختياري) إذا تم تعيينه، يتم إعادة تعيين جميع المهام في الفئة كلما مرت المدة المحددة، ويمكن فتحها وإكمالها ومطالبة مكافآتها مرة أخرى. هذا منفصل عن المهام القابلة للتكرار، والتي يمكن تكرارها ضمن تكرار فئة معينة. |
دمج منطق الخادم
ألق نظرة على ReplicatedStorage.Missions.Server.Examples.MissionsExample، الذي يوضح كيف سيتفاعل خادمك مع حزمة ميزة المهام.
تحتاج بشكل أساسي إلى توصيل أربعة أشياء بمجرد سحب حزمة ميزة المهام إلى لعبتك:
تعريف المهام في تكوين المهام الخاص بك.
إضافة منطق إلى لعبتك لتحديث تقدم المهام أو العدادات المرتبطة بالتقدم.
README-- يزيد التقدم في مهمة القفز مع مهمة القفزMissions.addProgressToTask(player, "Jumping", "Jumps", 1)-- يبدأ مؤقتًا في مهمة وقت المعركة مع مهمة الوقت في المعركةMissions.startTimedTask(player, "BattlingTime", "TimeInBattle")-- يوقف المؤقت في مهمة وقت المعركة مع مهمة الوقت في المعركةMissions.stopTimedTask(player, "BattlingTime", "TimeInBattle")-- يزيد التقدم في جميع المهام المرتبطة بعداد القفزاتCounterSystem.addCounter(player, "Jumps", 1)-- يبدأ المؤقت في جميع المهام المؤقتة المرتبطة بعداد الوقت في المعركةCounterSystem.startTimer(player, "TimeInBattle")-- يوقف المؤقت في جميع المهام المؤقتة المرتبطة بعداد الوقت في المعركةCounterSystem.stopTimer(player, "TimeInBattle")تعيين معالجات إكمال المهام، ومعالجات الفتح أو الفشل الاختيارية. استخدم معالج الإكمال لمكافأة المكافآت من المهمة في لعبتك.
READMElocal function completeHandler(player: Player, missionId: Types.MissionId)print(`{player} أكمل المهمة {missionId}`)-- مكافأة اللاعب بمكافآته.endMissions.setCompletionHandler(missionId, completeHandler)فتح المهام التي لم تفتح تلقائيًا. يضمن منطق حزمة ميزة المهام أن جميع متطلبات المهمة مستوفاة قبل أن تكتمل المهمة، وتكون مكافآتها قابلة للجمع.
READMEMissions.unlockMission(player, "Manual")
تكوين الثوابت
تعيش الثوابت الخاصة بحزمة النواة في مكانين:
تعيش الثوابت المشتركة في ReplicatedStorage.FeaturePackagesCore.Configs.SharedConstants.
الثوابت الخاصة بالحزمة، في هذه الحالة حزمة ميزة المهام، تعيش في ReplicatedStorage.Missions.Configs.Constants.
بالإضافة إلى ذلك، يمكنك العثور على سلاسل للترجمة مفصولة في موقع واحد: ReplicatedStorage.FeaturePackagesCore.Configs.TranslationStrings.
تخصيص مكونات واجهة المستخدم
من خلال تعديل كائنات الحزمة، مثل الألوان، الخط، والشفافية، يمكنك ضبط العرض المرئي لواجهة مستخدم المهام الخاصة بك. على سبيل المثال، في ReplicatedStorage.Missions.Configs.Constants، يمكنك تمكين SingleTaskMode لعرض شريط تقدم لمهمة مباشرة على المهمة نفسها للمهام التي تحتوي فقط على مهمة واحدة.
بالإضافة إلى ذلك، إذا كانت لعبتك تحتوي بالفعل على واجهة مستخدم موجودة ترغب في دمجها مع حزمة ميزة المهام، فإن ModuleScript العميل MissionsClient يحتوي على جميع الوظائف اللازمة للحصول على معلومات حول مهام اللاعب المرسلة من الخادم.