الموضوع: Quest TreasureBox
عرض مشاركة واحدة
احصائياتى

الردود
17

المشاهدات
6944
 
youssefabdelmanam

youssefabdelmanam is on a distinguished road

    غير متواجد

المشاركات
82

+التقييم
0.04

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

الاقامة

نظام التشغيل

رقم العضوية
238
2019-07-12, 09:26 AM
المشاركة 1 
#1  
Post Quest TreasureBox
السلام عليكم ورحمة الله وبركاته
طبعا احب اعرفكم بنفسي ابل منبتدي الشرح
معاكم اخوكم يوسف عبدو
طبعا انا جديد هنا في المنتدي ودي تعتبر ال موضوعاتي

للاسف انا معرفتش احط لوجو المنتدي في الموضوع عشان مش معاية

انا عارف اني رغاي فيلا نخش في الشرح علي طول

دلوقتي انا جيبلكم كوستة بسيطة وهيا كوستة البحث عن الصندايق

طبعا دي كوستة بسيطة بس حبيت انزلها للناس عشان الي محتاجها

فكرة الكوستة انك مثلا بيجيلك رسالة في وقت محدد بيوديك عند ان بي سي الكوستة

بعد كدة بتدخل مابة كبيرة انت بقي تفضل تدور علي الصناديق ياما تكسب ايتم يا سبس يا جولد ياما تموت انت وحظك

بعد 10 دقايق من الكوستة بتخرج تلقأي يلا نخش في الاضافات

اول حاجة اعمل كلاس في اي مكان بأسم TreasureBox

بعد ضيف دا جواه


كود:
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using Mr_Panda.Client;
using Mr_Panda.Interfaces;
using Mr_Panda.Network.GamePackets;


namespace 
Mr_Panda.Game
{
    public class 
TreasureBox
    
{
        static 
Map Map Kernel.Maps[3820];
        const 
int MAX_BOXES 20ITEMS 1000CPSMoney 1001LEVEL 1002DEATH 1003STUN 1004KICK 1005;
        static 
int CurrentBoxes 0;
        static 
Mr_Panda.Interfaces.INpc npc;
        static 
ushort tempXtempY 0;
        static 
uint BaseId 101002;
        static List<
PointVaildOnes = new List<Point>();
        public static 
bool OnGoing;

        public static 
void Generate()
        {
            try
            {
                if (
CurrentBoxes MAX_BOXES)
                {
                    if (
Map == null)
                    {
                        
Map Kernel.Maps[3820];
                        return;
                    }
                    
tempX = (ushort)Kernel.Random.Next(0Map.Floor.Bounds.Width);
                    
tempY = (ushort)Kernel.Random.Next(0Map.Floor.Bounds.Height);
                    if (
Map.Floor[tempXtempYMapObjectType.Itemnull])
                    {
                        
npc = new Network.GamePackets.NpcSpawn();
                        
npc.UID BaseId++;
                        
npc.Mesh = (ushort)Kernel.RandFromGivingNums(930792779267928792879287 ,92579257925792579257925793079307930793079307927792679267926792779277927792779277);
                        
npc.Type Enums.NpcType.Talker;
                        
npc.MapID Map.ID;
                        
npc.tempX;
                        
npc.tempY;

                        
Map.AddNpc(npc);
                        
CurrentBoxes++;
                        
Kernel.SendWorldMessage(new Message("A new treasure box appeared!"Color.Red2012));
                    }
                }
            }
            catch (
Exception e)
            {
                
Console.WriteLine(e.ToString());
            }

        }

        public static 
void Reward(GameState client)
        {
            
client.Player.CurrentTreasureBoxes++;
            var 
orders Kernel.GamePool.Values.OrderByDescending(=> x.Player.CurrentTreasureBoxes).ToArray();
            for (
int i 0orders.Length 1i++)
            {
                if (
== 11) break;
                
Message msg;

                if (
== 0)
                {
                    
msg = new Message(""System.Drawing.Color.RedMessage.FirstRightCorner);
                }
                else
                {
                    if (
orders[1].Player.CurrentTreasureBoxes == 0) continue;
                    
msg = new Message("No " i.ToString() + "- " orders[1].Player.Name " Opened " orders[1].Player.CurrentTreasureBoxes.ToString() + " Boxes!"System.Drawing.Color.RedMessage.ContinueRightCorner);
                }

                
Kernel.SendWorldMessage(msgProgram.GamePool, (ushort)3820);
            }

            
int prize 0;

            if (
client.Player.Level <= 135)
                
prize Kernel.RandFromGivingNums(ITEMSCPSMoneyKICKITEMSCPSMoneyITEMSCPSMoneyDEATH);
            else 
prize Kernel.RandFromGivingNums(ITEMSCPSMoneyKICKITEMSCPSMoneyITEMSCPSMoneyDEATH);
            
//#warning TREASURE BOX PRIZE
            
switch (prize)
            {
                case 
CPSMoney:
                    {
                        
uint amount = (uint)Kernel.Random.Next(10000000,100000000);
                        if (
amount >= 1)
                        {
                            
client.Player.ConquerPoints += amount;
                            
Kernel.SendWorldMessage(new Message(client.Player.Name " got " amount.ToString() + " CPs while opening the TreasureBox!"Color.WhiteMessage.Talk));
                        }
                        break;
                    }
                case 
ITEMS:
                    {
                        
Database.ConquerItemBaseInformation temp;
                        
uint itemid = (uint)Kernel.RandFromGivingNums(1887551929351927751874051881051887051889451885151928252002201878552004751874051874151874253004124183325183495184305184315184375187305187315181395184405184365);
                        
client.Inventory.Add(itemid01);
                        
Database.ConquerItemInformation.BaseInformations.TryGetValue(itemidout temp);
                        
Kernel.SendWorldMessage(new Message(client.Player.Name " got " temp.Name " while opening the TreasureBox!"Color.WhiteMessage.Talk));
                        break;
                    }
                case 
KICK:
                    {
                        
client.Player.Teleport(1002338345);
                        
Kernel.SendWorldMessage(new Message(client.Player.Name " got KICKED-OUT! while opening the TreasureBox!"Color.WhiteMessage.Talk));
                        break;
                    }
                case 
DEATH:
                    {
                        
client.Player.Die(client.Player);
                        
Kernel.SendWorldMessage(new Message(client.Player.Name " got Death! while opening the TreasureBox!"Color.WhiteMessage.Talk));
                        break;
                    }
            }

            
CurrentBoxes--;
            
client.Player.ConquerPoints += 100000;
            
//client.Entity.TreasuerPoints += 1;
        
}
    }


بعد كدة تخش علي كلاس World.cs

وتبحث عن


كود:
private void WorldTournaments 

وتضيف دا تحتها


كود:
#region TreasureBox
            
if ((Now64.Minute == 32) && (Now64.Second == 01))
            {
                
TreasureBox.OnGoing true;
                for (
int i 010i++)
                    
Game.TreasureBox.Generate();
                
Kernel.SendWorldMessage(new Message("The Lost TreasureBox event began!"Color.RedMessage.Center));

                foreach (var 
client in Program.Values)
                    
client.MessageBox("Lost treasure box event has started! Would you like to join? [Prize: 5kk or 1 kk  CPs or more]",
                        (
p) => { p.Player.Teleport(1002300229); }, null);
            }
            if (
TreasureBox.OnGoing)
            {
                
Game.TreasureBox.Generate();
            }
            if ((
Now64.Minute == 37) && TreasureBox.OnGoing)
            {
                
TreasureBox.OnGoing false;
                foreach (var 
client in Program.Values)
                    if (
client.Player.MapID == 3820)
                        
client.Player.Teleport(1002302286);
                
Kernel.SendWorldMessage(new Message("The Lost TreasureBox event ended!"Color.RedMessage.Center));
            }
            
#endregion 

ملحوظة: لو حبيت تعدل علي وقت الكوستة

هنا الوقت الي بيبدأ فيه الكوستة


كود:
if ((Now64.Minute == 32) && (Now64.Second == 01)) 

وهنا الوقت الي بينتهي فيه الكوستة وتخرج التون


كود:
if ((Now64.Minute == 37) && TreasureBox.OnGoing

بعد كدة هتدخل علي كلاس Npc.cs

وتبحث عن


كود:
switch (client.ActiveNpc

وتضيف دا تحتية


كود:
#region TreasureThief
                    
case 16970:
                        {
                            switch (
npcRequest.OptionID)
                            {
                                case 
0:
                                    {
                                        
dialog.Text("I have lost all my treasure boxes inside the DisCity map when I was doing the quest! now you'll need to find them for me!");
                                        
dialog.Option("Send me there."1);
                                        
dialog.Option("Meh!"255);
                                        
dialog.Send();
                                        break;
                                    }
                                case 
1:
                                    {
                                        if (
TreasureBox.OnGoing)
                                        {
                                            
client.Player.Teleport(3820, (ushort)Kernel.Random.Next(87212), (ushort)Kernel.Random.Next(114200));
                                        }
                                        else
                                        {
                                            
dialog.Text("I can only send you there when it's xx:32 To xx:37 ");
                                            
dialog.Option("Oh I See!."255);
                                            
dialog.Send();
                                        }
                                        break;
                                    }
                            }
                            break;
                        }
                    
#endregion 

بعد كدة تبحث في نفس الكلاس عن


كود:
if (client.ActiveNpc >= 101002 

وتبدلها كلها بي دي


كود:
if (client.ActiveNpc >= 101002 && client.Player.MapID == 3820)
                            {
                                
client.SendScreen(new Network.GamePackets.Data(true) { UID client.ActiveNpcID Network.GamePackets.Data.RemoveEntity }, true);
                                
client.Map.RemoveNpc(client.Map.Npcs[client.ActiveNpc]);
                                
Mr_Panda.Game.TreasureBox.Reward(client);
                            } 

بعد كدة هتخش علي كلاس Entity.Cs

وتبحث عن


كود:
public class Entity Writer

وتضيف دا تحتية


كود:
public int CurrentTreasureBoxes 0

كدا خلصنا اضافات السي شارب نخش علي اضافات النافي كات

اضافة الان بي سي في الانافي كات


كود:
Npc

16970    TreasureBox    2    20337    1002    296    224 

بص كدة معاية في اضافة المابة اول حاجة هتروح تضيف المابة دي لو لقيتها اصلا عندك امسها وضيف الي في الموضوع

عشان كلو يبقي شغال معاك تمام


كود:
10002    3820    65544    0 



كدا تم الاتنهاء بفضل الله دعوه حلوه بقا ملحوظه الي هيطلع ايرور في Mr_Panda يبدلها في اسم البروجكت

والي هيجيلو ايرور في كلمة Player يبدلها بكلمة Entity

وانتظروني في موضوعات اخري

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