Ir para conteúdo
  • 0

[Resolvido] Scheduler


Dery

Pergunta

Como posso fazer um Scheduler para quando um player fizer algo mandar uma mensagem para ele e mandar a mesma mensagem depois de *tal* segundos?

 

Tipo:

O player se move e manda uma mensagem:

"Voce se moveu :)"

E depois de *tal* segundos a mensagem é mandada ao player novamente?

Link para o comentário
Compartilhar em outros sites

20 respostass a esta questão

Posts Recomendados

Guest zCouDray


String teste = "teste";

p.sendMessage(teste);

getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable() {

public void run() {

p.sendMessage(teste);

}

}

, quantidade de segundos depois -> 1 * 20);

 

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

String teste = "teste";
p.sendMessage(teste);
    getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
      public void run() {
       p.sendMessage(teste);
      }
    }
    ,  quantidade de segundos depois -> 1 * 20);

Mas assim ele irá esperar *tal* segundos para enviar a mensagem, eu quero que envie a mensagem no momento do evento e a mesma mensagem alguns segundos depois...

Link para o comentário
Compartilhar em outros sites

@EventHandler

public void onMove(PlayerMoveEvent e) {

final String mensagem="§bVoce se moveu :)";

int segundos=3;

final Player p=e.getPlayer();

 

p.sendMessage(mensagem);

Bukkit.getScheduler().scheduleAsyncDelayedTask(this, new Runnable() {

public void run() {

p.sendMessage(mensagem);

}

}, segundos*20);

}

Resolvido? Editado por BrineDev
Link para o comentário
Compartilhar em outros sites

Guest zCouDray

Mas assim ele irá esperar *tal* segundos para enviar a mensagem, eu quero que envie a mensagem no momento do evento e a mesma mensagem alguns segundos depois...

Mano você não sabe interpretar?

Link para o comentário
Compartilhar em outros sites

Eai?

 

3 dias se passaram...

Estava trabalhando em outro projeto e tinha esquecido deste tópico...

 

Vou testar agr, se funcionar marco como resolvido, caso não edito...

 

@Edit: Também não funcionou :(

@Edit 2: Esqueci de explicar melhor o caso, ele funciona da seguinte maneire:

Digamos que quando ele se move, envia uma mensagem "Oi, como vai você?", porém essa mensagem só é exibida novamente depois de *tals* segundos, e não ficar sendo exibida e exibida e exibida, floodando o chat....

Então ele envia a mensagem uma vez e só envia novamente depois desses segundos...

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

private List<String> players=new ArrayList<String>();

@EventHandler
public void onMove(PlayerMoveEvent e) {
   int segundos=3;
   final String p=e.getPlayer().getName();
   if (players.contains(p)) return;
   e.getPlayer().sendMessage("§bVoce se moveu :D");

   p.sendMessage(mensagem);
   Bukkit.getScheduler().scheduleAsyncDelayedTask(this, new Runnable() {
      public void run() {
         players.remove(p);
      }
   }, segundos*20);
}

Resolvido?

 

Da próxima vez, explique melhor o pedido, o texto não tem nada a ver com o que você realmente quer

Link para o comentário
Compartilhar em outros sites

private List<String> players=new ArrayList<String>();

@EventHandler
public void onMove(PlayerMoveEvent e) {
   int segundos=3;
   final String p=e.getPlayer().getName();
   if (players.contains(p)) return;
   e.getPlayer().sendMessage("§bVoce se moveu :D");

   p.sendMessage(mensagem);
   Bukkit.getScheduler().scheduleAsyncDelayedTask(this, new Runnable() {
      public void run() {
         players.remove(p);
      }
   }, segundos*20);
}

Resolvido?

 

Da próxima vez, explique melhor o pedido, o texto não tem nada a ver com o que você realmente quer

 

Não, ele ainda continua floodando o chat...

Link para o comentário
Compartilhar em outros sites

Não, ele ainda continua floodando o chat...

Desculpe, erro meu kk

private List<String> players=new ArrayList<String>();

@EventHandler
public void onMove(PlayerMoveEvent e) {
   int segundos=3;
   final String p=e.getPlayer().getName();
   if (players.contains(p)) return;
   players.add(p);
   e.getPlayer().sendMessage("§bVoce se moveu :D");

   p.sendMessage(mensagem);
   Bukkit.getScheduler().scheduleAsyncDelayedTask(this, new Runnable() {
      public void run() {
         players.remove(p);
      }
   }, segundos*20);
}
Link para o comentário
Compartilhar em outros sites

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