TofuTrader: rentabilise ton craft !

Inscrit
16 Mars 2020
Messages
6
Reactions
1
#1
Salut tout le monde !

Ca fait un moment que je traine sur ce forum, mais à chaque fois que je voulais entreprendre quelque chose en suivant les tutoriels, je me retrouvais vite bloqué. Et pour cause, le C#/.NET, c'était vraiment pas mon truc ...

Ayant un peu de temps libre et voulant monter mes professions dans le jeu, je me suis dit que ça devrait être accessible de sniffer les paquets envoyés/reçus dans le jeu, les parser, et avec ça, trouver les recettes pour perdre le moins d'argent en montant le métier.

Et c'est pas trop mal ! J'y suis arrivé en plusieurs étapes:

D'abord première mission: sniffer de packets !
Pas si dur que ça, car c'est déjà fait sur le forum (coucou Labo) https://cadernis.fr/index.php?threads/python-mac-pyshark-pour-sniffer-en-live-les-paquets.1486/
Avec ça, j'ai de quoi récupérer mes données.

Ensuite, déserialiser les packets !
Idem, on m'a déjà mâché le travail, merci Pepito ! https://cadernis.fr/index.php?threa...decoder-i18napi-et-treasure-hunt-helper.2430/
Le webd2decoder fonctionne très bien, j'ai juste eu à l'adapter pour traiter seulement les packets qui m'intéresse :)

Bon ok j'ai tout ce qu'il faut pour voir en clair ce qu'il se passe maintenant.

J'ai pu récupérer une petite banque de données de tout les items du jeu avec leurs crafts associés, quelqu'un s'est chauffé et a tout mis dans une API REST (gg à lui d'ailleurs)

Il ne me restait plus qu'a parser les messages de type 'ExchangeTypesItemsExchangerDescriptionForUserMessage' et le tour était joué: j'avais pu récupérer les prix (x1, x10, x100) avec les ids associés et les recettes.

Un petit front web en react avec un tableau paginé et trié, et paf !

tofu.png

Et ouais mais c'était pas dingue quand même.
Y'a plusieurs choses qui sont pas dingues :
  • La façon dont je parse les prix. Le packet est envoyé quand on clique sur un item en HDV. J'ai beau avoir un petit script AHK qui tourne en auto, c'est long et des fois l'hdv bug en jeu et du coup y'a des données qui pop pas. J'aurai aimé prendre le prix moyen référence, mais impossible de mettre la main sur le packet qui renvoie le prix moyen de tout les items de l'hdv quand on l'ouvre :/
  • Le tri sur le tableau fonctionne pas (ça c'est parce que je suis nul et que j'ai pas pris le temps de comprendre pourquoi)
  • Je voulais mettre des images pour que ça fasse joli mais les URL des images fonctionne pas si on les appelle depuis un serveur web distant j'ai l'impression
  • Je dois parser les prix des armes/équipements différemment, j'ai l'impression que ça prends le prix le plus élevé, faut que je regarde le détail du packet des armes.
  • C'est trop éparpillé, j'ai un script qui parse l'hdv d'un coté, un webserver qui décode de l'autre, un sniffer à part, mon projet web autonome, des fichiers json qui traine etc... Ca passe après le reste vu que ça marche pour le moment, mais c'est caca.
Je sais pas si je continuerai ça longtemps, mais je me suis dit que ça voulait le coup de partager, vu que je dois pas être le seul à avoir penser à ça ! Après je veux pas non plus abuser de ça pour laisser a ceux qui poncent l'hdv tout les jours leur source de revenus :)
Si jamais vous savez comment résoudre certaines problématiques, je suis preneur ! (notamment au niveau des packets, pour éviter de faire les clics manuels dans les hdv)

Cheers!
 
Dernière édition:

tazman59

Contributeur
Inscrit
20 Decembre 2012
Messages
148
Reactions
25
#2
gg c'est déjà bien !
 
Inscrit
28 Mai 2017
Messages
9
Reactions
0
#3
Salut tout le monde !
Et ouais mais c'était pas dingue quand même.
Y'a plusieurs choses qui sont pas dingues :
  • La façon dont je parse les prix. Le packet est envoyé quand on clique sur un item en HDV. J'ai beau avoir un petit script AHK qui tourne en auto, c'est long et des fois l'hdv bug en jeu et du coup y'a des données qui pop pas. J'aurai aimé prendre le prix moyen référence, mais impossible de mettre la main sur le packet qui renvoie le prix moyen de tout les items de l'hdv quand on l'ouvre :/
  • Le tri sur le tableau fonctionne pas (ça c'est parce que je suis nul et que j'ai pas pris le temps de comprendre pourquoi)
  • Je voulais mettre des images pour que ça fasse joli mais les URL des images fonctionne pas si on les appelle depuis un serveur web distant j'ai l'impression
  • Je dois parser les prix des armes/équipements différemment, j'ai l'impression que ça prends le prix le plus élevé, faut que je regarde le détail du packet des armes.
  • C'est trop éparpillé, j'ai un script qui parse l'hdv d'un coté, un webserver qui décode de l'autre, un sniffer à part, mon projet web autonome, des fichiers json qui traine etc... Ca passe après le reste vu que ça marche pour le moment, mais c'est caca.

Cheers!
Hey !

Heureux que mon travail ait pu servir à quelqu'un !

Concernant le prix moyen, je pense que c'est une donnée calculée, du cou,p elle ne sera présente dans aucun packet. Juste par curiosité, tu utilises un script qui parcourt tous les items des hdv ?

Concernant ton dernier point, c'est éparpillé effectivement mais si ça peut te rassurer, le monde est fait comme ça, toutes les entreprises tournent avec des architectures distribuées, tu peux avoir des dizaines d'applications qui communiquent entre elles pour répondre à une seule question ! Donc 3 composants qui communiquent entre eux ça me choque pas ;) le travail que tu peux faire pour gommer cette complexité c'est une IHM béton qui va rendre l'expérience facile d'utilisation
 
Inscrit
26 Janvier 2016
Messages
99
Reactions
34
#4
Pour aller plus loin et plus faire manuellement il te faudrat un vrai mitm pour envoyer tes propres paquets !
 
Dernière édition:
Inscrit
16 Mars 2020
Messages
6
Reactions
1
#5
Concernant le prix moyen, je pense que c'est une donnée calculée, du cou,p elle ne sera présente dans aucun packet. Juste par curiosité, tu utilises un script qui parcourt tous les items des hdv ?
Aie, en effet si c'est calculé à la volée c'est dommage... En plus ils pourraient le faire coté back, ca fait ca de moins a calculer sur nos machines mais bon, tant pis !


Et oui j'utilises un script AHK pour parcourir l'HDV, (click sur l'item, scroll, repeat)mais ça marche que partiellement :
  • l'HDV bug des fois (ça se déroule pas quand je clique)
  • J'ai 2 hdv à faire (consommables + equipments minimum)
  • certains paquets sont gros et du coup se retrouve sur plusieurs messages (je soupconne) du coup dans le script (ton script d'ailleurs !), j'ai un log "Could not parse message: Not complete" :/ d'ailleurs si tu connais une solution pour ce problème ça serait top, je m'y connais pas trop en flux TCP !
J'ai réussi a récupérer le prix mini des armes et du coup les données sont plus cohérentes maintenant, et le tri sur mon tableau fonctionne, c'est déjà plus propre qu'avant :)

Brasvengeur a dit:
Pour aller plus loin et plus faire manuellement il te faudrat un vrai mitm pour envoyer tes propres paquets !
Exactement ! Mais là ça va me demander beaucoup plus de temps je pense, et en plus je suis pas très à l'aise sur python/.net, faudrait que j'arrive à trouver une base en node.js pour que je puisse plus facilement developper des choses !
 
Inscrit
22 Juillet 2018
Messages
81
Reactions
12
#6
Potentiellement si ca peut aider, je peux fournir une base très sommaire en C# qui gérera les stream TCP pour vous (framing, etc.), puis j'expose ca dans un bus (rabbitmq...à vous de voir si vous voulez autre chose ?) comme ca vous pouvez consommer Dofus sans vous casser la tête sur la logique bas niveaux et utiliser le langage que vous voulez. Attention je ne fournis pas l'aspect serialization car j'ai la flemme et que c'est plus long
 
Inscrit
16 Mars 2020
Messages
6
Reactions
1
#7
Salut !

Ca peut m'interesser oui :)
Concrètement, c'est un outil autonome qui récupère le flux et expose l'id + contenu des paquets ?
Si c'est ça je suis preneur, j'aurai plus qu'a faire la serialization mais elle est déjà faite donc j'aurai "juste" à changer la source des données.

Manque plus qu'un MITM et toutes les problèmatiques seront réglées avec ça ;)
 
Inscrit
22 Juillet 2018
Messages
81
Reactions
12
#8
C'est un MITM qui expose les messages avec possibilité d'écrire et qui gère la couche bas niveau TCP
 
Inscrit
16 Mars 2020
Messages
6
Reactions
1
#9
Super ça ! Si tu as un github, je suis preneur :)
 
Inscrit
27 Février 2017
Messages
1
Reactions
0
#10
Je serai également preneur si possible, j'aimerais créer un bot, or le très bas niveau me bloque pas mal pour commencer.
 
Inscrit
22 Juillet 2018
Messages
81
Reactions
12
#11
OK, bien noté. Je m'en occupe ce week-end
 
Inscrit
20 Juin 2019
Messages
6
Reactions
2
#12
Ça serait vraiment énorme de mettre se travail à profit ! *_*
Il y aurait une faisabilité sur Dofus Touch ? :)
 
Inscrit
8 Novembre 2017
Messages
8
Reactions
0
#13
Salut tout le monde !

Ca fait un moment que je traine sur ce forum, mais à chaque fois que je voulais entreprendre quelque chose en suivant les tutoriels, je me retrouvais vite bloqué. Et pour cause, le C#/.NET, c'était vraiment pas mon truc ...

Ayant un peu de temps libre et voulant monter mes professions dans le jeu, je me suis dit que ça devrait être accessible de sniffer les paquets envoyés/reçus dans le jeu, les parser, et avec ça, trouver les recettes pour perdre le moins d'argent en montant le métier.

Et c'est pas trop mal ! J'y suis arrivé en plusieurs étapes:

D'abord première mission: sniffer de packets !
Pas si dur que ça, car c'est déjà fait sur le forum (coucou Labo) https://cadernis.fr/index.php?threads/python-mac-pyshark-pour-sniffer-en-live-les-paquets.1486/
Avec ça, j'ai de quoi récupérer mes données.

Ensuite, déserialiser les packets !
Idem, on m'a déjà mâché le travail, merci Pepito ! https://cadernis.fr/index.php?threa...decoder-i18napi-et-treasure-hunt-helper.2430/
Le webd2decoder fonctionne très bien, j'ai juste eu à l'adapter pour traiter seulement les packets qui m'intéresse :)

Bon ok j'ai tout ce qu'il faut pour voir en clair ce qu'il se passe maintenant.

J'ai pu récupérer une petite banque de données de tout les items du jeu avec leurs crafts associés, quelqu'un s'est chauffé et a tout mis dans une API REST (gg à lui d'ailleurs)

Il ne me restait plus qu'a parser les messages de type 'ExchangeTypesItemsExchangerDescriptionForUserMessage' et le tour était joué: j'avais pu récupérer les prix (x1, x10, x100) avec les ids associés et les recettes.

Un petit front web en react avec un tableau paginé et trié, et paf !

Afficher la pièce jointe 314

Et ouais mais c'était pas dingue quand même.
Y'a plusieurs choses qui sont pas dingues :
  • La façon dont je parse les prix. Le packet est envoyé quand on clique sur un item en HDV. J'ai beau avoir un petit script AHK qui tourne en auto, c'est long et des fois l'hdv bug en jeu et du coup y'a des données qui pop pas. J'aurai aimé prendre le prix moyen référence, mais impossible de mettre la main sur le packet qui renvoie le prix moyen de tout les items de l'hdv quand on l'ouvre :/
  • Le tri sur le tableau fonctionne pas (ça c'est parce que je suis nul et que j'ai pas pris le temps de comprendre pourquoi)
  • Je voulais mettre des images pour que ça fasse joli mais les URL des images fonctionne pas si on les appelle depuis un serveur web distant j'ai l'impression
  • Je dois parser les prix des armes/équipements différemment, j'ai l'impression que ça prends le prix le plus élevé, faut que je regarde le détail du packet des armes.
  • C'est trop éparpillé, j'ai un script qui parse l'hdv d'un coté, un webserver qui décode de l'autre, un sniffer à part, mon projet web autonome, des fichiers json qui traine etc... Ca passe après le reste vu que ça marche pour le moment, mais c'est caca.
Je sais pas si je continuerai ça longtemps, mais je me suis dit que ça voulait le coup de partager, vu que je dois pas être le seul à avoir penser à ça ! Après je veux pas non plus abuser de ça pour laisser a ceux qui poncent l'hdv tout les jours leur source de revenus :)
Si jamais vous savez comment résoudre certaines problématiques, je suis preneur ! (notamment au niveau des packets, pour éviter de faire les clics manuels dans les hdv)

Cheers!
Ahaha je suis en train de faire un projet qui ressemble beaucoup au tiens : actuellement je récupère les prix que je relie aux items et aux recipes dans une petite DB SQLite3 (le sniffing et decoding se fait grâce au superbe LaBot).
La différence réside dans l'utilisation, je veux de mon côté pouvoir récupérer les prix à des fins d'analyses probabilistes (j'ai quelques algos de prédiction boursières en rab que je souhaite tester sur les prix de dofus) puis d'automatisation d'ordre d'achat / vente en utilisant une approche MITM.
Et j'en suis au même point que toi du coup : comment automatiser la récupération des prix et l'achat vente par un MITM. Je te conseille le repo de l'ami @Labo https://github.com/louisabraham/LaBot d'ailleurs, en étudiant et en faisant évoluer son code je ne désespère pas d'y arriver !

Bonne chance à toi, n'hésite pas à me contacter si tu veux qu'on s'entraide :)
 
Inscrit
14 Decembre 2012
Messages
48
Reactions
2
#14
Si tu veux les prix moyens tu peux regarder pour le fichier itemAveragePrices.dat dans AppData\Roaming\Dofus qui contient une version cache de ton jeu.
 
Inscrit
8 Novembre 2017
Messages
8
Reactions
0
#15
Les prix moyens sont souvent faussés et ne permettent pas l'achat / revente avec une fréquence élevée malheureusement (mais merci du tuyau je trouverai surement moyen de corréler ça avec d'autres données !)
 
Inscrit
26 Janvier 2016
Messages
99
Reactions
34
#16
Ahaha je suis en train de faire un projet qui ressemble beaucoup au tiens : actuellement je récupère les prix que je relie aux items et aux recipes dans une petite DB SQLite3 (le sniffing et decoding se fait grâce au superbe LaBot).
La différence réside dans l'utilisation, je veux de mon côté pouvoir récupérer les prix à des fins d'analyses probabilistes (j'ai quelques algos de prédiction boursières en rab que je souhaite tester sur les prix de dofus) puis d'automatisation d'ordre d'achat / vente en utilisant une approche MITM.
Et j'en suis au même point que toi du coup : comment automatiser la récupération des prix et l'achat vente par un MITM. Je te conseille le repo de l'ami @Labo https://github.com/louisabraham/LaBot d'ailleurs, en étudiant et en faisant évoluer son code je ne désespère pas d'y arriver !

Bonne chance à toi, n'hésite pas à me contacter si tu veux qu'on s'entraide :)

Pense à corréler tes données avec l'almanax sur 2.0 il fait flamber les prix moyen sur x jours ça pourrait fausser tes analyses si tu le prends pas en compte.
 
Inscrit
8 Novembre 2017
Messages
8
Reactions
0
#17
Pense à corréler tes données avec l'almanax sur 2.0 il fait flamber les prix moyen sur x jours ça pourrait fausser tes analyses si tu le prends pas en compte.
Effectivement je n'y avais pas pensé, merci !
 
Inscrit
8 Novembre 2017
Messages
8
Reactions
0
#18
Bon et bien le bot tourne bien en automatique sur les HDV, tout est stocké en BDD et j'ai une web app de back office pour visualiser les courbes des prix ressources / équipement / consommables, rentabilité craft / achat, nombre de ventes de chaque équipement par jour, calculs de volatilité des prix etc...

Ce qu'il reste à faire :
- détection des exos sur les items
- parsing des ventes dans les canaux (par mots clés)
- ventes et achats automatiques (après avoir paper-testé des prédictions)

Si vous avez d'autres idées je suis preneur !
 
Inscrit
22 Mars 2017
Messages
26
Reactions
12
#19
On avait bossé pas mal là dessus.

Le prix de vente des items était pas hyper intéressant parce que la variance est élevée.

Par contre tu peux calculer le nombre de runes que tu peux avoir en brisant un objet à un coefficient donné.
Ça veut dire que tu peux prendre ça dans l'autre sens et calculer le coefficient minimal pour que le brisage d'un item soit rentable. Donc si ton script de dit que t'es rentable à 30% de coeff de brisage, t'es assez sûr de ton coup.

Pour ça t'as besoin du prix des items/ressources de craft et des runes et des recettes. T'as quasiment déjà tout ça, donc tu peux y aller :)
 
Inscrit
8 Novembre 2017
Messages
8
Reactions
0
#20
Je trouve que la variance est surtout élevée à cause des exos, mais maintenant je les filtre ça va mieux (en fait je prends des snapshots de l'HDV une fois par jour maintenant). Après j'utilise l'écart type pour calculer des bandes de bollinger et tenter de prévoir les cours des ressources également.
Pour récupérer le coefficient il faut aller sur le concasseur nn ? ça voudrait dire que si je veux traiter des items que j'ai pas je dois les acheter et les mettre dedans ? Ca risque d'être un peu long sans réserve super élevée de k non ?
 
Haut Bas