منتدي اكواد

منتدي اكواد (https://code.vpscairo.com/index.php)
-   تطوير سيرفرات كونكر (https://code.vpscairo.com/forumdisplay.php?f=11)
-   -   KingsWar By Mr.khled (https://code.vpscairo.com/showthread.php?t=3780)

SourceDanger 2020-02-19 01:43 PM

KingsWar By Mr.khled
 
مبدائيا نصلي على حضرت النبي

انا كنت قايل اني هنزل المسابقه هنا وانا لم بقول بعمل علطول

الحمد الله انا مش بى ابص لى اي شئ حتها لو كبير لانو بختصار الدنيا فنيه

يالا نبداء موضعنا بقا على بركه الله

اول حاجه شرح المسابقه علشان الى معندهوش فكره عنها






جميل جدا نخش بقا على التركيب

دة شرح التركيب كامل !! يالا علشان خاطر محدش يتعب نفسو فى حاجه انا عملتلكو ولله شرح جميل قوي مده 17 دقيقه بس هتستفيدو منو قوي






اول شئ نصلي على حضرت النبي

اول شئ هنعمل كلاس جديد باسم

KingsWar.cs

كود PHP:

using Conquer_Online_Server.Network.GamePackets;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 
Conquer_Online_Server.Events
{
    public class 
KingsWar
    
{
        public static 
System.DateTime StartTime;
        public static 
Time32 ScoreSendStamp;
        public static 
int StartHour 18StartMinute 00EndMinute 30;
        public static 
bool IsWar false;
        public static 
bool FirstRound false;
        public static 
bool Claim
        
{
            
get { return Program.Vars["KingsWarClaim"]; }
            
set Program.Vars["KingsWarClaim"] = value; }
        }
        public static 
uint KeeperID
        
{
            
get { return Program.Vars["KingsWarID"]; }
            
set Program.Vars["KingsWarID"] = value; }
        }
        public static 
SobNpcSpawn Pole;
        public static 
Client.GameState PoleKeeperCurrentTop;
        private static 
bool changed false;
        private static 
string[] scoreMessages;
        public static 
SafeDictionary<uintClient.GameStateScores = new SafeDictionary<uintClient.GameState>();
        public static 
void Initiate()
        {
            var 
Map Kernel.Maps[1500];
            
Pole = (SobNpcSpawn)Map.Npcs[1500];
        }
        public static 
void Start()
        {
            
StartTime System.DateTime.Now;
            
Scores = new SafeDictionary<uintClient.GameState>(100);
            
Pole.Hitpoints Pole.MaxHitpoints;
            
Kernel.SendWorldMessage(new Message("KingsWar war has began!"System.Drawing.Color.RedMessage.Center), Program.Values);
            
FirstRound true;
            foreach (var 
Client in Kernel.GamePool.Values)
            {
                
Client.KingsWarScore 0;
            }
            
Claim false;
            
IsWar true;
            foreach (var 
client in Program.Values)
                
client.MessageBox("KingsWar has started. JOIN NOW ?",
                          (
p) => { p.Player.Teleport(1002301160); }, null60);
        }
        public static 
void End()
        {
            if (
PoleKeeper != null)
            {
                
Kernel.SendWorldMessage(new Message(PoleKeeper.Player.Name " has won KingsWar!---KingsWar has ended! Go clime Your Prize"System.Drawing.Color.WhiteMessage.Center), Program.Values);
            }
            else
            {
                
Kernel.SendWorldMessage(new Message("KingsWar has ended and there was no winner!"System.Drawing.Color.RedMessage.Center), Program.Values);
            }
            
IsWar false;
            
Claim true;
        }
        public static 
void Reset()
        {
            
Scores = new SafeDictionary<uintClient.GameState>(100);
            
Pole.MaxHitpoints Pole.MaxHitpoints;
            
Pole.Hitpoints Pole.MaxHitpoints;
            foreach (var 
Client in Kernel.GamePool.Values)
            {
                
Client.KingsWarScore 0;
            }
            
IsWar true;
        }
        public static 
void FinishRound()
        {
            
FirstRound false;
            
SortScores(out PoleKeeper);
            if (
PoleKeeper != null)
            {
                
KeeperID PoleKeeper.Player.UID;
                
Kernel.SendWorldMessage(new Message(PoleKeeper.Player.Name ", has won this KingWar Round!"System.Drawing.Color.RedMessage.Center), Program.Values);
                
Pole.Name PoleKeeper.Player.Name;
            }
            
Pole.MaxHitpoints Pole.MaxHitpoints;
            
Pole.Hitpoints Pole.MaxHitpoints;
            
Kernel.SendWorldMessage(PoleProgram.Values, (ushort)1500);
            
Reset();
        }
        public static 
void AddScore(uint addScoreClient.GameState client)
        {
            if (
client != null)
            {
                
client.KingsWarScore += addScore;
                
changed true;
                if (!
Scores.ContainsKey(client.Player.UID))
                    
Scores.Add(client.Player.UIDclient);
                if ((int)
Pole.Hitpoints <= 0)
                {
                    
FinishRound();
                    return;
                }
            }
        }
        public static 
void SendScores()
        {
            if (
scoreMessages == null)
                
scoreMessages = new string[0];
            if (
Scores.Count == 0) return;
            if (
changed)
                
SortScores(out CurrentTop);
            for (
int c 0scoreMessages.Lengthc++)
            {
                
Message msg = new Message(scoreMessages[c], System.Drawing.Color.Red== Message.FirstRightCorner Message.ContinueRightCorner);
                
Kernel.SendWorldMessage(msgProgram.Values, (ushort)1500);
            }
        }
        private static 
void SortScores(out Client.GameState winner)
        {
            
winner null;
            List<
stringret = new List<string>();

            
int Place 0;
            foreach (var 
client in Scores.Values.OrderByDescending((p) => p.KingsWarScore))
            {
                if (
Place == 0)
                    
winner client;
                
string str "No  " + (Place 1).ToString() + ": " client.Player.Name "(" client.KingsWarScore ")";
                
ret.Add(str);
                
Place++;
                if (
Place == 4)
                    break;
            }

            
changed false;
            
scoreMessages ret.ToArray();
        }
    }


ونضيفو بالشكل دة

بعد كدا

هتغير طبعا اسم البروجكت شوف مثلان انت عندك اسمو اي وهتضيفو زي عندي

كود PHP:

Conquer_Online_Server 

هتخليه اسم البروجكت بتاعك

جميل جدا بعد كدا هنخش على Handle

هنبحث عن
كود PHP:

public static void ReceiveAttack(Game.Entity attackerSobNpcSpawn 

هتنزل تحت شوية

وهتضيف الكود دة
كود PHP:

     #region KingsWar
            
if (Events.KingsWar.IsWar)
            {
                if (
attacker.MapID == 1500)
                {
                    if (
attacked.UID == 1500)
                    {
                        if (
Events.KingsWar.PoleKeeper != null)
                        {
                            if (
Events.KingsWar.PoleKeeper.Player.UID == attacker.UID)
                            {
                                return;
                            }
                        }
                        if (
attacked.Hitpoints <= damage)
                        {
                            
attacked.Hitpoints 0;
                        }
                        
Events.KingsWar.AddScore(damageattacker.Owner);
                    }
                }
            }
            
#endregion 

بعد كدا هنضيف الاني بى سى دة

كود PHP:

  #region InNpc
                    
case 15000:
                        {
                            switch (
npcRequest.OptionID)
                            {
                                case 
0:
                                    {
                                        
dialog.Text("Kings war starts at xx:20. Inside your nobility rank will be promoted to be king and all the players will be equivalent. You'll have the chace of beating up your rivals.");
                                        
dialog.Option("Lemme in."1);
                                        if (
Events.KingsWar.KeeperID != 0)
                                        {
                                            if (
Events.KingsWar.KeeperID == client.Player.UID)
                                            {
                                                
dialog.Option("Lemme claim."2);
                                            }
                                        }
                                        
dialog.Option("Later."255);
                                        
dialog.Send();
                                        break;
                                    }
                                case 
1:
                                    {
                                        if (
Events.KingsWar.IsWar)
                                        {
                                            
client.Player.Teleport(1500141134);
                                        }
                                        else
                                        {
                                            
dialog.Text("The War hasn't started yet it starts at (00:20)");
                                            
dialog.Send();
                                        }
                                        break;
                                    }
                                case 
2:
                                    {
                                        if (
Events.KingsWar.Claim == true)
                                        {
                                            
Events.KingsWar.Claim false;
                                            
client.Player.ConquerPoints += 5000000;
                                            
client.Player.Money += 5000000;
                                            
uint random = (ushort)Conquer_Online_Server.Kernel.Random.Next(1300);
                                            
client.ChampionPoints += random;
                                            
//client.Inventory.Add(723720, 0, 1);
                                            
client.Player.AddTopStatus((ulong)Conquer_Online_Server.Network.GamePackets.Update.Flags3.jaspr3DateTime.Now.AddHours(1));
                                            
Kernel.SendWorldMessage(new Message(client.Player.Name " has won [" random "]Champion points . From KingsWar ! and Got 5m [Cps-Gold]"System.Drawing.Color.WhiteMessage.Center), Program.Values);
                                            
//client.Inventory.Add(3009003, 0, 1);
                                            //client.Inventory.Add(3009003, 0, 1);
                                            //client.Inventory.Add(3009003, 0, 1);
                                        
}
                                        else
                                        {
                                            
dialog.Text("You already claimed your prize");
                                            
dialog.Send();
                                        }
                                        break;
                                    }
                            }
                            break;
                        }
                    
#endregion 

بعد كدا هنخش على

World.cs

وهنبحث عن

كود PHP:

private void BuffersCallback(GameState clientint time


هننزل تحت شوية لحد الكود دة كدا

بعد كدا هنضيف الكود دة

كود PHP:

 #region KingsWar
            
if (client.Player.MapID == 1500)
            {
                if (
client.Player.NobilityRank != NobilityRank.King)
                {
                    
client.TempNobilityInformation = new NobilityInformation();
                    
client.TempNobilityInformation.Rank client.NobilityInformation.Rank;
                    
client.NobilityInformation.Rank NobilityRank.King;
                    
NobilityInfo update = new NobilityInfo(true);
                    
update.Type NobilityInfo.Icon;
                    
update.dwParam client.Player.UID;
                    
update.UpdateString(client.NobilityInformation);
                    
client.SendScreen(updatetrue);
                    
client.Player.NobilityRank client.NobilityInformation.Rank;
                }
            }
            else
            {
                if (
client.TempNobilityInformation != null)
                {
                    
client.NobilityInformation.Rank client.TempNobilityInformation.Rank;
                    
NobilityInfo update = new NobilityInfo(true);
                    
update.Type NobilityInfo.Icon;
                    
update.dwParam client.Player.UID;
                    
update.UpdateString(client.NobilityInformation);
                    
client.SendScreen(updatetrue);
                    
client.Player.NobilityRank client.NobilityInformation.Rank;
                    
client.TempNobilityInformation null;
                }
            }
            if (
client.Player.MapID == 1500)
            {
                if (
Events.KingsWar.IsWar == false)
                {
                    
client.Player.Teleport(1002299285);
                }
            }
            
#endregion 

بعد كدا هننزل على
كود PHP:

private void WorldTournaments(int time

ونضيف الرساله علشان لم يشتغل التوب

كود PHP:

            #region KingsWar[xx:20 - xx:40]

            
if (Events.KingsWar.IsWar)
            {
                if (
Time32.Now Events.KingsWar.ScoreSendStamp.AddSeconds(57))
                {
                    
Events.KingsWar.ScoreSendStamp Time32.Now;
                    
Events.KingsWar.SendScores();
                }
            }
            if (
Now64.Minute == 25 && !Events.KingsWar.IsWar)
            {
                
Events.KingsWar.Start();
            }
            if (
Events.KingsWar.IsWar)
            {
                if (
Now64.Minute == 40 && Events.KingsWar.IsWar)
                    
Events.KingsWar.End();
            }

            
#endregion 

في Program

هتبحث عن


كود PHP:

if (DMaps.LoadMap(1038)) 

هتضيف تحت
كود PHP:

Game.Guildwar 

الكود دة
كود PHP:

  if (DMaps.LoadMap(1500))
                
Events.KingsWar.Initiate(); 

بس بكدا نكون انتيها وطبعا علشان مننسيش هنضيف الاني بى سي فى نافي كات


هنفتح Npcs ونضيف بقا الكود

طبعا هنا بيقولك علشان اسم البروجكيت !!

طبعا دة كود توب ملهوش لازمه

فا احنا هنقفل عليه

برضو دة هنشيلو ملهوش لازمه

تمم قوي

بعد كدا هنخش على GameState.cs

او ممكن تكون عندك فى سورسك GameClient.cs
المهمه بعد كدا هننزل تحت خلص
كود PHP:

   public uint KingsWarScore;
        public 
Game.ConquerStructures.NobilityInformation TempNobilityInformation

هنضيفو تحت اي كود هنا !!

كدا تمم بعد كدا بقا

هنحل الايرورات التافه دي !!

طبعا لو ما اتحلتش حتها بعد الحل دة

بختصار هنعمل كدا _^_

بس كدا !!

يعني انت هتضيف اسم البروجكت بتعاك بس مش كدا :*

كدا تم الانتهاء من الاضافه

دة كود الفلوس

اول حاجه نحط ايدي

وبعد كدا الاسم

التب 2

طبعا ناس هتسائل ليه ال تب 2 علشان خاطر دة Npc لو مثلان

شوب هيبقا بدل 2 1

وكدا يعني ^_^

زي Shoping Mail كدا

اللوك فيس اي لوك يعجبك

مش كميه

هنا هنضيف في التون ستي

بعد كدا الارقام فى التون

انا هحط مثلان

كدا كدا دة تجربه !! يعني

نجرب كدا بقا !!

طبعا لو حصل ايرور زي دة انا بعتذر فيه شئ نسيت اضيفو فى القاعده

هنخش على SobNpcs

وهنضيف الايدي بتاع البوله

1500 بعد كدا اسم البوله KingsWar بعد كدا التب 10

10

وبعد كدا Look face 1137

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

84

99

5000000 


دة هلس العمود

نجرب بقا نفتح تاني ^ كدا

جميل جدا

نفتح بقا العبه

ونشوف كدا !!

اسف فى التطويل

بس دة شرح مفصل

ما علينا بعد كدا هنفتح التوب بتعنا :*

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

لم تنزلو الاني بى سى فى التون طبعا انتو عايزنا الرساله توصلكو فى وش الراجل

هنروح على الكود دة

هنعدل هنا هنكتب الارقام الى هي زي كدا

نجرب كدا بقا

هنفتح التوب من جديد علشان نشوف كدا !!



زي ما انتو شايفين كدا

اه جبنا فى وش الراجل

نخش بقا التوب

طبعا انا مش كنج فا من الطبيعي اني مش هعرف اضرب العمود ^_^

مش قصه يعني

قصدي انا اكونتي نوب

هلبس اسطفه

طبعا زي ما انتو شايفين كدا المهمه شغاله هنقفل التوب علشنا نشوف الجايزه بتعتنا

طبعا زي ما قولت فوق لو عايز تزبط السباس هتعدلو من ConquerPoints

بس كدا

واسف لو اطلت فى الشرح بس دة هيفيدكو كثير قوي

ونسيت انوها على شئ لو حصل وجبلك مشكله فى كلمه .Player.

هتخليه .Entity.

بس كدا على حساب يعني السورس بتعاك علشان محدش يجي يقولي انا مقولتهلوش حاجه

:* يالا اشوف وشكو بخير فى شروحات تانيه وسلام عليكم ورحمه الله وبركاته

كان معاكو خالد محمد


ودة التكسيت الى فيه اضافه التوب

عفواً لايمكن عرض الروابط إلا بعد الرد على الموضوع

مش طلب غير انو كل الناس تفيد غيرها يعني استفيد وفيد غيرك وخير الناس انفعهم للناس متبصوش لى العاب ولا سورسات كلوها ريح وشكرا :emoji21:

محمد ياسر 2020-02-19 01:54 PM

رد: KingsWar By Mr.khled
 
عاش ياخالد بالتوفيق ياغالي

SourceDanger 2020-02-19 01:57 PM

رد: KingsWar By Mr.khled
 
اقتباس:

المشاركة الأصلية كتبت بواسطة hazem (المشاركة 29651)
عاش ياخالد بالتوفيق ياغالي

حبيبى هاردتي يا حازم اصلى انا قولتلهم وانا بازن الله قريبا هنزل شئ يفيد الجميع

uncelsam 2020-02-19 02:10 PM

رد: KingsWar By Mr.khled
 
عاااااش يخلود يعسليه

محمد ياسر 2020-02-19 02:37 PM

رد: KingsWar By Mr.khled
 
اقتباس:

المشاركة الأصلية كتبت بواسطة sourcedanger (المشاركة 29652)
حبيبى هاردتي يا حازم اصلى انا قولتلهم وانا بازن الله قريبا هنزل شئ يفيد الجميع

انا اول واحد مستني حجاتك الجميله

Hassan Emprator 2020-02-19 02:39 PM

رد: KingsWar By Mr.khled
 
عاش يبو الخلاليد كنت هنزلها النهرضه ولله بس انت سبقتني عاش بق

محمد ياسر 2020-02-19 02:52 PM

رد: KingsWar By Mr.khled
 
حلو ياخالد لوحة تحكم الانبي سي الي بتضيف الانبي سي من غير ماترستل السيرفير بصراحه اتمني لو كنت نزلته

midoazoz 2020-02-19 03:33 PM

رد: KingsWar By Mr.khled
 
عااااش حلوه اعملها لاليكس ههههههههههههههه
عاش يا بطل

SourceDanger 2020-02-19 03:56 PM

رد: KingsWar By Mr.khled
 
اقتباس:

المشاركة الأصلية كتبت بواسطة hazem (المشاركة 29680)
حلو ياخالد لوحة تحكم الانبي سي الي بتضيف الانبي سي من غير ماترستل السيرفير بصراحه اتمني لو كنت نزلته

انت تائمر امر يا حازم بس كدا ولله يجدع لضفهلك علشان عيونك وعيون المنتدي :*

محمد ياسر 2020-02-19 04:17 PM

رد: KingsWar By Mr.khled
 
اقتباس:

المشاركة الأصلية كتبت بواسطة SourceDanger (المشاركة 29698)
انت تائمر امر يا حازم بس كدا ولله يجدع لضفهلك علشان عيونك وعيون المنتدي :*

حبيبي والله ياخالد


الساعة الآن 12:34 PM

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