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

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

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


Вы здесь » EpicNet.Ru - Форум IRC Чата » HELP SCRIPTS - Помощь по mIRC скриптам » Bot not ban on all channels where is located


Bot not ban on all channels where is located

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

1

Why doesn't the Bot put a ban on all the channels it is on?

Here's my code:

Код:
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

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

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

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

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

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

Объяснение:

  • var %i 1 - создаёт временную переменную со значением числа 1.

  • while (%i <= $chan(0)) - создаёт условие цикла, при котором - пока %i меньше или равна <= общему числу открытых каналов $chan(0) - цикл будет продолжать работать.

  • echo -s %i - $chan(%i) - команда для отправки эхо-сообщения в статус окно с нумерацией строки и названием канала под порядковым номером, под которым он расположен в списке открытых окон.

  • 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:#4897E7;}.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="http://forumstatic.ru/files/000d/c9/8c/34681.jpg"></td><td><a href="http://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]

3

Robert, я поэкспериментировал с вашим скриптом и постарался привести его в работоспособное состояние.

Попробуйте использовать этот код скрипта:

Код:
on @*:TEXT:*:#:{
  if ($network != DaVang) { return }
  if (!$read($file_user,ntw,$nick) { return }
  if ($nick isreg #userbot) { return }
  ;--------------------------------------------------
  tokenize 32 $strip($1-)
  if ($1 == .gbl) {
    if (!$2) || ($2 !ison $chan) || ($2 == $me) || ($2 == $nick) { return }
    var %id $+([ID:,$chr(32),$rand(A,Z),$rand(A,Z),$rand(10000,99999),])
    var %reason $read($file_reason), %ident $ial($2).user, %host $ial($2).host
    var %identmask $+(*!,%ident,@*), %cn $chan(0)
    while (%cn) {
      if ($me isop $chan(%cn)) {
        if (*irccloud* iswm %host) {
          mode $chan(%cn) +b %identmask
          kick $chan(%cn) $2 $add_reason(%reason,%id)
          if (!$read($file_db,ntw,$+(*,$chr(59),%ident,$chr(59),*))) {
            write -i $qt($file_db) $+(%id,$chr(59),%ident,$chr(59),%reason)
          }
          .timerUNBAN $+ %ident 1 30 mode $chan(%cn) -b %identmask
        }
        else { 
          ban -ku30 $chan(%cn) $2 2 $add_reason(%reason,%id)
          if (!$read($file_db,ntw,$+(*,$chr(59),%host,$chr(59),*))) {
            write -i $qt($file_db) $+(%id,$chr(59),%host,$chr(59),%reason)
          }
        }
      }
      dec %cn
    }
  }
}
alias -l file_db { return $scriptdir $+ globalkickdatabase.txt }
alias -l file_user { return $scriptdir $+ userbot.txt }
alias -l file_reason { return $scriptdir $+ globalkick.txt }
alias -l add_reason { return 4[Banned] (reason: $1 $+ ) $2 - (for more information regarding your ban please contact nickname Kendy for removal) }

Если что то будет не работать, то обязательно сообщите мне об этом в этой теме форума, с подробным описанием выявленных ошибок.

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

[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:#4897E7;}.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="http://forumstatic.ru/files/000d/c9/8c/34681.jpg"></td><td><a href="http://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 скриптам » Bot not ban on all channels where is located