diff --git a/ReallifeGamemode.Client/assets/html/inventory/img/inventory/108.svg b/ReallifeGamemode.Client/assets/html/inventory/img/inventory/108.svg index 92a41b9c..a8f2824b 100644 --- a/ReallifeGamemode.Client/assets/html/inventory/img/inventory/108.svg +++ b/ReallifeGamemode.Client/assets/html/inventory/img/inventory/108.svg @@ -1,36 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/ReallifeGamemode.Client/assets/html/inventory/img/inventory/109.svg b/ReallifeGamemode.Client/assets/html/inventory/img/inventory/109.svg new file mode 100644 index 00000000..52ae40dd --- /dev/null +++ b/ReallifeGamemode.Client/assets/html/inventory/img/inventory/109.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ReallifeGamemode.Client/assets/html/inventory/img/inventory/110.svg b/ReallifeGamemode.Client/assets/html/inventory/img/inventory/110.svg new file mode 100644 index 00000000..cefab709 --- /dev/null +++ b/ReallifeGamemode.Client/assets/html/inventory/img/inventory/110.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ReallifeGamemode.Server/Commands/AdminCommands.cs b/ReallifeGamemode.Server/Commands/AdminCommands.cs index c1d5f487..3e12ecd9 100644 --- a/ReallifeGamemode.Server/Commands/AdminCommands.cs +++ b/ReallifeGamemode.Server/Commands/AdminCommands.cs @@ -2231,26 +2231,19 @@ namespace ReallifeGamemode.Server.Commands return; } - var invWeight = 0; + var invWeight = InventoryManager.GetUserInventoryWeight(target); - using (var context = new DatabaseContext()) - { - List userItems = context.UserItems.ToList().FindAll(i => i.UserId == target.GetUser().Id); - foreach (var uItem in userItems) - { - invWeight += uItem.Amount * InventoryManager.GetItemById(uItem.ItemId).Gewicht; - } - } + IItem item = InventoryManager.GetItemById(itemId); - if (invWeight + (amount * InventoryManager.GetItemById(itemId).Gewicht) > 40000) + if (invWeight + (amount * item.Gewicht) > InventoryManager.MAX_USER_INVENTORY) { ChatService.SendMessage(player, "~y~" + target.Name + " ~s~hat nicht mehr genug Platz in seinem Inventar."); } else { - UserItem item = new UserItem() { ItemId = itemId, UserId = target.GetUser().Id, Amount = amount }; - InventoryManager.AddItemToInventory(target, item.ItemId, item.Amount); - ChatService.SendMessage(player, "~b~[ADMIN]~s~ Du hast " + target.Name + " ~g~" + amount + "~s~ mal das Item gegeben."); + UserItem userItem = new UserItem() { ItemId = itemId, UserId = target.GetUser().Id, Amount = amount }; + InventoryManager.AddItemToInventory(target, userItem.ItemId, userItem.Amount); + ChatService.SendMessage(player, $"~b~[ADMIN]~s~ Du hast ~y~{target.Name}~y~ ~y~{amount}~s~ mal das Item ~y~{item.Name}~s~ gegeben."); } } @@ -2340,7 +2333,7 @@ namespace ReallifeGamemode.Server.Commands } [Command("inventory", "~m~Benutzung: ~s~/inventory [Spieler]")] - public void CmdAdminGiveItem(Player player, string targetname) + public void CmdAdminInventory(Player player, string targetname) { if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true) { diff --git a/ReallifeGamemode.Server/Inventory/Interfaces/IUsableItem.cs b/ReallifeGamemode.Server/Inventory/Interfaces/IUsableItem.cs index 67650c24..24539b6c 100644 --- a/ReallifeGamemode.Server/Inventory/Interfaces/IUsableItem.cs +++ b/ReallifeGamemode.Server/Inventory/Interfaces/IUsableItem.cs @@ -1,4 +1,6 @@ -using ReallifeGamemode.Database.Entities; +using GTANetworkAPI; +using ReallifeGamemode.Database.Entities; +using ReallifeGamemode.Database.Models; /** * @overview Life of German Reallife - Inventory Interfaces UsableItem (IUsableItem.cs) @@ -10,6 +12,7 @@ namespace ReallifeGamemode.Server.Inventory.Interfaces { public interface IUsableItem : IItem, IDroppableItem //marker Interface { - bool Use(UserItem uItem); + bool RemoveWhenUsed { get; } + bool Use(Player player, User user, DatabaseContext databaseContext); } } diff --git a/ReallifeGamemode.Server/Inventory/Items/Apfel.cs b/ReallifeGamemode.Server/Inventory/Items/Apfel.cs index 4b396c17..81fafb8b 100644 --- a/ReallifeGamemode.Server/Inventory/Items/Apfel.cs +++ b/ReallifeGamemode.Server/Inventory/Items/Apfel.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Text; using GTANetworkAPI; using ReallifeGamemode.Database.Entities; +using ReallifeGamemode.Database.Models; using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Server.Managers; @@ -20,10 +21,8 @@ namespace ReallifeGamemode.Server.Inventory.Items public override int Price => 50; public override float Cooldown => 60000; - public override void Consume(UserItem uItem) + public override void Consume(Player player, User user, DatabaseContext databaseContext) { - Player player = uItem.GetUser().Player; - int amountToAdd = HpAmount; if (player.Health + amountToAdd > 100) { @@ -32,7 +31,6 @@ namespace ReallifeGamemode.Server.Inventory.Items player.SafeSetHealth(player.Health + amountToAdd); player.SendNotification("Du hast einen ~y~" + Name + " ~s~gegessen.", false); - InventoryManager.RemoveUserItem(player.GetUser(), uItem, 1); } } } diff --git a/ReallifeGamemode.Server/Inventory/Items/AviateChips.cs b/ReallifeGamemode.Server/Inventory/Items/AviateChips.cs index b65f0f86..49b597fb 100644 --- a/ReallifeGamemode.Server/Inventory/Items/AviateChips.cs +++ b/ReallifeGamemode.Server/Inventory/Items/AviateChips.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Text; using GTANetworkAPI; using ReallifeGamemode.Database.Entities; +using ReallifeGamemode.Database.Models; using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Server.Managers; @@ -21,10 +22,8 @@ namespace ReallifeGamemode.Server.Inventory.Items public override float Cooldown => 60000; - public override void Consume(UserItem uItem) + public override void Consume(Player player, User user, DatabaseContext databaseContext) { - Player player = uItem.GetUser().Player; - int amountToAdd = HpAmount; if (player.Health + amountToAdd > 100) { @@ -33,7 +32,6 @@ namespace ReallifeGamemode.Server.Inventory.Items player.SafeSetHealth(player.Health + amountToAdd); player.SendNotification("Du hast ~y~" + Name + " ~s~gegessen.", false); - InventoryManager.RemoveUserItem(player.GetUser(), uItem, 1); } } } diff --git a/ReallifeGamemode.Server/Inventory/Items/Baklava.cs b/ReallifeGamemode.Server/Inventory/Items/Baklava.cs index e5825cf8..6b07dfdc 100644 --- a/ReallifeGamemode.Server/Inventory/Items/Baklava.cs +++ b/ReallifeGamemode.Server/Inventory/Items/Baklava.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Text; using GTANetworkAPI; using ReallifeGamemode.Database.Entities; +using ReallifeGamemode.Database.Models; using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Server.Managers; @@ -21,10 +22,8 @@ namespace ReallifeGamemode.Server.Inventory.Items public override float Cooldown => 180000; - public override void Consume(UserItem uItem) + public override void Consume(Player player, User user, DatabaseContext databaseContext) { - Player player = uItem.GetUser().Player; - int amountToAdd = HpAmount; if (player.Health + amountToAdd > 100) { @@ -33,7 +32,6 @@ namespace ReallifeGamemode.Server.Inventory.Items player.SafeSetHealth(player.Health + amountToAdd); player.SendNotification("Du hast ein ~y~" + Name + " ~s~gegessen.", false); - InventoryManager.RemoveUserItem(player.GetUser(), uItem, 1); } } } diff --git a/ReallifeGamemode.Server/Inventory/Items/Bier.cs b/ReallifeGamemode.Server/Inventory/Items/Bier.cs index 99fc67a5..73852580 100644 --- a/ReallifeGamemode.Server/Inventory/Items/Bier.cs +++ b/ReallifeGamemode.Server/Inventory/Items/Bier.cs @@ -1,7 +1,9 @@ using System; using System.Collections.Generic; using System.Text; +using GTANetworkAPI; using ReallifeGamemode.Database.Entities; +using ReallifeGamemode.Database.Models; namespace ReallifeGamemode.Server.Inventory.Items { @@ -18,7 +20,7 @@ namespace ReallifeGamemode.Server.Inventory.Items public override float Cooldown => 1000; - public override void Consume(UserItem uItem) + public override void Consume(Player player, User user, DatabaseContext databaseContext) { //nothing } diff --git a/ReallifeGamemode.Server/Inventory/Items/CannabisSeeds.cs b/ReallifeGamemode.Server/Inventory/Items/CannabisSeeds.cs new file mode 100644 index 00000000..63f0f0db --- /dev/null +++ b/ReallifeGamemode.Server/Inventory/Items/CannabisSeeds.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace ReallifeGamemode.Server.Inventory.Items +{ + public class CannabisSeeds : BaseItem + { + public override int Id { get; } = 109; + public override string Name { get; } = "Cannabis Samen"; + public override string Description { get; } = "vierhundertzwanzig lodere es"; + public override int Gewicht { get; } = 10; + public override string Einheit { get; } = "g"; + public override int Price { get; } = 0; + public override bool Legal => false; + } +} diff --git a/ReallifeGamemode.Server/Inventory/Items/Cheeseburger.cs b/ReallifeGamemode.Server/Inventory/Items/Cheeseburger.cs index 225962ba..38f0775c 100644 --- a/ReallifeGamemode.Server/Inventory/Items/Cheeseburger.cs +++ b/ReallifeGamemode.Server/Inventory/Items/Cheeseburger.cs @@ -1,5 +1,6 @@ using GTANetworkAPI; using ReallifeGamemode.Database.Entities; +using ReallifeGamemode.Database.Models; using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Server.Managers; @@ -23,10 +24,8 @@ namespace ReallifeGamemode.Server.Inventory.Items public override int Price => 100; public override float Cooldown => 120000; - public override void Consume(UserItem uItem) + public override void Consume(Player player, User user, DatabaseContext databaseContext) { - Player player = uItem.GetUser().Player; - int amountToAdd = HpAmount; if (player.Health + amountToAdd > 100) { @@ -35,7 +34,6 @@ namespace ReallifeGamemode.Server.Inventory.Items player.SafeSetHealth(player.Health + amountToAdd); player.SendNotification("Du hast einen ~y~" + Name + " ~s~gegessen.", false); - InventoryManager.RemoveUserItem(player.GetUser(), uItem, 1); } } } diff --git a/ReallifeGamemode.Server/Inventory/Items/Chips.cs b/ReallifeGamemode.Server/Inventory/Items/Chips.cs index 3198deb5..a6cb4623 100644 --- a/ReallifeGamemode.Server/Inventory/Items/Chips.cs +++ b/ReallifeGamemode.Server/Inventory/Items/Chips.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Text; using GTANetworkAPI; using ReallifeGamemode.Database.Entities; +using ReallifeGamemode.Database.Models; using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Server.Managers; @@ -21,10 +22,8 @@ namespace ReallifeGamemode.Server.Inventory.Items public override float Cooldown => 30000; - public override void Consume(UserItem uItem) + public override void Consume(Player player, User user, DatabaseContext databaseContext) { - Player player = uItem.GetUser().Player; - int amountToAdd = HpAmount; if (player.Health + amountToAdd > 100) { @@ -33,7 +32,6 @@ namespace ReallifeGamemode.Server.Inventory.Items player.SafeSetHealth(player.Health + amountToAdd); player.SendNotification("Du hast ~y~" + Name + " ~s~gegessen.", false); - InventoryManager.RemoveUserItem(player.GetUser(), uItem, 1); } } } diff --git a/ReallifeGamemode.Server/Inventory/Items/Cocain.cs b/ReallifeGamemode.Server/Inventory/Items/Cocain.cs index 60e5000c..3137798e 100644 --- a/ReallifeGamemode.Server/Inventory/Items/Cocain.cs +++ b/ReallifeGamemode.Server/Inventory/Items/Cocain.cs @@ -1,4 +1,6 @@ -using ReallifeGamemode.Database.Entities; +using GTANetworkAPI; +using ReallifeGamemode.Database.Entities; +using ReallifeGamemode.Database.Models; /** * @overview Life of German Reallife - Inventory Items Chickenburger (Chickenburger.cs) @@ -21,7 +23,7 @@ namespace ReallifeGamemode.Server.Inventory.Items public override float Cooldown => 20000; - public override void Consume(UserItem uItem) + public override void Consume(Player player, User user, DatabaseContext databaseContext) { //nothing } diff --git a/ReallifeGamemode.Server/Inventory/Items/ConsumableItem.cs b/ReallifeGamemode.Server/Inventory/Items/ConsumableItem.cs index abfaa298..ea7d5f90 100644 --- a/ReallifeGamemode.Server/Inventory/Items/ConsumableItem.cs +++ b/ReallifeGamemode.Server/Inventory/Items/ConsumableItem.cs @@ -1,6 +1,7 @@ using System; using GTANetworkAPI; using ReallifeGamemode.Database.Entities; +using ReallifeGamemode.Database.Models; using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Server.Inventory.Interfaces; using ReallifeGamemode.Server.Managers; @@ -8,7 +9,7 @@ using ReallifeGamemode.Server.Util; namespace ReallifeGamemode.Server.Inventory.Items { - public abstract class ConsumableItem : BaseItem, IUsableItem + public abstract class ConsumableItem : UseItem { public abstract int HpAmount { get; } public override int Id { get; } @@ -18,28 +19,28 @@ namespace ReallifeGamemode.Server.Inventory.Items public override string Einheit { get; } public override int Price { get; } public abstract float Cooldown { get; } - public abstract uint Object { get; } + public abstract override uint Object { get; } + public override bool RemoveWhenUsed => true; - public abstract void Consume(UserItem uItem); + public abstract void Consume(Player player, User user, DatabaseContext databaseContext); - public bool Use(UserItem uItem) + public override bool Use(Player player, User user, DatabaseContext databaseContext) { - User user = uItem.GetUser(); if (user.Player == null || !user.Player.IsLoggedIn()) return false; - if (!HasCooldownElapsed(user)) + if (!HasCooldownElapsed(user) && Cooldown > 0) { DateTime time = InventoryManager.itemCooldown[user.Id]; int timeUntillNextUse = (int)(time - DateTime.Now).TotalSeconds; - uItem.GetUser().Player.TriggerEvent("Error", $"Versuche es nach {timeUntillNextUse} Sekunden erneut."); + user.Player.TriggerEvent("Error", $"Versuche es nach {timeUntillNextUse} Sekunden erneut."); return false; } DateTime cooldown = DateTime.Now.AddMilliseconds(Cooldown); InventoryManager.itemCooldown.Add(user.Id, cooldown); - Consume(uItem); + Consume(player, user, databaseContext); return true; } diff --git a/ReallifeGamemode.Server/Inventory/Items/Joint.cs b/ReallifeGamemode.Server/Inventory/Items/Joint.cs new file mode 100644 index 00000000..27bfc0d6 --- /dev/null +++ b/ReallifeGamemode.Server/Inventory/Items/Joint.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Text; +using GTANetworkAPI; +using ReallifeGamemode.Database.Entities; +using ReallifeGamemode.Database.Models; +using ReallifeGamemode.Server.Services; + +namespace ReallifeGamemode.Server.Inventory.Items +{ + public class Joint : UseItem + { + public override int Id { get; } = 110; + public override string Name { get; } = "Joint"; + public override string Description { get; } = "stay high bis zum tod"; + public override int Gewicht { get; } = 20; + public override string Einheit { get; } = "g"; + public override int Price { get; } = 0; + public override uint Object { get; } + public override bool Legal => false; + public override bool RemoveWhenUsed => true; + + public override bool Use(Player player, User user, DatabaseContext databaseContext) + { + return true; + } + } +} diff --git a/ReallifeGamemode.Server/Inventory/Items/Kebab.cs b/ReallifeGamemode.Server/Inventory/Items/Kebab.cs index 508e9c50..eced1333 100644 --- a/ReallifeGamemode.Server/Inventory/Items/Kebab.cs +++ b/ReallifeGamemode.Server/Inventory/Items/Kebab.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Text; using GTANetworkAPI; using ReallifeGamemode.Database.Entities; +using ReallifeGamemode.Database.Models; using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Server.Managers; @@ -21,10 +22,8 @@ namespace ReallifeGamemode.Server.Inventory.Items public override float Cooldown => 300000; - public override void Consume(UserItem uItem) + public override void Consume(Player player, User user, DatabaseContext databaseContext) { - Player player = uItem.GetUser().Player; - int amountToAdd = HpAmount; if (player.Health + amountToAdd > 100) { @@ -33,7 +32,6 @@ namespace ReallifeGamemode.Server.Inventory.Items player.SafeSetHealth(player.Health + amountToAdd); player.SendNotification("Du hast ein ~y~" + Name + " ~s~gegessen.", false); - InventoryManager.RemoveUserItem(player.GetUser(), uItem, 1); } } } diff --git a/ReallifeGamemode.Server/Inventory/Items/Notfallkit.cs b/ReallifeGamemode.Server/Inventory/Items/Notfallkit.cs index b6d19fe3..4a5bfe40 100644 --- a/ReallifeGamemode.Server/Inventory/Items/Notfallkit.cs +++ b/ReallifeGamemode.Server/Inventory/Items/Notfallkit.cs @@ -19,17 +19,12 @@ namespace ReallifeGamemode.Server.Inventory.Items public override uint Object => 875075437; public override int Price => 2500; - public override bool Use(UserItem uItem) + public override bool RemoveWhenUsed { get; } = true; + + public override bool Use(Player player, User user, DatabaseContext databaseContext) { - Player player = uItem.GetUser().Player; - - if (uItem.ItemId != 201) - { - return false; - } - Vehicle veh = null; - + var nearestVeh = NAPI.Pools.GetAllVehicles().Where(v => v.Position.DistanceTo(player.Position) <= 5).FirstOrDefault(); veh = nearestVeh; @@ -39,13 +34,13 @@ namespace ReallifeGamemode.Server.Inventory.Items return false; } - if(player.IsInVehicle) + if (player.IsInVehicle) { player.SendNotification("Du musst aus deinem Fahrzeug aussteigen!"); return false; } - if(veh.Controller == null) + if (veh.Controller == null) { player.SendNotification("Du kannst dieses Fahrzeug nicht reparieren, weil Jemand bereits im Fahrzeug sitzt"); return false; @@ -62,6 +57,7 @@ namespace ReallifeGamemode.Server.Inventory.Items Vector3 position = veh.Position; player.SendNotification("Du hast ~g~" + InventoryManager.GetItemById(uItem.ItemId).Name + " ~s~verwendet", false); InventoryManager.RemoveUserItem(player.GetUser(), uItem, 1); + InventoryManager.RemoveUserItem(player.GetUser(), uItem, 1); ServerVehicle serverVehicle = veh.GetServerVehicle(dbContext); serverVehicle.Spawn(veh).Position = position; Vehicle newVeh = serverVehicle.Spawn(veh); diff --git a/ReallifeGamemode.Server/Inventory/Items/Rubellos.cs b/ReallifeGamemode.Server/Inventory/Items/Rubellos.cs index 4a36ce7f..416252a6 100644 --- a/ReallifeGamemode.Server/Inventory/Items/Rubellos.cs +++ b/ReallifeGamemode.Server/Inventory/Items/Rubellos.cs @@ -19,40 +19,24 @@ namespace ReallifeGamemode.Server.Inventory.Items public override string Einheit => "g"; public override uint Object => 875075437; public override int Price => 500; + public override bool RemoveWhenUsed => true; - public override bool Use(UserItem uItem) - { - Player player = uItem.GetUser().Player; - - if (uItem.ItemId != 200) + public override bool Use(Player player, User user, DatabaseContext databaseContext) { - return false; - } - Random random = new Random(); - int randomNumber = random.Next(1, 4); - if (randomNumber == 1) - { - using (var dbContext = new DatabaseContext()) + Random random = new Random(); + int randomNumber = random.Next(1, 2); + if (randomNumber == 1) { - User winner = player.GetUser(dbContext); - winner.Handmoney += 1000; + user.Handmoney += 1000; //player.TriggerEvent("SERVER:SET_HANDMONEY", winner.Handmoney); - dbContext.SaveChanges(); - } player.SendNotification("Glückwunsch du hast ~g~$~w~1000 gewonnen!"); - } - else - { + } + else + { player.SendNotification("Leider kein Gewinn, viel Glück beim nächsten mal."); + } + player.SendNotification("Du hast ein ~g~" + Name + " ~s~verwendet.", false); + return true; } - player.SendNotification("Du hast ~g~" + InventoryManager.GetItemById(uItem.ItemId).Name + " ~s~verwendet.", false); - InventoryManager.RemoveUserItem(player.GetUser(), uItem, 1); - return true; } - - -} - - - } diff --git a/ReallifeGamemode.Server/Inventory/Items/UseItem.cs b/ReallifeGamemode.Server/Inventory/Items/UseItem.cs index 9674fb70..59cf30ea 100644 --- a/ReallifeGamemode.Server/Inventory/Items/UseItem.cs +++ b/ReallifeGamemode.Server/Inventory/Items/UseItem.cs @@ -19,8 +19,8 @@ namespace ReallifeGamemode.Server.Inventory.Items public override string Einheit { get; } public override int Price { get; } public abstract uint Object { get; } + public abstract bool RemoveWhenUsed { get; } - public abstract bool Use(UserItem uItem); - + public abstract bool Use(Player player, User user, DatabaseContext databaseContext); } } diff --git a/ReallifeGamemode.Server/Managers/InventoryManager.cs b/ReallifeGamemode.Server/Managers/InventoryManager.cs index 38d5d00d..4658cd12 100644 --- a/ReallifeGamemode.Server/Managers/InventoryManager.cs +++ b/ReallifeGamemode.Server/Managers/InventoryManager.cs @@ -27,7 +27,7 @@ namespace ReallifeGamemode.Server.Managers { public class InventoryManager : Script { - private const int MAX_USER_INVENTORY = 40000; + public const int MAX_USER_INVENTORY = 40000; private static readonly ILogger logger = LogManager.GetLogger(); public static List itemList; @@ -82,7 +82,11 @@ namespace ReallifeGamemode.Server.Managers { player.TriggerEvent("Error", "Du kannst deinen Kofferraum gerade nicht öffnen."); } - Vehicle veh = NAPI.Pools.GetAllVehicles().ToList().Where(v => v.Position.DistanceTo(player.Position) <= 4).FirstOrDefault(); + Vehicle veh = NAPI.Pools.GetAllVehicles() + .ToList() + .Where(v => v.Position.DistanceTo(player.Position) <= 4) + .OrderBy(v => v.Position.DistanceTo(player.Position)) + .FirstOrDefault(); if (veh == null) { player.TriggerEvent("Error", "Kein Fahrzeug in der Nähe!"); @@ -270,7 +274,7 @@ namespace ReallifeGamemode.Server.Managers } } - public static void GetUserItemsAsAdmin(Player player, User user) + public static void GetUserItemsAsAdmin(Player admin, User user) { var inventoryWeight = 0; @@ -292,7 +296,7 @@ namespace ReallifeGamemode.Server.Managers items[userItems.IndexOf(item)][4] = item.Slot.ToString(); items[userItems.IndexOf(item)][5] = item.Id.ToString(); } - player.TriggerEvent("showInventoryToAdmin", user.Name, inventoryWeight, items); + admin.TriggerEvent("showInventoryToAdmin", user.Name, inventoryWeight, items); } } @@ -510,10 +514,10 @@ namespace ReallifeGamemode.Server.Managers int itemId = JsonConvert.DeserializeObject(jsonItemId); string type = JsonConvert.DeserializeObject(jsonType); - User user = player.GetUser(); using (var context = new DatabaseContext()) { + User user = player.GetUser(context); UserItem fItem = context.UserItems.Where(u => u.UserId == user.Id && u.ItemId == itemId).FirstOrDefault(); IItem iItem = GetItemById(fItem.ItemId); @@ -534,8 +538,14 @@ namespace ReallifeGamemode.Server.Managers if (iItem is IUsableItem usableItemObj) { - if (usableItemObj.Use(fItem)) + logger.LogInformation("Player {0} used the item {1} ({2})", player.Name, iItem.Name, iItem.Id); + if (usableItemObj.Use(player, user, context)) { + if (usableItemObj.RemoveWhenUsed) + { + RemoveUserItem(user, fItem, 1); + } + SetBackpackItems(player); player.TriggerEvent("aproveUse", 1, iItem.Name); } @@ -559,6 +569,7 @@ namespace ReallifeGamemode.Server.Managers if (iItem is IDroppableItem usableItemObj2) { + logger.LogInformation("Player {0} dropped the item {1} ({2})", player.Name, iItem.Name, iItem.Id); Vector3 dropPosition = PlayerExtension.GetPositionFromPlayer(player, 0.6f, 0); //new Vector3(player.Position.X, player.Position.Y, player.Position.Z - 0.8f); Random r = new Random(); @@ -617,7 +628,6 @@ namespace ReallifeGamemode.Server.Managers if (GetUserInventoryWeight(client) + shopItem.Gewicht > MAX_USER_INVENTORY) { - return; }