Beispiel #1
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 ConfigCacheSet<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;
        }
Beispiel #2
0
 private static short GetRankStatus(bool isWin, UserRank userRank, UserRank toUserRank)
 {
     //0:不变 1:上升 2:下降
     if (isWin && userRank.RankId > toUserRank.RankId)
     {
         return (short)1;
     }
     else if (!isWin && userRank.RankId < toUserRank.RankId)
     {
         return (short)2;
     }
     else
     {
         return (short)0;
     }
 }
Beispiel #3
0
        /// <summary>
        /// 竞技场公告
        /// </summary>
        public static void SprostSystemChat(UserRank rank, UserRank toRank)
        {
            if (rank == null || toRank == null)
            {
                return;
            }
            int topId = rank.RankId;
            int totopID = toRank.RankId;
            int winNum = 0;
            int winMaxNum = 0;
            string content = string.Empty;
            string winMaxUserID = string.Empty;
            var chatService = new TjxChatService();
            if (topId == 1 && topId > totopID)
            {
                content = string.Format(LanguageManager.GetLang().St5107_JingJiChangOneRank, rank.NickName, toRank.NickName);
                chatService.SystemSend(ChatType.World, content);
            }
            GameUser gameUser = UserCacheGlobal.LoadOffline(rank.UserID);
            if (gameUser != null)
            {
                IList<SportsCombat> userSportsCombats = gameUser.GetSportsCombat();

                if (userSportsCombats.Count > 0)
                {
                    if (totopID == 1 && userSportsCombats[userSportsCombats.Count - 1].IsWin)
                    {
                        content = string.Format(LanguageManager.GetLang().St5107_JingJiChangOneRank, toRank.NickName,
                                                rank.NickName);
                        chatService.SystemSend(ChatType.World, content);
                    }
                    winNum = userSportsCombats[userSportsCombats.Count - 1].WinNum;
                }
                //连胜第一名
                winMaxUserID = ServerEnvSet.Get(ServerEnvKey.SportFirstUser, "");
                winMaxNum = ServerEnvSet.Get(ServerEnvKey.SportFirstWinNum, 0).ToInt();

                Ranking<UserRank> ranking = RankingFactory.Get<UserRank>(CombatRanking.RankingKey);
                UserRank rankInfo = ranking.Find(s => s.UserID == winMaxUserID);
                //打破全服最高连胜的发通知
                if (winNum > winMaxNum)
                {
                    ServerEnvSet.Set(ServerEnvKey.SportFirstUser, rank.UserID);
                    ServerEnvSet.Set(ServerEnvKey.SportFirstWinNum, winNum);
                    if (rankInfo != null && rank.UserID != winMaxUserID && !string.IsNullOrEmpty(winMaxUserID))
                    {
                        content = string.Format(LanguageManager.GetLang().St5107_ZuiGaoLianSha, rank.NickName,
                                                rankInfo.NickName);
                        chatService.SystemSend(ChatType.World, content);
                    }
                    else if (winMaxNum > 5)
                    {
                        content = string.Format(LanguageManager.GetLang().St5107_JingJiChangWinNum, rank.NickName,
                                                winNum);
                        chatService.SystemSend(ChatType.World, content);
                    }
                }
                //int upRankID = MathUtils.Subtraction(totopID, topId, 0);
                //if (upRankID > 20)
                //{
                //    UserRank urankInfo = ranking.Find(s => s.UserID == rank.UserID);
                //    if (urankInfo != null && !string.IsNullOrEmpty(urankInfo.UserID))
                //    {
                //        content = string.Format(LanguageManager.GetLang().St5107_JingJiChangMoreNum, rank.NickName,
                //                                upRankID);
                //        chatService.SystemSend(ChatType.World, content);
                //    }
                //}
            }
        }