Все частіше і частіше користувачі мережі IRC замислюються про те, як зробити своє спілкування в мережі найбільш комфортним і безпечним. На попит, як то кажуть, і пропозиція знайдеться. У зв'язку з цим стали з'являтися всілякі скрипти, такі як Shutdown, Neo-ra, Xapok etc. Здавалося б, качай і користуйся, аж ні, як показує практика, скрипти такого роду мають ряд суттєвих недоліків і занадто перенасичені часом всілякими, абсолютно не потрібними фичами. У зв'язку з цим все частіше і частіше можна чути питання про те, як же написати свій власний скрипт. У цій статті на конкретних прикладах ми постараємося показати вам, як створити свій власний скрипт. Хотілося б відразу обмовитися, що все нижче викладене буде ставитися до IRC-клієнта mIRC.
Так що ж таке скрипт? Cкриптов - це додаткова підпрограма, що модифікує ваш IRC-клієнт і дозволяє автоматизувати деякі процеси. Наприклад, для того, щоб кікнути або забанити людини, який викинув вас з каналу, вам доведеться написати спочатку. а потім
А скрипт допоможе здійснити ці операції гранично швидко і просто. Досить буде клікнути мишкою по потрібному пункту меню.
Давайте спробуємо розібратися яким чином це працює в mIRC. У ньому є кілька розділів, які і відповідають за всі дії, що здійснюються в IRC. Одним з них є розділ Remote (події) - стежить за всім, що відбувається у вікнах вашого mIRC. Наступний розділ: Aliases. Aліаси відповідають за всілякі скорочені команди. Тобто замість того, щоб набирати
, можна створити Aliases, який буде виконувати цю команду, скажімо при натисканні F7 або будь-який інший клавіші, на ваш розсуд. Ще один розділ, який буде нас з вами цікавити: Popups (спливаючі вікна). Popups - це вискакують менюшки. Ви просто клацніть по ніку або у вікні каналу і вибираєте потрібний вам пункт, який зробить ту чи іншу запрограмоване раніше дію. Users - секція зберігання переліку користувачів з призначеним рівнем доступу для кожного. Variables - відповідає за зберігання постійних змінних і їх значення.
Викликати список всіх цих розділів можна клікнувши по іконці або вибравши в меню Tools відповідний підрозділ.
Пізніше ми розглянемо кожен розділ більш докладно. Але так як без знання синтаксису, змінних, ідентифікаторів і команд ми скрипт ну ніяк не напишемо. То давайте з ними і познайомимося.
команди IRC
Ознайомтеся з командами IRC. Ось найбільш часто вживані. IRC команди призначені для виконання дій на IRC, наприклад для управління каналами.- увійти на канал
- покинути канал
- виводить список доступних каналів. наприклад:
- вивести всі канали
- вивести всі канали, на яких знаходиться від 10 до 20 осіб, містять в назві букву w
- повідомити в поточний канал (приват) про своє дії
Символ називається командним префіксом і не є частиною команди. Він служить для вказівки мирку того, що вводиться рядок є командою. Так само може використовуватися префікс. що змушує mIRC обчислити підставлені в команду ідентифікатори і префікс. блокуючий будь висновок тексту на екран:
У тілі скрипта використання префікса. при цьому дія будуть виконано, якщо умова істинна.
Оператори порівняння:
- == - одно (без урахування регістру)
- === - одно (з урахуванням регістру)
- != - не дорівнює
- <- меньше
- > - більше
- <= - меньше или равно
- > = - більше або дорівнює
- isin - подстрока знаходиться в рядку (z isin Zmey | істина)
- isincs - подстрока знаходиться в рядку (з урахуванням регістру) (z isin Zm ey | брехня)
- iswm - маска відповідає заданим зразком (*!*@zmeya.net iswm [email protected] | істина)
- isnum - число знаходиться в діапазоні (параметр діапазон - опціональний) (7 isnum 5-9 | істина)
- isletter - буква є в рядку
- isalnum - текст містить тільки літери і цифри
- isalpha - текст містить тільки літери
- ison - нік на каналі
- isop - нік оператор на каналі
- isvoice - нік має право голосу на каналі
- isreg - нік звичайний користувач на каналі
- ischan - нік знаходиться на одному каналі з вами
- isreg - нік - нормальний нік на каналі
Ідентифікатор $ ifmatch повертає перший параметр порівняння. Наприклад, якщо умова виглядає так: if (Zmey ison #help). то $ ifmatch поверне Zmey
Ідентифікатор $ null використовується в порівняннях, для визначення містить змінна значення чи ні.
Оператори порівняння можна комбінувати, використовуючи символи:
- логічне і
|| - логічне або
Префікс. (Заперечення)
Заперечення логічних виразів може бути побудовано в такий спосіб:
Zmey! Ison #help - Zmey не перебуває на каналі хелп
w! isin zmey - w не перебуває у рядку zmey
Так само. може бути використаний для визначення містить змінна значення. Наведені умови ідентичні:
if (% x == $ null) echo змінна x не містить значення
if (!% x) echo змінна x не містить значення
цикли:
У mIRC застосовується тільки один вид циклів - while. Його формат:
наприклад:
Команди безумовного переходу:
- -безумовний перехід до мітці
- - зупиняє виконання скрипта і передає управління викликає процедуре.В якості опціонального параметра може використовуватися повертається ідентифікатором значення.
- - зупиняє виконання скрипта і припиняє подальшу обробку.
приклад:
- ACTION - повідомлення від третьої особи (/ me).
- TEXT - текстові повідомлення користувачів (не свої)
- BAN - установка бан (+ b)
- DEOP - зняття опа (-о) з кого-небудь
- DEVOICE - зняття Войса (-v)
- INPUT - натискання клавіші Enter, після введення тексту повідомлення
- INVITE - запрошення на канал
- JOIN - візит кого-небудь на канал
- KICK - кік кого-небудь з каналу
- MODE - зміна модов каналу
- NICK - зміну ника
- NOTIFY - користувач з нотіфі-листа заходить на IRC
- NOTICE - отримання нотиса
- OP - отримання опа (+ о)
- OPEN - відкриття вікон
- TOPIC - зміна топіка
- UNBAN - зняття бана (-b)
- UNOTIFY - користувач з нотіфі-листа залишає IRC
- USERMODE - зміна власних користувальницьких модов
- VOICE - отримання Войса (+ v)
<префикс> - задає обмеження на рівні. Існують наступні префікси:
- + - скрипт спрацює тільки для користувачів, рівень яких не перевищує заданий
- * - скрипт спрацює для всіх користувачів
- ! - скрипт спрацює для всіх, крім себе
- - скрипт не спрацює, якщо попередній скрипт був зупинений командою / halt або / haltdef
- @ - скрипт спрацює тільки якщо використовує скрипт має оп на каналі на якому він спрацював
<фильтр> - фільтр на подію. Скрипт спрацює тільки якщо подія містить в параметрах рядок задовольняє фільтру. Можливі наступні варіанти:
- * - будь-який текст
- - будь-яке слово
- text - текст, що складається з слова text
- text * - текст, що починається зі слова text
- * Text - текст, що закінчується словом text
- * Text * - текст, що містить в собі слово text
<место> - місце спрацювання скрипта.
Пропускаються тільки події виникли в певному місці. Можливі наступні варіанти:
- ? - будь-яка подія в публічному чаті
- # - будь-яка подія на каналі
- #zoo - будь-яка подія на каналі #zoo
- #s outhnet, # zoo - будь-яка подія на каналах #southnet і #zoo
- * - будь-яка подія на каналі або публічному чаті
приклади:
Якщо хто-небудь напише на будь-якому каналі слово Zмей або zмей, то скрипт видасть на канал повідомлення "тільки що - відразу змій".
Якщо хто-небудь напише на каналі #southnet фразу містить слово "трахнути", то скрипт видасть на канал повідомлення "дивись як би самого НЕ трахнув"
Якщо хтось виконує на будь-якому каналі стрілялки на ваш поточний нік, то скрипт видасть в канал стрілялки
Якщо ваш нік змінюється на нік, записаний у змінній% myname, то він ідентифікується, якщо ж ваш нік змінюється на нік з "лапками" (таке відбувається при сплите) то він змінюється назад на нік без лапок і, відповідно, ідентифікується.
Відбувається при Деопіт на одному з каналів записаних в змінну% mychanlist. Якщо деопнулі вас, причому ви деопнулісь не власними, то вам повертається оп, а кривдник деопается (для цього використовується чансерв).
спливаючі меню
mIRC дозволяє створювати свої спливаючі меню для всіх видів вікон: вікна статусу, вікна списку ніків, вікна каналу, вікна Привату і для меню Commands головного меню.
Формат опису спливаючого меню :. де <глубина> - глибина вкладеності елемента меню (одна або кілька точок).
<наименование> - найменування меню або роздільник позначається символом "-".
<команды> - реакція на подію, що складається з довільного числа викликів команд.
Для вказівки типу меню необхідно вибрати в меню View вікно, в якому це меню буде з'являтися (Status, Channel, Query / chat, Nickname list, Menubar)
Приклад (меню для вікна каналів): Повернувся: / AWAY | / NICK% myname Відійшов .Не далеко. Зайнятий: AWAY Ну дуже зайнятий. | NICK% myname $ + [busy]. Відійшов: AWAY Десь тут. | NICK% myname $ + [away] .Далеко. Є: AWAY Співаємо і прийду. | NICK% myname $ + [eat]. Пішов: AWAY Ні мене за визначенням | NICK% myname $ + [out] .Отошел (куди): AWAY $? = "Повідомлення:" | NICK% myname $ + $$? = "Додаткова частина ника:" Пішов .Спать: QUIT добраніч | EXIT .На роботу: QUIT пішов на роботу | EXIT .Учіться: QUIT пішов вчитися | EXIT - Rejoin: / hop