Ir para conteúdo

[Tutorial] Rodar um evento ao chegar ao maximo de players


Guest PedroJavax

Posts Recomendados

Guest PedroJavax

Bom, hoje estou aki para mostrar... um codigo que eu e meu amigo fizemos juntos, para nosso servidor, e vou fazer um tutorial dele


 


 


 


- Como funciona?


- Você vai por uma key vip(VIPZERO) pela config, e quando chegar ao maximo de players, vai mandar mensagens avisando e depois de algum tempo, vai sortear a key:


 


 


Aki o codigo:



    String keyvip = getConfig().getString("KEY_VIP");

    @EventHandler
    public void ListPing(ServerListPingEvent e) throws InterruptedException{
        Player pr = Bukkit.getOnlinePlayers()[new Random().nextInt(Bukkit.getOnlinePlayers().length)];
        if (e.getNumPlayers() == e.getMaxPlayers()){
            Bukkit.broadcastMessage("§9Aviso > §eServidor alcançou o número maximo de jogadores. Nice!");
            Bukkit.broadcastMessage("§9Aviso > §eSortearemos um key VIP.");
            wait(10);
            Bukkit.broadcastMessage("§9Aviso > §eSortearemos em 5 segundos!");
            wait(5);
            Bukkit.broadcastMessage("§9Aviso > §e" + pr.getName() + "§eganhou o sorteio parabens!");
            pr.sendMessage("§e§lParabens você ganhou a key! Sua key:§3§l " + keyvip);
        }
        return;
    }

Tutorial:



public void ListPing(ServerListPingEvent e)
            throws InterruptedException{
        Player pr = Bukkit.getOnlinePlayers()[new Random().nextInt(Bukkit.getOnlinePlayers().length)]; //aki vai pegar um player random de todos que estao online no servidor no momento
        if (e.getNumPlayers() == e.getMaxPlayers()){ //aki vai ver se o PlayerOnlines são o mesmo tanto que o MaxPlayers se for vai fazer esse evento todo aki
            Bukkit.broadcastMessage("§9Aviso > §eServidor alcançou o número maximo de jogadores. Nice!");//MENSAGENS(Não vou explicar)
            Bukkit.broadcastMessage("§9Aviso > §eSortearemos um key VIP.");
            wait(10);//esperar 10 segundos
            Bukkit.broadcastMessage("§9Aviso > §eSortearemos em 5 segundos!");
            wait(5);//esperar 5 segundos
            Bukkit.broadcastMessage("§9Aviso > §e" + pr.getName() + "§eganhou o sorteio parabens!"); //aki vai falar que o pr(Player sorteado) ganhou o evento
            pr.sendMessage("§e§lParabens você ganhou a key! Sua key:§3§l " + keyvip);//vai mandar para o pr a key determinada na config
        }
        return;
        }
    }

Config:



KEY_VIP: "1878VIP"

Gostou? te ajudei? deixe seu like!!!


Link para o comentário
Compartilhar em outros sites

Guest PedroJavax

Oche... Porque usar isso no serverlistping? Não seria mais fácil no playerJoin?

Mas dai serio quando o player entrasse e pesa mais...

 

e no Serverlistping é mais facil de chegar, não acontece nenhum "bug"

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

Oche... Porque usar isso no serverlistping? Não seria mais fácil no playerJoin?

Sim, aliás, desde quando existe "wait(Integer)" na BukkitAPI? Até aonde eu sei precisa criar um Scheulder para fazer esperar... Eu acho que esse Wait faz a Thread principal travar, ou seja... Vai dar ruim.

Link para o comentário
Compartilhar em outros sites

Vai nessa, se tu coloca a thread principal do servidor pra esperar o servidor vai travar todo, até que o tempo passe, use scheduler para isso, e pra que usar o ServerListPingEvent? Basta verificar se o numero de jogadores online é X quando um jogador entra por exemplo, ai faz tal ação.

Link para o comentário
Compartilhar em outros sites

Guest PedroJavax

Vai nessa, se tu coloca a thread principal do servidor pra esperar o servidor vai travar todo, até que o tempo passe, use scheduler para isso, e pra que usar o ServerListPingEvent? Basta verificar se o numero de jogadores online é X quando um jogador entra por exemplo, ai faz tal ação.

eu sei, mas prefiro ListPingEvent.

Link para o comentário
Compartilhar em outros sites

Participe da Conversa

Você pode postar agora e se cadastrar mais tarde. Se você tiver uma conta, a class='ipsType_brandedLink' href='https://gamersboard.com.br/login/' data-ipsDialog data-ipsDialog-size='medium' data-ipsDialog-title='Sign In Now'>acesse agora para postar com sua conta.
Observação: sua postagem exigirá aprovação do moderador antes de ficar visível.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.

Processando...
×
×
  • Criar Novo...