diff --git a/ReallifeGamemode.Server/Managers/InventoryManager.cs b/ReallifeGamemode.Server/Managers/InventoryManager.cs index 6bebc678..ca5a32f4 100644 --- a/ReallifeGamemode.Server/Managers/InventoryManager.cs +++ b/ReallifeGamemode.Server/Managers/InventoryManager.cs @@ -387,9 +387,9 @@ namespace ReallifeGamemode.Server.Managers using (var context = new DatabaseContext()) { - UserItem item = context.UserItems.Where(u => u.UserId == user.Id && u.ItemId == itemID && u.Amount >= itemAmount).FirstOrDefault(); + UserItem userItem = context.UserItems.Where(u => u.UserId == user.Id && u.ItemId == itemID && u.Amount >= itemAmount).FirstOrDefault(); - if (item == null) + if (userItem == null) { player.TriggerEvent("Error", "Transfer nicht möglich."); return; @@ -415,11 +415,23 @@ namespace ReallifeGamemode.Server.Managers return; } - RemoveUserItem(user, item, itemAmount); + ServerVehicle serverVehicle = VehicleManager.GetServerVehicleFromVehicle(veh, context); + + if (VehicleStreaming.GetLockState(veh) || serverVehicle.Locked) + { + player.TriggerEvent("Error", "Der Kofferraum ist abgeschlossen"); + return; + } + + IItem item = GetItemById(userItem.ItemId); + + logger.LogInformation("Player {0} transferred the item {1} ({2}, amount: {3}) from his inventory to vehicle {4}", player.Name, item.Name, userItem.Id, itemAmount, serverVehicle.Id); + + RemoveUserItem(user, userItem, itemAmount); AddItemToVehicleInventory(veh, itemID, itemAmount); SetBackpackItems(player); - VehicleItem vehicleItem = context.VehicleItems.Where(f => f.ItemId == itemID && f.Vehicle == VehicleManager.GetServerVehicleFromVehicle(veh, context)).FirstOrDefault(); + VehicleItem vehicleItem = context.VehicleItems.Where(f => f.ItemId == itemID && f.Vehicle == serverVehicle).FirstOrDefault(); context.SaveChanges(); IItem iItem = GetItemById(itemID); player.TriggerEvent("aproveTransfer", vehicleItem.Amount, iItem.Name, "Kofferraum");