Add /eat command

This commit is contained in:
VegaZ
2018-10-28 00:33:58 +02:00
parent cf10c52ab0
commit 052e632082
6 changed files with 85 additions and 5 deletions

View File

@@ -27,6 +27,26 @@ namespace reallife_gamemode.Server.Commands
{ {
public class Admin : Script public class Admin : Script
{ {
[Command("eat", "~m~Benutzung: ~s~/eat [Item]")]
public void CmdAdminEat(Client player, string item)
{
if (!player.GetUser()?.IsAdmin(AdminLevel.SUPPORTER) ?? true)
{
ChatService.NotAuthorized(player);
return;
}
IItem iItem = InventoryManager.GetItemByName(item);
List<UserItem> itemList = player.GetUser().GetItems();
UserItem eatItem = itemList.FirstOrDefault(i => i.ItemId == iItem.Id);
if(eatItem is IUsableItem)
{
var usableItemObj = eatItem as IUsableItem;
usableItemObj.Use(eatItem, player);
}
}
[Command("myitems")] [Command("myitems")]
public void CmdAdminMyItems(Client player) public void CmdAdminMyItems(Client player)
{ {
@@ -41,7 +61,7 @@ namespace reallife_gamemode.Server.Commands
foreach (var item in itemList) foreach (var item in itemList)
{ {
IItem iitem = InventoryManager.GetItemById(item.ItemId); IItem iitem = InventoryManager.GetItemById(item.ItemId);
player.SendChatMessage("Item: ~g~" + iitem.Name); player.SendChatMessage("Item: ~g~" + item.Amount + " " + iitem.Name);
} }
} }
@@ -58,7 +78,13 @@ namespace reallife_gamemode.Server.Commands
{ {
ChatService.PlayerNotFound(player); ChatService.PlayerNotFound(player);
return; return;
} }
using (var dbContext = new DatabaseContext())
{
UserItem newItem = new UserItem() { ItemId = itemId, UserId = target.GetUser().Id, Amount = amount };
dbContext.UserItems.Add(newItem);
dbContext.SaveChanges();
}
} }
[Command("vmod", "~m~Benutzung: ~s~/vmod [Slot] [Mod ID]")] [Command("vmod", "~m~Benutzung: ~s~/vmod [Slot] [Mod ID]")]
public void CmdAdminVmod(Client player, int slot, int mod) public void CmdAdminVmod(Client player, int slot, int mod)

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 IUsableItem public interface IUsableItem
{ {
void Use(Client player); void Use(UserItem uItem, Client player);
} }
} }

View File

@@ -4,7 +4,7 @@ using System.Collections.Generic;
using System.Text; using System.Text;
/** /**
* @overview Life of German Reallife - Inventory Items Hamburger (Hamburger.cs) * @overview Life of German Reallife - Inventory Items Cheeseburger (Cheeseburger.cs)
* @author VegaZ * @author VegaZ
* @copyright (c) 2008 - 2018 Life of German * @copyright (c) 2008 - 2018 Life of German
*/ */

View File

@@ -0,0 +1,23 @@
using reallife_gamemode.Server.Inventory.Interfaces;
using System;
using System.Collections.Generic;
using System.Text;
/**
* @overview Life of German Reallife - Inventory Items Chickenburger (Chickenburger.cs)
* @author VegaZ
* @copyright (c) 2008 - 2018 Life of German
*/
namespace reallife_gamemode.Server.Inventory.Items
{
public class Chickenburger : FoodItem, IItem
{
public int Id => 3;
public string Name => "Chickenburger";
public string Description => "Hühnchenburger";
public int Gewicht => 330;
public string Einheit => "g";
public override int HpAmount => 25;
}
}

View File

@@ -1,5 +1,8 @@
using GTANetworkAPI; using GTANetworkAPI;
using reallife_gamemode.Server.Entities;
using reallife_gamemode.Server.Extensions;
using reallife_gamemode.Server.Inventory.Interfaces; using reallife_gamemode.Server.Inventory.Interfaces;
using reallife_gamemode.Server.Managers;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Text; using System.Text;
@@ -10,9 +13,11 @@ namespace reallife_gamemode.Server.Inventory.Items
{ {
public abstract int HpAmount { get; } public abstract int HpAmount { get; }
public void Use(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.");
InventoryManager.RemoveUserItem(player.GetUser(), uItem);
} }
} }
} }

View File

@@ -1,5 +1,7 @@
using GTANetworkAPI; using GTANetworkAPI;
using reallife_gamemode.Model; using reallife_gamemode.Model;
using reallife_gamemode.Server.Commands;
using reallife_gamemode.Server.Entities;
using reallife_gamemode.Server.Inventory.Interfaces; using reallife_gamemode.Server.Inventory.Interfaces;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
@@ -45,5 +47,28 @@ namespace reallife_gamemode.Server.Managers
{ {
return itemList.Find(i => i.Id == id); return itemList.Find(i => i.Id == id);
} }
public static IItem GetItemByName(string name)
{
return itemList.Find(i => i.Name == name);
}
public static void RemoveUserItem(Entities.User user, UserItem item)
{
using (var dbContext = new DatabaseContext())
{
var userItem = dbContext.UserItems.FirstOrDefault(i => i.Id == item.Id);
userItem.Amount--;
dbContext.SaveChanges();
if(userItem.Amount == 0)
{
dbContext.Remove(userItem);
dbContext.SaveChanges();
}
}
}
} }
} }