/// <summary> /// 答题奖励 /// </summary> /// <param name="userGuild"></param> /// <param name="gameActive"></param> /// <param name="exuser"></param> /// <param name="user"></param> public static void DoPrize(UserGuild userGuild, GameActive gameActive, ExerciseUser exuser, GameUser user, ref int expNum, ref int Experience) { DateTime dt = DateTime.Now; if (dt < gameActive.BeginTime) { userGuild.GuildExercise.Status = 0; return; } if (exuser.Status == GuildExerciseStatus.All || (userGuild.GuildExercise.QuestionNo == exuser.QuestionNo && exuser.AnswerStatus)) { GuildExercisePrize prize = new ConfigCacheSet <GuildExercisePrize>().FindKey(userGuild.GuildExercise.Level); if (prize == null) { return; } decimal precent = GetExercisePrecent(userGuild); expNum = (int)Math.Floor((decimal)prize.ExpNum * precent); Experience = (int)Math.Floor((decimal)prize.Experience * precent); user.ExpNum = MathUtils.Addition(user.ExpNum, expNum, int.MaxValue); UserHelper.UserGeneralExp(user.UserID, Experience); } }
/// <summary> /// 初始化BOSS数据 /// </summary> /// <returns></returns> private static CombatGeneral CreateBossGeneral(UserGuild guild) { CombatGeneral boss = null; if (guild != null) { GuildBossInfo bossInfo = guild.GuildBossInfo; if (bossInfo != null) { var plotNpcInfoList = new ConfigCacheSet <PlotNPCInfo>().FindAll(m => m.PlotID == gameActive.BossPlotID); if (plotNpcInfoList.Count > 0) { var embattleList = new ConfigCacheSet <PlotEmbattleInfo>().FindAll(m => m.PlotNpcID == plotNpcInfoList[0].PlotNpcID); if (embattleList.Count > 0) { boss = (CombatGeneral)MonsterQueue.Create(embattleList[0]); boss.Lv = (short)MathUtils.Subtraction(bossInfo.BossLv, 0, gameActive.BossDefLv); int bossLiftNum = MonsterQueue.BossProperty(embattleList[0].PlotNpcID, AbilityType.ShengMing).ToInt(); int lifeNum = boss.LifeNum + (boss.Lv - gameActive.BossDefLv) * bossLiftNum; //ConfigEnvSet.GetInt("BossCombat.IncreaseLiveNum"); boss.LifeMaxNum = lifeNum; boss.LifeNum = lifeNum; } } else { throw new Exception(string.Format("公会战未配置BOSS:{0}", gameActive.BossPlotID)); } } } if (boss == null) { throw new Exception("Loading guid boss faild."); } return(boss); }
/// <summary> /// 检查答题状态 /// </summary> /// <param name="guild"></param> /// <returns></returns> private bool checkAnswer(UserGuild guild) { if (guild.GuildExercise.CheckAllAnswer != 0) { return(false); } foreach (ExerciseUser user in guild.GuildExercise.UserList) { if (user.Status == GuildExerciseStatus.All) { continue; } if (user.QuestionNo != guild.GuildExercise.QuestionNo) { if (guild.GuildExercise.QuestionNo - user.QuestionNo >= 5) { continue; } else { guild.GuildExercise.CheckAllAnswer = 2; return(false); } } if (!user.AnswerStatus) { guild.GuildExercise.CheckAllAnswer = 2; return(false); } } guild.GuildExercise.CheckAllAnswer = 1; return(true); }
/// <summary> /// 加载数据 /// </summary> public static void InitBoss(UserGuild userGuild) { try { if (_userGuildList.ContainsKey(userGuild.GuildID)) { _userGuildList[userGuild.GuildID] = userGuild; } else { _userGuildList.Add(userGuild.GuildID, userGuild); } CombatGeneral general = CreateBossGeneral(userGuild); if (!_bossGeneralList.ContainsKey(userGuild.GuildID)) { _bossGeneralList.Add(userGuild.GuildID, new BossDictionary { BossGeneral = general }); } else { _bossGeneralList[userGuild.GuildID].BossGeneral = general; } } catch (Exception ex) { new BaseLog().SaveLog(ex); } }
public override bool TakeAction() { if (!string.IsNullOrEmpty(ContextUser.MercenariesID)) { Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); GuildBossCombat bossCombat = new GuildBossCombat(ContextUser.MercenariesID); UserGuild guild = bossCombat.UserGuild; if (guild != null) { GameActive gameActive = new ShareCacheStruct <GameActive>().FindKey(_activeId); CombatStatus combatStatus = guild.CombatStatus; if (combatStatus == CombatStatus.Wait || combatStatus == CombatStatus.Combat) { int total; var tempList = bossCombat.RefreshRanking(); _bossUserList = tempList.GetPaging(1, Top, out total); _rankingNo = tempList.FindIndex(m => m.UserId == Uid) + 1; } } stopwatch.Stop(); new BaseLog().SaveLog("公会boss伤害排名所需时间:" + stopwatch.Elapsed.TotalMilliseconds + "ms"); } return(true); }
/// <summary> /// 捐献数量,贡献声望 /// </summary> /// <param name="guild"></param> /// <param name="member"></param> /// <param name="wholeNum"></param> private void GetAddDonate(UserGuild guild, GuildMember member, int wholeNum) { guild.CurrDonateNum = MathUtils.Addition(guild.CurrDonateNum, wholeNum); //guild.Update(); if (donateType == 1) { ContextUser.GameCoin = MathUtils.Subtraction(ContextUser.GameCoin, totalDonateNum); member.DonateCoin = MathUtils.Addition(member.DonateCoin, totalDonateNum); } else if (donateType == 2) { ContextUser.UseGold = MathUtils.Addition(ContextUser.UseGold, totalDonateNum); member.DonateGold = MathUtils.Addition(member.DonateGold, totalDonateNum); } ContextUser.ObtainNum = MathUtils.Addition(ContextUser.ObtainNum, wholeNum); //ContextUser.Update(); member.Contribution = MathUtils.Addition(member.Contribution, wholeNum); member.TotalContribution = MathUtils.Addition(member.TotalContribution, wholeNum); //member.Update(); UserHelper.UserGuildUpLv(member.GuildID, wholeNum); //公会添加经验,升级 GuildMemberLog.AddLog(member.GuildID, new MemberLog { UserID = ContextUser.UserID, IdolID = 0, LogType = 1, GainObtion = wholeNum, Experience = wholeNum, GainAura = 0, InsertDate = DateTime.Now }); }
public async Task <IActionResult> GetUserInformationAsync(string userIdString) { if (!ulong.TryParse(userIdString, out var userId)) { return(Ok(null)); } var userInformation = await UserService.GetUserInformationAsync(UserGuild.Id, userId); if (userInformation is null) { return(Ok(null)); } var userRank = await MessageRepository.GetGuildUserParticipationStatistics(UserGuild.Id, userId); var messages7 = await MessageRepository.GetGuildUserMessageCountByDate(UserGuild.Id, userId, TimeSpan.FromDays(7)); var messages30 = await MessageRepository.GetGuildUserMessageCountByDate(UserGuild.Id, userId, TimeSpan.FromDays(30)); var roles = userInformation.RoleIds .Select(x => UserGuild.GetRole(x)) .OrderByDescending(x => x.IsHoisted) .ThenByDescending(x => x.Position) .ToArray(); var mapped = new { Id = userInformation.Id.ToString(), Username = userInformation.Username, Nickname = userInformation.Nickname, Discriminator = userInformation.Discriminator, AvatarUrl = userInformation.AvatarId != null?userInformation.GetAvatarUrl(ImageFormat.Auto, 256) : userInformation.GetDefaultAvatarUrl(), Status = userInformation.Status.ToString(), CreatedAt = userInformation.CreatedAt, JoinedAt = userInformation.JoinedAt, FirstSeen = userInformation.FirstSeen, LastSeen = userInformation.LastSeen, Rank = userRank.Rank, Last7DaysMessages = messages7.Sum(x => x.Value), Last30DaysMessages = messages30.Sum(x => x.Value), AverageMessagesPerDay = userRank.AveragePerDay, Percentile = userRank.Percentile, Roles = roles .Where(x => !x.IsEveryone) .Select(x => new { Id = x.Id, Name = x.Name, Color = x.Color.ToString(), }), IsBanned = userInformation.IsBanned, BanReason = userInformation.BanReason, IsGuildMember = userInformation.GuildId != default }; return(Ok(mapped)); } }
public void AddUserGuild(UserGuild newUserGuild) { if (newUserGuild == null) { throw new ArgumentNullException(nameof(newUserGuild)); } _context.UserGuilds.Add(newUserGuild); }
public DiscordGuildView(UserGuild guild) { Id = guild.Id.ToString(); Name = guild.Name; IconUrl = guild.IconUrl.GetAnimatedOrDefaultAvatar(); Roles = new List <DiscordRoleView>(); }
// Create a request for an user to enter a guild public void CreateUserGuildRequest(UserGuild userGuildRequest) { if (userGuildRequest == null) { throw new ArgumentNullException(nameof(userGuildRequest)); } _context.UserGuilds.Add(userGuildRequest); }
public void RemoveUserFromGuild(UserGuild userGuild) { if (userGuild == null) { throw new NullReferenceException(nameof(userGuild)); } _context.UserGuilds.Remove(userGuild); }
public override bool TakeAction() { int totalDate = (ConfigEnvSet.GetInt("UserQueue.GuildMemberDel") * 60 * 60); var memberSet = new ShareCacheStruct <GuildMember>(); List <GuildMember> memberArray = memberSet.FindAll(m => m.GuildID == guildID); GuildMember userMember = memberSet.FindKey(guildID, ContextUser.UserID); if (userMember != null && userMember.PostType == PostType.Chairman && memberArray.Count > 1) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St6010_Chairman; return(false); } if (userMember != null) { if (!string.IsNullOrEmpty(ContextUser.MercenariesID)) { memberSet.Delete(userMember); ContextUser.MercenariesID = string.Empty; //ContextUser.Update(); CombatHelper.RemoveGuildAbility(ContextUser); } var guildSet = new ShareCacheStruct <UserGuild>(); UserGuild guildInfo = guildSet.FindKey(guildID); if (guildInfo != null && userMember.PostType == PostType.Chairman && memberArray.Count <= 1) { guildSet.Delete(guildInfo); } List <UserQueue> queueArray = new PersonalCacheStruct <UserQueue>().FindAll(ContextUser.UserID, m => m.QueueType == QueueType.TuiChuGongHui); if (queueArray.Count > 0) { UserQueue queue = queueArray[0]; queue.Timing = DateTime.Now; queue.TotalColdTime = totalDate; queue.ColdTime = totalDate; //queue.Update(); } else { UserQueue userQueue = new UserQueue() { QueueID = Guid.NewGuid().ToString(), QueueName = QueueType.TuiChuGongHui.ToString(), QueueType = QueueType.TuiChuGongHui, TotalColdTime = totalDate, ColdTime = totalDate, Timing = DateTime.Now, IsSuspend = false, UserID = ContextUser.UserID }; new PersonalCacheStruct <UserQueue>().Add(userQueue); } } return(true); }
public async Task <IActionResult> GetUser() { Identity identity = await GetIdentity(); IUser currentUser = identity.GetCurrentUser(); List <UserGuild> currentUserGuilds = identity.GetCurrentUserGuilds(); List <DiscordGuildView> memberGuilds = new(); List <DiscordGuildView> modGuilds = new(); List <DiscordGuildView> adminGuilds = new(); List <DiscordGuildView> bannedGuilds = new(); bool siteAdmin = _config.GetSiteAdmins().Contains(currentUser.Id) || identity is TokenIdentity; if (identity is DiscordOAuthIdentity) { List <GuildConfig> registeredGuilds = await GuildConfigRepository.CreateDefault(_serviceProvider).GetAllGuildConfigs(); foreach (GuildConfig guild in registeredGuilds) { UserGuild userGuild = currentUserGuilds.FirstOrDefault(x => x.Id == guild.GuildId); if (userGuild != null) { IGuild userGuildFetched = _discordAPI.FetchGuildInfo(userGuild.Id, CacheBehavior.Default); if (userGuildFetched != null) { if (await identity.HasModRoleOrHigherOnGuild(guild.GuildId)) { if (await identity.HasAdminRoleOnGuild(guild.GuildId)) { adminGuilds.Add(new DiscordGuildView(userGuildFetched)); } else { modGuilds.Add(new DiscordGuildView(userGuildFetched)); } } else { memberGuilds.Add(new DiscordGuildView(userGuildFetched)); } } } else { try { _discordAPI.GetFromCache <IBan>(CacheKey.GuildBan(guild.GuildId, currentUser.Id)); bannedGuilds.Add(new DiscordGuildView(_discordAPI.FetchGuildInfo(guild.GuildId, CacheBehavior.Default))); } catch (NotFoundInCacheException) { } } } } return(Ok(new APIUser(memberGuilds, bannedGuilds, modGuilds, adminGuilds, currentUser, siteAdmin))); }
/// <summary> /// 释放 /// </summary> /// <param name="userGuild"></param> public static void Dispose(UserGuild userGuild) { if (_bossGeneralList.ContainsKey(userGuild.GuildID)) { _bossGeneralList[userGuild.GuildID].Clear(); } if (_userGuildList.ContainsKey(userGuild.GuildID)) { _userGuildList.Remove(userGuild.GuildID); } }
public static void DisposeData(UserGuild userGuild) { if (userGuild.LoadSuccess) { GameActive gameActive = new ShareCacheStruct <GameActive>().FindKey(UserGuild.ActiveID); userGuild.LoadSuccess = false; if (gameActive != null && gameActive.ActiveType == FunctionEnum.Goujili) { GuildBossCombat.Dispose(userGuild); } } }
public static void LoadData(UserGuild userGuild) { if ((userGuild.CombatStatus == CombatStatus.Wait || userGuild.CombatStatus == CombatStatus.Combat) && !userGuild.LoadSuccess) { GameActive gameActive = new ShareCacheStruct <GameActive>().FindKey(UserGuild.ActiveID); userGuild.LoadSuccess = true; if (gameActive != null && gameActive.ActiveType == FunctionEnum.Gonghui) { GuildBossCombat.InitBoss(userGuild); } } }
public override bool TakeAction() { if (!string.IsNullOrEmpty(ContextUser.MercenariesID)) { GuildBossCombat bossCombat = new GuildBossCombat(ContextUser.MercenariesID); UserGuild guild = bossCombat.UserGuild; if (guild != null) { CombatStatus combatStatus = guild.CombatStatus; if (combatStatus == CombatStatus.Killed || CombatHelper.GuildBossKill(ContextUser.MercenariesID)) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St5405_BossKilled; return(false); } else if (combatStatus == CombatStatus.Wait) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St5405_CombatWait; return(false); } else if (combatStatus == CombatStatus.Over) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St5405_CombatOver; return(false); } else if (combatStatus == CombatStatus.Combat) { var cuser = bossCombat.GetCombatUser(Uid); if (cuser != null && cuser.CodeTime > 0) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St5402_IsReliveError; return(false); } Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); IsWin = bossCombat.Combat(ContextUser, bossProcess); stopwatch.Stop(); new BaseLog().SaveLog("公会boss战斗所需时间:" + stopwatch.Elapsed.TotalMilliseconds + "ms"); } else { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St5402_CombatNoStart; return(false); } } } return(true); }
public ActionResult AddUsertoGuild(int id, UserGuildCreateRequestDto userGuildRequest) { UserGuild userGuild = new UserGuild { Role = "En attente", UserId = userGuildRequest.UserId, GuildId = id }; _repository.CreateUserGuildRequest(userGuild); _repository.SaveChanges(); return(Ok(_mapper.Map <UserGuildReadDto>(userGuild))); }
public async Task <IActionResult> AutocompleteUsers(string query) { await UserGuild.DownloadUsersAsync(); var result = UserGuild.Users .Where(d => d.Username.OrdinalContains(query)) .Take(10) .Select(d => new ModixUser { Name = $"{d.Username}#{d.Discriminator}", UserId = d.Id, AvatarHash = d.AvatarId }); return(Ok(result)); }
public ActionResult AcceptUser(UserGuildAcceptDto user) { UserGuild userToAccept = _repository.GetGuildUser(user.GuildId, user.UserId); if (userToAccept == null) { return(NotFound()); } userToAccept.Role = "Membre"; _repository.UpdateUserGuild(userToAccept); _repository.SaveChanges(); return(NoContent()); }
public async Task <IActionResult> AutocompleteUsers(string query) { await UserGuild.DownloadUsersAsync(); var result = UserGuild.Users is null ? Enumerable.Empty <ModixUser>() : UserGuild.Users .Where(d => d.Username.OrdinalContains(query)) .Take(10) .Select(d => ModixUser.FromSocketGuildUser(d)); return(Ok(result)); }
public static SimpleGuild CreateGuild(UserGuild guild) { return(new SimpleGuild() { Id = guild.Id, Name = guild.Name, ImageURL = "https://cdn.discordapp.com/icons/" + guild.Id + "/" + guild.Icon + ".png", IsDM = false, IsMuted = LocalState.GuildSettings.ContainsKey(guild.Id) ? LocalState.GuildSettings[guild.Id].raw.Muted : false, IsUnread = false, //Will Change if true IsValid = true, //Will change if false IsSelected = false }); }
public async Task <IActionResult> ChannelDesignations() { var designatedChannels = await ChannelService.GetDesignatedChannelsAsync(ModixAuth.CurrentGuildId.Value); var mapped = designatedChannels.Select(d => new DesignatedChannelApiData { Id = d.Id, ChannelId = d.Channel.Id, ChannelDesignation = d.Type, Name = UserGuild?.GetChannel(d.Channel.Id)?.Name ?? d.Channel.Id.ToString() }); return(Ok(mapped)); }
public async Task <IActionResult> RoleDesignations() { var designatedRoles = await RoleService.GetDesignatedRolesAsync(ModixAuth.CurrentGuildId.Value); var mapped = designatedRoles.Select(d => new DesignatedRoleApiData { Id = d.Id, RoleId = d.Role.Id, RoleDesignation = d.Type, Name = UserGuild?.GetRole(d.Role.Id)?.Name ?? d.Role.Id.ToString() }); return(Ok(mapped)); }
public async Task <IActionResult> GetDeletionContext(long batchId) { var deletedMessages = await ModerationService.SearchDeletedMessagesAsync(new DeletedMessageSearchCriteria { BatchId = batchId }, new SortingCriteria[] { //Sort ascending, so the earliest message is first new SortingCriteria { PropertyName = nameof(DeletedMessageSummary.MessageId), Direction = SortDirection.Ascending } }, new PagingCriteria()); var firstMessage = deletedMessages.Records.FirstOrDefault(); if (firstMessage == null) { return(NotFound($"Couldn't find messages for batch id {batchId}")); } var batchChannelId = deletedMessages.Records.First().Channel.Id; var foundChannel = UserGuild.GetChannel(batchChannelId) as ISocketMessageChannel; if (foundChannel == null) { return(NotFound($"Couldn't recreate context - text channel with id {batchChannelId} not found")); } if (SocketUser.GetPermissions(foundChannel as IGuildChannel).ReadMessageHistory == false) { return(Unauthorized($"You don't have read permissions for the channel this batch was deleted in (#{foundChannel.Name})")); } var beforeMessages = await foundChannel.GetMessagesAsync(firstMessage.MessageId, Direction.Before, 25).FlattenAsync(); var afterMessages = await foundChannel.GetMessagesAsync(firstMessage.MessageId, Direction.After, 25 + (int)deletedMessages.FilteredRecordCount).FlattenAsync(); var allMessages = new List <DeletedMessageAbstraction>(); allMessages.AddRange(deletedMessages.Records.Select(d => DeletedMessageAbstraction.FromSummary(d))); allMessages.AddRange(beforeMessages.Select(d => DeletedMessageAbstraction.FromIMessage(d))); allMessages.AddRange(afterMessages.Select(d => DeletedMessageAbstraction.FromIMessage(d))); var sorted = allMessages.OrderBy(d => d.MessageId); return(Ok(sorted)); }
public override bool TakeAction() { userGuild = new ShareCacheStruct <UserGuild>().FindKey(guildID); if (userGuild != null) { nextLv = MathUtils.Addition(userGuild.GuildLv, (short)1, (short)GuildLvInfo.GuildMaxLv); GuildLvInfo guildLvInfo = new ConfigCacheSet <GuildLvInfo>().FindKey(nextLv); if (guildLvInfo != null) { demandExperience = MathUtils.Subtraction(guildLvInfo.UpExperience, userGuild.CurrExperience, 0); activityArray = guildLvInfo.ActivityDesc.ToList(); } } return(true); }
public override bool TakeAction() { UserHelper.ChecheDailyContribution(ContextUser.MercenariesID, ContextUser.UserID); guild = new ShareCacheStruct <UserGuild>().FindKey(guildID); if (guild != null) { var memberLog = new ShareCacheStruct <GuildMemberLog>().FindKey(guildID) ?? new GuildMemberLog(); List <MemberLog> guildLogArray = memberLog.GetLog(null); foreach (MemberLog log in guildLogArray) { if (IsCurrentWeek(log.InsertDate)) { weekExperience = MathUtils.Addition(weekExperience, log.Experience, int.MaxValue); } } List <GuildMember> memberArray = new ShareCacheStruct <GuildMember>().FindAll(m => m.GuildID == guild.GuildID); foreach (GuildMember member in memberArray) { if (member.PostType == PostType.Chairman) { GameUser userInfo = UserCacheGlobal.CheckLoadUser(member.UserID); if (userInfo != null) { chairman = userInfo.NickName; } } if (member.UserID == ContextUser.UserID) { memberPost = (short)member.PostType; } } currPeople = memberArray.Count; GuildLvInfo guildLvInfo = new ConfigCacheSet <GuildLvInfo>().FindKey(guild.GuildLv); if (guildLvInfo != null) { int upLv = MathUtils.Addition(guild.GuildLv, (short)1, (short)GuildLvInfo.GuildMaxLv); if (new ConfigCacheSet <GuildLvInfo>().FindKey(upLv) != null) { upExperience = new ConfigCacheSet <GuildLvInfo>().FindKey(upLv).UpExperience; } maxPeople = MathUtils.Addition(guildLvInfo.MaxPeople, guild.AddMember); } } return(true); }
public ActionResult ChangeGuildOwner(ChangeGuildOwnerDto OwnerArray) { // ADD middleware verification UserGuild currentOwner = _repository.GetGuildUser(OwnerArray.GuildId, OwnerArray.CurrentUserOwnerId); UserGuild newOwner = _repository.GetGuildUser(OwnerArray.GuildId, OwnerArray.NewUserOwnerId); if (currentOwner == null || newOwner == null) { return(NotFound()); } currentOwner.Role = "Membre"; newOwner.Role = "Admin"; _repository.UpdateUserGuild(currentOwner); _repository.UpdateUserGuild(newOwner); _repository.SaveChanges(); return(NoContent()); }
public async Task <IActionResult> GetCurrentUserGuildsAsync([FromQuery] Dictionary <string, string> queryMap) { var args = new GetCurrentUserGuildsParams(); args.LoadQueryMap(queryMap); args.Validate(); var guild = new UserGuild(); if (args.Before.IsSpecified) { guild.Id = args.Before.Value; } if (args.After.IsSpecified) { guild.Id = args.After.Value; } return(Ok(new[] { guild })); }
public override bool TakeAction() { if (!string.IsNullOrEmpty(ContextUser.MercenariesID)) { Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); GuildBossCombat bossCombat = new GuildBossCombat(ContextUser.MercenariesID); UserGuild _guild = bossCombat.UserGuild; if (_guild != null) { CombatGeneral boss = bossCombat.Boss; if (boss != null) { currLifeNum = boss.LifeNum; maxLifeNum = boss.LifeMaxNum; } } stopwatch.Stop(); new BaseLog().SaveLog("公会boss刷新血量所需时间:" + stopwatch.Elapsed.TotalMilliseconds + "ms"); } return(true); }