Projet de bot 1.29, quels sont les prérequis ?

Inscrit
5 Juillet 2013
Messages
13
Reactions
1
#1
Bonjour à tous et à toutes,
voila,
étant novice en programmation et ayant vu la réouverture au français du serveur 1.29, j'aimerais savoir quels sont les prérequis pour pouvoir créer son propre bot ( coder par moi-même).

Je compte le développer en java car, je penses déjà que ce serait un avantage vu que le jeu lui même est en java et ainsi peut-être que je pourrais utiliser des bouts de codes déjà dans le jeu lui-même (je penses notamment à la partie cryptographique du mot de passes et de la gestion de l'anti-bot, si il y en avait une).

J'annonce déjà que je ne connais pas du tout le langage, je suis juste fort en logique donc je compte l'apprendre d'un livre ( apprendre à coder en Java édition 2, siteduzéro [et non, pas OpenClassrooms, c'est encore un vieux livre]).

Donc j'aimerais avoir quelques informations si vous en avez sur ce que je dois apprendre ( protocol tcp/ip socket ?, thread ?)

Et pour résumer mon projet (comme ça vous pouvez imaginer ce dont j'aurai besoin et peut-être m'informer sur quel partie du langage je devrais me concentrer),

Mon partirais d'abord d'une base simple ->
connexion au serveur, gestion des déplacement sur les maps, détection des objets, monstres et pnj sur la map (1ère étape).
Ajout du système de combat (basique) et/ou ajout du système de récolte, test sur le système d'artisanat (basique),
Probablement première amélioration du système de récolte/artisanats (optimisations sur les quantités voulus, nécéssaire, etc... je verrais ce que j'aurai besoin à ce moment la),
Amélioration du système de combat (en plusieurs Maj) avec priorité des sorts, calcule optimal des domages en fonctions des résistances enemis, système agressifs, défensifs, soins, bouclier, invocations.

Voila ce que j'appele la V1 de mon bot,

La seconde version sera beaucoup plus poussées si je juge que la première version est deja un succès.

pour la V2 : Bot qui s'autogère, il apprend ses sorts, en déduis si c'est une classe de soins/ support, rox/tank, support/tank, rox (distance ou càc),
il apprend à connaitre les maps, les mobs, leur resi, leur sort, la portée de ceux-ci, les dégats,
Autogestion des métiers, il apprend les métiers sur les personnages qui ont une prédisposition à certains métier (ex, si un perso est terre, il va lui apprendre les métier de récoltes),
pour les autres, il apprendra les métiers de craftings à l'endroit le plus près du banque ou au plus rapide (ex brak, bonta (astrub dans un premier temps)),
il se développe tout économiquement et en items (il retient les drops, ce dont il a besoin, il autogère l'xp des personnages pour éviter les trop grandes diffèrences, il gère plusieurs personnages afin de pouvoir vaincre les boss de lui-même, bref, un bot qui apprend si possible.

à noter que le premier bot, est vraiment dans un but de farmer, gagner des kamas sans difficultés,
et le second est plus expérimental afin de voir si il a possibilité de se développer et d'évoluer de lui-même dans le jeu (en gros, un IA je penses). Le premier servira de bases en ce qui est de connexions et de maîtrises des combats etc, afin d'en ressortir un code améliorer et fonctionnel pour le deuxième bot.

Voila voila, en ce qui concerne mes/mon projet.

Si vous connaissez plus ou moins les prérequis, merci de m'en informer afin que je maîtrise le langage du mieux que je peux et afin de réussir mon projet.

je comptes aussi mettre mon projet sur github afin que vous voyez l'avancement et le développement de celui-ci, vous pourrez alors aussi l'utilisez et libre à vous de prendre le code source et de le modifié afin de rendre le bot compatible à vos attentes.

Merci d'avoir lu ce long poste :D et désolé pour vos yeux mais, niveau français, je suis très moyen, j'ai toujour préférer les maths :p
 
Dernière édition:

Arth

Contributeur
Inscrit
28 Aout 2016
Messages
80
Reactions
3
#2
Hello,
Pour commencer le jeu n'est pas en Java mais en AS (Action Script). AS est un langage qui ressemble au JS (Java Script), qui n'as rien à voir avec le Java.

En suite, tu en as déjà beaucoup à faire pour ta V1... Tu ne devrai pas te projeter comme cela dans ta 'V2' si tu n'as pas encore conscience des difficultés que tu vas rencontrer. Et je peux t'assurer que tu as déjà beaucoup à apprendre sur ce que tu veut faire en V1.

Sinon, lance toi simplement, commence à coder la connexion à un serveur proprement et essai de bien gérer tes déplacements. Ça sera déjà un gros morceau.

Et bonne chance
 
Inscrit
5 Juillet 2013
Messages
13
Reactions
1
#3
Merci pour ta réponses,
tu m'apprends déjà des choses :D, et je me permet de me faire ce projet car actuellement,

j'ai un travail entre 4h et 7h par jour, ce qui me laisse pas mal de temps libre, ensuite je comptes suivre des études en université (5 ans) en informatique, ce qui me laisse aussi pas mal de temps libre pour coder dans mes premières années et développer mon projet,

donc c'est un projet qui s'étalonnera sur plusieurs année c'est pour ça que je me penches aussi sur une V2 :) mais je sais que celle-ci prendra beaucoup plus de temps, et vu que je veux suivre des études (master) en IA, je me dis qu'essayer d'en faire une sur un jeu pourrais être pas mal étant données que je connais bien cette version et que j'ai plus ou moins conscience des difficultés que je vais découvrir au fur et à mesure du jeu,

la seconde raison que j'ai de faire ce projet sur la 1.29, elle est très simple, le système anti-bot n'est pas aussi performant qu'en 2.0 et les bans définitifs sont assez rares vu qu'il n'y a plus beaucoup modérateurs, voir aucun, pouvant bannir.

Après, il est possible que je me trompe, l'erreur est humaine x).

Et merci ! comme j'ai dis, je vous tiendrais au courant de l'avancement de mon projet et il sera disponible pour que tout le forum puisse consulter le lien github afin de voir comment je programme (pour me donner des conseils sur telles ou telles parties du programme).

Pour la version github, j'essaierai de demander à un modérateur du forum si il existe une manière de partager ce travail avec des personnes qui sont déjà bien perçus du forum, pour éviter un plagiat de mon programme et ainsi une vente possible de ce programme via un site de bot (vu que le code sera Open Source, si quelqu'un s'en sert afin de gagner de l'argent alors qu'il n'aurait fait que modifier le titre et la présentation du programme, ça me ferait un peu mal au coeur x) ). --> pour éviter les "poufs je m'inscris, je consulte le lien, j'ai développer mon propre bot !".
 
Inscrit
29 Octobre 2016
Messages
65
Reactions
2
#4
Bonjour, il faut connaître l'algorithme de programmation et savoir utilisé des classes.
À partir de là non pas obligé de connaître quoi que ce sois en AS, google est notre amis pour les faibles bout difficile à comprendre.

Pour un bête bot en 1.29 :

- Savoir programmer dans un langage
- Savoir échanger avec un serveur

C'est tout :D

Une fois que tu as compris le cryptage du mot de passe, l'utilise des swf pour les maps (qui sont à dl sur un site d'ankama quand tu es sur la map).
Je pense que tu n'as plus qu'à faire une interface, trier les paquets, créer des actions en rapport des packets.

On m'a dit à l'époque que les décompilations maps était trop difficile étant idiot je n'ai jamais regarder et ... C'est juste une simple décompilation de SWF pour récupéré une variable donc autant dire ... Un jeu d'enfant xD

Un amateur pourrait facilement réussir un bot socket, sauf si t'es aussi nul que moi :3

Je te conseil ceci:

1) Fais un bot qui ce connecte

2) Fais un bot qui peut bouger, interagir avec ce qui l'entour

ATTENTION AUX PIÈGES ! Le serveur t'envoie les infos de map y compris les pos des soleils, mais sur certaines maps les soleil sont directement intégrés en image :3 (donc le bot serait coincer).

3) Gère les métiers c'est assez simple et basique (sauf pécheur d'après ce que j'ai entendu mais j'utilise perso les sources du m4x0ubot même si je reprend un peu tout à 0 xD).
À ce moment tu peux bot métier facilement jusqu'au niveau 20 métier.

4) Gère les combats, tu vérifie le paquet de début & fin de combat, tu vérifie le début de ton tour les actions pendant le tour. (assez simple)

5) Créer un pathfinding capable de trouver les trajets, tu as un l'algorithme star qui est très bien (perso j'ai créer la même chose mais tout seul :p). Comme ça déplacement auto en combat

N'oublie pas d'esquiver les alliés. Tu sais quel map sont accessible ou non grâce à leurs ID de mov (dans les sources de dofus faut que les mov soit supérieur à 1 pour être accessible)
Les alliés faudra prendre leurs ID de cellule quand le paquet qui dit qui est où arrive ^^

Voilà tu aura ton bot fini ! Il manquera les détails (trajet, assez long à faire aussi surtout en multi comptes, auto suppression des items, auto banque etc).

Mais le plus dur est la connexion et le pathfinding, le reste sera répétitif. Faut étudier les sources Dofus le but est de copier le client :D
 
Dernière édition:

tazman59

Contributeur
Inscrit
20 Decembre 2012
Messages
148
Reactions
25
#5
Oulalalalala ! Les gars !
@jesuisdieux Apprend déjà à faire un chat multiclients threadé et essaye de l'améliorer un maximum. Essaye de gérer autant l'aspect graphique que l'aspect code dur. Regarde comment lier les deux, comment appeller des événements, enfin je sais pas y'a des centaines de choses basiques à comprendre et surtout savoir appliquer avant de se lancer dans le développement d'un bot. Si 3/4 des developpeurs ayant un minimum de bagages pour réaliser de tels projets n'aboutissent pas c'est pas pour rien, faire un bot ça demande du temps et de la réflexion. Là clairement, tu vas mettre des plombes à comprendre déjà comment le protocole marche (même si la 1.29 c'est beaucoup beaucoup plus simple) et en plus de ça tu vas pas du tout avoir les résultats auxquels tu t'attendais, autrement dit, ça va te plomber l'envie de continuer. On ne se lance pas dans un développement de tel projet si on a jamais touché au code de sa vie, enfin moi ça me paraît logique. Tilt du soir désolé.
 
Inscrit
29 Octobre 2016
Messages
65
Reactions
2
#6
Sinon en sois quand tu parle des classes et tout c'est beau, mais un bot avec priorité de sort suffit largement au lieu de s'emmerder.
"Qui apprend la map", bonne chance, un pathfinding suffit.
"Qui apprend les résistances des monstres", dans ce cas il faudrait que tu ajoute un calcul de dégât en gestion des rési du mob et que tu tape le meilleur sort. Assez chiant à faire mais une fois posé tu l'utilise facilement :)

Avant de te dire "je vais faire ça" fais ce questionnaire dans l'ordre:
  1. Je sais programmer dans un langage de programmation.
  2. Je sais lire et comprendre les sources du jeu.
  3. Je sais échanger des paquets en socket.
  4. Je sais créer un multi thread afin de géré plusieurs comptes.
  5. Je sais crypter/décrypter les paquets de Dofus.
  6. Je sais géré les paquets reçu et les traités.
  7. Je sais décrypter les maps du serveur.
Je pense que ces 7 étapes sont les clés principale, avec ça tu serais capable de faire un bot 1.29 et peut être 2.0 avec un peu plus de niak et de travail.

Je te les est mis dans l'ordre, tu ne sais pas programmer go apprendre un langage, ça prend pas 1 semaine ni 1 mois, faut le maîtrisé.
Ensuite quand tu sais programmer au moins un langage tu es à peut près capable de comprendre les sources du jeu.

Plus qu'à trouver dans ces sources comment les paquets sont crypté/décrypté.
Tu créer un multi thread pour chaque compte (relais socket), tu gère les paquets, d'abord la connexion, puis dès que la co est faite tu code les actions petit à petit étape par étape (lecture de la map, des infos du perso pour commencer, lecture du tchat aussi).

Si tu ne sais pas décrypter la map ce n'est pas un soucis tant que tu ne gère pas les combats ou les déplacements (juste rejoindre les combats, peut être même tu peux les lancés ou faire métier avec sans changer de map).

Ps: Priorité des sorts est suffisant pas besoin de soin, boubou ou je sais pas quoi, une save des sorts de chaque personnages (en cas de multi perso sur 1 compte) suffit largement pour gérer le type de jeu du bot. Après tu peux faire des IA fuyarde et tout mais je trouve pas ça utile, des bon gros bot cra/sadi et du spam.
 
Dernière édition:
Inscrit
5 Juillet 2013
Messages
13
Reactions
1
#7
Après, à noter que c'est un projet en guise de passe temps :), que le résultat soit un échec ou une réussite, ça importe peu si j'apprend avec ce que j'ai déjà pu accomplir (certes, une réussite est plus euphorique, mais, on apprend de ses erreurs !).

Et c'est en apprenant et en persévérant que l'on deviens meilleur :).

Puis, bon, en disant que j'étais novice, ça ne veut pas dire en soit que je ne sais pas programmer, il fût un temps ou je m'amusais un peu avec le C, puis mes cours d'informatiques en secondaires mon poussées à apprendre le pascal en console, et le turbo pascal pour la POO, donc je ne suis pas non plus débutant et je maîtrise(ais) extrèmement bien les boucles, les conditions, tableaux, matrice (array[x,y]).

[en ce qui concerne les types : je sais que les integer sont codé sur 32 bit, je savais transformé le code binaire en chiffre ( donc integer, de - x à +x, j'avais appris que que le positif était coder "à l'endroit" et que le - était inversé, et que vu que entre le + et - , y'a une série de bit est identique pour 2 valeurs + et -, on optait pour le résultat négatif d'ou le fait qu'il y ai à chaque fois 1 en moins sur la parti + (ex : de 7 à -8)
en y repensant, je penses que la valeur en comment était 1111 .... 1111 car tout les bots sont "allumé"

idem pour les doubles, chaques bit est une valeur de 2 exposé en x, x étant le bit correspondant, vive les 3 mois en hautes écoles que j'ai suivi :)
]

cependant, ce qui touchait aux threads et aux sockets, je ne l'ai jamais appris, on travaillait principalement en sql pour communiquer des données sur un serveur, ce qui à son avantage sur le tri de celle-ci et l'affichage.

c'est d'ailleurs pour ça que ce topic est ouvert, merci à toi phylonia,

Dans un premier temps, lorsque j'aurai déjà de bonnes bases pour le Java, je vais coder un petit chat et je partagerais le code source, afin que ceux qui sont meilleurs que moi dans ce domaine puisse me dire les points faibles de ma programmation et que je puisse progresser :).
 
Dernière édition:
Inscrit
29 Octobre 2016
Messages
65
Reactions
2
#8
Un thread c'est pas très compliquer à faire, le plus chiant c'est juste que les thread n'échangent jamais avec les autres thread directement (faut passer par un invoke), perso je retire la protection, je sais pas si c'est valable que sur vb, mais bon, en gros c'est pas un gros truc le thread, ça sert à lancer une "autre instance", afin que ton logiciel niveau graphique ne freeze pas et que tout les bots marchent ensemble et pas l'un après l'autre.

C'est comme si pour chaque bot t'ouvre une porte pour créer un flux d'échange avec le serveur et que sans lui tout arrive par le même flux mais comme tu reçois beaucoup de truc et que la "porte" est petite ça bouchonne. #explicationtotalementnul

Ensuite pour les sockets bah .. C'est l'échange principale avec Dofus, une connexion sur une IP et un PORT (Charles / WireShark sont tes copains), tu écris et lis les packets avec cette fonction de socket.
Le socket est une seul fonction, chaque nouvelle échange socket doit être créer dans chaque thread comme ça chaque compte à sa fonction de façon propre et dynamique.

Essaye en même temps de décompiler le .swf de dofus et de le comprendre, les fonctions de "serialization" et "deserialization", après faudra que tu comprenne la connexion pas très difficile et hop ^^
Sinon le Java est plus difficile que les langages .NET si tu veux un truc simple. (VB ou C#, le C# garde une structure similaire aux langages comme le java, le VB est plus rapide et simple à utilisé, très différent mais il te mâche tout le travail).

Perso je fais mes tools en VB et tout ce qui est plus gros comme des mini jeu en java, mais je vais peut être commencer les tools en Java, j'ai déjà fais des launcher de serveur mais je suis pas fan :/
 
Inscrit
5 Juillet 2013
Messages
13
Reactions
1
#9
Oui j'ai déjà commencer à décompiler pour lire un peu le code de dofus... autant dire.... c'est vraiment... mais vraiment... le bordel....
Autant sur d2, c'est "assez" structuré ( notamment la partie com contient les connexions) que la... c'est dans dofus/aks/account.... c'est pas très claire tout ça xD.

Du coup, je vais m'y pencher et essayez de retracer un ordre plus ou moins correct, tout en apprenant le Java correctement à coté, comme ça, une fois le langage appris, je pourrais commencer le dev grâce au chemin deja parcouru dans le code de dofus.

la seule chose qui risque un peu de m'ennuyez, c'est la manière donc son envoyé les données (le format en gros), je sais pas si il y a un reader/writter sur cette version, ou si c'est vraiment envoyé de manière "arrache".

Let's see !

Question à la con mais, pour comminquer entre les threads, j'ai réfléchis, avec un invoke, c'est propre, ma manière peu propre, le chat de dofus, avec des mots clé en .groupe, je sais pas si c'est viable... mais c'est peut être une piste... (par exemple pour le focus, etc...)
 
Dernière édition:

tazman59

Contributeur
Inscrit
20 Decembre 2012
Messages
148
Reactions
25
#10
Sur la 1.29 les données sont envoyés en claires donc tu as packet (string) + "\n\0"
 
Inscrit
29 Octobre 2016
Messages
65
Reactions
2
#11
Perso j'évite d'utilisé le tchat, mais les bots peuvent largement discuté entre eux assez aisément ^^
Sur la 1.29 les données sont envoyés en claires donc tu as packet (string) + "\n\0"
Ah bon ils ne sont pas crypter de faon simple? Juste faut les split? :')
 
Inscrit
2 Juin 2016
Messages
82
Reactions
3
#12
Je m'orienterai plus vers du C# que vers du Java pour ce genre de développement.
Du seul fait que la TPL (Task Parralel Library + Dataflow) existe, j'orienterai plus un débutant vers le C#.
C# est très accessible, terriblement puissant et au potentiel infini. De plus il est en constante évolution (.NET core, C#7 etc) et il dispose de beaucoup de ressources (relativement, moins que Java)
Comme tout langage managé, il est fourbe et les rouages ne sont pas forcement faciles à comprendre, cependant bien des projets ont vu le jour sans aucune connaissances de ces rouages.

C# permet de tout faire, comme Java mais en souvent bien moins de temps.
Beaucoup de ressources (et de projets) ont été fait en C# pour Dofus et c'est donc plus facile pour un débutant.
 
Inscrit
5 Juillet 2013
Messages
13
Reactions
1
#13
C'est vrai que la vitesse d'éxécution de Java est moindre que celle d'autre langage, mais ça peut s'expliquer car Java (si je dis pas de connerie) est un langage interprété par Java runtime, et les autre langages (la plupart) sont directement compilé en langage compréhensible par la machine (bon pas exactement en bnaire mais en assembleur, ensuite il y a une traduction assembleur -> binaire avant d'arriver au cpu, -> de nouveau, peut-être je dis une bétise.

Et j'avais choisis Java car je possède un livre version papier,ce qui me facilite grandement la concentration et m'évite les divertissements qu'un navigateur peut t'apporter (youtube.... youP.. ha non, pas celui la ! °_°)

Bref, dans l'ensemble, je vais me penché sur le langage, mais si il faut priviligié la puissance, alors autant le faire en c++, il me semble qu'il est encore le plus performant et, le point fort, ce n'est pas la documentation qui manque.

après idem pour les autres langages... je verrais bien.... de toute façon, mon ordinateur principal (acheté il y a une semaine) vient de partir en réparation, problème hardware j'espère, parce que si c'est software.... la réparation est payante ! (1800€... manque plus que je paye encore des réparations que j'aurai pu résoudre... mais flemme est la !)

ps : bon, j'ai un peu (beaucoup trop) d'humour en stock, c'est pour ça que j'essaie de mettre des petites touches "Xptdrmdrlol" sur mes commentaires, mais bon, on me pardonnera pour ça hein ? hého, vous êtes la ? *merde je suis encore tout seul :'( *
 

Kyu

Staff
Membre du personnel
Inscrit
4 Octobre 2009
Messages
327
Reactions
8
#14
Java compile en bytecode. Ce bytecode est interprété en code machine à la volée par une machine virtuelle (JVM) dans le cas d'un compileur Just-In-time (JIT). On peut aussi compiler tout le bytecode en code machine à la première exécution Ahead-Of-Time (AOT) mais on perd alors des optimisations faites par la machine virtuelle.
Ceci est valable également pour C# : compilation en langage intermédiaire -> interprétation -> exécution.

Pour bien comprendre, je te propose de jeter un œil à ce document : http://www-igm.univ-mlv.fr/~dr/XPOSE2013/Comparaison_JVM_CLR/comparaison.html

Si tu veux une idée du contenu disponible en java, je peux te renvoyer sur un moteur de recherche maven : http://mvnrepository.com/
Ici tu trouveras toutes les librairies qui ont étaient publiées sur un répertoire maven, il y en donc qui ne sont pas répertorié et que tu trouveras en générale sur github. L'avantage des libs publiées sur maven, c'est que tu peux ajouter leur dépendance à ton projet en ajoutant une seule ligne, et peux changer de version en modifiant cette même ligne, autant dire que ça augmente grandement l'efficacité.

Je tiens à souligner que ces derniers temps, l'api java est agrémenter de pas mal de fonctionnalitées : lambda, streams, et pour java 9, la modularité du jdk qui sera par la suite disponnible en dehors du jdk.

Tu peux continuer ton bot en java, tu n'auras aucun problème de performances.
 

tazman59

Contributeur
Inscrit
20 Decembre 2012
Messages
148
Reactions
25
#15
Perso j'évite d'utilisé le tchat, mais les bots peuvent largement discuté entre eux assez aisément ^^


Ah bon ils ne sont pas crypter de faon simple? Juste faut les split? :')
C'est ça :)
 
Haut Bas