Регистрация | Вход
[ Главная · Новые сообщения ]
Форум » Основной раздел » Мастерская » Вопросы по скриптам
Вопросы по скриптам
Vladislav 12.09.12 18:31 #271
В простых примерах есть примеры записи чтения файла (под номером 11 наверно наиболее ближе будет, вместо числа использования команды записать unixtime). Алгоритм будет такой при использование данной процедуры бот прочитает файл, если не найдёт там ник/хост то запишет ник/хост и время использования, затем процедура продолжится дальше, а если найдёт ник/хост то проверит время прошло или нет, если не прошло то остановит процедуру, а если прошло то перезапишет файл с новым временем для этого ника. Это ппц как глупо делать для антифлуда) просто не трогай бота зачем его перезагружать.
pLanu2 12.09.12 19:59 #272
я специально его не перезагружаю, говорил, что бот через 2 дня вылетает - вот все таймеры и пропадают
Vladislav 12.09.12 21:11 #273
ну и я тебя писал что нужно сделать чтоб бот не вылетал)
Jake 17.09.12 06:40 #274
Владислав не можешь добавить поддержку каналов написанных русскими буквами для скрипта idleop.tcl ? Если это возможно
pLanu2 18.09.12 13:08 #275
что случилось с "!лок ник"?
раньше выводилась инфа про провайдера и второй строкой про юзера (сейчас только про провайдера)
Vladislav 18.09.12 18:56 #276
Jake а ты установи бота правильно и всё будет скрипт поддерживать, скорее всего у тебя нет русской локали на сервере (в инструкции всё есть).

pLanu2 про юзера ничего раньше не выводилась, только провайдер.
Jake 19.09.12 02:57 #277
Quote
Jake а ты установи бота правильно и всё будет скрипт поддерживать, скорее всего у тебя нет русской локали на сервере (в инструкции всё есть).


Да, всё работает. Жалко только, что канал можно всего лишь один указать
Vladislav 19.09.12 06:41 #278
А ты укажи несколько через пробел, кто тебе мешает.
Jake 20.09.12 16:08 #279
в скрипте megahal.tclкоманда: meg-min-freespeak - минимальное количество сообщений в пределах которого бот не будет выдавать сообщений. То есть если значение этой команды "15" это значит, что пока на канале не будет 15 сообщений от пользователей, то бот будет молчать ?
а то что-то он совсем молчит на free speak .... а на обращение отвечает
Vladislav 20.09.12 19:09 #280
Quote
Значение по умолчанию 15 и 50 соответственно.


Это значит что бот выбирает случайное число от 15 до 50 например 40 и на 40-е сообщение ответит если включён флаг meg-freespeak на канале.
pLanu2 22.09.12 21:08 #281
Quote
при использование данной процедуры бот прочитает файл, если не найдёт там ник/хост то запишет ник/хост и время использования, затем процедура продолжится дальше, а если найдёт ник/хост то проверит время прошло или нет, если не прошло то остановит процедуру, а если прошло то перезапишет файл с новым временем для этого ника

как проверить, прошло ли время или нет?
Vladislav 22.09.12 21:14 #282
когда действие совершается то записывается время командой [unixtime]
затем этот результат у тебя будет в переменной например $oldtime

Прошло или нет проверяешь условием

Code
if {[expr [unixtime]-$oldtime] > 79200} {return}
Jake 23.09.12 07:59 #283
какие строчки нужно закомментировать в count.tcl, чтобы бот нотисом при входе писал только:

Quote
-bot- Вас приветствует информационно-развлекательный бот! :: Список команд: !хелп
Vladislav 23.09.12 09:42 #284
не закомментировать а отредактировать, найти их не сложно там.
pLanu2 23.09.12 12:38 #285
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 }  
}

такая должна получиться процедура, нет каких-либо ошибок?
Форум » Основной раздел » Мастерская » Вопросы по скриптам
Поиск: