From 539d899ac905f904fcf627003ed1c49ea7d31658 Mon Sep 17 00:00:00 2001 From: hydrant Date: Thu, 9 May 2019 17:19:59 +0200 Subject: [PATCH] fix invite --- .../Interaction/interactionmenu.ts | 18 ++++++++-- ReallifeGamemode.Client/Player/keys.ts | 2 +- .../Managers/InteractionManager.cs | 36 ++++++++++++++++++- 3 files changed, 51 insertions(+), 5 deletions(-) diff --git a/ReallifeGamemode.Client/Interaction/interactionmenu.ts b/ReallifeGamemode.Client/Interaction/interactionmenu.ts index 6360ff52..bfca9dde 100644 --- a/ReallifeGamemode.Client/Interaction/interactionmenu.ts +++ b/ReallifeGamemode.Client/Interaction/interactionmenu.ts @@ -37,7 +37,7 @@ export default function (globalData: GlobalData) { if (group) { groupItem.SetRightLabel(group); menu.AddItem(groupItem); - menu.BindMenuToItem(getGroupMenu(group), groupItem); + menu.BindMenuToItem(getGroupMenu(group, menu), groupItem); } var items: Array = new Array(); @@ -118,17 +118,29 @@ export default function (globalData: GlobalData) { }); } else if (index === 1) { // Uninviten } - }) + }); return factionMenu; } - function getGroupMenu(group: string): NativeUI.Menu { + function getGroupMenu(group: string, parentMenu: NativeUI.Menu): NativeUI.Menu { var groupMenu = new NativeUI.Menu("Gruppe", group, new Point(50, 50), null, null); groupMenu.AddItem(new UIMenuItem("Spieler einladen")); groupMenu.AddItem(new UIMenuItem("Spieler rauswerfen")); groupMenu.Visible = false; + groupMenu.ItemSelect.on((item, index) => { + if (index === 0) { // Inviten + 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); + parentMenu.Close(); + }); + } else if (index === 1) { // Uninviten + } + }); + return groupMenu; } } \ No newline at end of file diff --git a/ReallifeGamemode.Client/Player/keys.ts b/ReallifeGamemode.Client/Player/keys.ts index b021ffda..d31996b0 100644 --- a/ReallifeGamemode.Client/Player/keys.ts +++ b/ReallifeGamemode.Client/Player/keys.ts @@ -45,7 +45,7 @@ export default function keys(globalData: GlobalData) { //DOWN ARROW (Eigeninteraktion) mp.keys.bind(0x28, false, function () { - if (!globalData.InChat && !showInv && !globalData.InMenu && !globalData.InInput) { + if (!globalData.InChat && !showInv && !globalData.InMenu && !globalData.InInput && !globalData.InTuning) { mp.events.callRemote("keyPress:DOWN_ARROW"); } }); diff --git a/ReallifeGamemode.Server/Managers/InteractionManager.cs b/ReallifeGamemode.Server/Managers/InteractionManager.cs index dc5c21c0..f9f962aa 100644 --- a/ReallifeGamemode.Server/Managers/InteractionManager.cs +++ b/ReallifeGamemode.Server/Managers/InteractionManager.cs @@ -26,16 +26,19 @@ namespace ReallifeGamemode.Server.Managers [RemoteEvent("CLIENT:InteractionMenu_AcceptInvite")] public void InteractionMenuAcceptInvite(Client player, string type) { - if (type != "Fraktion" || type != "Gruppe") return; + + if (type != "Fraktion" && type != "Gruppe") return; if (type == "Fraktion") // Fraktions Invite annehmen { + NAPI.Chat.SendChatMessageToAll("faction invite 1"); if (!player.HasData("accept_faction_invite")) { ChatService.Error(player, "Du hast keine Einladung in eine Fraktion erhalten"); return; } + NAPI.Chat.SendChatMessageToAll("faction invite 2"); Client leader = NAPI.Player.GetPlayerFromHandle((NetHandle)player.GetData("accept_faction_invite")); player.ResetData("accept_faction_invite"); @@ -45,6 +48,8 @@ namespace ReallifeGamemode.Server.Managers return; } + NAPI.Chat.SendChatMessageToAll("faction invite 3"); + using (var dbContext = new DatabaseContext()) { User u = leader.GetUser(dbContext); @@ -125,6 +130,35 @@ namespace ReallifeGamemode.Server.Managers 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"); } + + [RemoteEvent("CLIENT:InteractionMenu_InviteGroup")] + public void InteractionMenuInviteGroup(Client player, string nameOrId) + { + if (player.GetUser()?.Group == null || player.GetUser().GroupRank < GroupRank.MANAGER) + { + ChatService.NotAuthorized(player); + return; + } + + Client target = ClientService.GetClientByNameOrId(nameOrId); + if (target == null || !target.IsLoggedIn()) + { + ChatService.PlayerNotFound(player); + return; + } + + if (target.GetUser()?.Group != null) + { + ChatService.Error(player, "Dieser Spieler ist schon in einer Gruppe"); + return; + } + + 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 \"" + player.GetUser().Group.Name + "\" erhalten."); + target.SendChatMessage("!{02FCFF}Benutze das Interaktionsmenü, um die Einladung anzunehmen"); + } #endregion #region Spielerinteraktionen PFEILTASTE-LINKS [RemoteEvent("openTradeInventory")]