You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
1.3 KiB
65 lines
1.3 KiB
15 years ago
|
sub rndchr {
|
||
|
my $string = "";
|
||
|
for(my $i = 0; $i < 8; $i++){
|
||
|
$string .= chr(int(rand(26)) + 97); # More or less the alpahbet
|
||
|
}
|
||
|
return $string;
|
||
|
}
|
||
|
|
||
|
srand(time());
|
||
|
|
||
|
&timer(1, "&next_one", 1);
|
||
|
|
||
|
$state = 0;
|
||
|
$max_win = 5;
|
||
|
$win_open = 0;
|
||
|
%wins = {};
|
||
|
$repeat = 1000;
|
||
|
$count = 0;
|
||
|
|
||
|
|
||
|
sub next_one {
|
||
|
#
|
||
|
# State 0 is open window
|
||
|
#
|
||
|
if($state == 0){
|
||
|
$winnum = int(rand($max_win));
|
||
|
$winname = "#" . rndchr();
|
||
|
$wins{$winname} = 1;
|
||
|
print("~$winname~*>* You have joined channel $winname\n");
|
||
|
&docommand("/join $winname");
|
||
|
$state = 1;
|
||
|
$win_open ++;
|
||
|
}
|
||
|
#
|
||
|
# State 1 is print stuff to channel
|
||
|
#
|
||
|
elsif($state == 1){
|
||
|
while(($winname, $value) = each(%wins)){
|
||
|
&msg("$winname", rndchr());
|
||
|
¬ice("$winname", rndchr());
|
||
|
}
|
||
|
$state = 2;
|
||
|
}
|
||
|
#
|
||
|
# State 2 is close window
|
||
|
#
|
||
|
elsif($state == 2){
|
||
|
if($win_open > $max_win){
|
||
|
$times = int(rand($win_open-1));
|
||
|
for($i = 0; $i<= $times; $i++){
|
||
|
($winname, $value) = each(%wins);
|
||
|
}
|
||
|
print("~#test~ <boren> leaving $winname\n");
|
||
|
delete($wins{$winname});
|
||
|
print("~!all~*<* You have left channel $winname\n");
|
||
|
&docommand("/part $winname");
|
||
|
$win_open --;
|
||
|
}
|
||
|
$state = 0;
|
||
|
}
|
||
|
|
||
|
if($count++ < $repeat){
|
||
|
&timer(5, "&next_one", 1);
|
||
|
}
|
||
|
}
|