7 Un tutoriel sur la ‘programmation’ de mIRC.

mIRC a trois sections d’outils dans lesquelles il est possible de programmer, dans un certain sens : les sections Alias, Popups et la Remote. Dans la section remote il est possible de définir des Users (utilisateurs), des Variables et des Scripts. Dans la section scripts, il est possible de définir la façon dont mIRC réagit aux choses qui se passent sur IRC, les événements, et les CTCP.

ATTENTION ATTENTION ATTENTION La meilleure façon d’apprendre et de comprendre la façon dont mIRC est programmé est d’étudier ce chapitre avec beaucoup d’attention et *dans l’ordre*. N’essayez pas de prendre un raccourci jusqu'à la section remote avant d’avoir vraiment compris les alias et les popups. Les leçons que vous apprendrez de chaques se cumulent.

(Une note pour ceux qui sont familiers avec ircII : la syntaxe des alias de mIRC est similaire a celle de ircII, mais pas exactement la même. Les commandes remote et les événements autorise a implémenter pratiquement la même chose que ce que vous pouvez faire avec les scripts ircII, mais la structures et la syntaxe sont légèrement différents.)

 

7-1 La section Alias.

Allez dans le menu Tools/ Alias/.

L’éditeur mIRC démarrera avec la section Alias ouverte.

Ignorez tout simplement les autres sections pour le moment !

L’éditeur mIRC est l’interface utilisée par toutes les sections de programmation de mIRC. Avec la section Alias, il y a un menu File qui vous aidera à charger, décharger et sauver vos fichiers d’alias. Le menu ‘Edit’ offre le copier/coller et une routine de recherche. Le menu ’View’ vous permet de sélectionner le fichier d’alias que vous voulez éditer. Et le menu ‘Alias’ vous donne un index du fichier courant.

Dans la section Alias, vous pouvez définir des raccourcis pour les commandes fréquemment utilisées telles join, part, quit, oper et déoper ou n’importe quoi d’autre. Même ce que vous dites souvent peut être mis dans un alias... En général, tout ce que vous pouvez taper sur la ligne de commande (là où vous tapez ce que vous dites) peut être mis dans un alias. Les alias peuvent aussi exécuter plusieurs commandes d’un seul coup. Vous pouvez même définir des alias qui sont lances par les touches F1 - F12... (Enfin une utilité pour ces touches jamais utilisées...) Dans mIRC, vous pouvez même appeler des alias depuis des alias, des popups ou des remotes. Dans les nouveaux mIRC, il est possible d’avoir plusieurs fichiers d’alias. mIRC vient avec un fichier ‘alias.ini’ et vous lui pouvez ajouter des alias ou décider d’ajouter un fichier entier avec des alias. C’est très Facile !

 

7-1-1 Créer des alias.

OK, commençons par un exemple. Pour joindre un channel, vous tapez normalement :
/join #nom

... Ou #nom est le nom du channel, bien sur. Comme cette commande est utilisée souvent, il serait sympa d’en taper le moins possible, non ? Alors, créons un alias pour "/join #nom" - créons un raccourci, un alias.

Au lieu de taper "/join #nom", faisons en sorte de que taper "/j #nom" donne le même résultat. Dans ce cas, l’alias serais :
/j /join $1

(Il n’est pas encore nécessaire ce comprendre exactement ce que cela signifie pour mIRC, mais pour l’instant, cela suffira. J’expliquerais la syntaxe d’ici peu.)

faites un essai en plaçant la ligne "/j /join $1" dans la section Aliases dans Tools/Aliases (si cela n’y est pas déjà). Et essayez la sur la ligne de commande (ou vous tapez normalement) avec une commande simple tel :
/j #test

Vous voyez bien que "/j #test" signifie exactement la même chose que "/join #test" - cela vous fait aller sur un channel appelé #test. Ce raccourci de construction est appelé un alias.

 

Syntaxe des alias.

Les alias utilisent le format suivant : "/{nomdelalias} /{commande}"

En d’autres mots, tout d’abord votre raccourci (comme "/j" dans l’exemple précédent), puis un espace, puis la commande vers laquelle pointe votre raccourci (comme /join" dans l’exemple précédent).

Dans la définition d’un alias, il n’est pas *nécessaire* de spécifier le caractère de commande / puisqu’il n’est vraiment nécessaire que quand vous tapiez des commandes sur la ligne de commande. Pour plus de clarté, l’ai décide d’utiliser le / dans ce tutoriel. Mais souvenez-vous que l’alias "j join $1" marchera aussi bien.

Les alias utilisent aussi de nombreux identificateurs et chaînes de caractères spéciaux. Il y a de nombreuses chaînes tels $1, $1-3, $$1, $?, $!, #$1, #$$1 et même #$?. Les chaînes sont remplies par ce qui est spécifié quand l’alias est appelé. Elles sont très dynamiques dans leur utilisation. Les identificateurs sont similaires aux chaînes, mais sont remplis par une valeur standard. Les plus importants sont : #, $me et $url mais la liste est longue et en constante évolution. Pour vous donner une meilleure idée, $read $date $adate $fulldate $time et $day sont d’autres identificateurs.

Ne vous inquiétez pas, on vous expliquera tout quand il le faudra.

Pour l’instant, concentrons nous sur le $1. Apres tout, c’est la chaîne que nous avons utilise dans notre exemple ci dessus
/j /join $1

$1 signifie "le premier mot tape après l’alias, quel qu’il soit." Alors si vous tapez "/j #test", mIRC saura que ceci est un raccourci pour "/join #test". Si vous tapez "/j #coucou", il saura que c’est un raccourci pour "/join #coucou".

 

Commandes multiples.

Maintenant, disons que vous aimeriez joindre plusieurs channels d’un seul coup. Un alias peut le faire. Séparez juste les commandes par le caractère | (sur la majorité claviers français on l’obtient en appuyant sur la touche Alt-Gr (a droite de la barre d’espace) et sur le chiffre 6 (pas celui du pave numérique) pour les autres claviers, débrouillez vous :-) )... Le caractère | est appelé ‘pipe’.

Supposons que vous voudriez pouvoir taper ‘/j3’ suivi de trois channels et qu’ils soient tous joins d’un seul coup. L’alias serais :
/j3 /join $1 | /join $2 | /join $3

Donc, si vous placez cet alias dans Tools/Aliases et que vous tapez
/j3 #test1 #test2 #test3

... mIRC fera "/join #test1" puis "/join #test2" et enfin"/join #test3".

Vous comprenez donc bien que $1 signifie le premier mot tape après l’alias. Et $2 est bien sur le deuxième mot, $3 le troisième...

Maintenant, mIRC s’attend bien sur a recevoir 3 mots - vos noms de channels. Alors, que ce passerait-il si vous tapiez juste "/j3 #test1" ? mIRC se plaindrais a propos des paramètres manquant, puisqu’il s’attends a recevoir plus de channels. La solution a ce problème est la chaîne $$1, qui sera expliquée plus tard.

 

Exemple : /say

Disons que vous dites toujours la même chose dans un channel, comme l’adresse de votre home page, ou quoi que ce soit... Regardez ces alias utilisant "/say" : "/say" tape simplement le texte indique dans la fenêtre courante.
/salut /say Salut a tous...
/www /say La home page de mIRC est a : http://www.mirc.co.uk/
/lignes /say Ceci est la première ligne | /say Ceci est la deuxième ligne

Le dernier exemple vous montre comment utiliser /say pour plusieurs lignes de texte dans un seul alias. Séparez juste les commandes par le caractère |. Vous voyez aussi que tous les alias n’ont pas de chaîne dedans.

Exemple : /me

Actions dans un alias...
/rigolo /me trouve ca drôle !
/bisou /me embrasse $1 partout !

Le deuxième exemple utilise la chaîne $1. Si vous tapez "/bisou Caro", cela serais équivalent a "/me embrasse Caro partout !"

Partage de chaînes.

Plusieurs commandes peuvent aussi utiliser la même chaîne.
/jtest /join $1 | /topic $1 un petit test.

Dans cette définition, le paramètre $1 est utilise deux fois. Si vous tapiez "/jtest #test", tout d’abord, vous vous joindre au channel #test, puis, changera le topic du channel en "un petit test".

Un autre exemple suivant le même style :
/aime /say j’aime $1 ! | /say j’aime réellement $1 !!

si il vous tapiez "/aime Caro", mIRC ferais "/say j’aime Caro !" et puis "/say j’aime réellement Caro !!".

Changement de mode (oper, etc.).

Pour mettre les commandes que vous utilisez souvent dans une section d’alias, vous devez tout d’abord connaître la structure normale de la commande. Oper quelqu’un sur IRC demande normalement la commande :
/mode {channel} +ooo {nick1} {nick2} {nick3}

...dans laquelle jusqu'à trois personnes peuvent être mentionnées, pourrais devenir l’alias :
/op /mode # +ooo $1 $2 $3

pour oper Laure, Maryline et Thomas, vous n’avez plus qu’a taper "/op Laure Maryline Thomas"

le # dans cet alias montre l’utilisation de l’un des identificateurs. Le # remplace toujours le #channel du channel sur lequel le l’alias est utilise... dans le même style, il est possible de faire des alias tels :
/deop /mode # -ooo $1 $2 $3
/ban /mode # +b $1
/kick /kick # $1
/dbk /mode # -o $1 | /kick # $1 | /mode # +b $1

IMPORTANT : respectez les espaces !

C’est très important ! Il est impératif d’inclure des espaces entre les chaînes et le reste de votre texte ! par exemple :
/aime /say j’aime vraiment $1!!!

...ne marchera PAS ! il doit y avoir un espace entre la chaîne "$1" et vos "!!!". Cela peut parfois paraître bizarre quand vous utilisez des commandes tels /say, alors prêtez y attention.
/aime /say j’aime vraiment $1 !!!

...marchera juste comme il faut.

Ceci est vrai avec toutes les chaînes. Pour faire en sorte qu’un cas soir plus simple, la spécification des channels, quelques chaînes spéciales ont été créés qui ajoutent en préfixe le caractère #. Elles sont #$1, #$$1 et #$?. Des détails sont donnes ci dessous.

Dans quelques cas, vous pouvez faire : /like /say I really like $1’s topic (pas trouve d’exemple en français), mais rappelez-vous : pas toujours !! Vous aurez a tester dans chacun des cas ou vous voulez l’utilisez.

Ou peut on utiliser les alias ?

Les Alias peuvent être utilisez sur la ligne de commande (là où vous tapez d’habitude les commandes), et vous pouvez même utiliser les alias dans les popups et les remotes, ce qui sera explique dans les sections suivantes. Les touches de fonctions peuvent aussi être utilisées sur les nick sélectionnés dans la liste des noms dans les channels, et dans les fenêtre de query, etc.... tout dépends de la définition de l’alias.

Il est même possible d’appeler un autre alias depuis un alias, mais pas soi même, récursivement. Appeler un alias depuis un autre alias utilise un paquet de mémoire, alors, il se peut que cela cause des problèmes dans certaines situations ou la mémoire manque... Dans les cas ou un alias rentre dans une boucle, utilisez la combinaison de touches CTRL+Pause pour arrêter le processus.

Alias spéciaux, touches de fonctions.

Une définition spéciale est possible pour être lancée par une touche de fonction. Le format de la définition est la suivante :
/f1 /say Salut a tous
/f2 /topic # Hop, un nouveau topic

Vous pouvez maintenant taper "/f1" pour dire bonjour a tout un channel ... mais il est plus pratique d’utiliser la touche F1 ! D’autres exemples :
/f5 /me Vous enverra gentiment la FAQ de mIRC en français
/f6 /join #mirc
/f9 /dcc send $1 c:\serve\mircfq31.zip
/f10 /dcc send $1 c:\serve\mirc50s.exe
/f11 /dcc send $1

La touche F9 enverra la FAQ de mIRC a la personne sélectionnée dans la liste des nick. N’oubliez pas de choisir un nick d’abord, ou vous aller voir des trucs bizarres (mais logiques)... Vous pouvez même utiliser la touche F9 dans une fenêtre privée, de query ou DCC chat !

La touche F11 vous demandera le nick a qui envoyer le fichier...

Et bien... a vous, inventez vos propres touches de fonctions utilisant les touches de fonctions... et amusez-vous bien ! il est aussi possible d’utiliser -shift- et -ctrl- en combinaison des touches de fonctions. Juste comme il suit :
/f1 /say J’ai utilise F1 pour dire ca.
/sf1 /say J’ai utilise Shift+F1 pour dire ca.
/cf1 /say J’ai utilise CTRL+F1 pour dire ca.

Utilisations des crochets d’évaluation.

Vous pouvez dorénavant utiliser [ et ] dans les alias pour contrôler l’ordre d’évaluation des identificateur. Les crochets peuvent maintenant être utiliser dans les popups et les remotes de même. Les identificateurs entre crochets seront évalués en premier, de gauche a droite. Vous pouvez aussi mettre plusieurs niveaux de crochets. Ceci permet d’évaluer les chaînes dans le sens que vous le souhaitez... les crochets ne seront pas affiches dans le texte résultant ou dans la commande. Exemples :
/note /notice $1 " $+ [ $read [ -s + [ $2 ] ] c:\text\note.txt ] $+ "
/sayvar /say % [ $+ [ $1 ] ]

Les définitions sans crochets sont évalués de la même façon que précédemment.

Alias dans les scripts.

Vous pourrez facilement charger les différents fichiers d’alias dans mIRC en plus de ceux que vous avez déjà. Ouvrez l’éditeur d’alias (Tools/Aliases/) et aller dans File/Load/. C’est facile de sélectionner un fichier avec des alias maintenant. Sélectionnez ‘View’ pour voir tous les fichiers chargés. C’est un moyen facile d’échanger des alias entres amis. Les alias peuvent aussi être inclus dans un fichier complet de scripts et distribues avec des remotes et des événements. On expliquera ceci un peu plus tard.

7-1-2 Définition des chaînes.

Maintenant, Vous devriez avoir une section d’alias correcte. Vous devriez être intéressé par une liste complète des chaînes et des identificateurs que vous pouvez utiliser dans les alias, et plus tard, dans les popups et les remotes. Les deux sections qui suivent vont tous vous les présenter. A partir de maintenant, essayez tous les exemples pour être sur de bien les comprendre et pour pouvoir les utiliser vous-même.

$N La chaîne la plus simple, elle contient un mot. Par exemple, $1 contient le premier mot après l’alias. $2 contiendrais le deuxième mot, et $3 le troisième... Exemple :
/op /mode $1 +o $2 $3

Tapez "/op #test Maryline Canard" pour oper Maryline Canard sur #test.
/tape /me tape $1 avec un gros $2

Tapez "/tape jet poisson" pour donner a jet une bonne odeur de poisson :o)

$N-M Cette chaîne contiendras une sélection de mots. Essayez
/trois /say Les trois premiers mots sont $1-3

Tapez "/trois riri fifi loulou donald" pour voir apparaître "Les trois premiers mots sont riri fifi loulou" ou donald a été ignore. Note : la notation $N-M remplace la vieille notation *N-M.

$N- Cette chaîne peut contenir BEAUCOUP de mots... $1- contiendras le premier mot, *et* tous les suivants. Essayez :
/dire /say j’aimerais bien vous dire que $1-

La commande "/dire mIRC est super" avec cet alias donnera : j’aimerais bien vous dire que mIRC est super". $2- contiendras le second mot et les suivants... Essayez
/mess /msg $1 $2-

Notez bien que cette commande aurais été la même si elle avais été écrite "/mess /msg $1 $2-". La notation $N- remplace la vieille *N.

$$1 Un alias contenant cette chaîne sera utilisée SEULEMENT si un paramètre est donne, sinon, l’appel de cet alias sera ignore. Par exemple, si vous essayez cet alias
/j /join $$1

Et si vous tapez "/j" (a la place de "/j #channel")... mIRC vous ignorera car vous n’avez pas inclus de nom de channel. Sinon, il marche de même qui $1 - il contient le premier mot. $$2 contiendras le deuxième mot...

$? Celui là est pas mal !
Un alias avec cette chaîne en lui peut-être démarre sans spécifier de paramètres. mIRC affichera une boite de dialogue, dans laquelle du texte peut-être entre. Exemples :
/j /join $?"
/bisou /me embrasse $? de toutes ses forces

$?="text" Une autre version de $?. mIRC affichera la boite de dialogue mais demandera un type spécial d’information. Essayez :
/j /join $?="Sur quel channel aller mon maître?"
/bisou /me embrasse $?="Qui embrasser?" de toutes ses forces

$! Cette chaîne est utilisée seulement avec $?. Si vous venez d’utiliser $? juste avant dans un alias, vois pouvez utiliser $! Pour rappeler cette chaîne. Par exemple :
/j /join $?=" Sur quel channel aller mon maître?" | /say J’aime le channel $!
/ami /say $? Est mon copain | /say j’aime beaucoup $!

#$1 -et- #$$1 -et- #$? Ce sont des versions spéciales des $1, $$1 et $?. Pour être utilisées avec des noms de channels, elles ajoutent un # au début du paramètre. Essayez :
/j /join #$1"

il va être possible de faire "/j test" a la place de "/join #test"

essayez aussi :
/j /join #$?=" Sur quel channel aller mon maître (sans #)"

7-1-3 identificateur.

Un identificateur est un type spécial de chaîne. Dont le contenu est toujours défini par la façon dont l’alias, le popup ou un remote (soyez un peu patient) est appelé, les identificateurs retournent toujours une information prédéfini.

# Celui ci est le plus important, il contient toujours le nom du channel dans lequel l’alias est exécuté. C’est important car beaucoup de commandes telles /mode requièrent que vous spécifiiez le nom du channel. exemple :
/op /mode # +o $1

tapez "/op Laure", et Laure deviendra op sur le channel courant.

$me cet identificateur contient toujours votre nick. Vous pouvez l’utiliser dans toutes sortes de situation, par exemple :
/joli /me pense que $me est un joli nick !
/offre /me offre mIRC version 5.31, faites "/ctcp $me xdcc send #1" pour le recevoir.
/away /me est parti ( $1- ) | /away $1- | /say Les messages pour $me seront stockes.

Ou donnes un alias :
/nick /say préfère $1 à $me | /nick $1

essayez et changez votre nick alors par "/nick <nouveaunick>"

$read [-nl#] <fichier.txt> cet identificateur est marrant. Il choisit une ligne au hasard dans le fichier et insère cette ligne dans l’alias. Cette ligne peut contenir du texte, et, aussi, des commandes ! De plus $!read qui est la même que $read sauf qu’il n’est pas évalué la première fois qu’il est inséré dans les routines d’alias. Ceci est pratique si vous avez besoin d’évaluer le $read a chaques fois. Le paramètre -n évite l’évaluation de la ligne, il fait en sorte que la ligne soit traitée comme du texte ! Par exemple :
/rigolo /say $read c:\mirc\rigolo.txt
/kick /kick # $1 $read c:\mirc\kicksrigolo.txt
/débile /say $read -l5 debile.txt

$readini [-n] <fichierini> <section> <item> Similaire a $read cet identificateur lis des items d’un fichierini. Il est utilisé avec la commande /writeini. Les deux utilisent les routines standard de windows pour écrire et lire dans les fichiers ini. On pense que les commandes $readini et /writeini vont ouvrir de nouvelles possibilités pour écrire vos propres actions automatiques sur IRC. Le paramètre -n évite l’évaluation de la ligne.

$url Cet identificateur contient la page que votre navigateur WWW Netscape vous montre actuellement. Exemples :
/montre /say He, j’ai trouve une super page : $url
/mu /me trouve cette URL géniale : $url

$ip Votre adresse IP.
$server Le serveur que vous utilisez.
$active Le nom de la fenêtre active dans mIRC.
$time L’heure sur votre PC.
$away Vous dit si vous êtes marques comme away ou non.
$ticks Le nombre de ticks depuis que votre OS a été démarre.
$idle Le temps idle qui est retourne par les commandes CTCP userinfo et finger.
$online Le nombre de secondes passes depuis que vous êtes connectes.
$version La version de mIRC.
$ctime Le nombre de secondes depuis le 1 janvier 1970 a 00:00:00 GMT.
$asctime(N) La valeur de ctime en texte.
$day Le jour courant (Monday, Tuesday...) désole, mais c’est en anglais
$date La date (au format européen)(OUI ! mIRC n’a *pas* été fait aux USA) alternativement, utilisez $adate (américain), $fulldate ou $day.
$duration(secondes) Traduit les nombres tels 123456 en 1day 10hrs 17mins 36secs.
$logdir, $getdir, $wavedir, $mircdir, $mididir,$script et $scriptdir Le chemin de ces répertoires.
$mircini Le chemin complet de l’ini que vous utilisez.
$nopath(filename) retourne le nom de du fichier sans son répertoire.
$nofile(filename) le contraire de la commande précédente.
$exists(filename) Vérifie si le fichier existe. (retourne $true ou $false)
$findfile(dir,filename,N) cherche dans le répertoire la Nième occurrence du fichier spécifie.
$ddename Le nom du serveur DDE de mIRC.

$abs(N) Retourne la valeur absolue du nombre N.
$chr(N) Retourne le caractère ayant pour code ascii N.
$asc(C) Retourne le code ascii du caractère C.
$len(texte) Retourne la longueur du texte "texte".
$upper(texte) Retourne le texte en majuscules.
$lower(texte) Retourne le texte en minuscules.
$left(texte,N) Retourne les N caractères de gauche du texte.
$right(texte,N) Retourne les N caractères de droite du texte.
$mid(texte,S,N) Retourne les N caractères du texte en partant de S
$pos(chaîne,souschaîne) Retourne la position de souschaîne dans chaîne.
$replace(chaîne,souschaîne,replacement) Remplace souschaîne dans chaîne.
$remove(chaîne,souschaîne) Enlève souschaîne de chaîne.
$strip(texte) Enlève tous les gras, soulignes, inverse, et les couleurs d’un texte.
$count(string1,string2) Retourne le nombre d’occurrences de string2 dans string1.
$str(text,N) Retourne le texte répète N fois.
$rand(X,Y) Retourne un nombre au hasard entre X et Y.
$lines(file) Retourne le nombre de lignes du fichier spécifie.

$usermode Retourne votre mode courant.
$nick(#,N) Retourne le Nième nick sur le channel #.
$snick(#,N) Retourne le Nième nick sélectionné sur le channel #.
$opnick(#,N) Retourne le nick du Nième op sur le channel #.
$nopnick(#,N) Retourne le nick du Nième non-op sur le channel #.
$vnick(#,N) Retourne le nick du Nième voice sur le channel #.
$nvnick(#,N) Retourne le nick du Nième non-op et non-voice sur le channel #.
$comchan(Nick,N) Retourne les channels sur lesquels vous et nick sont.
$query(N|Nick) Retourne la Nième fenêtre de query que vous avez ouvert.
$chat(N) Retourne le nick de la Nième fenêtre de dcc chat que vous avez ouvert.
$fserv(N) Retourne le nick de la Nième fenêtre de serveur que vous avez ouvert.
$send(N) et $get(N) Retourne le nick de la Nième fenêtre de send/get.
$notify(N) Retourne le Nième nick dans la liste de notify en ce moment sur IRC.
$token(N,C,texte) Retourne le Nième token du texte séparé par le caractère C.(C est le code ascii du caractère)
$addtok(texte,token,C) Ajoute token a la fin du texte uniquement si il n’est pas déjà dans le texte.
$findtok(texte,token,C) Retourne la position du token dans le texte.
$gettok(texte,N,C) Retourne le Nième token dans le texte. (aussi N-, N-M)
$instok(texte,token,N,C) Insère un token a la Nième position dans le texte même si il existe.
$remtok(texte,token,C) Supprime 1 token du texte.
$reptok(texte,token,new,C) Remplace 1 token dans le texte.

Pour les identificateurs précédents, vous pouvez spécifier N=0 (zéro) pour récupérer le nombre total de nicks/channels/tokens etc. pour cet identificateur.

$snotify Retourne le nick couramment sélectionne dans la fenêtre notify.
$address Retourne l’adresse complète de l’utilisateur qui a lance la ligne remote.
$address(nick,type) Scanne la liste interne des adresses et retourne l’adresse d’un utilisateur s’il y en a de trouvé.
$maddress Retourne l’adresse qui corresponds à celle de l’utilisateur pour un événement ou un remote.
$maddress(address) Retourne une adresse correspondant à la liste des utilisateurs remote.
$level(address) Recherche une adresse correspondante dans la liste des utilisateurs remote et retourne son niveau.
$ulevel Retourne le niveau d’utilisateur qui correspond à un événement.
$clevel Retourne le niveau de commande qui correspond à un événement.
$dlevel Retourne le niveau d’utilisateur par défaut
$mask(address,type) Retourne l’adresse avec le masque spécifié.

Les identificateurs et les variables peuvent être places dans des crochets.
Exemple : /echo $right(3,$left($len(pouet),ToMooOrNotToMoo)) donne 'Moo'

Identificateur avec des paramètres de propriétés.

De nombreux identificateurs peuvent être utilises avec des paramètres spéciaux. Il est ainsi plus simple de se souvenir de leur syntaxe et aide beaucoup dans les scripts. Leur syntaxe est $identificateur(N,#,nick).propriété

$server(N|nick) Donne accès a la liste des serveurs dans File/Setup/IRC_Servers.
$server(N) pour l’adresse, .desc pour la description, .port pour le port, .group pour le groupe.
$ial(mask,N|nick) Donne aces a la liste d’adresse interne.
$ial(mask,N) pour l’adresse complète, .nick pour le nick, .user pour le nom d’utilisateur, .host pour l’hôte et .addr pour l’adresse.
$url(N) Donne aces a la liste des URL.
$url(N) pour l’adresse, .desc pour description, .group pour le préfixe
$chan(N|#) retourne de nombreux paramètres du channel sur leque vous êtes.
$chan(N|#) retourne le nom de channel, .topic, .mode, .key, .limit ...
$chat(N|nick) nick, .ip, .status (active, waiting, inactive)
$fserv(N|nick) nick, .ip, .status, .cd (répertoire courant)
$get(N|nick) nick, .ip, .status, .file, .size, .rcvd, .cps, .pc
$send(N|nick) nick, .ip, .status, .file, .size, .sent, .lra, .cps, .pc
$timer(N) Retourne les timers activés.
$timer(N) pour l’id, .com, .time, .reps, .delay, .type
$group(N|name) identificateur.
$group(N) donne le nom de groupe.
$group(N).status et $group(name) vous dit si le groupe est active ou pas.

Identificateurs définissables par l’utilisateur. (Section écrite a l’origine par Li0nheart)

Comme vous venez de le constater, mIRC a un grand nombre d’identificateurs intégrés que vous pouvez utiliser dans vos alias et remote. Il est aussi possible de créer ses propres identificateurs, et ils peuvent être configurer pour faire virtuellement tout ce que vous voulez ! Les identificateurs sont programmes dans la section alias et ils ressemblent comme deux gouttes d’eau à des alias, sauf qu’ils se teramoint par /return X. Vous pouvez faire retourner tout ce que vous voulez. Par exemple, la somme de deux nombres.

/somme {
   %temp = $1 + $2
   return %temp
}

Maintenant, il est possible d’utiliser l’identificateur $somme partout dans des alias, popups ou remote. Par exemple, dans un popup :
Add:/say la somme de 45 et 78 est $somme(45,78)

Ou l’alias Alias:
/add /say la somme de $1 et $2 est $somme($1,$2)
(par la même occasion, il ne sert a rien de faire une commande /somme... qui ne marche pas)

Tous les paramètres donnes a un identificateur sont sépares par des virgules. Vous pouvez utiliser toutes les instructions du type if/then/else dans les définitions identificateur. Vous pouvez par exemple vérifier que tous les paramètres sont la, et retourner une erreur dans le cas contraire. Par exemple, cette routine calcule quel pourcentage X par rapport à Y.

/pourcent {
  if ($1 == $null) || ($2 == $null) { return Erreur, pas assez de paramètres }
  if ($2 != 1) { %moitie = $2 / 2 } | else { %moitie  = 1 }
  %toto = $1 * 100
  %pourc = %toto / $2
  %reste = %toto % $2
  if (%pourc == 0) { goto return }
  elseif (%reste >= %moitie) { inc %pourc }
  :return
  return %pourc
}

la première ligne s’assure que tous les paramètres sont là, le reste est le calcul du pourcentage, ou un morceau est là pour s’assurer que le total fait 100%. L’identificateur devrait être appelé avec, par exemple, $pourc(56,100) qui retournerais 56%.

Les nombres ne sont pas la seule chose qu’un identificateur peut retourner. Il peut aussi retourner du texte, ou des combinaisons de texte et de nombres, par exemple, un format d’heure américain (7:52 pm) :

/atime {
  set %hr $token(1,58,$time)
  set %min $token(2,58,$time)
  if (%hr == 0) { set %hr 12 | set %sub am }
  elseif (%hr < 12) { set %sub am }
  elseif (%hr == 12) { set %sub pm }
  else { %hr = %hr - 12 | set %sub pm }
  return %hr $+ : $+ %min $+ %sub
}

Avec un peu d’imagination, vous pouvez faire des identificateurs pour tout ce que vous voulez. Par exemple, parler en verlan ou mettre en couleurs toutes les lettres. Amusez-vous bien !

 

7-2 Section sur les Popups.

Les popups sont les menus qui apparaissent quand on fait un click droit avec la souris (avec quoi d’autre peut-on faire un click droit ?). Si vous n’avez pas découvert cette fonctionnalité de mIRC, essayez là MAINTENANT ! Quelques popups sont prédéfinis dans le fichier popups.ini distribue avec mIRC. Mais, ils sont paramétrables depuis le menu Tools/Popup/.

L’éditeur de mIRC va démarrer avec la section popup ouverte. Ignorez encore un peu les sections Remote, Users et Variables. L’éditeur de mIRC est utilise comme une interface commune a toutes les sections programmables de mIRC. Avec la section popup, le menu File vous aidera a charger, décharger et sauver les fichiers. Le menu Edit offre le copier/coller et des routines de recherche. Le menu Popup montre ce que donnera le fichier actuel en menu.

Le menu View vous permet de choisir quel popup vous voulez éditer. Il y a différents menus popup pour différents types de fenêtres de mIRC. Dans un channel, il n’y a pas le même menu que dans une query (conversation privée). Utilisez le menu View pour éditer un autre popup. Il y a un menu programmable pour les fenêtres de statuts, channel, query/chat et nick-list, et un spécial appelé menubar pour le menu programmable.

Si votre copie de mIRC ne semble pas être équipée avec des popups (la section Tools/Popups/ semble vide), il est presque certain que les fichiers ini n’ont pas été copies dans le répertoire de mIRC. ceci peut être facilement règle dans le menu File/Load/ de l’éditeur de popup.

Les commandes popup marchent presque exactement comme les alias. Toutes les chaînes de la section 7-1 sont autorisées dans les popups (et leur bonne utilisation est vitale). Si vous n’avez pas lu la section sur les alias (7-1), alors que vous auriez du commencer par ca, lisez la maintenant ! Vous devrez la connaître sur le bout des doigts avant de continuer la lecture.

Aussi : Lisez l’aide de mIRC sur les popups, et étudiez les exemples inclus dans mIRC dans Tools/Popups. Plus vous jouerez avec les popups, plus votre emprise sur mIRC sera grande.

Exemple : /join

Supposons que vous avez un channel préféré appelé #test.

A la place de taper "/join #test", ne serait-il pas plus pratique d’avoir juste a faire un click droit, et de sélectionner dans un menu pour vous y rendre automatiquement ?

Le popup suivant fait ca. Saisissez-le dans Tools/Popups, en vous assurant que "Status Window" est sélectionné en haut. (Pas Query/Chat window, Channel Names list ou Menu Bar !)

On va sur le channel Test:/join #test

Maintenant, faites un click droit sur votre fenêtre de statut et sélectionnez "On va sur le channel Test". mIRC va faire exactement ca !

Exemple : /away

Voici un exemple d’utilisation de "away" et "back" avec des popups... vous tapez la raison pour laquelle vous devez aller faire un tour, et c’est envoyé a tous les channels sur lesquels vous êtes présent. (C’est ce que fait la commande /ame, elle envoie un /me sur tous les channels sur lesquels vous êtes.)

Set Away...:/ame est AWAY ( $?="une chtite raison" ) | /away essayez plus tard ( $! ) !!
Set Back:/ame est REVENU | /away

Menus Hiérarchiques.

Si vous continuez a ajouter quelques popups comme ca, votre écran va très vite être entièrement rempli a chaque fois que vous faites un click droit. Alors, vous pouvez organiser vos menus en une hiérarchie. Essayez les commandes suivantes :
Dire des trucs
.Salut:/say Salut les amis
.Au revoir:/say Au revoir les amis
.Embrasser:/me Embrasse $? très fort

ici, nous avons spécifies que les trois dernières commandes doivent être _sous_ "Dire des trucs" par : 1) les mettre après "Dire des trucs", dans l’ordre ou nous voulons qu’ils apparaissent, et 2) les faire précéder "." <- un point.

Quand vous faites un click droit, vous voyez un sous menu "Dire des trucs" et quand voue le sélectionnez, vous voyez "Salut", "Au revoir" et "Embrasser". Sélectionnez les pour obtenir l’action voulue.

Si vous voulez réellement faire complique, vous pouvez faire plusieurs niveaux. Par exemple, essayez : Commentaires a propos des gens :
.Compliments
..Sympa aujourd’hui/say il est pas sympa $? Aujourd’hui !
..D’une grande aide:/say Merci pour ton aide $?
..Ami:/say Je suis content que $? soit mon ami
.Insultes
..Couillon:/say Fous moi la paix $1 !
..Idiot:/me se demande $? Est-il si bête des fois ?
..Ennemi/say Je suis fier d’avoir $? Comme ennemi !

Et ainsi de suite ! Rangez les proprement, en utilisant les points. Si la manière dont ce qui précède est organise vous laisse froid, essayez-le, copiez le texte ci dessus dans la section Tools/Popups. C’est plus facile a comprendre quand on le voit marcher !

Tous les menus popup peuvent être mis avec une touche de fonction aussi ! c’est pratique pour les popups très utilises... Assurez-vous que vous utilisez une syntaxe correcte et mettez les [i.e. les touches de remplacement] dans la section alias. Referez-vous a la section 7-1.

Dans la section Tools/Popups vous trouverez aussi un outil pour programmer la barre de menu. Testez le et ajoutez y ces quelques lignes :
Away
.On s’en va...:/ame est plus la ( $?="une chtite raison" ) | /away chuis partit a $time ( $+ $! $+ ) | /timer22 5 600 /describe # est plus là ( $! )
.On reviens:/ame est de retours, c’est partit ! | /away | /timer22 off
Méchant
.Truite !:/describe # Tape $1 de toutes ses forces avec une truite surgelée !
.Batte de base-ball:/describe # tape $1 sur la tête avec une batte de base-ball !

 

7-3 La section Remote.

La section remote peut être accédée depuis Tools/Remote/... . c’est clairement la partie la plus avancée de mIRC, vous pouvez faire des trucs avec la section remote de mIRC qui requerraient normalement des scripts avances ou des bot spéciaux...

Des choses comme : offrir des fichiers (une liste XDCC), réponses automatiques à certains channels, ou messages privés, paramètrer les réponses CTCP, mettre en place différents niveaux d’utilisateurs pour vos amis, ... presque tout ce qui se passe sur IRC peut avoir une réponse automatique, et votre réponse peut utiliser presque toutes les commandes de mIRC.

La syntaxe remote peut être un peu compliquée a certains moments, mais c’est une extension simple de celle utilisée précédemment dans les alias et les popups. Si vous les avez bien compris, chaînes incluse, alors, continuez. Sinon, revenez en arrière et lisez (ou relisez) les sections 7-1 et 7-2. Les informations qui y sont présentées DOIVENT ETRE CONNUES avant d’essayer les trucs remote.

C’est aussi important de se rappeler pourquoi remote est appelé remote. Cette section est censée répondre aux choses faites par d’autres utilisateurs que vous-même. En fait, il réagît a ce qui arrive sur IRC autours de vous et autorise les autres utilisateurs a contrôler à distance votre session de mIRC. Tout ca, en accord avec ce que vous mettez dans vos remotes. Beaucoup de commandes ne peuvent être tapées par vous, vous aurez besoin d’autres utilisateurs pour les tester...

La section remote fonctionne de façon rapprochée avec la section Users. Dans la section remote, vous définissez les scripts pour les gens de la section Users. Chaque utilisateur de votre utilisateur peut se voir assigné un (ou plusieurs) niveau d’utilisateur. Ces niveaux indiquent à quels services les utilisateurs auront accès ou ce qu’il se passe quand ils font des choses... dans la section remote, vous pouvez définir quelle façon a mIRC de répondre aux événements de l’IRC, aux CTCP et aux raw. Par défaut, la liste des utilisateurs, les variables et les scripts sont sauvegardes dans le fichier remote.ini.

7-3-1 Utilisateurs Remote.

Dans mIRC, sélectionnez Tools/Remote pour ouvrir l’éditeur de mIRC. Puis, sélectionnez la section utilisateurs. C’est dans cet endroit que vous réglez les niveaux d’utilisateurs. Vous pouvez assigner un certain niveau a vos amis, et un autre niveau a vos "ennemis", (vous pouvez créer une "shit list"), et plusieurs niveaux entre.

Pourquoi est-ce important ? Disons que vous avez écris un événement Remote fait pour kicker tous ceux qui disent le mot "débile" dans votre channel (si ce mot ne vous plaît pas, remplacez le par le mot que vous voulez). On vous expliquera comment faire ca plus tard (dans la section 7-3-3), mais pour l’instant, c’est juste l’idée qui compte. C’est raisonnable, non ?

OK, mais peut-être que SEULS les utilisateurs normaux doivent être kickés s’ils disent "débile". Vous voudriez que certains de vos amis soient seulement avertis et vous voudriez que ce soit ignore d’autres encore, vos plus proches amis... Et si vous ne vous souciez pas d’une personne, vous voudriez peut être lui faire un kick ET un ban pour avoir dit "débile" !

Pour faire ce genre de choses (donner différentes réponses à différentes personnes), vous avez besoin de mettre en place une liste d’utilisateurs. Pour chaque utilisateur, vous spécifierez le nick ou l’adresse et le niveau que vous avez décidé de lui assigner.

Voici un exemple de liste :
1:nick1
1:nick2
2:nick3!account3@machine.subnet.net
2:*!account4@machine.subnet.com
3:*!*@machine.subnet.edu
4:*!*@*subnet.edu
5:*!account@*.subnet.edu
10:votrenick!votrecompte@votremachine.fr

Les numéros que vous choisissez pour les niveaux ne reposent que sur vous. Vous pouvez décider ce que chaque tranche d’utilisateurs peut faire et ne pas faire, comme vous le verrez dans les deux sections qui suivent. Par défaut, mIRC assigne à tous ceux qui ne sont pas spécifiés le niveau 1. (peut être réglé dans : Tools/Remote/Options/Défaut_user_level).

Si vous spécifiez différents niveaux aux différents utilisateurs, vous aurez aussi a créer des événements pour gérer différents niveaux de réactions... mais on va vous expliquer tout ca très bientôt...

Comme vous pouvez le voir, soit un nick, soit une adresse est admise, les jokers sont aussi permis. Il y a quelques cas ou vous devriez spécifier les utilisateurs deux fois, une fois pour le nick, l’autre pour son adresse. Ces cas (avec OP, DEOP, SERVEROP ... et NOTIFY) sont expliqués dans la section 7-3-3

Si vous ne voulez pas tout taper a la main... vous pouvez aussi utiliser la boite de dialogue de mIRC, ou les commande /auser, /guser et /ruser.

/auser /auser {niveau} {nick ou addresse}
Auser (Add user) Ajoute le soit un nick soit une adresse a la liste au niveau que vous spécifiez. Il ne fait pas attention si l’adresse est valide ou non. Le nick ou l’adresse est ajoute tel que vous l’avez tape.

/guser /guser {niveau} {nick} [type]
Guser (Get user) ajoute un nick a la liste des utilisateurs avec son adresse. Pour ce faire, mIRC fait un /whois sur le nick que vous spécifiez et ajoute l’adresse retournée au niveau spécifié. Ceci signifie que le nick spécifié doit être sur IRC pour pouvoir l’ajouter avec guser. En spécifiant le type, mIRC peut l’ajouter avec différents jokers dans l’adresse. ce type est similaire au type utilise avec la commande /ban. Le type va de 0 à 9 (voir ci dessous).

/ruser /ruser {nick ou nick! ou adresse ou nick [type]}
Ruser (Remove user) supprime un nick ou une adresse de la liste des utilisateurs. Vous devez savoir comment un nick ou une adresse est spécifiée dans la liste des utilisateurs. Si quelqu’un est spécifié comme : nick!toto@pouet.fr vous pouvez aussi faire "/ruser nick!". Remarquez le "!" qui demande a mIRC de supprimer la ligne entière. /ruser a été améliorée pour marcher comme les commandes /ban et /guser. Si vous ne spécifiez pas de type, alors, elle marche comme d’habitude et supprime le nick spécifié de la liste. Si vous spécifiez un type, il cherche l’adresse de l’utilisateur et l’enlève de la liste.

Note : L’utilisation de différents types d’adresses vous permet de spécifier une personne ou un groupe de personnes utilisant plus ou moins de jokers. Je vous montre les différents résultats...

Si aucun type n’est spécifié, le type 6 est celui par défaut.
type 0 : *!vonck@Wit399402.student.utwente.nl
type 1 : *!*vonck@Wit399402.student.utwente.nl
type 2 : *!*@Wit399402.student.utwente.nl
type 3 : *!*vonck@*.student.utwente.nl
type 4 : *!*@*.student.utwente.nl
type 5 : Kreet!vonck@Wit399402.student.utwente.nl
type 6 : Kreet!*vonck@Wit399402.student.utwente.nl
type 7 : Kreet!*@Wit399402.student.utwente.nl
type 8 : Kreet!*vonck@*.student.utwente.nl
type 9 : Kreet!*@*.student.utwente.nl

! Comme dernière remarque, le niveau d’utilisateur peut aussi être un mot :
ami:*!*@pouet.fr

Vous pouvez utiliser cela avec des événements tels : ON ami:JOIN:#mirc:/mode $chan +o $nick

mIRC garde en mémoire une liste des personnes présentes sur les channels sur lesquels vous êtes. Cette liste est utilisée pour accélérer largement les commandes telles /ban, /guser et /ruser. Ces commandes font normalement un /whois sur la personne sur laquelle vous faites la commande. La liste interne garde en mémoire des informations telles nick!utilisateur@adresse pour tous les utilisateurs présents sur les mêmes channels que vous. Quand vous utilisez les commandes /guser, /ruser, /ban, /finger, /ignore ou /dns, la liste interne est recherchée tout d’abord pour trouver l’adresse du nick. Si aucune entrée correspondante n’est trouvée, un /whois normal est fait. Cela va grandement accélérer vos bans... spécialement quand vous laguez... Le 'Internal Address list' est active dans 'Tools/Remote/Options'. Assurez-vous qu’il est active !

 

7-3-2 Scripts Remote - Commandes CTCP.

Dans mIRC, sélectionnez Tools/Remote/ pour ouvrir l’éditeur de mIRC. là, vous pouvez régler les réactions de mIRC a ce qui ce passe sur IRC. Deux types de réponses distinctes sont possibles, réactions aux commandes CTCP et réactions aux événements. Dans ce paragraphe, on parlera des commandes CTCP.

 

Introduction

Les commandes Remote se rapportent a un type spécifique de commandes : les CTCP. CTCP signifie Client To Client Protocol, c'est à dire protocole entre clients. Les commandes CTCP Remote que vous pouvez définir dans mIRC feront une seule chose et une seule - répondre aux commandes CTCP envoyées par les autres utilisateurs de la façon que vous voulez.

Il y a beaucoup de commandes CTCP si on s’en tient aux RFC sur IRC. Les plus usuelles sont version, ping, time, userinfo, clientinfo et finger. Tous les clients IRC répondront de façons standards si l’une de ces commandes leur sont envoyées. Ces commandes CTCP sont envoyées dans le format :
/ctcp {nick} {commande avec paramètre(s) si y’en a}

Par exemple le ping simple. L’autre utilisateur tapera :
/ctcp {votrenick} ping

vous pouvez aussi vous envoyer vous même un ping ! Essayez-le ! Tapez "/ctcp {votrenick} ping".

Dans des conditions normales d’utilisation, mIRC enverra une réponse standard [ctcp sonnick pong]. Mais avec les Remotes CTCP, vous pouvez redéfinir la façon dont le programme réponds au ping. Il peut maintenant faire n’importe quoi quand il reçoit un ping. Bien sur, il peut aussi répondre de façon normale. Ou non... Ca ne dépends que de vous. Il y a UNE exception a ca... vous ne pouvez pas cacher la réponse a version de mIRC... On aime bien la pub, voyez vous...

Vous pouvez aussi créer de nouvelles commandes CTCP, et des réponses a elles. C’est comme cela que les offres (XDCC LIST et SEND) sont mises en œuvre.

Mais pour l’instant, reprenons notre exemple de ping.

Exemple : Réponse personnalisée a la commande ping.

Rendez-vous à Tools/Remote et jetez un coup d'œil au menu ‘View’ s’il y a un fichier appelé commands.ini ou ctcps.ini. S’il y en a un, sélectionnez-le et tapez dedans. Sinon, allez dans le menu fichier et sélectionnez ‘New’ pour créer un nouveau script. Assurez-vous que dans le menu "Listening", CTCP est sélectionné.

Maintenant, placez la commande suivant dans le fichier :
ctcp 1:ping:/notice $nick ping ? Hmmm ! ... pang pang pang !!

Maintenant, si quelqu’un vous ping, votre réponse sera "ping ? Hmmm ! ... pang pang pang !!" dans une notice envoyée a la personne qui vous ping, juste avant la réponse normale qui devrais être ‘pong’.

Testez-le en donnant la commande "/ctcp {votrenick} ping". Si ca ne marche pas, assurez-vous que mIRC écoute les commandes CTCP remote. Activez-le en tapant la commande "/remote on" et/ou "ctcps on".

Si vous ne voulez *pas* que mIRC donne la bonne réponse en plus de la votre, vous devez utiliser la commande /halt. Comme cela :
ctcp 1:ping:/notice $nick ping ? Hmmm ! ... pang pang pang !! | /halt

Ceci fera la même chose qu’avant, mais il ne donnera pas la réponse attendue.

Testez le pour voir la différence !

En supposant que vous avez essayé les deux réponses à ping, et que vous les avez fait marcher, continuons sur la syntaxe utilisée un peu. Et alors, nous reviendrons sur l’exemple précédent et _pourquoi_ il le fait.

Syntaxe des commandes remote CTCP.

Les commandes remote, a part quelques cas spéciaux, sont faites de 3 morceaux. Chaque morceau est séparé par un ":". La syntaxe générale ressemble à :

ctcp {niveau_de_la_commande}:{commande_ctcp}:{commande(s)_a_être_executees avec paramètre(s)}

Regardons chaque portion séparément :

ctcp Celle la dit a mIRC que une définition de CTCP (commande remote) suit.

{niveau_de_la_commande} Cette commande répondra aux utilisateurs de niveau égal au niveau de commande et aux utilisateurs de niveaux supérieurs, à moins qu’une commande soit créée pour eux.

{commande_ctcp} la commande CTCP peut être une standard, ou une de votre création (comme OPME, MEURT, PART, XDCC LIST,...)

{commande(s)_a_être_executees avec paramètre(s)} dans cette partie, vous définissez les commandes qui seront exécutées. Leur format et l’utilisation de commandes multiples sont la même que dans les alias ou les popups. Les chaînes de cette section sont remplies par mIRC automatiquement. Vous avez juste a vous assurer que vos chaînes sont définies... i.e. ont un sens utilisée dans les commandes remote... (par exemple, $chan n’est pas toujours définie dans les commandes remote !).

Rejetons un coup d'œil sur notre exemple de ping et essayons de le décortiquer.

ctcp 1:ping:/notice $nick ping ? Hmmm ! ... pang pang pang !!

Le préfixe ctcp informe mIRC de la commande qui suit. Dans le même script, aussi alias, événements et raw peuvent être utilise. Mais on y reviendra plus tard.

1 est le niveau de commande. Tous les utilisateurs ayant un niveau supérieur ou égal a 1 peuvent exécuter ou utiliser cette commande.

Ping est la commande CTCP a laquelle cette remote va réagir.

La commande exécutée est un /notice. Dans ce cas, le notice envoie a $nick avec comme ligne "ping ? Hmmm ! ... pang pang pang !!"... $nick est un identificateur qui contient le nick de la personne qui a fait la commande CTCP... dans ce cas, il vous a pingé. (On va vous en dire plus sur les identificateur très bientôt).

Pour résumer, l’effet de la commande "/ctcp <nick> ping" est un "/notice $nick ping ? Hmmm ! ... pang pang pang !!" qui est exécutée des que la commande CTCP ping est reçue.

Vous pouvez aussi utiliser des commandes multiples, en utilisant le "|", comme dans les alias et les popups. De cette façon, une simple commande remote peut activer de multiples commandes. L’utilisation du | est très importante et elle sera expliquée très bientôt. Assemblez juste commandes remote avec un |.

Différentes réactions suivants les niveaux d’utilisateurs.

Vous pouvez régler finement les réactions remote aux commandes en leur assignant des niveaux différents.

mIRC répondra toujours a un utilisateur avec la réponse ayant le plus haut niveau en correspondance avec la commande il/elle a donne... analysons ces quelques exemples :
ctcp 1:ping:/notice $nick ping ? Hmmm ! ... pang pang pang !! T’est mort, j’te réponds pas | /halt
ctcp 2 :ping:/notice $nick ping ? Hmmm ! ... pang pang !! T’est encore en vie !!
ctcp 3:ping:/notice $nick ping ? pang !! Hmmm... Raté !
ctcp 6:ping:/notice $nick ping ? Hmmm... vas y ping moi autant que tu veux...

Un utilisateur de niveau 1 n’aura pas de réponse ping, mais un joli "ping ? Hmmm ! ... pang pang pang !! T’est mort, j’te réponds pas"

un utilisateur de niveau 2 survivra difficilement a un /ctcp <votrenick> ping :o) et il verra "ping ? Hmmm ! ... pang pang !! T’est encore en vie !!"

Un 3 recevra "ping ? pang !! Hmmm... Raté !"

Les 4 et 5 n’ont pas de réponses prédéfinis, mais la plus haute réponse étant 3, ils recevront donc la réponse de niveau 3.

Les 6 et plus recevront un ping ? Hmmm... vas y ping moi autant que tu veux...

Ce nivellement peut être fait avec toutes les commandes remote (et les événements)...

Vous avez bien tout compris ? oui, non, alors, relisez les sections précédentes !!

Identificateurs spéciaux pour les commandes remotes.

$nick, $address, $site, $level etc. sont des identificateur spécialement créés pour être utilises dans les ligne remotes. Toutes les chaînes usuelles (7-1-2) peuvent être utilisées aussi. Vous pouvez les utiliser ou vous voulez dans mes lignes exécutées par les commandes remote...

$nick Le nick de la personne qui a envoyé la commande ou a crée l’événement.
$address L’adresse complète de $nick.
$site Le site de $nick
$wildsite Retourne l’adresse sous la forme : *!*@hote.domaine
$level Représente le niveau de l’utilisateur.

Note : le $chan n’est PAS TOUJOURS DEFINI dans les commandes remote... $chan contient normalement le channel depuis lequel la commande a été donnée. Or, les commandes CTCP n’ont pas être données depuis un channel... ou la personne qui envoie la commande peut être sur plus de channels... vous voyez le problème ?? Peu t être $active fera ce que vous voulez... ou $target...

Exemple : on utilise le paramètre $adress prédéfini...

ctcp 1:address:/notice $nick Ton adresse est : $address

si un utilisateur lançais un "/ctcp {votrenick} adress" vous répondriez avec une notice disant : "Ton adresse est {son adresse}".

Exemple : Oper des amis a la demande.

Si les bases de comment tout ca marche ne sont pas encore claires, ne vous inquiétez pas. Essayez de continuer en regardant bien les exemples pour voir s’il n’y a pas un déclic dans votre tête. Relisez les parties précédentes si nécessaire. Mais n’essayez pas d’écrire vos propres commandes remote avant que le déclic se fasse.

ctcp 1:opmoi:/notice $nick Désole, mais vous ne serez pas op sur $2... niveau trop bas...
ctcp 5:opmoi:/mode $2 +o $nick

Si un ami de niveau 5 envoie un ‘/ctcp {votrenick} opmoi {#channel}’, cette commande opera dans le channel spécifié. Les utilisateurs de niveau 1 ne seront pas opés quoi qu’ils fassent.

Ici, le paramètre $2 est utilise et il se réfère au deuxième mot tape par l’utilisateur après le CTCP. Dans ce cas, le channel ($1 serais opmoi).

Le $2- peut être utilise pour donner de longues lignes données par un utilisateur remote dans une commande CTCP.
ctcp 5:return:/notice $nick $2-

Cette commande par exemple retournera toute phrase envoyée par l’utilisateur. La ligne entière donnée comme paramètres sera stockée dans le paramètre $2-. Celui ci sera renvoyé a l’envoyeur en notice.

Un "/ctcp {votrenick} return bla-bla-bla et pouet truc pouet" fera réagir mIRC en renvoyant la commande "/notice copain bla-bla-bla et pouet truc pouet".

Commandes multiples.

Une commande remote CTCP peut aussi déclencher de multiples commandes...

ctcp 5:opmoi:/mode $2 +o $nick | /notice $nick Tu est op sur $2

Alors, votre ami de niveau 5 envoie la commande :
'/ctcp {votrenick} opmoi #channel'

Que ce passe-t-il ??

En effet, deux commandes sont déclenchées par le CTCP remote opmoi...
"/mode #channel +o copain"
"/notice copain Tu est op sur #channel"

une autre commande CTCP qui déclenche de multiples commandes :
ctcp 10:part:/part $2 | /notice $nick J’ai quitte le channel $2

et si un utilisateur de niveau 10 vous envoie :
'/ctcp {votrenick} part #channel'

Cette commande vous fait partir d’un channel sur une simple requête. Et réponds a celui qui vous a fait partir que vous l’avez fait.

$2 contient le nom du channel qu’il vous est demande de quitter.
$nick est le nick de celui qui vous demande de partir.

Autres exemples :

ctcp 1:ping:/notice $nick Arrête de me pinger.
...Répondra par : "/notice {nick} Arrête de me pinger."

ctcp 5:time:/notice $nick L’heure d’acheter une montre.
...Répondra par : "/notice {nick} L’heure d’acheter une montre."

ctcp 10:quituest:/notice $nick Je suis celui que je dis être | /notice $nick Et je dis que je suis TOI !
...Répondra par : "/notice {nick} Je suis celui que je dis être" suivi de
"/notice {nick} Et je dis que je suis TOI !"

7-3-3 Scripts remote - Evénements.

Dans mIRC sélectionnez Tools/Remote pour ouvrir l'éditeur de mIRC, puis sélectionnez le menu ‘View’ et sélectionnez le script appelé "événement.ini". Si aucun script d'événements n’est disponible, chargez un autre script ou créez en un nouveau avec File/New/. Le nouveau script est appelé script1.ini par défaut.

Comme vous l’avez vu, les CTCP remotes ne s’occupent que des commandes CTCP. Les événements remote s’occupent de tout le reste... Si ça vous semble difficile, ne vous inquiétez pas. Comme on vous l’a déjà dit, ces leçons se cumulent. Si vous avez compris les commandes remote, les événements remote seront du gâteau. Vous avez déjà fait le plus dur.

Attention : En général, mIRC peut être sensible a une mauvaise programmation. Une syntaxe incorrecte peut causer une Faute de Protection Générale, alors, attention ! Si vous rencontrez des problèmes d’instabilité avec mIRC, vérifiez cette partie là en premier !

Syntaxe des événements remote.

Les événements remote sont : TEXT, INPUT, JOIN, PART, KICK, OP, DEOP, BAN, UNBAN, INVITE, NICK, QUIT, TOPIC, SERVEROP, NOTIFY, UNOTIFY, MODE, USERMODE, SERVERMODE et SMODE. A part l’événement TEXT, les événements ACTION, NOTICE, NOTICE, CHAT, SERV et WALLOPS sont disponibles pour des événements plus spécifiques. Les événements FILESENT, FILERCVD, NOSOUND, CHATOPEN, CHATCLOSE, SERVOPEN et SERVCLOSE sont nouveaux. (J’en ai manque un ?) CONNECT, DISCONNECT, MIDIEND,....

Je vais vous expliquer très bientôt ce qu’ils font exactement et comment les utiliser. D’abord, quelques exemples rapides et une explication de la syntaxe utilisée. La syntaxe est quasiment la même que celle des commandes remote. Voici un exemple réagissant à un TEXT :
on 1:TEXT:salut:#:/msg $nick Salut !

Rendez-vous à Tools/Remote et regardez s’il y a déjà un script appelé ‘événements.ini’. Sinon, allez dans le menu File/New pour créer un nouveau script. Vérifiez que dans le menu ‘Listening’ l’item événements est sélectionné. (Quand les items de ‘Listening’ ne sont pas coches, par exemple, les événements que vous créez sont ignores par mIRC). Maintenant, placez les exemples ci dessous dans un fichier.

Cet événement remote est déclenché par le mot salut quand il est trouve sur un channel. La réponse de mIRC est d’envoyer un message prive à la personne qui l’a écrit et de dire "Salut !".

Voici un autre exemple, ce coup ci, utilisant JOIN :
On 1:JOIN:#:/notice $nick Bienvenu sur $chan

Celui là est déclenché quand un utilisateur arrive sur un des channels sur lesquels vous êtes. Une notice leur est envoyée disant "Bienvenu sur {channel}"

Si vous êtes arrivés ici et que vous avez compris les commandes remote, ceci devrais vous sembler assez simple. Les événements remote ont 3, 4 ou 5 parties divisées par des ‘:’. Tous les événements remote ont 4 parties, sauf TEXT qui en a 6 et QUIT et NICK qui en ont seulement 3.

Tous les événements *sauf* TEXT, NOTICE, SNOTICE, ACTION, QUIT et NICK on le format suivant :

on Ce préfixe dit a mIRC qu’un événements va suivre.

{niveau}:{événements}:{ou}:{commandes avec paramètres}

{niveau} Cet événements affectera les utilisateur avec un niveau supérieur ou égal, a moins qu’un autre événements soit défini, comme pour les commandes remote.

{événements} Le nom de l’événements remote. JOIN, OP...

{ou} #,#channel. Ou est ce qu’on va écouter l’événements remote ? Soit # (tous les channels) ou sur des channels multiples tels 1:TEXT:salut*:#chat,#help,#mirc:/msg $nick Salut !

exception : non utilise par NICK et QUIT. Sautez cette partie.

{commandes avec paramètres} les commandes déclenchées. Tout comme dans les commandes remote sauf qu’il y a quelques paramètres différents.

... Et bien sur, les exceptions sont les événements TEXT, ACTION, NOTICE, SNOTICE, CHAT et SERV qui marchent comme ca :

on Ce préfixe dit a mIRC qu’un événements va suivre.

{niveau}:{événements}:{quel texte}:{ou}:{commandes avec paramètres}

{niveau} Cet événements affectera les utilisateur avec un niveau supérieur ou égal, a moins qu’un autre événements soit défini, comme pour les commandes remote.

{événements} Le nom de l’événements... évidemment, ca va être TEXT, ou similaire.

{quel texte} Spécifie le mot, ou la phrase a écouter. Tel "salut" dans les exemples précédents.

{ou} #,#channel. Ou est ce qu’on va écouter l’événements remote ? Soit # (tous les channels) ou sur des channels multiples tels "1:TEXT:salut*:#chat,#help,#mirc:/msg $nick Salut !". mais on peut aussi écouter les messages prives (?) ou les deux (*). TEXT ou ACTION n'écoutent pas les trucs dits en DCC chat ou serveur. Les NOTICE écoute les notices, comme CHAT écoute le texte dans les DCC Chat et SERV le texte dans les fenêtres de serveur de fichier DCC.

{commandes avec paramètres} Les commandes déclenchées. Tout comme dans les commandes remote sauf qu’il y a quelques paramètres différents.

Les événements

Voici quelques événements remote auxquels mIRC réponds...

L'événement TEXT

Survient quand le mot/phrase spécifiée sont trouves dans un channel ou un message prive. ACTION et NOTICE font de même...

Exemple :
on 1:TEXT:debile:#:/kick $chan $nick Pas de debilites !

On kickera l'utilisateur qui a dit "debile".

Exemple :
on 1:TEXT:debile:#test:/kick $chan $nick | /notice $nick Salut $nick , tu a dis debile, et ce n'est pas permis sur #test...

si le mot "debile" est ecris sur #test, celui qui le dis est kicke (si vous êtes 'op' sur #test) et envoye une notice : "Salut {nick}, tu a dis debile, et ce n'est pas permis sur #test...

Exemple :
on 5:TEXT:aide:?:/notice $nick J'aimerais bien t'aider mais je ne peut pas.

Si le mot "help" est trouve dans un message prive, il y aura une réponse automatique qui sera "J'aimerais bien t'aider mais je ne peut pas."

Vous pouvez mettre des jockers dans le texte auquel mIRC doit réagir :
* = n'importe quel texte.
=word = PLUS utilise !! (plus nécessaire).
word* = Si l'utilisateur commence une ligne par le mot.
*word = Si l'utilisateur teramoi une ligne par le mot.
*word* = Si l'utilisateur écris ce mot n'importe ou.
word = Si l'utilisateur écris la exactement même chose, l'événement est déclenché...

Exemple :
on 5:TEXT:aide:?:/notice $nick J'aimerais bien t'aider mais je ne peut pas.

Cet événement réagira à une demande d'aide seulement si une simple ligne contenant le mot 'aide' vous est envoyé en message prive... Exemple :
on 5:TEXT:Salut*:?:/notice $nick Salut a toi aussi

Cet événement réagira uniquement au messages prives qui commencent par "Salut".

Plus d'exemple :

on 1:TEXT:qui:*:/notice $nick Tu a le niveau : $level .
on 1:TEXT:*ok:/msg $nick ta ligne s'est teramoie par 'ok'

L'événement ACTION

Voir l'événements remote TEXT... il marche exactement de la même façon...

Cet événement réagira aux actions envoyés sur les channels sur lesquels vous êtes.

L'événement NOTICE

Voir l'événements remote TEXT... il marche exactement de la même façon...

Cet événement réagira aux notices qui vous sont envoyées.

L'événement CHAT

Survient quand le mot/phrase spécifié apparaît sur un DCC Chat.

L'événement SERV

Survient quand le mot/phrase spécifié est trouve dans la fenêtre du serveur de fichier.

Ces événements peuvent être utilisés pour écouter ce qui est dit dans les DCC chat et serveur de fichier DCC. Ils marchent tous les deux comme l'événement TEXT. Presque (?) logiquement, l'endroit ou arrive l'événement est manquant... une note importante est faite ici... vous NE POUVEZ PAS utiliser différents niveaux pour CHAT et SERV. Je sais que c'est dur, mais c'est impossible à cause de la gestion des connexions de client a client DCC, car dès qu'une connexion est établie, mIRC ne regarde pas le nick ou l'adresse de l'utilisateur. Désolé. Utilisez le niveau 1 pour les CHAT et SERV.

Exemple :
on 1:CHAT:blabla:/msg $me $nick a dit dans un chat DCC : $1-
on 1:SERV:get mirc:/echo server 6 Le zip de mIRC est envoye a : $nick .

Dans un événement SERV vous pouvez utiliser le $cd. cd signifie change directory : changer de repertoire.

on 1:SERV:dir:/msg = $+ $nick tu est dans : $cd

(envoyer le message a =nick envera le message a travers une connexion dcc.)

L'événement JOIN

Survient quand un utilisateur arrive sur un chan.

Exemple :
on 1:JOIN:#test:/notice $nick bienvenue sur #test !

Envoie une notice disant : "bienvenue sur #test !" a tout ceux qui arrivent sur #test.

Exemple :
on 25:JOIN:#cool:/kick $chan $nick Tu n'est pas le bienvenu ici !

Kick tous les utilisateurs de niveau 25 qui arrivent sur #cool avec le message : "Tu n'est pas le bienvenu ici !"

L'événement PART

Survient quand un utilisateur quitte un channel.

Exemple :
on 10:PART:#:/notice $nick He, merci de t'être arrete sur $chan !

Envoi une notice disant : "He, merci de t'être arrete sur {channel} !" à tous les utilisateurs de niveau 10 qui quittent les channels sur lesquels vous êtes.

Exemple :
on 90:PART:#:/msg $chan He ! $nick est parti !

Envoie un message sur le channel disant "He ! {nick} est parti !" si un utilisateur de niveau 90 quitte un channel sur lequel vous êtes.

L'événement CONNECT

Cet événement est déclenché a la fin d'un MOTD après s'être connecte au serveur. (Comme la section perform). Exemple :
on 1:CONNECT:/echo Tu est arrive a te connecter a $server !

L'événement DISCONNECT

Se déclenche quand vous perdez la connexion avec le serveur.
on 1:DISCONNECT:/echo Ooops... On a perdu la connection.

L'événement KICK

Survient quand un utilisateur est kické d'un channel.

Exemple :
on 100:KICK:#:/kick $chan $nick | /invite $knick $chan | /notice $nick Cette personne est mon ami !

Si une personne de niveau 100 est kickée d'un channel, vous kickez le kickeur du channel, et invitez la personne kickée sur le channel. Et envoyez "Cette personne est mon ami !" au kickeur.

NOTE : $knick est le paramètre du nick kické dans cet événement. De plus, remarquez que cet exemple montre un exemple de commandes multiples. Ca marche comme les commandes remote.

L'événement OP

Survient quand un utilisateur est oppé.

Note : cet événement requiert que les gens soient mentionnés par leur nick dans la liste des utilisateurs remote !

Exemple :
on 1:OP:#test:/notice $opnick Tu a été oppe par $nick . Bienvenue !

Si quelqu'un est oppé sur #test, il lui est envoyé une notice disant : Tu a été oppe par {oppeur}. Bienvenue !

NOTE : $opnick est le paramètre de la personne oppée dans cet événement.

L'événement DEOP

Survient quand un utilisateur est déoppé.

Note : cet événement requiert que les gens soient mentionnés par leur nick dans la liste des utilisateurs remote !

Exemple :
on 1:DEOP:#:/msg $opnick Pas de chance. Tu as été deoppe par $nick .

Si quelqu'un est déoppé, il lui est envoyé un message disant "Pas de chance. Tu as été deoppe par $nick"

NOTE : $opnick est le paramètre de la personne déoppée dans cet événement.

NOTE ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Lors de l'explication des événements OP, DEOP, SERVEROP tout comme NOTIFY, une remarque importante doit être faite. Les serveurs ne rapportent que les nick des personnes qui ont été oppées, déoppées, ou notifiées sur un channel ou sur IRC, les événements OP, DEOP, SERVEROP et NOTIFY, ne marchent proprement que si le nick des personne est mentionne dans la liste des utilisateurs remote. Spécifier l'adresse complète (nick!compte@machine.addresse.net) n'est pas assez... mIRC ne trouvera pas le nick depuis l'adresse complète. La seule exception est que cet événement dois affecter tout le monde, en lui donnant un niveau 1 ou ce que vous avez mis comme niveau par défaut. C'est le seul cas ou il n'est pas nécessaire d'avoir les utilisateurs avec leurs nick.
Si vous voulez donnez a vos amis un niveau pour vos événements OP, DEOP, SERVEROP ou NOTIFY, vous aurez a les mettre comme ca dans votre liste :
3:copaina
5:copainb
5:copainc
10:copainb!compteb@sa.machine.net
Cette construction peut vous donner une bonne raison de spécifier les gens dans votre liste avec leur adresse complète (avec des jockers) et avec leur nick. ceci peut garantir une bonne réaction aux OP, DEOP ou SERVEROP sans donner à ceux qui ont les nick de vos amis (ou ennemis) les même droits...
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

L'événement BAN

Avec l'événement BAN, vous pouvez facilement débanner vos amis.

L'événement UNBAN

Exemple :
on 5:BAN:#tree:/mode $chan -b $banmask

Le $banmask contiendra l'adresse bannie entière. Facile, non ? L'identificateur $bnick se réfère au nick de l'utilisateur qui a été banni. Il n'est pas toujours rempli car quelquefois, le nick n'est pas spécifié dans le banmask ! UNBAN marche comme BAN.

L'événement INVITE

Se produit quand vous êtes invites sur un channel.

Exemple :
on 5:INVITE:#test:/join $chan | /describe $chan merci de m'avoir invite !

si invite sur #test, on joins le channel et utilise une action pour dire "{moi} merci de m'avoir invite !"

L'événement NICK

Se produis quand un utilisateur change de nick.

Exemple :
on 1:NICK:/notice $newnick Je trouvais $nick mieux !

Envoie une notice a tous ceux qui changent de nick "Je trouvais {vieux nick} mieux !"

NOTE : $nick est le paramètre de l'ancien nick, et $newnick est pour (devinez ...) le nouveau nick.

NOTE : la portion {ou} n'est pas utilise avec NICK.

L'événement QUIT

Se produis quand un utilisateur quitte l'IRC.

Exemple :
on 2:QUIT:/notice $me C'est l'heure de s'amuser ! $nick viens de nous quitter!

Quand quelqu'un quitte l'IRC, vous envoie une notice : C'est l'heure de s'amuser ! {nick} viens de nous quitter!

NOTE : la portion {ou} n'est pas utilise avec NICK.

L'événement TOPIC

Se produis quand le topic d'un channel est change.

Exemple :
on 1:TOPIC:#:/msg $chan Yo, j'aime le nouveau topic !

quand le topic est change, envoie un message au channel disant : "Yo, j'aime le nouveau topic !"

L'événement SERVEROP

Se produit quand un serveur donne le statuts d'op a un utilisateur sur un channel.

Note : cet événement requiert que les gens soient mentionnés par leur nick dans la liste des utilisateurs remote !

Exemple :
on 1:SERVEROP:#mirc:/mode $chan -o $nick | /notice $opnick Desole, mais les serverop ne sont pas permis sur $chan

Quand une personne est oppée sur #mirc, un serveur, la personne oppée est déoppée et reçoit un message disant : "Desole, mais les serverop ne sont pas permis sur $chan". Les serverops arrivent après un netjoin quand deux serveurs ont splités et échangent les mode des channels.

L'événement NOTIFY

Cet événement se déclenche dès qu'une personne de votre liste de notify arrive sur IRC.

L'événement UNOTIFY

Note : cet événement requiert que les gens soient mentionnés par leur nick dans la liste des utilisateurs remote !

Vous pouvez utiliser ces événement pour faire des trucs tels /whois sur la liste des nick notify pour être sur que c'est la bonne personne... Rappelez vous que cet événement requiert que les gens soient mentionnés par leur nick dans la liste des utilisateurs remote (comme OP, DEOP, SERVEROP) ceci est du aux protocoles IRC qui ne donnent pas les adresses des personnes notifiées. Vous devez mettre le nick dans le File/Options/Notify_List et des que mIRC détecte cette personne sur IRC, cet événement est déclenché. L'événement UNOTIFY se déclenche lorsque mIRC détecte que nick est parti d'IRC.

Exemples :
on 1:NOTIFY:/notice $nick Si c'est vraiment toi, viens faire un tour sur #amoi !
on 1:UNOTIFY:/echo $active $nick a quitte l'IRC.
on 3:NOTIFY:/whois $nick
on 5:NOTIFY:/beep 10 50 | /whois $nick

L'événement MODE

L'événement SERVERMODE

Ces événements reagissent aux changements de mode du channel.

! L'événement MODE a change de syntaxe. Il ne permet plus de garder des modes. $1- est maintenant rempli avec les changements de mode. Utilisez cet événement pour réagir aux changement de mode.

Syntaxe et exemples :
on 1!:MODE:#name:/echo 6 Le mode de $chan a ete change par $nick !

(Faites gaffe aux boucles quand plusieurs personnes qui mettent des modes différents !)

L'événement USERMODE

Cet événement est déclenché quand vous changez le mode d'utilisateur.

Quand vous changez le mode de l'utilisateur (+I par exemple) cet événement le détectera et vous pourrez automatiquement y réagir.

L'événement VOICE

Ces événements réagissent aux personnes qui gagne le voice et le perde sur les channels.

L'événement DEVOICE

Exemples :
on 1:VOICE:/notice $nick Bienvenu dans le monde parlant !
on 1:DEVOICE:/notice $vnick He, $nick a le droit de parler ici !

L'événement SNOTICE

Cet événement écoute les notices de serveur. Les notices de serveur vous donnent toutes sortes d'informations qui arrivent sur le serveur IRC sur lequel vous êtes. Pour recevoir ces notices, vous avez a changer votre mode vers +s (/mode #nick +s). La majorité des gens n'ont pas besoin de ce mode... Il est principalement fait pour les IRCOps et les gestionnaires de serveurs. Avec cet événement, vous pouvez filtrez les notices du serveur qui vous sont envoyés pour éviter qu'elles soient affichées ou pour y réagir automatiquement. La syntaxe est presque comme celle de l'événement TEXT...
1:SNOTICE:servers_text:/echo 6 status Le serveur vous a dis : $1-

L'événement FILESENT

Cet événement réagira a tous les envois DCC qui on réussit. Vous pouvez l'utiliser pour vous en informer ou pour envoyer un message a celui qui a pris le fichier...
on 1:FILESENT:*.txt,*.ini:/echo Envoi $filename a $nick ( $+ $address $+ )
on 1:FILESENT:mirc50s.exe:/notice $nick Amuse-toi bien avec la version 16 bits de mIRC.
on 1:FILESENT:mirc50t.exe:/notice $nick Amuse-toi bien avec la version 32 bits de mIRC.

L'événement FILERCVD

Cet événement réagira a toutes les arrivées de fichiers réussis par DCC. Il se déclenchera au moment ou le fichier est intégralement arrive sur votre disque. Vous pouvez vous en servir pour vous envoyer ou pour envoyer à l'envoyeur un message, ou démarrer l'application qui correspond a ce fichier...
on 1:FILERCVD:*.txt,*.ini:/run notepad.exe $filename
on 1:FILERCVD:*.wav:/wavplay $filename
on 1:FILERCVD:*.gif:/run c:\windows\wingif\wingif.exe $filename
on 1:FILERCVD:*.jpg:/run c:\windows\lview\lviewp19.exe $filename
on 1:FILERCVD:*.mid,*.voc:/run wplany.exe $filename
on 1:FILERCVD:*.mp3:/run winamp.exe $filename
on 1:FILERCVD:*.*:/notice $nick Merci pour le fichier !

L'événement SENDFAIL

L'événement GETFAIL

Ces événements se déclenchent quand un transfert DCC échoué a cause d'une rupture de connection ou d'un time-out.

Exemples :
on 1:SENDFAIL:*.txt:/echo Le transfert de $filename a $nick a echoue !
on 1:GETFAIL:*.txt:/echo Le transfert de $filename a $nick a echoue !

L'événement CTCPREPLY

Ecoute les réponses CTCP. Exemples :
on 1:CTCPREPLY:PING*:/echo $active J'ai recu un réponse de ping de $nick
on 1:CTCPREPLY:*mirc*:/echo $active Genial, $nick utilises mIRC aussi !

L'événement MIDIEND

Cet événement se déclenche quand un midi se teramoi (mais pas si vous l'arrêtez en en jouant un autre ou en utilisant /splay stop). Exemples :
on 1:MIDIEND:/echo mIRC a teramoi de jouer ce fichier midi !

L'événement INPUT

Cet événement est déclenché quand vous tapez du texte sur la ligne de commande et pressez [entrée]. Vous pouvez traiter cette ligne avec un script ou tout ce que vous voulez ! /halt empêche un traitement standard du texte. Exemple :
on 1:INPUT:/echo Vous avez tape : $1-

L'événement LOAD

Se déclenche quand mIRC a démarre et que tous les scripts sont charges.

L'événement START

Se déclenche dès que votre (nouveau) script est près à être utilisé.
on 1:LOAD:/echo Script charge !
on 1:START:/echo Script Demarre !

Avec l'événement LOAD, vous pouvez dire quelles commandes exécuter quand mIRC a charge les scripts. Pour initialiser des commandes qui doivent l'être au démarrage de mIRC (et charger des scripts automatiquement) utilisez l'événement START. La section START est exécutée après la section LOAD quand le script est charge pour la première fois. Si un script est charge depuis une boite de dialogue remote, les commandes a exécuter automatiquement sont exécutées quand la boite de dialogue est fermée.

Identificateurs spéciaux pour les événements remote.

$nick, $address, $site etc. sont tous des identificateurs créés pour être utilises dans les lignes remotes.

Vous pouvez les utiliser n'importe ou dans les événements remote...

$nick Le nick de la personne qui a envoyé la commandes qui a active l'événement. $address L'adresse complète de la personne qui a envoyé la commande.
$site Le site de la personne qui a envoyé la commande.
$wildsite L'adresse de la personne qui a envoyé la commande. L'événement est de la forme *!*@hote.domaine
$level Représente le niveau de l'utilisateur.
$chan Le channel sur lequel a été déclenché l'événement.
$target La destination de l'événement (dans les notices du serveur)

7-3-4 Les différents drapeaux que l'on peut utiliser avant les lignes CTCP ou d'Events.

Pour finir, quelques remarques doivent être faites a propos de différents drapeaux que vous pouvez utiliser dans la section remote. Les différents drapeaux que vous pouvez utiliser vous obligera à faire des essais... Voir ce qu'ils font et quand. Voir si ils font ce que vous voulez et testez-les longtemps !

Le ! (événements seulement)

Ce drapeau fait que cet événement ne soit pas déclenché par les choses que vous faites... mIRC ne réagira pas aux choses faites par les clients possédant votre adresse. (un drapeau similaire est le 'me'... qui s'assure que les choses ne seront pas déclenchées par le client que -vous- utilisez. Il réagira aux autres clients IRC qui tournent sur la même machine simultanément.)

Exemple :
on 1!:JOIN:#amoi:/notice $nick Bienvenue

Il ne réagira pas quand vous arrivez sur #amoi... tous les autres auront le message de bienvenue...

Le = (événements seulement)

Ce drapeau est utilise pour empêcher tout d'arriver... vous pouvez l'utiliser pour ne pas embêter des utilisateurs de niveaux plus élevés par des événements faits pour des gens de niveau inférieur.

Exemple :
on 1:JOIN:#amoi:/ctcp $nick VERSION
on 3:JOIN:#amoi:=

Les utilisateurs de niveau 1 et 2 auront leur version demandée. et les utilisateurs de niveau 3 et plus ne verront rien, comme vous. (dans la version 3.2, vous aviez a faire des événements sans effets pour faire ca.)

Exemple :
on 1:JOIN:#test1:/notice $nick Bienvenue sur #test1
on 1:JOIN:#test2:/notice $nick Bienvenue sur #test2
on 3:JOIN:=

Les utilisateurs de niveau 3 et plus n'auront pas de notice de bienvenue... les utilisateurs de niveau plus bas le seront seulement sur #test1 et #test2.

Le +

Ce drapeau fait que les commandes soient disponibles seulement pour les utilisateurs de niveau exact pour la commande... les utilisateurs de niveau plus élevé (et plus bas évidemment) n'y auront pas accès

Exemple :
on 1:JOIN:#amoi:/ctcp $nick VERSION
on +3:JOIN:#amoi:/notice $nick Bienvenu ici.

Tous les utilisateurs SAUF ceux de niveau 3 auront leur version demandée sur le channel 'amoi'... les utilisateurs de niveau 3 auront juste un message de bienvenue...

Exemple :
on +5:JOIN:#mirc:/msg $nick Bienvenue utilisateur de niveau 5 !

les ; et REM

Ces drapeaux peuvent être utilises pour désactiver des commandes ou des événement temporairement en les commentant.

Exemple :
;on 1:JOIN:#amoi:/notice $nick Bienvenue.
REM on 1:JOIN:#amoi:/notice $nick Bienvenue.

Les * et @

Ces drapeaux équivalents font que mIRC exécute les commandes ou les événement seulement si vous êtes op sur le channel sur lequel la commandes ou l'événement a été utilise.
on *1:JOIN:#amoi:/notice $nick Bienvenue.
on @10:JOIN:#amoi:/mode $chan +o $nick

Le me

Ce drapeau est fait pour que ces événements marchent seulement si quelqu'un ayant la même adresse que vous puisse utiliser l'événement ou la commande. Cette autre personne devrait être par exemple une autre copie de mIRC tournant sur le même PC. Gardez en mémoire que si vous utilisez des niveaux adéquate vous n'aurez jamais (?) besoin de ce drapeau.

Drapeaux conditionel

Dans la version 3.7 de mIRC, quelques drapeaux additonnels pour les EVENEMENTS ont été ajoutes. Avec des drapeaux, vous pouvez demander a mIRC de prendre en compte le niveau de la personne qui a declenche l'événement.

Ces drapeaux peuvent seulement être utilises avec les événements OP, DEOP et KICK. Vu que ce sont les seuls qui s'occupent de choses faites par une personne a une autre personne.

Ces trois drapeaux sont : >, < et =. Mais il est possible d'en faire des combinaisons mathematiques ce qui donne un jeu de 6 drapeaux : >, <, >=, <=, <> et =.

Ces drapeaux feront que l'événement sera declenche seulement si le PREMIER niveau de l'événement corresponds a la personne oppee, deoppee ou kickee et le SECOND niveau corresponds a celui de la personne qui a declenche l'événement. selon l'expression :

{niveau_du_declencheur}[drapeau (expression mathematiques)]{niveau_de_l_evenement}

Je pense que vous aller avoir besoin de quelques exemples... !!

On va supposer que vous êtes Gardien avec un Ami de niveau 2 et un Declencheur qui peut avoir différents niveaux... et alors, imaginez ces événements simples :

on <2:DEOP:#test123:/msg $chan le < declenche
on >=2:DEOP:#test123:/msg $chan le >= declenche

Avec Declencheur au niveau 1
*** Declencheur sets mode: -o Ami
<Gardien> le < declenche

Votre ami a un niveau 2, le Declencheur a un niveau 1, 1<2 est valide (1 est plus petit que 2), le premier événement DEOP est declenche...

Avec Declencheur au niveau 2
*** Declencheur sets mode: -o Ami
<Gardien> le >= declenche

Votre ami a un niveau 2, le Declencheur a un niveau 2, 2<2 est invalide, 2>=2 est valide (2 est plus petit que 2), le deuxième événement DEOP est declenche...

Avec Declencheur au niveau 3
*** Declencheur sets mode: -o Ami
< > le >= declenche

Votre ami a un niveau 2, le Declencheur a un niveau 3, 3<2 est invalide, 3>=2 est valide (2 est plus grand ou superieur a 2), le deuxième événement DEOP est declenche...

Comme vous pouvez le voir, c'est assez simple des que vous avez l'idee... lisez la suite jusqu'à ce que vous ayez tout compris… quelques autres exemples :

on <2:DEOP:#test123:/msg $chan le < declenche
on >2:DEOP:#test123:/msg $chan le > declenche

Avec Declencheur au niveau 1
*** Declencheur sets mode: -o Ami
<Gardien> le < declenche

Avec Declencheur au niveau 2
*** Declencheur sets mode: -o Ami

Avec Declencheur au niveau 3
*** Declencheur sets mode: -o Ami
<Gardien> le > declenche

on =2:DEOP:#test123:/msg $chan le = declenche

Avec Declencheur au niveau 1
*** Declencheur sets mode: -o Ami

Avec Declencheur au niveau 2
*** Declencheur sets mode: -o Ami
<Gardien> le = declenche

Avec Declencheur au niveau 3
*** Declencheur sets mode: -o Ami

7-3-5 Variables.

Selectionnez le menu Tools/Remote/ et allez dans la sections "Variables"...

Dans cette partie des remotes, vous pouvez avoir vos propres variables. Les variables peuvenr contenir des nombres, des mots et même des lignes de texte. Sur les variables contzenant du texte, vous pouvez faire des operations mathematiques (incrementation, decrementations, addition, soustracions...). Les vriables commencent toujours par un % et peuvent avoir un nom de nimporte quelle taille. Les variables sont conservees entre les sessions dans un fichier dans le repertoire de mIRC.

Plusieurs commandes existent pour creet et utiliser les variables : (-s : montre(show) pour que vous sachiez que l'operation a eu lieu)
/set [-s] <%var> [value] Pour créer une variable
/unset [-s] <%var> [%var2] ... [%varN] Pour supprimer des variables
/unsetall Pour supprimer toutes les variables
/inc [-s] <%var> [value] Pour incrementer une variable d'une valeur (nombre ou variable)
/dec [-s] <%var> [value] Pour decrementer une variable d'une valeur (nombre ou variable)

Les commandes /set /unset /inc /dec ne sont pas affichee par défaut, sauf si elles sont appelees directement depuis la ligne de commande. Pour forcer l'affichage d'informations, utilisez le -s ex : /set -s %x 1.

Avec l'aide de ces commandes vous pouvez faire toutes sortes d'alias très pratiques et de remotes !

Laissez moi vous donner quelques exemples :

Commandes remote (voir avant) :
ctcp 2:xdcc send #1:/dcc send $nick c:\temp\serve\mirc50s.exe | /inc %mirc16 1
ctcp 2:xdcc send #2:/dcc send $nick c:\temp\serve\mirc50t.exe | /inc %mirc32 1
ctcp 2:xdcc send #3:/dcc send $nick c:\temp\serve\mircfq31.zip | /inc %faq 1
ctcp 1:stats:/notice $nick Quelques statistiques : mIRC= %mirc et FAQ= %faq

Evénements remote (voir avant) :
on 2:TEXT:xdcc send #1*:?:/dcc send $nick c:\temp\serve\mirc50s.exe | /inc %mirc16 1
on 2:TEXT:xdcc send #2*:?:/dcc send $nick c:\temp\serve\mirc50t.exe | /inc %mirc32 1
on 2:TEXT:xdcc send #3*:?:/dcc send $nick c:\temp\serve\mircfq31.zip | /inc %faq 1

Alias :
/stats /echo 6 mIRC16: %mirc16 mIRC32: %mirc32 et FAQ: %faq

Avec ces lignes, j'ai fait un petit compteur de download... pas parfait, mais ca marche !

Vous pouvez même ajouter quelques alias pour garder des statistiques patielles :
/reset /set %date $day $date | /inc %mirc16tot %mirc16 | /inc %mirc32tot %mirc32 | /inc %faqtot %faq | /set %mirc16 0 |set %mirc32 0 | /set %faq 0
/stats /echo 6 Stats mIRC16: %mirc16 ( %mirc16tot ) mIRC32: %mirc32 ( %mirc32tot ) et FAQ: %faq ( %faqtot ) ( Au %date )

Si vous incrementez ou decrementez une variable qui n'existe pas, elle sera crée automatiquement a la valeur 0 puis l'opertaion sera effectuee. Exemples :
/inc %test1 6 mettra %test1 à 6 si elle n'existait pas avant
/dec %test2 7 mettra %test2 à -7 si elle n'existait pas avant

Note : vous devez vous assurer que vous ajoutez toujuors le % ! C'est fait expres pour eviter quelques petits mqis possibles problèmes dans la lecture des commamdes par mIRC. ceci ne limite pas du tout la façon dont les variables peuvent être utilisee car vous pouvez toujours utiliser des constructions comme :
ctcp 1:moimoimoi:/inc % $+ $site 1
ctcp 2:xdcc send #1:/dcc send $nick c:\temp\serve\mirc50s.exe | /inc % $+ $nick 1
ctcp 2:xdcc send #2:/dcc send $nick c:\temp\serve\mirc50t.exe | /inc % $+ $nick 1
ctcp 2:xdcc send #3:/dcc send $nick c:\temp\serve\mircfq31.exe | /inc % $+ $nick 1
ctcp 2:xdcc stats:/notice $nick Vous avez déjà downloade %nick fichier depuis %date

vous pouvez aussi utiliser un = (signe égal) pour assigner des valeurs aux variables. Exemples :
%x = 5 + 1
%x = 5 - %y
%x = %x * 2
%x = %z / $2
%x = %x % 3

 

7-3-6 Scripts Remote - traitement brut.

Dans la sections script de Tools/Remote/ mIRC offre aussi la possibilite de gerer toutes les communications serveur <> client (mIRC) de la façon qu'il vous plaît. Cela marche exactement de comme les événement remote sauf que mIRC ecoute pour des événement NUMERIQUES. Ces reponses numeriques sont decrites dans la RFC1459 sur l'IRC (http://ds.internic.net/rfc/rfc1459.txt). Plus d'informations spécifiques sur mIRC sont disponibles à http://www.teleport.com/~jeepster/numeric.html.

Vous ne devriez utiliser les scripts raw –seulement- si vous savez exactement ce que vous faites et -seulement- si vous en avez vraiment besoin. Une mauvaise utilisation des scripts peut entrainer de gros disfonctionnement de mIRC. vous avez la possibilte de refaire toutes les routines compilees dans mIRC. Exemple :
raw 322:*mirc*:/echo 2 $1-

Ceci ecrira toutes les lignes qui contiennent le mot "mirc" dans elles quand vous faites un /list (c'est un test plutot brutal).

Pour avoir un resume du whois sur 2 lignes affiche dans la fenêtre active, placez les commandes suivantes dans votre section raw (avec le listening on) :
raw 311:*:echo 5 $active *** $2-
raw 319:*:echo 5 $active *** $2-

Ceci ecrira les lignes user et channel. Les autres reponses numeriques à whois sont : 312, serveur; 313, ircop; 301, away; 317, idle; et 318, fin. Pour un /whois complet, dupliquez juste les lignes precedentes en utilisant ces nombres.

Pour connaître les reponses numeriques que vous pourrez utiliser vous pouvez vous referez a l'identificateur $numeric qui retourne les numeros de l'événement (raw) qui a été declenche. Dans la RFC1459 sur l'IRC, dans la section 6, vous trouverez toutes les reponses numerques, avec leur numero, leur nom et a quoi elles correspondent.

 

7-4 Utilisation avancée des commandes, commandes multi-lignes.

Dans mIRC vous pouvez utiliser des commandes et créer des alias, popups et remotes avec des declarations conditionnelles, des boucles et d'autres trucs. Pour tout vous dire, j'ai peur qu'il faille une autre FAQ... mais je vais essayer de vous mettre sur le bon chemin dans cette courte section avec quelques exemples.

Je pense que le mieux est de se jeter a l'eau directement...

Tout d'abord, mIRC autorise les alias, popups et scripts multilignes. Ceci vous autorise a ecrire des declarations avec une maniere structuree telle :

<prefixe> {
  /commande1 ...
  /commande2 ...
  /commande3 ...
}

Exemples :

/away /ame est AWAY ( $+ $?="Raison" $+ ) | /away je suis parti a $time { $+ $! $+ }
/back /ame je suis de retours, j'ai manque quelque chose ? | /away

ces alias pourraient aussi bien être definis de la maniere suivante :

/away {
  /ame est AWAY ( $+ $?="Raison" $+ )
  /away je suis parti a $time { $+ $! $+ }
}
/back {
  /ame je suis de retours, j'ai manque quelque chose ?
  /away
}

je suis d'accord que ca n'aide pas vraiment -là-, mais quand qui vous ecrirez et testerez les nouvelles possiblites de mIRC, que sont les commandes conditionnelles, vous aurez peut être besoin de structurer ? par la même occasion, les acolades { } sont utilisees autours des commandes qui utilisent les nouvelles commandes. Tant que nous y sommes, vous pouvez laisser tomber le / en tant que préfixe de commande si vous voulez, il n'est plus necessaire et il clarifie grandement la lecture.

Une commande /goto est ajoute elle peut être utilisee dans les { }.

Exemple :

/salut {
  /set %x 0
  :retry
  /inc %x
  /goto %x
  :2
  /echo ligne2
  /halt
  :1
  /echo ligne1
  /goto retry
}

Cet alias ecrira les lignes "ligne1" et "ligne2" sur votre écran.

Testez le en donnant son equivalent sur la ligne de commande :

/set %x 0 | :retry | inc %x | goto %x | :2 | echo ligne2 | halt | :1 | echo ligne1 | goto retry

ceci vous montre exactement ce qui arrive. Vous pouvez aussi utiliser une variable comme nom de goto, exemple :
:%pointdesaut

Si vous faites "/set :%pointdesaut 5" après, vous pouvez faire "/goto 5" et mIRC évaluera %pointdesaut à 5 et y sautera. Dans l'exemple, ci dessus, les points de saut étaient fixes a '1' et a '2'. Essayez ces 3 commandes pour voir ce qui se passe :
/set %saut1 1
/set %saut2 2
/set %x 0 | :retry | inc %x | goto %x | :%saut2 | echo ligne2 | halt | :%saut1 | echo ligne1 | goto retry

Vous pouvez utiliser la commande /return pour arrêter une commande et autoriser une commande par défaut a être exécutée. Exemple :

on 1:JOIN:#mIRC {
  /echo 3 #mirc [$nick arrive]
  /return
  /echo 3 #mirc Je suis pas imprime
}

ceci résultera par le message :
[honk arrive]
*** honk (monstre@ppp.dial.wanaboo.fr) has joined #mIRC

Attention !

Prenez garde de ne pas vous perdre dans des accolades incomplètes. Quand des accolades '{' ne sont pas fermées '}' mIRC peut commencer a se comporter de façons bizarre ! Faite très attention ! Un bouton spécial a été ajouté dans les sections alias, popups et remote pour vérifier si les accolades pour vérifier que le compte d'accolades ouvrantes et fermantes est bon. Ce bouton a un dessin "{}" sur lui.

/if /elseif /else

maintenant, je pense que vous êtes près pour la vrai programmation ? dans mIRC, une instruction /if est disponible :
/if v1 operateur v2 { ... } | /elseif v1 operateurr v2 { ... } | /else { ... }

Exemple :
Faites cet alias et lancez le comme "/test 4" :
/test { set %i 0 | :start | inc %i | if %i > $1 halt | echo $active %i | goto start }

If/elseif/else peuvent aussi être imbriques. Vous pouvez utiliser () et {} pour vous assurer que les termes sont évalués correctement (dans le bon ordre), mais vous n'avez pas *besoin* de les utiliser. Utiliser les accolades rends aussi le traitement plus rapide puisque mIRC sait exactement quoi faire.

Comparateurs et opérateurs disponibles :
== égal à
!= diffèrent de
< inférieur à
> supérieur à
<= inférieur ou égal à
>= supérieur ou égal à
// est divisible par
\\ n'est pas divisible par

isin v1 est dans v2
iswm v1 avec ses jockers corresponds à v2
ison nick v1 est sur le channel v2
isop nick v1 est op sur le channel v2
isvo nick v1 est voice sur le channel v2
isnum v1 est un nombre dans la gamme v2 qui est de la forme n1-n2 (v2 est optionnel)
ischan v1 est un channel sur lequel vous êtes.
isauto v1 est un utilisateur de votre liste auto-op pour le channel v2 (v2 est optionnel)
isignore v1 est un utilisateur de votre dans votre liste ignore avec le switch v2 (v2 est optionnel)
isprotect v1 est un utilisateur dans votre liste d'utilisateurs protégés pour le channel v2 (v2 est optionnel)
isnotify v1 est un utilisateur de votre liste notify.

Pour avoir le résultat inverse vous pouvez utiliser le préfixe '!'.
/if $nick !ison #mIRC { /echo $nick n'est PAS sur #mIRC }

Exemple :

/invitedemasse {
  echo 4 * Invite de masse de # sur $1
  set %i $nick(#,0)
  :next
  if $nick(#,%i) != $me invite $nick(#,%i) $1
  dec %I
  if %i > 1 goto next
  echo 4 * Invite de masse de # sur $1 termine
}

Utilisez cet exemple avec "/invitedemasse #tonchannel". (Au fait, les invitations de masse sont vraiment pas polies !)

Exemple :

/randnopkick {
  :begin
  set %kicknick $nick(#,$r(1,$nick(#,0)))
  if %kicknick isop # goto begin
  /echo 6 %kicknick
}

Si vous êtes op sur un channel vous aimerez peut-être utiliser ce kick-non-op-au-hasard. Cette alias kick un nick au hasard sur le channel, mais jamais un op. Bon... si il n'y a que des op, vous aurez un problème :-)

Exemple :

/ligne {
  %ligne = ""
  if $asc($1) < $asc($2) {
    set %i $asc($1)
    :ajoute
    %ligne = %ligne $chr(%i)
    inc %i
    if %i <= $asc($2) { goto ajoute }
    if (%ligne == "") { halt }
    else {
      echo # %ligne
      halt
    }
  } else echo # desole, invalide
}

Lancez cet alias avec "/ligne d l" pour voir ce qu'il fait. Il imprime une ligne telle "d e f g h I j k l". C'est pas franchement intéressant, mais ca montre la puissance de if/elseif/else assez bien.

Exemple :

/affichenombre1 {
  if $len($1) = 1 {
    if $1 !isin 1234567890 {
      echo 6 $1 n'est pas un nombre
      goto end
    }
  }
  elseif $len($1) = 2 {
    if $mid(1,1,$1) !isin 1234567890 {
      echo 6 $mid(1,1,$1) n'est pas un nombre
      goto end
    }
    elseif $mid(2,1,$1) !isin 1234567890 {
      echo 6 $mid(2,1,$1) n'est pas un nombre
      goto end
    }
  }
  elseif $len($1) > 2 {
    echo 6 $1 a trop de caracteres
    goto end
  }
  {
     set %x 1
     :begin
     echo 6 %x
     if %x >= $1 { goto end }
     else {
       inc %x
       goto begin
     }
   :end
  }
}

/affichenombre2 {
  if $1 !isnum {
    echo 6 $1 n'est pas un nombre
    goto end
  }
  elseif $1 !isnum 0-99 {
    echo 6 $1 est trop grand
    goto end
  }
  {
    set %x 1
    :begin
    echo 6 %x
    if %x >= $1 { goto end }
    else {
      inc %x
      goto begin
    }
    :end
  }
}

Ces deux alias sont équivalents. Ils afficheront une suite de chiffres jusqu'à la valeur donnée. Essayez donc "/affichenombre1 14" ou un truc dans le même genre... Le deuxième alias montre comment utiliser intelligemment les identificateurs pour réduire considérablement la longueur de l'alias.

identificateurs vides ou invalides

Les variables ou les identificateurs qui ne retournent pas de valeur retournent maintenant $null pour que ca puisse être utilise dans un if pour le tester...

Exemple :

/listops {
  echo 4 * On fait la liste des op sur #
  set %i 1
  :next
  set %nick $nick(%i,#)
  if %nick == $null { goto done }
  if %nick isop # { echo 3 %nick est Op sur # }
  inc %I
  goto next
  :done
  echo 4 * End of Ops list
}

Cet alias listera les op du channel sur lequel vous êtes.

Ou dans un événement remote :

on 1:CTCPREPLY:PING* {
  if ($2 == $null) echo [ $+ $nick PING reply]
  else {
  %pt = $ctime - $2
  if (%pt < 0) set %pt 0
    echo [ $+ $nick PING reply] %pt secondes
  }
  halt
}

D'autres exemples de popups :

Donneop {
  %i = 0
  %nicks = ""
  :nextnick
  inc %i
  if ($snick(#,%i) == $null) {
    if ($len(%nicks) > 0) mode # +oooo %nicks
    halt
  }
  %nicks = %nicks $snick(#,%i)
  if (4 // %i) {
    mode # +oooo %nicks
    %nicks = ""
  }
  goto nextnick
}

Ce popup oppera toutes les personnes sélectionnées sur un channel ou vous êtes op.

kickselectif:/kick # $token($r(1,$snick(#,0)),44,$snicks)

Ce popup kickera une personne au hasard parmi les nick sélectionnés.

RandNopkick:/kick # $nopnick(#,$r(1,$nopnick(#,0)))

Celui ci kickera un non-op au hasard depuis le channel sur lequel vous êtes.

RandNopkick { :begin | /set %kicknick $nick(#,$r(1,$nick(#,0))) | if %kicknick isop # goto begin | /kick # %kicknick }

Celui ci aussi !

Randkick:/kick # $nick(#,$r(1,$nick(#,0)))

C'est pas drôle les kicks ?? Aller, un autre, celui ci, il kick n'importe qui, peut être vous !

RandOpkick:/kick # $opnick(#,$r(1,$opnick(#,0)))

On kick un op au hasard... au moins, ils peuvent se défendre !

Boucles infinies.

Avec toutes ces conditions, je vois d'ici qu'une de vos boucles se 'terminera' en boucle infinie. Un petit exemple serais :
/boucle { :start | echo 6 # un test de boucle | goto start }

Au cas ou un de vos alias, ou remote arrive dans un tel état, utilisez la combinaison de touche Ctrl+Break pour arrêter le processus. Ca vous arrêtera tout très simplement.

Fenêtres personnalisés.

Depuis la version 5.0 de mIRC, un nouvel outil est ajouté pour vous aider à créer vos propres fenêtres. Cet outil de création/manipulation des fenêtres peut par exemple créer une fenêtre ou vous gardez la trace de ce que vos scripts font. Une fenêtre peut être créée avec la commande /window. Elle peut contenir de nombreux paramètres pour définir le type de fenêtre que mIRC créé, l'état de la fenêtre et le contrôle de son contenu.

/window [-abcdelnorsx] @nom [x y [w h]] [/commande] [popup.txt] [police [taille]]

paramètres :
a = activer la fenêtre
b = met à jour la taille de la barre de défilement horizontale pour les listes
c = ferme la fenêtre
d = ouvre la fenêtre sur le bureau
e = Boite d'édition
l = liste
n = minimise la fenêtre
o = si ouverte sur le bureau, la met au premier plan
r = restaure la fenêtre
s = utilise une liste triée
x = maximise la fenêtre
@nom = nom de la fenêtre (doit commencer par un @)
x,y,w,h = gauche haut largeur hauteur
popup.txt = fichier de popup, charge si nécessaire
/commande = commande par défaut
police/taille = nom de la police et sa taille (la police par défaut est celle de la fenêtre de statuts)

vous pouvez aussi utiliser la commande /window pour manipuler les réglages des fenêtres existantes. Vous pouvez utiliser les commandes suivantes pour manipuler les lignes :
/aline [-cN] @nom texte ajoute une ligne de texte
/dline @nom N supprime la Nième ligne
/iline [-cN] @nom N texte insère une ligne a la Nième ligne
/rline [-cN] @nom N texte remplace la Nième ligne
/sline @nom N sélectionné la Nième ligne
ou -cN vous permet de spécifier la couleur de la ligne.

Vous pouvez utiliser l'identificateur $window(N/@nom) pour accéder aux informations suivantes :
$window(N).x gauche
$window(N).y haut
$window(N).w largeur
$window(N).h hauteur
$window(N).state minimized/maximized/normal

Pour acceder aux lignes de la fenêtre, il est possible d'utiliser :
$line(@nom,N) retourne la Nième ligne
$sline(@nom,N) retourne la Nième ligne sélectionnée (liste seulement)
$sline(@nom,N).ln retourne le numéro de la ligne de l'item sélectionné.

Ce nouvel outil offre plein de nouvelles possibilités pour créer. Mais vous aurez à tester un peu si vous voulez que ça fasse exactement ce que vous voulez... Amusez-vous bien !


Dernière révision :
Date de Creation : 29 Janvier 1998
Copyright ©
Mathieu ARNOLD 1996 - 1998