Cours de scripting mIRC n°2 : les boucles et les alias
Information
Désormais, les cours seront divisés en trois parties : débutant, intermédiaire et expert.
Le niveau débutant est le niveau le plus bas, il suppose donc que vous n'avez pratiquement aucune connaissance en scripting mIRC.
Les cours de ce niveau sont donc très détaillés. Il peut peut-être paraître inutile aux personnes d'un niveau supérieur de lire ces cours.
Le niveau intermédiaire est le niveau moyen, il suppose que vous connaissez les commandes de base de mIRC ainsi que des notions
fondamentales comme la signification de certains mots clefs (ex : alias, remote, popups, boucles, events...)
Enfin, le niveau expert correspond à un niveau de scripting mIRC assez élevé, les cours à ce niveau là sont donc très peu détaillés
et n'ont pour but que d'approfondir quelques notions si le sujet du cours est simple ou alors d'élaborer des scripts assez complexes si le sujet est plutôt compliqué.
A chaque fin de cours, vous trouverez un exercice de scripting mIRC, de niveau variable dont la solution sera donnée dans le prochain cours.
Introduction : quelques définitions
Les boucles sont indispensables à tout script mIRC. Leur but est de simplifier une tâche répétitive. Nous allons ici
nous servir d'alias pour alimenter nos exemples.
Les alias sont des commandes composés eux-mêmes de commandes de base en général ou d'autres alias,
(cf cours n°0 pour plus de détails).
Débutant
Voici une boucle toute simple qui va compter jusqu'à 20, copiez collez la dans un remote vide (ALT + R, File, New). Pour voir son effet,
il vous suffit de taper la commande : /boucle.ex1
On remarque ici l'utilisation de variables qui commencent toutes par %. On retrouve aussi la commande de base "echo"
(pour plus d'informations, consultez le cours n°1).
alias boucle.ex1 {
var %i = 1
var %MAX = 20
while (%i <= %MAX) {
echo -ta Valeur du compteur : %i
inc %i
}
}
Dans un remote, si on veut définir un alias il faut commencer la ligne par le mot "alias" puis donner son nom.
Ici, son nom est : boucle.ex1, il signifie qu'il s'agit de l'exemple 1 de la boucle. Il faut toujours donner des noms significatifs à vos alias
pour mieux vous y retrouver.
On remarque que les variables sont locales car elles sont crées avec la commande : /var %NomDeVariable = Valeur (dans le script proposé
au dessus, le / devant var n'est pas obligatoire, c'est pour ça qu'il n'y figure pas).
Une boucle se présente sous la forme : while (conditions) { commandes }. Ce qui se traduit par : "tant que les conditions sont vraies,
effectuer les commandes qui suivent".
Ici, tant que le compteur %i est inférieur à %MAX (égal à 20 dans l'exemple), il affichera en echo "Valeur du compteur : %i" (en prenant soin
de remplacer %i par sa valeur à l'instant donné) et incrémentera (passera à la valeur suivante) la variable %i
(par exemple si %i = 1, inc %i fera passer %i à 2).
Intermédiaire
Voici une boucle qui va vous permettre d'afficher la liste des pseudos sur un salon donné, pour l'utiliser tapez : /boucle.ex2 #NomDuSalon
alias boucle.ex2 {
var %x = $$1
var %i = 1
var %MAX = $nick(%x,0)
while (%i <= %MAX) {
var %liste = $addtok(%liste,$nick(%x,%i),32)
if ($numtok(%liste,32) == 10) { echo -ta %liste | var %liste }
else if (%i == %MAX && %liste != $null) { echo -ta %liste }
inc %i
}
}
On remarque que le paramètre $$1 qui correspond au nom du salon est stocké dans une variable. En effet, comme nous y faisons appel
à plusieurs reprises, cela est préférable pour gagner du temps à l'exécution du script.
L'identifiant $addtok(...) permet de rajouter à la variable %liste le prochain pseudo de la liste (c'est à dire $nick(%x,%i)) en les séparant d'un espace (le 32 correspond
au code ASCII de l'espace). L'identifiant $numtok(...) renvoit le nombre de tokens dans la variable %liste en prenant pour mesure l'espace (encore ce fameux 32).
La première condition permet d'afficher les pseudos dix par dix. La seconde condition vérifie si il s'agit du dernier pseudo. Dans ce cas là, il se peut qu'il n'y ait à afficher
que les 5 derniers pseudos (si par exemple il y avait 35 pseudos, il y aurait trois lignes de 10 pseudos et une ligne de 5 pseudos).
Expert
Quant à vous experts, voici ce que vous pouvez vous mettre sous la dent : une double boucle !
alias boucle.ex3 {
var %i = 1
var %MAX1 = $chan(0)
while (%i <= %MAX1) {
var %x = $chan(%i)
var %j = 1
var %MAX2 = $nick(%x,0)
echo 12 -ta Début : %x
while (%j <= %MAX2) {
var %y = $nick(%x,%j)
var %z = $addtok(%z,%y,32)
if $numtok(%z,32) == 5 { echo -ta %z | var %z }
else if %j = %MAX2 && %z != $null { echo -ta %z | var %z }
inc %j
}
echo 12 -ta Fin : %x
inc %i
}
}
A vous de deviner ce que cette double boucle fait, sinon testez là...
Exercice : difficulté intermédiaire
En utilisant les boucles, construisez un alias permettant de donner la liste des pseudos contenant un certain mot sur un salon.
Par exemple si je tape /detecter.mot #testr cam, l'alias devra m'afficher tous les pseudos contenant le mot "cam".
Amusez vous bien en attendant la semaine prochaine...