Résolu tuto vite fait non complet

Statut
N'est pas ouverte pour d'autres réponses.

sdopo

Membre
Inscription
5 Mars 2013
Messages
51
Réactions
1
Points
1 293
Bonjour à tous et à toutes.

Après le tutoriel « », voici un tutoriel complet sur la superbe Version 3 de ce logiciel. Ce guide a pour but d'être le plus clair et compréhensible possible. J'accepte toutes les critiques constructives, idées d'ajouts, améliorations, etc.

Voici comment le tutoriel sera disposé :
I. Téléchargement & Familiarisation
II. La Création de Bot
A). Création de Bot Flood
B). Création de Bot Combat
C). Création de Bot Récolte
III. Création d'un Exécutable .SFX
IV. Mes Trucs et Astuces



Manque le code il arrive




Et puis ? Pas si mal la création d'un Bot Flood complexe.
Passons aux choses sérieuses : Le Bot Combat.


Important ! Dans la prochaine partie, il est important de bien maitriser les bases du Logiciel. Mais SURTOUT, les variables. Sinon vous risquez de galérer.


B). Création de Bot Combat


Il existe une infinité (ou presque) de solution. La seul limite, c'est votre imagination. Pour ma part, elle est vaste, très vaste. Dans cette partie, je vais vous apprendre à créer un Bot Combat complet. Je vous fournirai surtout la base d'un Bot Combat efficace.

Pour ceux qui souhaite seulement savoir comment gérer les combats, c'est plus bas !

Note : Arrivé à ce chapitre, je prétend que vous êtes rendu assez à l'aise avec la plus part des actions et surtout les variables.

- - - - - - - - - - - - - - - - - - - - -

Voici, étape par étape, action par action .... La création d'un Bot Combat :

1. Premièrement, il faut ce poser des questions. Nous voulons tuer quel sorte de monstre ? Combien de différent ? Sur combien de map le bot ce déplacera t-il ? En quel résolution le bot sera t-il créé ? Combien de bot sera joué à la fois ? Pour ma part (je créer un bot combat comme exemple en parallèle), les monstres seront principalement des Bouftou et Boufton. Ma résolution sera de 1000x750 (choix personnel... Tant que vous gardez toujours la même). J'utiliserai seulement deux maps (-2,-20) & (-2,-21) :



2. Créons à présent notre squelette. Créer une action "Entrée de donnée" pour les questions. Par exemple : Nom de votre personnage (pour le redimensionnement de la fenêtre) ? Nombre de compte géré à la fois ? Combien de temps mettez-vous à changer de map ? Etc. Toutes ces questions servent à paramétrer votre script comme vous le désirez à chaque utilisation. Vous pouvez toujours créer des variables prédéfinies qui contiendrons les réponses à l'avance. Mais moi, Je préfère poser la question.


2.5. (Optionnel) Vous pouvez toujours ajouter une petite "Boîte de dialogue" vous rappelant l'endroit de départ et peut-être d'autre truc important qu'il ne faut pas oublier. Comme : "Mettre qualité haute et sans transparence"


3. Choisissez un point de départ pour le script, pour ma part, ça sera toujours le Zaap Astrub. Créer des actions de "Clic". N'oubliez pas les "Pauses" entre chaque map et faite vous un chemin jusqu'à la zone de combat. Si vous êtes dans une ligne droite, servez-vous de l'action "Boucle" pour ne pas répéter les mêmes actions trop souvent.








4. Nous allons maintenant prendre nos monstres en photo ! Vous pouvez les prendres dans plusieurs positions pour une meilleur détection lors de la recherche. Pour les prendre en photo, téléchargez FastStone Capture 7.0.. Très Très Très pratique vous verrez ! Essayez de prendre des photos très précise.
Important : Prenez des photos avec la résolution que vous utiliserez toujours.
Voici ce que mes photos ont donné : (Bouftou de devant) (Bouftou de derrière) (Boufton noir) (Boufton blanc) Vous voyez le genre. Vous pouvez aussi, si vous le désirez, prendre plus de photo du monstre que vous recherchez le plus, ainsi vous améliorerez la recherche de celui-ci. Ici, j'ai favorisé un peu le Bouftou.


5. Si je récapitule ce que nous venons de créer : Le bot ne fait que se rendre à la Map 1 de notre zone de combat. Maintenant, il doit détecter les monstres.
Il faut donc créer une action : "Trouver image".
Remplissez les champs à remplir comme je vous l'indique :
Source : Capture d'écran
Image à chercher : Cliquez sur les "..." et aller prendre l'une des images à chercher par le bot.
Position : NomDeVotreVariable
Important : Vous devez prendre la même variables pour tous les "Trouver image" que vous aller créer à cette étape.
Citation:
Nouveau:
Si trouvé : Aller à "Trouvé" ----> Voir étape 8
Si non trouvé : Aller à "Non Trouvé" ----> Voir étape 10
Rendez-vous maintenant dans la partie "Avancé" de l'action "Trouver image" :
Vous pouvez toujours laisser tout par défaut, mais pour ma part, j'ai mis :
Confiance minimal : 80 (Si les images des monstres ne sont jamais trouvés, baissez à 75 ou 70 cette valeur)
Expansion de la recherche : 1
(Le reste par défaut)

Il ne vous reste qu'à créer toutes les "Trouver image" que vous avez besoin. Une pour chaque image.




Note : Copier/Coller les actions semblable. Ça vous sauvera (souvent) beaucoup de temps.


6. L'étape 6 a été remplacé par la nouvelle fonction de l'action Trouvé Image : "Si trouvé" et "Si non trouvé" vue à l'étape 5.





7. [Optionnel] Depuis la dernière version du tutoriel, cette étape n'est indispensable que si vous ne remplissez pas votre dernière action Trouvé image - Si non trouvé]

À présent, créer une Variable dans une action de "Code". (Je parle bien de l'action "Code"). Cette variable empêchera le bot de bug s'il ne trouve aucune image.
Code : var NomDeVotreVariable = "X,Y"
Copier tout ce que j'ai mis en gras juste au dessus. Puis coller cette ligne dans "code"
. À changer :
* NomDeVotreVariable : Mettre le nom de la variable que vous avez utilisé pour l'action "Trouver image"
* X:Y : Changer X:Y par une position (exemple : "200:200" ou "0:0". Les guillemets sont importants " " et le : entre les deux chiffres.
Pour finir, aller mettre cette action tout en haut du script OU juste avant l'action trouver image, comme ça elle ne dérangera jamais. Quand je dis "en haut du script", je parle de la mettre à la ligne 001.


8. Maintenant, créez une action de "Clic" qui contiendra la même variable que vous avez utiliser dans "Trouver image" et "Code". Celle-ci servira lorsqu'un monstre sera trouvé (ou pas). Ajouter un ID à cette action.

Puis ajouter une "Pause" d'un temps X que vous décidez (j'ai mis 4sec). Il faut laisser le temps au bot de lancer sont combat.


9. Si je résume jusqu'à maintenant, le bot part du zaap Astrub (du moins pour mon script) et se rend jusqu'à la zone de combat. Il cherche ensuite les monstres que je lui ai "dit" de chercher et s'il en détecte un, il lance le combat. Sinon il cherche encore. Encore et encore.... Il faut une fin ! Créer une "Boucle". Elle doit retourner à la première action de recherche d'image. Le nombre de fois, c'est vous qui décidez (J'ai mis 4x moi).



10. Avant de faire changer notre bot de map, il faudrait qu'il puisse détecter si un combat a lieu ! Créer une action "Couleur de pixel" : Entrer en combat dans dofus et prenez comme position le contour orange de la barre de temps avant le début du combat.
En image :
J'ai encerclé l'endroit que je vous conseil de prendre. Après il y a
Comparaison : Égale
Si Vrai : Aller à ---> Fight (c'est l'ID que j'ai choisi)
Si Faux : ne rien faire.
Ajouter l'ID "Non Trouvé", comme vue à l'étape 5.
Maintenant placé cette action juste après la pause de X secondes que nous avons créer précédemment.


11. Créer un "Clic" qui fera en sorte de changer de map vers la destination voulue (Vers le haut pour ma part). Ensuite, ajouter une "Pause" pour le temps de changement de map puis mettez la même action "Couleur de pixel" (que nous avons créé une étape avant) pour la détection des combats au cas où le bot aurait cliqué sur des monstres.


12. Maintenant Copier coller toutes les actions de la première map. Donc : Du premier "Trouver Image" jusqu'à la boucle ! Changer l'ID de la première image (j'espère que vous en aviez mis une !) pour ne pas confondre. Pour ma part j'avais mis l'ID : Bn pour Boufton noir. Après le copier coller j'ai mis Bn2. J'ai modifier la destination de la boucle et voilà le travail ! Même chose pour le clic d'agression des monstres, j'ai mis "Trouvé2". Puis j'ai changé le "Si trouvé : ... " dans les actions trouvé images. N'oublier pas aussi de changer l'ID de la boucle, qui deviendra "Non Trouvé2". Puis aller dans la dernière action "Trouvé image" pour changer le "Si non trouvé : ..." par "Non Trouvé2" Pour le clic et la boucle, les ID ne seront pas changées dans l'image ci-dessous. Ces images date de longtemps et je n'ai pas le temps de les changer pour si peu.




13. Pour finir, j'ai ajouté un déplacement vers le bas ("Clic"), une "Pause", détection de combat ("Couleur de pixel", et une action "Aller à" : Bn pour compléter cette boucle de 2 map. (Voir l'image plus bas)

Le bot arrive dans la zone de combat, vérifie 4 fois les images que j'ai mis, s'il trouve rien il va sur la map du haut, il cherche 4 fois, trouve rien donc redescend sur la map du bas etc... Ceci est un bot TRÈS basique. Vous pouvez toujours mettre un chemin de 10 maps, avec 10 monstres à chercher, retour en banque, gestion des Up.... et tout ça avec 5 comptes à la fois !!!!! Bon j'avoue.... c'est long, compliqué, mais c'est faisable ! Il ne reste qu'une chose à expliquer, la gestion des combats. Mais avant, voici une image pour résumer ce que nous venons de faire :






La gestion des combats :

Il faut que je précise une chose tout suite, la méthode que j'utilise n'est pas unique ! Je considère la mienne Simple et Efficace. Encore une fois je vous expliquerais étape par étape comment procéder. À la fin j'ai mis un script "test de combat" que vous pouvez vous servir comme bon vous semble.


Conseil:Je vous conseil très fortement de bien identifier en commentant chaque action. La gestion des combats est beaucoup plus simple si elle est bien identifié. Si vous y retrouvez un bug après, il vous sera beaucoup plus facile de trouver le problème.


1. La toute première chose à faire, c'est de créer (question de propreté pour moi) une action : Aucune Action. Lui mettre une couleur et ajouter un commentaire du genre : Système de combat 1 Ou Combat... (dans l'un de mes scripts personnelles j'ai 2 modes de combats). Donnez-lui comme ID : Fight (c'est celle que je prend moi à vous de voir). *Important! Vous devez prendre la même ID que dans votre couleur de pixel qui vous sert de détection des combats.*Important2! N'oubliez pas de mettre la bonne résolutions lors de la création de votre système de combat. Il faut mettre la même que vous avez pris pour votre partie récolte ou combat.


2. Maintenant que ça c'est fait, créer une action de "Clic" pour démarrer le combat.
Optionnel : Mettre mode tactique, créature... etc à vous de voir. Ensuite créer un "Déplacement du curseur" pour que le "Passer le tour" ne soit pas sombre. Donc faite aller le curseur où bon vous semble ! Vous verrez pourquoi après.


3. Créer une "Couleur de pixel" avec l'ID Fin?, vous aller regarder si le combat est déjà fini, oui oui déjà ! En regardant ici : (la je parle du cercle en bas)
si la couleur est "orange" à cette endroit, c'est que le combat n'est pas terminé, donc ne rien faire. Sinon on va à "Fin?2" qu'on créera plus tard.


4. Créer un autre couleur de pixel. Aucun ID requis pour celle-ci. Cette couleur de pixel détectera si c'est à notre tour. Donc l'endroit encerclé dans le coin droit dans l'image ci-dessus correspond à l'endroit approximatif que vous devez "détecter" le tour du bot. En passant c'est la même même chose que pour la détection des combats, sauf que là nous l'utiliserons pour les tours. Cependant,dans cette action précise nous allons aller dans "Commun" et vous ajoutez "500ms" (0.5sec) à Pause après. Puis retourner dans "Standard" pour mettre à "Si Vrai : Feu_1" (ou autre nom de votre choix) et "Si faux : Ne rien faire".


5. Par la suite créer une boucle qui ira à "Fin?" entre 100 et 150 fois. Tout suite après cette boucle mettez un "Aller à : Fin?2".




6. Faites une action de "Clic", donné lui comme ID "Feu_1" (ou le nom que vous avez mis avant) et faite en sorte qu'il clique sur votre sort d'attaque (de votre choix). Puis un autre "Clic" qui clic sur la personne la plus à droite dans la TimeLine en bas à gauche. Ajouter lui dans "Commun" : 1000ms après. Reprenez la couleur de pixel avec l'ID "Fin?", copier/coller puis enlever l'ID "Fin?" pour ne rien mettre (par défaut il y a un le numéro de ligne de l'action). Copier coller ces trois actions 2 fois. Changer l'ID "Feu_1" par "Feu_2" et "Feu_3" puis changer la deuxième action de "Clic" par la deuxième personne la plus à droite et pour finir la troisième.




Important ! Il est très important de cocher dans les options de Dofus : - Masquer tous les personnages morts (ainsi que les invocations) dans la TimeLine. Sinon le bot ne pourra finir les combats !


7. Ajouter une boucle après tout cela qui va à "Feu_1" 1 fois. (sa va donc boucler 2 fois). Finissons par un "Clic" sur "Passer le tour" et on enchaine avec un "Déplacement du curseur" pour empêché que "Passer le tour" soit sombre.




8. Pour finir, ajouter une "Couleur de pixel" avec l'ID "Fin?2" et créer une nouvelle détection pour les combats lorsqu'il sont finis. Vous la prendrais ici : (Sur le gris quelque part) Si vrai : on va à "Fermer", Si faux on va à "Fin?". Il ne vous reste qu'à créer un "Clic" qui fermera la fenêtre après le combat ou, si vous préférez comme moi, créer une action "Touche" et ajouter "Enter" à l'intérieur *sa va écrire "Retour"* et le tour est joué ! *Voir l'image plus bas pour visualiser les deux nouvelles actions ajoutées*


9 Dernière étape de la gestion des combats ! Et oui ! Comment notre bot retournera à l'endroit où il était avant le combat ? Créer une action "Aller à". Vous devez la placer juste après la fermeture de fenêtre du combat. Aller à : $dernierClic
Je n'ai pas envie de vous expliquer pourquoi mettre ceci et tout, alors je vous dis juste quoi faire. Lorsque l'action "Aller à" est ajoutée, créer une action de "Code" avec à l'intérieur *copier/coller* : var dernierClic = Script.nextLine; .

Si vous avez créer un bot combat : Mettre cette action (je parle bien de l'action code avec : var dernierClic = Script.nextLine; (pour être sûr!)) tout suite après un changement de map. Pour ma part il y en aura que deux dans mon script

Si c'est pour un bot récolte, il faut mettre cette action avant chaque Détection de combat, il y en aura alors beaucoup, mais c'est obliger (ou presque...).


Après avoir écris ce tutoriel, j'ai suivie à la lettre toutes les étapes et ça m'a donné ceci en image :

*Attention* : La dernière étape ne figure pas dans le screen !*



Note : Il ce peut que ma démo ne fonctionne pas chez vous. Je l'ai créé rapidement donc je n'ai pas pris de position très très précise. Mais elle sont tout de même bonne et fonctionnelle chez moi. Vous remarquerai qu'il est très facile de s'y retrouver car chaque action sont commentées.




Et pour terminer, voici le tout combiné. Je vous rapelle que ce script est tout de même basic ! Il est donc normal qu'il ne fonctionne pas parfaitement à coup sûr partout. Je vous invite à aller voir la section "Mes Trucs et Astuces" pour aller plus loin.





C). Création d'un Bot Récolte


Cette partie du tutoriel ne sera jamais ré-édité car il existe un tutoriel complet sur la création d'un bot récolte. Avec gestion de la banque et des combats (plus complexe que ma méthode du côté des combats). Très bien expliqué et imagé au maximum ! Bravo au créateur : xorasxhl

Voici le lien :
Création d'un Bot Récolte

Voici une piste sur la création d'un bot récolte :


- Un bot récolte a des paramètres comme un bot combat. Il doit aussi se déplacer jusqu'à la zone de récolte. (Se référer au étape 1 à 3 de la partie sur la création d'un bot combat)

- Puis une boucle logique qui ressemble normalement à celle-ci :
1. Clic sur la ressource
2. Pause d'un temps X mis dans une variable
3. La fameuse action "Code" qui servira au bot à retourner à l'endroit présent après les combats. (Voir étape 9 de la "Gestion des combats")
4. Vérification avec une couleur de pixel pour les combats.
5. Vérification des pods pour aller à la banque. (Un Mini tutoriel sera consacré à cela. Pour le moment vous pouvez oublier cette vérification si vous ne vous sentez pas à l'aise)
6. Et on recommence à 1.

- Quand toutes les ressources sont récoltés sur la map, on change de map.

- Il est préférable que la dernière Map récolté soit juste avant la première créé pour boucler le circuit.

Je pense qu'avec ça vous pouvez avancer énormément. Si vous avez des questions n'hésiter pas à les poser en Mp ou ici.



III. Création d'un Exécutable .SFX

Cette partie du tutoriel ne sera pas vraiment longue. Cependant je jugeais important de l'ajouter à ce tutoriel.

Premièrement, pour créer un exécutable .SFX il faut de préférence avoir fini sont script. Si c'est le cas aller dans "Fichier" - "Exporter" - "Exécutable .SFX" - Choisissez le nom de votre script et sont emplacement - "Enregistrer". Une fenêtre apparaîtra avec ceci :

-Désactiver l’icône dans la barre des tâches [ ] : Vous comprenez le français ?

- Afficher la console [ ] : Si vous utilisez l'action console dans votre script je vous conseil de cocher cette option.

- Afficher la fenêtre d'exécution [ ] : Cette fenêtre d'exécution, c'est celle avec le Stop et Pause. Je conseil encore de le laisser, surtout si vous partagez votre script.

- Fermer Actionaz après l'exécution [ ] : Si cette option n'est pas coché, après l'exécution Actionaz va s'ouvrir avec votre script. Je conseil donc de toujours la cocher.

- Nécessite Actionaz [ ] : Si cette option est coché, seul les personnes avec Actionaz 3 pourront utiliser ce script. Je conseil de toujours cocher.

- Utiliser les binaires 32 bit [ ] Je ne sais pas à quoi sert cette option et je m'en fou.

Après ça vous n'avez qu'à héberger votre exécutable et le partager à tout le monde.

C'est déjà la fin de cette courte partie. J'ajouterais des choses si j'ai des idées ou conseils à vous donner.



IV. Mes Trucs et Astuces

Dans cette section, vous retrouverais plusieurs minis tutoriels de tout genre :

Je connais deux méthodes très différentes de gérer les Up.

La première, détection de la fenêtre avec une couleur de pixel après chaque monstre combattus ou ressource récolté pour amener le bot à cliquer sur "Ok" et ensuite retourner Farmer ou récolter.

Une méthode beaucoup plus simple : Mettre une action de Touche avec "Enter" (Ça va écrire "Retour") après chaque monstre combattu ou ressource récolté. Le bot appuiera sur "Enter" même si la fenêtre n'est pas ouverte et cela ne dérangera en rien la suite des actions. Si la fenêtre est ouverte elle se fermera automatiquement quelques secondes après.




Créer une position aléatoire peut vous sembler inutile... Mais c'est en faite une chose que vous devriez souvent vous servir ! Commencez par créer trois variables... Non ! Ne faite pas se que je pense ! Ne créer pas trois variables dans l'action variable. À la place, créer une action "Code" et insérer ces trois variables. C'est très facile. *Je vous conseil de prendre les même variables que moi* Copier coller la suite dans une action "Code" :

var Px = 0
var Py = 0
Var Pxy = new Point(PX, PY);

Maintenant, si vous voulez créer une position aléatoire c'est facile. Vous créer une autre action de code et vous ajouter ceci :

var PX = Algorithms.randomInteger(X1,X2);
var PY = Algorithms.randomInteger(Y1,Y2);
var PXY = new Point(PX, PY);

Les deux X,X et Y,Y sont à changer par des chiffres. Pas n'importe lesquels ! Vous devez utiliser l'action "Trajet de curseur" (ou Clic, ou déplacement du curseur...). Vous prenez deux position qui délimitent en X et en Y la zone que le bot pourra appuyer. En image (désoler, j'avais pas envie d'ouvrir Dofus) :

(X = Largeur Y = Hauteur)


(Position inventée)

Il faut toujours prendre deux côtés stratégique, l'un doit corresponde au minimum en X et en Y et l'autre évidement va être le maximum en X et en Y. Dans mon image ci-dessus, le bot cliquerais à quelque part dans le carré rouge. Alors quand vous mettez cette ligne : : var PX = Algorithms.randomInteger(X1,X2); Le bot va créer une position (En X) aléatoire entre les deux nombres que vous lui proposer. Puis il fait la même chose en Y. Il prend les deux nombres aléatoires générés et les assemblent pour former une position aléatoire.

Pour finir, vous créer votre clic et vous y ajouter votre variable à l'intérieur :



N'oubliez pas que vous pouvez utiliser autant de fois que souhaité ces variables !

Voici quelques idées d'utilisation de cette fonction :
- Créer des changements de map aléatoires (Vous verrai dans un autre de mes minis tuto pourquoi c'est important !)
- Mouvement aléatoire pour changer la "routine" du bot
- Système de mouvement pour les combats (Un "Mini tuto sera consacré à ça. Bientôt en ligne !)
- Et plusieurs autres petites utilité comme celle d'avant !


Une action dans ce tutoriel a été cité peut-être deux ou trois fois, mais jamais rien de bien concret. Aucune explication à son égard. Je parle de l'action Code. Elle est très peu utilisée dans ce tutoriel et n'est presque jamais énoncé. Pourtant cette action permet, si vous êtes un peu doué, de créer votre script entier dans une seul action... :o

Actionaz 3 sait lire le JavaScript ***Attention ! Ne confondez pas avec le Java. Ce sont deux langages de programmation différents***. Alors pour les programmeurs cette action est probablement la plus intéressante car les possibilités sont infinies (ou presque). Voici avant de continuer un lien vers un gros tutoriel pour les débutants sur le JavaScript : Ici. Voici maintenant des fonctions ajoutées par le créateur du programme pour Actionaz 3 : Ici. Si vous n'avez jamais programmer il ce peut que ça soit très compliqué de chercher une fonction et de l’appliqué dans Actionaz. Cependant, la suite de ce Mini tutoriel sera relativement facile à comprendre et à mettre en pratique. De plus il vous sera normalement très utile.

Note : Ce Mini tutoriel est susceptible d'être modifié pour un ajout de contenu*

Passons au vif du sujet.


- De l'action Variable à l'action Code

Commençons par complètement renoncer à l'action "Variable" pour la transformer en action "code" qui pourra contenir toutes vos variables en même temps ! Voici des exemples *En image* de "transformation".








Vous voyez comment c'est facile et pratique?



- Quelques fonctions utiles !

1. La première fonction que j'ai à vous présenter, va servir surtout à ceux qui partagerons leur script au grand public. Cette fonction vous permet de sélectionner un dossier quelconque dans l'ordinateur. Elle retourne le lien vers ce fichier :

Code:

var CheminFichier = "";

var fileDialog = new FileDialog({
title: "Sélectionner le Fichier",
fileMode: FileDialog.Directory,
acceptMode: FileDialog.Open
});

if(fileDialog.showModal())
{
CheminFichier = fileDialog.selectedFile();
}

Si vous insérez ce code dans une action "Code", voici ce que vous aurez :



Si vous le désirez, vous pouvez modifier ou ajouter quelques paramètres dans cette fonction. Voici la page à aller voir pour savoir quoi changer : Ici.

Voici les deux paramètres (selon moi) utiles à changer dans certains cas :

title : C'est le nom qu'aura la fenêtre.
fileMode : Vous avez le choix entre :
AnyFile: le fichier n'a pas besoin de disposer d'un mode pour être sélectionné
ExistingFile: Il n'y a qu'un fichier qui peut être sélectionné et doit être existant
ExistingFiles: un ou plusieurs fichier existant peuvent être sélectionnés
Directory: un répertoire peut être sélectionné

*Écrivez sur le sujet ou Mp moi pour plus d'information ou d'aide.*


- Commenter son Code

Si vous désirez commenté directement dans le code vos variables ou création quelconque, vous n'avez qu'à faire deux slash ( // ) l'écriture suivant les slash seront en verte et ne seront pas lues par le programme. Il seront utile qu'à vous.


- Une astuce bien pensé !

Personnellement, pour toujours retrouver mes variables dans mon code, je mes l'action code comme première action et j'ajoute TOUTES les variables utilisées dans mon script. De A à Z. De cette façon, toutes mes variables sont initialisé au début du script et ne me cause pas de problème. De plus elle sont facile à trouver et modifier. *Mon plus gros script contient plus de 80 variables !*


Le bot combat créer plus haut est bien simple... Je vais vous apprendre dans ce mini tutoriel à créer un bot combat capable de beaucoup plus !


- Déplacement en Combat:


Note : Il est très conseillé d'avoir lu le mini tutoriel "Comment créer une position aléatoire ?" pour bien comprendre cette partie. Du moins si vous êtes peu expérimenté ou avez beaucoup de difficulté dans ce Mini tutoriel.

Un bot qui ne bouge jamais en combat peut être un gros désavantage. Pour qu'il se déplace, il existe trois méthodes différentes selon moi :

1. Mode de combat sur UNE map. Tous les déplacements sont programmés à l'avance. Très casse-tête et pratique seulement si vous utiliser une map voir deux...

2. Un système de déplacement complexe. Active le mode tactique et créature pour regarder chaque case une après l'autre pour déterminer qu'elle case est occupé et tout... Peut être utile si créé, mais je n'ai jamais eu le courage ! ^^

3. Un système de mouvement complètement aléatoire. C'est celui que je vous montrerais en première partie dans ce mini tutoriel.

Voici les avantages et désavantages d'un tel système de mouvement :

+ :
Comporte que quelques actions
Fonctionnelle sur n'importe lesquels maps
Facile à utiliser

- :
Peut éloigner le bot de sa cible

Il y a sûrement d'autres avantages et désavantages, mais je n'ai d'autres idée.

Si vous avez lu le Mini tutoriel sur "Comment créer une position aléatoire ?" vous devriez déjà avoir une idée de la méthode que je vais vous montrer.

Commencez par trouver le point X le plus petit dans la map (Coin en bas à gauche) et le point Y le plus haut (Coin en haut à droite). Référer vous à mon autre mini tutoriel si vous désirez plus de précision à ce sujet.

Pour ma part, avec ma fenêtre redimensionné à 725*600 et en déplaçant cette fenêtre à la position 0, j’obtiens ceci : [X = (62,660)] [Y = (64,485)]

Lorsque vous aurez vos positions une action de code, créer une action de "Code" et mettez lui un ID (Le mien c'est : Move) puis ajouter le contenu qui suit :

Note : Vous n'êtes pas obligé de mettre les mêmes noms de variables que j'ai mis. (Px, PY, PXY)

var PX = Algorithms.randomInteger(62,660);
var PY = Algorithms.randomInteger(64, 485);
var PXY = new Point(PX, PY);

Après avoir créé ceci, ajouté à la suite de cette action un clic avec la variable "PXY" (ou votre variable) à l'intérieur.

Finissez avec une boucle qui retourne à notre action de code ("Move" dans mon cas). Si vous mettez 50. Le bot cliquera à 50 positions aléatoire dans la map. Personnellement je vous conseil entre 25 et 125. En haut de 125 le bot devient trop lent et en bas de 25 il ne bouge pas souvent. Trouver par essai/erreur votre "Intensité" préférée.
Conseil: Si votre bot bug à cause de ce système, ajouter une "Couleur de pixel" qui vérifiera si le combat est terminé après chaque clique aléatoire. Normalement le bug devrait être résolu. Le bot sera un peu plus lent mais c'est le pris à payer ! Sinon Mp moi vos problèmes !

À ce point si, voici en image ce que sa donne :
Pour finir, modifié l'action suivante "Fin?" et au lieu de "Si vrai aller à : Feu_1" changer pour "Si vrai aller à : Move". Puis placer les trois (ou quatre) actions juste AVANT "Feu_1".

Pour finir une image :

Les match Nul

Parfois lors des combats, les deux adversaires sont loin l'un de l'autre. Si le bot ne bouge pas et que le protecteur de ressource décide qu'il avance de quatre, recule de quatre... et sa à tous les coups, le combat peut durer très très longtemps. Surtout si vous avez 3000 Pdv...

Une solution existe !

- Créer dans une action "Code" (de préférence) avec une variable qui définira les "Match Nul". Pour ma part la variable ce nomme : MatchNul. Donc : MatchNul = 0

- Par la suite créer une autre action "Code" et mettez à l'intérieur : MatchNul++ (+1 à MatchNul). Ajouter cette action juste après le Clic pour passer le tour.

- Créer une "Condition de variable" et vérifier que : MatchNul est Égale à 30 (30 est un nombre pris au hasard comme exemple) Si MatchNul est égale (=) à 30, aller à : Abandon. Sinon ne rien faire.

- Il ne vous reste qu'à créer l'action de Clic avec l'ID Abandon (ou autre) pour que le bot clic sur abandonner et tout. Ajouter ces actions après la gestion des combats pour ne pas encombrer le reste.

- Dernière étape, créer une autre action de code avec à l'intérieur : MatchNul = 0
Placez cette action après avoir fermé la fenêtre de fin de combat.

Voici comme d'habitude une image illustrant le résultat :

Pour terminer, quelques idées !

Voici quelques idées d'amélioration avec une brève description pour vous aider.

Voici une première idée très intéressante mais complexe à réaliser ! Prenons par exemple l'enutrof Eau bas level. Vous décidez qu'il utilisera lancer de pièce pour attaquer. Cependant, ce sort permet de s'auto attaquer. Donc le système de combat plus haut est inutilisable, sauf si vous désirer mourir à chaque combat.

Pour permettre d'utiliser ce sort, j'ai créer mon propre système de combat pour Enutrof (sans rigoler). Avec une variable Initiative, je détermine qui commence le combat. Attend aprox. trois secondes juste après avoir fait "Près", regarde si c'est au tour du bot, si oui une variable vaut 1, sinon elle vaut 0.
Si la variable vaut 1, le bot peut être n'importe où, sauf complètement à droite dans la TimeLine. Donc on attaque à cet endroit 3-4x. Si la variable vaut 0, on attaque ceux à gauche. Il ne faut pas oublier d'utiliser la condition de variable pour déterminer si le bot commence le combat ou pas.

*Image à venir (normalement) prochainement*

NON COMPLET + la flemme

 
Statut
N'est pas ouverte pour d'autres réponses.
Haut