--- deliantra/server/ext/metaserver.ext 2007/01/24 13:59:28 1.3 +++ deliantra/server/ext/metaserver.ext 2007/11/14 08:09:46 1.7 @@ -7,35 +7,28 @@ $cf::CFG{metaserver_comment} or return; -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, - cf::VERSION, - $cf::CFG{metaserver_comment}, - 0, # ibytes - 0, # obytes - time - $cf::uptime; - - syswrite $socket, $pkt; - }, -); +our $VERSION = cf::VERSION; +our $PREFIX = ""; +our $SUFFIX = "trt"; + +our $UPDATE_METASERVER = cf::periodic 299, 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 = cf::player::num_playing; + + 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; +};