قديم 2020-03-11, 02:24 PM
المشاركة #13  
AdmAhmed
  • غير متواجد
افتراضي رد: ازاي احلل بكيتات
برنس والله

قديم 2020-03-16, 12:28 AM
المشاركة #14  
ModyMohamedAdel
  • غير متواجد
افتراضي رد: ازاي احلل بكيتات
عاش

قديم 2020-03-16, 02:59 AM
المشاركة #15  
محمودمحمدسالم
  • غير متواجد
افتراضي رد: ازاي احلل بكيتات
عاش

قديم 2020-04-09, 04:50 PM
المشاركة #16  
midoazoz
  • غير متواجد
افتراضي رد: ازاي احلل بكيتات
عااااااش

قديم 2020-04-13, 04:15 AM
المشاركة #17  
Hazem20
  • غير متواجد
افتراضي رد: ازاي احلل بكيتات
تسلم

قديم 2020-04-14, 12:22 AM
المشاركة #18  
toteo3344
  • غير متواجد
افتراضي رد: ازاي احلل بكيتات
عاش

قديم 2021-07-28, 11:07 AM
المشاركة #19  
mohammedshafik
  • غير متواجد
افتراضي رد: ازاي احلل بكيتات
thanks

قديم 2021-11-25, 02:09 AM
المشاركة #20  
eyad
  • غير متواجد
افتراضي رد: ازاي احلل بكيتات
عفواً لايمكن عرض الرابط إلا بعد الرد على الموضوع
منقول من mahmoud zahran


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

المقدمة
مرحبا ، هذه هي المره الثالثة لي في كتابة هذا. أفترض أنك تشاهد هذا الموضوع التعليمي لأن لديك اهتمام بالبرمجة مع packets. قبل أن نبدأ ، يجب أن تعرف قليلاً عن أساسيات البرمجة في c #. إذا كنت جديدًا نسبيًا ، فلا بأس بذلك. سأقضي الكثير من وقتي في هذا البرنامج التعليمي لمراجعة المفاهيم. بشكل عام ، يعد هذا مكانًا جيدًا للبدء إذا كنت ترغب في المراجعة في وقتك الخاص: دليل البرمجة c #
كود:
https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/

. إذا كان لديك سؤال بالنسبة لي في أي وقت ، فلا تتردد في الرد أدناه وسأبذل قصارى جهدي للإجابة أو إعادة توجيهك إلى مقال جيد.



Sockets
قبل أن نتحدث عن packets ، دعنا نتحدث عن sockets. Sockets هي وسيلة لتطبيقين للتحدث إلى بعضهم البعض عبر شبكة. يمكنك التفكير في هذا كخط هاتف ، حيث يكون كل طرف هو هاتف (أو مقبس). عندما يكون اكونت conquer جاهزًا للتحدث إلى خادم اللعبة ، يقوم بطلبه. يستمع خادم اللعبة لهذه المكالمة من العميل ، وسيقبل المكالمة بمجرد وصولها. كيف يتحدثون أين يأتي packets و protocols. تساعدنا protocols في تحديد كيفية التحدث عبر شبكة ، بينما تحتوي packets على رسالتنا الفعلية . يستغرق دقيقة واحدة لمراجعة الفيديو أدناه حول الإنترنت والحزم والبروتوكولات.





في conquer online ، نستخدم tcp / ip لتحديد كيفية تبادل الرسائل بين العميل والخادم. يعرّف ip كيفية توجيه الحزمة إلى الخادم ، بينما يعرّف tcp كيفية تقسيم الحزم وإعادة تجميعها بالترتيب الصحيح (كلاهما مبين في الفيديو أعلاه). ومع ذلك ، فإننا نرى الحزم كاملة (بالنسبة للجزء الأكبر). لا داعي للقلق بشأن كيفية وصوله إلى الخادم ؛ نحن بحاجة فقط إلى التركيز على ما يقولون.


ترتيب البايت
لفهم كيف يتحدث conquer online ، علينا أن نفهم كيف يطلب الكلمات (بالمعنى المجازي والحرفي). أفضل تمثيل للرسائل هو صفيف وحدات البايت (وحدات البايت هي أصغر وحدة يمكن معالجتها في البرمجة). على سبيل المثال ، في السلسلة "hello world" (بافتراض ترميز ascii) ، يكون كل حرف بايت واحد. لذلك ، ستظهر رسالة "hello world" على أنها الحزمة التالية:
كود بلغة HTML:
 h  e  l  l  o     w  o  r  l  d
[48 65 6c 6c 6f 20 57 6f 72 6c 64]
إذا كنت مرتبكًا ، فسيظهر ما ورد أعلاه بالسداسي عشري. راجع جدول عفواً لايمكن عرض الرابط إلا بعد الرد على الموضوع لتحويل الأحرف إلى بايت. لقد استخدمت ست عشرية لأن نطاق البايت بالعدد العشري هو من 0 إلى 255. 255 هو رقم قبيح للعمل معه. في الست عشري ، يكون النطاق من 0 إلى ff. Ff هو رقم أسهل للعمل به كسقف نظرًا لأنه أعلى رقم يمكن أن يكون لرقمين. وهذا يعني أن أي عدد أكبر من ff أو رقمين يمكن أن يتدفق بشكل جيد إلى البايت التالي من رسالتنا.

بالنسبة للأرقام التي يزيد حجمها عن 255 ، مثل كلمة (ushort) ، أو كلمة مزدوجة (uint) ، أو كلمة رباعية (ulong) ، فإن قيمة هذا الرقم تفيض إلى البايتات التالية. على سبيل المثال ، الكلمة 1024 في الست عشري هي 400. سيتم تقسيم هذا عبر وحدتي بايت كـ 4 و 00. المشكلة هي ، في أي ترتيب؟ يمكن أن تكون إما مكتوبة كـ [04 00] أو [00 04]. وهذا ما يسمى ترتيب البايت ، ويشبه إلى حد كبير لهجة للتحدث.

هناك نوعان من أوامر البايت: Little endian و big endian. الهدف من big endian هو تخزين البايت الأكثر أهمية في أصغر عنوان. هذا يعني أن الرقم السداسي العشري لدينا وهو 400 سيظهر كـ [04 00]. هذا سهل القراءة ، لأنه يقرأ من اليسار إلى اليمين. هدف little endian هو تخزين البايت الأقل أهمية في أصغر عنوان. هذا يعني أن الرقم السداسي عشر لدينا هو 400 سيظهر كـ [00 04]. هذا يقرأ إلى الوراء ، ولكن القيمة في القيام بذلك هي أن رقمًا مثل 5 يتم تحويله من كلمة إلى بايت لا يتطلب تغيير العنوان. قد يتحول ببساطة من [05 00] إلى [05] فقط. لم نغير نقطة الانطلاق في المجموعة الخاصة بنا للقيام بذلك ، لقد نجحت للتو. يستخدم conquer online little endian ، وهذا جيد لأن c # يستخدم little endian أيضًا لتحويلات وتدفقات البت. للمساعدة في التحويل بين العشرية والسداسية عشرية ، فكر في استخدام "حاسبة windows" في وضع "المبرمج".

الهياكل
والآن بعد أن فهمنا كيف يقوم conquer online بترتيب الكلمات في الرسائل ، دعنا ننتقل إلى ما يتحدث عنه conquer online. مع كل حزمة يتم إرسالها ، يبدأ العميل والخادم برأس كلمتين. يحتوي هذا الرأس على طول الحزمة ونوع الحزمة التي يتم إرسالها. هنا مثال: [18 00 15 27]. الكلمة الأولى هي الطول: 0018 (أو 24 بالتدوين العشري). الكلمة الثانية هي النوع: 2715 (10005 بالأرقام العشرية). هذه هي الحزمة msgwalk. يستغرق دقيقة واحدة لإلقاء نظرة على الهيكل على الويكي. يحتوي كل نوع حزمة على رسالة مختلفة يرسلها. على سبيل المثال ، تصف الحزمة msgwalk خطوة في العالم ، يتم تنفيذها بواسطة لاعب أو وحش. دعنا نقرأ تفريغ الحزمة التالي لـ msgwalk للتصحيح 5517. سيساعد أيضًا مخطط الاتجاه أدناه.


كود بلغة HTML:
18 00 15 27 72 00 00 00 29 20 1a 00 00 00 00 00 
82 2d 3f 05 00 00 00 00 54 51 53 65 72 76 65 72

كود:
[offset 0472 00 00 00 114The direction of the player mod possible angles (8). 114 mod 8 direction 2.
[offset 0829 20 1a 00 1712169The unique character id making the step.
[
offset 1200 00 00 00 0The type of movement being sent (walking).
[
offset 1682 2d 3f 05 88026498Timestamp (current system tick).
[
offset 2000 00 00 00 0Map id (not always supplied).
[
offset 2454 51 53 65 72 76 65 72 tqserverThe footer of the packet

بالنسبة إلى باتشات conquer online التي تزيد عن 5017 ، تنتهي كل حزمة من خادم اللعبة إما بـ "tqserver" أو "tqclient" ، اعتمادًا على موقعها. يشير "tqserver" إلى أن الحزمة من الخادم ، بينما تشير "tqclient" إلى أن الحزمة من العميل. لا يتم تضمين طول تذييل الصفحة في إزاحة 0 من الرأس (وهو طول الحزمة).

----------------------------
في التمرين
* أعلم أن هناك الكثير لتستقبله ، لكن الآن دعنا نبرمج هذا الهيكل في c # (أسهل كثيرًا). في هذا البرنامج التعليمي ، سأستخدم bitconverter لقراءة البنية في c #. في المثال أدناه ، لا أتعامل مع تذييل الحزمة. بدلاً من ذلك ، أهملها (حيث أنني لست بحاجة إلى ذلك - إنها حقًا جيدة فقط لتصحيح أخطاء مصدر الحزمة عبر الشبكة كملف رزم).
كود بلغة HTML:
var length = bitconverter.touint16(packet, 0);
var typeid = bitconverter.touint16(packet, 2);
var direction = bitconverter.touint32(packet, 4) % 8;
var character = bitconverter.touint32(packet, 8);
var typemove = bitconverter.touint32(packet, 12);
var timestamp = bitconverter.touint32(packet, 16);
var mapid = bitconverter.touint32(packet, 20);
إذا كنت تستخدم سورس من الانترنت ، والذي أوصيك بالإشارة إليه على أي حال للحصول على تعليق البرمجة لـ conquer online ، فراجع الطريقة التي يتعامل بها خادمك مع قراءة الحزمة وكتابتها. للحصول على أمثلة أفضل لنظام المقبس ومعالجة الرزم ، راجع مصدري: عفواً لايمكن عرض الرابط إلا بعد الرد على الموضوعله مشاكله ، لكنه موثق بالكامل وسهل التعلم منه. آمل أن يكون هذا الدليل قد ساعدك في فهم المزيد حول كيفية عمل الشبكات والحزم مع conquer online. إذا كان لديك أي أسئلة أو طلبات للحصول على تفسيرات أفضل ، فيرجى إخبارنا بذلك.

Links
عفواً لايمكن عرض الرابط إلا بعد الرد على الموضوع
عفواً لايمكن عرض الرابط إلا بعد الرد على الموضوع
عاش استمر يا هندسه


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



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

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

المواضيع المتشابهه للموضوع: ازاي احلل بكيتات
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
دلع سيرفرك بي اجمل اشكال title لاول مرة علي النت من احمد فتحي ahmedfathy تطوير سيرفرات كونكر 63 يوم أمس 08:25 AM
بكيتات دخول البورتو 6858 + لودر مينا لسورس ثور M.H.B[X-Coder]X البرامج والودرات 118 2024-09-10 06:59 PM
يا اجمل ناس في الدونيه برجاء حل المشكله دي احمد التركي مشكلات السيرفيرات كونكر الشخصيه 1 2020-05-05 12:59 PM
يا رجاله ازاي احمل باتش لي كونكر العادية اصدار قديم ahmedfathy مشكلات السيرفيرات كونكر الشخصيه 1 2019-08-29 01:55 PM


الساعة الآن 09:12 PM

Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.