Тебе не знать, как сделать кульный скрипт для IRC, тоже самое, как не дать слону банан на завтрак в зоопарке. Но если слон протянет и на кашке, то тебе без собственного скрипта будет стыдно даже в зеркало смотреться. Скачать чужой скрипт в инете
— конечно, выход, но для отсталых :). Они даже на новый Х заработать не могут, а что такое скрипт знают понаслышке. Но не будем о грустном, а лучше сделаем свой собственный и самый кульный на всем белом свете скрипт для
IRC

Потопчемся снаружи

Прежде чем что-то начать, нужно сначала подумать головой, с чего начать :). В данном случае нужно сначала определиться, что тебе не хватает для полного счастья в ирке. Ну естественно должно быть сухо и комфортно, а значит требуется скрипт защиты, protection
по-англицки. К сожалению, на данный момент существует очень много версий Mirc, и, что самое главное, в новых версиях появляются новые возможности. В результате скрипты, созданные в
новых версиях, не работают в старых. Печально, но факт. И чтобы не травмировать твою психику фразами «скачай такую-то и только такую-то версию», я пошёл более простым путём. Ты когда-нибудь видел настоящие кульные хацкерские программы навороченными? Оптимизация — главный их конёк! Это сейчас Петенька может взять у своего папы пачку баксов и купить 20-гигабайтный винт, раньше такого себе позволить не могли. Соответственно верхом естества является минимум кода и минимум
геморроя с использованием софта. Учтя всё вышесказанное, я приведу пример создания скрипта в Mirc версии 4.72. Меньше этой версии уж точно ни у кого ничего не завалялось. Короче, хацкер, пофиг какая у тебя версия Mirc :), читай статью и ваяй скрипт в том, что есть.

Разложим пирожки по полочкам

Программы без названия не бывает, поэтому назовём наш скрипт X-Protection. А далее осталось только определиться, что твой скрипт будет творить. Вот что будет уметь твой скрипт:

1) при коннекте выделять нужную информацию и забивать ненужную
2) отслеживать повтор киков и кикбанов в канале
3) отслеживать флуд повтором текста в канале
4) отслеживать флуд частой сменой ников
5) отслеживать флуд длинными сообщениями в канал
6) отслеживать флуд частым заходом на канал
7) отслеживать «нехорошие» ники
8) заносить нужных людей в Auto-Op/Protect
9) заносить нужных людей в BlackList, ну не люблю я слово шит 🙂
10) работать в режиме Revenge, то есть любой плохой чел попадает прямиком в BlackList
11) делать грамотный away
12) а на досуге считать кикнутых ламеров 🙂

Ну а теперь пойдём по всему этому делу попунктно…

Пунктик первый — коннект должен быть правильным

Полезай в Tools -> Remote -> Raw и пиши следующее:

;*** Startup Routines ***
001:*: { echo 2 [X-Protection] Sending login info to server. | halt }
002:*: { echo 2 [X-Protection] You nick is $parm1 connected to $parm5* | halt }
003:*: { halt }
004:*: { halt }
251:*: { echo 1 [X-Protection] Server Connections: $parm4 user(s), $parm7 invisible, on $parm10 server(s). | halt }
252:*: { echo 1 [X-Protection] $parm2 operator(s) online. | halt }
254:*: { echo 1 [X-Protection] $parm3 Channels | halt }
255:*: { halt }
375:*: { echo 2 [X-Protection] Blocking Server MOTD. | halt }
376:*: { reset.vars | halt }
372:*: { halt }

Нумерация строк в примере специально от балды, чтобы было понятно, что роли не играет. Главное чтобы постоянно увеличивалась, иначе порядок выполнения будет совсем не тот, что тебе нужен. Если ты сделал все правильно, то вместо длинной и ненужной информации при
коннекте к серверу ты получишь только это:

reset.vars в данном случае, это Aliases. Служит для некоторых начальных установок в нашем защитном скрипте. Соответственно пропиши в Tools -> Aliases следующее:

;*** Reset Variables — used on start up mainly ***
reset.vars {
echo 2 $chr(160)
.timers off
echo 3 [X-Protection] Resetting needed variables
set %nick.flood.protect Off
set %text.flood.protect Off
set %max.text.protect Off
set %repeat.detector Off
set %join.flood.protect Off
unset %last.msg.*
echo 2 [X-Protection] Text Flood Protection is %text.flood.protect set to: max %text.flood.trigger lines in 10 secs.
echo 2 [X-Protection] Nick Flood Protection is %nick.flood.protect set to: max %nick.flood.trigger in 15 secs.
echo 2 [X-Protection] Max Text Length is %max.text.protect set to: max %max.text.length characters per line.
echo 2 [X-Protection] Join Flood Protection is %join.flood.protect set to: max %join.flood.trigger
echo 2 [X-Protection] Repeat Detector is %repeat.detector set to: %on.repeat on %repeat.flood.trigger repeats.
echo 2 [X-Protection] Vulgar Nick Kick is %vulgar.nick.kick
}

Установки при коннекте можешь менять под себя. А вся эта пофигень нужна для того, чтобы каждый раз не ставить некоторые установки вручную. Непонятные закорючки % показывают, что это переменные, которые будут хранится в памяти с определёнными значениями. Их текущие значения и возможность поменять значения вручную есть в Tools -> Remote -> Variables.

Пунктик второй — кикать и банить надо в меру

Для отслеживания повтора киков и банов на канале понадобится сканер этих самых киков и банов. Но для начала сделаем менюшку, в
которой можно отключать эти самые установки. Для этого в Tools -> Popups -> Status напиши следующее:

.-
.Repeat Protection
..Kick
…On:/set %repeat.flood.trigger $$?=»Max Repeats in 10 secs:» | /.timer102 0 10 /unset %repeat.flood.rate* | /set %repeat.detector On | /set %on.repeat Kick | /echo 2 [X-Protection] Repeat Detector On set to %on.repeat on %repeat.flood.trigger repeats.
…Off:/set %repeat.detector Off | /echo 2 [X-Protection] Repeat Detector Off
..Kick/Ban
…On:/set %repeat.flood.trigger $$?=»Max Repeats in 10 secs:» | /.timer102 0 10 /unset %repeat.flood.rate* | /set %repeat.detector On | /set %on.repeat Ban | /echo 2 [X-Protection] Repeat Detector On set to Ban on %repeat.flood.trigger repeats.
…Off:/set %repeat.detector Off | /echo 2 [X-Protection] Repeat Detector Off

В данном случае я поставил контрольный интервал времени 10 секунд, но можно поставить и любой. При включении установок будет появляться запрос, на какое количество повторов должен срабатывать скрипт. Далее нужно будет прописать соответствующие инструкции в детектор на события в Tools -> Remote -> Events. Смотри
приложение 1.

Пунктик третий — повторяют текст в канале только дебилы

Для отслеживания повтора текста в канале пропишем опять установку этого мода и его настройку в Tools -> Popups -> Status:

.Text Flood Protection
..On:/set %text.flood.trigger $$?=»Max Lines Allowed in 10 secs:» | /.timer100 0 10 /unset %text.flood.rate* | /set %text.flood.protect On | /echo 2 [X-Protection] Text Flood Protect On set to max %text.flood.trigger lines in 10 secs.
..Off:/.timer100 off | /set %text.flood.protect Off | /echo 2 [X-Protection] Text Flood Protect Off

Все сделано по аналогии, как и в п.2, только уже свои переменные и свои таймеры. Далее нужно будет прописать соответствующие инструкции в детектор на события в Tools -> Remote -> Events. Смотри
приложение 1.

Пунктик четвёртый —
часто ники менять противопоказано

Для отслеживания повтора текста в канале пропишем опять установку этого мода и его настройку в Tools -> Popups -> Status:

.Nick Flood Protection
..On:/set %nick.flood.trigger $$?=»Max Nicks Allowed in 15 secs:» | /.timer101 0 15 /unset %nick.flood.rate* | /set %nick.flood.protect On | /echo 2 [X-Protection] Nick Flood Protect On set to max %nick.flood.trigger nicks in 15 secs.
..Off:/.timer101 off | /set %nick.flood.protect Off | /echo 2 [X-Protection] Nick Flood Protection Off

Далее нужно будет прописать соответствующие инструкции в детектор на события в Tools -> Remote -> Events. Смотри
приложение 1.

Пунктик пятый — отслеживаем длинные сообщения, как у слона
🙂

Для отслеживания чересчур
длинных сообщений в канале пропишем опять установку этого мода и его настройку в Tools -> Popups -> Status:

.Text Length Protection
..On:/set %max.text.length $$?=»Max Length of Channel Text:» | /set %max.text.protect On | /echo 2 [X-Protection] Text Length Protect On set to max %max.text.length characters.
..Off:/set %max.text.protect Off | /echo 2 [X-Protection] Text Length Protect Off

Далее нужно будет прописать соответствующие инструкции в детектор на события в Tools -> Remote -> Events. Смотри ниже приложение 1.

Пунктик шестой — по одному, товарищи.

Для отслеживания флуда частым заходом на канал пропишем опять установку этого мода и его настройку в Tools -> Popups -> Status:

.Join Flood Protection
..On:/set %join.flood.trigger $$?=»Max Joins in 10 secs:» | /set %join.flood.protect On | /timer103 0 10 /unset %join.flood.rate* | /echo 2 [X-Protection] Join Flood Protection On set to max %join.flood.trigger joins in 10 secs.
..Off:/set %join.flood.protect off | /timer103 off | /echo 2 [X-Protection] Join Flood Protection Off

Далее нужно будет прописать соответствующие инструкции в детектор на события в Tools -> Remote -> Events. Смотри
приложение 1.

Пунктик седьмой — воспитывать надо с детства

Для отслеживания нехороших ников на канале пропишем опять установку этого мода и его настройку в Tools -> Popups -> Status:

.Vulgar Nick Protection
..On:/set %vulgar.nick.kick On | /echo 2 [X-Protection] Vulgar Nick Kick On
..Off:/set %vulgar.nick.kick Off | /echo 2 [X-Protection] Vulgar Nick Kick Off

Далее нужно будет прописать соответствующие инструкции в детектор на события в Tools -> Remote -> Events. Смотри ниже приложение 1.

Пунктик восьмой — кто на наших?

Теперь займемся занесением некоторых особей в красную книгу :). Для начала пропишем саму книгу в Tools -> Popups -> Status:

.Auto-Op/Protect
..On:/set %auto.op.protect On | /echo 2 [X-Protection] Now Protecting and auto-oping your friends.
..Off:/set %auto.op.protect Off | /echo 2 [X-Protection] Auto-Op/Protection is now Off

Далее пропишем собственно саму защиту в Tools -> Remote -> Events:

;***Auto-Ops and Protection ***
@100!:ON JOIN:#: if (%auto.op.protect == On) { mode $chan +o $nick }
@100!:ON DEOP:#: if (%auto.op.protect == On) { if ($nick == ChanServ) { halt } | if ($level($nick) == 100) { halt } | kick $chan $nick [X-Protection] -=- Protected User -=- [X-Protection] | ban $chan $nick 3 | mode $chan +o $opnick }
@100!:ON KICK:#: if (%auto.op.protect == On) { if ($level($nick) == 100) { halt } | inc %kick.counter 1 | kick $chan $nick [X-Protection] -=- Protected User -=- << $+ %kick.counter $+ >> | ban $chan $nick 3 | invite $chan $knick }
@100!:ON BAN:#: if (%auto.op.protect == On) { if ($banmask isin %illegal.bans) { inc %kick.counter 1 | kick $chan $nick [X-Protection] You have lost all priveleges! << $+ %kick.counter $+ >> | ban $chan $nick 3 | mode $chan -b $banmask | ruser $nick | ruser $nick 3 } | }

Тут 100 — это уровень (level) юзверей, который и будет их причислять к подзащитным.

Пунктик девятый — знай наших

Своих защитили, теперь других пинать будем. Сделаем это через BlackList, хотя чаще в
скриптах пишут ShitList. Но как не назови какашку, конфеткой она не станет :). Пропишем опять же в Tools -> Popups -> Status:

.BlackList
..On:/set %black.list On | /echo 2 [X-Protection] Blacklist is On
..Off:/set %black.list Off | /echo 2 [X-Protection] Blacklist is Off

И пропишем в Tools -> Remote -> Events:

;*** Black List ***
@999!:ON JOIN:#: if (%black.list == On) { ban $chan $nick 3 | inc %kick.counter 1 | kick $chan $nick [X-Protection] -=- Blacklisted Member -=- << $+ %kick.counter $+ >> }
@999!:ON TEXT:*:#: if (%black.list == On) { ban $chan $nick 3 | inc %kick.counter 1 | kick $chan $nick [X-Protection] -=- Blacklisted Member -=- << $+ %kick.counter $+ >> }
@999!:ON TEXT:*:?:!
@999!:ON PART:#: if (%black.list == On) { ban $chan $nick 3 }
@999!:ON KICK:#: if (%black.list == On) { ban $chan $nick 3 | inc %kick.counter 1 | kick $chan $nick [X-Protection] -=- Blacklisted Member -=- << $+ %kick.counter $+ >> }
@999!:ON BAN:#: if (%black.list == On) { ban $chan $nick 3 | inc %kick.counter 1 | kick $chan $nick [X-Protection] -=- Blacklisted Member -=- << $+ %kick.counter $+ >> }
@999!:ON OP:#: if (%black.list == On) { ban $chan $opnick 3 | inc %kick.counter 1 | kick $chan $opnick [X-Protection] -=- Blacklisted Member -=- << $+ %kick.counter $+ >> | mode $chan -o $nick }
@999:ON DEOP:#: if (%black.list == On) { ban $chan $opnick 3 | inc %kick.counter 1 | kick $chan $opnick [X-Protection] -=- Blacklisted Member -=- << $+ %kick.counter $+ >> }

Тут 999 — это уровень (level) юзверей, который и будет их причислять к педерастам :).

Пунктик десятый — ни грамма жалости

Если же тебе надоело добавлять непонятливых в BlackList ручками, то можно просто прописать мод Revenge, который автоматом будет прописывать в BlackList. Пропиши в Tools -> Popups -> Status:

.Revenge
..On:/set %revenge On | /echo 2 [X-Protection] Revenge Mode is On — Auto-Blacklisting Users
..Off:/set %revenge Off | /echo 2 [X-Protection] Revenge is Off

Далее нужно будет прописать соответствующие инструкции в детектор на события в Tools -> Remote -> Events. Смотри
приложение 1.

Пунктик одиннадцатый — away красиво

Обычно away делают ручками. Особенно привычным стало делать ник nickname_away, но мы не ищем легких путей :). Пропиши в Tools -> Popups -> Status:

Away
.Set Away: { 
if ($away == $true) { echo 4 [X-Protection] You are already marked as being away! | halt }
set %away.msg $$?=»Enter Your Away Msg:» | set %away.nick $me | nick $me $+ -Away | away %away.msg | ame is away -=- %away.msg -=- since [ $+ $time] [X-Protection] | .timer800 0 300 /ame is away -=- %away.msg -=- since [ $+ $time] [X-Protection] 

.Set Back: { 
if ($away == $false) { echo 4 [X-Protection] You are not away! | halt }
nick %away.nick | away | ame is back! | unset %away* | .timer800 off 
}

Теперь ник будет автоматически сам меняться на nickname_away, а при возвращении опять меняться на nickname без приставки away. Все гениальное просто :).

Пунктик двенадцатый — ну а теперь подсчитаем козлов отпущения

После установок всех защит и их исправной работы можно и статистику подвести. Для этого пропиши в Tools -> Popups -> Status:

Kick Counter
.Echo Info:/echo 2 [X-Protection] Kick Counter: %kick.counter lamers kicked since %kick.counter.date
.Amsg Info:/amsg [X-Protection] Kick Counter: %kick.counter lamers kicked since %kick.counter.date
.Reset Counter:/set %kick.counter 0 | /set %kick.counter.date $adate | /echo 2 [X-Protection] Kick Counter
Reset

Ну вот и готов твой первый кульный скрипт, который реально будет тебя защищать от заморозков на севере :). Теперь осталось только подлизать все места 🙂 и разобраться в детекторе событий. Если ты сделаешь все в точности, как я написал, то скрипт будет работать на все 100 процентов.

Оставить мнение

Check Also

Скрытая сила пробела. Эксплуатируем критическую уязвимость в Apache Tomcat

В этой статье мы поговорим о баге в Apache Tomcat, популярнейшем веб-сервере для сайтов на…