احصائياتى

الردود
1

المشاهدات
94
 
Hazem
.:: المدير العام::.

    متواجد  الان

المشاركات
2,306

+التقييم
0.84

تاريخ التسجيل
Apr 2019

الاقامة
Egypt

نظام التشغيل
windows 7

رقم العضوية
1
اليوم, 05:21 PM
المشاركة 1
اليوم, 05:21 PM
المشاركة 1
افتراضي ScriptHazem Launcher + PatchServer
لانشر ScriptHazem — دليل التشغيل والتعديل للمبرمجين

للمبرمجين اللي بيشتغلوا C# · شرح خطوة بخطوة · من غير تعقيد



الواجهة الرئيسية للانشر

مقدمة

السلام عليكم ورحمة الله وبركاته،

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

الشرح موجّه للمبرمجين اللي عندهم معرفة أساسية بـ C#، وعايزين يفهموا طريقة تشغيل المشروع وتخصيصه بما يناسب سيرفر كونكر الخاص بيهم.

مش محتاج تكون خبير في .NET؛ كل اللي عليك إنك تمشي مع الخطوات بالترتيب.

محتويات الموضوع
  1. اللانشر ده بيعمل إيه؟
  2. المتطلبات اللازمة على جهازك.
  3. فتح المشروع في Visual Studio.
  4. بناء المشروع وإخراج ملف EXE.
  5. تجهيز اللانشر عند اللاعب.
  6. ربط اللانشر بسيرفرك عن طريق launcher.ini.
  7. تعديل اللانشر وإضافة ثيمات جديدة.
  8. إعداد سيرفر التحديثات PatchServer.
  9. أشهر المشاكل وطرق حلها.

1- اللانشر ده بيعمل إيه؟

الـ Launcher هو برنامج بيشتغل قبل اللعبة، وبيوفّر مجموعة من الوظائف اللي بتساعد اللاعب على تشغيل اللعبة والوصول للمعلومات المهمة من مكان واحد.

أهم الوظائف الموجودة في المشروع:
  • تشغيل اللعبة: زرار «ابدأ اللعب» بيشغّل ملف Conquer.exe.
  • حالة السيرفر: عرض حالة السيرفر إذا كان شغّال أو متوقف، مع عرض البنج.
  • الأخبار والصور: عرض الأخبار والصور اللي يمكن تحديثها من السيرفر.
  • وضع الصيانة: عرض حالة الصيانة وتعطيل زرار اللعب عند تفعيلها.
  • التحديث التلقائي: إمكانية تنزيل تحديثات ملفات اللعبة من سيرفر التحديثات.
  • فحص الجهاز: تنفيذ فحوصات قبل تشغيل اللعبة.

التقنيات المستخدمة:
  • لغة البرمجة: C#
  • واجهة المستخدم: WPF
  • إطار العمل: .NET 10

2- المتطلبات اللازمة على جهازك

قبل ما تبدأ، اتأكد إن جهازك مجهّز بالمتطلبات التالية.
  • نظام تشغيل Windows 10 أو Windows 11.
  • برنامج Visual Studio 2022، مع دعم إصدار .NET 10 SDK المستخدم في المشروع، أو تثبيت .NET 10 SDK بشكل مستقل عند البناء من سطر الأوامر.
  • أثناء تثبيت Visual Studio، اختار الـ Workload التالي:


    كود:
    .NET desktop development 

  • اختياري: حزمة .NET Framework 4.8 Developer Pack، لو هتشتغل على مشروع PatchServer اللي بيعتمد على .NET Framework 4.8.

هل اللاعب محتاج يسطّب .NET؟

لو نشرت اللانشر بإعدادات Self-contained المناسبة، مع تحديد معمارية ويندوز المستهدفة وإعداد إخراج ملف واحد، فاللاعب مش هيحتاج يسطّب .NET Runtime بشكل منفصل.

[HR][/HR]

3- فتح المشروع في Visual Studio

بعد ما تفك ضغط ملفات المشروع، افتح المجلد الرئيسي وابحث عن ملف المشروع التالي:


كود:
Launcher\ScriptHazemLauncher.csproj 

دبل كليك على الملف علشان يفتح في Visual Studio.

بعد فتح المشروع:
  1. استنى لحد ما Visual Studio يحمّل المشروع.
  2. اتأكد إن حزم NuGet المطلوبة تم استعادتها بنجاح.
  3. اختار Configuration باسم Release لو عايز تجهّز نسخة للتوزيع.
  4. راجع أي أخطاء تظهر في نافذة Error List قبل ما تبدأ البناء.

لو ظهرت رسالة بتطلب استعادة الحزم، نفّذ Restore NuGet Packages، وبعدها جرّب بناء المشروع مرة تانية.

[HR][/HR]

4- بناء المشروع وإخراج ملف EXE

عندك طريقتين لبناء المشروع.

الطريقة الأولى: من Visual Studio

افتح قائمة:


كود:
Build > Build Solution 

أو استخدم الاختصار:


كود:
Ctrl + Shift + B 

بعد انتهاء البناء، راجع نافذة Output واتأكد إن العملية تمت بنجاح من غير أخطاء.

الطريقة الثانية: إخراج نسخة جاهزة للتوزيع من CMD

افتح Terminal أو CMD داخل المجلد الرئيسي للمشروع، ونفّذ الأمر التالي:


كود:
dotnet publish Launcher\ScriptHazemLauncher.csproj -c Release -o _release 

هيتم إخراج ملفات النشر داخل المجلد:


كود:
_release 

ملاحظة مهمة:

اسم ملف EXE النهائي وإمكانية تشغيله كملف واحد بيعتمدوا على إعدادات المشروع داخل ملف CSProj، بما فيها إعدادات PublishSingleFile وSelfContained وRuntimeIdentifier. اتأكد من الإعدادات دي قبل توزيع النسخة.

لو إعدادات النشر مضبوطة على إخراج ملف واحد، هتقدر توزّع الملف الناتج مع ملفات البيانات الخارجية المطلوبة، زي launcher.ini ومجلد themes.

[HR][/HR]

5- تجهيز اللانشر عند اللاعب

بعد ما تجهّز نسخة النشر، انسخ الملفات المطلوبة إلى المجلد الرئيسي للكلاينت، وهو المجلد اللي موجود بداخله مجلد Env_DX9.

الملفات المطلوبة:
  • scripthazemLauncher.exe
  • launcher.ini
  • مجلد themes

اتأكد إن اسم ملف EXE مطابق للاسم الفعلي الناتج من عملية النشر، وإن ملف الإعدادات والثيمات موجودين في المسارات اللي اللانشر متوقعها.

بعد كده اعمل اختصار للانشر على سطح المكتب، واستخدمه بدل اختصار play.exe القديم.

نصيحة: احتفظ بنسخة احتياطية من ملفات الكلاينت قبل تجربة أي تغييرات أو تحديثات جديدة.

[HR][/HR]

6- ربط اللانشر بسيرفرك عن طريق launcher.ini

ملف launcher.ini هو الملف المسؤول عن مجموعة من إعدادات اللانشر، زي عنوان السيرفر ومنافذ الاتصال ومسار اللعبة والثيم واللغة.

افتح الملف باستخدام Notepad، وابحث عن قسم Launcher.

الإعدادات الأساسية:


كود:
[Launcher]
UpdateUrl=
ServerIP=YOUR_SERVER_IP
LoginPort
=16000
GamePort
=5818
GameExe
=Env_DX9\Conquer.exe
WorkingDir
=Env_DX9
CloseOnPlay
=1
Theme
=default
Language=ar 

شرح الإعدادات:
  • UpdateUrl: عنوان سيرفر التحديثات. سيبه فاضي لو مش هتستخدم نظام التحديثات.
  • ServerIP: عنوان IP الخاص بالسيرفر، حسب طريقة فحص حالة السيرفر المستخدمة في المشروع.
  • LoginPort: منفذ سيرفر الحسابات، والقيمة الافتراضية هنا 16000.
  • GamePort: منفذ سيرفر اللعبة، والقيمة الافتراضية هنا 5818.
  • GameExe: مسار ملف تشغيل اللعبة Conquer.exe.
  • WorkingDir: مجلد العمل الخاص باللعبة.
  • CloseOnPlay: القيمة 1 لإغلاق اللانشر عند بدء اللعب، والقيمة 0 لإبقائه مفتوحًا أو تصغيره حسب تنفيذ المشروع.
  • Theme: اسم الثيم المستخدم، والافتراضي default.
  • Language: لغة الواجهة، ar للعربية أو en للإنجليزية.

إعداد فحص إغلاق اللعبة

ابحث عن قسم SystemCheck، واضبط القيمة التالية:


كود:
[SystemCheck]
CrashWatchSeconds=3 

مهم جدًا:

القيمة CrashWatchSeconds مرتبطة بطريقة تشغيل اللعبة ومراقبة العملية داخل اللانشر.

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

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

[HR][/HR]

7- تعديل اللانشر وإضافة ثيمات جديدة

من مميزات تنظيم المشروع إنك تقدر تعدّل على النصوص والموارد والإعدادات من أماكن منفصلة.

أهم الملفات والمجلدات:
  • Launcher\Lang.cs: النصوص والترجمات المستخدمة في الواجهة.
  • themes\اسم_الثيم: الصور والخطوط والموسيقى والموارد المرتبطة بكل ثيم.
  • Launcher\app.ico: أيقونة البرنامج.
  • launcher.ini: إعدادات اللانشر، بما فيها اسم الثيم وروابط التواصل، حسب الحقول المدعومة في المشروع.

إزاي تعمل ثيم جديد؟
  1. افتح مجلد themes.
  2. انسخ مجلد default.
  3. غيّر اسم النسخة الجديدة، مثلًا إلى mytheme.
  4. عدّل الصور والخطوط والموارد الموجودة داخله، مع الحفاظ على أسماء الملفات وبنيتها لو الكود بيعتمد عليها.
  5. افتح launcher.ini وغيّر قيمة Theme إلى اسم الثيم الجديد.

مثال:


كود:
Theme=mytheme 

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

تعديل اسم السيرفر وروابط التواصل

راجع launcher.ini وابحث عن حقول اسم السيرفر وروابط Facebook وDiscord وWebsite، وعدّلها وفقًا للإعدادات الموجودة فعلًا في نسخة المشروع عندك.

[HR][/HR]

8- سيرفر التحديثات PatchServer (اختياري)

لو عايز تستخدم نظام التحديثات والأخبار والصيانة، هتحتاج إعداد وتشغيل PatchServer.

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



واجهة الإعدادات

أولًا: بناء PatchServer

افتح Terminal داخل مجلد المشروع الرئيسي ونفّذ:


كود:
dotnet build PatchServer\PatchServer.csproj -c Release 

بعد نجاح البناء، شغّل PatchServer.exe من مجلد الإخراج الناتج عن البناء.

ثانيًا: إعداد PatchServer.ini

افتح ملف PatchServer.ini واضبط إعدادات السيرفر، ومنها البورت ومجلد الملفات اللي هيتم تقديمها للاعبين.

مثال:


كود:
[Server]
Port=8801
Root
=..\..\www 

ملاحظة: المسار Root بيتحدد بالنسبة لمجلد التشغيل أو حسب طريقة قراءة الإعدادات في البرنامج. اتأكد إن المسار النهائي بيشير إلى مجلد www الصحيح، وإن حساب التشغيل عنده صلاحية الوصول للملفات.

ثالثًا: فتح البورت في Windows Firewall

لو السيرفر شغّال على Windows وعايز تسمح بالاتصالات الواردة على TCP port 8801، افتح CMD بصلاحيات Administrator ونفّذ:


كود:
netsh advfirewall firewall add rule name="PatchServer 8801" dir=in action=allow protocol=TCP localport=8801 

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

رابعًا: ربط اللانشر بسيرفر التحديثات

داخل launcher.ini عند اللاعب، اضبط UpdateUrl على عنوان السيرفر الفعلي:


كود:
UpdateUrl=http://YOUR_SERVER_IP:8801/ 

استبدل YOUR_SERVER_IP بعنوان السيرفر أو اسم النطاق المستخدم عندك.

لو بتستخدم دومين، تقدر تستخدم عنوان الدومين بدل IP، بشرط إن إعدادات الشبكة وDNS والمنفذ متوافقة مع طريقة تشغيل PatchServer.

خامسًا: إضافة تحديث جديد

لما تحب تنشر تحديثًا:
  1. حط الملفات المطلوب تحديثها داخل www\files.
  2. حافظ على المسارات النسبية الصحيحة للملفات داخل الكلاينت.
  3. افتح نافذة كونسول PatchServer.
  4. اكتب الأمر rebuild لإعادة إنشاء قائمة الملفات.
  5. اختبر التحديث على نسخة تجريبية من الكلاينت قبل نشره للاعبين.

أوامر كونسول PatchServer:


كود:
rebuild   = إعادة بناء قائمة الملفات بعد إضافة تحديث
status    
= عرض حالة السيرفر
crashes   
= عرض تقارير الكراش
exit      = إغلاق السيرفر 

سادسًا: الأخبار والصيانة

بحسب تنظيم ملفات المشروع، مجلد www\data يحتوي على الملفات الخاصة بالأخبار وحالة الصيانة.
  • news.json: ملف الأخبار، ويمكن ترتيب الأخبار بحيث يظهر الأحدث أولًا، حسب طريقة قراءة البيانات داخل اللانشر.
  • status.json: ملف حالة الصيانة. عند ضبط maintenance على true، يتم تعطيل زرار اللعب حسب سلوك الواجهة.

مثال توضيحي لحالة الصيانة:


كود:
{
  
"maintenance": true
} 

ولإلغاء الصيانة، غيّر القيمة إلى false:


كود:
{
  
"maintenance": false
} 

اتأكد إن بنية JSON مطابقة تمامًا للتنسيق اللي الكود بيقرأه، خصوصًا لو الملف بيحتوي على حقول إضافية.



واجهة الصيانة

تنبيه مهم بخصوص ملفات اللعبة:

ماتحطّش داخل www\files ملفات إعدادات محلية ممكن تتغيّر عند كل لاعب، زي:
  • GUI.ini
  • GameSetUp.ini
  • Settings.ini

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

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

[HR][/HR]

9- أشهر المشاكل وطرق حلها

المشكلة الأولى: البناء بيفشل أو فيه Packages ناقصة

الحل:
  • افتح ملف CSProj باستخدام Visual Studio.
  • استنى لحد ما تنتهي عملية استعادة حزم NuGet.
  • اتأكد إن .NET SDK المطلوب مثبت.
  • راجع تفاصيل الخطأ في Output وError List.
  • جرّب البناء مرة تانية بعد معالجة الخطأ.

المشكلة الثانية: رسالة إن رابط التحديثات فاضي

الحل:

لو مش محتاج نظام التحديثات، سيب UpdateUrl فاضي بشرط إن المشروع بيدعم الوضع ده. لو محتاج التحديثات، اضبط الرابط على عنوان PatchServer الصحيح.

المشكلة الثالثة: سيرفر الأخبار مش متاح

الأسباب المحتملة:
  • برنامج PatchServer مش شغّال.
  • عنوان UpdateUrl غير صحيح.
  • البورت 8801 غير متاح من خارج السيرفر.
  • جدار الحماية أو إعدادات الشبكة بتمنع الاتصال.
  • مجلد Root أو ملفات البيانات مش موجودة في المسار المتوقع.

ابدأ بالتأكد من تشغيل PatchServer وصحة الإعدادات، وبعدها اختبر الاتصال من الجهاز المستهدف.

المشكلة الرابعة: رسالة «اللعبة قفلت فجأة» رغم إن اللعبة شغّالة

راجع إعداد CrashWatchSeconds وطريقة مراقبة عملية تشغيل اللعبة. القيمة المقترحة في هذا المشروع هي:


كود:
CrashWatchSeconds=3 

لو استمرت المشكلة، راجع هل اللانشر بيراقب عملية Conquer.exe الأولى فقط، ولا بيتابع عملية اللعبة الفعلية بعد انتقال التشغيل.

المشكلة الخامسة: زرار اللعب رمادي أو مقفول

راجع حالة الصيانة داخل status.json.

لو الصيانة منتهية، اتأكد إن القيمة مضبوطة على:


كود:
"maintenance": false 

كمان اتأكد إن اللانشر قدر يوصل إلى ملف الحالة وقرأ محتواه بنجاح.

المشكلة السادسة: التحديث الجديد مش بيظهر

بعد إضافة الملفات إلى مجلد التحديثات، نفّذ الأمر التالي في كونسول PatchServer:


كود:
rebuild 

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

المشكلة السابعة: التأكد من إن PatchServer شغّال

جرّب فتح الرابط التالي في المتصفح:


كود:
http://YOUR_SERVER_IP:8801/manifest.json 

استبدل YOUR_SERVER_IP بعنوان السيرفر الفعلي.

لو الملف مش بيفتح، راجع حالة البرنامج والبورت وإعدادات الشبكة ومسار الملفات. نجاح فتح الرابط بيعتمد على إن PatchServer بيقدّم manifest.json على المسار ده فعلًا.

[HR][/HR]

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


روابط التحميل — Download

اختر النسخة المناسبة لك من الروابط التالية:

عفواً لايمكن عرض الرابط إلا بعد الرد على الموضوع

نسخة جاهزة للتشغيل دون الحاجة إلى بناء المشروع من السورس.


عفواً لايمكن عرض الرابط إلا بعد الرد على الموضوع

للمبرمجين الراغبين في استكشاف الكود وتعديله وتطويره والبناء منه.

روابط التحميل مستضافة على Google Drive
في النهاية ❤️

أتمنى يكون الشرح وضّح طريقة التعامل مع ScriptHazem Launcher، من فتح المشروع وبنائه إلى إعداده وربطه بسيرفر التحديثات.

لو عندك سؤال أو اقتراح لتطوير المشروع، اكتبه في رد داخل الموضوع.

لو استخدمت اللانشر، يُرجى الحفاظ على الحقوق وذكر صاحب العمل ❤️

تحياتي للجميع


قديم اليوم, 05:28 PM
المشاركة 2
ALz3em
.:: عضو مميز ::.
  • غير متواجد
افتراضي رد: ScriptHazem Launcher + PatchServer
مجهود ممتاز عاش
بالتوفيق ان شاء الله


العلامات المرجعية



الذين يشاهدون محتوى الموضوع الآن : 1 ( الأعضاء 0 والزوار 1)
 

الانتقال السريع

المواضيع المتشابهه للموضوع: ScriptHazem Launcher + PatchServer
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
وحوش Big Monster + Top + Prize scripthazem AMREL3FREIT تطوير سيرفرات كونكر 62 2020-11-23 12:06 PM


الساعة الآن 07:38 PM