Exemple #1
0
        public override bool TakeAction()
        {
            UserDailyRestrain dailyRestrain = new GameDataCacheSet <UserDailyRestrain>().FindKey(ContextUser.UserID);

            if (RankingHelper.IsGainSportsReward(ContextUser.UserID) && dailyRestrain != null && dailyRestrain.UserExtend != null)
            {
                var envSet = ServerEnvSet.Get(ServerEnvKey.JingJiChangReward, "");
                SportsRewardInfo sportsInfo = new ConfigCacheSet <SportsRewardInfo>().FindKey(dailyRestrain.UserExtend.UserRankID);
                { if (envSet != null && sportsInfo != null)
                  {
                      if (envSet.ToDateTime().Date > dailyRestrain.Funtion11.Date && dailyRestrain.UserExtend.UserRankID > 0)
                      {
                          dailyRestrain.Funtion11             = DateTime.Now;
                          dailyRestrain.UserExtend.UserRankID = 0;
                          //dailyRestrain.Update();

                          ContextUser.ObtainNum = MathUtils.Addition(ContextUser.ObtainNum, sportsInfo.RewardObtian, int.MaxValue);
                          ContextUser.GameCoin  = MathUtils.Addition(ContextUser.GameCoin, sportsInfo.RewardGoin, int.MaxValue);
                          //ContextUser.Update();
                          UserHelper.Contribution(ContextUser.UserID, sportsInfo.RewardObtian);
                          ErrorInfo = string.Format(LanguageManager.GetLang().St5106_JingJiChangRankReward, sportsInfo.RewardObtian, sportsInfo.RewardGoin);
                      }
                  }
                }
            }
            return(true);
        }
        public override bool TakeAction()
        {
            UserFunction userFunction = new PersonalCacheStruct <UserFunction>().FindKey(ContextUser.UserID, FunctionEnum.Xiulian);

            if (userFunction != null)
            {
                UserHelper.XiuLianGianExperience(ContextUser.UserID); //修炼完成后更改修炼状态

                int inerDate = (int)(DateTime.Now - ContextUser.OnlineDate).TotalSeconds;
                if (inerDate > 300 && ContextUser.UserStatus != UserStatus.XiuLian)
                {
                    int totalTime = 0;
                    GeneralPracticeInfo generalpractice = new ShareCacheStruct <GeneralPracticeInfo>().FindKey(ContextUser.UserLv);
                    if (VipHelper.GetVipOpenFun(ContextUser.VipLv, ExpandType.XiuLianYanChangErShiSiXiaoShi))
                    {
                        totalTime = ConfigEnvSet.GetInt("User.XiuLianDate");
                    }
                    else
                    {
                        if (generalpractice != null)
                        {
                            totalTime = (generalpractice.MaxHour * 60 * 60);
                        }
                    }

                    if (inerDate > 300 && ContextUser.UserStatus != UserStatus.XiuLian && ContextUser.UserStatus != UserStatus.FightCombat)
                    {
                        ContextUser.UserStatus = UserStatus.XiuLian;
                        //ContextUser.Update();

                        List <UserQueue> userQueueArray = new PersonalCacheStruct <UserQueue>().FindAll(ContextUser.UserID, m => m.QueueType == QueueType.XiuLian);
                        if (userQueueArray.Count > 0)
                        {
                            UserQueue userQueue = userQueueArray[0];
                            userQueue.TotalColdTime = totalTime;
                            userQueue.ColdTime      = totalTime;
                            userQueue.Timing        = DateTime.Now;
                            userQueue.IsSuspend     = false;
                            userQueue.StrengNum     = 0;
                            //userQueue.Update();
                        }
                        _statusList.Add(MessageState.XiuLian);
                    }
                }
            }

            UserDailyRestrain dailyRestrain = new PersonalCacheStruct <UserDailyRestrain>().FindKey(ContextUser.UserID);

            if (new TjxChatService(ContextUser).HasMessage(ContextUser.ChatVesion))
            {
                _statusList.Add(MessageState.Chat);
            }

            if (NoviceHelper.CheckOnlinePrize(Uid))
            {
                _statusList.Add(MessageState.TakeOnline);
            }

            if (NoviceHelper.CheckLoginPrize(Uid))
            {
                _statusList.Add(MessageState.TakeLogin);
            }
            if (new TjxBroadcastService(ContextUser).HasMessage())
            {
                _statusList.Add(MessageState.Broadcast);
            }

            if (NoviceHelper.CheckDailyExpPrize(Uid))
            {
                _statusList.Add(MessageState.TakeDailyExp);
            }

            if (RankingHelper.IsGainSportsReward(ContextUser.UserID))
            {
                _statusList.Add(MessageState.JingJiChangReward);
            }

            UserFunction countryFunction = new PersonalCacheStruct <UserFunction>().FindKey(ContextUser.UserID, FunctionEnum.Country);

            if (countryFunction != null && dailyRestrain != null && dailyRestrain.Funtion8 < VipHelper.GetVipUseNum(ContextUser.VipLv, RestrainType.LingQuFengLu))
            {
                _statusList.Add(MessageState.LingQuFengLv);
            }

            if (NoviceHelper.DailyEnergy(ContextUser.UserID))
            {
                _statusList.Add(MessageState.SurplusEnergy);
            }
            if (new GameActiveCenter(Uid).HasActive())
            {
                _statusList.Add(MessageState.Huodong);
            }
            if (NoviceHelper.IsAugustSecondWeekEnergy(ContextUser))
            {
                _statusList.Add(MessageState.FestivalEnergy);
            }
            if (NoviceHelper.IsWingFestivalInfo(ContextUser.UserID))
            {
                _statusList.Add(MessageState.Wing);
            }

            if (GuildFightBroadcast(ContextUser.UserID, stakecount, ContextUser.MercenariesID))
            {
                _statusList.Add(MessageState.GuildFight);
            }
            else
            {
                stakecount = 0;
            }

            var userPrizeList = new ShareCacheStruct <UserTakePrize>().FindAll(m => !m.IsTasked && m.UserID == Uid.ToInt());

            if (userPrizeList.Count > 0)
            {
                _statusList.Add(MessageState.TaskPrize);
            }
            return(true);
        }
Exemple #3
0
 public ShipsRankingControllerTests()
 {
     mockRankingService = new Mock <IRankingService>();
     rankingHelper      = new RankingHelper();
 }
        protected override bool DoSuccess(int userId, out IUser user)
        {
            user = null;
            //原因:重登录时,数据会回档问题
            var      cacheSet = new PersonalCacheStruct <GameUser>();
            GameUser userInfo = cacheSet.FindKey(userId.ToString());

            if (userInfo != null)
            {
                //原因:还在加载中时,返回
                if (userInfo.IsRefreshing)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().ServerLoading;
                    return(false);
                }
            }

            if (userInfo == null ||
                string.IsNullOrEmpty(userInfo.SessionID) ||
                !userInfo.IsOnline)
            {
                UserCacheGlobal.Load(userId.ToString()); //重新刷缓存
                userInfo = cacheSet.FindKey(userId.ToString());
            }
            if (userInfo != null)
            {
                if (userInfo.UserStatus == UserStatus.FengJin)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().St1004_IDDisable;
                    return(false);
                }
                user = new SessionUser(userInfo);
                //todo
                //NoticeHelper.RankNotice(userInfo); //公告
                CombatHelper.LoadProperty(userInfo);
                //todo
                //NoviceHelper.OldFriendPack(Uid, userInfo.LoginTime); //好友礼包
                UserLoginLog userLoginLog = new UserLoginLog();
                userLoginLog.UserId     = userInfo.UserID;
                userLoginLog.SessionID  = Sid;
                userLoginLog.MobileType = MobileType;
                userLoginLog.ScreenX    = ScreenX;
                userLoginLog.ScreenY    = ScreenY;
                userLoginLog.RetailId   = RetailID;
                userLoginLog.AddTime    = DateTime.Now;
                userLoginLog.State      = LoginStatus.Logined;
                userLoginLog.DeviceID   = DeviceID;
                userLoginLog.Ip         = this.GetRealIP();
                userLoginLog.Pid        = userInfo.Pid;
                userLoginLog.UserLv     = userInfo.UserLv;
                //原因:报表统计
                userLoginLog.PlotID = userInfo.PlotProgress;
                PlotInfo plotInfo = new ShareCacheStruct <PlotInfo>().FindKey(userInfo.PlotProgress);
                if (plotInfo != null)
                {
                    userLoginLog.PlotName = plotInfo.PlotName;
                }

                var sender = DataSyncManager.GetDataSender();
                sender.Send(userLoginLog);

                //int vipLv;
                //var vipLvArray = new ShareCacheStruct<VipLvInfo>().FindAll(u => u.PayGold <= userInfo.PayGold);
                //vipLv = vipLvArray.Count > 0 ? vipLvArray[vipLvArray.Count - 1].VipLv : (short)0;

                userInfo.LoginTime = DateTime.Now;
                userInfo.SessionID = Sid;
                userInfo.IsOnline  = true;
                //userInfo.VipLv = vipLv;
                userInfo.GameId          = GameType;
                userInfo.ServerId        = ServerID;
                userInfo.ChatVesion      = 0;
                userInfo.ChatDate        = DateTime.MinValue;
                userInfo.BroadcastVesion = 0;
                if (userInfo.DailyLoginTime == MathUtils.SqlMinDate ||
                    userInfo.DailyLoginTime.Date != DateTime.Now.Date)
                {
                    userInfo.DailyLoginTime = DateTime.Now;
                }
                //todo
                RankingHelper.DailySportsRankPrize(userInfo);
            }
            else
            {
                user = new SessionUser()
                {
                    UserId     = userId,
                    PassportId = PassportId
                };
                ErrorCode = 1005;
                ErrorInfo = LanguageManager.GetLang().St1005_RoleCheck;
            }
            return(true);
        }
Exemple #5
0
        public override bool TakeAction()
        {
            UserStatus status = ContextUser.UserStatus;

            if (status == UserStatus.FengJin)
            {
                return(false);
            }
            UserGeneral        general = UserGeneral.GetMainGeneral(ContextUser.UserID);
            Ranking <UserRank> ranking = RankingFactory.Get <UserRank>(CombatRanking.RankingKey);
            UserRank           rankInfo;

            if (ranking.TryGetRankNo(m => m.UserID == ContextUser.UserID, out rankID))
            {
                rankInfo = ranking.Find(s => s.UserID == ContextUser.UserID);
                //ContextUser.RankID = rankID;
            }
            else
            {
                rankInfo = new UserRank()
                {
                    UserID         = ContextUser.UserID,
                    HeadID         = general.HeadID,
                    GameCoin       = ContextUser.GameCoin,
                    NickName       = ContextUser.NickName,
                    ObtainNum      = ContextUser.ObtainNum,
                    UserLv         = ContextUser.UserLv,
                    RankId         = int.MaxValue,
                    RankDate       = DateTime.Now,
                    SportsIntegral = 0
                };
                ranking.TryAppend(rankInfo);
            }

            sportsName = UserHelper.SportTitleName(ContextUser.ObtainNum);

            sportNum       = GetChallGeNum(ContextUser.UserID);
            sportsIntegral = ContextUser.SportsIntegral.ToInt();
            sportsReward   = new ShareCacheStruct <SportsRewardInfo>().FindKey(rankInfo.RankId);
            receiveDate    = (int)(RankingHelper.GetNextReceiveDate() - DateTime.Now).TotalSeconds;

            CombatRanking combatrank = (CombatRanking)ranking;

            _userRankArray = combatrank.GetRanking(ContextUser);
            _userRankArray.Add(rankInfo);
            _userRankArray.QuickSort((x, y) =>
            {
                if (x == null && y == null)
                {
                    return(0);
                }
                if (x != null && y == null)
                {
                    return(1);
                }
                if (x == null)
                {
                    return(-1);
                }
                return(x.RankId.CompareTo(y.RankId));
            });

            _userCombatArray = ContextUser.GetSportsCombat();
            _userCombatArray.QuickSort((x, y) =>
            {
                if (x == null && y == null)
                {
                    return(0);
                }
                if (x != null && y == null)
                {
                    return(1);
                }
                if (x == null)
                {
                    return(-1);
                }
                return(y.CombatDate.CompareTo(x.CombatDate));
            });

            if (rankInfo != null && rankID > 0)
            {
                victoryNum = rankInfo.VictoryNum;
            }

            //NoviceHelper.SportVictoryNum(ContextUser, 2001, victoryNum); //竞技场奖励
            if (victoryNum >= 7)
            {
                ActivitiesAward.HolidayFestival(ContextUser.UserID);
            }
            rankID = ContextUser.RankID;



            int count     = 10;
            int pagecount = 0;

            userRankArray = ranking.GetRange(1, count, out pagecount);
            return(true);
        }
 public KalamburyRankingControllerTests()
 {
     mockRankingService = new Mock <IRankingService>();
     rankingHelper      = new RankingHelper();
 }
Exemple #7
0
        public override bool TakeAction()
        {
            int sportsIndex;

            if (int.TryParse(userSportsID, out sportsIndex))
            {
                var tempList = ContextUser.GetSportsCombat();
                if (tempList.Count > 0 && sportsIndex < tempList.Count)
                {
                    sportsIndex        = MathUtils.Addition(sportsIndex, 1);
                    _uSportsCombat     = tempList[tempList.Count - sportsIndex] ?? new SportsCombat();
                    _combatProcessList = _uSportsCombat.CombatProcess ?? new CombatProcessContainer();

                    _userTalPriority = CombatHelper.TotalPriorityNum(ContextUser.UserID, 0);

                    if (_combatProcessList.DefenseList.Count > 0)
                    {
                        _npcTalPriority = CombatHelper.TotalPriorityNum(_combatProcessList.DefenseList[0].UserID, 0);
                    }
                }
            }
            else if (!string.IsNullOrEmpty(toUserID))
            {
                UserHelper.ChechDailyRestrain(ContextUser.UserID);
                if (ContextUser.UserID == toUserID)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    return(false);
                }
                if (GetChallGeNum(ContextUser.UserID) <= 0)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().St5107_ChallGeNumFull;
                    return(false);
                }

                toGameUser = UserCacheGlobal.LoadOffline(toUserID);
                if (ContextUser.UseMagicID == 0 || toGameUser == null || toGameUser.UseMagicID == 0)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().St4004_NoUseMagic;
                    return(false);
                }
                RankingHelper.SportSRewardGain(toUserID, toGameUser.RankID);   //被挑战者的竞技排名
                //todo 竞技场冷却时间清除
                //var userQueueCache = new GameDataCacheSet<UserQueue>();
                //var queueArray = userQueueCache.FindAll(Uid, m => m.QueueType == QueueType.JingJiTiaoZhan);
                //if (queueArray.Count > 0 && queueArray[0].DoRefresh() > 0)
                //{
                //    ErrorCode = LanguageManager.GetLang().ErrorCode;
                //    ErrorInfo = LanguageManager.GetLang().St5107_Colding;
                //    return false;
                //}
                //if (queueArray.Count > 0)
                //{
                //    var userQueue = queueArray[0];
                //    userQueue.ColdTime = codeTime;
                //    userQueue.TotalColdTime = codeTime;
                //    userQueue.Timing = DateTime.Now;
                //}
                //else
                //{
                //    UserQueue queue = new UserQueue()
                //    {
                //        QueueID = Guid.NewGuid().ToString(),
                //        QueueType = QueueType.JingJiTiaoZhan,
                //        QueueName = QueueType.JingJiTiaoZhan.ToString(),
                //        UserID = ContextUser.UserID,
                //        ColdTime = codeTime,
                //        IsSuspend = false,
                //        TotalColdTime = codeTime,
                //        Timing = DateTime.Now
                //    };
                //    userQueueCache.Add(queue);
                //    //queue.Append();
                //}
                //次数限制修改
                int sportNum = 0;
                UserDailyRestrain dailyRestrain = new GameDataCacheSet <UserDailyRestrain>().FindKey(ContextUser.UserID);
                if (dailyRestrain != null)
                {
                    sportNum = MathUtils.Addition(dailyRestrain.Funtion9, 1, int.MaxValue);
                    dailyRestrain.Funtion9 = sportNum;
                    //dailyRestrain.Update();
                }
                else
                {
                    sportNum = 1;
                }
                TriggerSportCombat(ContextUser, toGameUser, sportNum, ref sportsPrizeStr, userMail);

                var tempList = ContextUser.GetSportsCombat();
                if (tempList.Count > 0)
                {
                    _uSportsCombat     = tempList[tempList.Count - 1] ?? new SportsCombat();
                    _combatProcessList = _uSportsCombat.CombatProcess ?? new CombatProcessContainer();
                }
                //日常任务-竞技
                TaskHelper.TriggerDailyTask(Uid, 4006);
                _userTalPriority = CombatHelper.TotalPriorityNum(ContextUser.UserID, 0);
                _npcTalPriority  = CombatHelper.TotalPriorityNum(toUserID, 0);
            }
            else
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                return(false);
            }

            userMail.GameCoin = _uSportsCombat.RewardGoin;
            userMail.Obtion   = _uSportsCombat.RewardObtian;
            var tjxMailService = new TjxMailService(toGameUser);

            tjxMailService.Send(userMail);

            _selfAbilityEffectList    = UserAbilityHelper.GetSelfAbilityEffectList(ContextUser.UserID, 0);
            _defSelfAbilityEffectList = UserAbilityHelper.GetSelfAbilityEffectList(toUserID, 1);
            _selfAbilityEffectList.AddRange(_defSelfAbilityEffectList);
            return(true);
        }