واجهة برمجة رسومية سهلة الاستخدام مستوحاة من IMGUI لرسم قوائم الإعدادات داخل اللعبة لتعديلات REF في لعبة MHRise
واهوووكان هذا مشروعًا صعبًا بالتأكيد
هذا الشقي مليء بالسحر الأسود. *يصفع مستودع GitHub*على أية حال:
~ماذا يفعل؟~
حسنًا، لا قيمة كبيرة له وحده.
لكن بين أيدي مؤلفي التعديلات، يمكن إضافة قوائم الإعدادات مباشرةً إلى قائمة الخيارات داخل اللعبة عبر واجهة برمجة تطبيقات بسيطة.
وظائف الـ API مشابهة جدًا لـ imgui، مع بعض التحذيرات*~ماذا عليّ أن أفعل؟~
ما عليك سوى تثبيت التعديل كما تفعل مع أي تعديل آخر من REFramework.
إذا كنت لا تعرف كيفية فعل ذلك، فربما لا ينبغي أن تكون هذه أول تجربة لك.
بمجرد الوصول إلى المكان الصحيح، يجب أن يضيف تلقائياً فئة "التعديلات" إلى قائمة الخيارات.
باستخدام تعديلات REF الأخرى المدعومة، ستظهر الإعدادات هناك مباشرةً.
لمؤلفي التعديلات:قم بتنزيل مثال تطبيق التعديل من الملفات، وسيساعدك ذلك على البدء بسهولة تامة.
لمزيد من التفاصيل حول واجهة البرمجة، يمكنك الاطلاع على صفحة GitHub.
أعدك بأن استخدامه سهل تقريبًا مثل دوال imgui المدمجة، وسيكون من الرائع رؤية المجتمع يضيف قوائم!
ما عليك سوى طلب الحزمة واستخدام واجهة برمجة التطبيقات مثل imgui.
يمكنك اختياريًا التحقق مما إذا كان المستخدم قد قام بتثبيت الحزمة، ودعم القوائم اختياريًا بحيث لا تضطر إلى إجبار المستخدمين على تثبيتها. لكن سيكون من الجيد لو أمكنك وضع علامة على هذا الملف كملف مطلوب.أرجو منك ألا تقوم بإعادة توزيع هذه التعديلات مع تعديلاتك الخاصة، رغم أن ذلك قد يكون مريحًا.
لقد عملت بجد على هذا، ولكن قد أحتاج أيضًا إلى تحديث بعض الأمور هنا، ولن ترغب في وجود إصدارات متضاربة بين التعديلات المختلفة.
أرجو إبلاغي إن قمت بإصدار تعديل (مود) باستخدام هذه القائمة، حتى أتمكن من إضافتها إلى قائمة التعديلات المدعومة!*القيود
للأسف، نظرًا لأن هذا يستخدم قوائم اللعبة الأصلية، فإننا مقيدون بما يمكن للعبة فعله بشكل طبيعي.
من الواضح أنه لا توجد وظيفة رسم متقدمة.
فقط المقلدون imgui، في الواقع وظائف "الرسم" هي استدعاءات رد لجلب البيانات من واجهة اللعبة، يمكنك إنشاء قوائم ديناميكية لكن حاول ألا تفعل أي شيء مبالغ فيه.
لن يكون مناسبًا لكل تعديل، لكن إذا كنت تحتاج فقط إلى بعض الإعدادات البسيطة، فأرجو أن تضعه في اعتبارك!~الاعتمادات~بفضل (Stracker) لصنعه تعديلات رائعة (وأيضًا [بدون إذن]) للسماح لي بالاستعانة بأحد تعديلاته من أجل الإجراءات المتزامنة ورسائل النظام. وكذلك، لإضافته الفعلية للإجراءات المتزامنة إلى (REF).
وبالطبع، الشكر موصول لـ praydog على كل ما يبذله من جهد في REFramework، وعلى تقديم بعض التوجيهات بشأن هذا الأمر.
المساهمات:
raffRun - تلميحات الأدوات ذات الالتفاف التلقائي
ستراكر - إيجاد طريقة لقراءة بيانات GUID من المؤشرات داخل لوا HookedBehemoth - تم تطبيق نتائج Strackerديسكورد: بولت#6265جيت هب: عذرًا، لا يمكنني الوصول إلى الروابط أو تصفح الإنترنت. يرجى لصق النص الذي ترغب في ترجمته مباشرةً هنا.التعديلات التي تستخدم هذه القائمة:**ثرثرات وحقائق ممتعة:**
لدي الكثير من الهراء لأقوله لأن هذا المشروع أنهكني.
كان هذا واحدًا من أصعب التحديات التي واجهتها مؤخرًا، باستثناء صنع لعبة إيقاعية في 48 ساعة ضمن مسابقة تطوير الألعاب؟
اللعبة حقًا لا تريدك أن تفعل هذا، وستتعطل في كل فرصة إذا لم تتبع الخطوات بدقة تامة.
نسيت إضافة `ref_` إلى تلك المصفوفة؟ تعطل. سلاسل نصية؟ تعطل. بيانات الخيارات؟ تعطل.
استدعِ دالة التحديث من أي مكان داخل دوال واجهة اللعبة؟ تعطل.
ليس لديك بيانات مدخلة للخيارات التي لا تحتاجها؟ تعطل.
أه، لقد استطردتُ، لكنني لا بد أنني تسببت في تعطل اللعبة قرابة المئة مرة.
لكنني أعتقد أن كل هذا جعل التحدي أكثر تشويقًا، لم أكن منغمسًا في مشروع كهذا منذ فترة. كان دائمًا يبدو قريبًا جدًا من النجاح، لكنه كان دائمًا يواجه مشكلة كبيرة يجب التغلب عليها.بعض الملاحظات المثيرة للاهتمام:علامة التعديل في قائمة الفئات هي في الواقع نسخة من علامة بيانات الحفظ، نظرًا لعدم وجود طريقة لإضافة أنواع إضافية، لذا أستبدل البيانات بناءً على مؤشر قائمة التمرير.
لفترة طويلة، كنت أستخدم قائمة إعدادات الرسومات المتقدمة كوسيلة لتشغيل القوائم الفرعية، وكاد الأمر ينجح حتى اكتشفت أنهم برمجوا تلك القائمة بشكل صارم لتحتوي على خمسة عناصر فقط لسبب ما... وبالطبع، يتعطل اللعبة إذا ضبطتها على غير الرقم 5.
بالإضافة إلى ذلك، ولسبب غير مفهوم، لا تستجيب أشرطة التمرير لإدخال الماوس في تلك القائمة. لذا في النهاية، توصلت إلى التركيبة الصحيحة من الإجراءات التي تتيح تحويل الخيارات إلى أزرار تقريبًا، واستبدال البيانات وإعادة رسم الواجهة، بحيث تنتقل بين القوائم الفرعية دون تغيير القائمة الفعلية.
وكان المنطق وراء كل هذا معقدًا للغاية ولا مفر منه..
نظرًا لقيود نظام REF، قمتُ بالفعل بكتابة إضافة صغيرة بلغة C++ لمرافقة هذا الحل، غايتها الوحيدة هي أخذ مؤشر إلى GUID وإلغاء الإشارة إليه لاستخراج البيانات منه. بدون هذه الإضافة، لن يعمل الأمر برمته، إذ لن تكون هناك طريقة لتجاوز النصوص المُترجمة في اللعبة بشكل صحيح.
لم يكن الأمر سيئًا للغاية، لكن إعداد مشروع C++ مع Lua و sol2 كان مرهقًا.. الأدلة بالكاد ساعدت.
وبالمثل، ولسبب ما، لم أتمكن من تعيين قيم GUID للكائنات في REF، لكنني تمكنت من تجاوز ذلك عن طريق كتابة البيانات مباشرة باستخدام write_dword في الإزاحات الصحيحة.
في النهاية، أعتقد أن النتيجة رائعة حقًا.
لا أكترث كثيرًا إن استخدمه أحد أم لا، فمجرد رؤيته يعمل كانت مكافأة كافية، لكني أعتقد أن الناس سيعجبهم هذا.
أقترحوا الميزات التي تروق لكم، لكني بالتأكيد سأكون متكاسلاً بعد كل هذا.
ربما هذا كل شيء الآن، أتمنى أن تستمتعوا!