احصائياتى

الردود
15

المشاهدات
1669
 
SourceDanger
.:: مشرف قسم السورسات ::.

    غير متواجد

المشاركات
308

+التقييم
0.11

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

الاقامة

نظام التشغيل

رقم العضوية
111
2020-02-19, 01:43 PM
المشاركة 1
2020-02-19, 01:43 PM
المشاركة 1
افتراضي KingsWar By Mr.khled
مبدائيا نصلي على حضرت النبي

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

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

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

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






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

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






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

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

KingsWar.cs


كود:
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 = 18, StartMinute = 00, EndMinute = 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 PoleKeeper, CurrentTop;
        private static 
bool changed = false;
        private static 
string[] scoreMessages;
        public static 
SafeDictionary<uint, Client.GameState> Scores = new SafeDictionary<uint, Client.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<uint, Client.GameState>(100);
            
Pole.Hitpoints = Pole.MaxHitpoints;
            
Kernel.SendWorldMessage(new Message("KingsWar war has began!", System.Drawing.Color.Red, Message.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(1002, 301, 160); }, null, 60);
        }
        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.White, Message.Center), Program.Values);
            }
            else
            {
                
Kernel.SendWorldMessage(new Message("KingsWar has ended and there was no winner!", System.Drawing.Color.Red, Message.Center), Program.Values);
            }
            
IsWar = false;
            
Claim = true;
        }
        public static 
void Reset()
        {
            
Scores = new SafeDictionary<uint, Client.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.Red, Message.Center), Program.Values);
                
Pole.Name = PoleKeeper.Player.Name;
            }
            
Pole.MaxHitpoints = Pole.MaxHitpoints;
            
Pole.Hitpoints = Pole.MaxHitpoints;
            
Kernel.SendWorldMessage(Pole, Program.Values, (ushort)1500);
            
Reset();
        }
        public static 
void AddScore(uint addScore, Client.GameState client)
        {
            if (
client != null)
            {
                
client.KingsWarScore += addScore;
                
changed = true;
                if (!
Scores.ContainsKey(client.Player.UID))
                    
Scores.Add(client.Player.UID, client);
                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 = 0; c < scoreMessages.Length; c++)
            {
                
Message msg = new Message(scoreMessages[c], System.Drawing.Color.Red, c == 0 ? Message.FirstRightCorner : Message.ContinueRightCorner);
                
Kernel.SendWorldMessage(msg, Program.Values, (ushort)1500);
            }
        }
        private static 
void SortScores(out Client.GameState winner)
        {
            
winner = null;
            List<
string> ret = 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();
        }
    }
} 

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

بعد كدا

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


كود:
Conquer_Online_Server 

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

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

هنبحث عن

كود:
public static void ReceiveAttack(Game.Entity attacker, SobNpcSpawn 

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

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

كود:
     #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(damage, attacker.Owner);
                    }
                }
            }
            
#endregion 

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


كود:
  #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(1500, 141, 134);
                                        }
                                        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(1, 300);
                                            
client.ChampionPoints += random;
                                            
//client.Inventory.Add(723720, 0, 1);
                                            
client.Player.AddTopStatus((ulong)Conquer_Online_Server.Network.GamePackets.Update.Flags3.jaspr, 3, DateTime.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.White, Message.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

وهنبحث عن


كود:
private void BuffersCallback(GameState client, int time) 


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

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


كود:
 #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(update, true);
                    
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(update, true);
                    
client.Player.NobilityRank = client.NobilityInformation.Rank;
                    
client.TempNobilityInformation = null;
                }
            }
            if (
client.Player.MapID == 1500)
            {
                if (
Events.KingsWar.IsWar == false)
                {
                    
client.Player.Teleport(1002, 299, 285);
                }
            }
            
#endregion 

بعد كدا هننزل على

كود:
private void WorldTournaments(int time) 

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


كود:
            #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

هتبحث عن



كود:
if (DMaps.LoadMap(1038)) 

هتضيف تحت

كود:
Game.Guildwar 

الكود دة

كود:
  if (DMaps.LoadMap(1500))
                
Events.KingsWar.Initiate(); 

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


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

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

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

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

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

تمم قوي

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

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

كود:
   public uint KingsWarScore;
        public 
Game.ConquerStructures.NobilityInformation TempNobilityInformation; 

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

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

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

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

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

بس كدا !!

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

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

دة كود الفلوس

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

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

التب 2

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

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

وكدا يعني ^_^

زي Shoping Mail كدا

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

مش كميه

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

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

انا هحط مثلان

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

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

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

هنخش على SobNpcs

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

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

10

وبعد كدا Look face 1137

بعد كدا ايدي المابه

كود:
84

99

5000000 


دة هلس العمود

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

جميل جدا

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

ونشوف كدا !!

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

بس دة شرح مفصل

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

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

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

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

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

نجرب كدا بقا

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



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

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

نخش بقا التوب

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

مش قصه يعني

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

هلبس اسطفه

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

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

بس كدا

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

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

هتخليه .Entity.

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

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

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


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

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

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



التعديل الأخير تم بواسطة Hazem ; 2020-02-19 الساعة 01:59 PM
قديم 2020-02-19, 01:54 PM
المشاركة 2
Hazem
.:: المدير العام::.
  • غير متواجد
افتراضي رد: KingsWar By Mr.khled
عاش ياخالد بالتوفيق ياغالي

قديم 2020-02-19, 01:57 PM
المشاركة 3
SourceDanger
.:: مشرف قسم السورسات ::.
  • غير متواجد
افتراضي رد: KingsWar By Mr.khled
عفواً لايمكن عرض الرابط إلا بعد الرد على الموضوع
عاش ياخالد بالتوفيق ياغالي
حبيبى هاردتي يا حازم اصلى انا قولتلهم وانا بازن الله قريبا هنزل شئ يفيد الجميع

قديم 2020-02-19, 02:10 PM
المشاركة 4
uncelsam
.:: عضو مميز ::.
  • غير متواجد
افتراضي رد: KingsWar By Mr.khled
عاااااش يخلود يعسليه

قديم 2020-02-19, 02:37 PM
المشاركة 5
Hazem
.:: المدير العام::.
  • غير متواجد
افتراضي رد: KingsWar By Mr.khled
عفواً لايمكن عرض الرابط إلا بعد الرد على الموضوع
حبيبى هاردتي يا حازم اصلى انا قولتلهم وانا بازن الله قريبا هنزل شئ يفيد الجميع
انا اول واحد مستني حجاتك الجميله

قديم 2020-02-19, 02:39 PM
المشاركة 6
Hassan Emprator
.:: مشرف قسم المشاكل ::.
  • غير متواجد
افتراضي رد: KingsWar By Mr.khled
عاش يبو الخلاليد كنت هنزلها النهرضه ولله بس انت سبقتني عاش بق

قديم 2020-02-19, 02:52 PM
المشاركة 7
Hazem
.:: المدير العام::.
  • غير متواجد
افتراضي رد: KingsWar By Mr.khled
حلو ياخالد لوحة تحكم الانبي سي الي بتضيف الانبي سي من غير ماترستل السيرفير بصراحه اتمني لو كنت نزلته

قديم 2020-02-19, 03:33 PM
المشاركة 8
midoazoz
.:: عضو خبير ::.
  • غير متواجد
افتراضي رد: KingsWar By Mr.khled
عااااش حلوه اعملها لاليكس ههههههههههههههه
عاش يا بطل

قديم 2020-02-19, 03:56 PM
المشاركة 9
SourceDanger
.:: مشرف قسم السورسات ::.
  • غير متواجد
افتراضي رد: KingsWar By Mr.khled
عفواً لايمكن عرض الرابط إلا بعد الرد على الموضوع
حلو ياخالد لوحة تحكم الانبي سي الي بتضيف الانبي سي من غير ماترستل السيرفير بصراحه اتمني لو كنت نزلته
انت تائمر امر يا حازم بس كدا ولله يجدع لضفهلك علشان عيونك وعيون المنتدي :*

قديم 2020-02-19, 04:17 PM
المشاركة 10
Hazem
.:: المدير العام::.
  • غير متواجد
افتراضي رد: KingsWar By Mr.khled
عفواً لايمكن عرض الرابط إلا بعد الرد على الموضوع
انت تائمر امر يا حازم بس كدا ولله يجدع لضفهلك علشان عيونك وعيون المنتدي :*
حبيبي والله ياخالد


العلامات المرجعية



الذين يشاهدون محتوى الموضوع الآن : 1 ( الأعضاء 0 والزوار 1)
 

الانتقال السريع

المواضيع المتشابهه للموضوع: KingsWar By Mr.khled
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
Source Mr.khled V3 بعد حل جميع المشاكل SourceDanger سورسات كونكر 87 2021-09-13 04:14 PM
سورس Source Mr.khled V3 بعدل حل مشاكل كتير osama سورسات كونكر 103 2021-09-12 05:04 PM
Soruce Mr.khled V4 كام وعت وفيت SourceDanger سورسات كونكر 109 2021-02-02 12:04 AM
مشكلة فى سورس Source Mr.khled V3 osama مشكلات السيرفيرات كونكر الشخصيه 1 2019-06-25 10:57 PM


الساعة الآن 12:29 AM