LuizB Postado Abril 15, 2016 Denunciar Compartilhar Postado Abril 15, 2016 Bem são 3 dúvidas em um tópico :) (Que bosta ahuahuahu) Como faço pra dar um item em um slot vazio no inventario do player se n tiver nem um slot vazio n mande uma msgg Segunda -- checar se o inventario do player ta vazio Terceira -- Remover 3 numeros De uma int a cada 5 segundos Link para o comentário Compartilhar em outros sites More sharing options...
Katho Postado Abril 15, 2016 Denunciar Compartilhar Postado Abril 15, 2016 Para dar um item em um slot vazio ou seja o proximo slot disponivel é Iventory inv = p.getInventory(); inv.addItem(ItemStack); /* * Isso adiciona um Item no proximo slot vazio. * */ Para chegar se o inventario do player está vazio , eu nunca precisei fazer isto mais tente fazer coisas como : Iventory inv = p.getInventory(); //Tentativa 1 if (inv.getContents() == null) { } //Tentativa 2 if (inv.getContents().leght == 0) { } //Tentativa 3 /* * Seria colocar o inventario em uma hashmap e se o ela estivesse vazia fazeria o que você quizesse */ //OBS: Não testei nenhuma das 3 são só suposições. Para remover 3 numeros de uma int a cada 5 segundos é muito facil... /* é só usar um loop simples */ public int i = 10 Bukkit.getScheduler.callSyncRepeatingTask(plugin, runnable, public void run() { if ( i > 0 ) { i = i - 3; } else if (i == 0) { i = 10; } }}0, 5*20 /*<-- Numero de segundos 20 = 1 segundo ou seja 5x20 = 5 Segundos.*/); /* * Isso Funciona asim Exemplo eu criei uma int de 10 , especifiquei que a cada 5*20 ticks no servidor. * ele vai executar um runnable que se a int for maior que 0 diminuir 3 numeros dela se ela for 0 voltar * para o inicio. isso é bastante simples mais no começo quando se está aprendendo é bem chatinho... */ Espero que eu tenha ajudado =D. -Katho 1 Link para o comentário Compartilhar em outros sites More sharing options...
Naghtrion Postado Abril 15, 2016 Denunciar Compartilhar Postado Abril 15, 2016 na 3 faz um loop com runnable Link para o comentário Compartilhar em outros sites More sharing options...
LuizB Postado Abril 15, 2016 Autor Denunciar Compartilhar Postado Abril 15, 2016 na 3 faz um loop com runnable Como assim ? o.O. Sou Noob Link para o comentário Compartilhar em outros sites More sharing options...
Naghtrion Postado Abril 15, 2016 Denunciar Compartilhar Postado Abril 15, 2016 Como assim ? o.O. Sou Noob percebi '-' http://wiki.bukkit.org/Scheduler_Programming/pt Link para o comentário Compartilhar em outros sites More sharing options...
LuizB Postado Abril 15, 2016 Autor Denunciar Compartilhar Postado Abril 15, 2016 (editado) percebi '-' http://wiki.bukkit.org/Scheduler_Programming/pt Jesus Finalmente Um Tutorial Em BR @EDIT² isso n tem ensinando '-' ( Só A Usar O Scheduler Mais n a fazer o Loop ) a Unica Coisa que sei fazer no Scheduler repeatask e delaytask Editado Abril 15, 2016 por Cuthmf Link para o comentário Compartilhar em outros sites More sharing options...
Naghtrion Postado Abril 15, 2016 Denunciar Compartilhar Postado Abril 15, 2016 Jesus Finalmente Um Tutorial Em BR Só o começo o google faz o resto... Link para o comentário Compartilhar em outros sites More sharing options...
ElGaubinho Postado Abril 15, 2016 Denunciar Compartilhar Postado Abril 15, 2016 (editado) Bem são 3 dúvidas em um tópico :) (Que bosta ahuahuahu) Como faço pra dar um item em um slot vazio no inventario do player se n tiver nem um slot vazio n mande uma msgg Segunda -- checar se o inventario do player ta vazio Terceira -- Remover 3 numeros De uma int a cada 5 segundos 1 - Crie um looping for para o inventário do jogador e cheque se não há um item Exemplo: Inventory inv = p.getInventory(); boolean done = false; // Percorre o inventário do jogador for (int i = 0; i < inv.getMaxStackSize();i++) { // Checa se o item do slot do inventário é nulo ou é ar e da uma maçã se a condição for verdadeira if (inv.getItem(i) == null || inv.getItem(i).getType() == Material.AIR) { inv.setItem(i, new ItemStack(Material.APPLE)); // Diz que o jogador recebeu o item done = true; // Encerra o loop break; } } // Se o jogador não recebeu o item, mande uma mensagem if (!done) p.sendMessage("Você não pode receber a maçã porque seu inventário está lotado."); 2 - Faça igual ao anterior, crie um looping e cheque os itens Exemplo: boolean empty = false; // Percorre o inventário do jogador for (int i = 0; i < inv.getMaxStackSize();i++) { // Checa se o item do slot do inventário não é nulo e não é ar if (inv.getItem(i) != null) { if ( inv.getItem(i).getType() != Material.AIR) { empty = true; break; } } } if (empty) p.sendMessage("O seu inventário está vazio"); 3 - Crie um BukkitRunnable que se repete a cada 5 segundos new BukkitRunnable() { int i = /* valor */ public void run() { if (i > /*valorMinimo*/){ // Diminui 3 i-=3; } else this.cancel(); // Cancela o timer } }.runTaskTimer(/*Seu timer*/); OBS: FIZ ISSO USANDO LOOPINGS, HÁ OUTROS JEITOS OBS: SE VOCÊ FOR USAR UMA CHECAGEM DE ITENS EM ALGUM EVENTO OU ALGO DO TIPO SUGIRO QUE NÃO USE ESSES MÉTODOS COM LOOPINGS Editado Abril 15, 2016 por Gabriel__ 1 Link para o comentário Compartilhar em outros sites More sharing options...
Proyx Postado Abril 15, 2016 Denunciar Compartilhar Postado Abril 15, 2016 (editado) 1 - Crie um looping for para o inventário do jogador e cheque se não há um item Exemplo: Inventory inv = p.getInventory(); boolean done = false; // Percorre o inventário do jogador for (int i = 0; i < inv.getMaxStackSize();i++) { // Checa se o item do slot do inventário é nulo ou é ar e da uma maçã se a condição for verdadeira if (inv.getItem(i) == null || inv.getItem(i).getType() == Material.AIR) { inv.setItem(i, new ItemStack(Material.APPLE)); // Diz que o jogador recebeu o item done = true; // Encerra o loop break; } } // Se o jogador não recebeu o item, mande uma mensagem if (!done) p.sendMessage("Você não pode receber a maçã porque seu inventário está lotado."); Pra que esse código todo só usar: if(inv.firstEmpty() == -1) { // Inventário está cheio } else { inv.setItem(inv.firstEmpty(), new ItemStack(Material.APPLE)); } Editado Abril 15, 2016 por Proyx Link para o comentário Compartilhar em outros sites More sharing options...
LuizB Postado Abril 15, 2016 Autor Denunciar Compartilhar Postado Abril 15, 2016 1 - Crie um looping for para o inventário do jogador e cheque se não há um item Exemplo: Inventory inv = p.getInventory(); boolean done = false; // Percorre o inventário do jogador for (int i = 0; i < inv.getMaxStackSize();i++) { // Checa se o item do slot do inventário é nulo ou é ar e da uma maçã se a condição for verdadeira if (inv.getItem(i) == null || inv.getItem(i).getType() == Material.AIR) { inv.setItem(i, new ItemStack(Material.APPLE)); // Diz que o jogador recebeu o item done = true; // Encerra o loop break; } } // Se o jogador não recebeu o item, mande uma mensagem if (!done) p.sendMessage("Você não pode receber a maçã porque seu inventário está lotado."); 2 - Faça igual ao anterior, crie um looping e cheque os itens Exemplo: boolean empty = false; // Percorre o inventário do jogador for (int i = 0; i < inv.getMaxStackSize();i++) { // Checa se o item do slot do inventário não é nulo e não é ar if (inv.getItem(i) != null) { if ( inv.getItem(i).getType() != Material.AIR) { empty = true; break; } } } if (empty) p.sendMessage("O seu inventário está vazio"); 3 - Crie um BukkitRunnable que se repete a cada 5 segundos new BukkitRunnable() { int i = /* valor */ public void run() { if (i > /*valorMinimo*/){ // Diminui 3 i-=3; } else this.cancel(); // Cancela o timer } }.runTaskTimer(/*Seu timer*/); OBS: FIZ ISSO USANDO LOOPINGS, HÁ OUTROS JEITOS OBS: SE VOCÊ FOR USAR UMA CHECAGEM DE ITENS EM ALGUM EVENTO OU ALGO DO TIPO SUGIRO QUE NÃO USE ESSES MÉTODOS COM LOOPINGS Vou Ver Se consigo Entender o Código Do Primeiro Vamos lá i é igual a 0; se i for menor que todos os Slots. i++ // pq tem que adicionar O Valor pra i ? Link para o comentário Compartilhar em outros sites More sharing options...
Guest Mateus Demarchi Postado Abril 15, 2016 Denunciar Compartilhar Postado Abril 15, 2016 Vou Ver Se consigo Entender o Código Do Primeiro Vamos lá i é igual a 0; se i for menor que todos os Slots. i++ // pq tem que adicionar O Valor pra i ? A cada i no laço de repetição, i ira receber +1 ou seja slot 0, 1, 3, ....ect Link para o comentário Compartilhar em outros sites More sharing options...
LuizB Postado Abril 15, 2016 Autor Denunciar Compartilhar Postado Abril 15, 2016 A cada i no laço de repetição, i ira receber +1 ou seja slot 0, 1, 3, ....ect Ah ta então vai percorrer todo inventario Do player ?. Se Sim Isso que é um Loop ? Link para o comentário Compartilhar em outros sites More sharing options...
Proyx Postado Abril 15, 2016 Denunciar Compartilhar Postado Abril 15, 2016 Ah ta então vai percorrer todo inventario Do player ?. Se Sim Isso que é um Loop ? usa o que eu falei meu deus .-. pra que os cara gosta de usar codigo gigante Link para o comentário Compartilhar em outros sites More sharing options...
Guest Mateus Demarchi Postado Abril 15, 2016 Denunciar Compartilhar Postado Abril 15, 2016 Ah ta então vai percorrer todo inventario Do player ?. Se Sim Isso que é um Loop ? Isso, aconselho aprender java, antes de entrar em apis como o Bukkit, pois muitos desistem. Link para o comentário Compartilhar em outros sites More sharing options...
LuizB Postado Abril 15, 2016 Autor Denunciar Compartilhar Postado Abril 15, 2016 usa o que eu falei meu deus .-. pra que os cara gosta de usar codigo gigante só tava tentando entender o código Man Isso, aconselho aprender java, antes de entrar em apis como o Bukkit, pois muitos desistem. Exatamente isso que eu to Fazendo '-'. Eu sempre Procuro Entender o código Link para o comentário Compartilhar em outros sites More sharing options...
leonardosc Postado Abril 15, 2016 Denunciar Compartilhar Postado Abril 15, 2016 só tava tentando entender o código Man Exatamente isso que eu to Fazendo '-'. Eu sempre Procuro Entender o código Ainda precisa de resposta? Link para o comentário Compartilhar em outros sites More sharing options...
Guest FaabioDev Postado Abril 15, 2016 Denunciar Compartilhar Postado Abril 15, 2016 Faz com (if) variaveis de p.getInventory.isClear alguma coisa assim. Ou vc faz pra checar se tem 36 materias ''AIR'' Link para o comentário Compartilhar em outros sites More sharing options...
LuizB Postado Abril 16, 2016 Autor Denunciar Compartilhar Postado Abril 16, 2016 Obrigado A Todos Que Me Ajudaram. Porém Levá Como Melhor Resposta Quem Ajudou primeiro Link para o comentário Compartilhar em outros sites More sharing options...
Thelike Postado Abril 16, 2016 Denunciar Compartilhar Postado Abril 16, 2016 Sua dúvida foi marcada como [Resolvido] e movido à área de dúvidas resolvidas.Atenciosamente,Gamer's Board Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
LuizB
Bem são 3 dúvidas em um tópico :) (Que bosta ahuahuahu)
Como faço pra dar um item em um slot vazio no inventario do player se n tiver nem um slot vazio n mande uma msgg
Segunda -- checar se o inventario do player ta vazio
Terceira -- Remover 3 numeros De uma int a cada 5 segundos
Link para o comentário
Compartilhar em outros sites
18 respostass a esta questão
Posts Recomendados