Ir para conteúdo

Colocar Delay pra uma mensagem


Cassiano_14

Posts Recomendados

Olá, eu estou fazendo um plugin de sortear e gostaria de saber como faz para esperar 1 segundo entre envia uma mensagem e outra tipo: O sorteio irá começar em 5 segundos, 1 segundo depois O sorteio irá começar em 4 segundos assim segue alguem poderia me falar como fazer, ou enviar o código de exemplo

Link para o comentário
Compartilhar em outros sites

3 minutos atrás, MaxThon1365DEV disse:

				new BukkitRunnable() {
						
						@Override
						public void run() {
							Bukkit.broadcastMessage("Mensagem AKI");
							
						}                       //delay periodo
					}.runTaskTimer(Main.getplugin, 20*2, 5); //tempo que ira mandar a mensagem

 

Está gerando um flood no chat

Link para o comentário
Compartilhar em outros sites

new BukkitRunnable() {

		int chamadas = 5;	// Definindo a quantidade de chamadas, no caso em segundos.

		@Override
		public void run() {

			if(chamadas > 0) {	// Conferindo se ainda restam chamadas a se fazer
				Bukkit.broadcastMessage("§aO sorteio começará em " + chamadas + " segundos");	// Mandando a mensagem do sorteio
				chamadas--;	// Diminuindo uma chamada
			}
			if(chamadas == 0) {	// Caso as chamadas tenham se encerrado (chegado a 0)
				this.cancel(); // Cancela o task, ou seja, não vai mais contar.
				// Aqui você pode colocar o método que será executado quando a contagem for encerrada
			}
							
		}
	}.runTaskTimer(Main.getPlugin(Main.class), 20, 20);

Veja se funciona, fiz aqui pelo fórum mesmo.

Qualquer erro contate-me

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

2 minutos atrás, Ygor disse:

new BukkitRunnable() {
		int chamadas = 5;
		@Override
		public void run() {
			if(chamadas > 0) {
			Bukkit.broadcastMessage("§aO sorteio começará em " + chamadas + " segundos");
				chamadas--;
			}
			if(chamadas == 0) {
				this.cancel();
			}
							
		}
	}.runTaskTimer(Main.getPlugin(Main.class), 20, 20);

Veja se funciona, fiz aqui pelo fórum mesmo.

Qualquer erro contate-me

obrigado vou testar, mas agora no momento eu não posso testar, assim que eu puder eu te respondo

Link para o comentário
Compartilhar em outros sites

Consegui

@EDIT 2

Mas quando vou executar novamente o comando ele não faz mais isso

@EDIT 3

Tinha colocado no lugar errado, até agora tudo certo.

22 horas atrás, Ygor disse:

new BukkitRunnable() {

		int chamadas = 5;	// Definindo a quantidade de chamadas, no caso em segundos.

		@Override
		public void run() {

			if(chamadas > 0) {	// Conferindo se ainda restam chamadas a se fazer
				Bukkit.broadcastMessage("§aO sorteio começará em " + chamadas + " segundos");	// Mandando a mensagem do sorteio
				chamadas--;	// Diminuindo uma chamada
			}
			if(chamadas == 0) {	// Caso as chamadas tenham se encerrado (chegado a 0)
				this.cancel(); // Cancela o task, ou seja, não vai mais contar.
				// Aqui você pode colocar o método que será executado quando a contagem for encerrada
			}
							
		}
	}.runTaskTimer(Main.getPlugin(Main.class), 20, 20);

Veja se funciona, fiz aqui pelo fórum mesmo.

Qualquer erro contate-me

Só mais uma duvida, como eu coloco pra quando já estiver executando o delay ele não poder executar o comando novamente?

@EDIT 5

Eu coloquei para dar 10 segundos e depois ir e depois aparecer o resto tPhCvAL.png só que como a imagem mostra ele está parando nos 9 segundos

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

1 hora atrás, Cassiano_14 disse:

Consegui

@EDIT 2

Mas quando vou executar novamente o comando ele não faz mais isso

@EDIT 3

Tinha colocado no lugar errado, até agora tudo certo.

Só mais uma duvida, como eu coloco pra quando já estiver executando o delay ele não poder executar o comando novamente?

@EDIT 5

Eu coloquei para dar 10 segundos e depois ir e depois aparecer o resto tPhCvAL.png só que como a imagem mostra ele está parando nos 9 segundos

Posta o código aqui, por favor

Link para o comentário
Compartilhar em outros sites

5 minutos atrás, Ygor disse:

Posta o código aqui, por favor

ta

Spoiler

 Random r = new Random();
                int num = r.nextInt(this.max - this.min + 1) + this.min;
                if (p.hasPermission("cassianoloteria.usar")) {
                    if (args.length >= 0) {
                        Bukkit.broadcastMessage("");
                        Bukkit.broadcastMessage("§aO Sorteio de " + num + " coins");
                        Bukkit.broadcastMessage("§aIrá começar em 10 segundos");
                        Bukkit.broadcastMessage("");
                        new BukkitRunnable() {

                            int inicia = 1;
                            int chamadas = 9;

                            @Override
                            public void run() {
                                if (inicia > 0) {
                                    inicia--;
                                }
                                if (inicia == 0) {
                                    this.cancel();
                                    if(chamadas > 0) {
                                        if(chamadas > 1) {
                                            Bukkit.broadcastMessage("§aO Sorteio de Dinheiro irá começar em " + chamadas + " segundos.");
                                            chamadas--;
                                        }
                                        if (chamadas == 1) {
                                            Bukkit.broadcastMessage("§aO Sorteio de Dinheiro irá começar em  "
                                                    + chamadas + " segundo.");
                                            chamadas--;
                                        }
                                    }
                                    if(chamadas == 0) {
                                        this.cancel();
                                        Bukkit.broadcastMessage(
                                                "§aO Jogador " + rp.getName() + " foi o escolhido para");
                                        Bukkit.broadcastMessage("§ao sorteio de " + num + " §acoins");
                                        Bukkit.broadcastMessage("message");
                                    }
                                }
                            }
                        }.runTaskTimer(Main.getPlugin(Main.class), 20, 20);

                    }

 

 

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

if (inicia > 0) {
                                     inicia--;
                                 }
                                 if (inicia == 0) {
                                     this.cancel();
                                     if(chamadas > 0) {

Você verifica se inicia é maior que 0, caso não for, você diminui um.

Ele executa o código

Já na próxima vez, a variável inicia vai ser -1, então não vai executar o método de chamadas.

É aí que você está errando.

Link para o comentário
Compartilhar em outros sites

2 minutos atrás, Ygor disse:

if (inicia > 0) {
                                     inicia--;
                                 }
                                 if (inicia == 0) {
                                     this.cancel();
                                     if(chamadas > 0) {

Você verifica se inicia é maior que 0, caso não for, você diminui um.

Ele executa o código

Já na próxima vez, a variável inicia vai ser -1, então não vai executar o método de chamadas.

É aí que você está errando.

Mas ele para no 9

Link para o comentário
Compartilhar em outros sites

2 minutos atrás, Cassiano_14 disse:

Mas ele para no 9

Exatamente, amigo.

Você está cancelando o task quando o inicia é igual a zero.

Então ele só roda uma vez, ou seja, só diminui um.

Outra coisa, poderia me explicar para que serve o "inicia"?

Tente retirar o this.cancel() do inicia.

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

5 minutos atrás, Ygor disse:

Exatamente, amigo.

Você está cancelando o task quando o inicia é igual a zero.

Então ele só roda uma vez, ou seja, só diminui um.

Outra coisa, poderia me explicar para que serve o "inicia"?

É porque eu quero colocar assim SyjHdU2.png

Quero colocar esse espaço, e se não tiver isso sai

O Sorteio de x  coins

Irá começar em 15 segundos

depois Irá começar em 10 segundos

sem espaço

Mas eu quero que de um espaço entre o inicio e o fim da mensagem

5 minutos atrás, Ygor disse:

Exatamente, amigo.

Você está cancelando o task quando o inicia é igual a zero.

Então ele só roda uma vez, ou seja, só diminui um.

Outra coisa, poderia me explicar para que serve o "inicia"?

Tente retirar o this.cancel() do inicia.

Vlw funcionou

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

1 minuto atrás, Cassiano_14 disse:

É porque eu quero colocar assim SyjHdU2.png

Quero colocar esse espaço, e se não tiver isso sai

O Sorteio de x  coins

Irá começar em 15 segundos

depois Irá começar em 10 segundos

sem espaço

Mas eu quero que de um espaço entre o inicio e o fim da mensagem

Então você quer que só apareçam as mensagems do anúncio quando a contagem chegar em 15 e 10 segundos? É isto? Se for assim que faço um código que verifica e mando para você.

Link para o comentário
Compartilhar em outros sites

1 minuto atrás, Ygor disse:

Então você quer que só apareçam as mensagems do anúncio quando a contagem chegar em 15 e 10 segundos? É isto? Se for assim que faço um código que verifica e mando para você.

Já consegui, mais uma duvida, como colocar som no plugin?

Link para o comentário
Compartilhar em outros sites

6 minutos atrás, Cassiano_14 disse:

Já consegui, mais uma duvida, como colocar som no plugin?

player.playSound(player.getLocation(), Sound.SOM, 10, 10);

Você pode usar CTRL + ESPAÇO no método para ver os sons.

Abraço.

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

35 minutos atrás, Ygor disse:

player.playSound(player.getLocation(), Sound.SOM, 10, 10);

Você pode usar CTRL + ESPAÇO no método para ver os sons.

Abraço.

Eu consegui usando

for (Player onp:Bukkit.getOnlinePlayers()) {
                                                onp.playSound(onp.getLocation(), Sound.ORB_PICKUP, 10, 10);

 

mas vlw, Abraço.

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

5 minutos atrás, Ygor disse:

Faça um for


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

	all.playSound(all.getLocation(), Sound.SOM, 10, 10);

}

 

vlw, to com um erro não sei porque, mas ta dando 1 segundo e ja a mensagem juntas

aqui http://prntscr.com/kpufec

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

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