Example #1
0
function Source_A2S_Player($ip, $port, &$challenge)
{
    $cmd = "ÿÿÿÿU" . pack('l', $challenge);
    if (!($serverdata = GetServerData($cmd, $ip, $port))) {
        return array();
    }
    GetInt32($serverdata, $datastart);
    //$type = GetInt8($packet, $datastart);
    $type = GetInt8($serverdata, $datastart);
    if ($type == 65) {
        $challenge = Decode_Challenge_Packet($serverdata, $datastart);
        return Source_A2S_Player($ip, $port, $challenge);
    }
    return Decode_Player_Packet($serverdata);
}
Example #2
0
 $server_details['players_connecting'] -= count($server_players);
 $server_details['players_connecting'] -= $server_details['hltvcount'];
 // we have some info from the server (no rcon yet)
 $xmlBody .= "<map>" . $server_details['map'] . "</map>";
 $xmlBody .= "<serverName>" . htmlentities($server_details['hostname'], ENT_COMPAT, "UTF-8") . "</serverName>";
 $xmlBody .= "<maxplayers>" . $server_details['maxplayers'] . "</maxplayers>";
 $xmlBody .= "<players>" . $server_details['players_real'] . "</players>";
 $xmlBody .= "<secure>" . $server_details['secure'] . "</secure>";
 if ($server_details['botcount'] > 0) {
     $xmlBody .= "<bots>" . $server_details['numbots'] . "</bots>";
 }
 # Get challenge
 $query_challenge = Source_A2S_GetChallenge($server_ip, $server_port);
 # Get packets with challenge number
 $server_rules = Source_A2S_Rules($server_ip, $server_port, $query_challenge);
 $server_players = Source_A2S_Player($server_ip, $server_port, $query_challenge);
 $server_details = Format_Info_Array($server_details);
 // the nextmap
 if (isset($server_rules['cm_nextmap'])) {
     $server_details['nextmap'] = $server_rules['cm_nextmap'];
 } elseif (isset($server_rules['amx_nextmap'])) {
     $server_details['nextmap'] = $server_rules['amx_nextmap'];
 } elseif (isset($server_rules['mani_nextmap'])) {
     $server_details['nextmap'] = $server_rules['mani_nextmap'];
 }
 if (isset($server_details['nextmap']) && $server_details['nextmap'] != "") {
     $xmlBody .= "<nextmap>" . $server_details['nextmap'] . "</nextmap>";
 }
 # Some unfortunate games like CS don't usually give the map timeleft
 # I wonder if some plugin can yet again provide a use here...
 # Generally the plugin version is more reliable so that is the highest priority to use