اول موضوع ليا خفيف
واكيد الكلام ده نزل كتير بس يمكن مش بتفاصيل الله اعلم
الموضوع هيبقي افضل للسرفرات الصعبة
نخش فالموضوع
انا دلوقتي سيرفر صعب و عايز اعمل كويست بتيدي (+1 - +3 - دي بي .....)
فشغلنا كله في
navicat و npc.cs و World.cs
اولا
Npc.cs
واكيد الكلام ده نزل كتير بس يمكن مش بتفاصيل الله اعلم
الموضوع هيبقي افضل للسرفرات الصعبة
نخش فالموضوع
انا دلوقتي سيرفر صعب و عايز اعمل كويست بتيدي (+1 - +3 - دي بي .....)
فشغلنا كله في
navicat و npc.cs و World.cs
اولا
Npc.cs
___________________________________________________________________________________________________________________________________
#region OneHit //هنا اسم الان بي سي
case 18415260: // هنا تكتب اي رقم المهم ميبقاش متكرر
{
switch (npcRequest.OptionID)
{
case 0:
{
dialog.Text("Hey there " + client.Entity.Name + " Would you like to join OneHit."); //الرسالة اللي الان بي سي يبقولها(اللي بالاحمر)و اللي بالاسود ده اسم الشخص اللي بيكلم الان بي سي
dialog.Option("Yes Please", 1); //وهيديك هو اختيارين تقدر تزودهم من غير متعدي رقم 255
dialog.Option("Not now.", 255);
dialog.Send();
break;
}
case 1: // (yes please)دي بقي في حالة لو دوسنا اول اختيار
{
if (DateTime.Now.Minute >= 40 && DateTime.Now.Minute <= 42) // ده الوقت اللي تقدر تخش فيه الارض تقدر تغيره بالساعة مثلا زي اللي تحت
if (DateTime.Now.Hour == 5 && DateTime.Now.Minute >= 10)
{
Random R = new Random(); //(x, y)دي بالحظ بمعني انه يهدخلك الارض بس كل واحد فمكان مش نفس
int Nr = R.Next(1, 5); //تقدر تزودهم زود 5 او تقلل زي مانت عايز
if (Nr == 1) client.Entity.Teleport(11112, 50, 60); //دي الحالات ال5
if (Nr == 2) client.Entity.Teleport(11112, 60, 50);
if (Nr == 3) client.Entity.Teleport(11112, 8, 35);
if (Nr == 4) client.Entity.Teleport(11112, 35, 8);
if (Nr == 5) client.Entity.Teleport(11112, 30, 30);
// طب انا عايزه ينزلهم كلهم فنفس النقطة
client.Entity.Teleport(11114, 50, 50); // هتشيلهم و تكتب دي
}
else
{
dialog.Text("OneHit is held during xx:40 To xx:42 in every Hour");
dialog.Option("I don't care.", 255);
dialog.Send();
break;
}
break;
}
}
break;
}
#endregion
___________________________________________________________________________________________________________________________________
#region OneHit //هنا اسم الان بي سي
case 18415260: // هنا تكتب اي رقم المهم ميبقاش متكرر
{
switch (npcRequest.OptionID)
{
case 0:
{
dialog.Text("Hey there " + client.Entity.Name + " Would you like to join OneHit."); //الرسالة اللي الان بي سي يبقولها(اللي بالاحمر)و اللي بالاسود ده اسم الشخص اللي بيكلم الان بي سي
dialog.Option("Yes Please", 1); //وهيديك هو اختيارين تقدر تزودهم من غير متعدي رقم 255
dialog.Option("Not now.", 255);
dialog.Send();
break;
}
case 1: // (yes please)دي بقي في حالة لو دوسنا اول اختيار
{
if (DateTime.Now.Minute >= 40 && DateTime.Now.Minute <= 42) // ده الوقت اللي تقدر تخش فيه الارض تقدر تغيره بالساعة مثلا زي اللي تحت
if (DateTime.Now.Hour == 5 && DateTime.Now.Minute >= 10)
{
Random R = new Random(); //(x, y)دي بالحظ بمعني انه يهدخلك الارض بس كل واحد فمكان مش نفس
int Nr = R.Next(1, 5); //تقدر تزودهم زود 5 او تقلل زي مانت عايز
if (Nr == 1) client.Entity.Teleport(11112, 50, 60); //دي الحالات ال5
if (Nr == 2) client.Entity.Teleport(11112, 60, 50);
if (Nr == 3) client.Entity.Teleport(11112, 8, 35);
if (Nr == 4) client.Entity.Teleport(11112, 35, 8);
if (Nr == 5) client.Entity.Teleport(11112, 30, 30);
// طب انا عايزه ينزلهم كلهم فنفس النقطة
client.Entity.Teleport(11114, 50, 50); // هتشيلهم و تكتب دي
}
else
{
dialog.Text("OneHit is held during xx:40 To xx:42 in every Hour");
dialog.Option("I don't care.", 255);
dialog.Send();
break;
}
break;
}
}
break;
}
#endregion
___________________________________________________________________________________________________________________________________
دلوقتي احنا خلصنا الان بي سي اللي بيدخلك الكويست
نحش علي الان بي سي اللي هيخرجك من الكويست
___________________________________________________________________________________________________________________________________
#region Winner OneHit //مخش فالمهم و الهداية
case 18415250: //هنا هتغير الرقم عشان ميحصلش ايرور
{
switch (npcRequest.OptionID)
{
case 0:
{
dialog.Text("Hey there " + client.Entity.Name + " Would you like to claim your Prize?.");
dialog.Option("Yes Please", 1);
dialog.Option("I don't care.", 255);
dialog.Send();
break;
}
case 1:
{
int alive = 0;
DateTime Now64 = DateTime.Now;
foreach (Client.GameState Entitys in Kernel.GamePool.Values)
if (Entitys.Entity.MapID == 11112 && (!Entitys.Entity.Dead))
alive++;
if (DateTime.Now.Minute >= 48) //ده وقت الخروج من الكويست لزم نزود دقيقة علي الوقت عشان اللي يخرج ميقدرش يخش تاني
{
if (alive == 1) // هنا بنقوله ان لزم يبقي متنقص واحد اللي يخرج
{
client.Entity.Teleport(1002, 300, 278); // ده هيخرجك علي التون اعمله زي مانت عايز
client.Entity.AddTopStatus(Update.Flags4.WindwalkerTop, 2, DateTime.Now.AddMinutes(59));
//من اول هنا دي هدايا لو انا حابب اضيف سبيس او سبيس بوند او دي بي اي حاجه
client.Entity.ConquerPoints += 1000;
client.Entity.BoundCps += 1000;
client.Inventory.Add(1088000, 0, 5); //ده هضيفله 5 دي بي لو حابب تغير الهدايا تعملها كاس ستون اي حاجه غير 1088000
MrDesha.Kernel.SendWorldMessage(new Message(" Congratulations ! " + client.Entity.Name + " claimed the prize [1.000] ConquerPoints for winning BigBoss Top for this Hour.", System.Drawing.Color.Black, Message.Center), Program.Values);
client.Entity.SendSpawn(client, true);
foreach (var clients in Program.Values)
{
if (clients.Entity.MapID == 11112)
{
clients.Entity.Teleport(1002, 300, 278);
clients.Send(new NpcReply(NpcReply.MessageBox, "Sorry Players Good Luck Next Time ;) "));
}
}
}
else
{
dialog.Text("There are still " + alive + " Players in the map kill it first to claim prize!");
dialog.Option("okay", 255);
dialog.Send();
break;
}
}
else
{
dialog.Text("Hey there " + client.Entity.Name + "You can only claim the prize when the time on or after xx:43");
dialog.Option("okay", 255);
dialog.Send();
break;
}
break;
}
}
break;
}
#endregion
___________________________________________________________________________________________________________________________________
كده نخش علي تاني حاجه
World.cs
عشان تعمل رسالة توصل لكل لاعب في الجيم بدل ميروح لحد الان بي سي
___________________________________________________________________________________________________________________________________
#region Onehit [40]
if (Now64.Minute == 40 && Now64.Second == 00) //هنا بنكتب امتي تيجي الرسالة لللاعب لزم تبقي طبعا نفس بداية وقت الكويست
{
Kernel.SendWorldMessage(new Message("OneHit Top began ", Color.White, Message.TopLeft), Program.Values);
foreach (var client in Program.Values)
client.MessageBox("OneHit began Would you like to join?",
p => { p.Entity.Teleport(11112, 36, 68); }, null, 20); //انت كده بتقول للرسالة انها تدخل اللاعب علي الماب للكويست علي طول
}
#endregion
___________________________________________________________________________________________________________________________________
Map و npc مش ناقص غير النافي كات
كده خلص الموضوع وبعيد تاني اكيد الكلام ده اتقال كتير
انشاء الله اللي جي اتقل
___________________________________________________________________________________________________________________________________
#region Winner OneHit //مخش فالمهم و الهداية
case 18415250: //هنا هتغير الرقم عشان ميحصلش ايرور
{
switch (npcRequest.OptionID)
{
case 0:
{
dialog.Text("Hey there " + client.Entity.Name + " Would you like to claim your Prize?.");
dialog.Option("Yes Please", 1);
dialog.Option("I don't care.", 255);
dialog.Send();
break;
}
case 1:
{
int alive = 0;
DateTime Now64 = DateTime.Now;
foreach (Client.GameState Entitys in Kernel.GamePool.Values)
if (Entitys.Entity.MapID == 11112 && (!Entitys.Entity.Dead))
alive++;
if (DateTime.Now.Minute >= 48) //ده وقت الخروج من الكويست لزم نزود دقيقة علي الوقت عشان اللي يخرج ميقدرش يخش تاني
{
if (alive == 1) // هنا بنقوله ان لزم يبقي متنقص واحد اللي يخرج
{
client.Entity.Teleport(1002, 300, 278); // ده هيخرجك علي التون اعمله زي مانت عايز
client.Entity.AddTopStatus(Update.Flags4.WindwalkerTop, 2, DateTime.Now.AddMinutes(59));
//من اول هنا دي هدايا لو انا حابب اضيف سبيس او سبيس بوند او دي بي اي حاجه
client.Entity.ConquerPoints += 1000;
client.Entity.BoundCps += 1000;
client.Inventory.Add(1088000, 0, 5); //ده هضيفله 5 دي بي لو حابب تغير الهدايا تعملها كاس ستون اي حاجه غير 1088000
MrDesha.Kernel.SendWorldMessage(new Message(" Congratulations ! " + client.Entity.Name + " claimed the prize [1.000] ConquerPoints for winning BigBoss Top for this Hour.", System.Drawing.Color.Black, Message.Center), Program.Values);
client.Entity.SendSpawn(client, true);
foreach (var clients in Program.Values)
{
if (clients.Entity.MapID == 11112)
{
clients.Entity.Teleport(1002, 300, 278);
clients.Send(new NpcReply(NpcReply.MessageBox, "Sorry Players Good Luck Next Time ;) "));
}
}
}
else
{
dialog.Text("There are still " + alive + " Players in the map kill it first to claim prize!");
dialog.Option("okay", 255);
dialog.Send();
break;
}
}
else
{
dialog.Text("Hey there " + client.Entity.Name + "You can only claim the prize when the time on or after xx:43");
dialog.Option("okay", 255);
dialog.Send();
break;
}
break;
}
}
break;
}
#endregion
___________________________________________________________________________________________________________________________________
كده نخش علي تاني حاجه
World.cs
عشان تعمل رسالة توصل لكل لاعب في الجيم بدل ميروح لحد الان بي سي
___________________________________________________________________________________________________________________________________
#region Onehit [40]
if (Now64.Minute == 40 && Now64.Second == 00) //هنا بنكتب امتي تيجي الرسالة لللاعب لزم تبقي طبعا نفس بداية وقت الكويست
{
Kernel.SendWorldMessage(new Message("OneHit Top began ", Color.White, Message.TopLeft), Program.Values);
foreach (var client in Program.Values)
client.MessageBox("OneHit began Would you like to join?",
p => { p.Entity.Teleport(11112, 36, 68); }, null, 20); //انت كده بتقول للرسالة انها تدخل اللاعب علي الماب للكويست علي طول
}
#endregion
___________________________________________________________________________________________________________________________________
Map و npc مش ناقص غير النافي كات
كده خلص الموضوع وبعيد تاني اكيد الكلام ده اتقال كتير
انشاء الله اللي جي اتقل