Пример #1
0
 /**
  * Handle processing details since they are different than BF3
  *
  * @param \GameQ\Buffer $buffer
  *
  * @return array
  */
 protected function processDetails(Buffer $buffer)
 {
     // Decode into items
     $items = $this->decode($buffer);
     // Set the result to a new result instance
     $result = new Result();
     // Server is always dedicated
     $result->add('dedicated', 1);
     // These are the same no matter what mode the server is in
     $result->add('hostname', $items[1]);
     $result->add('num_players', (int) $items[2]);
     $result->add('max_players', (int) $items[3]);
     $result->add('gametype', $items[4]);
     $result->add('map', $items[5]);
     $result->add('roundsplayed', (int) $items[6]);
     $result->add('roundstotal', (int) $items[7]);
     $result->add('num_teams', (int) $items[8]);
     // Set the current index
     $index_current = 9;
     // Pull the team count
     $teamCount = $result->get('num_teams');
     // Loop for the number of teams found, increment along the way
     for ($id = 1; $id <= $teamCount; $id++, $index_current++) {
         // Shows the tickets
         $result->addTeam('tickets', $items[$index_current]);
         // We add an id so we know which team this is
         $result->addTeam('id', $id);
     }
     // Get and set the rest of the data points.
     $result->add('targetscore', (int) $items[$index_current]);
     $result->add('online', 1);
     // Forced true, it seems $words[$index_current + 1] is always empty
     $result->add('ranked', (int) $items[$index_current + 2]);
     $result->add('punkbuster', (int) $items[$index_current + 3]);
     $result->add('password', (int) $items[$index_current + 4]);
     $result->add('uptime', (int) $items[$index_current + 5]);
     $result->add('roundtime', (int) $items[$index_current + 6]);
     $result->add('ip_port', $items[$index_current + 7]);
     $result->add('punkbuster_version', $items[$index_current + 8]);
     $result->add('join_queue', (int) $items[$index_current + 9]);
     $result->add('region', $items[$index_current + 10]);
     $result->add('pingsite', $items[$index_current + 11]);
     $result->add('country', $items[$index_current + 12]);
     //$result->add('quickmatch', (int) $items[$index_current + 13]); Supposed to be here according to R42 but is not
     $result->add('blaze_player_count', (int) $items[$index_current + 13]);
     $result->add('blaze_game_state', (int) $items[$index_current + 14]);
     unset($items, $index_current, $teamCount, $buffer);
     return $result->fetch();
 }
Пример #2
0
 /**
  * Handles processing the server details from goldsource response
  *
  * @param \GameQ\Buffer $buffer
  *
  * @return array
  * @throws \GameQ\Exception\Protocol
  */
 protected function processDetailsGoldSource(Buffer $buffer)
 {
     // Set the result to a new result instance
     $result = new Result();
     $result->add('address', $buffer->readString());
     $result->add('hostname', $buffer->readString());
     $result->add('map', $buffer->readString());
     $result->add('game_dir', $buffer->readString());
     $result->add('game_descr', $buffer->readString());
     $result->add('num_players', $buffer->readInt8());
     $result->add('max_players', $buffer->readInt8());
     $result->add('version', $buffer->readInt8());
     $result->add('dedicated', $buffer->read());
     $result->add('os', $buffer->read());
     $result->add('password', $buffer->readInt8());
     // Mod section
     $result->add('ismod', $buffer->readInt8());
     // We only run these if ismod is 1 (true)
     if ($result->get('ismod') == 1) {
         $result->add('mod_urlinfo', $buffer->readString());
         $result->add('mod_urldl', $buffer->readString());
         $buffer->skip();
         $result->add('mod_version', $buffer->readInt32Signed());
         $result->add('mod_size', $buffer->readInt32Signed());
         $result->add('mod_type', $buffer->readInt8());
         $result->add('mod_cldll', $buffer->readInt8());
     }
     $result->add('secure', $buffer->readInt8());
     $result->add('num_bots', $buffer->readInt8());
     unset($buffer);
     return $result->fetch();
 }