язык сценариев mIRC - mIRC scripting language

Язык сценариев mIRC
Парадигма Событийное программирование , процедурное программирование
Разработано Халед Мардам-бей
Разработчик Халед Мардам-бей
Впервые появился 1995 г.  ( 1995 )
Печатная дисциплина Динамический набор текста
Операционные системы Майкрософт Виндоус
Лицензия Проприетарное программное обеспечение
Расширения имени файла .mrc, .ini
Интернет сайт http://mirc.com
Основные реализации
mIRC AdiIRC
редактор скриптов mIRC (встроенный)

Язык сценариев mIRC (часто неофициально сокращенно « mSL ») - это язык сценариев, встроенный в mIRC , клиент IRC для Windows .

Основное использование

  • Канальная и персональная защита от любых типов атак (флуд, спам, CTCP флуд и др.).
  • Диалоговые окна могут быть созданы в mIRC для лучшей совместимости с пользователем.
    • Популярные Mirc диалогового расширение включает MDX ( м IRC - D ialog Пример натяжение) и DCX ( D ialog C ontrol Ex натяжения). Есть также несколько версий mdx.dll и dcx.dll, модифицированных IRC-хакерами.
  • Боты, которые обеспечивают автоматическое управление IRC-каналом, викторины или другие игры, а также другие желаемые функции для болтовни.
  • Команды, которые сохраняют набор текста или иным образом упрощают жизнь в IRC (например, автоматическое определение владельца псевдонима).

Хранилище скриптов

Сценарии хранятся либо в виде текстовых файлов, обычно с расширением .mrc , либо в виде файлов INI . Однако они могут храниться с любым расширением. За один раз можно загрузить несколько файлов сценариев, хотя в некоторых случаях один сценарий будет конфликтовать с другим, что приведет к неправильной работе одного или обоих из них.

Особенности языка

Язык сценариев mIRC использует свою собственную номенклатуру для обозначения языковых конструкций. (Однако, хотя это может немного сбить с толку новичков, они не влияют на функциональность mSL.)

  • Встроенные функции называются командами или, если они возвращают значение, идентификаторами .
  • Пользовательские скриптовые функции называются псевдонимами . Псевдонимы, возвращающие значение, называются настраиваемыми идентификаторами . Оба вызываются из командной строки или других частей сценария так же, как встроенные команды и идентификаторы (и даже могут заменять их).
  • Всплывающие окна - это элементы контекстного меню со сценарием . Всплывающие окна вызываются, когда они выбираются пользователем. Первоначально этот термин относился к меню, которое всплывает при щелчке правой кнопкой мыши. Он до сих пор используется в руководстве таким образом.
  • Пульты - это сценарии обработки событий . Пульты вызываются, когда происходит событие, которое они обрабатывают.
  • Все переменные динамически типизированы .
  • Скрипты mIRC используют сигилы . Идентификаторам (настраиваемым или встроенным) предшествует $ , двоичным переменным предшествует & , а другим переменным (локальным или глобальным) предшествует % . Командам и псевдонимам не предшествует какой-либо конкретный символ (хотя при вводе из командной строки окна им обычно должен предшествовать префикс команды / ).

Обработка файлов

  • Скрипты могут читать и записывать в файлы [ $read(file,[args]) | /write ]

Вышеупомянутое предназначено для единственного доступа к файлу. Потому что каждый раз вы выпускаете $read или /write открываете и закрываете файл для доступа. Множественный доступ, например, во время цикла, лучше всего обрабатывать через /fopen , /fwrite и /fclose . Поскольку это открывает файл только один раз. В некоторых случаях /filter и /savebuf является еще более эффективным способом (не Scripted цикла).

  • Скрипты также могут копировать и удалять файлы. [ /copy | /remove ]

Бинарные переменные

  • Содержат неограниченное количество (8192 байта до mIRC 6.1) необработанных данных
  • Доступен глобально через команды и идентификаторы
  • Автоматически сбрасывается, когда скрипт возвращает управление mIRC (а не другой части скрипта)
  • С префиксом & (например &Variable )
  • Доступ к ним возможен только через /bread и /bwrite , поэтому эти переменные не могут быть переданы в другие части скрипта.

Хеш-таблицы

  • Может содержать неограниченное количество двоичных данных или до 4150 (950 до mIRC 6.32) байтов обычного текста. Это ограничение накладывается ограничением длины строки собственного парсера сценариев mIRC (если не назначена двоичная переменная)
  • Доступен глобально через команды и идентификаторы
  • Автоматически сбрасывается при выходе из mIRC, так как они хранятся только в памяти
  • Можно сохранить для дальнейшего использования
  • Без префикса
  • Быстрее, чем доступ из файла, поскольку хеш-таблицы хранятся в памяти, а не на жестком диске
  • Размер ограничен только лимитами памяти компьютера.
  • Позволяет использовать ведро любого размера

Глобальные переменные

  • Может содержать до 4150 (950 до mIRC 6.32) байтов данных, включая его имя (однако из-за ограничений длины строки в парсере сценариев mIRC, максимум 4146 байт может быть явно назначен с помощью / set или / var - это число уменьшается по мере того, как имя переменной становится длиннее)
  • Невозможно сохранить NUL (ASCII 0) или конечные пробелы
  • Доступен во всем мире
  • Не сбрасывать автоматически, если не используется переключатель (автоматически сохраняется в файле инициализации mIRC)
  • С префиксом % (например %Variable )
  • Создано с помощью set команды или var -g или %Variable = value обозначения

Локальные переменные

  • Может содержать до 4150 (950 до mIRC 6.32) байтов данных, включая имя переменной (однако из-за ограничений длины строки в парсере сценариев mIRC максимум 4146 байт может быть явно назначен с помощью команд / set или / var - это число уменьшается по мере того, как имя переменной становится длиннее)
  • Может хранить NUL (ASCII 0) или конечные пробелы
  • Уничтожаются при завершении сработавшего псевдонима или события
  • С префиксом % (например %Variable )
  • Создано с помощью var команды. var является просто внутренним псевдонимом для, set -l но var предоставляет средства для объявления нескольких локальных переменных в одной строке (например, var %a = 1, %b, %c = 2 )

Ограничения

  • Синтаксический анализатор сценариев поддерживает максимум 8 292 (950 до mIRC 6.32) символов в строке (не включая символы новой строки или отступы).
  • Строки не заключены синтаксически, что создает неоднозначность в коде, где символы, обозначенные как буквальные строки, рассматриваются как часть синтаксиса языка .
  • Каждая строка кода разбита на набор токенов, разделенных пробелами. Поскольку синтаксический анализатор mIRC не поддерживает нулевые токены, а язык не предоставляет синтаксиса, позволяющего четко отличать буквальные строки от кода; До mIRC версии 6.2 было невозможно передать несколько последовательных пробелов любой команде или псевдониму. Однако это было исправлено с введением команды возврата, которая позволяет сохранять пробелы.

Примеры кода

Приведенный ниже код находится в формате удаленных скриптов. Если они помещены в файл псевдонимов, перед именами команд не должно стоять слово " alias ". Комментарии к тесту включают общие /* comment */ и ;comment .

Вот пример псевдонима 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!

}

Удаленный скрипт для автоматического ответа на определенный текст

;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 }

Смотрите также

Рекомендации

внешняя ссылка