diff --git a/ReallifeGamemode.Server/Commands/FactionCommands.cs b/ReallifeGamemode.Server/Commands/FactionCommands.cs index 88e8b8cf..c7936c7b 100644 --- a/ReallifeGamemode.Server/Commands/FactionCommands.cs +++ b/ReallifeGamemode.Server/Commands/FactionCommands.cs @@ -209,7 +209,7 @@ namespace ReallifeGamemode.Server.Commands } User targetCop = target.GetUser(); - if(targetCop.FactionId == 1 || targetCop.FactionId == 2) + if(targetCop.FactionId == 1 || targetCop.FactionId == 3) { ChatService.ErrorMessage(player, "Du kannst dieser Person keine Wanteds geben"); return; @@ -223,7 +223,7 @@ namespace ReallifeGamemode.Server.Commands { User user = player.GetUser(); - if (user == null || (user.FactionId != 1 && user.FactionId != 2)) + if (user == null || (user.FactionId != 1 && user.FactionId != 3)) { ChatService.NotAuthorized(player); return; @@ -249,6 +249,55 @@ namespace ReallifeGamemode.Server.Commands dbContext.SaveChanges(); } } + + [Command("release", "~m~Benutzung: ~s~/release [Name / ID] [Grund]")] + public void CmdFactionJailRelease(Client player, string nameOrId, string reason) + { + User user = player.GetUser(); + if (user == null || (user.FactionId != 1 && user.FactionId != 3)) + { + ChatService.NotAuthorized(player); + return; + } + + Client target = ClientService.GetClientByNameOrId(nameOrId); + if (target == null || !target.IsLoggedIn()) + { + ChatService.PlayerNotFound(player); + return; + } + + User targetCop = target.GetUser(); + if (targetCop.FactionId == 1 || targetCop.FactionId == 3) + { + ChatService.ErrorMessage(player, "Diese Person sollte sich nicht im Knast befinden"); + return; + } + if(target.Position.DistanceTo(player.Position) < 6) + { + User targetUser = target.GetUser(); + if (targetUser.JailTime > 0) + { + using (var dbContext = new DatabaseContext()) + { + target.GetUser(dbContext).JailTime = 0; + dbContext.SaveChanges(); + } + } + else + { + ChatService.ErrorMessage(player, "Diese Person befindet sich nicht im Knast"); + return; + } + } + else + { + ChatService.ErrorMessage(player, "Du bist zu weit entfernt"); + return; + } + } + + #endregion #region Global Fraktions Commands #endregion diff --git a/ReallifeGamemode.Server/Extensions/ClientExtension.cs b/ReallifeGamemode.Server/Extensions/ClientExtension.cs index 5d7d8408..b322de02 100644 --- a/ReallifeGamemode.Server/Extensions/ClientExtension.cs +++ b/ReallifeGamemode.Server/Extensions/ClientExtension.cs @@ -110,7 +110,7 @@ namespace ReallifeGamemode.Server.Extensions { ChatService.SendMessage(copPlayer, "~r~HQ: Straftat gemeldet von" + cop + " - " + reason + ". Straftäter: "+ user.Name + "."); } - else + else if((copUser.FactionId == 1 || copUser.FactionId == 2) && cop == null) { ChatService.SendMessage(copPlayer, "~r~HQ: " + user.Name + " hat eine Straftat begangen - " + reason + "."); } diff --git a/ReallifeGamemode.Server/Wanted/Jail.cs b/ReallifeGamemode.Server/Wanted/Jail.cs index 31838489..15323dd6 100644 --- a/ReallifeGamemode.Server/Wanted/Jail.cs +++ b/ReallifeGamemode.Server/Wanted/Jail.cs @@ -1,9 +1,11 @@ using System; using System.Collections.Generic; +using System.Linq; using System.Text; using GTANetworkAPI; using ReallifeGamemode.Server.Entities; using ReallifeGamemode.Server.Extensions; +using ReallifeGamemode.Server.Factions.Medic; using ReallifeGamemode.Server.Models; namespace ReallifeGamemode.Server.Wanted @@ -50,7 +52,11 @@ namespace ReallifeGamemode.Server.Wanted if (rndInt == 3) NAPI.Player.SpawnPlayer(client, new Vector3(458.3372, -1001.258, 24.91485)); //send client to jail - + client.TriggerEvent("onPlayerRevived"); + MedicTask task = Medic.ReviveTasks.FirstOrDefault(t => t.Victim == client.Name); + Medic.RemoveTaskFromList(task); + client.Health = 100; + using (var dbContext = new DatabaseContext()) { client.GetUser(dbContext).JailTime = user.Wanteds * 54; // 54 sec for each wanted star -> in total 45min for 50 Wanteds @@ -147,6 +153,7 @@ namespace ReallifeGamemode.Server.Wanted player.GetUser(dbContext).JailTime -= 60; dbContext.SaveChanges(); } + player.Health = 100; } }