Socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP)) === FALSE){ throw new Exception('Unable to create socket: '. socket_strerror(socket_last_error()) . PHP_EOL); } socket_set_option($this->Socket, SOL_SOCKET, SO_RCVTIMEO, array('sec'=>1, 'usec'=>0)); socket_set_option($this->Socket, SOL_SOCKET, SO_SNDTIMEO, array('sec'=>1, 'usec'=>0)); $msg = self::packet_prefix . "rcon \"" . $Pw . "\" " . $Msg; $msglen = strlen($msg); if(@socket_sendto($this->Socket, $msg, $msglen, 0, $Ip, $Port) === FALSE){ throw new Exception('An error occured while writing to the server.'); } if((@socket_recvfrom($this->Socket, $data, 8129, 0, $Ip, $Port)) === FALSE){ throw new Exception('Gameserver timed out.'); } socket_close($this->Socket); $this->data = $data; } catch (Exception $e) { echo 'Caught exception: ', $e->getMessage(), "\n"; return(-1); } } public function getStatus ($Ip, $Port = 28960) { try{ if(($this->Socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP)) === FALSE){ throw new Exception('Unable to create socket: '. socket_strerror(socket_last_error()) . PHP_EOL); } socket_set_option($this->Socket, SOL_SOCKET, SO_RCVTIMEO, array('sec'=>1, 'usec'=>0)); socket_set_option($this->Socket, SOL_SOCKET, SO_SNDTIMEO, array('sec'=>1, 'usec'=>0)); $msg = self::packet_prefix . "getstatus\n"; $msglen = strlen($msg); if(@socket_sendto($this->Socket, $msg, $msglen, 0, $Ip, $Port) === FALSE){ throw new Exception('Gameserver timed out.'); } if((@socket_recvfrom($this->Socket, $data, 8129, 0, $Ip, $Port)) === FALSE){ throw new Exception('An error occured while reading from the server.'); } socket_close($this->Socket); $this->data = $data; } catch (Exception $e) { echo 'Caught exception: ', $e->getMessage(), "\n"; return(-1); } } public function getStatusStructure($data) { /*Divides the response into an array [0] = prefix, [1] = variables with values (separated by "\"), [2] and greater = playerinfo*/ $splitdata = explode("\n", $data); $vardata = explode("\\", $splitdata[1]); $this->vararray=array(); $varlength = count($vardata); //First element in vardata is a whitespace, skipping it for($key=1, $value=2; $key<$varlength, $value<$varlength;$key=$key+2, $value=$value+2){ $this->vararray[$vardata[$key]] = $vardata[$value]; } $this->playerarray = array(); for($x=2, $c = 0;$x < (count($splitdata)-1); $x++, $c++){//Last element is a whitespace $player = explode(" ", $splitdata[$x]); $name = implode(" ", array_slice($player, 2)); //This is just silly ._. /* name = $player[>=2] ping = $player[1]; score = $player[0];*/ $this->playerarray[$c] = array("name" => $name, "score" => $player[0], "ping" => $player[1]); } } public function remoteConsoleStructure($data){ $this->splitdata = explode("\n", $data); } }?>