IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Notions intermédiaires en mIRC scripting


précédentsommaire

IV. Fichiers

mIRC permet de gérer deux types de fichiers :

  • les fichiers séquentiels ;
  • les fichiers d'initialisation (ini).

Comme pour les tokens, mIRC met en votre disposition un ensemble de fonctions, pour écrire, lire… dans un fichier.

IV-A. Fichiers séquentiels

Un fichier séquentiel permet uniquement d'accéder aux données dans l'ordre de leur écriture.
Pour accéder au Nième caractère, on est obligé de passer par les N-1 caractères d'avant.

IV-A-1. Lire dans un fichier séquentiel

La commande /play permet de jouer un fichier texte ou une partie de celui-ci à un utilisateur ou un canal.
En plus simple, elle permet de lire une partie du fichier et l'afficher.

 
Sélectionnez
/play [-aescpbn q# m# f# rl# t#] [alias] [canal/pseudo/stop] nom_du_fichier [délai]
  • nom_du_fichier : le nom du fichier que vous voulez lire.
  • -a : /play utilisera l'alias mentionné au lieu de /msg ou /notice.
  • -e : le texte sera affiché en /echo.
  • -s : la commande /play sera faite dans la fenêtre status en étant déconnecté. Donc si vous êtes déconnecté, vous êtes obligé de mentionner -s avec /play pour qu'elle marche.
  • -c : le texte sera évalué.
  • -n : /play utilisera /notice (au lieu de /msg).
  • -p : cette demande sera prioritaire par rapport aux autres demandes de play (valable qu'au cas où plusieurs demandes play sont en cours).
  • -q# : spécifie le nombre maximum de requêtes possibles en liste d'attente, si le nombre est supérieur ou égal à la valeur donnée, cette requête sera ignorée.
  • -m# : limite le nombre maximum de requêtes possible en liste d'attente, si le nombre est supérieur ou égal à la valeur donnée, cette requête sera ignorée.
  • -r : une ligne au hasard du fichier sera jouée.
  • -f# : joue le fichier de la ligne spécifiée à la dernière ligne.
  • délai : le délai d'attente entre la lecture/affichage de chaque ligne.

Les paramètres -q# et -m# ne s'appliquent qu'à des /play exécutés par un déclenchement d'un évènement.

Pour arrêter le déroulement du /play et vider la liste, vous faites /play stop

IV-A-2. Écrire dans un fichier séquentiel

Pour cela, on a à notre disposition la commande /write.

 
Sélectionnez
/write [-acdin l# s# w# r#] Nom_de_fichier Texte

Cette commande écrit le Texte dans le fichier Nom_de_fichier, elle accepte plusieurs paramètres.

  • -a : le texte est ajouté au texte de la ligne spécifiée.
  • -c : efface le fichier complètement avant d'écrire.
  • -d : efface une ligne du fichier, si aucune ligne n'est spécifiée (cf. paramètre -l#) c'est la dernière ligne du fichier qui sera effacée.
  • -i : insère le texte spécifié dans la ligne spécifiée, si aucun texte, une ligne vide sera insérée, si aucune ligne spécifiée, l'insertion sera dans la fin du fichier.
  • -n : empêche l'ajout d'un $crlf à la fin du texte.
  • -l# : spécifie le numéro (#) de la ligne où l'action sera faite (ajout, suppression…).
  • -s# : recherche une ligne commençant par le texte spécifié (#) et exécute les opérations sur cette ligne (les opérations étant les autres paramètres).
  • -w# : même comportement que le -s# sauf que le texte ici peut contenir des caractères génériques.

$crlf (carriage return/linefeed) : retourne le caractère de fin de ligne suivi du caractère de nouvelle ligne.

Exemple :

 
Sélectionnez
/write -dstest exemple.txt

Recherche une ligne dans le fichier exemple.txt qui commence par « test » et l'efface (-d).

IV-A-3. Application (cas de l'autogreetings)

Revenons à notre petit script, on va essayer d'exploiter /play et /write pour faire un autogreetings plus évolué.
Le code de notre autogreetings, pour l'instant, ressemble à :

Remote
Sélectionnez
#greetings off
if ( $nick != $me ) {
/msg $chan Salut $nick ! Bienvenue sur $chan !
}
}
#greetings end
Popup
Sélectionnez
Auto-greeting ( $group(#greetings) )
.$iif($group(#greetings) == on,$style(3)) Activer:/enable #greetings
.-
.$iif($group(#greetings) == off,$style(3)) Désactiver:/disable #greetings

À faire :

  • rendre le message de bienvenue aléatoire parmi les messages contenus dans un fichier hello.txt ;
  • modification du popup, ajout de champs pour ajouter/supprimer des messages de bienvenue et pour modifier le fichier des messages.

Commençons par la remote, au lieu d'un message figé, on demande à mIRC de lire un message aléatoire du fichier hello.txt :

hello.txt
Sélectionnez
salut $nick ! bienvenue sur $chan ! 
Oh ! salut $nick
lut $nick
hello $nick $+ , comment ca va ? :)

Notre script deviendra :

 
Sélectionnez
#greetings off
ON *:JOIN:#:{
  if ( $nick != $me ) {
    //play -r $chan %fichier
  }
}
#greetings end

-r permet de jouer une ligne aléatoire.
La variable %fichier sera la variable qui contiendra le chemin vers le fichier cible (le fichier des messages).

Regardons les popups maintenant, examinez le code suivant :

 
Sélectionnez
Auto-greeting ( $group(#salut) )
.Changer le fichier ( $+ %fichier $+ ):/set %fichier $$?="Chemin du fichier"
.Ajouter un message:/write -a  %fichier $$?="Entrez le message :"
.Effacer un message:/write -dl $+ $$?="Numéro de la ligne à supprimer" %fichier
.-
.$iif($group(#salut) == on,$style(3)) Activer:/enable #salut
.$iif($group(#salut) == off,$style(3)) Désactiver:/disable #salut

Essayez de définir la variable %fichier (changer le fichier) avant de faire toute autre opération pour éviter l'erreur de manque d'arguments du /write (fichier non spécifié).

IV-B. Fichiers d'initialisation

Les fichiers d'initialisation (d'où l'extension .ini) contiennent plusieurs éléments, chaque élément est caractérisé par :

  • Sections : les sections commencent par un '[' et se terminent par un ']', c'est la plus grande entité dans le fichier.
  • Paramètres : les paramètres commencent par une clé, suivie de '=', puis la valeur de la clé.
  • Commentaires : Toutes lignes qui commencent par un ';'
exemple.ini
Sélectionnez
[section1]
clé1=val1
clé2=val2
[section2]
clé1=val1
clé2=val2

IV-B-1. Lire dans un fichier d'initialisation

$readini permet de lire dans un fichier séquentiel.

 
Sélectionnez
$readini(nom_de_fichier,  (np), section, paramètres)
  • n : la ligne lue sera traitée comme du texte et ne sera pas évaluée.
  • p : le séparateur de commandes '|' sera traité en tant que tel et non en tant que texte normal.
  • Section : la section où vous voulez lire.
  • paramètre : le paramètre que vous voulez lire dans la section.

Exemple :

 
Sélectionnez
//echo $readini(exemple.ini, section2, clé1)

Affichera val1.

IV-B-2. Écrire dans un fichier d'initialisation

 
Sélectionnez
/writeini -n fichierINI section paramètre valeur
  • fichierINI : le fichier dans lequel vous voulez écrire.
  • Section : la section que vous voulez créer (en cas d'inexistence), ou modifier (modifier la valeur d'un paramètre en cas d'existence).
  • Paramètre : le paramètre à modifier ou à ajouter.
  • valeur : la nouvelle valeur du paramètre entré.

Vous êtes obligé de donner tous les arguments sinon la commande ne s'exécutera pas.

Évitez d'utiliser cette commande sur un fichier utilisé par mIRC.

Vous pouvez effacer des sections et/ou paramètres à l'aide de /remini.

V. Conclusion

Cet article couvre en gros les aspects les plus importants à savoir pour mieux assimiler les notions avancées en mIRC scripting (regex, dialogs…).
Je vous invite à utiliser l'aide du mIRC (F1) le plus souvent possible, c'est LA référence.
Bon scripting !

VI. Prérequis


précédentsommaire

Copyright © 2006 Soufiane Hassou. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.