Bonjour à tous !

Je présente enfin mon "projet", c'est plus un challenge qu'un projet.

Je ne suis pas très avancé dans le langage C#, je me suis beaucoup aidé de l'existant et des divers tutos de Cadernis.

C'est un bot MITM pour Dofus 2.0.

Je suis passé par des interface car j'adore en faire et je trouve la console trop monotone :p

Screen :

Cliquez pour révéler Cliquez pour masquer

[Image Introuvable]

Je me suis aidé de ce tuto pour gérer les clients et servers.

Je n'ai pas encore trié les divers paquets reçus mais ça viendra.

Venons-en au but de ce post, je partage mon projet plus pour que quelqu'un me corrige et me dise ce que je fais de mal. Car c'est comme ça que je progresse :)

Voilà je pense avoir tout dit, je vais sans doute poser quelques questions dans la section appropriée quand j'en aurais besoin (très très très très bientôt :vicieux:)

Lien Github : https://github.com/Rtxx1/MyBot

N'hésitez pas à poster vos critiques !

pourquoi faire une grosse fenêtre.? tu aurais pu mettre des boutons sur l'interface "console", ça aurait été moins encombrant^^

Je comprends pas ta question... Ma grosse fenêtre est une MdiContainer ^^

ben je l'a trouve encombrante :-/ mais après c'est du chipotage hein^^

Moi j'aime bien ça fait interface mère et ses enfants ^^

ahah oui vu comme ça^^

et c'est quoi les fonctionnalités actuelles du bot.? tu veux en faire quoi dans la finalité.?

Actuellement le bot reçois et transmet les paquets reçus du client et du serveur. Et je souhaite commencer par gérer les paquets de l'hôtel de vente pour faire une actualisation automatique. Je pourrais peut-être faire un système de combat et récolte plus tard.

ah d'accord, pour ma part j'ai pris ton bot parce que les packets et leurs traitement me fascine.

bon courage^^

Pour afficher le packet à partir de son ID je te conseil de passer par autre chose car si les packets changent et que tu dois modifier à chaque fois ta classe c'est mieux d'utiliser la réfléxion.

Et l'interface me fait fort penser à Ama... euh rien laisse tomber.:vicieux: Bonne chance pour la suite.

Qu'est ce que tu appelles la réflexion ?

Ama quoi je vois pas ^^ J'ai pris exemple sur LeafBot :p

    Rtxx

    Qu'est ce que tu appelles la réflexion ?

    Tu peux utiliser quelque chose comme ça :

    MessageIdentifier

    Cliquez pour révéler Cliquez pour masquer

    public static class MessageIdentifier
        {
            private static readonly Dictionary<int, string> Packets = new Dictionary<int, string>();
    
            public static void Initialize()
            {
                var asm = Assembly.GetAssembly(typeof (MessageIdentifier));
                foreach (var type in asm.GetTypes().Where(entry => entry.IsSubclassOf(typeof (NetworkMessage))))
                {
                    var property = type.GetProperty("ProtocolId");
                    if(property == null) continue;
                    var num = (int) property.GetValue(Activator.CreateInstance(type), null);
                    if(Packets.ContainsKey(num)) continue;
                    Packets.Add(num, type.Name);
                }
            }
    
            public static string GetMessageName(int id) => Packets[id];
        }

    Pour utiliser ça, il te faudra le protocol traduit dans sa totalité (messages + types).

    Tu appelles la méthode Initialize au lancement de ton bot et ça devrait être bon ^^

    Je t'avouerai que le code que tu me donnes n'est pas de mon niveau... Je vais regarder ça ce soir si j'ai le temps *-*

    Merci pour le partage, moi qui cherchais quelque chose de "Compréhensible" :inlove:

    De rien, n'hésite pas à me dire si tu vois des bêtises :)

    Ahh, il se lance enfin ! Bonne chance rtxx ;)

    2 ans plus tard

    Bonjour. Le bot marche toujours? Je l'ai testé et il s'arrête làimg

      redalo

      Bonjour. Le bot marche toujours? Je l'ai testé et il s'arrête làimg

      D'après le git les fichiers n'ont pas été mis à jour depuis 2017. Donc tous les Network avec, ça ne risque pas de fonctionner effectivement.

      Après un MITM c'est censé fonctionner peu importe la version puisque le comportement de base c'est de forward les paquets, et pas de filtrer tout le protocol et le resererializer après comme on peut voir dans pas mal de source ici. (c'est pas le cas de ce projet je crois mais j'ai regarder un peu le code ça m'a suffit pour comprendre que c'était du bouh2 réchauffer)