Ir para conteúdo

Sistema de COOLDOWN


Jaoow

Posts Recomendados

A pedido de um jogador eu fiz esse pequeno e simples codigo

De como você criar um sistema de Cooldown para

comandos jogadores e kits como você deseja


O código esta a baixo:
 

	public static HashMap<String, Integer> haveCooldown = new HashMap<String, Integer>();

	// Digite o cooldown em minutos
	public static void addCooldown(String name, int cooldown) {

		// Caso queira remove o sistema de minutos coloque no lugar de: cooldown
		// * 160; apenas: cooldown
		// E sera em segundos!
		int realcooldown = cooldown * 160;
		haveCooldown.put(name, realcooldown);
		while (realcooldown > 0) {
			realcooldown--;
		}
		if (realcooldown == 0) {
			haveCooldown.remove(name);
		}
	}

	public static boolean inCooldown(String name) {
		return haveCooldown.containsKey(name);
	}

	public static void removeCooldown(String name) {
		haveCooldown.remove(name);
	

O codigo não foi testado pode haver erros!

 

 

Obrigado por ler
Caso tenha ajudando porfavor me avalie na GamersBoard


 

 

 

 

Link para o comentário
Compartilhar em outros sites

Então, para você 1 minuto é, 1 segundo * 160? e na verdade todos esses cooldown são de menos de 1 segundo.. o while não é executado de segundo em segundo.

Editado por zAth
Link para o comentário
Compartilhar em outros sites

Na verdade nem precisa de task, isso chega

	public static HashMap<String, Long> cooldowns = new HashMap<String, Long>();

	public static void addCooldown(String name, int cooldownSeconds) {
		haveCooldown.put(name.toLowerCase(), System.currentTimeMillis() + TimeUnit.SECONDS.toMillis(cooldownSeconds));
	}

	public static boolean inCooldown(String name) {
		return cooldowns.containsKey(name.toLowerCase()) && System.currentTimeMillis() < cooldowns.get(name.toLowerCase());
	}

        public static int getRemainingSeconds(String name) {
                if(!inCooldown(name)) return 0;
		return TimeUnit.MILLIS.toSeconds(cooldowns.get(name.toLowerCase()) - System.currentTimeMillis());
	}

mas como ainda está cursando java, vai aprendendo isso com a prática.

Editado por zAth
Link para o comentário
Compartilhar em outros sites

Na verdade nem precisa de task, isso chega

	public static HashMap<String, Long> cooldowns = new HashMap<String, Long>();

	public static void addCooldown(String name, int cooldownSeconds) {
		haveCooldown.put(name.toLowerCase(), System.currentTimeMillis() + TimeUnit.SECONDS.toMillis(cooldownSeconds));
	}

	public static boolean inCooldown(String name) {
		return cooldowns.containsKey(name.toLowerCase()) && System.currentTimeMillis() < cooldowns.get(name.toLowerCase());
	}

        public static int getRemainingSeconds(String name) {
                if(!inCooldown(name)) return 0;
		return TimeUnit.MILLIS.toSeconds(cooldowns.get(name.toLowerCase()) - System.currentTimeMillis());
	}

mas como ainda está cursando java, vai aprendendo isso com a prática.

era isso que ia falar tipo um scheduler correndo é meio inutil pra quem quer fazer dias de countdown '-/

Link para o comentário
Compartilhar em outros sites

Participe da Conversa

Você pode postar agora e se cadastrar mais tarde. Se você tiver uma conta, a class='ipsType_brandedLink' href='https://gamersboard.com.br/login/' data-ipsDialog data-ipsDialog-size='medium' data-ipsDialog-title='Sign In Now'>acesse agora para postar com sua conta.
Observação: sua postagem exigirá aprovação do moderador antes de ficar visível.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.

Processando...
×
×
  • Criar Novo...