diff --git a/ReallifeGamemode.Client/Interaction/interactionmenu.ts b/ReallifeGamemode.Client/Interaction/interactionmenu.ts index bfca9dde..afe6c4b6 100644 --- a/ReallifeGamemode.Client/Interaction/interactionmenu.ts +++ b/ReallifeGamemode.Client/Interaction/interactionmenu.ts @@ -113,10 +113,16 @@ export default function (globalData: GlobalData) { var input = new InputHelper("Welchen Spieler möchtest du inviten (Name / ID)?", globalData); input.show(); input.getValue(name => { - mp.events.callRemote("CLIENT:InteractionMenu_InviteFaction", name); + mp.events.callRemote("CLIENT:InteractionMenu_Invite", "Fraktion", name); parentMenu.Close(); }); } else if (index === 1) { // Uninviten + var input = new InputHelper("Welchen Spieler möchtest du uninviten (Name / ID)?", globalData); + input.show(); + input.getValue(name => { + mp.events.callRemote("CLIENT:InteractionMenu_Uninvite", "Fraktion", name); + parentMenu.Close(); + }); } }); @@ -134,10 +140,16 @@ export default function (globalData: GlobalData) { var input = new InputHelper("Welchen Spieler möchtest du inviten (Name / ID)?", globalData); input.show(); input.getValue(name => { - mp.events.callRemote("CLIENT:InteractionMenu_InviteGroup", name); + mp.events.callRemote("CLIENT:InteractionMenu_Invite", "Gruppe", name); parentMenu.Close(); }); } else if (index === 1) { // Uninviten + var input = new InputHelper("Welchen Spieler möchtest du uninviten (Name / ID)?", globalData); + input.show(); + input.getValue(name => { + mp.events.callRemote("CLIENT:InteractionMenu_Uninvite", "Gruppe", name); + parentMenu.Close(); + }); } }); diff --git a/ReallifeGamemode.Server/Commands/FactionCommands.cs b/ReallifeGamemode.Server/Commands/FactionCommands.cs index bebde9d7..1499b8a0 100644 --- a/ReallifeGamemode.Server/Commands/FactionCommands.cs +++ b/ReallifeGamemode.Server/Commands/FactionCommands.cs @@ -71,12 +71,6 @@ namespace ReallifeGamemode.Server.Commands } #endregion #region Leader Commands - [Command("invite", "~m~Benutzung: ~s~/invite [Name]")] - public void CmdFactionInvite(Client player, string name) - { - - } - [Command("giverank", "~m~Benutzung: ~s~/giverank [Name] [Rang]", GreedyArg = true)] public void CmdFactionGiverank(Client player, string name, string rank) { @@ -120,48 +114,7 @@ namespace ReallifeGamemode.Server.Commands [Command("uninvite", "~m~Benutzung: ~s~/uninvite [Name]")] public void CmdFactionUninvite(Client player, string name) { - if (player.GetUser()?.FactionId == null || player.GetUser().FactionLeader == false) - { - ChatService.NotAuthorized(player); - return; - } - - Client target = ClientService.GetClientByNameOrId(name); - if (target == null || !target.IsLoggedIn()) - { - ChatService.PlayerNotFound(player); - return; - } - - if (target.GetUser()?.FactionId != player.GetUser()?.FactionId) - { - ChatService.Error(player, "Dieser Spieler ist nicht in deiner Fraktion"); - return; - } - - if (player.Handle == target.Handle) - { - ChatService.Error(player, "Du kannst dich nicht selber uninviten"); - return; - } - - if (target.GetUser()?.FactionLeader ?? false) - { - ChatService.Error(player, "Du kannst keinen Leader uninviten"); - return; - } - - using (var dbContext = new DatabaseContext()) - { - - target.GetUser(dbContext).FactionRankId = null; - target.GetUser(dbContext).FactionId = null; - - player.SendChatMessage("!{02FCFF}Du hast " + target.Name + " aus der Fraktion geworfen."); - target.SendChatMessage("!{02FCFF}Du wurdest von " + player.Name + " aus der Fraktion geworfen."); - - dbContext.SaveChanges(); - } + } [Command("lc", "~m~Benutzung: ~s~/lc [Nachricht]", GreedyArg = true)] diff --git a/ReallifeGamemode.Server/Managers/InteractionManager.cs b/ReallifeGamemode.Server/Managers/InteractionManager.cs index f9f962aa..4604ccf3 100644 --- a/ReallifeGamemode.Server/Managers/InteractionManager.cs +++ b/ReallifeGamemode.Server/Managers/InteractionManager.cs @@ -26,7 +26,6 @@ namespace ReallifeGamemode.Server.Managers [RemoteEvent("CLIENT:InteractionMenu_AcceptInvite")] public void InteractionMenuAcceptInvite(Client player, string type) { - if (type != "Fraktion" && type != "Gruppe") return; if (type == "Fraktion") // Fraktions Invite annehmen @@ -102,14 +101,10 @@ namespace ReallifeGamemode.Server.Managers } } - [RemoteEvent("CLIENT:InteractionMenu_InviteFaction")] - public void InteractionMenuInviteFaction(Client player, string nameOrId) + [RemoteEvent("CLIENT:InteractionMenu_Invite")] + public void InteractionMenuInviteFaction(Client player, string type, string nameOrId) { - if (player.GetUser()?.FactionId == null || player.GetUser().FactionLeader == false) - { - ChatService.NotAuthorized(player); - return; - } + if (type != "Fraktion" && type != "Gruppe") return; Client target = ClientService.GetClientByNameOrId(nameOrId); if (target == null || !target.IsLoggedIn()) @@ -118,46 +113,142 @@ namespace ReallifeGamemode.Server.Managers return; } - if (target.GetUser()?.FactionId != null) + User targetUser = target.GetUser(); + User playerUser = player.GetUser(); + + if (type == "Fraktion") { - ChatService.Error(player, "Dieser Spieler ist schon in einer Fraktion"); - return; + if (playerUser?.FactionId == null || playerUser?.FactionLeader == false) + { + ChatService.NotAuthorized(player); + return; + } + + if (targetUser?.FactionId != null) + { + ChatService.Error(player, "Dieser Spieler ist schon in einer Fraktion"); + return; + } + + target.SetData("accept_faction_invite", player.Handle); + + player.SendChatMessage("!{02FCFF}Du hast dem Spieler " + target.Name + " eine Einladung in deine Fraktion gesendet."); + target.SendChatMessage("!{02FCFF}Du hast von " + player.Name + " eine Einladung in die Fraktion \"" + playerUser.Faction.Name + "\" erhalten."); + target.SendChatMessage("!{02FCFF}Benutze das Interaktionsmenü, um die Einladung anzunehmen"); } + else if (type == "Gruppe") + { + if (playerUser?.Group == null || playerUser.GroupRank < GroupRank.MANAGER) + { + ChatService.NotAuthorized(player); + return; + } - target.SetData("accept_faction_invite", player.Handle); + if (targetUser?.Group != null) + { + ChatService.Error(player, "Dieser Spieler ist schon in einer Gruppe"); + return; + } - player.SendChatMessage("!{02FCFF}Du hast dem Spieler " + target.Name + " eine Einladung in deine Fraktion gesendet."); - target.SendChatMessage("!{02FCFF}Du hast von " + player.Name + " eine Einladung in die Fraktion \"" + player.GetUser().Faction.Name + "\" erhalten."); - target.SendChatMessage("!{02FCFF}Benutze das Interaktionsmenü, um die Einladung anzunehmen"); + target.SetData("accept_group_invite", player.Handle); + + player.SendChatMessage("!{02FCFF}Du hast dem Spieler " + target.Name + " eine Einladung in deine Gruppe gesendet."); + target.SendChatMessage("!{02FCFF}Du hast von " + player.Name + " eine Einladung in die Gruppe \"" + playerUser.Group.Name + "\" erhalten."); + target.SendChatMessage("!{02FCFF}Benutze das Interaktionsmenü, um die Einladung anzunehmen"); + } } - [RemoteEvent("CLIENT:InteractionMenu_InviteGroup")] - public void InteractionMenuInviteGroup(Client player, string nameOrId) + [RemoteEvent("CLIENT:InteractionMenu_Uninvite")] + public void InteractionMenuInviteGroup(Client player, string type, string name) { - if (player.GetUser()?.Group == null || player.GetUser().GroupRank < GroupRank.MANAGER) - { - ChatService.NotAuthorized(player); - return; - } + if (type != "Fraktion" && type != "Gruppe") return; - Client target = ClientService.GetClientByNameOrId(nameOrId); + Client target = ClientService.GetClientByNameOrId(name); if (target == null || !target.IsLoggedIn()) { ChatService.PlayerNotFound(player); return; } - if (target.GetUser()?.Group != null) + User targetUser = target.GetUser(); + User playerUser = player.GetUser(); + + if (type == "Fraktion") { - ChatService.Error(player, "Dieser Spieler ist schon in einer Gruppe"); - return; + if (playerUser?.FactionId == null || playerUser.FactionLeader == false) + { + ChatService.NotAuthorized(player); + return; + } + + if (targetUser?.FactionId != playerUser?.FactionId) + { + ChatService.Error(player, "Dieser Spieler ist nicht in deiner Fraktion"); + return; + } + + if (player.Handle == target.Handle) + { + ChatService.Error(player, "Du kannst dich nicht selber uninviten"); + return; + } + + if (targetUser?.FactionLeader ?? false) + { + ChatService.Error(player, "Du kannst keinen Leader uninviten"); + return; + } + + using (var dbContext = new DatabaseContext()) + { + + target.GetUser(dbContext).FactionRankId = null; + target.GetUser(dbContext).FactionId = null; + + player.SendChatMessage("!{02FCFF}Du hast " + target.Name + " aus der Fraktion geworfen."); + target.SendChatMessage("!{02FCFF}Du wurdest von " + player.Name + " aus der Fraktion geworfen."); + + dbContext.SaveChanges(); + } } + else if (type == "Gruppe") + { + if (playerUser?.Group == null || playerUser.GroupRank < GroupRank.MANAGER) + { + ChatService.NotAuthorized(player); + return; + } - target.SetData("accept_group_invite", player.Handle); + if (targetUser?.Group.Id != playerUser?.Group.Id) + { + ChatService.Error(player, "Dieser Spieler ist nicht in deiner Fraktion"); + return; + } - player.SendChatMessage("!{02FCFF}Du hast dem Spieler " + target.Name + " eine Einladung in deine Gruppe gesendet."); - target.SendChatMessage("!{02FCFF}Du hast von " + player.Name + " eine Einladung in die Gruppe \"" + player.GetUser().Group.Name + "\" erhalten."); - target.SendChatMessage("!{02FCFF}Benutze das Interaktionsmenü, um die Einladung anzunehmen"); + if (player.Handle == target.Handle) + { + ChatService.Error(player, "Du kannst dich nicht selber uninviten"); + return; + } + + if (targetUser?.GroupRank >= GroupRank.MANAGER && playerUser?.GroupRank != GroupRank.OWNER) + { + ChatService.Error(player, "Du kannst keinen Leader uninviten"); + return; + } + + using (var dbContext = new DatabaseContext()) + { + + target.GetUser(dbContext).FactionRankId = null; + target.GetUser(dbContext).FactionId = null; + + player.SendChatMessage("!{02FCFF}Du hast " + target.Name + " aus der Gruppe geworfen."); + target.SendChatMessage("!{02FCFF}Du wurdest von " + player.Name + " aus der Gruppe geworfen."); + + dbContext.SaveChanges(); + } + } } #endregion #region Spielerinteraktionen PFEILTASTE-LINKS @@ -185,7 +276,7 @@ namespace ReallifeGamemode.Server.Managers Client tradeRequester = ClientService.GetClientByNameOrId(tradeRequesterName); if (tradeSelection == "accept") { - if(player.GetUser().Handmoney < tradePrize) + if (player.GetUser().Handmoney < tradePrize) { tradeRequester.TriggerEvent("unlockTradeItems"); tradeRequester.SendNotification("~y~" + player.Name + " ~r~hat nicht genügend Bargeld! ~s~Handel abgebrochen."); @@ -212,7 +303,7 @@ namespace ReallifeGamemode.Server.Managers dbContext.SaveChanges(); } - } + } } else {