Массовое снятие банов Попросили у меня на днях скрипт, который будет баны снимать, при сплитах возникающие... Я, чтобы побыстрее отмазаться (вроде и отказывать не хотелось и посылать), написал примерно следующее: on *:BAN:#: if (. isin $nick) mode $chan -b $banmask Но когда я похвастался этим скриптом перед блэком, он мне резонно заметил что баны бы хорошо снимать не по одному, а по несколько, иначе будет такая ерундень как на хелпе. Критика была мною воспринята и вот что я написал: on *:RAWMODE:#: { var %i = 0, %l = $len($1), %sign, %x, %param = 0 var %paramcount, %paramstr, %maxmode = $str(b,$modespl) if ($pos($1,b,1) == $null) || (. !isin $nick) halt :LOOP inc %i %x = $mid($1, %i, 1) if (%x == $chr(43)) || (%x == $chr(45)) { %sign = %x goto LOOP } if (%x isin ebovalk) %param = %param + 1 if (%x == b) && (%sign == $chr(43)) { %paramcount = %paramcount $+ b %paramstr = %paramstr $gettok($2-, %param, 32) } if (%i >= %l) { if (%paramstr) mode $chan - %paramcount %paramstr halt } goto LOOP } В процессе отладки перезагрузился всего два раза. Большое спасибо swatch за помощь в тестировании. ©Zmey
|