Fixed Gruppensystem / immer noch ohne Memberliste

This commit is contained in:
VegaZ
2021-03-11 20:42:42 +01:00
parent 524baa7f7c
commit f3ea73f5b2
2 changed files with 33 additions and 32 deletions

View File

@@ -361,7 +361,7 @@ export default function (globalData: IGlobalData) {
groupMenu.AddItem(new UIMenuItem("Mitglieder anzeigen")); groupMenu.AddItem(new UIMenuItem("Mitglieder anzeigen"));
groupMenu.AddItem(new UIMenuItem("Leiter bestimmen")); groupMenu.AddItem(new UIMenuItem("Leiter bestimmen"));
groupMenu.AddItem(new UIMenuItem("Gruppe verlassen")); groupMenu.AddItem(new UIMenuItem("Gruppe verlassen"));
groupMenu.AddItem(new UIMenuItem("Gruppe löschen")); groupMenu.AddItem(new UIMenuItem("~r~Gruppe löschen"));
groupMenu.Visible = false; groupMenu.Visible = false;
mp.gui.chat.show(false); mp.gui.chat.show(false);
groupMenu.ItemSelect.on((item, index) => { groupMenu.ItemSelect.on((item, index) => {
@@ -394,7 +394,7 @@ export default function (globalData: IGlobalData) {
case 3: //Neuen (zusätzlichen) Gruppenleiter bestimmen case 3: //Neuen (zusätzlichen) Gruppenleiter bestimmen
globalData.InInput = true; 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.show();
input.getValue(name => { input.getValue(name => {
mp.events.callRemote("CLIENT:InteractionMenu_MakeLeader", "Gruppe", name); mp.events.callRemote("CLIENT:InteractionMenu_MakeLeader", "Gruppe", name);
@@ -404,16 +404,21 @@ export default function (globalData: IGlobalData) {
break; break;
case 4: //Gruppe verlassen (bestimmt zufällig neuen Leiter) 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; break;
case 5: //Gruppe löschen (als Leiter) case 5: //Gruppe löschen (als Leiter)
groupMenu.Close();
mp.gui.chat.show(true);
globalData.InMenu = false;
mp.events.callRemote("CLIENT:InteractionMenu_DeleteGroup", "Gruppe"); mp.events.callRemote("CLIENT:InteractionMenu_DeleteGroup", "Gruppe");
break; break;
} }
}); });
return groupMenu; return groupMenu;
} }

View File

@@ -335,19 +335,14 @@ namespace ReallifeGamemode.Server.Managers
[RemoteEvent("CLIENT:InteractionMenu_MakeLeader")] [RemoteEvent("CLIENT:InteractionMenu_MakeLeader")]
public void InteractionMenuGroupMakeLeader(Player player, string type, string name) 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") if (type == "Gruppe")
{ {
using (var dbContext = new DatabaseContext()) 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) if (targetUser?.Group.Id != playerUser?.Group.Id)
{ {
ChatService.ErrorMessage(player, "Dieser Spieler ist nicht in deiner Gruppe"); ChatService.ErrorMessage(player, "Dieser Spieler ist nicht in deiner Gruppe");
@@ -356,12 +351,12 @@ namespace ReallifeGamemode.Server.Managers
if (player.Name == name) if (player.Name == name)
{ {
ChatService.ErrorMessage(player, "Du bist schon Leader! Was willst du noch?"); ChatService.ErrorMessage(player, "Du bist schon Leader");
return; return;
} }
ChatService.BroadcastGroup("~y~" + targetUser.Name + " ~s~ist jetzt neuer Gruppen-Manager.", playerUser.Group); 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.SendMessage(targetUser.Player, "~y~Du bist jetzt Manager deiner Gruppe");
targetUser.GroupRank = GroupRank.MANAGER; targetUser.GroupRank = GroupRank.MANAGER;
dbContext.SaveChanges(); dbContext.SaveChanges();
@@ -372,11 +367,12 @@ namespace ReallifeGamemode.Server.Managers
[RemoteEvent("CLIENT:InteractionMenu_LeaveGroup")] [RemoteEvent("CLIENT:InteractionMenu_LeaveGroup")]
public void InteractionMenuGroupLeageGroup(Player player, string type) public void InteractionMenuGroupLeageGroup(Player player, string type)
{ {
if (type == "Gruppe") if (type == "Gruppe")
{ {
using (var dbContext = new DatabaseContext()) using (var dbContext = new DatabaseContext())
{ {
User playerUser = player.GetUser(); User playerUser = player.GetUser(dbContext);
if (playerUser?.Group == null) if (playerUser?.Group == null)
{ {
@@ -390,17 +386,20 @@ namespace ReallifeGamemode.Server.Managers
return; return;
} }
var group = player.GetUser().Group;
if(playerUser.GroupRank == GroupRank.OWNER) if(playerUser.GroupRank == GroupRank.OWNER)
{ {
var memberList = dbContext.Users.ToList().Where(u => u.Group == playerUser.Group && u.GroupRank < GroupRank.OWNER); var memberList = dbContext.Users.Where(u => u.Group == playerUser.Group && u.GroupRank < GroupRank.OWNER).ToList();
var newOwner = dbContext.Users.GroupBy(x => x.GroupRank).Select(g => g.OrderByDescending(x => x.GroupRank).FirstOrDefault()); var newOwner = memberList.OrderByDescending(c => c.GroupRank).First();
newOwner.FirstOrDefault().GroupRank = GroupRank.OWNER; newOwner.GroupRank = GroupRank.OWNER;
ChatService.BroadcastGroup("~y~" + player.Name + "~s~ wurde zum neuen Owner ernannt.", playerUser.Group); 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.GroupRank = GroupRank.NONE;
playerUser.Group = null;
ChatService.BroadcastGroup("~y~" + player.Name + "~s~ hat die Gruppe verlassen", group);
dbContext.SaveChanges(); dbContext.SaveChanges();
} }
} }
@@ -409,28 +408,25 @@ namespace ReallifeGamemode.Server.Managers
[RemoteEvent("CLIENT:InteractionMenu_DeleteGroup")] [RemoteEvent("CLIENT:InteractionMenu_DeleteGroup")]
public void InteractionMenuGroupDeleteGroup(Player player, string type) public void InteractionMenuGroupDeleteGroup(Player player, string type)
{ {
User playerUser = player.GetUser();
if (type == "Gruppe") if (type == "Gruppe")
{ {
using (var dbContext = new DatabaseContext()) using (var dbContext = new DatabaseContext())
{ {
User playerUser = player.GetUser();
if (playerUser?.Group == null || playerUser.GroupRank < GroupRank.OWNER) if (playerUser?.Group == null || playerUser.GroupRank < GroupRank.OWNER)
{ {
ChatService.NotAuthorized(player); ChatService.NotAuthorized(player);
return; return;
} }
var memberList = dbContext.Users.ToList().Where(u => u.Group == playerUser.Group);
var deletedGroup = dbContext.Groups.FirstOrDefault(g => g.Id == playerUser.Group.Id); 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.Group = null;
user.GroupRank = GroupRank.NONE; 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.Remove(deletedGroup);
dbContext.SaveChanges(); dbContext.SaveChanges();
} }