From 8a0820541eb9bca3d0c46b51578f3d2cd3b1ae58 Mon Sep 17 00:00:00 2001 From: VegaZ Date: Mon, 5 Apr 2021 17:55:23 +0200 Subject: [PATCH 1/2] Add revive-Sperre --- .../Commands/FactionCommands.cs | 6 +++ ReallifeGamemode.Server/Events/Death.cs | 37 ++++++++++--------- 2 files changed, 26 insertions(+), 17 deletions(-) diff --git a/ReallifeGamemode.Server/Commands/FactionCommands.cs b/ReallifeGamemode.Server/Commands/FactionCommands.cs index d5a42793..acad0b23 100644 --- a/ReallifeGamemode.Server/Commands/FactionCommands.cs +++ b/ReallifeGamemode.Server/Commands/FactionCommands.cs @@ -309,6 +309,12 @@ namespace ReallifeGamemode.Server.Commands ChatService.ErrorMessage(player, "Es wurde kein toter Spieler gefunden"); return; } + + if (deadPlayer.HasData("reviveSperre")) + { + ChatService.ErrorMessage(player, "Der Spieler hat eine Revivesperre"); + return; + } using (var dbContext = new DatabaseContext()) { var deadPlayerUser = deadPlayer.GetUser(dbContext); diff --git a/ReallifeGamemode.Server/Events/Death.cs b/ReallifeGamemode.Server/Events/Death.cs index 365085c1..b4edee69 100644 --- a/ReallifeGamemode.Server/Events/Death.cs +++ b/ReallifeGamemode.Server/Events/Death.cs @@ -32,6 +32,7 @@ namespace ReallifeGamemode.Server.Events player.Kick(); return; } + player.SetData("isDead", true); @@ -42,9 +43,6 @@ namespace ReallifeGamemode.Server.Events userDeath.SaveChanges(); } - - - //TODO: Zum Full Release entfernen if (player.HasData("togdeath")) { ChatService.SendMessage(player, "Du bist durch " + (killer?.Name ?? "Niemanden") + " gestorben: " + reason.ToString()); @@ -92,21 +90,26 @@ namespace ReallifeGamemode.Server.Events if (user.JailTime <= 0) { - //MEDIC AUFTRAG - MedicTask reviveTask = new MedicTask() + if (!player.HasData("reviveSperre")) { - Victim = player.Name, - Position = player.Position, - CauseOfDeath = reason.ToString(), - Caller = null, - Description = "Gestorben", - Time = DateTime.Now, - Type = MedicTaskType.REVIVE, - MedicName = "none" - }; - Medic.AddTaskToList(reviveTask); - Medic.delHealTask(player); - ChatService.BroadcastFaction("~y~[MEDIC] ~w~" + player.Name + " ist soeben verstorben.", new List() { 2 }); + //MEDIC AUFTRAG + MedicTask reviveTask = new MedicTask() + { + Victim = player.Name, + Position = player.Position, + CauseOfDeath = reason.ToString(), + Caller = null, + Description = "Gestorben", + Time = DateTime.Now, + Type = MedicTaskType.REVIVE, + MedicName = "none" + }; + Medic.AddTaskToList(reviveTask); + Medic.delHealTask(player); + ChatService.BroadcastFaction("~y~[MEDIC] ~w~" + player.Name + " ist soeben verstorben.", new List() { 2 }); + } + + if (player.GetUser().IsAdmin(AdminLevel.ADMIN) == true) { From ea65d00dd1005bb2d47cee2465bbd79394ba9f85 Mon Sep 17 00:00:00 2001 From: VegaZ Date: Mon, 5 Apr 2021 18:36:01 +0200 Subject: [PATCH 2/2] Fix Medic --- ReallifeGamemode.Client/Player/keys.ts | 2 +- ReallifeGamemode.Server/Events/Key.cs | 13 +++++++------ ReallifeGamemode.Server/Factions/Medic/Medic.cs | 14 +++++++++++++- ReallifeGamemode.Server/Util/ThreadTimers.cs | 1 + 4 files changed, 22 insertions(+), 8 deletions(-) diff --git a/ReallifeGamemode.Client/Player/keys.ts b/ReallifeGamemode.Client/Player/keys.ts index f2b84b59..f4c11e13 100644 --- a/ReallifeGamemode.Client/Player/keys.ts +++ b/ReallifeGamemode.Client/Player/keys.ts @@ -113,7 +113,7 @@ export default function keys(globalData: IGlobalData) { //N //Motor Starten mp.keys.bind(0x4E, false, function () { if (!globalData.InChat) { - mp.events.callRemote("keyPress:N", player.vehicle.getSpeed()); + mp.events.callRemote("keyPress:N"); } }); diff --git a/ReallifeGamemode.Server/Events/Key.cs b/ReallifeGamemode.Server/Events/Key.cs index 9781dbaa..b03b7da6 100644 --- a/ReallifeGamemode.Server/Events/Key.cs +++ b/ReallifeGamemode.Server/Events/Key.cs @@ -616,9 +616,10 @@ namespace ReallifeGamemode.Server.Events { if (!player.IsLoggedIn()) return; if (player.GetData("healDecision") == true) - { + { + player.ResetData("healDecision"); Medic.MakeHealDecision(player, true); - player.SetData("healDecision", false); + return; } User u = player.GetUser(); @@ -760,19 +761,19 @@ namespace ReallifeGamemode.Server.Events } [RemoteEvent("keyPress:N")] - public void KeyPressN(Player player, int vSpeed) + public void KeyPressN(Player player) { if (!player.IsLoggedIn()) return; if (player.GetData("healDecision") == true) - { + { + player.ResetData("healDecision"); Medic.MakeHealDecision(player, false); - player.SetData("healDecision", false); + return; } if (!player.IsInVehicle) return; if (player.VehicleSeat != 0) return; - if (vSpeed > 5) return; GTANetworkAPI.Vehicle v = player.Vehicle; diff --git a/ReallifeGamemode.Server/Factions/Medic/Medic.cs b/ReallifeGamemode.Server/Factions/Medic/Medic.cs index 73639b61..f886a7e9 100644 --- a/ReallifeGamemode.Server/Factions/Medic/Medic.cs +++ b/ReallifeGamemode.Server/Factions/Medic/Medic.cs @@ -99,6 +99,19 @@ namespace ReallifeGamemode.Server.Factions.Medic } } + public static void CheckHealDecisionDistanc() + { + foreach(var healAuftrag in HealDecisions) + { + if (healAuftrag.dMedic.Position.DistanceTo(healAuftrag.dTarget.Position) >= 10) + { + healAuftrag.dMedic.SendNotification("~r~Die Heal-Anfrage wurde abgebrochen"); + healAuftrag.dTarget.SendNotification("~r~Die Heal-Anfrage wurde abgebrochen"); + healAuftrag.dTarget.ResetData("healDecision"); + } + } + } + public static void MakeHealDecision(Player target, bool decision) { var activeDecision = HealDecisions.FirstOrDefault(d => d.dTarget == target); @@ -106,7 +119,6 @@ namespace ReallifeGamemode.Server.Factions.Medic { activeDecision.dMedic.SendNotification(activeDecision.dTarget.Name + " hat den Heal ~r~abgelehnt",false); activeDecision.dTarget.SendNotification("Du hast den Heal ~r~abgelehnt", false); - return; } else { diff --git a/ReallifeGamemode.Server/Util/ThreadTimers.cs b/ReallifeGamemode.Server/Util/ThreadTimers.cs index 0f96f89a..9e5ff500 100644 --- a/ReallifeGamemode.Server/Util/ThreadTimers.cs +++ b/ReallifeGamemode.Server/Util/ThreadTimers.cs @@ -49,6 +49,7 @@ namespace ReallifeGamemode.Server.Util NAPI.Task.Run(() => { Medic.UpdateTaskTimeLeft(); + Medic.CheckHealDecisionDistanc(); }); }