sockId = fsockopen('udp://'.$server, $port, &$errno, &$errstr, 15);
if(!$this->sockId)
die("
Error($errno): $errstr
");
}
function executeCommand($command)
{
$cmdIdentifier = "\xFF\xFF\xFF\xFF";
fwrite($this->sockId, $cmdIdentifier.$command);
$retVal = fread($this->sockId, 5);
if(substr($retVal, 0, 4) != $cmdIdentifier)
return false;
return substr($retVal, 4);
}
function getString()
{
while(ord($mChar = fgetc($this->sockId)) != 0)
{
$retVal .= $mChar;
}
return $retVal;
}
function readBytes($count)
{
return fread($this->sockId, $count);
}
}
// Testscript
$testServer = new hlAdmin('213.202.198.59', 27015);
// Server informationen
if($testServer->executeCommand('info') == 'C')
{
echo('Server IP: '.$testServer->getString().'
Server Host: '.$testServer->getString().'
Server Map: '.$testServer->getString().'
Server Mod: '.$testServer->getString().'
Server Description: '.$testServer->getString().'
');
$testServer->readBytes(3);
echo('
');
}
else
{
echo('Verbindung fehlgeschlagen');
}
// WICHTIG:
// Vor Rcon Befehlen immer den Text "rcon " senden
// Also z.B. ('rcon rcon_password 123'), sonst kommt ein
// Fehler!!
// Irgendwas zum Beweisen, dass auch andere Befehle gehen :D
// Müsste kommen, dass ich keine rcon Rechte hab ;)
if($testServer->executeCommand('rcon mp_foobar = 1'))
echo($testServer->getString());
?>