- Код: Выделить всё
- if { ![info exists egglib(ver)] || [expr {$egglib(ver) < 1.2}] } {
 putlog "***********************************************"
 putlog " egglib_pub NOT FOUND OR VERSION IS TOO OLD!"
 putlog " Download last version of egglib_pub here:"
 putlog "http://eggdrop.org.ru/scripts/egglib_pub.zip"
 putlog "***********************************************"
 die
 }
 # bind на команду !online для всех юзеров.
 bind pub - !код pub_online
 proc pub_online {nick uhost hand chan args} {
 # указываем URL для сайта, с которого будет брать информацию
 set query "http://10.37.2.51/"
 # Инициализируем HTTP, нам вернут id, с котором мы будем работать далее
 # а так-же зарегестрируются 2 функции pub_online_on_data - это вызовется
 # если данные прийдут. и pub_online_on_error - вызовется если произойдет
 # какой-то облом.
 set id [::egglib::http_init "pub_online_"]
 # собственно забираем страничку.
 # [list $nick $uhost $chan] - это дополнительные аргументы которые нужно
 # передать в pub_online_on_error и pub_online_on_data
 ::egglib::http_get $id $query [list $nick $uhost $chan]
 }
 # callback функция для ошибок.
 proc pub_online_on_error {id nick uhost chan} {
 # скажем юзеру об ошибке
 ::egglib::out $nick $chan "Я не смог соединиться с сервером... -.-"
 }
 # callback функция если всё хорошо...
 proc pub_online_on_data {id data nick uhost chan} {
 putlog "pub_online_on_data"
 # разбиваем html в $data на строки... и обрабатываем каждую строку.
 foreach line [split $data \n] {
 # ищем нужную нам строку, заодно и выдираем оттуда заветное число.
 # "\ " мы делаем чтоб regexp был правильный
 # "\d+" означает 1 или более сиволов от 0 до 9.
 # параметры для regexp:
 # $line - отсюда берём
 # g - сюда положится всякий злам
 # num - сюда положится то, что в скобках (\d+) - те, наше число.
 if { [regexp -nocase -- {<b>Игроки:</b> (\d+)} $line g num]} {
 # если число нашлось... печатаем результат на канал
 ::egglib::out $nick $chan "Игроков на безмодовом сервере: $num"
 # ... и выходим из функции...
 return
 }
 }
 # если мы попали сюда... значит мы не смогли найти желаемую строку...
 # напишем что не смогли, чтоб бот не был молчалив.
 ::egglib::out $nick $chan "Я не смог узнать текущее кол-во юзеров..."
 }
потом со временем поднял второй игровой сервер, требуется мониторинг и на него, а как сделать не понимаю.
сделал так
- Код: Выделить всё
- if { ![info exists egglib(ver)] || [expr {$egglib(ver) < 1.2}] } {
 putlog "***********************************************"
 putlog " egglib_pub NOT FOUND OR VERSION IS TOO OLD!"
 putlog " Download last version of egglib_pub here:"
 putlog "http://eggdrop.org.ru/scripts/egglib_pub.zip"
 putlog "***********************************************"
 die
 }
 # bind на команду !online для всех юзеров.
 bind pub - !код pub_online
 proc pub_online {nick uhost hand chan args} {
 # указываем URL для сайта, с которого будет брать информацию
 set query "http://10.10.10.38/"
 set query2 "http://10.10.10.38/statcod5/"
 # Инициализируем HTTP, нам вернут id, с котором мы будем работать далее
 # а так-же зарегестрируются 2 функции pub_online_on_data - это вызовется
 # если данные прийдут. и pub_online_on_error - вызовется если произойдет
 # какой-то облом.
 set id [::egglib::http_init "pub_online_"]
 set id2 [::egglib::http_init "pub_online2_"]
 # собственно забираем страничку.
 # [list $nick $uhost $chan] - это дополнительные аргументы которые нужно
 # передать в pub_online_on_error и pub_online_on_data
 ::egglib::http_get $id $query [list $nick $uhost $chan]
 }
 ::egglib::http_get $id2 $query2 [list $nick $uhost $chan]
 }
 # callback функция для ошибок.
 proc pub_online_on_error {id nick uhost chan} {
 proc pub_online2_on_error {id nick uhost chan} {
 # скажем юзеру об ошибке
 ::egglib::out $nick $chan "Я не смог соединиться с сервером... -.-"
 }
 ::egglib::out $nick $chan "Я не смог соединиться с сервером... -.-"
 }
 # callback функция если всё хорошо...
 proc pub_online_on_data {id data nick uhost chan} {
 proc pub_online2_on_data1 {id data nick uhost chan} {
 putlog "pub_online_on_data"
 putlog "pub_online2_on_data1"
 # разбиваем html в $data на строки... и обрабатываем каждую строку.
 foreach line [split $data \n] {
 foreach line [split $data1 \n] {
 # ищем нужную нам строку, заодно и выдираем оттуда заветное число.
 # "\ " мы делаем чтоб regexp был правильный
 # "\d+" означает 1 или более сиволов от 0 до 9.
 # параметры для regexp:
 # $line - отсюда берём
 # g - сюда положится всякий злам
 # num - сюда положится то, что в скобках (\d+) - те, наше число.
 if { [regexp -nocase -- {<b>Игроки:</b> (\d+)} $line g num]} {
 if { [regexp -nocase -- {<b>Игроки:</b> (\d+)} $line g num1]} {
 # если число нашлось... печатаем результат на канал
 ::egglib::out $nick $chan "Игроков на сервере CoD4 - $num Статистика тут http://10.10.10.38/stats/ Подробный мониторинг тут http://10.10.10.38"
 ::egglib::out $nick $chan "Игроков на сервере CoD5 - $num1
 # ... и выходим из функции...
 return
 }
 }
 # если мы попали сюда... значит мы не смогли найти желаемую строку...
 # напишем что не смогли, чтоб бот не был молчалив.
 ::egglib::out $nick $chan "Я не смог узнать текущее кол-во игроков..."
 }
не работает, где затык подскажите пожалуйста,я в ткл скриптинге не шарю вообще
From tvrsh: не забываем использовать теги [Code].



 по серверу код5, хотя адрес точен я проверял, хтмл мониторинг там пашет
 по серверу код5, хотя адрес точен я проверял, хтмл мониторинг там пашет он по серверу код5 не может узнать кол-во игроков
 он по серверу код5 не может узнать кол-во игроков 
