#################################################### # WindropClan @ http://windrop.clan.su # Автор: Vladislav # Версия: 1.2 # Описание: Выдает текущюу дату с процентом завершения сезона, а так же значимые события в этот день. # Команды: !дата #################################################### namespace eval today { setudef flag no[namespace tail [namespace current]] variable timer 10 variable pbind 1 variable clock 0 foreach bind {дата today} {bind pub - $::gprefix(1)$bind [namespace current]::pub; if {$pbind} {bind msg - $::gprefix(1)$bind [namespace current]::msg}} proc msg {nick host hand text} {pub $nick $host $hand $nick $text; return} proc pub {nick host hand chan text} { variable timer; variable clock if {$chan != $nick && [channel get $chan no[namespace tail [namespace current]]]} {return} if {[expr [clock seconds]-$clock] < $timer} {putserv "[expr {$nick == $chan ? "PRIVMSG":"NOTICE"}] $nick :Команда недавно запрашивалась. Повтори попытку через [expr $timer-([clock seconds]-$clock)] сек."; return}; set clock [clock seconds] set day [regsub -- {^0} [strftime %d] ""]; set all_day [regsub -- {^0+} [strftime %j] ""]; set mon [regsub -- {^0} [strftime %m] ""]; set year [strftime %Y]; set week [regsub -- {^0} [strftime %W] ""] set all_dayend $all_day; if {$all_day > 156} {set all_day "уже $::gcolor(6)$all_day"} else {set all_day "всего $::gcolor(6)$all_day"} switch [strftime %w] { 0 {set dday "$::gcolor(4)воскресенье"} 1 {set dday "$::gcolor(7)понедельник"} 2 {set dday "$::gcolor(12)вторник"} 3 {set dday "$::gcolor(3)среда"} 4 {set dday "$::gcolor(5)четверг"} 5 {set dday "$::gcolor(6)пятница"} 6 {set dday "$::gcolor(4)суббота"} } set four "$::gcolor([lindex {2 3 4 5 6 7 10 12 13 14} [rand 10]])[strftime %X] $::gcolor(14)/ $dday $::gcolor(14)/ "; switch $mon { 1 {append four "$::gcolor(12)$day января $::gcolor(14)/ $::gcolor(2)зима"; set num_day [expr 100.0/90*(31+$day)]} 2 {append four "$::gcolor(12)$day февраля $::gcolor(14)/ $::gcolor(2)зима"; set num_day [expr 100.0/90*(62+$day)]} 3 {append four "$::gcolor(7)$day марта $::gcolor(14)/ $::gcolor(5)весна"; set num_day [expr 100.0/92*$day]} 4 {append four "$::gcolor(7)$day апреля $::gcolor(14)/ $::gcolor(5)весна"; set num_day [expr 100.0/92*(31+$day)]} 5 {append four "$::gcolor(7)$day мая $::gcolor(14)/ $::gcolor(5)весна"; set num_day [expr 100.0/92*(61+$day)]} 6 {append four "$::gcolor(8)$day июня $::gcolor(14)/ $::gcolor(4)лето"; set num_day [expr 100.0/92*$day]} 7 {append four "$::gcolor(8)$day июля $::gcolor(14)/ $::gcolor(4)лето"; set num_day [expr 100.0/92*(30+$day)]} 8 {append four "$::gcolor(8)$day августа $::gcolor(14)/ $::gcolor(4)лето"; set num_day [expr 100.0/92*(61+$day)]} 9 {append four "$::gcolor(13)$day сентября $::gcolor(14)/ $::gcolor(7)осень"; set num_day [expr 100.0/91*$day]} 10 {append four "$::gcolor(13)$day октября $::gcolor(14)/ $::gcolor(7)осень"; set num_day [expr 100.0/91*(30+$day)]} 11 {append four "$::gcolor(13)$day ноября $::gcolor(14)/ $::gcolor(7)осень"; set num_day [expr 100.0/91*(61+$day)]} 12 {append four "$::gcolor(12)$day декабря $::gcolor(14)/ $::gcolor(2)зима"; set num_day [expr 100.0/90*$day]} } set c_mid [expr {( [format %.f $num_day] * 25 ) /100}]; set c_mid2 [expr {25-$c_mid}]; set c_mid_left [string repeat "|" $c_mid]; set c_mid_right [string repeat "|" $c_mid2] if {$::gcolor(6) != "" && $::gcolor(6) != "\017"} {set scolor1 [lindex [split $::gcolor(6) ","] 0],[lindex [split [regsub {\003} $::gcolor(6) ","] ","] 1]} else {set scolor1 "\00301,01"} if {$::gcolor(14) != "" && $::gcolor(14) != "\017"} {set scolor2 [lindex [split $::gcolor(14) ","] 0],[lindex [split [regsub {\003} $::gcolor(14) ","] ","] 1]} else {set scolor2 "\00314,14"} putserv "PRIVMSG $chan :$four $::gcolor(14)\[$scolor1$c_mid_left$scolor2$c_mid_right\017$::gcolor(14)\] $::gcolor(6)[format %.1f $num_day]%" putserv "PRIVMSG $chan :$::gcolor(14)С нового $::gcolor(5)$year $::gcolor(14)года прошло $all_day $::gcolor(14)д[lindex {. ень ня ней} [numgrp $all_dayend]] (это около $::gcolor(10)$week $::gcolor(14)недел[lindex {. и ь ь} [numgrp $week]])" ::http::config -urlencoding cp1251 -useragent "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)" if {[catch {set parsing [::http::geturl "http://www.calend.ru/events/" -binary true -timeout 10000]} error]} {return} elseif {[http::status $parsing] == "ok"} {set data [regsub -all -- {\n|\r|\t|\v} [encoding convertfrom cp1251 [::http::data $parsing]] ""]; regsub -all -- {\s+} $data " " data} ::http::cleanup $parsing; if {![info exists data]} {return} if {[regexp -nocase -- {