سلسله دروس لعمل اي كويست باي فكره مهمها كانت صعبه خش وشوف بنفسك
بسم الله الرحمن الرحيم
اان شاء الله هبدا معاكم سلسله دروس متجدده هتكون في نفس الموضوع واتمني تعجبكم بس
الهدف من الدروس دي ان شاء الرحمن هتكون لو عاوز تعمل اي كويست باي فكره تعملها الزاي هقولكم الفكره
وهشرحلكم بعض الاكواد اللي هنستخدمها علي اساس انك لما تكون بتعمل كويست
وبعد مما تخلص تلاقي فيها ثغره عاوز تعدلها تعرف تعدلها منين من غير ما
تسئل حد
الكويستات انواع كتير جدا والمنتشر منها هيا فكره اللاست مان انك تدخل مابه
وتموت اللي فيها وتخرج تكسب الجايزه ودي كانت عامله مشكله ان كدا
الكويستات بقت للكينجات بس فابتدينا ندور ع حفلات تانيه بس للاسف بتبقي
مليانه ثغرات ومشاكل دا لو لقينا اصلا
هنبدا مع بعض بكويست عباره عن انك بتجمع ايتمات وتسلمها دي اديمه طبعا لكن في ناس كتير مش بتعرف تعملها
ودي حاجه مبدئيه بس عشان نتعلمها وبعد كدا هنطور الفكره وهنستخدمها باكتر من طريقه
نبدا علي بركه الله واي حد عنده سؤال في حاجه او تعليق علي حاجه او عاوز
ارفع شرح لحاجه معينه يطلب في رد وان شاء الله هرد عليه وهكون متابع
الموضوع حسب وقتي يعني
اول كويست معانا هيا كويست كنت عاملها في السورس بتاعي اللي هو 5780 اللي
كان نزل ع المنتدي بعد ما اتسرق هنزلها دلوقتي كامله وهشرح كل جزء فيها
دوره ايه
اولا هناخد الكويست جزء جزء
الكويست عباره عن انك هتكلم انبي سي بيدخلك مابه فيها وحوش بتموتهم وتجمع منهم حروف كلمه GHOSTS
وبتسلمهم لانبي سي تاني جوا بيخرجك التون وبيديك ايتم بتفتحه يديك ايتم علي
شكله عمله بتتفحه بيطلعلك وحش تموته يديك عمله تانيه تفتحها تطلعلك وحش
تاني وهكذا لحد 4 وحوش وبعد كدا بيديك جرمنت وبيديك الجايزه المحدده وليكن
مثلا مليون سي بي اس
هناخد اول جزء اللي هو الانبي سي هات
الانبي سي دا هو الراجل اللي بتكلمو عشان تخش المابه ودا عباره عن جزئين جزء خاص بالنافي كات وجزء خاص بالسي شارب
الجزء الخاص بالنافي هو انك بتروح ع القاعده بتاعت السورس وتفتح ملف npcs وبتلاقيه كالاتي
وتاني جزء بيكون في السورس في ملف npcs
ملحوظه ع الصوره عشان دي فيها حل ايرورات كتير جدا بتيجي لما بنحب نلغي كود او سطر
لو نلاحظ انا عامل كل سهمين بلون ودي حاجه من اساسيات السي شارب يعني كل قوس مفتوح لازم يقابلو قوس مقفول وكل
الاختراع سمارت |
#region
|
الاختراع سمارت |
#endregion
|
الاختراع سمارت |
case
|
الاختراع سمارت |
Break
|
تعالو بقي نبتدي نشرح كود الانبي سي
الاختراع سمارت |
#region Profishonal Quest
|
بتقفل من اول بدا المجموعه اللي هيا #region لحد انتها المجموعه اللي هيا #endregion
بعد كدا عندنا
الاختراع سمارت |
case 20136:
{
|
وبعد كدا فتحنا قوس عشان نبدا الحاله اللي معانا اللي هيا اي دي الانبي سي
الاختراع سمارت |
switch (npcRequest.OptionID)
{
|
انا لو قولت
switch (2)
السورس هيدور ع اول case 2 :
وينفذ اللي فيه
طيب هنا هو كاتبلي
الاختراع سمارت |
switch (npcRequest.OptionID)
{
|
هقوللك اللي بين القوسين دا مسار موجود في السورس الكود بيروحلو وبياخد منو الرقم اللي موجود فيه
في السورس مثلا ان اول امر بيبقي معايا اللي هو اني دوست ع الانبي سي دا يعتبر امر بسميه حاله وبتبقي رقمها صفر
فانا اول لما بضغط ع الانبي سي بيبعت رقم صفر في المسار اللي بين القوسين بتوع switch
وبتبدا تدور ع الحاله صفر او
case 0:
لما بتلاقيها بتبدا تنفذ اللي فيها طيب وبعد كدا
فتحنا قوس تاني طيب واحد هيقولي فتحنا قوس تاني من غير ما نقفل اللي فوق اصلا
هقولو احنا كدا كل شغلنا هيفضل جوا الحاله الرئيسيه اللي هيا اي دي الانبي
سي نفسه يعني كدا كل شغلنا جوا الانبي سي مش هنقفل القوس اللي فوق دا غير
لما نخلص الانبي سي وهقوللك نقفله الزاي
كدا احنا بدانا اول جزء جوا الانبي سي نفسه اللي هو لما بنضغط علي الانبي سي وقولنا الامر بيوصل الزاي وبيروح للحاله صفر الزاي
طيب وبعد كدا ؟
الاختراع سمارت |
dialog.Text("Do you Want To Go To The Professional Quest?");
|
الحاله الاولي هيا اللي معانا دلوقتي اللي مجرد كلام بنقراه طيب عرفت منين ؟
عرفت لانه كاتبلي dialog.text وكلمه تكست هيا اللي حددتلي نوع امر dialog
وبعد كدا فتحنا قوس من النوع دا ) وع السريع كدا الفرق بين القوس دا )
والقوس دا { ان القوس دا { بيكون في تحديد بدايه ونهايه حاله معينه في
اكتر من سطر لكن لو الحاله اللي معايا مجرد سطر واحد بيبقي مش مهم اوي يعني
اما القوس دا ) بيكون في نص السطر يعني مينفعش احط مفتوح في سطر واحط وواحد مقفول في السطر اللي بعده
طيب وبعد ما فتحنا القوس عندنا العلامه دي " العلامه دي بنستخدمها دايما
في اي نص كتابي بنكتبه ودي بتكون لتحديد بدايه ونهايه النص الكتابي
لما بنبدا النص الكتابي بنحطها ولما النص بيخلص بنحطها طيب وبعد كدا
الاختراع سمارت |
Do you Want To Go To The Professional Quest?
|
وبعد كدا بقفل القوس الصغير اللي بداته في اول السطر (
وبعد كدا بحط العلامه دي
;
العلامه دي اسمها فصله منقوطه ودي بتتحط في اخر السطر لعزله عن السطر اللي بعده
تمام لحد كدا
بعدكدا معايا
الاختراع سمارت |
dialog.Option("Yes Sure.", 1);
dialog.Option("No Thanks.", 255);
dialog.Send();
|
هنا الفرق ان دي هنا اسمها
dialog.option وهناك كانت text
دا النوع التاني اللي قولنا عليه ودا متعرف في السورس ع اساس انه بيبعت الحاله ل switch عشان تبحث عنها وتنفذ اللي فيها
طيب هتبعته الزاي ؟ هنشوف مع بعض
("Yes Sure.", 1);
طبعا السطر دا انا شرحته فوق اللي هو
الاختراع سمارت |
("Do you Want To Go To The Professional Quest?");
|
الفرق في رقم واحد اللي في الاخر دا
دا هنا مقصود بيه الامر اللي هتبعته dialog.option ل npcRequest.OptionID
ودا اصلا اللي switch بتجيب منه الامر بتاعها وبكدا switch بدل ما تدور ع
case 0 :
هيدور ع case 1:
تمام كدا
طيب السطر التاني بقا ؟
الاختراع سمارت |
dialog.Option("No Thanks.", 255);
|
هقوللك مش هيعمل حاجا هو جالو امر مش موجود بيقف ع كدا والتكست بيختفي
وكدا اغلب الشغل مسارات بمعني اصح
وبعد كدا عندي
break;
}
بريك هنا المقصود بيها انت الحاله صفر انتهت وبنقفل بعدها القوس اللي فتحناه لما قولنا
case 0:
{
ودي موضوحه في الصوره اللي فوق طيب احنا كدا لما هنختار الامر 1 اللي هو دا
الاختراع سمارت |
dialog.Option("Yes Sure.", 1);
|
case 1:
وينفذ اللي فيه
تعالو نشوف case 1: كدا
الاختراع سمارت |
case 1:
{
client.Entity.Teleport(9575, 50, 50);
break;
}
|
طيب تعالو كدا ع السريع ترجمه خفيفه للحاله
هنا بيقول الحاله 1 وفتح القوس وبعدين اداني الامر اللي هنفذه وبعدين جابلي break وقالي كدا الحاله 1 خلصت وقفل القوس
طيب تعالي نشوف الامر دا كدا ايه ؟
الاختراع سمارت |
client.Entity.Teleport
|
يعني باختصار بيقولي انقل اللاعب للمسار دا وبيفتح قوس يحط فيه المسار
وطبعا اول خانه هيا ادي المدينه وبعد كدا فصله وبعدين الاحداثيات بالطول
وبعدين فصله وبعدين الاحداثيات بالعرض ويقفل الكود الصغير
طيب كدا الانبي سي قالي اني في حاله الضغط عليه هيبعت امر 0 ل switch
وهتجبلي الكلام اللي هقراه والكلام اللي هبعت عن طريقه الامر مره تانيه وكمان انا اختارت الامر 1 وتم التنفيذ
طيب انا عاوز حاجه تانيه من الانبي سي ؟
لا كدا دورو انتهي طيب نقفل الانبي سي بقا
الاختراع سمارت |
case 20136:
{
switch (npcRequest.OptionID)
{
case 0:
{
dialog.Text("Do you Want To Go To The Professional Quest?");
dialog.Option("Yes Sure.", 1);
dialog.Option("No Thanks.", 255);
dialog.Send();
break;
}
case 1:
{
client.Entity.Teleport(9575, 50, 50);
break;
}
|
الاختراع سمارت |
case 20136:
{
|
هقوللك عادي جدا بعد ما تخلص اخر حاله معانا هنروح حاطين تحتيها ع طول
الاختراع سمارت |
break;
}
|
هيفضل معانا ايرور تعالي ندور كدا ونقسم الاقواس زي ما انا مقسمها في الصوره
هتلاقي ان في قوس لسه ما قفلناهوش اللي هو فين ؟
الاختراع سمارت |
switch (npcRequest.OptionID)
{
|
هقوللك هنشوف هو اتفتح فين ودور كان ايه
القوس دا بيحدد حاله switch كامله ولكن switch نفسها جوا حاله الانبي سي نفسه
يبقي مينفعش اقفلها في الاخر لان كدا هتدخل الدنيا في بعضها لا انا هقفل القوس قبل نهايه حاله الانبي سي ع طول
طيب احنا قفلنا الانبي سي فين ؟
قفلنا بالسطر دا
الاختراع سمارت |
break;
}
|
وبكدا الانبي سي انتهي وهعمل #endregion عشان اقفل المجموعه
وكدا تم شرح كل تفاصيل اول انبي سي اللي هو انبي سي النقل من مكان لمكان
ملحوظه :
_______
اي حد مش فاهم اي حاجه في الدرس يسيب سؤال في رد واللي مش راكبه معاه اوي
يفتح السي شارب ويحاول يطبق عملي هتثبت معاه بشكل سهل جدا لان البرمجه
اساسها الممارسه
اتمني تاخدو الحكايه جد وباذن الله هنزل درس تاني فيه الانبي سي اللي
بيستلم منك وشرح الزيادات من الانبي سي دا لدا وايه اللي اتغير وايه
الاوامر الجديده
لو محسيتش ان في ناس متابعه معايا وعاوزه تتعلم انا هتوقف عن رفع الدروس لان ساعتها مش هيكون في فايده منها
اتمني من الله اني اكون عرفت افيدكم ولو بحاجه بسيطه وان شاء الله الموضوع دا متجدد واي شرح هيكون هنا في نفس الموضوع
تحياتي واحترامي للجميع ...............
الدرس التاني :
__________
دلوقتي هشرح الانبي سي التاني وطبعا مش هشرح الانبي سي كله لان في اجزاء تم شرحها في الجزء الاول
بس هشرح الزياده ودورها وطريقه استخدامها
اولا الانبي سي التاني اهو
الاختراع سمارت |
#region City Ghosts
case 135135:
{
switch (npcRequest.OptionID)
{
case 0:
{
dialog.Text("Hello " + client.Entity.Name + " this is Professional QUest You Need Prize? .");
dialog.Text("I need ABC of word G H O S T S ?.");
dialog.Option("Yes I Have Give My Prize.", 1);
dialog.Option("Sorry I Don't Have All Items.", 255);
dialog.Avatar(116);
dialog.Send();
break;
}
case 1:
{
// if (DateTime.Now.Minute >= 01 && DateTime.Now.Minute <= 59)
// {
if (client.Inventory.Contains(20141, 1))//Joy-Coin
{
if (client.Inventory.Contains(20142, 1))//Wish-Coin
{
if (client.Inventory.Contains(20143, 1))//Advancedjoy-Coin
{
if (client.Inventory.Contains(20144, 1))//Nirvana-Box
{
if (client.Inventory.Contains(20145, 1))//FlyingRoosterE-gg
{
if (client.Inventory.Contains(20146, 1))//FlyingRoosterE-gg
{
client.Inventory.Remove(20141, 1);
client.Inventory.Remove(20142, 1);
client.Inventory.Remove(20143, 1);
client.Inventory.Remove(20144, 1);
client.Inventory.Remove(20145, 1);
client.Inventory.Remove(20146, 1);
client.Inventory.Add(5130513, 0, 1);
client.Entity.Teleport(1002, 460, 380);
AhmedBakkar.Kernel.SendWorldMessage(new AhmedBakkar.Network.GamePackets.Message("Congratulations! " + client.Entity.Name + " Has finshed Professional Quest Ghosts of Sparta Part (1) .", Message.TopLeft));
}
/* else
{
dialog.Text("Sorry But You Don't Have All Things You Can't finish The Quest");
dialog.Option("Ahh sorry.", 255);
dialog.Avatar(116);
dialog.Send();
}
break;
}*/
else
{
dialog.Text("Sorry But You Don't Have All Things You Can't finish The Quest");
dialog.Option("Ahh sorry.", 255);
dialog.Avatar(116);
dialog.Send();
}
break;
}
else
{
dialog.Text("Sorry But You Don't Have All Things You Can't finish The Quest.");
dialog.Option("Ahh sorry.", 255);
dialog.Avatar(116);
dialog.Send();
}
break;
}
else
{
dialog.Text("Sorry But You Don't Have All Things You Can't finish The Quest.");
dialog.Option("Ahh sorry.", 255);
dialog.Avatar(116);
dialog.Send();
}
break;
}
else
{
dialog.Text("Sorry But You Don't Have All Things You Can't finish The Quest.");
dialog.Option("Ahh sorry.", 255);
dialog.Avatar(116);
dialog.Send();
}
break;
}
else
{
dialog.Text("Sorry But You Don't Have All Things You Can't finish The Quest.");
dialog.Option("Okay sorry Iam Will Waiting.", 255);
dialog.Avatar(116);
dialog.Send();
}
break;
}
else
{
dialog.Text("Sorry But You Don't Have All Things You Can't finish The Quest.");
dialog.Option("Okay sorry Iam Will Waiting.", 255);
dialog.Avatar(116);
dialog.Send();
}
break;
}
}
break;
}
#endregion
|
الجديد في الانبي سي دي حاجه اسمها قاعده if وهنعرف ايه هيا if و else و elseif
اول جزء في الانبي سي تم شرحه في الجزء اللي فات
الاختراع سمارت |
#region City Ghosts
case 135135:
{
switch (npcRequest.OptionID)
{
case 0:
{
dialog.Text("Hello " + client.Entity.Name + " this is Professional QUest You Need Prize? .");
dialog.Text("I need ABC of word G H O S T S ?.");
dialog.Option("Yes I Have Give My Prize.", 1);
dialog.Option("Sorry I Don't Have All Items.", 255);
dialog.Avatar(116);
dialog.Send();
break;
}
|
حاجه بسيطه كدا عشان الناس اللي متعرفش في السطر دا
الاختراع سمارت |
dialog.Text("Hello " + client.Entity.Name + " this is Professional QUest You Need Prize? .");
|
الاختراع سمارت |
" + client.Entity.Name + "
|
للنص المسار دا وبعد كدا علامه + و بعدين " ولو لغينا العلامتين اللي في النص دول هتلاقي الانبي سي بيقوللك
الاختراع سمارت |
"Hello + client.Entity.Name + this is Professional QUest You Need Prize?
|
الاختراع سمارت |
client.Entity.Name
|
نكمل بقا الجديد
اللي هيا قاعده if
دي باختصار معناها اذا او لو
يعني انا مثلا عاوز اعمل الكويست بوقت يبقي هقول لو الساعه كذا يدخل
عشان اقول لو الساعه كذا يدخل للسورس بقي هقولهالو الزاي ؟
هقولهالو بالطريقه اللي يفهمها اللي هيا قاعده if
يعني هقولو
الاختراع سمارت |
if (الساعه كذا )
|
وقولت لو الساعه كذا طيب الساعه كذا دي هيعمل ايه ؟
يبقي اللي انا عاوزو يعملو دي حاجه اسمها جواب الشرط انا مثلا عاوزو يدخلك مكان معين يبقي جواب الشرط هو امر الدخول زي كدا مثلا
الاختراع سمارت |
if(الساعه كذا )
نقل الي المكان كذا
|
طيب هو انا ممكن احطلو شرطين يعني مثلا اقولو ان الساعه تكون كذا وان نقاط البي كي تكون كزا ؟
اه ينفع وفيه اكتر من طريقه
طيب الزاي؟
هقوللك الطريقه الاولي والسهله لو انا عاوز اقولو ان من الساعه 1 لحد
الساعه 1.10 يدخلك المكان او يخرجك منو في المعاد دا بس غير كدا ميرداش
ينقلك
دا هيتم بواسطه بعض العلامات ودا مثال
الاختراع سمارت |
if ( الساعه تساوي 1 && الساعه اقل من او تساوي 1.10)
نقل من مكان كذا الي مكان كذا
|
الاختراع سمارت |
if (الساعه تساوي 1)
{
if (الساعه اقل من او تساوي 1.10)
نقل من مكان كذا الي مكان كذا
|
طيب كدا انا قولت لو الساعه 1 واقل من واحده و1.10 هيتم النقل طيب ولو الساعه مش واحد اصلا او واحده بس واحده وتلت مثلا
هنا بقا في حاجه اسمها else
ودي بمعنا لو لم
يعني كدا مثلا
الاختراع سمارت |
if (الساعه 1 && الساعه اقل من 1.10)
نقل من مكان كذا الي مكان كذ
else :
( لن يمكنك المرور الا من الساعه 1.00 الي الساعه 1.10)
|
طيب الكلام بلغه البرمجه عموما عاوزين نخصصو اكتر شويه للسورس هنشوفو بقا مع المثال بس نخلينا فاكرين ايه هيا شغله if و else
تعالو نشوف
الاختراع سمارت |
case 1:
{if (client.Inventory.Contains(20141, 1))//Joy-Coin
{
if (client.Inventory.Contains(20142, 1))//Wish-Coin
{
if (client.Inventory.Contains(20143, 1))//Advancedjoy-Coin
{
if (client.Inventory.Contains(20144, 1))//Nirvana-Box
{
if (client.Inventory.Contains(20145, 1))//FlyingRoosterE-gg
{
if (client.Inventory.Contains(20146, 1))//FlyingRoosterE-gg
{
client.Inventory.Remove(20141, 1);
client.Inventory.Remove(20142, 1);
client.Inventory.Remove(20143, 1);
client.Inventory.Remove(20144, 1);
client.Inventory.Remove(20145, 1);
client.Inventory.Remove(20146, 1);
client.Inventory.Add(5130513, 0, 1);
client.Entity.Teleport(1002, 460, 380);
AhmedBakkar.Kernel.SendWorldMessage(new AhmedBakkar.Network.GamePackets.Message("Congratulations! " + client.Entity.Name + " Has finshed Professional Quest Ghosts of Sparta Part (1) .", Message.TopLeft));
}
|
اول الكود بيقولي في الحاله واحد وطبعا احنا عرفنا الحاله واحد دي يعني ايه وجات الزاي ؟
تعالو ننفذ اللي في الحاله واحد دي
انا عاوز اقولو لو معاه نوع الايتم كذا عدد كذا يبقي هقول
الاختراع سمارت |
{[if (client.Inventory.Contains(20141, 1))//Joy-Coin
{
|
الكلام اللي فات مكانش فيه انجليزي خالص
هقوللك خليك معايا وهتفهم
اول جزئيه if يعني لو وبعد كدا فتحنا القوس عشان نكتب الشرط
وبعد كدا هنكتب الشرط اللي هو لو معاه ايتم كذا بعدد كذا (يعني مثلا معاه 10 ايتمات من النوع دا )
بلغه السورس بقا اسمها كدا
الاختراع سمارت |
client.Inventory.Contains
|
طيب انا بقي معايا السطر شكله كدا دلوقتي
الاختراع سمارت |
if (client.Inventory.Contains
|
هفتحله بقا قوس صغير واقولو هتدور علي احمد ولو لقيته شوفلي كام واحد اسمهم احمد هنا برده نفس القصه تقريبا
هفتح قوس واحطله اي دي الايتم طيب هتقولي اي دي الايتم دا هجيبو منين ؟
هقولو هعمل درس لشرح عمل ايتمات وانواعها وهتعرف ايه هو الايتم وايه هو
الاي دي بتاعو
طيب تمام جبنا الايتم والكود بقا شكله كدا
الاختراع سمارت |
client.Inventory.Contains(20141
|
الاختراع سمارت |
client.Inventory.Contains(20141, 1
|
عاوز اقفل بقا لازم اقفل بالترتيب عشان مش اتلخبط
يعني هقفل الاول قوس عشان القوس اللي انا فتحته لما جيت احط الايتم وبعدين
احط قوس تاني عشان اقفل القوس اللي فتحته لما جيت احط الشرط
لان زي ما احنا متفقين ان كل قوس مفتوح لازم يقابله قوس من نفس نوعه يقفله
طيب شكل الكود هيبقي كدا
الاختراع سمارت |
client.Inventory.Contains(20141, 1))
|
كذا دا بقا هو جواب الشرط اللي هو ايه عندنا في المثال ؟
الاختراع سمارت |
if (client.Inventory.Contains(20142, 1))//Wish-Coin
{
|
اه مش انا قولتلك ان ممكن نعمل اكتر من شرط ودلوقتي كمان بقوللك ينفع نعمل
عده حاجات بمجرد تحقق شرط واحد وممكن نعمل عده شروط لتحقق حاجه واحده
هو هنا بيقولي لو انت معاك الايتم الاول شوف لو معاك ايتم تاني طيب تمام
معايا الايتم التاني بتفضل ماشي تحقق الشروط لحد لما توصل لشرط منهم
هيقوللك تعمل حاجا معينه بس هتعملها امته بقي ؟ لما يكون كل الشروط اللي
فاتت اتاكدت انها تمام ودا الحاله التانيه اللي انا قولتلكو عليها فوق طيب
هنا معانا بنفس الطريقه
لحد
لحد
الاختراع سمارت |
if (client.Inventory.Contains(20141, 1))//Joy-Coin
{
if (client.Inventory.Contains(20142, 1))//Wish-Coin
{
if (client.Inventory.Contains(20143, 1))//Advancedjoy-Coin
{
if (client.Inventory.Contains(20144, 1))//Nirvana-Box
{
if (client.Inventory.Contains(20145, 1))//FlyingRoosterE-gg
{
if (client.Inventory.Contains(20146, 1))//FlyingRoosterE-gg
{
client.Inventory.Remove(20141, 1);
client.Inventory.Remove(20142, 1);
client.Inventory.Remove(20143, 1);
client.Inventory.Remove(20144, 1);
client.Inventory.Remove(20145, 1);
client.Inventory.Remove(20146, 1);
|
مش انا فوق قولتلك لو الساعه 1 تدخلني هنا نفس الحكايه فوق بيقولي لو معاك الايتم كذا بعدد 1 هتمسح الايتم كذا بعدد كذا
هو هنا عاوز يقول كدا انت ممكن تقولو لما تجمع الايتمات دي تموت او تاخد سي
بي اس او تتنقل لمكان تاني اي حاجه انت عاوزها وهقولكم الزاي مع الوقت وفي
دروس قادمه المهم درسنا دلوقتي بيقول لو لقيت الايتمات دي بالاعداد دي
هتمسحها بنفس الاعداد تعالو نشوف كدا
اول شرط عندي كان
الاختراع سمارت |
if (client.Inventory.Contains(20141, 1))
|
الاختراع سمارت |
client.Inventory.Remove(20141, 1);
|
يبقي هو كدا بيقول لو معاك الايتم مون بوكس مثلا بعدد واحد مون بوكس هعمل
ايه ؟ هشوف لو معاك ميته بعدد 1 طيب لو معايا ميته ومون بوكس هشوف معايا دي
بي طيب لو معايا ميته ومون بوكس ودي بي هعمل ايه ؟ هتمسح المون بوكس
والميته والدي بي وطبعا دا مثال
عندنا في الانبي سي بتاعنا بيتاكد انك معاك الايتمات ولا لا بعدد 1 ايتم من كل نوع وبعد ما يتاكد انهم معاك كلهم
بيكمل ايه المطلوب تاني بعد ما لفيت الحاجات دي ؟ بيلاقي اكواد المسح للايتمات طيب تمام
مسحت الايتمات عاوز تعمل حاجا تاني ولا خلاص اخد منه الايتمات وشكرا كدا
لا انا لسه عاوز بقا اديله جيزته طيب عاوز الجايزه ايه ؟ ممكن بقي سي بي اس ممكن ايتمات غاليه اي حاجه تعالي نضيفها
الاختراع سمارت |
client.Inventory.Add(5130513, 0, 1);
|
طيب لو عاوز اضيف سي بي اس هتبقي كدا
الاختراع سمارت |
client.Entity.ConquerPoints += 100000;
|
طيب خلاص انا حطيت الشروط وحطيت اجوبه الشروط خلاص كدا ؟
لا لسه محطيناش في حاله الشروط متحققتش او شرط منها متحققش
هعد معايا كام if وهعمل كل if منهم حاله else خاصه بيها
ودا عشان لو انا مثلا معايا الايتم الاول والتاني ومش معايا التالت
هيجي الكود يدور هيلاقي الاول والتاني وهيجي عند التالت مش هيلاقيه هيروح else يقرا اللي فيها
انا هنا معايا كام شرط ؟ معايا 6 شروط يبقي هعملهم 6 حالات عدم تحقق للشرط
زي كدا
الاختراع سمارت |
else
{
dialog.Text("Sorry But You Don't Have All Things You Can't finish The Quest");
dialog.Option("Ahh sorry.", 255);
dialog.Avatar(116);
dialog.Send();
}
break;
}
else
{
dialog.Text("Sorry But You Don't Have All Things You Can't finish The Quest.");
dialog.Option("Ahh sorry.", 255);
dialog.Avatar(116);
dialog.Send();
}
break;
}
else
{
dialog.Text("Sorry But You Don't Have All Things You Can't finish The Quest.");
dialog.Option("Ahh sorry.", 255);
dialog.Avatar(116);
dialog.Send();
}
break;
}
else
{
dialog.Text("Sorry But You Don't Have All Things You Can't finish The Quest.");
dialog.Option("Ahh sorry.", 255);
dialog.Avatar(116);
dialog.Send();
}
break;
}
else
{
dialog.Text("Sorry But You Don't Have All Things You Can't finish The Quest.");
dialog.Option("Okay sorry Iam Will Waiting.", 255);
dialog.Avatar(116);
dialog.Send();
}
break;
}
else
{
dialog.Text("Sorry But You Don't Have All Things You Can't finish The Quest.");
dialog.Option("Okay sorry Iam Will Waiting.", 255);
dialog.Avatar(116);
dialog.Send();
}
break;
}
|
هقفل بقا الكود زي ما اتعلمنا في المثال اللي فوق وهيبقي معايا الانبي سي في النهايه كدا
الاختراع سمارت |
#region City Ghosts
case 135135:
{
switch (npcRequest.OptionID)
{
case 0:
{
dialog.Text("Hello " + client.Entity.Name + " this is Professional QUest You Need Prize? .");
dialog.Text("I need ABC of word G H O S T S ?.");
dialog.Option("Yes I Have Give My Prize.", 1);
dialog.Option("Sorry I Don't Have All Items.", 255);
dialog.Avatar(116);
dialog.Send();
break;
}
case 1:
{
if (client.Inventory.Contains(20141, 1))//Joy-Coin
{
if (client.Inventory.Contains(20142, 1))//Wish-Coin
{
if (client.Inventory.Contains(20143, 1))//Advancedjoy-Coin
{
if (client.Inventory.Contains(20144, 1))//Nirvana-Box
{
if (client.Inventory.Contains(20145, 1))//FlyingRoosterE-gg
{
if (client.Inventory.Contains(20146, 1))//FlyingRoosterE-gg
{
client.Inventory.Remove(20141, 1);
client.Inventory.Remove(20142, 1);
client.Inventory.Remove(20143, 1);
client.Inventory.Remove(20144, 1);
client.Inventory.Remove(20145, 1);
client.Inventory.Remove(20146, 1);
client.Inventory.Add(5130513, 0, 1);
client.Entity.Teleport(1002, 460, 380);
AhmedBakkar.Kernel.SendWorldMessage(new AhmedBakkar.Network.GamePackets.Message("Congratulations! " + client.Entity.Name + " Has finshed Professional Quest Ghosts of Sparta Part (1) .", Message.TopLeft));
}
else
{
dialog.Text("Sorry But You Don't Have All Things You Can't finish The Quest");
dialog.Option("Ahh sorry.", 255);
dialog.Avatar(116);
dialog.Send();
}
break;
}
else
{
dialog.Text("Sorry But You Don't Have All Things You Can't finish The Quest.");
dialog.Option("Ahh sorry.", 255);
dialog.Avatar(116);
dialog.Send();
}
break;
}
else
{
dialog.Text("Sorry But You Don't Have All Things You Can't finish The Quest.");
dialog.Option("Ahh sorry.", 255);
dialog.Avatar(116);
dialog.Send();
}
break;
}
else
{
dialog.Text("Sorry But You Don't Have All Things You Can't finish The Quest.");
dialog.Option("Ahh sorry.", 255);
dialog.Avatar(116);
dialog.Send();
}
break;
}
else
{
dialog.Text("Sorry But You Don't Have All Things You Can't finish The Quest.");
dialog.Option("Okay sorry Iam Will Waiting.", 255);
dialog.Avatar(116);
dialog.Send();
}
break;
}
else
{
dialog.Text("Sorry But You Don't Have All Things You Can't finish The Quest.");
dialog.Option("Okay sorry Iam Will Waiting.", 255);
dialog.Avatar(116);
dialog.Send();
}
break;
}
}
break;
}
#endregion
|
انا في الاخر لما جيت اضيف حالات else لو لاحظتو هتلاقو كل حاله فيها كلمه break طيب ليه ؟ مع ان مفيش else
لان break مش متخصصه لا case بس دا معناها ان المطلوب انتهي وتذهب لاخر قوس مغلق في الكود كله
يعني لو شلتها هتلاقي ان في حاله عدم تحقق اول شرط جابلك كل حالات ال else
اللي موجوده ودا عشان مفيش حاجه تقولو ان كدا المطلوب انتهي لان السورس زي
العيل الصغير لو معرفتوش كل حاجه وكل تفصيله مهما كانت صغيره مش هيعملها
وهيقف عندها
تاني حاجه السطور المنتهيه بالفصله المنقوطه اللي هيا دي ;
الفصله المنقوطه دورها فصل السطر عن السطر اللي بعده وعشان كدا مش بحطها في اخر السطر مع if لان جواب الشرط تابع ل if
يارب يكون الدرس وصل لعقولكم بسهوله واي استفسار عن اي حاجه او اي نقطه انا
موجود ومتابع ان شاء الله بس غالبا هرد بعد المغرب لحد الساعه 12 باليل
عشان مش ببقي فاضي غير في الوقت دا بس
كدا انا خلصت اول انبي سي وتاني انبي سي في حفله تجميع الحروف
ودا الانبي سي الاول والتاني بعد ما خلصو عشان تكون قادر ع فهمهم وقراتهم
وان شاء الله في الدرس اللي جاي هقول الزاي تعمل وحوش معينه والزاي تخليها
توقع ايتمات معينه والزاي تعمل مابه
اتمني منكم التنفيذ العملي والفوري حتي يكون من السهل عليكم فهم هذا الكلام
بالتوفيق للجميع ..................
__________________________________________________ ___________
الدرس التالت
__________________________________________________ ___________
بسم الله الرحمن الرحيم
النهارده ان شاء الله هقول كام حاجه مهمين ومميزين ومش محتاجين غير شويه تشغيل دماغ لا اكتر ولا اقل
اولا هقول الزاي تدي اوامر معينه باستخدام if و else
وهقوللك الزاي تجيب اي امر انت عاوزو من السورس
ومش هطول عليكم
انت المفروض بعد الدرسين اللي فاتو لما تشوف اي سطر فيه if او else هتفهمه وتعرف تقراه علي الاقل
دلوقتي انا هقولكم شويه علامات واقولكم معناها وامتي نستخدمها وكمان هقولكم تطلعو الاوامر الزاي بدون اي مجهود او تعب
طيب اولا ناخد الرموز ويارب مش انسي حاجه وممكن انتو تكونو عارفين بعض منها ولكن بالتاكيد مش كلها
الاختراع سمارت |
: 1
{ 2
( 3
; 4
, 5
|
تعالو ناخد اول علامه اللي هيا
:
ودي معناها بنستخدمها في بعض الاوامر زي case بنحطها بعد رقم ال case عشان نقول ان اللي جاي تابع للحاله دي
تاني حاجه القوس دا
}
دا بنستخدمه لتحديد الحالات بشكل اجمالي او خاص بمعني اني ممكن احدد بيه
case من اولها لحد الامر اللي بتخلص عنده وخصوصا لو كان اكتر من سطر وطبعا
بنقفله بالقوس اللي زيه بس اللي بيقفل مش بيفتح وانا وضحت الطريقه في اول
درس
تالت حاجه هيا القوس دا
(
ودا بنستخدمه لتحديد شرط او عمليه صغيره جوا شرط بس لازم يكون في نفس السطر
يعني لما افتح قوس من النوع دا في سطر لازم احط قصادو قوس زيه يقفله بعد
انتها الشرط او العمليه البسيطه المطلوبه
رابعا العلامه دي او الفصله المنقوطه
;
ودي دورها ببساطه انتهاء السطر وان السطر اللي بعده امر جديد او سطر جديد
لان ممكن يكون في سطرين تحت بعض واخدين نفس الامر وهنشرح مثال لكدا فيما
بعد
وخامسا العلامه دي اللي هيا الفصله
,
بمعني و يعني بتقولي اني هعمل كذا وكذا ومش شرط تكون لنوعين ممكت تكون
لنوع وعدد وليها استخدامات كتير هنشوفها مع الوقت بس هيا مبدايا معناها و
يعني مثلا احمد و محمد
يبقي الفاصله هيا حرف الواو
طيب انا كدا قولت خمس انواع وعزلتهم عن الباقي ليه ؟
لان دول من الاساسيات اللي دايما معاك وبيتحدد بيهم حاجات كتير ومهمه جدا ومع الوقت هنتعود عليهم وعلي استخداماتهم
طيب ندخل ع الباقي
الاختراع سمارت |
=
==
>=
<=
+=
-=
!
&&
||
|
طيب الزاي ؟
هنشوف مع بعض . تعالو ناخد اول امر اللي هو
=
دا بمعني ان احمد هو احمد خلاص مفيش كلام يعني لما احط علامه يساوي واحده معناه تاكيد يعني لما اقول
x = 1
دا معناه ان قيمه اكس = واحد ودا مينفعش نحطه في شرط . طيب ليه مينفعش
احطه في شرط ؟ عشان دا امر اصلا انت بتقولو خليلي قيمه اكس دي 1 يبقي الزاي
هتشترط حاجه انت اصلا بتعملها ؟ واللي مش فاهم تابع بس معايا وركز هتفهم
من العلامه اللي جايا
تاني علامه اللي هيا
==
معناها ايه دي بقا ؟ مش احنا لسه شارحين علامه يساوي وقولت ان معناها امر بتحويل قميه اكس هقول بقا دلوقتي
ان علامه يساوي واحده معناها تحويل الحاجه اللي قبل علامه يساوي للقيمه اللي بعدها يعني في لغه البرمجه لو قولت
ahmed = mohammed
يبقي هو هيجيب احمد ويخليه محمد
انما لو قولتله
ahmed == mohamed
هنا بقي انا بقوله هل ؟ احمد هو نفس محمد ؟ يبقي هنا انا محولتش احمد لمحمد بس انا بسالو هو احمد هو هو نفس محمد ؟
طيب هيجي واحد لسه مفمهمش ويقولي ايه يا عم اللي انت بتقولو دا احمد يبقي محمد والكلام دا هجبهالك بشكل اسهل
انا لو قولت
الساعه = 1
دي في لغه البرمجه معناها ان الساعه واحده خلاص مفيش كلام وحتي لو هيا مش واحده هو هيعتبرها واحده
انما لو قولت
الساعه == 1
دي معناها انا بسئله هل الساعه تساوي واحد ؟ يبقي هنا دا سؤال مش امر وينفع
نستخدمه كشرط يبقي هنقوله لو الساعه واحده هتعمل كذا طيب لو مش واحده ؟
يبقي خلاص خرجنا من الشرط وهتروح بقا ع else
اتمني كدا اول علامتين يكونو اتفهمو
العلامه التالته اللي هيا
>=
اللي هيا اكبر من او يساوي
لما الاقي علامه اكبر من الاول وبعد كدا علامه يساوي يبقي معناها ان القيمه
اللي انا حاطتها قبل العلامه اما اكبر من القيمه اللي بعد العلامه او
تساويها
يعني مثلا لما اقول
الساعه >= واحده
يبقي انا بقوله لو الساعه واحده او اكتر
طيب لو انا عاوز اقوله لو الساعه واحده او اقل
هتبقي العلامه الرابعه اللي هيا دي
<=
اللي هيا معناها اقل من
اعتقد دول مفيش فيهم مشكله
بس لازم الفت نظركم لحاجه
لو لقيت اكبر من بس معناها ان لازم تكون اكبر من القيمه مش تساويها يعني مثلا
الساعه > واحده يبقي كدا لو الساعه واحده هو هيعتبر الشرط محصلش لازم
تكون اكتر من واحده عشان الشرط يتحقق ونفس الموضوع بالنسبه لعلامه اكبر من
طيب ندخل في اللي بعده
+=
بمعني قيمه الزياده علامه زائد يمعني زياده ويساوي اللي هيا قيمه الزياده يبقي لما الاقي علامه
+=
يبقي هو كدا هيزود حاجه عن اصلها يعني لو انا قولت
+= 50
وانا اصلا معايا 10 هيديني المجموع 60
ونفس الموضوع بالنسبه ل -=
لو انا معايا 60 وقالي
-= 10
هيفضل معايا 50 لانه نقص من العدد اللي معايا اصلا
بعد كدا عندي علامه التعجب
!
دي بقا في البرمجه معناها لو غير . يعني ايه لو غير دي ؟
يعني انا مثلا عاوز امنع الكود ان ينفذ الامر في حاله او اتنين بس ينفذ في
اي حاله تانيه غير دول هفضل بقي اكتب كل الحالات عشان مينفذش الا فيهم
ويسيب الحالتين دول ؟ لا هنا بقي هنستخدم علامه التعجب ونحط الحاليتن
الزاي ياعم . انا مش فاهم حاجه .
تعالو نجرب بمثال
انا لو قولت
if (الساعه 1 )
روح الدرس
دا كدا معناه اني بقولو ان لو الساعه واحده متروحش الدرس
طيب ياعم ايه الجديد ؟
الجديد بقي اني لو عاوز اقوله لو الساعه مش واحده متروحش الدرس هفضل بقا
اقوله لو الساعه اتنين او تلاته او اربعه او خمسه ................. او 12
متروحش الدرس ؟
هنا بقا ممكن اقوله
if ( الساعه !1 )
متروحش الدرس
كدا انا قولتلو لو الساعه مش واحده متروحش الدرس ووفرت ع نافسي لفه كبيره
وبنحط علامه التعجب قبل القيمه او الحاجه اللي مش عاوزينها الكود يتنفذ في وجودها
اعتقد لحد كدا تمام
اللي بعده
&&
دي بقي سهله ومعناها و بس هنا بقي مش حرف الواو اللي كان في الفصله دا هنا
بمعني حرف الواو برده ولكن في مواضع تانيه غير الفصله وبستخدمها لو عاوز
احقق اكتر من شرط في نفس الحاله زي مثلا
if ( الساعه واحده او اكتر && الساعه اقل من واحده و 10 دقايق )
يبقي انا كدا اشترط الاول ان الساعه تكون واحده او اكتر وبعدين اشترط انها
تكون اقل من واحده و10 يبقي هو مش هينفذ الامر الا من الساعه واحده بالظبط
لحد الساعه واحده و 9 دقايق وباستخدام علامه and او && الكود مش
هيتنفذ في حاله تحقق الشرطين
اللي بعده
||
دي بقي بمعني او وليها نفس استخدامات && ولكن مع الفرق ان هناك قولت كذا و كذا هنا بقول كذا او كذا يعني مثلا
if ( الساعه 1 || الساعه 2 || الساعه 3 )
طيب ايه الفرق بين (او ) و (و)
الفرق ان في حاله || اللي هو او يكفي شرط واحد لتنفيذ الامر يعني احمد او عمر او محمد اي واحد فيهم يكفي
ام ابقي في حاله && فهنا لازم يكونو كلهم موجودين يعني احمد وعمر ومحمد
اعتقد لحد كدا تمام
العلامات دي انا جبتها لانها مهمه جدا وهنستخدمها كتير جدا ولازم نبقي فاهمينها
قد يكون في علامات تانيه لان العلم كله عند الله ولم يؤته احد من خلقه ولكن دي اكتر علامات هنستخدمها
والعلامات اللي في القسم الاول دي روتينيه
اما علامات الجزء التاني فدي علامات بتختلف من سطر للتاني حسب رغبه المبرمج
طيب كدا فاضل حاجه في الدرس دا
الزاي اطلع مسار لامر معين من السورس مع اني معرفش مكانو اطريقه كتابتو ؟
باختصار هيا حته تشغيل مخ من اللي هيشتغل الزاي ؟
بص يا سيدي الاكواد اللي هتحتاجها كلها بنسبه 100% موجوده في السورس و 90 %
منها مش هتغير فيها حاجه الا انك تاخدها من مكانها كوبي تحطها في الكويست
بتاعتك باست بس طبعا هتكون فاهم انت بتنقل ايه
الزاي الكلام دا
تعالو كدا نعمل كويست بشكل بسيط وبالحاجات اللي اتعلمناها مش هنحتاج حاجه
اكتر هنبتدي نعمل #region وبعدين #endregion وابدا اكتب بينهم
ع اساس يبقي بالشكل دا
الاختراع سمارت |
#region
#endregion
|
الاختراع سمارت |
#region
case 123:
{
#endregion
|
احنا متفقين ان if هيا اللي عن طريقها بقول في حاله لو كذا هنعمل كذا طيب تعالو نقول دا بلغه السورس بقا
انا عاوزو اقولو لو الساعه واحده او اكتر لحد الدقيقه اقل من 10 او لحد
الساعه اقل من واحده و 10 هروح ع اي انبي سي في السورس وهشوفو بيستخدم كود
الوقت هنطلعو وناخدو كوبي احنا مش هناخدو عشان احنا مش هنعرف نعملو بس
هناخدو بدل ما نكتبو ع ايدينا توفير في الوقت لان في النهايه لازم برده
بنكتبو حسب مسارات السورس بتاعنا فالاسهل ان احنا ناخدو من اي انبي سي طيب
احنا دلوقتي ناس بتعرف تقرا الاكواد وهنعرف نطلع كود الوقت بسهوله
وليكن مثلا
الاختراع سمارت |
if (DateTime.Now.Hour == 21 && DateTime.Now.Minute >= 11 && DateTime.Now.Minute < 30)
|
اول شرط : الساعه 21 ؟ اللي هيا DateTime.Now.Hour == 21 طيب الاجابه نعم نشوف اللي بعده
تاني شرط : الدقيقه اكتر من 11 ؟ اللي هيا DateTime.Now.Minute >= 11 طيب الاجابه نعم اللي بعده
تالت شرط : الدقيقه اقل من 30 ؟ اللي هيا DateTime.Now.Minute < 30 طيب الاجابه نعم اللي بعده
ايه دا دا مفيش حاجا تاني ؟
يبقي خلاص كل الشروط اتحققل هبتدي انفذ بقا المطلوب مني بس انا كدا هبقي اتعلمت ان مسار الوقت في السورس هو : DateTime.Now.Minute
وباستخدام العلامات اللي انا لسه شارحها هتعرف تقول بقي الساعه كام بالظبط
لو انت عملت الخطوه دي يبقي حطيت رجلك ع اول الطريق
ومن هنا بقي ممكن تعمل اي شرط انت عاوزه مش لازم يكون الوقت
يعني مثلا لو عاوز تعمل مسابقه لشخصيه معينه يبقي لانبي سي توب الشخصيات وتاخد منه كود تحديد الشخصيه
بس هتاخدو وانت فاهم كل حرف فيه معناه ايه
وهكذا في اي كود لاي اسكله اوي لفل او كونكر بوينت او كونكر بي كي اي حاجه موجوده في السورس
وبكدا تقدر تعمل كويستات كتير بانواع مختلفه
متخافش احنا لسه مخلصناش احنا لسه مشاورنا طويل شويه
طيب كدا احنا حققنا الشرط عاوزين بقي ننفذ
هقوللك هيا نفس الطريقه تقريبا
يعني عاوز في حاله تحقق الشرط يتنقل للمابه اللي انت عاملها للمسابقه يبقي خلاص هتشوف اي كود بينقل اللاعب من اي انبي سي كويست
وهيكون بالشكل دا وانت طبعا هتعرفه لواحدك لما تقرا الكود
الاختراع سمارت |
client.Entity.Teleport(1002, 429, 378);
|
client.Entity.ConquerPoints += 100000;
الكلام دا كله موجود في السورس وع فكره اللي هيدور هيلاقي حاجات كتير جدا
انا اديتكم مفاتيحها بالشروحات اللي فاتت واللي لسه هتيجي ومن هنا اللي
هيفكر بس هو اللي هيبدع اما اللي بيستني الناس تساعده هيفضل طول عمره مستني
الناس تساعده
وبكدا درس النهارده انتهي ويارب تكونو استفدتم واي حد عندو اي سؤال في اي حاجه انا متابع يسيب بس السؤال في رد
شرح اكثر من رائع
ردحذفرااااااائع فية شروحات تانية ممكن ؟
ردحذف