use Irssi; use strict; use vars qw($VERSION %IRSSI); $VERSION = "0.0.1"; %IRSSI = ( authors => 'Jens \'v2px\' Becker', name => 'roll', contact => 'v2px@blinkenshell.org', description => 'adds public channel command for rolling dices in typical p&p manner', license => 'GPLv2+', changed => 'Thu Mar 26 21:52:10 CET 2009' ); Irssi::settings_add_str('misc', 'roll_default_count', 1); Irssi::settings_add_str('misc', 'roll_default_dice', 10); Irssi::settings_add_str('misc', 'roll_command', '!r(?:oll)?'); sub sig_public { my ( $server, $msg, $nick, $address, $target ) = @_; my $rcnt = Irssi::settings_get_str('roll_default_count'); my $rdef = Irssi::settings_get_str('roll_default_dice'); my $rcmd = Irssi::settings_get_str('roll_command'); if( $msg =~ /^$rcmd ?(\d+)?d?(\d+)? ?([\d\s]+)?$/) { my $count = $1 ? $1 : $rcnt; my $dice = $2 ? $2 : $rdef; my @add = $3 ? split(/ /, $3) : (); my @results = @add; my %count = (); my $cstr = ''; my $temp = (); if ($count < 11) { for ( 1 .. $count ) { push @results, (int(rand($dice))+1); } $count{$_}++ for (@results); foreach my $key (keys %count) { $temp = int($count{$key}); if($temp > 1) { $cstr .= "$count{$key}x$key "; } } $server->command("msg $target ~$nick: $cstr ( @results )"); } else { $server->command("msg $target You don't need $count dice rolled."); } } } Irssi::signal_add_last('message public', 'sig_public'); Irssi::print("Script 'roll' loaded.");