Cours de scripting mIRC n°3 : le ON INPUT
Introduction : quelques notions
Le ON INPUT sert à détecter les messages que nous envoyons, que ce soit en privé, comme sur un salon ou ailleurs...
Grâce à cette détection, nous pouvons agir sur les phrases que nous disons avant qu'elles ne soient envoyées. C'est ainsi que l'on peut
rajouter des couleurs d'écriture ou souligner des URL dans nos phrases par exemple.
Débutant
Voyons directement un exemple :
on *:input:#:{
if $left($1-,1) != / {
msg $chan 4,8 $+ $1-
halt def
}
}
Une fois ce script copié/collé dans un remote vide (Rappel : ALT + R, File, New), si votre pseudo est NiCk2 et que vous dites
"Bonjour" sur un salon, alors vous verrez ceci :
<NiCk2> Bonjour
Pour la première ligne, le "#" signifie qu'on ne détecte que ce que l'on va dire sur les salons, si on avait mis un "?", on aurait détécter ce
qu'on disait en privé.
La ligne qui suit permet de vérifier que le premier caractère que l'on tape n'est pas un slash ("/"), caractère utilisé pour lancer les commandes.
En effet, sans cette condition si vous vouliez lancer une commande au nom de "boucle.ex1" par exemple, vous veriez apparaître simplement
"/boucle.ex1" sur un salon au lieu de lancer la commande effectivement.
Le $1- est un identifiant, dans les ON INPUT, le $1-
renvoit la phrase que vous voulez écrire.
Le $left($1-,X) permet de récupérer les X premiers caractères de $1- en partant de la gauche.
Ici X est égal à 1 donc l'identifiant $left récupère le premier caractère et regarde si il est différent de "/".
Si c'est bien le cas alors le script envoit un message au salon (via la commande msg $chan, $chan renvoyant le nom du salon concerné),
précédé du 4,8. Le premier carré est un code signifiant que le texte qui suit sera en gras. Le deuxième carré est un code couleur
indiquant que le texte qui suit aura pour couleur d'écriture le rouge (correspondant au 4) et pour couleur de fond le jaune (correspondant au 8).
Les deux nombres sont séparés d'une virgule. Pour avoir la correspondance entre nombres et couleurs, faites CTRL + K dans une fenêtre de votre script.
Le halt def sert a arrêter l'affichage par défaut. Si il n'y avait pas cette ligne, votre script enverrait deux messages simultanément au salon.
Vous pouvez tester en enlevant cette ligne pour voir la différence.
Intermédiaire
Une fois ce script c/c dans un remote vide, prenez soin de remplacer VotrePseudo par votre pseudo habituel.
Ce petit script est une merveille. En effet, il vous permet de changer rapidement de pseudo juste en tapant !n suffixe.
Par exemple si vous tapez !n OQP, si votre pseudo était Babar, alors votre pseudo deviendra Babar`OQP.
Si jamais vous tapez !n TRES OQP, le script remplacera automatiquement les espaces par des "`", ainsi votre pseudo deviendra
Babar`TRES`OQP par exemple.
Dernièrement, si vous tapez !n suivi de rien et que votre pseudo est Babar`TRES`OQP, votre pseudo redevient Babar (toujours dans
le même exemple).
on *:input:*:{
if $$1 == !n {
if $2- != $null { nick VotrePseudo` $+ $replace($2-,$chr(32),`) }
else { nick VotrePseudo }
}
}
L'identifiant $replace(...) permet de remplacer dans un texte une certaine suite de caractères par une autre.
Exemple : $replace(Babar,a,o) renvoie Bobor.
Tous les "a" ont été remplacé par des "o".
Expert
Voici un petit script qui donne un effet tout à fait saisissant, on aime ou on aime pas :)
on *:input:#:{
if $left($1-,1) != $readini(mirc.ini,text,commandchar) || $ctrlenter == $true {
var %c = 1,2,3,4,5,6,7,10,12,13,14
var %i = 1
var %MAX = $len($1-)
while (%i <= %MAX) {
var %r = $gettok(%c,$rand(1,$numtok(%c,44)),44)
if $mid($1-,%i,1) == $chr(32) { var %t = %t $chr(32) }
else { var %t = %t $+ $+ %r $+ $mid($1-,%i,1) }
inc %i
}
msg $chan %t
halt def
}
}
Solution de l'exercice du cours n°2 : difficulté intermédiaire
Rappel de l'énoncé :
En utilisant les boucles, construisez un alias permettant de donner la liste des pseudos contenant un certain mot sur un salon.
Par exemple si je tape /detecter.mot #testr cam, l'alias devra m'afficher tous les pseudos contenant le mot "cam".
Amusez vous bien en attendant la semaine prochaine...
Une solution :
alias boucle.detection.mot {
var %salon = $$1
var %mot = $$2
var %i = 1
var %MAX = $nick(%salon,0)
var %cpt = 0
echo 12 -ta Scanneur Salon scanné : %salon Mot recherché : %mot
while (%i <= %MAX) {
if (%mot isin $nick(%salon,%i)) { var %liste = $addtok(%liste,$nick(%salon,%i),32) | inc %cpt }
if ($numtok(%liste,32) == 5 || (%i == %MAX && %liste != $null)) { echo -ta %liste | var %liste }
inc %i
}
echo 12 -ta Fin du scanneur, nombre de pseudos détéctés : %cpt
}
Exercice : difficulté débutant
A l'aide du cours de niveau débutant, modifiez le script pour écrire avec des décorations autour de votre écriture.
Par exemple, on voudra voir ceci :
<NiCk2> @Bonjour @
Les couleurs d'écritures sont très prisées par la plupart des t'Chatteurs, plus votre script aura d'options pour les couleurs, plus il aura
de chances de plaire aux utilisateurs d'un serveur. Bon courage pour ceux ou celles qui oseront s'aventurer dans la création de nouveaux
styles de couleurs et à la semaine prochaine pour le prochain cours :)