From 61da1edcb92b177b90425beb6018d9b10fb6eecd Mon Sep 17 00:00:00 2001 From: kookroach Date: Tue, 13 Apr 2021 17:57:33 +0200 Subject: [PATCH] change stuff with objects --- .../html/inventory/img/inventory/105.svg | 1 + .../Inventory/Interfaces/IUsableItem.cs | 4 +- .../Inventory/Items/Apfel.cs | 24 ++++++- .../Inventory/Items/AviateChips.cs | 29 ++++++-- .../Inventory/Items/Baklava.cs | 39 +++++++++++ .../Inventory/Items/Bier.cs | 10 ++- .../Inventory/Items/Cheeseburger.cs | 29 ++++++-- .../Inventory/Items/Chips.cs | 29 ++++++-- .../Inventory/Items/Cocain.cs | 19 +++-- .../Items/{FoodItem.cs => ConsumableItem.cs} | 21 +++--- .../Inventory/Items/UseItem.cs | 5 +- .../Job/RefuseCollectorJob.cs | 1 - .../Managers/InventoryManager.cs | 13 ++-- .../Managers/JobManager.cs | 69 ------------------- ReallifeGamemode.Server/Util/PlayerTimer.cs | 15 ++++ 15 files changed, 200 insertions(+), 108 deletions(-) create mode 100644 ReallifeGamemode.Client/assets/html/inventory/img/inventory/105.svg create mode 100644 ReallifeGamemode.Server/Inventory/Items/Baklava.cs rename ReallifeGamemode.Server/Inventory/Items/{FoodItem.cs => ConsumableItem.cs} (55%) diff --git a/ReallifeGamemode.Client/assets/html/inventory/img/inventory/105.svg b/ReallifeGamemode.Client/assets/html/inventory/img/inventory/105.svg new file mode 100644 index 00000000..825f1159 --- /dev/null +++ b/ReallifeGamemode.Client/assets/html/inventory/img/inventory/105.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ReallifeGamemode.Server/Inventory/Interfaces/IUsableItem.cs b/ReallifeGamemode.Server/Inventory/Interfaces/IUsableItem.cs index 24383bee..67650c24 100644 --- a/ReallifeGamemode.Server/Inventory/Interfaces/IUsableItem.cs +++ b/ReallifeGamemode.Server/Inventory/Interfaces/IUsableItem.cs @@ -8,8 +8,8 @@ namespace ReallifeGamemode.Server.Inventory.Interfaces { - public interface IUsableItem : IItem, IDroppableItem + public interface IUsableItem : IItem, IDroppableItem //marker Interface { - void Use(UserItem uItem); + bool Use(UserItem uItem); } } diff --git a/ReallifeGamemode.Server/Inventory/Items/Apfel.cs b/ReallifeGamemode.Server/Inventory/Items/Apfel.cs index b81fa4f7..d02026c4 100644 --- a/ReallifeGamemode.Server/Inventory/Items/Apfel.cs +++ b/ReallifeGamemode.Server/Inventory/Items/Apfel.cs @@ -1,18 +1,38 @@ using System; using System.Collections.Generic; using System.Text; +using GTANetworkAPI; +using ReallifeGamemode.Database.Entities; +using ReallifeGamemode.Server.Extensions; +using ReallifeGamemode.Server.Managers; namespace ReallifeGamemode.Server.Inventory.Items { - class Apfel : FoodItem + internal class Apfel : ConsumableItem { public override int Id => 101; public override string Name => "Apfel"; public override string Description => "Ein Apfel"; - public override int Gewicht => 10; + public override int Gewicht => 200; public override string Einheit => "g"; public override int HpAmount => 10; public override uint Object => 2240524752; public override int Price => 20; + public override float Cooldown => 5000; + + public override void Consume(UserItem uItem) + { + Player player = uItem.GetUser().Player; + + int amountToAdd = HpAmount; + if (player.Health + amountToAdd > 100) + { + amountToAdd = 100 - player.Health; + } + + 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 e663d6cb..d744b3bc 100644 --- a/ReallifeGamemode.Server/Inventory/Items/AviateChips.cs +++ b/ReallifeGamemode.Server/Inventory/Items/AviateChips.cs @@ -1,18 +1,39 @@ using System; using System.Collections.Generic; using System.Text; +using GTANetworkAPI; +using ReallifeGamemode.Database.Entities; +using ReallifeGamemode.Server.Extensions; +using ReallifeGamemode.Server.Managers; namespace ReallifeGamemode.Server.Inventory.Items { - class AChips : FoodItem + internal class AChips : ConsumableItem { public override int Id => 104; - public override string Name => "Aviates Chips"; + public override string Name => "aviates Chips"; public override string Description => "aviate liebt sie."; - public override int Gewicht => 10; + public override int Gewicht => 200; public override string Einheit => "g"; public override int HpAmount => 10; public override uint Object => 2240524752; - public override int Price => 20; + public override int Price => 1000; + + public override float Cooldown => 5000; + + public override void Consume(UserItem uItem) + { + Player player = uItem.GetUser().Player; + + int amountToAdd = HpAmount; + if (player.Health + amountToAdd > 100) + { + amountToAdd = 100 - player.Health; + } + + 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 new file mode 100644 index 00000000..67f3cd56 --- /dev/null +++ b/ReallifeGamemode.Server/Inventory/Items/Baklava.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections.Generic; +using System.Text; +using GTANetworkAPI; +using ReallifeGamemode.Database.Entities; +using ReallifeGamemode.Server.Extensions; +using ReallifeGamemode.Server.Managers; + +namespace ReallifeGamemode.Server.Inventory.Items +{ + internal class Baklava : ConsumableItem + { + public override int Id => 104; + public override string Name => "Baklava"; + public override string Description => "Dessert für dannach."; + public override int Gewicht => 100; + public override string Einheit => "g"; + public override int HpAmount => 30; + public override uint Object => 2240524752; + public override int Price => 300; + + public override float Cooldown => 10000; + + public override void Consume(UserItem uItem) + { + Player player = uItem.GetUser().Player; + + int amountToAdd = HpAmount; + if (player.Health + amountToAdd > 100) + { + amountToAdd = 100 - player.Health; + } + + 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 9be57f94..efa3615f 100644 --- a/ReallifeGamemode.Server/Inventory/Items/Bier.cs +++ b/ReallifeGamemode.Server/Inventory/Items/Bier.cs @@ -1,10 +1,11 @@ using System; using System.Collections.Generic; using System.Text; +using ReallifeGamemode.Database.Entities; namespace ReallifeGamemode.Server.Inventory.Items { - class Bier : FoodItem + internal class Bier : ConsumableItem { public override int Id => 102; public override string Name => "Bier"; @@ -14,5 +15,12 @@ namespace ReallifeGamemode.Server.Inventory.Items public override int HpAmount => 10; public override uint Object => 2240524752; public override int Price => 20; + + public override float Cooldown => 1000; + + public override void Consume(UserItem uItem) + { + //nothing + } } } diff --git a/ReallifeGamemode.Server/Inventory/Items/Cheeseburger.cs b/ReallifeGamemode.Server/Inventory/Items/Cheeseburger.cs index 74298618..bc14d8a5 100644 --- a/ReallifeGamemode.Server/Inventory/Items/Cheeseburger.cs +++ b/ReallifeGamemode.Server/Inventory/Items/Cheeseburger.cs @@ -1,4 +1,9 @@ -/** +using GTANetworkAPI; +using ReallifeGamemode.Database.Entities; +using ReallifeGamemode.Server.Extensions; +using ReallifeGamemode.Server.Managers; + +/** * @overview Life of German Reallife - Inventory Items Cheeseburger (Cheeseburger.cs) * @author VegaZ * @copyright (c) 2008 - 2018 Life of German @@ -6,15 +11,31 @@ namespace ReallifeGamemode.Server.Inventory.Items { - public class Cheeseburger : FoodItem + public class Cheeseburger : ConsumableItem { public override int Id => 103; public override string Name => "Cheeseburger"; public override string Description => "Ein Burger"; - public override int Gewicht => 50; + public override int Gewicht => 120; public override string Einheit => "g"; public override int HpAmount => 20; public override uint Object => 2240524752; - public override int Price => 100; + public override int Price => 150; + public override float Cooldown => 4000; + + public override void Consume(UserItem uItem) + { + Player player = uItem.GetUser().Player; + + int amountToAdd = HpAmount; + if (player.Health + amountToAdd > 100) + { + amountToAdd = 100 - player.Health; + } + + 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 c2610440..81cb02de 100644 --- a/ReallifeGamemode.Server/Inventory/Items/Chips.cs +++ b/ReallifeGamemode.Server/Inventory/Items/Chips.cs @@ -1,18 +1,39 @@ using System; using System.Collections.Generic; using System.Text; +using GTANetworkAPI; +using ReallifeGamemode.Database.Entities; +using ReallifeGamemode.Server.Extensions; +using ReallifeGamemode.Server.Managers; namespace ReallifeGamemode.Server.Inventory.Items { - class Chips : FoodItem + internal class Chips : ConsumableItem { public override int Id => 100; public override string Name => "Chips"; public override string Description => "Eine tüte Chips"; - public override int Gewicht => 10; + public override int Gewicht => 180; public override string Einheit => "g"; - public override int HpAmount => 10; + public override int HpAmount => 5; public override uint Object => 2240524752; - public override int Price => 20; + public override int Price => 5; + + public override float Cooldown => 3500; + + public override void Consume(UserItem uItem) + { + Player player = uItem.GetUser().Player; + + int amountToAdd = HpAmount; + if (player.Health + amountToAdd > 100) + { + amountToAdd = 100 - player.Health; + } + + 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 e5820c37..a396a079 100644 --- a/ReallifeGamemode.Server/Inventory/Items/Cocain.cs +++ b/ReallifeGamemode.Server/Inventory/Items/Cocain.cs @@ -1,4 +1,6 @@ -/** +using ReallifeGamemode.Database.Entities; + +/** * @overview Life of German Reallife - Inventory Items Chickenburger (Chickenburger.cs) * @author VegaZ * @copyright (c) 2008 - 2018 Life of German @@ -6,15 +8,22 @@ namespace ReallifeGamemode.Server.Inventory.Items { - public class Cocain : FoodItem + public class Cocain : ConsumableItem { public override int Id => 31; - public override string Name => "Kosks"; + public override string Name => "Koks"; public override string Description => "Rave"; - public override int Gewicht => 50; + public override int Gewicht => 2; public override string Einheit => "g"; - public override int HpAmount => 25; + public override int HpAmount => -5; public override uint Object => 2240524752; public override int Price => 0; + + public override float Cooldown => throw new System.NotImplementedException(); + + public override void Consume(UserItem uItem) + { + //nothing + } } } diff --git a/ReallifeGamemode.Server/Inventory/Items/FoodItem.cs b/ReallifeGamemode.Server/Inventory/Items/ConsumableItem.cs similarity index 55% rename from ReallifeGamemode.Server/Inventory/Items/FoodItem.cs rename to ReallifeGamemode.Server/Inventory/Items/ConsumableItem.cs index 03073fb5..5c0d202b 100644 --- a/ReallifeGamemode.Server/Inventory/Items/FoodItem.cs +++ b/ReallifeGamemode.Server/Inventory/Items/ConsumableItem.cs @@ -6,7 +6,7 @@ using ReallifeGamemode.Server.Managers; namespace ReallifeGamemode.Server.Inventory.Items { - public abstract class FoodItem : IUsableItem + public abstract class ConsumableItem : IUsableItem { public abstract int HpAmount { get; } public abstract int Id { get; } @@ -16,20 +16,21 @@ namespace ReallifeGamemode.Server.Inventory.Items public abstract string Einheit { get; } public abstract uint Object { get; } public abstract int Price { get; } + public abstract float Cooldown { get; } - public void Use(UserItem uItem) + public abstract void Consume(UserItem uItem); + + public bool Use(UserItem uItem) { - Player player = uItem.GetUser().Player; - - int amountToAdd = HpAmount; - if (player.Health + amountToAdd > 100) + User user = uItem.GetUser(); + if (user.Player.IsLoggedIn() && InventoryManager.itemCooldown.ContainsKey(user.Player)) { - amountToAdd = 100 - player.Health; + uItem.GetUser().Player.TriggerEvent("Error", "Du kannst dieses Item nicht benutzen."); + return false; } - player.SafeSetHealth(player.Health + amountToAdd); - player.SendNotification("Du hast ein/einen ~y~" + InventoryManager.GetItemById(uItem.ItemId).Name + " ~s~gegessen.", false); - InventoryManager.RemoveUserItem(player.GetUser(), uItem, 1); + Consume(uItem); + return true; } } } diff --git a/ReallifeGamemode.Server/Inventory/Items/UseItem.cs b/ReallifeGamemode.Server/Inventory/Items/UseItem.cs index 79035941..17368808 100644 --- a/ReallifeGamemode.Server/Inventory/Items/UseItem.cs +++ b/ReallifeGamemode.Server/Inventory/Items/UseItem.cs @@ -20,13 +20,13 @@ namespace ReallifeGamemode.Server.Inventory.Items public abstract uint Object { get; } public abstract int Price { get; } - public void Use(UserItem uItem) + public bool Use(UserItem uItem) { Player player = uItem.GetUser().Player; if (uItem.ItemId != 200) { - return; + return false; } Random random = new Random(); int randomNumber = random.Next(1, 5); @@ -47,6 +47,7 @@ namespace ReallifeGamemode.Server.Inventory.Items } 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/Job/RefuseCollectorJob.cs b/ReallifeGamemode.Server/Job/RefuseCollectorJob.cs index b970da03..12a751f7 100644 --- a/ReallifeGamemode.Server/Job/RefuseCollectorJob.cs +++ b/ReallifeGamemode.Server/Job/RefuseCollectorJob.cs @@ -180,7 +180,6 @@ namespace ReallifeGamemode.Server.Job public void MuellmannJobBeenden(Player player) { - JobBase job = JobManager.GetJob(player.GetUser().JobId ?? -1); player.TriggerEvent("SERVER:MuellmannStatusFalse"); player.TriggerEvent("SERVER:MuellmannBCSEntfernen"); diff --git a/ReallifeGamemode.Server/Managers/InventoryManager.cs b/ReallifeGamemode.Server/Managers/InventoryManager.cs index a32291c9..4b27be4a 100644 --- a/ReallifeGamemode.Server/Managers/InventoryManager.cs +++ b/ReallifeGamemode.Server/Managers/InventoryManager.cs @@ -33,6 +33,9 @@ namespace ReallifeGamemode.Server.Managers public static Dictionary> backpackItems { get; set; } = new Dictionary>(); public static Dictionary> vehicleItems { get; set; } = new Dictionary>(); + + public static Dictionary itemCooldown = new Dictionary(); + private static Timer aTimer; public class InventoryItem @@ -528,10 +531,12 @@ namespace ReallifeGamemode.Server.Managers if (iItem is IUsableItem usableItemObj) { - usableItemObj.Use(fItem); - List items = backpackItems[player]; - player.SetSharedData("backpackItems", JsonConvert.SerializeObject(items.ToArray())); - player.TriggerEvent("aproveUse", 1, iItem.Name); + if (usableItemObj.Use(fItem)) + { + List items = backpackItems[player]; + player.SetSharedData("backpackItems", JsonConvert.SerializeObject(items.ToArray())); + player.TriggerEvent("aproveUse", 1, iItem.Name); + } } else player.TriggerEvent("Error", "Du kannst dieses Item nicht benutzen."); break; diff --git a/ReallifeGamemode.Server/Managers/JobManager.cs b/ReallifeGamemode.Server/Managers/JobManager.cs index d6273e28..6636bcf5 100644 --- a/ReallifeGamemode.Server/Managers/JobManager.cs +++ b/ReallifeGamemode.Server/Managers/JobManager.cs @@ -168,75 +168,6 @@ namespace ReallifeGamemode.Server.Managers job.StartJobEndTimer(player); } - public void PlayerTimer_Elapsed(Player player, Vehicle veh) - { - NAPI.Task.Run(() => - { - //Vehicle LastVehicle = player.GetData("LastVehicle"); - Vehicle LastVehicle = veh; - JobBase job = GetJob(player?.GetUser()?.JobId ?? -1); - if (LastVehicle == null || job == null) - { - return; - } - - if (LastVehicle.GetServerVehicle() is JobVehicle vehJ) - { - if (LastVehicle.GetData("timerJobVehicleRespawn") == true) - { - if (vehJ.GetJob().GetUsersInJob().Contains(player)) - { - if (LastVehicle != null) - { - if (job.Id != 2) //Müllman Handelt Fahrzeug respawn eigenständig - { - LastVehicle.ResetData("timerJobVehicleRespawn"); - ServerVehicle sVeh = VehicleManager.GetServerVehicleFromVehicle(LastVehicle); - ServerVehicleExtensions.Spawn(sVeh, LastVehicle); - } - - job.StopJob(player); - ChatService.SendMessage(player, $"~y~[JOB]~s~ Du hast deinen Job ~o~{job.Name}~s~ beendet."); - CheckPointHandle.DeleteCheckpoints(player); - if (!player.HasData("isDead") || player.GetData("isDead") == false) - { - if (player.GetUser().JobId == 1)//Taxifahrer - { - player.TriggerEvent("CLIENT:stopFare"); - player.SafeTeleport(new Vector3(-628.598388671875, -2107.609130859375, 6.072586536407471)); - player.Heading = (-171.50303649902344f); - } - if (player.GetUser().JobId == 2)//Müllmann - { - player.SafeTeleport(new Vector3(485.4114685058594, -2173.25, 5.918273448944092)); - player.Heading = (-15.922085762023926f); - } - if (player.GetUser().JobId == 3)//Pilot - { - if (!player.HasData("PilotenBase") || player.GetData("PilotenBase") == 1) //Sandyshores - { - player.SafeTeleport(new Vector3(1707.2711181640625, 3276.216064453125, 41.155494689941406)); - player.Heading = (-154.65234375f); - } - if (player.HasData("PilotenBase") && player.GetData("PilotenBase") == 2) //LS Airport - { - player.SafeTeleport(new Vector3(-1622.48, -3151.58, 13)); - player.Heading = (48.44f); - } - } - if (player.GetUser().JobId == 4)//Busfahrer - { - player.SafeTeleport(new Vector3(-535.46, -2144.97, 5.95)); - player.Heading = (57.03f); - } - } - } - } - } - } - }); - } - [RemoteEvent("CLIENT:Job_StopJob")] public void StopJob(Player player) { diff --git a/ReallifeGamemode.Server/Util/PlayerTimer.cs b/ReallifeGamemode.Server/Util/PlayerTimer.cs index c0ba1bc1..b84c1526 100644 --- a/ReallifeGamemode.Server/Util/PlayerTimer.cs +++ b/ReallifeGamemode.Server/Util/PlayerTimer.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Text; using System.Timers; using GTANetworkAPI; +using ReallifeGamemode.Server.Inventory.Interfaces; namespace ReallifeGamemode.Server.Util { @@ -10,9 +11,12 @@ namespace ReallifeGamemode.Server.Util { private readonly Player player; private readonly Vehicle veh; + private readonly IUsableItem usableItem; private readonly Timer timer; + public readonly DateTime startTime; public delegate void PlayerTimerElapsed(Player player, Vehicle veh); + public event PlayerTimerElapsed Elapsed; public PlayerTimer(Player player, Vehicle veh = null, int milliseconds = 1000) @@ -25,6 +29,17 @@ namespace ReallifeGamemode.Server.Util this.timer.Start(); } + public PlayerTimer(Player player, IUsableItem usableItem, int milliseconds = 1000) + { + this.player = player; + this.usableItem = usableItem; + this.startTime = DateTime.Now; + + this.timer = new Timer(milliseconds); + this.timer.Elapsed += Timer_Elapsed; + this.timer.Start(); + } + private void Timer_Elapsed(object sender, ElapsedEventArgs e) { Elapsed?.Invoke(player, veh);