الدرس 1 من 10
نظام الأحداث
- 14 دقيقة
- 6 فحوص
- 3 تلميحات
- إلى المطلوب
هدف الدرس
الاشتراك في الحدث بـ on وإطلاقه بـ emit
الشرح
لا تستدعي سكربتات الألعاب بعضها مباشرة، بل تتواصل عن طريق الأحداث، فدخول لاعب، أو نفاد صحّته، أو التقاط عنصر، كل ذلك حدث يُطلَق، ويستمع إليه من يهمّه أمره. وبهذه الطريقة تعمل AddEventHandler وTriggerEvent في FiveM، و:Connect و:Fire في Roblox.
ويكفي لبناء هذا النظام جدول واحد، مفتاحه اسم الحدث وقيمته قائمة الدوال المستمعة، فتضيف on دالة إلى القائمة، وتمرّ emit على الدوال وتستدعيها بالوسائط.
والنقاط الثلاث ... في Lua تعني «كل الوسائط التي وصلت»، وتمرّرها كما هي هكذا: handler(...).
المطلوب
اكتب on(name, handler) وemit(name, ...) بحيث يمكن أن يكون للحدث الواحد عدّة مستمعين يُستدعَون بترتيب إضافتهم، وألّا يرمي الحدث خطأً إن لم يكن له مستمعون.
الفحوص
6 فحوص- الدالتان on وemit معرَّفتان
- المستمع يُستدعى بالوسيط
- عدّة مستمعين يُستدعَون بالترتيب
- كل الوسائط تصل إلى المستمع
- حدث بلا مستمعين لا يرمي خطأ
- المثال طبع الترحيب