Java ActionScript3 to Java

Discussion dans 'Questions / Réponses' créé par Lukyrouge3, 26 Juillet 2018.

  1. Lukyrouge3

    Lukyrouge3 Membre

    Inscrit:
    7 Avril 2018
    Messages:
    6
    J'aime reçus:
    0
    Je cherche depuis 2 jours sans trouver comment faire pour récupérer tous les messages ect... et en faire des classes java... Merci d'avance
     
  2. skeezr

    skeezr Membre

    Inscrit:
    16 Mars 2014
    Messages:
    187
    J'aime reçus:
    48
    1 - Tu télécharges JPEXS
    2 - Tu ouvres DofusInvoker.swf avec tu vas dans scripts/com/ankamagames/dofus/network/messages
    3 - Tu exportes le dossier
    Après le plus chiant c'est lire tous les fichiers AS3, récupérer la partie qui t’intéresse et re-format le tout pour correspondre au format d'une class java par exemple
     
  3. Lukyrouge3

    Lukyrouge3 Membre

    Inscrit:
    7 Avril 2018
    Messages:
    6
    J'aime reçus:
    0
    Ca je sais déjà faire mais j'aurais voulu un script pour le faire :3 parce que il y en a bcp trop pour y faire a la main
     
  4. Waren

    Waren Membre

    Inscrit:
    26 Mars 2011
    Messages:
    18
    J'aime reçus:
    3
    Tu peux utiliser les expressions reguliere pour automatiser la conversion, ou bien utiliser des tools existants (d2json par exemple)
     
  5. astro05

    astro05 Membre

    Inscrit:
    3 Janvier 2017
    Messages:
    32
    J'aime reçus:
    14
    Je code également en Java et je traduis les messages au fur et a mesure à la main.
     
  6. Perospero

    Perospero Membre

    Inscrit:
    2 Juin 2018
    Messages:
    11
    J'aime reçus:
    0
    Pourquoi tu ne codes pas un ProtocolBuilder ?
     
  7. astro05

    astro05 Membre

    Inscrit:
    3 Janvier 2017
    Messages:
    32
    J'aime reçus:
    14
    Que veux tu dire exactement par ProtocolBuilder ?

    Dans mon programme, j'associe en gros les IDs des messages D2 a des classes Java qui représentent les messages.
    Mais il faut bien que je sache comment les dé-sérialisés (ou les sérialisés dans le cadre de l'envoie).

    Du coup j'ai une classes Java par messages avec sa méthode permettant de le dé-sérialiser qui utilise des méthodes comme readVarInt, readUTF que j'ai porté en Java à partir des sources D2.

    Mais tu es bien obligé de porter ces méthodes de dé-sérialisation (et de sérialisation) des messages dans le langage de ton bot.
    Et également les méthodes qui seront utilisés pour dé-sérialiser et sérialiser tes messages.

    C'est ce qui peut être laborieux quand on développe un bot et c'est ce que cherche a automatiser Lukyrouge3 et que moi je fais manuellement.
     
  8. Perospero

    Perospero Membre

    Inscrit:
    2 Juin 2018
    Messages:
    11
    J'aime reçus:
    0
    Un protocole builder, te permettra d'automatiser les taches que tu fais actuellement et qui sont répétitives alors qu'en informatique il faut être feignant d’après le principe DRY ;). en gros, ce que j'appelle ProtocolBuilder c'est le petit programme qui va te traduire les scripts de Dofus (AS) en Java. Voici des protocoles builder pour que tu saisisses un petit peu l'idée :D :

    https://github.com/yamidevs/ProtocolBuilder-2.3.7
    https://github.com/thenameless314159/DofusProtocolBuilder/tree/master
     
  9. astro05

    astro05 Membre

    Inscrit:
    3 Janvier 2017
    Messages:
    32
    J'aime reçus:
    14
    Du coup je n'en code pas pour plusieurs raisons :
    • Faire un outil qui traduit proprement de l'AS en Java me prendrait du temps (Plus je pense qu'a traduire les messages dont j'ai besoins au fur et à mesure que mon projet évolue). C'est vraiment outil à part, et c'est un bot socket que j'ai envie de développer. ^^
    • Il y a certains morceaux de code qui proviennent de JPEXS que je préfère ré-écrire pour que ça colle parfaitement aux conventions de code de mon projet et pour améliorer l'algorithme utilisé en général (J'aimerais éviter les while (true) avec des break dedans par exemple ^^).
    • Je ne suis pas fan des outils qui te génère du code automatiquement en général ...
     
    • Désaccord Désaccord x 1
    • List
  10. skeezr

    skeezr Membre

    Inscrit:
    16 Mars 2014
    Messages:
    187
    J'aime reçus:
    48
    - ça te prendra du temps certes mais t'en feras économiser beaucoup plus au final
    - comme je dis plus haut dans mon premier message tu récupères les morceaux de code AS3 dont tu as besoin (variables, types des variables, noms etc...) et tu ré-écrit le tout en suivant tes conventions, format pour que le tout colle à ton projet ...
     
  11. astro05

    astro05 Membre

    Inscrit:
    3 Janvier 2017
    Messages:
    32
    J'aime reçus:
    14
    Actuellement c'est ce que je fais, je récupère bien les morceaux de code AS3 dont j'ai besoins pour les ré-écrire.
    Ça ne me prend pas énormément de temps, et je n'ai pour le moment pas besoins d'un outil qui le fais a ma place (c'est pratiquement du copié/collé avec un peu de formatage).

    Étant donné que je devrais en plus repasser derrière le code généré pour qu'il respecte les conventions de code de mon projet , je ne pense pas qu'un tel outil me fasse gagner du temps mais plus en perdre ...
     
    • Désaccord Désaccord x 1
    • List
  12. Perospero

    Perospero Membre

    Inscrit:
    2 Juin 2018
    Messages:
    11
    J'aime reçus:
    0
    Si tu le fais convenablement il n'y aura aucun souci, après tout dépend de l'ampleur de ton projet dans le sens où si ton bot à terme manipulera énormément de messages différents. Par exemple pour un émulateur tu ne feras jamais la traduction à la main.
     
  13. astro05

    astro05 Membre

    Inscrit:
    3 Janvier 2017
    Messages:
    32
    J'aime reçus:
    14
    Si je fais l'outil convenablement, il va se contenter de traduire les messages AS vers Java, son but n'est pas de renommer des variables, mettre de la javadoc, des commentaires en général ... Donc je vais forcement devoir repasser dessus (ce qui va me coûter du temps).

    Je préfère passer une fois dessus pour de bon. ^^

    Après ça dépend effectivement du projet et du développeur, moi j'aime bien maîtriser parfaitement le code que je produis et je n'aime pas vraiment ce type d'outil.

    Une fois que l'outil est fais et partagé, je ne doute pas que ça puisse aider des gens qui sont adeptes de ces outils, mais c'est pas vraiment un outil qui m'amuserait a développer. ^^
     
    Dernière édition: 29 Juillet 2018
  14. Sorrow

    Sorrow Membre Actif

    Inscrit:
    5 Mai 2012
    Messages:
    371
    J'aime reçus:
    48
    Imagine demain Ankama décide de changer l'ordre de lecture/écriture de chaque message et de changer les IDs.
    Tu va tout refaire à la main ?

    Et puis crois moi, même sans ca, l'outils est plus rapide a créer que tout faire à la main si c'est un bot full socket.
     
  15. astro05

    astro05 Membre

    Inscrit:
    3 Janvier 2017
    Messages:
    32
    J'aime reçus:
    14
    De toute façon pour moi il faudra repasser derrière cet outil pour corriger certaines choses si tu veux un code propre.
    Du coup oui si tu te contente de générer un code sans documentation et avec des algorithmes étrange et illisible que tu as récupéré de JPEXS et que tu laisse ça dans ton projet oui tu vas gagner du temps. Mais moi je préfère éviter.

    L'idéal pour moi, se serait d'avoir un repo git régulièrement mis à jour qui contient tout ces messages en Java et qui pourrait être utilisé comme une lib.
    Ce projet pourrait être initialisé avec un programme qui convertis l'AS vers du Java et avec les gestes manuels pour rendre le tout propre.

    Encore une fois, c'est un projet a part, ça demande du temps, et je n'ai pas pour le moment la motivation pour faire ce type de projet.
     
    Dernière édition: 30 Juillet 2018
  16. skeezr

    skeezr Membre

    Inscrit:
    16 Mars 2014
    Messages:
    187
    J'aime reçus:
    48
    Ta l'air d'avoir du mal à comprendre que le code c'est toi va le "générer" et par conséquent rien ne sera "étrange" et encore moins "illisible", ou pour le dire plus clairement c'est comme si tu prenais une class java d'un message que tu a traduis à la main et qu'il va te servir de base, "template" pour tout les autres messages AS3 non traduit et du coup tout les messages suivront le même format que ta class java fait "main"
     
  17. IceRhal

    IceRhal Membre

    Inscrit:
    20 Juin 2016
    Messages:
    35
    J'aime reçus:
    10
  18. astro05

    astro05 Membre

    Inscrit:
    3 Janvier 2017
    Messages:
    32
    J'aime reçus:
    14
    Je pense que je vais arrêter de répondre sur ce sujet ...

    Dans mes messages, je n'ai pratiquement pas de code étant donné qu'ils héritent d'une classe commune qui gère le plus gros. (Le format de mes classes est donc gérer dans cette classe mère)
    J'ai juste des méthode de sérialisation et dé-sérialisation que je redéfinis dans mes classe filles (les messages a proprement parlé).

    Ces méthodes sont très rapide a convertir (au final ça ne me dérange pas plus que ça a faire, au moins je comprend bien comment sont sérialisés les messages), et je n'éprouve pas le besoins pour le moment d'avoir un outil qui me traduis des messages automatiquement.
    Par contre un outil qui convertis de l'AS en Java me paraît plus long a implémenter et je suis pratiquement sur que je ne rentabiliserai pas le temps que j'ai investi dans un tel outil.

    Par exemple sur le lien github que vous m'avez envoyé, il y a un projet qui a l'aire d'avoir été généré avec un outil de traduction automatique dont vous m'avez parlé.
    Je vois qu'il y a pas mal de variables avec des noms de ce style : param1, param2, param3, _loc1_, _loc2_ ...

    Il n'y a aucune documentation sur les méthodes et les classes non plus.

    Je ne doute pas que ça fonctionne, mais étant très a cheval sur la qualité de code, je ne pourrai pas m'empêcher de modifier tout ça. ^^

    EDIT : Je ne dénigre pas le travail qui a été fais sur le repo en question, l'outil a parfaitement convertis le code AS vers C# comme il fallait le faire, simplement le résultat ne me conviendrait pas.
    Si vous avez un autre repo contenant le résultat de ce genre d'outil, mais avec des noms de variables correctement nommés et avec de la documentation cohérente, je suis éventuellement intéressé de savoir comment ça fonctionne et je vous invite a me le transmettre par MP. ;)
     
    Dernière édition: 30 Juillet 2018
  19. tazman59

    tazman59 Rédacteur

    Inscrit:
    20 Décembre 2012
    Messages:
    107
    J'aime reçus:
    27
    Pour les variables, en fait tu n'as pas le choix. Le client est un minimum offusqué ce qui fait que tu n'as pas accès au nom des variables (Sauf dans le client BETA). Donc les _loc_1, param1 c'est normal. Tu dois normalement avoir les même noms (à moins que tu utilises le client BETA).

    Crois en mon expérience, le ProtocolBuilder est un outil essentiel qui fait gagner des heures de boulot inutile et rébarbatif !

    Rien ne t'empêche de monter un ProtocolBuilder qui fonctionne exactement comme tu le souhaites, c'est à dire de retranscrire les variables et les méthodes Serialize / Deserialize et de peaufiner le reste à la main.

    A toi de décider, n'oublie pas que le développeur est fainéant mais très rusé ;)
    A+
     
    Dernière édition: 2 Août 2018

En naviguant sur ce site web, vous acceptez les Termes et Conditions d'utilisation. Tout le contenu que vous pourrez trouver sur ce site est soumis à la license Creative Commons.