1 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)
1-1 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
1-2 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
1-3 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.
1-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