Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

10 972 Posts in 6 347 Topics- by 1 216 Members - Latest Member: santini862

24 November 2020, 11:00
  Show Posts
Pages: [1] 2 3
1  Russian talks / Скриптинг / Re: Антимат on: 16 March 2008, 03:41
А вот этого я не знал и даже не догадывался. Еще удивлялся, зачем в самом начале пробелы добавляете слева и справа. Правильно ли я понял: если я хочу поймать одно слово целиком, например "тест", то в словаре надо писать * тест *, а если какие либо совпадения, например любые слова начинающиеся на "тест", "тестовый", "тестовая", тогда маска в словаре должна быть "* тест*", т.е. в начале пробел есть, а в конце его нет ? И тоже самое касается знака одного символа - "?" ?
да. все знаки препинания заменяются на пробелы и вначале/конце строки добавляется порбел: получается "* тест*" найдёт слово "тестовый"; "* тест *" найдёт слово "*тест*"; "*тест *" найдёт слово "протест"; "* т?ст *" найдёт слова "тист", "тост", и т.д.
Ага, а здесь значит можно просто указать сами слова исключения без каких-либо знаков, например "себя", "себе" ?
да
2  Russian talks / Скриптинг / Re: Антимат on: 12 March 2008, 20:45
в словаре должны быть маски для проверяемой строки с указанием знаков ? и * там где нужно
то есть если вам надо отлавливать только слово "тест", то в словаре надо писать * тест *, то есть с пробелами вначале и в конце
в словаре исключений не маски, а комбинации букв, которые будут вырезаться из строки перед проверкой. символы * и ? там не нужны
foreach(%bwExtWord,%BadWordsExt) %str=$str.replace(%str,"",%bwExtWord)
у меня, кстати, словари в кодировке win-1251
3  Russian talks / Скриптинг / Re: Антимат on: 11 March 2008, 22:53
создавайте файл badwords_check.kvs в кодировке UTF-8
4  Russian talks / Скриптинг / Re: Антибан on: 15 November 2007, 20:43
Без глобальных переменных и без killtimer
Code:
event(OnMeKick,antiban)
{
%myChans = $array("#test","#KVIrc")
%chan=$chan.name
foreach (%y,%myChans)
{
if (%chan==%y)
{
msg -q chanserv unban %chan
timer -s (i1,5000,%chan) { join $0; }
timer -s (i2,10000,$0,$1,%chan)
{
say ну ты и козёл $0
raw mode $2 +b $0!$1"@"*
}
}
}
}
5  Russian talks / Скриптинг / Re: Названия переменных on: 7 November 2007, 19:46
Code:
if($0 == man && !$away) say Hi, man
6  Russian talks / Вопросы по работе отдельных функций и команд / Re: Как убрать ненужную информацию от whois on: 7 November 2007, 19:33
Code:
event(312,по умолчанию){}
event(317,по умолчанию){}
event(318,по умолчанию){}
или через Сценарии -> Редактировать низкоуровневые события...
7  Russian talks / Вопросы по работе отдельных функций и команд / Re: Как убрать ненужную информацию от whois on: 5 November 2007, 18:42
halt - "Stops the execution of the current script" (с) Help. То есть если сделать как я написал, то квирк не будет обрабатывать сообщения сервера с номерами 312, 317 и 318 вообще. А раз нет информации от сервера, то и показывать нечего.
8  Russian talks / Вопросы по работе отдельных функций и команд / Re: Как убрать ненужную информацию от whois on: 5 November 2007, 14:51
311 - является Hadros!SEELE-04@10.0.66.146
311 - реальное имя: -=' Hadros[klan™] '=-
307 - информация: is a registered nick
319 - каналы: #all
312 - сервер: irc.aktv.local - AKTV_irc_server
317 - время простоя: 0 д 0 ч 8 м 53 с
317 - время авторизации: Пн 5. ноя 00:33:46 2007
318 - WHOIS информация от irc.aktv.local

время простоя идёт вместе со временем авторизации в 317
9  Russian talks / Вопросы по работе отдельных функций и команд / Re: Как убрать ненужную информацию от whois on: 5 November 2007, 01:46
Code:
event(312,по умолчанию)
{
halt
}


event(317,по умолчанию)
{
halt
}


event(318,по умолчанию)
{
halt
}
это чтобы из Whois убрать
10  Russian talks / Скриптинг / автоответчик on: 3 November 2007, 18:26
Code:
alias(had::AA)
 {
 if (%AutoAnswer==0)
      {
      %AutoAnswer=1
      echo $k(4)$b()Включен автоответчик
      }
 else {
      %AutoAnswer=0
      echo $k(2)$b()Автоответчик выключен
      }
 if ($isset($0-)) %AutoAnswerMSG="Автоответчик: "$0-; else %AutoAnswerMSG="Автоответчик: я сплю или меня нет дома"
 }
event(OnChannelMessage,Автоответчик)
 {
 if (%AutoAnswer==1 && $str.contains($3,$me)) notice $0 $k(9)$b()%AutoAnswerMSG$o()
 }
включение: /had::aa и текст автоответа
выключение: /had::aa
11  Russian talks / Скриптинг / Чтение RSS on: 28 October 2007, 22:42
Может кто-нибудь уже делал для своего бота, чтобы он выдавал какие-то сообщения, которые получены через RSS (новости там, цитаты с башорга). Какой прогой для чтения дучше пользоваться, и как обрабатывать на KVS то, что выдаёт эта прога.
12  Russian talks / Скриптинг / Re: Эмуляция нажатия клавиш on: 28 October 2007, 15:52
Но! В квирке вообще нельзя вызывать на выполнение код действий или событий. Можно вызывать только алиасы.
eventctl <event_name:string> <handler_name:string> [parameters]
13  Russian talks / Скриптинг / Re: Антимат on: 20 October 2007, 20:46
функция проверки строки на присутствие матерного слова (возвращает "ничто", если строка нормальная и найденную маску мата если такая найдена:
Code:
alias(BadWords::check)
{
%str=" "$str.lowcase($str.stripcolors($0))" "
foreach(%bwExtWord,%BadWordsExt) %str=$str.replace(%str,"",%bwExtWord)
%str=~tr/ЁЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ/ёйцукенгшщзхъфывапролджэячсмитьбю/
%str=~tr/\,\.\!\#\%\^\&\*\(\)\-\=\\\_\+\|\`\~\[\]\{\}\;\'\:\"\,\.\/\<\>\?‚„…‰‹‘’“”•–—˜™›¤¦«¬°±µ·»/                                                        /
%str4=%str
%str4=~tr/1234567890\@\$\x0F/             /
%str4=" "$str.replace(%str4,""," ")" "
%str=~tr/\@\$ЉЂЃѓ†‡€ЊЌЋЏђљњќџЎўЈҐ§Ё©Є®ЇІіґё№єјЅѕї¶/аслбггttенkhuhлнkuууjгsесеriiiгеnеjssiп/
%str=~tr/69403/бячоз/
%str2=%str
%str2=~tr/69403yabсeghkmnoprtuxёй/бячозуавcеднкмпоргтихеи/
%str3=%str
%str3=$str.replace(%str3,"я","ya")
%str3=$str.replace(%str3,"ч","ch")
%str3=$str.replace(%str3,"ш","sh")
#%str3=$str.replace(%str3,"л","/\\")
%str3=$str.replace(%str3,"л","ji")
%str3=$str.replace(%str3,"л","jl")
%str3=~tr/abcdefghijklmnopqrstuvwxyz/абцдефгхииклмнопqрстуввxyз/
foreach(%bw,%BadWords) if ($str.match(%bw,%str2,e)) { %result=%bw;return %result; }
foreach(%bw,%BadWords) if ($str.match(%bw,%str3,e)) { %result=%bw;return %result; }
foreach(%bw,%BadWords) if ($str.match(%bw,%str4,e)) { %result=%bw;return %result; }
}
перед использованием надо загрузить из какого-нибудь файла список матерных слов. Например так:
Code:
%FileBWDict=$file.localdir()"BadWords.txt"; # Файл-словарь антимата
alias(BadWords::LoadDict)
{
if (!$file.exists(%FileBWDict)) file.write -l %FileBWDict " ывапывапывап$lf"
%BadWords=$file.readlines(%FileBWDict)
echo "$k(9)$b()Загружен словарь антимата %BadWords[]# записей$o()"
}
в словаре должны быть маски для проверяемой строки с указанием знаков ? и * там где нужно. Каждая маска в новой строке.
Так-же надо загрузить список исключений:
Code:
%FileBWExt=$file.localdir()"BWExt.txt"; # Файл-словарь исключений антимата
alias(BadWords::LoadExceptions)
{
if (!$file.exists(%FileBWExt)) file.write -l %FileBWExt "привет$lf"
%BadWordsExt=$file.readlines(%FileBWExt)
echo "$k(9)$b()Загружен словарь исключений антимата %BadWordsExt[]# записей$o()"
}
Чтобы проверить как это работает:
Code:
event(OnChannelMessage,тест на мат)
{
%t=$BadWords::check($3)
if (%t!=$nothing)
{
echo $k(9) $0 сматерился. Совпало %t
}
}
дальше качество вашего антимата будет зависеть только от того, как вы составите списки плохих и хороших слов
14  Russian talks / Общие вопросы / Re: Копирование текста без временнЫх меток. on: 20 October 2007, 18:15
а ещё можно отрезать прямоугольный блок с временной меткой и ником в текстовом редакторе FAR Manager'а. Делается через ALT+стрелки, потом CTRL+DEL
15  Russian talks / Вопросы по основам KVS / Re: замена по таблице on: 26 September 2007, 17:58
нет. это замена подстроки в строке. А надо например заменить все шестёрки на букву "б", все девятки на букву "я" и т.д. За один раз. Чтобы не вызывать для каждой буквы отдельную функцию
Pages: [1] 2 3
Theme orange-lt created by panic