Change Items , add Cooldown
This commit is contained in:
@@ -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);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user