#! perl # metaserver reports use IO::Socket::INET; $cf::CFG{metaserver_comment} or return; Event->timer (after => 5, interval => 299, cb => sub { my $socket = new IO::Socket::INET Proto => 'udp', PeerAddr => $cf::CFG{metaserver_metaserver}, LocalAddr => $cf::CFG{metaserver_serveraddr} or die "metaserver socket creation error: $!"; my $num_players = grep $_->ob->map && !$_->hidden && !$_->ob->flag (cf::FLAG_WIZ), cf::player::list; my $pkt = sprintf "%s|%d|%s|%s|%d|%d|%d", $cf::CFG{metaserver_servername}, $num_players, cf::VERSION, $cf::CFG{metaserver_comment}, 0, # ibytes 0, # obytes time - $cf::uptime; syswrite $socket, $pkt; });