Como arrumar as Both(Sistema de Shop)

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Como arrumar as Both(Sistema de Shop)

Mensagem por FelipeXP em Seg Out 03, 2016 12:45 am

Procure por static void HandleBuyFromNPC(ItemUsage itemUsage, Client.GameClient client)
e troque por isso
Código:
static void HandleBuyFromNPC(ItemUsage itemUsage, Client.GameClient client)
        {
            if (client == null) return;
            if (itemUsage == null) return;
            if (client.Trade.InTrade) return;

            #region Honor shop
            if (itemUsage.UID == Database.HonorShop.UID)
            {
                var shop = Database.HonorShop.Shop;
                uint cost;
                if (shop.Items.TryGetValue(itemUsage.dwParam, out cost))
                {
                    if (client.Inventory.Count <= 39)
                    {
                        if (client.CurrentHonor >= cost)
                        {
                            ConquerItem newItem = new GamePackets.ConquerItem(true);
                            newItem.ID = itemUsage.dwParam;
                            Database.ConquerItemBaseInformation ibi;
                            if (Database.ConquerItemInformation.BaseInformations.TryGetValue(newItem.ID, out ibi))
                            {
                                if (ibi.Durability > 0)
                                {
                                    newItem.Durability = ibi.Durability;
                                    newItem.MaximDurability = ibi.Durability;
                                }
                            }
                            client.Inventory.Add(newItem, Game.Enums.ItemUse.CreateAndAdd);

                            client.CurrentHonor -= cost;
                            client.ArenaStatistic.Send(client);
                        }
                        else client.Send(new Message("You do not have enough Honor Points", Color.Red, Message.TopLeft));
                    }
                    else client.Send(new Message("You do not have enough space in your inventory", Color.Red, Message.TopLeft));
                }
                else client.Send(new Message("Can not find this item", Color.Red, Message.TopLeft));
                return;
            }
            #endregion
            #region Champion shop
            if (itemUsage.UID == Database.ChampionShop.UID)
            {
                ushort Amount = (ushort)(itemUsage.dwExtraInfo > 0 ? itemUsage.dwExtraInfo : 1);
                Database.ChampionShop.ChampionItem item;
                if (Database.ChampionShop.Shop.Items.TryGetValue(itemUsage.dwParam, out item))
                {

                    if (client.Inventory.Count <= 40 - Amount)
                    {
                        if (client.ChampionPoints >= (item.Price * Amount))
                        {
                            ConquerItem newItem = new GamePackets.ConquerItem(true);
                            newItem.ID = itemUsage.dwParam;
                            Database.ConquerItemBaseInformation ibi;
                            if (Database.ConquerItemInformation.BaseInformations.TryGetValue(newItem.ID, out ibi))
                            {
                                if (ibi.Durability > 0)
                                {
                                    newItem.Durability = ibi.Durability;
                                    newItem.MaximDurability = ibi.Durability;
                                }
                            }
                            if (ibi != null)
                                if (ibi.Name.Contains("Stone"))
                                    newItem.Plus = (byte)(newItem.ID % 10);
                            newItem.Bound = true;
                            client.Inventory.Add(newItem.ID, newItem.Plus, Amount, newItem.Bound);
                            client.ChampionPoints -= (item.Price * Amount);
                            client.CP.Send(client);
                        }
                        else client.Send(new Message("You do not have enough Champion Points", Color.Red, Message.TopLeft));
                    }
                    else client.Send(new Message("You do not have enough space in your inventory", Color.Red, Message.TopLeft));

                }
                else client.Send(new Message("Can not find this item", Color.Red, Message.TopLeft));
                return;
            }
            #endregion
            #region Race point shop
            if (itemUsage.UID == Database.RacePointShop.UID)
            {
                Database.RacePointShop.RacePointItem item;
                if (Database.RacePointShop.Shop.Items.TryGetValue(itemUsage.dwParam, out item))
                {
                    if (client.Inventory.Count <= 39)
                    {
                        if (client.RacePoints >= item.Price)
                        {
                            ConquerItem newItem = new GamePackets.ConquerItem(true);
                            newItem.ID = itemUsage.dwParam;
                            Database.ConquerItemBaseInformation ibi;
                            if (Database.ConquerItemInformation.BaseInformations.TryGetValue(newItem.ID, out ibi))
                            {
                                if (ibi.Durability > 0)
                                {
                                    newItem.Durability = ibi.Durability;
                                    newItem.MaximDurability = ibi.Durability;
                                }
                            }
                            client.Inventory.Add(newItem, Game.Enums.ItemUse.CreateAndAdd);

                            client.RacePoints -= item.Price;
                        }
                        else client.Send(new Message("You do not have enough Champion Points", Color.Red, Message.TopLeft));
                    }
                    else client.Send(new Message("You do not have enough space in your inventory", Color.Red, Message.TopLeft));
                }
                else client.Send(new Message("Can not find this item", Color.Red, Message.TopLeft));
                return;
            }
            #endregion

            Interfaces.INpc npc = null;
            if (client.Map.Npcs.TryGetValue(itemUsage.UID, out npc) || itemUsage.UID == 2888)
            {
                if (itemUsage.dwExtraInfo == 0)
                    return;
                ConquerItem _ExistingItem;
                Database.ConquerItemInformation iteminfo = new Database.ConquerItemInformation(itemUsage.dwParam, 0);
                if (client.Inventory.Count == 40 && !client.Inventory.Contains(iteminfo.BaseInformation.ID, iteminfo.BaseInformation.StackSize, out _ExistingItem))
                    return;
                if (itemUsage.UID != 2888)
                    if (Kernel.GetDistance(client.Entity.X, client.Entity.Y, npc.X, npc.Y) > 17)
                        return;
                Database.ShopFile.Shop shop = new Database.ShopFile.Shop();
                if (!Database.ShopFile.Shops.TryGetValue(itemUsage.UID, out shop))
                    if (!Database.EShopFile.Shops.TryGetValue(itemUsage.UID, out shop))
                        shop = null;
                if (shop != null && shop.UID != 0)
                {
                    if (!shop.Items.Contains(itemUsage.dwParam))
                    {
                        NpcReply npcx = new NpcReply(6, "Error! Cannot puchase/buy this item  it has been  reported to [GM].")
                        {
                            OptionID = 255
                        };
                        client.Send(npcx.ToArray());
                        return;
                    }
                    uint Amount = itemUsage.dwExtraInfo > 0 ? itemUsage.dwExtraInfo : 1;
                    ConquerItem item = new ConquerItem(true);
                    switch (shop.MoneyType)
                    {
                        case LordsRoad.Database.ShopFile.MoneyType.Gold:
                            {
                                if (iteminfo.BaseInformation.GoldWorth * Amount > client.Entity.Money)
                                    return;
                                if (client.Entity.Money - (iteminfo.BaseInformation.GoldWorth * Amount) > client.Entity.Money)
                                    return;
                                item.ID = itemUsage.dwParam;
                                item.Durability = item.MaximDurability = iteminfo.BaseInformation.Durability;
                                item.Color = (LordsRoad.Game.Enums.Color)3;

                                uint NewAmount = itemUsage.dwExtraInfo > 0 ? itemUsage.dwExtraInfo : 1;
                                while (NewAmount > 0)
                                {
                                    if (iteminfo.BaseInformation.StackSize == 0)
                                    {
                                        item = new ConquerItem(true);
                                        item.ID = itemUsage.dwParam;
                                        item.Durability = item.MaximDurability = iteminfo.BaseInformation.Durability;
                                        item.Color = (LordsRoad.Game.Enums.Color)3;
                                        client.Inventory.Add(item, Game.Enums.ItemUse.CreateAndAdd);
                                        item.MaxStackSize = item.StackSize = 1;
                                        NewAmount--;
                                    }
                                    else
                                    {
                                        if (client.Inventory.GetStackContainer(iteminfo.BaseInformation.ID, iteminfo.BaseInformation.StackSize, 1, out _ExistingItem))
                                        {
                                            _ExistingItem.StackSize++;

                                            Database.ConquerItemTable.UpdateStack(_ExistingItem);
                                            _ExistingItem.Mode = Game.Enums.ItemMode.Update;
                                            _ExistingItem.Send(client);
                                            NewAmount -= 1;
                                        }
                                        else
                                        {
                                            item = new ConquerItem(true);
                                            item.ID = itemUsage.dwParam;
                                            item.Durability = item.MaximDurability = iteminfo.BaseInformation.Durability;
                                            item.Color = (LordsRoad.Game.Enums.Color)3;
                                            item.MaxStackSize = iteminfo.BaseInformation.StackSize;
                                            item.StackSize = 1;
                                            if (NewAmount >= item.MaxStackSize)
                                            {
                                                item.StackSize = item.MaxStackSize;
                                                NewAmount -= item.StackSize;
                                            }
                                            else
                                            {
                                                item.StackSize = (ushort)NewAmount;
                                                NewAmount = 0;
                                            }
                                            client.Inventory.Add(item, Game.Enums.ItemUse.CreateAndAdd);
                                            Database.ConquerItemTable.UpdateStack(item);
                                        }
                                    }
                                }
                                client.Entity.Money -= (iteminfo.BaseInformation.GoldWorth * Amount);
                                break;
                            }
                        case LordsRoad.Database.ShopFile.MoneyType.ConquerPoints:
                            {
                                if (itemUsage.dwExtraInfo3 == 2)
                                {
                                    if (iteminfo.BaseInformation.ConquerPointsWorth * Amount > client.Entity.BoundCps)
                                        return;
                                    if (client.Entity.BoundCps - (iteminfo.BaseInformation.ConquerPointsWorth * Amount) > client.Entity.BoundCps)
                                        return;
                                    item.ID = itemUsage.dwParam;
                                    if (item.ID % 730000 <= 12)
                                        item.Plus = (Byte)(item.ID % 730000);
                                    item.Color = (LordsRoad.Game.Enums.Color)Kernel.Random.Next(4, 8);
                                    item.Durability = item.MaximDurability = iteminfo.BaseInformation.Durability;
                                    uint NewAmount = itemUsage.dwExtraInfo > 0 ? itemUsage.dwExtraInfo : 1;
                                    while (NewAmount > 0)
                                    {
                                        if (iteminfo.BaseInformation.StackSize == 0)
                                        {
                                            if ((itemUsage.dwParam % 730000) <= 12)
                                            {
                                                ConquerItem newItem = new GamePackets.ConquerItem(true);
                                                newItem.ID = itemUsage.dwParam;
                                                newItem.Plus = (Byte)(newItem.ID % 730000);
                                                newItem.Bound = true;
                                                client.Inventory.Add(newItem, Game.Enums.ItemUse.CreateAndAdd);
                                            }
                                            else
                                            {
                                                item = new ConquerItem(true);
                                                item.ID = itemUsage.dwParam;
                                                item.Durability = item.MaximDurability = iteminfo.BaseInformation.Durability;
                                                item.Color = (LordsRoad.Game.Enums.Color)3;
                                                item.Bound = true;
                                                client.Inventory.Add(item, Game.Enums.ItemUse.CreateAndAdd);
                                            }
                                            item.MaxStackSize = item.StackSize = 1;
                                            NewAmount--;
                                        }
                                        else
                                        {
                                            if (client.Inventory.GetStackContainer(iteminfo.BaseInformation.ID, iteminfo.BaseInformation.StackSize, 1, out _ExistingItem))
                                            {
                                                _ExistingItem.StackSize++;

                                                Database.ConquerItemTable.UpdateStack(_ExistingItem);
                                                _ExistingItem.Mode = Game.Enums.ItemMode.Update;
                                                _ExistingItem.Send(client);
                                                NewAmount -= 1;
                                            }
                                            else
                                            {
                                                item = new ConquerItem(true);
                                                item.ID = itemUsage.dwParam;
                                                item.Durability = item.MaximDurability = iteminfo.BaseInformation.Durability;
                                                item.Color = (LordsRoad.Game.Enums.Color)3;
                                                item.MaxStackSize = iteminfo.BaseInformation.StackSize;
                                                item.StackSize = 1;
                                                item.MaxStackSize = item.StackSize = 1;
                                                if (NewAmount >= item.MaxStackSize)
                                                {
                                                    item.StackSize = item.MaxStackSize;
                                                    NewAmount -= item.StackSize;
                                                }
                                                else
                                                {
                                                    item.StackSize = (ushort)NewAmount;
                                                    NewAmount = 0;
                                                }
                                                client.Inventory.Add(item, Game.Enums.ItemUse.CreateAndAdd);
                                                Database.ConquerItemTable.UpdateStack(item);
                                            }
                                        }
                                    }
                                    client.Entity.BoundCps -= (iteminfo.BaseInformation.ConquerPointsWorth * Amount);
                                    break;
                                }
                                else
                                {
                                    if (iteminfo.BaseInformation.ConquerPointsWorth * Amount > client.Entity.ConquerPoints)
                                        return;
                                    if (client.Entity.ConquerPoints - (iteminfo.BaseInformation.ConquerPointsWorth * Amount) > client.Entity.ConquerPoints)
                                        return;
                                    item.ID = itemUsage.dwParam;
                                    if (item.ID % 730000 <= 12)
                                        item.Plus = (Byte)(item.ID % 730000);
                                    item.Color = (LordsRoad.Game.Enums.Color)Kernel.Random.Next(4, 8);
                                    item.Durability = item.MaximDurability = iteminfo.BaseInformation.Durability;
                                    uint NewAmount = itemUsage.dwExtraInfo > 0 ? itemUsage.dwExtraInfo : 1;
                                    while (NewAmount > 0)
                                    {
                                        if (iteminfo.BaseInformation.StackSize == 0)
                                        {
                                            if ((itemUsage.dwParam % 730000) <= 12)
                                            {
                                                ConquerItem newItem = new GamePackets.ConquerItem(true);
                                                newItem.ID = itemUsage.dwParam;
                                                newItem.Plus = (Byte)(newItem.ID % 730000);
                                                client.Inventory.Add(newItem, Game.Enums.ItemUse.CreateAndAdd);
                                            }
                                            else
                                            {
                                                item = new ConquerItem(true);
                                                item.ID = itemUsage.dwParam;
                                                item.Durability = item.MaximDurability = iteminfo.BaseInformation.Durability;
                                                item.Color = (LordsRoad.Game.Enums.Color)3;
                                                client.Inventory.Add(item, Game.Enums.ItemUse.CreateAndAdd);
                                            }
                                            item.MaxStackSize = item.StackSize = 1;
                                            NewAmount--;
                                        }
                                        else
                                        {
                                            if (client.Inventory.GetStackContainer(iteminfo.BaseInformation.ID, iteminfo.BaseInformation.StackSize, 1, out _ExistingItem))
                                            {
                                                _ExistingItem.StackSize++;

                                                Database.ConquerItemTable.UpdateStack(_ExistingItem);
                                                _ExistingItem.Mode = Game.Enums.ItemMode.Update;
                                                _ExistingItem.Send(client);
                                                NewAmount -= 1;
                                            }
                                            else
                                            {
                                                item = new ConquerItem(true);
                                                item.ID = itemUsage.dwParam;
                                                item.Durability = item.MaximDurability = iteminfo.BaseInformation.Durability;
                                                item.Color = (LordsRoad.Game.Enums.Color)3;
                                                item.MaxStackSize = iteminfo.BaseInformation.StackSize;
                                                item.StackSize = 1;
                                                if (NewAmount >= item.MaxStackSize)
                                                {
                                                    item.StackSize = item.MaxStackSize;
                                                    NewAmount -= item.StackSize;
                                                }
                                                else
                                                {
                                                    item.StackSize = (ushort)NewAmount;
                                                    NewAmount = 0;
                                                }
                                                client.Inventory.Add(item, Game.Enums.ItemUse.CreateAndAdd);
                                                Database.ConquerItemTable.UpdateStack(item);
                                            }
                                        }
                                    }
                                    client.Entity.ConquerPoints -= (iteminfo.BaseInformation.ConquerPointsWorth * Amount);
                                    break;
                                }

                            }
                    }
                }
            }
        } 
avatar
FelipeXP
Administrador
Administrador

Mensagens : 317
Data de inscrição : 28/05/2014

Ver perfil do usuário https://www.youtube.com/channel/UCOmLJd3M1OSrMmlcR7UGlhw

Voltar ao Topo Ir em baixo

Re: Como arrumar as Both(Sistema de Shop)

Mensagem por [K]0M4N em Dom Jun 18, 2017 9:26 am

Ele corrige esse bug onde o booth não mostra o ItemIcon?
avatar
[K]0M4N
Membro
Membro

Mensagens : 14
Data de inscrição : 19/01/2016
Idade : 19
Localização : Brazil

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Como arrumar as Both(Sistema de Shop)

Mensagem por FelipeXP em Seg Jun 19, 2017 9:13 pm

talvez o problema seja o item

_________________
Grupo do Criando um conquer no Facebook : Clique Aqui
Facebook: Criando um Conquer
Canal no youtube : Clique aqui
avatar
FelipeXP
Administrador
Administrador

Mensagens : 317
Data de inscrição : 28/05/2014

Ver perfil do usuário https://www.youtube.com/channel/UCOmLJd3M1OSrMmlcR7UGlhw

Voltar ao Topo Ir em baixo

Re: Como arrumar as Both(Sistema de Shop)

Mensagem por [K]0M4N em Ter Jun 20, 2017 12:44 pm

Na verdade o problema era com o booth mesmo, o item não mudava o icone mesmo subindo o level dele então resolvi fazer o codigo do item e os icones estavam corretos então tentei colocar no shop por cps e funcionou
avatar
[K]0M4N
Membro
Membro

Mensagens : 14
Data de inscrição : 19/01/2016
Idade : 19
Localização : Brazil

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Como arrumar as Both(Sistema de Shop)

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum