• Récent
  • Mots-clés
  • Populaire
  • Utilisateurs
  • Groupes
  • S'inscrire
  • Se connecter
  • S'inscrire
  • Se connecter
  • Recherche
  • Récent
  • Mots-clés
  • Populaire
  • Utilisateurs
  • Groupes

Bug au niveau du timer

Sans suite
1.5.2
3
7
2.9k
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-XX
    Nolan-XX dernière édition par robin4002 10 août 2019, 12:10 17 août 2013, 20:25

    Salut a tous !
    vous vous souvenez sans doute qu’il y a quelques temps , j’ai fais une demande sur comment faire un timer .
    Donc , grâce a jglrxavpok et Robin4002 , j’ai réussi.
    Mais maintenant , un autre problème ce pose !
    Mes balles font plus de dégâts :s !
    Voila les codes :

    Le fusil

    package mods.nono.MGSmod.weapons;
    import mods.nono.MGSmod.ShotsType.EntityShoot;
    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_SOCOM extends Item {
    private int shootTimer;
    public W_SOCOM(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)) {
    if (shootTimer == 0) {
    par2World.spawnEntityInWorld(new EntityShootSimple(par2World, par3EntityPlayer, 1));
    par3EntityPlayer.inventory.consumeInventoryItem(Main.SOammo.itemID);
    shootTimer = 20;
    }
    }
    return par1ItemStack;
    }
    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:SOCOM");
    }
    }

    L’entité de la balle

    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 EntityShootSimple extends EntityThrowable {
    private static final Entity thrower = null;
    private int ticksInGround;
    public EntityShootSimple(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), 5);
    this.setDead();
    }
    else
    {
    this.setDead();
    }
    }
    public void onUpdate() {
    super.onUpdate();
    if (this.ticksExisted == 175)
    ;
    }
    protected float getGravityVelocity() {
    return 0;
    }
    }

    Le render de la balle

    package mods.nono.MGSmod.ShotsType;
    import net.minecraft.client.renderer.Tessellator;
    import net.minecraft.client.renderer.entity.Render;
    import net.minecraft.entity.Entity;
    import org.lwjgl.opengl.GL11;
    import org.lwjgl.opengl.GL12;
    public class RenderEntityShootSimple extends Render {
    private float size;
    public RenderEntityShootSimple(float size) {
    this.size = size;
    }
    @Override
    public void doRender(Entity var1, double var2, double var4, double var6, float var8, float var9) {
    this.doRenderMonProjectile((EntityShootSimple) var1, var2, var4, var6, var8, var9);
    }
    public void doRenderMonProjectile(EntityShootSimple par1EntityMonProjectile, double par2, double par4, double par6, float par8, float par9) {
    GL11.glPushMatrix();
    GL11.glTranslatef((float) par2, (float) par4, (float) par6);
    GL11.glEnable(GL12.GL_RESCALE_NORMAL);
    float var10 = this.size;
    GL11.glScalef(var10 / 1.0F, var10 / 1.0F, var10 / 1.0F);
    byte var11 = 0;
    this.loadTexture("/nono/MGSmod/textures/items/Shot.png");
    Tessellator var12 = Tessellator.instance;
    float var13 = (float) (var11 % 16 * 16 + 0) / 16.0F;
    float var14 = (float) (var11 % 16 * 16 + 16) / 16.0F;
    float var15 = (float) (var11 / 16 * 16 + 0) / 16.0F;
    float var16 = (float) (var11 / 16 * 16 + 16) / 16.0F;
    float var17 = 1.0F;
    float var18 = 0.5F;
    float var19 = 0.25F;
    GL11.glRotatef(180.0F - this.renderManager.playerViewY, 0.0F, 1.0F, 0.0F);
    GL11.glRotatef(-this.renderManager.playerViewX, 1.0F, 0.0F, 0.0F);
    var12.startDrawingQuads();
    var12.setNormal(0.0F, 1.0F, 0.0F);
    var12.addVertexWithUV((double) (0.0F - var18), (double) (0.0F - var19), 0.0D, (double) var13, (double) var16);
    var12.addVertexWithUV((double) (var17 - var18), (double) (0.0F - var19), 0.0D, (double) var14, (double) var16);
    var12.addVertexWithUV((double) (var17 - var18), (double) (1.0F - var19), 0.0D, (double) var14, (double) var15);
    var12.addVertexWithUV((double) (0.0F - var18), (double) (1.0F - var19), 0.0D, (double) var13, (double) var15);
    var12.draw();
    GL11.glDisable(GL12.GL_RESCALE_NORMAL);
    GL11.glPopMatrix();
    }
    }

    Merci d’avance pour vos réponses …

    1 réponse Dernière réponse Répondre Citer 0
    • jglrxavpok
      jglrxavpok Modérateurs dernière édition par 18 août 2013, 09:20

      Je ne comprends pas bien la question. Les balles ne font plus ou font + de dégâts ?

      Aussi, je te conseille que la classe de ton render soit une classe fille de RenderEntity, pour que ce soit plus cohérent.
      De plus, je ne comprends pas trop l’intérêt de la ligne (dans update() de l’entity):

      if (this.ticksExisted == 175);
      

      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
      • Nolan-XX
        Nolan-XX dernière édition par 18 août 2013, 13:03

        Elle ne font plus aucun dégâts

        Cette ligne donne la durée de vie de la balle avant quelle disparaisse “naturellement”

        1 réponse Dernière réponse Répondre Citer 0
        • jglrxavpok
          jglrxavpok Modérateurs dernière édition par 18 août 2013, 13:29

          La balle ne disparaît pas “naturellement” avec cette ligne. C’est ce que j’appelle une “condition vide”, il n’y a absolument aucune instruction avec elle, donc pas de disparition magique 😕

          Sinon, pour le problème, je ne vois pas trop d’où ça peut venir 😕
          La balle apparaît-elle bien à l’écran ?

          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
          • Nolan-XX
            Nolan-XX dernière édition par 18 août 2013, 14:32

            Oui elle apparait bien …

            1 réponse Dernière réponse Répondre Citer 0
            • Nolan-XX
              Nolan-XX dernière édition par 20 août 2013, 12:44

              Up
              Personne ne peut m’aider ?

              1 réponse Dernière réponse Répondre Citer 0
              • Gugu
                Gugu dernière édition par 20 août 2013, 12:46

                Je ne vois pas la raison 😞

                "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
                • 1 / 1
                5 sur 7
                • Premier message
                  5/7
                  Dernier message
                Design by Woryk
                Contact / Mentions Légales

                MINECRAFT FORGE FRANCE © 2018

                Powered by NodeBB