Ir para conteúdo
  • 0

[Resolvido] Como criar um loop ?


xKiizame

Pergunta

Olá novamente, faz tempos e tempos que eu mexo com loops e gostaria de saber se existe um método para resolver esse "bug" de mostrar a mensagem mais do que a quantidade desejada.

 

Exemplo:

for(Player p : Bukkit.getOnlinePlayers()) {
    Bukkit.broadcastMessage("Oi " + p.getName() + "");
}

Até o momento ses não entenderam nada neh?

ai que tá.. se estiver 5 jogadores online a mensagem "Oi player" vai aparecer 5 vezes, se estiver 3 jogadores, a mensagem vai aparecer 3 vezes!

tenderam? como eu faço um loop sem ter esse probleminha ?

Link para o comentário
Compartilhar em outros sites

20 respostass a esta questão

Posts Recomendados

Cara voce ta viajando no quiabo , so voce fazer isso que manda para todos os players online !!

for(Player p : Bukkit.getOnlinePlayers()) {
    p.sendMessage("Oi " + p.getName() + "");
}
Link para o comentário
Compartilhar em outros sites

Voce tá usando broadcast, que já manda pro servidor inteiro.

Use -> p.sendMessage("Mensagem");

Não e isso '-'!

Eu to FALANDO que o loop faz a mensagem se repetir de acordo com a quantidade de jogadores!

Tipo tenho 3 jogadores no meu servidor, ai o loop manda a mensagem que está dentro 3 vezes tendeu?

Link para o comentário
Compartilhar em outros sites

Guest Mateus Demarchi
for(Player p : Bukkit.getOnlinePlayers()) {
    Bukkit.broadcastMessage("Oi " + p.getName() + "");
}

Seu próprio código já faz isso.

 

getOnlinePlayers é um Collections com todos os players que estão online no servidor.

Link para o comentário
Compartilhar em outros sites

for(Player p : Bukkit.getOnlinePlayers()) {
    Bukkit.broadcastMessage("Oi " + p.getName() + "");
}

Seu próprio código já faz isso.

 

getOnlinePlayers é um Collections com todos os players que estão online no servidor.

 

quer dizer que a mensagem vai se repetir de acordo com a quantidade de jogadores? wft

Link para o comentário
Compartilhar em outros sites

Não e isso '-'!

Eu to FALANDO que o loop faz a mensagem se repetir de acordo com a quantidade de jogadores!

Tipo tenho 3 jogadores no meu servidor, ai o loop manda a mensagem que está dentro 3 vezes tendeu?

Que? Voce qr mandar 1 mensagem pra todos os jogadores ou o que? Quantas vezes voce qr que essa mensagem seja enviada? Se quiser uma quantidade diferente, faça um for loop com int

O loop que voce fez faz ele rodar x vezes, sendo x o numero de jogadores online.

Não parece que você usa muito loop '-' (off)

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

Guest zCouDray

Como o nome diz é um Loop, tudo que estiver dentro será executado quantas vezes ele for rodado, tente usar o p.sendMessage para que só mostre para o jogador atual..

Link para o comentário
Compartilhar em outros sites

Guest Mateus Demarchi

quer dizer que a mensagem vai se repetir de acordo com a quantidade de jogadores? wft

 

Sim se tiver 100 player vai mandar oi + nome do player pra esses 100 player no teu servidor, simples não?.

Link para o comentário
Compartilhar em outros sites

Como o nome diz é um Loop, tudo que estiver dentro será executado quantas vezes ele for rodado, tente usar o p.sendMessage para que só mostre para o jogador atual..

Já usei p.sendMessage, e a mensagem continua sendo enviada de acordo com a quantidade de jogadores.

 

 

Que? Voce qr mandar 1 mensagem pra todos os jogadores ou o que? Quantas vezes voce qr que essa mensagem seja enviada? Se quiser uma quantidade diferente, faça um for loop com int

O loop que voce fez faz ele rodar x vezes, sendo x o numero de jogadores online.

Não parece que você usa muito loop '-' (off)

você não ta sacando '-'

o loop tá mandando a mensagem de acordo com a quantidade de jogadores, ou seja se tem 3 jogadores online ela manda 3 mensagens repetidas '-', eu to querendo colocar para mandar apenas 1. (Resolver esse problema do LOOP)

Link para o comentário
Compartilhar em outros sites

Guest Mateus Demarchi

Já usei p.sendMessage, e a mensagem continua sendo enviada de acordo com a quantidade de jogadores.

 

 

você não ta sacando '-'

o loop tá mandando a mensagem de acordo com a quantidade de jogadores, ou seja se tem 3 jogadores online ela manda 3 mensagens repetidas '-', eu to querendo colocar para mandar apenas 1. (Resolver esse problema do LOOP)

 

Java 8;

Bukkit
    .getOnlinePlayers()
    .stream()
    .filter(p -> p.getName().equals("noob"))
    .forEach(p -> p.sendMessage("seu noob"));
Link para o comentário
Compartilhar em outros sites

 

Java 8;

Bukkit
    .getOnlinePlayers()
    .stream()
    .filter(p -> p.getName().equals("noob"))
    .forEach(p -> p.sendMessage("seu noob"));

tem outras maneiras de pegar um jogador em um evento? sem ser o tradicional player p?

*Obs: eu uso o Java 7 \o/

Link para o comentário
Compartilhar em outros sites

Guest Mateus Demarchi

tem outras maneiras de pegar um jogador em um evento? sem ser o tradicional player p?

*Obs: eu uso o Java 7 \o/

 

Usando o loop, só você criar uma condição para verificar o player.

 

ex;

for(Player p : Bukkit.getOnlinePlayers())
{
    if(p.getName().equals("Ronaldo"))
    {
        p.sendMessage("Olá " + p.getName());
    }
}
Link para o comentário
Compartilhar em outros sites

 

Usando o loop, só você criar uma condição para verificar o player.

 

ex;

for(Player p : Bukkit.getOnlinePlayers())
{
    if(p.getName().equals("Ronaldo"))
    {
        p.sendMessage("Olá " + p.getName());
    }
}

eu quero saber outras maneiras de pegar o jogador, porque o evento que eu tenho só sei o loop.

Eu já tentei

public void meuEvento(Player p)

mas n funfa porque precisa importa pro onEnable e não tem player no onEnable :(

Link para o comentário
Compartilhar em outros sites

Guest Mateus Demarchi

eu quero saber outras maneiras de pegar o jogador, porque o evento que eu tenho só sei o loop.

Eu já tentei

public void meuEvento(Player p)

mas n funfa porque precisa importa pro onEnable e não tem player no onEnable :(

 

Wtf cara, você esta perdido no código, agora não entendi oque você quer fazer, explique melhor pf.

Link para o comentário
Compartilhar em outros sites

Cara. Vai aprender um pouco mais sobre o básico do java antes de pular direto pra plugins, se não vai ficar 1000h p tirar uma dúvida que a apostila pode tirar em 3 linhas..
Já explicamos como é, mas sem querer ser rude e tal, tenta ver sobre como o java funciona antes. Como o cara disse aí, você tá totalmente perdido no código.

Link para o comentário
Compartilhar em outros sites

Wtf cara, você esta perdido no código, agora não entendi oque você quer fazer, explique melhor pf.

Kkkkkkkk :p, quero só saber outras maneiras de pegar o jogador, tipo: public static Player p; (Nunca funfou, tem outros?)

Link para o comentário
Compartilhar em outros sites

Guest Mateus Demarchi

Cara. Vai aprender um pouco mais sobre o básico do java antes de pular direto pra plugins, se não vai ficar 1000h p tirar uma dúvida que a apostila pode tirar em 3 linhas..

Já explicamos como é, mas sem querer ser rude e tal, tenta ver sobre como o java funciona antes. Como o cara disse aí, você tá totalmente perdido no código.

 

Pois é, eu digo isso sempre pra alguém que quer ir pra uma API sendo que não sabe nem o básico da linguagem.

 

@Edit

 

Pedro manda print do seu código.

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

 

Cara voce ta viajando no quiabo , so voce fazer isso que manda para todos os players online !!

for(Player p : Bukkit.getOnlinePlayers()) {
    p.sendMessage("Oi " + p.getName() + "");
}

já resolvi usando outros métodos '-'

Link para o comentário
Compartilhar em outros sites

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