EpicNet.Ru - Форум IRC Чата

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » EpicNet.Ru - Форум IRC Чата » HELP SCRIPTS - Помощь по mIRC скриптам » Почему бот не ставит бан на всех каналах, на которых он находится?


Почему бот не ставит бан на всех каналах, на которых он находится?

Сообщений 1 страница 2 из 2

1

Код:
ON @*:TEXT:*:#: {
  tokenize 32 $strip($1-)
  if ($1 == .gbl) {
    if ($network !== DaVang) && (!$read(userbot.txt,nw,$nick)) && ($nick isreg #userbot) { return }
    if (!$2) && ($2 !== $me) && ($2 !== $nick) && ($2 !ison $chan) && ($2 !isreg $chan) { return }
    var %id = $+([ID:,$chr(32),$rand(A,Z),$rand(A,Z),$rand(10000,99999),])
    var %reason = $read(globalkick1.txt)
    var %ident = $ial($2).user
    var %host = $ial($2).host
    var %a = $chan(0)
    while (%a) {
      if ($me isop $chan(%a)) {
        if (*irccloud* iswm %host) {
        mode $chan(%a) +b *! $+ %ident $+ * | kick $chan(%a) $2 4[Banned] (reason: %reason $+ ) %id - (for more information regarding your ban please contact nickname Kendy for removal) | dec %a }
        else { dec %a }
        if (!$read(globalkickdatabase.txt, -w, $+(*,%ident,*))) { write $qt(globalkickdatabase.txt) $+(%id,$chr(59),*!,%ident,@*,$chr(59),%reason) }
        .timer[UMBAN_ $+ %ident $+ ] 1 3600 mode $chan -b *! $+ %ident $+ *@*
      }
      else { 
        ban -ku3600 $chan(%a) $2 2 4[Banned] (reason: %reason $+ ) %id - (for more information regarding your ban please contact nickname Kendy for removal)
        if (!$read(globalkickdatabase.txt, -w, $+(*,%host,*))) { write $qt(globalkickdatabase.txt) $+(%id,$chr(59),*!*@,%host,$chr(59),%reason) }
      }
    }
  }
}

2

Robert, скорее всего этот скрипт не работает по причине того, что он не соответствует правильному синтаксису mIRC скриптинга.

Единственное, что из этого кода понятно, что вероятно вы хотели сделать работающую команду ".gbl nick" при вводе которой на канале скрипт должен был забанить указанный ник пользователя на всех каналах, в которых присутствует сам бот или даже только там, где присутствует только бот, чтобы исключить в будущем возможность доступа пользователя к этим каналам.

Самая ключевая ошибка в скрипте, это не правильное создание конструкции с циклом "while".
Чтобы узнать как это сделать правильно вы можете ознакомиться с примерами здесь: https://en.wikichip.org/wiki/mirc/commands/while

Таким образом, если вы хотели сделать перечисление всех открытых каналов вашего бота, то это следовало сделать так:

Код:
alias test_while {
  var %i 1 | while (%i <= $chan(0)) {
     .echo -s %i = $chan(%i)
    inc %i
  }
}

Для проверки введите команду: "/test_while".

Описание:

1. var %i 1 - создаёт временную переменную со значением числа 1.
2. while (%i <= $chan(0)) - создаёт условие цикла, при котором - пока %i меньше или равна <= общему числу открытых каналов $chan(0) - цикл будет продолжать работать.
3. .echo -s %i = $chan(%i) - команда для отправки эхо-сообщения в статус окно с нумерацией строки и названием канала под порядковым номером, под которым он расположен в списке открытых окон.
4. inc %i - увеличивает значение переменной ровно на +1. Таким образом при каждом новом круге цикла число в значении переменной %i увеличивается на 1.

Цикл остановится как только число в переменной %i превысит общее число открытых каналов в клиенте $chan(0).

Подпись автора

[html]<style>img {vertical-align:middle;}.hnet{color:#FFFFFF;}.hstar{color:#DE0000;}.htext{font-family:Verdana;font-size:13px;color:#6E1E00;}.heading{font-family:Verdana;font-size:13px;font-weight:bold;background-color:#4898CD;}.stitle{font-family:Verdana;font-size:12px;}.dot{color:#808000;}.desc{color:#ADADAD;}a .curl{font-family:Verdana;font-size:13px;color:#3A92CD;}</style><table><tr><td width="20px" height="20px"><img src="https://forumstatic.ru/files/000d/c9/8c/34681.jpg"></td><td><a href="https://forum.epicnet.ru/viewtopic.php?id=234"><span class="heading"> <span class="hstar">★</span> <span class="hnet">EpicNet.Ru</span> <span class="hstar">★</span> </span><span class="htext"> - IRC Чат © 2008</span></a></td></tr><tr><td></td><td><div class="stitle"><span class="dot">•</span> <span class="desc">Вход через вебгейт:</span> <a href="http://irc.epicnet.ru"><span class="curl">http://irc.epicnet.ru</span></a><br><span class="dot">•</span> <span class="desc">Сервер:</span> irc.epicnet.ru <span class="desc">Порты:</span> 6667, 6668 (ssl)<br><div></td></tr></table>[/html]


Вы здесь » EpicNet.Ru - Форум IRC Чата » HELP SCRIPTS - Помощь по mIRC скриптам » Почему бот не ставит бан на всех каналах, на которых он находится?