منتدي اكواد

منتدي اكواد (https://code.vpscairo.com/index.php)
-   مشكلات السيرفيرات كونكر الشخصيه (https://code.vpscairo.com/forumdisplay.php?f=12)
-   -   حل مشكلة الرانك (https://code.vpscairo.com/showthread.php?t=694)

osama 2019-07-09 01:47 AM

حل مشكلة الرانك
 
يجماعة من فضلكو الرانك عندى بايظ يريت حد يجبلى الاضافات كاملة من فضلكو

Users 2019-07-09 09:53 AM

رد: حل مشكلة الرانك
 
انقل الكلاس من اى سورس تانى عادى

osama 2019-07-09 12:57 PM

رد: حل مشكلة الرانك
 
اقتباس:

المشاركة الأصلية كتبت بواسطة rayzo (المشاركة 4231)
انقل الكلاس من اى سورس تانى عادى

اسم الكلااس اية طيب

osama 2019-07-09 02:28 PM

رد: حل مشكلة الرانك
 
اقتباس:

المشاركة الأصلية كتبت بواسطة osama (المشاركة 4245)
اسم الكلااس اية طيب

المشكللة عندى فى ال BestInTheWorld دى بايظة عاوز حلها

Users 2019-07-09 11:07 PM

رد: حل مشكلة الرانك
 
انت تقصد الدوينشن التبرع ولا رنك تانى ؟

osama 2019-07-10 12:38 AM

رد: حل مشكلة الرانك
 
اقتباس:

المشاركة الأصلية كتبت بواسطة Rayzo (المشاركة 4282)
انت تقصد الدوينشن التبرع ولا رنك تانى ؟

Best In THeWorld الى هيا بيظهر فيها جميع الشخصيات واميلاات الاشخاص الى جنب Hero الى فى الشريط من فوق عند المابة

osama 2019-07-10 01:02 AM

رد: حل مشكلة الرانك
 
صور لى المشكلة
https://3.top4top.net/m_1285g4g2m1.bmp
.....
https://4.top4top.net/m_128592c4a2.bmp

ارجو الحل من فضلكو

osama 2019-07-10 01:04 AM

رد: حل مشكلة الرانك
 
https://4.top4top.net/m_128592c4a2.bmp
و
https://3.top4top.net/m_1285g4g2m1.bmp

osama 2019-07-10 01:04 AM

رد: حل مشكلة الرانك
 
حل لى المشكلة دى بئا من فضلكو يا رجالة

Users 2019-07-10 02:11 AM

رد: حل مشكلة الرانك
 
انت فاتح كذا موضوع ليه ؟؟؟؟؟
ومع ذالك هشوفلك الكلاس بتعها

osama 2019-07-10 02:14 AM

رد: حل مشكلة الرانك
 
اقتباس:

المشاركة الأصلية كتبت بواسطة rayzo (المشاركة 4298)
انت فاتح كذا موضوع ليه ؟؟؟؟؟
ومع ذالك هشوفلك الكلاس بتعها

هوا موضوع واحد بس الى فتحتو انهردة وكنت محتاج حلو فى اسرع وقت هعمل اية بس انا لما بعمل موضوع محدش بيرد علية خالص يا اما يبقا فى رد بس مفيش حل
معلشى يا ايم اعزنى واسف جدا انا بئمانة شكلى هسيب المجال وهسيب المنتدى
كدة كدة مسافر الشهر دة 90 يوم فى الجيش وهبطل العبة خالص انشاء الله بس انا كنت هفكسد السورس الى معية علشان ارفعو على المنتدى قبل ما اسيب المجال خالص

Users 2019-07-10 10:25 AM

رد: حل مشكلة الرانك
 
اقتباس:

المشاركة الأصلية كتبت بواسطة osama (المشاركة 4300)
هوا موضوع واحد بس الى فتحتو انهردة وكنت محتاج حلو فى اسرع وقت هعمل اية بس انا لما بعمل موضوع محدش بيرد علية خالص يا اما يبقا فى رد بس مفيش حل
معلشى يا ايم اعزنى واسف جدا انا بئمانة شكلى هسيب المجال وهسيب المنتدى
كدة كدة مسافر الشهر دة 90 يوم فى الجيش وهبطل العبة خالص انشاء الله بس انا كنت هفكسد السورس الى معية علشان ارفعو على المنتدى قبل ما اسيب المجال خالص

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

Rider 2019-07-10 12:51 PM

رد: حل مشكلة الرانك
 
جرب بدل case 3257: الي عندك ف بكت هندلر بده

#region MsgPrestigeRanking
case 3257:
{
var pkt = new MsgRankMemberShow();
var myPacket = new byte[packet.Length - 8];
for (int i = 0; i < myPacket.Length; i++)
{
myPacket[i] = packet[i];
}
if (pkt.Read(myPacket))
pkt.Handle(client);
break;
}
#endregion

osama 2019-07-10 01:10 PM

رد: حل مشكلة الرانك
 
اقتباس:

المشاركة الأصلية كتبت بواسطة اسم العضو (المشاركة 4359)
جرب بدل case 3257: الي عندك ف بكت هندلر بده

#region MsgPrestigeRanking
case 3257:
{
var pkt = new MsgRankMemberShow();
var myPacket = new byte[packet.Length - 8];
for (int i = 0; i < myPacket.Length; i++)
{
myPacket[i] = packet[i];
}
if (pkt.Read(myPacket))
pkt.Handle(client);
break;
}
#endregion


منفعتش بردو

Rider 2019-07-12 02:42 PM

رد: حل مشكلة الرانك
 
ادخل علي Network/Gamepackets

و افتح
prefection.cs ب ده و شوف هيجبلك ايرور فين و قولي

كود بلغة HTML:

using ProtoBuf;
using System;
using System.Runtime.InteropServices;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Collections.Concurrent;
using System.Text;
using Mr_Panda;
using Mr_Panda.Database;
using System.Threading.Tasks;

namespace Mr_Panda.Network.GamePackets
{
    public class MsgUserAbilityScore
    {
        public MsgUserAbilityScore() { }
        public MsgUserAbilityScoreProto Info;
        [ProtoContract]
        public class MsgUserAbilityScoreProto
        {
            [ProtoMember(1, IsRequired = true)]
            public uint ActionId;
            [ProtoMember(2, IsRequired = true)]
            public uint UID;
            [ProtoMember(3, IsRequired = true)]
            public uint Level;
            [ProtoMember(4, IsRequired = true)]
            public Scores[] Scores;
        }
        [ProtoContract]
        public class Scores
        {
            [ProtoMember(1, IsRequired = true)]
            public uint Type;
            [ProtoMember(2, IsRequired = true)]
            public uint Score;
        }
        public static ConcurrentDictionary<uint, Game.Entity> RankingList;
        public void GetRankingList()
        {
            RankingList = new ConcurrentDictionary<uint, Game.Entity>();
            using (var cmd = new MySqlCommand(MySqlCommandType.SELECT).Select("entities"))
            using (var reader = new MySqlReader(cmd))
            {
                while (reader.Read())
                {
                    if (reader.ReadUInt32("TotalPerfectionScore") < 20000) continue;
                    Game.Entity client = new Game.Entity(Game.EntityFlag.Entity, false);
                    client.Name = reader.ReadString("Name");
                    client.UID = reader.ReadUInt32("UID");
                    client.Level = reader.ReadByte("Level");
                    client.Class = reader.ReadByte("Class");
                    client.Body = reader.ReadUInt16("Body");
                    client.Face = reader.ReadUInt16("Face");
                    client.TotalPerfectionScore = reader.ReadUInt32("TotalPerfectionScore");
                    if (reader.ReadString("Wardrobe") != "")
                    {
                        if (reader.ReadString("Wardrobe").Contains("~"))
                        {
                            var wing = reader.ReadString("Wardrobe").Split('~')[0];
                            int type = Convert.ToInt32(wing.Split('-')[0]);
                            int id = Convert.ToInt32(wing.Split('-')[1]);
                            client.EquippedWing = StorageManager.Wing<int>
(type, id);
                            var title = reader.ReadString("Wardrobe").Split('~')[1];
                            int type2 = Convert.ToInt32(title.Split('-')[0]);
                            int id2 = Convert.ToInt32(title.Split('-')[1]);
                            client.EquippedTitle = StorageManager.Title<int>(type2, id2);
                        }
                    }
                    RankingList.Add(client.UID, Kernel.GamePool.ContainsKey(client.UID) ? Kernel.GamePool[client.UID].Player : client);
                }
            }
        }
        public bool Read(byte[] packet)
        {
            try
            {
                var mypkt = new byte[packet.Length - 4];
                Array.Copy(packet, 4, mypkt, 0, mypkt.Length);
                using (var memoryStream = new MemoryStream(packet))
                {
                    Info = Serializer.DeserializeWithLengthPrefix<MsgUserAbilityScoreProto>(memoryStream, PrefixStyle.Fixed32);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
                return false;
            }
            return true;
        }
        public void SendScore(Client.GameState client, Client.GameState Observer)
        {
            var packet = new MsgUserAbilityScoreProto();
            packet.ActionId = 0;
            packet.UID = client.Player.UID;
            packet.Level = client.Player.Level;
            packet.Scores = new Scores[20];
            for (int i = 0; i < packet.Scores.Length; i++)
            {
                byte Type = (byte)(i + 1);
                packet.Scores[i] = new Scores();
                packet.Scores[i].Type = Type;
                packet.Scores[i].Score = GetScoreValue(client, Type);
            }


            var proto = Kernel.FinalizeProtoBuf(packet, 3253);
            Observer.Send(proto);
        }
        public uint GetScoreValue(Client.GameState client, uint Type)
        {
            uint Score = 0;
            if (Type == 1) Score = (uint)MsgUserAbilityScore.CalculatePerfectionJiangPoints(client);
            if (Type == 2) Score = (uint)MsgUserAbilityScore.CalculatePerfectionChiPoints(client);
            if (Type == 3) Score = (uint)(client.Player.InnerPower != null ? client.Player.InnerPower.TotalScore * 2 : 0);
            if (Type == 4) Score = client.Equipment.GetFullEquipmentEnchantPoints;
            if (Type == 5) Score = (uint)(client.Player.Level < 140 ? client.Player.Level * 20 : client.Player.Level * 25);
            if (Type == 6) Score = client.Equipment.GetFullEquipmentPerfecetionLevelPoints;
            if (Type == 7) Score = (uint)((client.Player.Vitality + client.Player.Atributes + client.Player.Spirit + client.Player.Strength + client.Player.Agility) * 5);
            if (Type == 8) Score = (uint)(client.Player.Reborn * 1000);
            if (Type == 9) Score = client.Equipment.GetFullEquipmentEnumPoints;
            if (Type == 10) Score = client.Equipment.GetFullEquipmentSocketPoints;
            if (Type == 11) Score = client.Equipment.GetFullEquipmentGemPoints;
            if (Type == 12) Score = client.Equipment.GetFullEquipmentRefinePoints;
            if (Type == 13) Score = client.Equipment.GetFullEquipmentPlusPoints;
            if (Type == 14) Score = client.Equipment.GetFullEquipmentSoulPoints;
            if (Type == 15) Score = client.Equipment.GetFullEquipmentBlessPoints;
            if (Type == 16) Score = CalculateSubClassPoints(client);
            if (Type == 17) Score = Database.WardrobeTable.PerfectionPoints(client, true);
            if (Type == 18) Score = Database.WardrobeTable.PerfectionPoints(client, false);
            if (Type == 19) Score = (uint)((uint)client.Player.NobilityRank * 1000);
            if (Type == 20) Score = client.Equipment.GetFullEquipmentLevelPoints;
            return Score;
        }
        public void Handle(Client.GameState client)
        {
            switch (Info.ActionId)
            {
                case 1://Observ
                    {
                        if (Kernel.GamePool.ContainsKey(Info.UID))
                        {
                            SendScore(client, client);
                            SendScore(Kernel.GamePool[Info.UID], client);
                        }
                        else
                        {
                            client.Send(Kernel.FinalizeProtoBuf(new MsgUserAbilityScoreProto()
                            {
                                ActionId = 1,
                                UID = 0
                            }, 3253));
                        }
                        break;
                    }
            }
        }
        public static int CalculatePerfectionChiPoints(Client.GameState client)
        {
            if (client == null || client.ChiData == null || client.ChiData.Powers == null)
                return 0;

            int Point = 0;
            for (int i = 0; i < 4; i++)
            {
                if (client.ChiData.Powers.Count < 1) break;
                Point += ((client.ChiData.Powers[0].Attributes[i].Value / Game.Enums.ChiMaxValues(client.ChiData.Powers[0].Attributes[i].Type)) * 100) * 60;
            }
            for (int i = 0; i < 4; i++)
            {
                if (client.ChiData.Powers.Count < 2) break;
                Point += ((client.ChiData.Powers[1].Attributes[i].Value / Game.Enums.ChiMaxValues(client.ChiData.Powers[1].Attributes[i].Type)) * 100) * 60;
            }
            for (int i = 0; i < 4; i++)
            {
                if (client.ChiData.Powers.Count < 3) break;
                Point += ((client.ChiData.Powers[2].Attributes[i].Value / Game.Enums.ChiMaxValues(client.ChiData.Powers[2].Attributes[i].Type)) * 100) * 60;
            }
            for (int i = 0; i < 4; i++)
            {
                if (client.ChiData.Powers.Count < 4) break;
                Point += ((client.ChiData.Powers[3].Attributes[i].Value / Game.Enums.ChiMaxValues(client.ChiData.Powers[3].Attributes[i].Type)) * 100) * 60;
            }
            return Point;
        }
        /*public static int CalculatePerfectionChiPoints(Client.GameState client)
        {
            int Point = 0;
            for (int i = 0; i < 4; i++)
            {
                if (client.ChiData.Powers.Count < 1) break;
                Point += ((client.ChiData.Powers[0].Attributes[i].Value / Game.Enums.ChiMaxValues(client.ChiData.Powers[0].Attributes[i].Type)) * 100) * 60;
            }
            for (int i = 0; i < 4; i++)
            {
                if (client.ChiData.Powers.Count < 2) break;
                Point += ((client.ChiData.Powers[1].Attributes[i].Value / Game.Enums.ChiMaxValues(client.ChiData.Powers[1].Attributes[i].Type)) * 100) * 60;
            }
            for (int i = 0; i < 4; i++)
            {
                if (client.ChiData.Powers.Count < 3) break;
                Point += ((client.ChiData.Powers[2].Attributes[i].Value / Game.Enums.ChiMaxValues(client.ChiData.Powers[2].Attributes[i].Type)) * 100) * 60;
            }
            for (int i = 0; i < 4; i++)
            {
                if (client.ChiData.Powers.Count < 4) break;
                Point += ((client.ChiData.Powers[3].Attributes[i].Value / Game.Enums.ChiMaxValues(client.ChiData.Powers[3].Attributes[i].Type)) * 100) * 60;
            }
            return Point;
        }*/
        public static int CalculatePerfectionJiangPoints(Client.GameState client)
        {
            int Points = 0;
            if (client.Player.MyJiang != null)
            {
                if (client.Player.MyJiang.Inner_Strength == 0) return Points;
                if (client.Player.MyJiang.Inner_Strength <= 16200) Points = (int)(client.Player.MyJiang.Inner_Strength * 0.3);
                else if (client.Player.MyJiang.Inner_Strength <= 40500) Points = (int)(client.Player.MyJiang.Inner_Strength * 0.33);
                else if (client.Player.MyJiang.Inner_Strength <= 60750) Points = (int)(client.Player.MyJiang.Inner_Strength * 0.36);
                else if (client.Player.MyJiang.Inner_Strength <= 72000) Points = (int)(client.Player.MyJiang.Inner_Strength * 0.40);
                else if (client.Player.MyJiang.Inner_Strength <= 79200) Points = (int)(client.Player.MyJiang.Inner_Strength * 0.45);
                else if (client.Player.MyJiang.Inner_Strength <= 80800) Points = (int)(client.Player.MyJiang.Inner_Strength * 0.50);
                else if (client.Player.MyJiang.Inner_Strength <= 81000) Points = (int)(client.Player.MyJiang.Inner_Strength * 0.60);
            }
            return Points;
        }
        public static uint CalculateSubClassPoints(Client.GameState client)
        {
            uint Points = 0;
            if (client.Player.SubClasses.Classes != null)
            {
                foreach (var sub in client.Player.SubClasses.Classes.Values)
                {
                    if (sub == null) continue;
                    Points += (uint)(sub.Level == 9 ? 1000 : sub.Level * 100);
                }
            }
            return Points;
        }
        public static uint CalculatePerfectionItemPoints(ConquerItem item)
        {
            uint Points = 50;
            if (item == null || !Database.ConquerItemInformation.BaseInformations.ContainsKey(item.ID)) return 50;
            #region Plus
            if (!Network.PacketHandler.IsTwoHand(item.ID))
            {
                if (item.Plus == 1) Points += 200;
                if (item.Plus == 2) Points += 600;
                if (item.Plus == 3) Points += 1200;
                if (item.Plus == 4) Points += 1800;
                if (item.Plus == 5) Points += 2600;
                if (item.Plus == 6) Points += 3500;
                if (item.Plus == 7) Points += 4800;
                if (item.Plus == 8) Points += 5800;
                if (item.Plus == 9) Points += 6800;
                if (item.Plus == 10) Points += 7800;
                if (item.Plus == 11) Points += 8800;
                if (item.Plus == 12) Points += 10000;
            }
            else
            {
                if (item.Plus == 1) Points += 400;
                if (item.Plus == 2) Points += 1200;
                if (item.Plus == 3) Points += 2400;
                if (item.Plus == 4) Points += 3600;
                if (item.Plus == 5) Points += 5200;
                if (item.Plus == 6) Points += 7000;
                if (item.Plus == 7) Points += 9600;
                if (item.Plus == 8) Points += 11600;
                if (item.Plus == 9) Points += 13600;
                if (item.Plus == 10) Points += 15600;
                if (item.Plus == 11) Points += 17600;
                if (item.Plus == 12) Points += 20000;
            }
            #endregion
            #region Quality
            if (!Network.PacketHandler.IsTwoHand(item.ID))
            {
                if (item.ID % 10 == 9) Points += 500;
                if (item.ID % 10 == 8) Points += 300;
                if (item.ID % 10 == 7) Points += 200;
                if (item.ID % 10 == 6) Points += 100;
                if (item.ID % 10 >
0 && item.ID % 10 < 6) Points += 50;
            }
            else
            {
                if (item.ID % 10 == 9) Points += 1000;
                if (item.ID % 10 == 8) Points += 600;
                if (item.ID % 10 == 7) Points += 400;
                if (item.ID % 10 == 6) Points += 200;
                if (item.ID % 10 >
0 && item.ID % 10 < 6) Points += 100;
            }
            #endregion
            #region Soul
            if (!Network.PacketHandler.IsTwoHand(item.ID))
            {
                if (item.Purification.PurificationLevel == 1) Points += 100;
                if (item.Purification.PurificationLevel == 2) Points += 300;
                if (item.Purification.PurificationLevel == 3) Points += 500;
                if (item.Purification.PurificationLevel == 4) Points += 800;
                if (item.Purification.PurificationLevel == 5) Points += 1200;
                if (item.Purification.PurificationLevel == 6) Points += 1600;
                if (item.Purification.PurificationLevel == 7) Points += 2000;
            }
            else
            {
                if (item.Purification.PurificationLevel == 1) Points += 200;
                if (item.Purification.PurificationLevel == 2) Points += 600;
                if (item.Purification.PurificationLevel == 3) Points += 1000;
                if (item.Purification.PurificationLevel == 4) Points += 1600;
                if (item.Purification.PurificationLevel == 5) Points += 2400;
                if (item.Purification.PurificationLevel == 6) Points += 3200;
                if (item.Purification.PurificationLevel == 7) Points += 4000;
            }
            #endregion
            #region Bless
            if (!Network.PacketHandler.IsTwoHand(item.ID))
            {
                Points += (uint)(item.Bless * 100);
            }
            else
            {
                Points += (uint)(item.Bless * 200);
            }
            #region Refine
            if (!Network.PacketHandler.IsTwoHand(item.ID))
            {
                if (item.ExtraEffect.EffectLevel == 1) Points += 100;
                if (item.ExtraEffect.EffectLevel == 2) Points += 400;
                if (item.ExtraEffect.EffectLevel == 3) Points += 800;
                if (item.ExtraEffect.EffectLevel == 4) Points += 1200;
                if (item.ExtraEffect.EffectLevel == 5) Points += 1600;
                if (item.ExtraEffect.EffectLevel == 6) Points += 2000;
            }
            else
            {
                if (item.ExtraEffect.EffectLevel == 1) Points += 200;
                if (item.ExtraEffect.EffectLevel == 2) Points += 800;
                if (item.ExtraEffect.EffectLevel == 3) Points += 1600;
                if (item.ExtraEffect.EffectLevel == 4) Points += 2400;
                if (item.ExtraEffect.EffectLevel == 5) Points += 3200;
                if (item.ExtraEffect.EffectLevel == 6) Points += 4000;
            }
            #endregion
            #endregion
            #region Level
            if (!Network.PacketHandler.IsTwoHand(item.ID))
            {
                var lvl = (uint)Database.ConquerItemInformation.BaseInformations[item.ID].Level;
                if (lvl <= 120)
                    Points += lvl * 3;
                else if (lvl <= 130)
                    Points += lvl * 5;
                else if (lvl <= 140)
                    Points += lvl * 6;
            }
            else
            {
                var lvl = (uint)Database.ConquerItemInformation.BaseInformations[item.ID].Level;
                if (lvl <= 120)
                    Points += lvl * 6;
                else if (lvl <= 130)
                    Points += lvl * 10;
                else if (lvl <= 140)
                    Points += lvl * 12;
            }
            #endregion
            #region Gem
            if (!Network.PacketHandler.IsTwoHand(item.ID))
            {
                if (item.SocketOne != (Game.Enums.Gem)0)
                {
                    if (item.SocketOne2 % 10 == 1) Points += 200;
                    if (item.SocketOne2 % 10 == 2) Points += 500;
                    if (item.SocketOne2 % 10 == 3) Points += 800;
                }
                if (item.SocketTwo != (Game.Enums.Gem)0)
                {
                    if (item.SocketTwo2 % 10 == 1) Points += 200;
                    if (item.SocketTwo2 % 10 == 2) Points += 500;
                    if (item.SocketTwo2 % 10 == 3) Points += 800;
                }
            }
            else
            {
                if (item.SocketOne != (Game.Enums.Gem)0)
                {
                    if (item.SocketOne2 % 10 == 1) Points += 400;
                    if (item.SocketOne2 % 10 == 2) Points += 1000;
                    if (item.SocketOne2 % 10 == 3) Points += 1600;
                }
                if (item.SocketTwo != (Game.Enums.Gem)0)
                {
                    if (item.SocketTwo2 % 10 == 1) Points += 400;
                    if (item.SocketTwo2 % 10 == 2) Points += 1000;
                    if (item.SocketTwo2 % 10 == 3) Points += 1600;
                }
            }
            #endregion
            #region Stars
            if (item.Stars >
= 1) Points += 180;
            if (item.Stars >= 2) Points += 180;
            if (item.Stars >= 3) Points += 180;
            if (item.Stars >= 4) Points += 180;
            if (item.Stars >= 5) Points += 180;
            if (item.Stars >= 6) Points += 180;
            if (item.Stars >= 7) Points += 180;
            if (item.Stars >= 8) Points += 180;
            if (item.Stars >= 9) Points += 180;
            if (item.Stars >= 10) Points += 2380;
            if (item.Stars >= 11) Points += 400;
            if (item.Stars >= 12) Points += 400;
            if (item.Stars >= 13) Points += 400;
            if (item.Stars >= 14) Points += 400;
            if (item.Stars >= 15) Points += 400;
            if (item.Stars >= 16) Points += 400;
            if (item.Stars >= 17) Points += 400;
            if (item.Stars >= 18) Points += 400;
            if (item.Stars >= 19) Points += 5150;
            if (item.Stars >= 20) Points += 650;
            if (item.Stars >= 21) Points += 650;
            if (item.Stars >= 22) Points += 650;
            if (item.Stars >= 23) Points += 650;
            if (item.Stars >= 24) Points += 650;
            if (item.Stars >= 25) Points += 650;
            if (item.Stars >= 26) Points += 650;
            if (item.Stars >= 27) Points += 650;
            if (item.Stars >= 28) Points += 100;
            if (item.Stars >= 29) Points += 100;
            if (item.Stars >= 30) Points += 100;
            if (item.Stars >= 31) Points += 100;
            if (item.Stars >= 32) Points += 100;
            if (item.Stars >= 33) Points += 100;
            if (item.Stars >= 34) Points += 100;
            if (item.Stars >= 35) Points += 100;
            if (item.Stars >= 36) Points += 100;
            if (item.Stars >= 37) Points += 100;
            if (item.Stars >= 38) Points += 100;
            if (item.Stars >= 39) Points += 100;
            if (item.Stars >= 40) Points += 100;
            if (item.Stars >= 41) Points += 100;
            if (item.Stars >= 42) Points += 100;
            if (item.Stars >= 43) Points += 100;
            if (item.Stars >= 44) Points += 100;
            if (item.Stars >= 45) Points += 100;
            if (item.Stars >= 46) Points += 100;
            if (item.Stars >= 47) Points += 100;
            if (item.Stars >= 48) Points += 100;
            if (item.Stars >= 49) Points += 100;
            if (item.Stars >= 50) Points += 100;
            if (item.Stars >= 51) Points += 100;
            if (item.Stars >= 52) Points += 100;
            if (item.Stars >= 53) Points += 100;
            if (item.Stars >= 54) Points += 100;
            if (Network.PacketHandler.IsTwoHand(item.ID))
            {
                if (item.Stars >= 1) Points += 180;
                if (item.Stars >= 2) Points += 180;
                if (item.Stars >= 3) Points += 180;
                if (item.Stars >= 4) Points += 180;
                if (item.Stars >= 5) Points += 180;
                if (item.Stars >= 6) Points += 180;
                if (item.Stars >= 7) Points += 180;
                if (item.Stars >= 8) Points += 180;
                if (item.Stars >= 9) Points += 180;
                if (item.Stars >= 10) Points += 2380;
                if (item.Stars >= 11) Points += 400;
                if (item.Stars >= 12) Points += 400;
                if (item.Stars >= 13) Points += 400;
                if (item.Stars >= 14) Points += 400;
                if (item.Stars >= 15) Points += 400;
                if (item.Stars >= 16) Points += 400;
                if (item.Stars >= 17) Points += 400;
                if (item.Stars >= 18) Points += 400;
                if (item.Stars >= 19) Points += 5150;
                if (item.Stars >= 20) Points += 650;
                if (item.Stars >= 21) Points += 650;
                if (item.Stars >= 22) Points += 650;
                if (item.Stars >= 23) Points += 650;
                if (item.Stars >= 24) Points += 650;
                if (item.Stars >= 25) Points += 650;
                if (item.Stars >= 26) Points += 650;
                if (item.Stars >= 27) Points += 650;
                if (item.Stars >= 28) Points += 100;
                if (item.Stars >= 29) Points += 100;
                if (item.Stars >= 30) Points += 100;
                if (item.Stars >= 31) Points += 100;
                if (item.Stars >= 32) Points += 100;
                if (item.Stars >= 33) Points += 100;
                if (item.Stars >= 34) Points += 100;
                if (item.Stars >= 35) Points += 100;
                if (item.Stars >= 36) Points += 100;
                if (item.Stars >= 37) Points += 100;
                if (item.Stars >= 38) Points += 100;
                if (item.Stars >= 39) Points += 100;
                if (item.Stars >= 40) Points += 100;
                if (item.Stars >= 41) Points += 100;
                if (item.Stars >= 42) Points += 100;
                if (item.Stars >= 43) Points += 100;
                if (item.Stars >= 44) Points += 100;
                if (item.Stars >= 45) Points += 100;
                if (item.Stars >= 46) Points += 100;
                if (item.Stars >= 47) Points += 100;
                if (item.Stars >= 48) Points += 100;
                if (item.Stars >= 49) Points += 100;
                if (item.Stars >= 50) Points += 100;
                if (item.Stars >= 51) Points += 100;
                if (item.Stars >= 52) Points += 100;
                if (item.Stars >= 53) Points += 100;
                if (item.Stars >= 54) Points += 100;
            }
            #endregion
            #region Socket
            if (!Network.PacketHandler.IsTwoHand(item.ID))
            {
                if (item.SocketOne != (Game.Enums.Gem)0) Points += 1000;
                if (item.SocketTwo != (Game.Enums.Gem)0) Points += 2500;
            }
            else
            {
                if (item.SocketOne != (Game.Enums.Gem)0) Points += 2000;
                if (item.SocketTwo != (Game.Enums.Gem)0) Points += 5000;
            }
            #endregion
            #region Enchant
            if (!Network.PacketHandler.IsTwoHand(item.ID))
            {
                var enc = (uint)(item.Enchant);
                if (enc != 0)
                {
                    if (enc <= 200) Points += enc * 1;
                    if (enc <= 240) Points += (uint)(enc * 1.3);
                    if (enc <= 254) Points += (uint)(enc * 1.6);
                    if (enc <= 255) Points += enc * 2;
                }
            }
            else
            {
                var enc = (uint)(item.Enchant);
                if (enc != 0)
                {
                    if (enc <= 200) Points += enc * 2;
                    if (enc <= 240) Points += (uint)(enc * 2.6);
                    if (enc <= 254) Points += (uint)(enc * 3.2);
                    if (enc <= 255) Points += enc * 4;
                }
            }
            #endregion
            return Points;
        }
    }
    public class MsgItemRefineOpt
    {
        public MsgItemRefineOpt() { }
        public MsgItemRefineOptProto Info;
        public MsgItemRefineOptProto2 Info2;
        [ProtoContract]
        public class MsgItemRefineOptProto
        {
            [ProtoMember(1, IsRequired = true)]
            public uint ActionId;
            [ProtoMember(2, IsRequired = true)]
            public uint ItemUID;
            [ProtoMember(3, IsRequired = true)]
            public string Signature;
            [ProtoMember(4, IsRequired = true)]
            public uint ItemPlusUID;
        }
        [ProtoContract]
        public class MsgItemRefineOptProto2
        {
            [ProtoMember(1, IsRequired = true)]
            public uint ItemUID;
            [ProtoMember(2, IsRequired = true)]
            public uint EntityUID;
            [ProtoMember(3, IsRequired = true)]
            public uint Stars;
            [ProtoMember(4, IsRequired = true)]
            public uint Progress;
            [ProtoMember(5, IsRequired = true)]
            public uint OwnerUID;
            [ProtoMember(6, IsRequired = true)]
            public string OwnerName;
        }
        public double GetPerfectionProgress(uint value)
        {
            return (value * 1.25);
        }
        public uint GetPerfectionProgress(ConquerItem item)
        {
            if (item.Stars == 0) return 30;
            if (item.Stars == 1) return 60;
            if (item.Stars == 2) return 100;
            if (item.Stars == 3) return 200;
            if (item.Stars == 4) return 350;
            if (item.Stars == 5) return 600;
            if (item.Stars == 6) return 1000;
            if (item.Stars == 7) return 1500;
            if (item.Stars == 8) return 2300;
            if (item.Stars == 9) return 3500;
            if (item.Stars == 10) return 5000;
            if (item.Stars == 11) return 6500;
            if (item.Stars == 12) return 8000;
            if (item.Stars == 13) return 9500;
            if (item.Stars == 14) return 11000;
            return 12000;
        }
        public uint GetPlusStonePoints(uint value)
        {
            if (value == 3009000) return 10;
            if (value == 3009001) return 100;
            if (value == 3009002) return 1000;
            if (value == 3009003) return 10000;
            if (value == 730001 || value == 1) return 10;
            if (value == 730002 || value == 2) return 40;
            if (value == 730003 || value == 3) return 120;
            if (value == 730004 || value == 4) return 360;
            if (value == 730005 || value == 5) return 1080;
            if (value == 730006 || value == 6) return 3240;
            if (value == 730007 || value == 7) return 9720;
            if (value == 730008 || value == 8) return 29160;
            if (value == 9) return 87480;
            if (value == 10) return 90180;
            if (value == 11) return 95680;
            if (value == 12) return 104680;
            return 0;
        }
        public uint GetTransferCost(Network.GamePackets.ConquerItem item)
        {
            if (item.Stars == 2) return 30;
            if (item.Stars == 3) return 70;
            if (item.Stars == 4) return 150;
            if (item.Stars == 5) return 300;
            if (item.Stars == 6) return 500;
            if (item.Stars == 7) return 800;
            if (item.Stars == 8) return 1100;
            if (item.Stars >
= 9) return 1500;
            return 10;
        }
        public void Handle(Client.GameState client, byte[] myPacket)
        {
            try
            {
                switch (Info.ActionId)
                {
                    case 0://Temper
                        {
                            #region Minors
                            var packet2 = new byte[myPacket.Length - 4];
                            Array.Copy(myPacket, 4, packet2, 0, packet2.Length);
                            var variable = Kernel.Read7BitEncodedInt(packet2).SelectMany(System.BitConverter.GetBytes).ToArray();
                            var variable2 = new byte[variable.Length - 8];
                            Array.Copy(variable, 8, variable2, 0, variable.Length - 8);
                            var MinorsCount = (variable2.Length / 4);
                            uint[] Minors = new uint[MinorsCount];
                            byte x = 0;
                            for (int i = 0; i < MinorsCount; i++)
                            {
                                Minors[i] = BitConverter.ToUInt32(variable2, x);
                                x += 4;
                            }
                            #endregion
                            if (Minors != null)
                            {
                                ConquerItem Item;
                                if (client.Equipment.TryGetItem(Info.ItemUID, out Item))
                                {
                                    foreach (var minor in Minors)
                                    {
                                        ConquerItem ItemPlus;
                                        if (client.Inventory.TryGetItem(minor, out ItemPlus))
                                        {
                                            Item.PerfectionProgress += GetPlusStonePoints(ItemPlus.ID == 300000 ? ItemPlus.Plus : ItemPlus.ID)/*Database.PerfectionTable.CostList[ItemPlus.ID].Progress*/;
                                            client.Inventory.Remove(minor, Game.Enums.ItemUse.Remove, true);
                                        }
                                    }
                                    while (Item.PerfectionProgress >
= GetPerfectionProgress(Item)/*Database.PerfectionTable.UpgradeList.Where(i => i.Stars == (Item.Stars + 1)).FirstOrDefault().Progress*/)
                                    {
                                        Item.PerfectionProgress -= GetPerfectionProgress(Item)/*Database.PerfectionTable.UpgradeList.Where(i => i.Stars == (Item.Stars + 1)).FirstOrDefault().Progress*/;
                                        Item.Stars++;
                                    }
                                    while (Item.Stars >= 54 && Item.PerfectionProgress > 0)
                                    {
                                        Item.Stars = 54;
                                        Item.PerfectionProgress = 0;
                                    }
                                    Item.Owner = client.Player.Name;
                                    Item.OwnerUID = client.Player.UID;
                                    Item.Mode = Game.Enums.ItemMode.Update;
                                    Item.Send(client);
                                    var proto = Kernel.FinalizeProtoBuf((new MsgItemRefineOptProto2()
                                    {
                                        ItemUID = Item.UID,
                                        EntityUID = client.Player.UID,
                                        OwnerUID = Item.OwnerUID,
                                        OwnerName = Item.Owner,
                                        Progress = Item.PerfectionProgress,
                                        Stars = Item.Stars
                                    }), 3250);
                                    client.LoadItemStats();
                                    client.Send(proto);
                                    Database.ConquerItemTable.UpdatePerfection(Item);
                                    new MsgUserTotalRefineLev().Send(client);

                                }
                            }

                            break;
                        }
                    case 1://Transfer
                        {
                            ConquerItem Item;
                            if (client.Equipment.TryGetItem(Info.ItemUID, out Item))
                            {
                                if (client.Player.ConquerPoints >= 1000)
                                {
                                    client.Player.ConquerPoints -= 1000;
                                    Item.Owner = client.Player.Name;
                                    Item.OwnerUID = client.Player.UID;
                                    Item.Mode = Game.Enums.ItemMode.Update;
                                    Item.Send(client);
                                    var proto = Kernel.FinalizeProtoBuf((new MsgItemRefineOptProto2()
                                    {
                                        ItemUID = Item.UID,
                                        EntityUID = client.Player.UID,
                                        OwnerUID = Item.OwnerUID,
                                        OwnerName = Item.Owner,
                                        Progress = Item.PerfectionProgress,
                                        Stars = Item.Stars
                                    }), 3250);
                                    client.Send(proto);
                                    Database.ConquerItemTable.UpdatePerfection(Item);
                                }
                            }
                            break;
                        }
                    case 2://Signature
                        {
                            ConquerItem Item;
                            if (client.Equipment.TryGetItem(Info.ItemUID, out Item))
                            {
                                if (Item.Signature == String.Empty || Item.Signature == null)
                                {
                                    Item.Signature = Info.Signature;
                                    Item.Mode = Game.Enums.ItemMode.Update;
                                    Item.Send(client);
                                    var proto = Kernel.FinalizeProtoBuf((new MsgItemRefineOptProto2()
                                    {
                                        ItemUID = Item.UID,
                                        EntityUID = client.Player.UID,
                                        OwnerUID = Item.OwnerUID,
                                        OwnerName = Item.Owner,
                                        Progress = Item.PerfectionProgress,
                                        Stars = Item.Stars
                                    }), 3250);
                                    Database.ConquerItemTable.UpdatePerfection(Item);
                                }
                                else
                                {
                                    if (client.Player.ConquerPoints >= 270)
                                    {
                                        client.Player.ConquerPoints -= 270;
                                        Item.Signature = Info.Signature;
                                        Item.Mode = Game.Enums.ItemMode.Update;
                                        Item.Send(client);
                                        var proto = Kernel.FinalizeProtoBuf((new MsgItemRefineOptProto2()
                                        {
                                            ItemUID = Item.UID,
                                            EntityUID = client.Player.UID,
                                            OwnerUID = Item.OwnerUID,
                                            OwnerName = Item.Owner,
                                            Progress = Item.PerfectionProgress,
                                            Stars = Item.Stars
                                        }), 3250);
                                        Database.ConquerItemTable.UpdatePerfection(Item);
                                    }
                                    else if (client.Player.ConquerPoints >= 270)
                                    {
                                        client.Player.ConquerPoints -= 270;
                                        Item.Signature = Info.Signature;
                                        Item.Mode = Game.Enums.ItemMode.Update;
                                        Item.Send(client);
                                        var proto = Kernel.FinalizeProtoBuf((new MsgItemRefineOptProto2()
                                        {
                                            ItemUID = Item.UID,
                                            EntityUID = client.Player.UID,
                                            OwnerUID = Item.OwnerUID,
                                            OwnerName = Item.Owner,
                                            Progress = Item.PerfectionProgress,
                                            Stars = Item.Stars
                                        }), 3250);
                                        Database.ConquerItemTable.UpdatePerfection(Item);
                                    }
                                }

                            }
                            break;
                        }
                    case 3://CPBoost
                        {
                            client.MessageBox("Disabled by GM");
                            //ConquerItem Item;
                            //if (client.Equipment.TryGetItem(Info.ItemUID, out Item) && Item != null)
                            //{
                            //    uint value;
                            //    value = Math.Min(16200000, client.Player.BoundCps);
                            //    if (client.Player.BoundCps >= value)
                            //    {
                            //        client.Player.BoundCps -= value;
                            //        Item.Owner = client.Player.Name;
                            //        Item.OwnerUID = client.Player.UID;
                            //        //Item.PerfectionProgress += (uint)GetPerfectionProgress(value);
                            //        while (Item.PerfectionProgress >= GetPerfectionProgress(Item))
                            //        {
                            //            Item.PerfectionProgress -= GetPerfectionProgress(Item);
                            //          //  Item.Stars++;
                            //        }
                            //        while (Item.Stars >= 54 && Item.PerfectionProgress > 0)
                            //        {
                            //            Item.Stars = 54;
                            //            Item.PerfectionProgress = 0;
                            //        }
                            //        Item.Mode = Game.Enums.ItemMode.Update;
                            //        Item.Send(client);
                            //        var proto = Kernel.FinalizeProtoBuf((new MsgItemRefineOptProto2()
                            //        {
                            //            ItemUID = Item.UID,
                            //            EntityUID = client.Player.UID,
                            //            OwnerUID = Item.OwnerUID,
                            //            OwnerName = Item.Owner,
                            //            Progress = Item.PerfectionProgress,
                            //            Stars = Item.Stars
                            //        }), 3250);
                            //        client.Send(proto);
                            //        Database.ConquerItemTable.UpdatePerfection(Item);
                            //    }
                            //}
                            break;
                        }
                    case 4://Exchange
                        {
                            ConquerItem Item;
                            ConquerItem Item2;
                            byte ahmedlevel;
                            uint ahmedprog;
                            byte ahmed2level;
                            uint ahmed2prog;
                            if (client.Equipment.TryGetItem(Info.ItemUID, out Item2) || client.Inventory.TryGetItem(Info.ItemUID, out Item2))
                            {
                                if (client.Inventory.TryGetItem(Info.ItemPlusUID, out Item) || client.Equipment.TryGetItem(Info.ItemPlusUID, out Item))
                                {
                                    if (client.Account.State == Database.AccountTable.AccountState.ProjectManager)
                                    {

                                        client.Player.ConquerPoints -= 10;
                                        ahmedprog = Item.PerfectionProgress;
                                        Item.PerfectionProgress = 0;
                                        ahmedlevel = Item.Stars;
                                        Item.Stars = 0;
                                        Item.Mode = Game.Enums.ItemMode.Update;
                                        Item.Send(client);
                                        ahmed2prog = Item2.PerfectionProgress;
                                        Item2.PerfectionProgress = 0;
                                        ahmed2level = Item2.Stars;
                                        Item2.Stars = 0;
                                        Item2.Signature = "";
                                        Item2.Mode = Game.Enums.ItemMode.Update;
                                        Item2.Send(client);
                                        Item.Stars = ahmed2level;
                                        Item.PerfectionProgress = ahmed2prog;
                                        Item.Mode = Game.Enums.ItemMode.Update;
                                        Item.Send(client);
                                        Item2.Stars = ahmedlevel;
                                        Item2.PerfectionProgress = ahmedprog;
                                        Item2.Mode = Game.Enums.ItemMode.Update;
                                        Item2.Send(client);
                                        var proto = Kernel.FinalizeProtoBuf((new MsgItemRefineOptProto2()
                                        {
                                            ItemUID = Item.UID,
                                            EntityUID = client.Player.UID,
                                            OwnerUID = Item.OwnerUID,
                                            OwnerName = Item.Owner,
                                            Progress = Item.PerfectionProgress,
                                            Stars = Item.Stars
                                        }), 3250);
                                        Database.ConquerItemTable.UpdatePerfection(Item);
                                    }
                                }

                            }
                            else {
                                client.MessageBox("Klm el GM yn2lk el perfection");
                            }
                            break;
                        }
                    case 5://Quick
                        {
                            ConquerItem Item;
                            if (client.Equipment.TryGetItem(Info.ItemUID, out Item))
                            {
                                if (Item.PerfectionProgress == 0 || Item.Stars >= 54) break;
                                double percent = (double)Item.PerfectionProgress / (double)GetPerfectionProgress(Item) * 0;
                                if (Kernel.Rate(percent))
                                {
                                    Item.Stars++;
                                }
                                Item.PerfectionProgress = 0;
                                Item.Owner = client.Player.Name;
                                Item.OwnerUID = client.Player.UID;
                                Item.Mode = Game.Enums.ItemMode.Update;
                                Item.Send(client);
                                var proto = Kernel.FinalizeProtoBuf((new MsgItemRefineOptProto2()
                                {
                                    ItemUID = Item.UID,
                                    EntityUID = client.Player.UID,
                                    OwnerUID = Item.OwnerUID,
                                    OwnerName = Item.Owner,
                                    Progress = Item.PerfectionProgress,
                                    Stars = Item.Stars
                                }), 3250);
                                Database.ConquerItemTable.UpdatePerfection(Item);
                                client.LoadItemStats();
                            }
                            break;
                        }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }
        }
        public byte GetStars(byte Stars)
        {
            if (Stars >= 0 && Stars <= 8) return 9;
            if (Stars >
= 9 && Stars <= 17) return 18;
            if (Stars >
= 18 && Stars <= 26) return 27;
            if (Stars >
= 27 && Stars <= 35) return 36;
            if (Stars >
= 36 && Stars <= 44) return 45;
            if (Stars >
= 45 && Stars <= 53) return 54;
            return 0;
        }
        public byte[] GetBytes(string packetString)
        {
            if (packetString != "" && packetString != null && packetString != string.Empty && packetString != " ")
            {
                byte[] bytes = new byte[(packetString.Length / 3) + 1];
                int t = 0;
                for (int i = 0; i < packetString.Length; i += 3)
                {
                    string cha = packetString.Substring(i, 2);
                    bytes[t] = byte.Parse(cha, System.Globalization.NumberStyles.HexNumber);
                    t++;
                }
                return bytes;
            }
            return null;
        }
        public bool Read(byte[] packet)
        {
            try
            {
                var mypkt = new byte[packet.Length - 4];
                Array.Copy(packet, 4, mypkt, 0, mypkt.Length);
                using (var memoryStream = new MemoryStream(packet))
                {
                    Info = Serializer.DeserializeWithLengthPrefix<MsgItemRefineOptProto>
(memoryStream, PrefixStyle.Fixed32);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
                return false;
            }
            return true;
        }
    }
    public class MsgItemRefineRecord
    {
        public MsgItemRefineRecord() { }
        public MsgItemRefineRecordProto Info;
        [ProtoContract]
        public class MsgItemRefineRecordProto
        {
            [ProtoMember(1, IsRequired = true)]
            public uint ActionId;
            [ProtoMember(2, IsRequired = true)]
            public uint MaxStars;
        }
        public void Handle(Client.GameState client)
        {
            switch (Info.ActionId)
            {
                case 0:
                    {
                        Send(client);
                        break;
                    }
            }
        }
        public void Send(Client.GameState client)
        {
            client.Send(Kernel.FinalizeProtoBuf(new MsgItemRefineRecordProto()
            {
                ActionId = 0,
                MaxStars = 54
            }, 3255));
        }
        public bool Read(byte[] packet)
        {
            var mypkt = new byte[packet.Length - 4];
            Array.Copy(packet, 4, mypkt, 0, mypkt.Length);
            using (var memoryStream = new MemoryStream(packet))
            {
                Info = Serializer.DeserializeWithLengthPrefix<MsgItemRefineRecordProto>(memoryStream, PrefixStyle.Fixed32);
            }
            return true;
        }
    }
    public class MsgRankMemberShow
    {
        public MsgRankMemberShow() { }
        public MsgRankMemberShowProto Info;
        [ProtoContract]
        public class MsgRankMemberShowProto
        {
            [ProtoMember(1, IsRequired = true)]
            public uint ActionId;
            [ProtoMember(2, IsRequired = true)]
            public MsgRankMemberShowProtoSer proto;
        }
        [ProtoContract]
        public class MsgRankMemberShowProtoSer
        {
            [ProtoMember(1, IsRequired = true)]
            public uint dwParam;
            [ProtoMember(2, IsRequired = true)]
            public uint Count;
            [ProtoMember(3, IsRequired = true)]
            public uint UID;
            [ProtoMember(4, IsRequired = true)]
            public string Name = "";
            [ProtoMember(5, IsRequired = true)]
            public string Guild = "";
            [ProtoMember(6, IsRequired = true)]
            public uint Mesh;
            [ProtoMember(7, IsRequired = true)]
            public uint HairStyle;
            [ProtoMember(8, IsRequired = true)]
            public uint Hat;
            [ProtoMember(9, IsRequired = true)]
            public uint Garment;
            [ProtoMember(10, IsRequired = true)]
            public uint LeftWep;
            [ProtoMember(11, IsRequired = true)]
            public uint LeftWepAcc;
            [ProtoMember(12, IsRequired = true)]
            public uint RightWep;
            [ProtoMember(13, IsRequired = true)]
            public uint RightWepAcc;
            [ProtoMember(14, IsRequired = true)]
            public uint MountArmor;
            [ProtoMember(15, IsRequired = true)]
            public uint Flag;
            [ProtoMember(16, IsRequired = true)]
            public uint Wing;
            [ProtoMember(17, IsRequired = true)]
            public uint WingLevel;
            [ProtoMember(18, IsRequired = true)]
            public uint Title;
            [ProtoMember(19, IsRequired = true)]
            public uint Flag2;
            [ProtoMember(20, IsRequired = true)]
            public uint Flag3;
            [ProtoMember(21, IsRequired = true)]
            public uint Flag4;
        }
        public void UpdateBestEntity()
        {
            DateTime StartTime = DateTime.Now;
            Items = new Dictionary<byte, uint>();
            BestEntity = MsgUserAbilityScore.RankingList.OrderByDescending(i => i.Value.TotalPerfectionScore).ThenByDescending(i => i.Value.Level).ThenBy(i => i.Value.UID).FirstOrDefault().Value;
            if (BestEntity == null) return;


            byte[] Positions = new byte[10] { 1, 3, 4, 5, 9, 12, 15, 16, 17, 19 };
            using (var cmd = new MySqlCommand(MySqlCommandType.SELECT).Select("items").Where("EntityID", BestEntity.UID))
            using (var reader = new MySqlReader(cmd))
            {
                while (reader.Read())
                {
                    foreach (var pos in Positions)
                    {
                        if (reader.ReadByte("Position") == pos)
                        {
                            if (Items.ContainsKey(pos)) Items.Remove(pos);
                            Items.Add(pos, reader.ReadUInt32("ID"));
                            if (pos == 19) Items.Add(255, reader.ReadByte("Plus"));
                            break;
                        }
                    }
                }
            }
            foreach (var pos in Positions)
            {
                if (!Items.ContainsKey(pos)) Items.Add(pos, 0);
            }
            if (!Items.ContainsKey(255)) Items.Add(255, 0);
        }
        public static Dictionary<byte, uint> Items = new Dictionary<byte, uint>();
        public static Game.Entity BestEntity;
        public void Handle(Client.GameState client)
        {
            if (BestEntity == null) return;
            switch (Info.ActionId)
            {
                case 0:
                    {
                        var proto2 = new MsgRankMemberShowProto();
                        proto2.ActionId = 0;
                        proto2.proto = new MsgRankMemberShowProtoSer();
                        proto2.proto.dwParam = 1;
                        proto2.proto.Count = 1;
                        proto2.proto.UID = BestEntity.UID;
                        #region If He Is Online
                        if (Kernel.GamePool.ContainsKey(BestEntity.UID))
                        {
                            var Entity = Kernel.GamePool[BestEntity.UID].Player;
                            proto2.proto.HairStyle = Entity.HairStyle;
                            proto2.proto.Mesh = Entity.Mesh;
                            proto2.proto.Name = Entity.Name;
                            if (BestEntity.GuildID != 0)
                                proto2.proto.Guild = Kernel.Guilds[BestEntity.GuildID].Name;
                            if (Entity.Owner.Equipment != null)
                            {
                                var Equipment = Entity.Owner.Equipment;
                                proto2.proto.Hat = Equipment.TryGetItem((byte)ConquerItem.Head) != null ? Equipment.TryGetItem((byte)ConquerItem.Head).ID : 0;
                                proto2.proto.LeftWep = Equipment.TryGetItem((byte)ConquerItem.LeftWeapon) != null ? Equipment.TryGetItem((byte)ConquerItem.LeftWeapon).ID : 0;
                                proto2.proto.LeftWepAcc = Equipment.TryGetItem((byte)ConquerItem.LeftWeaponAccessory) != null ? Equipment.TryGetItem((byte)ConquerItem.LeftWeaponAccessory).ID : 0;
                                proto2.proto.MountArmor = Equipment.TryGetItem((byte)ConquerItem.SteedArmor) != null ? Equipment.TryGetItem((byte)ConquerItem.SteedArmor).ID : (Equipment.TryGetItem((byte)ConquerItem.Steed) != null ? Equipment.TryGetItem((byte)ConquerItem.Steed).ID : 0);
                                proto2.proto.Garment = Equipment.TryGetItem((byte)ConquerItem.Garment) != null ? Equipment.TryGetItem((byte)ConquerItem.Garment).ID : ((Equipment.TryGetItem((byte)ConquerItem.Armor) != null ? Equipment.TryGetItem((byte)ConquerItem.Armor).ID : 0));
                                proto2.proto.RightWep = Equipment.TryGetItem((byte)ConquerItem.RightWeapon) != null ? Equipment.TryGetItem((byte)ConquerItem.RightWeapon).ID : 0;
                                proto2.proto.RightWepAcc = Equipment.TryGetItem((byte)ConquerItem.RightWeaponAccessory) != null ? Equipment.TryGetItem((byte)ConquerItem.RightWeaponAccessory).ID : 0;
                                proto2.proto.Wing = Entity.EquippedWing == 0 ? (Equipment.TryGetItem((byte)ConquerItem.Wing) != null ? Equipment.TryGetItem((byte)ConquerItem.Wing).ID : 0) : (uint)Entity.EquippedWing;
                                proto2.proto.WingLevel = (byte)(Equipment.TryGetItem((byte)ConquerItem.Wing) != null ? Equipment.TryGetItem((byte)ConquerItem.Wing).Plus : 0);
                            }
                            proto2.proto.Title = (uint)Entity.EquippedTitle;
                            proto2.proto.Flag = (uint)Entity.StatusFlag;
                            proto2.proto.Flag2 = (uint)Entity.StatusFlag2;
                            proto2.proto.Flag3 = (uint)Entity.StatusFlag3;
                            //proto2.proto.Flag4 = (uint)Entity.StatusFlag4;
                            client.Send(Kernel.FinalizeProtoBuf(proto2, 3257));
                            break;
                        }
                        #endregion
                        proto2.proto.HairStyle = BestEntity.HairStyle;
                        proto2.proto.Mesh = BestEntity.Mesh;
                        proto2.proto.Name = BestEntity.Name;
                        if (BestEntity.GuildID != 0 && Kernel.Guilds.ContainsKey(BestEntity.GuildID))
                            proto2.proto.Guild = Kernel.Guilds[BestEntity.GuildID].Name;
                        proto2.proto.Hat = Items[(byte)ConquerItem.Head];
                        proto2.proto.LeftWep = Items[(byte)ConquerItem.LeftWeapon];
                        proto2.proto.LeftWepAcc = Items[(byte)ConquerItem.LeftWeaponAccessory];
                        proto2.proto.MountArmor = Items[(byte)ConquerItem.SteedArmor] == 0 ? Items[(byte)ConquerItem.Steed] : Items[(byte)ConquerItem.SteedArmor];
                        proto2.proto.Garment = Items[(byte)ConquerItem.Garment];
                        proto2.proto.RightWep = Items[(byte)ConquerItem.RightWeapon];
                        proto2.proto.RightWepAcc = Items[(byte)ConquerItem.RightWeaponAccessory];
                        proto2.proto.Wing = BestEntity.EquippedWing == 0 ? Items[(byte)ConquerItem.Wing] : (uint)BestEntity.EquippedWing;
                        proto2.proto.WingLevel = Items[255];
                        proto2.proto.Title = (uint)BestEntity.EquippedTitle;
                        client.Send(Kernel.FinalizeProtoBuf(proto2, 3257));
                        break;
                    }
                case 1:
                    {
                        if (Kernel.GamePool.ContainsKey(Info.proto == null ? 0 : Info.proto.dwParam))
                        {
                            PacketHandler.ObserveEquipment(new Data(true) { ID = 117, UID = client.Player.UID, dwParam = Info.proto == null ? 0 : Info.proto.dwParam }, client);
                        }
                        else
                        {
                            client.Send(Kernel.FinalizeProtoBuf(Info, 3257));
                        }
                        break;
                    }
            }

        }
        public bool Read(byte[] packet)
        {
            var mypkt = new byte[packet.Length - 4];
            Array.Copy(packet, 4, mypkt, 0, mypkt.Length);
            try
            {
                using (var memoryStream = new MemoryStream(packet))
                {
                    Info = Serializer.DeserializeWithLengthPrefix<MsgRankMemberShowProto>(memoryStream, PrefixStyle.Fixed32);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                return false;
            }
            return true;
        }
    }
    public class MsgEquipRefineRank
    {
        public MsgEquipRefineRank() { }
        public MsgEquipRefineRankProto Info;
        [Flags]
        public enum ActionID
        {
            MainRank = 0,
            RankItems = 1,
            UserItemRanking = 2,
            MyRanks = 3,
            View = 4,

        }
        [ProtoContract]
        public class MsgEquipRefineRankProto
        {
            [ProtoMember(1, IsRequired = true)]
            public ActionID Action;
            [ProtoMember(2)]
            public uint RegisteredCount;
            [ProtoMember(3)]
            public uint Page;
            [ProtoMember(4, IsRequired = true)]
            public uint Index;
            [ProtoMember(5, IsRequired = true)]
            public EquipProto[] items;
        }
        [ProtoContract]
        public class EquipProto
        {
            [ProtoMember(1, IsRequired = true)]
            public uint Rank;
            [ProtoMember(2, IsRequired = true)]
            public uint UnKnow2;
            [ProtoMember(3, IsRequired = true)]
            public uint Position;
            [ProtoMember(4, IsRequired = true)]
            public uint RankScore;
            [ProtoMember(5, IsRequired = true)]
            public uint UID;
            [ProtoMember(6, IsRequired = true)]
            public uint ItemID;
            [ProtoMember(7, IsRequired = true)]
            public uint PurificationID;
            [ProtoMember(8, IsRequired = true)]
            public uint Plus;
            [ProtoMember(9, IsRequired = true)]
            public uint Stars;
            [ProtoMember(10, IsRequired = true)]
            public string Name = "";
            [ProtoMember(11, IsRequired = true)]
            public uint PerfectionLevel;
        }
        public byte GetRealyPosition(byte FakePosition)
        {
            if (FakePosition == 5) return 19;
            if (FakePosition == 7) return 18;
            if (FakePosition == 9) return 12;
            return FakePosition;
        }
        public static Dictionary<byte, ConquerItem> MainRank;
        public void UpdateRanking()
        {
            AllItemsRanking = new List<ConquerItem>();
            MainRank = new Dictionary<byte, ConquerItem>();
            for (byte i = 0; i < 11; i++)
            {
                byte z = GetRealyPosition((byte)(i + 1));
                List<ConquerItem>
items = new List<ConquerItem>();
                MySqlCommand command = new MySqlCommand(MySqlCommandType.SELECT);
                command.Select("items").Where("Position", z).And("Stars", 0, true);
                MySqlReader reader = new MySqlReader(command);
                while (reader.Read())
                {
                    ConquerItem item = new ConquerItem(true);
                    item.ID = reader.ReadUInt32("ID");
                    item.UID = reader.ReadUInt32("UID");
                    item.MaximDurability = reader.ReadUInt16("MaximDurability");
                    item.Durability = reader.ReadUInt16("Durability");
                    item.Position = reader.ReadUInt16("Position");
                    item.Signature = reader.ReadString("Signature");
                    item.SocketProgress = reader.ReadUInt32("SocketProgress");
                    item.PlusProgress = reader.ReadUInt32("PlusProgress");
                    item.Stars = reader.ReadByte("Stars");
                    item.PerfectionProgress = reader.ReadUInt32("PerfectionProgress");
                    item.Owner = reader.ReadString("Owner");
                    item.OwnerUID = reader.ReadUInt32("OwnerUID");
                    item.SocketOne = (Game.Enums.Gem)reader.ReadByte("SocketOne");
                    item.SocketTwo = (Game.Enums.Gem)reader.ReadByte("SocketTwo");
                    item.Effect = (Game.Enums.ItemEffect)reader.ReadByte("Effect");
                    item.Mode = Game.Enums.ItemMode.Default;
                    item.Plus = reader.ReadByte("Plus");
                    item.Bless = reader.ReadByte("Bless");
                    item.Bound = reader.ReadBoolean("Bound");
                    // item.TimeStamp = DateTime.FromBinary(reader.ReadInt64("TimeStamp"));
                    // item.Minutes = reader.ReadUInt64("MinutesLeft");
                    item.Enchant = reader.ReadByte("Enchant");
                    item.Lock = reader.ReadByte("Locked");
                    item.UnlockEnd = DateTime.FromBinary(reader.ReadInt64("UnlockEnd"));
                    item.Suspicious = reader.ReadBoolean("Suspicious");
                    item.SuspiciousStart = DateTime.FromBinary(reader.ReadInt64("SuspiciousStart"));
                    item.Color = (Game.Enums.Color)reader.ReadByte("Color");
                    item.Inscribed = reader.ReadByte("Inscribed") == 1;
                    item.StackSize = reader.ReadUInt16("StackSize");
                    item.Warehouse = reader.ReadByte("Warehouse");
                    item.RefineItem = reader.ReadUInt32("RefineryItem");
                    item.InWardrobe = reader.ReadBoolean("InWardrobe");
                    Int64 rTime = reader.ReadInt64("RefineryTime");
                    ItemAddingTable.GetAddingsForItem(item);
                    items.Add(item);
                    if (!AllItemsRanking.Contains(item))
                        AllItemsRanking.Add(item);

                }
                MainRank[z] = items.OrderByDescending(x => MsgUserAbilityScore.CalculatePerfectionItemPoints(x)).FirstOrDefault();
            }
        }
        public static List<ConquerItem> AllItemsRanking;
        public void Handle(Client.GameState client)
        {
            switch (Info.Action)
            {
                case ActionID.UserItemRanking:
                    {
                        var item = AllItemsRanking.Where(p => p.Position == GetRealyPosition((byte)Info.Index)).OrderByDescending(i => MsgUserAbilityScore.CalculatePerfectionItemPoints(i)).ToArray();
                        var min = Math.Min(item.Length, 50);
                        for (int i = 0; i < min; i++)
                        {
                            if (client.Equipment.IsWearingItemUID(item[i].UID))
                            {
                                var packet = new MsgEquipRefineRankProto();
                                packet.Page = Info.Page;
                                packet.RegisteredCount = Info.RegisteredCount;
                                packet.Action = Info.Action;
                                packet.Index = Info.Index;
                                packet.items = new EquipProto[1];
                                packet.items[0] = new EquipProto();
                                var itemm = item[i];
                                packet.items[0].Rank = (uint)(i + 1);
                                packet.items[0].RankScore = MsgUserAbilityScore.CalculatePerfectionItemPoints(itemm);
                                packet.items[0].ItemID = itemm.ID;
                                packet.items[0].Name = itemm.Owner.Replace("/0", "");
                                packet.items[0].Stars = itemm.Stars;
                                packet.items[0].Position = GetRealyPosition((byte)Info.Index);
                                packet.items[0].Plus = itemm.Plus;
                                packet.items[0].UID = itemm.UID;
                                packet.items[0].UnKnow2 = (uint)Kernel.Random.Next(800, 3000);
                                client.Send(Kernel.FinalizeProtoBuf(packet, 3256));
                                break;
                            }
                        }
                        break;
                    }
                case ActionID.MyRanks:
                    {
                        var packet = new MsgEquipRefineRankProto();
                        packet.Action = ActionID.MyRanks;
                        packet.items = new EquipProto[11];
                        for (byte i = 0; i < packet.items.Length; i++)
                        {
                            byte z = GetRealyPosition((byte)(i + 1));
                            var itemmm = AllItemsRanking.Where(p =>
p.Position == z).OrderByDescending(m => MsgUserAbilityScore.CalculatePerfectionItemPoints(m)).ToArray();
                            for (int h = 0; h < itemmm.Length; h++)
                            {
                                if (client.Equipment.IsWearingItemUID(itemmm[h].UID))
                                {
                                    packet.items[i] = new EquipProto();
                                    packet.items[i].ItemID = itemmm[h].ID;
                                    packet.items[i].Name = itemmm[h].Owner.Replace("/0", "");
                                    packet.items[i].Stars = itemmm[h].Stars;
                                    packet.items[i].Plus = itemmm[h].Plus;
                                    packet.items[i].Position = (uint)(i + 1);
                                    if (itemmm[h].Purification.Available)
                                        packet.items[i].PurificationID = itemmm[h].Purification.PurificationItemID;
                                    packet.items[i].Rank = (uint)(h + 1);
                                    packet.items[i].RankScore = MsgUserAbilityScore.CalculatePerfectionItemPoints(itemmm[h]);
                                    packet.items[i].UID = itemmm[h].UID;
                                    packet.items[i].UnKnow2 = (uint)Kernel.Random.Next(800, 3000);
                                    break;
                                }
                            }
                        }



                        var proto = Kernel.FinalizeProtoBuf(packet, 3256);
                        client.Send(proto);
                        break;
                    }
                case ActionID.View://ViewItem
                    {
                        if (Database.ConquerItemTable.LoadItem(Info.Index) != null)
                        {
                            var item = Database.ConquerItemTable.LoadItem(Info.Index);
                            item.Mode = Game.Enums.ItemMode.Perfection;
                            item.Send(client);
                        }
                        else
                        {
                            client.Send(Kernel.FinalizeProtoBuf(Info, 3256));
                        }
                        break;
                    }
                case ActionID.RankItems://AllRanking
                    {
                        var cnt = AllItemsRanking.Where(p =>
p.Position == GetRealyPosition((byte)Info.Index)).Count();
                        var packet = new MsgEquipRefineRankProto();
                        packet.Action = ActionID.RankItems;
                        packet.RegisteredCount = (uint)Math.Min(cnt, 50);
                        packet.Page = Info.Page;
                        packet.Index = Info.Index;
                        uint sss = (ushort)Math.Min(cnt - (packet.Page * 10), 10);

                        int rank = (int)packet.Page * 10;
                        packet.items = new EquipProto[sss];
                        for (int i = rank; i < rank + sss; i++)
                        {
                            var iteeeem = AllItemsRanking.Where(p =>
p.Position == GetRealyPosition((byte)Info.Index)).OrderByDescending(x => MsgUserAbilityScore.CalculatePerfectionItemPoints(x)).ToArray()[i];
                            if (iteeeem == null) continue;
                            packet.items[i] = new EquipProto();
                            packet.items[i].ItemID = iteeeem.ID;
                            packet.items[i].Name = iteeeem.Owner.Replace("/0", "");
                            packet.items[i].PerfectionLevel = iteeeem.Stars;
                            packet.items[i].Plus = iteeeem.Plus;
                            packet.items[i].Position = GetRealyPosition((byte)Info.Index);
                            if (iteeeem.Purification.Available)
                                packet.items[i].PurificationID = iteeeem.Purification.PurificationItemID;
                            packet.items[i].Rank = (uint)(i + 1);
                            packet.items[i].RankScore = MsgUserAbilityScore.CalculatePerfectionItemPoints(iteeeem);
                            packet.items[i].UID = iteeeem.UID;
                            packet.items[i].UnKnow2 = (uint)Kernel.Random.Next(800, 3000);
                        }
                        var proto = Kernel.FinalizeProtoBuf(packet, 3256);
                        client.Send(proto);
                        break;
                    }
                case ActionID.MainRank:
                    {


                        var packet = new MsgEquipRefineRankProto();
                        packet.Action = ActionID.MainRank;
                        packet.items = new EquipProto[11];
                        for (byte i = 0; i < packet.items.Length; i++)
                        {
                            byte z = GetRealyPosition((byte)(i + 1));
                            ConquerItem itemmm = MainRank[z];
                            if (itemmm == null) continue;
                            packet.items[i] = new EquipProto();
                            packet.items[i].ItemID = itemmm.ID;
                            packet.items[i].Name = itemmm.Owner.Replace("/0", "");
                            packet.items[i].Stars = itemmm.Stars;
                            packet.items[i].Plus = itemmm.Plus;
                            packet.items[i].Position = (uint)(i + 1);
                            if (itemmm.Purification.Available)
                                packet.items[i].PurificationID = itemmm.Purification.PurificationItemID;
                            packet.items[i].Rank = 1;
                            packet.items[i].RankScore = MsgUserAbilityScore.CalculatePerfectionItemPoints(itemmm);
                            packet.items[i].UID = itemmm.UID;
                            packet.items[i].UnKnow2 = (uint)Kernel.Random.Next(800, 3000);
                        }



                        var proto = Kernel.FinalizeProtoBuf(packet, 3256);
                        client.Send(proto);
                        break;
                    }
            }
        }
        public bool Read(byte[] packet)
        {
            using (var memoryStream = new MemoryStream(packet))
            {
                Info = Serializer.DeserializeWithLengthPrefix<MsgEquipRefineRankProto>
(memoryStream, PrefixStyle.Fixed32);
            }
            return true;
        }
    }
    public class MsgUserTotalRefineLev
    {
        public MsgUserTotalRefineLev() { }
        public MsgUserTotalRefineLevProto Info;
        [ProtoContract]
        public class MsgUserTotalRefineLevProto
        {
            [ProtoMember(1, IsRequired = true)]
            public uint ActionId;
            [ProtoMember(2, IsRequired = true)]
            public uint EntityUID;
            [ProtoMember(3, IsRequired = true)]
            public uint TotalPrefectionLevel;
        }
        public void SendPerfectionEffects(Client.GameState client)
        {
            if (client.Equipment.TotalStars >= 10) { client.Player.MaxAttack += 100; client.Player.MinAttack += 100; client.Player.MagicAttack += 100; }
            if (client.Equipment.TotalStars >= 70) { client.Player.Defence += 100; client.Player.MagicDefence += 100; }
            if (client.Equipment.TotalStars >= 75) { client.Player.MaxAttack += 200; client.Player.MinAttack += 200; client.Player.MagicAttack += 300; }
            if (client.Equipment.TotalStars >= 100) { client.Player.Defence += 200; client.Player.MagicDefence += 50; }
            if (client.Equipment.TotalStars >= 140) { client.Player.MaxAttack += 200; client.Player.MinAttack += 200; client.Player.MagicAttack += 400; }
            if (client.Equipment.TotalStars >= 150) { client.Player.MaxAttack += 300; client.Player.MinAttack += 300; client.Player.MagicAttack += 500; }
            if (client.Equipment.TotalStars >= 160) { client.Player.Defence += 300; client.Player.MagicDefence += 125; }
            if (client.Equipment.TotalStars >= 180) { client.Player.Defence += 400; client.Player.MagicDefence += 125; }
            if (client.Equipment.TotalStars >= 235) { client.Player.MaxAttack += 400; client.Player.MinAttack += 400; client.Player.MagicAttack += 500; }
            if (client.Equipment.TotalStars >= 270) { client.Player.Defence += 400; client.Player.MagicDefence += 125; }
            if (client.Equipment.TotalStars >= 273) { client.Player.MaxAttack += 400; client.Player.MinAttack += 400; client.Player.MagicAttack += 500; }
            if (client.Equipment.TotalStars >= 306) { client.Player.MaxAttack += 400; client.Player.MinAttack += 400; client.Player.MagicAttack += 500; }
            if (client.Equipment.TotalStars >= 310) { client.Player.Defence += 400; client.Player.MagicDefence += 125; }
            if (client.Equipment.TotalStars >= 316) { client.Player.Defence += 500; client.Player.MagicDefence += 125; }
            if (client.Equipment.TotalStars >= 318) { client.Player.MaxAttack += 500; client.Player.MinAttack += 500; client.Player.MagicAttack += 500; }
            if (client.Equipment.TotalStars >= 323) { client.Player.Defence += 500; client.Player.MagicDefence += 125; }
            if (client.Equipment.TotalStars >= 324) { client.Player.MaxAttack += 500; client.Player.MinAttack += 500; client.Player.MagicAttack += 500; }
        }
        public void Send(Client.GameState client)
        {
            client.Send(Kernel.FinalizeProtoBuf(new MsgUserTotalRefineLevProto()
            {
                ActionId = 0,
                EntityUID = client.Player.UID,
                TotalPrefectionLevel = client.Equipment.TotalStars
            }, 3252));
        }
    }
    public class MsgRefineEffect
    {
        public MsgRefineEffect() { }
        public MsgRefineEffectProto Info;
        [ProtoContract]
        public class MsgRefineEffectProto
        {
            [ProtoMember(1, IsRequired = true)]
            public uint AttackerUID;
            [ProtoMember(2, IsRequired = true)]
            public uint AttackedUID;
            [ProtoMember(3, IsRequired = true)]
            public uint Effect;
        }
        public void Attacking(Game.Entity attacker, Interfaces.IMapObject attacked, ref uint damage, ref Attack attack, ref bool loadItemStats)
        {
            if (attacker == null || attacked == null) return;
            if (attacker.Owner.Equipment.TotalStars == 0) return;
            if (attacker.EntityFlag == Game.EntityFlag.Monster) return;
            double chance = 0;
            var effect = Game.Enums.PerfectionEffect.CalmWind;
            byte level = 0;
            var dics = Database.PerfectionTable.Effects.Values.Where(i => i.Stars == attacker.Owner.Equipment.TotalStars).FirstOrDefault();
            if (dics == null) return;
            var dic = dics.Effects;
            var item = Kernel.RandFromGivingNums(dic.ToArray());
            effect = (Game.Enums.PerfectionEffect)(item / 1000);
            level = (byte)(item % 1000);
            chance = Database.PerfectionTable.AttributeList.Values.Where(i => i.Type == effect && i.Level == level).FirstOrDefault().Chance / 100;
            foreach (var val in Database.PerfectionTable.EffectsEX.Values)
            {
                if (attacker.Owner.Equipment.IsWearingItemID(val.ItemID))
                {
                    if (attacker.Owner.Equipment.TotalStars >= val.StarReq)
                    {
                        if (val.AttributeNum <= 16)
                        {
                            if (val.AttributeNum == (uint)effect)
                            {
                                chance += (byte)val.Value;
                            }
                        }
                    }
                }
            }
            while (effect == Game.Enums.PerfectionEffect.Stricklock ||
                effect == Game.Enums.PerfectionEffect.FreeSoul ||
                effect == Game.Enums.PerfectionEffect.StraightLife ||
                effect == Game.Enums.PerfectionEffect.ToxinEarser ||
                effect == Game.Enums.PerfectionEffect.BloodSpawn ||
                effect == Game.Enums.PerfectionEffect.MirrorofSin)
            {
                item = Kernel.RandFromGivingNums(dic.ToArray());
                effect = (Game.Enums.PerfectionEffect)(item / 1000);
                level = (byte)(item % 1000);
                chance = Database.PerfectionTable.AttributeList.Values.Where(i =>
i.Type == effect && i.Level == level).FirstOrDefault().Chance / 100;
                foreach (var val in Database.PerfectionTable.EffectsEX.Values)
                {

                    if (attacker.Owner.Equipment.IsWearingItemID(val.ItemID))
                    {
                        if (attacker.Owner.Equipment.TotalStars >= val.StarReq)
                        {
                            if (val.AttributeNum <= 16)
                            {
                                if (val.AttributeNum == (uint)effect)
                                {
                                    chance += (byte)val.Value;
                                }
                            }
                        }
                    }
                }
            }
            if (Kernel.Rate((byte)chance))
            {
                #region DoEffects
                #region DrainingTouch
                if (effect == Game.Enums.PerfectionEffect.DrainingTouch)
                {
                    attacker.Hitpoints = attacker.MaxHitpoints;
                    attacker.Mana = attacker.MaxMana;
                }
                #endregion
                #region LuckyStrike
                if (effect == Game.Enums.PerfectionEffect.LuckyStrike || effect == Game.Enums.PerfectionEffect.AbsoluteLuck) { damage *= 2; attack.Effect1 = Attack.AttackEffects1.LuckyStrike; }
                #endregion
                #region KillingFlash
                if (effect == Game.Enums.PerfectionEffect.KillingFlash)
                {
                    attacker.Owner.XPCount = 100;
                }
                #endregion
                #region DivineGuard
                if (effect == Game.Enums.PerfectionEffect.DivineGuard)
                {
                    attacker.AddFlag3(Network.GamePackets.Update.Flags3.DivineGuard);
                    attacker.Defence = (ushort)(((attacker.Defence) * 300) / 100);
                    attacker.DivineGuardStamp = Time32.Now;
                }
                #endregion
                #region InvisibleArrow
                if (effect == Game.Enums.PerfectionEffect.InvisibleArrow)
                {
                    damage += ((uint)(attacker.MagicAttack * 5) / 100);
                }
                #endregion
                #region ShieldBreak
                if (effect == Game.Enums.PerfectionEffect.ShieldBreak)
                {
                    attacker.AddFlag3(Network.GamePackets.Update.Flags3.ShieldBreak);
                    attacker.ShieldBreakStamp = Time32.Now;
                    if (attacked.MapObjType == Game.MapObjectType.Entity)
                    {
                        (attacked as Game.Entity).Block -= (ushort)((((attacked as Game.Entity).Block) * 20) / 100);
                        if ((attacked as Game.Entity).Block < 0) (attacked as Game.Entity).Block = 0;
                        loadItemStats = true;
                    }
                }
                #endregion
                #region CoreStrike
                if (effect == Game.Enums.PerfectionEffect.CoreStrike)
                {
                    damage += ((uint)(attacker.MagicDamageIncrease - 0) * 100);
                }
                #endregion
                #region LightofStamina
                if (effect == Game.Enums.PerfectionEffect.LightofStamina)
                {
                    byte limit = 0;
                    if (attacker.HeavenBlessing >
0)
                        limit = 50;
                    attacker.Stamina = (byte)(100 + limit);
                }
                #endregion
                #endregion
                var proto = new MsgRefineEffectProto();
                proto.AttackerUID = attacker.UID;
                proto.AttackedUID = attacked != null ? attacked.UID : 0;
                proto.Effect = (uint)effect;
                var proto2 = Kernel.FinalizeProtoBuf(proto, 3254);
                attacker.Owner.SendScreen(proto2, true);
            }
        }
        public void beingAttacked(Interfaces.IMapObject attacker, Game.Entity attacked, ref uint damage)
        {
            if (attacker == null || attacked == null) return;
            if (attacker.Owner.Equipment.TotalStars == 0) return;
            if (attacked.EntityFlag == Game.EntityFlag.Monster) return;
            double chance = 0;
            var effect = Game.Enums.PerfectionEffect.CalmWind;
            byte level = 0;
            var dic0 = Database.PerfectionTable.Effects.Values.Where(i => i.Stars == attacked.Owner.Equipment.TotalStars).FirstOrDefault();
            if (dic0 == null) return;
            var dic = dic0.Effects;
            var item = Kernel.RandFromGivingNums(dic.ToArray());
            effect = (Game.Enums.PerfectionEffect)(item / 1000);
            level = (byte)(item % 1000);
            chance = Database.PerfectionTable.AttributeList.Values.Where(i => i.Type == effect && i.Level == level).FirstOrDefault().Chance / 100;
            foreach (var val in Database.PerfectionTable.EffectsEX.Values)
            {

                if (attacked.Owner.Equipment.IsWearingItemID(val.ItemID))
                {
                    if (attacked.Owner.Equipment.TotalStars >= val.StarReq)
                    {
                        if (val.AttributeNum <= 16)
                        {
                            if (val.AttributeNum == (uint)effect)
                            {
                                chance += (byte)val.Value;
                            }
                        }
                    }
                }
            }
            /////////////WhileAttackedNotAttackingEffects////////////
            while (!(effect == Game.Enums.PerfectionEffect.Stricklock ||
                effect == Game.Enums.PerfectionEffect.BloodSpawn ||
                effect == Game.Enums.PerfectionEffect.MirrorofSin))
            {
                item = Kernel.RandFromGivingNums(dic.ToArray());
                effect = (Game.Enums.PerfectionEffect)(item / 1000);
                level = (byte)(item % 1000);
                chance = Database.PerfectionTable.AttributeList.Values.Where(i =>
i.Type == effect && i.Level == level).FirstOrDefault().Chance / 100;
                foreach (var val in Database.PerfectionTable.EffectsEX.Values)
                {

                    if (attacked.Owner.Equipment.IsWearingItemID(val.ItemID))
                    {
                        if (attacked.Owner.Equipment.TotalStars >= val.StarReq)
                        {
                            if (val.AttributeNum <= 16)
                            {
                                if (val.AttributeNum == (uint)effect)
                                {
                                    chance += (byte)val.Value;
                                }
                            }
                        }
                    }
                }
            }
            if (Kernel.Rate((byte)chance))
            {
                #region DoEffects
                #region StrickLock
                if (effect == Game.Enums.PerfectionEffect.Stricklock)
                {
                    damage = 0;
                }
                #endregion
                #region BloodSpawn
                if (effect == Game.Enums.PerfectionEffect.BloodSpawn)
                {
                    attacked.Hitpoints = attacked.MaxHitpoints;
                    attacked.Mana = attacked.MaxMana;
                }
                #endregion
                #region KillingFlash
                if (effect == Game.Enums.PerfectionEffect.MirrorofSin)
                {
                    attacked.Owner.XPCount = 100;
                }
                #endregion
                #endregion
                var proto = new MsgRefineEffectProto();
                proto.AttackerUID = attacked.UID;
                proto.AttackedUID = attacker.UID;
                proto.Effect = (uint)effect;
                var proto2 = Kernel.FinalizeProtoBuf(proto, 3254);
                attacked.Owner.SendScreen(proto2, true);
            }
        }
        public void GenerateChance(Game.Entity Entity, Game.Enums.PerfectionEffect effect, ref byte chance, bool dwParam = false)
        {
            if (Entity.Owner.Equipment.TotalStars == 0) { chance = 0; return; }
            byte level = (byte)(Database.PerfectionTable.Effects.Values.Where(i =>
i.Stars == Entity.Owner.Equipment.TotalStars).FirstOrDefault().Effects.Where(i => i >= ((uint)(effect) * 1000) && i <= ((uint)(effect) * 1000 + 20)).FirstOrDefault() % 1000);
            if (Database.PerfectionTable.AttributeList.Values.Where(i =>
i.Type == effect && i.Level == level).FirstOrDefault() != null)
            {
                if (!dwParam)
                    chance = (byte)(Database.PerfectionTable.AttributeList.Values.Where(i => i.Type == effect && i.Level == level).FirstOrDefault().Chance / 100);
                else chance = (byte)(Database.PerfectionTable.AttributeList.Values.Where(i => i.Type == effect && i.Level == level).FirstOrDefault().dwParam / 100);
                foreach (var val in Database.PerfectionTable.EffectsEX.Values)
                {
                    if (Entity.Owner.Equipment.IsWearingItemID(val.ItemID))
                    {
                        if (Entity.Owner.Equipment.TotalStars >= val.StarReq)
                        {
                            if (val.AttributeNum <= 16)
                            {
                                if (val.AttributeNum == (uint)effect)
                                {
                                    chance += (byte)val.Value;
                                }
                            }
                        }
                    }
                }
            }
        }
        public byte GetChance(Client.GameState client, Game.Enums.PerfectionEffect effect)
        {
            if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints == 0) return 0;
            byte Chance = 10;
            if (effect == Game.Enums.PerfectionEffect.CalmWind)
            {
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints == 3) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >
= 90) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 170) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 250) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 285) Chance += 1;
            }

            if (effect == Game.Enums.PerfectionEffect.BloodSpawn)
            {
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 40) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 240) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 288) Chance += 1;
            }
            if (effect == Game.Enums.PerfectionEffect.DivineGuard)
            {
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints <= 40) Chance += 5;
            }
            if (effect == Game.Enums.PerfectionEffect.CoreStrike)
            {
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints == 50) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >
= 80) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 135) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 205) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 245) Chance += 1;
            }
            if (effect == Game.Enums.PerfectionEffect.DrainingTouch)
            {
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 35) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 220) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 276) Chance += 1;
            }
            if (effect == Game.Enums.PerfectionEffect.FreeSoul)
            {
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 25) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 95) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 130) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 195) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 279) Chance += 1;
            }
            if (effect == Game.Enums.PerfectionEffect.InvisibleArrow)
            {
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 65) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 225) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 282) Chance += 1;
            }
            if (effect == Game.Enums.PerfectionEffect.KillingFlash)
            {
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 55) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 165) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 294) Chance += 1;
            }
            if (effect == Game.Enums.PerfectionEffect.LightofStamina)
            {
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 1) Chance += 5;
            }
            if (effect == Game.Enums.PerfectionEffect.LuckyStrike)
            {
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 15) Chance = 0;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 115) Chance = 0;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 215) Chance = 0;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 314) Chance = 0;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 320) Chance = 0;
            }
            if (effect == Game.Enums.PerfectionEffect.MirrorofSin)
            {
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 60) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 190) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 291) Chance += 1;
            }
            if (effect == Game.Enums.PerfectionEffect.ShieldBreak)
            {
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints == 155 && client.Equipment.GetFullEquipmentPerfecetionLevelPoints <= 254) Chance += 50 / 100;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints == 255 && client.Equipment.GetFullEquipmentPerfecetionLevelPoints <= 296) Chance += 70 / 100;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints == 297 && client.Equipment.GetFullEquipmentPerfecetionLevelPoints <= 311) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints == 312 && client.Equipment.GetFullEquipmentPerfecetionLevelPoints <= 321) Chance += 150 / 100;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints == 322 && client.Equipment.GetFullEquipmentPerfecetionLevelPoints >
= 322) Chance += 2;
            }
            if (effect == Game.Enums.PerfectionEffect.StraightLife)
            {
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 30) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 125) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 210) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 265) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 303) Chance += 1;
            }
            if (effect == Game.Enums.PerfectionEffect.Stricklock)
            {
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 30) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 125) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 210) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 265) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 303) Chance += 1;
            }
            return Chance;
        }
        public void SendEffect(Game.Entity attacker, Game.Entity attacked, Game.Enums.PerfectionEffect effect)
        {

            if (attacker == null || attacked == null) return;
            var proto = new MsgRefineEffectProto();
            proto.AttackerUID = attacker.UID;
            if (attacked.EntityFlag == Game.EntityFlag.Entity)
                proto.AttackedUID = attacked.UID;
            else if (attacked.EntityFlag == Game.EntityFlag.Monster && attacked != null && attacked.UID != 0)
            {
                proto.AttackedUID = attacked.UID;
            }
            proto.Effect = (uint)effect;
            var proto2 = Kernel.FinalizeProtoBuf(proto, 3254);
            attacker.Owner.SendScreen(proto2, true);
            if (effect == Game.Enums.PerfectionEffect.DrainingTouch)
            {
                attacker.Hitpoints = attacker.MaxHitpoints;
            }
            if (effect == Game.Enums.PerfectionEffect.KillingFlash)
            {
                attacker.AddFlag((ulong)Network.GamePackets.Update.Flags.XPList);

                attacker.Owner.XPListStamp = Time32.Now;
            }
            if (effect == Game.Enums.PerfectionEffect.DivineGuard)
            {
                attacker.AddFlag3((ulong)Network.GamePackets.Update.Flags3.DivineGuard);
                attacker.Defence = (ushort)(((attacker.Defence) * 20) / 100);
                attacker.DivineGuardStamp = Time32.Now;
            }
            if (effect == Game.Enums.PerfectionEffect.ShieldBreak)
            {
                attacker.AddFlag3((ulong)Network.GamePackets.Update.Flags3.ShieldBreak);
                attacker.ShieldBreakStamp = Time32.Now;
                attacker.Block += (ushort)(((attacker.Block) * 2) / 10);
            }
            if (effect == Game.Enums.PerfectionEffect.StraightLife)
            {
                attacker.BringToLife();
            }
            if (effect == Game.Enums.PerfectionEffect.LightofStamina && attacked.EntityFlag == Game.EntityFlag.Entity && attacker.Owner.Equipment.GetFullEquipmentPerfecetionLevelPoints > attacked.Owner.Equipment.GetFullEquipmentPerfecetionLevelPoints || effect == Game.Enums.PerfectionEffect.LightofStamina && attacked.EntityFlag == Game.EntityFlag.Monster) attacker.Stamina = 100;
        }
        public void GenerateEffectandChance(Client.GameState client, ref Game.Enums.PerfectionEffect effect, ref byte chance)
        {
            effect = (Game.Enums.PerfectionEffect)Kernel.Random.Next(3, 14);
            chance = GetChance(client, effect);
            while (chance == 10)
            {
                effect = (Game.Enums.PerfectionEffect)Kernel.Random.Next(3, 14);
                chance = GetChance(client, effect);
            }
        }
        public void HandleStraightLife(Game.Entity client, ref byte chance)
        {
            chance = GetChance(client.Owner, Game.Enums.PerfectionEffect.StraightLife);
        }
        public void HandleStrickeLock(Game.Entity client, ref byte chance)
        {
            chance = GetChance(client.Owner, Game.Enums.PerfectionEffect.Stricklock);
        }
        public void HandleLuckyStrike(Game.Entity client, ref byte chance)
        {
            chance = GetChance(client.Owner, Game.Enums.PerfectionEffect.LuckyStrike);
        }
        public void HandleMirror(Game.Entity client, ref byte chance)
        {
            chance = GetChance(client.Owner, Game.Enums.PerfectionEffect.MirrorofSin);
        }
        public void HandleBloodSpawn(Game.Entity client, ref byte chance)
        {
            chance = GetChance(client.Owner, Game.Enums.PerfectionEffect.BloodSpawn);
        }
        public void HandleFreeSoul(Game.Entity client, ref byte chance)
        {
            chance = GetChance(client.Owner, Game.Enums.PerfectionEffect.FreeSoul);
        }
    }
}


osama 2019-07-12 03:44 PM

رد: حل مشكلة الرانك
 
اقتباس:

المشاركة الأصلية كتبت بواسطة Rider (المشاركة 4866)
ادخل علي Network/Gamepackets

و افتح
prefection.cs ب ده و شوف هيجبلك ايرور فين و قولي

كود بلغة HTML:

using ProtoBuf;
using System;
using System.Runtime.InteropServices;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Collections.Concurrent;
using System.Text;
using Mr_Panda;
using Mr_Panda.Database;
using System.Threading.Tasks;

namespace Mr_Panda.Network.GamePackets
{
    public class MsgUserAbilityScore
    {
        public MsgUserAbilityScore() { }
        public MsgUserAbilityScoreProto Info;
        [ProtoContract]
        public class MsgUserAbilityScoreProto
        {
            [ProtoMember(1, IsRequired = true)]
            public uint ActionId;
            [ProtoMember(2, IsRequired = true)]
            public uint UID;
            [ProtoMember(3, IsRequired = true)]
            public uint Level;
            [ProtoMember(4, IsRequired = true)]
            public Scores[] Scores;
        }
        [ProtoContract]
        public class Scores
        {
            [ProtoMember(1, IsRequired = true)]
            public uint Type;
            [ProtoMember(2, IsRequired = true)]
            public uint Score;
        }
        public static ConcurrentDictionary<uint, Game.Entity> RankingList;
        public void GetRankingList()
        {
            RankingList = new ConcurrentDictionary<uint, Game.Entity>();
            using (var cmd = new MySqlCommand(MySqlCommandType.SELECT).Select("entities"))
            using (var reader = new MySqlReader(cmd))
            {
                while (reader.Read())
                {
                    if (reader.ReadUInt32("TotalPerfectionScore") < 20000) continue;
                    Game.Entity client = new Game.Entity(Game.EntityFlag.Entity, false);
                    client.Name = reader.ReadString("Name");
                    client.UID = reader.ReadUInt32("UID");
                    client.Level = reader.ReadByte("Level");
                    client.Class = reader.ReadByte("Class");
                    client.Body = reader.ReadUInt16("Body");
                    client.Face = reader.ReadUInt16("Face");
                    client.TotalPerfectionScore = reader.ReadUInt32("TotalPerfectionScore");
                    if (reader.ReadString("Wardrobe") != "")
                    {
                        if (reader.ReadString("Wardrobe").Contains("~"))
                        {
                            var wing = reader.ReadString("Wardrobe").Split('~')[0];
                            int type = Convert.ToInt32(wing.Split('-')[0]);
                            int id = Convert.ToInt32(wing.Split('-')[1]);
                            client.EquippedWing = StorageManager.Wing<int>
(type, id);
                            var title = reader.ReadString("Wardrobe").Split('~')[1];
                            int type2 = Convert.ToInt32(title.Split('-')[0]);
                            int id2 = Convert.ToInt32(title.Split('-')[1]);
                            client.EquippedTitle = StorageManager.Title<int>(type2, id2);
                        }
                    }
                    RankingList.Add(client.UID, Kernel.GamePool.ContainsKey(client.UID) ? Kernel.GamePool[client.UID].Player : client);
                }
            }
        }
        public bool Read(byte[] packet)
        {
            try
            {
                var mypkt = new byte[packet.Length - 4];
                Array.Copy(packet, 4, mypkt, 0, mypkt.Length);
                using (var memoryStream = new MemoryStream(packet))
                {
                    Info = Serializer.DeserializeWithLengthPrefix<MsgUserAbilityScoreProto>(memoryStream, PrefixStyle.Fixed32);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
                return false;
            }
            return true;
        }
        public void SendScore(Client.GameState client, Client.GameState Observer)
        {
            var packet = new MsgUserAbilityScoreProto();
            packet.ActionId = 0;
            packet.UID = client.Player.UID;
            packet.Level = client.Player.Level;
            packet.Scores = new Scores[20];
            for (int i = 0; i < packet.Scores.Length; i++)
            {
                byte Type = (byte)(i + 1);
                packet.Scores[i] = new Scores();
                packet.Scores[i].Type = Type;
                packet.Scores[i].Score = GetScoreValue(client, Type);
            }


            var proto = Kernel.FinalizeProtoBuf(packet, 3253);
            Observer.Send(proto);
        }
        public uint GetScoreValue(Client.GameState client, uint Type)
        {
            uint Score = 0;
            if (Type == 1) Score = (uint)MsgUserAbilityScore.CalculatePerfectionJiangPoints(client);
            if (Type == 2) Score = (uint)MsgUserAbilityScore.CalculatePerfectionChiPoints(client);
            if (Type == 3) Score = (uint)(client.Player.InnerPower != null ? client.Player.InnerPower.TotalScore * 2 : 0);
            if (Type == 4) Score = client.Equipment.GetFullEquipmentEnchantPoints;
            if (Type == 5) Score = (uint)(client.Player.Level < 140 ? client.Player.Level * 20 : client.Player.Level * 25);
            if (Type == 6) Score = client.Equipment.GetFullEquipmentPerfecetionLevelPoints;
            if (Type == 7) Score = (uint)((client.Player.Vitality + client.Player.Atributes + client.Player.Spirit + client.Player.Strength + client.Player.Agility) * 5);
            if (Type == 8) Score = (uint)(client.Player.Reborn * 1000);
            if (Type == 9) Score = client.Equipment.GetFullEquipmentEnumPoints;
            if (Type == 10) Score = client.Equipment.GetFullEquipmentSocketPoints;
            if (Type == 11) Score = client.Equipment.GetFullEquipmentGemPoints;
            if (Type == 12) Score = client.Equipment.GetFullEquipmentRefinePoints;
            if (Type == 13) Score = client.Equipment.GetFullEquipmentPlusPoints;
            if (Type == 14) Score = client.Equipment.GetFullEquipmentSoulPoints;
            if (Type == 15) Score = client.Equipment.GetFullEquipmentBlessPoints;
            if (Type == 16) Score = CalculateSubClassPoints(client);
            if (Type == 17) Score = Database.WardrobeTable.PerfectionPoints(client, true);
            if (Type == 18) Score = Database.WardrobeTable.PerfectionPoints(client, false);
            if (Type == 19) Score = (uint)((uint)client.Player.NobilityRank * 1000);
            if (Type == 20) Score = client.Equipment.GetFullEquipmentLevelPoints;
            return Score;
        }
        public void Handle(Client.GameState client)
        {
            switch (Info.ActionId)
            {
                case 1://Observ
                    {
                        if (Kernel.GamePool.ContainsKey(Info.UID))
                        {
                            SendScore(client, client);
                            SendScore(Kernel.GamePool[Info.UID], client);
                        }
                        else
                        {
                            client.Send(Kernel.FinalizeProtoBuf(new MsgUserAbilityScoreProto()
                            {
                                ActionId = 1,
                                UID = 0
                            }, 3253));
                        }
                        break;
                    }
            }
        }
        public static int CalculatePerfectionChiPoints(Client.GameState client)
        {
            if (client == null || client.ChiData == null || client.ChiData.Powers == null)
                return 0;

            int Point = 0;
            for (int i = 0; i < 4; i++)
            {
                if (client.ChiData.Powers.Count < 1) break;
                Point += ((client.ChiData.Powers[0].Attributes[i].Value / Game.Enums.ChiMaxValues(client.ChiData.Powers[0].Attributes[i].Type)) * 100) * 60;
            }
            for (int i = 0; i < 4; i++)
            {
                if (client.ChiData.Powers.Count < 2) break;
                Point += ((client.ChiData.Powers[1].Attributes[i].Value / Game.Enums.ChiMaxValues(client.ChiData.Powers[1].Attributes[i].Type)) * 100) * 60;
            }
            for (int i = 0; i < 4; i++)
            {
                if (client.ChiData.Powers.Count < 3) break;
                Point += ((client.ChiData.Powers[2].Attributes[i].Value / Game.Enums.ChiMaxValues(client.ChiData.Powers[2].Attributes[i].Type)) * 100) * 60;
            }
            for (int i = 0; i < 4; i++)
            {
                if (client.ChiData.Powers.Count < 4) break;
                Point += ((client.ChiData.Powers[3].Attributes[i].Value / Game.Enums.ChiMaxValues(client.ChiData.Powers[3].Attributes[i].Type)) * 100) * 60;
            }
            return Point;
        }
        /*public static int CalculatePerfectionChiPoints(Client.GameState client)
        {
            int Point = 0;
            for (int i = 0; i < 4; i++)
            {
                if (client.ChiData.Powers.Count < 1) break;
                Point += ((client.ChiData.Powers[0].Attributes[i].Value / Game.Enums.ChiMaxValues(client.ChiData.Powers[0].Attributes[i].Type)) * 100) * 60;
            }
            for (int i = 0; i < 4; i++)
            {
                if (client.ChiData.Powers.Count < 2) break;
                Point += ((client.ChiData.Powers[1].Attributes[i].Value / Game.Enums.ChiMaxValues(client.ChiData.Powers[1].Attributes[i].Type)) * 100) * 60;
            }
            for (int i = 0; i < 4; i++)
            {
                if (client.ChiData.Powers.Count < 3) break;
                Point += ((client.ChiData.Powers[2].Attributes[i].Value / Game.Enums.ChiMaxValues(client.ChiData.Powers[2].Attributes[i].Type)) * 100) * 60;
            }
            for (int i = 0; i < 4; i++)
            {
                if (client.ChiData.Powers.Count < 4) break;
                Point += ((client.ChiData.Powers[3].Attributes[i].Value / Game.Enums.ChiMaxValues(client.ChiData.Powers[3].Attributes[i].Type)) * 100) * 60;
            }
            return Point;
        }*/
        public static int CalculatePerfectionJiangPoints(Client.GameState client)
        {
            int Points = 0;
            if (client.Player.MyJiang != null)
            {
                if (client.Player.MyJiang.Inner_Strength == 0) return Points;
                if (client.Player.MyJiang.Inner_Strength <= 16200) Points = (int)(client.Player.MyJiang.Inner_Strength * 0.3);
                else if (client.Player.MyJiang.Inner_Strength <= 40500) Points = (int)(client.Player.MyJiang.Inner_Strength * 0.33);
                else if (client.Player.MyJiang.Inner_Strength <= 60750) Points = (int)(client.Player.MyJiang.Inner_Strength * 0.36);
                else if (client.Player.MyJiang.Inner_Strength <= 72000) Points = (int)(client.Player.MyJiang.Inner_Strength * 0.40);
                else if (client.Player.MyJiang.Inner_Strength <= 79200) Points = (int)(client.Player.MyJiang.Inner_Strength * 0.45);
                else if (client.Player.MyJiang.Inner_Strength <= 80800) Points = (int)(client.Player.MyJiang.Inner_Strength * 0.50);
                else if (client.Player.MyJiang.Inner_Strength <= 81000) Points = (int)(client.Player.MyJiang.Inner_Strength * 0.60);
            }
            return Points;
        }
        public static uint CalculateSubClassPoints(Client.GameState client)
        {
            uint Points = 0;
            if (client.Player.SubClasses.Classes != null)
            {
                foreach (var sub in client.Player.SubClasses.Classes.Values)
                {
                    if (sub == null) continue;
                    Points += (uint)(sub.Level == 9 ? 1000 : sub.Level * 100);
                }
            }
            return Points;
        }
        public static uint CalculatePerfectionItemPoints(ConquerItem item)
        {
            uint Points = 50;
            if (item == null || !Database.ConquerItemInformation.BaseInformations.ContainsKey(item.ID)) return 50;
            #region Plus
            if (!Network.PacketHandler.IsTwoHand(item.ID))
            {
                if (item.Plus == 1) Points += 200;
                if (item.Plus == 2) Points += 600;
                if (item.Plus == 3) Points += 1200;
                if (item.Plus == 4) Points += 1800;
                if (item.Plus == 5) Points += 2600;
                if (item.Plus == 6) Points += 3500;
                if (item.Plus == 7) Points += 4800;
                if (item.Plus == 8) Points += 5800;
                if (item.Plus == 9) Points += 6800;
                if (item.Plus == 10) Points += 7800;
                if (item.Plus == 11) Points += 8800;
                if (item.Plus == 12) Points += 10000;
            }
            else
            {
                if (item.Plus == 1) Points += 400;
                if (item.Plus == 2) Points += 1200;
                if (item.Plus == 3) Points += 2400;
                if (item.Plus == 4) Points += 3600;
                if (item.Plus == 5) Points += 5200;
                if (item.Plus == 6) Points += 7000;
                if (item.Plus == 7) Points += 9600;
                if (item.Plus == 8) Points += 11600;
                if (item.Plus == 9) Points += 13600;
                if (item.Plus == 10) Points += 15600;
                if (item.Plus == 11) Points += 17600;
                if (item.Plus == 12) Points += 20000;
            }
            #endregion
            #region Quality
            if (!Network.PacketHandler.IsTwoHand(item.ID))
            {
                if (item.ID % 10 == 9) Points += 500;
                if (item.ID % 10 == 8) Points += 300;
                if (item.ID % 10 == 7) Points += 200;
                if (item.ID % 10 == 6) Points += 100;
                if (item.ID % 10 >
0 && item.ID % 10 < 6) Points += 50;
            }
            else
            {
                if (item.ID % 10 == 9) Points += 1000;
                if (item.ID % 10 == 8) Points += 600;
                if (item.ID % 10 == 7) Points += 400;
                if (item.ID % 10 == 6) Points += 200;
                if (item.ID % 10 >
0 && item.ID % 10 < 6) Points += 100;
            }
            #endregion
            #region Soul
            if (!Network.PacketHandler.IsTwoHand(item.ID))
            {
                if (item.Purification.PurificationLevel == 1) Points += 100;
                if (item.Purification.PurificationLevel == 2) Points += 300;
                if (item.Purification.PurificationLevel == 3) Points += 500;
                if (item.Purification.PurificationLevel == 4) Points += 800;
                if (item.Purification.PurificationLevel == 5) Points += 1200;
                if (item.Purification.PurificationLevel == 6) Points += 1600;
                if (item.Purification.PurificationLevel == 7) Points += 2000;
            }
            else
            {
                if (item.Purification.PurificationLevel == 1) Points += 200;
                if (item.Purification.PurificationLevel == 2) Points += 600;
                if (item.Purification.PurificationLevel == 3) Points += 1000;
                if (item.Purification.PurificationLevel == 4) Points += 1600;
                if (item.Purification.PurificationLevel == 5) Points += 2400;
                if (item.Purification.PurificationLevel == 6) Points += 3200;
                if (item.Purification.PurificationLevel == 7) Points += 4000;
            }
            #endregion
            #region Bless
            if (!Network.PacketHandler.IsTwoHand(item.ID))
            {
                Points += (uint)(item.Bless * 100);
            }
            else
            {
                Points += (uint)(item.Bless * 200);
            }
            #region Refine
            if (!Network.PacketHandler.IsTwoHand(item.ID))
            {
                if (item.ExtraEffect.EffectLevel == 1) Points += 100;
                if (item.ExtraEffect.EffectLevel == 2) Points += 400;
                if (item.ExtraEffect.EffectLevel == 3) Points += 800;
                if (item.ExtraEffect.EffectLevel == 4) Points += 1200;
                if (item.ExtraEffect.EffectLevel == 5) Points += 1600;
                if (item.ExtraEffect.EffectLevel == 6) Points += 2000;
            }
            else
            {
                if (item.ExtraEffect.EffectLevel == 1) Points += 200;
                if (item.ExtraEffect.EffectLevel == 2) Points += 800;
                if (item.ExtraEffect.EffectLevel == 3) Points += 1600;
                if (item.ExtraEffect.EffectLevel == 4) Points += 2400;
                if (item.ExtraEffect.EffectLevel == 5) Points += 3200;
                if (item.ExtraEffect.EffectLevel == 6) Points += 4000;
            }
            #endregion
            #endregion
            #region Level
            if (!Network.PacketHandler.IsTwoHand(item.ID))
            {
                var lvl = (uint)Database.ConquerItemInformation.BaseInformations[item.ID].Level;
                if (lvl <= 120)
                    Points += lvl * 3;
                else if (lvl <= 130)
                    Points += lvl * 5;
                else if (lvl <= 140)
                    Points += lvl * 6;
            }
            else
            {
                var lvl = (uint)Database.ConquerItemInformation.BaseInformations[item.ID].Level;
                if (lvl <= 120)
                    Points += lvl * 6;
                else if (lvl <= 130)
                    Points += lvl * 10;
                else if (lvl <= 140)
                    Points += lvl * 12;
            }
            #endregion
            #region Gem
            if (!Network.PacketHandler.IsTwoHand(item.ID))
            {
                if (item.SocketOne != (Game.Enums.Gem)0)
                {
                    if (item.SocketOne2 % 10 == 1) Points += 200;
                    if (item.SocketOne2 % 10 == 2) Points += 500;
                    if (item.SocketOne2 % 10 == 3) Points += 800;
                }
                if (item.SocketTwo != (Game.Enums.Gem)0)
                {
                    if (item.SocketTwo2 % 10 == 1) Points += 200;
                    if (item.SocketTwo2 % 10 == 2) Points += 500;
                    if (item.SocketTwo2 % 10 == 3) Points += 800;
                }
            }
            else
            {
                if (item.SocketOne != (Game.Enums.Gem)0)
                {
                    if (item.SocketOne2 % 10 == 1) Points += 400;
                    if (item.SocketOne2 % 10 == 2) Points += 1000;
                    if (item.SocketOne2 % 10 == 3) Points += 1600;
                }
                if (item.SocketTwo != (Game.Enums.Gem)0)
                {
                    if (item.SocketTwo2 % 10 == 1) Points += 400;
                    if (item.SocketTwo2 % 10 == 2) Points += 1000;
                    if (item.SocketTwo2 % 10 == 3) Points += 1600;
                }
            }
            #endregion
            #region Stars
            if (item.Stars >
= 1) Points += 180;
            if (item.Stars >= 2) Points += 180;
            if (item.Stars >= 3) Points += 180;
            if (item.Stars >= 4) Points += 180;
            if (item.Stars >= 5) Points += 180;
            if (item.Stars >= 6) Points += 180;
            if (item.Stars >= 7) Points += 180;
            if (item.Stars >= 8) Points += 180;
            if (item.Stars >= 9) Points += 180;
            if (item.Stars >= 10) Points += 2380;
            if (item.Stars >= 11) Points += 400;
            if (item.Stars >= 12) Points += 400;
            if (item.Stars >= 13) Points += 400;
            if (item.Stars >= 14) Points += 400;
            if (item.Stars >= 15) Points += 400;
            if (item.Stars >= 16) Points += 400;
            if (item.Stars >= 17) Points += 400;
            if (item.Stars >= 18) Points += 400;
            if (item.Stars >= 19) Points += 5150;
            if (item.Stars >= 20) Points += 650;
            if (item.Stars >= 21) Points += 650;
            if (item.Stars >= 22) Points += 650;
            if (item.Stars >= 23) Points += 650;
            if (item.Stars >= 24) Points += 650;
            if (item.Stars >= 25) Points += 650;
            if (item.Stars >= 26) Points += 650;
            if (item.Stars >= 27) Points += 650;
            if (item.Stars >= 28) Points += 100;
            if (item.Stars >= 29) Points += 100;
            if (item.Stars >= 30) Points += 100;
            if (item.Stars >= 31) Points += 100;
            if (item.Stars >= 32) Points += 100;
            if (item.Stars >= 33) Points += 100;
            if (item.Stars >= 34) Points += 100;
            if (item.Stars >= 35) Points += 100;
            if (item.Stars >= 36) Points += 100;
            if (item.Stars >= 37) Points += 100;
            if (item.Stars >= 38) Points += 100;
            if (item.Stars >= 39) Points += 100;
            if (item.Stars >= 40) Points += 100;
            if (item.Stars >= 41) Points += 100;
            if (item.Stars >= 42) Points += 100;
            if (item.Stars >= 43) Points += 100;
            if (item.Stars >= 44) Points += 100;
            if (item.Stars >= 45) Points += 100;
            if (item.Stars >= 46) Points += 100;
            if (item.Stars >= 47) Points += 100;
            if (item.Stars >= 48) Points += 100;
            if (item.Stars >= 49) Points += 100;
            if (item.Stars >= 50) Points += 100;
            if (item.Stars >= 51) Points += 100;
            if (item.Stars >= 52) Points += 100;
            if (item.Stars >= 53) Points += 100;
            if (item.Stars >= 54) Points += 100;
            if (Network.PacketHandler.IsTwoHand(item.ID))
            {
                if (item.Stars >= 1) Points += 180;
                if (item.Stars >= 2) Points += 180;
                if (item.Stars >= 3) Points += 180;
                if (item.Stars >= 4) Points += 180;
                if (item.Stars >= 5) Points += 180;
                if (item.Stars >= 6) Points += 180;
                if (item.Stars >= 7) Points += 180;
                if (item.Stars >= 8) Points += 180;
                if (item.Stars >= 9) Points += 180;
                if (item.Stars >= 10) Points += 2380;
                if (item.Stars >= 11) Points += 400;
                if (item.Stars >= 12) Points += 400;
                if (item.Stars >= 13) Points += 400;
                if (item.Stars >= 14) Points += 400;
                if (item.Stars >= 15) Points += 400;
                if (item.Stars >= 16) Points += 400;
                if (item.Stars >= 17) Points += 400;
                if (item.Stars >= 18) Points += 400;
                if (item.Stars >= 19) Points += 5150;
                if (item.Stars >= 20) Points += 650;
                if (item.Stars >= 21) Points += 650;
                if (item.Stars >= 22) Points += 650;
                if (item.Stars >= 23) Points += 650;
                if (item.Stars >= 24) Points += 650;
                if (item.Stars >= 25) Points += 650;
                if (item.Stars >= 26) Points += 650;
                if (item.Stars >= 27) Points += 650;
                if (item.Stars >= 28) Points += 100;
                if (item.Stars >= 29) Points += 100;
                if (item.Stars >= 30) Points += 100;
                if (item.Stars >= 31) Points += 100;
                if (item.Stars >= 32) Points += 100;
                if (item.Stars >= 33) Points += 100;
                if (item.Stars >= 34) Points += 100;
                if (item.Stars >= 35) Points += 100;
                if (item.Stars >= 36) Points += 100;
                if (item.Stars >= 37) Points += 100;
                if (item.Stars >= 38) Points += 100;
                if (item.Stars >= 39) Points += 100;
                if (item.Stars >= 40) Points += 100;
                if (item.Stars >= 41) Points += 100;
                if (item.Stars >= 42) Points += 100;
                if (item.Stars >= 43) Points += 100;
                if (item.Stars >= 44) Points += 100;
                if (item.Stars >= 45) Points += 100;
                if (item.Stars >= 46) Points += 100;
                if (item.Stars >= 47) Points += 100;
                if (item.Stars >= 48) Points += 100;
                if (item.Stars >= 49) Points += 100;
                if (item.Stars >= 50) Points += 100;
                if (item.Stars >= 51) Points += 100;
                if (item.Stars >= 52) Points += 100;
                if (item.Stars >= 53) Points += 100;
                if (item.Stars >= 54) Points += 100;
            }
            #endregion
            #region Socket
            if (!Network.PacketHandler.IsTwoHand(item.ID))
            {
                if (item.SocketOne != (Game.Enums.Gem)0) Points += 1000;
                if (item.SocketTwo != (Game.Enums.Gem)0) Points += 2500;
            }
            else
            {
                if (item.SocketOne != (Game.Enums.Gem)0) Points += 2000;
                if (item.SocketTwo != (Game.Enums.Gem)0) Points += 5000;
            }
            #endregion
            #region Enchant
            if (!Network.PacketHandler.IsTwoHand(item.ID))
            {
                var enc = (uint)(item.Enchant);
                if (enc != 0)
                {
                    if (enc <= 200) Points += enc * 1;
                    if (enc <= 240) Points += (uint)(enc * 1.3);
                    if (enc <= 254) Points += (uint)(enc * 1.6);
                    if (enc <= 255) Points += enc * 2;
                }
            }
            else
            {
                var enc = (uint)(item.Enchant);
                if (enc != 0)
                {
                    if (enc <= 200) Points += enc * 2;
                    if (enc <= 240) Points += (uint)(enc * 2.6);
                    if (enc <= 254) Points += (uint)(enc * 3.2);
                    if (enc <= 255) Points += enc * 4;
                }
            }
            #endregion
            return Points;
        }
    }
    public class MsgItemRefineOpt
    {
        public MsgItemRefineOpt() { }
        public MsgItemRefineOptProto Info;
        public MsgItemRefineOptProto2 Info2;
        [ProtoContract]
        public class MsgItemRefineOptProto
        {
            [ProtoMember(1, IsRequired = true)]
            public uint ActionId;
            [ProtoMember(2, IsRequired = true)]
            public uint ItemUID;
            [ProtoMember(3, IsRequired = true)]
            public string Signature;
            [ProtoMember(4, IsRequired = true)]
            public uint ItemPlusUID;
        }
        [ProtoContract]
        public class MsgItemRefineOptProto2
        {
            [ProtoMember(1, IsRequired = true)]
            public uint ItemUID;
            [ProtoMember(2, IsRequired = true)]
            public uint EntityUID;
            [ProtoMember(3, IsRequired = true)]
            public uint Stars;
            [ProtoMember(4, IsRequired = true)]
            public uint Progress;
            [ProtoMember(5, IsRequired = true)]
            public uint OwnerUID;
            [ProtoMember(6, IsRequired = true)]
            public string OwnerName;
        }
        public double GetPerfectionProgress(uint value)
        {
            return (value * 1.25);
        }
        public uint GetPerfectionProgress(ConquerItem item)
        {
            if (item.Stars == 0) return 30;
            if (item.Stars == 1) return 60;
            if (item.Stars == 2) return 100;
            if (item.Stars == 3) return 200;
            if (item.Stars == 4) return 350;
            if (item.Stars == 5) return 600;
            if (item.Stars == 6) return 1000;
            if (item.Stars == 7) return 1500;
            if (item.Stars == 8) return 2300;
            if (item.Stars == 9) return 3500;
            if (item.Stars == 10) return 5000;
            if (item.Stars == 11) return 6500;
            if (item.Stars == 12) return 8000;
            if (item.Stars == 13) return 9500;
            if (item.Stars == 14) return 11000;
            return 12000;
        }
        public uint GetPlusStonePoints(uint value)
        {
            if (value == 3009000) return 10;
            if (value == 3009001) return 100;
            if (value == 3009002) return 1000;
            if (value == 3009003) return 10000;
            if (value == 730001 || value == 1) return 10;
            if (value == 730002 || value == 2) return 40;
            if (value == 730003 || value == 3) return 120;
            if (value == 730004 || value == 4) return 360;
            if (value == 730005 || value == 5) return 1080;
            if (value == 730006 || value == 6) return 3240;
            if (value == 730007 || value == 7) return 9720;
            if (value == 730008 || value == 8) return 29160;
            if (value == 9) return 87480;
            if (value == 10) return 90180;
            if (value == 11) return 95680;
            if (value == 12) return 104680;
            return 0;
        }
        public uint GetTransferCost(Network.GamePackets.ConquerItem item)
        {
            if (item.Stars == 2) return 30;
            if (item.Stars == 3) return 70;
            if (item.Stars == 4) return 150;
            if (item.Stars == 5) return 300;
            if (item.Stars == 6) return 500;
            if (item.Stars == 7) return 800;
            if (item.Stars == 8) return 1100;
            if (item.Stars >
= 9) return 1500;
            return 10;
        }
        public void Handle(Client.GameState client, byte[] myPacket)
        {
            try
            {
                switch (Info.ActionId)
                {
                    case 0://Temper
                        {
                            #region Minors
                            var packet2 = new byte[myPacket.Length - 4];
                            Array.Copy(myPacket, 4, packet2, 0, packet2.Length);
                            var variable = Kernel.Read7BitEncodedInt(packet2).SelectMany(System.BitConverter.GetBytes).ToArray();
                            var variable2 = new byte[variable.Length - 8];
                            Array.Copy(variable, 8, variable2, 0, variable.Length - 8);
                            var MinorsCount = (variable2.Length / 4);
                            uint[] Minors = new uint[MinorsCount];
                            byte x = 0;
                            for (int i = 0; i < MinorsCount; i++)
                            {
                                Minors[i] = BitConverter.ToUInt32(variable2, x);
                                x += 4;
                            }
                            #endregion
                            if (Minors != null)
                            {
                                ConquerItem Item;
                                if (client.Equipment.TryGetItem(Info.ItemUID, out Item))
                                {
                                    foreach (var minor in Minors)
                                    {
                                        ConquerItem ItemPlus;
                                        if (client.Inventory.TryGetItem(minor, out ItemPlus))
                                        {
                                            Item.PerfectionProgress += GetPlusStonePoints(ItemPlus.ID == 300000 ? ItemPlus.Plus : ItemPlus.ID)/*Database.PerfectionTable.CostList[ItemPlus.ID].Progress*/;
                                            client.Inventory.Remove(minor, Game.Enums.ItemUse.Remove, true);
                                        }
                                    }
                                    while (Item.PerfectionProgress >
= GetPerfectionProgress(Item)/*Database.PerfectionTable.UpgradeList.Where(i => i.Stars == (Item.Stars + 1)).FirstOrDefault().Progress*/)
                                    {
                                        Item.PerfectionProgress -= GetPerfectionProgress(Item)/*Database.PerfectionTable.UpgradeList.Where(i => i.Stars == (Item.Stars + 1)).FirstOrDefault().Progress*/;
                                        Item.Stars++;
                                    }
                                    while (Item.Stars >= 54 && Item.PerfectionProgress > 0)
                                    {
                                        Item.Stars = 54;
                                        Item.PerfectionProgress = 0;
                                    }
                                    Item.Owner = client.Player.Name;
                                    Item.OwnerUID = client.Player.UID;
                                    Item.Mode = Game.Enums.ItemMode.Update;
                                    Item.Send(client);
                                    var proto = Kernel.FinalizeProtoBuf((new MsgItemRefineOptProto2()
                                    {
                                        ItemUID = Item.UID,
                                        EntityUID = client.Player.UID,
                                        OwnerUID = Item.OwnerUID,
                                        OwnerName = Item.Owner,
                                        Progress = Item.PerfectionProgress,
                                        Stars = Item.Stars
                                    }), 3250);
                                    client.LoadItemStats();
                                    client.Send(proto);
                                    Database.ConquerItemTable.UpdatePerfection(Item);
                                    new MsgUserTotalRefineLev().Send(client);

                                }
                            }

                            break;
                        }
                    case 1://Transfer
                        {
                            ConquerItem Item;
                            if (client.Equipment.TryGetItem(Info.ItemUID, out Item))
                            {
                                if (client.Player.ConquerPoints >= 1000)
                                {
                                    client.Player.ConquerPoints -= 1000;
                                    Item.Owner = client.Player.Name;
                                    Item.OwnerUID = client.Player.UID;
                                    Item.Mode = Game.Enums.ItemMode.Update;
                                    Item.Send(client);
                                    var proto = Kernel.FinalizeProtoBuf((new MsgItemRefineOptProto2()
                                    {
                                        ItemUID = Item.UID,
                                        EntityUID = client.Player.UID,
                                        OwnerUID = Item.OwnerUID,
                                        OwnerName = Item.Owner,
                                        Progress = Item.PerfectionProgress,
                                        Stars = Item.Stars
                                    }), 3250);
                                    client.Send(proto);
                                    Database.ConquerItemTable.UpdatePerfection(Item);
                                }
                            }
                            break;
                        }
                    case 2://Signature
                        {
                            ConquerItem Item;
                            if (client.Equipment.TryGetItem(Info.ItemUID, out Item))
                            {
                                if (Item.Signature == String.Empty || Item.Signature == null)
                                {
                                    Item.Signature = Info.Signature;
                                    Item.Mode = Game.Enums.ItemMode.Update;
                                    Item.Send(client);
                                    var proto = Kernel.FinalizeProtoBuf((new MsgItemRefineOptProto2()
                                    {
                                        ItemUID = Item.UID,
                                        EntityUID = client.Player.UID,
                                        OwnerUID = Item.OwnerUID,
                                        OwnerName = Item.Owner,
                                        Progress = Item.PerfectionProgress,
                                        Stars = Item.Stars
                                    }), 3250);
                                    Database.ConquerItemTable.UpdatePerfection(Item);
                                }
                                else
                                {
                                    if (client.Player.ConquerPoints >= 270)
                                    {
                                        client.Player.ConquerPoints -= 270;
                                        Item.Signature = Info.Signature;
                                        Item.Mode = Game.Enums.ItemMode.Update;
                                        Item.Send(client);
                                        var proto = Kernel.FinalizeProtoBuf((new MsgItemRefineOptProto2()
                                        {
                                            ItemUID = Item.UID,
                                            EntityUID = client.Player.UID,
                                            OwnerUID = Item.OwnerUID,
                                            OwnerName = Item.Owner,
                                            Progress = Item.PerfectionProgress,
                                            Stars = Item.Stars
                                        }), 3250);
                                        Database.ConquerItemTable.UpdatePerfection(Item);
                                    }
                                    else if (client.Player.ConquerPoints >= 270)
                                    {
                                        client.Player.ConquerPoints -= 270;
                                        Item.Signature = Info.Signature;
                                        Item.Mode = Game.Enums.ItemMode.Update;
                                        Item.Send(client);
                                        var proto = Kernel.FinalizeProtoBuf((new MsgItemRefineOptProto2()
                                        {
                                            ItemUID = Item.UID,
                                            EntityUID = client.Player.UID,
                                            OwnerUID = Item.OwnerUID,
                                            OwnerName = Item.Owner,
                                            Progress = Item.PerfectionProgress,
                                            Stars = Item.Stars
                                        }), 3250);
                                        Database.ConquerItemTable.UpdatePerfection(Item);
                                    }
                                }

                            }
                            break;
                        }
                    case 3://CPBoost
                        {
                            client.MessageBox("Disabled by GM");
                            //ConquerItem Item;
                            //if (client.Equipment.TryGetItem(Info.ItemUID, out Item) && Item != null)
                            //{
                            //    uint value;
                            //    value = Math.Min(16200000, client.Player.BoundCps);
                            //    if (client.Player.BoundCps >= value)
                            //    {
                            //        client.Player.BoundCps -= value;
                            //        Item.Owner = client.Player.Name;
                            //        Item.OwnerUID = client.Player.UID;
                            //        //Item.PerfectionProgress += (uint)GetPerfectionProgress(value);
                            //        while (Item.PerfectionProgress >= GetPerfectionProgress(Item))
                            //        {
                            //            Item.PerfectionProgress -= GetPerfectionProgress(Item);
                            //          //  Item.Stars++;
                            //        }
                            //        while (Item.Stars >= 54 && Item.PerfectionProgress > 0)
                            //        {
                            //            Item.Stars = 54;
                            //            Item.PerfectionProgress = 0;
                            //        }
                            //        Item.Mode = Game.Enums.ItemMode.Update;
                            //        Item.Send(client);
                            //        var proto = Kernel.FinalizeProtoBuf((new MsgItemRefineOptProto2()
                            //        {
                            //            ItemUID = Item.UID,
                            //            EntityUID = client.Player.UID,
                            //            OwnerUID = Item.OwnerUID,
                            //            OwnerName = Item.Owner,
                            //            Progress = Item.PerfectionProgress,
                            //            Stars = Item.Stars
                            //        }), 3250);
                            //        client.Send(proto);
                            //        Database.ConquerItemTable.UpdatePerfection(Item);
                            //    }
                            //}
                            break;
                        }
                    case 4://Exchange
                        {
                            ConquerItem Item;
                            ConquerItem Item2;
                            byte ahmedlevel;
                            uint ahmedprog;
                            byte ahmed2level;
                            uint ahmed2prog;
                            if (client.Equipment.TryGetItem(Info.ItemUID, out Item2) || client.Inventory.TryGetItem(Info.ItemUID, out Item2))
                            {
                                if (client.Inventory.TryGetItem(Info.ItemPlusUID, out Item) || client.Equipment.TryGetItem(Info.ItemPlusUID, out Item))
                                {
                                    if (client.Account.State == Database.AccountTable.AccountState.ProjectManager)
                                    {

                                        client.Player.ConquerPoints -= 10;
                                        ahmedprog = Item.PerfectionProgress;
                                        Item.PerfectionProgress = 0;
                                        ahmedlevel = Item.Stars;
                                        Item.Stars = 0;
                                        Item.Mode = Game.Enums.ItemMode.Update;
                                        Item.Send(client);
                                        ahmed2prog = Item2.PerfectionProgress;
                                        Item2.PerfectionProgress = 0;
                                        ahmed2level = Item2.Stars;
                                        Item2.Stars = 0;
                                        Item2.Signature = "";
                                        Item2.Mode = Game.Enums.ItemMode.Update;
                                        Item2.Send(client);
                                        Item.Stars = ahmed2level;
                                        Item.PerfectionProgress = ahmed2prog;
                                        Item.Mode = Game.Enums.ItemMode.Update;
                                        Item.Send(client);
                                        Item2.Stars = ahmedlevel;
                                        Item2.PerfectionProgress = ahmedprog;
                                        Item2.Mode = Game.Enums.ItemMode.Update;
                                        Item2.Send(client);
                                        var proto = Kernel.FinalizeProtoBuf((new MsgItemRefineOptProto2()
                                        {
                                            ItemUID = Item.UID,
                                            EntityUID = client.Player.UID,
                                            OwnerUID = Item.OwnerUID,
                                            OwnerName = Item.Owner,
                                            Progress = Item.PerfectionProgress,
                                            Stars = Item.Stars
                                        }), 3250);
                                        Database.ConquerItemTable.UpdatePerfection(Item);
                                    }
                                }

                            }
                            else {
                                client.MessageBox("Klm el GM yn2lk el perfection");
                            }
                            break;
                        }
                    case 5://Quick
                        {
                            ConquerItem Item;
                            if (client.Equipment.TryGetItem(Info.ItemUID, out Item))
                            {
                                if (Item.PerfectionProgress == 0 || Item.Stars >= 54) break;
                                double percent = (double)Item.PerfectionProgress / (double)GetPerfectionProgress(Item) * 0;
                                if (Kernel.Rate(percent))
                                {
                                    Item.Stars++;
                                }
                                Item.PerfectionProgress = 0;
                                Item.Owner = client.Player.Name;
                                Item.OwnerUID = client.Player.UID;
                                Item.Mode = Game.Enums.ItemMode.Update;
                                Item.Send(client);
                                var proto = Kernel.FinalizeProtoBuf((new MsgItemRefineOptProto2()
                                {
                                    ItemUID = Item.UID,
                                    EntityUID = client.Player.UID,
                                    OwnerUID = Item.OwnerUID,
                                    OwnerName = Item.Owner,
                                    Progress = Item.PerfectionProgress,
                                    Stars = Item.Stars
                                }), 3250);
                                Database.ConquerItemTable.UpdatePerfection(Item);
                                client.LoadItemStats();
                            }
                            break;
                        }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }
        }
        public byte GetStars(byte Stars)
        {
            if (Stars >= 0 && Stars <= 8) return 9;
            if (Stars >
= 9 && Stars <= 17) return 18;
            if (Stars >
= 18 && Stars <= 26) return 27;
            if (Stars >
= 27 && Stars <= 35) return 36;
            if (Stars >
= 36 && Stars <= 44) return 45;
            if (Stars >
= 45 && Stars <= 53) return 54;
            return 0;
        }
        public byte[] GetBytes(string packetString)
        {
            if (packetString != "" && packetString != null && packetString != string.Empty && packetString != " ")
            {
                byte[] bytes = new byte[(packetString.Length / 3) + 1];
                int t = 0;
                for (int i = 0; i < packetString.Length; i += 3)
                {
                    string cha = packetString.Substring(i, 2);
                    bytes[t] = byte.Parse(cha, System.Globalization.NumberStyles.HexNumber);
                    t++;
                }
                return bytes;
            }
            return null;
        }
        public bool Read(byte[] packet)
        {
            try
            {
                var mypkt = new byte[packet.Length - 4];
                Array.Copy(packet, 4, mypkt, 0, mypkt.Length);
                using (var memoryStream = new MemoryStream(packet))
                {
                    Info = Serializer.DeserializeWithLengthPrefix<MsgItemRefineOptProto>
(memoryStream, PrefixStyle.Fixed32);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
                return false;
            }
            return true;
        }
    }
    public class MsgItemRefineRecord
    {
        public MsgItemRefineRecord() { }
        public MsgItemRefineRecordProto Info;
        [ProtoContract]
        public class MsgItemRefineRecordProto
        {
            [ProtoMember(1, IsRequired = true)]
            public uint ActionId;
            [ProtoMember(2, IsRequired = true)]
            public uint MaxStars;
        }
        public void Handle(Client.GameState client)
        {
            switch (Info.ActionId)
            {
                case 0:
                    {
                        Send(client);
                        break;
                    }
            }
        }
        public void Send(Client.GameState client)
        {
            client.Send(Kernel.FinalizeProtoBuf(new MsgItemRefineRecordProto()
            {
                ActionId = 0,
                MaxStars = 54
            }, 3255));
        }
        public bool Read(byte[] packet)
        {
            var mypkt = new byte[packet.Length - 4];
            Array.Copy(packet, 4, mypkt, 0, mypkt.Length);
            using (var memoryStream = new MemoryStream(packet))
            {
                Info = Serializer.DeserializeWithLengthPrefix<MsgItemRefineRecordProto>(memoryStream, PrefixStyle.Fixed32);
            }
            return true;
        }
    }
    public class MsgRankMemberShow
    {
        public MsgRankMemberShow() { }
        public MsgRankMemberShowProto Info;
        [ProtoContract]
        public class MsgRankMemberShowProto
        {
            [ProtoMember(1, IsRequired = true)]
            public uint ActionId;
            [ProtoMember(2, IsRequired = true)]
            public MsgRankMemberShowProtoSer proto;
        }
        [ProtoContract]
        public class MsgRankMemberShowProtoSer
        {
            [ProtoMember(1, IsRequired = true)]
            public uint dwParam;
            [ProtoMember(2, IsRequired = true)]
            public uint Count;
            [ProtoMember(3, IsRequired = true)]
            public uint UID;
            [ProtoMember(4, IsRequired = true)]
            public string Name = "";
            [ProtoMember(5, IsRequired = true)]
            public string Guild = "";
            [ProtoMember(6, IsRequired = true)]
            public uint Mesh;
            [ProtoMember(7, IsRequired = true)]
            public uint HairStyle;
            [ProtoMember(8, IsRequired = true)]
            public uint Hat;
            [ProtoMember(9, IsRequired = true)]
            public uint Garment;
            [ProtoMember(10, IsRequired = true)]
            public uint LeftWep;
            [ProtoMember(11, IsRequired = true)]
            public uint LeftWepAcc;
            [ProtoMember(12, IsRequired = true)]
            public uint RightWep;
            [ProtoMember(13, IsRequired = true)]
            public uint RightWepAcc;
            [ProtoMember(14, IsRequired = true)]
            public uint MountArmor;
            [ProtoMember(15, IsRequired = true)]
            public uint Flag;
            [ProtoMember(16, IsRequired = true)]
            public uint Wing;
            [ProtoMember(17, IsRequired = true)]
            public uint WingLevel;
            [ProtoMember(18, IsRequired = true)]
            public uint Title;
            [ProtoMember(19, IsRequired = true)]
            public uint Flag2;
            [ProtoMember(20, IsRequired = true)]
            public uint Flag3;
            [ProtoMember(21, IsRequired = true)]
            public uint Flag4;
        }
        public void UpdateBestEntity()
        {
            DateTime StartTime = DateTime.Now;
            Items = new Dictionary<byte, uint>();
            BestEntity = MsgUserAbilityScore.RankingList.OrderByDescending(i => i.Value.TotalPerfectionScore).ThenByDescending(i => i.Value.Level).ThenBy(i => i.Value.UID).FirstOrDefault().Value;
            if (BestEntity == null) return;


            byte[] Positions = new byte[10] { 1, 3, 4, 5, 9, 12, 15, 16, 17, 19 };
            using (var cmd = new MySqlCommand(MySqlCommandType.SELECT).Select("items").Where("EntityID", BestEntity.UID))
            using (var reader = new MySqlReader(cmd))
            {
                while (reader.Read())
                {
                    foreach (var pos in Positions)
                    {
                        if (reader.ReadByte("Position") == pos)
                        {
                            if (Items.ContainsKey(pos)) Items.Remove(pos);
                            Items.Add(pos, reader.ReadUInt32("ID"));
                            if (pos == 19) Items.Add(255, reader.ReadByte("Plus"));
                            break;
                        }
                    }
                }
            }
            foreach (var pos in Positions)
            {
                if (!Items.ContainsKey(pos)) Items.Add(pos, 0);
            }
            if (!Items.ContainsKey(255)) Items.Add(255, 0);
        }
        public static Dictionary<byte, uint> Items = new Dictionary<byte, uint>();
        public static Game.Entity BestEntity;
        public void Handle(Client.GameState client)
        {
            if (BestEntity == null) return;
            switch (Info.ActionId)
            {
                case 0:
                    {
                        var proto2 = new MsgRankMemberShowProto();
                        proto2.ActionId = 0;
                        proto2.proto = new MsgRankMemberShowProtoSer();
                        proto2.proto.dwParam = 1;
                        proto2.proto.Count = 1;
                        proto2.proto.UID = BestEntity.UID;
                        #region If He Is Online
                        if (Kernel.GamePool.ContainsKey(BestEntity.UID))
                        {
                            var Entity = Kernel.GamePool[BestEntity.UID].Player;
                            proto2.proto.HairStyle = Entity.HairStyle;
                            proto2.proto.Mesh = Entity.Mesh;
                            proto2.proto.Name = Entity.Name;
                            if (BestEntity.GuildID != 0)
                                proto2.proto.Guild = Kernel.Guilds[BestEntity.GuildID].Name;
                            if (Entity.Owner.Equipment != null)
                            {
                                var Equipment = Entity.Owner.Equipment;
                                proto2.proto.Hat = Equipment.TryGetItem((byte)ConquerItem.Head) != null ? Equipment.TryGetItem((byte)ConquerItem.Head).ID : 0;
                                proto2.proto.LeftWep = Equipment.TryGetItem((byte)ConquerItem.LeftWeapon) != null ? Equipment.TryGetItem((byte)ConquerItem.LeftWeapon).ID : 0;
                                proto2.proto.LeftWepAcc = Equipment.TryGetItem((byte)ConquerItem.LeftWeaponAccessory) != null ? Equipment.TryGetItem((byte)ConquerItem.LeftWeaponAccessory).ID : 0;
                                proto2.proto.MountArmor = Equipment.TryGetItem((byte)ConquerItem.SteedArmor) != null ? Equipment.TryGetItem((byte)ConquerItem.SteedArmor).ID : (Equipment.TryGetItem((byte)ConquerItem.Steed) != null ? Equipment.TryGetItem((byte)ConquerItem.Steed).ID : 0);
                                proto2.proto.Garment = Equipment.TryGetItem((byte)ConquerItem.Garment) != null ? Equipment.TryGetItem((byte)ConquerItem.Garment).ID : ((Equipment.TryGetItem((byte)ConquerItem.Armor) != null ? Equipment.TryGetItem((byte)ConquerItem.Armor).ID : 0));
                                proto2.proto.RightWep = Equipment.TryGetItem((byte)ConquerItem.RightWeapon) != null ? Equipment.TryGetItem((byte)ConquerItem.RightWeapon).ID : 0;
                                proto2.proto.RightWepAcc = Equipment.TryGetItem((byte)ConquerItem.RightWeaponAccessory) != null ? Equipment.TryGetItem((byte)ConquerItem.RightWeaponAccessory).ID : 0;
                                proto2.proto.Wing = Entity.EquippedWing == 0 ? (Equipment.TryGetItem((byte)ConquerItem.Wing) != null ? Equipment.TryGetItem((byte)ConquerItem.Wing).ID : 0) : (uint)Entity.EquippedWing;
                                proto2.proto.WingLevel = (byte)(Equipment.TryGetItem((byte)ConquerItem.Wing) != null ? Equipment.TryGetItem((byte)ConquerItem.Wing).Plus : 0);
                            }
                            proto2.proto.Title = (uint)Entity.EquippedTitle;
                            proto2.proto.Flag = (uint)Entity.StatusFlag;
                            proto2.proto.Flag2 = (uint)Entity.StatusFlag2;
                            proto2.proto.Flag3 = (uint)Entity.StatusFlag3;
                            //proto2.proto.Flag4 = (uint)Entity.StatusFlag4;
                            client.Send(Kernel.FinalizeProtoBuf(proto2, 3257));
                            break;
                        }
                        #endregion
                        proto2.proto.HairStyle = BestEntity.HairStyle;
                        proto2.proto.Mesh = BestEntity.Mesh;
                        proto2.proto.Name = BestEntity.Name;
                        if (BestEntity.GuildID != 0 && Kernel.Guilds.ContainsKey(BestEntity.GuildID))
                            proto2.proto.Guild = Kernel.Guilds[BestEntity.GuildID].Name;
                        proto2.proto.Hat = Items[(byte)ConquerItem.Head];
                        proto2.proto.LeftWep = Items[(byte)ConquerItem.LeftWeapon];
                        proto2.proto.LeftWepAcc = Items[(byte)ConquerItem.LeftWeaponAccessory];
                        proto2.proto.MountArmor = Items[(byte)ConquerItem.SteedArmor] == 0 ? Items[(byte)ConquerItem.Steed] : Items[(byte)ConquerItem.SteedArmor];
                        proto2.proto.Garment = Items[(byte)ConquerItem.Garment];
                        proto2.proto.RightWep = Items[(byte)ConquerItem.RightWeapon];
                        proto2.proto.RightWepAcc = Items[(byte)ConquerItem.RightWeaponAccessory];
                        proto2.proto.Wing = BestEntity.EquippedWing == 0 ? Items[(byte)ConquerItem.Wing] : (uint)BestEntity.EquippedWing;
                        proto2.proto.WingLevel = Items[255];
                        proto2.proto.Title = (uint)BestEntity.EquippedTitle;
                        client.Send(Kernel.FinalizeProtoBuf(proto2, 3257));
                        break;
                    }
                case 1:
                    {
                        if (Kernel.GamePool.ContainsKey(Info.proto == null ? 0 : Info.proto.dwParam))
                        {
                            PacketHandler.ObserveEquipment(new Data(true) { ID = 117, UID = client.Player.UID, dwParam = Info.proto == null ? 0 : Info.proto.dwParam }, client);
                        }
                        else
                        {
                            client.Send(Kernel.FinalizeProtoBuf(Info, 3257));
                        }
                        break;
                    }
            }

        }
        public bool Read(byte[] packet)
        {
            var mypkt = new byte[packet.Length - 4];
            Array.Copy(packet, 4, mypkt, 0, mypkt.Length);
            try
            {
                using (var memoryStream = new MemoryStream(packet))
                {
                    Info = Serializer.DeserializeWithLengthPrefix<MsgRankMemberShowProto>(memoryStream, PrefixStyle.Fixed32);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                return false;
            }
            return true;
        }
    }
    public class MsgEquipRefineRank
    {
        public MsgEquipRefineRank() { }
        public MsgEquipRefineRankProto Info;
        [Flags]
        public enum ActionID
        {
            MainRank = 0,
            RankItems = 1,
            UserItemRanking = 2,
            MyRanks = 3,
            View = 4,

        }
        [ProtoContract]
        public class MsgEquipRefineRankProto
        {
            [ProtoMember(1, IsRequired = true)]
            public ActionID Action;
            [ProtoMember(2)]
            public uint RegisteredCount;
            [ProtoMember(3)]
            public uint Page;
            [ProtoMember(4, IsRequired = true)]
            public uint Index;
            [ProtoMember(5, IsRequired = true)]
            public EquipProto[] items;
        }
        [ProtoContract]
        public class EquipProto
        {
            [ProtoMember(1, IsRequired = true)]
            public uint Rank;
            [ProtoMember(2, IsRequired = true)]
            public uint UnKnow2;
            [ProtoMember(3, IsRequired = true)]
            public uint Position;
            [ProtoMember(4, IsRequired = true)]
            public uint RankScore;
            [ProtoMember(5, IsRequired = true)]
            public uint UID;
            [ProtoMember(6, IsRequired = true)]
            public uint ItemID;
            [ProtoMember(7, IsRequired = true)]
            public uint PurificationID;
            [ProtoMember(8, IsRequired = true)]
            public uint Plus;
            [ProtoMember(9, IsRequired = true)]
            public uint Stars;
            [ProtoMember(10, IsRequired = true)]
            public string Name = "";
            [ProtoMember(11, IsRequired = true)]
            public uint PerfectionLevel;
        }
        public byte GetRealyPosition(byte FakePosition)
        {
            if (FakePosition == 5) return 19;
            if (FakePosition == 7) return 18;
            if (FakePosition == 9) return 12;
            return FakePosition;
        }
        public static Dictionary<byte, ConquerItem> MainRank;
        public void UpdateRanking()
        {
            AllItemsRanking = new List<ConquerItem>();
            MainRank = new Dictionary<byte, ConquerItem>();
            for (byte i = 0; i < 11; i++)
            {
                byte z = GetRealyPosition((byte)(i + 1));
                List<ConquerItem>
items = new List<ConquerItem>();
                MySqlCommand command = new MySqlCommand(MySqlCommandType.SELECT);
                command.Select("items").Where("Position", z).And("Stars", 0, true);
                MySqlReader reader = new MySqlReader(command);
                while (reader.Read())
                {
                    ConquerItem item = new ConquerItem(true);
                    item.ID = reader.ReadUInt32("ID");
                    item.UID = reader.ReadUInt32("UID");
                    item.MaximDurability = reader.ReadUInt16("MaximDurability");
                    item.Durability = reader.ReadUInt16("Durability");
                    item.Position = reader.ReadUInt16("Position");
                    item.Signature = reader.ReadString("Signature");
                    item.SocketProgress = reader.ReadUInt32("SocketProgress");
                    item.PlusProgress = reader.ReadUInt32("PlusProgress");
                    item.Stars = reader.ReadByte("Stars");
                    item.PerfectionProgress = reader.ReadUInt32("PerfectionProgress");
                    item.Owner = reader.ReadString("Owner");
                    item.OwnerUID = reader.ReadUInt32("OwnerUID");
                    item.SocketOne = (Game.Enums.Gem)reader.ReadByte("SocketOne");
                    item.SocketTwo = (Game.Enums.Gem)reader.ReadByte("SocketTwo");
                    item.Effect = (Game.Enums.ItemEffect)reader.ReadByte("Effect");
                    item.Mode = Game.Enums.ItemMode.Default;
                    item.Plus = reader.ReadByte("Plus");
                    item.Bless = reader.ReadByte("Bless");
                    item.Bound = reader.ReadBoolean("Bound");
                    // item.TimeStamp = DateTime.FromBinary(reader.ReadInt64("TimeStamp"));
                    // item.Minutes = reader.ReadUInt64("MinutesLeft");
                    item.Enchant = reader.ReadByte("Enchant");
                    item.Lock = reader.ReadByte("Locked");
                    item.UnlockEnd = DateTime.FromBinary(reader.ReadInt64("UnlockEnd"));
                    item.Suspicious = reader.ReadBoolean("Suspicious");
                    item.SuspiciousStart = DateTime.FromBinary(reader.ReadInt64("SuspiciousStart"));
                    item.Color = (Game.Enums.Color)reader.ReadByte("Color");
                    item.Inscribed = reader.ReadByte("Inscribed") == 1;
                    item.StackSize = reader.ReadUInt16("StackSize");
                    item.Warehouse = reader.ReadByte("Warehouse");
                    item.RefineItem = reader.ReadUInt32("RefineryItem");
                    item.InWardrobe = reader.ReadBoolean("InWardrobe");
                    Int64 rTime = reader.ReadInt64("RefineryTime");
                    ItemAddingTable.GetAddingsForItem(item);
                    items.Add(item);
                    if (!AllItemsRanking.Contains(item))
                        AllItemsRanking.Add(item);

                }
                MainRank[z] = items.OrderByDescending(x => MsgUserAbilityScore.CalculatePerfectionItemPoints(x)).FirstOrDefault();
            }
        }
        public static List<ConquerItem> AllItemsRanking;
        public void Handle(Client.GameState client)
        {
            switch (Info.Action)
            {
                case ActionID.UserItemRanking:
                    {
                        var item = AllItemsRanking.Where(p => p.Position == GetRealyPosition((byte)Info.Index)).OrderByDescending(i => MsgUserAbilityScore.CalculatePerfectionItemPoints(i)).ToArray();
                        var min = Math.Min(item.Length, 50);
                        for (int i = 0; i < min; i++)
                        {
                            if (client.Equipment.IsWearingItemUID(item[i].UID))
                            {
                                var packet = new MsgEquipRefineRankProto();
                                packet.Page = Info.Page;
                                packet.RegisteredCount = Info.RegisteredCount;
                                packet.Action = Info.Action;
                                packet.Index = Info.Index;
                                packet.items = new EquipProto[1];
                                packet.items[0] = new EquipProto();
                                var itemm = item[i];
                                packet.items[0].Rank = (uint)(i + 1);
                                packet.items[0].RankScore = MsgUserAbilityScore.CalculatePerfectionItemPoints(itemm);
                                packet.items[0].ItemID = itemm.ID;
                                packet.items[0].Name = itemm.Owner.Replace("/0", "");
                                packet.items[0].Stars = itemm.Stars;
                                packet.items[0].Position = GetRealyPosition((byte)Info.Index);
                                packet.items[0].Plus = itemm.Plus;
                                packet.items[0].UID = itemm.UID;
                                packet.items[0].UnKnow2 = (uint)Kernel.Random.Next(800, 3000);
                                client.Send(Kernel.FinalizeProtoBuf(packet, 3256));
                                break;
                            }
                        }
                        break;
                    }
                case ActionID.MyRanks:
                    {
                        var packet = new MsgEquipRefineRankProto();
                        packet.Action = ActionID.MyRanks;
                        packet.items = new EquipProto[11];
                        for (byte i = 0; i < packet.items.Length; i++)
                        {
                            byte z = GetRealyPosition((byte)(i + 1));
                            var itemmm = AllItemsRanking.Where(p =>
p.Position == z).OrderByDescending(m => MsgUserAbilityScore.CalculatePerfectionItemPoints(m)).ToArray();
                            for (int h = 0; h < itemmm.Length; h++)
                            {
                                if (client.Equipment.IsWearingItemUID(itemmm[h].UID))
                                {
                                    packet.items[i] = new EquipProto();
                                    packet.items[i].ItemID = itemmm[h].ID;
                                    packet.items[i].Name = itemmm[h].Owner.Replace("/0", "");
                                    packet.items[i].Stars = itemmm[h].Stars;
                                    packet.items[i].Plus = itemmm[h].Plus;
                                    packet.items[i].Position = (uint)(i + 1);
                                    if (itemmm[h].Purification.Available)
                                        packet.items[i].PurificationID = itemmm[h].Purification.PurificationItemID;
                                    packet.items[i].Rank = (uint)(h + 1);
                                    packet.items[i].RankScore = MsgUserAbilityScore.CalculatePerfectionItemPoints(itemmm[h]);
                                    packet.items[i].UID = itemmm[h].UID;
                                    packet.items[i].UnKnow2 = (uint)Kernel.Random.Next(800, 3000);
                                    break;
                                }
                            }
                        }



                        var proto = Kernel.FinalizeProtoBuf(packet, 3256);
                        client.Send(proto);
                        break;
                    }
                case ActionID.View://ViewItem
                    {
                        if (Database.ConquerItemTable.LoadItem(Info.Index) != null)
                        {
                            var item = Database.ConquerItemTable.LoadItem(Info.Index);
                            item.Mode = Game.Enums.ItemMode.Perfection;
                            item.Send(client);
                        }
                        else
                        {
                            client.Send(Kernel.FinalizeProtoBuf(Info, 3256));
                        }
                        break;
                    }
                case ActionID.RankItems://AllRanking
                    {
                        var cnt = AllItemsRanking.Where(p =>
p.Position == GetRealyPosition((byte)Info.Index)).Count();
                        var packet = new MsgEquipRefineRankProto();
                        packet.Action = ActionID.RankItems;
                        packet.RegisteredCount = (uint)Math.Min(cnt, 50);
                        packet.Page = Info.Page;
                        packet.Index = Info.Index;
                        uint sss = (ushort)Math.Min(cnt - (packet.Page * 10), 10);

                        int rank = (int)packet.Page * 10;
                        packet.items = new EquipProto[sss];
                        for (int i = rank; i < rank + sss; i++)
                        {
                            var iteeeem = AllItemsRanking.Where(p =>
p.Position == GetRealyPosition((byte)Info.Index)).OrderByDescending(x => MsgUserAbilityScore.CalculatePerfectionItemPoints(x)).ToArray()[i];
                            if (iteeeem == null) continue;
                            packet.items[i] = new EquipProto();
                            packet.items[i].ItemID = iteeeem.ID;
                            packet.items[i].Name = iteeeem.Owner.Replace("/0", "");
                            packet.items[i].PerfectionLevel = iteeeem.Stars;
                            packet.items[i].Plus = iteeeem.Plus;
                            packet.items[i].Position = GetRealyPosition((byte)Info.Index);
                            if (iteeeem.Purification.Available)
                                packet.items[i].PurificationID = iteeeem.Purification.PurificationItemID;
                            packet.items[i].Rank = (uint)(i + 1);
                            packet.items[i].RankScore = MsgUserAbilityScore.CalculatePerfectionItemPoints(iteeeem);
                            packet.items[i].UID = iteeeem.UID;
                            packet.items[i].UnKnow2 = (uint)Kernel.Random.Next(800, 3000);
                        }
                        var proto = Kernel.FinalizeProtoBuf(packet, 3256);
                        client.Send(proto);
                        break;
                    }
                case ActionID.MainRank:
                    {


                        var packet = new MsgEquipRefineRankProto();
                        packet.Action = ActionID.MainRank;
                        packet.items = new EquipProto[11];
                        for (byte i = 0; i < packet.items.Length; i++)
                        {
                            byte z = GetRealyPosition((byte)(i + 1));
                            ConquerItem itemmm = MainRank[z];
                            if (itemmm == null) continue;
                            packet.items[i] = new EquipProto();
                            packet.items[i].ItemID = itemmm.ID;
                            packet.items[i].Name = itemmm.Owner.Replace("/0", "");
                            packet.items[i].Stars = itemmm.Stars;
                            packet.items[i].Plus = itemmm.Plus;
                            packet.items[i].Position = (uint)(i + 1);
                            if (itemmm.Purification.Available)
                                packet.items[i].PurificationID = itemmm.Purification.PurificationItemID;
                            packet.items[i].Rank = 1;
                            packet.items[i].RankScore = MsgUserAbilityScore.CalculatePerfectionItemPoints(itemmm);
                            packet.items[i].UID = itemmm.UID;
                            packet.items[i].UnKnow2 = (uint)Kernel.Random.Next(800, 3000);
                        }



                        var proto = Kernel.FinalizeProtoBuf(packet, 3256);
                        client.Send(proto);
                        break;
                    }
            }
        }
        public bool Read(byte[] packet)
        {
            using (var memoryStream = new MemoryStream(packet))
            {
                Info = Serializer.DeserializeWithLengthPrefix<MsgEquipRefineRankProto>
(memoryStream, PrefixStyle.Fixed32);
            }
            return true;
        }
    }
    public class MsgUserTotalRefineLev
    {
        public MsgUserTotalRefineLev() { }
        public MsgUserTotalRefineLevProto Info;
        [ProtoContract]
        public class MsgUserTotalRefineLevProto
        {
            [ProtoMember(1, IsRequired = true)]
            public uint ActionId;
            [ProtoMember(2, IsRequired = true)]
            public uint EntityUID;
            [ProtoMember(3, IsRequired = true)]
            public uint TotalPrefectionLevel;
        }
        public void SendPerfectionEffects(Client.GameState client)
        {
            if (client.Equipment.TotalStars >= 10) { client.Player.MaxAttack += 100; client.Player.MinAttack += 100; client.Player.MagicAttack += 100; }
            if (client.Equipment.TotalStars >= 70) { client.Player.Defence += 100; client.Player.MagicDefence += 100; }
            if (client.Equipment.TotalStars >= 75) { client.Player.MaxAttack += 200; client.Player.MinAttack += 200; client.Player.MagicAttack += 300; }
            if (client.Equipment.TotalStars >= 100) { client.Player.Defence += 200; client.Player.MagicDefence += 50; }
            if (client.Equipment.TotalStars >= 140) { client.Player.MaxAttack += 200; client.Player.MinAttack += 200; client.Player.MagicAttack += 400; }
            if (client.Equipment.TotalStars >= 150) { client.Player.MaxAttack += 300; client.Player.MinAttack += 300; client.Player.MagicAttack += 500; }
            if (client.Equipment.TotalStars >= 160) { client.Player.Defence += 300; client.Player.MagicDefence += 125; }
            if (client.Equipment.TotalStars >= 180) { client.Player.Defence += 400; client.Player.MagicDefence += 125; }
            if (client.Equipment.TotalStars >= 235) { client.Player.MaxAttack += 400; client.Player.MinAttack += 400; client.Player.MagicAttack += 500; }
            if (client.Equipment.TotalStars >= 270) { client.Player.Defence += 400; client.Player.MagicDefence += 125; }
            if (client.Equipment.TotalStars >= 273) { client.Player.MaxAttack += 400; client.Player.MinAttack += 400; client.Player.MagicAttack += 500; }
            if (client.Equipment.TotalStars >= 306) { client.Player.MaxAttack += 400; client.Player.MinAttack += 400; client.Player.MagicAttack += 500; }
            if (client.Equipment.TotalStars >= 310) { client.Player.Defence += 400; client.Player.MagicDefence += 125; }
            if (client.Equipment.TotalStars >= 316) { client.Player.Defence += 500; client.Player.MagicDefence += 125; }
            if (client.Equipment.TotalStars >= 318) { client.Player.MaxAttack += 500; client.Player.MinAttack += 500; client.Player.MagicAttack += 500; }
            if (client.Equipment.TotalStars >= 323) { client.Player.Defence += 500; client.Player.MagicDefence += 125; }
            if (client.Equipment.TotalStars >= 324) { client.Player.MaxAttack += 500; client.Player.MinAttack += 500; client.Player.MagicAttack += 500; }
        }
        public void Send(Client.GameState client)
        {
            client.Send(Kernel.FinalizeProtoBuf(new MsgUserTotalRefineLevProto()
            {
                ActionId = 0,
                EntityUID = client.Player.UID,
                TotalPrefectionLevel = client.Equipment.TotalStars
            }, 3252));
        }
    }
    public class MsgRefineEffect
    {
        public MsgRefineEffect() { }
        public MsgRefineEffectProto Info;
        [ProtoContract]
        public class MsgRefineEffectProto
        {
            [ProtoMember(1, IsRequired = true)]
            public uint AttackerUID;
            [ProtoMember(2, IsRequired = true)]
            public uint AttackedUID;
            [ProtoMember(3, IsRequired = true)]
            public uint Effect;
        }
        public void Attacking(Game.Entity attacker, Interfaces.IMapObject attacked, ref uint damage, ref Attack attack, ref bool loadItemStats)
        {
            if (attacker == null || attacked == null) return;
            if (attacker.Owner.Equipment.TotalStars == 0) return;
            if (attacker.EntityFlag == Game.EntityFlag.Monster) return;
            double chance = 0;
            var effect = Game.Enums.PerfectionEffect.CalmWind;
            byte level = 0;
            var dics = Database.PerfectionTable.Effects.Values.Where(i => i.Stars == attacker.Owner.Equipment.TotalStars).FirstOrDefault();
            if (dics == null) return;
            var dic = dics.Effects;
            var item = Kernel.RandFromGivingNums(dic.ToArray());
            effect = (Game.Enums.PerfectionEffect)(item / 1000);
            level = (byte)(item % 1000);
            chance = Database.PerfectionTable.AttributeList.Values.Where(i => i.Type == effect && i.Level == level).FirstOrDefault().Chance / 100;
            foreach (var val in Database.PerfectionTable.EffectsEX.Values)
            {
                if (attacker.Owner.Equipment.IsWearingItemID(val.ItemID))
                {
                    if (attacker.Owner.Equipment.TotalStars >= val.StarReq)
                    {
                        if (val.AttributeNum <= 16)
                        {
                            if (val.AttributeNum == (uint)effect)
                            {
                                chance += (byte)val.Value;
                            }
                        }
                    }
                }
            }
            while (effect == Game.Enums.PerfectionEffect.Stricklock ||
                effect == Game.Enums.PerfectionEffect.FreeSoul ||
                effect == Game.Enums.PerfectionEffect.StraightLife ||
                effect == Game.Enums.PerfectionEffect.ToxinEarser ||
                effect == Game.Enums.PerfectionEffect.BloodSpawn ||
                effect == Game.Enums.PerfectionEffect.MirrorofSin)
            {
                item = Kernel.RandFromGivingNums(dic.ToArray());
                effect = (Game.Enums.PerfectionEffect)(item / 1000);
                level = (byte)(item % 1000);
                chance = Database.PerfectionTable.AttributeList.Values.Where(i =>
i.Type == effect && i.Level == level).FirstOrDefault().Chance / 100;
                foreach (var val in Database.PerfectionTable.EffectsEX.Values)
                {

                    if (attacker.Owner.Equipment.IsWearingItemID(val.ItemID))
                    {
                        if (attacker.Owner.Equipment.TotalStars >= val.StarReq)
                        {
                            if (val.AttributeNum <= 16)
                            {
                                if (val.AttributeNum == (uint)effect)
                                {
                                    chance += (byte)val.Value;
                                }
                            }
                        }
                    }
                }
            }
            if (Kernel.Rate((byte)chance))
            {
                #region DoEffects
                #region DrainingTouch
                if (effect == Game.Enums.PerfectionEffect.DrainingTouch)
                {
                    attacker.Hitpoints = attacker.MaxHitpoints;
                    attacker.Mana = attacker.MaxMana;
                }
                #endregion
                #region LuckyStrike
                if (effect == Game.Enums.PerfectionEffect.LuckyStrike || effect == Game.Enums.PerfectionEffect.AbsoluteLuck) { damage *= 2; attack.Effect1 = Attack.AttackEffects1.LuckyStrike; }
                #endregion
                #region KillingFlash
                if (effect == Game.Enums.PerfectionEffect.KillingFlash)
                {
                    attacker.Owner.XPCount = 100;
                }
                #endregion
                #region DivineGuard
                if (effect == Game.Enums.PerfectionEffect.DivineGuard)
                {
                    attacker.AddFlag3(Network.GamePackets.Update.Flags3.DivineGuard);
                    attacker.Defence = (ushort)(((attacker.Defence) * 300) / 100);
                    attacker.DivineGuardStamp = Time32.Now;
                }
                #endregion
                #region InvisibleArrow
                if (effect == Game.Enums.PerfectionEffect.InvisibleArrow)
                {
                    damage += ((uint)(attacker.MagicAttack * 5) / 100);
                }
                #endregion
                #region ShieldBreak
                if (effect == Game.Enums.PerfectionEffect.ShieldBreak)
                {
                    attacker.AddFlag3(Network.GamePackets.Update.Flags3.ShieldBreak);
                    attacker.ShieldBreakStamp = Time32.Now;
                    if (attacked.MapObjType == Game.MapObjectType.Entity)
                    {
                        (attacked as Game.Entity).Block -= (ushort)((((attacked as Game.Entity).Block) * 20) / 100);
                        if ((attacked as Game.Entity).Block < 0) (attacked as Game.Entity).Block = 0;
                        loadItemStats = true;
                    }
                }
                #endregion
                #region CoreStrike
                if (effect == Game.Enums.PerfectionEffect.CoreStrike)
                {
                    damage += ((uint)(attacker.MagicDamageIncrease - 0) * 100);
                }
                #endregion
                #region LightofStamina
                if (effect == Game.Enums.PerfectionEffect.LightofStamina)
                {
                    byte limit = 0;
                    if (attacker.HeavenBlessing >
0)
                        limit = 50;
                    attacker.Stamina = (byte)(100 + limit);
                }
                #endregion
                #endregion
                var proto = new MsgRefineEffectProto();
                proto.AttackerUID = attacker.UID;
                proto.AttackedUID = attacked != null ? attacked.UID : 0;
                proto.Effect = (uint)effect;
                var proto2 = Kernel.FinalizeProtoBuf(proto, 3254);
                attacker.Owner.SendScreen(proto2, true);
            }
        }
        public void beingAttacked(Interfaces.IMapObject attacker, Game.Entity attacked, ref uint damage)
        {
            if (attacker == null || attacked == null) return;
            if (attacker.Owner.Equipment.TotalStars == 0) return;
            if (attacked.EntityFlag == Game.EntityFlag.Monster) return;
            double chance = 0;
            var effect = Game.Enums.PerfectionEffect.CalmWind;
            byte level = 0;
            var dic0 = Database.PerfectionTable.Effects.Values.Where(i => i.Stars == attacked.Owner.Equipment.TotalStars).FirstOrDefault();
            if (dic0 == null) return;
            var dic = dic0.Effects;
            var item = Kernel.RandFromGivingNums(dic.ToArray());
            effect = (Game.Enums.PerfectionEffect)(item / 1000);
            level = (byte)(item % 1000);
            chance = Database.PerfectionTable.AttributeList.Values.Where(i => i.Type == effect && i.Level == level).FirstOrDefault().Chance / 100;
            foreach (var val in Database.PerfectionTable.EffectsEX.Values)
            {

                if (attacked.Owner.Equipment.IsWearingItemID(val.ItemID))
                {
                    if (attacked.Owner.Equipment.TotalStars >= val.StarReq)
                    {
                        if (val.AttributeNum <= 16)
                        {
                            if (val.AttributeNum == (uint)effect)
                            {
                                chance += (byte)val.Value;
                            }
                        }
                    }
                }
            }
            /////////////WhileAttackedNotAttackingEffects////////////
            while (!(effect == Game.Enums.PerfectionEffect.Stricklock ||
                effect == Game.Enums.PerfectionEffect.BloodSpawn ||
                effect == Game.Enums.PerfectionEffect.MirrorofSin))
            {
                item = Kernel.RandFromGivingNums(dic.ToArray());
                effect = (Game.Enums.PerfectionEffect)(item / 1000);
                level = (byte)(item % 1000);
                chance = Database.PerfectionTable.AttributeList.Values.Where(i =>
i.Type == effect && i.Level == level).FirstOrDefault().Chance / 100;
                foreach (var val in Database.PerfectionTable.EffectsEX.Values)
                {

                    if (attacked.Owner.Equipment.IsWearingItemID(val.ItemID))
                    {
                        if (attacked.Owner.Equipment.TotalStars >= val.StarReq)
                        {
                            if (val.AttributeNum <= 16)
                            {
                                if (val.AttributeNum == (uint)effect)
                                {
                                    chance += (byte)val.Value;
                                }
                            }
                        }
                    }
                }
            }
            if (Kernel.Rate((byte)chance))
            {
                #region DoEffects
                #region StrickLock
                if (effect == Game.Enums.PerfectionEffect.Stricklock)
                {
                    damage = 0;
                }
                #endregion
                #region BloodSpawn
                if (effect == Game.Enums.PerfectionEffect.BloodSpawn)
                {
                    attacked.Hitpoints = attacked.MaxHitpoints;
                    attacked.Mana = attacked.MaxMana;
                }
                #endregion
                #region KillingFlash
                if (effect == Game.Enums.PerfectionEffect.MirrorofSin)
                {
                    attacked.Owner.XPCount = 100;
                }
                #endregion
                #endregion
                var proto = new MsgRefineEffectProto();
                proto.AttackerUID = attacked.UID;
                proto.AttackedUID = attacker.UID;
                proto.Effect = (uint)effect;
                var proto2 = Kernel.FinalizeProtoBuf(proto, 3254);
                attacked.Owner.SendScreen(proto2, true);
            }
        }
        public void GenerateChance(Game.Entity Entity, Game.Enums.PerfectionEffect effect, ref byte chance, bool dwParam = false)
        {
            if (Entity.Owner.Equipment.TotalStars == 0) { chance = 0; return; }
            byte level = (byte)(Database.PerfectionTable.Effects.Values.Where(i =>
i.Stars == Entity.Owner.Equipment.TotalStars).FirstOrDefault().Effects.Where(i => i >= ((uint)(effect) * 1000) && i <= ((uint)(effect) * 1000 + 20)).FirstOrDefault() % 1000);
            if (Database.PerfectionTable.AttributeList.Values.Where(i =>
i.Type == effect && i.Level == level).FirstOrDefault() != null)
            {
                if (!dwParam)
                    chance = (byte)(Database.PerfectionTable.AttributeList.Values.Where(i => i.Type == effect && i.Level == level).FirstOrDefault().Chance / 100);
                else chance = (byte)(Database.PerfectionTable.AttributeList.Values.Where(i => i.Type == effect && i.Level == level).FirstOrDefault().dwParam / 100);
                foreach (var val in Database.PerfectionTable.EffectsEX.Values)
                {
                    if (Entity.Owner.Equipment.IsWearingItemID(val.ItemID))
                    {
                        if (Entity.Owner.Equipment.TotalStars >= val.StarReq)
                        {
                            if (val.AttributeNum <= 16)
                            {
                                if (val.AttributeNum == (uint)effect)
                                {
                                    chance += (byte)val.Value;
                                }
                            }
                        }
                    }
                }
            }
        }
        public byte GetChance(Client.GameState client, Game.Enums.PerfectionEffect effect)
        {
            if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints == 0) return 0;
            byte Chance = 10;
            if (effect == Game.Enums.PerfectionEffect.CalmWind)
            {
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints == 3) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >
= 90) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 170) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 250) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 285) Chance += 1;
            }

            if (effect == Game.Enums.PerfectionEffect.BloodSpawn)
            {
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 40) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 240) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 288) Chance += 1;
            }
            if (effect == Game.Enums.PerfectionEffect.DivineGuard)
            {
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints <= 40) Chance += 5;
            }
            if (effect == Game.Enums.PerfectionEffect.CoreStrike)
            {
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints == 50) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >
= 80) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 135) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 205) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 245) Chance += 1;
            }
            if (effect == Game.Enums.PerfectionEffect.DrainingTouch)
            {
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 35) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 220) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 276) Chance += 1;
            }
            if (effect == Game.Enums.PerfectionEffect.FreeSoul)
            {
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 25) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 95) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 130) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 195) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 279) Chance += 1;
            }
            if (effect == Game.Enums.PerfectionEffect.InvisibleArrow)
            {
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 65) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 225) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 282) Chance += 1;
            }
            if (effect == Game.Enums.PerfectionEffect.KillingFlash)
            {
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 55) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 165) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 294) Chance += 1;
            }
            if (effect == Game.Enums.PerfectionEffect.LightofStamina)
            {
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 1) Chance += 5;
            }
            if (effect == Game.Enums.PerfectionEffect.LuckyStrike)
            {
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 15) Chance = 0;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 115) Chance = 0;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 215) Chance = 0;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 314) Chance = 0;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 320) Chance = 0;
            }
            if (effect == Game.Enums.PerfectionEffect.MirrorofSin)
            {
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 60) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 190) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 291) Chance += 1;
            }
            if (effect == Game.Enums.PerfectionEffect.ShieldBreak)
            {
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints == 155 && client.Equipment.GetFullEquipmentPerfecetionLevelPoints <= 254) Chance += 50 / 100;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints == 255 && client.Equipment.GetFullEquipmentPerfecetionLevelPoints <= 296) Chance += 70 / 100;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints == 297 && client.Equipment.GetFullEquipmentPerfecetionLevelPoints <= 311) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints == 312 && client.Equipment.GetFullEquipmentPerfecetionLevelPoints <= 321) Chance += 150 / 100;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints == 322 && client.Equipment.GetFullEquipmentPerfecetionLevelPoints >
= 322) Chance += 2;
            }
            if (effect == Game.Enums.PerfectionEffect.StraightLife)
            {
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 30) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 125) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 210) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 265) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 303) Chance += 1;
            }
            if (effect == Game.Enums.PerfectionEffect.Stricklock)
            {
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 30) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 125) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 210) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 265) Chance += 1;
                if (client.Equipment.GetFullEquipmentPerfecetionLevelPoints >= 303) Chance += 1;
            }
            return Chance;
        }
        public void SendEffect(Game.Entity attacker, Game.Entity attacked, Game.Enums.PerfectionEffect effect)
        {

            if (attacker == null || attacked == null) return;
            var proto = new MsgRefineEffectProto();
            proto.AttackerUID = attacker.UID;
            if (attacked.EntityFlag == Game.EntityFlag.Entity)
                proto.AttackedUID = attacked.UID;
            else if (attacked.EntityFlag == Game.EntityFlag.Monster && attacked != null && attacked.UID != 0)
            {
                proto.AttackedUID = attacked.UID;
            }
            proto.Effect = (uint)effect;
            var proto2 = Kernel.FinalizeProtoBuf(proto, 3254);
            attacker.Owner.SendScreen(proto2, true);
            if (effect == Game.Enums.PerfectionEffect.DrainingTouch)
            {
                attacker.Hitpoints = attacker.MaxHitpoints;
            }
            if (effect == Game.Enums.PerfectionEffect.KillingFlash)
            {
                attacker.AddFlag((ulong)Network.GamePackets.Update.Flags.XPList);

                attacker.Owner.XPListStamp = Time32.Now;
            }
            if (effect == Game.Enums.PerfectionEffect.DivineGuard)
            {
                attacker.AddFlag3((ulong)Network.GamePackets.Update.Flags3.DivineGuard);
                attacker.Defence = (ushort)(((attacker.Defence) * 20) / 100);
                attacker.DivineGuardStamp = Time32.Now;
            }
            if (effect == Game.Enums.PerfectionEffect.ShieldBreak)
            {
                attacker.AddFlag3((ulong)Network.GamePackets.Update.Flags3.ShieldBreak);
                attacker.ShieldBreakStamp = Time32.Now;
                attacker.Block += (ushort)(((attacker.Block) * 2) / 10);
            }
            if (effect == Game.Enums.PerfectionEffect.StraightLife)
            {
                attacker.BringToLife();
            }
            if (effect == Game.Enums.PerfectionEffect.LightofStamina && attacked.EntityFlag == Game.EntityFlag.Entity && attacker.Owner.Equipment.GetFullEquipmentPerfecetionLevelPoints > attacked.Owner.Equipment.GetFullEquipmentPerfecetionLevelPoints || effect == Game.Enums.PerfectionEffect.LightofStamina && attacked.EntityFlag == Game.EntityFlag.Monster) attacker.Stamina = 100;
        }
        public void GenerateEffectandChance(Client.GameState client, ref Game.Enums.PerfectionEffect effect, ref byte chance)
        {
            effect = (Game.Enums.PerfectionEffect)Kernel.Random.Next(3, 14);
            chance = GetChance(client, effect);
            while (chance == 10)
            {
                effect = (Game.Enums.PerfectionEffect)Kernel.Random.Next(3, 14);
                chance = GetChance(client, effect);
            }
        }
        public void HandleStraightLife(Game.Entity client, ref byte chance)
        {
            chance = GetChance(client.Owner, Game.Enums.PerfectionEffect.StraightLife);
        }
        public void HandleStrickeLock(Game.Entity client, ref byte chance)
        {
            chance = GetChance(client.Owner, Game.Enums.PerfectionEffect.Stricklock);
        }
        public void HandleLuckyStrike(Game.Entity client, ref byte chance)
        {
            chance = GetChance(client.Owner, Game.Enums.PerfectionEffect.LuckyStrike);
        }
        public void HandleMirror(Game.Entity client, ref byte chance)
        {
            chance = GetChance(client.Owner, Game.Enums.PerfectionEffect.MirrorofSin);
        }
        public void HandleBloodSpawn(Game.Entity client, ref byte chance)
        {
            chance = GetChance(client.Owner, Game.Enums.PerfectionEffect.BloodSpawn);
        }
        public void HandleFreeSoul(Game.Entity client, ref byte chance)
        {
            chance = GetChance(client.Owner, Game.Enums.PerfectionEffect.FreeSoul);
        }
    }
}




جايب ارور فى
PrestigeRank
/////////////////////
Game.Entity Best = M.AzozProject.Network.GamePackets.MsgUserAbilitySc ore.RankingList.OrderByDescending(x => x.TotalPerfectionScore).ThenByDescending(x => x.Level).ThenBy(x => x.UID).FirstOrDefault();
الارور فى
x.TotalPerfectionScore
اعمل اية فيها

osama 2019-07-12 04:08 PM

رد: حل مشكلة الرانك
 
المشكلة فى الصورة اهى
https://6.top4top.net/m_1288hjk4k1.bmp
ودى ونا فاتح العبة كلة ظاهر معدا الى واخد رانك 1 فى النص مش بيظهر خالص
https://1.top4top.net/p_1288lmbv82.jpg

Rider 2019-07-12 05:30 PM

رد: حل مشكلة الرانك
 
لا امسح PrestigeRank.cs امسح كل الي جواه و روح علي world.cs


ابحث عن
كود:

private void ServerFunctions(int time)
فوقه ضيف
كود PHP:

 DateTime LastPerfectionSort DateTime.Now

و جواه ضيف
كود PHP:

 if (DateTime.Now >= LastPerfectionSort.AddHours(1))
            {
                
LastPerfectionSort DateTime.Now;
                new 
MsgUserAbilityScore().GetRankingList();
                new 
MsgEquipRefineRank().UpdateRanking();
                new 
MsgRankMemberShow().UpdateBestEntity();
            } 

بس كده و اعمل بيلد و جرب و قولي

osama 2019-07-12 05:40 PM

رد: حل مشكلة الرانك
 
اقتباس:

المشاركة الأصلية كتبت بواسطة rider (المشاركة 4909)
لا امسح prestigerank.cs امسح كل الي جواه و روح علي world.cs


ابحث عن
كود:

private void serverfunctions(int time)
فوقه ضيف
كود PHP:

 datetime lastperfectionsort datetime.now

و جواه ضيف
كود PHP:

 if (datetime.now >= lastperfectionsort.addhours(1))
            {
                
lastperfectionsort datetime.now;
                new 
msguserabilityscore().getrankinglist();
                new 
msgequiprefinerank().updateranking();
                new 
msgrankmembershow().updatebestentity();
            } 

بس كده و اعمل بيلد و جرب و قولي

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

osama 2019-07-21 01:41 PM

رد: حل مشكلة الرانك
 
انا حليت المشكلة وانشاء الله هنزل موضوع كامل ليها


الساعة الآن 11:30 AM

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