منتدي اكواد

منتدي اكواد (https://code.vpscairo.com/index.php)
-   تطوير سيرفرات كونكر (https://code.vpscairo.com/forumdisplay.php?f=11)
-   -   Quest TreasureBox (https://code.vpscairo.com/showthread.php?t=763)

youssefabdelmanam 2019-07-12 09:26 AM

Quest TreasureBox
 
السلام عليكم ورحمة الله وبركاته:emoji9:
طبعا احب اعرفكم بنفسي ابل منبتدي الشرح
معاكم اخوكم يوسف عبدو :)
طبعا انا جديد هنا في المنتدي ودي تعتبر ال موضوعاتي:D

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

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

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

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

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

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

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

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

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

كود PHP:

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

وتبحث عن

كود PHP:

private void WorldTournaments 

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

كود PHP:

#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 

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

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

كود PHP:

if ((Now64.Minute == 32) && (Now64.Second == 01)) 

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

كود PHP:

if ((Now64.Minute == 37) && TreasureBox.OnGoing

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

وتبحث عن

كود PHP:

switch (client.ActiveNpc

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

كود PHP:

#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 

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

كود PHP:

if (client.ActiveNpc >= 101002 

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

كود PHP:

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

وتبحث عن

كود PHP:

public class Entity Writer

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

كود PHP:

public int CurrentTreasureBoxes 0

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

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

كود PHP:

Npc

16970    TreasureBox    2    20337    1002    296    224 

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

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

كود PHP:

10002    3820    65544    0 



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

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

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

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



محمد ياسر 2019-07-12 09:30 AM

رد: Quest TreasureBox
 
جميل بس لسه المسابقه مابدائت هههههههه

youssefabdelmanam 2019-07-12 09:43 AM

رد: Quest TreasureBox
 
اقتباس:

المشاركة الأصلية كتبت بواسطة hazem (المشاركة 4815)
جميل بس لسه المسابقه مابدائت هههههههه

هتبدأ امتي يا حازم

محمد ياسر 2019-07-12 09:44 AM

رد: Quest TreasureBox
 
لما عدد الاعضاء يبا 400

Users 2019-07-12 10:21 AM

رد: Quest TreasureBox
 
الله ينور جهز موضوعاتك عشان قربنا
وياريت تشارك المنتدى مع الناس للافاده

ALz3em 2019-07-12 11:45 AM

رد: Quest TreasureBox
 
جميل أستمر تسلم أيدك

Rider 2019-07-12 01:10 PM

رد: Quest TreasureBox
 
عاش موضوع كامل و الاضافه كامله احسنت

MohamedModyAdel 2019-07-12 05:03 PM

رد: Quest TreasureBox
 
عاش

osama 2019-07-12 05:35 PM

رد: Quest TreasureBox
 
طيب لما بفتح الصنديق كلها بتدينى سبس عالى انا عاوز السبس يكون صعب علشان السرفر انا عملو صعب يريت يكون من 100 سبس الى 2000 سبس الى يجيى فى الصنديق كلها اعمل اية علشان يحصل كدة ؟

محمد ياسر 2019-07-12 05:37 PM

رد: Quest TreasureBox
 
اقتباس:

المشاركة الأصلية كتبت بواسطة osama (المشاركة 4912)
طيب لما بفتح الصنديق كلها بتدينى سبس عالى انا عاوز السبس يكون صعب علشان السرفر انا عملو صعب يريت يكون من 100 سبس الى 2000 سبس الى يجيى فى الصنديق كلها اعمل اية علشان يحصل كدة ؟

عدل علي القيمه ده
كود PHP:

uint amount = (uint)Kernel.Random.Next(10000000,100000000); 



الساعة الآن 10:06 PM

مرحبا بكم في منتدي اكواد لتطوير الالعاب