RETOUR
SOMMAIRE


FAIRE SES PROPRES SCRIPTS POUR MIRC

PREMIERE PARTIE : LES ALIAS

ÉTAPE
SUIVANTE

(connaissance moyenne des commandes IRC requise, si ce n'est pas votre cas il conviendrait de lire cette page d'abord)

Pour pouvoir commencer à faire ses aliases et songer s'en servir dans les scripts il faut maîtriser les infos de cette page.

-SOMMAIRE-
Introduction
Premiers exemples
Aliases à commandes multiples
Affectation des touches F1...F12
Chaînes
Identificateurs prédéfinis
Créer ses identificateurs
Boucles et conditions

Un alias est une commande que vous créez en combinant des commandes IRC, paramètres associés et conditions.
On définit un alias en tapant dans la section tools/alias la ligne : /nomdel'alias ESPACE /commandesdel'alias

-Introduction-

Un alias peut être un raccourci pour les commandes que vous tapez le plus souvent ou la réunion de plusieurs commandes. Il peut contenir des "objets" de programmation classiques (boucles,conditions...)
Vous pouvez affecter une des touches F1...F12 à vos aliases.
Pour "programmer" mIRC, le mieux est d'utiliser l'éditeur texte inclus dans le logiciel. Choisissez alias dans le menu tools pour accéder à la section alias de l'éditeur. Vous travaillez alors par défaut sur le fichier alias.ini, fichier texte contenant la définition de tous vos aliases. Si vous utilisez déjà un script le mieux est de faire une deuxième installation de mIRC (sans script) dans un nouveau répertoire pour créer vos premiers alias ; sinon vous risquez d'endommager le script que vous utilisez. Vous pouvez aussi créer plusieurs fichiers ini pour séparer vous alias ou groupes d'alias et les charger ensuite dans mirc à la demande par la commande /load.


-premiers exemples-

1. Vous avez l'habitude de dire une phrase genre "salut les copains, comment ça va aujourd'hui" en arrivant sur certains canaux. La commande IRC pour faire ça est : /say   salut les copains, comment ça va aujourd'hui. C'est long ! tapez dans la section alias (tools) la ligne :
/salut /say salut les copains, comment ça va aujourd'hui.
Vous venez de définir l'alias /salut, à chaque fois que vous taperez /salut le message "salut les copains, comment ça va aujourd'hui" sera envoyé dans le canal actif.

2. pour obtenir les informations sur quelqu'un il vous faut taper /whois nick.
Si vous définissez dans tools l'alias /w ainsi : /w /whois $1 alors /w nick suffira (vous gagnez 4 lettres ! c'est juste un exemple).
Les aliases utilisent également un certains nombre de chaînes et identificateurs spéciaux comme ($1, $3-5, $$1, $?, $!, #$1, #$$1  #$? $read $date $adate $fulldate $time et $day.........). Nous verrons cela en détail plus tard.
L'identificateur $1 signifie : le premier mot tapé après l'alias. Dans notre exemple lorsque vous tapez /w nick, le premier mot tapé après l'alias (/w) est : nick. On a donc dans ce cas $1=nick et la commande /whois $1 s'exécute comme /whois nick.

On définit donc un alias en tapant dans la section alias la ligne /nomdel'alias ESPACE /commandesdel'alias
Ca marche aussi sans les "/" mais prêtera à confusion, habituez vous avec les "/".


-Aliases à commandes multiples-

Pour exécuter plusieurs commandes dans un alias, il faut les séparer par le caractère | (<AltGr>6).

Exemples :

1. /j : joindre 3 canaux
définition à taper dans Tools/Aliases : /j  /join $1 | /join $2 | /join $3.
Vous avez créé l'alias /j, qui utilisé comme ceci : /j #canal1 #canal2 #canal3 sera interprété comme /join #canal1 | /join #canal2 | /join #canal3 ($1 = #canal1 ;  $2 = #canal2 ; #3 = #canal3)
Le problème avec $i c'est que si vous tapez /j #canal1, mIRC va attendre $2 et $3 et ça risque de buguer votre script. La solution est d'utiliser $$i (voir section variables et identificateurs).

2. /site : faire la publicité de votre site avec un message de plusieurs lignes
définition à taper dans Tools/Aliases : /site /say visitez mon super site | /say http://youpie.free.fr | /say vous ne serez pas déçu
désormais si vous tapez simplement /site, les 3 lignes seront envoyées à la fenêtre active (canal ou privé)

3. /jt : joindre un canal et en changer le topic
définition à taper dans Tools/Aliases : /jt /join $1 | /topic $1 , le canal super !
désormais si vous tapez /jt #canal vous joignez #canal et en changez le topic en "#canal, le canal super !" (si le changement de topic est permis sur ce chan bien sur). Remarquez que l'on a utilisé deux fois la valeur de $1.

4 . /dkb : déOPer, kicker et bannir un nick du canal actif.
définition à taper dans Tools/Aliases : dbk /mode # -o $1 | /kick # $1 | /mode # +b $1
Désormais si vous tapez /dkb nick le nick sera déopé, kické et banni du canal actif (encore un identificateur : #, qui désigne le canal actif.

Pour exécuter plusieurs commandes dans un même alias, vous pouvez également utiliser la syntaxe suivante, à la place des | (reprise de l'exemple 2) :
/site {
/say visitez mon super site
/say http://youpie.free.fr
/say vous ne serez pas déçu
}

Les crochets : utiles pour contrôler l'ordre d'évaluation des chaînes et identificateurs.
EX : /sayvar /say % [ $+ [ $1 ] ]

Les aliases peuvent être utilisés directement ou intégrés dans des scripts (popups, remote). Un alias peut "appeler" d'autres alias (ou s'appeler lui-même), le risque est de bloquer mIRC (boucle perpétuelle). Pour arrêter l'exécution dans ce cas tapez <CTRL-arrêt>


-Utiliser les touches F1...F12 pour vos alias-

Si vous voulez affecter une des touches F1...F12 il suffit de nommer l'alias /f1.../f12
Pour affecter Shift-F1 il suffit de nommer l'alias /sf1. Pour CTRL-Fi, nommer l'alias /cfi

EXEMPLES
/f1 /say salut tout le monde. Chaque fois que vous taperez F1, vous direz "salut tout le monde" dans le canal actif.
/f2 /dcc send $1 c:\chemin\fichier . Ici il faut d'abord sélectionner un nick dans la liste (sur un canal), alors en tapant F2 vous lui envoyez fichier.
/f3 /dcc send $1. Idem, mais mirc vous demande quoi envoyer.


-Chaînes-

Comme nous l'avons vu plus haut avec $1, il existe de nombreuses chaînes utilisables dans les alias. Dans cette section nous allons découvrir toutes ces chaînes, à quoi elles servent et comment les employer.

  • $N La plus simple, elle contient un mot. $1 contient le premier mot tapé après l’alias. $2 le deuxième ... et $N le Nième.
    EXEMPLE : définition de l'alias : /op /mode $1 +oo $2 $3
    alors taper /op #youpie tintin milou OPera tintin et milou sur le canal #youpie.

  • $N-M Cette chaîne contiendras les mots N à M de la "phrase" tapée après l'alias.
    EXEMPLE : définition de l'alias : /extrait /say les mots 2 à 4 sont : $2-4
    alors taper /extrait tintin ne retrouve plus Milou enverra le message "le mots 2 à 4 sont : ne retrouve plus" à la fenêtre active.

  • $N- Cette chaîne peut contenir plusieurs mots... $N- contiendras le Nième mot, ET tous les suivants. Essayez :
    EXEMPLE : définition de l'alias : /penser /say je pense que $2-
    alors taper /penser la fin du monde est pour bientôt  enverra le message "je pense que fin du monde est pour bientôt" à la fenêtre active (le "la" premier mot à disparu).

  • $$N Comme $N il désigne le Nième mot tapé après l'alias, sauf que dans le cas du double $$, l'alias ne s'exécute QUE si ce Nième mot existe, sinon il est ignoré.
    EXEMPLE : définition de l'alias : /j /join $$1
    alors taper /j #canal vous fera joindre #canal, mais taper /j sera ignoré

  • $? 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 entré.
    EXEMPLE : définition de l'alias : /j /join $?"entrez le nom du canal :"
    alors taper /j ouvrira une boite de dialogue avec le texte : "entrez le nom du canal". Une fois tapé le nom du canal et cliqué OK, la boite se ferme et vous joignez le canal choisi.

  • $! 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 :
    EXEMPLE : définition de l'alias : /j /join $?"entrez le nom du canal :" | /say vive
    alors taper /j ouvrira une boite de dialogue avec le texte : "entrez le nom du canal". Une fois tapé le nom du canal et cliqué OK, la boite se ferme et vous joignez le canal choisi.

  • #$1 #$$1 et #$? La même chose que $1, $$1 et $? utilisées avec des noms de canaux, elles ajoutent un # devant du paramètre.
    EXEMPLE : définition de l'alias : /j /join #$1
    alors, /j youpie est utilisable (à la place de /j #youpie dans le cas de /j /join $1)


Identificateurs

Un identificateur est une chaîne spéciale, prédéfinie dans mIRC, dont le contenu est défini par la façon dont l’alias, le popup ou un remote est appelé.
Voici une liste complète des identificateurs utilisables dans mIRC. D'abord les plus utiles puis tous les autres.

# Très important : il contient toujours le nom du canal dans lequel l’alias est exécuté.
/op /mode # +o $1
tapez "/op youpie", et youpie deviendra op sur le canal courant.

$me cet identificateur contient toujours votre nick.  

$read [-nl#] <fichier.txt> 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 chaque 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 :

$readini [-n] <fichierini> <section> <item> Similaire a $read cet identificateur lit des items d’un fichier ini. 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.

$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 une durée en secondes en jours/heures/minutes/secondes
$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,p,N) Retourne les N caractères du texte en partant du pième
$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 accès 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 lequel 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 activé ou pas.

-Identificateurs définissables par l’utilisateur-

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. Les identificateurs sont définis dans la section alias et ils ressemblent comme deux gouttes d’eau à des alias, sauf qu’ils se terminent par /return X. Vous pouvez faire retourner tout ce que vous voulez. Par exemple, la somme de deux nombres.

EXEMPLE :
/somme {
%temp = $1 + $2
return %temp
}
Maintenant, il est possible d’utiliser l’identificateur $somme partout dans des alias, popups ou remote.
/somme $1 $2 /say la somme de $1 et $2 est $somme($1,$2).


Boucles et conditions

/if /elseif /else

/if v1 opérateur v2 { ... } | /elseif v1 opérateur' v2 { ... } | /else { ... }

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 jokers corresponds à v2
ison nick
v1 est sur le canal v2
isop nick
v1 est op sur le canal v2
isvo nick
v1 est voice sur le canal v2
isnum
v1 est un nombre dans la gamme v2 qui est de la forme n1-n2 (v2 est optionnel)
ischan
v1 est un canal sur lequel vous êtes.
isauto
v1 est un utilisateur de votre liste auto-op pour le canal 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 canal 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 "!"

Pour exécuter des boucles suivez le modèle suivant (par exemple):

set %i 1 (initialistation de %i à 1)
:label
(repère)
....
(instructions)
inc %i
(augmente i d'1)
/if %i==X {goto fin}
(examen de la condition de sortie de la boucle)
goto label
(passage au pas suivant)
:fin
(repère)

RETOUR SOMMAIRE