#! perl # metaserver reports use Coro::Socket; $cf::CFG{metaserver_comment} or return; our $VERSION = cf::VERSION; our $PREFIX = ""; our $SUFFIX = "trt"; our $UPDATE_METASERVER = Event->timer ( reentrant => 0, after => 5, interval => 299, hard => 1, data => cf::WF_AUTOCANCEL, cb => Coro::unblock_sub { my $socket = new Coro::Socket 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, "$PREFIX$VERSION$SUFFIX", $cf::CFG{metaserver_comment}, 0, # ibytes 0, # obytes time - $cf::uptime; syswrite $socket, $pkt; }, );