From f3ea73f5b2d5598f0497e626e8cd567831ea2c44 Mon Sep 17 00:00:00 2001 From: VegaZ Date: Thu, 11 Mar 2021 20:42:42 +0100 Subject: [PATCH] Fixed Gruppensystem / immer noch ohne Memberliste --- .../Interaction/interactionmenu.ts | 13 +++-- .../Managers/InteractionManager.cs | 52 +++++++++---------- 2 files changed, 33 insertions(+), 32 deletions(-) diff --git a/ReallifeGamemode.Client/Interaction/interactionmenu.ts b/ReallifeGamemode.Client/Interaction/interactionmenu.ts index 6890b675..f1db6eea 100644 --- a/ReallifeGamemode.Client/Interaction/interactionmenu.ts +++ b/ReallifeGamemode.Client/Interaction/interactionmenu.ts @@ -361,7 +361,7 @@ export default function (globalData: IGlobalData) { groupMenu.AddItem(new UIMenuItem("Mitglieder anzeigen")); groupMenu.AddItem(new UIMenuItem("Leiter bestimmen")); groupMenu.AddItem(new UIMenuItem("Gruppe verlassen")); - groupMenu.AddItem(new UIMenuItem("Gruppe löschen")); + groupMenu.AddItem(new UIMenuItem("~r~Gruppe löschen")); groupMenu.Visible = false; mp.gui.chat.show(false); groupMenu.ItemSelect.on((item, index) => { @@ -394,7 +394,7 @@ export default function (globalData: IGlobalData) { case 3: //Neuen (zusätzlichen) Gruppenleiter bestimmen globalData.InInput = true; - var input = new InputHelper("Welchen Spieler möchtest du zum Leiter ernennen (Name) ? ", globalData); + var input = new InputHelper("Welchen Spieler soll Manager werden (Name)? ", globalData); input.show(); input.getValue(name => { mp.events.callRemote("CLIENT:InteractionMenu_MakeLeader", "Gruppe", name); @@ -404,16 +404,21 @@ export default function (globalData: IGlobalData) { break; case 4: //Gruppe verlassen (bestimmt zufällig neuen Leiter) - mp.events.callRemote("CLIENT:InteractionMenu_LeaveGroup", "Gruppe"); + groupMenu.Close(); + mp.gui.chat.show(true); + globalData.InMenu = false; + mp.events.callRemote("CLIENT:InteractionMenu_LeaveGroup", "Gruppe"); break; case 5: //Gruppe löschen (als Leiter) + groupMenu.Close(); + mp.gui.chat.show(true); + globalData.InMenu = false; mp.events.callRemote("CLIENT:InteractionMenu_DeleteGroup", "Gruppe"); break; } }); - return groupMenu; } diff --git a/ReallifeGamemode.Server/Managers/InteractionManager.cs b/ReallifeGamemode.Server/Managers/InteractionManager.cs index cb060f1d..19de903e 100644 --- a/ReallifeGamemode.Server/Managers/InteractionManager.cs +++ b/ReallifeGamemode.Server/Managers/InteractionManager.cs @@ -335,19 +335,14 @@ namespace ReallifeGamemode.Server.Managers [RemoteEvent("CLIENT:InteractionMenu_MakeLeader")] public void InteractionMenuGroupMakeLeader(Player player, string type, string name) { + Player target = PlayerService.GetPlayerByNameOrId(name); + User targetUser = target.GetUser(); + User playerUser = player.GetUser(); + if (type == "Gruppe") { using (var dbContext = new DatabaseContext()) { - User targetUser = dbContext.Users.FirstOrDefault(u => u.Name == name); - User playerUser = player.GetUser(); - - if (playerUser?.Group == null || playerUser.GroupRank < GroupRank.OWNER) - { - ChatService.NotAuthorized(player); - return; - } - if (targetUser?.Group.Id != playerUser?.Group.Id) { ChatService.ErrorMessage(player, "Dieser Spieler ist nicht in deiner Gruppe"); @@ -356,12 +351,12 @@ namespace ReallifeGamemode.Server.Managers if (player.Name == name) { - ChatService.ErrorMessage(player, "Du bist schon Leader! Was willst du noch?"); + ChatService.ErrorMessage(player, "Du bist schon Leader"); return; } - ChatService.BroadcastGroup("~y~" + targetUser.Name + " ~s~ist jetzt neuer Gruppen-Manager.", playerUser.Group); - ChatService.SendMessage(targetUser.Player, "~y~Du bist jetzt Manager deiner Gruppe."); + ChatService.BroadcastGroup("~y~" + targetUser.Name + " ~s~ist jetzt neuer Gruppen-Manager", playerUser.Group); + ChatService.SendMessage(targetUser.Player, "~y~Du bist jetzt Manager deiner Gruppe"); targetUser.GroupRank = GroupRank.MANAGER; dbContext.SaveChanges(); @@ -372,11 +367,12 @@ namespace ReallifeGamemode.Server.Managers [RemoteEvent("CLIENT:InteractionMenu_LeaveGroup")] public void InteractionMenuGroupLeageGroup(Player player, string type) { + if (type == "Gruppe") { using (var dbContext = new DatabaseContext()) { - User playerUser = player.GetUser(); + User playerUser = player.GetUser(dbContext); if (playerUser?.Group == null) { @@ -390,17 +386,20 @@ namespace ReallifeGamemode.Server.Managers return; } + var group = player.GetUser().Group; + if(playerUser.GroupRank == GroupRank.OWNER) { - var memberList = dbContext.Users.ToList().Where(u => u.Group == playerUser.Group && u.GroupRank < GroupRank.OWNER); - var newOwner = dbContext.Users.GroupBy(x => x.GroupRank).Select(g => g.OrderByDescending(x => x.GroupRank).FirstOrDefault()); + var memberList = dbContext.Users.Where(u => u.Group == playerUser.Group && u.GroupRank < GroupRank.OWNER).ToList(); + var newOwner = memberList.OrderByDescending(c => c.GroupRank).First(); - newOwner.FirstOrDefault().GroupRank = GroupRank.OWNER; - ChatService.BroadcastGroup("~y~" + player.Name + "~s~ wurde zum neuen Owner ernannt.", playerUser.Group); + newOwner.GroupRank = GroupRank.OWNER; + ChatService.BroadcastGroup("~y~" + newOwner.Name + "~s~ wurde zum neuen Owner ernannt", playerUser.Group); } - ChatService.BroadcastGroup("~y~" + player.Name + "~s~ hat die Gruppe verlassen.",playerUser.Group); - playerUser.Group = null; + playerUser.GroupRank = GroupRank.NONE; + playerUser.Group = null; + ChatService.BroadcastGroup("~y~" + player.Name + "~s~ hat die Gruppe verlassen", group); dbContext.SaveChanges(); } } @@ -409,28 +408,25 @@ namespace ReallifeGamemode.Server.Managers [RemoteEvent("CLIENT:InteractionMenu_DeleteGroup")] public void InteractionMenuGroupDeleteGroup(Player player, string type) { + User playerUser = player.GetUser(); if (type == "Gruppe") { using (var dbContext = new DatabaseContext()) - { - User playerUser = player.GetUser(); - + { if (playerUser?.Group == null || playerUser.GroupRank < GroupRank.OWNER) { ChatService.NotAuthorized(player); return; } - - var memberList = dbContext.Users.ToList().Where(u => u.Group == playerUser.Group); + var deletedGroup = dbContext.Groups.FirstOrDefault(g => g.Id == playerUser.Group.Id); - foreach (var user in memberList) + + foreach (var user in dbContext.Users.Where(u => u.Group == playerUser.Group).ToList()) { - var groupName = dbContext.Groups.FirstOrDefault(g => g.Id == playerUser.Group.Id); user.Group = null; user.GroupRank = GroupRank.NONE; - ChatService.SendMessage(user.Player, "Die Gruppe ~y~" + groupName + "~s~ wurde aufgelöst"); + ChatService.SendMessage(PlayerService.GetPlayerByNameOrId(user.Name), "Die Gruppe ~y~" + deletedGroup.Name + "~s~ wurde aufgelöst"); } - dbContext.Remove(deletedGroup); dbContext.SaveChanges(); }