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; }
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; } }
/// <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); // } //} } }