Autre [MUDOWN][DotNet] D2Com, facilitez la communication D2 :)

  • Auteur de la discussion Anonymous
  • Date de début
A

Anonymous

Invité
#1


Bonjour les amis,
C'est avec joie que je désire partager ma dernière création. Ce n'est que le début de mon projet que je veux mener.
En effet, je veux créer une bibliothèque qui permettrait d'éviter aux développeurs de programme utilisant la communication D2 de devoir créer les outils communs à tous les programmes.

Tutoriels
[VB.Net] Faciliter la communication D2 avec D2Com
[C#] Faciliter la communication D2 avec D2Com

D2Com.dll
Cet utilitaire vous permet actuellement de gérer une connexion D2 avec deux évènements : un lorsqu'un paquet est reçu et un autre lorsqu'un paquet est envoyé.
La connexion est semi-asynchrone en multi-threading. Vous ne perdez aucun paquet car il y a un système de file d'attente : dès que des données sont reçues, elles sont tout de suite prises en charge et disposées dans la file d'attente pour les décoder.

Il dispose aussi d'un stream : DataWriter et DataReader pour le binaire BigEndian. Il est fonctionnel mais je suis dans le projet de l'améliorer afin d'en profiter d'avantage de la puissace qu'offre C#, notamment en implémentant l'interface IDisposeable.

Et enfin les utilitaires qui permettent de lire les fichiers D2I grâce à D2Idiom, les fichiers D2P grâce à D2Pak et les fichiers D2O grâce à D2Object. Pour ce dernier, l'extension D2Com.Datacenter en utilisera toutes ses capacités.

D2Com.Network.dll
Cette extension permet de profiter des paquets utilisés par le protocole D2 grâce aux classes des paquets traduites, la classe statique singleton ProtocolTypeManager pour gérer les instances des IType qui héritent d'un IType (ObjectEffect par exemple).
Disposez aussi de la classe statique singleton MessageReceiver en multi-client. Ainsi vous recevrez les IMessage propre à chaque connexion D2Connection juste en définissant le nom d'identifiant unique des clients.

D2Com.Datacenter.dll
L'extension D2Com.Datacenter permet d'utiliser pleinement D2Com.Data.D2Object. En effet, vous n'avez qu'à donner les chemin des fichiers D2O et tout se fait automatiquement ! Vous pourrez ainsi avoir la liste des objets, des monstres, des classes, des serveurs et j'en passe et tout ça localisé grâce à D2Com.Data.D2Idiom.
Disponible uniquement sur demande par MP ! Projets non sérieux s'abstenir ! Notez toutefois que si vous êtes un petit rigolo avec 2-3 messages sur le forum, vous pourrez toujours rêver pour leech ;)

D2Com.World.dll (pas encore disponible)
N'avez vous jamais rêvé de faire déplacer votre personnage simplement ? Et bien c'est ce que cette extension propose ! En utilisant l'algorithme A-Star, vous pourrez vous déplacer n'importe où à partir de n'importe où ! En outre du déplacement, vous pourrez aussi obtenir des tas d'informations sur les maps du jeu.

A venir
Ajouter des classes dans D2Com.Datacenter
Ajouter des paquets dans D2Com.Network
D2Com.World n'est pas prévu de sortir bientôt.


Télécharger le pack D2Com en version 1.2.4 (D2Com)


Télécharger le pack D2Com en version 1.2.3 (Projet d'exemple C#/VB.Net) (D2Com / D2Com.Network)
Télécharger le pack D2Com en version 1.2.2 (Projet d'exemple C#/VB.Net) (D2Com / D2Com.Network)
Télécharger le pack D2Com en version 1.2.1 (Projet d'exemple C#/VB.Net) (D2Com / D2Com.Network)
Télécharger le pack D2Com en version 1.2.0 (D2Com / D2Com.Datacenter / D2Com.Network)
Télécharger le pack D2Com en version 1.1.3 (D2Com / D2Com.Datacenter / D2Com.Network)
Télécharger le pack D2Com en version 1.1.2 (Documentation incluse + projet d'exemple C#/VB.Net) (D2Com / D2Com.Network)
Télécharger le pack D2Com en version 1.1.1 (Documentation incluse + projet d'exemple C#/VB.Net) (D2Com / D2Com.Network)
Télécharger le pack D2Com en version 1.1.0 (Documentation incluse + projet d'exemple C#/VB.Net) (D2Com / D2Com.Network)
Télécharger D2Com.dll en version 1.0.1 (Documentation incluse)
Télécharger D2Com.dll en version 1.0.0 (Documentation incluse)


Suite à un manque énorme de temps (cours, taff etc.) je ne peux plus continuer le développement :/
Je suis désolé à pour ceux qui suivait le projet et qui utilisait D2Com.
J'ai appris aussi que depuis la MAJ, certains points ont changés ce qui rend D2Com obsolète.
Bon dev à vous tous.


Changelog

"+" => Ajout
"-" => Retrait
"~" => Modification


Version 1.2.3
D2Com
~ Correction d'un problème lors du parsing : lorsque la taille du paquet indiqué par le paquet était plus grande que la taille du tableau d'octets en traitement cela provoquait un arrêt brusque de l'application. Ce bug dest désormais corrigé.

D2Com.Datacenter
+ Ajout de la classe D2Com.Datacenter.Communication.InfoMessage.

D2Com.Network
/!\ Paquet 226 semble ne pas le déserialiser correctement. Il est par conséquent inutilisanble dans D2Com.Network.
~ Correction de certaines classes Messages utilisant le ProtocolTypeManager.

Version 1.2.2
~ Correction d'un bug du ProtocolTypeManager où parfois certains types ne sont pas correctement renvoyé ce qui provoquait un NullReferenceException

+ Ajout de la classe CharactersListMessage dans D2Com.Network.Messages.

Version 1.2.1
~ Correction d'un bug de D2com.IO.DataWriter lors de l'écriture d'une chaîne, sa longueur y était écrite deux fois.

~ Modification majeure de l'utilisation de D2Com.Network. Il n'est plus nécessaire d'ajouter les espace de noms pour chaque catégorie des messages/types.
L'espace de noms "D2Com.Network.Messages" et "D2Com.Network.Types" incluent tous les messages nécessaires.

~ Ajout de quasiement tous les paquets. Paquets manquants :
ConsoleCommandsListMessage.as
AchievementListMessage.as
GameActionFightDispellableEffectMessage.as
GameActionFightSummonMessage.as
CharactersListMessage.as
CharactersListWithModificationsMessage.as
GameFightEndMessage.as
GameFightSynchronizeMessage.as
HousePropertiesMessage.as
PaddockPropertiesMessage.as
GameRolePlayShowActorMessage.as
GameEntitiesDispositionMessage.as
TaxCollectorListMessage.as
TaxCollectorMovementAddMessage.as
ExchangeBidHouseInListAddedMessage.as
UpdateMountBoostMessage.as
SetUpdateMessage.as
ShortcutBarAddRequestMessage.as
ShortcutBarContentMessage.as
ShortcutBarRefreshMessage.as
RawDataMessage.as
FightResultPlayerListEntry.as
FightTeamInformations.as

Version 1.2.0
+ Ajout de l'extension D2Com.Datacenter, avec quelques classes pour le moment.
+ Ajout de D2Com.Data.D2Object et les sous classes, permettant de lire un fichier D2O.

~ Correction de certains éléments dans la documentation IntelliSense.

Version 1.1.3
+ D2Com.Data.D2Idiom : Permet de lire et utiliser les fichiers D2I.
+ D2Com.Data.D2Pak: Permet de lire et utiliser les fichiers D2P.

~ Correction de la documentation IntelliSense.
~ Optimisation du code à certains endroits.

Version 1.1.2
+ Ajout de paquets dans D2Com.Network

Version 1.1.1
~ DataReader.ByteWrapperToBool deviens DataReader.GetFlagByteWrapper. Son utilisation n'a pas changé.

+ PacketDataEventArgs : Cette classe fournir les données du paquet concerné dans les évènements D2Com.D2Connection.PacketReceived et D2Com.D2Connection.PacketSend.
+ DataWriter.SetFlagByteWrapper : Méthode du byte wrapper pour lui attribuer des valeurs booléennes.

- PacketReceivedEventArgs : Cette classe n’existe plus.
- PackedSendEventArgs : Cette classe n'existe plus.

Version 1.1.0
+ Ajout de la fonction statique D2Com.IO.DataReader.ByteWrapperToBool
+ Ajout de l’extension D2Com.Network (uniquement les paquets de connexion pour le moment)

Version 1.0.1
~ Correction d'un bug sur la propriété D2Com.D2Connection.Socket
Vous pouvez maintenant utiliser la méthode Connect() à partir de la propriété.

~ Correction des commentaires IntelliSense des classes D2Com.IO.DataWriter et D2Com.IO.DataReader.

Version 1.0.0
Version de base.

Après un reboot de mon PC et la fermeture de Megaupload, je ne dispose plus les sources de mes programmes. Veuillez m'en excuser.
 
A

Anonymous

Invité
#2
Re: [DotNet] D2Com, facilitez la communication D2 :)

Je trouve ça intéressant, mais c'est avec ça beaucoup de personne seront capable de faire un bot flood, le vendre 1 euro et perte des traces au bout d'un mois. Donc bon pas très bien je trouve. Peut être que j'ai mal compris, moi ce que j'ai compris c'est qu'il gère la connexion à D*fus 2 !
 
A

Anonymous

Invité
#3
Re: [DotNet] D2Com, facilitez la communication D2 :)

Sa a l'air interessant du peu que j'ai compris...
 
A

Anonymous

Invité
#4
Re: [DotNet] D2Com, facilitez la communication D2 :)

En faite c'est un projet qui propose un utilitaire composé des plusieurs DLLs pour chaque "grande" fonctionnalité.
Celle que je vous présente aujourd'hui permet de gérer une connexion D2 en évènementiel. C'est à dire que dès qu'un paquet est reçu vous avez l'évènement de déclenché et de même lorsque un paquet est envoyé.

Ensuite pour l'usage je pense que c'est pas ça qui va influencer l'augmentation ou pas sur le développement de bot flood. Cependant ça permettre de développer plus rapidement un programme qui utilise le protocole D2 ;)
 
A

Anonymous

Invité
#5
Re: [DotNet] D2Com, facilitez la communication D2 :)

Ah d'accord.
 
A

Anonymous

Invité
#6
Re: [DotNet] D2Com, facilitez la communication D2 :)

Cool il sera opennsource?
 
A

Anonymous

Invité
#7
Re: [DotNet] D2Com, facilitez la communication D2 :)

Pour le moment je préfère pas, même si vous pouvez avoir accès aux sources en le décompilant.
J'attends d'avoir une version un peu plus complète avant de distribuer avec les sources. Mais c'est au programme ;)
 
A

Anonymous

Invité
#8
Re: [DotNet] D2Com, facilitez la communication D2 :)

Ok mci, sa facilitera grandement la vie. Quelque lignes pour une connection...
 
A

Anonymous

Invité
#9
Re: [DotNet] D2Com, facilitez la communication D2 :)

J'ai rédigé les tutoriels pour le C#et le VB.Net dans les sections appropriées ;)
 
A

Anonymous

Invité
#10
Re: [DotNet] D2Com, facilitez la communication D2 :)

Moi j'ai vue les sources :p
 
A

Anonymous

Invité
#11
Re: [DotNet] D2Com, facilitez la communication D2 :)

Vraiment intéressant comme projet. Je me permet de poser une question sur l'organisation des fichiers:

-Pourquoi mettre la lecture de fichiers D2# dans D2Com.dll? Ne serait-ce plutôt dans DataCenter?

Bonne chance dans ton projet.
 
A

Anonymous

Invité
#12
Re: [DotNet] D2Com, facilitez la communication D2 :)

En faite je reprends un peu l'architecture des dossiers comme dans les sources du client D2.
Le dossier "network" contient les fichiers avec les classes des messages, des types et les enumérations.
Quant au dossier "datacenter" contient que les classes des fichiers D2O.

D2Com.dll est en fait l'outil de base, on pourrait comparer à "System". Ainsi il y a "System.Drawing", "System.XML" etc...
Les lecteurs des fichiers D2# sont logiquement dans IO. Par contre les classes qui vont pouvoir en profiter auront une espace de nom à eux.
 
A

Anonymous

Invité
#13
Re: [DotNet] D2Com, facilitez la communication D2 :)

Si tu compares à System, je ne comprends pas vraiment ton argument. Ce qui ce trouverait dans IO serait la base qui te permet de lire le flux (MemoryStream par exemple) et non le parser. Prends par exemple System.Xml.XmlReader, il n'a rien à faire dans IO car c'est spécialiser même si il effectue du IO.

Mais si c'est pour suivre la structure de dossiers de Dofus alors la je comprends ton raisonnement.
 
A

Anonymous

Invité
#14
Re: [DotNet] D2Com, facilitez la communication D2 :)

Heu... Je pense que je me suis emmêlé x)
Dans Datacenter j'aurais D2I/D2O reader avec les classes qui vont avec :p
Au temps pour moi !
 
A

Anonymous

Invité
#17
Re: [DotNet] D2Com, facilitez la communication D2 :)

Des personnes qui ont testé D2Com et qui peuvent me donner des retours ?
Simplicité d'intégration, inconvénients, suggestions ?

Merci :)
 
A

Anonymous

Invité
#18
Re: [DotNet] D2Com, facilitez la communication D2 :)

Pas encore testé par manque de temps.
 
A

Anonymous

Invité
#19
Re: [DotNet] D2Com, facilitez la communication D2 :)

Mise à jour de D2Com en version 1.1.1.
Télécharger le pack D2Com en version 1.1.1 (Documentation incluse + projet d'exemple C#/VB.Net)


ChangeLog
~ DataReader.ByteWrapperToBool deviens DataReader.GetFlagByteWrapper. Son utilisation n'a pas changé.

+ PacketDataEventArgs : Cette classe fournir les données du paquet concerné dans les évènements D2Com.D2Connection.PacketReceived et D2Com.D2Connection.PacketSend.
+ DataWriter.SetFlagByteWrapper : Méthode du byte wrapper pour lui attribuer des valeurs booléennes.

- PacketReceivedEventArgs : Cette n'exsiste plus.
- PackedSendEventArgs : Cette classe n'existe plus.
 
Inscrit
7 Avril 2010
Messages
151
Reactions
2
#20
Re: [DotNet] D2Com, facilitez la communication D2 :)

Très bon projet.
Petit HS: je suis de retour suite à mon pc portable ou la carte mère est morte donc pc tout neuf à ma disposition.
Je test sa de suite =D
 
Haut Bas