/// <summary> /// 处理伤害奖励 /// </summary> private void DoDamagePrize(GameUser user, int damageNum, BossCombatProcess bossCombatProcess) { BossActivePrize bossPrize = UserGuild.BossPrize; if (bossPrize == null) { return; } int obtainNum = MathUtils.Addition(((int)Math.Ceiling((double)damageNum / bossPrize.ObtainRate)), 0, bossPrize.MaxObtain); int maxCoin = user.UserLv * bossPrize.MaxCoin; int gameCoin = MathUtils.Addition((int)Math.Ceiling((double)damageNum / bossPrize.CoinRate), 0, maxCoin); user.ObtainNum = MathUtils.Addition(user.ObtainNum, obtainNum, int.MaxValue); user.GameCoin = MathUtils.Addition(user.GameCoin, gameCoin, int.MaxValue); if (gameCoin <= 0) { gameCoin = 1; } if (obtainNum <= 0) { obtainNum = 1; } bossCombatProcess.ObtainNum = obtainNum; bossCombatProcess.GameCoin = gameCoin; CountryCombat.Contribution(user.UserID, obtainNum); //公会贡献 //发到聊天里 var chatService = new TjxChatService(); chatService.SystemSendWhisper(user, string.Format(LanguageManager.GetLang().St6105_CombatHarmReward, gameCoin, obtainNum)); }
/// <summary> /// 处理击杀奖励 /// </summary> private void DoKillPrize() { BossActivePrize bossPrize = UserGuild.BossPrize; if (bossPrize == null) { return; } //CacheChat cacheChat = new CacheChat(); var rankingList = RefreshRanking(); int length = rankingList.Count > bossPrize.TopObtain ? bossPrize.TopObtain : rankingList.Count; int afterLength = rankingList.Count > bossPrize.AfterObtain ? bossPrize.AfterObtain : rankingList.Count; //处理排名奖励 for (int i = 0; i < length; i++) { string prizeItemMsg = string.Empty; GameUser tempUser = new GameDataCacheSet <GameUser>().FindKey(rankingList[i].UserId); tempUser.ObtainNum = MathUtils.Addition(tempUser.ObtainNum, bossPrize.TopObtainNum, int.MaxValue); //前5名奖励 if (i == 0) { DoTopThreePrize(i + 1, tempUser, bossPrize.Rank1, bossPrize.Items, out prizeItemMsg); } else if (i == 1) { DoTopThreePrize(i + 1, tempUser, bossPrize.Rank2, bossPrize.Items, out prizeItemMsg); } else if (i == 2) { DoTopThreePrize(i + 1, tempUser, bossPrize.Rank3, bossPrize.Items, out prizeItemMsg); } else if (i == 3) { DoTopThreePrize(i + 1, tempUser, bossPrize.Rank4, bossPrize.Items, out prizeItemMsg); } else if (i == 4) { DoTopThreePrize(i + 1, tempUser, bossPrize.Rank5, bossPrize.Items, out prizeItemMsg); } //tempUser.Update(); if (!string.IsNullOrEmpty(prizeItemMsg)) { prizeItemMsg = "," + prizeItemMsg; } new TjxChatService(tempUser).SystemGuildSend(ChatType.Guild, string.Format(LanguageManager.GetLang().St6105_CombatRankmReward, tempUser.NickName, (i + 1), bossPrize.TopObtainNum, prizeItemMsg)); CountryCombat.Contribution(tempUser.UserID, bossPrize.TopObtainNum); //公会贡献 } //后5名玩家奖励 for (int i = length; i < afterLength; i++) { string prizeItemMsg = string.Empty; GameUser tempUser = new GameDataCacheSet <GameUser>().FindKey(rankingList[i].UserId); tempUser.ObtainNum = MathUtils.Addition(tempUser.ObtainNum, bossPrize.AfterObtainNum, int.MaxValue); //tempUser.Update(); if (!string.IsNullOrEmpty(prizeItemMsg)) { prizeItemMsg = "," + prizeItemMsg; } new TjxChatService(tempUser).SystemGuildSend(ChatType.Guild, string.Format(LanguageManager.GetLang().St6105_CombatRankmReward, tempUser.NickName, (i + 1), bossPrize.AfterObtainNum, prizeItemMsg)); CountryCombat.Contribution(tempUser.UserID, bossPrize.AfterObtainNum); //公会贡献 } }