Change Items , add Cooldown

This commit is contained in:
2021-04-13 20:30:02 +02:00
parent 182accea22
commit 5e4d5b1ece
29 changed files with 263 additions and 75 deletions

View File

@@ -1,8 +1,10 @@
using GTANetworkAPI;
using System;
using GTANetworkAPI;
using ReallifeGamemode.Database.Entities;
using ReallifeGamemode.Server.Extensions;
using ReallifeGamemode.Server.Inventory.Interfaces;
using ReallifeGamemode.Server.Managers;
using ReallifeGamemode.Server.Util;
namespace ReallifeGamemode.Server.Inventory.Items
{
@@ -23,14 +25,36 @@ namespace ReallifeGamemode.Server.Inventory.Items
public bool Use(UserItem uItem)
{
User user = uItem.GetUser();
if (user.Player.IsLoggedIn() && InventoryManager.itemCooldown.ContainsKey(user.Player))
if (user.Player == null || !user.Player.IsLoggedIn())
return false;
if (InventoryManager.itemCooldown.ContainsKey(user.Player))
{
uItem.GetUser().Player.TriggerEvent("Error", "Du kannst dieses Item nicht benutzen.");
PlayerTimer timer = InventoryManager.itemCooldown[user.Player];
int timeToNextUse = (int)(timer.startTime - DateTime.Now).TotalSeconds;
uItem.GetUser().Player.TriggerEvent("Error", $"Versuche es nach {timeToNextUse} Sekunden erneut.");
return false;
}
PlayerTimer playerTimer = new PlayerTimer(user.Player, this, Cooldown);
playerTimer.Elapsed += _CooldownElapse;
InventoryManager.itemCooldown.Add(user.Player, playerTimer);
Consume(uItem);
return true;
}
private void _CooldownElapse(Player player, dynamic usableItem)
{
NAPI.Task.Run(() =>
{
if (player == null || !player.IsLoggedIn())
return;
if (!InventoryManager.itemCooldown.ContainsKey(player))
return;
InventoryManager.itemCooldown[player].Stop();
InventoryManager.itemCooldown.Remove(player);
});
}
}
}