العودة إلى المدونة
Tutorial2 دقيقة قراءة

التصديرات والأحداث في FiveM: التواصل بين الموارد

اتقن تصدير الأحداث والمحفزات في FiveM. بناء واجهات برمجة تطبيقات نظيفة بين الموارد، تجنب الأنماط السيئة واتباع أمثلة من أفضل السكربتات مفتوحة المصدر.

Agency Scripts

المؤسس والمطور الرئيسي في Agency Scripts

الأحداث مقابل الصادرات: متى تستخدم أيهما

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

الأحداث على الخادم والعميل

تتدفق الأحداث في FiveM في اتجاهات محددة. TriggerServerEvent يرسل البيانات من العميل إلى الخادم، حيث يمكن التعامل معها بأمان. TriggerClientEvent يرسل البيانات من الخادم إلى عميل واحد أو جميع العملاء باستخدام معرف مصدر اللاعب أو -1 للبث. الأحداث المحلية التي يتم تشغيلها مع TriggerEvent تبقى ضمن نفس سياق التنفيذ. قم دائمًا بتسجيل أحداث الشبكة مع RegisterNetEvent قبل إضافة المعالجات، وتذكر أن أي حدث مسجل على العميل يمكن أن يتم تشغيله من قبل الغشاشين باستخدام المحقنات.

تأمين أحداثك

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

العمل مع الصادرات

تسمح التصديرات لمورد واحد بكشف وظائف يمكن للمصادر الأخرى استدعاؤها مباشرة. تقوم بتعريف التصديرات في fxmanifest.lua وطبقها في ملفات السكريبت الخاصة بك. عندما يستدعي مورد آخر exports['your-resource']:YourFunction(args)، ينفذ بشكل متزامن ويعيد النتيجة. هذا مفيد بشكل خاص لجسور الأُطُر، مكتبات الأدوات المشتركة، والوصول إلى البيانات من سكريبتات الهاتف، أنظمة الجرد، أو مديري الوظائف دون ربط الموارد بشكل وثيق عبر الأحداث.

ردود النداء وأنماط Async

تطبق العديد من أُطُر FiveM أنظمة رد النداء التي تجمع بين الأحداث ومعالجة الاستجابة. يستخدم QBCore QBCore.Functions.CreateCallback على الخادم و QBCore.Functions.TriggerCallback على العميل. لدى ESX نمط مشابه مع ESX.RegisterServerCallback. تتيح هذه الاستدعاءات العكسية للعميل طلب البيانات من الخادم واستلامها في دالة رد نداء، مما يجسر الفجوة بين الأحداث غير المتزامنة والكود الذي يشعر بأنه متزامن. فهم هذه الأنماط ضروري عند العمل مع استعلامات قاعدة البيانات أو فحوصات الجرد التي تتطلب سلطة الخادم.

أفضل الممارسات لتواصل الموارد

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

جاهز للبدء؟

احصل على السكربتات من متجرنا، أو انضم إلى Discord للدعم والتحديثات ونظرة على ما هو قادم.