public void SaveItem(UserItemInfo item) { if (item == null || string.IsNullOrEmpty(item.UserItemID)) { return; } var tempItem = ItemPackage.Find(m => !string.IsNullOrEmpty(item.UserItemID) && string.Equals(m.UserItemID, item.UserItemID)); if (tempItem == null) { ItemPackage.Add(item); } else { tempItem.UpdateNotify(obj => { tempItem.UserItemID = item.UserItemID; tempItem.GeneralID = item.GeneralID; tempItem.IsRemove = item.IsRemove; tempItem.ItemID = item.ItemID; tempItem.ItemLv = item.ItemLv; tempItem.ItemStatus = item.ItemStatus; tempItem.ItemType = item.ItemType; tempItem.Num = item.Num; tempItem.SoldDate = item.SoldDate; return(true); }); } }
public override bool TakeAction() { var package = UserItemPackage.Get(ContextUser.UserID); UserItemInfo useritem = package.ItemPackage.Find(m => !m.IsRemove && m.UserItemID.Equals(userItemID)); if (useritem != null) { ItemBaseInfo itemInfo = new ShareCacheStruct <ItemBaseInfo>().FindKey(useritem.ItemID); if (itemInfo != null && itemInfo.DemandLv > ContextUser.VipLv) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St_VipNotEnough; return(false); } } ItemUseHelper itemuse = new ItemUseHelper(); itemuse.UseItem(userItemID, Uid); if (itemuse.result && itemuse.content != string.Empty) { ErrorCode = 0; } if (!itemuse.result) { ErrorCode = LanguageManager.GetLang().ErrorCode; } ErrorInfo = itemuse.content.Trim(','); return(true); }
/// <summary> /// 强化 /// </summary> private void UpdateUserItem(GameUser user, UserItemInfo userItem, int strongMoney) { if (user.GameCoin >= strongMoney) { user.GameCoin = MathUtils.Subtraction(user.GameCoin, strongMoney, 0); var package = UserItemPackage.Get(user.UserID); strongLv = 0; VipLvInfo vipLvInfo = new ConfigCacheSet <VipLvInfo>().FindKey(user.VipLv); for (int i = 0; i < ops; i++) { EquStreng streng = null; if (vipLvInfo != null && vipLvInfo.EquStreng != null) { streng = vipLvInfo.EquStreng; } if (streng != null && RandomUtils.IsHit(streng.probability)) { strongLv += (short)RandomUtils.GetRandom(streng.start, streng.end); } else { strongLv += 1; } } userItem.ItemLv = MathUtils.Addition(userItem.ItemLv, strongLv); package.SaveItem(userItem); UserLogHelper.AppenStrongLog(user.UserID, 1, userItem.UserItemID, userItem.ItemID, 2, userItem.ItemLv, 0, userItem.GeneralID); } }
private void AppenUserItem(ItemSynthesisInfo synthesisInfo, int ugeneralID, ItemStatus istatus, short itemLv) { //原因:合成黄色装备,物品存放为0 if (istatus != ItemStatus.YongBing) { istatus = ItemStatus.BeiBao; } var package = UserItemPackage.Get(Uid); string uitemID = Guid.NewGuid().ToString(); UserItemInfo userItem = new UserItemInfo() { UserItemID = uitemID, ItemID = synthesisInfo.ItemID, ItemLv = MathUtils.Subtraction(itemLv, (short)5, (short)1), ItemStatus = istatus, ItemType = ItemType.ZhuangBei, GeneralID = ugeneralID, Num = 1 }; package.SaveItem(userItem); //package.DelayChange(); UserItemHelper.AddItemLog(ContextUser.UserID, synthesisInfo.ItemID, 1, MathUtils.Subtraction(itemLv, (short)5, (short)1), 5, uitemID); }
public override bool TakeAction() { var package = UserItemPackage.Get(ContextUser.UserID); UserItemInfo userItem = package.ItemPackage.Find(m => !m.IsRemove && m.UserItemID == userItemID); if (userItem != null) { UserTrump userTrump = new GameDataCacheSet <UserTrump>().FindKey(ContextUser.UserID, TrumpInfo.CurrTrumpID); if (userTrump != null && userTrump.TrumpLv >= GameConfigSet.MaxTrumpLv) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St1456_OutTrumpMaxLv; return(false); } ItemBaseInfo itemInfo = new ConfigCacheSet <ItemBaseInfo>().FindKey(userItem.ItemID); if (itemInfo != null && itemInfo.PropType == 10) { TrumpHelper.CheckTrumpEscalate(ContextUser.UserID, itemInfo.EffectNum); UserItemHelper.UseUserItem(ContextUser.UserID, itemInfo.ItemID, 1); var usergeneral = UserGeneral.GetMainGeneral(ContextUser.UserID); if (usergeneral != null) { usergeneral.RefreshMaxLife(); } } } return(true); }
public override bool TakeAction() { int uItemID = 0; if (itemID == 0 && userItemID != "") { var package = UserItemPackage.Get(Uid); UserItemInfo userItem = package.ItemPackage.Find(m => !m.IsRemove && m.UserItemID.Equals(userItemID)); if (userItem != null) { uItemID = userItem.ItemID; } } else { uItemID = itemID; } List <ItemSynthesisInfo> itemSynthesisArray = new ConfigCacheSet <ItemSynthesisInfo>().FindAll(u => u.SynthesisID.Equals(uItemID)); if (itemSynthesisArray.Count > 0) { itemInfo = new ConfigCacheSet <ItemBaseInfo>().FindKey(itemSynthesisArray[0].ItemID); //合成物品的信息 //synthesisArray = new ConfigCacheSet<ItemSynthesisInfo>().FindAll(u => u.ItemID.Equals(itemInfo.ItemID) && u.SynthesisID != itemID); synthesisArray = new ConfigCacheSet <ItemSynthesisInfo>().FindAll(u => u.ItemID.Equals(itemInfo.ItemID)); equAttrInfo = new ConfigCacheSet <ItemEquAttrInfo>().FindAll(u => u.ItemID.Equals(itemInfo.ItemID)); } synthesisMinLv = ConfigEnvSet.GetInt("ItemInfo.SynthesisMinLv"); return(true); }
public override bool TakeAction() { var package = UserItemPackage.Get(Uid); UserItemInfo userItem = package.ItemPackage.Find(m => !m.IsRemove && m.UserItemID.Equals(userItemID)); if (userItem == null) { this.ErrorCode = LanguageManager.GetLang().ErrorCode; this.ErrorInfo = LanguageManager.GetLang().St1107_UserItemNotEnough; return(false); } if (ops == 1) { var ckUserItemArray = UserItemHelper.GetItems(Uid).FindAll(m => m.ItemStatus == ItemStatus.CangKu); if (ckUserItemArray.Count >= ContextUser.WarehouseNum) { this.ErrorCode = LanguageManager.GetLang().ErrorCode; this.ErrorInfo = LanguageManager.GetLang().St1107_WarehouseNumFull; return(false); } UserItemHelper.MergerUserItem(ContextUser.UserID, userItemID, ItemStatus.CangKu); } else if (ops == 2) { var bbUserItemArray = UserItemHelper.GetItems(Uid).FindAll(m => m.ItemStatus == ItemStatus.BeiBao); if (bbUserItemArray.Count >= ContextUser.GridNum) { this.ErrorCode = LanguageManager.GetLang().ErrorCode; this.ErrorInfo = LanguageManager.GetLang().St1107_GridNumFull; return(false); } UserItemHelper.MergerUserItem(ContextUser.UserID, userItemID, ItemStatus.BeiBao); } return(true); }
/// <summary> /// ����ճ�������Ʒ���� /// </summary> /// <param name="userLv"></param> /// <returns></returns> public UserItemInfo GetDailyItem(short userLv) { UserItemInfo userItem = null; int index = (int)TaskStar - 1; var cacheSet = new ShareCacheStruct <DailyTaskInfo>(); DailyTaskInfo dtaskInfo = cacheSet.FindKey(TaskID); string[] NumRank = dtaskInfo.QishiNumRank.ToNotNullString().Split(new char[] { ',' }); int num = NumRank.Length > index && index >= 0 ? NumRank[index].ToInt() : 0; if (num <= 0) { return(userItem); } string[] QishiRank = dtaskInfo.QishiRank.ToNotNullString().Split(new char[] { ',' }); string[] UserLvRank = dtaskInfo.UserLvRank.ToNotNullString().Split(new char[] { ',' }); if (QishiRank.Length > 0 && QishiRank.Length == UserLvRank.Length) { int itemIndex = GetItemIndex(UserLvRank, userLv); int itemID = QishiRank.Length > itemIndex ? QishiRank[itemIndex].ToInt() : 0; ItemBaseInfo itemInfo = new ShareCacheStruct <ItemBaseInfo>().FindKey(itemID); if (itemInfo != null) { userItem = new UserItemInfo(); userItem.ItemID = itemInfo.ItemID; userItem.Num = num; } } return(userItem); }
/// <summary> /// 双倍材料,月饼道具使用 /// </summary> /// <param name="userItem"></param> /// <param name="itemInfo"></param> /// <returns></returns> private bool DoCaiLiaoYueBingItem(UserItemInfo userItem, ItemBaseInfo itemInfo) { UserProps props = new GameDataCacheSet <UserProps>().FindKey(ContextUser.UserID, userItem.ItemID); if (props != null) { if (userItem.ItemID == 5200 && props.DoRefresh() > 0) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St1608_CombatPowerNotEnough; return(false); } props.SurplusNum += itemInfo.EffectNum; props.ChangeTime = DateTime.Now; //props.Update(); } else { UserProps uProps = new UserProps(ContextUser.UserID, itemInfo.ItemID) { SurplusNum = itemInfo.EffectNum, ChangeTime = DateTime.Now }; new GameDataCacheSet <UserProps>().Add(uProps, GameEnvironment.CacheUserPeriod); } return(true); }
/// <summary> /// 新手礼包 /// </summary> /// <param name="user"></param> /// <param name="item"></param> /// <param name="noviceActivities"></param> /// <returns></returns> public static bool GetNoviceActivities(GameUser user, UserItemInfo item, NoviceActivities noviceActivities) { List <NoviceReward> noviceArray = noviceActivities.Reward.ToList(); var package = UserItemPackage.Get(user.UserID); var userItemArray = package.ItemPackage.FindAll(m => !m.IsRemove && m.ItemStatus == ItemStatus.BeiBao); int subPackNum = MathUtils.Subtraction(user.GridNum, MathUtils.Subtraction(userItemArray.Count, 5, 0), 0); if (noviceArray.Count > subPackNum) { return(false); } bool isupdate = false; foreach (NoviceReward reward in noviceArray) { if (reward.Type == 1) { isupdate = true; user.EnergyNum = MathUtils.Addition(user.EnergyNum, (short)reward.Num, short.MaxValue); } if (reward.Type == 2) { isupdate = true; user.GameCoin = MathUtils.Addition(user.GameCoin, reward.Num, int.MaxValue); } else if (reward.Type == 3) { ItemBaseInfo itemInfo = new ShareCacheStruct <ItemBaseInfo>().FindKey(reward.Reward); UserGeneral userGeneral = UserGeneral.GetMainGeneral(user.UserID); if (itemInfo.ItemType == ItemType.ZhuangBei && !itemInfo.CheckCareer(userGeneral.CareerID)) { continue; } UserItemHelper.AddUserItem(user.UserID, itemInfo.ItemID, reward.Num); } else if (reward.Type == 4) { //晶石 isupdate = true; user.GiftGold = MathUtils.Addition(user.GiftGold, reward.Num, int.MaxValue); } } UserItemHelper.UseUserItem(user.UserID, item.ItemID, 1); if (isupdate) { //user.Update(); } if (item.ItemID == 5000 || item.ItemID == 5001 || item.ItemID == 5002 || item.ItemID == 5003) { int itemID = MathUtils.Addition(item.ItemID, 1, int.MaxValue); UserItemHelper.AddUserItem(user.UserID, itemID, 1); } return(true); }
/// <summary> /// 新手礼包 /// </summary> /// <param name="user"></param> /// <param name="item"></param> /// <param name="noviceActivities"></param> /// <returns></returns> public static bool GetNoviceActivities(GameUser user, UserItemInfo item, NoviceActivities noviceActivities) { List<NoviceReward> noviceArray = noviceActivities.Reward.ToList(); var package = UserItemPackage.Get(user.UserID); var userItemArray = package.ItemPackage.FindAll(m => !m.IsRemove && m.ItemStatus == ItemStatus.BeiBao); int subPackNum = MathUtils.Subtraction(user.GridNum, MathUtils.Subtraction(userItemArray.Count, 5, 0), 0); if (noviceArray.Count > subPackNum) { return false; } bool isupdate = false; foreach (NoviceReward reward in noviceArray) { if (reward.Type == 1) { isupdate = true; user.EnergyNum = MathUtils.Addition(user.EnergyNum, (short)reward.Num, short.MaxValue); } if (reward.Type == 2) { isupdate = true; user.GameCoin = MathUtils.Addition(user.GameCoin, reward.Num, int.MaxValue); } else if (reward.Type == 3) { ItemBaseInfo itemInfo = new ConfigCacheSet<ItemBaseInfo>().FindKey(reward.Reward); UserGeneral userGeneral = UserGeneral.GetMainGeneral(user.UserID); if (itemInfo.ItemType == ItemType.ZhuangBei && !itemInfo.CheckCareer(userGeneral.CareerID)) { continue; } UserItemHelper.AddUserItem(user.UserID, itemInfo.ItemID, reward.Num); } else if (reward.Type == 4) { //晶石 isupdate = true; user.GiftGold = MathUtils.Addition(user.GiftGold, reward.Num, int.MaxValue); } } UserItemHelper.UseUserItem(user.UserID, item.ItemID, 1); if (isupdate) { //user.Update(); } if (item.ItemID == 5000 || item.ItemID == 5001 || item.ItemID == 5002 || item.ItemID == 5003) { int itemID = MathUtils.Addition(item.ItemID, 1, int.MaxValue); UserItemHelper.AddUserItem(user.UserID, itemID, 1); } return true; }
public override bool TakeAction() { try { MaxLength = ConfigEnvSet.GetInt("User.MaxLength"); itemID = ConfigEnvSet.GetInt("UserName.ItemID"); int length = System.Text.Encoding.Default.GetByteCount(_nickName); if (length <= 0 || length > MaxLength) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = string.Format(LanguageManager.GetLang().St1005_KingNameTooLong, MaxLength); return(false); } if (GameUser.IsNickName(_nickName)) { ErrorCode = 1; ErrorInfo = LanguageManager.GetLang().St1005_Rename; return(false); } //UserItemLog userItem = UserItemLog.FindKey(itemID); var package = UserItemPackage.Get(Uid); UserItemInfo userItem = package.ItemPackage.Find(m => !m.IsRemove && m.ItemID == itemID); if (userItem == null || userItem.Num <= 0) { ErrorCode = LanguageManager.GetLang().ErrorCode; return(false); } ContextUser.NickName = _nickName; int rankID = 0; UserRank rankInfo; Ranking <UserRank> ranking = RankingFactory.Get <UserRank>(CombatRanking.RankingKey); if (ranking.TryGetRankNo(m => m.UserID == ContextUser.UserID, out rankID)) { rankInfo = ranking.Find(s => s.UserID == ContextUser.UserID); if (rankInfo != null) { rankInfo.NickName = _nickName; } } //ContextUser.Update(); //UserGeneral usergen = UserGeneral.GetMainGeneral(ContextUser.UserID); //if (usergen != null) //{ // usergen.GeneralName = _nickName; // //usergen.Update(); //} UserItemHelper.UseUserItem(ContextUser.UserID, itemID, 1); return(true); } catch (Exception ex) { SaveLog(ex); return(false); } }
public override bool TakeAction() { MosaicInfo mosaicInfo = new ShareCacheStruct <MosaicInfo>().FindKey(postion); if (mosaicInfo != null) { notchColor = mosaicInfo.MosaicColor; } var package = UserEnchant.Get(ContextUser.UserID); var itemPackage = UserItemPackage.Get(ContextUser.UserID); if (package == null || itemPackage == null) { return(false); } UserItemInfo userItem = itemPackage.ItemPackage.Find(m => m.UserItemID == userItemID); if (userItem != null) { int openPostion = EnchantHelper.EnchantOpenGridNum(userItem.ItemLv); if (postion > openPostion) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St1213_GridNumNotEnough; return(false); } var userEnchantInfo = package.EnchantPackage.Find(m => m.UserItemID == userItemID && m.Position == postion); if (userEnchantInfo != null) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St1259_EnchantOpenGridFull; return(false); } List <UserEnchantInfo> enchantList = new List <UserEnchantInfo>(); var enchantInfoArray = package.EnchantPackage.FindAll(m => string.IsNullOrEmpty(m.UserItemID)); foreach (var info in enchantInfoArray) { EnchantInfo enchantInfo = new ShareCacheStruct <EnchantInfo>().FindKey(info.EnchantID); if (enchantInfo != null && EnchantHelper.IsMosaicColor(postion, enchantInfo.ColorType)) { enchantList.Add(info); } } if (enchantList.Count == 0) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St1261_EnchantEquipmentNotEnough; return(false); } enchantArray = enchantList.GetPaging(pageIndex, pageSize, out PageCount).ToArray(); } return(true); }
public override bool TakeAction() { if (string.IsNullOrEmpty(ContextUser.MercenariesID) || guildID != ContextUser.MercenariesID) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St9203_ChaTypeNotGuildMember; return(false); } UserGuild userGuild = new ShareCacheStruct <UserGuild>().FindKey(guildID); if (userGuild == null) { return(false); } GuildMember member = new ShareCacheStruct <GuildMember>().FindKey(ContextUser.MercenariesID, ContextUser.UserID); if (member != null) { if (member.PostType == PostType.Member) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St6024_AuditPermissions; return(false); } } else { return(false); } //UserItem userItem = UserItem.FindKey(itemID); var package = UserItemPackage.Get(Uid); UserItemInfo userItem = package.ItemPackage.Find(m => !m.IsRemove && m.ItemID == itemID); if (userItem == null || userItem.Num <= 0) { ErrorCode = 1; return(false); } if (userGuild.AddMember >= maxMember) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St6024_GuildAddMemberToLong; return(false); } ItemBaseInfo item = new ConfigCacheSet <ItemBaseInfo>().FindKey(itemID); if (item != null) { addMember = item.EffectNum; } userGuild.AddMember += addMember; //userGuild.Update(); UserItemHelper.UseUserItem(ContextUser.UserID, itemID, 1); return(true); }
/// <summary> /// 合成后装备 /// </summary> /// <param name="itemID"></param> /// <param name="info"></param> private void UpdateUserItem(int itemID, UserItemInfo info) { //原因:合成黄色装备,物品存放为0 info.ItemID = itemID; info.ItemLv = MathUtils.Subtraction(info.ItemLv, (short)5, (short)1); var package = UserItemPackage.Get(Uid); info.ItemType = ItemType.ZhuangBei; package.SaveItem(info); //package.DelayChange(); UserItemHelper.AddItemLog(ContextUser.UserID, itemID, 1, info.ItemLv, 5, info.UserItemID); }
/// <summary> /// 领取神秘礼包 /// </summary> /// <returns></returns> public static void MysteriousSpree(UserItemInfo item, GameUser user) { ItemBaseInfo itemInfo = new ShareCacheStruct <ItemBaseInfo>().FindKey(item.ItemID); if (itemInfo != null) { var prizeInfosArray = itemInfo.ItemPack; int randomNum = RandomUtils.GetRandom(0, prizeInfosArray.Count); PrizeInfo prizeInfo = prizeInfosArray[randomNum]; ActivitiesAward.GameUserReward(user.UserID, prizeInfo.Type, prizeInfo.ItemID, prizeInfo.Num); } }
private static string SetUserItem(UserItemInfo userItem, string userID, ItemBaseInfo itemInfo, ItemStatus itemStatus, short itemLv) { string uitemID = System.Guid.NewGuid().ToString(); userItem.UserItemID = uitemID; userItem.ItemID = itemInfo.ItemID; userItem.ItemStatus = itemStatus; userItem.GeneralID = itemStatus == ItemStatus.YongBing ? UserGeneral.MainID : 0; userItem.ItemLv = itemLv; userItem.ItemType = itemInfo.ItemType; return(uitemID); }
/// <summary> /// 被合成的装备 /// </summary> /// <param name="userID"></param> /// <param name="itemID"></param> /// <returns></returns> public static UserItemInfo GetUserItemInfo(string userID, int itemID) { UserItemInfo userItemInfo = null; var userItemsArray = UserItemHelper.GetItems(userID).FindAll(u => u.ItemID == itemID && (u.ItemStatus == ItemStatus.BeiBao || u.ItemStatus == ItemStatus.CangKu)); if (userItemsArray.Count == 0) { userItemsArray = UserItemHelper.GetItems(userID).FindAll(u => u.ItemID == itemID && u.ItemStatus == ItemStatus.YongBing && new UserItemHelper(u).GeneralStatus(userID) != GeneralStatus.LiDui); } if (userItemsArray.Count > 0) { userItemInfo = userItemsArray[0]; } return(userItemInfo); }
/// <summary> /// 当前佣兵身上的武器 /// </summary> /// <param name="userID"></param> /// <param name="generalID"></param> /// <returns></returns> public static UserItemInfo GetGeneralWeapon(string userID, int generalID) { UserItemInfo useritem = null; var package = UserItemPackage.Get(userID); if (package != null) { UserItemInfo[] userItemArray = package.ItemPackage.FindAll(m => !m.IsRemove && m.GeneralID == generalID && m.Equparts == EquParts.WuQi).ToArray(); if (userItemArray.Length > 0) { useritem = userItemArray[0]; } } return(useritem); }
/// <summary> /// 判断是否合成装备 /// </summary> /// <param name="uItemID"></param> /// <returns></returns> public static bool IsSynthesisEqu(string userId, string uItemID) { bool isEqu = false; var package = UserItemPackage.Get(userId); UserItemInfo userItem = package.ItemPackage.Find(m => !m.IsRemove && m.UserItemID.Equals(uItemID)); if (userItem != null) { ItemBaseInfo itemBaseInfo = new ConfigCacheSet <ItemBaseInfo>().FindKey(userItem.ItemID); if (itemBaseInfo != null && itemBaseInfo.ItemType == ItemType.ZhuangBei) { isEqu = true; } } return(isEqu); }
public void RemoveItem(UserItemInfo userItem) { if (userItem != null) { userItem.IsRemove = true; ItemPackage.Remove(userItem); TraceLog.Write(string.Format("UserId:{0} remove item:'{1}' {2}*{3},state:{4},lv:{5}", UserID, userItem.UserItemID, userItem.ItemID, userItem.Num, userItem.ItemStatus, userItem.ItemLv)); } }
/// <summary> /// 传入仓库或取出物品后合并物品 /// </summary> public static void MergerUserItem(string userID, string userItemID, ItemStatus itemStatus) { var package = UserItemPackage.Get(userID); UserItemInfo userItem = package.ItemPackage.Find(m => !m.IsRemove && string.Equals(m.UserItemID, userItemID)); if (userItem != null) { ItemBaseInfo itemInfo = new ConfigCacheSet <ItemBaseInfo>().FindKey(userItem.ItemID); if (itemInfo == null) { return; } if (userItem.Num == itemInfo.PackMaxNum) { userItem.ItemStatus = itemStatus; package.SaveItem(userItem); } else { int itemNum = userItem.Num; var itemArray = package.ItemPackage.FindAll(u => !u.IsRemove && u.ItemID == userItem.ItemID && u.ItemStatus.Equals(itemStatus)); foreach (var item in itemArray) { if (item.Num < itemInfo.PackMaxNum) { int subNum = MathUtils.Subtraction(itemInfo.PackMaxNum, item.Num, 0); item.Num = MathUtils.Addition(item.Num, itemNum, itemInfo.PackMaxNum); itemNum = MathUtils.Subtraction(itemNum, subNum, 0); package.SaveItem(item); //item.Update(); } } if (itemNum > 0) { userItem.Num = itemNum; userItem.ItemStatus = itemStatus; package.SaveItem(userItem); } else { AddItemLog(userID, userItem.ItemID, itemNum, userItem.ItemLv, 7, userItemID); package.RemoveItem(userItem); } } } }
/// <summary> /// 随机获得金币、精力奖励 /// </summary> /// <param name="item"></param> /// <param name="user"></param> public static void GetProbabilityReward(GameUser user, UserItemInfo item) { ItemBaseInfo itemInfo = new ShareCacheStruct <ItemBaseInfo>().FindKey(item.ItemID); if (itemInfo != null) { var prizeInfosArray = itemInfo.ItemPack; double[] probability = new double[prizeInfosArray.Count]; for (int i = 0; i < prizeInfosArray.Count; i++) { probability[i] = (double)prizeInfosArray[i].Probability; } int index2 = RandomUtils.GetHitIndex(probability); PrizeInfo prizeInfo = prizeInfosArray[index2]; ActivitiesAward.GameUserReward(user.UserID, prizeInfo.Type, prizeInfo.ItemID, prizeInfo.Num); UserItemHelper.UseUserItem(user.UserID, item.ItemID, 1); } }
public override bool TakeAction() { if (NoviceHelper.IsFestivalOpen(festivalID)) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().ZhongYuanHuodong; return(false); } var package = UserItemPackage.Get(Uid); UserItemInfo userItem = package.ItemPackage.Find(m => !m.IsRemove && m.UserItemID.Equals(userItemID)); if (userItem != null) { ItemBaseInfo itemInfo = new ConfigCacheSet <ItemBaseInfo>().FindKey(userItem.ItemID); if (itemInfo == null) { ErrorCode = LanguageManager.GetLang().ErrorCode; //ErrorInfo = LanguageManager.GetLang().St1107_UserItemNotEnough; return(false); } if (userItem.ItemID == 7003 || userItem.ItemID == 5200) { //双倍材料掉落卡 if (!DoCaiLiaoYueBingItem(userItem, itemInfo)) { return(false); } } else { //其他类型的道具 if (!UseProps(ContextUser.UserID, itemInfo)) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St1608_CombatPowerNotEnough; return(false); } } PictureID = itemInfo.PictrueID; UserItemHelper.UseUserItem(ContextUser.UserID, userItem.ItemID, 1); } return(true); }
public void AddUserItems(ItemInfo itemInfo) { UserItemInfo temp_info = new UserItemInfo { itemID = ( uint )itemInfo.ItemId, buyTime = ( ulong )itemInfo.BuyTime, endTime = ( ulong )itemInfo.EndTime, itemNum = ( int )itemInfo.ItemNum }; //若不为永久拥有,过期则删除 if (-1 != itemInfo.EndTime && 0 > itemInfo.EndTime + itemInfo.BuyTime - TimeUtils.utcTime) { CS.instance.userMgr.UserAskUdateItem(temp_info, DBOperation.Del, this.guid); } else { this.userDbData.item_Map[temp_info.itemID] = temp_info; } }
public override bool TakeAction() { string puUserID; if (string.IsNullOrEmpty(toUserID)) { puUserID = ContextUser.UserID; } else { puUserID = toUserID; UserCacheGlobal.LoadOffline(puUserID); } UserGeneral general = new PersonalCacheStruct <UserGeneral>().FindKey(puUserID, generalID); if (general == null) { ErrorCode = LanguageManager.GetLang().ErrorCode; return(false); } generalName = general.GeneralName; careerID = general.CareerID; var package = UserEnchant.Get(puUserID); UserItemInfo useritem = EnchantHelper.GetGeneralWeapon(general.UserID, general.GeneralID); if (useritem != null) { userItemID = useritem.UserItemID; ItemBaseInfo itemInfo = new ShareCacheStruct <ItemBaseInfo>().FindKey(useritem.ItemID); if (itemInfo != null) { itemName = itemInfo.ItemName; headID = itemInfo.HeadID; } openNum = EnchantHelper.EnchantOpenGridNum(useritem.ItemLv); enchantArray = package.EnchantPackage.FindAll(m => m.UserItemID == useritem.UserItemID).ToArray(); } return(true); }
public override bool TakeAction() { ErrorCode = _ops; int goldNum = ConfigEnvSet.GetInt("SparePart.PropertyGoldNum"); if (_ops == 1) { ErrorInfo = string.Format(LanguageManager.GetLang().St1216_EnableSpartProperty, goldNum, _position); } else if (_ops == 2) { if (ContextUser.GoldNum < goldNum) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St_GoldNotEnough; return(false); } if (ContextUser.EnableSpareProperty(_sparepartID, out _sparePart)) { ContextUser.UseGold = MathUtils.Addition(ContextUser.UseGold, goldNum); //ContextUser.Update(); var itempackage = UserItemPackage.Get(ContextUser.UserID); UserItemInfo userItem = itempackage.ItemPackage.Find(m => !m.IsRemove && m.UserItemID.Equals(_sparePart.UserItemID)); if (userItem != null && userItem.ItemStatus.Equals(ItemStatus.YongBing)) { var userGeneral = new GameDataCacheSet <UserGeneral>().FindKey(ContextUser.UserID, userItem.GeneralID); if (userGeneral != null) { userGeneral.RefreshMaxLife(); } } } else { ErrorCode = LanguageManager.GetLang().ErrorCode; return(false); } } return(true); }
public override bool TakeAction() { var package = UserItemPackage.Get(Uid); UserItemInfo userItem = package.ItemPackage.Find(m => !m.IsRemove && m.UserItemID.Equals(userItemID)); if (userItem != null) { package.UpdateNotify(obj => { package.RemoveItem(userItem); return(true); }); UserItemHelper.AddItemLog(ContextUser.UserID, userItem.ItemID, userItem.Num, userItem.ItemLv, 8, userItem.UserItemID); } else { this.ErrorCode = LanguageManager.GetLang().ErrorCode; this.ErrorInfo = LanguageManager.GetLang().ServerBusy; return(false); } return(true); }
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(); } }
public override bool TakeAction() { //int maxEquNum = ConfigEnvSet.GetInt("UserQueue.EquStrengMaxNum"); //int coldTime = ConfigEnvSet.GetInt("UserItem.EquColdTime"); //铜钱不足 var package = UserItemPackage.Get(Uid); userItem = package.ItemPackage.Find(m => !m.IsRemove && m.UserItemID.Equals(userItemID)) ?? new UserItemInfo(); if (ops == StrongOnce) { // 强化 1 次用钱 strongMoney = new UserItemHelper(userItem, 1).StrongMoney; } else if (ops == StrongTenTimes) { // 强化 10 次用钱 strongMoney = new UserItemHelper(userItem, 10).StrongMoney; } short strongMaxLv = (ContextUser.UserLv * 3).ToShort(); //MathUtils.Addition(ContextUser.UserLv, 1.ToShort()); //强化最高等级 if (ContextUser.GameCoin < strongMoney) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St_GameCoinNotEnough; return false; } //UserGeneral userGeneral = new GameDataCacheSet<UserGeneral>().FindKey(ContextUser.UserID, userItem.GeneralID); //if (userGeneral != null && userItem.ItemLv >= strongMaxLv) //{ // ErrorCode = LanguageManager.GetLang().ErrorCode; // ErrorInfo = LanguageManager.GetLang().St1204_EquGeneralMaxLv; // return false; //} if (userItem.ItemLv >= strongMaxLv) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St1204_EquMaxLv; return false; } itemInfo = new ConfigCacheSet<ItemBaseInfo>().FindKey(userItem.ItemID); if (itemInfo != null) { itemEquArray = new ConfigCacheSet<ItemEquAttrInfo>().FindAll(m => m.ItemID == itemInfo.ItemID); } if (strongMoney > ContextUser.GameCoin) { isStrong = 1; } else if (userItem.ItemLv >= strongMaxLv) { isStrong = 2; } UpdateUserItem(ContextUser, userItem, strongMoney); //日常任务-强化 TaskHelper.TriggerDailyTask(Uid, 4001); UserGeneral general = new GameDataCacheSet<UserGeneral>().FindKey(ContextUser.UserID, userItem.GeneralID); if (general != null) { general.RefreshMaxLife(); } return true; }
public override bool TakeAction() { if (!string.IsNullOrEmpty(_toUserID)) { packUser = _toUserID; } else { packUser = ContextUser.UserID; } var package = UserItemPackage.Get(packUser); _useritem = package.ItemPackage.Find(m => string.Equals(m.UserItemID, _userItemID)) ?? new UserItemInfo(); if (_useritem == null || _useritem.ItemID == 0) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St1107_UserItemNotEnough; return(false); } _itemInfo = new ConfigCacheSet <ItemBaseInfo>().FindKey(_useritem.ItemID); if (_itemInfo == null) { ErrorInfo = LanguageManager.GetLang().St1107_UserItemNotEnough; ErrorCode = LanguageManager.GetLang().ErrorCode; return(false); } if (_useritem.ItemLv > _itemInfo.DemandLv) { demandLv = _useritem.ItemLv; } else { demandLv = _itemInfo.DemandLv; } if (_itemInfo.ItemType == ItemType.ZhuangBei) { _salePrice = UserHelper.StrongEquPayPrice(packUser, _userItemID); } else { if (isShow > 0) { _salePrice = (_itemInfo.SalePrice / 4); } else { _salePrice = ((_itemInfo.SalePrice / 4) * _useritem.Num); } } _itemEquArray = new ConfigCacheSet <ItemEquAttrInfo>().FindAll(m => m.ItemID == _useritem.ItemID); List <ItemSynthesisInfo> synthsisArray = new ConfigCacheSet <ItemSynthesisInfo>().FindAll(m => m.SynthesisID == _useritem.ItemID); if (synthsisArray.Count > 0) { var synthsis = synthsisArray[0]; if (_itemInfo.ItemType == ItemType.TuZhi || _itemInfo.ItemType == ItemType.TuZhi) { _itemSynthsisArray = new ConfigCacheSet <ItemSynthesisInfo>().FindAll(m => m.ItemID == synthsis.ItemID && m.SynthesisID != _useritem.ItemID); } } if (_itemInfo.CareerRange != null && _itemInfo.CareerRange.Trim() != "0") { _careerList = _itemInfo.CareerRange.Split(','); } PropertyArray = UserHelper.SparePartPropertyList(packUser, _userItemID); //灵件属性 return(true); }
/// <summary> /// 强化 /// </summary> private void UpdateUserItem(GameUser user, UserItemInfo userItem, int strongMoney) { if (user.GameCoin >= strongMoney) { user.GameCoin = MathUtils.Subtraction(user.GameCoin, strongMoney, 0); var package = UserItemPackage.Get(user.UserID); strongLv = 0; VipLvInfo vipLvInfo = new ConfigCacheSet<VipLvInfo>().FindKey(user.VipLv); for (int i = 0; i < ops; i++) { EquStreng streng = null; if (vipLvInfo != null && vipLvInfo.EquStreng != null) { streng = vipLvInfo.EquStreng; } if (streng != null && RandomUtils.IsHit(streng.probability)) { strongLv += (short)RandomUtils.GetRandom(streng.start, streng.end); } else { strongLv += 1; } } userItem.ItemLv = MathUtils.Addition(userItem.ItemLv, strongLv); package.SaveItem(userItem); UserLogHelper.AppenStrongLog(user.UserID, 1, userItem.UserItemID, userItem.ItemID, 2, userItem.ItemLv, 0, userItem.GeneralID); } }
/// <summary> /// 增加物品 /// </summary> public static void AddUserItem(string userID, int itemID, int itemNum, ItemStatus itemStatus, short itemLv, List<UniversalInfo> universalInfoList = null) { // 增加玩家集邮册 AddUserAlbum(userID,itemID); var chatService = new TjxChatService(); GameUser user = new GameDataCacheSet<GameUser>().FindKey(userID); ItemBaseInfo itemInfo = new ConfigCacheSet<ItemBaseInfo>().FindKey(itemID); if (user == null || itemInfo == null) { return; } AddUniversalInfo(universalInfoList, itemInfo, itemNum); if (itemInfo.ItemType == ItemType.DaoJu && itemInfo.PropType == 17) { for (int i = 0; i < itemNum; i++) { if (!PackIsFull(userID, BackpackType.HunJi, 1)) { AddUserAbility(itemInfo.EffectNum, userID.ToInt(), 0, 0); } } } else { if (itemInfo.ItemType == ItemType.DaoJu && itemInfo.PropType == 20) { AddGeneralSoul(userID, itemInfo.ItemID, itemNum); } else { int gridMaxNum = 0; if (itemInfo.ItemType == ItemType.ZhuangBei) { gridMaxNum = GetPackTypePositionNum(BackpackType.ZhuangBei, userID); } else { gridMaxNum = GetPackTypePositionNum(BackpackType.BeiBao, userID); } int packNum = itemNum / itemInfo.PackMaxNum; int num = itemNum % itemInfo.PackMaxNum; ////判断背包是否有空位 //bool isOut = false; //if (itemStatus == ItemStatus.BeiBao) //{ // isOut = CheckItemOut(user, itemStatus); //} var package = UserItemPackage.Get(userID); var itemList = package.ItemPackage.FindAll(m => !m.IsRemove && m.ItemStatus.Equals(ItemStatus.BeiBao)); //背包中是否有余 var packItemList = package.ItemPackage.FindAll( m => !m.IsRemove && m.ItemStatus.Equals(itemStatus) && m.ItemID == itemID && m.Num < itemInfo.PackMaxNum); //当前空位 int currGridNum = gridMaxNum - itemList.Count; // if ((isOut && packItemList.Count == 0) || currGridNum < packNum) if (packItemList.Count == 0 && currGridNum <= 0) { AddItemLog(userID, itemID, itemNum, 1, 0, null); chatService.SystemSendWhisper(user, string.Format("掉落物品{0}*{1}", itemInfo.ItemName, itemNum)); return; } currGridNum = MathUtils.Subtraction(currGridNum, packNum, 0); for (int i = 0; i < packNum; i++) { //增加整包 UserItemInfo userItem = new UserItemInfo(); string uitemID = SetUserItem(userItem, userID, itemInfo, itemStatus, itemLv); userItem.Num = itemInfo.PackMaxNum; package.SaveItem(userItem); AddItemLog(userID, itemID, userItem.Num, userItem.ItemLv, 1, uitemID); } //背包中是否有余 foreach (var item in packItemList) { if (num == 0) break; int gridNum = itemInfo.PackMaxNum - item.Num; int tempNum = gridNum > num ? num : gridNum; item.Num = MathUtils.Addition(item.Num, tempNum, itemInfo.PackMaxNum); package.SaveItem(item); num = num > tempNum ? num - tempNum : 0; } //数据是否有余 if (num > 0) { if (currGridNum <= 0) { AddItemLog(userID, itemInfo.ItemID, num, 1, 0, null); chatService.SystemSendWhisper(user, string.Format("掉落物品{0}*{1}", itemInfo.ItemName, num)); } else { var userItem = new UserItemInfo(); string uitemID = SetUserItem(userItem, userID, itemInfo, itemStatus, itemLv); userItem.Num = num; package.SaveItem(userItem); AddItemLog(userID, itemID, userItem.Num, userItem.ItemLv, 1, uitemID); } } } } }
private static int GetEquAttrEffect(UserItemInfo item, AbilityType abilityType) { ItemEquAttrInfo equAttr = new ConfigCacheSet<ItemEquAttrInfo>().FindKey(item.ItemID, abilityType); return (equAttr != null ? equAttr.GetEffectNum(item.ItemLv) : 0); }
// 重载构造函数,用于强化 10 次 public UserItemHelper(UserItemInfo item, int count) { _item = item; _itemInfo = new ConfigCacheSet<ItemBaseInfo>().FindKey(_item.ItemID) ?? new ItemBaseInfo(); _strongCount = count; }
private static int _strongCount = 1; // 强化次数 public UserItemHelper(UserItemInfo item) { _item = item; _itemInfo = new ConfigCacheSet<ItemBaseInfo>().FindKey(_item.ItemID) ?? new ItemBaseInfo(); }
public override bool TakeAction() { UserHelper.ChechDailyRestrain(ContextUser.UserID); int maxNum = 0; int useNum = 0; DailyRestrainSet restrainSet = new ShareCacheStruct<DailyRestrainSet>().FindKey(RestrainType.DragonHolyWater); if (restrainSet != null) { maxNum = restrainSet.MaxNum; } int _itemID = 5050; UserGeneral general = new GameDataCacheSet<UserGeneral>().FindKey(ContextUser.UserID, generalID); if (general == null || general.SaturationNum == 0) { return false; } var package = UserItemPackage.Get(ContextUser.UserID); var userItemArray = package.ItemPackage.FindAll(m => m.ItemID.Equals(_itemID)); UserItemInfo useritem = new UserItemInfo(); if (userItemArray.Count > 0) { useritem = userItemArray[0]; } else { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St1423_UserItemNotEnough; return false; } ItemBaseInfo itemInfo = new ConfigCacheSet<ItemBaseInfo>().FindKey(useritem.ItemID); if (itemInfo == null) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St1107_UserItemNotEnough; return false; } var cacheSet = new GameDataCacheSet<UserDailyRestrain>(); UserDailyRestrain userRestrain = cacheSet.FindKey(ContextUser.UserID); if (userRestrain != null && userRestrain.UserExtend != null && userRestrain.UserExtend.WaterNum.Count > 0) { List<DailyRestrain> daliyrestrainList = userRestrain.UserExtend.WaterNum.FindAll(m => m.ID == generalID); useNum = daliyrestrainList.Count; } if (ops == 1) { ErrorCode = ops; ErrorInfo = string.Format(LanguageManager.GetLang().St1423_ClearCurrSatiation, itemInfo.ItemName); return false; } else if (ops == 2) { if (useNum >= maxNum) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St1423_DragonHolyWater; return false; } if (general.SaturationNum > 0) { ErrorCode = ops; general.SaturationNum = 0; //general.SaturationNum.Subtraction(itemInfo.SatiationNum, 0); DailyRestrain restrain = new DailyRestrain(); restrain.ID = generalID; if (userRestrain != null) { userRestrain.UserExtend.UpdateNotify(obj => { userRestrain.UserExtend.WaterNum.Add(restrain); return true; }); } UserItemHelper.UseUserItem(ContextUser.UserID, itemInfo.ItemID, 1); } } return true; }
private static string SetUserItem(UserItemInfo userItem, string userID, ItemBaseInfo itemInfo, ItemStatus itemStatus, short itemLv) { string uitemID = System.Guid.NewGuid().ToString(); userItem.UserItemID = uitemID; userItem.ItemID = itemInfo.ItemID; userItem.ItemStatus = itemStatus; userItem.GeneralID = itemStatus == ItemStatus.YongBing ? UserGeneral.MainID : 0; userItem.ItemLv = itemLv; userItem.ItemType = itemInfo.ItemType; return uitemID; }
/// <summary> /// 七夕活动奖励 /// </summary> /// <param name="user"></param> /// <returns></returns> public static string GianTanabataReward(GameUser user, UserItemInfo item) { string content = string.Empty; ItemBaseInfo itemInfo = new ConfigCacheSet<ItemBaseInfo>().FindKey(item.ItemID); if (itemInfo != null) { List<PrizeInfo> prizeInfosArray = itemInfo.ItemPack.ToList(); double[] probability = new double[prizeInfosArray.Count]; for (int i = 0; i < prizeInfosArray.Count; i++) { probability[i] = (double)prizeInfosArray[i].Probability; } int index2 = RandomUtils.GetHitIndex(probability); PrizeInfo prizeInfo = prizeInfosArray[index2]; if (prizeInfo.Type == RewardType.Item && prizeInfo.ItemList != null) { content = PrizeItemList(user.UserID, prizeInfo.ItemList, prizeInfo.CrystalType.ToEnum<CrystalQualityType>()); } else { content = ActivitiesAward.GameUserRewardNocite(user.UserID, prizeInfo.Type, prizeInfo.ItemID, prizeInfo.Num, prizeInfo.CrystalType); } UserItemHelper.UseUserItem(user.UserID, item.ItemID, 1); } return content; }
public override bool TakeAction() { if (string.IsNullOrEmpty(ContextUser.MercenariesID) || guildID != ContextUser.MercenariesID) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St6011_GuildMemberNotMember; return(false); } UserGuild userGuild = new ShareCacheStruct <UserGuild>().FindKey(guildID); if (userGuild == null) { return(false); } List <UserGuild> guildArray = new ShareCacheStruct <UserGuild>().FindAll(m => m.GuildName == guildName); if (guildArray.Count > 0) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St6017_Rename; return(false); } int nameLength = System.Text.Encoding.Default.GetByteCount(guildName); if (nameLength < 4 || nameLength > 12) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St6017_GuildNameTooLong; return(false); } //UserItem userItem = UserItem.FindKey(itemID); var package = UserItemPackage.Get(Uid); UserItemInfo userItem = package.ItemPackage.Find(m => !m.IsRemove && m.ItemID == itemID); if (userItem == null || userItem.Num <= 0) { ErrorCode = LanguageManager.GetLang().ErrorCode; return(false); } GuildMember member = new ShareCacheStruct <GuildMember>().FindKey(ContextUser.MercenariesID, ContextUser.UserID); if (member != null) { if (member.PostType == PostType.Member) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St6007_AuditPermissions; return(false); } } else { return(false); } userGuild.GuildName = guildName; //userGuild.Update(); UserItemHelper.UseUserItem(ContextUser.UserID, itemID, 1); return(true); }
public override bool TakeAction() { if (!string.IsNullOrEmpty(_toUserID)) { packUser = _toUserID; } else { packUser = ContextUser.UserID; } var package = UserItemPackage.Get(packUser); _useritem = package.ItemPackage.Find(m => string.Equals(m.UserItemID, _userItemID)) ?? new UserItemInfo(); if (_useritem == null || _useritem.ItemID == 0) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St1107_UserItemNotEnough; return false; } _itemInfo = new ShareCacheStruct<ItemBaseInfo>().FindKey(_useritem.ItemID); if (_itemInfo == null) { ErrorInfo = LanguageManager.GetLang().St1107_UserItemNotEnough; ErrorCode = LanguageManager.GetLang().ErrorCode; return false; } if (_useritem.ItemLv > _itemInfo.DemandLv) { demandLv = _useritem.ItemLv; } else { demandLv = _itemInfo.DemandLv; } if (_itemInfo.ItemType == ItemType.ZhuangBei) { _salePrice = UserHelper.StrongEquPayPrice(packUser, _userItemID); } else { if (isShow > 0) { _salePrice = (_itemInfo.SalePrice / 4); } else { _salePrice = ((_itemInfo.SalePrice / 4) * _useritem.Num); } } _itemEquArray = new ShareCacheStruct<ItemEquAttrInfo>().FindAll(m => m.ItemID == _useritem.ItemID); List<ItemSynthesisInfo> synthsisArray = new ShareCacheStruct<ItemSynthesisInfo>().FindAll(m => m.SynthesisID == _useritem.ItemID); if (synthsisArray.Count > 0) { var synthsis = synthsisArray[0]; if (_itemInfo.ItemType == ItemType.TuZhi || _itemInfo.ItemType == ItemType.TuZhi) { _itemSynthsisArray = new ShareCacheStruct<ItemSynthesisInfo>().FindAll(m => m.ItemID == synthsis.ItemID && m.SynthesisID != _useritem.ItemID); } } if (_itemInfo.CareerRange != null && _itemInfo.CareerRange.Trim() != "0") { _careerList = _itemInfo.CareerRange.Split(','); } PropertyArray = UserHelper.SparePartPropertyList(packUser, _userItemID); //灵件属性 return true; }
/// <summary> /// 领取神秘礼包 /// </summary> /// <returns></returns> public static void MysteriousSpree(UserItemInfo item, GameUser user) { ItemBaseInfo itemInfo = new ConfigCacheSet<ItemBaseInfo>().FindKey(item.ItemID); if (itemInfo != null) { var prizeInfosArray = itemInfo.ItemPack; int randomNum = RandomUtils.GetRandom(0, prizeInfosArray.Count); PrizeInfo prizeInfo = prizeInfosArray[randomNum]; ActivitiesAward.GameUserReward(user.UserID, prizeInfo.Type, prizeInfo.ItemID, prizeInfo.Num); } }
/// <summary> /// /// </summary> /// <returns></returns> public static string CrystalNumFull(GameUser user, UserItemInfo item) { string content = string.Empty; ItemBaseInfo itemInfo = new ShareCacheStruct<ItemBaseInfo>().FindKey(item.ItemID); if (itemInfo != null) { List<PrizeInfo> prizeInfosArray = itemInfo.ItemPack.ToList(); double[] probability = new double[prizeInfosArray.Count]; for (int i = 0; i < prizeInfosArray.Count; i++) { probability[i] = (double)prizeInfosArray[i].Probability; } int index2 = RandomUtils.GetHitIndex(probability); PrizeInfo prizeInfo = prizeInfosArray[index2]; content = ActivitiesAward.GameUserRewardNocite(user.UserID, prizeInfo.Type, prizeInfo.ItemID, prizeInfo.Num, prizeInfo.CrystalType); //ActivitiesAward.GameUserReward(user.UserID, prizeInfo.Type, prizeInfo.ItemID, prizeInfo.Num); UserItemHelper.UseUserItem(user.UserID, item.ItemID, 1); } return content; }
public override bool TakeAction() { int maxEquNum = ConfigEnvSet.GetInt("UserQueue.EquStrengMaxNum"); UserItemPackage package; if (!string.IsNullOrEmpty(_toUserId)) { package = UserItemPackage.Get(_toUserId); } else { package = UserItemPackage.Get(ContextUser.UserID); } _userItem = package.ItemPackage.Find(m => !m.IsRemove && m.UserItemID.Equals(_userItemId)) ?? new UserItemInfo(); _itemInfo = new ConfigCacheSet<ItemBaseInfo>().FindKey(_userItem.ItemID); if (_itemInfo == null) { SaveDebuLog(string.Format("玩家{0}物品ID={1}[{2}]不存在!", Uid, _userItem.UserItemID, _userItem.ItemID)); ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St1107_UserItemNotEnough; return false; } if (_userItem.ItemLv > _itemInfo.DemandLv) { _demandLv = _userItem.ItemLv; } else { _demandLv = _itemInfo.DemandLv; } _strongMoney = new UserItemHelper(_userItem, 1).StrongMoney; _tenTimesStrongMoney = new UserItemHelper(_userItem, 10).StrongMoney; // 强化 10 次用钱 _itemEquArray = new ConfigCacheSet<ItemEquAttrInfo>().FindAll(m => m.ItemID == _userItem.ItemID); if (_userItem.ItemLv >= ContextUser.UserLv || _strongMoney > ContextUser.GameCoin) { _isStrong = 1; } List<UserQueue> userQueueArray = new GameDataCacheSet<UserQueue>().FindAll(ContextUser.UserID, m => m.QueueType == QueueType.EquipmentStrong); userQueueArray.QuickSort((x, y) => { if (x == null && y == null) return 0; if (x != null && y == null) return 1; if (x == null) return -1; return y.Timing.CompareTo(x.Timing); }); if (userQueueArray.Count == ContextUser.QueueNum) { DateTime minDateTime = DateTime.MinValue; foreach (UserQueue queue in userQueueArray) { if (queue.DoRefresh() > 0 && !queue.IsSuspend && minDateTime < queue.Timing && queue.StrengNum >= maxEquNum) { _coldTime = queue.DoRefresh(); } } } UserHelper.SparePartPropertyList(Uid, _userItemId); //灵件属性 return true; }
public void SaveItem(UserItemInfo item) { if (item == null || string.IsNullOrEmpty(item.UserItemID)) return; var tempItem = ItemPackage.Find(m => !string.IsNullOrEmpty(item.UserItemID) && string.Equals(m.UserItemID, item.UserItemID)); if (tempItem == null) { ItemPackage.Add(item); } else { tempItem.UpdateNotify(obj => { tempItem.UserItemID = item.UserItemID; tempItem.GeneralID = item.GeneralID; tempItem.IsRemove = item.IsRemove; tempItem.ItemID = item.ItemID; tempItem.ItemLv = item.ItemLv; tempItem.ItemStatus = item.ItemStatus; tempItem.ItemType = item.ItemType; tempItem.Num = item.Num; tempItem.SoldDate = item.SoldDate; return true; }); } }
/// <summary> /// 暑期第四弹 --多人副本战友礼包奖励! /// </summary> /// <param name="user"></param> /// <returns></returns> public static string GianComradesPackReward(GameUser user, UserItemInfo item) { string content = string.Empty; ItemBaseInfo itemInfo = new ShareCacheStruct<ItemBaseInfo>().FindKey(item.ItemID); if (itemInfo != null) { List<PrizeInfo> prizeInfosArray = itemInfo.ItemPack.ToList(); List<PrizeInfo> prizeInfosList = new List<PrizeInfo>(); if (user.UserLv >= 40) { prizeInfosList = new List<PrizeInfo>(prizeInfosArray).FindAll(m => m.UserLv == 40); } else { prizeInfosList = new List<PrizeInfo>(prizeInfosArray).FindAll(m => m.UserLv == 0); } double[] probability = new double[prizeInfosList.Count]; for (int i = 0; i < prizeInfosList.Count; i++) { probability[i] = (double)prizeInfosList[i].Probability; } int index2 = RandomUtils.GetHitIndex(probability); PrizeInfo prizeInfo = prizeInfosList[index2]; if (prizeInfo.Type == RewardType.Item) { content = PrizeItemList(user.UserID, prizeInfo.ItemList, prizeInfo.CrystalType.ToEnum<CrystalQualityType>()); } else { content = ActivitiesAward.GameUserRewardNocite(user.UserID, prizeInfo.Type, prizeInfo.ItemID, prizeInfo.Num, prizeInfo.CrystalType); } UserItemHelper.UseUserItem(user.UserID, item.ItemID, 1); } return content; }
/// <summary> /// 双倍材料,月饼道具使用 /// </summary> /// <param name="userItem"></param> /// <param name="itemInfo"></param> /// <returns></returns> private bool DoCaiLiaoYueBingItem(UserItemInfo userItem, ItemBaseInfo itemInfo) { UserProps props = new GameDataCacheSet<UserProps>().FindKey(ContextUser.UserID, userItem.ItemID); if (props != null) { if (userItem.ItemID == 5200 && props.DoRefresh() > 0) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St1608_CombatPowerNotEnough; return false; } props.SurplusNum += itemInfo.EffectNum; props.ChangeTime = DateTime.Now; //props.Update(); } else { UserProps uProps = new UserProps(ContextUser.UserID, itemInfo.ItemID) { SurplusNum = itemInfo.EffectNum, ChangeTime = DateTime.Now }; new GameDataCacheSet<UserProps>().Add(uProps, GameEnvironment.CacheUserPeriod); } return true; }
/// <summary> /// ����ճ�������Ʒ���� /// </summary> /// <param name="userLv"></param> /// <returns></returns> public UserItemInfo GetDailyItem(short userLv) { UserItemInfo userItem = null; int index = (int)TaskStar - 1; var cacheSet = new ConfigCacheSet<DailyTaskInfo>(); DailyTaskInfo dtaskInfo = cacheSet.FindKey(TaskID); string[] NumRank = dtaskInfo.QishiNumRank.ToNotNullString().Split(new char[] { ',' }); int num = NumRank.Length > index && index >= 0 ? NumRank[index].ToInt() : 0; if (num <= 0) { return userItem; } string[] QishiRank = dtaskInfo.QishiRank.ToNotNullString().Split(new char[] { ',' }); string[] UserLvRank = dtaskInfo.UserLvRank.ToNotNullString().Split(new char[] { ',' }); if (QishiRank.Length > 0 && QishiRank.Length == UserLvRank.Length) { int itemIndex = GetItemIndex(UserLvRank, userLv); int itemID = QishiRank.Length > itemIndex ? QishiRank[itemIndex].ToInt() : 0; ItemBaseInfo itemInfo = new ConfigCacheSet<ItemBaseInfo>().FindKey(itemID); if (itemInfo != null) { userItem = new UserItemInfo(); userItem.ItemID = itemInfo.ItemID; userItem.Num = num; } } return userItem; }
/// <summary> /// 随机获得金币、精力奖励 /// </summary> /// <param name="item"></param> /// <param name="user"></param> public static void GetProbabilityReward(GameUser user, UserItemInfo item) { ItemBaseInfo itemInfo = new ConfigCacheSet<ItemBaseInfo>().FindKey(item.ItemID); if (itemInfo != null) { var prizeInfosArray = itemInfo.ItemPack; double[] probability = new double[prizeInfosArray.Count]; for (int i = 0; i < prizeInfosArray.Count; i++) { probability[i] = (double)prizeInfosArray[i].Probability; } int index2 = RandomUtils.GetHitIndex(probability); PrizeInfo prizeInfo = prizeInfosArray[index2]; ActivitiesAward.GameUserReward(user.UserID, prizeInfo.Type, prizeInfo.ItemID, prizeInfo.Num); UserItemHelper.UseUserItem(user.UserID, item.ItemID, 1); } }
/// <summary> /// 灵件配置 /// </summary> /// <param name="general"></param> /// <param name="item"></param> /// <returns></returns> private static void SetSparePart(CombatGeneral general, UserItemInfo item) { var user = new GameDataCacheSet<GameUser>().FindKey(general.UserID); if (user != null) { var sparepartList = user.SparePartList.FindAll(m => m.UserItemID.Equals(item.UserItemID)); foreach (var sparepart in sparepartList) { foreach (var property in sparepart.Propertys) { switch (property.AbilityType) { case AbilityType.WuLiGongJi: general.ExtraAttack.WuliNum += property.Num.ToInt(); break; case AbilityType.HunJiGongJi: general.ExtraAttack.HunjiNum += property.Num.ToInt(); break; case AbilityType.MoFaGongJi: general.ExtraAttack.MofaNum += property.Num.ToInt(); break; case AbilityType.WuLiFangYu: general.ExtraDefense.WuliNum += property.Num.ToInt(); break; case AbilityType.HunJiFangYu: general.ExtraDefense.HunjiNum += property.Num.ToInt(); break; case AbilityType.MoFaFangYu: general.ExtraDefense.MofaNum += property.Num.ToInt(); break; case AbilityType.MingZhong: general.HitNum = MathUtils.Addition(general.HitNum, property.Num.ToDecimal(), decimal.MaxValue); break; case AbilityType.ShanBi: general.ShanbiNum = MathUtils.Addition(general.ShanbiNum, property.Num.ToDecimal(), decimal.MaxValue); break; case AbilityType.RenXing: general.RenxingNum = MathUtils.Addition(general.RenxingNum, property.Num.ToDecimal(), decimal.MaxValue); break; case AbilityType.BaoJi: general.BaojiNum = MathUtils.Addition(general.BaojiNum, property.Num.ToDecimal(), decimal.MaxValue); break; case AbilityType.PoJi: general.PojiNum = MathUtils.Addition(general.PojiNum, property.Num.ToDecimal(), decimal.MaxValue); break; case AbilityType.GeDang: general.GedangNum = MathUtils.Addition(general.GedangNum, property.Num.ToDecimal(), decimal.MaxValue); break; default: break; } } } } }
private static int _strongCount = 1; // 强化次数 public UserItemHelper(UserItemInfo item) { _item = item; _itemInfo = new ShareCacheStruct<ItemBaseInfo>().FindKey(_item.ItemID) ?? new ItemBaseInfo(); }