Add Drop Item and Pick up item

This commit is contained in:
VegaZ
2018-12-23 20:42:17 +01:00
parent b16ed270c2
commit 0daa31fefc
8 changed files with 241 additions and 40 deletions

View File

@@ -5,6 +5,7 @@ using reallife_gamemode.Model;
using reallife_gamemode.Server.Commands;
using reallife_gamemode.Server.Entities;
using reallife_gamemode.Server.Extensions;
using reallife_gamemode.Server.Inventory;
using reallife_gamemode.Server.Inventory.Interfaces;
using reallife_gamemode.Server.Services;
using System;
@@ -102,6 +103,35 @@ namespace reallife_gamemode.Server.Managers
}
}
public static int GetUserInventoryWeight(Client player)
{
var user = player.GetUser();
var inventoryWeight = 0;
using (var context = new DatabaseContext())
{
List<UserItem> userItems = context.UserItems.ToList().FindAll(i => i.UserId == user.Id);
foreach (var item in userItems)
{
IItem iItem = GetItemById(item.ItemId);
var currentItemWeight = iItem.Gewicht * item.Amount;
inventoryWeight += currentItemWeight;
}
}
return inventoryWeight;
}
public static UserItem UserHasThisItem(Client player, int itemId)
{
var user = player.GetUser();
using (var context = new DatabaseContext())
{
UserItem existingItem = context.UserItems.FirstOrDefault(i => i.UserId == user.Id && i.ItemId == itemId);
return existingItem;
}
}
public static void GetUserItemsAsAdmin(Client player, Entities.User user)
{
var inventoryWeight = 0;
@@ -174,28 +204,35 @@ namespace reallife_gamemode.Server.Managers
var user = player.GetUser();
using (var context = new DatabaseContext())
{
List<UserItem> allItemsByUser = context.UserItems.ToList().FindAll(i => i.UserId == user.Id);
var slotArr = Enumerable.Range(1, 20).ToList();
allItemsByUser.ForEach(allItem =>
UserItem existingItem = context.UserItems.FirstOrDefault(i => i.ItemId == item.ItemId && i.UserId == item.UserId);
if (existingItem != null)
{
if (slotArr.Contains(allItem.Slot)) slotArr.Remove(allItem.Slot);
});
existingItem.Amount += item.Amount;
}
else
{
List<UserItem> allItemsByUser = context.UserItems.ToList().FindAll(i => i.UserId == user.Id);
var slotArr = Enumerable.Range(1, 20).ToList();
allItemsByUser.ForEach(allItem =>
{
if (slotArr.Contains(allItem.Slot)) slotArr.Remove(allItem.Slot);
});
int newSlot = slotArr.Min();
int newSlot = slotArr.Min();
item.Slot = newSlot;
context.UserItems.Add(item);
item.Slot = newSlot;
context.UserItems.Add(item);
IItem iItem = GetItemById(item.ItemId);
string[] newItem = new string[] { iItem.Name, iItem.Description, iItem.Gewicht.ToString(), item.Amount.ToString(), newSlot.ToString(), item.Id.ToString() };
player.TriggerEvent("addItem", JsonConvert.SerializeObject(newItem));
}
context.SaveChanges();
IItem iItem = GetItemById(item.ItemId);
string[] newItem = new string[] { iItem.Name, iItem.Description, iItem.Gewicht.ToString(), item.Amount.ToString(), newSlot.ToString(), item.Id.ToString() };
player.TriggerEvent("addItem", JsonConvert.SerializeObject(newItem));
}
}
[RemoteEvent("removeItemAsAdmin")]
public void SavePlayerInventory(Client player, string amount, string userItemId, string targetPlayerName)
{
@@ -208,13 +245,13 @@ namespace reallife_gamemode.Server.Managers
if (amount == "stack")
{
var itemSlot = fItem.Slot;
targetPlayer.TriggerEvent("removeItem", userItemId, "stack");
targetPlayer.TriggerEvent("removeItem", userItemId, fItem.Amount);
context.UserItems.Remove(fItem);
}
else if (amount == "one")
{
var itemSlot = fItem.Slot;
targetPlayer.TriggerEvent("removeItem", userItemId, "one");
targetPlayer.TriggerEvent("removeItem", userItemId, 1);
fItem.Amount--;
}
context.SaveChanges();
@@ -267,11 +304,14 @@ namespace reallife_gamemode.Server.Managers
if (iItem is IDroppableItem usableItemObj2)
{
Vector3 dropPosition = new Vector3(player.Position.X, player.Position.Y, player.Position.Z - 0.8f);
Random r = new Random();
NAPI.Object.CreateObject(3777723516, new Vector3(player.Position.X, player.Position.Y, player.Position.Z - 0.8), new Vector3(0, 0, r.Next(0, 360)), 0);
NAPI.TextLabel.CreateTextLabel(iItem.Name + " ~s~(~y~" + amount + "~s~)", new Vector3(player.Position.X, player.Position.Y, player.Position.Z - 0.6), 5, 0.5f, 4, new Color(255, 255, 255), false, 0);
GTANetworkAPI.Object grndObject = NAPI.Object.CreateObject(3777723516, dropPosition, new Vector3(0, 0, r.Next(0, 360)), 0);
GroundItem grndItem = new GroundItem { ItemId = iItem.Id, Amount = amount, Position = dropPosition};
TextLabel grndTxtLbl = NAPI.TextLabel.CreateTextLabel(iItem.Name + " ~s~(~y~" + amount + "~s~)", dropPosition, 5, 0.5f, 4, new Color(255, 255, 255), false, 0);
GroundItem.AddGroundItem(grndItem, grndObject, grndTxtLbl);
fItem.Amount -= amount;
player.TriggerEvent("removeItem", itemId, amount);
player.TriggerEvent("removeItem", itemId, amount);
}
break;
}