Roblox Guidebookقاعدة المعرفة
العربية ⌄

التطوير / ROBLOX

ProximityPrompt في Roblox: متى يسمح الخادم بالتفاعل

تتبّع باباً تدريبياً من ظهور التلميح إلى تغيير مسموح للحالة. جهّز فحوص الشخصية والهدف والمسافة والتكرار، ثم سجّل شروط الاختبار ونتائجه بصورة واضحة.

آخر تحديث:

عرّف فعلاً مسموحاً واحداً أولاً #

استخدم نموذجاً مستقلاً صغيراً يحتوي باباً نسميه PracticeDoor. يكفي في التمرين الأول فتح مسموح وتسجيل النتيجة. اترك العملة والمخزون والحفظ الدائم خارج هذه المهمة حتى تعرف أي خطوة غيّرت الحالة. اكتب بجملة بسيطة من يمكنه فتح الباب وتحت أي شروط.

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

افصل التلميح عن القرار #

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

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

من المحاولة إلى فعل مسموحافتح الصورة بالحجم الكامل ↗
مخطط قرار أصلي. ظهور الواجهة ليس إذناً من الخادم.

حدّد معنى الحدث بدقة #

لـ ProximityPrompt أحداث متعددة. توثيق الأمان يذكر فحص مسافة مدمجاً على الخادم للحدث Triggered تحديداً. لا تنقل هذا الوصف إلى PromptButtonHoldBegan أو TriggerEnded. مراحل التفاعل المختلفة ليست أسباباً متبادلة لتغيير حالة اللعبة.

اكتب الحدث الذي يستقبله معالج الباب التدريبي وموضع اتخاذ القرار. ظهور التلميح أو بداية الضغط المستمر لا ينبغي أن يمنح مكافأة بمفرده. حتى مع Triggered تبقى شروط الميكانيكية الأخرى مهمة: شخصية مؤهلة وهدف متاح وحالة مطلوبة. لا يحتوي المقال معالجاً عاماً جاهزاً لكل التفاعلات.

وثّق هدف الخادم #

سجّل الباب المقصود وموقعه المتوقع والمرجع الذي يستخدمه الخادم للتعرف عليه. PracticeDoor اسم توضيحي؛ جزء آخر بالاسم نفسه لا يصبح هدفاً مسموحاً تلقائياً. إذا اختفى الباب أو خرج من البنية المتوقعة، ينبغي أن تنتهي العملية المخططة دون تعديل أهداف أخرى.

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

افحص الشخصية ومنطقة التفاعل #

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

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

فكّر في نقطة ثابتة #

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

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

ميّز التكرار عن المدة #

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

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

مرّ على الحالات واحدة واحدة #

ابدأ بالحالة التي تتوقع السماح بها في نموذجك، ثم غيّر شرطاً واحداً فقط: المسافة أو الإذن أو الإتاحة أو حالة الشخصية. سجّل حالة الباب قبل المحاولة وبعدها. بذلك تربط النتيجة بسبب محدد بدلاً من عدة إعدادات تغيرت معاً.

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

خطة اختبار البابافتح الصورة بالحجم الكامل ↗
خطة أصلية لحالتين وليست نتائج اختبار منفذ.
الحالةالتوقع المقترح
شخصية مؤهلة وقريبةفعل واحد مقصود
الإذن مفقودلا تغيير
الباب غير متاحلا تغيير
تكرار سريعتطبيق قاعدة التكرار على الخادم

سجّل نتيجة الخادم بوضوح #

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

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

حدّد حدود الاستنتاج #

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

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

السجلما يُحفظ
البدايةالشخصية والباب والشروط
الحدثالاسم الدقيق والسياق
القرارسبب القبول أو الرفض
التغييرالحالة الفعلية قبل وبعد

المصادر الأصلية

Roblox Creator Hub — Securing the client-server boundary
Roblox Creator Hub — ProximityPrompt API