Об IRC. Доступно и со вкусом.
Уходим в away и возвращаем баны
Сегодня мы будем писать простенькую away систему и возвращать снятые \"чужими\" баны.
Режим Away служит для уведомления пользователей о том, что вы в данный момент недоступны для беседы. Когда кто-то посылает вам сообщение и у вас включен режим Away, пользователь получит сообщение [away message]. Для выключения режима используется команда /away без параметров. Это немного теории из хелп файла.
Итак, начнем разбираться. Таким образом написав в эдитбоксе:
/away Я ушел кушать
мы уйдем в эвей с сообщением \"Я ушел кушать\". Но согласитесь это как то просто. Сейчас попробуем замутить что-нибудь посложнее, открываем Попапы(popups), сверху в меню Вид(view) выбираем Канал(channel), (т.е. наша менюшка будет видна при клике правой кнопкой на канале) и пишем туда следущее:
Away
.$iif($away == $false,Уйти): away $$?=\"Введите причину эвея\" | nick $me $+ [away]
.$iif($away == $true,Вернуться): away | nick $remove($me,[away])
Конструкция $iif проверяет условие и в зависимости от него создает меню. Если $away == $false, мы не в эвее, то создаем менюшку Уйти, уходим в эвей и меняем ник на наш плюс [away]. Если же мы в эвее покажет меню Вернуться мы возвращаемся из эвея и меняем ник. Лично для меня этого достаточно, но т.к. многие юзеры любят всякие фишечки и прибамбахи мы сейчас модернезируем скрипт и он буде показывать время эвея и причину на канал.
Вставляем туда же это:
Away
.$iif($away == $false,Уйти): { .away $$?=\"Введите причину эвея\" | nick $me $+ [away] | set %awtime $ctime | ame >> ушел в эвей с причиной ( $! ) в $time }
.$iif($away == $true,Вернуться): { .away | nick $remove($me,[away]) | ame >> вернулся отсутствовал $duration($calc($ctime - %awtime)) | unset %awtime }
Ну разбор скрипта я ложу на ваших хрупкие плечи, не все же коту масленица :) пора подумать и своей головой.
А теперь скриптик, возвращающий поставленные вами баны, при снятии их другими юзерами. Открываем раздел скрипты:
on *:ban:#:{
if ($nick == $me) && ($banmask !isin %bm) { set %bm %bm $banmask }
}
Когда ставим бан, проверяем, если ник - это вы и маски бана нету в переменной то добавляем.
on *:UNBAN:#:{
if ($banmask isin %bm) {
if ($nick != $me) mode # +b $banmask
else set %bm $remove(%bm,$banmask)
}
}
Если маска бана есть в переменнной, если юзер снимающий бан это не вы, то возвращаем бан на место, иначе, если это мы то просто удаляем маску бана из переменной.
На этом все, удачи.
Итак, начнем разбираться. Таким образом написав в эдитбоксе:
/away Я ушел кушать
мы уйдем в эвей с сообщением \"Я ушел кушать\". Но согласитесь это как то просто. Сейчас попробуем замутить что-нибудь посложнее, открываем Попапы(popups), сверху в меню Вид(view) выбираем Канал(channel), (т.е. наша менюшка будет видна при клике правой кнопкой на канале) и пишем туда следущее:
Away
.$iif($away == $false,Уйти): away $$?=\"Введите причину эвея\" | nick $me $+ [away]
.$iif($away == $true,Вернуться): away | nick $remove($me,[away])
Конструкция $iif проверяет условие и в зависимости от него создает меню. Если $away == $false, мы не в эвее, то создаем менюшку Уйти, уходим в эвей и меняем ник на наш плюс [away]. Если же мы в эвее покажет меню Вернуться мы возвращаемся из эвея и меняем ник. Лично для меня этого достаточно, но т.к. многие юзеры любят всякие фишечки и прибамбахи мы сейчас модернезируем скрипт и он буде показывать время эвея и причину на канал.
Вставляем туда же это:
Away
.$iif($away == $false,Уйти): { .away $$?=\"Введите причину эвея\" | nick $me $+ [away] | set %awtime $ctime | ame >> ушел в эвей с причиной ( $! ) в $time }
.$iif($away == $true,Вернуться): { .away | nick $remove($me,[away]) | ame >> вернулся отсутствовал $duration($calc($ctime - %awtime)) | unset %awtime }
Ну разбор скрипта я ложу на ваших хрупкие плечи, не все же коту масленица :) пора подумать и своей головой.
А теперь скриптик, возвращающий поставленные вами баны, при снятии их другими юзерами. Открываем раздел скрипты:
on *:ban:#:{
if ($nick == $me) && ($banmask !isin %bm) { set %bm %bm $banmask }
}
Когда ставим бан, проверяем, если ник - это вы и маски бана нету в переменной то добавляем.
on *:UNBAN:#:{
if ($banmask isin %bm) {
if ($nick != $me) mode # +b $banmask
else set %bm $remove(%bm,$banmask)
}
}
Если маска бана есть в переменнной, если юзер снимающий бан это не вы, то возвращаем бан на место, иначе, если это мы то просто удаляем маску бана из переменной.
На этом все, удачи.
Опубликовал: yXo, 11.04.2006