A venir : Tutoriel sur la connexion complète pour dofus (avec des exemples et le cryptage du mot de passe.
Bonjour, le tutoriel que tout le monde attendaient ! Fin de l'utilisation de pixel (lent et pénible lorsque le client du jeu bug)
Il y a les bots socket ! Et l'on peut en faire en autoit.
Ce qu'il faut savoir :
- Socket : permet d'établir une session TCP, puis de recevoir et d'expédier des données grâce à elle.(données binaire souvent)
- TCP : un protocole de transport fiable, en mode connecté.
Utilisation dans autoit :
Tout d'abord il faut déclarer l'utilisation du protocole TCP comme cela :
TCPStartup ( )
Retourne 1 si il a réussi a démarrer
Retourne 0 si il y a une erreur
http://www.autoitscript.com/autoit3/docs/functions/TCPStartup.htm
A la fin de l'utilisation de celui-ci il faut déclarer qu'on a terminer :
(on utilise cette fonction seulement à la fin total de toutes les fonctions en rapport avec le TCP)
Astuces : la mettre toujours à la fin du script
TCPShutdown ( )
Retourne 1 si il a réussi a fermer
Retourne 0 si il y a une erreur
http://www.autoitscript.com/autoit3/docs/functions/TCPShutdown.htm
Pour ouvrir un socket et le connecter au serveur il faut utiliser cette fonction :
$nomdusocket = TCPConnect ( IPAddr, port )
IPAddr correspond à l'adresse IP du serveur (pour dofus c'est : 213.248.126.180)
Et le port correspond au port auquel on se connecte (pour dofus c'est : 443)
Returns -1 lorsque l'erreur vient d'ailleurs
Si l'IP est incorrect retourne 1.
Si le port est incorrect retourne 2.
http://www.autoitscript.com/autoit3/docs/functions/TCPConnect.htm
Lorsque vous avez totalement terminer d'utiliser le socket il suffit de faire :
TCPCloseSocket ($nomdusocket)
Retourne 1 si il a réussi a fermer
Retourne 0 si il y a une erreur
http://www.autoitscript.com/autoit3/docs/functions/TCPCloseSocket.htm
Pour recevoir les packets il y a la bonne fonction :
TCPRecv($nomdusocket, maxlen )
maxlen correspond au nombre maximum de caractère à recevoir
Cette fonction retourne un chaine de caractères binaire/string selon le serveur. (nous verrons à la fin comment les convertir)
http://www.autoitscript.com/autoit3/docs/functions/TCPRecv.htm
Pour envoyer des packets il faut utiliser :
TCPSend ($nomdusocket, data )
Data correspond à une chaine binaire/string à envoyer au serveur.
Retourne 0 si erreur
http://www.autoitscript.com/autoit3/docs/functions/TCPSend.htm
Quelques fonctions utiles dans l'analyse des packets :
Pour convertir du binaire en string (souvent pour recevoir):
BinaryToString ($packet)
http://www.autoitscript.com/autoit3/docs/functions/BinaryToString.htm
Et son inverse (souvent pour envoyer):
StringToBinary ($packet)
http://www.autoitscript.com/autoit3/docs/functions/StringToBinary.htm
Pour récupérer que certaines valeurs d'une string :
En partant du début :
StringLeft ( $nomdustring, 2)
2 correspond au nombre de lettres à récupérer en partant du début (vous pouvez le modifier à votre sauce)
En partant de la fin :
StringRight ( $nomdustring, 2)
2 correspond au nombre de lettres à récupérer en partant de la fin (vous pouvez le modifier à votre sauce)
Exemple de connexion à un serveur :
Global $serveurIP = "213.248.126.180"
Global $socket
Func connecteServeurGeneral()
TCPStartUp()
$socket = TCPConnect( $serveurIP , 443 )
If ($socket = -1) Then
MsgBox(0,"Erreur","Erreur de connexion au serveur.")
Exit
EndIf
If ($socket == 1) Then
MsgBox(0,"Erreur","IP du serveur incorrect")
EndIf
If ($socket == 2) Then
MsgBox(0,"Erreur","Port du serveur incorrect")
EndIf
If ($socket <> -1 AND $socket <> 1 AND $socket <> 2) Then
MsgBox(0,"Information","Vous êtes connecté au serveur.")
EndIf
TCPCloseSocket ($socket)
TCPShutdown ( )
EndFunc
Dans cet exemple j'utilise l'IP du serveur dofus ainsi que son port de connexion.