Paquet absent en forgemagie

Inscrit
20 Aout 2022
Messages
2
Reactions
1
#1
Bonjour à tous, voilà quelques jours que je me suis donc lancé dans le parsing de paquets réseau de Dofus 2.0. Les messages n'ont pas été compliqués, mais je m'attaque aux paquets de forgemagie et c'est tout de suite une autre histoire.

Après quelques recherches par ci par là, je comprends qu'il est composé de différents paquets. Je m'y attaque doucement et comprends vite que ce sera bien plus compliqué que prévu vu la gu**le des paquets. Les paquets ne correspondent pas vraiment aux scripts décompilés. Quatres paquets donnent des résultats sur l'état de l'item et ses caractéristiques. "ObjectQuantityMessage", "ObjectModifiedMessage", "ExchangeCraftResultMagicWithObjectDescMessage", "ExchangeObjectAddedMessage".

Deux problèmes arrivent :
  1. Les paquets ne donnent des informations que sur les stats et jamais sur le relicat. Vous allez me dire, il faut seulement toujours calculer la différence. Petit problème : si l'item a déjà du relicat, c'est mort mais surtout on arrive au deuxième problème
  2. Parfois : il n'y a aucun message. Tout simplement. On peut juste se dire qu'il y aura occasionnellement un petit décalage et assez rare et c'est bon. Sauf que non, pourquoi ? S'il n'y a que des échec et succès critique, ou des succès neutre ça va, au pire il y aurait un décalage, sauf que non, comme ça peut être les deux, les calculs sont faussés
Auriez-vous des conseils ? De plus je ne comprends pas certains paquets, le paquet "ObjectQuantityMessage" contient 7 ou 8 bytes d'entrée que je ne parviens pas à décoder. Pour les autres paquets, ce sont des approximations de mon ressort. Je pourrai faire un post détaillé qui explique tout ça une fois que j'aurai réussi (vous ne devinerez jamais comment la quantité est implémentée).

Est que vous avez des réponses, des pistes de réponse ou des exemples open-source.
PS : je fais en C++ pour une meilleure gestion de la mémoire, mais à priori à moins que ce soit des librairies bien spécifiques, je devrais pouvoir comprendre.

Merci pour votre lecture
 
Inscrit
22 Octobre 2022
Messages
3
Reactions
0
#2
Je dévie un peu de ta question car je commence à faire quelque chose de similaire, je veux parse uniquement les paquets recus, mais je n'obtiens pas des fonctions que tu as. Je ssuis toujours sur l'ID 4433. As-tu obtenu ce prob ?
 
Inscrit
20 Aout 2022
Messages
2
Reactions
1
#3
Je m'excuse pour la réponse tardive, mais non, je ne vois pas vraiment ce que tu as. Tout ce que je vois c'est que les paquest semblent inconstant, et que parfois certains paquets ne s'envoient pas, ce qui est possible évidemment c'est qu'ils se mettent en buffer avant d'être envoyé au prochain transfert de paquet mais là encore, je ne vois rien
 

BlueDream

Administrateur
Membre du personnel
Inscrit
8 Decembre 2012
Messages
2 010
Reactions
149
#4
C'est un problème de décalage et de parsing à priori, vous avez comparé avec l'output des report ?

Pour générer un rapport il faut créer un fichier debug.txt vide à la racine du jeu, relancer le client et appuyer sur F11.

Si vous recevez correctement les bons ids vous devriez revoir votre algo dans son intégralité.
 
Inscrit
22 Octobre 2022
Messages
3
Reactions
0
#5
Je pense obtenir les bons paquets maintenant, du moins pour le 4294, j'obtiens ces variables :

<
Code:
craft_result=1 object_gid=50 effects_len=9 object_effect=[ObjectEffect(action_id=46, object_effect_id=5182), ObjectEffect(action_id=62, object_effect_id=29204), ObjectEffect(action_id=20, object_effect_id=32079), ObjectEffect(action_id=37, object_effect_id=15991), ObjectEffect(action_id=124, object_effect_id=5182), ObjectEffect(action_id=62, object_effect_id=5396), ObjectEffect(action_id=7, object_effect_id=45057), ObjectEffect(action_id=116, object_effect_id=5182), ObjectEffect(action_id=62, object_effect_id=1812)] quantity=6 magic_pool_status=20
Est-ce que les résultats de la fonction sont censés être interpretables (i.e je devrais voir le jet de l'item directement sans passer par le d20) ?

@BlueDream j'ai essayé de mettre le fichier à la racine, i.e C:\Users\user\AppData\Local\Ankama\Dofus et j'ai fait F11 + des actions, mais je n'ai pas accès à des logs, je chercherai un peu plus pour retrouver cela.
 
Dernière édition:
Haut Bas