Détecter le nombres de cliques/seconde
-
Tu pourra pas voir si il xray, tout ce que ça va faire c’est rendre le jeu en mettant ta vue à la place de la sienne, pas appliqué les textures telles qu’il les voit
-
Je sais mais de la vue du gars tu le vois bien si il xray (droite gauche tout droit au un diams comme de par n’hasard)
-
Oui c’est sûr comportementalement tu peux le voir même sans être directement dans sa vue
-
Je fais souvent des mouvements aléatoires quand je mine, c’est pas pour autant que je xray
Pour le nombre de clicks par seconde, en utilisant LWJGL tu devrais pouvoir compter ça (Tu choppe l’event de click gauche, et tu incrémente un compteur que tu remets a 0 chaque seconde). Après, qu’un joueur fasse 20 ou 8 milliards de clicks a la seconde… aucune différence!
Le jeu tourne sous 20 ticks, donc il ne pourra gérer que 20 clicks en une seconde, grand maximum.En utilisant LWJGL et des packets, tu aura un comptage de clicks côté client, et non serveur, ce qui permet de savoir le nombre réel de clicks que la machine reçoit, et le packets sert juste a faire passer ça niveau serveur.
Faire des anticheats c’est TRES difficile. C’est comme essayer de déminer une bombe qui va pousser tes mains dès que tu essaie de la toucher. Un cheat travaille contre un anticheat, et fait tout pour le neutraliser
-
Gugu tu peux regarder shootbox (probleme eclipse je t’expliquerais directement dessus si tu peux)
Je veux bien pour les moment au hasard mais faut avoir une limite si tu mine comme de la me… et que tu trouve que du diams ya un probleme quelque part non ? -
Juste la méthode du render
Minecraft.getMinecraft().setRenderViewEntity(p.getDisplayName());
S’utilise comment ? -
Il te suffit de placer l’entité en paramètre :
Minecraft.getMinecraft().setRenderViewEntity(Entity entity);
Tu as sûrement un objet de type EntityPlayer dans ton cas
-
quoi va ou ? xD
-
Dans tu gui quand le joueur clique sur je ne sais pas quoi tu met cette fonction avec le joueur que tu veux “espionner” en paramètre, et tu met bien un condition ```java
if(world.isRemote) -
Je veux dire par la que je met quoi en paramètre : entityplayer x2 Entity = espion ou espionner ?
-
Minecraft.getMinecraft().setRenderViewEntity(La personne à espionner);
-
Essaie de tester avec tes joueurs dans des zones assez éloignées, voir si les chunks se chargent bien quand tu change de vue.
-
De toute façon c’est un GUI s’ouvre au clic droit sur un joueur donc le chunk sera chargé vu qu’il sera à côté
-
Pas très pratique niveau discrétion!
-
Alors pour pouvoir remplacer le NetHandler d’un joueur sur le serveur, ce qui permet d’intercepter/modifier tout comportement du joueur :
Il faut d’abord utiliser l’event de connection d’un joueur sur le serveur :@SubscribeEvent public void onPlayerLoginOnServer(PlayerEvent.PlayerLoggedInEvent event) { CustomNetHandlerServer.applyPatches((EntityPlayerMP) event.player); //On va remplacer le NetHandlerPlayServer vanilla dans cette fonction }
Donc dans une nouvelle classe CustomNetHandlerServer (ou un autre nom) extends NetHandlerPlayServer :
private final MinecraftServer serverController; //Cette variable est en private dans le NetHandlerPlayServer on doit donc la mettre ici public CustomNetHandlerServer(MinecraftServer server, NetworkManager networkManagerIn, EntityPlayerMP playerIn) { super(server, networkManagerIn, playerIn); this.serverController = server; } public static void applyPatches(EntityPlayerMP player) { NetHandlerPlayServer old= player.playerNetServerHandler; CustomNetHandlerServer newHandler = fromNetHandlerPlayServer(old); //Va permettre d'obtenir un net handler à partir des informations de l'ancien player.playerNetServerHandler = newHandler; //On l'attribue au joueur } private static CustomNetHandlerServer fromNetHandlerPlayServer(NetHandlerPlayServer play) { CustomNetHandlerServer handler= new CustomNetHandlerServer(MinecraftServer.getServer(), play.netManager, play.playerEntity); //On créée notre handler handler.setPlayerLocation(play.playerEntity.posX, play.playerEntity.posY, play.playerEntity.posZ, play.playerEntity.cameraYaw, play.playerEntity.cameraPitch); //Et on lui donne les informations de l'ancien return handler; }
Puis après, il suffit de faire ctrl+space dans cette nouvelle classe et de prendre la fonction qui correspond à ce qu’on veut modifier et la réécrire.
Et aussi, ne pas oublier de register l’event (event Forge). -
techniquement je peux definir en tant que test player1 et player2 ?
Broken gui quand je fais ‘u’ et je marque dans textbox pseudo et je le surveille -
Définir quoi en tant que test player 1 et 2 ?
-
sur eclipse deux java appli joueurnanana et joueurninini et faire dans le code que quand playernanana fais ‘u’ je vois playerninini
-
Il faut que tu récupères le EntityPlayer de playerninini et que tu fasses Minecraft.getMinecraft().setRenderViewEntity(playerninini);
Je regarde comment get le EntityPlayerSP d’un autre joueur du côté client.EDIT : Alors il faut que tu obtiennes le entityID du joueur sur le serveur ```java
MinecraftServer.getServer().getConfigurationManager().getPlayerByUsername(“un nom”).getEntityId();
Puis tu dois envoyer un [packet](https://www.minecraftforgefrance.fr/showthread.php?tid=1118) au joueur qui veut avoir la vue d'un autre avec cet entity id, à la réception du packet, tu fais ```java Minecraft.getMinecraft().setRenderViewEntity(Minecraft.getMinecraft().theWorld.getEntityById(l'id reçu));
Pas besoin de faire un null check, Minecraft le fait pour toi mais par contre tu peux vérifier que l’entité qui correspond à l’id est bien instanceof EntityOtherPlayerMP pour être sur que ce soit l’id du joueur et pas d’un poulet.
Il est possible/probable qu’il y ait une autre méthode mais celle là marchera très bien.
-
PAS LES PACKETS NONNNNNNNNNNNNN
Aymeric j’ai suvis ton truc j’y comprend rien mais bon xD
Juste j’ai
Executes a container/inventory slot manipulation as indicated by the packet. Sends the serverside result if they didn’t match the indicated result and prevents further manipulation by the player until he confirms that it has the same open container/inventoryC’est ça qu’il faut prendre =p?