| 
                     | 
                
            
        
			 أفضل جواب - كتبه ElSaher
		 | 
	
| 
			من دا  Serf = 0, Knight = 1, Baron = 3, Earl = 5, Duke = 7, Prince = 9, King = 12  | 
	
		
	 
static void ComposePlus(Compose compose, Client.GameState client) 
   
	
		
		
		
		
	 
 static void ComposePlus(Compose compose, Client.GameState client)
        {
            ConquerItem Item = null;
            ConquerItem[] Minors = null;
            if (client.Inventory.TryGetItem(compose[0], out Item) || (client.Equipment.TryGetItem(compose[0]) != null) || (compose.Mode == Compose.QuickCompose))
            {
                if (Item == null && client.Inventory.TryGetItem(compose[0], out Item) == false && (client.Equipment.TryGetItem(compose[0]) != null))
                    Item = client.Equipment.TryGetItem(compose[0]);
                if (compose.Mode == Compose.DragonBallUpgrade || compose.Mode == Compose.MeteorUpgrade)
                {
                    Minors = new ConquerItem[compose.Countx];
                    for (int i = 0; i < compose.Countx; i++)
                    {
                        if (!client.Inventory.TryGetItem(compose[i + 2], out Minors[i]))
                            return;
                        else
                            if (Minors[i].UID == Item.UID)
                                return;
                    }
                }
                else
                {
                    Minors = new ConquerItem[compose.Count - 1];
                    for (int i = 0; i < compose.Count - 1; i++)
                    {
                        if (!client.Inventory.TryGetItem(compose[i + 1], out Minors[i]))
                            return;
                        else
                            if (Minors[i].UID == Item.UID)
                                return;
                    }
                }
                ushort pos = ItemPosition(Item.ID);
                if (pos == ConquerItem.Bottle || pos == ConquerItem.Garment || pos == ConquerItem.LeftWeaponAccessory || pos == ConquerItem.RightWeaponAccessory || pos == ConquerItem.SteedArmor) //mohsen.. i'm remove crop
                    return;
                if (compose.Mode == Compose.ChanceUpgrade || compose.Mode == Compose.QuickCompose)
                {
                    if (Item.Plus < 8 && Item.PlusProgress != 0)
                    {
                        double percent = (double)Item.PlusProgress / (double)Database.DataHolder.ComposePlusPoints(Item.Plus);
                        if (Kernel.Rate(percent))
                        {
                            Item.PlusProgress = 0;
                            Item.Plus++;
                        }
                        else
                            Item.PlusProgress = 0;
                        Item.Mode = MrHassan.Game.Enums.ItemMode.Update;
                        Item.Send(client);
                        Database.ConquerItemTable.UpdatePlus(Item);
                        Database.ConquerItemTable.UpdatePlusProgress(Item);
                        if (Item.Plus >= 8)
                            Kernel.SendWorldMessage(new Message("Congratulations, " + client.Entity.Name + " has upgraded His " + Database.ConquerItemInformation.BaseInformations[Item.ID].Name + " to + " + Item.Plus + " and " + Item.PlusProgress + " in Progress!", System.Drawing.Color.Red, Network.GamePackets.Message.TopLeft), Program.Values);
                    }
                    return;
                }
                if (compose.Mode == Compose.MeteorUpgrade || compose.Mode == Compose.DragonBallUpgrade)
                {
                    Database.ConquerItemInformation info = new MrHassan.Database.ConquerItemInformation(Item.ID, Item.Plus);
                    Minors = new ConquerItem[compose.Count - 2];
                    for (int i = 0; i < compose.Count - 2; i++)
                    {
                        if (!client.Inventory.TryGetItem(compose[i + 2], out Minors[i]))
                            return;
                        else
                            if (Minors[i].UID == Item.UID)
                                return;
                    }
                    switch (compose.Mode)
                    {
                        case Compose.DragonBallUpgrade:
                            {
                                if (Item.ID % 10 == (byte)Game.Enums.ItemQuality.Super)
                                    break;
                                if (Item.Durability < Item.MaximDurability)
                                    break;
                                // byte chance = (byte)(70 - ((infos.BaseInformation.Level - (infos.BaseInformation.Level > 100 ? 30 : 0)) / (10 - Item.ID % 10)));
                                byte cost = DragonBallUpgradeCost(Item, info);
                                double chance = (((double)compose.Countx / (double)cost) * 100);
                                if (MyMath.Success(chance))
                                {
                                    switch ((Game.Enums.ItemQuality)(Item.ID % 10))
                                    {
                                        case Game.Enums.ItemQuality.Normal:
                                        case Game.Enums.ItemQuality.NormalV1:
                                        case Game.Enums.ItemQuality.NormalV2:
                                        case Game.Enums.ItemQuality.NormalV3: Item.ID = (Item.ID - (Item.ID % 10)) + (byte)Game.Enums.ItemQuality.Refined; break;
                                        default: Item.ID++; break;
                                    }
                                    Database.ConquerItemTable.UpdateItemID(Item, client);
                                    Item.Mode = MrHassan.Game.Enums.ItemMode.Update;
                                    Item.Send(client);
                                    client.Send(new ItemUsage(true)
                                    {
                                        UID = client.Entity.UID,
                                        dwParam = 1,
                                        ID = ItemUsage.DragonBallUpgrade
                                    });
                                }
                                else
                                {
                                    Item.Durability = (ushort)(Item.Durability / 2);
                                    Database.ConquerItemTable.UpdateDurabilityItem(Item);
                                    Item.Mode = MrHassan.Game.Enums.ItemMode.Update;
                                    Item.Send(client);
                                }
                                foreach (var item in Minors)
                                    client.Inventory.Remove(item, MrHassan.Game.Enums.ItemUse.Remove);
                                if (compose.Countx > cost)
                                {
                                    var diff = compose.Countx - cost;
                                    client.Inventory.Add((uint)(Minors[0].ID == 720028 ? 1088000 : 1088001), 0, (byte)diff);
                                }
                                break;
                            }
                        case Compose.MeteorUpgrade:
                            {
                                if (info.BaseInformation.Level == ItemMaxLevel(ItemPosition(info.BaseInformation.ID)))
                                    break;
                                if (Item.Durability < Item.MaximDurability)
                                {
                                    client.MessageBox("Ro7 sal7ha ya Dog ..", null, null);
                                    break;
                                }
                                byte cost = MeteorUpgradeCost(Item.ID);
                                if (ItemPosition(Item.ID) == (ushort)ConquerItem.Armor || ItemPosition(Item.ID) == (ushort)ConquerItem.Head || IsShield(Item.ID))
                                {
                                    if (info.BaseInformation.Level >= 110)
                                        cost = 1;
                                }
                                else
                                {
                                    if (info.BaseInformation.Level >= 115)
                                        cost = 1;
                                }
                                double chance = (((double)compose.Countx / (double)cost) * 100);
                                uint newid = info.CalculateUplevel();
                                if (newid != 0 && newid != Item.ID)
                                {
                                    if (MyMath.Success(chance))
                                    {
                                        Item.ID = newid;
                                        info = new MrHassan.Database.ConquerItemInformation(Item.ID, Item.Plus);
                                        Item.Durability = Item.MaximDurability = info.BaseInformation.Durability;
                                        Database.ConquerItemTable.UpdateItemID(Item, client);
                                        Database.ConquerItemTable.UpdateDurabilityItem(Item);
                                        Item.Mode = MrHassan.Game.Enums.ItemMode.Update;
                                        Item.Send(client);
                                        client.Send(new ItemUsage(true)
                                        {
                                            UID = client.Entity.UID,
                                            dwParam = 1,
                                            ID = ItemUsage.MeteorUpgrade
                                        });
                                    }
                                    else
                                    {
                                        Item.Durability = (ushort)(Item.Durability / 2);
                                        Database.ConquerItemTable.UpdateDurabilityItem(Item);
                                        Item.Mode = MrHassan.Game.Enums.ItemMode.Update;
                                        Item.Send(client);
                                    }
                                }
                                foreach (var item in Minors)
                                    client.Inventory.Remove(item, MrHassan.Game.Enums.ItemUse.Remove);
                                if (compose.Countx > cost)
                                {
                                    var diff = compose.Countx - cost;
                                    client.Inventory.Add((uint)(Minors[0].ID == 720028 ? 1088000 : 1088001), 0, (byte)diff);
                                }
                                break;
                            }
                    }
                }
                foreach (var item in Minors)
                {
                    var ItemPlus = item;
                    Database.ConquerItemInformation infos = new MrHassan.Database.ConquerItemInformation(Item.ID, Item.Plus);
                    switch (compose.Mode)
                    {
                        case Compose.CurrentSteed:
                        case Compose.Plus:
                            {
                                if (Item.Plus == 8 && Item.GetItemType() == ConquerItem.ItemTypes.WingID || Item.Plus == 8 && pos == ConquerItem.Wing || Item.Plus == 8 && pos == ConquerItem.Steed)//Mr.MrHassan
                                {
                                    Item.PlusProgress += Database.DataHolder.StonePlusPoints(ItemPlus.Plus);
                                    Item.PlusProgress -= Database.DataHolder.ComposePlusPoints(Item.Plus);//Mr.MrHassan
                                    Item.Mode = MrHassan.Game.Enums.ItemMode.Update;
                                    Item.Send(client);
                                    Database.ConquerItemTable.UpdatePlusProgress(Item);
                                    client.Inventory.Remove(ItemPlus, MrHassan.Game.Enums.ItemUse.Remove);
                                }
                                if (Item.Plus < 8 && Item.GetItemType() != ConquerItem.ItemTypes.GarmentID_1 && Item.GetItemType() != ConquerItem.ItemTypes.GarmentID_2 && Item.GetItemType() != ConquerItem.ItemTypes.BottleID && Item.GetItemType() != ConquerItem.ItemTypes.RightAccessory1 && Item.GetItemType() != ConquerItem.ItemTypes.RightAccessory2 && Item.GetItemType() != ConquerItem.ItemTypes.RightAccessory3 && Item.GetItemType() != ConquerItem.ItemTypes.LeftAccessory)
                                {
                                    Item.PlusProgress += Database.DataHolder.StonePlusPoints(ItemPlus.Plus);
                                    while (Item.PlusProgress >= Database.DataHolder.ComposePlusPoints(Item.Plus) && Item.Plus != 8)
                                    {
                                        Item.PlusProgress -= Database.DataHolder.ComposePlusPoints(Item.Plus);
                                        Item.Plus++;
                                        if (Item.Plus == 8)
                                            Item.PlusProgress = 0;
                                    }
                                    Item.Mode = MrHassan.Game.Enums.ItemMode.Update;
                                    Item.Send(client);
                                    Database.ConquerItemTable.UpdatePlus(Item);
                                    Database.ConquerItemTable.UpdatePlusProgress(Item);
                                    client.Inventory.Remove(ItemPlus, MrHassan.Game.Enums.ItemUse.Remove);
                                    if (Item.Plus >= 8)
                                        Kernel.SendWorldMessage(new Message("Congratulations, " + client.Entity.Name + " has upgraded His " + Database.ConquerItemInformation.BaseInformations[Item.ID].Name + " to + " + Item.Plus + " and " + Item.PlusProgress + " in Progress!", System.Drawing.Color.Red, Network.GamePackets.Message.TopLeft), Program.Values);
                                }
                                break;
                            }
                        case Compose.NewSteed:
                            {
                                if (Item.Plus < 8)
                                {
                                    Item.PlusProgress += Database.DataHolder.StonePlusPoints(ItemPlus.Plus);
                                    while (Item.PlusProgress >= Database.DataHolder.ComposePlusPoints(Item.Plus) && Item.Plus != 8)
                                    {
                                        Item.PlusProgress -= Database.DataHolder.ComposePlusPoints(Item.Plus);
                                        Item.Plus++;
                                        if (Item.Plus == 8)
                                            Item.PlusProgress = 0;
                                    }
                                    Item.Mode = MrHassan.Game.Enums.ItemMode.Update;
                                    Item.Send(client);
                                    Database.ConquerItemTable.UpdatePlus(Item);
                                    client.Inventory.Remove(ItemPlus, MrHassan.Game.Enums.ItemUse.Remove);
                                }
                                int color1 = (int)Item.SocketProgress;
                                int color2 = (int)ItemPlus.SocketProgress;
                                int G1 = color1 & 0xFF;
                                int G2 = color2 & 0xFF;
                                int B1 = (color1 >> 8) & 0xFF;
                                int B2 = (color2 >> 8) & 0xFF;
                                int R1 = (color1 >> 16) & 0xFF;
                                int R2 = (color2 >> 16) & 0xFF;
                                Item.NextGreen = (byte)((int)Math.Floor(0.9 * G1) + (int)Math.Floor(0.1 * G2) + 1);
                                Item.NextBlue = (byte)((int)Math.Floor(0.9 * B1) + (int)Math.Floor(0.1 * B2) + 1);
                                Item.NextRed = (byte)((int)Math.Floor(0.9 * R1) + (int)Math.Floor(0.1 * R2) + 1);
                                Item.SocketProgress = (uint)(Item.NextGreen | (Item.NextBlue << 8) | (Item.NextRed << 16));
                                Item.Mode = MrHassan.Game.Enums.ItemMode.Update;
                                Item.Send(client);
                                Database.ConquerItemTable.UpdatePlusProgress(Item);
                                Database.ConquerItemTable.UpdateSocketProgress(Item);
                                //  Database.ConquerItemTable.UpdateNextSteedColor(Item);
                                client.Inventory.Remove(ItemPlus, MrHassan.Game.Enums.ItemUse.Remove);
                                break;
                            }
                    }
                }
            }
        } 
   
	
		
		
		| الذين يشاهدون محتوى الموضوع الآن : 1 ( الأعضاء 0 والزوار 1) | |
                
  | 
        
| الموضوع | كاتب الموضوع | المنتدى | مشاركات | آخر مشاركة | 
| شباب لو حد يقدر يقولي ازاي اضيف الرون دا RiseofTaoism | magdy | مشكلات السيرفيرات كونكر الشخصيه | 2 | 2020-03-17 02:47 AM | 
| عاوز شرح ازاى اضيف طربيزه بوكر ف التون | megokarika | مشكلات السيرفيرات كونكر الشخصيه | 1 | 2020-03-15 11:57 AM | 
| اضيف طربيزة بوكر ف التون ازاى؟ | megokarika | مشكلات السيرفيرات كونكر الشخصيه | 4 | 2020-03-13 12:01 AM | 
| ازاي اضيف الشامبيون بوينتس .. | AliNasser | مشكلات السيرفيرات كونكر الشخصيه | 7 | 2019-08-31 11:20 AM | 
| ازاى اضيف اى حاجة لسورس 2d | osama | مشكلات السيرفيرات كونكر الشخصيه | 3 | 2019-07-07 12:45 AM |