Защита каналов По непонятным причинам в начале октября 2001 года на канале #southnet произошло резкое оживление публики. В результате постояльцам канала потребовались защитные скрипты. Как говорится: партия сказала надо, комсомол ответил есть! К протект-скриптам были выдвинуты следующие требованиями, они должны: 1) автоматически возвращать оп 2) автоматически снимать бан 3) автоматически возвращать на канал после кика После недолгих раздумий и продолжительного тестирования был создан следующий набор скриптов. on *:DEOP:#:{ if ($me == $opnick) && ($me != $nick) { if ($nick isop $chan) chanserv DEOP $chan $nick if ($me !isop $chan) chanserv OP $chan $me } } on *:BAN:#:{ if ($banmask iswm $address($me,5)) { if ($nick isop $chan) chanserv DEOP $chan $nick if ($me !isop $chan) chanserv OP $chan $me mode $chan -b $banmask } } on *:KICK:#:{ if ($knick == $me) && ($nick != $me) { if ($nick isop $chan) chanserv DEOP $chan $nick chanserv INVITE $chan chanserv UNBAN $chan } } Единственным органичением в использовании является необходимость ставить на себя режим -x, потому что команда chanserv'а UNBAN работает только с "настоящими" масками. Прошел год и, как это не странно, ситуация повторилась. Про эту статью и эти скрипты я успешно забыл и написал новый вариант. А потом случайно наткнулся на эту статью и сравнил старые и новые скрипты. Разница была только в DEOP скрипте. Вот он какой: on *:DEOP:#:{ if ($me == $opnick) && ($me != $nick) { if (. !isin $nick) && (serv !isin $nick) && ($nick ison $chan) && ($nick isop $chan) $& chanserv deop $chan $nick if ($me !isop $chan) chanserv op $chan $me } } Как вы это видите, различия минимальны: новый скрипт не пытается деопать сервера (после сплитов) и не реагирует еще на несколько экзотических случаев. Заодно этот пример показывает метод борьбы с очень длинными строками: всё что находится после $& mIRC считает относящимся к предыдущей строке. Людям использующим "|" меня не понять :)) ©Zmey
|