فوكس كونكر - 🦊 - Conquer
موضوع بعنوان :ازاي تعمل كويست بالهدايا اللي تعجبك
الكاتب :beshoy


اول موضوع ليا خفيف biggrin2 biggrin2
واكيد الكلام ده نزل كتير بس يمكن مش بتفاصيل الله اعلم
الموضوع هيبقي افضل للسرفرات الصعبة
نخش فالموضوع
 
انا دلوقتي سيرفر صعب و عايز اعمل كويست بتيدي (+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 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 مش ناقص غير النافي كات
كده خلص الموضوع وبعيد تاني اكيد الكلام ده اتقال كتير
انشاء الله اللي جي اتقل
34qwt4y