Finish Inventory-Backend
This commit is contained in:
@@ -54,7 +54,7 @@ mp.events.add("showInventory", (invWeight, itemArr) => {
|
|||||||
show = true;
|
show = true;
|
||||||
mp.game.graphics.requestStreamedTextureDict("itemimages", true);
|
mp.game.graphics.requestStreamedTextureDict("itemimages", true);
|
||||||
} else {
|
} else {
|
||||||
mp.events.callRemote('saveInventory', items);
|
mp.events.callRemote('saveInventory', JSON.stringify(items));
|
||||||
mp.gui.chat.activate(true);
|
mp.gui.chat.activate(true);
|
||||||
mp.gui.cursor.show(false, false);
|
mp.gui.cursor.show(false, false);
|
||||||
show = false;
|
show = false;
|
||||||
@@ -62,6 +62,10 @@ mp.events.add("showInventory", (invWeight, itemArr) => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
mp.events.add("addItem", (item) => {
|
||||||
|
items.push(item);
|
||||||
|
});
|
||||||
|
|
||||||
mp.events.add("render", () => {
|
mp.events.add("render", () => {
|
||||||
if (show === true) {
|
if (show === true) {
|
||||||
var pos = mp.gui.cursor.position;
|
var pos = mp.gui.cursor.position;
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ namespace reallife_gamemode.Server.Commands
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Command("giveitem", "~m~Benutzung: ~s~/giveitem [Target] [Item ID] [Anzahl]")]
|
[Command("giveitem", "~m~Benutzung: ~s~/giveitem [Target] [Item ID] [Anzahl]")]
|
||||||
public void CmdAdminGiveItem(Client player, Client target, int itemId, int amount)
|
public void CmdAdminGiveItem(Client player, string targetname, int itemId, int amount)
|
||||||
{
|
{
|
||||||
if (!player.GetUser()?.IsAdmin(AdminLevel.SUPPORTER) ?? true)
|
if (!player.GetUser()?.IsAdmin(AdminLevel.SUPPORTER) ?? true)
|
||||||
{
|
{
|
||||||
@@ -88,17 +88,15 @@ namespace reallife_gamemode.Server.Commands
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Client target = ClientService.GetClientByNameOrId(targetname);
|
||||||
if (target == null || !target.IsLoggedIn())
|
if (target == null || !target.IsLoggedIn())
|
||||||
{
|
{
|
||||||
ChatService.PlayerNotFound(player);
|
ChatService.PlayerNotFound(player);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
using (var dbContext = new DatabaseContext())
|
|
||||||
{
|
UserItem item = new UserItem() { ItemId = itemId, UserId = target.GetUser().Id, Amount = amount};
|
||||||
UserItem newItem = new UserItem() { ItemId = itemId, UserId = target.GetUser().Id, Amount = amount };
|
InventoryManager.AddItemToInventory(target, item);
|
||||||
dbContext.UserItems.Add(newItem);
|
|
||||||
dbContext.SaveChanges();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#region Support
|
#region Support
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
using GTANetworkAPI;
|
using GTANetworkAPI;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using Newtonsoft.Json.Linq;
|
||||||
using reallife_gamemode.Model;
|
using reallife_gamemode.Model;
|
||||||
using reallife_gamemode.Server.Commands;
|
using reallife_gamemode.Server.Commands;
|
||||||
using reallife_gamemode.Server.Entities;
|
using reallife_gamemode.Server.Entities;
|
||||||
@@ -100,40 +102,38 @@ namespace reallife_gamemode.Server.Managers
|
|||||||
}
|
}
|
||||||
|
|
||||||
[RemoteEvent("saveInventory")]
|
[RemoteEvent("saveInventory")]
|
||||||
public void SavePlayerInteroy(Client player, string[][] itemArray)
|
public void SavePlayerInventory(Client player, string itemArray)
|
||||||
{
|
{
|
||||||
var user = player.GetUser();
|
|
||||||
string[][] items = new string[itemArray.Length][];
|
|
||||||
|
|
||||||
List<UserItem> userItems = new List<UserItem>();
|
var user = player.GetUser();
|
||||||
|
var items = JsonConvert.DeserializeObject<string[][]>(itemArray);
|
||||||
|
|
||||||
|
//player.SendChatMessage(items);
|
||||||
|
|
||||||
using (var context = new DatabaseContext())
|
using (var context = new DatabaseContext())
|
||||||
{
|
{
|
||||||
foreach (var item in items)
|
for (var i = 0; i < items.Length; i++)
|
||||||
{
|
{
|
||||||
UserItem cItem = new UserItem
|
UserItem cItem = new UserItem
|
||||||
{
|
{
|
||||||
Amount = int.Parse(item[3]),
|
Amount = int.Parse(items[i][3]),
|
||||||
ItemId = GetItemByName(item[0]).Id,
|
ItemId = GetItemByName(items[i][0]).Id,
|
||||||
UserId = user.Id,
|
UserId = user.Id,
|
||||||
Slot = int.Parse(item[4]),
|
Slot = int.Parse(items[i][4]),
|
||||||
};
|
};
|
||||||
|
|
||||||
if (item[5] == "-1")
|
if (int.Parse(items[i][5]) == -1)
|
||||||
{
|
{
|
||||||
player.SendChatMessage("Item hinzugefügt");
|
context.UserItems.Add(cItem);
|
||||||
context.Add(cItem);
|
|
||||||
}
|
}
|
||||||
else if (cItem.Slot == -1)
|
else if (cItem.Slot == -1)
|
||||||
{
|
{
|
||||||
player.SendChatMessage("Item gelöscht");
|
UserItem fItem = context.UserItems.FirstOrDefault(j => j.Id == int.Parse(items[i][5]));
|
||||||
UserItem fItem = context.UserItems.FirstOrDefault(i => i.Id == int.Parse(item[5]));
|
context.UserItems.Remove(fItem);
|
||||||
userItems.Remove(fItem);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
player.SendChatMessage("Item geändert");
|
UserItem fItem = context.UserItems.FirstOrDefault(j => j.Id == int.Parse(items[i][5]));
|
||||||
UserItem fItem = context.UserItems.FirstOrDefault(i => i.Id == int.Parse(item[5]));
|
|
||||||
fItem.Amount = cItem.Amount;
|
fItem.Amount = cItem.Amount;
|
||||||
fItem.Slot = cItem.Slot;
|
fItem.Slot = cItem.Slot;
|
||||||
}
|
}
|
||||||
@@ -141,5 +141,33 @@ namespace reallife_gamemode.Server.Managers
|
|||||||
context.SaveChanges();
|
context.SaveChanges();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void AddItemToInventory(Client player, UserItem item)
|
||||||
|
{
|
||||||
|
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 =>
|
||||||
|
{
|
||||||
|
if (slotArr.Contains(allItem.Slot)) slotArr.Remove(allItem.Slot);
|
||||||
|
});
|
||||||
|
|
||||||
|
int newSlot = slotArr.Min();
|
||||||
|
|
||||||
|
item.Slot = newSlot;
|
||||||
|
context.UserItems.Add(item);
|
||||||
|
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", newItem);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user