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

    Résolu Système de backstab

    1.7.x
    1.7.10
    6
    20
    3973
    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.
    • Ambreeee
      Ambreeee dernière édition par

      Heya tout le monde,

      J’aurais juste besoin d’un petit peu d’aide : je souhaiterais créer une lame secrète à la manière de celles que l’on peut trouver dans Assassin’s Creed, mais comment s’y prendre au niveau des backstabs, sachant que je vient de commencer à modder (et que je suis la pire des noobs en Java au passage) ?  😛

      Merci de votre potentielle 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
      • robin4002
        robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

        Salut,
        Étant donné que je ne joue pas à Assassin’s Creed, il va falloir m’expliquer le fonctionnement de ce que tu veux faire.

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

          J’aimerais tout simplement faire en sorte que lorsque l’arme est utilisée dans le dos d’un ennemi, celle-ci lui retire toute sa vie (autres exemple : Couteaux du Spy dans TF2)

          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
          • robin4002
            robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

            Il faut regarder en fonction de la rotation l’entité qui se fait attaquer et celle de l’entité qui attaque.
            Ce qui tombe bien c’est que xavpok a déjà fait ça pour NHG par contre il me faut son autorisation pour distribuer son code.

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

              @‘robin4002’:

              Il faut regarder en fonction de la rotation l’entité qui se fait attaquer et celle de l’entité qui attaque.

              Effectivement, j’avais déjà vu plusieurs vidéos et sites qui expliquaient le principe, comme quoi il fallait prendre les deux axes yaw et qu’il fallait faire des trucs avec… Mais reste à savoir quels trucs…  😕

              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
              • jglrxavpok
                jglrxavpok Modérateurs dernière édition par

                Autorisation accordée robin ^^
                De toute façon c’est pas très compliqué une fois qu’on a compris le principe

                Sent from my GT-I9000 using Tapatalk 2

                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
                • robin4002
                  robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

                  Pas compliqué. Si la rotation yaw des deux entités est identique ça veut dire qu’elles sont alignées.

                  Bon peut-être que l’angle yaw n’est pas en fonction de X dans Minecraft mais on s’en fou c’est pour l’exemple.
                  Comme je suis nul avec gimp (surtout qu’en plus il faudrait plutôt un logiciel de dessin vectoriel comme inkscape pour faire x)) je ne fais pas te faire un dessin pour quand elle ne regarde pas dans le même sens, je te laisse imaginer ça et voir par toi même que les angles ne seront plus égaux.

                  Cependant le cas où les deux angles seront égaux va être très rare (en fait il risque de ne jamais arriver, le cas où les deux entités étant parfaitement aligné étant très rare). Donc le mieux serait de soustraire un angle à l’autre et si la valeur est proche de 0 (par exemple compris entre -0,1 radian et 0,1 radian) pour avoir une petite marge.

                  ÉDIT : le temps que je fasse mon super dessin xavpok a répondu. Je te laisse quand même essayer et en cas de problème je te donnerai le code de xavpok à titre d’exemple.
                  ÉDIT 2 : je me rends compte à quel point les images sont pratiques pour expliquer. Je pense que je vais en faire pour les tutoriels moi.

                  1 réponse Dernière réponse Répondre Citer 1
                  • Ambreeee
                    Ambreeee dernière édition par

                    @‘robin4002’:

                    Bon peut-être que l’angle yaw n’est pas en fonction de X dans Minecraft mais on s’en fou c’est pour l’exemple.

                    L’angle yaw est en fonction de X et de Y (merci Google), mais on s’en fiche x3

                    Ton schéma fait sur GIMP (j’ai crû que c’était Paint à la base, whew) m’a pas mal aidé, je vais essayer de me débrouiller et de mettre les mains dans le cambouis. Si jamais je n’y parvient pas, je ferais un piti up  😉

                    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
                    • Deleted
                      Deleted dernière édition par

                      J ai beaucoup plus simple les gars ^^
                      Les points cardinaux, sa ne vous dit rien xD
                      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

                      1 réponse Dernière réponse Répondre Citer 0
                      • Ambreeee
                        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
                        • Deleted
                          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
                          • robin4002
                            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
                            • Ambreeee
                              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
                              • Deleted
                                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
                                • jglrxavpok
                                  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
                                  • Gugu
                                    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
                                    • Ambreeee
                                      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
                                      • Deleted
                                        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
                                        • jglrxavpok
                                          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
                                          • Folgansky
                                            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
                                            Contact / Mentions Légales

                                            MINECRAFT FORGE FRANCE © 2018

                                            Powered by NodeBB