aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xcommon/status.pl8
-rwxr-xr-xgameserver/gameserver.pl20
2 files changed, 21 insertions, 7 deletions
diff --git a/common/status.pl b/common/status.pl
index 4e9ad28..32cb9e7 100755
--- a/common/status.pl
+++ b/common/status.pl
@@ -95,11 +95,11 @@ sub getResponse
my $reply = "";
for ( 0..$info{numplayers}-1 )
{
- $reply .= "\\player_$_\\" .$player{player_};
+ $reply .= "\\player_$_\\" .$player{player_}.$_; # Player0
$reply .= "\\frags_$_\\" .$player{frags_};
$reply .= "\\health_$_\\" .$player{health_};
$reply .= "\\deaths_$_\\" .$player{deaths_};
- $reply .= "\\ping_$_\\" .int(rand(400)); # random number!
+ $reply .= "\\ping_$_\\" .int((rand(400))+24); # random number!
$reply .= "\\team_$_\\" .$player{team_};
$reply .= "\\mesh_$_\\" .$player{mesh_};
$reply .= "\\skin_$_\\" .$player{skin_};
@@ -117,11 +117,11 @@ sub getResponse
$reply .= "\\" . join '\\', %rules;
for ( 0..$info{numplayers}-1 )
{
- $reply .= "\\player_$_\\" .$player{player_};
+ $reply .= "\\player_$_\\" .$player{player_}.$_; # Player0
$reply .= "\\frags_$_\\" .$player{frags_};
$reply .= "\\health_$_\\" .$player{health_};
$reply .= "\\deaths_$_\\" .$player{deaths_};
- $reply .= "\\ping_$_\\" .int(rand(400)); # random number!
+ $reply .= "\\ping_$_\\" .int((rand(400))+24); # random number!
$reply .= "\\team_$_\\" .$player{team_};
$reply .= "\\mesh_$_\\" .$player{mesh_};
$reply .= "\\skin_$_\\" .$player{skin_};
diff --git a/gameserver/gameserver.pl b/gameserver/gameserver.pl
index e86af7c..924ce06 100755
--- a/gameserver/gameserver.pl
+++ b/gameserver/gameserver.pl
@@ -26,7 +26,7 @@ my $gamename = &getGameName;
my $port = 7778;
# set masterserver
-my $masteraddress = "localhost";
+my $masteraddress = "rhea.333networks.com";
my $masterport = 27900;
my $ma = sockaddr_in($masterport, inet_aton($masteraddress) );
@@ -56,8 +56,22 @@ my $udp_server; $udp_server = AnyEvent::Handle::UDP->new(
# if status
if ($data[0] =~ m/^(basic|info|rules|players|status|echo)$/ig)
- {
- $udp_server->push_send(&getResponse($data[0], $data[1] || ""), $pa)
+ {
+ # generate the status response
+ my $response = &getResponse($data[0], $data[1] || "");
+
+ # status is longer than 1024 bytes. older games do not support
+ # long queries. start splitting at \player\ parts.
+
+ # split the response in chunks of 768 bytes and send (for large lists)
+ while (length $response > 768)
+ {
+ my $pos = index $response, "\\player_", 768;
+ my $chunk = substr $response, 0, $pos, '';
+ $udp_server->push_send($chunk, $pa);
+ }
+ # last <512 chunk
+ $udp_server->push_send($response, $pa);
}
# respond to possible secure