mirror of
https://github.com/eliasstepanik/ark-ac-server-tools.git
synced 2026-01-27 08:48:27 +00:00
Use the A2S_PLAYER query to get active players
This commit is contained in:
parent
94f3e9566d
commit
4b98f92ff8
@ -599,18 +599,39 @@ function isTheServerOnline(){
|
|||||||
# Check if anybody is connected to the server
|
# Check if anybody is connected to the server
|
||||||
#
|
#
|
||||||
function numPlayersConnected(){
|
function numPlayersConnected(){
|
||||||
perl -MSocket -e '
|
if [ -n "$arkUsePlayerList" ]; then
|
||||||
my $port = int($ARGV[0]);
|
perl -MSocket -e '
|
||||||
socket(my $socket, PF_INET, SOCK_DGRAM, 0);
|
my $port = int($ARGV[0]);
|
||||||
setsockopt($socket, SOL_SOCKET, SO_RCVTIMEO, pack("i4", 1, 0, 0, 0));
|
socket(my $socket, PF_INET, SOCK_DGRAM, 0);
|
||||||
my $sockaddr = pack_sockaddr_in($port, inet_aton($ARGV[1]));
|
setsockopt($socket, SOL_SOCKET, SO_RCVTIMEO, pack("i4", 1, 0, 0, 0));
|
||||||
send($socket, "\xff\xff\xff\xffTSource Engine Query\x00", 0, $sockaddr);
|
my $sockaddr = pack_sockaddr_in($port, inet_aton($ARGV[1]));
|
||||||
my $data = "";
|
send($socket, "\xff\xff\xff\xff\x55\xff\xff\xff\xff", 0, $sockaddr);
|
||||||
recv($socket, $data, 1400, 0) or (print "-1" and exit(1));
|
my $data = "";
|
||||||
my ($servername, $mapname, $game, $fullname, $rest) = split(/\x00/, substr($data, 6), 5);
|
recv($socket, $data, 1400, 0) or (print "-1" and exit(1));
|
||||||
my $players = ord(substr($rest, 2, 1));
|
if (ord(substr($data, 4, 1)) == 0x41) {
|
||||||
print "$players\n";
|
my $chal = substr($data, 5);
|
||||||
' "$(getQueryPort)" "${ark_MultiHome:-127.0.0.1}"
|
send($socket, "\xff\xff\xff\xff\x55" . $chal, 0, $sockaddr);
|
||||||
|
$data = "";
|
||||||
|
recv($socket, $data, 1400, 0) or (print "-1" and exit(1));
|
||||||
|
}
|
||||||
|
ord(substr($data, 4, 1)) != 0x44 and (print "-1" and exit(1));
|
||||||
|
my $players = ord(substr($data, 5, 1));
|
||||||
|
print "$players\n";
|
||||||
|
' "$(getQueryPort)" "${ark_MultiHome:-127.0.0.1}"
|
||||||
|
else
|
||||||
|
perl -MSocket -e '
|
||||||
|
my $port = int($ARGV[0]);
|
||||||
|
socket(my $socket, PF_INET, SOCK_DGRAM, 0);
|
||||||
|
setsockopt($socket, SOL_SOCKET, SO_RCVTIMEO, pack("i4", 1, 0, 0, 0));
|
||||||
|
my $sockaddr = pack_sockaddr_in($port, inet_aton($ARGV[1]));
|
||||||
|
send($socket, "\xff\xff\xff\xffTSource Engine Query\x00", 0, $sockaddr);
|
||||||
|
my $data = "";
|
||||||
|
recv($socket, $data, 1400, 0) or (print "-1" and exit(1));
|
||||||
|
my ($servername, $mapname, $game, $fullname, $rest) = split(/\x00/, substr($data, 6), 5);
|
||||||
|
my $players = ord(substr($rest, 2, 1));
|
||||||
|
print "$players\n";
|
||||||
|
' "$(getQueryPort)" "${ark_MultiHome:-127.0.0.1}"
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -2063,6 +2084,18 @@ printStatus(){
|
|||||||
my $maxplayers = ord(substr($rest, 3, 1));
|
my $maxplayers = ord(substr($rest, 3, 1));
|
||||||
print "Server Name: $servername\n";
|
print "Server Name: $servername\n";
|
||||||
print "Players: $players / $maxplayers\n";
|
print "Players: $players / $maxplayers\n";
|
||||||
|
send($socket, "\xff\xff\xff\xff\x55\xff\xff\xff\xff", 0, $sockaddr);
|
||||||
|
$data = "";
|
||||||
|
recv($socket, $data, 1400, 0) or (print "Challenge request failed" and exit(1));
|
||||||
|
if (ord(substr($data, 4, 1)) == 0x41) {
|
||||||
|
my $chal = substr($data, 5);
|
||||||
|
send($socket, "\xff\xff\xff\xff\x55" . $chal, 0, $sockaddr);
|
||||||
|
$data = "";
|
||||||
|
recv($socket, $data, 1400, 0) or (print "A2S_PLAYERS request failed" and exit(1));
|
||||||
|
}
|
||||||
|
ord(substr($data, 4, 1)) != 0x44 and (print ("A2S_PLAYERS Response: : " . unpack("H*", $data)) and exit(1));
|
||||||
|
my $players = ord(substr($data, 5, 1));
|
||||||
|
print "Active Players: $players\n";
|
||||||
' "$(getQueryPort)" "${ark_MultiHome:-127.0.0.1}"
|
' "$(getQueryPort)" "${ark_MultiHome:-127.0.0.1}"
|
||||||
|
|
||||||
if isTheServerOnline; then
|
if isTheServerOnline; then
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user