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;
}