Регистрация | Вход
[ Главная · Новые сообщения ]
Форум » Основной раздел » Мастерская » Вопросы по скриптам
Вопросы по скриптам
pLanu2 18.08.12 15:00 #241
Code
proc ::rule::move:rule {nick uhost hand chan text} {
variable move_rule_format; variable msg_clean_database
set file "data/rule.txt"
if {$text == ""} {putserv "NOTICE $nick :Формат: $move_rule_format"; return}
if {![file exists $file]} {set f [open $file w+]; close $f}
set filep [open $file r]; set list [lrange [split [read $filep] \n] 0 end-1]; close $filep
if {$list == ""} {putserv "NOTICE $nick :$msg_clean_database"; return} {
# позиция элемента, который переносим
set plist [expr [lindex [split $text] 0]-1]
# запоминаем его
set alist [lindex $list $plist]
# убираем его
set list [lreplace $list $plist $plist]
# добавляем его на нужную позицию
set list [linsert $list [expr [lindex [split $text] 1]-1] $alist]
# переписываем файл
set filep [open $file w+]; foreach line $list { puts $filep $line }; close $filep
putserv "NOTICE $nick :Правило под номером $text перемещено"; return} {
putserv "NOTICE $nick :Правила под номером $text не существует. Всего правил: [llength $list]."; return}
}


что не так в этом процессе, даю команду переноса: !%правило 1 2 но ничего выводить не хочет
Vladislav 18.08.12 15:37 #242
И чем тебя команда !правила не устроила там всё тоже самое? Смотри бот пишет ошибку, а их тут много, ты совсем не думаешь что делаешь, алгоритм нарушен.
pLanu2 22.08.12 12:14 #243
как сделать, чтобы: в скрипте, после ввода команды, выводятся, например: две или более фразы: или выполняется любое действие (не важно)

Code

putserv "NOTICE $nick :добро пожаловать"
putserv "PRIVMSG $chan :приветствуем нового посетителя"

или тому подобное:
как сделать, чтобы когда 1-ая фраза вывелась, а вторая выводилась только спустя указанное время: минуту или 2?
Vladislav 22.08.12 13:32 #244
Через 60 секунд выведет второе сообщение, но при этом то что будет ниже второй строки выполниться сразу.

Code

putserv "NOTICE $nick :добро пожаловать"  
utimer 60 [list putserv "PRIVMSG $chan :приветствуем нового посетителя"]


Если нужно использовать блок действий через какое-то время то лучше для этого создать отдельную процедуру и запустить её по таймеру.

Code

utimer 60 [list proc_name $nick $uhost $hand $chan]
pLanu2 23.08.12 08:39 #245
Quote
Процедура реагирует на чей-либо вход на канал (JOIN)

Code
bind join - * name           
proc name {nick uhost hand chan} {           
putlog ok                     
}


как сделать, чтобы реагировала не на всех, а только на определенных, прописанных в скрипте, юзеров?
Vladislav 23.08.12 10:30 #246
Quote
bind join - * name
proc name {nick uhost hand chan} {
set list {"ник1" "ник2" "ник3"}
if {[lsearch -exact -nocase $list $nick] == -1} {return}
putlog ok
}
pLanu2 23.08.12 16:22 #247
Code
# скрипт для "U2Bot", восстанавливающего "HKS", при его крахе

bind part - * u2botcrash
proc u2botcrash {nick uhost hand chan text} {
set list {"HKS"}
if {[lsearch -exact -nocase $list $nick] == -1} {return}
if {[catch {exec /home/brian/eggdrop/killall eggdrop}]} { return }
putserv "PRIVMSG Brian :Процесс \"eggdrop\" удален"
putserv "PRIVMSG Brian\[OFFline\] :Процесс \"eggdrop\" удален"
utimer 10 [list if {[catch {exec /home/brian/eggdrop/eggdrop.sh}]} { return }]
utimer 10 [list putserv "PRIVMSG Brian :Процесс \"eggdrop\" запущен"]
utimer 10 [list putserv "PRIVMSG Brian\[OFFline\] :Процесс \"eggdrop\" запущен"]
}

bind join - * u2botrecovery
proc u2botrecovery {nick uhost hand chan} {
set list {"HKS"}
if {[lsearch -exact -nocase $list $nick] == -1} {return}
utimer 180 [list putserv "PRIVMSG $chan :!addroom"]
}


сам процесс удаления и запуска процесса "eggdrop" выполняется, а сообщение об этом не приходит, может что-то не так сделал?
все работает, сам виноват: процесс не удаляется, делается return и в результате дальше ничего не выводит
а можно поменять процесс для eggdrop'а, чтобы был не "eggdrop". а например: "bot" или что-то в этом роде?
Vladislav 23.08.12 22:08 #248
У бота есть свой номер он находится в в корне бота в файле pid.* убивать надо по этому номеру kill номер вообще я не понимаю что ты делаешь, зачем убивать бота и запускать его, о каком крахе ты говоришь, бот не должен падать, да и здесь написано что нужно сделать чтоб бот запускался сам.
pLanu2 24.08.12 08:05 #249
раньше я уже писал, что у меня бот, когда установлен OpenVPN на сервере и он держит "комнату", иногда он вылетает с канала с сообщением "Ping Timeout", вот я и хочу, чтобы хелпбот, при уходе с канала того бота, убивал этот процесс, потом запускал, и выводил на канал команду запуска "комнгаты"

с автозапуском бота все хорошо, но я заметил, что pid.* номер постоянно меняется при последующем запуске бота, можно его как-то сделать статичным?
Vladislav 24.08.12 11:09 #250
Прочитай файл:

Code
set file "/home/vladislav/eggdrop/pid.WindropClan"
if {[file exists $file]} {set filep [open $file r]; set pid [read $filep]; close $filep} {set pid ""}


если такой файл есть то в $pid будет номер.
kuka4 25.08.12 02:11 #251
Подскажите как отключить на боте команду "дай" и как отключить расшифровку ссылки на вроде этого

Quote
http://www.youtube.com/watch?v=NANop72Wodc
Dino MC47 - Никто не забыт (65 лет Великой ПОБЕДЫ) - YouTube
Vladislav 25.08.12 11:12 #252
На канале:
!set +nofignya - для "дай" но отключатся и другие команды как !сиси !пенис !эмо и т.п. или тогда убрать процедуру эту из скрипта fignya.tcl

!set +notitle - отключит информацию о ссылках.

Информация о флагах отключения выводится на главной странице при наводе мышкой на команду.
pLanu2 26.08.12 10:00 #253
как сделать: чтобы когда бот заходил на канал, он сразу же выполнял какое-то действие?
не:

Code
bind join - * process

а когда сам бот входит на канал
Vladislav 26.08.12 11:00 #254
А чем тебе не нравится bind join, добавь туда элементарную проверку на ник бота. Например я тут указал что если ник не равен нику бота то процедура останавливается, если равен то выполняется дальше.

Code
bind join - * name           
proc name {nick uhost hand chan} {
if {$nick != $::botnick} {return}           
putlog ok                     
}
pLanu2 26.08.12 12:01 #255
я и имел ввиду, добавить проверку, только не так вопрос расписал:)

как работает команда "!рестарт", в каком это скрипте, как выглядит такой процесс рестарта бота?
Форум » Основной раздел » Мастерская » Вопросы по скриптам
Поиск: