Ir para conteúdo

Sistema de cooldown


zToodi

Posts Recomendados

Vi um sistema de cooldown e resolvi utilizar porém está com um atraso...

Setei pra mostrar durante 30 segundos uma certa mensagem pra todos jogadores porém 

quando digito o comando ele demora 1 segundo para mostrar a mensagem, e quando chega no

final da contagem ele se adianta 1 segundo.

ex:

era pra começar a contar do 30 e descer até o 1, quando chegasse no 1 iria executar algum evento

porém ele começa no 31 e executa o evento no 2.

SISTEMA QUE UTILIZEI:

image.png.423fc24db532c84ddf8730c15312fff7.png

Link para o comentário
Compartilhar em outros sites

3 minutos atrás, zToodi disse:

Vi um sistema de cooldown e resolvi utilizar porém está com um atraso...

Setei pra mostrar durante 30 segundos uma certa mensagem pra todos jogadores porém 

quando digito o comando ele demora 1 segundo para mostrar a mensagem, e quando chega no

final da contagem ele se adianta 1 segundo.

ex:

era pra começar a contar do 30 e descer até o 1, quando chegasse no 1 iria executar algum evento

porém ele começa no 31 e executa o evento no 2.

SISTEMA QUE UTILIZEI:

image.png.423fc24db532c84ddf8730c15312fff7.png

no runTaskTime(Main.getPlugin(Main.class), 20, 20
 

coloca assim:

runTaskTime(Main.getPlugin(Main.class), 20, 30*20

 

me fale se vai funcionar.

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

5 minutos atrás, zToodi disse:

Vi um sistema de cooldown e resolvi utilizar porém está com um atraso...

Setei pra mostrar durante 30 segundos uma certa mensagem pra todos jogadores porém 

quando digito o comando ele demora 1 segundo para mostrar a mensagem, e quando chega no

final da contagem ele se adianta 1 segundo.

ex:

era pra começar a contar do 30 e descer até o 1, quando chegasse no 1 iria executar algum evento

porém ele começa no 31 e executa o evento no 2.

SISTEMA QUE UTILIZEI:

image.png.423fc24db532c84ddf8730c15312fff7.png

cara acho que tem um erro no seu codigo, no 

cmd.equalsignorecase("/sistema"), tira essa / e deixa so a palavra o plugin ja entende que e comando.Mas caso queria que seja //sistema fica a seu critério.
 

Link para o comentário
Compartilhar em outros sites

1 minuto atrás, Breniim disse:

cara acho que tem um erro no seu codigo, no 

cmd.equalsignorecase("/sistema"), tira essa / e deixa so a palavra o plugin ja entende que e comando.Mas caso queria que seja //sistema fica a seu critério.
 

Lógico que não ;=; kkkkkkkkk wtf

Link para o comentário
Compartilhar em outros sites

1 minuto atrás, Breniim disse:

cara acho que tem um erro no seu codigo, no 

cmd.equalsignorecase("/sistema"), tira essa / e deixa so a palavra o plugin ja entende que e comando.Mas caso queria que seja //sistema fica a seu critério.
 

Na verdade está certo, pois estou usando e.getMessage(): pra pegar a mensagem então seria correto por o /

Link para o comentário
Compartilhar em outros sites

6 minutos atrás, Breniim disse:

no runTaskTime(Main.getPlugin(Main.class), 20, 20
 

coloca assim:

runTaskTime(Main.getPlugin(Main.class), 20, 30*20

 

me fale se vai funcionar.

Fiz oque disse, e agora está demorando 30 segundos para enviar cada mensagem...

Link para o comentário
Compartilhar em outros sites

Map<String, Integer> time = new HashMap<>();

 

time.put(p.getName, 30);

int seconds = time.get(p.getName);

 

if (seconds > 1) {

    for (Player x : Bukkit.getOnlinePlayers()) {

        x.sendMessage("§eO sistema iniciará em §f" + seconds  - 1 + "§e segundos.");
    } else {

    new BukkitRunnable() {
        @Override
        public void run() {
            p.kickPlayer("sistema.");
        }
    }.runTask(Main.class());

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

12 minutos atrás, HeyStone disse:

Fiz o código a mão, caso dê erro provavelmente é por questão de espaço ou por erro de ortografia.

Fiz como disse:

 

image.png.7c9a5466760633bf06e951c5c8e129f1.png

porém só aparece a mensagem de 30 segundos, depois não acontece nada...

Link para o comentário
Compartilhar em outros sites

Fui dar uma estudada, e lá vamos nós aqui de novo...

Tente:

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

long secondsLeft = ((cooldown.get(p.getName()) / 1000) + cooldowntime) - (System.currentTimeMillis() / 1000);

// Dentro da runnable

if (cooldown.containsKey(p.getName())) {

    if (secondsLeft > 0) {

        for (Player x : Bukkit.getOnlinePlayers()) {
            x.sendMessage("system started");

        }

    }
    if (secondsLeft == 30) {
        p.kickPlayer("system");
    }

 

OBS: quando o cara executar o comando dá put nele.

EX: cooldown.put(p.getName(), System.currentTimeMillis());

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

Resolvi seu problema codigo aki em baixo

 

   public boolean onCommand(CommandSender sender, Command cmd, String arg2, String[] args) {
        Player p = (Player)sender;
        if(cmd.getName().equalsIgnoreCase("sistema") || cmd.getName().equalsIgnoreCase("system")) {
            if(p.hasPermission("recarregar.staff")) {
                new BukkitRunnable() {
                    
                    @Override
                    public void run() {
                        int segundos = 30;
                        if(segundos >= 0) {
                            for(Player all : Bukkit.getOnlinePlayers()) {
                                all.sendMessage("§cServidor Reiniciando em §7" + segundos + " §cSegundos");
                            }
                            segundos--;
                        }
                        if(segundos == 0) {
                            p.kickPlayer("§cEsta Reiniciando");
                            this.cancel();
                        }
                        
                    }
                }.runTaskLater(Main.getPlugin(Main.class), 20);
            }else {
                p.sendMessage("§cNao permitido.");
            }
        }
        return false;
    }

 

Link para o comentário
Compartilhar em outros sites

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