Visual IRC (ViRC ) - это открытый источник клиент Internet Relay Chat для Windows операционная система. В отличие от многих других IRC-клиентов, почти все функциональные возможности ViRC управляются включенным IRC-скриптом, в результате чего поведение программы может быть расширено или изменено без изменения исходный код.
Содержание
- 1 История
- 2 По сравнению с
- 2.1 Хранение сценария
- 2.2 Блоки, которые могут быть определены в сценарии
- 2.3 Хранение данных
- 2.3.1 Файлы
- 2.3.2 Переменные
- 2.3.3 Ассоциативные массивы
- 2.3.4 Псевдопеременные
- 2.4 Примеры кода
- 3 Ссылки
- 4 Дополнительная литература
- 5 Внешние ссылки
История
- Visual IRC (16-бит) - выпущен в 1995 году для Windows 3.x, написан MeGALiTH. Эта программа имела много встроенных функций, но она также могла быть написана сценариями с помощью VPL (), предшественника и по сравнению с.
- Visual IRC '96 (и позже Visual IRC '97, Visual IRC '98) - Выпущен в 1996 г., автор - MeGALiTH. Это была первая 32-битная версия ViRC, написанная для Windows 9x / NT. Многие функции, которые были встроены в 16-битный ViRC, обрабатывались сценарием по умолчанию в ViRC '96. ViRC '98 содержал некоторый код, предоставленный AKA «Mr2001», в частности, усовершенствования механизма ViRCScript. язык сценариев несовместим с более ранней версией. В более поздних версиях были добавлены функции голосового чата и видеоконференцсвязи.
- Разработка второй версии замедлилась, и к 2000 году Visual IRC оказался мертв. Первоначальный автор MeGALiTH (Адриан Кейбл) передал исходный код пользователю Mr2001 (Джесси МакГрю), который ранее предоставил некоторый код и который тайно разрабатывал клон под названием (BIRC). Вместо того, чтобы перезапускать разработку кодовой базы ViRC '98, он объединил некоторые функции ViRC '98 в BIRC и выпустил его как Visual IRC 2.
- Visual IRC 2 - впервые выпущен Mr2001, по совпадению в 2001 году, эта версия Язык сценариев Versus основан на ViRCScript, но внутри он был почти полностью переписан. Фактически, ViRC 2 разделяет всего несколько сотен строк кода с ViRC '98. Функции голосовой и видеоконференцсвязи были удалены в этой версии, потому что библиотеки , используемые для их реализации, больше не поддерживаются.
Большая часть исходного кода для BIRC, ViRC 2 и связанных утилит была выпущена под GPL через веб-сайт проекта и SourceForge.
Versus
Versus - это язык сценариев, изначально разработанный для IRC-клиента, и в настоящее время используется с Visual IRC. Он во многом похож на языки сценариев, используемые ircII и mIRC, а также Tcl и C.
Имя "Versus" было выбрано, потому что его можно было сократить до «VS», которое было обычным сокращением для языка, используемого Visual IRC '96 - '98. Versus оставался в основном обратно совместимым с ViRCScript, поэтому существующая документация и комментарии, в которых упоминалось «VS», остались в основном точными в применении к Versus. Название также намекало на происхождение BIRC как замены ViRC.
Object Versus, или OVS, относится к объектно-ориентированным функциям Versus. Скрипты могут определять классы и работать с объектами и методами вместо текстовых данных и псевдонимов ; однако на практике OVS в основном используется для управления объектами VCL, составляющими интерфейс ViRC.
Хранение сценариев
Сценарии хранятся в файлах, обычно с расширением файла.vsc , хотя иногда используется расширение.lib. Файл сценария Versus просто содержит операторы, которые должны интерпретироваться при загрузке сценария; любые блоки, определенные в сценарии (см. ниже), заменят блоки, определенные с тем же именем в предыдущих сценариях.
Блоки, которые могут быть определены в сценарии
- Псевдонимы - это подпрограммы. Их можно вызвать из командной строки любого окна или из других частей скрипта. Псевдонимы, возвращающие значение, называются функциями; псевдоним может определять, должно ли оно возвращать значение, а затем действовать как функция или команда соответствующим образом.
- Классы используются в объектно-ориентированных сценариях (OVS). Каждый класс может содержать свойства, методы, конструктор и деструктор.
- События используются для обработки сообщения от IRC сервера, а также определенные события на уровне системы или клиента, такие как завершение передачи файла или открытие нового окна.
- События сервера используют регулярные выражения или собственные символы подстановки Versus для сопоставления сообщений от сервера. Если несколько событий сервера соответствуют конкретному сообщению, будет выполнено только одно с наивысшим приоритетом (рассчитанное на основе длины шаблона и относительного «значения» подстановочных знаков в нем).
- Клиентские события идентифицируются с помощью имя: например, и будут запускаться при открытии нового окна. Они также могут включать шаблоны, которые ограничивают конкретные события, которые могут вызвать это событие (например, запускаться только при создании нового окна канала).
- Деревья меню и пункты меню определяют контекстные меню, которые могут появляться для различных элементов клиентского интерфейса, а также главное меню, которое всегда отображается. Блоки дерева меню определяют макет меню и задают заголовки для каждого элемента; блоки элементов меню определяют код сценария, который будет выполняться при щелчке по элементу.
- Панели инструментов и элементы панели инструментов аналогичны дереву меню и блокам пунктов меню, но они определяют панели инструментов связан с каждым окном. Новые панели инструментов могут быть добавлены в интерфейс, просто выбрав уникальное имя.
Псевдонимы, методы (включая конструкторы и деструкторы), события, пункты меню и элементы панели инструментов называются процедурами или блоками кода.
Хранение данных
Файлы
- Скрипты могут обращаться к файлам с помощью функций $ RandomRead () и $ ReadLine (), а также команд CreateFile и AppendText.
- Скрипты могут также используйте класс TStringList VCL для чтения всего текстового файла в память, управления им и сохранения.
Переменные
- Все переменные могут содержать до 4 ГиБ data.
- Имена переменных начинаются со знака доллара ($) и прописной буквы, строчной буквы или символа подчеркивания.
- Переменные могут содержать любые символы, хотя обычно они используются для печатаемого текста.
- Локальные переменные устанавливаются с помощью команды
@L
и существуют только в контексте подпрограммы, которая их создала. Они удаляются, когда процедура заканчивается. Некоторые локальные переменные предопределены, например $ C для имени текущего канала. - Глобальные переменные устанавливаются с помощью команды
@
, и к ним можно получить доступ из любой процедуры. Они удаляются при выходе клиента. Псевдонимы могут возвращать значение, задав глобальную переменную $ fresult. - Сохраненные переменные устанавливаются с помощью команды
@S
и, как и глобальные переменные, доступны где угодно. Их значения немедленно сохраняются в постоянном хранилище и восстанавливаются при следующем запуске клиента.
Ассоциативные массивы
- Ассоциативные массивы сопоставляют ключи со значениями.
- Ключи и значения могут содержать до 4 ГиБ данных без ограничений на разрешенные символы.
- Локальные, глобальные и сохраненные значения массива могут быть установлены с помощью команд
@L
, @
и @S
, и они ведут себя так же, как соответствующие переменные. Когда установлено значение сохраненного массива, сохраняется весь массив. - Синтаксис
$ arrayyname [key]
используется для установки или извлечения значения для определенного ключа. - Синтаксис
$ arrayyname
сам по себе обрабатывает массив как список пар ключ-значение, позволяя сценарию установить все содержимое массива сразу или выполнить итерацию по уже имеющимся ключам.
Псевдопеременные
- Псевдопеременные (или pvars) похожи по синтаксису на переменные, но их значения не могут быть изменены.
- pvars от $ 0 до $ 9 содержат параметры, которые были переданы текущей подпрограмме, по порядку. $ 0 содержит имя подпрограммы, $ 1 содержит первое слово строки параметров и т. Д.
- pvars от $ 0- до $ 9- содержат параметры, которые были переданы текущей подпрограмме, а также все следующие параметры. $ 0- содержит имя процедуры и всю строку параметров, $ 1- содержит все параметры, $ 2- содержит все параметры после первого и т. Д.
- Специальная последовательность
$? = "PROMPT STRING"
вызывает диалоговое окно, предлагающее пользователю ввести значение.
Примеры кода
Вот пример кода Hello World :
Псевдоним HELLO TextOut>$ C clBlack Привет, мир! EndAlias
Вот пример для подсчета до десяти:
Псевдоним TEN для (@l $ i = 1; $ i <= 10; $i++) TextOut>$ C clBlack $ i endfor EndAlias
Вот пример, чтобы сделать всех в текущем канале оператора :
Псевдонимом MASSOP foreach ($ a, $ b, $ c, $ d; $ nicklist ($ C)) Mode $ C + oooo $ a $ b $ c $ d endforeach EndAlias
Ссылки
Дополнительная литература
Внешние ссылки
- Портал бесплатного программного обеспечения с открытым исходным кодом
.