Cooldown individuel
Voici le code pour créer un cooldown individuel :
// Dictionnaire pour stocker le dernier moment d'action du joueur
private Dictionary<string, DateTime> cooldowns = new Dictionary<string, DateTime>();
// Durée du cooldown en heures
private TimeSpan cooldownDuration = TimeSpan.FromHours(12);
// Vérifie si le joueur peut réaliser l'action en fonction du cooldown
private bool TryGetCooldown(Player player, out TimeSpan remainingTime)
{
if (cooldowns.TryGetValue(player.GetFullName(), out DateTime lastActionTime))
{
TimeSpan elapsedTime = DateTime.Now - lastActionTime;
if (elapsedTime < cooldownDuration)
{
remainingTime = cooldownDuration - elapsedTime;
return true;
}
}
remainingTime = TimeSpan.Zero;
return false;
}
// Met Ă jour le cooldown du joueur
private void UpdateCooldown(Player player)
{
cooldowns[player.GetFullName()] = DateTime.Now;
}
// Exemple d'utilisation pour vérifier si un joueur peut effectuer une action
public void PerformAction(Player player)
{
if (TryGetCooldown(player, out TimeSpan remainingTime))
{
player.Notify("Erreur", $"Vous devez encore attendre {remainingTime} avant de pouvoir réaliser cette action.", NotificationManager.Type.Error);
return;
}
UpdateCooldown(player);
// Code pour réaliser l'action...
player.Notify("Succès", "Vous avez effectué l'action avec succès.", NotificationManager.Type.Success);
}
Dernière mise à jour