Code
# скрипт помощи для игрового канала Need For Speed Underground 2: #planu2
bind pubm - * faq
proc faq {nick uhost hand chan text} {
set data [unixtime]
# Путь к базе:
set baza "data/faqantiflood.txt"
# Проверка наличие базы, если нет то создаим пустой файл (директория должна существовать):
if {![file exists $baza]} {set f [open $baza w+]; close $f}
# Открываем файл для чтения:
set f [open $baza r]
# Проверяем каждую строку на совпадения ника, формируем базу без этого ника:
set ololo ""; set bazalist [list]; foreach line [lrange [split [read $f] \n] 0 end-1] {
if {[string tolower [lindex $line 0]] == [string tolower $uhost]} {set ololo [lindex $line 1]; continue}
lappend bazalist [list [lindex $line 0] [lindex $line 1]]
}
# Закрываем файл:
close $f
set text [string tolower [string trim [string map { {}} [stripcodes bcur $text]]]]
if {[string match "*вылетает* *игра*" $text] || [string match "*игра* *вылетает*" $text]} {
set otvet {"на Windows 7 игру запускать в режиме совместимости с Windows XP SP3 (Пакет обновления 3); на Windows XP: в папке с игрой файл \"speed2.exe\" переименовать в \"speed_2.exe\""}
putserv "PRIVMSG $chan :\00307$nick, [lindex $otvet [rand [llength $otvet]]]\003"; return}
if {[string match "*как* *ставить* *совместимость*" $text] || [string match "*совместимость* *как* *ставить*" $text] || [string match "*совместимость* *ставить* *как*" $text] || [string match "*как* *совместимость* *ставить*" $text]} {
set otvet {"на ярлыке игры нажать правой кнопкой мыши => \"свойства\" => во вкладке \"совместимость\" выбрать \"совместимость с Windows XP SP3 (Пакет обновления 3)\" и \"Выполнять эту программу от имени администратора\" => нажать \"применить\" и \"ок\""}
putserv "PRIVMSG $chan :\00307$nick, [lindex $otvet [rand [llength $otvet]]]\003"; return}
if {[string match "*не ви* *серв*" $text] || [string match "*серв* *не ви*" $text] || [string match "*не показыва* *серв*" $text] || [string match "*серв* *не показыва*" $text] || [string match "*не на* *серв*" $text] || [string match "*серв* *не на*" $text] || [string match "*как* *верс* *нужн*\\?*" $text] || [string match "*как* *нужн* *верс*\\?*" $text] || [string match "*верс* *как* *нужн*\\?*" $text] || [string match "*верс* *нужн* *как*\\?*" $text] || [string match "*нужн* *как* *верс*\\?*" $text] || [string match "*нужн* *верс* *как*\\?*" $text] || [string match "*не ищ* *серв*" $text] || [string match "*серв* *не ищ*" $text]} {
if {[faqantiflood $uhost,3 79200]} {return}
set otvet {"необходимо обновить игру до v.1.2 US: http://rghost.ru/39580088 (если после обновления игры серверов также не видно: создайте его сами)"}
putserv "PRIVMSG $chan :\00307$nick, [lindex $otvet [rand [llength $otvet]]]\003"; return}
if {[string match "*не ви* *гон*" $text] || [string match "*гон* *не ви*" $text] || [string match "*не ви* *игр*" $text] || [string match "*игр* *не ви*" $text] || [string match "*не показыва* *гон*" $text] || [string match "*гон* *не показыва*" $text] || [string match "*не показыва* *игр*" $text] || [string match "*игр* *не показыва*" $text] || [string match "*не нахо* *гон*" $text] || [string match "*гон* *не нахо*" $text] || [string match "*не нахо* *игр*" $text] || [string match "*игр* *не нахо*" $text] || [string match "*нет* *гон*\\?*" $text] || [string match "*гон* *нет*\\?*" $text] || [string match "*нет* *игр*\\?*" $text] || [string match "*игр* *нет*\\?*" $text] || [string match "*где* *гон*\\?*" $text] || [string match "*гон* *где*\\?*" $text] || [string match "*где* *игр*\\?*" $text] || [string match "*игр* *где*\\?*" $text] || [string match "*есть* *гон*\\?*" $text] || [string match "*гон* *есть*\\?*" $text] || [string match "*есть* *игр*\\?*" $text] || [string match "*игр* *есть*\\?*" $text]} {
if {[faqantiflood $uhost,8 79200]} {return}
set otvet {"в \"лобби\" (где отображаются гонки) в правом верхнем углу нажмите \"фильтр\", спросите на канале, какие режимы у созданной гонки и выставите соответсвующие в \"фильтре\""}
putserv "PRIVMSG $chan :\00307$nick, [lindex $otvet [rand [llength $otvet]]]\003"; return}
if {[string match "*есть* *серв*\\?*" $text] || [string match "*серв* *есть*\\?*" $text] || [string match "*созда* *серв*\\?*" $text] || [string match "*серв* *созда*\\?*" $text] || [string match "*дела* *серв*\\?*" $text] || [string match "*серв* *дела*\\?*" $text] || [string match "*сто* *серв*\\?*" $text] || [string match "*серв* *сто*\\?*" $text] || [string match "*нет* *серв*\\?*" $text] || [string match "*серв* *нет*\\?*" $text] || [string match "*созда* *сеть*\\?*" $text] || [string match "*сеть* *созда*\\?*" $text] || [string match "*создай* *сеть*" $text] || [string match "*сеть* *создай*" $text] || [string match "*где* *серв*\\?*" $text] || [string match "*серв* *где*\\?*" $text]} {
if {[faqantiflood $uhost,4 79200]} {return}
set otvet {"необходимо обновить игру до v.1.2 US: http://rghost.ru/39580088 (если после обновления игры серверов также не видно: создайте его сами)"}
putserv "PRIVMSG $chan :\00307$nick, [lindex $otvet [rand [llength $otvet]]]\003"; return}
if {[string match "*привет* *всем*" $text] || [string match "*всем* *привет*" $text] || [string match "*даров* *всем*" $text] || [string match "*всем* *даров*" $text] || [string match "*драсьте* *всем*" $text] || [string match "*всем* *драсьте*" $text] || [string match "*драсте* *всем*" $text] || [string match "*всем* *драсте*" $text] || [string match "*ку* *всем*" $text] || [string match "*всем* *ку*" $text] || [string match "*q* *all*" $text] || [string match "*хай* *всем*" $text] || [string match "*всем* *хай*" $text] || [string match "*re* *всем*" $text] || [string match "*всем* *re*" $text]} {
if {[faqantiflood $uhost,1 79200]} {return}
set otvet {"привет" "даров" "дарова" "здаров" "здарова" "драсьте" "здрасьте" "драсте" "здрасте" "ку" "qq"}
putserv "PRIVMSG $chan :$nick, [lindex $otvet [rand [llength $otvet]]]"; return}
if {[string match "*пока* *всем*" $text] || [string match "*всем* *пока*" $text] || [string match "*прощайте* *все*" $text] || [string match "*все* *прощайте*" $text] || [string match "*до свидания* *всем*" $text] || [string match "*всем* *до свидания*" $text] || [string match "*до встречи* *всем*" $text] || [string match "*всем* *до встречи*" $text] || [string match "*до скорого* *всем*" $text] || [string match "*всем* *до скорого*" $text] || [string match "*б* *всем*" $text] || [string match "*всем* *б*" $text]} {
if {[faqantiflood $uhost,2 79200]} {return}
set otvet {"пока" "прощай" "до свидания" "до встречи" "увидимся" "удачи" "до скорого" "всего хорошего" "давай до свидания"}
putserv "PRIVMSG $chan :$nick, [lindex $otvet [rand [llength $otvet]]]"; return}
if {[string match "*ау*" $text] || [string match "*люди" $text] || [string match "*народ" $text] || [string match "*тут* *кто*" $text] || [string match "*кто* *тут*" $text] || [string match "*кто* *игра*" $text] || [string match "*игра* *кто*" $text] || [string match "*есть* *кто*" $text] || [string match "*кто* *есть*" $text] || [string match "*слыш* *кто*" $text] || [string match "*кто* *слыш*" $text] || [string match "*слыш* *меня*" $text] || [string match "*меня* *слыш*" $text]} {
if {[faqantiflood $uhost,5 79200]} {return}
set otvet {"нет здесь никого, тут одни только боты" "хз" "а фиг его знает" "нет, наверное" "спроси че попроще" "не вкурсях" "здесь одни боты" "чаво?" "чаво тебе?" "мб" "наверняка" "наверное" "может быть"}
putserv "PRIVMSG $chan :$nick, [lindex $otvet [rand [llength $otvet]]]"; return}
if {[string match "*как* *игр*" $text] || [string match "*игр* *как*" $text]} {
if {[faqantiflood $uhost,7 79200]} {return}
set otvet {"в главном меню игры выбрать \"локальная сеть\", появится список серверов, подключиться к серверу (если серверов нет: необходимо обновить игру до версии v.1.2 US: http://rghost.ru/39580088 и при необходимости создать его)"}
putserv "PRIVMSG $chan :\00307$nick, [lindex $otvet [rand [llength $otvet]]]\003"; return}
if {[string match "*где* *патч*\\?*" $text] || [string match "*патч* *где*\\?*" $text] || [string match "*как* *патч*" $text] || [string match "*патч* *как*" $text] || [string match "*можн* *ссыл* *на патч*" $text] || [string match "*можн* *на патч* *ссыл*" $text] || [string match "*ссыл* *на патч* *можн*" $text] || [string match "*ссыл* *можн* *на патч*" $text] || [string match "*на патч* *ссыл* *можн*" $text] || [string match "*на патч* *можн* *ссыл*" $text]} {
set otvet {"патч v.1.2 US: http://rghost.ru/39580088"}
putserv "PRIVMSG $chan :\00307$nick, [lindex $otvet [rand [llength $otvet]]]\003"; return}
if {[string match "*как* *созда* *серв*" $text] || [string match "*как* *серв* *созда*" $text] || [string match "*серв* *как* *созда*" $text] || [string match "*серв* *созда* *как*" $text] || [string match "*созда* *как* *серв*" $text] || [string match "*созда* *серв* *как*" $text]} {
if {[faqantiflood $uhost,6 79200]} {return}
set otvet {"в главном меню игры: выбрать \"локальную сеть\", в левом нижнем углу нажать кнопку \"Локальная сеть\""}
putserv "PRIVMSG $chan :\00307$nick, [lindex $otvet [rand [llength $otvet]]]\003"; return}
if {[string match "*есть* *сейв*\\?*" $text] || [string match "*сейв* *есть*\\?*" $text] || [string match "*есть* *сохранен*\\?*" $text] || [string match "*сохранен* *есть*\\?*" $text] || [string match "*где* *сейв*" $text] || [string match "*сейв* *где*" $text] || [string match "*где* *сохранен*" $text] || [string match "*сохранен* *где*" $text]} {
set otvet {"100% save-файл для NFS Underground 2: http://rghost.ru/39580157 (инструкция по установке внутри архива)"}
putserv "PRIVMSG $chan :\00307$nick, [lindex $otvet [rand [llength $otvet]]]\003"; return}
# Если ник не найден, то записываем новую строку с ником в этот файл:
if {$ololo == ""} {
set f [open $baza a+]
puts $f [list $uhost $data]
close $f
} {
# Если ник найден то переписываем базу без ника:
set f [open $baza w+]
foreach line $bazalist {
puts $f [list [lindex $line 0] [lindex $line 1]]
}
}
if {[expr [unixtime]-$data] > 79200} {return}
# Затем добавляем этот ник с изменением числа:
puts $f [list $nick [expr $ololo+$data]]
close $f
}
proc faqantiflood {id time} {
global faqantiflood
if {[info exists faqantiflood($id)]} { return 1 } { set faqantiflood($id) [clock sec]; utimer $time [list unset faqantiflood($id)]; return 0 }
}
такая должна получиться процедура, нет каких-либо ошибок?