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); }
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); }
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 }); }