Tout d'abord, bonjour.
Que vais-je vous apprendre aujourd'hui? Simplement à créer un bot flood dit "complet".
Pourquoi complet? Tout simplement parce qu'il comportera des options tel que le flood canal, et l'ajout de smiley ou de chiffres en fin de phrase.
Sommaire
1. Comment créer un bot flood complet (schéma à suivre pour travailler)
2. La GUI (Et oui, je n'aime pas les logiciels sans interface)
3. Organisation d'un Squelette
4. Le Flood
5. Le Temps
6. Les Canaux
7. Les Fins de Phrases
8. Rajouter de la réalité à son bot
---8.1. Une Barre de Progression
---8.2. Un Rapport de Flood
---8.3. Des Labels qui s'adaptent
9. Des Raccourcis
10. Trucs et Astuces
---10.1. Démarrage par nom du personnage
---10.2. Un Titre Progressif
---10.3. Améliorer son Bot
Voilà, avec cela, nous pouvons commencer dès maintenant.
1. Comment créer un bot Flood complet. Schéma à suivre.
Je ne vais pas prendre trop de temps sur cette partie tout simplement parce qu'elle n'est pas utile dans la création d'un Bot.
Je vous conseille tout de même de la lire car elle pourrait vous donner deux trois conseils pour réussir vos programmes.
Tout d'abord, sachez qu'un bon programme ça ne se fait pas comme ça, il vous faudra commencer, recommencer, recommencer encore et toujours.
Je sais pas si vous avez remarqué mais un programme ça marche jamais du premier coup, il y a toujours des erreurs. Le seule moyen de corriger ce problème c'est un peu de logique et de persévérance.
Même en suivant à la lettre un tutoriel vous pourrez faire des erreurs (Ne vous acharnez donc pas sur moi =p).
Pour apprendre bien et apprendre mieux, je vous conseil tout simplement de ne pas suivre ce tutoriel à la lettre.
"Il fait un tutoriel pour qu'on fasse pas pareil? Il est fou *o*"
Même pas! Quand je dis cela, je veux dire créer votre propre GUI, donnez à vos variables les noms que vous préférez etc... En résumé, inspirez vous de mon tutoriel pour créer votre bot.
Si vous n'êtes pas tout à fait à votre aise et que vous avez commencé AutoIt il y a peu de temps, modifiez les éléments que vous pouvez, vous aurait certainement des erreurs lors de la lecture du script mais c'est normal, vous n'aurez qu'à chercher et corriger ces erreurs, c'est comme ça qu'on apprend.
2. La GUI
Bon, nous pouvons commencer à créer notre petit programme.
Ouvrez un nouveau projet (Clique droit>Nouveau>AutoIt v3 Script)
Enregistrez le en lui donnant le nom de votre choix.
Maintenant, Tool>Koda(FormDesigner)
Pourquoi ais-je d'abord enregistré le fichier? Tout simplement pour faire apparaitre la Koda dans la partie des Tools.
Donc vous arrivez sur la Koda qui vous permettra de créer votre GUI (Graphic User Interface).
A partir de là, je vais vous donner des screen de ma GUI final. A vous de faire quelque chose de votre choix mais qui doit contenir obligatoirement les mêmes options, c'est obligatoire pour continuer le tutoriel. (Les options obligatoires sont entourées en rouge)
La différence entre un bot Flood avec GUI et un bot Flood sans GUI est très certainement la facilité d'utilisation ainsi que l'ajout d'options plus facile à réaliser lorsqu'il y a une GUI.
Lorsque vous faites une GUI, je vous conseil de modifier directement sur la GUI le nom de chaque éléments qui seront important dans votre programme comme ci-dessous (J'ai prit l'Input Box correspondant à la Phrase 1):
Pourquoi faire comme ça et pas modifier dans le code source? Parce que si vous devez modifier votre GUI un jour, vous récupérerez le code sauf que vous n'aurez plus qu'à remettre les noms à vos variables puisqu'elles auront gardé ceux présents sur la GUI (C'est à dire les noms de base)
Mettez des noms facilement identifiable et correspondant bien à l'élément.
Petit Rappel: Les noms des variables ne peuvent contenir que des lettres minuscules et majuscules ainsi que des tirets bas _ et des chiffres.
Voici quelques noms de variables que j'ai utilisé:
Une fois votre GUI terminée, vous n'aurez plus qu'à récupérer la code et le coller dans Scite.
Voici le code que j'obtiens:
Vous remarquerez que j'ai assigné à $BoutonLaunchFlood le raccourcis F1 et ce, depuis la GUI.
Bon maintenant je vais vous expliquer comment j'organise le squelette de mes programmes.
Je vous conseil aussi à partir d'aujourd'hui d'utiliser cette technique pour tout vos programmes car elle est très pratique et permet une organisation claire dans son programme.
3. Organisation d'un Squelette
Un squelette qu'est-ce que c'est? Hé non, ce n'est pas l'ensemble de tous les os nous composant. Remarque, c'est un peu pareil mais en AutoIt.
Le squelette d'un programme c'est en fait les différentes parties qui le composent.
Pour ma part les squelettes de mes programmes se composent toujours ainsi:
Dans mon code source, les grandes parties ci-dessus sont notées en commentaires comme ceci:
Les sous parties sont notées comme ceci:
Les parties se trouvent dans les grandes parties. Notez que je ne met pas de retour à la ligne entre deux sous-parties
Et les sous-sous parties comme ceci:
De même pour les sous parties qui se trouvent soit dans les parties soit dans les grandes parties.
Ici non plus par de retour à la ligne
Bon, ça peut paraitre mal expliqué c'est pourquoi je vais vous donner un exemple direct avec le code précédemment récupéré
Donc, si l'on applique ce que j'ai dit précédemment sur le code récupéré, cela donne:
Voilà, vous avez votre squelette! C'est-ti pas plus claire comme ceci?
Nous allons maintenant pouvoir attaquer la programmation proprement dites.
4. Le Flood
Je sais même pas si c'est utile de faire un tutoriel sur cette partie, il en existe déjà tellement!
Bon, ici, je vais vous expliquer comment réaliser le principe de base de votre Bot, c'est à dire, le flood.
Pour vous expliquer, je vais juste prendre des bouts de code que je vais détailler.
Nous allons tout d'abord aller dans notre boucle principale.
Vous allez ajouter une Partie correspondant au bouton $ButtonLaunchFlood comme ceci:
Décortiquons ce code:
Etant donné qu'il y a beaucoup d'éléments à lire, j'ai préféré donner des noms aux actions "Lire ce que contient l'élément..."
Donc, dans ce morceau de code, j'ai juste donné à la variable $ReadInputPhrase1 la valeur GUICtrlRead($InputPhrase1) et ainsi de suite pour les autres variables.
Continuons,
Ici, ça devient un peu plus compliqué n'est-ce pas?
Donc, pour résumer, si ce qui est lu sur le bouton $ButtonLaunchFlood est "Démarrer le Flood" (Donc si le Flood n,'a pas encore été démarré) et que la Phrase 1 contient quelque chose alors le flood peut démarrer.
Cependant, si la Phrase 1 est vide, un message d'erreur apparait.
En gros, il faut qu'il y ai au moins une phrase de remplit pour démarrer le flood.
Voyons maintenant la fonction _FloodBot
Je ne pense pas que cette partie ai besoin d'explications, tout est dans les commentaires.
Bon, maintenant ça va se corser avec la fonction _Flood
Bon ok, je vous ai menti, ce code est très simple à comprendre.
Une fois de plus, toutes les indications se trouvent dans le code.
Mais ne riez pas trop vite parce que vous avez tout compris. Vous allez voir que cette fonction va devenir plus complexe par la suite.
Vous aurez peut-être remarqué le /20 se trouvant à la fin des Sleep? N'y prêtez pas attention, il servira plus tard lorsque nous verrons les ProgressBar.
Bien sur, si cela ne vous intéresse pas de mettre un ProgressBar, libre à vous de le supprimer.
Bon, voilà, vous savez faire un bot flood de base.
5. Le Temps
Hum... Je vous annonce officiellement que je me suis trompé dans mon Sommaire et que j'ai la flemme de le modifier! Bon, de toute façon ça ne servait à rien de consacrer un chapitre pour ça donc bon!
C'était en fait la gestion des Sleep dans la fonction _Flood
Voilà, le chapitre le plus rapide et le plus facile de ce cours est terminé!
6. Les Canaux
Bon c'est là que ça ne rigole plus. Voici comment ajouter le choix du canal de Flood dans notre Bot.
Comme vous aurez pu le remarquer, j'ai mis trois ComboBox, une par phrase comprenant un certain nombre de choix de canal de Flood.
Je vais donc vous expliquer comment modifier la fonction _Flood pour obtenir ce code:
Voilà ce que devient notre fonction _Flood!
Ici tout ce qui change c'est que l'on ajoute des If pour donner une indication pour chacun des canal choisit et que l'on tape /canal choisit entre le premier Entrée et la phrase sans oublier un espace entre ces deux derniers.
7. Les Fins de Phrases
J'espère que vous êtes confortablement installé parce que c'est là que votre fonction _Flood va s'allonger.
Bon, je vais vous dire maintenant ce que nous allons changer.
Nous allons pour commencer copier-coller une partie de notre fonction et ajouter un If et un ElseIf pour expliquer ce que se passe lorsque l'on va choisir de mettre en fin de phrases des smileys ou des chiffres.
Voici notre fonction à la fin, je vous met des commentaires dans le code comme d'habitude:
Elle peut paraitre dure à comprendre mais elle est enfait très simple, je n'ai fait que répéter les mêmes opérations à chaque fois. Comme vous pouvez le voir si l'utilisateur choisit de mettre des smileys à la fin, on stockera dans $FinSmiley un chiffre aléatoire de 1 à 6 et selon le chiffre stocké, on en sortira un smiley à la fin de la phrase.
De même si l'utilisateur choisit des chiffres en fin de phrases sauf que l'on stocke dans FinChiffre un chiffre aléatoire de 1 à 9 qui sortira un chiffre en fin de phrase.
J'ai oublié de la préciser au début mais je pense que vous l'avez déjà compris, le premier Send "Entrée" permet d'ouvrir la barre de Tchat de Dofus. Ensuite, on met toutes les informations que l'on veut placer dans la barre de Tchat. Puis le second Send "Entrée" permet d'envoyer tout ce qui a été écrit.
Et bien voilà, vous savez maintenant comment faire un bot Flood complet.
Cependant, nous n'allons pas nous arrêter là. Je vais vous expliquer maintenant coment rendre son bot "réaliste".
8. Rajouter de la réalité à son bot
---8.1. Une Barre de Progression
Ici, je vais vous apprendre comment mettre un barre de progression qui avance au rythme de l'envoie des phrases. En gros, vous lancez votre bot, vous mettez 5 secondes entre chaque phrase. Votre barre de progression prendra 5 secondes à se remplir et se videra une fois la phrase envoyée pour se re-remplir après.
Revenons tout d'abord à notre fonction _Flood.
Vous vous souvenez de /20 à la fin des Sleep? Non non, ce n'est pas une note sur 20 que je donne à mon Sleep, c'est en fait ce qui va permettre l'avancement de la ProgressBar.
J'ai choisit de faire une ProgressBar "bidon" avec un faux avancement qui varie selon le Sleep. Même si elle est bidon, elle fait quand même réelle aux yeux de l'utilisateur.
Je vous explique comment je l'ai faite marcher.
J'ai mis dans une fonction _Progress 20 fois l'avancement d'une même ProgressBar, donc à chaque fois elle avance de 5% (5*20=100)
Ce qui explique donc le /20 de mes Sleep.
Vous commencez à comprendre? J'ai donc mis sous mes Sleep un renvoie vers ma fonction _Progress de façon à ce que tous les Sleep/20, ma ProgressBar augmente de 5%
Voici ma fonction _Flood une fois les renvoie vers la fonction _Progress ajouté:
A vous de chercher les _Progress() maintenant!
Bon, maintenant, c'est bien beau d'avoir mis des renvoie à une fonction _Progress mais si elle existe pas, on fait comment hein? Hé bah on la crée beuh!
...
Ok ok... Je vais vous dire comment j'ai fais!
Comme vous pouvez le voir, je n'ai fait que répéter le même code 20 fois pour faire progresser la ProgressBar à 100% de 5% en 5%. Une fois à 100%, je l'ai réinistiallisée.
Mais! Pourquoi que ça marche pas! T-T
Comment ça $PourcentageFlood n'a pas été déclaré? Et bien oui, c'est vrai, nous n'avons pas encore déclaré la variable $PourcentageFlood et elle ne contient pour le moment aucune valeur. Nous allons donc devoir la créer et lui donner comme valeur de départ 0.
Vous vous souvenez de comment on fait un squelette?
Hé bien c'est le moment d'ajouter ;===Déclaration des Variables=== entre ;===Includes=== et ;===GUI===
Ce qui vous donne:
Voilà, maintenant ça marche!
---8.2. Un Rapport de Flood
Pourquoi ne pas mettre un petit rapport de Flood qui montre ce que vous avez floodé, à qu'elle heure etc etc...
Alors, ici, nous allons simplement modifier notre edit $EditRapportFlood et y ajouter pour chaque phrase une ligne contenant l'heure, la minute, la seconde à laquelle la phrase a été floodé, ainsi que la phrase floodé et bien évidemment le smiley ou chiffre qui l'accompagne.
Retournons dans notre fonction _Flood (Oui oui, je vous promet qu'après cela il ne nous resteras plus qu'une ligne à ajouter dedans et on en aura fini avec cette fonction!)
Alors, voici le code que nous devrons ajouter à la fin de la saisie de chaque phrases:
Voilà, vous savez modifier un Edit!
Remarquez que j'aurez très bien pu mettre le retour à la ligne avec le premier InsertText mais j'ai préféré le diviser en deux lignes.
Ne me dites pas que vous avez oublié? Hé oui, une fois de plus il faut déclarer votre variable $NombreFlood.
Retour dans la Grande Partie "Déclaration des Variables"
Cette fois-ci, mettez lui 1 comme valeur de départ comme-ceci:
Pourquoi mettre 1 comme valeur de départ? Essayez de mettre 0 vous comprendrez mieux.
Effectivement, lorsque vous aurez floodé votre première phrase, le chiffre qui apparaitra sera 0 phrases floodées alors que vous en aurez floodé 1.
Pourquoi? Tout simplement parce que j'édite le contenu de mon InputBox avant d'ajouter 1 à mon compteur $NombreFlood (Et oui, cela s'appelle un compteur et j'ai l'habitude de déclarer mes compteurs en Global au début de mon code source)
Ca marche toujours pas? La fonction n'existe pas? Allez dans vos Includes et ajoutes celle-ci:
Voilà, c'en est aussi fini de cette partie! On approche de la fin n'est-ce pas =p
Ensuite nous verrons comment modifier des labels pour montrer l'avancement de notre Bot.
---8.3. Des Labels qui s'adaptent
Pour que vous compreniez par vous-même la technique que j'utilise, je vais vous rappeler quelque chose dont je pense vous n'avez pas fait plus attention que ça.
Vous vous souvenez de ça, dans notre boucle principale? Comme vous pouvez le voir, ici on modifie ce qui est écrit sur notre $ButtonLaunchFlood pour montrer que le flood est déjà actif.
C'est bon, vous voyez où je veux en venir? Et oui, nous allons faire pareil avec les Labels!
Déjà, faut savoir où mettre la modification des Labels... Pour ma part j'en ai mis un peu partout.
Commençons tout d'abord par la fonction _FloodBot:
Et il y en a aussi dans ma fonction _Flood:
Hum... Bon, il y en a un autre mais il se trouve dans une fonction que nous n'avons pas encore créer, la fonction qui permet de mettre le Bot en Pause.
Je vais donc juste vous donne la ligne concernée:
Bon, maintenant qu'on sait éditer le texte contenu dans un Label, je vous propose d'attaquer la suite.
9. Des Raccourcis
Les raccourcis. Concrètement, tu appuies sur une touche et ça fait un truc. Informatiquement, tu appuies sur une touche et ça démarre une fonction.
Pour commencer, choisissez les touches qui correspondront à telle fonction (N'oubliez pas de respecter le squelette et placez les raccourcis entre la GUI et la While Principale):
Bon, bien évidemment, libre à vous d'utiliser d'autre raccourcis. Mais moi j'ai prit ces touches là car j'ai pris ce bot Flood du Kagami FPF Multi-Bot (Bot de Flood, de Pêche et de Fauche) que j'avais créé l'année dernière donc les touches F1, F2 et F3 étaient utilisés.
Comme toujours, je vous donne les fonctions déjà détaillées:
Hum... Voilà, vous pouvez souffler bien fort! Vous avez enfin terminé ce cours! Vous savez maintenant créer un Bot de Flood Complet!
Voici le code source que vous obtenez si vous avez suivit mon tutoriel à la lettre:
10. Trucs et Astuces
---10.1. Démarrage par nom du personnage
Bon, comme promis, je vais vous expliquer comment démarrer le Flood lorsque le personnage de l'utilisateur se connecte en jeu.
Par contre, je ne vais pas vous donner de code source cette fois-ci, je vous dirai comment faire et vous vous débrouillerez.
Tout d'abord, retournez dans votre fonction _FloodBot
Devant le ToolTip, ouvrez une InputBox demandant le nom du personnage de l'utilisateur que vous stockerez dans une variable. Ensuite remplacez le If WinActive("Dofus") par If WinActive("$VotreVariableContenantLeNomDuPersonnage")
Et voilà, ça devrait faire l'affaire.
Remarquez que vous pouvez aussi mettre une InputBox sur la GUI ce que je trouve beaucoup plus pratique pour l'utilisateur (Si on commence à ouvrir 36000 fenêtre en même temps, l'utilisateur ne s'y retrouvera pas)
---10.2. Un Titre Progressif
Ce que je vais vous donner ici n'a aucun rapport avec le bot, c'est juste un petit moyen de mettre un peu d'esthétique dans son programme.
Effectivement, le code que je vais vous donner permet l'affichage lettre par lettre du titre du programme.
Tout d'abord une petite fonction.
Ensuite, placez ceci dans votre Déclaration des Variables:
Hop et voilà, votre titre apparaitra une lettre par une lettre puis se réinitialisera.
Je tiens à préciser que je ne suis pas le créateur de cette fonction.
---10.3. Améliorer son Bot
Voici ci-dessous quelques améliorations possibles pour un Bot de ce type.
-Améliorer la GUI, l'embellifier parce que là, ça craint du boudin!
-Ajouter un système de mises à jour automatique.
-Ajouter un onglet "Mot de Passe" et bloquer certaines options (Je sais pas si on peut appeler ça une amélioration mais pour progresser plus y en a mieux c'est!)
-Ajouter un onglet "Options" contenant un choix de préférences pour l'utilisateur comme choix de la couleur de l'interface, si il veut que le titre s'affiche lettre par lettre ou qu'il soit statique etc etc...
-Ajouter un onglet "Aide Internet" où il y aurait un mini-navigateur contenant seulement la page où vous avez publié votre Bot par exemple. (Attention car ça ralentira considérablement l'ouverture de votre Bot, je l'avais mis sur le mien mais je l'ai supprimé.)
Après, c'est à vous de rivaliser d'imagination pour créer THE Bot.
Et je tiens aussi à préciser que toutes les améliorations proposées ci-dessus, je les ai déjà réalisées donc elles sont largement possible et à votre portée.
Nous arrivons donc à la toute fin de ce cours.
J'espère vous avoir appris beaucoup et que vous utiliserez les méthodes apprises dans tous vos programmes et que vous ferez de vraies petites merveilles grâce à moi =p
Temps d'écriture du tutoriel: 4 heures
Chanteur/Groupes écoutés: Dub Inc
Damian Marley
Bob Marley
Rammstein
System Of A Down
Cypress Hill
Method Man & Redman
PS: Un p'tit merci n'a jamais tué personne ;)
Que vais-je vous apprendre aujourd'hui? Simplement à créer un bot flood dit "complet".
Pourquoi complet? Tout simplement parce qu'il comportera des options tel que le flood canal, et l'ajout de smiley ou de chiffres en fin de phrase.
Sommaire
1. Comment créer un bot flood complet (schéma à suivre pour travailler)
2. La GUI (Et oui, je n'aime pas les logiciels sans interface)
3. Organisation d'un Squelette
4. Le Flood
5. Le Temps
6. Les Canaux
7. Les Fins de Phrases
8. Rajouter de la réalité à son bot
---8.1. Une Barre de Progression
---8.2. Un Rapport de Flood
---8.3. Des Labels qui s'adaptent
9. Des Raccourcis
10. Trucs et Astuces
---10.1. Démarrage par nom du personnage
---10.2. Un Titre Progressif
---10.3. Améliorer son Bot
Voilà, avec cela, nous pouvons commencer dès maintenant.
1. Comment créer un bot Flood complet. Schéma à suivre.
Je ne vais pas prendre trop de temps sur cette partie tout simplement parce qu'elle n'est pas utile dans la création d'un Bot.
Je vous conseille tout de même de la lire car elle pourrait vous donner deux trois conseils pour réussir vos programmes.
Tout d'abord, sachez qu'un bon programme ça ne se fait pas comme ça, il vous faudra commencer, recommencer, recommencer encore et toujours.
Je sais pas si vous avez remarqué mais un programme ça marche jamais du premier coup, il y a toujours des erreurs. Le seule moyen de corriger ce problème c'est un peu de logique et de persévérance.
Même en suivant à la lettre un tutoriel vous pourrez faire des erreurs (Ne vous acharnez donc pas sur moi =p).
Pour apprendre bien et apprendre mieux, je vous conseil tout simplement de ne pas suivre ce tutoriel à la lettre.
"Il fait un tutoriel pour qu'on fasse pas pareil? Il est fou *o*"
Même pas! Quand je dis cela, je veux dire créer votre propre GUI, donnez à vos variables les noms que vous préférez etc... En résumé, inspirez vous de mon tutoriel pour créer votre bot.
Si vous n'êtes pas tout à fait à votre aise et que vous avez commencé AutoIt il y a peu de temps, modifiez les éléments que vous pouvez, vous aurait certainement des erreurs lors de la lecture du script mais c'est normal, vous n'aurez qu'à chercher et corriger ces erreurs, c'est comme ça qu'on apprend.
2. La GUI
Bon, nous pouvons commencer à créer notre petit programme.
Ouvrez un nouveau projet (Clique droit>Nouveau>AutoIt v3 Script)
Enregistrez le en lui donnant le nom de votre choix.
Maintenant, Tool>Koda(FormDesigner)
Pourquoi ais-je d'abord enregistré le fichier? Tout simplement pour faire apparaitre la Koda dans la partie des Tools.
Donc vous arrivez sur la Koda qui vous permettra de créer votre GUI (Graphic User Interface).
A partir de là, je vais vous donner des screen de ma GUI final. A vous de faire quelque chose de votre choix mais qui doit contenir obligatoirement les mêmes options, c'est obligatoire pour continuer le tutoriel. (Les options obligatoires sont entourées en rouge)
Pour ma part j'ai choisi une GUI en onglet.
1. Onglet Accueil
Comme vous pouvez le voir, cet onglet est totalement facultatif. Il contient des informations sur le Bot. Tout fois, quelques informations peuvent se révéler plutôt utiles, notamment les groupes "Raccourcis Touche" ainsi que "Activation" qui permettront de connaitre les raccourcis disponibles dans le programmes ainsi que l'état du Bot, si il est activé et si il est en marche.
2. Onglet Flood
Vous remarquerez que sur cet onglet rien n'a été entouré en rouge.
"Donc rien n'est obligatoire?" Si justement, il faut absolument que tout figure sur votre bot.
1. Onglet Accueil
Comme vous pouvez le voir, cet onglet est totalement facultatif. Il contient des informations sur le Bot. Tout fois, quelques informations peuvent se révéler plutôt utiles, notamment les groupes "Raccourcis Touche" ainsi que "Activation" qui permettront de connaitre les raccourcis disponibles dans le programmes ainsi que l'état du Bot, si il est activé et si il est en marche.
2. Onglet Flood
Vous remarquerez que sur cet onglet rien n'a été entouré en rouge.
"Donc rien n'est obligatoire?" Si justement, il faut absolument que tout figure sur votre bot.
La différence entre un bot Flood avec GUI et un bot Flood sans GUI est très certainement la facilité d'utilisation ainsi que l'ajout d'options plus facile à réaliser lorsqu'il y a une GUI.
Lorsque vous faites une GUI, je vous conseil de modifier directement sur la GUI le nom de chaque éléments qui seront important dans votre programme comme ci-dessous (J'ai prit l'Input Box correspondant à la Phrase 1):
Pourquoi faire comme ça et pas modifier dans le code source? Parce que si vous devez modifier votre GUI un jour, vous récupérerez le code sauf que vous n'aurez plus qu'à remettre les noms à vos variables puisqu'elles auront gardé ceux présents sur la GUI (C'est à dire les noms de base)
Mettez des noms facilement identifiable et correspondant bien à l'élément.
Petit Rappel: Les noms des variables ne peuvent contenir que des lettres minuscules et majuscules ainsi que des tirets bas _ et des chiffres.
Voici quelques noms de variables que j'ai utilisé:
$EditRapportFlood
$InputPhrase1
$BoutonLaunchFlood
$LabelEtatFlood
$ProgressFlood
$ComboCanal
$UpdownTempsFlood
$RadioSmiley
etc...
$InputPhrase1
$BoutonLaunchFlood
$LabelEtatFlood
$ProgressFlood
$ComboCanal
$UpdownTempsFlood
$RadioSmiley
etc...
Une fois votre GUI terminée, vous n'aurez plus qu'à récupérer la code et le coller dans Scite.
Voici le code que j'obtiens:
Code:
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <TabConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=e:\autres\autoit\gui\kyuushuu flood bot.kxf
$Form1 = GUICreate("Kagami FPF Multi-Bot", 594, 322, 214, 131)
$Tab1 = GUICtrlCreateTab(8, 8, 579, 297, $TCS_FIXEDWIDTH)
GUICtrlSetResizing(-1, $GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
$TabSheet1 = GUICtrlCreateTabItem("Accueil")
$Label1 = GUICtrlCreateLabel("KyuuShuu Flood Bot", 150, 28, 319, 68)
GUICtrlSetFont(-1, 22, 400, 0, "Luna Bar")
$Label2 = GUICtrlCreateLabel("Ce Bot contient un bot de Flood", 16, 96, 154, 17)
$Label3 = GUICtrlCreateLabel("Il a été créé pour un tutoriel pour Cheat-Gam3", 16, 112, 219, 17)
$Label4 = GUICtrlCreateLabel("Coder par KyuuShuu sous Autoit v3", 16, 136, 172, 17)
$Label5 = GUICtrlCreateLabel("Date de Sortie: Si tu l'as c'est qu'il est sortit!", 16, 152, 208, 17)
$Label6 = GUICtrlCreateLabel("Version en Cours: Version 0.1.2.7.235.1423", 16, 168, 209, 17)
$Label7 = GUICtrlCreateLabel("Etat: Flood Bot:", 16, 200, 77, 17)
$Label10 = GUICtrlCreateLabel("Fonctionnel", 106, 200, 59, 17)
GUICtrlSetColor(-1, 0x008000)
$Label19 = GUICtrlCreateLabel("Dernière Mise à Jour: Version 1.1.0.0", 16, 256, 178, 17)
$Label20 = GUICtrlCreateLabel("Mise à Jour Attendue: Version 1.1.1.1", 16, 280, 181, 17)
$Group2 = GUICtrlCreateGroup("Activation", 352, 232, 225, 65)
$Label27 = GUICtrlCreateLabel("Bot Activé:", 384, 248, 56, 17)
$LabelBotActive = GUICtrlCreateLabel("Auncun Bot n'est activé", 440, 248, 117, 17)
$LabelEtatActivation = GUICtrlCreateLabel("Veuillez lancer un Bot...", 400, 272, 115, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Label28 = GUICtrlCreateLabel("Aide:", 40, 216, 28, 17)
$Label29 = GUICtrlCreateLabel("Fonctionnel", 106, 216, 59, 17)
GUICtrlSetColor(-1, 0x008000)
$Group3 = GUICtrlCreateGroup("Raccourcis Touche", 352, 112, 225, 97)
$Label8 = GUICtrlCreateLabel("F1: Lancer le Flood Bot", 360, 128, 114, 17)
$Label9 = GUICtrlCreateLabel("F4: Mettre le Bot en Pause", 360, 152, 130, 17)
$Label11 = GUICtrlCreateLabel("F5: Eteindre le Trainer", 360, 176, 108, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$TabSheet2 = GUICtrlCreateTabItem("Flood Bot")
GUICtrlSetState(-1,$GUI_SHOW)
$EditRapportFlood = GUICtrlCreateEdit("", 16, 64, 273, 209, BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_READONLY,$WS_VSCROLL))
$Label30 = GUICtrlCreateLabel("Rapport de Flood:", 16, 40, 89, 17)
$Label32 = GUICtrlCreateLabel("Temps entre chaque phrases (en miliseconde):", 296, 168, 222, 18)
$InputTempsFlood = GUICtrlCreateInput("0", 296, 192, 281, 21, BitOR($ES_AUTOHSCROLL,$ES_NUMBER))
$UpdownTempsFlood = GUICtrlCreateUpdown($InputTempsFlood)
$Group1 = GUICtrlCreateGroup("Anti-Detection", 296, 224, 137, 73)
$Label31 = GUICtrlCreateLabel("Terminer les phrases par:", 304, 240, 122, 17)
$RadioSmiley = GUICtrlCreateRadio("Smileys aléatoires", 304, 256, 121, 17, BitOR($BS_AUTORADIOBUTTON,$BS_RIGHTBUTTON))
GUICtrlSetState(-1, $GUI_CHECKED)
$RadioChiffre = GUICtrlCreateRadio("Chiffres aléatoires", 304, 272, 121, 17, BitOR($BS_AUTORADIOBUTTON,$BS_RIGHTBUTTON))
GUICtrlCreateGroup("", -99, -99, 1, 1)
$InputPhrase1 = GUICtrlCreateInput("Phrase 1", 296, 64, 177, 21)
$InputPhrase2 = GUICtrlCreateInput("Phrase 2", 296, 96, 177, 21)
$InputPhrase3 = GUICtrlCreateInput("Phrase 3", 296, 128, 177, 21)
$ComboCanal1 = GUICtrlCreateCombo("", 480, 64, 97, 25, BitOR($CBS_DROPDOWNLIST,$CBS_AUTOHSCROLL))
GUICtrlSetData(-1, "Alignement|Général|Groupe|Guilde", "Général")
$ComboCanal2 = GUICtrlCreateCombo("", 480, 96, 97, 25, BitOR($CBS_DROPDOWNLIST,$CBS_AUTOHSCROLL))
GUICtrlSetData(-1, "Commerce|Général|Groupe|Guilde", "Général")
$ComboCanal3 = GUICtrlCreateCombo("", 480, 128, 97, 25, BitOR($CBS_DROPDOWNLIST,$CBS_AUTOHSCROLL))
GUICtrlSetData(-1, "Recrutement|Général|Groupe|Guilde", "Général")
$ButtonLaunchFlood = GUICtrlCreateButton("Démarrer le Flood", 440, 229, 139, 68, BitOR($BS_MULTILINE,$BS_FLAT,$WS_GROUP))
GUICtrlSetFont(-1, 22, 400, 0, "Champagne & Limousines")
$ProgressFlood = GUICtrlCreateProgress(296, 40, 280, 17, $PBS_SMOOTH)
GUICtrlSetColor(-1, 0x3399FF)
GUICtrlSetCursor (-1, 15)
$Label14 = GUICtrlCreateLabel("Nombre de Phrases Floodées:", 16, 282, 146, 17)
$InputNombreFlood = GUICtrlCreateInput("", 168, 280, 121, 21, BitOR($ES_AUTOHSCROLL,$ES_READONLY))
$Label15 = GUICtrlCreateLabel("Etat:", 168, 40, 26, 17)
$LabelEtatFlood = GUICtrlCreateLabel("Inacif...", 200, 40, 39, 17)
GUICtrlCreateTabItem("")
$Label34 = GUICtrlCreateLabel("Copyright © 2010, Kagami, Cheat-Gam3", 392, 304, 193, 17)
GUISetState(@SW_SHOW)
Dim $Form1_AccelTable[1][2] = [["{F1}", $ButtonLaunchFlood]]
GUISetAccelerators($Form1_AccelTable)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Vous remarquerez que j'ai assigné à $BoutonLaunchFlood le raccourcis F1 et ce, depuis la GUI.
Bon maintenant je vais vous expliquer comment j'organise le squelette de mes programmes.
Je vous conseil aussi à partir d'aujourd'hui d'utiliser cette technique pour tout vos programmes car elle est très pratique et permet une organisation claire dans son programme.
3. Organisation d'un Squelette
Un squelette qu'est-ce que c'est? Hé non, ce n'est pas l'ensemble de tous les os nous composant. Remarque, c'est un peu pareil mais en AutoIt.
Le squelette d'un programme c'est en fait les différentes parties qui le composent.
Pour ma part les squelettes de mes programmes se composent toujours ainsi:
Code:
1. Includes
2. Déclaration des Variables
3. GUI
4. Raccourcis (Dépend des programmes)
5. While Principal (ou Boucle Principal)
6. Fonctions
Dans mon code source, les grandes parties ci-dessus sont notées en commentaires comme ceci:
Code:
;===Grande Parti 1 (Includes par exemple)===
Dessous je mets toutes les includes
Un retour à la ligne pour aérer
;===GUI===
Ma GUI ci-dessous
etc etc...
Les sous parties sont notées comme ceci:
Code:
;==Partie 1==
Et les sous-sous parties comme ceci:
Code:
;=Sous-Partie 1=
Ici non plus par de retour à la ligne
Bon, ça peut paraitre mal expliqué c'est pourquoi je vais vous donner un exemple direct avec le code précédemment récupéré
Donc, si l'on applique ce que j'ai dit précédemment sur le code récupéré, cela donne:
Code:
;===Includes===
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <TabConstants.au3>
#include <WindowsConstants.au3>
;===Déclaration des Variables===
;===GUI===
#Region ### START Koda GUI section ### Form=e:\autres\autoit\gui\kyuushuu flood bot.kxf
$Form1 = GUICreate("Kagami FPF Multi-Bot", 594, 322, 477, 256)
$Tab1 = GUICtrlCreateTab(8, 8, 579, 297, $TCS_FIXEDWIDTH)
GUICtrlSetResizing(-1, $GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
;==Onglet Accueil
$TabSheet1 = GUICtrlCreateTabItem("Accueil")
$Label1 = GUICtrlCreateLabel("KyuuShuu Flood Bot", 150, 28, 319, 68)
GUICtrlSetFont(-1, 22, 400, 0, "Luna Bar")
$Label2 = GUICtrlCreateLabel("Ce Bot contient un bot de Flood", 16, 96, 154, 17)
$Label3 = GUICtrlCreateLabel("Il a été créé pour un tutoriel pour Cheat-Gam3", 16, 112, 219, 17)
$Label4 = GUICtrlCreateLabel("Coder par KyuuShuu sous Autoit v3", 16, 136, 172, 17)
$Label5 = GUICtrlCreateLabel("Date de Sortie: Si tu l'as c'est qu'il est sortit!", 16, 152, 208, 17)
$Label6 = GUICtrlCreateLabel("Version en Cours: Version 0.1.2.7.235.1423", 16, 168, 209, 17)
$Label7 = GUICtrlCreateLabel("Etat: Flood Bot:", 16, 200, 77, 17)
$Label10 = GUICtrlCreateLabel("Fonctionnel", 106, 200, 59, 17)
GUICtrlSetColor(-1, 0x008000)
$Label19 = GUICtrlCreateLabel("Dernière Mise à Jour: Version 1.1.0.0", 16, 256, 178, 17)
$Label20 = GUICtrlCreateLabel("Mise à Jour Attendue: Version 1.1.1.1", 16, 280, 181, 17)
$Group2 = GUICtrlCreateGroup("Activation", 352, 232, 225, 65)
$Label27 = GUICtrlCreateLabel("Bot Activé:", 384, 248, 56, 17)
$LabelBotActive = GUICtrlCreateLabel("Auncun Bot n'est activé", 440, 248, 117, 17)
$LabelEtatActivation = GUICtrlCreateLabel("Veuillez lancer un Bot...", 400, 272, 115, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Label28 = GUICtrlCreateLabel("Aide:", 40, 216, 28, 17)
$Label29 = GUICtrlCreateLabel("Fonctionnel", 106, 216, 59, 17)
GUICtrlSetColor(-1, 0x008000)
$Group3 = GUICtrlCreateGroup("Raccourcis Touche", 352, 112, 225, 97)
$Label8 = GUICtrlCreateLabel("F1: Lancer le Flood Bot", 360, 128, 114, 17)
$Label9 = GUICtrlCreateLabel("F4: Mettre le Bot en Pause", 360, 152, 130, 17)
$Label11 = GUICtrlCreateLabel("F5: Eteindre le Trainer", 360, 176, 108, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
;==Onglet Flood
$TabSheet2 = GUICtrlCreateTabItem("Flood Bot")
GUICtrlSetState(-1,$GUI_SHOW)
$EditRapportFlood = GUICtrlCreateEdit("", 16, 64, 273, 209, BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_READONLY,$WS_VSCROLL))
$Label30 = GUICtrlCreateLabel("Rapport de Flood:", 16, 40, 89, 17)
$Label32 = GUICtrlCreateLabel("Temps entre chaque phrases (en miliseconde):", 296, 168, 222, 18)
$InputTempsFlood = GUICtrlCreateInput("0", 296, 192, 281, 21, BitOR($ES_AUTOHSCROLL,$ES_NUMBER))
$UpdownTempsFlood = GUICtrlCreateUpdown($InputTempsFlood)
$Group1 = GUICtrlCreateGroup("Anti-Detection", 296, 224, 137, 73)
$Label31 = GUICtrlCreateLabel("Terminer les phrases par:", 304, 240, 122, 17)
$RadioSmiley = GUICtrlCreateRadio("Smileys aléatoires", 304, 256, 121, 17, BitOR($BS_AUTORADIOBUTTON,$BS_RIGHTBUTTON))
GUICtrlSetState(-1, $GUI_CHECKED)
$RadioChiffre = GUICtrlCreateRadio("Chiffres aléatoires", 304, 272, 121, 17, BitOR($BS_AUTORADIOBUTTON,$BS_RIGHTBUTTON))
GUICtrlCreateGroup("", -99, -99, 1, 1)
$InputPhrase1 = GUICtrlCreateInput("Phrase 1", 296, 64, 177, 21)
$InputPhrase2 = GUICtrlCreateInput("Phrase 2", 296, 96, 177, 21)
$InputPhrase3 = GUICtrlCreateInput("Phrase 3", 296, 128, 177, 21)
$ComboCanal1 = GUICtrlCreateCombo("", 480, 64, 97, 25, BitOR($CBS_DROPDOWNLIST,$CBS_AUTOHSCROLL))
GUICtrlSetData(-1, "Alignement|Général|Groupe|Guilde", "Général")
$ComboCanal2 = GUICtrlCreateCombo("", 480, 96, 97, 25, BitOR($CBS_DROPDOWNLIST,$CBS_AUTOHSCROLL))
GUICtrlSetData(-1, "Commerce|Général|Groupe|Guilde", "Général")
$ComboCanal3 = GUICtrlCreateCombo("", 480, 128, 97, 25, BitOR($CBS_DROPDOWNLIST,$CBS_AUTOHSCROLL))
GUICtrlSetData(-1, "Recrutement|Général|Groupe|Guilde", "Général")
$ButtonLaunchFlood = GUICtrlCreateButton("Démarrer le Flood", 440, 229, 139, 68, BitOR($BS_MULTILINE,$BS_FLAT,$WS_GROUP))
GUICtrlSetFont(-1, 22, 400, 0, "Champagne & Limousines")
$ProgressFlood = GUICtrlCreateProgress(296, 40, 280, 17, $PBS_SMOOTH)
GUICtrlSetColor(-1, 0x3399FF)
GUICtrlSetCursor (-1, 15)
$Label14 = GUICtrlCreateLabel("Nombre de Phrases Floodées:", 16, 282, 146, 17)
$InputNombreFlood = GUICtrlCreateInput("", 168, 280, 121, 21, BitOR($ES_AUTOHSCROLL,$ES_READONLY))
$Label15 = GUICtrlCreateLabel("Etat:", 168, 40, 26, 17)
$LabelEtatFlood = GUICtrlCreateLabel("Inacif...", 200, 40, 39, 17)
GUICtrlCreateTabItem("")
;==Fin Onglets==
$Label34 = GUICtrlCreateLabel("Copyright © 2010, Kagami, Cheat-Gam3", 392, 304, 193, 17)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
;===Raccourcis Touche===
Dim $Form1_AccelTable[1][2] = [["{F1}", $ButtonLaunchFlood]]
GUISetAccelerators($Form1_AccelTable)
;===While Principal===
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
;===Fonctions===
Voilà, vous avez votre squelette! C'est-ti pas plus claire comme ceci?
Nous allons maintenant pouvoir attaquer la programmation proprement dites.
4. Le Flood
Je sais même pas si c'est utile de faire un tutoriel sur cette partie, il en existe déjà tellement!
Bon, ici, je vais vous expliquer comment réaliser le principe de base de votre Bot, c'est à dire, le flood.
Pour vous expliquer, je vais juste prendre des bouts de code que je vais détailler.
Nous allons tout d'abord aller dans notre boucle principale.
Vous allez ajouter une Partie correspondant au bouton $ButtonLaunchFlood comme ceci:
Code:
;==Bouton Flood==
Case $ButtonLaunchFlood
;=Variables Read=
$ReadInputPhrase1 = GUICtrlRead($InputPhrase1)
$ReadInputPhrase2 = GUICtrlRead($InputPhrase2)
$ReadInputPhrase3 = GUICtrlRead($InputPhrase3)
$ReadInputTempsFlood = GUICtrlRead($InputTempsFlood) * 1000
$ReadButtonLaunchFlood = GUICtrlRead($ButtonLaunchFlood)
;=Lance la fonction du Flood=
If $ReadButtonLaunchFlood = "Démarrer le Flood" Then
If $ReadInputPhrase1 <> "" Then
GUICtrlSetData($ButtonLaunchFlood, "Bot Flood Actif!")
MsgBox(0, "Flood", "Le Flood va démarrer")
_FloodBot()
ElseIf $ReadInputPhrase1 = "" Then
MsgBox(64, "Erreur", "Erreur!" & @CRLF & "Vous devez remplir la Phrase 1.")
Endif
EndIf
Code:
;=Variables Read=
$ReadInputPhrase1 = GUICtrlRead($InputPhrase1) ; Donne à la variable $ReadInputPhrase1 la valeur GUICtrlRead($InputPhrase1)
$ReadInputPhrase2 = GUICtrlRead($InputPhrase2)
$ReadInputPhrase3 = GUICtrlRead($InputPhrase3)
$ReadInputTempsFlood = GUICtrlRead($InputTempsFlood) * 1000 ; Pareil que pour les variables ci-dessus sauf qu'ici en plus, le temps entré (qui est en seconde) est transformé en milisecondes
$ReadButtonLaunchFlood = GUICtrlRead($ButtonLaunchFlood)
Donc, dans ce morceau de code, j'ai juste donné à la variable $ReadInputPhrase1 la valeur GUICtrlRead($InputPhrase1) et ainsi de suite pour les autres variables.
Continuons,
Code:
;=Lance la fonction du Flood=
If $ReadButtonLaunchFlood = "Démarrer le Flood" Then ; Si le Bouton $ButtonLaunchFlood affiche "Démarrer le Flood alors"
If $ReadInputPhrase1 <> "" Then ; Si ce qui est lu dans $InputPhrase1 est différent de rien alors
GUICtrlSetData($ButtonLaunchFlood, "Bot Flood Actif!") ; On change ce qui est écrit sur le bouton $ButtonLaunchFlood par "Bot Flood Actif!"
MsgBox(0, "Flood", "Le Flood va démarrer") ; Affiche une Message Box
_FloodBot() ; Active la fonction _FloodBot
ElseIf $ReadInputPhrase1 = "" Then ; Si l'input $InputPhrase1 est vide alors
MsgBox(64, "Erreur", "Erreur!" & @CRLF & "Vous devez remplir la Phrase 1.") ; Affiche un message d'erreur
Endif
EndIf
Donc, pour résumer, si ce qui est lu sur le bouton $ButtonLaunchFlood est "Démarrer le Flood" (Donc si le Flood n,'a pas encore été démarré) et que la Phrase 1 contient quelque chose alors le flood peut démarrer.
Cependant, si la Phrase 1 est vide, un message d'erreur apparait.
En gros, il faut qu'il y ai au moins une phrase de remplit pour démarrer le flood.
Voyons maintenant la fonction _FloodBot
Code:
;===Fonction FloodBot===
Func _FloodBot()
ToolTip("Veuillez démarrer Dofus...", 0, 0) ; Affiche un message en haut à gauche de l'écran
WinWaitActive("Dofus") ; Attend la fenêtre Dofus apparaisse
If WinActive("Dofus") Then ; Si la fenêtre Dofus est activée alors
WinSetState("Dofus", "", @SW_MAXIMIZE) ; Agrandi la fenêtre Dofus (Facultatif)
ToolTip("Le Flood démarrera dans 20 secondes!", 0, 0) ; Modifie le message apparut sur l'écran
Sleep(20000) ; Attends 20 secondes le temps d'ouvrir son personnage (Je vous apprendrait une autre technique plus efficace tout à l'heure)
_Flood() ; Ouvre la fonction Flood
Endif
EndFunc
Je ne pense pas que cette partie ai besoin d'explications, tout est dans les commentaires.
Bon, maintenant ça va se corser avec la fonction _Flood
Code:
;===Fonction Flood===
Func _Flood()
While 1 ; Ouvre une boucle
;=Phrase 1=
Send("{ENTER}" & $ReadInputPhrase1) ; Appuie sur la touche "Entrée" puis écrit ce qui est lut das la Phrase 1
Send("{ENTER}") ; Réappuie sur la touche "Entrée"
;=Phrase 2=
If $ReadInputPhrase2 <> "" Then ; Si la Phrase 2 n'est pas vide alors
Sleep($ReadInputTempsFlood/20) ; Attends le nombre de secondes entrée dans l'input $InputTempsFlood
Send("{ENTER}" & $ReadInputPhrase2)
Send("{ENTER}")
EndIf
;=Phrase 3=
If $ReadInputPhrase3 <> "" Then
Sleep($ReadInputTempsFlood/20)
Send("{ENTER}" & $ReadInputPhrase3)
Send("{ENTER}")
Endif
Sleep($ReadInputTempsFlood/20) ; Si j'ai mis ce Sleep ici et pas devant le Send de la Phrase 1 c'est pour ne pas attendre avant de flooder la première fois la première phrase.
WEnd
Endif
EndFunc
Bon ok, je vous ai menti, ce code est très simple à comprendre.
Une fois de plus, toutes les indications se trouvent dans le code.
Mais ne riez pas trop vite parce que vous avez tout compris. Vous allez voir que cette fonction va devenir plus complexe par la suite.
Vous aurez peut-être remarqué le /20 se trouvant à la fin des Sleep? N'y prêtez pas attention, il servira plus tard lorsque nous verrons les ProgressBar.
Bien sur, si cela ne vous intéresse pas de mettre un ProgressBar, libre à vous de le supprimer.
Bon, voilà, vous savez faire un bot flood de base.
5. Le Temps
Hum... Je vous annonce officiellement que je me suis trompé dans mon Sommaire et que j'ai la flemme de le modifier! Bon, de toute façon ça ne servait à rien de consacrer un chapitre pour ça donc bon!
C'était en fait la gestion des Sleep dans la fonction _Flood
Voilà, le chapitre le plus rapide et le plus facile de ce cours est terminé!
6. Les Canaux
Bon c'est là que ça ne rigole plus. Voici comment ajouter le choix du canal de Flood dans notre Bot.
Comme vous aurez pu le remarquer, j'ai mis trois ComboBox, une par phrase comprenant un certain nombre de choix de canal de Flood.
Je vais donc vous expliquer comment modifier la fonction _Flood pour obtenir ce code:
Code:
;===Fonction Flood===
Func _Flood()
;=Variables Read=
$ReadComboCanal1 = GUICtrlRead($ComboCanal1) ; Donne à la variable $ReadComboCanal1 la valeur lu dans le Combo 1 (qui correspond à la phrase 1)
$ReadComboCanal2 = GUICtrlRead($ComboCanal2)
$ReadComboCanal3 = GUICtrlRead($ComboCanal3)
While 1
ToolTip("Flood: Activé. F4 pour mettre en pause. F5 pour arrêter.", 0, 0)
;=Phrase 1 Canaux=
If $ReadComboCanal1 = "Général" Then ; Si la Combo 1 affiche le canal Général alors
Send("{ENTER}" & $ReadInputPhrase1) ; On a déjà vu ça au chapitre précédent
Send("{ENTER}")
ElseIf $ReadComboCanal1 = "Alignement" Then ; Si la Combo 1 affiche le canal Alignement alors
Send("{ENTER}" & "/a " & $ReadInputPhrase1) ; Appuie sur "Entrée" et écrit "/a" puis votre phrase. Cela fera que ça floodera en canal Alignement
Send("{ENTER}")
ElseIf $ReadComboCanal1 = "Groupe" Then ; Si la Combo 1 affiche le canal Groupe alors
Send("{ENTER}" & "/p " & $ReadInputPhrase1 ; Pareil qu'avec le canal Alignement sauf qu'ici ça mettra "/p" pour flooder en groupe
Send("{ENTER}")
ElseIf $ReadComboCanal1 = "Guilde" Then ; Si la Combo 1 affiche le canal Guilde alors
Send("{ENTER}" & "/g " & $ReadInputPhrase1) ; Toujours pareil sauf qu'ici c'est "/g" donc le flood se fera en Guilde
Send("{ENTER}")
EndIf
;=Phrase 2=
If $ReadInputPhrase2 <> "" Then
Sleep($ReadInputTempsFlood/20)
;=Phrase 2 Canaux=
If $ReadComboCanal2 = "Général" Then
Send("{ENTER}" & $ReadInputPhrase2)
Send("{ENTER}")
ElseIf $ReadComboCanal2 = "Commerce" Then
Send("{ENTER}" & "/b " & $ReadInputPhrase2)
Send("{ENTER}")
ElseIf $ReadComboCanal2 = "Groupe" Then
Send("{ENTER}" & "/p " & $ReadInputPhrase2)
Send("{ENTER}")
ElseIf $ReadComboCanal2 = "Guilde" Then
Send("{ENTER}" & "/g " & $ReadInputPhrase2)
Send("{ENTER}")
Endif
Endif
;=Phrase 3=
If $ReadInputPhrase3 <> "" Then
Sleep($ReadInputTempsFlood/20)
;=Phrase 3 Canaux=
If $ReadComboCanal3 = "Général" Then
Send("{ENTER}" & $ReadInputPhrase3)
Send("{ENTER}")
ElseIf $ReadComboCanal3 = "Recrutement" Then
Send("{ENTER}" & "/r " & $ReadInputPhrase3)
Send("{ENTER}")
ElseIf $ReadComboCanal3 = "Groupe" Then
Send("{ENTER}" & "/p " & $ReadInputPhrase3)
Send("{ENTER}")
ElseIf $ReadComboCanal3 = "Guilde" Then
Send("{ENTER}" & "/g " & $ReadInputPhrase3)
Send("{ENTER}")
Endif
Endif
Sleep($ReadInputTempsFlood/20)
WEnd
EndFunc
Voilà ce que devient notre fonction _Flood!
Ici tout ce qui change c'est que l'on ajoute des If pour donner une indication pour chacun des canal choisit et que l'on tape /canal choisit entre le premier Entrée et la phrase sans oublier un espace entre ces deux derniers.
7. Les Fins de Phrases
J'espère que vous êtes confortablement installé parce que c'est là que votre fonction _Flood va s'allonger.
Bon, je vais vous dire maintenant ce que nous allons changer.
Nous allons pour commencer copier-coller une partie de notre fonction et ajouter un If et un ElseIf pour expliquer ce que se passe lorsque l'on va choisir de mettre en fin de phrases des smileys ou des chiffres.
Voici notre fonction à la fin, je vous met des commentaires dans le code comme d'habitude:
Code:
;===Fonction Flood===
Func _Flood()
;=Variables Read=
$ReadComboCanal1 = GUICtrlRead($ComboCanal1)
$ReadComboCanal2 = GUICtrlRead($ComboCanal2)
$ReadComboCanal3 = GUICtrlRead($ComboCanal3)
;==Radio Smiley Coché==
If GUICtrlRead($RadioSmiley) = $GUI_CHECKED Then ; Si l'utilisateur a coché Smiley en fin da phrases alors
While 1
$FinSmiley1 = Random(1, 6, 1) ; On stocke dans la variable $FinSmiley un chiffre aléatoire entre 1 et 6 (Comme il est dans une boucle, ce chiffre changera à chaque fois que la phrase 1 apparaitra)
;=Phrase 1 Canaux=
If $ReadComboCanal1 = "Général" Then
Send("{ENTER}" & $ReadInputPhrase1)
If $FinSmiley1 = 1 Then Send(" =)") ; L'ajout ce fait ici. Comme vous pouvez le voir, si le chiffre contenu dans $FinSmiley eest 1 alors il ajoute en fin de phrase " =)"
If $FinSmiley1 = 2 Then Send(" =D") ; Ici c'est pareil sauf que si le chiffre contenu est 2 alors ça ajoute " =D"
If $FinSmiley1 = 3 Then Send(" =P") ; Et le principe est toujours le même avec les chiffres 3; 4; 5 et 6
If $FinSmiley1 = 4 Then Send(" ;)") ; Descendez maintenant à la fin de la phrase 3 de la partie gérant les Smileys
If $FinSmiley1 = 5 Then Send(" ;D")
If $FinSmiley1 = 6 Then Send(" 8D")
Send("{ENTER}")
ElseIf $ReadComboCanal1 = "Alignement" Then
Send("{ENTER}" & "/a " & $ReadInputPhrase1)
If $FinSmiley1 = 1 Then Send(" =)")
If $FinSmiley1 = 2 Then Send(" =D")
If $FinSmiley1 = 3 Then Send(" =P")
If $FinSmiley1 = 4 Then Send(" ;)")
If $FinSmiley1 = 5 Then Send(" ;D")
If $FinSmiley1 = 6 Then Send(" 8D")
Send("{ENTER}")
ElseIf $ReadComboCanal1 = "Groupe" Then
Send("{ENTER}" & "/p " & $ReadInputPhrase1)
If $FinSmiley1 = 1 Then Send(" =)")
If $FinSmiley1 = 2 Then Send(" =D")
If $FinSmiley1 = 3 Then Send(" =P")
If $FinSmiley1 = 4 Then Send(" ;)")
If $FinSmiley1 = 5 Then Send(" ;D")
If $FinSmiley1 = 6 Then Send(" 8D")
Send("{ENTER}")
ElseIf $ReadComboCanal1 = "Guilde" Then
Send("{ENTER}" & "/g " & $ReadInputPhrase1)
If $FinSmiley1 = 1 Then Send(" =)")
If $FinSmiley1 = 2 Then Send(" =D")
If $FinSmiley1 = 3 Then Send(" =P")
If $FinSmiley1 = 4 Then Send(" ;)")
If $FinSmiley1 = 5 Then Send(" ;D")
If $FinSmiley1 = 6 Then Send(" 8D")
Send("{ENTER}")
EndIf
;=Phrase 2=
$FinSmiley2 = Random(1, 6, 1)
If $ReadInputPhrase2 <> "" Then
Sleep($ReadInputTempsFlood/20)
;=Phrase 2 Canaux=
If $ReadComboCanal2 = "Général" Then
Send("{ENTER}" & $ReadInputPhrase2)
If $FinSmiley2 = 1 Then Send(" =)")
If $FinSmiley2 = 2 Then Send(" =D")
If $FinSmiley2 = 3 Then Send(" =P")
If $FinSmiley2 = 4 Then Send(" ;)")
If $FinSmiley2 = 5 Then Send(" ;D")
If $FinSmiley2 = 6 Then Send(" 8D")
Send("{ENTER ElseIf $ReadComboCanal2 = "Commerce" Then
Send("{ENTER}" & "/b " & $ReadInputPhrase2)
If $FinSmiley2 = 1 Then Send(" =)")
If $FinSmiley2 = 2 Then Send(" =D")
If $FinSmiley2 = 3 Then Send(" =P")
If $FinSmiley2 = 4 Then Send(" ;)")
If $FinSmiley2 = 5 Then Send(" ;D")
If $FinSmiley2 = 6 Then Send(" 8D")
Send("{ENTER}")
ElseIf $ReadComboCanal2 = "Groupe" Then
Send("{ENTER}" & "/p " & $ReadInputPhrase2)
If $FinSmiley2 = 1 Then Send(" =)")
If $FinSmiley2 = 2 Then Send(" =D")
If $FinSmiley2 = 3 Then Send(" =P")
If $FinSmiley2 = 4 Then Send(" ;)")
If $FinSmiley2 = 5 Then Send(" ;D")
If $FinSmiley2 = 6 Then Send(" 8D")
Send("{ENTER}")
ElseIf $ReadComboCanal2 = "Guilde" Then
Send("{ENTER}" & "/g " & $ReadInputPhrase2)
If $FinSmiley2 = 1 Then Send(" =)")
If $FinSmiley2 = 2 Then Send(" =D")
If $FinSmiley2 = 3 Then Send(" =P")
If $FinSmiley2 = 4 Then Send(" ;)")
If $FinSmiley2 = 5 Then Send(" ;D")
If $FinSmiley2 = 6 Then Send(" 8D")
Send("{ENTER}")
GUICtrlSetData($InputNombreFlood, $NombreFlood)
$NombreFlood = $NombreFlood + 1
_GUICtrlEdit_InsertText($EditRapportFlood, "["&@HOUR&":"&@MIN&":"&@SEC&"]" & $ReadInputPhrase2, 0)
_GUICtrlEdit_InsertText($EditRapportFlood, @CRLF, 0)
Endif
Endif
;=Phrase 3=
$FinSmiley3 = Random(1, 6, 1)
If $ReadInputPhrase3 <> "" Then
Sleep($ReadInputTempsFlood/20)
;=Phrase 3 Canaux=
If $ReadComboCanal3 = "Général" Then
Send("{ENTER}" & $ReadInputPhrase3)
If $FinSmiley3 = 1 Then Send(" =)")
If $FinSmiley3 = 2 Then Send(" =D")
If $FinSmiley3 = 3 Then Send(" =P")
If $FinSmiley3 = 4 Then Send(" ;)")
If $FinSmiley3 = 5 Then Send(" ;D")
If $FinSmiley3 = 6 Then Send(" 8D")
Send("{ENTER}")
ElseIf $ReadComboCanal3 = "Recrutement" Then
Send("{ENTER}" & "/r " & $ReadInputPhrase3)
If $FinSmiley3 = 1 Then Send(" =)")
If $FinSmiley3 = 2 Then Send(" =D")
If $FinSmiley3 = 3 Then Send(" =P")
If $FinSmiley3 = 4 Then Send(" ;)")
If $FinSmiley3 = 5 Then Send(" ;D")
If $FinSmiley3 = 6 Then Send(" 8D")
Send("{ENTER}")
ElseIf $ReadComboCanal3 = "Groupe" Then
Send("{ENTER}" & "/p " & $ReadInputPhrase3)
If $FinSmiley3 = 1 Then Send(" =)")
If $FinSmiley3 = 2 Then Send(" =D")
If $FinSmiley3 = 3 Then Send(" =P")
If $FinSmiley3 = 4 Then Send(" ;)")
If $FinSmiley3 = 5 Then Send(" ;D")
If $FinSmiley3 = 6 Then Send(" 8D")
Send("{ENTER}")
ElseIf $ReadComboCanal3 = "Guilde" Then
Send("{ENTER}" & "/g " & $ReadInputPhrase3)
If $FinSmiley3 = 1 Then Send(" =)")
If $FinSmiley3 = 2 Then Send(" =D")
If $FinSmiley3 = 3 Then Send(" =P")
If $FinSmiley3 = 4 Then Send(" ;)")
If $FinSmiley3 = 5 Then Send(" ;D")
If $FinSmiley3 = 6 Then Send(" 8D")
Send("{ENTER}")
Endif
Endif
Sleep($ReadInputTempsFlood/20)
WEnd
;===Radio Chiffre Coché===
ElseIf GUICtrlRead($RadioChiffre) = $GUI_CHECKED Then
While 1
$FinChiffre1 = Random(1, 9, 1) ; Ici, on fait pareil que pour les smileys mais avec les chiifres. Remarquez qu'ici le chiffre stocké sera de 1 à 9
ToolTip("Flood: Activé. F4 pour mettre en pause. F5 pour arrêter.", 0, 0)
;=Phrase 1 Canaux=
If $ReadComboCanal1 = "Général" Then
Send("{ENTER}" & $ReadInputPhrase1)
If $FinChiffre1 = 1 Then Send(" 1") ; Pareil que pour les smileys sauf qu'ici ça sortira un chiffre au lieu d'un smileys.
If $FinChiffre1 = 2 Then Send(" 2")
If $FinChiffre1 = 3 Then Send(" 3")
If $FinChiffre1 = 4 Then Send(" 4")
If $FinChiffre1 = 5 Then Send(" 5")
If $FinChiffre1 = 6 Then Send(" 6")
If $FinChiffre1 = 7 Then Send(" 7")
If $FinChiffre1 = 8 Then Send(" 8")
If $FinChiffre1 = 9 Then Send(" 9")
Send("{ENTER}")
ElseIf $ReadComboCanal1 = "Alignement" Then
Send("{ENTER}" & "/a " & $ReadInputPhrase1)
If $FinChiffre1 = 1 Then Send(" 1")
If $FinChiffre1 = 2 Then Send(" 2")
If $FinChiffre1 = 3 Then Send(" 3")
If $FinChiffre1 = 4 Then Send(" 4")
If $FinChiffre1 = 5 Then Send(" 5")
If $FinChiffre1 = 6 Then Send(" 6")
If $FinChiffre1 = 7 Then Send(" 7")
If $FinChiffre1 = 8 Then Send(" 8")
If $FinChiffre1 = 9 Then Send(" 9")
Send("{ENTER}")
ElseIf $ReadComboCanal1 = "Groupe" Then
Send("{ENTER}" & "/p " & $ReadInputPhrase1)
If $FinChiffre1 = 1 Then Send(" 1")
If $FinChiffre1 = 2 Then Send(" 2")
If $FinChiffre1 = 3 Then Send(" 3")
If $FinChiffre1 = 4 Then Send(" 4")
If $FinChiffre1 = 5 Then Send(" 5")
If $FinChiffre1 = 6 Then Send(" 6")
If $FinChiffre1 = 7 Then Send(" 7")
If $FinChiffre1 = 8 Then Send(" 8")
If $FinChiffre1 = 9 Then Send(" 9")
Send("{ENTER}")
ElseIf $ReadComboCanal1 = "Guilde" Then
Send("{ENTER}" & "/g " & $ReadInputPhrase1)
If $FinChiffre1 = 1 Then Send(" 1")
If $FinChiffre1 = 2 Then Send(" 2")
If $FinChiffre1 = 3 Then Send(" 3")
If $FinChiffre1 = 4 Then Send(" 4")
If $FinChiffre1 = 5 Then Send(" 5")
If $FinChiffre1 = 6 Then Send(" 6")
If $FinChiffre1 = 7 Then Send(" 7")
If $FinChiffre1 = 8 Then Send(" 8")
If $FinChiffre1 = 9 Then Send(" 9")
Send("{ENTER}")
EndIf
;=Phrase 2=
$FinChiffre2 = Random(1, 9, 1)
If $ReadInputPhrase2 <> "" Then
Sleep($ReadInputTempsFlood/20)
;=Phrase 2 Canaux=
If $ReadComboCanal2 = "Général" Then
Send("{ENTER}" & $ReadInputPhrase2)
If $FinChiffre2 = 1 Then Send(" 1")
If $FinChiffre2 = 2 Then Send(" 2")
If $FinChiffre2 = 3 Then Send(" 3")
If $FinChiffre2 = 4 Then Send(" 4")
If $FinChiffre2 = 5 Then Send(" 5")
If $FinChiffre2 = 6 Then Send(" 6")
If $FinChiffre2 = 7 Then Send(" 7")
If $FinChiffre2 = 8 Then Send(" 8")
If $FinChiffre2 = 9 Then Send(" 9")
Send("{ENTER}")
ElseIf $ReadComboCanal2 = "Commerce" Then
Send("{ENTER}" & "/b " & $ReadInputPhrase2)
If $FinChiffre2 = 1 Then Send(" 1")
If $FinChiffre2 = 2 Then Send(" 2")
If $FinChiffre2 = 3 Then Send(" 3")
If $FinChiffre2 = 4 Then Send(" 4")
If $FinChiffre2 = 5 Then Send(" 5")
If $FinChiffre2 = 6 Then Send(" 6")
If $FinChiffre2 = 7 Then Send(" 7")
If $FinChiffre2 = 8 Then Send(" 8")
If $FinChiffre2 = 9 Then Send(" 9")
Send("{ENTER}")
ElseIf $ReadComboCanal2 = "Groupe" Then
Send("{ENTER}" & "/p " & $ReadInputPhrase2)
If $FinChiffre2 = 1 Then Send(" 1")
If $FinChiffre2 = 2 Then Send(" 2")
If $FinChiffre2 = 3 Then Send(" 3")
If $FinChiffre2 = 4 Then Send(" 4")
If $FinChiffre2 = 5 Then Send(" 5")
If $FinChiffre2 = 6 Then Send(" 6")
If $FinChiffre2 = 7 Then Send(" 7")
If $FinChiffre2 = 8 Then Send(" 8")
If $FinChiffre2 = 9 Then Send(" 9")
Send("{ENTER}")
ElseIf $ReadComboCanal2 = "Guilde" Then
Send("{ENTER}" & "/g " & $ReadInputPhrase2)
If $FinChiffre2 = 1 Then Send(" 1")
If $FinChiffre2 = 2 Then Send(" 2")
If $FinChiffre2 = 3 Then Send(" 3")
If $FinChiffre2 = 4 Then Send(" 4")
If $FinChiffre2 = 5 Then Send(" 5")
If $FinChiffre2 = 6 Then Send(" 6")
If $FinChiffre2 = 7 Then Send(" 7")
If $FinChiffre2 = 8 Then Send(" 8")
If $FinChiffre2 = 9 Then Send(" 9")
Send("{ENTER}")
Endif
;=Phrase 3=
$FinChiffre3 = Random(1, 9, 1)
If $ReadInputPhrase3 <> "" Then
Sleep($ReadInputTempsFlood/20)
;=Phrase 3 Canaux=
If $ReadComboCanal3 = "Général" Then
Send("{ENTER}" & $ReadInputPhrase3)
If $FinChiffre3 = 1 Then Send(" 1")
If $FinChiffre3 = 2 Then Send(" 2")
If $FinChiffre3 = 3 Then Send(" 3")
If $FinChiffre3 = 4 Then Send(" 4")
If $FinChiffre3 = 5 Then Send(" 5")
If $FinChiffre3 = 6 Then Send(" 6")
If $FinChiffre3 = 7 Then Send(" 7")
If $FinChiffre3 = 8 Then Send(" 8")
If $FinChiffre1 = 9 Then Send(" 9")
Send("{ENTER}")
ElseIf $ReadComboCanal3 = "Recrutement" Then
Send("{ENTER}" & "/r " & $ReadInputPhrase3)
If $FinChiffre3 = 1 Then Send(" 1")
If $FinChiffre3 = 2 Then Send(" 2")
If $FinChiffre3 = 3 Then Send(" 3")
If $FinChiffre3 = 4 Then Send(" 4")
If $FinChiffre3 = 5 Then Send(" 5")
If $FinChiffre3 = 6 Then Send(" 6")
If $FinChiffre3 = 7 Then Send(" 7")
If $FinChiffre3 = 8 Then Send(" 8")
If $FinChiffre3 = 9 Then Send(" 9")
Send("{ENTER}")
ElseIf $ReadComboCanal3 = "Groupe" Then
Send("{ENTER}" & "/p " & $ReadInputPhrase3)
If $FinChiffre3 = 1 Then Send(" 1")
If $FinChiffre3 = 2 Then Send(" 2")
If $FinChiffre3 = 3 Then Send(" 3")
If $FinChiffre3 = 4 Then Send(" 4")
If $FinChiffre3 = 5 Then Send(" 5")
If $FinChiffre3 = 6 Then Send(" 6")
If $FinChiffre3 = 7 Then Send(" 7")
If $FinChiffre3 = 8 Then Send(" 8")
If $FinChiffre3 = 9 Then Send(" 9")
Send("{ENTER}")
ElseIf $ReadComboCanal3 = "Guilde" Then
Send("{ENTER}" & "/g " & $ReadInputPhrase3)
If $FinChiffre3 = 1 Then Send(" 1")
If $FinChiffre3 = 2 Then Send(" 2")
If $FinChiffre3 = 3 Then Send(" 3")
If $FinChiffre3 = 4 Then Send(" 4")
If $FinChiffre3 = 5 Then Send(" 5")
If $FinChiffre3 = 6 Then Send(" 6")
If $FinChiffre3 = 7 Then Send(" 7")
If $FinChiffre3 = 8 Then Send(" 8")
If $FinChiffre3 = 9 Then Send(" 9")
Send("{ENTER}")
Endif
Endif
Sleep($ReadInputTempsFlood/20)
WEnd
Endif
EndFunc
Elle peut paraitre dure à comprendre mais elle est enfait très simple, je n'ai fait que répéter les mêmes opérations à chaque fois. Comme vous pouvez le voir si l'utilisateur choisit de mettre des smileys à la fin, on stockera dans $FinSmiley un chiffre aléatoire de 1 à 6 et selon le chiffre stocké, on en sortira un smiley à la fin de la phrase.
De même si l'utilisateur choisit des chiffres en fin de phrases sauf que l'on stocke dans FinChiffre un chiffre aléatoire de 1 à 9 qui sortira un chiffre en fin de phrase.
J'ai oublié de la préciser au début mais je pense que vous l'avez déjà compris, le premier Send "Entrée" permet d'ouvrir la barre de Tchat de Dofus. Ensuite, on met toutes les informations que l'on veut placer dans la barre de Tchat. Puis le second Send "Entrée" permet d'envoyer tout ce qui a été écrit.
Et bien voilà, vous savez maintenant comment faire un bot Flood complet.
Cependant, nous n'allons pas nous arrêter là. Je vais vous expliquer maintenant coment rendre son bot "réaliste".
8. Rajouter de la réalité à son bot
---8.1. Une Barre de Progression
Ici, je vais vous apprendre comment mettre un barre de progression qui avance au rythme de l'envoie des phrases. En gros, vous lancez votre bot, vous mettez 5 secondes entre chaque phrase. Votre barre de progression prendra 5 secondes à se remplir et se videra une fois la phrase envoyée pour se re-remplir après.
Revenons tout d'abord à notre fonction _Flood.
Vous vous souvenez de /20 à la fin des Sleep? Non non, ce n'est pas une note sur 20 que je donne à mon Sleep, c'est en fait ce qui va permettre l'avancement de la ProgressBar.
J'ai choisit de faire une ProgressBar "bidon" avec un faux avancement qui varie selon le Sleep. Même si elle est bidon, elle fait quand même réelle aux yeux de l'utilisateur.
Je vous explique comment je l'ai faite marcher.
J'ai mis dans une fonction _Progress 20 fois l'avancement d'une même ProgressBar, donc à chaque fois elle avance de 5% (5*20=100)
Ce qui explique donc le /20 de mes Sleep.
Vous commencez à comprendre? J'ai donc mis sous mes Sleep un renvoie vers ma fonction _Progress de façon à ce que tous les Sleep/20, ma ProgressBar augmente de 5%
Voici ma fonction _Flood une fois les renvoie vers la fonction _Progress ajouté:
Code:
;===Fonction Flood===
Func _Flood()
;=Variables Read=
$ReadComboCanal1 = GUICtrlRead($ComboCanal1)
$ReadComboCanal2 = GUICtrlRead($ComboCanal2)
$ReadComboCanal3 = GUICtrlRead($ComboCanal3)
GUICtrlSetData($LabelEtatActivation, "Bot en cours d'execution...")
;==Radio Smiley Coché==
If GUICtrlRead($RadioSmiley) = $GUI_CHECKED Then
While 1
$FinSmiley1 = Random(1, 6, 1)
ToolTip("Flood: Activé. F4 pour mettre en pause. F5 pour arrêter.", 0, 0)
;=Phrase 1 Canaux=
If $ReadComboCanal1 = "Général" Then
Send("{ENTER}" & $ReadInputPhrase1)
If $FinSmiley1 = 1 Then Send(" =)")
If $FinSmiley1 = 2 Then Send(" =D")
If $FinSmiley1 = 3 Then Send(" =P")
If $FinSmiley1 = 4 Then Send(" ;)")
If $FinSmiley1 = 5 Then Send(" ;D")
If $FinSmiley1 = 6 Then Send(" 8D")
Send("{ENTER}")
ElseIf $ReadComboCanal1 = "Alignement" Then
Send("{ENTER}" & "/a " & $ReadInputPhrase1)
If $FinSmiley1 = 1 Then Send(" =)")
If $FinSmiley1 = 2 Then Send(" =D")
If $FinSmiley1 = 3 Then Send(" =P")
If $FinSmiley1 = 4 Then Send(" ;)")
If $FinSmiley1 = 5 Then Send(" ;D")
If $FinSmiley1 = 6 Then Send(" 8D")
Send("{ENTER}")
ElseIf $ReadComboCanal1 = "Groupe" Then
Send("{ENTER}" & "/p " & $ReadInputPhrase1)
If $FinSmiley1 = 1 Then Send(" =)")
If $FinSmiley1 = 2 Then Send(" =D")
If $FinSmiley1 = 3 Then Send(" =P")
If $FinSmiley1 = 4 Then Send(" ;)")
If $FinSmiley1 = 5 Then Send(" ;D")
If $FinSmiley1 = 6 Then Send(" 8D")
Send("{ENTER}")
ElseIf $ReadComboCanal1 = "Guilde" Then
Send("{ENTER}" & "/g " & $ReadInputPhrase1)
If $FinSmiley1 = 1 Then Send(" =)")
If $FinSmiley1 = 2 Then Send(" =D")
If $FinSmiley1 = 3 Then Send(" =P")
If $FinSmiley1 = 4 Then Send(" ;)")
If $FinSmiley1 = 5 Then Send(" ;D")
If $FinSmiley1 = 6 Then Send(" 8D")
Send("{ENTER}")
EndIf
;=Phrase 2=
$FinSmiley2 = Random(1, 6, 1)
If $ReadInputPhrase2 <> "" Then
Sleep($ReadInputTempsFlood/20)
_Progress() ; Voilà un renvoie à la fonction Progress par exemple!
;=Phrase 2 Canaux=
If $ReadComboCanal2 = "Général" Then
Send("{ENTER}" & $ReadInputPhrase2)
If $FinSmiley2 = 1 Then Send(" =)")
If $FinSmiley2 = 2 Then Send(" =D")
If $FinSmiley2 = 3 Then Send(" =P")
If $FinSmiley2 = 4 Then Send(" ;)")
If $FinSmiley2 = 5 Then Send(" ;D")
If $FinSmiley2 = 6 Then Send(" 8D")
Send("{ENTER}")
ElseIf $ReadComboCanal2 = "Commerce" Then
Send("{ENTER}" & "/b " & $ReadInputPhrase2)
If $FinSmiley2 = 1 Then Send(" =)")
If $FinSmiley2 = 2 Then Send(" =D")
If $FinSmiley2 = 3 Then Send(" =P")
If $FinSmiley2 = 4 Then Send(" ;)")
If $FinSmiley2 = 5 Then Send(" ;D")
If $FinSmiley2 = 6 Then Send(" 8D")
Send("{ENTER}")
ElseIf $ReadComboCanal2 = "Groupe" Then
Send("{ENTER}" & "/p " & $ReadInputPhrase2)
If $FinSmiley2 = 1 Then Send(" =)")
If $FinSmiley2 = 2 Then Send(" =D")
If $FinSmiley2 = 3 Then Send(" =P")
If $FinSmiley2 = 4 Then Send(" ;)")
If $FinSmiley2 = 5 Then Send(" ;D")
If $FinSmiley2 = 6 Then Send(" 8D")
Send("{ENTER}")
ElseIf $ReadComboCanal2 = "Guilde" Then
Send("{ENTER}" & "/g " & $ReadInputPhrase2)
If $FinSmiley2 = 1 Then Send(" =)")
If $FinSmiley2 = 2 Then Send(" =D")
If $FinSmiley2 = 3 Then Send(" =P")
If $FinSmiley2 = 4 Then Send(" ;)")
If $FinSmiley2 = 5 Then Send(" ;D")
If $FinSmiley2 = 6 Then Send(" 8D")
Send("{ENTER}")
Endif
Endif
;=Phrase 3=
$FinSmiley3 = Random(1, 6, 1)
If $ReadInputPhrase3 <> "" Then
Sleep($ReadInputTempsFlood/20)
_Progress()
;=Phrase 3 Canaux=
If $ReadComboCanal3 = "Général" Then
Send("{ENTER}" & $ReadInputPhrase3)
If $FinSmiley3 = 1 Then Send(" =)")
If $FinSmiley3 = 2 Then Send(" =D")
If $FinSmiley3 = 3 Then Send(" =P")
If $FinSmiley3 = 4 Then Send(" ;)")
If $FinSmiley3 = 5 Then Send(" ;D")
If $FinSmiley3 = 6 Then Send(" 8D")
Send("{ENTER}")
ElseIf $ReadComboCanal3 = "Recrutement" Then
Send("{ENTER}" & "/r " & $ReadInputPhrase3)
If $FinSmiley3 = 1 Then Send(" =)")
If $FinSmiley3 = 2 Then Send(" =D")
If $FinSmiley3 = 3 Then Send(" =P")
If $FinSmiley3 = 4 Then Send(" ;)")
If $FinSmiley3 = 5 Then Send(" ;D")
If $FinSmiley3 = 6 Then Send(" 8D")
Send("{ENTER}")
ElseIf $ReadComboCanal3 = "Groupe" Then
Send("{ENTER}" & "/p " & $ReadInputPhrase3)
If $FinSmiley3 = 1 Then Send(" =)")
If $FinSmiley3 = 2 Then Send(" =D")
If $FinSmiley3 = 3 Then Send(" =P")
If $FinSmiley3 = 4 Then Send(" ;)")
If $FinSmiley3 = 5 Then Send(" ;D")
If $FinSmiley3 = 6 Then Send(" 8D")
Send("{ENTER}")
ElseIf $ReadComboCanal3 = "Guilde" Then
Send("{ENTER}" & "/g " & $ReadInputPhrase3)
If $FinSmiley3 = 1 Then Send(" =)")
If $FinSmiley3 = 2 Then Send(" =D")
If $FinSmiley3 = 3 Then Send(" =P")
If $FinSmiley3 = 4 Then Send(" ;)")
If $FinSmiley3 = 5 Then Send(" ;D")
If $FinSmiley3 = 6 Then Send(" 8D")
Send("{ENTER}")
Endif
Endif
Sleep($ReadInputTempsFlood/20)
_Progress() ; Comme précédemment expliqué, j'ai mis le renvoie de la fonction à la fin de la Phrase 3 pour ne pas gêner le premier démarrage de la Phrase 1. De toute façon, ça ramène au même.
WEnd
;===Radio Chiffre Coché===
ElseIf GUICtrlRead($RadioChiffre) = $GUI_CHECKED Then
While 1
$FinChiffre1 = Random(1, 9, 1)
ToolTip("Flood: Activé. F4 pour mettre en pause. F5 pour arrêter.", 0, 0)
;=Phrase 1 Canaux=
If $ReadComboCanal1 = "Général" Then
Send("{ENTER}" & $ReadInputPhrase1)
If $FinChiffre1 = 1 Then Send(" 1")
If $FinChiffre1 = 2 Then Send(" 2")
If $FinChiffre1 = 3 Then Send(" 3")
If $FinChiffre1 = 4 Then Send(" 4")
If $FinChiffre1 = 5 Then Send(" 5")
If $FinChiffre1 = 6 Then Send(" 6")
If $FinChiffre1 = 7 Then Send(" 7")
If $FinChiffre1 = 8 Then Send(" 8")
If $FinChiffre1 = 9 Then Send(" 9")
Send("{ENTER}")
ElseIf $ReadComboCanal1 = "Alignement" Then
Send("{ENTER}" & "/a " & $ReadInputPhrase1)
If $FinChiffre1 = 1 Then Send(" 1")
If $FinChiffre1 = 2 Then Send(" 2")
If $FinChiffre1 = 3 Then Send(" 3")
If $FinChiffre1 = 4 Then Send(" 4")
If $FinChiffre1 = 5 Then Send(" 5")
If $FinChiffre1 = 6 Then Send(" 6")
If $FinChiffre1 = 7 Then Send(" 7")
If $FinChiffre1 = 8 Then Send(" 8")
If $FinChiffre1 = 9 Then Send(" 9")
Send("{ENTER}")
ElseIf $ReadComboCanal1 = "Groupe" Then
Send("{ENTER}" & "/p " & $ReadInputPhrase1)
If $FinChiffre1 = 1 Then Send(" 1")
If $FinChiffre1 = 2 Then Send(" 2")
If $FinChiffre1 = 3 Then Send(" 3")
If $FinChiffre1 = 4 Then Send(" 4")
If $FinChiffre1 = 5 Then Send(" 5")
If $FinChiffre1 = 6 Then Send(" 6")
If $FinChiffre1 = 7 Then Send(" 7")
If $FinChiffre1 = 8 Then Send(" 8")
If $FinChiffre1 = 9 Then Send(" 9")
Send("{ENTER}")
ElseIf $ReadComboCanal1 = "Guilde" Then
Send("{ENTER}" & "/g " & $ReadInputPhrase1)
If $FinChiffre1 = 1 Then Send(" 1")
If $FinChiffre1 = 2 Then Send(" 2")
If $FinChiffre1 = 3 Then Send(" 3")
If $FinChiffre1 = 4 Then Send(" 4")
If $FinChiffre1 = 5 Then Send(" 5")
If $FinChiffre1 = 6 Then Send(" 6")
If $FinChiffre1 = 7 Then Send(" 7")
If $FinChiffre1 = 8 Then Send(" 8")
If $FinChiffre1 = 9 Then Send(" 9")
Send("{ENTER}")
EndIf
;=Phrase 2=
$FinChiffre2 = Random(1, 9, 1)
If $ReadInputPhrase2 <> "" Then
Sleep($ReadInputTempsFlood/20)
_Progress()
;=Phrase 2 Canaux=
If $ReadComboCanal2 = "Général" Then
Send("{ENTER}" & $ReadInputPhrase2)
If $FinChiffre2 = 1 Then Send(" 1")
If $FinChiffre2 = 2 Then Send(" 2")
If $FinChiffre2 = 3 Then Send(" 3")
If $FinChiffre2 = 4 Then Send(" 4")
If $FinChiffre2 = 5 Then Send(" 5")
If $FinChiffre2 = 6 Then Send(" 6")
If $FinChiffre2 = 7 Then Send(" 7")
If $FinChiffre2 = 8 Then Send(" 8")
If $FinChiffre2 = 9 Then Send(" 9")
Send("{ENTER}")
ElseIf $ReadComboCanal2 = "Commerce" Then
Send("{ENTER}" & "/b " & $ReadInputPhrase2)
If $FinChiffre2 = 1 Then Send(" 1")
If $FinChiffre2 = 2 Then Send(" 2")
If $FinChiffre2 = 3 Then Send(" 3")
If $FinChiffre2 = 4 Then Send(" 4")
If $FinChiffre2 = 5 Then Send(" 5")
If $FinChiffre2 = 6 Then Send(" 6")
If $FinChiffre2 = 7 Then Send(" 7")
If $FinChiffre2 = 8 Then Send(" 8")
If $FinChiffre2 = 9 Then Send(" 9")
Send("{ENTER}")
ElseIf $ReadComboCanal2 = "Groupe" Then
Send("{ENTER}" & "/p " & $ReadInputPhrase2)
If $FinChiffre2 = 1 Then Send(" 1")
If $FinChiffre2 = 2 Then Send(" 2")
If $FinChiffre2 = 3 Then Send(" 3")
If $FinChiffre2 = 4 Then Send(" 4")
If $FinChiffre2 = 5 Then Send(" 5")
If $FinChiffre2 = 6 Then Send(" 6")
If $FinChiffre2 = 7 Then Send(" 7")
If $FinChiffre2 = 8 Then Send(" 8")
If $FinChiffre2 = 9 Then Send(" 9")
Send("{ENTER}")
ElseIf $ReadComboCanal2 = "Guilde" Then
Send("{ENTER}" & "/g " & $ReadInputPhrase2)
If $FinChiffre2 = 1 Then Send(" 1")
If $FinChiffre2 = 2 Then Send(" 2")
If $FinChiffre2 = 3 Then Send(" 3")
If $FinChiffre2 = 4 Then Send(" 4")
If $FinChiffre2 = 5 Then Send(" 5")
If $FinChiffre2 = 6 Then Send(" 6")
If $FinChiffre2 = 7 Then Send(" 7")
If $FinChiffre2 = 8 Then Send(" 8")
If $FinChiffre2 = 9 Then Send(" 9")
Send("{ENTER}")
Endif
Endif
;=Phrase 3=
$FinChiffre3 = Random(1, 9, 1)
If $ReadInputPhrase3 <> "" Then
Sleep($ReadInputTempsFlood/20)
_Progress()
;=Phrase 3 Canaux=
If $ReadComboCanal3 = "Général" Then
Send("{ENTER}" & $ReadInputPhrase3)
If $FinChiffre3 = 1 Then Send(" 1")
If $FinChiffre3 = 2 Then Send(" 2")
If $FinChiffre3 = 3 Then Send(" 3")
If $FinChiffre3 = 4 Then Send(" 4")
If $FinChiffre3 = 5 Then Send(" 5")
If $FinChiffre3 = 6 Then Send(" 6")
If $FinChiffre3 = 7 Then Send(" 7")
If $FinChiffre3 = 8 Then Send(" 8")
If $FinChiffre1 = 9 Then Send(" 9")
Send("{ENTER}")
ElseIf $ReadComboCanal3 = "Recrutement" Then
Send("{ENTER}" & "/r " & $ReadInputPhrase3)
If $FinChiffre3 = 1 Then Send(" 1")
If $FinChiffre3 = 2 Then Send(" 2")
If $FinChiffre3 = 3 Then Send(" 3")
If $FinChiffre3 = 4 Then Send(" 4")
If $FinChiffre3 = 5 Then Send(" 5")
If $FinChiffre3 = 6 Then Send(" 6")
If $FinChiffre3 = 7 Then Send(" 7")
If $FinChiffre3 = 8 Then Send(" 8")
If $FinChiffre3 = 9 Then Send(" 9")
Send("{ENTER}")
ElseIf $ReadComboCanal3 = "Groupe" Then
Send("{ENTER}" & "/p " & $ReadInputPhrase3)
If $FinChiffre3 = 1 Then Send(" 1")
If $FinChiffre3 = 2 Then Send(" 2")
If $FinChiffre3 = 3 Then Send(" 3")
If $FinChiffre3 = 4 Then Send(" 4")
If $FinChiffre3 = 5 Then Send(" 5")
If $FinChiffre3 = 6 Then Send(" 6")
If $FinChiffre3 = 7 Then Send(" 7")
If $FinChiffre3 = 8 Then Send(" 8")
If $FinChiffre3 = 9 Then Send(" 9")
Send("{ENTER}")
ElseIf $ReadComboCanal3 = "Guilde" Then
Send("{ENTER}" & "/g " & $ReadInputPhrase3)
If $FinChiffre3 = 1 Then Send(" 1")
If $FinChiffre3 = 2 Then Send(" 2")
If $FinChiffre3 = 3 Then Send(" 3")
If $FinChiffre3 = 4 Then Send(" 4")
If $FinChiffre3 = 5 Then Send(" 5")
If $FinChiffre3 = 6 Then Send(" 6")
If $FinChiffre3 = 7 Then Send(" 7")
If $FinChiffre3 = 8 Then Send(" 8")
If $FinChiffre3 = 9 Then Send(" 9")
Send("{ENTER}")
Endif
Endif
Sleep($ReadInputTempsFlood/20)
_Progress()
WEnd
Endif
EndFunc
A vous de chercher les _Progress() maintenant!
Bon, maintenant, c'est bien beau d'avoir mis des renvoie à une fonction _Progress mais si elle existe pas, on fait comment hein? Hé bah on la crée beuh!
...
Ok ok... Je vais vous dire comment j'ai fais!
Code:
;===Fonction ProgressBar===
Func _Progress()
GUICtrlSetData($ProgressFlood, $PourcentageFlood) ; Ici, on change les données de notre ProgressBar par ce qui est contenu dans $PourcentageFlood
Sleep($ReadInputTempsFlood/20) ; Ensuite, on attend le temps rentré par l'utilisateur divisé par 20 (Comme je vous l'ai dit tout à l'heure, il va y avoir 20 progressions de 5%)
$PourcentageFlood += 5 ; Ici, on ajoute 5% à la ProgressBar. Enfin, plutôt on ajoute 5 à $Pourcentage Flood
GUICtrlSetData($ProgressFlood, $PourcentageFlood) ; Et c'est au GUICtrlData du dessous que la ProgressBar va être modifié et ajouter 5%
Sleep($ReadInputTempsFlood/20)
$PourcentageFlood += 5
GUICtrlSetData($ProgressFlood, $PourcentageFlood)
Sleep($ReadInputTempsFlood/20)
$PourcentageFlood += 5
GUICtrlSetData($ProgressFlood, $PourcentageFlood)
Sleep($ReadInputTempsFlood/20)
$PourcentageFlood += 5
GUICtrlSetData($ProgressFlood, $PourcentageFlood)
Sleep($ReadInputTempsFlood/20)
$PourcentageFlood += 5
GUICtrlSetData($ProgressFlood, $PourcentageFlood)
Sleep($ReadInputTempsFlood/20)
$PourcentageFlood += 5
GUICtrlSetData($ProgressFlood, $PourcentageFlood)
Sleep($ReadInputTempsFlood/20)
$PourcentageFlood += 5
GUICtrlSetData($ProgressFlood, $PourcentageFlood)
Sleep($ReadInputTempsFlood/20)
$PourcentageFlood += 5
GUICtrlSetData($ProgressFlood, $PourcentageFlood)
Sleep($ReadInputTempsFlood/20)
$PourcentageFlood += 5
GUICtrlSetData($ProgressFlood, $PourcentageFlood)
Sleep($ReadInputTempsFlood/20)
$PourcentageFlood += 5
GUICtrlSetData($ProgressFlood, $PourcentageFlood)
Sleep($ReadInputTempsFlood/20)
$PourcentageFlood += 5
GUICtrlSetData($ProgressFlood, $PourcentageFlood)
Sleep($ReadInputTempsFlood/20)
$PourcentageFlood += 5
GUICtrlSetData($ProgressFlood, $PourcentageFlood)
Sleep($ReadInputTempsFlood/20)
$PourcentageFlood += 5
GUICtrlSetData($ProgressFlood, $PourcentageFlood)
Sleep($ReadInputTempsFlood/20)
$PourcentageFlood += 5
GUICtrlSetData($ProgressFlood, $PourcentageFlood)
Sleep($ReadInputTempsFlood/20)
$PourcentageFlood += 5
GUICtrlSetData($ProgressFlood, $PourcentageFlood)
Sleep($ReadInputTempsFlood/20)
$PourcentageFlood += 5
GUICtrlSetData($ProgressFlood, $PourcentageFlood)
Sleep($ReadInputTempsFlood/20)
$PourcentageFlood += 5
GUICtrlSetData($ProgressFlood, $PourcentageFlood)
Sleep($ReadInputTempsFlood/20)
$PourcentageFlood += 5
GUICtrlSetData($ProgressFlood, $PourcentageFlood)
Sleep($ReadInputTempsFlood/20)
$PourcentageFlood += 5
GUICtrlSetData($ProgressFlood, $PourcentageFlood)
Sleep($ReadInputTempsFlood/20)
$PourcentageFlood += 5
GUICtrlSetData($ProgressFlood, $PourcentageFlood)
Sleep($ReadInputTempsFlood/20)
$PourcentageFlood += 5
GUICtrlSetData($ProgressFlood, $PourcentageFlood)
$PourcentageFlood -= 100 ; Et là, notre ProgressBar est arrivé à 100%, il faut donc la réinistalliser à 0% pour le Flood de la prochaine phrase.
EndFunc
Comme vous pouvez le voir, je n'ai fait que répéter le même code 20 fois pour faire progresser la ProgressBar à 100% de 5% en 5%. Une fois à 100%, je l'ai réinistiallisée.
Mais! Pourquoi que ça marche pas! T-T
Comment ça $PourcentageFlood n'a pas été déclaré? Et bien oui, c'est vrai, nous n'avons pas encore déclaré la variable $PourcentageFlood et elle ne contient pour le moment aucune valeur. Nous allons donc devoir la créer et lui donner comme valeur de départ 0.
Vous vous souvenez de comment on fait un squelette?
Hé bien c'est le moment d'ajouter ;===Déclaration des Variables=== entre ;===Includes=== et ;===GUI===
Ce qui vous donne:
Code:
;===Includes===
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <TabConstants.au3>
#include <WindowsConstants.au3>
;===Déclaration des Variables===
Global $PourcentageFlood = 0
;===GUI===
---8.2. Un Rapport de Flood
Pourquoi ne pas mettre un petit rapport de Flood qui montre ce que vous avez floodé, à qu'elle heure etc etc...
Alors, ici, nous allons simplement modifier notre edit $EditRapportFlood et y ajouter pour chaque phrase une ligne contenant l'heure, la minute, la seconde à laquelle la phrase a été floodé, ainsi que la phrase floodé et bien évidemment le smiley ou chiffre qui l'accompagne.
Retournons dans notre fonction _Flood (Oui oui, je vous promet qu'après cela il ne nous resteras plus qu'une ligne à ajouter dedans et on en aura fini avec cette fonction!)
Alors, voici le code que nous devrons ajouter à la fin de la saisie de chaque phrases:
Code:
GUICtrlSetData($InputNombreFlood, $NombreFlood) ; On modifie le chiffre contenu dans $InputNombreFlood par $NombreFlood
$NombreFlood = $NombreFlood + 1 ; On ajoute 1 à $NombreFlood
_GUICtrlEdit_InsertText($EditRapportFlood, "["&@HOUR&":"&@MIN&":"&@SEC&"]" & $ReadInputPhrase1, 0) ; On insert une ligne de texte dans l'edit $EditRapportFlood où l'on met les informations voulues.
_GUICtrlEdit_InsertText($EditRapportFlood, @CRLF, 0) ; On insert un retour à la ligne dans l'edit $EditRapportFlood
Remarquez que j'aurez très bien pu mettre le retour à la ligne avec le premier InsertText mais j'ai préféré le diviser en deux lignes.
Ne me dites pas que vous avez oublié? Hé oui, une fois de plus il faut déclarer votre variable $NombreFlood.
Retour dans la Grande Partie "Déclaration des Variables"
Cette fois-ci, mettez lui 1 comme valeur de départ comme-ceci:
Code:
;===Déclaration des Variables===
Global $PourcentageFlood = 0
Global $NombreFlood = 1
Effectivement, lorsque vous aurez floodé votre première phrase, le chiffre qui apparaitra sera 0 phrases floodées alors que vous en aurez floodé 1.
Pourquoi? Tout simplement parce que j'édite le contenu de mon InputBox avant d'ajouter 1 à mon compteur $NombreFlood (Et oui, cela s'appelle un compteur et j'ai l'habitude de déclarer mes compteurs en Global au début de mon code source)
Ca marche toujours pas? La fonction n'existe pas? Allez dans vos Includes et ajoutes celle-ci:
Code:
#Include <GuiEdit.au3>
Voilà, c'en est aussi fini de cette partie! On approche de la fin n'est-ce pas =p
Ensuite nous verrons comment modifier des labels pour montrer l'avancement de notre Bot.
---8.3. Des Labels qui s'adaptent
Pour que vous compreniez par vous-même la technique que j'utilise, je vais vous rappeler quelque chose dont je pense vous n'avez pas fait plus attention que ça.
Code:
If $ReadButtonLaunchFlood = "Démarrer le Flood" Then
GUICtrlSetData($ButtonLaunchFlood, "Bot Flood Actif!")
C'est bon, vous voyez où je veux en venir? Et oui, nous allons faire pareil avec les Labels!
Déjà, faut savoir où mettre la modification des Labels... Pour ma part j'en ai mis un peu partout.
Commençons tout d'abord par la fonction _FloodBot:
Code:
;===Fonction FloodBot===
Func _FloodBot()
ToolTip("Veuillez démarrer Dofus...", 0, 0)
WinWaitActive("Dofus")
If WinActive("Dofus") Then
WinSetState("Dofus", "", @SW_MAXIMIZE)
GUICtrlSetData($LabelBotActive, "Bot Flood Activé") ; Ici on modifie le Label qui se trouve dans notre onglet Accueil
GUICtrlSetData($LabelEtatActivation, "Chargement Flood...") ; Et la, on modifie le Label Etat de notre Onglet Flood
ToolTip("Le Flood démarrera dans 20 secondes!", 0, 0)
Sleep(20000)
_Flood()
Endif
EndFunc
Et il y en a aussi dans ma fonction _Flood:
Code:
;===Fonction Flood===
Func _Flood()
;=Variables Read=
$ReadComboCanal1 = GUICtrlRead($ComboCanal1)
$ReadComboCanal2 = GUICtrlRead($ComboCanal2)
$ReadComboCanal3 = GUICtrlRead($ComboCanal3)
GUICtrlSetData($LabelEtatActivation, "Bot en cours d’exécution...") ; Modifie le Labet Etat de notre onglet Flood
Hum... Bon, il y en a un autre mais il se trouve dans une fonction que nous n'avons pas encore créer, la fonction qui permet de mettre le Bot en Pause.
Je vais donc juste vous donne la ligne concernée:
Code:
GUICtrlSetData($LabelEtatFlood, "Pause...")
GUICtrlSetData($LabelEtatFlood, "Actif...")
Bon, maintenant qu'on sait éditer le texte contenu dans un Label, je vous propose d'attaquer la suite.
9. Des Raccourcis
Les raccourcis. Concrètement, tu appuies sur une touche et ça fait un truc. Informatiquement, tu appuies sur une touche et ça démarre une fonction.
Pour commencer, choisissez les touches qui correspondront à telle fonction (N'oubliez pas de respecter le squelette et placez les raccourcis entre la GUI et la While Principale):
Code:
;===Raccourcis Touche===
Dim $Form1_AccelTable[1][2] = [["{F1}", $ButtonLaunchFlood]]
GUISetAccelerators($Form1_AccelTable)
HotKeySet("{ESC}", "EndBot") ; Lorsque j'appuie sur Echap, ça démarre ma fonction EndBot
HotKeySet("{F5}", "EndBot") ; Lorsque j'appuie sur F5, ça démarre ma fonction EndBot
HotKeySet("{F4}", "PauseBot") ; Lorsque j'appuie sur F4, ça démarre ma focntion PauseBot
Bon, bien évidemment, libre à vous d'utiliser d'autre raccourcis. Mais moi j'ai prit ces touches là car j'ai pris ce bot Flood du Kagami FPF Multi-Bot (Bot de Flood, de Pêche et de Fauche) que j'avais créé l'année dernière donc les touches F1, F2 et F3 étaient utilisés.
Comme toujours, je vous donne les fonctions déjà détaillées:
Code:
;====Fonction HotKeys====
;===Fonction EXIT ESC et F5===
Func EndBot()
MsgBox(64, "Kagami FPF Multi-Bot", "Merci d'avoir utiliser Kagami FPF Multi-Bot!", 3) ; Avant de quitter, ouvre une MessageBox qui reste ouverte trois secondes
Exit ; Eteins le Bot
EndFunc
;===Fonction PAUSE F4===
Func PauseBot()
;==Pause Flood==
If GUICtrlRead($LabelEtatFlood) = "Actif..." Then ; Si le bot est actif
While 1 ; Ouvre une boucle
Sleep(100) ; Attend 100 milisecondes
ToolTip("Le Bot est actuellement en pause. F4 pour redémarrer le Bot.",0,0) ; Ouvre un message en haut à gauche de l'écran
GUICtrlSetData($LabelEtatFlood, "Pause...") ; On a déjà vu ça dans la partie précédente
WEnd ; Ferme la boucle
ElseIf GUICtrlRead($LabelEtatFlood) = "Pause..." Then ; Si le bot était déjà en pause
GUICtrlSetData($LabelEtatFlood, "Actif...") ; On a déjà vu ça dans la partie précédente
Sleep(100) ; Attend 100 milisecondes
GUICtrlSetData($ProgressFlood, $PourcentageFlood) ; Reinistallise la ProgressBar
$PourcentageFlood = 0 ; Ramène le compteur $PourcentageFlood à 0
_Flood() ; Redémarre la donction _Flood
Else ; Autrement, le programme plante xD
EndIf
EndFunc
Hum... Voilà, vous pouvez souffler bien fort! Vous avez enfin terminé ce cours! Vous savez maintenant créer un Bot de Flood Complet!
Voici le code source que vous obtenez si vous avez suivit mon tutoriel à la lettre:
Code:
;===Includes===
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <TabConstants.au3>
#include <WindowsConstants.au3>
#Include <GuiEdit.au3>
;===Déclaration des Variables===
Global $PourcentageFlood = 0
Global $NombreFlood = 1
;===GUI===
#Region ### START Koda GUI section ### Form=e:\autres\autoit\gui\kyuushuu flood bot.kxf
$Form1 = GUICreate("KyuuShuu Flood Bot", 594, 322, 477, 256)
$Tab1 = GUICtrlCreateTab(8, 8, 579, 297, $TCS_FIXEDWIDTH)
GUICtrlSetResizing(-1, $GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
;==Onglet Accueil
$TabSheet1 = GUICtrlCreateTabItem("Accueil")
$Label1 = GUICtrlCreateLabel("KyuuShuu Flood Bot", 150, 28, 319, 68)
GUICtrlSetFont(-1, 22, 400, 0, "Luna Bar")
$Label2 = GUICtrlCreateLabel("Ce Bot contient un bot de Flood", 16, 96, 154, 17)
$Label3 = GUICtrlCreateLabel("Il a été créé pour un tutoriel pour Cheat-Gam3", 16, 112, 219, 17)
$Label6 = GUICtrlCreateLabel("Version en Cours: Version 0.1.2.7.235.1423", 16, 168, 209, 17)
$Label7 = GUICtrlCreateLabel("Etat: Flood Bot:", 16, 200, 77, 17)
$Label10 = GUICtrlCreateLabel("Fonctionnel", 106, 200, 59, 17)
GUICtrlSetColor(-1, 0x008000)
$Label4 = GUICtrlCreateLabel("Coder par KyuuShuu sous Autoit v3", 16, 136, 172, 17)
$Label5 = GUICtrlCreateLabel("Date de Sortie: Si tu l'as c'est qu'il est sortit!", 16, 152, 208, 17)
$Label19 = GUICtrlCreateLabel("Dernière Mise à Jour: Version 1.1.0.0", 16, 256, 178, 17)
$Label20 = GUICtrlCreateLabel("Mise à Jour Attendue: Version 1.1.1.1", 16, 280, 181, 17)
$Group2 = GUICtrlCreateGroup("Activation", 352, 232, 225, 65)
$Label27 = GUICtrlCreateLabel("Bot Activé:", 384, 248, 56, 17)
$LabelBotActive = GUICtrlCreateLabel("Auncun Bot n'est activé", 440, 248, 117, 17)
$LabelEtatActivation = GUICtrlCreateLabel("Veuillez lancer un Bot...", 400, 272, 115, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Label28 = GUICtrlCreateLabel("Aide:", 40, 216, 28, 17)
$Label29 = GUICtrlCreateLabel("Fonctionnel", 106, 216, 59, 17)
GUICtrlSetColor(-1, 0x008000)
$Group3 = GUICtrlCreateGroup("Raccourcis Touche", 352, 112, 225, 97)
$Label8 = GUICtrlCreateLabel("F1: Lancer le Flood Bot", 360, 128, 114, 17)
$Label9 = GUICtrlCreateLabel("F4: Mettre le Bot en Pause", 360, 152, 130, 17)
$Label11 = GUICtrlCreateLabel("F5: Eteindre le Trainer", 360, 176, 108, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
;==Onglet Flood
$TabSheet2 = GUICtrlCreateTabItem("Flood Bot")
GUICtrlSetState(-1,$GUI_SHOW)
$EditRapportFlood = GUICtrlCreateEdit("", 16, 64, 273, 209, BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_READONLY,$WS_VSCROLL))
$Label30 = GUICtrlCreateLabel("Rapport de Flood:", 16, 40, 89, 17)
$Label32 = GUICtrlCreateLabel("Temps entre chaque phrases (en miliseconde):", 296, 168, 222, 18)
$InputTempsFlood = GUICtrlCreateInput("0", 296, 192, 281, 21, BitOR($ES_AUTOHSCROLL,$ES_NUMBER))
$UpdownTempsFlood = GUICtrlCreateUpdown($InputTempsFlood)
$Group1 = GUICtrlCreateGroup("Anti-Detection", 296, 224, 137, 73)
$Label31 = GUICtrlCreateLabel("Terminer les phrases par:", 304, 240, 122, 17)
$RadioSmiley = GUICtrlCreateRadio("Smileys aléatoires", 304, 256, 121, 17, BitOR($BS_AUTORADIOBUTTON,$BS_RIGHTBUTTON))
GUICtrlSetState(-1, $GUI_CHECKED)
$RadioChiffre = GUICtrlCreateRadio("Chiffres aléatoires", 304, 272, 121, 17, BitOR($BS_AUTORADIOBUTTON,$BS_RIGHTBUTTON))
GUICtrlCreateGroup("", -99, -99, 1, 1)
$InputPhrase1 = GUICtrlCreateInput("Phrase 1", 296, 64, 177, 21)
$InputPhrase2 = GUICtrlCreateInput("Phrase 2", 296, 96, 177, 21)
$InputPhrase3 = GUICtrlCreateInput("Phrase 3", 296, 128, 177, 21)
$ComboCanal1 = GUICtrlCreateCombo("", 480, 64, 97, 25, BitOR($CBS_DROPDOWNLIST,$CBS_AUTOHSCROLL))
GUICtrlSetData(-1, "Alignement|Général|Groupe|Guilde", "Général")
$ComboCanal2 = GUICtrlCreateCombo("", 480, 96, 97, 25, BitOR($CBS_DROPDOWNLIST,$CBS_AUTOHSCROLL))
GUICtrlSetData(-1, "Commerce|Général|Groupe|Guilde", "Général")
$ComboCanal3 = GUICtrlCreateCombo("", 480, 128, 97, 25, BitOR($CBS_DROPDOWNLIST,$CBS_AUTOHSCROLL))
GUICtrlSetData(-1, "Recrutement|Général|Groupe|Guilde", "Général")
$ButtonLaunchFlood = GUICtrlCreateButton("Démarrer le Flood", 440, 229, 139, 68, BitOR($BS_MULTILINE,$BS_FLAT,$WS_GROUP))
GUICtrlSetFont(-1, 22, 400, 0, "Champagne & Limousines")
$ProgressFlood = GUICtrlCreateProgress(296, 40, 280, 17, $PBS_SMOOTH)
GUICtrlSetColor(-1, 0x3399FF)
GUICtrlSetCursor (-1, 15)
$Label14 = GUICtrlCreateLabel("Nombre de Phrases Floodées:", 16, 282, 146, 17)
$InputNombreFlood = GUICtrlCreateInput("", 168, 280, 121, 21, BitOR($ES_AUTOHSCROLL,$ES_READONLY))
$Label15 = GUICtrlCreateLabel("Etat:", 168, 40, 26, 17)
$LabelEtatFlood = GUICtrlCreateLabel("Inacif...", 200, 40, 39, 17)
GUICtrlCreateTabItem("")
;==Fin Onglets==
$Label34 = GUICtrlCreateLabel("Copyright © 2011, KyuuShuu, Cheat-Gam3", 392, 304, 193, 17)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
;===Raccourcis Touche===
Dim $Form1_AccelTable[1][2] = [["{F1}", $ButtonLaunchFlood]]
GUISetAccelerators($Form1_AccelTable)
HotKeySet("{ESC}", "EndBot")
HotKeySet("{F5}", "EndBot")
HotKeySet("{F4}", "PauseBot")
;===While Principal===
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
;==Bouton Flood==
Case $ButtonLaunchFlood
;=Variables Read=
$ReadInputPhrase1 = GUICtrlRead($InputPhrase1)
$ReadInputPhrase2 = GUICtrlRead($InputPhrase2)
$ReadInputPhrase3 = GUICtrlRead($InputPhrase3)
$ReadInputTempsFlood = GUICtrlRead($InputTempsFlood) * 1000
$ReadButtonLaunchFlood = GUICtrlRead($ButtonLaunchFlood)
;=Lance la fonction du Flood=
If $ReadButtonLaunchFlood = "Démarrer le Flood" Then
If $ReadInputPhrase1 <> "" Then
GUICtrlSetData($ButtonLaunchFlood, "Bot Flood Actif!")
MsgBox(0, "Flood", "Le Flood va démarrer")
GUICtrlSetData($LabelEtatFlood, "Actif...")
_FloodBot()
ElseIf $ReadInputPhrase1 = "" Then
MsgBox(64, "Erreur", "Erreur!" & @CRLF & "Vous devez remplir la Phrase 1.")
Endif
EndIf
EndSwitch
WEnd
;===Fonction FloodBot===
Func _FloodBot()
ToolTip("Veuillez démarrer Dofus...", 0, 0)
WinWaitActive("Dofus")
If WinActive("Dofus") Then
WinSetState("Dofus", "", @SW_MAXIMIZE)
GUICtrlSetData($LabelBotActive, "Bot Flood Activé") ; Ici on modifie le Label qui se trouve dans notre onglet Accueil
GUICtrlSetData($LabelEtatActivation, "Chargement Flood...") ; Et la, on modifie le Label Etat de notre Onglet Flood
ToolTip("Le Flood démarrera dans 20 secondes!", 0, 0)
Sleep(20000)
_Flood()
Endif
EndFunc
;===Fonction Flood===
Func _Flood()
;=Variables Read=
$ReadComboCanal1 = GUICtrlRead($ComboCanal1)
$ReadComboCanal2 = GUICtrlRead($ComboCanal2)
$ReadComboCanal3 = GUICtrlRead($ComboCanal3)
GUICtrlSetData($LabelEtatActivation, "Bot en cours d'execution...")
;==Radio Smiley Coché==
If GUICtrlRead($RadioSmiley) = $GUI_CHECKED Then
While 1
$FinSmiley1 = Random(1, 6, 1)
ToolTip("Flood: Activé. F4 pour mettre en pause. F5 pour arrêter.", 0, 0)
;=Phrase 1 Canaux=
If $ReadComboCanal1 = "Général" Then
Send("{ENTER}" & $ReadInputPhrase1)
If $FinSmiley1 = 1 Then Send(" =)")
If $FinSmiley1 = 2 Then Send(" =D")
If $FinSmiley1 = 3 Then Send(" =P")
If $FinSmiley1 = 4 Then Send(" ;)")
If $FinSmiley1 = 5 Then Send(" ;D")
If $FinSmiley1 = 6 Then Send(" 8D")
Send("{ENTER}")
GUICtrlSetData($InputNombreFlood, $NombreFlood)
$NombreFlood = $NombreFlood + 1
_GUICtrlEdit_InsertText($EditRapportFlood, "["&@HOUR&":"&@MIN&":"&@SEC&"]" & $ReadInputPhrase1, 0)
_GUICtrlEdit_InsertText($EditRapportFlood, @CRLF, 0)
ElseIf $ReadComboCanal1 = "Alignement" Then
Send("{ENTER}" & "/a " & $ReadInputPhrase1)
If $FinSmiley1 = 1 Then Send(" =)")
If $FinSmiley1 = 2 Then Send(" =D")
If $FinSmiley1 = 3 Then Send(" =P")
If $FinSmiley1 = 4 Then Send(" ;)")
If $FinSmiley1 = 5 Then Send(" ;D")
If $FinSmiley1 = 6 Then Send(" 8D")
Send("{ENTER}")
GUICtrlSetData($InputNombreFlood, $NombreFlood)
$NombreFlood = $NombreFlood + 1
_GUICtrlEdit_InsertText($EditRapportFlood, "["&@HOUR&":"&@MIN&":"&@SEC&"]" & $ReadInputPhrase1, 0)
_GUICtrlEdit_InsertText($EditRapportFlood, @CRLF, 0)
ElseIf $ReadComboCanal1 = "Groupe" Then
Send("{ENTER}" & "/p " & $ReadInputPhrase1)
If $FinSmiley1 = 1 Then Send(" =)")
If $FinSmiley1 = 2 Then Send(" =D")
If $FinSmiley1 = 3 Then Send(" =P")
If $FinSmiley1 = 4 Then Send(" ;)")
If $FinSmiley1 = 5 Then Send(" ;D")
If $FinSmiley1 = 6 Then Send(" 8D")
Send("{ENTER}")
GUICtrlSetData($InputNombreFlood, $NombreFlood)
$NombreFlood = $NombreFlood + 1
_GUICtrlEdit_InsertText($EditRapportFlood, "["&@HOUR&":"&@MIN&":"&@SEC&"]" & $ReadInputPhrase1, 0)
_GUICtrlEdit_InsertText($EditRapportFlood, @CRLF, 0)
ElseIf $ReadComboCanal1 = "Guilde" Then
Send("{ENTER}" & "/g " & $ReadInputPhrase1)
If $FinSmiley1 = 1 Then Send(" =)")
If $FinSmiley1 = 2 Then Send(" =D")
If $FinSmiley1 = 3 Then Send(" =P")
If $FinSmiley1 = 4 Then Send(" ;)")
If $FinSmiley1 = 5 Then Send(" ;D")
If $FinSmiley1 = 6 Then Send(" 8D")
Send("{ENTER}")
GUICtrlSetData($InputNombreFlood, $NombreFlood)
$NombreFlood = $NombreFlood + 1
_GUICtrlEdit_InsertText($EditRapportFlood, "["&@HOUR&":"&@MIN&":"&@SEC&"]" & $ReadInputPhrase1, 0)
_GUICtrlEdit_InsertText($EditRapportFlood, @CRLF, 0)
EndIf
;=Phrase 2=
$FinSmiley2 = Random(1, 6, 1)
If $ReadInputPhrase2 <> "" Then
Sleep($ReadInputTempsFlood/20)
_Progress()
;=Phrase 2 Canaux=
If $ReadComboCanal2 = "Général" Then
Send("{ENTER}" & $ReadInputPhrase2)
If $FinSmiley2 = 1 Then Send(" =)")
If $FinSmiley2 = 2 Then Send(" =D")
If $FinSmiley2 = 3 Then Send(" =P")
If $FinSmiley2 = 4 Then Send(" ;)")
If $FinSmiley2 = 5 Then Send(" ;D")
If $FinSmiley2 = 6 Then Send(" 8D")
Send("{ENTER}")
GUICtrlSetData($InputNombreFlood, $NombreFlood)
$NombreFlood = $NombreFlood + 1
_GUICtrlEdit_InsertText($EditRapportFlood, "["&@HOUR&":"&@MIN&":"&@SEC&"]" & $ReadInputPhrase2, 0)
_GUICtrlEdit_InsertText($EditRapportFlood, @CRLF, 0)
ElseIf $ReadComboCanal2 = "Commerce" Then
Send("{ENTER}" & "/b " & $ReadInputPhrase2)
If $FinSmiley2 = 1 Then Send(" =)")
If $FinSmiley2 = 2 Then Send(" =D")
If $FinSmiley2 = 3 Then Send(" =P")
If $FinSmiley2 = 4 Then Send(" ;)")
If $FinSmiley2 = 5 Then Send(" ;D")
If $FinSmiley2 = 6 Then Send(" 8D")
Send("{ENTER}")
GUICtrlSetData($InputNombreFlood, $NombreFlood)
$NombreFlood = $NombreFlood + 1
_GUICtrlEdit_InsertText($EditRapportFlood, "["&@HOUR&":"&@MIN&":"&@SEC&"]" & $ReadInputPhrase2, 0)
_GUICtrlEdit_InsertText($EditRapportFlood, @CRLF, 0)
ElseIf $ReadComboCanal2 = "Groupe" Then
Send("{ENTER}" & "/p " & $ReadInputPhrase2)
If $FinSmiley2 = 1 Then Send(" =)")
If $FinSmiley2 = 2 Then Send(" =D")
If $FinSmiley2 = 3 Then Send(" =P")
If $FinSmiley2 = 4 Then Send(" ;)")
If $FinSmiley2 = 5 Then Send(" ;D")
If $FinSmiley2 = 6 Then Send(" 8D")
Send("{ENTER}")
GUICtrlSetData($InputNombreFlood, $NombreFlood)
$NombreFlood = $NombreFlood + 1
_GUICtrlEdit_InsertText($EditRapportFlood, "["&@HOUR&":"&@MIN&":"&@SEC&"]" & $ReadInputPhrase2, 0)
_GUICtrlEdit_InsertText($EditRapportFlood, @CRLF, 0)
ElseIf $ReadComboCanal2 = "Guilde" Then
Send("{ENTER}" & "/g " & $ReadInputPhrase2)
If $FinSmiley2 = 1 Then Send(" =)")
If $FinSmiley2 = 2 Then Send(" =D")
If $FinSmiley2 = 3 Then Send(" =P")
If $FinSmiley2 = 4 Then Send(" ;)")
If $FinSmiley2 = 5 Then Send(" ;D")
If $FinSmiley2 = 6 Then Send(" 8D")
Send("{ENTER}")
GUICtrlSetData($InputNombreFlood, $NombreFlood)
$NombreFlood = $NombreFlood + 1
_GUICtrlEdit_InsertText($EditRapportFlood, "["&@HOUR&":"&@MIN&":"&@SEC&"]" & $ReadInputPhrase2, 0)
_GUICtrlEdit_InsertText($EditRapportFlood, @CRLF, 0)
Endif
Endif
;=Phrase 3=
$FinSmiley3 = Random(1, 6, 1)
If $ReadInputPhrase3 <> "" Then
Sleep($ReadInputTempsFlood/20)
_Progress()
;=Phrase 3 Canaux=
If $ReadComboCanal3 = "Général" Then
Send("{ENTER}" & $ReadInputPhrase3)
If $FinSmiley3 = 1 Then Send(" =)")
If $FinSmiley3 = 2 Then Send(" =D")
If $FinSmiley3 = 3 Then Send(" =P")
If $FinSmiley3 = 4 Then Send(" ;)")
If $FinSmiley3 = 5 Then Send(" ;D")
If $FinSmiley3 = 6 Then Send(" 8D")
Send("{ENTER}")
GUICtrlSetData($InputNombreFlood, $NombreFlood)
$NombreFlood = $NombreFlood + 1
_GUICtrlEdit_InsertText($EditRapportFlood, "["&@HOUR&":"&@MIN&":"&@SEC&"]" & $ReadInputPhrase3, 0)
_GUICtrlEdit_InsertText($EditRapportFlood, @CRLF, 0)
ElseIf $ReadComboCanal3 = "Recrutement" Then
Send("{ENTER}" & "/r " & $ReadInputPhrase3)
If $FinSmiley3 = 1 Then Send(" =)")
If $FinSmiley3 = 2 Then Send(" =D")
If $FinSmiley3 = 3 Then Send(" =P")
If $FinSmiley3 = 4 Then Send(" ;)")
If $FinSmiley3 = 5 Then Send(" ;D")
If $FinSmiley3 = 6 Then Send(" 8D")
Send("{ENTER}")
GUICtrlSetData($InputNombreFlood, $NombreFlood)
$NombreFlood = $NombreFlood + 1
_GUICtrlEdit_InsertText($EditRapportFlood, "["&@HOUR&":"&@MIN&":"&@SEC&"]" & $ReadInputPhrase3, 0)
_GUICtrlEdit_InsertText($EditRapportFlood, @CRLF, 0)
ElseIf $ReadComboCanal3 = "Groupe" Then
Send("{ENTER}" & "/p " & $ReadInputPhrase3)
If $FinSmiley3 = 1 Then Send(" =)")
If $FinSmiley3 = 2 Then Send(" =D")
If $FinSmiley3 = 3 Then Send(" =P")
If $FinSmiley3 = 4 Then Send(" ;)")
If $FinSmiley3 = 5 Then Send(" ;D")
If $FinSmiley3 = 6 Then Send(" 8D")
Send("{ENTER}")
GUICtrlSetData($InputNombreFlood, $NombreFlood)
$NombreFlood = $NombreFlood + 1
_GUICtrlEdit_InsertText($EditRapportFlood, "["&@HOUR&":"&@MIN&":"&@SEC&"]" & $ReadInputPhrase3, 0)
_GUICtrlEdit_InsertText($EditRapportFlood, @CRLF, 0)
ElseIf $ReadComboCanal3 = "Guilde" Then
Send("{ENTER}" & "/g " & $ReadInputPhrase3)
If $FinSmiley3 = 1 Then Send(" =)")
If $FinSmiley3 = 2 Then Send(" =D")
If $FinSmiley3 = 3 Then Send(" =P")
If $FinSmiley3 = 4 Then Send(" ;)")
If $FinSmiley3 = 5 Then Send(" ;D")
If $FinSmiley3 = 6 Then Send(" 8D")
Send("{ENTER}")
GUICtrlSetData($InputNombreFlood, $NombreFlood)
$NombreFlood = $NombreFlood + 1
_GUICtrlEdit_InsertText($EditRapportFlood, "["&@HOUR&":"&@MIN&":"&@SEC&"]" & $ReadInputPhrase3, 0)
_GUICtrlEdit_InsertText($EditRapportFlood, @CRLF, 0)
Endif
Endif
Sleep($ReadInputTempsFlood/20)
_Progress()
WEnd
;===Radio Chiffre Coché===
ElseIf GUICtrlRead($RadioChiffre) = $GUI_CHECKED Then
While 1
$FinChiffre1 = Random(1, 9, 1)
ToolTip("Flood: Activé. F4 pour mettre en pause. F5 pour arrêter.", 0, 0)
;=Phrase 1 Canaux=
If $ReadComboCanal1 = "Général" Then
Send("{ENTER}" & $ReadInputPhrase1)
If $FinChiffre1 = 1 Then Send(" 1")
If $FinChiffre1 = 2 Then Send(" 2")
If $FinChiffre1 = 3 Then Send(" 3")
If $FinChiffre1 = 4 Then Send(" 4")
If $FinChiffre1 = 5 Then Send(" 5")
If $FinChiffre1 = 6 Then Send(" 6")
If $FinChiffre1 = 7 Then Send(" 7")
If $FinChiffre1 = 8 Then Send(" 8")
If $FinChiffre1 = 9 Then Send(" 9")
Send("{ENTER}")
GUICtrlSetData($InputNombreFlood, $NombreFlood)
$NombreFlood = $NombreFlood + 1
_GUICtrlEdit_InsertText($EditRapportFlood, "["&@HOUR&":"&@MIN&":"&@SEC&"]" & $ReadInputPhrase1, 0)
_GUICtrlEdit_InsertText($EditRapportFlood, @CRLF, 0)
ElseIf $ReadComboCanal1 = "Alignement" Then
Send("{ENTER}" & "/a " & $ReadInputPhrase1)
If $FinChiffre1 = 1 Then Send(" 1")
If $FinChiffre1 = 2 Then Send(" 2")
If $FinChiffre1 = 3 Then Send(" 3")
If $FinChiffre1 = 4 Then Send(" 4")
If $FinChiffre1 = 5 Then Send(" 5")
If $FinChiffre1 = 6 Then Send(" 6")
If $FinChiffre1 = 7 Then Send(" 7")
If $FinChiffre1 = 8 Then Send(" 8")
If $FinChiffre1 = 9 Then Send(" 9")
Send("{ENTER}")
GUICtrlSetData($InputNombreFlood, $NombreFlood)
$NombreFlood = $NombreFlood + 1
_GUICtrlEdit_InsertText($EditRapportFlood, "["&@HOUR&":"&@MIN&":"&@SEC&"]" & $ReadInputPhrase1, 0)
_GUICtrlEdit_InsertText($EditRapportFlood, @CRLF, 0)
ElseIf $ReadComboCanal1 = "Groupe" Then
Send("{ENTER}" & "/p " & $ReadInputPhrase1)
If $FinChiffre1 = 1 Then Send(" 1")
If $FinChiffre1 = 2 Then Send(" 2")
If $FinChiffre1 = 3 Then Send(" 3")
If $FinChiffre1 = 4 Then Send(" 4")
If $FinChiffre1 = 5 Then Send(" 5")
If $FinChiffre1 = 6 Then Send(" 6")
If $FinChiffre1 = 7 Then Send(" 7")
If $FinChiffre1 = 8 Then Send(" 8")
If $FinChiffre1 = 9 Then Send(" 9")
Send("{ENTER}")
GUICtrlSetData($InputNombreFlood, $NombreFlood)
$NombreFlood = $NombreFlood + 1
_GUICtrlEdit_InsertText($EditRapportFlood, "["&@HOUR&":"&@MIN&":"&@SEC&"]" & $ReadInputPhrase1, 0)
_GUICtrlEdit_InsertText($EditRapportFlood, @CRLF, 0)
ElseIf $ReadComboCanal1 = "Guilde" Then
Send("{ENTER}" & "/g " & $ReadInputPhrase1)
If $FinChiffre1 = 1 Then Send(" 1")
If $FinChiffre1 = 2 Then Send(" 2")
If $FinChiffre1 = 3 Then Send(" 3")
If $FinChiffre1 = 4 Then Send(" 4")
If $FinChiffre1 = 5 Then Send(" 5")
If $FinChiffre1 = 6 Then Send(" 6")
If $FinChiffre1 = 7 Then Send(" 7")
If $FinChiffre1 = 8 Then Send(" 8")
If $FinChiffre1 = 9 Then Send(" 9")
Send("{ENTER}")
GUICtrlSetData($InputNombreFlood, $NombreFlood)
$NombreFlood = $NombreFlood + 1
_GUICtrlEdit_InsertText($EditRapportFlood, "["&@HOUR&":"&@MIN&":"&@SEC&"]" & $ReadInputPhrase1, 0)
_GUICtrlEdit_InsertText($EditRapportFlood, @CRLF, 0)
EndIf
;=Phrase 2=
$FinChiffre2 = Random(1, 9, 1)
If $ReadInputPhrase2 <> "" Then
Sleep($ReadInputTempsFlood/20)
_Progress()
;=Phrase 2 Canaux=
If $ReadComboCanal2 = "Général" Then
Send("{ENTER}" & $ReadInputPhrase2)
If $FinChiffre2 = 1 Then Send(" 1")
If $FinChiffre2 = 2 Then Send(" 2")
If $FinChiffre2 = 3 Then Send(" 3")
If $FinChiffre2 = 4 Then Send(" 4")
If $FinChiffre2 = 5 Then Send(" 5")
If $FinChiffre2 = 6 Then Send(" 6")
If $FinChiffre2 = 7 Then Send(" 7")
If $FinChiffre2 = 8 Then Send(" 8")
If $FinChiffre2 = 9 Then Send(" 9")
Send("{ENTER}")
GUICtrlSetData($InputNombreFlood, $NombreFlood)
$NombreFlood = $NombreFlood + 1
_GUICtrlEdit_InsertText($EditRapportFlood, "["&@HOUR&":"&@MIN&":"&@SEC&"]" & $ReadInputPhrase2, 0)
_GUICtrlEdit_InsertText($EditRapportFlood, @CRLF, 0)
ElseIf $ReadComboCanal2 = "Commerce" Then
Send("{ENTER}" & "/b " & $ReadInputPhrase2)
If $FinChiffre2 = 1 Then Send(" 1")
If $FinChiffre2 = 2 Then Send(" 2")
If $FinChiffre2 = 3 Then Send(" 3")
If $FinChiffre2 = 4 Then Send(" 4")
If $FinChiffre2 = 5 Then Send(" 5")
If $FinChiffre2 = 6 Then Send(" 6")
If $FinChiffre2 = 7 Then Send(" 7")
If $FinChiffre2 = 8 Then Send(" 8")
If $FinChiffre2 = 9 Then Send(" 9")
Send("{ENTER}")
GUICtrlSetData($InputNombreFlood, $NombreFlood)
$NombreFlood = $NombreFlood + 1
_GUICtrlEdit_InsertText($EditRapportFlood, "["&@HOUR&":"&@MIN&":"&@SEC&"]" & $ReadInputPhrase2, 0)
_GUICtrlEdit_InsertText($EditRapportFlood, @CRLF, 0)
ElseIf $ReadComboCanal2 = "Groupe" Then
Send("{ENTER}" & "/p " & $ReadInputPhrase2)
If $FinChiffre2 = 1 Then Send(" 1")
If $FinChiffre2 = 2 Then Send(" 2")
If $FinChiffre2 = 3 Then Send(" 3")
If $FinChiffre2 = 4 Then Send(" 4")
If $FinChiffre2 = 5 Then Send(" 5")
If $FinChiffre2 = 6 Then Send(" 6")
If $FinChiffre2 = 7 Then Send(" 7")
If $FinChiffre2 = 8 Then Send(" 8")
If $FinChiffre2 = 9 Then Send(" 9")
Send("{ENTER}")
GUICtrlSetData($InputNombreFlood, $NombreFlood)
$NombreFlood = $NombreFlood + 1
_GUICtrlEdit_InsertText($EditRapportFlood, "["&@HOUR&":"&@MIN&":"&@SEC&"]" & $ReadInputPhrase2, 0)
_GUICtrlEdit_InsertText($EditRapportFlood, @CRLF, 0)
ElseIf $ReadComboCanal2 = "Guilde" Then
Send("{ENTER}" & "/g " & $ReadInputPhrase2)
If $FinChiffre2 = 1 Then Send(" 1")
If $FinChiffre2 = 2 Then Send(" 2")
If $FinChiffre2 = 3 Then Send(" 3")
If $FinChiffre2 = 4 Then Send(" 4")
If $FinChiffre2 = 5 Then Send(" 5")
If $FinChiffre2 = 6 Then Send(" 6")
If $FinChiffre2 = 7 Then Send(" 7")
If $FinChiffre2 = 8 Then Send(" 8")
If $FinChiffre2 = 9 Then Send(" 9")
Send("{ENTER}")
GUICtrlSetData($InputNombreFlood, $NombreFlood)
$NombreFlood = $NombreFlood + 1
_GUICtrlEdit_InsertText($EditRapportFlood, "["&@HOUR&":"&@MIN&":"&@SEC&"]" & $ReadInputPhrase2, 0)
_GUICtrlEdit_InsertText($EditRapportFlood, @CRLF, 0)
Endif
Endif
;=Phrase 3=
$FinChiffre3 = Random(1, 9, 1)
If $ReadInputPhrase3 <> "" Then
Sleep($ReadInputTempsFlood/20)
_Progress()
;=Phrase 3 Canaux=
If $ReadComboCanal3 = "Général" Then
Send("{ENTER}" & $ReadInputPhrase3)
If $FinChiffre3 = 1 Then Send(" 1")
If $FinChiffre3 = 2 Then Send(" 2")
If $FinChiffre3 = 3 Then Send(" 3")
If $FinChiffre3 = 4 Then Send(" 4")
If $FinChiffre3 = 5 Then Send(" 5")
If $FinChiffre3 = 6 Then Send(" 6")
If $FinChiffre3 = 7 Then Send(" 7")
If $FinChiffre3 = 8 Then Send(" 8")
If $FinChiffre1 = 9 Then Send(" 9")
Send("{ENTER}")
GUICtrlSetData($InputNombreFlood, $NombreFlood)
$NombreFlood = $NombreFlood + 1
_GUICtrlEdit_InsertText($EditRapportFlood, "["&@HOUR&":"&@MIN&":"&@SEC&"]" & $ReadInputPhrase3, 0)
_GUICtrlEdit_InsertText($EditRapportFlood, @CRLF, 0)
ElseIf $ReadComboCanal3 = "Recrutement" Then
Send("{ENTER}" & "/r " & $ReadInputPhrase3)
If $FinChiffre3 = 1 Then Send(" 1")
If $FinChiffre3 = 2 Then Send(" 2")
If $FinChiffre3 = 3 Then Send(" 3")
If $FinChiffre3 = 4 Then Send(" 4")
If $FinChiffre3 = 5 Then Send(" 5")
If $FinChiffre3 = 6 Then Send(" 6")
If $FinChiffre3 = 7 Then Send(" 7")
If $FinChiffre3 = 8 Then Send(" 8")
If $FinChiffre3 = 9 Then Send(" 9")
Send("{ENTER}")
GUICtrlSetData($InputNombreFlood, $NombreFlood)
$NombreFlood = $NombreFlood + 1
_GUICtrlEdit_InsertText($EditRapportFlood, "["&@HOUR&":"&@MIN&":"&@SEC&"]" & $ReadInputPhrase3, 0)
_GUICtrlEdit_InsertText($EditRapportFlood, @CRLF, 0)
ElseIf $ReadComboCanal3 = "Groupe" Then
Send("{ENTER}" & "/p " & $ReadInputPhrase3)
If $FinChiffre3 = 1 Then Send(" 1")
If $FinChiffre3 = 2 Then Send(" 2")
If $FinChiffre3 = 3 Then Send(" 3")
If $FinChiffre3 = 4 Then Send(" 4")
If $FinChiffre3 = 5 Then Send(" 5")
If $FinChiffre3 = 6 Then Send(" 6")
If $FinChiffre3 = 7 Then Send(" 7")
If $FinChiffre3 = 8 Then Send(" 8")
If $FinChiffre3 = 9 Then Send(" 9")
Send("{ENTER}")
GUICtrlSetData($InputNombreFlood, $NombreFlood)
$NombreFlood = $NombreFlood + 1
_GUICtrlEdit_InsertText($EditRapportFlood, "["&@HOUR&":"&@MIN&":"&@SEC&"]" & $ReadInputPhrase3, 0)
_GUICtrlEdit_InsertText($EditRapportFlood, @CRLF, 0)
ElseIf $ReadComboCanal3 = "Guilde" Then
Send("{ENTER}" & "/g " & $ReadInputPhrase3)
If $FinChiffre3 = 1 Then Send(" 1")
If $FinChiffre3 = 2 Then Send(" 2")
If $FinChiffre3 = 3 Then Send(" 3")
If $FinChiffre3 = 4 Then Send(" 4")
If $FinChiffre3 = 5 Then Send(" 5")
If $FinChiffre3 = 6 Then Send(" 6")
If $FinChiffre3 = 7 Then Send(" 7")
If $FinChiffre3 = 8 Then Send(" 8")
If $FinChiffre3 = 9 Then Send(" 9")
Send("{ENTER}")
GUICtrlSetData($InputNombreFlood, $NombreFlood)
$NombreFlood = $NombreFlood + 1
_GUICtrlEdit_InsertText($EditRapportFlood, "["&@HOUR&":"&@MIN&":"&@SEC&"]" & $ReadInputPhrase3, 0)
_GUICtrlEdit_InsertText($EditRapportFlood, @CRLF, 0)
Endif
Endif
Sleep($ReadInputTempsFlood/20)
_Progress()
WEnd
Endif
EndFunc
;===Fonction ProgressBar===
Func _Progress()
GUICtrlSetData($ProgressFlood, $PourcentageFlood)
Sleep($ReadInputTempsFlood/20)
$PourcentageFlood += 5
GUICtrlSetData($ProgressFlood, $PourcentageFlood)
Sleep($ReadInputTempsFlood/20)
$PourcentageFlood += 5
GUICtrlSetData($ProgressFlood, $PourcentageFlood)
Sleep($ReadInputTempsFlood/20)
$PourcentageFlood += 5
GUICtrlSetData($ProgressFlood, $PourcentageFlood)
Sleep($ReadInputTempsFlood/20)
$PourcentageFlood += 5
GUICtrlSetData($ProgressFlood, $PourcentageFlood)
Sleep($ReadInputTempsFlood/20)
$PourcentageFlood += 5
GUICtrlSetData($ProgressFlood, $PourcentageFlood)
Sleep($ReadInputTempsFlood/20)
$PourcentageFlood += 5
GUICtrlSetData($ProgressFlood, $PourcentageFlood)
Sleep($ReadInputTempsFlood/20)
$PourcentageFlood += 5
GUICtrlSetData($ProgressFlood, $PourcentageFlood)
Sleep($ReadInputTempsFlood/20)
$PourcentageFlood += 5
GUICtrlSetData($ProgressFlood, $PourcentageFlood)
Sleep($ReadInputTempsFlood/20)
$PourcentageFlood += 5
GUICtrlSetData($ProgressFlood, $PourcentageFlood)
Sleep($ReadInputTempsFlood/20)
$PourcentageFlood += 5
GUICtrlSetData($ProgressFlood, $PourcentageFlood)
Sleep($ReadInputTempsFlood/20)
$PourcentageFlood += 5
GUICtrlSetData($ProgressFlood, $PourcentageFlood)
Sleep($ReadInputTempsFlood/20)
$PourcentageFlood += 5
GUICtrlSetData($ProgressFlood, $PourcentageFlood)
Sleep($ReadInputTempsFlood/20)
$PourcentageFlood += 5
GUICtrlSetData($ProgressFlood, $PourcentageFlood)
Sleep($ReadInputTempsFlood/20)
$PourcentageFlood += 5
GUICtrlSetData($ProgressFlood, $PourcentageFlood)
Sleep($ReadInputTempsFlood/20)
$PourcentageFlood += 5
GUICtrlSetData($ProgressFlood, $PourcentageFlood)
Sleep($ReadInputTempsFlood/20)
$PourcentageFlood += 5
GUICtrlSetData($ProgressFlood, $PourcentageFlood)
Sleep($ReadInputTempsFlood/20)
$PourcentageFlood += 5
GUICtrlSetData($ProgressFlood, $PourcentageFlood)
Sleep($ReadInputTempsFlood/20)
$PourcentageFlood += 5
GUICtrlSetData($ProgressFlood, $PourcentageFlood)
Sleep($ReadInputTempsFlood/20)
$PourcentageFlood += 5
GUICtrlSetData($ProgressFlood, $PourcentageFlood)
Sleep($ReadInputTempsFlood/20)
$PourcentageFlood += 5
GUICtrlSetData($ProgressFlood, $PourcentageFlood)
Sleep($ReadInputTempsFlood/20)
$PourcentageFlood += 5
GUICtrlSetData($ProgressFlood, $PourcentageFlood)
$PourcentageFlood -= 100
EndFunc
;====Fonction HotKeys====
;===Fonction EXIT ESC et F5===
Func EndBot()
MsgBox(64, "Kagami FPF Multi-Bot", "Merci d'avoir utiliser KyuuShuu FLood Bot!", 3)
Exit
EndFunc
;===Fonction PAUSE F4===
Func PauseBot()
;==Pause Flood==
If GUICtrlRead($LabelEtatFlood) = "Actif..." Then
While 1
Sleep(100)
ToolTip("Le Bot est actuellement en pause. F4 pour redémarrer le Bot.",0,0)
GUICtrlSetData($LabelEtatFlood, "Pause...")
WEnd
ElseIf GUICtrlRead($LabelEtatFlood) = "Pause..." Then
GUICtrlSetData($LabelEtatFlood, "Actif...")
Sleep(100)
GUICtrlSetData($ProgressFlood, $PourcentageFlood)
$PourcentageFlood = 0
_Flood()
Else
EndIf
EndFunc
10. Trucs et Astuces
---10.1. Démarrage par nom du personnage
Bon, comme promis, je vais vous expliquer comment démarrer le Flood lorsque le personnage de l'utilisateur se connecte en jeu.
Par contre, je ne vais pas vous donner de code source cette fois-ci, je vous dirai comment faire et vous vous débrouillerez.
Tout d'abord, retournez dans votre fonction _FloodBot
Devant le ToolTip, ouvrez une InputBox demandant le nom du personnage de l'utilisateur que vous stockerez dans une variable. Ensuite remplacez le If WinActive("Dofus") par If WinActive("$VotreVariableContenantLeNomDuPersonnage")
Et voilà, ça devrait faire l'affaire.
Remarquez que vous pouvez aussi mettre une InputBox sur la GUI ce que je trouve beaucoup plus pratique pour l'utilisateur (Si on commence à ouvrir 36000 fenêtre en même temps, l'utilisateur ne s'y retrouvera pas)
---10.2. Un Titre Progressif
Ce que je vais vous donner ici n'a aucun rapport avec le bot, c'est juste un petit moyen de mettre un peu d'esthétique dans son programme.
Effectivement, le code que je vais vous donner permet l'affichage lettre par lettre du titre du programme.
Tout d'abord une petite fonction.
Code:
Func _Titre_ANIM()
$i = StringLen(WinGetTitle($Form1)) + 1
WinSetTitle($Form1_1, "", WinGetTitle($Form1) & StringMid($sTitre, $i ,1))
If $i > StringLen($sTitre) Then
WinSetTitle($Form1, "", "")
Sleep(500)
EndIf
EndFunc
Ensuite, placez ceci dans votre Déclaration des Variables:
Code:
Global $Titre_Anim = "", $sTitre = "Nom de votre Bot ici"
AdlibRegister("_Titre_ANIM", 200)
Hop et voilà, votre titre apparaitra une lettre par une lettre puis se réinitialisera.
Je tiens à préciser que je ne suis pas le créateur de cette fonction.
---10.3. Améliorer son Bot
Voici ci-dessous quelques améliorations possibles pour un Bot de ce type.
-Améliorer la GUI, l'embellifier parce que là, ça craint du boudin!
-Ajouter un système de mises à jour automatique.
-Ajouter un onglet "Mot de Passe" et bloquer certaines options (Je sais pas si on peut appeler ça une amélioration mais pour progresser plus y en a mieux c'est!)
-Ajouter un onglet "Options" contenant un choix de préférences pour l'utilisateur comme choix de la couleur de l'interface, si il veut que le titre s'affiche lettre par lettre ou qu'il soit statique etc etc...
-Ajouter un onglet "Aide Internet" où il y aurait un mini-navigateur contenant seulement la page où vous avez publié votre Bot par exemple. (Attention car ça ralentira considérablement l'ouverture de votre Bot, je l'avais mis sur le mien mais je l'ai supprimé.)
Après, c'est à vous de rivaliser d'imagination pour créer THE Bot.
Et je tiens aussi à préciser que toutes les améliorations proposées ci-dessus, je les ai déjà réalisées donc elles sont largement possible et à votre portée.
Nous arrivons donc à la toute fin de ce cours.
J'espère vous avoir appris beaucoup et que vous utiliserez les méthodes apprises dans tous vos programmes et que vous ferez de vraies petites merveilles grâce à moi =p
Temps d'écriture du tutoriel: 4 heures
Chanteur/Groupes écoutés: Dub Inc
Damian Marley
Bob Marley
Rammstein
System Of A Down
Cypress Hill
Method Man & Redman
ENJOY!
PS: Un p'tit merci n'a jamais tué personne ;)