Add drop to Inventory

This commit is contained in:
VegaZ
2018-12-19 20:22:00 +01:00
parent a542409855
commit a04cd81ede
11 changed files with 76 additions and 26 deletions

View File

@@ -25,6 +25,7 @@ var upRColor = 222;
var downRColor = 222; var downRColor = 222;
var leftRColor = 222; var leftRColor = 222;
var rightRColor = 222; var rightRColor = 222;
var radialDescription;
var inventoryWeight; var inventoryWeight;
var items = [[]]; var items = [[]];
@@ -210,24 +211,34 @@ mp.events.add("render", () => {
mp.game.graphics.drawSprite("itemimages", "radialdrop", grid[hoverGrid][0], grid[hoverGrid][1], rWidth / aspectRatioFactor, rWidth, 0, 255, 255, 255, 255); mp.game.graphics.drawSprite("itemimages", "radialdrop", grid[hoverGrid][0], grid[hoverGrid][1], rWidth / aspectRatioFactor, rWidth, 0, 255, 255, 255, 255);
mp.game.graphics.drawSprite("itemimages", "radialuse", grid[hoverGrid][0], grid[hoverGrid][1], rWidth / aspectRatioFactor, rWidth, 0, 255, 255, 255, 255); mp.game.graphics.drawSprite("itemimages", "radialuse", grid[hoverGrid][0], grid[hoverGrid][1], rWidth / aspectRatioFactor, rWidth, 0, 255, 255, 255, 255);
} }
//--------------------------------------------------------------DEBUG
mp.game.graphics.set2dLayer(7); mp.game.graphics.set2dLayer(7);
mp.game.graphics.drawText(itemRadial.toString() + " ~y~" + radialSelect, [0.5, 0.05], {
font: 7,
color: [255, 0, 0, 255],
scale: [0.7, 0.7],
outline: true,
});
//KOORDINATEN
if (ifMouseSelectRadial(pos[0], pos[1])) { if (ifMouseSelectRadial(pos[0], pos[1])) {
mp.game.graphics.drawText((pos[0] / screenX).toFixed(3) + " / " + (pos[1] / screenY).toFixed(3), [pos[0] / screenX, pos[1] / screenY - 0.02], { //mp.game.graphics.drawRect(pos[0] / screenX, pos[1] / screenY - 0.02, 0.08, 0.03, 0, 0, 0, 255);
mp.game.graphics.drawText("~g~" + radialDescription, [pos[0] / screenX, pos[1] / screenY - 0.033], {
font: 4, font: 4,
color: [255, 255, 255, 255], color: [255, 255, 255, 255],
scale: [0.4, 0.4], scale: [0.4, 0.4],
outline: true, outline: true,
}); });
} }
//----------------------------------------------------------DEBUG END ////--------------------------------------------------------------DEBUG
//mp.game.graphics.drawText(itemRadial.toString() + " ~y~" + radialSelect, [0.5, 0.05], {
// font: 7,
// color: [255, 0, 0, 255],
// scale: [0.7, 0.7],
// outline: true,
//});
////KOORDINATEN
//if (ifMouseSelectRadial(pos[0], pos[1])) {
// mp.game.graphics.drawText((pos[0] / screenX).toFixed(3) + " / " + (pos[1] / screenY).toFixed(3), [pos[0] / screenX, pos[1] / screenY - 0.02], {
// font: 4,
// color: [255, 255, 255, 255],
// scale: [0.4, 0.4],
// outline: true,
// });
//}
////----------------------------------------------------------DEBUG END
} }
if (showAdmin === true) { if (showAdmin === true) {
var pos = mp.gui.cursor.position; var pos = mp.gui.cursor.position;
@@ -453,12 +464,14 @@ function ifMouseSelectRadial(cX2, cY2) {
//OBEN //OBEN
if (x > grid[hoverGrid][0] - 0.0255 / aspectRatioFactor && x < grid[hoverGrid][0] + 0.0255 / aspectRatioFactor && y < grid[hoverGrid][1] - 0.065 && y > grid[hoverGrid][1] - 0.2) { if (x > grid[hoverGrid][0] - 0.0255 / aspectRatioFactor && x < grid[hoverGrid][0] + 0.0255 / aspectRatioFactor && y < grid[hoverGrid][1] - 0.065 && y > grid[hoverGrid][1] - 0.2) {
radialSelect = "up"; radialSelect = "up";
radialDescription = "Wegwerfen";
upRColor = 255; upRColor = 255;
return true; return true;
} }
//UNTEN //UNTEN
else if (x > grid[hoverGrid][0] - 0.0255 / aspectRatioFactor && x < grid[hoverGrid][0] + 0.0255 / aspectRatioFactor && y > grid[hoverGrid][1] + 0.065 && y < grid[hoverGrid][1] + 0.2) { else if (x > grid[hoverGrid][0] - 0.0255 / aspectRatioFactor && x < grid[hoverGrid][0] + 0.0255 / aspectRatioFactor && y > grid[hoverGrid][1] + 0.065 && y < grid[hoverGrid][1] + 0.2) {
radialSelect = "down"; radialSelect = "down";
radialDescription = "Benutzen / Essen";
downRColor = 255; downRColor = 255;
return true; return true;
} }
@@ -508,8 +521,11 @@ mp.events.add('click', (x, y, upOrDown, leftOrRight, relativeX, relativeY, world
if (isNaN(amount) || amount < 1) { if (isNaN(amount) || amount < 1) {
mp.game.graphics.notify('~r~Du musst eine Zahl größer als 0 eingeben!'); mp.game.graphics.notify('~r~Du musst eine Zahl größer als 0 eingeben!');
return; return;
} else if (parseInt(amount) > parseInt(items[clickedItem][3])) {
mp.game.graphics.notify('~r~So viele Items hast du nicht!');
return;
} }
mp.events.callRemote('itemInteract', "drop", items[clickedItem][5], amount); mp.events.callRemote('itemInteract', "drop", items[clickedItem][5], parseInt(amount));
}); });
itemRadial = false; itemRadial = false;

View File

@@ -1,4 +1,5 @@
using GTANetworkAPI; using GTANetworkAPI;
using reallife_gamemode.Server.Entities;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Text; using System.Text;
@@ -13,6 +14,6 @@ namespace reallife_gamemode.Server.Inventory.Interfaces
{ {
public interface IDroppableItem : IItem public interface IDroppableItem : IItem
{ {
void Drop(Client player); void Drop(UserItem uItem, Client player, int amount);
} }
} }

View File

@@ -17,5 +17,6 @@ namespace reallife_gamemode.Server.Inventory.Interfaces
string Description { get; } string Description { get; }
int Gewicht { get; } int Gewicht { get; }
string Einheit { get; } string Einheit { get; }
uint Object { get; }
} }
} }

View File

@@ -11,7 +11,7 @@ using System.Text;
namespace reallife_gamemode.Server.Inventory.Items namespace reallife_gamemode.Server.Inventory.Items
{ {
public class Cheeseburger : FoodItem public class Cheeseburger : DropItem
{ {
public override int Id => 2; public override int Id => 2;
public override string Name => "Cheeseburger"; public override string Name => "Cheeseburger";
@@ -19,5 +19,6 @@ namespace reallife_gamemode.Server.Inventory.Items
public override int Gewicht => 320; public override int Gewicht => 320;
public override string Einheit => "g"; public override string Einheit => "g";
public override int HpAmount => 20; public override int HpAmount => 20;
public override uint Object => 2240524752;
} }
} }

View File

@@ -11,7 +11,7 @@ using System.Text;
namespace reallife_gamemode.Server.Inventory.Items namespace reallife_gamemode.Server.Inventory.Items
{ {
public class Chickenburger : FoodItem public class Chickenburger : DropItem, FoodItem
{ {
public override int Id => 3; public override int Id => 3;
public override string Name => "Chickenburger"; public override string Name => "Chickenburger";
@@ -19,5 +19,6 @@ namespace reallife_gamemode.Server.Inventory.Items
public override int Gewicht => 330; public override int Gewicht => 330;
public override string Einheit => "g"; public override string Einheit => "g";
public override int HpAmount => 25; public override int HpAmount => 25;
public override uint Object => 2240524752;
} }
} }

View File

@@ -0,0 +1,28 @@
using GTANetworkAPI;
using reallife_gamemode.Server.Entities;
using reallife_gamemode.Server.Extensions;
using reallife_gamemode.Server.Inventory.Interfaces;
using reallife_gamemode.Server.Managers;
using System;
using System.Collections.Generic;
using System.Text;
namespace reallife_gamemode.Server.Inventory.Items
{
public abstract class DropItem : IDroppableItem
{
public abstract int HpAmount { get; }
public abstract int Id { get; }
public abstract string Name { get; }
public abstract string Description { get; }
public abstract int Gewicht { get; }
public abstract string Einheit { get; }
public abstract uint Object { get; }
public void Drop(UserItem uItem, Client player, int amount)
{
player.SendNotification("Du hast ~g~" + amount + " ~y~" + InventoryManager.GetItemById(uItem.ItemId).Name + " ~s~weggeworfen.", false);
InventoryManager.RemoveUserItem(player.GetUser(), uItem);
}
}
}

View File

@@ -17,12 +17,13 @@ namespace reallife_gamemode.Server.Inventory.Items
public abstract string Description { get; } public abstract string Description { get; }
public abstract int Gewicht { get; } public abstract int Gewicht { get; }
public abstract string Einheit { get; } public abstract string Einheit { get; }
public abstract uint Object { get; }
public void Use(UserItem uItem, Client player) public void Use(UserItem uItem, Client player)
{ {
player.Health += HpAmount; player.Health += HpAmount;
player.SendChatMessage("Du hast einen ~y~" + InventoryManager.GetItemById(uItem.ItemId).Name + " ~s~gegessen."); player.SendNotification("Du hast ein/einen ~y~" + InventoryManager.GetItemById(uItem.ItemId).Name + " ~s~gegessen.", false);
InventoryManager.RemoveUserItem(player.GetUser(), uItem); InventoryManager.RemoveUserItem(player.GetUser(), uItem, 1);
} }
} }
} }

View File

@@ -11,7 +11,7 @@ using System.Text;
namespace reallife_gamemode.Server.Inventory.Items namespace reallife_gamemode.Server.Inventory.Items
{ {
public class Hamburger : FoodItem public class Hamburger : DropItem
{ {
public override int Id => 1; public override int Id => 1;
public override string Name => "Hamburger"; public override string Name => "Hamburger";
@@ -19,5 +19,6 @@ namespace reallife_gamemode.Server.Inventory.Items
public override int Gewicht => 300; public override int Gewicht => 300;
public override string Einheit => "g"; public override string Einheit => "g";
public override int HpAmount => 20; public override int HpAmount => 20;
public override uint Object => 2240524752;
} }
} }

View File

@@ -11,7 +11,7 @@ using System.Text;
namespace reallife_gamemode.Server.Inventory.Items namespace reallife_gamemode.Server.Inventory.Items
{ {
public class Holz : FoodItem public class Holz : DropItem
{ {
public override int Id => 4; public override int Id => 4;
public override string Name => "Holz"; public override string Name => "Holz";
@@ -19,5 +19,6 @@ namespace reallife_gamemode.Server.Inventory.Items
public override int Gewicht => 1000; public override int Gewicht => 1000;
public override string Einheit => "g"; public override string Einheit => "g";
public override int HpAmount => 20; public override int HpAmount => 20;
public override uint Object => 1805779401;
} }
} }

View File

@@ -11,7 +11,7 @@ using System.Text;
namespace reallife_gamemode.Server.Inventory.Items namespace reallife_gamemode.Server.Inventory.Items
{ {
public class Kraftstoff : FoodItem public class Kraftstoff : DropItem
{ {
public override int Id => 5; public override int Id => 5;
public override string Name => "Kraftstoff"; public override string Name => "Kraftstoff";
@@ -19,5 +19,6 @@ namespace reallife_gamemode.Server.Inventory.Items
public override int Gewicht => 1000; public override int Gewicht => 1000;
public override string Einheit => "g"; public override string Einheit => "g";
public override int HpAmount => 20; public override int HpAmount => 20;
public override uint Object => 786272259;
} }
} }

View File

@@ -57,13 +57,13 @@ namespace reallife_gamemode.Server.Managers
return itemList.Find(i => i.Name.ToLower() == name.ToLower()); return itemList.Find(i => i.Name.ToLower() == name.ToLower());
} }
public static void RemoveUserItem(Entities.User user, UserItem item) public static void RemoveUserItem(Entities.User user, UserItem item, int amount)
{ {
using (var dbContext = new DatabaseContext()) using (var dbContext = new DatabaseContext())
{ {
var userItem = dbContext.UserItems.FirstOrDefault(i => i.Id == item.Id); var userItem = dbContext.UserItems.FirstOrDefault(i => i.Id == item.Id);
userItem.Amount--; userItem.Amount -= amount;
dbContext.SaveChanges(); dbContext.SaveChanges();
@@ -250,7 +250,6 @@ namespace reallife_gamemode.Server.Managers
{ {
usableItemObj.Use(userItem, player); usableItemObj.Use(userItem, player);
player.TriggerEvent("removeItem", itemId, amount); player.TriggerEvent("removeItem", itemId, amount);
fItem.Amount -= amount;
} }
break; break;
case "drop": case "drop":
@@ -269,10 +268,9 @@ namespace reallife_gamemode.Server.Managers
if (iItem is IUsableItem usableItemObj2) if (iItem is IUsableItem usableItemObj2)
{ {
fItem.Amount -= amount; Random r = new Random();
usableItemObj2.Use(userItem, player); //fItem.Amount -= amount;
NAPI.Object.CreateObject(1017479830, new Vector3(player.Position.X, player.Position.Y, player.Position.Z), new Vector3(0, 0, 0), 0); usableItemObj2.Drop(userItem, player);
NAPI.TextLabel.CreateTextLabel(iItem.Name + " ~s~(~y~" + amount + "~s~)", new Vector3(player.Position.X, player.Position.Y, player.Position.Z), 5, 0.5f, 4, new Color(255, 255, 255), false, 0);
player.TriggerEvent("removeItem", itemId, amount); player.TriggerEvent("removeItem", itemId, amount);
} }
break; break;