… | |
… | |
3 | use Time::HiRes; |
3 | use Time::HiRes; |
4 | use Net::IRC3::Client::Connection; |
4 | use Net::IRC3::Client::Connection; |
5 | |
5 | |
6 | my $BOTSERVER = 'localhost'; |
6 | my $BOTSERVER = 'localhost'; |
7 | my $BOTPORT = '6667'; |
7 | my $BOTPORT = '6667'; |
8 | my $BOTNAME = 'cfbot'; |
8 | my $BOTNAME = 'cfbot2'; |
9 | my $BOTCHAN = '#cf'; |
9 | my $BOTCHAN = '#cf'; |
10 | |
10 | |
11 | my $CON; # the connection |
11 | my $CON; # the connection |
12 | |
12 | |
13 | sub unload { |
13 | sub unload { |
… | |
… | |
17 | |
17 | |
18 | sub do_notice { |
18 | sub do_notice { |
19 | my ($msg) = @_; |
19 | my ($msg) = @_; |
20 | $CON->send_chan ($BOTCHAN, NOTICE => $msg, $BOTCHAN) |
20 | $CON->send_chan ($BOTCHAN, NOTICE => $msg, $BOTCHAN) |
21 | if $CON; |
21 | if $CON; |
|
|
22 | } |
|
|
23 | |
|
|
24 | sub handle_fcmd { |
|
|
25 | my ($msg) = @_; |
|
|
26 | |
|
|
27 | if ($msg eq "!who") { |
|
|
28 | my ($numplayers, $numwiz, @plist) = (0, 0); |
|
|
29 | |
|
|
30 | foreach my $pl (cf::player::list) { |
|
|
31 | $numplayers++; |
|
|
32 | $numwiz++ |
|
|
33 | if ($pl->ob->flag (cf::FLAG_WIZ)); |
|
|
34 | push (@plist, $pl); |
|
|
35 | } |
|
|
36 | |
|
|
37 | $CON->send_chan ($BOTCHAN, NOTICE => "Total Players in The World. ($numplayers) -- WIZ($numwiz)", $BOTCHAN); |
|
|
38 | |
|
|
39 | if ($numplayers > 0) { |
|
|
40 | foreach my $pl (@plist) { |
|
|
41 | $CON->send_chan ($BOTCHAN, NOTICE => |
|
|
42 | "* " . $pl->ob->name . "/" . $pl->ob->level |
|
|
43 | ." [" . ($pl->ob->map ? $pl->ob->map->path : "NULL") . "]", $BOTCHAN); |
|
|
44 | } |
|
|
45 | } |
|
|
46 | } |
22 | } |
47 | } |
23 | |
48 | |
24 | sub check_connection { |
49 | sub check_connection { |
25 | return if $CON; |
50 | return if $CON; |
26 | |
51 | |
… | |
… | |
34 | my ($con, $msg) = @_; |
59 | my ($con, $msg) = @_; |
35 | my $name = 'irc'; |
60 | my $name = 'irc'; |
36 | my $NOW = Time::HiRes::time; |
61 | my $NOW = Time::HiRes::time; |
37 | my $tmsg = $msg->{trailing}; |
62 | my $tmsg = $msg->{trailing}; |
38 | $tmsg =~ s/\x01[^\x01]*\x01//g; |
63 | $tmsg =~ s/\x01[^\x01]*\x01//g; |
39 | if ($tmsg =~ m/\S/) { |
64 | if ($tmsg =~ /^\!/) { |
|
|
65 | handle_fcmd ($tmsg); |
|
|
66 | } elsif ($tmsg =~ m/\S/) { |
40 | $_->ob->message ( |
67 | $_->ob->message ( |
41 | "$name/".Net::IRC3::Util::prefix_nick ($msg)." chats: $tmsg", |
68 | "$name/".Net::IRC3::Util::prefix_nick ($msg)." chats: $tmsg", cf::NDI_BLUE |
42 | cf::NDI_BLUE |
|
|
43 | ) for grep { $_->ob->{ext_ignore_shout}{$name} < $NOW && $_->listening >= 10 } cf::player::list; |
69 | ) for grep { $_->ob->{ext_ignore_shout}{$name} < $NOW && $_->listening >= 10 } cf::player::list; |
44 | } |
70 | } |
45 | 1; |
71 | 1; |
46 | }, |
72 | }, |
47 | # registered => sub { |
73 | # registered => sub { |