نظام الزعماء العالم ماتين2 – System World Boss Daily Metin2

نظام الزعماء العالم ماتين2: زعماء يظهرون يوميًا بمواعيد تحددها أنت، مع إعلانات للاعبين وأمر /worldboss. شرح كامل للتركيب والتحميل.

نظام الزعماء العالم ماتين2 (System World Boss Daily) يخلي سيرفرك يطلّع زعيمًا عالميًا كل يوم في الأوقات اللي تحددها أنت، ويعلن للاعبين لما يظهر ولما ينقتل، وفيه أمر يعرف منه اللاعب هل الزعيم حي أو متى يظهر مرة ثانية. فحصنا ملفات النظام ملفًا ملفًا، وفي هذا الموضوع نشرح لك وش يسوي بالضبط، وش فيه، كيف تركّبه خطوة بخطوة، وأشياء لازم تنتبه لها قبل ما ترفعه على سيرفرك، مع رابط التحميل ورابط الفحص على VirusTotal.

نافذة نظام الزعماء العالم ماتين2 World Boss تعرض حالة الزعيم ووقت الظهور وترتيب الضرر
واجهة نظام الزعماء العالم ماتين2 (System World Boss Daily)

وش هو نظام الزعماء العالم في ماتين2؟

زعيم العالم (World Boss) حدث يجمع اللاعبين: زعيم قوي يظهر في خريطة معيّنة بمواعيد ثابتة، وكل السيرفر يعرف إنه ظهر ويتجمعون عليه. الشغلة اللي تميّز هذا النظام إنه يشتغل بالجدولة: تكتب في ملف نصي موقع الزعيم ورقمه (vnum) وساعات ظهوره في اليوم، والسيرفر يتكفل بالباقي، من الظهور إلى الإعلان إلى حساب الموعد اللي بعده.

مميزات نظام الزعماء العالم ماتين2

  • ظهور تلقائي يومي: تحدد الساعات من 0 إلى 23، والنظام يحسب موعد الظهور القادم لوحده حسب وقت جهاز السيرفر.
  • أكثر من زعيم وأكثر من خريطة: كل خريطة لها ملف worldboss.txt، وكل سطر فيه يمثل زعيمًا مستقلًا بأوقاته الخاصة.
  • إعلان للجميع: رسالة تظهر لكل اللاعبين لما يظهر الزعيم ولما ينقتل، وتنتقل بين الكورز عن طريق حزمة P2P.
  • أمر /worldboss: متاح لكل اللاعبين حتى لو كان اللاعب ميت، ويعرض حالة الزعيم: حي الآن، أو بعد كم ساعة ودقيقة يظهر.
  • لافتة إشعار في الكلاينت: تنزلق من الجانب وتبقى 5 ثواني، وتدعم 5 إشعارات متتالية بدون ما تغطي بعضها.
  • كويست إعلان عند القتل: ملف bossi.lua جاهز تعدله على زعمائك.
  • تفعيل وتعطيل بسطر واحد: كل الكود محاط بتعريف __WORLD_BOSS_YUMA__ في ملف service.h.

كيف يشتغل النظام من الداخل؟

  1. عند تحميل الخرائط يبحث السيرفر عن worldboss.txt داخل مجلد كل خريطة (بجانب dungeon.txt) ويقرأه.
  2. كل سطر يتحول إلى زعيم داخل CWorldBossManager مع موعد ظهور قادم محسوب.
  3. كل ثانية تشتغل دالة Idle من حلقة السيرفر الرئيسية: لو الزعيم غير موجود ووصل وقته يظهر ويُعلن عنه، وفي نفس اللحظة يُحسب الموعد اللي بعده.
  4. لما يموت الزعيم يتعرف عليه الكود في char_battle.cpp ويرسل إعلان الهزيمة.
  5. لما يكتب اللاعب /worldboss يرسل السيرفر أمر SendWorldbossNotification للكلاينت، فيستقبله game.py وتعرضه واجهة interfacemodule.py كلافتة.

محتويات ملفات النظام بعد الفحص

الأرشيف فيه 27 ملفًا موزعة على أربعة مجلدات:

  • sursa server (مصدر السيرفر): ملفان جديدان worldboss.cpp وworldboss.h، وتعديلات في packet.h وpacket_info.cpp وinput.h وinput_p2p.cpp وcmd.h وcmd.cpp وcmd_gm.cpp وcmd_general.cpp وchar_battle.cpp وmain.cpp وsectree_manager.cpp وregen.cpp وmakefile، مع سطر التفعيل الخاص بـ service.h.
  • sursa bin (مصدر الكلاينت): locale_inc.h وpythonapplicationmodule.cpp لتفعيل الماكرو WORLD_BOSS_YUMA وتمريره لبايثون.
  • root (واجهة اللاعب): constinfo.py وgame.py وinterfacemodule.py، وملفان جديدان uiworldbosstext.py وuiSCRIPT/worldbosswindow.py، وثلاث صور داخل ymir work/ui/game/worldboss/: main بحجم 455×197 وshaman_w بحجم 148×93 وmonster بحجم 91×107 (الأخيرة غير مستخدمة في السكربتات).
  • quest serverside: الكويست bossi.lua.
محتويات ملف نظام الزعماء العالم ماتين2: مجلدات quest serverside وroot وsursa bin وsursa server
محتويات ملف نظام الزعماء العالم ماتين2 بعد فك الضغط

متطلبات التركيب

  • سورس السيرفر (C++) بحيث تقدر تعدّله وتعيد بناءه.
  • مكتبة Boost، لأن worldboss.cpp يستخدم boost/algorithm/string.hpp، ومترجم يدعم C++11.
  • سورس الكلاينت (UserInterface) لإعادة بناء الـ exe، لأن النظام يضيف ثابتًا جديدًا اسمه app.WORLD_BOSS_YUMA.
  • رقم (vnum) الزعيم من mob_proto. النظام ما يضيف جداول ولا يحتاج SQL.
  • نسخة احتياطية كاملة قبل أي تعديل. وإذا ما عندك سيرفر شغال أصلًا ابدأ من 🔒 هذا الرابط خاص بهذا المقال
    لعرضه يجب تسجيل الدخول وكتابة تعليق داخل نفس المقال تنبيه مهم ( التعليقات عشواية سوف يتم رفضها وفي حال تكرار سوف يتم حظر ).
    .

طريقة تركيب نظام الزعماء العالم ماتين2

أولًا: جهة السيرفر

  1. في common/service.h أضف سطر التفعيل:
    #define __WORLD_BOSS_YUMA__
  2. انسخ worldboss.cpp وworldboss.h إلى مجلد game/ وأضف worldboss.cpp إلى قائمة الملفات في game/makefile.
  3. في packet.h أضف HEADER_GG_NEW_NOTICE = 34 تحت HEADER_GG_CHECK_AWAKENESS (تأكد أن الرقم 34 غير مستخدم في سورسك)، وأضف بنية TPacketGGNewNotice بعد TPacketGGNotice.
  4. في packet_info.cpp أضف سطر Set(HEADER_GG_NEW_NOTICE, ...) تحت CheckAwakeness.
  5. في input.h وinput_p2p.cpp أضف الدالة NewNotice. انتبه: الحزمة ما تتضمن ربط الهيدر الجديد داخل دالة Analyze في input_p2p.cpp، فأضفه بنفس طريقة HEADER_GG_NOTICE الموجودة في سورسك، على الشكل التالي:
    case HEADER_GG_NEW_NOTICE:
    	if ((iExtraLen = NewNotice(d, c_pData, m_iBufferLeft)) < 0)
    		return -1;
    	break;
  6. في cmd.h وcmd_gm.cpp أضف تعريفات ودوال الإشعار SendNewNotice وBroadcastNewNotice.
  7. في cmd_general.cpp أضف do_boss_debug، وفي cmd.cpp سجّل الأمر worldboss.
  8. في char_battle.cpp أضف كشف موت الزعيم بعد CloseSafebox() في دالة الموت.
  9. في main.cpp أضف: تعريف CWorldBossManager WorldBoss_manager;، ثم Initialize() بعد OXEvent_manager.Initialize()، ثم Idle(thecore_heart->pulse) بعد تحديث CHARACTER_MANAGER، ثم Destroy() عند الإغلاق.
  10. في sectree_manager.cpp أضف تحميل worldboss.txt مباشرة بعد تحميل dungeon.txt. وفي regen.cpp أضف #include "worldboss.h".
  11. انسخ bossi.lua إلى مجلد الكويستات وأعد ترجمته.
  12. أعد بناء الـ game core (وكل الكورز) وجرّب.

ثانيًا: جهة الكلاينت

  1. في locale_inc.h أضف:
    #define WORLD_BOSS_YUMA
  2. في pythonapplicationmodule.cpp أضف كتلة PyModule_AddIntConstant(poModule, "WORLD_BOSS_YUMA", ...) الموجودة في الحزمة، ثم أعد بناء الـ exe.
  3. في ملفات root: عدّل constinfo.py (مصفوفة WORLD_BOSS_TEXT_POSITION = [0, 0, 0, 0, 0])، وgame.py (تسجيل الأمر SendWorldbossNotification مع دالته)، وinterfacemodule.py (الاستيراد والتهيئة والتدمير ودالة WorldbossNotification).
  4. أضف uiworldbosstext.py وuiSCRIPT/worldbosswindow.py، وضع الصور في ymir work/ui/game/worldboss/، ثم احزم الملفات.
  5. الحزمة ما تعرّف الثابت WORLDBOSS_GUARD_NAME الذي تستخدمه اللافتة، فأضفه في localeInfo.py:
    WORLDBOSS_GUARD_NAME = "حارس العالم"

إعداد ملف worldboss.txt

يوضع الملف داخل مجلد الخريطة، وكل سطر يمثل زعيمًا، والفواصل بين الحقول مسافة Tab وليست مسافات عادية. الصيغة: الحرف b، ثم x، ثم y، ثم z، ثم رقم الزعيم، ثم الساعات. الإحداثيات نسبية لبداية الخريطة مثل ملف regen. وكل ساعة تكتبها يجب أن يلحقها حرف t. مثال توضيحي (غيّر الأرقام على خريطتك وزعيمك):

b	350	420	0	6091	14t21t

هذا السطر يعني: زعيم برقم 6091 يظهر عند الإحداثيات (350، 420) في الساعة 2 ظهرًا و9 مساءً كل يوم. الأوقات حسب وقت جهاز السيرفر، والملف يُقرأ عند تحميل الخريطة، فأعد تشغيل الكور بعد أي تعديل.

تخصيص النصوص والترجمة

  • إعلانات الظهور والهزيمة: مكتوبة في worldboss.cpp بالإنجليزية وبها اسم «Queen Nethis» ثابت لأي زعيم. غيّرها لنص عام أو لاسم زعيمك.
  • ملف الترجمة: النصوص تمر عبر LC_TEXT، فأضف ترجماتها في locale_string.txt، وإلا يظهر النص الأصلي كما هو. وانتبه أن أمر /worldboss يمرر الاسم ثم الساعات ثم الدقائق (أرقام عشرية تُكتب %.0f) ثم كلمة الوحدة، وهذه الكلمة ألمانية (Stunden/Minuten) في أمر /worldboss وإنجليزية (hours/minutes) في إعلانات ما قبل الظهور، فغيّرها أو لا تضع %s الأخيرة.
  • كويست bossi.lua: رسائله بالرومانية وتعني «تم قتله! سيظهر بعد ساعة»، وفيه ثلاثة أرقام زعماء (6192 و2403 و6091). عدّل الأرقام والنصوص، وانتبه أن عبارة «بعد ساعة» ثابتة بينما موعد الظهور الفعلي يتبع جدولك.

أشياء لازم تنتبه لها قبل الرفع

  • الفاصل بين المواعيد: الموعد التالي يُحسب لحظة ظهور الزعيم. لو عاش أطول من الفاصل بين موعدين، أول ما ينقتل يظهر مباشرة مرة ثانية. خلّ الفاصل أطول من المدة اللي يحتاجها اللاعبون لقتله.
  • نسخة واحدة فقط: ما يظهر زعيم جديد لنفس السطر طالما القديم حي.
  • التنبيهات المسبقة معطلة: الكود يجهز قائمة (5 دقائق، 10، 20، 30، ساعة، ساعتين، 3 ساعات) لكن سطر الإرسال داخل Idle معلّق. فعّله بعد ما تجهز نصه إذا تبي تنبيهًا قبل الظهور.
  • بايثون: uiworldbosstext.py يستخدم time.clock()، وهي تعمل على بايثون 2.7 (الكلاينت الكلاسيكي). لو كلاينتك على بايثون 3 استبدلها بـ time.perf_counter().
  • دالة غير موجودة: الملف يستدعي constInfo.getLogText عند حدوث خطأ وهي غير موجودة في الحزمة. استبدلها بـ str(e) أو عرّفها.
  • الصور: ملفا main وmonster امتدادهما tga لكنهما بصيغة PNG من الداخل بحسب ترويستيهما. لو ظهرتا سوداوين في اللعبة حوّلهما إلى TGA حقيقي.

وإذا طلع لك خطأ أثناء البناء أو التشغيل راجع 🔒 هذا الرابط خاص بهذا المقال
لعرضه يجب تسجيل الدخول وكتابة تعليق داخل نفس المقال تنبيه مهم ( التعليقات عشواية سوف يتم رفضها وفي حال تكرار سوف يتم حظر ).
لتعرف سببه بسرعة.

تحميل نظام الزعماء العالم ماتين2

🔒 هذا الرابط خاص بهذا المقال
لعرضه يجب تسجيل الدخول وكتابة تعليق داخل نفس المقال تنبيه مهم ( التعليقات عشواية سوف يتم رفضها وفي حال تكرار سوف يتم حظر ).
🔒 هذا الرابط خاص بهذا المقال
لعرضه يجب تسجيل الدخول وكتابة تعليق داخل نفس المقال تنبيه مهم ( التعليقات عشواية سوف يتم رفضها وفي حال تكرار سوف يتم حظر ).

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

أسئلة شائعة عن النظام

كم زعيم أقدر أضيف؟

أي عدد. كل سطر في worldboss.txt زعيم مستقل، وكل خريطة تقدر يكون لها ملفها.

كيف أغيّر أوقات الظهور؟

عدّل الساعات في آخر السطر (مثل 14t21t) ثم أعد تشغيل الكور اللي يحمّل الخريطة.

هل النظام يحتاج تعديل في قاعدة البيانات أو البروتو؟

لا. ما فيه ملفات SQL ولا جداول جديدة. تحتاج فقط رقم زعيم موجود أصلًا في mob_proto.

كيف أخلي أمر /worldboss للمشرفين فقط؟

في cmd.cpp الأمر مسجّل بصلاحية GM_PLAYER أي لكل اللاعبين. غيّرها لرتبة أعلى.

هل في النظام ترتيب للضرر وزر انتقال؟

لا، حسب فحصنا للحزمة. الموجود لافتة إشعار فقط، ونقدر نبرمج لك النافذة الكاملة عبر 🔒 هذا الرابط خاص بهذا المقال
لعرضه يجب تسجيل الدخول وكتابة تعليق داخل نفس المقال تنبيه مهم ( التعليقات عشواية سوف يتم رفضها وفي حال تكرار سوف يتم حظر ).
.

هل ملفات النظام آمنة؟

ملفات المصدر نصية (cpp وpy وlua) مع ثلاث صور، وفيه رابط فحص على VirusTotal أعلاه. ومع ذلك جرّبه دائمًا على نسخة تجريبية.

مواضيع تهمك

  • 🔒 هذا الرابط خاص بهذا المقال
    لعرضه يجب تسجيل الدخول وكتابة تعليق داخل نفس المقال تنبيه مهم ( التعليقات عشواية سوف يتم رفضها وفي حال تكرار سوف يتم حظر ).
  • 🔒 هذا الرابط خاص بهذا المقال
    لعرضه يجب تسجيل الدخول وكتابة تعليق داخل نفس المقال تنبيه مهم ( التعليقات عشواية سوف يتم رفضها وفي حال تكرار سوف يتم حظر ).
  • 🔒 هذا الرابط خاص بهذا المقال
    لعرضه يجب تسجيل الدخول وكتابة تعليق داخل نفس المقال تنبيه مهم ( التعليقات عشواية سوف يتم رفضها وفي حال تكرار سوف يتم حظر ).
  • 🔒 هذا الرابط خاص بهذا المقال
    لعرضه يجب تسجيل الدخول وكتابة تعليق داخل نفس المقال تنبيه مهم ( التعليقات عشواية سوف يتم رفضها وفي حال تكرار سوف يتم حظر ).
    و🔒 هذا الرابط خاص بهذا المقال
    لعرضه يجب تسجيل الدخول وكتابة تعليق داخل نفس المقال تنبيه مهم ( التعليقات عشواية سوف يتم رفضها وفي حال تكرار سوف يتم حظر ).

تبي أحد يركّب لك النظام أو يطوّره على مقاسك؟ فريق AZO ONE يسوي لك ذلك ضمن 🔒 هذا الرابط خاص بهذا المقال
لعرضه يجب تسجيل الدخول وكتابة تعليق داخل نفس المقال تنبيه مهم ( التعليقات عشواية سوف يتم رفضها وفي حال تكرار سوف يتم حظر ).
على ديسكورد، وعندنا 🔒 هذا الرابط خاص بهذا المقال
لعرضه يجب تسجيل الدخول وكتابة تعليق داخل نفس المقال تنبيه مهم ( التعليقات عشواية سوف يتم رفضها وفي حال تكرار سوف يتم حظر ).
لو تبي تبدأ من الصفر.

اترك ردّاً

منتجات برمجية · AZO ONE
جاهز تطلق سيرفر ماتين2؟
اختر الطريق: نجهّز لك السيرفر كاملًا، أو تشتري الملفات وتبدأ بنفسك.
خدمات ماتين2
399 ر.س 500 ر.س
ملفات سيرفر · Oldschool 1-99
399 ر.س 500 ر.س