Langage de script mIRC - mIRC scripting language

Langage de script mIRC
Paradigme Programmation événementielle , programmation procédurale
Conçu par Khaled Mardam-Bey
Développeur Khaled Mardam-Bey
Première apparition 1995  ( 1995 )
Discipline de frappe Typage dynamique
OS Microsoft Windows
Licence Logiciel propriétaire
Extensions de nom de fichier .mrc, .ini
Site Internet http://mirc.com
Les principales mises en œuvre
mIRC AdiIRC
éditeur de scripts mIRC (intégré)

Le langage de script mIRC (souvent abrégé officieusement en « mSL ») est le langage de script intégré à mIRC , un client IRC pour Windows .

Utilisations principales

  • Protection des canaux et des personnes contre tout type d'attaques (inondation, spam, inondation CTCP, etc.).
  • Des fenêtres de dialogue peuvent être créées dans mIRC pour mieux servir la compatibilité des utilisateurs.
    • Les extensions de mIRC populaires comprennent MDX ( m IRC D ialog Ex tension) et DCX ( D ialog C ontrol Ex tension). Il existe également quelques versions de mdx.dll et dcx.dll modifiées par les pirates IRC.
  • Bots qui fournissent une gestion automatisée des canaux IRC, des jeux-questionnaires ou d'autres jeux, et d'autres fonctions souhaitées pour les chatteurs.
  • Commandes qui économisent la saisie ou simplifient la vie sur IRC (comme l' identification automatique en tant que propriétaire d'un surnom).

Stockage des scripts

Les scripts sont stockés soit sous forme de fichiers texte brut, généralement avec une extension de fichier .mrc , soit sous forme de fichiers INI . Cependant, ils peuvent être stockés avec n'importe quelle extension. Plusieurs fichiers de script peuvent être chargés en même temps, bien que dans certains cas, un script entrera en conflit avec un autre et empêchera l'un ou les deux de fonctionner correctement.

Caractéristiques linguistiques

Le langage de script mIRC utilise sa propre nomenclature pour faire référence aux constructions de langage. (Cependant, bien que cela puisse être un peu déroutant pour les nouveaux arrivants, cela n'a pas d'impact sur la fonctionnalité de mSL.)

  • Les fonctions intégrées sont appelées commandes ou, si elles renvoient une valeur, identificateurs .
  • Les fonctions de script personnalisées sont appelées alias . Les alias qui renvoient une valeur sont appelés identificateurs personnalisés . Les deux sont appelés à partir de la ligne de commande ou d'autres parties d'un script de la même manière que les commandes et identificateurs intégrés (et peuvent même les remplacer).
  • Les fenêtres contextuelles sont des éléments de menu contextuel scriptés . Les fenêtres contextuelles sont appelées lorsqu'elles sont sélectionnées par l'utilisateur. Le terme faisait à l'origine référence aux menus, qui apparaissent lors d'un clic droit. Il est toujours utilisé de cette manière dans le manuel.
  • Les télécommandes sont des scripts de gestion d'événements . Les télécommandes sont appelées lorsque l'événement qu'elles gèrent se produit.
  • Toutes les variables sont typées dynamiquement .
  • Les scripts mIRC utilisent des sigils . Les identificateurs (qu'ils soient personnalisés ou intégrés) sont précédés de $ , les variables binaires sont précédées de & et les autres variables (locales ou globales) sont précédées de % . Les commandes et les alias ne sont précédés d'aucun caractère particulier (bien que lorsqu'ils sont entrés à partir de la ligne de commande d'une fenêtre, ils doivent généralement être précédés du préfixe de commande / ).

La gestion des fichiers

  • Les scripts peuvent lire et écrire dans des fichiers [ $read(file,[args]) | /write ]

Ce qui précède est destiné à un accès unique au fichier. Parce que chaque fois que vous émettez $read ou que /write vous ouvrez et fermez le fichier pour y accéder. Les accès multiples, au cours d'une boucle par exemple, sont mieux gérés via /fopen , /fwrite et /fclose . Puisque cela ouvre le fichier une seule fois. Dans certains cas /filter , /savebuf c'est une méthode encore plus efficace (boucle non scriptée).

  • Les scripts peuvent également copier et supprimer des fichiers. [ /copy | /remove ]

Variables binaires

  • Contient des données brutes illimitées (8192 octets avant mIRC 6.1)
  • Accessible dans le monde entier via des commandes et des identifiants
  • Désactivé automatiquement lorsque le script renvoie le contrôle à mIRC (et non à une autre partie d'un script)
  • Préfixé par & (par exemple &Variable )
  • Ne peut pas être accédé autrement que par /bread et /bwrite , donc ces variables ne peuvent pas être transmises à d'autres parties du script

Tables de hachage

  • Peut contenir des données binaires illimitées ou jusqu'à 4 150 octets (950 avant mIRC 6.32) de texte brut. Cette limite est imposée par la propre limitation de longueur de ligne de l'analyseur de script de mIRC (sauf si une variable binaire est assignée)
  • Accessible dans le monde entier via des commandes et des identifiants
  • Désactivé automatiquement lors de la sortie de mIRC car ils ne sont stockés qu'en mémoire
  • Peut être enregistré pour une utilisation ultérieure
  • Non préfixé
  • Plus rapide que d'accéder à partir d'un fichier, car les tables de hachage sont stockées en mémoire plutôt que sur le disque dur
  • Taille limitée uniquement par les limites de la mémoire de l'ordinateur.
  • Permet d'utiliser n'importe quelle taille de godet

Variables globales

  • Peut contenir jusqu'à 4150 octets (950 avant mIRC 6.32) de données, y compris son nom (cependant, en raison des limitations de longueur de ligne dans l'analyseur de script de mIRC, un maximum de 4146 octets peut être attribué explicitement en utilisant / set ou / var - ce nombre décroissant à mesure que le nom de la variable s'allonge)
  • Impossible de stocker les espaces NUL (ASCII 0) ou de fin
  • Globalement accessible
  • Ne pas désactiver automatiquement sauf si un commutateur est utilisé (stocké automatiquement dans un fichier d'initialisation mIRC)
  • Préfixé par % (par exemple %Variable )
  • Créé à l'aide de la set commande ou var -g ou de la %Variable = value notation

Variables locales

  • Peut contenir jusqu'à 4150 octets (950 avant mIRC 6.32) de données, y compris le nom de la variable (cependant, en raison des limitations de longueur de ligne dans l'analyseur de script de mIRC, un maximum de 4146 octets peut être attribué explicitement à l'aide des commandes / set ou / var - ce nombre diminue à mesure que le nom de la variable s'allonge)
  • Peut stocker des espaces NUL (ASCII 0) ou de fin
  • Sont détruits lorsque l'alias ou l'événement déclenché se termine
  • Préfixé par % (par exemple %Variable )
  • Créé à l'aide de la var commande. var est simplement un alias interne pour set -l mais var pose le moyen de déclarer plusieurs variables locales sur une seule ligne (par exemple var %a = 1, %b, %c = 2 )

Limites

  • L'analyseur de scripts prend en charge un maximum de 8 292 (950 avant mIRC 6.32) caractères par ligne (sans compter les retours à la ligne ni l'indentation).
  • Les chaînes ne sont pas incluses dans la syntaxe, ce qui crée des ambiguïtés dans le code où les caractères signifiés comme des chaînes littérales sont traités comme faisant partie de la syntaxe du langage .
  • Chaque ligne de code est décomposée en un ensemble de jetons délimités par des espaces. Comme l'analyseur de mIRC ne prend pas en charge les jetons nuls et que le langage ne fournit pas de syntaxe pour différencier clairement les chaînes littérales du code; Avant la version 6.2 de mIRC, il était impossible de passer plusieurs espaces consécutifs à une commande ou un alias. Cependant, cela a été corrigé avec l'introduction de la commande returnex qui permet la préservation des espaces.

Exemples de code

Le code ci-dessous est au format des scripts distants. Si elles sont placées dans un fichier alias, les noms des commandes ne doivent pas être précédés du mot " alias ". Les commentaires de test incluent le commun /* comment */ et ;comment .

Voici un exemple d' alias Hello World :

;Defines the alias 'hello' in the remote script

;Note: if this is placed in an alias script,
;the 'alias' part must be removed (result: hello {)
;Usage: /hello

alias hello {

  ;Displays(/echo) 'Hello World!' into the active window(-a)
  echo -a Hello World!

}

Un script distant pour répondre automatiquement à certains textes

;Placed in a remote script

;When a user types Hello! in a channel,
;you answer back: Hello, [nickname]!

on *:TEXT:Hello!:#:{ msg $chan Hello, $nick $+ ! }

;When a user types Hello! in a private message,
;you answer back: Hello, [nickname]!

on *:TEXT:Hello!:?: { msg $nick Hello, $nick $+ ! }

;Here is a script which automatically gives voice to a user
;who joins a particular channel (The Bot or user should have HOP)

on *:JOIN:#?: { mode $chan +v $nick }

;A bad word script

on *:Text:die*:#: { .mode $chan +b $nick | kick $chan $nick Dont say that again }

Voir également

Les références

Liens externes