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) } } } } }
Почему бот не ставит бан на всех каналах, на которых он находится?
Сообщений 1 страница 2 из 2
Поделиться129.08.2021 15:19
Поделиться229.08.2021 21:08
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]