Ir para conteúdo
  • 0

Cooldown não está pegando


FelipeDye

Pergunta

Bom, um amigo meu chamado Luccas me fez um plugin de cooldown, porém não está funcionando o sistema de cooldown de 24h, alguem poderia me ajudar? Resolvendo o problema?


 


SRC:


https://www.dropbox.com/s/wjxfsdyastds9g1/LuccasRECOMPENSA.zip?dl=0


 


 


 


Print Quando dou /recompensa:


http://prntscr.com/gdlvvx


Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

Acabei de decompilar aqui e..

	@Override
	public boolean onCommand(CommandSender sender, Command arg1, String label, String[] args) {
		if (!(sender instanceof Player)) {
			sender.sendMessage(" §cVoce Não é um player!");
			return true;
		}
		Player p = (Player)sender;
		p.sendMessage("");
		p.sendMessage("§a§l  RECOMPENSA");
		p.sendMessage("");
		p.sendMessage("§a* §7Você pegou uma recompensa!");
		p.sendMessage("§a* §7Tempo pra pegar novamente: " + CooldownAPI.haveCooldown);
		p.sendMessage("");
		Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "crates give " + p.getName() + " básica 1");
		return false;
	}
	
	
	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);
	
	}

Isso me deu vontade de rir.

1º que você nunca adiciona cooldown nele, ele criou um comand que manda msg e executa um /crates give.. não adiciona cooldown nenhum.

2º memso que adicionasse cooldown, o cooldown seria removido em 1 nanosegundo .-.

int realcooldown = cooldown * 160;
haveCooldown.put(name, realcooldown);
while (realcooldown > 0) {
	realcooldown--;
}
if (realcooldown == 0) {
	haveCooldown.remove(name);
}

Não sei quem fez isso dae, mas deve pensar que o java é lerdo e só é "executado" a cada segundo slá, nem sei o que deu para colocar o * 160 lá.. mesmo que colocasse cooldown de 1 dia, ele terminaria em menos de 1 segundo.

3º que ele nem salva em lugar nenhum.. dá /rl que já era

 

@Edit

Cooldown é o que é mais pedido nesse forum, só precisa isso

@Override
public boolean onCommand(CommandSender sender, Command arg1, String label, String[] args) {
		if (!(sender instanceof Player)) {
			sender.sendMessage(" §cVoce Não é um player!");
			return true;
		}

                Player p = (Player)sender;

                if(!p.hasPermission("plugin.bypass")) {
                        Long delay = TimeUnit.MINUTES.toMillis(5); // 5 minutos
                        if (cooldown.keySet().contains(p.getName().toLowerCase())) {
                                if (cooldown.get(p.getName().toLowerCase()) > System.currentTimeMillis()) {
                                        p.sendMessage("Está em cooldown, aguarde " TimeUnit.MILLIS.toMinutes(cooldown.get(p.getName().toLowerCase()) - System.currentTimeMillis()));
                                        return;
                                }
                                cooldown.put(p.getName().toLowerCase(), System.currentTimeMillis() + delay);
                        }
                        cooldown.put(p.getName().toLowerCase(), System.currentTimeMillis() + delay);
                }

		p.sendMessage("");
		p.sendMessage("§a§l  RECOMPENSA");
		p.sendMessage("");
		p.sendMessage("§a§l §7Você pegou uma recompensa!");
		p.sendMessage("");
		Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "crates give " + p.getName() + " básica 1");
		return false;
	}

private HashMap<String, Long> cooldown = new HashMap<>();

E algo para salvar a hashmap em algum lugar.

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

Acabei de decompilar aqui e..

	@Override
	public boolean onCommand(CommandSender sender, Command arg1, String label, String[] args) {
		if (!(sender instanceof Player)) {
			sender.sendMessage(" §cVoce Não é um player!");
			return true;
		}
		Player p = (Player)sender;
		p.sendMessage("");
		p.sendMessage("§a§l  RECOMPENSA");
		p.sendMessage("");
		p.sendMessage("§a* §7Você pegou uma recompensa!");
		p.sendMessage("§a* §7Tempo pra pegar novamente: " + CooldownAPI.haveCooldown);
		p.sendMessage("");
		Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "crates give " + p.getName() + " básica 1");
		return false;
	}
	
	
	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);
	
	}

Isso me deu vontade de rir.

1º que você nunca adiciona cooldown nele, ele criou um comand que manda msg e executa um /crates give.. não adiciona cooldown nenhum.

2º memso que adicionasse cooldown, o cooldown seria removido em 1 nanosegundo .-.

int realcooldown = cooldown * 160;
haveCooldown.put(name, realcooldown);
while (realcooldown > 0) {
	realcooldown--;
}
if (realcooldown == 0) {
	haveCooldown.remove(name);
}

Não sei quem fez isso dae, mas deve pensar que o java é lerdo e só é "executado" a cada segundo slá, nem sei o que deu para colocar o * 160 lá.. mesmo que colocasse cooldown de 1 dia, ele terminaria em menos de 1 segundo.

3º que ele nem salva em lugar nenhum.. dá /rl que já era

 

@Edit

Cooldown é o que é mais pedido nesse forum, só precisa isso

@Override
public boolean onCommand(CommandSender sender, Command arg1, String label, String[] args) {
		if (!(sender instanceof Player)) {
			sender.sendMessage(" §cVoce Não é um player!");
			return true;
		}

                Player p = (Player)sender;

                if(!p.hasPermission("plugin.bypass")) {
                        Long delay = TimeUnit.MINUTES.toMillis(5); // 5 minutos
                        if (cooldown.keySet().contains(p.getName().toLowerCase())) {
                                if (cooldown.get(p.getName().toLowerCase()) > System.currentTimeMillis()) {
                                        p.sendMessage("Está em cooldown, aguarde " TimeUnit.MILLIS.toMinutes(cooldown.get(p.getName().toLowerCase()) - System.currentTimeMillis()));
                                        return;
                                }
                                cooldown.put(p.getName().toLowerCase(), System.currentTimeMillis() + delay);
                        }
                        cooldown.put(p.getName().toLowerCase(), System.currentTimeMillis() + delay);
                }

		p.sendMessage("");
		p.sendMessage("§a§l  RECOMPENSA");
		p.sendMessage("");
		p.sendMessage("§a§l §7Você pegou uma recompensa!");
		p.sendMessage("");
		Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "crates give " + p.getName() + " básica 1");
		return false;
	}

private HashMap<String, Long> cooldown = new HashMap<>();

E algo para salvar a hashmap em algum lugar.

 

Obrigado mano, se é foda... rsrsr

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...