1# countdown.pl 2 3# adds public countdown command 4 5# ver 1.0 6# - initial release 7 8use Irssi; 9use strict; 10use Time::Local; 11use vars qw($VERSION %IRSSI); 12 13$VERSION = "1.0"; 14%IRSSI = ( 15 authors => 'Mikko \'Quidz\' Salmi', 16 name => 'countdown', 17 contact => 'mikko@quidz.net', 18 description => 'adds public channel command for counting down something', 19 license => 'Public Domain', 20 changed => 'Thu Aug 8 12:06:46 EET 2002' 21); 22 23Irssi::settings_add_str('misc','countdown_target','2003 01 01 00 00 00'); 24Irssi::settings_add_str('misc','countdown_message','New year 2003:'); 25Irssi::settings_add_str('misc','countdown_command','!countdown'); 26Irssi::settings_add_str('misc','countdown_chan','#countdown'); 27 28sub sig_public { 29 my ($server, $msg, $nick, $address, $target) = @_; 30 my $ctarget = Irssi::settings_get_str("countdown_target"); 31 my $cinfo = Irssi::settings_get_str("countdown_message"); 32 my $ccmd = Irssi::settings_get_str("countdown_command"); 33 my $cchan = Irssi::settings_get_str("countdown_chan"); 34 if ($msg eq $ccmd and lc($target) eq lc($cchan)) 35 { 36 if ($ctarget =~ /^(\d+?) (\d+?) (\d+?) (\d+?) (\d+?) (\d+?)$/) 37 { 38 my $sec = timelocal($6,$5,$4,$3,$2-1,$1-1900); 39 $sec -= time; 40 my $min = ($sec/60)-(($sec%60)/60); 41 my $hour = ($min/60)-(($min%60)/60); 42 my $day = ($hour/24)-(($hour%24)/24); 43 $sec = ($sec%60); 44 $min = ($min%60); 45 $hour = ($hour%24); 46 if ($day) { $cinfo = $cinfo." $day d"; } 47 if ($hour) { $cinfo = $cinfo." $hour h"; } 48 if ($min) { $cinfo = $cinfo." $min m"; } 49 if ($sec) { $cinfo = $cinfo." $sec s"; } 50 $server->command("msg $target $cinfo"); 51 } else 52 { 53 Irssi::print("Error: countdown.pl misc.countdown_target should be format <year> <month> <day> <hour> <minute> <second>"); 54 } 55 } 56} 57 58Irssi::signal_add_last('message public', 'sig_public'); 59Irssi::print("Script : countdown.pl loaded"); 60