blob: 948429ebdf36a9693bc6725b81153b43b2b49d98 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
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_nicks = 100;
$min_nicks = 5;
$num_nicks = 0;
%list_nicks = ();
$repeat = 100000;
$count = 0;
@state = (\&join, \&part);
$line = "~#test~*#* Users on #test:";
for($i = 0; $i < $max_nicks; $i++){
my($mynick) = rndchr();
$list_nicks{$mynick} = 1;
$is_op = rand(100);
if($is_op > 50){
$mynick = "@" . $mynick;
}
$line .= " " . $mynick;
$num_nicks ++;
}
print "$line\n";
sub next_one {
for(my($i) = 0; $i < 200; $i++){
$goto_state = int(rand($#state+1));
&{$state[$goto_state]};
}
if($count++ < $repeat){
&timer(1, "&next_one", 1);
}
}
sub join{
return if $num_nicks > $max_nicks;
my($mynick) = rndchr();
$list_nicks{$mynick} = 1;
print("~#test~*>* $mynick (blah\@blah) has joined channel #test\n");
$is_op = rand(100);
if($is_op > 75){
print "~#test~*+* Mode change \"+o $mynick\" on channel #test by ChanServ\n";
}
$is_voice = rand(100);
if($is_voice > 40){
print "~#test~*+* Mode change \"+v $mynick\" on channel #test by ChanServ\n";
}
$num_nicks ++;
}
sub part{
return if $num_nicks < $min_nicks;
AGAIN: {
my($times) = int(rand($num_nicks));
for($i = 0; $i<= $times; $i++){
($mynick, $value) = each(%list_nicks);
}
return if $mynick eq '';
}
next AGAIN if $value != 1;
$list_nicks{$mynick} = 0;
print("~#test~*<* $mynick has left channel #test\n");
delete $list_nicks{$mynick};
$num_nicks --;
}
|