So, dies ist ein Tutorial, das euch zeigt, wie ihr den Status eures MTA Servers mittels PHP abfragen könnt.
Der Code ist allerdings nicht von mir, ich habe ihn im Web gefunden, aber er funktioniert problemlos.
function mta_getServer_process($dat) {
if (substr($dat,0,4)=="EYE1") {
$dat=substr($dat,4);
$i=0;
while($dat!="") {
if (substr($dat,0,2)==chr(1)."?") {
$dat=substr($dat,2);
}
$l=ord(substr($dat,0,1));
$blks[$i]=substr($dat,1,$l-1);
$dat=substr($dat,$l);
$i++;
}
$ret->gameshort=$blks[0]; -- Spielart
$ret->port=$blks[1];--Port
$ret->name=$blks[2];--Name
$ret->rules['game']=$blks[3];--Gamytype
$ret->map=$blks[4];--Mapname
$ret->rules['version']=$blks[5];--Version
if ($blks[6]=="0") {
$ret->public=1;
} else {
$ret->public=0;
}
$ret->players=$blks[7];--Online Spieler
$ret->maxplayers=$blks[8];--Maximal Spieler(Slots)
$j=0;
for ($i=11; $i<sizeof($blks)-2; $i=$i+5) {
$ret->player[$j]->name=$blks[$i];
$ret->player[$j]->score=$blks[$i+3];
$ret->player[$j]->time=0;
$j++;
}--Dort können wir die Spielerdaten ablesen
}
return $ret;
}
function mta_getServer_send($fp) {
fwrite($fp,"s");
}
function mta_getServer($ip,$port) {
$fp=fsockopen("udp://$ip", $port, $errno, $errstr);
if (!$fp) {
} else {
stream_set_timeout($fp,1,0);
mta_getServer_send($fp);
$data=fread($fp,16384);
fclose($fp);
return mta_getServer_process($data);
}
}
Alles anzeigen
So, dies hier ist der Code.
Die Funktion, die wir aufrufen müssen, ist eigentlich nur eine, unzwar mta_getServer().
So, dort gebt ihr am besten die IP und den Port eures Servers an, allerdings muss der Port der UDP Port sein, also der normale Port + 123, der Standartport ist ja 22003, also müssen wir hier den Port 22126 angeben.
So, was macht die Funktion ?
Die Funktion stellt eine Verbindung zum MTA Server her,und liest Daten aus dieser Verbindung aus.
Diese Daten werden dann mit der Funktion mta_getServer_process verarbeitet und in einen Array geschrieben, den wir dann als Return Wert bekommen und aus dem wir dann unsere Daten auslesen können.
Ich zeige hier mal die Anwendung von diesem Script:
$info = mta_getServer("IP","PORT");
echo $info->name; --Der Name des Servers
echo "<br>".$info->rules['game']; -- Der Gametype.
Wir können auch sehen, wie die einzelnen Spieler heißen.
Ich habe oben im Code nochmal kommentiert, was dort in den Array geschrieben wird.
Viel Spaß mit diesem Code.