IRC
IrcNet.ru
Лица сети
Случайное фото
Перейти в альбом
На форуме
Нужен программист ...
XRumer 12.0.11: Р ...
Анекдоты
Помогите написать ...
Невозможно опреде ...
Вход в чат
Веб-гейт
Скрипты для mIRC
Защита

По непонятным причинам в начале октября 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 считает относящимся к предыдущей строке. Людям использующим "|" меня не понять :))
© by Zmey


Модификация вводимого текста

А еще был у нас в сети вот такой случай...
Завалился ко мне в приват кто-то и попросил скриптец который бы ему одни буквы на другие менял (например: ш на w). А у меня видать настроение было хорошее и я ломался не долго и скриптец тот написал. Вот что у меня получилось:


 on *:INPUT:*: {
 if (!$ctrlenter) {
 var %action, %result = $1-
 if ($left(%result,1) != /) {
 %action = say
 %result = $replacecs(%result, ш, w, Ш, W)
 }
 else {
 %action = $gettok(%result,1,32)
 %result = $replacecs($deltok(%result,1,32), ш, w, Ш, W)
 }
 %action %result
 halt
 }
 }



 Думаю понятно что надо делать чтобы этот скрипт другие буквы подменял? А потом смотрю, так ведь эту лабуду я для ^MAD-MAKC^\'а когда-то делал. Мы тогда пытались облегчить /me и /ame. И вот до чего дооблегчались:


 on *:INPUT:*: {
 if ($ctrlenter == $false) {
 var %result = $1-
 if ($left(%result,1) == -) { me $right(%result,-1) | halt }
 if ($left(%result,1) == =) { ame $right(%result,-1) | halt }
 }
 }



 Все строки начинающиеся с "-" скрипт интерпретирует как /me, а все строки начинающиеся с "=" -- как /ame. Потом я еще не раз этот самый скрипт под разными соусами распространял. Вот совсем недавно я его для ice переделывал. Ему смайлики хотелось подменять: допустим пишет он "=)", а на экране отображается "ж)". Уже и не помню что именно я ему слил, но что-то типа этого:


 on *:INPUT:*: {
 if (!$ctrlenter) {
 var %say = $iif($left($1-,1) != /, say)
 %say $replacecs($1-, = $+ $chr(41),  $+ $rand(1,15) $+ ж $+ $chr(41))
 halt
 }
 }



 Этот скрипт самый продвинутый из всех трёх: он случайным образом определяет цвет буквы "ж" в смайлике ;) После всего этого я понял, что статью надо про это написать и закончить с этой темой, дабы к ней больше не возвращаться. Очень неинтересно всё время одно и то же писать. Ну а статья перед вами :)


 P.S.: Каждый скрипт содержит условие "if (!$ctrlenter)" (или "if ($ctrlenter == $false)", что одно и то же), которое блокирует выполнение скрипта, если при нажатии клавиши энтер (Enter) нажата клавиша контрол (Ctrl).
© by Zmey


Развлечения

Парочка развлекательных скриптов:

[22:53:15] * @tvrsh разрубил lamestbot на две половинки, (lamest) и (bot)
Код скрипта:
/axe {
var %axe.len = $len($$1)
var %axe.nick = $$1
set %axe.rnd $rand(1, %axe.len )
if ( %axe.rnd == %axe.len ) { set %axe.rnd $rand(1, %axe.len ) }
set %axe.1 $left(%axe.nick, %axe.rnd )
set %axe.2 $remove(%axe.nick, %axe.1 )
/me разрубил %axe.nick на две половинки, ( $+ %axe.1 $+ ) и ( $+ %axe.2 $+ )
}


[22:56:15] * @tvrsh пропустил lamestbot через шреддер! Вышло |e|s|o|t|
Код скрипта:
/shredder {
var %sh.x = 1
var %sh.1 = 0
while (%sh.x <= $len($$1) ) {
set %sh.1 $mid( $$1 , %sh.x ,1)
set %sh.rnd $rand(0,1)
if ( %sh.rnd ) { set %sh.out %sh.out $+ $chr(124) $+ %sh.1 }
inc %sh.x
}
/me пропустил $$1 через шреддер! Вышло %sh.out $+ $chr(124)
set %sh.x 1
unset %sh.out
}

Скопируйте эти скрипты в Alt+R -> Aliases и используйте их /axe nick или /shredder nick
© by vindi

Остальные скрипты Вы можете найти в соответствующем разделе нашего форума.