diff --git a/ReallifeGamemode.Server/Events/Death.cs b/ReallifeGamemode.Server/Events/Death.cs index 5dff77b5..c810c4ff 100644 --- a/ReallifeGamemode.Server/Events/Death.cs +++ b/ReallifeGamemode.Server/Events/Death.cs @@ -238,8 +238,12 @@ namespace ReallifeGamemode.Server.Events } player.RemoveAllWeapons(); MedicTask task = Medic.ReviveTasks.FirstOrDefault(t => t.Victim == player.Name); - Player medicPlayer = PlayerService.GetPlayerByNameOrId(task.MedicName); - Medic.RemoveTaskFromList(task); + + if(task != null) + { + Player medicPlayer = PlayerService.GetPlayerByNameOrId(task.MedicName); + Medic.RemoveTaskFromList(task); + } player.SafeTeleport(new Vector3(-495.45, -336.33, 34.5), 0, true); } diff --git a/ReallifeGamemode.Server/Events/Disconnect.cs b/ReallifeGamemode.Server/Events/Disconnect.cs index de3dd8c8..ab181cb4 100644 --- a/ReallifeGamemode.Server/Events/Disconnect.cs +++ b/ReallifeGamemode.Server/Events/Disconnect.cs @@ -30,6 +30,13 @@ namespace ReallifeGamemode.Server.Events public void OnPlayerDisconnected(Player player, DisconnectionType type, string reason) { if (!player.IsLoggedIn()) return; + using var saveUser = new DatabaseContext(); + User user = player.GetUser(saveUser); + + if(user == null) + { + return; + } if (type == DisconnectionType.Left) { @@ -49,7 +56,7 @@ namespace ReallifeGamemode.Server.Events GlobalHelper.DutyAdmins.Remove(player); }*/ - if (player.GetUser().IsAdmin(AdminLevel.MAPPING)) + if (user.IsAdmin(AdminLevel.MAPPING)) { ChatService.BroadcastAdmin("!{#FFFF00}*** " + player.Name + " hat den Server verlassen", AdminLevel.MAPPING); } @@ -74,8 +81,8 @@ namespace ReallifeGamemode.Server.Events { Report.Report.listReports.Remove(temp); - Player user = PlayerService.GetPlayerByNameOrId(temp.getUser()); - user.SendChatMessage("!{#008fff}[REPORT]!{#FFFFFF} Chat beendet. Der Admin hat den Server verlassen"); + Player ticketUser = PlayerService.GetPlayerByNameOrId(temp.getUser()); + ticketUser.SendChatMessage("!{#008fff}[REPORT]!{#FFFFFF} Chat beendet. Der Admin hat den Server verlassen"); break; } @@ -124,27 +131,23 @@ namespace ReallifeGamemode.Server.Events } } - using (var saveUser = new DatabaseContext()) + Vector3 pos = player.Position; + + user.PositionX = pos.X; + user.PositionY = pos.Y; + user.PositionZ = pos.Z; + saveUser.SaveChanges(); + user.Dead = player.HasData("isDead") ? (bool)player.GetData("isDead") : false; + + if (user.Wanteds > 0) { - var user = player.GetUser(saveUser); - Vector3 pos = player.Position; - - user.PositionX = pos.X; - user.PositionY = pos.Y; - user.PositionZ = pos.Z; - saveUser.SaveChanges(); - user.Dead = player.HasData("isDead") ? (bool)player.GetData("isDead") : false; - - if (user.Wanteds > 0) - { - ChatService.HQMessage("Der Straftäter " + player.GetUser().Name + " ist vom Radar verschwunden"); - } - + ChatService.HQMessage("Der Straftäter " + user.Name + " ist vom Radar verschwunden"); } + player.SetData("isLoggedIn", false); player.TriggerEvent("CLIENT:DestroyPed", 1); player.TriggerEvent("CLIENT:DestroyPed", 2); - player.TriggerEvent("CLIENT:DestroyPed", 3); + player.TriggerEvent("CLIENT:DestroyPed", 3); player.TriggerEvent("CLIENT:DestroyPed", 4); Medic.delHealTask(player); diff --git a/ReallifeGamemode.Server/Extensions/ClientExtension.cs b/ReallifeGamemode.Server/Extensions/ClientExtension.cs index 38d79ada..9c354a51 100644 --- a/ReallifeGamemode.Server/Extensions/ClientExtension.cs +++ b/ReallifeGamemode.Server/Extensions/ClientExtension.cs @@ -31,8 +31,9 @@ namespace ReallifeGamemode.Server.Extensions /// public static User GetUser(this Player client, DatabaseContext context = null) { - context = context ?? new DatabaseContext(); if (!client.IsLoggedIn()) return null; + + context = context ?? new DatabaseContext(); return context .Users .Include(u => u.Faction)