Web Вход

 

Творим mIRC скрипты своими руками - Автор: X-Koder (Ульянов Василий)

Скриптинг... кодинг... для кого-то эти слова ничего не значат, а для кого-то это наооборот стало профессией, которой они зарабатывают себе на жизнь. В это статье будет рассмотрен именно скриптинг, так кодить я умею, пожалуй, только на Perl'е (и то на уровне beginner ;)). Скриптовать мы конечно будем под IRC, так как наш проект вроде не предназначен для обзорных статей по скриптованию мухорчатых сусликов 8). Теперь надо решить под что мы будем заниматься этим трудным ремеслом :). Наш выбор не особо обширен: mIRC, *nix клиенты, Bersirc, Klient. К сожалению я не юниксоид, следовательно, *nix клиенты откидываем (хотя, ты можешь прочитать о X-Chat & KVirc в статьях SHuRuP'а (ищи в разделе "Статьи")). Дальше идут Bersirc и Klient. Klient шароварный (~30 $ чтоли :)) и крека я к нему не нашел (но, имхо, лучший клиент за всю история клиентостроения :)). Bersirc уже давно не обновлялся, хотя автор заверяет, что скоро выйдет Bersirc 2.0, но пока его нет, а популярность берсирка падает :(. Остается самый популярный клиент во всем мире (и это не "имхо"! Это доказывает статистика :)) - mIRC. Под него и будем скриптовать.
Примечание: под mIRC содержиться уже более 400 полноценных скриптов и более 1000 scriptlet'ов
mIRC обладает своим языком скриптов, то есть это не PerlScript, WSH или еще что-то. Язык специально оптимизирован под irc, так что в освоение достаточно просто. Прилагается очень хороший хелп к нему. Правда, он на английском, но я видел русский хелп к мирку 5.6 (а основы языка там остались те же), когда найду выложу в разделе Soft.

А где мы все пишем? :)
Все пишется в основном в 3 менюхах: Aliases\Алиасы & Popups\Менюшки & Remote\Скрипты. Вызывается это все кликом по значкам алиасов\менюшек\скриптах:


В алиасах пишутся алиасы команд :). Например, как тебе удобнее набраться /j scripting или /join #scripting? Конечно же первое. В алиасах это будет выглядеть так:


Popups\Менюшки нужны для написания своих собственных менюх. Например, тебя бесит, что при нажатии правой кнопой мыши на ник возникают английские кракозяблы? :) Это очень легко исправить, зайдя в Popups. Здесь я не буду долго все объяснять, так как здесь все вроде бы ясно по дефолтному скрипту (если у тебя его нет, значит скачал неполноценный\кривой мирк). И, наверное, самое главное - Remote\Скрипты. В нем пишется основа твоего скрипта. О Remote я расскажу ниже.



Переменные - основа основ
В мирке конечно-же есть переменные и их замечательная особенность, что они сохраняются даже при выходе из скрипта! Все переменные префиксуются знаком %. Например, %nick. Задаются они командой /set переменная значение. Переменные делятся на глобальные (задаются командой, показанной выше) и локальные (/var переменная значение), которые работают только в теле алиаса\remot'а. Переменные все можно вывести в одном окне, для этого надо войти в Remote\Скрипты и переключиться на закладку Переменные\Variables:



Aliases\алиасы
Алиасы являются своеобрызным сокращением команд. Например (как уже говорилось выше), можно заменить /join #channel на /j channel. Это очень удобно. Для начала напишем простенький скрипт идентификации к NickServ (кто не знает - не виноват :)). Это будет выглядет так:
; точкой с запятой обозначаются комментарии
i identify пароль_на_ник
Скрипт в принципе простейший и ничего особенного я тут не вижу :). i - имя алиаса, то есть это то, что будет "как бы" вводится в командной строке, а identify пароль_на_ник - это "расшифровка" сокращения. Теперь давайте возмем пример посложней, где мы будем оперировать с $$1, $2-.
; стандартный скрипт сокращеннго захода на канал
j join #$$1 $2-
Теперь поясняю, $$1 - первое слово в коммандной строке после алиасы, то есть первый параметр (/j scripting 31337), $2 - второй параметр (/j scripting 31337). Очень многие спрашивают, в чем разница между $$1 и $1. Если стоит второй знак $, то это значит не выполнять скрипт если нет первого параметра. То есть если мы наберем команды /j, то при $$1 у нас команда не выполнится, а при $1 будет равносильно /join #. Разберем $2-. $2 - второй параметр, а $2- (с черточкой) значит начиная со второго параметра и до конца. Это сделано для, того чтобы можно было зайти на канал с паролем.

Popups
Попапы нужны для написания собственных менюшек. Например, когда ты кликаешь на ник правой кнопой мыши, перед тобой возникает меню в духе такого: whois, control, kick, ban... etc. Это написано в Popups. Очень удобная вещь. Формат такой:
Первое меню
  .Подменю: команда2
  .Подменю2
    ..Еще одно подменю: команда3
Подробнее о разных видах меню (меню в статусе, канале, никлист, приват, общее) я раскажу в следующей статье этого цикла.

Remote
Этому разделу можно посвятить отдельную книгу :). Remote - система триггеров, основа твоего скрипта. В Remote пишутся события и прописывается структура окон (о структуре и создании окон поговорим тоже в следующей статье ;)). Рассмотрим события. Формат всех событий такой: ON level:TRIGGER:...some parameters...: { сам скрипт }
level - уровень пользователя. В это статье тоже не будем об этом. Ставь здесь 1, и все будет ok ;)
TRIGGER - название события, например TEXT, NOTICE, AWAY, KICK, BAN... и т.д. Всего событий - 63 (в mIRC 6.0)
...some parameters... - параметры, присущие триггерам (aka событиям). У разных триггеров они разные
сам скрипт - ну сам скрипт, т.е. команды.
Хинт: если у вас большой скрипт то можно писать не ON *:*:{ do something } (* - какие-то параметры), а:
ON *:*:{
  command1
  command2
}
В принципе в общих чертах это все. Перейдем к конкретным примерам.
Начнем, пожалуй, с авторитизации на NickServ'е (если кто не знает, это сервис по управлению никами). Как мы можем посторить автоматизировать авторитизацию? Если мы не авторитизированы NickServ на кидает нотисы:
-NickServ- Этот ник зарегистрирован и охраняется. Если это Ваш ник,
-NickServ- введите /NickServ IDENTIFY пароль. Иначе выберите
-NickServ- пожалуйста другой ник.
-NickServ- Если Вы не смените ник в течение 20 секунд, Ваш ник будет изменен принудительно.
Сделаем триггер на первый нотис: "Этот ник зарегистрирован и охраняется. Если это Ваш ник," (почему именно на первый? Чтобы быстрее ответить! ;)): ON 1:NOTICE:Этот ник зарегистрирован и охраняется. Если это Ваш ник,:?: { }. Первый параметр (с текстом), это обозначает при каком тексте будет срабатывать триггер. Второй параметр - ? - обозначает, что триггер будет срабатывать только при приватном нотисе. Вместо ? можно поставить # (будет срабатывать при нотисе на весь канал), #scripting (будет срабатывать только при нотисе на #scripting), * (будет срабатывать при любом нотисе). Дальше напишем реакцию на нотис, это будет элементарный алиас, рассмотренный выше: i. Потом сделаем проверку: а NickServ ли нам это пишет? - if ($nick != NickServ) { halt }. Команда halt останавливает выполнение скрипта. В итоге у нас получиться:
ON 1:NOTICE:Этот ник зарегистрирован и охраняется. Если это Ваш ник,:?:{
  if ($nick != NickServ) { halt }
  i
}
$nick - это ник чела, который нам послал мессагу.
Теперь перейдем к условным операторам, которые мы использовали в это скрипте...

Условный оператор
Я надеюсь, что ты знаешь, что такое условный оператор, поэтому не буду объяснять, что такое if. Расскажу лишь формат команды: if (%var1 == %var2) { do something }. То есть само условие берется в скобочки, а действие, которое произойдет при выполнение условия в фигурные скобки. Существует много операторов (оператор - == или != и т.д.), в это статье я расскажу об основных:

== равно
=== равно (с учетом регистра)
!= не равно
< меньше
> больше
<= меньше либо равно
>= больше либо равно
isin $var1 содержит в себе $var2
isincs то же самое, что isin, только регистрозависимый
ison Nick isin #lamer - чел присутствует на канале #lamer
isop он там оп?!
isvoice да еще и войсик? :)
isaop в твоем автооп листе
isavoice в твоем автовойс листе
isignore в твоем игнор листе
isprotect в твоем протект листе
isnotify в твоем нотифи листе

Внимание! автооп, автовойс листы - это нет AOP и VOP! Это твой личный автооп, автовойс лист, который ты настраиваешь в своем влиенте!

P.S.
Наверное, на этом я и закончу первую статью в этом цикле по mIRC скриптингу. Здесь рассказано очень мало, так как автор мирка ухитрился создать целый независимый язык программирования... Через некоторое время появится новая статья по mIRC скриптингу, где мы рассмотрим более сложные операторы и конструкции, научимся заменять стандартные CTCP reply'и (несмотря даже на то, что mIRC упорно послыает свою версию на CTCP VERSION!), посмотрим на $iif... Но даже в десяти статьях я не смогу рассказать все о скриптинге в мирке, поэтому читай помощь, в котором все очень хорошо написано и объяснено. Если ты не сведущ в английском, то скачай русский хелп к мирку .

Ссылки
Здесь находятся линки на весь софт, который использовался в статье.
http://mirc.com/ - сайт mIRC'а, там ты можешь скачать его свежую версию
http://bersirc.com/ - сайт Bersirc'а
http://klient.com/ - сайт Klient'а
http://nixp.ru/cgi-bin/go.pl?q=soft&s=irc - *nix irc клиеты

Copyright (с) 2004-2005 by Vozotron