diff --git a/Client/Interaction/factioninteraction.js b/Client/Interaction/factioninteraction.js index 1b0fe6cf..1e4d786b 100644 --- a/Client/Interaction/factioninteraction.js +++ b/Client/Interaction/factioninteraction.js @@ -1,4 +1,5 @@ let screenRes = mp.game.graphics.getScreenResolution(0, 0); +const player = mp.players.local; const NativeUI = require("nativeui"); const Menu = NativeUI.Menu; @@ -14,7 +15,10 @@ mp.events.add("showFactionInteraction", (userFactionId, userFactionName, isFacti mp.gui.chat.activate(false); globalData.Interaction = true; - + + var rP = ((reviveTaskCount === "0") ? "~r~" : "~g~"); + var hP = ((healTaskCount === "0") ? "~r~" : "~g~"); + var fP = ((fireTaskCount === "0") ? "~r~" : "~g~"); let factionInteractionMenu = new Menu("Fraktionsinteraktion", userFactionName, new Point(0, screenRes.y / 2)); @@ -23,24 +27,27 @@ mp.events.add("showFactionInteraction", (userFactionId, userFactionName, isFacti leaderMenu.SetRightBadge(BadgeStyle.Star); factionInteractionMenu.AddItem(leaderMenu); } + let reviveTaskMenu; + let healTaskMenu; + let fireTaskMenu; switch (userFactionId) { case 2: - let reviveTaskMenu = new UIMenuItem("Reviveauftr\u00e4ge"); - reviveTaskMenu.SetRightLabel(reviveTaskCount.toString()) + reviveTaskMenu = new UIMenuItem("Reviveauftr\u00e4ge"); + reviveTaskMenu.SetRightLabel(rP + reviveTaskCount) factionInteractionMenu.AddItem(reviveTaskMenu); - let healTaskMenu = new UIMenuItem("Healauftr\u00e4ge"); - reviveTaskMenu.SetRightLabel(healTaskCount.toString()) + healTaskMenu = new UIMenuItem("Healauftr\u00e4ge"); + healTaskMenu.SetRightLabel(hP + healTaskCount) factionInteractionMenu.AddItem(healTaskMenu); - let fireTaskMenu = new UIMenuItem("Reviveauftr\u00e4ge"); - reviveTaskMenu.SetRightLabel(fireTaskCount.toString()) + fireTaskMenu = new UIMenuItem("Feuerauftr\u00e4ge"); + fireTaskMenu.SetRightLabel(fP + fireTaskCount) factionInteractionMenu.AddItem(fireTaskMenu); break; } - let cancelItem = new UIMenuItem("Schlie\u00dfen", "Schlie\u00dft die Spielerinteraktion"); + let cancelItem = new UIMenuItem("Schlie\u00dfen", "Schlie\u00dft die Fraktionsinteraktion"); cancelItem.BackColor = new Color(213, 0, 0); cancelItem.HighlightedBackColor = new Color(229, 57, 53); factionInteractionMenu.AddItem(cancelItem); @@ -48,10 +55,18 @@ mp.events.add("showFactionInteraction", (userFactionId, userFactionName, isFacti factionInteractionMenu.Visible = true; factionInteractionMenu.ItemSelect.on((item) => { - if (item.Text === "Schlie\u00dfen") { - factionInteractionMenu.Visible = false; - mp.gui.chat.activate(true); - globalData.Interaction = false; + switch (item) { + case cancelItem: + factionInteractionMenu.Visible = false; + mp.gui.chat.activate(true); + globalData.Interaction = false; + break; + case reviveTaskMenu: + mp.events.callRemote("loadMedicTasks", 0) + factionInteractionMenu.Visible = false; + mp.gui.chat.activate(true); + globalData.Interaction = false; + break; } }); @@ -59,4 +74,45 @@ mp.events.add("showFactionInteraction", (userFactionId, userFactionName, isFacti mp.gui.chat.activate(true); globalData.Interaction = false; }); +}); +mp.events.add("showMedicTaskMenu", (type, taskList) => { + var tasks = JSON.parse(taskList); + mp.gui.chat.activate(false); + globalData.Interaction = true; + switch (type) { + case 0: + let reviveTaskMenu = new Menu("Revives", "", new Point(0, screenRes.y / 2)); + + for (task in tasks) { + let aTask = new UIMenuItem(task.Victim); + //aTask.SetRightLabel(mp.game.gameplay.getDistanceBetweenCoords(player.position.X, player.position.Y, player.position.Z, task.position.x, task.position.y, task.position.z, true).toString() + "m"); + reviveTaskMenu.AddItem(aTask); + } + + let cancelItem = new UIMenuItem("Schlie\u00dfen", "Schlie\u00dft die Fraktionsinteraktion"); + cancelItem.BackColor = new Color(213, 0, 0); + cancelItem.HighlightedBackColor = new Color(229, 57, 53); + reviveTaskMenu.AddItem(cancelItem); + + reviveTaskMenu.ItemSelect.on((item) => { + switch (item) { + case cancelItem: + reviveTaskMenu.Visible = false; + mp.gui.chat.activate(true); + globalData.Interaction = false; + break; + + } + }); + + reviveTaskMenu.MenuClose.on(() => { + mp.gui.chat.activate(true); + globalData.Interaction = false; + }); + break; + case 1: + break; + case 2: + break; + } }); \ No newline at end of file diff --git a/Server/Events/Death.cs b/Server/Events/Death.cs index 35172b26..5a1a3cf3 100644 --- a/Server/Events/Death.cs +++ b/Server/Events/Death.cs @@ -80,10 +80,10 @@ namespace reallife_gamemode.Server.Events //MEDIC AUFTRAG MedicTask reviveTask = new MedicTask() { - Victim = player, + Victim = player.Name, Position = player.Position, CauseOfDeath = reason.ToString(), - Caller = player, + Caller = null, Description = "Gestorben", Time = DateTime.Now, Type = 0 diff --git a/Server/Events/Key.cs b/Server/Events/Key.cs index bc688146..ccef0686 100644 --- a/Server/Events/Key.cs +++ b/Server/Events/Key.cs @@ -71,7 +71,7 @@ namespace reallife_gamemode.Server.Events { //LSFD case 2: - player.TriggerEvent("showFactionInteraction", user.FactionId, user.GetFaction().Name, user.FactionLeader, Medic.ReviveTasks.Count, Medic.HealTasks.Count, Medic.FireTasks.Count); + player.TriggerEvent("showFactionInteraction", user.FactionId, user.GetFaction().Name, user.FactionLeader, Medic.ReviveTasks.Count.ToString(), Medic.HealTasks.Count.ToString(), Medic.FireTasks.Count.ToString()); break; } } diff --git a/Server/Factions/Medic/Medic.cs b/Server/Factions/Medic/Medic.cs index a74f82bd..641e855d 100644 --- a/Server/Factions/Medic/Medic.cs +++ b/Server/Factions/Medic/Medic.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Text; using GTANetworkAPI; +using Newtonsoft.Json; /** * @overview Life of German Reallife - Server Factions Medic Medic.cs @@ -49,5 +50,21 @@ namespace reallife_gamemode.Server.Factions.Medic break; } } + [RemoteEvent("loadMedicTasks")] + public void LoadMedicTasks(Client player, int type) + { + switch (type) + { + case 0: + player.TriggerEvent("showMedicTaskMenu", 0, JsonConvert.SerializeObject(ReviveTasks.ToArray())); + break; + case 1: + player.TriggerEvent("showMedicTaskMenu", 1, JsonConvert.SerializeObject(HealTasks.ToArray())); + break; + case 2: + player.TriggerEvent("showMedicTaskMenu", 2, JsonConvert.SerializeObject(FireTasks.ToArray())); + break; + } + } } } diff --git a/Server/Factions/Medic/MedicTask.cs b/Server/Factions/Medic/MedicTask.cs index 0ca3ad16..8494aee6 100644 --- a/Server/Factions/Medic/MedicTask.cs +++ b/Server/Factions/Medic/MedicTask.cs @@ -14,12 +14,12 @@ namespace reallife_gamemode.Server.Factions.Medic { public class MedicTask { - public Client Victim { get; set; } + public string Victim { get; set; } public Vector3 Position { get; set; } - public byte Type { get; set; } + public int Type { get; set; } public string CauseOfDeath { get; set; } public string Description { get; set; } - public Client Caller { get; set; } + public string Caller { get; set; } public DateTime Time { get; set; } } }