Esempio n. 1
0
        public override bool TakeAction()
        {
            PlayerHeroLogic ph = new PlayerHeroLogic();

            ph.SetUser(m_UserId).SetHero(m_RequestPacket.HeroId);
            foreach (var iteminfo in m_RequestPacket.Items)
            {
                ItemListItem item = new ItemListItem()
                {
                    Id    = iteminfo.Type,
                    Count = iteminfo.Count
                };
                DTItem             itemData = CacheSet.ItemTable.GetData(item.Id);
                PlayerPackageLogic pp       = new PlayerPackageLogic();
                pp.SetUser(m_UserId);
                if (!pp.DeductInventory(item))
                {
                    ErrorCode = (int)ErrorType.RequireNotMet;
                    ErrorInfo = "You have not enough item";
                    return(false);
                }

                switch ((ItemFunctions)itemData.FunctionId)
                {
                case ItemFunctions.AddHeroExp:
                    ph.AddExp(int.Parse(itemData.FunctionParams) * item.Count);
                    var heroInfo = ph.GetHeroInfo();
                    m_ResponsePacket.HeroInfo = new PBLobbyHeroInfo()
                    {
                        Type  = heroInfo.HeroType,
                        Level = heroInfo.HeroLv,
                        Exp   = heroInfo.HeroExp,
                        Might = heroInfo.Might,
                    };
                    break;

                case ItemFunctions.HeroPiece:
                    AddSpirit(item.Count);
                    break;

                default:
                    break;
                }
                m_ResponsePacket.ItemInfo.Add(new PBItemInfo()
                {
                    Type  = item.Id,
                    Count = pp.MyPackage.Inventories[item.Id]
                });
            }
            return(true);
        }
Esempio n. 2
0
        public override bool TakeAction()
        {
            PlayerPackageLogic pp = new PlayerPackageLogic();

            pp.SetUser(m_UserId);
            PlayerLogic player = new PlayerLogic();

            player.SetUser(m_UserId);
            int totalCoin = 0;

            foreach (var item in m_RequestPacket.SoldItems)
            {
                ItemListItem tmpItem = new ItemListItem()
                {
                    Id    = item.Type,
                    Count = item.Count
                };
                if (!pp.DeductInventory(tmpItem))
                {
                    ErrorCode = (int)ErrorType.RequireNotMet;
                    ErrorInfo = "You have not enough item";
                    return(false);
                }
                DTItem itemData = CacheSet.ItemTable.GetData(item.Type);
                totalCoin += item.Count * itemData.Price;
                m_ResponsePacket.ItemInfo.Add(item);
            }
            foreach (var gear in m_RequestPacket.SoldGears)
            {
                if (!pp.DeductGear(gear.Id))
                {
                    ErrorCode = (int)ErrorType.RequireNotMet;
                    ErrorInfo = "You have not this gear";
                    return(false);
                }
                DTGear gearData = CacheSet.GearTable.GetData(gear.Type);
                totalCoin += gearData.Price;
                m_ResponsePacket.GearInfo.Add(gear);
            }
            player.AddCoin(totalCoin);
            m_ResponsePacket.PlayerInfo = new PBPlayerInfo()
            {
                Id   = player.MyPlayer.Id,
                Coin = player.MyPlayer.Coin
            };
            return(true);
        }
Esempio n. 3
0
        public void UseItem(int itemId, int count)
        {
            DTItem itemData = CacheSet.ItemTable.GetData(itemId);

            this.GetType().GetMethod("ProcessEffect" + itemData.FunctionId.ToString(), BindingFlags.Instance | BindingFlags.NonPublic).Invoke(this, new object[] { count, itemData.FunctionParams });
        }