… | |
… | |
4 | |
4 | |
5 | use Coro::Socket; |
5 | use Coro::Socket; |
6 | |
6 | |
7 | $cf::CFG{metaserver_comment} |
7 | $cf::CFG{metaserver_comment} |
8 | or return; |
8 | or return; |
|
|
9 | |
|
|
10 | our $VERSION = cf::VERSION; |
|
|
11 | our $PREFIX = ""; |
|
|
12 | our $SUFFIX = "trt"; |
9 | |
13 | |
10 | our $UPDATE_METASERVER = Event->timer ( |
14 | our $UPDATE_METASERVER = Event->timer ( |
11 | reentrant => 0, |
15 | reentrant => 0, |
12 | after => 5, |
16 | after => 5, |
13 | interval => 299, |
17 | interval => 299, |
… | |
… | |
18 | Proto => 'udp', |
22 | Proto => 'udp', |
19 | PeerAddr => $cf::CFG{metaserver_metaserver}, |
23 | PeerAddr => $cf::CFG{metaserver_metaserver}, |
20 | LocalAddr => $cf::CFG{metaserver_serveraddr} |
24 | LocalAddr => $cf::CFG{metaserver_serveraddr} |
21 | or die "metaserver socket creation error: $!"; |
25 | or die "metaserver socket creation error: $!"; |
22 | |
26 | |
23 | my $num_players = grep |
27 | my $num_players = cf::player::num_playing; |
24 | $_->ob->map |
|
|
25 | && !$_->hidden |
|
|
26 | && !$_->ob->flag (cf::FLAG_WIZ), |
|
|
27 | cf::player::list; |
|
|
28 | |
28 | |
29 | my $pkt = sprintf "%s|%d|%s|%s|%d|%d|%d", |
29 | my $pkt = sprintf "%s|%d|%s|%s|%d|%d|%d", |
30 | $cf::CFG{metaserver_servername}, |
30 | $cf::CFG{metaserver_servername}, |
31 | $num_players, |
31 | $num_players, |
32 | cf::VERSION, |
32 | "$PREFIX$VERSION$SUFFIX", |
33 | $cf::CFG{metaserver_comment}, |
33 | $cf::CFG{metaserver_comment}, |
34 | 0, # ibytes |
34 | 0, # ibytes |
35 | 0, # obytes |
35 | 0, # obytes |
36 | time - $cf::uptime; |
36 | time - $cf::UPTIME; |
37 | |
37 | |
38 | syswrite $socket, $pkt; |
38 | syswrite $socket, $pkt; |
39 | }, |
39 | }, |
40 | ); |
40 | ); |
41 | |
41 | |