From 44ba8dba612e8817b870a7be22b47243dce13677 Mon Sep 17 00:00:00 2001 From: hydrant Date: Tue, 1 Jun 2021 23:50:21 +0200 Subject: [PATCH] logs bei tod items verloren + items weg wenn knast --- ReallifeGamemode.Server/Events/Death.cs | 11 +++++++-- .../Extensions/ClientExtension.cs | 23 ++++++++++++++++--- .../Managers/InventoryManager.cs | 9 +++++--- 3 files changed, 35 insertions(+), 8 deletions(-) diff --git a/ReallifeGamemode.Server/Events/Death.cs b/ReallifeGamemode.Server/Events/Death.cs index 0d8b87c2..d12a62ec 100644 --- a/ReallifeGamemode.Server/Events/Death.cs +++ b/ReallifeGamemode.Server/Events/Death.cs @@ -64,7 +64,6 @@ namespace ReallifeGamemode.Server.Events PositionManager.cuffPoints.Remove(player); player.TriggerEvent("abortSpawnschutz"); - //TODO: Zum Full Release entfernen if (player.HasData("togdeath") && user.IsAdmin(AdminLevel.ADMIN)) { ChatService.SendMessage(player, "Du bist durch " + (killer?.Name ?? "Niemanden") + " gestorben: " + reason.ToString()); @@ -235,7 +234,15 @@ namespace ReallifeGamemode.Server.Events public void RespawnPlayerAtHospital(Player player) { logger.LogInformation("Player {0} respawned at the hospital", player.Name); - InventoryManager.RemoveIllegalItemsFromInventory(player); + var lostItems = InventoryManager.RemoveIllegalItemsFromInventory(player); + if (lostItems.Any()) + { + logger.LogInformation("Player {0} lost the following items on death: " + string.Join(", ", lostItems.Select(i => + { + IItem item = InventoryManager.GetItemById(i.ItemId); + return $"{item.Name} ({item.Id}, amount: {i.Amount})"; + }))); + } player.SetData("isDead", false); using (var dbContext = new DatabaseContext()) { diff --git a/ReallifeGamemode.Server/Extensions/ClientExtension.cs b/ReallifeGamemode.Server/Extensions/ClientExtension.cs index 2ffa1af2..0e89965a 100644 --- a/ReallifeGamemode.Server/Extensions/ClientExtension.cs +++ b/ReallifeGamemode.Server/Extensions/ClientExtension.cs @@ -8,6 +8,7 @@ using Newtonsoft.Json; using ReallifeGamemode.Database.Entities; using ReallifeGamemode.Database.Models; using ReallifeGamemode.Server.Admin; +using ReallifeGamemode.Server.Inventory.Interfaces; using ReallifeGamemode.Server.Log; using ReallifeGamemode.Server.Managers; using ReallifeGamemode.Server.Services; @@ -105,14 +106,30 @@ namespace ReallifeGamemode.Server.Extensions time *= 2; } - int factionMoney = user.Wanteds * 25; + var lostItems = InventoryManager.RemoveIllegalItemsFromInventory(user.Player); + if (lostItems.Any()) + { + Logger.LogInformation("Player {0} lost the following items when sent to prison: " + string.Join(", ", lostItems.Select(i => + { + IItem item = InventoryManager.GetItemById(i.ItemId); + return $"{item.Name} ({item.Id}, amount: {i.Amount})"; + }))); + } + var illegalItemsPrice = lostItems.Select(i => + { + IIllegalItem item = (IIllegalItem)InventoryManager.GetItemById(i.ItemId); + return item.PriceForConfiscation * i.Amount; + }).Sum(); + + int wantedMoney = user.Wanteds * 25; + int factionMoney = wantedMoney + illegalItemsPrice; var executiveFactions = dbContext.Factions.Include(f => f.BankAccount).Where(f => f.Id == 1 || f.Id == 3); foreach (var faction in executiveFactions) { faction.BankAccount.Balance += factionMoney; } - Logger.LogInformation("Player {0} was sent to jail for {1} seconds, executive factions got {2} dollars each", user.Name, time, factionMoney); + Logger.LogInformation("Player {0} was sent to jail for {1} seconds, executive factions got {2} dollars each (wanteds: {3}, illegal items: {4})", user.Name, time, factionMoney, wantedMoney, illegalItemsPrice); user.Wanteds = 0; user.JailTime = time; @@ -480,7 +497,7 @@ namespace ReallifeGamemode.Server.Extensions public static void ToggleInventory(this Player player, InventoryToggleOption option = InventoryToggleOption.TOGGLE) { - if(option == InventoryToggleOption.TOGGLE) + if (option == InventoryToggleOption.TOGGLE) { player.TriggerEvent("inventoryShow"); } diff --git a/ReallifeGamemode.Server/Managers/InventoryManager.cs b/ReallifeGamemode.Server/Managers/InventoryManager.cs index c4c4d0a2..97f97bbd 100644 --- a/ReallifeGamemode.Server/Managers/InventoryManager.cs +++ b/ReallifeGamemode.Server/Managers/InventoryManager.cs @@ -712,23 +712,26 @@ namespace ReallifeGamemode.Server.Managers } } - public static void RemoveIllegalItemsFromInventory(Player player) + public static List RemoveIllegalItemsFromInventory(Player player) { if (!player.IsLoggedIn()) { - return; + return new List(); } var user = player.GetUser(); - + List illegalItemsTaken = new List(); List items = GetUserItems(player); foreach (var item in items) { if (!GetItemById(item.ItemId).Legal) { + illegalItemsTaken.Add(item); RemoveUserItem(user, item, item.Amount); } } + + return illegalItemsTaken; } } }