MFF

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

    Système de backstab

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.10
    20 Messages 6 Publieurs 4.2k 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.
    • AmbreeeeA Hors-ligne
      Ambreeee
      dernière édition par

      @‘Julot10085’:

      Compare si ton entity attaquée regarde dans la même direction que celle qui attaque et si oui, tu lui retires toute sa vie

      C’est pas bête, mais c’est tout de même plus précis de le faire avec des angles… Sachant que je compte créer mon mod pour mon propre serveur, il faudrait que le gameplay soit équilibré pour que je ne me retrouve pas submergée de “PLZ AMBRE NERF LA LAME SECRETE C’EST TROP OP!!1!” (désolée du trash-talk ^^)

      J'aime coder. Même si je sais pertinemment que je suis nulle.
      [url=http://image.noelshack.com/fichiers/2015/43/1445473320-al…

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

        Je ne suis pas trop d accord. Certes les angles restent plus précis mais les direction de 1 sont a mon goût beaucoup plus faciles et puis quand tu dis attaquer dans le dos a partir du moment où toi et ton ennemi avez le même point cardinal en commun, tu ne pourras voir que son dos.

        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 ne vois pas en quoi passer par les points cardinaux simplifierait les choses. Pour moi ça fait plus usine à gaz d’autre chose. Car de toute façon comment tu connais le point cardinal vers lequel l’entité regarde ? Avec son angle … Donc au final il faut utiliser l’angle. Plus simple de comparer directement les deux angles.

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

            Bon ok, deux heures que je suis stuck là-dessus, j’ai hésitée à faire une nuit blanche pour trouver la solution au problème, mais vu mes skills en Java c’est mort pour que je trouve la solution toute seule… Je donne ma langue au chat.  -_-

            J'aime coder. Même si je sais pertinemment que je suis nulle.
            [url=http://image.noelshack.com/fichiers/2015/43/1445473320-al…

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

              Ok je te file le code 2 sec

              EDIT = Voici le code, alors j’ai testé sur des cochons, vaches et autres animaux de mc. Certes c’est précis mais pas autant que les angles, cependant si comme tu l’as dit, tu le fais sur ton serv, ça devrait poser aucun problème sur des ModelBiped, tels que les joueurs ^^

              
              @SubscribeEvent
              public void onEntityAttacked2(LivingAttackEvent event) 
              {
              if(!event.entityLiving.worldObj.isRemote)
              {
              int var1 = MathHelper.floor_double((double) (event.entityLiving.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;//On récupère l'angle de l'entity qui se fait attaqué
              String direction1 = Direction.directions[var1];//On crée un String de la direction vers laquelle regarde l'entity au-dessus
              int var2 = MathHelper.floor_double((double) (event.source.getEntity().rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;//idem mais pour celle qui attaque
              String direction2 = Direction.directions[var2];//idem
              //Maintenant place à la condition
              if(direction1 == direction2)
              {
              //event.entityLiving.setDead();//Le fait disparaître instantannément, c'est violent ^^', prend la lige d'en dessous sinon
              event.entityLiving.setHealth(0);//Moins radical 
              System.out.println("dans son dos");
              //Et voilà ton code n'est pas plus gros que ça =D (et pas plus compliqué non plus…)
              }
              }
              }
              
              

              Event se trouvant sur le bus minecraftforge, donc rajoute cette ligne dans la méthode init de ta classe principale
              MinecraftForge.EVENT_BUS.register(new TaClasseOuTAsMisLEvent());

              Voilà j’espère que mon code t’aura aidé. J’ai pris soin comme tu as vu de mettre des commentaires (n’oublie pas le petit + x))

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

                Le principe est simple: quand tu tapes une entité, tu vérifies si oui ou non tu est derrière la-dite entité pour choisir le nombre de dégâts.
                Le plus dur est de savoir si oui ou non tu est derrière la cible.
                Pour cela:

                • On récupère les vecteurs de ‘regard’ (celui qui représente la direction dans laquelle une entité regarde) du joueur et de la cible.
                • On remet à 0 leur composante Y, puisque si le joueur regarde en haut ou en bas n’influence pas trop sa capacité à planter un couteau dans le dos.
                • On les transforme en vecteurs unitaires pour faciliter les calculs d’angles.
                • On récupère le cosinus de l’angle avec le produit scalaire et on en déduit l’angle.
                • On vérifie si l’angle est dans un intervalle prédéfini. (-85° à 85° dans mon exemple)

                :::

                public static boolean isBehind(EntityPlayer player, Entity target)
                {
                if(target.getLookVec() == null)
                {
                return false;
                }
                Vec3 targetLook = target.getLookVec();
                targetLook = new Vec3(targetLook.xCoord, 0, targetLook.zCoord).normalize();
                Vec3 playerLook = player.getLookVec().normalize();
                playerLook = new Vec3(playerLook.xCoord, 0, playerLook.zCoord).normalize();
                double angle = Math.acos(playerLook.dotProduct(targetLook));
                if(angle < Math.toRadians(85) && angle > Math.toRadians(-85))
                {
                return true;
                }
                return false;
                }
                

                :::

                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

                  "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
                  • AmbreeeeA Hors-ligne
                    Ambreeee
                    dernière édition par

                    Désolée de cette réponse plutôt tardive.

                    Merci pour vos réponses, les deux -ont l’air de- marcher nickel, mais le problème est que, sachant que je trouve le projet de serveur basé sur Assassin’s Creed un peu trop ambitieux pour une novice comme moi, j’ai décidé de me lancer sur un autre projet. En espérant que cette astuce sera utile à d’autres moddeurs…  😛

                    Désolée de vous avoir dérangés pour finalement me désister au dernier moment. Je voit trop grand dans mes projets à chaque fois…

                    Sur ce, merci de m’avoir aidée, je reviendrais avec plaisir sur MFF si j’ai (encore) besoin d’aide ! ^^

                    J'aime coder. Même si je sais pertinemment que je suis nulle.
                    [url=http://image.noelshack.com/fichiers/2015/43/1445473320-al…

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

                      Pas grave, comme tu dis ça servira à d’autres qui passeront par là 😉

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

                        Même si tu abandonnes le concept, les maths derrière peuvent toujours aider.

                        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
                        • FolganskyF Hors-ligne
                          Folgansky Correcteurs
                          dernière édition par

                          Ouaip, au lieu d’instant kill ça peut jouer un son “Chat c’est toi qu’y est!” pour un mod “le chat et la souris”.

                          Enfin tout ce qu’on veut quoi.

                          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