Les structures de boucle en mirc sont inexistantes (en tout cas, avant la version 5.9). A ce niveau, le script mirc se rapproche un peu de l'assembleur puisqu'il n'existe ni for, ni do ...while, ni repeat. Il est probable que l'auteur ait délibérément fait le choix de ne pas les mettre pour éviter d'engorger les serveurs avec des commandes de masse. Plus récemment, l'auteur a implémenté depuis la version 5.9 la structure while.

Ce n'est pas le cas de pirch qui est un autre client irc scriptable, moins utilisé que mirc à ma connaissance: il implémente les boucles for en particulire.

Pour pallier à leur inexistence, on effectue des boucles comportant un goto et au moins une condition if. Prenons un exemple: donner la liste des ops sur un canal.

/listops {
%N = $opnick(#,0)
; $opnick avec comme paramètre 0 retourne le nombre de nicks qui ont l'op sur le canal spécifié
%i = 1
:boucle
%nick = $opnick(#,%i)
echo 1 -a %nick est op de #
inc %i
if ( %i > %N ) return
goto boucle
}
Analysons. On initialise la variable %N avec le nombre d'opérateurs du canal courant, puis on initialise un compteur %i à 1.

Ensuite on utilise $opnick pour connaître le %i ème nick op du canal

A chaque tour de boucle on incrémente le compteur %i et on teste s'il dépasse ou pas le nombre initial d'opérateurs.

On sort de la boucle lorsque tous les opérateurs sont listés. C'est à dire, quand la boucle a été répétée %N fois.

Quelques remarques d'intérêt général:

  • La fonction echo 1 -a <message> écrit <message> sur la fenêtre active, en noir (couleur N° 1). Cette instruction est locale, rien n'est envoyé au serveur; vous êtes le seul à savoir ce qu'elle affiche


  • l'instruction inc %i incrémente la valeur numérique de %i de 1. Elle sous-entend que %i contient un nombre


  • Le contraire de inc est dec.


  • L'instruction return fait sortir de l'alias et rend la main au programme appelant


  • Ne pas oublier de mettre des espaces entre les noms de variable et les opérateurs. C'est une erreur fréquente que de les oublier, car les opérateurs sont aussi compris par mirc comme des caractères quelconques, pouvant faire partie d'un nom de variable.


  • Petit ajout sur l'instruction while:

    on peut maintenant faire du controle de boucle avec l'instruction while. Elle fonctionne comme dans la plupart des langages usuels qui l'implémentent.
    set %i 1
    echo 1 -a Je sais compter jusqu'à dix!
    while ( %i <= 10 ) {
    echo 1 -a %i
    inc %i
    }
    
    Il n'y a pas encore de do ... while ou encore de repeat.. until comme en Pascal, ni même (malheureusement, à l'heure ou j'écris ce cours), de for .. next.

    Précédent: quelques constantes spéciales   Suivant: la section popup   Début de page   Sommaire