From 1be8590b3607917449f930c2a8f0e527b3cab989 Mon Sep 17 00:00:00 2001 From: Michael Date: Tue, 22 Sep 2020 14:11:51 +0200 Subject: [PATCH] =?UTF-8?q?add=20service=20ruf=20sanit=C3=A4ter?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Interaction/factioninteraction.ts | 64 ++++++++++++++++++- .../Interaction/interactionmenu.ts | 10 ++- .../Commands/AdminCommands.cs | 6 +- .../Commands/FactionCommands.cs | 1 + ReallifeGamemode.Server/Events/Death.cs | 4 +- ReallifeGamemode.Server/Events/Disconnect.cs | 4 +- .../Factions/Medic/Medic.cs | 32 +++++++++- .../Managers/InteractionManager.cs | 28 +++++++- 8 files changed, 134 insertions(+), 15 deletions(-) diff --git a/ReallifeGamemode.Client/Interaction/factioninteraction.ts b/ReallifeGamemode.Client/Interaction/factioninteraction.ts index d9a20fcb..dfa9ea32 100644 --- a/ReallifeGamemode.Client/Interaction/factioninteraction.ts +++ b/ReallifeGamemode.Client/Interaction/factioninteraction.ts @@ -30,6 +30,7 @@ export default function factionInteraction(globalData: IGlobalData) { var pointsName: string; var factionInteractionMenu; + var healTaskMenuMedic; var reviveTaskMenuMedic; /*mp.events.add("updateFactionBlips", (type, taskList) => { @@ -184,9 +185,10 @@ export default function factionInteraction(globalData: IGlobalData) { healTaskMenuMedic.SetRightLabel(hPM + healTaskCountMedic) factionInteractionMenu.AddItem(healTaskMenuMedic); - fireTaskMenuMedic = new UIMenuItem("Feuerauftr\u00e4ge"); + /*fireTaskMenuMedic = new UIMenuItem("Feuerauftr\u00e4ge"); //wenn die funktion dafür vorhanden ist wird das wieder eingebunden fireTaskMenuMedic.SetRightLabel(fPM + fireTaskCountMedic); - factionInteractionMenu.AddItem(fireTaskMenuMedic); + factionInteractionMenu.AddItem(fireTaskMenuMedic); + */ } } @@ -211,6 +213,12 @@ export default function factionInteraction(globalData: IGlobalData) { mp.gui.chat.activate(true); globalData.InMenu = false; break; + case healTaskMenuMedic: + mp.events.callRemote("loadMedicTasks", 1) + factionInteractionMenu.Close(); + mp.gui.chat.activate(true); + globalData.InMenu = false; + break; } }); @@ -286,7 +294,56 @@ export default function factionInteraction(globalData: IGlobalData) { }); break; case 1: - break; + healTaskMenuMedic = new Menu("Heal", "\u00c4lteste zu erst", new Point(0, screenRes.y / 2), null, null); + let aTask1; + for (var i = 0; i < tasks.length; i++) { + if (tasks[i].MedicName === "none") { + aTask1 = new UIMenuItem("~g~" + tasks[i].Victim); + } else { + aTask1 = new UIMenuItem("~r~" + tasks[i].Victim); + } + + aTask1.SetRightLabel(mp.game.gameplay.getDistanceBetweenCoords(player.position.x, player.position.y, player.position.z, tasks[i].Position.x, tasks[i].Position.y, tasks[i].Position.z, true).toFixed(2).toString() + " ~g~m"); + healTaskMenuMedic.AddItem(aTask1); + } + + let backItem1 = new UIMenuItem("Zur\u00fcck", "Zur\u00fcck zur Fraktionsinteraktion."); + backItem1.BackColor = new Color(213, 0, 0); + backItem1.HighlightedBackColor = new Color(229, 57, 53); + healTaskMenuMedic.AddItem(backItem1); + + healTaskMenuMedic.ItemSelect.on((item, index) => { + if (item === backItem1) { + healTaskMenuMedic.Close(); + factionInteractionMenu.Visible = true; + } else { + if (tasks[index].MedicName === "none") { + mp.game.graphics.requestStreamedTextureDict("medicimages", true); + mp.events.callRemote("updateMedicTask", 1, index, player.name); + mp.game.ui.setNewWaypoint(tasks[index].Position.x, tasks[index].Position.y); + activeCheckpoint = mp.markers.new(1, new mp.Vector3(tasks[index].Position.x, tasks[index].Position.y, tasks[index].Position.z - 2), 3.0, { + color: [255, 0, 0, 150], + visible: true, + dimension: 0 + }); + healTaskMenuMedic.Close(); + mp.gui.chat.activate(true); + globalData.InMenu = false; + ambulanceImagePos = 0.325 + taskStart = player.position; + taskFinish = tasks[index].Position; + taskRange = mp.game.gameplay.getDistanceBetweenCoords(player.position.x, player.position.y, player.position.z, tasks[index].Position.x, tasks[index].Position.y, tasks[index].Position.z, true); + activeTask = true; + } + } + }); + + healTaskMenuMedic.Open(); + + healTaskMenuMedic.MenuClose.on(() => { + healTaskMenuMedic.Visible = false; + globalData.InMenu = false; + }); case 2: break; } @@ -379,6 +436,7 @@ export default function factionInteraction(globalData: IGlobalData) { } else { activeTask = false; activeCheckpoint.destroy(); + mp.events.callRemote("delHealTask"); } } }); diff --git a/ReallifeGamemode.Client/Interaction/interactionmenu.ts b/ReallifeGamemode.Client/Interaction/interactionmenu.ts index 08d8eb4c..9d0b0607 100644 --- a/ReallifeGamemode.Client/Interaction/interactionmenu.ts +++ b/ReallifeGamemode.Client/Interaction/interactionmenu.ts @@ -387,14 +387,20 @@ export default function (globalData: IGlobalData) { function getServicesMenu(parentMenu: NativeUI.Menu): NativeUI.Menu { var servicesMenu = new Menu("Services", "Rufe einen Service", new Point(50, 50), null, null); servicesMenu.AddItem(new UIMenuItem("Taxi rufen", "Rufe ein Taxi zu deiner Position")); - + var saniItem = new UIMenuItem("Sanitäter rufen", "Rufe einen Sanitäter zu deiner Position."); + servicesMenu.AddItem(saniItem); servicesMenu.Visible = false; servicesMenu.ItemSelect.on((item, index) => { if (index === 0) { // Taxi mp.events.callRemote("CLIENT:InteractionMenu_CallService_Taxi", getStreetName(), getZoneName()); + } - parentMenu.Close(); + else if (index === 1) { // Sanitäter + mp.events.callRemote("CLIENT:InteractionMenu_CallService_Sani"); + + } + parentMenu.Close(true); }); return servicesMenu; diff --git a/ReallifeGamemode.Server/Commands/AdminCommands.cs b/ReallifeGamemode.Server/Commands/AdminCommands.cs index 761dd5fa..ceed805b 100644 --- a/ReallifeGamemode.Server/Commands/AdminCommands.cs +++ b/ReallifeGamemode.Server/Commands/AdminCommands.cs @@ -1418,8 +1418,7 @@ namespace ReallifeGamemode.Server.Commands NAPI.Player.SpawnPlayer(target, target.Position); target.Health = 100; - MedicTask task = Medic.ReviveTasks.FirstOrDefault(t => t.Victim == target.Name); - Medic.RemoveTaskFromList(task); + Medic.delReviveTasks(target); } [Command("setap", "~m~Benutzung: ~s~/setap [Spieler] (Armor)")] @@ -2182,8 +2181,7 @@ namespace ReallifeGamemode.Server.Commands NAPI.Player.SpawnPlayer(managedPlayer, managedPlayer.Position); managedPlayer.Health = 100; - MedicTask task = Medic.ReviveTasks.FirstOrDefault(t => t.Victim == managedPlayer.Name); - Medic.RemoveTaskFromList(task); + Medic.delReviveTasks(managedPlayer); } ChatService.SendMessage(player, "~b~Du hast " + playerRevided + " Spieler wiederbelebt."); diff --git a/ReallifeGamemode.Server/Commands/FactionCommands.cs b/ReallifeGamemode.Server/Commands/FactionCommands.cs index 20276e80..11179a8a 100644 --- a/ReallifeGamemode.Server/Commands/FactionCommands.cs +++ b/ReallifeGamemode.Server/Commands/FactionCommands.cs @@ -368,6 +368,7 @@ namespace ReallifeGamemode.Server.Commands target.Health = 100; target.SendNotification($"Du wurdest von ~g~{player.Name} ~s~ für ~g~{price.ToMoneyString()} geheilt.", false); player.SendNotification($"Du hast ~g~{target.Name} ~s~ für {price.ToMoneyString()} geheilt.", false); + player.TriggerEvent("delHealTask"); } #endregion Sanitäter Commands diff --git a/ReallifeGamemode.Server/Events/Death.cs b/ReallifeGamemode.Server/Events/Death.cs index ca45a809..3aba410d 100644 --- a/ReallifeGamemode.Server/Events/Death.cs +++ b/ReallifeGamemode.Server/Events/Death.cs @@ -104,6 +104,7 @@ namespace ReallifeGamemode.Server.Events MedicName = "none" }; Medic.AddTaskToList(reviveTask); + Medic.delHealTasks(player); ChatService.BroadcastFaction("~y~[MEDIC] ~w~" + player.Name + " ist soeben verstorben.", new List() { 2 }); if (player.GetUser().IsAdmin(AdminLevel.ADMIN) == true) @@ -231,8 +232,7 @@ namespace ReallifeGamemode.Server.Events dbContext.SaveChanges(); } player.RemoveAllWeapons(); - MedicTask task = Medic.ReviveTasks.FirstOrDefault(t => t.Victim == player.Name); - Medic.RemoveTaskFromList(task); + Medic.delReviveTasks(player); NAPI.Player.SpawnPlayer(player, new Vector3(-495.45, -336.33, 34.5), -98.36f); } diff --git a/ReallifeGamemode.Server/Events/Disconnect.cs b/ReallifeGamemode.Server/Events/Disconnect.cs index a26129b6..4ca745a2 100644 --- a/ReallifeGamemode.Server/Events/Disconnect.cs +++ b/ReallifeGamemode.Server/Events/Disconnect.cs @@ -137,8 +137,8 @@ namespace ReallifeGamemode.Server.Events player.TriggerEvent("CLIENT:DestroyPed", 2); player.TriggerEvent("CLIENT:DestroyPed", 3); player.TriggerEvent("CLIENT:DestroyPed", 4); - MedicTask task = Medic.ReviveTasks.FirstOrDefault(t => t.Victim == player.Name); - Medic.RemoveTaskFromList(task); + Medic.delHealTasks(player); + Medic.delReviveTasks(player); } } } diff --git a/ReallifeGamemode.Server/Factions/Medic/Medic.cs b/ReallifeGamemode.Server/Factions/Medic/Medic.cs index 519a2d60..710c0e7e 100644 --- a/ReallifeGamemode.Server/Factions/Medic/Medic.cs +++ b/ReallifeGamemode.Server/Factions/Medic/Medic.cs @@ -2,6 +2,7 @@ using GTANetworkAPI; using Newtonsoft.Json; using ReallifeGamemode.Server.Services; +using System.Linq; /** * @overview Life of German Reallife - Server Factions Medic Medic.cs @@ -89,11 +90,12 @@ namespace ReallifeGamemode.Server.Factions.Medic { case 0: ReviveTasks[index].MedicName = medicName; - ChatService.BroadcastFaction("~y~[MEDIC] ~w~" + player.Name + "hat den Reviveauftrag von " + medicName + " angenommen.", new List() { 2 }); + ChatService.BroadcastFaction("~y~[MEDIC] ~w~" + player.Name + " hat den Reviveauftrag von " + medicName + " angenommen.", new List() { 2 }); break; case 1: HealTasks[index].MedicName = medicName; + ChatService.BroadcastFaction("~y~[MEDIC] ~w~" + player.Name + " hat den Healauftrag von " + medicName + " angenommen.", new List() { 2 }); break; case 2: @@ -101,5 +103,33 @@ namespace ReallifeGamemode.Server.Factions.Medic break; } } + + [RemoteEvent("delHealTask")] + public void delHealTask(Player player) + { + MedicTask task = HealTasks.FirstOrDefault(t => t.Victim == player.Name); + RemoveTaskFromList(task); + player.SetData("healauftrag", false); + } + + [RemoteEvent("delReviveTask")] + public void delReviveTask(Player player) + { + MedicTask task = ReviveTasks.FirstOrDefault(t => t.Victim == player.Name); + RemoveTaskFromList(task); + } + + public static void delHealTasks(Player player) + { + MedicTask task = HealTasks.FirstOrDefault(t => t.Victim == player.Name); + RemoveTaskFromList(task); + player.SetData("healauftrag", false); + } + public static void delReviveTasks(Player player) + { + MedicTask task = ReviveTasks.FirstOrDefault(t => t.Victim == player.Name); + RemoveTaskFromList(task); + } + } } diff --git a/ReallifeGamemode.Server/Managers/InteractionManager.cs b/ReallifeGamemode.Server/Managers/InteractionManager.cs index 0e05dbef..1046a4dd 100644 --- a/ReallifeGamemode.Server/Managers/InteractionManager.cs +++ b/ReallifeGamemode.Server/Managers/InteractionManager.cs @@ -15,6 +15,7 @@ using Microsoft.EntityFrameworkCore; using ReallifeGamemode.Server.Events; using System; using ReallifeGamemode.Server.Core.API; +using ReallifeGamemode.Server.Factions.Medic; /** * @overview Life of German Reallife - Managers Interaction (InteractionManager.cs) @@ -689,10 +690,35 @@ namespace ReallifeGamemode.Server.Managers } } + [RemoteEvent("CLIENT:InteractionMenu_CallService_Sani")] + public void CallServiceSani(Player player) + { + //MEDIC AUFTRAG + MedicTask healTask = new MedicTask() + { + Victim = player.Name, + Position = player.Position, + Caller = null, + Description = "Healen", + Time = DateTime.Now, + Type = MedicTaskType.HEAL, + MedicName = "none" + }; + if (player.GetData("healauftrag") == true) + { + player.SendNotification("~r~[Fehler] ~w~Du hast bereits ein Sanitäter gerufen."); + }else + { + Medic.AddTaskToList(healTask); + player.SetData("healauftrag", true); + ChatService.BroadcastFaction("~y~[MEDIC] ~w~" + player.Name + " hat soeben einen Serviceauftrag beantragt.", new List() { 2 }); + } + } + #endregion Eigeninteraktionen PFEILTASTE-RUNTER - #region Spielerinteraktionen PFEILTASTE-LINKS + #region Spielerinteraktionen PFEILTASTE-LINKS [RemoteEvent("openTradeInventory")] public void OpenTradeInventory(Player player, string targetPlayer)