public override bool TakeAction() { receipt = UsedItemResult.Successfully; var itemconfig = new ShareCacheStruct <Config_Item>().FindKey(itemId); if (itemconfig == null) { new BaseLog().SaveLog(string.Format("No found item config. ID={0}", itemId)); return(false); } var itemdata = GetPackage.FindItem(itemId); if (itemdata == null) { receipt = UsedItemResult.NoItem; return(true); } if (itemdata.Num < useNum) { receipt = UsedItemResult.ItemNumError; return(true); } switch (itemconfig.ResourceType) { case ResourceType.Gold: { BigInteger resourceNum = BigInteger.Parse(itemconfig.ResourceNum); BigInteger value = Math.Ceiling(GetBasis.UserLv / 50.0).ToInt() * resourceNum; UserHelper.RewardsGold(Current.UserId, value * useNum, UpdateCoinOperate.UserItemReward); //receipt.GainGold = resourceNum; } break; case ResourceType.Diamond: { UserHelper.RewardsDiamond(Current.UserId, itemconfig.ResourceNum.ToInt() * useNum, UpdateCoinOperate.UseItem); //receipt.GainDiamond = resourceNum * useNum; } break; case ResourceType.Gift: { var giftconfig = new ShareCacheStruct <Config_Giftbag>().Find(t => t.ItemID == itemconfig.ItemID); if (giftconfig == null) { new BaseLog().SaveLog(string.Format("No found gift config. ID={0}", itemconfig.ItemID)); return(false); } //receipt.GainItem = giftconfig.GetRewardsItem(); var list = giftconfig.GetRewardsItem(); foreach (var v in list) { v.Num *= useNum; } UserHelper.RewardsItems(Current.UserId, list); } break; case ResourceType.Elf: { var elfconfig = new ShareCacheStruct <Config_Elves>().Find(t => t.ElvesID == itemconfig.ResourceNum.ToInt()); if (elfconfig == null) { new BaseLog().SaveLog(string.Format("No found elf config. ID={0}", itemconfig.ResourceNum)); return(false); } if (itemconfig.ItemType == ItemType.Elf) { UserHelper.RewardsElf(Current.UserId, elfconfig.ElvesID); } else if (itemconfig.ItemType == ItemType.ElfExperienceCard) { long experienceTimeMin = itemconfig.ItemGrade * 60 * 24; UserHelper.RewardsElf(Current.UserId, elfconfig.ElvesID, true, experienceTimeMin); } } break; case ResourceType.Vit: { UserHelper.RewardsVit(Current.UserId, itemconfig.ResourceNum.ToInt() * useNum); //receipt.GainDiamond = resourceNum * useNum; } break; default: { receipt = UsedItemResult.Cannot; return(true); } } GetPackage.RemoveItem(itemId, useNum); return(true); }