MFF

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

    [1.7.10] - Barre d'Xp de métier Custom non syncronisée

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.10
    41 Messages 8 Publieurs 3.5k Vues 5 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.
    • G Hors-ligne
      Gael62
      dernière édition par

      Voila ma classe PacketMoney

      public class PacketMoney implements IMessage
      {
      public long maxMoney;
      public long money;
      
      
      public PacketMoney()
      {
       
      }
       
      public PacketMoney(long cooldown, long kamas)
      {
      this.maxMoney = cooldown;
      this.money = kamas;
      
       
      }
       
      @Override
      public void fromBytes(ByteBuf buf)
      {
      maxMoney = buf.readLong();
      money = buf.readLong();
      
      
      }
       
      @Override
      public void toBytes(ByteBuf buf)
      {
      buf.writeLong(maxMoney);
      buf.writeLong(money);
      
      
      }
       
      public static class Handler implements IMessageHandler <PacketMoney, IMessage>{
      @Override
      public IMessage onMessage(PacketMoney message, MessageContext ctx)
      {
      if(ctx.netHandler instanceof NetHandlerPlayServer)
      {
      jobHandler prop = jobHandler.get(((NetHandlerPlayServer)ctx.netHandler).playerEntity);
      prop.update(message.money, message.maxMoney);
      
      }
      if(ctx.netHandler instanceof NetHandlerPlayClient)
             {
      jobHandler prop = jobHandler.get(getClientPlayer());
                 prop.update(message.money, message.maxMoney);
                
             }
             return null;
      }
         }
       
      @SideOnly(Side.CLIENT)
         public static EntityPlayer getClientPlayer()
         {
         return Minecraft.getMinecraft().thePlayer;
         }
       
      }
      
      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

        La fonction onMessage de l’handler est bien appelé ?

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

          Il n’y as que ce coté qui est appelé lors que je addXp (donc j’utilise les packet)

          if(ctx.netHandler instanceof NetHandlerPlayClient)
                 {
          jobHandler prop = jobHandler.get(getClientPlayer());
                     prop.update(message.money, message.maxMoney);
                    
                 }
                 return null;
          }
             }
          
          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

            Ce qui est le résultat attendu quand on envoie un paquet du serveur vers le client.

            En fait le souci c’est que ta fonction prop.update ne fait rien …

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

              il faut que je rajoute

               public void update(long money, long maxMoney){
                  
              	this.money = money;
                      this.maxMoney = maxMoney;
                                           
                  }
              
              1 réponse Dernière réponse Répondre Citer 0
              • G Hors-ligne
                Gael62
                dernière édition par

                J’ai réussi j’ai mis ;

                public void update(long money, long money2){
                
                this.money = money;
                this.money = money2;
                }
                

                le Gui est fonctionnel et les deux valeurs sonts bien syncro !
                Merci de ton aide @robin4002 , je passe en résolu !

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

                  Je pense que tu devrais relire le code de ton dernier message, car il est impossible que les 2 valeurs soient synchronisées avec un tel code.

                  Si vous souhaitez me faire un don, il vous suffit de cliquer sur le bouton situé en dessous.

                  Je suis un membre apprécié et joueur, j'ai déjà obtenu 17 points de réputation.

                  1 réponse Dernière réponse Répondre Citer 1
                  • G Hors-ligne
                    Gael62
                    dernière édition par

                    C’est bizarre car pourtant j’obtient bien les 2 mêmes valeurs et le gui et fonctionnel
                    (le Gui est moche pour l’instant car je l’ai pas terminé)
                    text alternatif

                    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 souci de ton code actuel c’est que tu ne mets à jour correctement le maxMoney.

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

                        Un autre problème que tu as dans ton code, c’est que ce n’est pas sécurisé. Le client pourrais très bien envoyer un packet au serveur et mentir sur la quantité d’argent qu’il a réellement. Dans ton code actuelle, le serveur accepterais sans se poser de question.

                        1 réponse Dernière réponse Répondre Citer 1
                        • G Hors-ligne
                          Gael62
                          dernière édition par

                          Il faut donc que j’inverse les packets ?
                          Par exemple il faut que ce soit le Serveur qui envoie le packet et non le client ?

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

                            Le serveur commande et le client execute !
                            Le serveur doit gere les quantité et le client doit seulement pouvoir les recupérer mais pas les modifier

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

                              j’ai fait quelques modifications ;

                              J’ai lancé le jeu en serveur et je l’ai rejoint avec un client avec un packet supplémentaire (pour simulé un give d’XP et afin de voir la sécurité) ,au moment de l’envoie du packet le serveur me kick avec un beau “A fatal error as occured” je me suis reconnecté au serveur est mon XP n’a pas été modifier .

                              Wind_BladeW 1 réponse Dernière réponse Répondre Citer 0
                              • SpyManS Hors-ligne
                                SpyMan
                                dernière édition par

                                hein …? pas comrpris

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

                                  non par rapport au problème dans le code ou l’on pouvait envoyer des faux packet , je pense que j’ai réussi à le réglé car maintenant si j’essaye d’envoyer un faux packet au serveur (qui n’est pas présent dans le mod coté serveur ) ,bah je me fait kick avec un beau message “A fatal error as occured” ,et l’XP n’est pas modifier aprés la reconnexion , donc c’est plutôt bon .

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

                                    Bonjour je cherchais depuis un bon moment un forum permettant de coder des metiers customs afin de m’aider a finaliser mon serveur mais le probleme j’ai suivi a la lettre le codage mais j’ai plein d’erreur au niveau de83e0af60-2533-445a-be83-c38627e84790-image.png
                                    Je suis un gros nnob en code pouvez vous m’aider

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

                                      Simple,au debut à tu crée la classe PacketMoney,
                                      ModTuto est le nom de ta classe principale et je crois que sur CommonProxy il y a pas de storeEntityData ni de getEntityData
                                      mais tu ne donne pas assez d’informations donc ce que je dis est peut-etre faux

                                      s

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

                                        ou a PacketMoney tu as oublié le fameux import
                                        Si ceci est ta classe principale au niveau de ModTuto tu peux mettre

                                        this
                                        

                                        ca te servira
                                        Et d’ou tu mets apres MegaMod?

                                        s

                                        1 réponse Dernière réponse Répondre Citer 0
                                        • Wind_BladeW Hors-ligne
                                          Wind_Blade @Gael62
                                          dernière édition par

                                          @Gael62 il faut juste pas que ton client puisse envoyer un packet au serveur, le client ne gère absolument rien, il doit juste recevoir un packet lui disant combien il a d’argent … c’est tout

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

                                            Alors pour te donner plus d’info je t’envois les screen les plus importants.

                                            Le JobHandler
                                            98527212-ab3d-42b8-8584-03992d8d0570-image.png

                                            Le Gui Jobs
                                            7364a13e-cab0-450c-8226-5d59251f5570-image.png

                                            Et ma classe Principale

                                            b154d7b8-9c57-472e-8034-c3a2112743f1-image.png
                                            c2e6c628-f9ca-4733-ac15-ed2f540f5194-image.png

                                            Dites moi ce que vous voulez que je vous prenne en screen, et je vous le ferai.

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

                                            MINECRAFT FORGE FRANCE © 2024

                                            Powered by NodeBB