MFF

    Minecraft Forge France
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Forge Events
      • Automatique
      • Foncé
      • Clair
    • S'inscrire
    • Se connecter

    Un Timer

    Planifier Épinglé Verrouillé Déplacé Résolu Anciennes versions
    1.6.4
    18 Messages 6 Publieurs 5.7k Vues 1 Watching
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • Nolan-XXN Hors-ligne
      Nolan-XX
      dernière édition par

      Après avoir fait moult recherches et crée un topic sur Ironcraft , c’est ici que je pose ma question. Mon mod ajoute des fusils ( pas un mod TRO D4RK KALL OF DIOUTY , hein ) mais mon problème , c’est que mes fusils tirent les balles instantanément , c’est bien pour une mitrailleuse mais pour un petit fusil :s  
      Voila mon code :

      package mods.nono.MGSmod.weapons;
      
      import mods.nono.MGSmod.ShotsType.EntityShoot;
      import mods.nono.MGSmod.ShotsType.EntityShootExplosive;
      import mods.nono.MGSmod.ShotsType.EntityShootExplosiveUber;
      import mods.nono.MGSmod.ShotsType.EntityShootSimple;
      import mods.nono.MGSmod.ShotsType.EntityShootSimpleTranq;
      import mods.nono.MGSmod.common.Main;
      import net.minecraft.client.renderer.texture.IconRegister;
      import net.minecraft.enchantment.Enchantment;
      import net.minecraft.enchantment.EnchantmentHelper;
      import net.minecraft.entity.player.EntityPlayer;
      import net.minecraft.item.Item;
      import net.minecraft.item.ItemStack;
      import net.minecraft.world.World;
      
      public class W_MK22 extends Item
      {
      
         public W_MK22(int par1)
         {
             super(par1);
             this.maxStackSize = 1; // dit qu'il ne peut avoir que 1 pistolet
             this.setCreativeTab(Main.MGSTAB);
         }
      
         public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer)
         {
             boolean flag = par3EntityPlayer.capabilities.isCreativeMode || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, par1ItemStack) > 0;
      
             if(flag || par3EntityPlayer.inventory.hasItem(Main.SOammo.itemID))
             {
                 par2World.spawnEntityInWorld(new EntityShootSimpleTranq(par2World, par3EntityPlayer, 1));
                 par3EntityPlayer.inventory.consumeInventoryItem(Main.SOammo.itemID);
      
             }
             return par1ItemStack;
         }
      
         @Override
         public void registerIcons(IconRegister iconRegister)
         {
             itemIcon = iconRegister.registerIcon("nono/MGSmod:MK22");
         }
      }
      

      La classe EntityShootSimpleTranq :

      package mods.nono.MGSmod.ShotsType;
      
      import net.minecraft.entity.Entity;
      import net.minecraft.entity.EntityLiving;
      import net.minecraft.entity.projectile.EntityThrowable;
      import net.minecraft.util.DamageSource;
      import net.minecraft.util.MathHelper;
      import net.minecraft.util.MovingObjectPosition;
      import net.minecraft.world.World;
      
      public class EntityShootSimpleTranq extends EntityThrowable
      {
      
         private static final Entity thrower = null;
         private int ticksInGround;
      
         public EntityShootSimpleTranq(World par1World, EntityLiving par2EntityLiving, float speed)
         {
      
             super(par1World, par2EntityLiving);
      
             this.setThrowableHeading(this.motionX, this.motionY, this.motionZ, speed, 1.0F);
      
         }
      
         public void setThrowableHeading(double par1, double par3, double par5, float par7, float par8)
         {
             float f2 = MathHelper.sqrt_double(par1 * par1 + par3 * par3 + par5 * par5);
             par1 /= (double)f2;
             par3 /= (double)f2;
             par5 /= (double)f2;
             par1 += this.rand.nextGaussian() * (double)(this.rand.nextBoolean() ? -1 : 1) * 0.007499999832361937D * (double)par8;
             par3 += this.rand.nextGaussian() * (double)(this.rand.nextBoolean() ? -1 : 1) * 0.007499999832361937D * (double)par8;
             par5 += this.rand.nextGaussian() * (double)(this.rand.nextBoolean() ? -1 : 1) * 0.007499999832361937D * (double)par8;
             par1 *= (double)par7;
             par3 *= (double)par7;
             par5 *= (double)par7;
             this.motionX = par1;
             this.motionY = par3;
             this.motionZ = par5;
             float f3 = MathHelper.sqrt_double(par1 * par1 + par5 * par5);
             this.prevRotationYaw = this.rotationYaw = (float)(Math.atan2(par1, par5) * 180.0D / Math.PI);
             this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(par3, (double)f3) * 180.0D / Math.PI);
             this.ticksInGround = 0;
         }
      
         /*
          * if(var1.entityHit !=null){
          * if(var1.entityHit !=null){
          */
      
         @Override
      
         protected void onImpact(MovingObjectPosition var1)
         {
             if(var1.entityHit != null)
             {
                 var1.entityHit.attackEntityFrom(DamageSource.causeThrownDamage(this, this.thrower), 0);
                 this.setDead();
             }
      
             else
             {
                 this.setDead();
             }
         }
      
         public void onUpdate()
         {
             super.onUpdate();
             if(this.ticksExisted == 175)
                 ;
         }
      
         protected float getGravityVelocity()
         {
             return 0;
         }
      }
      

      Le truc que j’aimerais faire :
      <> Tire l’entitée
      <> Inutilisable Pendant x ticks ( 1 ticks = 1/20 de seconde je crois )
      <> Réutilisable

      Merci d’avance pour vos réponses.

      1 réponse Dernière réponse Répondre Citer 0
      • GuguG Hors-ligne
        Gugu
        dernière édition par

        Dans le update, fait un truc dans le genre :

        
        public int timer = nombre_de_ticks
        public int nombrre_de_tick = [TON NOMBRE DE TICKS]
        
        dans la méthode update :
        
        if(timer == nombre de ticks){
        ton code
        timer = 0;
        }
        else {
        if ( timer <= nombre_de_tick ) {
        timer++;
        } else { } }
        
        

        Explication :

        Tu créer une variable ( timer ) qui sert va se mettre a 0 quand elle est utilisée, puis qui va monter de 1 a chaque ticks.

        "If you have a comprehensive explanation for everything then it decreases uncertainty and anxiety and reduces your cognitive load. And if you can use that simplifying algorithm to put yourself on the side of moral virtue then you’re constantly a good person with a minimum of effort."
        ― Jordan B. Peterson

        1 réponse Dernière réponse Répondre Citer 0
        • MrCupCakeMonsterM Hors-ligne
          MrCupCakeMonster
          dernière édition par

          un timer normal en java :

          for(int i = 1; i <= 10; i++)
          {
          /*Ton code */
          }
          

          Essaye maintenant comme ceci :

          for(int i = 1; i <= 10; i++)
          {
          /*Ton code*/
          }
          

          En remplaçant 10 pour un gros chiffres, pour faire un bon timer :)___
          Essaye ça :

          
          int nb = 0;
          do{
          /*Ton code */
          nb = 0;
          for(int i = 1; i <= 10/*Remplacer 10 par un gros nombre*/; i++)
          {
          
          }
          nb = 1;
          }while(nb = 1);
          
          

          Mes tutos :

          >! Un item mangeable
          [url=http://www.minecraftforgefranc…

          1 réponse Dernière réponse Répondre Citer -1
          • Nolan-XXN Hors-ligne
            Nolan-XX
            dernière édition par

            Merci, mais j’ai une erreur a :

            package mods.nono.MGSmod.weapons;
            
            import mods.nono.MGSmod.ShotsType.EntityShoot;
            import mods.nono.MGSmod.ShotsType.EntityShootExplosive;
            import mods.nono.MGSmod.ShotsType.EntityShootExplosiveUber;
            import mods.nono.MGSmod.ShotsType.EntityShootSPAS12;
            import mods.nono.MGSmod.ShotsType.EntityShootSimple;
            import mods.nono.MGSmod.common.Main;
            import net.minecraft.client.renderer.texture.IconRegister;
            import net.minecraft.enchantment.Enchantment;
            import net.minecraft.enchantment.EnchantmentHelper;
            import net.minecraft.entity.player.EntityPlayer;
            import net.minecraft.item.Item;
            import net.minecraft.item.ItemStack;
            import net.minecraft.world.World;
            
            public class W_SPAS12 extends Item
            {
            
            public W_SPAS12(int par1)
            {
            super(par1);
            this.maxStackSize = 1; //dit qu'il ne peut avoir que 1 pistolet
            this.setCreativeTab(Main.MGSTAB);
            }
            
            public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer)
            
            {
            
            int nb = 0;
            do{
            boolean flag = par3EntityPlayer.capabilities.isCreativeMode || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, par1ItemStack) > 0;
            if (flag || par3EntityPlayer.inventory.hasItem(Main.plomb.itemID))
            {
            par2World.spawnEntityInWorld(new EntityShootSPAS12(par2World, par3EntityPlayer, 1));
            par2World.spawnEntityInWorld(new EntityShootSPAS12(par2World, par3EntityPlayer, 2));
            par2World.spawnEntityInWorld(new EntityShootSPAS12(par2World, par3EntityPlayer, 3));
            par2World.spawnEntityInWorld(new EntityShootSPAS12(par2World, par3EntityPlayer, 4));
            par3EntityPlayer.inventory.consumeInventoryItem(Main.plomb.itemID);
            
            }
            nb = 0;
            for(int i = 1; i <= 60/*Remplacer 10 par un gros nombre*/; i++)
            {
            
            }
            nb = 1;
            }while(nb = 1);
            
            return par1ItemStack;
            }
            
            @Override
            public void registerIcons(IconRegister iconRegister)
            {
            itemIcon = iconRegister.registerIcon("nono/MGSmod:SPAS12");
            }
            }
            

            }while(nb = 1);

            Et puis j’ai essayé ça :

            package mods.nono.MGSmod.weapons;
            
            import mods.nono.MGSmod.ShotsType.EntityShoot;
            import mods.nono.MGSmod.ShotsType.EntityShootExplosive;
            import mods.nono.MGSmod.ShotsType.EntityShootExplosiveUber;
            import mods.nono.MGSmod.ShotsType.EntityShootSPAS12;
            import mods.nono.MGSmod.ShotsType.EntityShootSimple;
            import mods.nono.MGSmod.common.Main;
            import net.minecraft.client.renderer.texture.IconRegister;
            import net.minecraft.enchantment.Enchantment;
            import net.minecraft.enchantment.EnchantmentHelper;
            import net.minecraft.entity.player.EntityPlayer;
            import net.minecraft.item.Item;
            import net.minecraft.item.ItemStack;
            import net.minecraft.world.World;
            
            public class W_SPAS12 extends Item
            {
            
            private int nombre_de_ticks;
            public int timer = nombre_de_ticks;
            public int nombrre_de_tick = 600;
            
            public W_SPAS12(int par1)
            {
            super(par1);
            this.maxStackSize = 1; //dit qu'il ne peut avoir que 1 pistolet
            this.setCreativeTab(Main.MGSTAB);
            
            }
            
            public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer)
            
            {
            
            if(timer == nombre_de_ticks){
            //
            boolean flag = par3EntityPlayer.capabilities.isCreativeMode || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, par1ItemStack) > 0;
            if (flag || par3EntityPlayer.inventory.hasItem(Main.plomb.itemID))
            {
            par2World.spawnEntityInWorld(new EntityShootSPAS12(par2World, par3EntityPlayer, 1));
            par2World.spawnEntityInWorld(new EntityShootSPAS12(par2World, par3EntityPlayer, 2));
            par2World.spawnEntityInWorld(new EntityShootSPAS12(par2World, par3EntityPlayer, 3));
            par2World.spawnEntityInWorld(new EntityShootSPAS12(par2World, par3EntityPlayer, 4));
            par3EntityPlayer.inventory.consumeInventoryItem(Main.plomb.itemID);
            
            }
            
            timer = 0;
            }
            else {
            if ( timer <= nombre_de_ticks ) {
            timer++;
            } else { } }
            
            return par1ItemStack;
            }
            
            @Override
            public void registerIcons(IconRegister iconRegister)
            {
            itemIcon = iconRegister.registerIcon("nono/MGSmod:SPAS12");
            }
            }
            

            Mais ça ne marche pas …

            1 réponse Dernière réponse Répondre Citer 0
            • jglrxavpokJ Hors-ligne
              jglrxavpok Modérateurs
              dernière édition par

              @Gugu42 Etant donné que les items n’ont pas de méthode update(), il faudrait préciser quelle méthode update!
              De tête, je dirais qu’il faudrait intercepter les événements PlayerUpdateEvent (s’il existe, sinon c’est EntityUpdateEvent en vérifiant que l’entitée est bien un joueur) pour mettre à jour le timer.

              @MrCupCakeMonster Cela ne fera que faire freezer le jeu pendant un certain temps. Il va faire la boucle sans rafraîchir l’écran dans ce cas là.

              EDIT: Nolan-XX, ce système ne fera pas grand chose, mais l’erreur ici est que tu as fait une affection à la place d’une condition. C’est-à-dire que tu dois vérifier que nb est égal à 1, comme ceci:

              while(nb == 1)
              

              Modérateur sur MFF. 
              Mon Github: http://github.com/jglrxavpok
              Mon compte Steam si vous voulez jouer à CS:GO ou TF2 avec moi: https://steamcommunity.com/id/jglrxavpok/

              1 réponse Dernière réponse Répondre Citer 0
              • GuguG Hors-ligne
                Gugu
                dernière édition par

                @‘jglrxavpok’:

                @Gugu42 Etant donné que les items n’ont pas de méthode update(), il faudrait préciser quelle méthode update!
                De tête, je dirais qu’il faudrait intercepter les événements PlayerUpdateEvent (s’il existe, sinon c’est EntityUpdateEvent en vérifiant que l’entitée est bien un joueur) pour mettre à jour le timer.

                @MrCupCakeMonster Cela ne fera que faire freezer le jeu pendant un certain temps. Il va faire la boucle sans rafraîchir l’écran dans ce cas là.

                EDIT: Nolan-XX, ce système ne fera pas grand chose, mais l’erreur ici est que tu as fait une affection à la place d’une condition. C’est-à-dire que tu dois vérifier que nb est égal à 1, comme ceci:

                while(nb == 1)
                

                J’ai plus le code de mon Oblitérateur B6 ( voir ma chaîne YouTube ) qui avait un cooldown ( Donc un timer ), donc j’ai pas retrouvé le méthode d’Update, mais c’était sûrement celle-ci 🙂

                "If you have a comprehensive explanation for everything then it decreases uncertainty and anxiety and reduces your cognitive load. And if you can use that simplifying algorithm to put yourself on the side of moral virtue then you’re constantly a good person with a minimum of effort."
                ― Jordan B. Peterson

                1 réponse Dernière réponse Répondre Citer 0
                • Nolan-XXN Hors-ligne
                  Nolan-XX
                  dernière édition par

                  @‘Gugu42’:

                  @‘jglrxavpok’:

                  @Gugu42 Etant donné que les items n’ont pas de méthode update(), il faudrait préciser quelle méthode update!
                  De tête, je dirais qu’il faudrait intercepter les événements PlayerUpdateEvent (s’il existe, sinon c’est EntityUpdateEvent en vérifiant que l’entitée est bien un joueur) pour mettre à jour le timer.

                  @MrCupCakeMonster Cela ne fera que faire freezer le jeu pendant un certain temps. Il va faire la boucle sans rafraîchir l’écran dans ce cas là.

                  EDIT: Nolan-XX, ce système ne fera pas grand chose, mais l’erreur ici est que tu as fait une affection à la place d’une condition. C’est-à-dire que tu dois vérifier que nb est égal à 1, comme ceci:

                  while(nb == 1)
                  

                  J’ai plus le code de mon Oblitérateur B6 ( voir ma chaîne YouTube ) qui avait un cooldown ( Donc un timer ), donc j’ai pas retrouvé le méthode d’Update, mais c’était sûrement celle-ci 🙂

                  A part faire planter le jeu , ça ne marche pas …

                  1 réponse Dernière réponse Répondre Citer 0
                  • robin4002R Hors-ligne
                    robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                    dernière édition par

                    package tutoriel.common;
                    
                    import net.minecraft.creativetab.CreativeTabs;
                    import net.minecraft.entity.Entity;
                    import net.minecraft.entity.player.EntityPlayer;
                    import net.minecraft.item.Item;
                    import net.minecraft.item.ItemStack;
                    import net.minecraft.world.World;
                    
                    public class ItemTutorial extends Item
                    {
                    private boolean canShot;
                    
                    public ItemTutorial(int id)
                    {
                    super(id);
                    this.setCreativeTab(CreativeTabs.tabMaterials);
                    }
                    
                    public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
                    {
                    if(canShot)
                    {
                    world.playSoundAtEntity(player, "modtutoriel:explosion", 1.0F, 1.0F);
                    world.newExplosion(null, player.posX, player.posY, player.posZ, 5, true, true);
                    canShot = false;
                    }
                    return stack;
                    }
                    
                    public void onUpdate(ItemStack stack, World world, Entity entity, int par4, boolean hasItemInHand)
                    {
                    if(hasItemInHand && world.getWorldTime() % 16L == 0L && entity instanceof EntityPlayer)
                    {
                    EntityPlayer player = (EntityPlayer)entity;
                    player.addChatMessage("tu peux tirer");
                    canShot = true;
                    }
                    }
                    }
                    

                    Bon parcontre je l’ai fais en 1.6, mais normalement ça devrait aussi fonctionner. Je me sers du temps de minecraft, si le reste de la division par 16 donne 0 alors le canshot passe sur true. J’ai essayé, ça marche très bien, avec ce code je peux créer une explosion tout les 3 secondes environ, alors que si je mets directement le code pour l’explosion or de la condition, je peux faire une explosion à chaque clic droit (donc facile 5 par secondes)

                    1 réponse Dernière réponse Répondre Citer 0
                    • Nolan-XXN Hors-ligne
                      Nolan-XX
                      dernière édition par

                      @‘robin4002’:

                      package tutoriel.common;
                      
                      import net.minecraft.creativetab.CreativeTabs;
                      import net.minecraft.entity.Entity;
                      import net.minecraft.entity.player.EntityPlayer;
                      import net.minecraft.item.Item;
                      import net.minecraft.item.ItemStack;
                      import net.minecraft.world.World;
                      
                      public class ItemTutorial extends Item
                      {
                      private boolean canShot;
                      
                      public ItemTutorial(int id)
                      {
                      super(id);
                      this.setCreativeTab(CreativeTabs.tabMaterials);
                      }
                      
                      public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
                      {
                      if(canShot)
                      {
                      world.playSoundAtEntity(player, "modtutoriel:explosion", 1.0F, 1.0F);
                      world.newExplosion(null, player.posX, player.posY, player.posZ, 5, true, true);
                      canShot = false;
                      }
                      return stack;
                      }
                      
                      public void onUpdate(ItemStack stack, World world, Entity entity, int par4, boolean hasItemInHand)
                      {
                      if(hasItemInHand && world.getWorldTime() % 16L == 0L && entity instanceof EntityPlayer)
                      {
                      EntityPlayer player = (EntityPlayer)entity;
                      player.addChatMessage("tu peux tirer");
                      canShot = true;
                      }
                      }
                      }
                      

                      Bon parcontre je l’ai fais en 1.6, mais normalement ça devrait aussi fonctionner. Je me sers du temps de minecraft, si le reste de la division par 16 donne 0 alors le canshot passe sur true. J’ai essayé, ça marche très bien, avec ce code je peux créer une explosion tout les 3 secondes environ, alors que si je mets directement le code pour l’explosion or de la condition, je peux faire une explosion à chaque clic droit (donc facile 5 par secondes)

                      Avec ce code , je ne peux plus tirer et le message “tu peux tirer” s’affiche en boucle :s …

                      1 réponse Dernière réponse Répondre Citer 0
                      • robin4002R Hors-ligne
                        robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                        dernière édition par

                        Tu as fais un copier/coller exacte ou tu as juste repris ce que tu avais besoin ?
                        Pour le message, il te suffit d’enlever
                        EntityPlayer player = (EntityPlayer)entity;
                        player.addChatMessage(“tu peux tirer”);
                        Je l’avais mit pour les tests, tu peux l’enlever

                        1 réponse Dernière réponse Répondre Citer 0
                        • Nolan-XXN Hors-ligne
                          Nolan-XX
                          dernière édition par

                          J’ai juste repris ce dont j’avais besoin …
                          Mon code :

                          package mods.nono.MGSmod.weapons;
                          
                          import mods.nono.MGSmod.ShotsType.EntityShoot;
                          import mods.nono.MGSmod.ShotsType.EntityShootExplosive;
                          import mods.nono.MGSmod.ShotsType.EntityShootExplosiveUber;
                          import mods.nono.MGSmod.ShotsType.EntityShootSPAS12;
                          import mods.nono.MGSmod.ShotsType.EntityShootSimple;
                          import mods.nono.MGSmod.common.Main;
                          import net.minecraft.client.renderer.texture.IconRegister;
                          import net.minecraft.enchantment.Enchantment;
                          import net.minecraft.enchantment.EnchantmentHelper;
                          import net.minecraft.entity.Entity;
                          import net.minecraft.entity.player.EntityPlayer;
                          import net.minecraft.item.Item;
                          import net.minecraft.item.ItemStack;
                          import net.minecraft.world.World;
                          
                          public class W_SPAS12 extends Item
                          {
                          
                          private boolean canShot;
                          
                          public W_SPAS12(int par1)
                          {
                          super(par1);
                          this.maxStackSize = 1; //dit qu'il ne peut avoir que 1 pistolet
                          this.setCreativeTab(Main.MGSTAB);
                          }
                          
                          public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player, ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer)
                          {
                          if(canShot)
                          {
                          boolean flag = par3EntityPlayer.capabilities.isCreativeMode || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, par1ItemStack) > 0;
                          if (flag || par3EntityPlayer.inventory.hasItem(Main.plomb.itemID))
                          {
                          par2World.spawnEntityInWorld(new EntityShootSPAS12(par2World, par3EntityPlayer, 1));
                          par2World.spawnEntityInWorld(new EntityShootSPAS12(par2World, par3EntityPlayer, 2));
                          par2World.spawnEntityInWorld(new EntityShootSPAS12(par2World, par3EntityPlayer, 3));
                          par2World.spawnEntityInWorld(new EntityShootSPAS12(par2World, par3EntityPlayer, 4));
                          par3EntityPlayer.inventory.consumeInventoryItem(Main.plomb.itemID);
                          
                          }
                          canShot = false;
                          }
                          return stack;
                          }
                          
                          public void onUpdate(ItemStack stack, World world, Entity entity, int par4, boolean hasItemInHand)
                          {
                          if(hasItemInHand && world.getWorldTime() % 16L == 0L && entity instanceof EntityPlayer)
                          {
                          EntityPlayer player = (EntityPlayer)entity;
                          player.addChatMessage("tu peux tirer");
                          canShot = true;
                          }
                          }
                          /*public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer)
                          
                          {
                          
                          boolean flag = par3EntityPlayer.capabilities.isCreativeMode || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, par1ItemStack) > 0;
                          if (flag || par3EntityPlayer.inventory.hasItem(Main.plomb.itemID))
                          {
                          par2World.spawnEntityInWorld(new EntityShootSPAS12(par2World, par3EntityPlayer, 1));
                          par2World.spawnEntityInWorld(new EntityShootSPAS12(par2World, par3EntityPlayer, 2));
                          par2World.spawnEntityInWorld(new EntityShootSPAS12(par2World, par3EntityPlayer, 3));
                          par2World.spawnEntityInWorld(new EntityShootSPAS12(par2World, par3EntityPlayer, 4));
                          par3EntityPlayer.inventory.consumeInventoryItem(Main.plomb.itemID);
                          
                          }
                          
                          return par1ItemStack;
                          }*/
                          
                          @Override
                          public void registerIcons(IconRegister iconRegister)
                          {
                          itemIcon = iconRegister.registerIcon("nono/MGSmod:SPAS12");
                          }
                          }
                          
                          1 réponse Dernière réponse Répondre Citer 0
                          • robin4002R Hors-ligne
                            robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                            dernière édition par

                            Le canShot = false; déplace-le dans la condition pour tirer, après par3EntityPlayer.inventory.consumeInventoryItem(Main.plomb.itemID);

                            1 réponse Dernière réponse Répondre Citer 0
                            • Nolan-XXN Hors-ligne
                              Nolan-XX
                              dernière édition par

                              Aucun effet … je ne peux plus tirer :s
                              sinon Player133 est un pedobear o/

                              1 réponse Dernière réponse Répondre Citer 0
                              • robin4002R Hors-ligne
                                robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                                dernière édition par

                                Je vois vraiment pas …
                                Si ça ne te dérange pas, tu peux me passer toutes tes sources pour que je puisse travailler directement dessus ?
                                Ha en passant, ceci :

                                || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, par1ItemStack) > 0
                                

                                Est à enlever, car si un joueur trouve un moyen de mettre infinity sur ton arme, il aura plus besoin de munition.

                                1 réponse Dernière réponse Répondre Citer 0
                                • jglrxavpokJ Hors-ligne
                                  jglrxavpok Modérateurs
                                  dernière édition par

                                  Cette ligne ne correspond pas à ce qu’on veut faire:

                                  world.getWorldTime() % 16L == 0L
                                  

                                  Elle fait en sorte que le joueur puisse tirer toutes les 16 ticks (ça veut dire si on tire à 15 ticks, lors de la frame suivante on peut retirer), or on veut que il puisse retirer 16 ticks après avoir utilisé l’arme, peu importe quand on tire.

                                  Exemple de code venant d’un jeu que je suis en train de développer (j’ai simplifié au max histoire que ce soit plus compréhensible):

                                  public void update()
                                  {
                                  super.update();
                                  
                                  if(shootTimer > 0)
                                  shootTimer–;
                                  
                                  if(Gdx.input.isKeyPressed(Keys.L)) // <-- Correspond à l'utilisation de l'arme
                                  {
                                  if(shootTimer == 0)
                                  {
                                  shoot();
                                  }
                                  }
                                  }
                                  
                                  private void shoot()
                                  {
                                  shootTimer = 12; // <-- On dit que l'on devra attendre 12 frames (ou ticks)
                                  }
                                  

                                  Modérateur sur MFF. 
                                  Mon Github: http://github.com/jglrxavpok
                                  Mon compte Steam si vous voulez jouer à CS:GO ou TF2 avec moi: https://steamcommunity.com/id/jglrxavpok/

                                  1 réponse Dernière réponse Répondre Citer 0
                                  • robin4002R Hors-ligne
                                    robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                                    dernière édition par

                                    Ça fonctionne parfaitement, merci Xavpok :

                                    package mods.nono.MGSmod.weapons;
                                    
                                    import mods.nono.MGSmod.ShotsType.EntityShoot;
                                    import mods.nono.MGSmod.ShotsType.EntityShootExplosive;
                                    import mods.nono.MGSmod.ShotsType.EntityShootExplosiveUber;
                                    import mods.nono.MGSmod.ShotsType.EntityShootSimple;
                                    import mods.nono.MGSmod.ShotsType.EntityShootSimpleTranq;
                                    import mods.nono.MGSmod.common.Main;
                                    import net.minecraft.client.renderer.texture.IconRegister;
                                    import net.minecraft.enchantment.Enchantment;
                                    import net.minecraft.enchantment.EnchantmentHelper;
                                    import net.minecraft.entity.Entity;
                                    import net.minecraft.entity.player.EntityPlayer;
                                    import net.minecraft.item.Item;
                                    import net.minecraft.item.ItemStack;
                                    import net.minecraft.world.World;
                                    
                                    public class W_MK22 extends Item
                                    {
                                    private int shootTimer;
                                    
                                    public W_MK22(int id)
                                    {
                                    super(id);
                                    this.maxStackSize = 1; // dit qu'il ne peut avoir que 1 pistolet
                                    this.setCreativeTab(Main.MGSTAB);
                                    }
                                    
                                    public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
                                    {
                                    if(player.capabilities.isCreativeMode || player.inventory.hasItem(Main.SOammo.itemID))
                                    {
                                    if(shootTimer == 0)
                                    {
                                    world.spawnEntityInWorld(new EntityShootSimpleTranq(world, player, 1));
                                    player.inventory.consumeInventoryItem(Main.SOammo.itemID);
                                    shootTimer = 20;
                                    }
                                    }
                                    return stack;
                                    }
                                    
                                    public void onUpdate(ItemStack stack, World world, Entity entity, int par4, boolean hasItemInHand)
                                    {
                                    if(shootTimer > 0)
                                    {
                                    shootTimer–;
                                    }
                                    }
                                    
                                    @Override
                                    public void registerIcons(IconRegister iconRegister)
                                    {
                                    itemIcon = iconRegister.registerIcon("nono/MGSmod:MK22");
                                    }
                                    }
                                    
                                    1 réponse Dernière réponse Répondre Citer 0
                                    • Nolan-XXN Hors-ligne
                                      Nolan-XX
                                      dernière édition par

                                      @‘jglrxavpok’:

                                      Cette ligne ne correspond pas à ce qu’on veut faire:

                                      world.getWorldTime() % 16L == 0L
                                      

                                      Elle fait en sorte que le joueur puisse tirer toutes les 16 ticks (ça veut dire si on tire à 15 ticks, lors de la frame suivante on peut retirer), or on veut que il puisse retirer 16 ticks après avoir utilisé l’arme, peu importe quand on tire.

                                      Exemple de code venant d’un jeu que je suis en train de développer (j’ai simplifié au max histoire que ce soit plus compréhensible):

                                      public void update()
                                      {
                                      super.update();
                                      
                                      if(shootTimer > 0)
                                      shootTimer–;
                                      
                                      if(Gdx.input.isKeyPressed(Keys.L)) // <-- Correspond à l'utilisation de l'arme
                                      {
                                      if(shootTimer == 0)
                                      {
                                      shoot();
                                      }
                                      }
                                      }
                                      
                                      private void shoot()
                                      {
                                      shootTimer = 12; // <-- On dit que l'on devra attendre 12 frames (ou ticks)
                                      }
                                      

                                      Merci a toi ! Grace a ton code ( et a robin4002) j’ai réussi ! Un grand merci !

                                      1 réponse Dernière réponse Répondre Citer 0
                                      • M Hors-ligne
                                        mrkevin77
                                        dernière édition par

                                        comment faire pour inverser le timer pour que l’action s’effectue apres 15 ticks

                                        1 réponse Dernière réponse Répondre Citer 0
                                        • 1 / 1
                                        • Premier message
                                          Dernier message
                                        Design by Woryk
                                        ContactMentions Légales

                                        MINECRAFT FORGE FRANCE © 2024

                                        Powered by NodeBB