C# Past emulateur Dofus 2.0.0

Inscrit
16 Mars 2014
Messages
214
Reactions
30
#1

Salut je fais ce sujet pour vous présenter un projet d'émulateur pour Dofus et non pas pour l'une des dernières versions du jeu mais pour la toutes première version beta de Dofus 2.0.0.​

L'émulateur ce nomme Past, il est en C#.
Pour le moment rien de bien concret le code y est très brouillon et simpliste (histoire de vérifier si le client fonctionné)


Merci à Silyseveur pour le client.

L'émulateur est open-source : https://github.com/skeezr/Past
Si jamais des personnes souhaitent également travailler sur cette version je peux vous fournir un lien pour le client (je ne pense pas avoir le droit de le poster ici ?), sinon les sources AS sont sur mon github :)
 
Dernière édition:
Inscrit
18 Février 2015
Messages
228
Reactions
7
#2
Bonne chance l'ami ^^
PS: j'ai vu que tu avais fait un repo StreetGears mais sans rien dedans dommage :(
 
Inscrit
16 Mars 2014
Messages
214
Reactions
30
#3
Bonne chance l'ami ^^
PS: j'ai vu que tu avais fait un repo StreetGears mais sans rien dedans dommage :(
Oui j'ai perdu toutes mes sources mais de toutes manière maintenant itsexe à bien avancer :p
 
Inscrit
18 Février 2015
Messages
228
Reactions
7
#4
Oui j'ai perdu toutes mes sources mais de toutes manière maintenant itsexe à bien avancer :p
Haha oui effectivement mais bon ça me plait pas beaucoup le C++ xD
 

BlueDream

Administrateur
Membre du personnel
Inscrit
8 Decembre 2012
Messages
2 010
Reactions
149
#5
Bonne chance ;)
 

Sorrow

Membre Actif
Inscrit
5 Mai 2012
Messages
376
Reactions
26
#6
Nice <3
 

Rtxx

Membre
Inscrit
15 Novembre 2014
Messages
70
Reactions
0
#7
C'est quoi la différence entre un "émulateur" et un "bot" ?
 
Inscrit
18 Février 2015
Messages
228
Reactions
7
#8
C'est quoi la différence entre un "émulateur" et un "bot" ?
Wow toi tu viens de loin...

En gros un émulateur c'est pour que les client ou les bots puisse jouer en réseau comme les serveur de l'officiel et un bot ça permet d'imiter ce que fait un joueur de façon automatique...
 

Rtxx

Membre
Inscrit
15 Novembre 2014
Messages
70
Reactions
0
#9
Wow toi tu viens de loin...

En gros un émulateur c'est pour que les client ou les bots puisse jouer en réseau comme les serveur de l'officiel et un bot ça permet d'imiter ce que fait un joueur de façon automatique...
Je sais ce qu'est un bot, je sais ce qu'est un émulateur, je sais pas quelle est la différence niveau programmation :)
 
Inscrit
16 Mars 2014
Messages
214
Reactions
30
#10
Je sais ce qu'est un bot, je sais ce qu'est un émulateur, je sais pas quelle est la différence niveau programmation :)
La différence est mince dans les deux cas tu reproduit les mécanismes du jeu, le bot pour les automatiser et l'émulateur pour les reproduire. L'émulateur tu doit gérer tous les packets entrant et sortant, le bot tu peut te contenter de faire transiter certains packets et d'en gérer d'autres
 
Inscrit
6 Avril 2016
Messages
85
Reactions
40
#11
Bon courage, dommage que le git soit vide j'ai hâte de regarder ça, intéressant de bosser sur une version primaire comme la 2.0.0 ^^
 
Inscrit
27 Mai 2016
Messages
14
Reactions
0
#12
Pour moi, c'est déjà assez impressionnant en l'état actuel alors une fois avancé je me demande qu'elle sera ma réaction.

Bonne chance pour la suite, je me doute bien que ce genre de connerie c'est difficile à mettre en place ! :)
 
Inscrit
25 Novembre 2015
Messages
169
Reactions
20
#13
Bonjour, tout d'abord merci pour votre travail ! Un serveur sur la première version de Dofus 2.0 est ce qui m'intéresse le plus.

J'ai essayé de faire fonctionner votre émulateur avec mon modeste bagage en informatique et malheureusement je n'y suis pas parvenu.
Je suis plus un bidouilleur qu'un programmeur, j'arrive à comprendre plus ou un moins un programme selon sa taille (je n'ai pas de connaissances précises en programmation, je ne connais pas un langage en particulier mais les grands principes de la programmation). Le langage sur lequel je me suis penché dernièrement est le python. Quel rapport me direz-vous ? Aucun, je me présente juste vite fais.

Enfin bref, rentrons dans le vif du sujet. Pour information j'ai déjà étudier plusieurs code sources d'émulateur et de bots différents sur différentes versions (sharkemu, BiM...) et je comprends plus ou moins les protocoles du jeu Dofus (sur les deux versions, à savoir 1.29.1 et 2.X). Ce que j'ai compris :

- Dofus 2 : les packets sont en endianness, il faut de quoi les comprendre donc grâce aux IO contenu dans la plupart des sources (reader et writer)
Je dois encore me documenter sur le protocole TCP/IP afin de comprendre les sockets (qui sont utilisés pour faire transiter les packets).

Tout d'abord j'ai essayé d'ouvrir le projet, ce qui s'est soldé d'un minable échec (hahaha), donc après avoir rechercher sur internet la solution à mon problème (framework manquant, dll manquante, probleme avec le microsoft.visualstudio.editor.implementation.editorpackage etc...).

Ensuite, j'ai survolé l'ensemble du code, ce que j'en ai compris :

Past.Protocol : le "coeur" du programme, contiens la "base de donnée" du jeu, là où les autres émulateurs ont une base de donnée en .sql pour stocker les informations relatives aux monstres/items/personnages/compte... Past les stock directement dans le programme grâce au type enuméré. Contiens de plus les différents packet qui transite entre le client et le serveur (id du packet + contenu du packet si je ne me trompe pas ?)
Past : le programme en lui même, contiens l'IO (input/output ?) c'est-à-dire le reader et le writer en endianness (qu'est-ce que c'est les IDATA ? Car il y a aussi un reader/writer pour cela), le "network" (réseau ?), et la console qui affiche les erreurs et les différentes actions.
Past.Tool : buffer ?

Voilà, donc après avoir compris cela j'ai essayer de générer la solution, ce qui s'est soldé d'un minable échec (encore hahah). Voici les erreurs que j'ai :


J'ai de plus relevé un autre problème :



Et pour finir, j'ai remarqué que dans Past.Protocol/Messages/Debug il y avait 3 fichiers manquants. A savoir :
- DebugClearHighlightCellsMessage.cs
- DebugHighlightCellsMessage.cs
- DebugInClientMessage.cs

J'ai pu régler le problème ci-dessus en piochant dans d'autres sources (BlueSheep lui même basé sur BiM si je ne dis pas de bêtises). Vous pouvez consulter le code en cliquant sur le nom du fichier souhaité. Je ne sais pas si cela a régler le problème mais en tout cas je n'ai plus d'erreur concernant ce problème !

Pour la première erreur, même après des recherches j'ai toujours pas compris comment la régler. Peut-être que c'est lié à la seconde erreur ?

Pour la seconde erreur, elle me paraît très étrange puisque la classe NetworkMessage est défini dans Past.Protocol, ce qui nous mène à la deuxième image : la référence est manquante alors qu'elle est dans l'arborescence de la solution. Ce que je trouve étrange c'est le fait que la référence soit manquante alors qu'elle est (comme dit) dans la solution ce qui créer une erreur.

Merci de m'avoir lu, si vous avez une ou des solutions à mes problèmes merci de m'en faire part.
Merci à skeezr pour son projet très intéressant.
 
Dernière édition:
Inscrit
16 Mars 2014
Messages
214
Reactions
30
#14
Past.Protocol : le "coeur" du programme, contiens la "base de donnée" du jeu, là où les autres émulateurs ont une base de donnée en .sql pour stocker les informations relatives aux monstres/items/personnages/compte... Past les stock directement dans le programme grâce au type enuméré. Contiens de plus les différents packet qui transite entre le client et le serveur (id du packet + contenu du packet si je ne me trompe pas ?)
Past : le programme en lui même, contiens l'IO (input/output ?) c'est-à-dire le reader et le writer en endianness (qu'est-ce que c'est les IDATA ? Car il y a aussi un reader/writer pour cela), le "network" (réseau ?), et la console qui affiche les erreurs et les différentes actions.
Past.Tool : buffer ?
Past.Protocol c'est la ou y est stocker tout le protocol du jeu, pour le moment il n'y a aucune base donnée et aucune infos concernant les comptes, personnages encore moins concernant les items monstres etc :p
Past C'est la coeur de l'emu tout ce passe ici, les IData c'est juste des interfaces
Past.Tool c'est la partie inutile pour le moment

Sinon je te conseille d'attendre je vais remettre à jours le git pour que tu puisse lancer sans problème
 
Inscrit
25 Novembre 2015
Messages
169
Reactions
20
#15
Merci pour ta réponse, je vais patienter alors !
 
Inscrit
25 Novembre 2015
Messages
169
Reactions
20
#17
Erreur 7 Le fichier de métadonnées 'C:\Users\...Past-master\Past.Protocol\bin\Debug\Past.Protocol.dll' est introuvable C:\Users\...\Past-master\Past\CSC Past

Il semblerait que la DLL soit manquante, et impossible de la générer à causes d'autres erreurs...
Les 3 fichiers dans Past.Protocol/Messages/Debug sont toujours manquant, et avec ton nouveau build ceux que j'ai ajouté à l'autre solution sont maintenant plus compatible car l'IO se trouve maintenant dans Past.Protocol, et même en modifiant l'using à savoir : "using Past.Protocol.IO" cela créer d'autres erreurs tel que :

Erreur 11 'Past.Protocol.Messages.debug.DebugClearHighlightCellsMessage.Deserialize(Past.Protocol.IO.BigEndianReader)' : aucune méthode appropriée n'a été trouvée pour la substitution C:\Users\NONAME\Desktop\Past-master\Past-master\Past.Protocol\Messages\debug\DebugClearHighlightCellsMessage.cs 26 30 Past.Protocol
Erreur 9 'Past.Protocol.Messages.debug.DebugClearHighlightCellsMessage.ProtocolID' : aucune méthode appropriée n'a été trouvée pour la substitution C:\Users\NONAME\Desktop\Past-master\Past-master\Past.Protocol\Messages\debug\DebugClearHighlightCellsMessage.cs 11 30 Past.Protocol
Erreur 10 'Past.Protocol.Messages.debug.DebugClearHighlightCellsMessage.Serialize(Past.Protocol.IO.BigEndianWriter)' : aucune méthode appropriée n'a été trouvée pour la substitution C:\Users\NONAME\Desktop\Past-master\Past-master\Past.Protocol\Messages\debug\DebugClearHighlightCellsMessage.cs 22 30 Past.Protocol
Erreur 15 'Past.Protocol.Messages.debug.DebugHighlightCellsMessage.Deserialize(Past.Protocol.IO.BigEndianReader)' : aucune méthode appropriée n'a été trouvée pour la substitution C:\Users\NONAME\Desktop\Past-master\Past-master\Past.Protocol\Messages\debug\DebugHighlightCellsMessage.cs 39 30 Past.Protocol
Erreur 8 'Past.Protocol.Messages.debug.DebugHighlightCellsMessage.ProtocolID' : aucune méthode appropriée n'a été trouvée pour la substitution C:\Users\NONAME\Desktop\Past-master\Past-master\Past.Protocol\Messages\debug\DebugHighlightCellsMessage.cs 11 30 Past.Protocol
Erreur 13 'Past.Protocol.Messages.debug.DebugHighlightCellsMessage.Serialize(Past.Protocol.IO.BigEndianWriter)' : aucune méthode appropriée n'a été trouvée pour la substitution C:\Users\NONAME\Desktop\Past-master\Past-master\Past.Protocol\Messages\debug\DebugHighlightCellsMessage.cs 29 30 Past.Protocol
Erreur 14 'Past.Protocol.Messages.debug.DebugInClientMessage.Deserialize(Past.Protocol.IO.BigEndianReader)' : aucune méthode appropriée n'a été trouvée pour la substitution C:\Users\NONAME\Desktop\Past-master\Past-master\Past.Protocol\Messages\debug\DebugInClientMessage.cs 35 30 Past.Protocol
Erreur 7 'Past.Protocol.Messages.debug.DebugInClientMessage.ProtocolID' : aucune méthode appropriée n'a été trouvée pour la substitution C:\Users\NONAME\Desktop\Past-master\Past-master\Past.Protocol\Messages\debug\DebugInClientMessage.cs 11 30 Past.Protocol
Erreur 12 'Past.Protocol.Messages.debug.DebugInClientMessage.Serialize(Past.Protocol.IO.BigEndianWriter)' : aucune méthode appropriée n'a été trouvée pour la substitution C:\Users\NONAME\Desktop\Past-master\Past-master\Past.Protocol\Messages\debug\DebugInClientMessage.cs 29 30 Past.Protocol

J'ai oublier de préciser que j'ai des avertissements :

Avertissement 2 Il existe une différence entre l'architecture de processeur du projet en cours de génération "MSIL" et l'architecture de processeur de référence "C:\Windows\Microsoft.NET\Framework\v4.0.30319\mscorlib.dll", "x86". Cette différence peut entraîner des problèmes de runtime. Veuillez modifier l'architecture de processeur ciblée de votre projet à l'aide du gestionnaire de configuration de façon à aligner les architectures de processeur entre votre projet et les références, ou prendre une dépendance sur les références avec une architecture de processeur correspondant à l'architecture de processeur ciblée de votre projet. Past.Tools
Avertissement 17 Il existe une différence entre l'architecture de processeur du projet en cours de génération "MSIL" et l'architecture de processeur de référence "C:\Windows\Microsoft.NET\Framework\v4.0.30319\mscorlib.dll", "x86". Cette différence peut entraîner des problèmes de runtime. Veuillez modifier l'architecture de processeur ciblée de votre projet à l'aide du gestionnaire de configuration de façon à aligner les architectures de processeur entre votre projet et les références, ou prendre une dépendance sur les références avec une architecture de processeur correspondant à l'architecture de processeur ciblée de votre projet. Past.Protocol
Avertissement 20 Il existe une différence entre l'architecture de processeur du projet en cours de génération "MSIL" et l'architecture de processeur de référence "C:\Windows\Microsoft.NET\Framework\v4.0.30319\mscorlib.dll", "x86". Cette différence peut entraîner des problèmes de runtime. Veuillez modifier l'architecture de processeur ciblée de votre projet à l'aide du gestionnaire de configuration de façon à aligner les architectures de processeur entre votre projet et les références, ou prendre une dépendance sur les références avec une architecture de processeur correspondant à l'architecture de processeur ciblée de votre projet. Past
Avertissement 3 Il existe une différence entre l'architecture de processeur du projet en cours de génération "MSIL" et l'architecture de processeur de référence "System.Data", "AMD64". Cette différence peut entraîner des problèmes de runtime. Veuillez modifier l'architecture de processeur ciblée de votre projet à l'aide du gestionnaire de configuration de façon à aligner les architectures de processeur entre votre projet et les références, ou prendre une dépendance sur les références avec une architecture de processeur correspondant à l'architecture de processeur ciblée de votre projet. Past.Tools
Avertissement 18 Il existe une différence entre l'architecture de processeur du projet en cours de génération "MSIL" et l'architecture de processeur de référence "System.Data", "AMD64". Cette différence peut entraîner des problèmes de runtime. Veuillez modifier l'architecture de processeur ciblée de votre projet à l'aide du gestionnaire de configuration de façon à aligner les architectures de processeur entre votre projet et les références, ou prendre une dépendance sur les références avec une architecture de processeur correspondant à l'architecture de processeur ciblée de votre projet. Past.Protocol
Avertissement 21 Il existe une différence entre l'architecture de processeur du projet en cours de génération "MSIL" et l'architecture de processeur de référence "System.Data", "AMD64". Cette différence peut entraîner des problèmes de runtime. Veuillez modifier l'architecture de processeur ciblée de votre projet à l'aide du gestionnaire de configuration de façon à aligner les architectures de processeur entre votre projet et les références, ou prendre une dépendance sur les références avec une architecture de processeur correspondant à l'architecture de processeur ciblée de votre projet. Past
Avertissement 6 Le membre 'Past.Protocol.Messages.debug.DebugClearHighlightCellsMessage.ID' ne masque pas un membre hérité. Le mot clé new n'est pas requis. C:\Users\NONAME\Desktop\Past-master\Past-master\Past.Protocol\Messages\debug\DebugClearHighlightCellsMessage.cs 10 31 Past.Protocol
Avertissement 5 Le membre 'Past.Protocol.Messages.debug.DebugHighlightCellsMessage.ID' ne masque pas un membre hérité. Le mot clé new n'est pas requis. C:\Users\NONAME\Desktop\Past-master\Past-master\Past.Protocol\Messages\debug\DebugHighlightCellsMessage.cs 10 31 Past.Protocol
Avertissement 4 Le membre 'Past.Protocol.Messages.debug.DebugInClientMessage.ID' ne masque pas un membre hérité. Le mot clé new n'est pas requis. C:\Users\NONAME\Desktop\Past-master\Past-master\Past.Protocol\Messages\debug\DebugInClientMessage.cs 10 31 Past.Protocol
Avertissement 1 les assemblys de référence pour le framework ".NETFramework,Version=v4.5.2" sont introuvables. Pour résoudre ce problème, installez le SDK ou le Targeting Pack pour cette version de framework ou reciblez votre application vers une version du framework pour laquelle le SDK ou le Targeting Pack est installé. Les assemblys seront résolus à partir du Global Assembly Cache (GAC) et seront utilisés à la place des assemblys de référence. C'est pourquoi votre assembly peut ne pas cibler correctement le framework souhaité. Past.Tools
Avertissement 16 les assemblys de référence pour le framework ".NETFramework,Version=v4.5.2" sont introuvables. Pour résoudre ce problème, installez le SDK ou le Targeting Pack pour cette version de framework ou reciblez votre application vers une version du framework pour laquelle le SDK ou le Targeting Pack est installé. Les assemblys seront résolus à partir du Global Assembly Cache (GAC) et seront utilisés à la place des assemblys de référence. C'est pourquoi votre assembly peut ne pas cibler correctement le framework souhaité. Past.Protocol
Avertissement 19 les assemblys de référence pour le framework ".NETFramework,Version=v4.5.2" sont introuvables. Pour résoudre ce problème, installez le SDK ou le Targeting Pack pour cette version de framework ou reciblez votre application vers une version du framework pour laquelle le SDK ou le Targeting Pack est installé. Les assemblys seront résolus à partir du Global Assembly Cache (GAC) et seront utilisés à la place des assemblys de référence. C'est pourquoi votre assembly peut ne pas cibler correctement le framework souhaité. Past


EDIT :

Une vidéo t'aidera peut-être mieux à visualiser mon problème :



Si j'arrive à faire fonctionner ton émulateur je pourrais sans problème participer à son développement. A terme, je bidouillerai (tout en apprenant les tenants et aboutissement de la programmation en C#) l'émulateur pour implanter une gestion de base de donnée mySQL. D'après ce que j'ai pu lire sur la toile, cette version est à peu de chose près la même que dofus 1.29.1 (au niveau du contenu), c'est-à-dire pas de .d2i, .d2o etc... Que du .swf (facile pour modifier le client).

De ce fait, une base de donnée d'un serveur 1.29 devrait fonctionner avec cet émulateur sans soucis ? Il existe des bases complète niveau monstres, item, sort, effet de sort, taux de drop comme sur le serveur officiel etc... Je pense notamment à celle de sharkemu (RC3). Comme vous l'aurez deviné, mon but est de créer un émulateur reproduisant le jeu et ses mécaniques à la perfection (comme sur la version officiel de l'époque) que ce soit au niveau du PVP ou du PVM, en passant par l'élevage, les guildes, les traques, et tous les autres contenu implanté dans le jeu.

Par la suite, il serait intéressant d'ajouter du contenu des versions ultérieurs directement dans le client et de rendre cela jouable grâce au serveur. Je pense notamment au Kolizeum (sans pour autant désactiver les traques, le PVP 1v1 présentant lui aussi ses avantages et inconvénients), les nouvelles zones (frigost) et les nouveaux item et panoplies (associés à leurs nouvelles zones respectives). Cela permettrait d'avoir un jeu très équilibré mêlant les contenu appréciés par les joueurs (traque, kolizeum par exemple) sans pour autant avoir les modifications connotés néfaste pour le jeu (MAJ des corps à corps par exemples, certaines refontes de classes trop puissantes, les nouvelles classes qui, à mon sens, sont trop gadget pour présenter un réel intérêt dans le jeu Dofus).
 
Dernière édition:
Inscrit
16 Mars 2014
Messages
214
Reactions
30
#18
Ajoute moi sur skype : skeeezr
 
Inscrit
25 Novembre 2015
Messages
169
Reactions
20
#19
Je t'ai ajouté, à bientôt ! ;)
 
Inscrit
18 Février 2015
Messages
228
Reactions
7
#20
J'avance aussi un peu de mon coté pour le moment le déplacement et le changement de map fonctionne parfaitement, le chat aussi en ce qui concerne les canaux généraux (Commerce, recrutement, General).

En cours => utilisation des interactives
 
Haut Bas