protected override object this[string index] { get { #region switch (index) { case "LogID": return(LogID); case "UserID": return(UserID); case "SparePartID": return(SparePartID); case "SparePart": return(SparePart); case "PartStatus": return(PartStatus); case "CreateDate": return(CreateDate); default: throw new ArgumentException(string.Format("UserSparePartLog index[{0}] isn't exist.", index)); } #endregion } set { #region switch (index) { case "LogID": _LogID = value.ToInt(); break; case "UserID": _UserID = value.ToNotNullString(); break; case "SparePartID": _SparePartID = value.ToInt(); break; case "SparePart": _SparePart = ConvertCustomField <UserSparePart>(value, index); break; case "PartStatus": _PartStatus = value.ToShort(); break; case "CreateDate": _CreateDate = value.ToDateTime(); break; default: throw new ArgumentException(string.Format("UserSparePartLog index[{0}] isn't exist.", index)); } #endregion } }
/// <summary> /// 灵件操作日志 /// </summary> /// <param name="userId"></param> /// <param name="sparePartID"></param> /// <param name="userSparepartID"></param> /// <param name="userItemID"></param> /// <param name="position"></param> /// <param name="partStatus"></param> public static void AppendSparePartLog(string userId, UserSparePart sparePart, short partStatus) { UserSparePartLog partLog = new UserSparePartLog() { UserID = userId, SparePartID = sparePart.SparePartId, SparePart = sparePart, PartStatus = partStatus, CreateDate = DateTime.Now }; var sender = DataSyncManager.GetDataSender(); sender.Send(partLog); }
/// <summary> /// 获得灵件 /// </summary> /// <param name="user"></param> /// <param name="spareID"></param> public static void AppendSpare(GameUser user, int spareID) { SparePartInfo partInfo = new ShareCacheStruct <SparePartInfo>().FindKey(spareID); UserSparePart sparePart = UserSparePart.GetRandom(spareID); if (partInfo == null || sparePart == null || !SparePartInfo.IsExist(spareID)) { return; } if (!UserHelper.AddSparePart(user, sparePart)) { var chatService = new TjxChatService(); //掉落灵件 chatService.SystemSendWhisper(user, string.Format(LanguageManager.GetLang().St4303_SparePartFalling, partInfo.Name)); } }
protected override void ProcessCmd(string[] args) { int partID = args.Length > 0 ? args[0].Trim().ToInt() : 0; short partNum = args.Length > 1 ? args[1].Trim().ToShort() : (short)1; var user = UserCacheGlobal.LoadOffline(UserID); if (user == null) { return; } for (int i = 0; i < partNum; i++) { user.AppendSparePart(UserSparePart.GetRandom(partID)); } //user.Update(); }
private void ResetProperty() { //洗涤属性 var sparePart = ContextUser.SparePartList.Find(m => m.UserSparepartID.Equals(_sparepartID)); if (sparePart != null) { var sparePartInfo = new ConfigCacheSet <SparePartInfo>().FindKey(sparePart.SparePartId) ?? new SparePartInfo(); sparePart.UpdateNotify(obj => { for (int i = 0; i < sparePart.Propertys.Count; i++) { if (!sparePart.Propertys[i].IsEnable) { continue; } if (_partPropertys.Length > 0 && Array.Exists(_partPropertys, m => m.ToInt() - 1 == i)) { continue; } sparePart.Propertys[i] = UserSparePart.RandomProperty(sparePartInfo, false, sparePart.Propertys); var package = UserItemPackage.Get(Uid); UserItemInfo userItem = package.ItemPackage.Find(m => !m.IsRemove && m.UserItemID.Equals(sparePart.UserItemID)); if (userItem != null && userItem.ItemStatus.Equals(ItemStatus.YongBing)) { var userGeneral = new GameDataCacheSet <UserGeneral>().FindKey(Uid, userItem.GeneralID); if (userGeneral != null) { userGeneral.RefreshMaxLife(); } } } return(true); }); _sparePart = ContextUser.SparePartList.Find(m => m.UserSparepartID.Equals(_sparepartID)); //ContextUser.UpdateSparePart(); } }
/// <summary> /// 灵件ID=数量=属性ID:区间|属性ID:区间 /// </summary> /// <param name="list"></param> /// <param name="userID"></param> private static void PutSparePackage(string[] list, string userID) { var chatService = new TjxChatService(); foreach (var item in list) { if (string.IsNullOrEmpty(item)) { continue; } string[] itemList = item.Split(new char[] { '=' }); int spareID = itemList.Length > 0 ? Convert.ToInt32(itemList[0]) : 0; int spareNum = itemList.Length > 1 ? Convert.ToInt32(itemList[1]) : 0; string[] propertys = itemList.Length > 2 ? itemList[2].ToNotNullString().Split('|') : new string[0]; var sparePartInfo = new ShareCacheStruct <SparePartInfo>().FindKey(spareID); if (spareNum > 0 && propertys.Length > 0 && sparePartInfo != null) { for (int i = 0; i < spareNum; i++) { UserSparePart sparePart = UserSparePart.CreateSparePart(spareID, propertys, ':'); if (sparePart == null) { continue; } GameUser user = new PersonalCacheStruct <GameUser>().FindKey(userID); if (!UserHelper.AddSparePart(user, sparePart)) { chatService.SystemSendWhisper(user, string.Format(LanguageManager.GetLang().St4303_SparePartFalling, sparePartInfo.Name) + "*" + spareNum); } } } else { new Base.BaseLog().SaveLog("领取灵件异常", new Exception(string.Format("userID:{3},spareID:{0},spareNum:{1},propertys:{2}", spareID, spareNum, propertys.Length, userID))); } } }
/// <summary> /// 获得物品 /// </summary> /// <param name="userInfo"></param> /// <param name="prize"></param> /// <returns></returns> public bool DoPrize(GameUser userInfo, List <PrizeInfo> prizeList) { try { bool isDeduct = false; CrystalInfo crystal = new CrystalInfo(); content = LanguageManager.GetLang().St_SummerThreeGameCoinNotice.Substring(0, 5); foreach (PrizeInfo prize in prizeList) { int num = prize.Num; switch (prize.Type) { case RewardType.GameGoin: userInfo.GameCoin = MathUtils.Addition(userInfo.GameCoin, num); if (content.Length == 0) { content = string.Format(LanguageManager.GetLang().St_SummerThreeGameCoinNotice, num); } else { content += string.Format(LanguageManager.GetLang().St_GameCoin, num) + ","; } break; case RewardType.Obtion: userInfo.ObtainNum = MathUtils.Addition(userInfo.ObtainNum, num); if (content.Length == 0) { content = string.Format(LanguageManager.GetLang().St_SummerThreeObtionNotice, num); } else { content += string.Format(LanguageManager.GetLang().St_ObtionNum, num) + ","; } break; case RewardType.ExpNum: userInfo.ExpNum = MathUtils.Addition(userInfo.ExpNum, num); if (content.Length == 0) { content = string.Format(LanguageManager.GetLang().St_SummerThreeExpNumNotice, num); } else { content += string.Format(LanguageManager.GetLang().St_ExpNum, num) + ","; } break; case RewardType.EnergyNum: userInfo.EnergyNum = MathUtils.Addition(userInfo.EnergyNum, (short)num, short.MaxValue); if (content.Length == 0) { content = string.Format(LanguageManager.GetLang().St_SummerThreeEnergyNotice, num); } else { content += string.Format(LanguageManager.GetLang().St_EnergyNum, num) + ","; } break; case RewardType.Experience: UserHelper.UserGeneralExp(userInfo.UserID, num); if (content.Length == 0) { content = string.Format(LanguageManager.GetLang().St_SummerThreeExperienceNotice, num); } else { content += string.Format(LanguageManager.GetLang().St_Experience, num) + ","; } break; case RewardType.Gold: userInfo.ItemGold = MathUtils.Addition(userInfo.ItemGold, num); if (content.Length == 0) { content = string.Format(LanguageManager.GetLang().St_SummerThreeGoldNotice, num); } else { content += string.Format(LanguageManager.GetLang().St_GiftGoldNum, num) + ","; } break; case RewardType.Item: if (UserHelper.IsBeiBaoFull(userInfo)) { content = LanguageManager.GetLang().St1107_GridNumFull; return(false); } UserItemHelper.AddUserItem(userInfo.UserID, prize.ItemID, num); ItemBaseInfo itemInfo = new ConfigCacheSet <ItemBaseInfo>().FindKey(prize.ItemID); if (itemInfo != null) { if (content.Length == 0) { content = string.Format(LanguageManager.GetLang().St_SummerThreeItemNotice, num); } else { content += string.Format("{0}*{1}", itemInfo.ItemName, num) + ","; } } break; case RewardType.CrystalType: if (!UserCrystalInfo.CheckFull(userInfo.UserID, 0)) { content = LanguageManager.GetLang().St1307_FateBackpackFull; return(false); } List <CrystalInfo> crystalArray2 = new ConfigCacheSet <CrystalInfo>().FindAll(m => m.CrystalQuality == prize.CrystalType); if (crystalArray2.Count > 0) { int randomNum = RandomUtils.GetRandom(0, crystalArray2.Count); int crystalID = crystalArray2[randomNum].CrystalID; UserHelper.CrystalAppend(userInfo.UserID, crystalID, 2); CrystalHelper.SendChat(crystalArray2[randomNum].CrystalID, userInfo); crystal = new ConfigCacheSet <CrystalInfo>().FindKey(crystalID); if (crystal != null) { content += string.Format(LanguageManager.GetLang().St_Crystal, CrystalHelper.GetQualityName(crystal.CrystalQuality), crystal.CrystalName) + ","; } } else { TraceLog.WriteError("配置出错"); return(false); } break; case RewardType.CrystalId: if (!UserCrystalInfo.CheckFull(userInfo.UserID, 0)) { content = LanguageManager.GetLang().St1307_FateBackpackFull; return(false); } UserHelper.CrystalAppend(userInfo.UserID, prize.ItemID, 2); CrystalHelper.SendChat(prize.ItemID, userInfo); crystal = new ConfigCacheSet <CrystalInfo>().FindKey(prize.ItemID); if (crystal != null) { content += string.Format(LanguageManager.GetLang().St_Crystal, CrystalHelper.GetQualityName(crystal.CrystalQuality), crystal.CrystalName) + ","; } break; case RewardType.Spare: int currNum = userInfo.SparePartList.FindAll(m => string.IsNullOrEmpty(m.UserItemID)).Count; if (currNum >= userInfo.UserExtend.SparePartGridNum) { content = LanguageManager.GetLang().St1213_GridNumFull; return(false); } UserSparePart sparePart = UserSparePart.GetRandom(prize.ItemID); SparePartInfo partInfo = new ConfigCacheSet <SparePartInfo>().FindKey(prize.ItemID); if (partInfo != null && sparePart != null && UserHelper.AddSparePart(userInfo, sparePart)) { SendChat(prize, userInfo.NickName, partInfo.Name); } content = string.Empty; break; default: break; } if (prize.Reward == 3 && !string.IsNullOrEmpty(prize.Desc)) { content = prize.Desc; } //原因:开启礼包消耗的物品 if (prize.DemandItem > 0 && !isDeduct) { UserItemHelper.UseUserItem(userInfo.UserID, prize.DemandItem, prize.DemandNum); isDeduct = true; } } return(true); } catch (Exception ex) { content = "使用礼包出错!"; TraceLog.WriteError("使用礼包出错!", ex); } return(false); }