[PHP] Aktuelle SA:MP Masterliste downloaden

  • Moin :)


    dadurch das SA:MP jetzt eine Protokoll Verknüpfung eingebaut hat (samp://IP+PORT) ist es möglich via Webbrowser Server zu joinen.


    Nun ist es möglich seine "eigene" Masterlist zu erstellen, ich hab mal angefangen und stelle hier meinen Codesnippet bereit.


    Als erstes erstellen wir ein shellscript welches uns die Serverliste herunterlädt!


    SA:MP filtert die Anfragen aus so das nur mit einem bestimmtem ´User Agent´ die Serverliste geladen werden kann! Damit das funktioniert wird ein GET an
    servers.sa-mp.com gesendet wo der UA folgendes beinhaltet: ´Mozilla/3.0 (compatible; SA:MP v0.3´


    Nun erstellen wir ein Script was gerne via Cronjob alle 2-5 Minuten die Serverliste runterlädt und als ´servers´ abspeichert!


    #!/bin/sh
    rm servers <- Falls alte Datei vorhanden -> Löschen!
    wget --user-agent 'Mozilla/3.0 (compatible; SA:MP v0.3' http://server.sa-mp.com/0.3.0/servers <- Wget mit gefaktem UA
    chmod 744 servers<- Chmod 744 rwx für eigentümer read für den rest




    Unser PHP-Code sieht so aus:


    PHP
    <?
    $string = file_get_contents("servers");
    $list = explode("
    ", $string);
    foreach ($list as $value)
    {
    echo "<a href='samp://".$value."'>$value</a><br>";
    }
    ?>


    Eigentlich selbsterklären? :)
    $string wird verwendet um die datei einzulesen.
    explode um die "Zeilen" zu trennen!
    foreach um aus dem array $list einen steigenden Wert zu machen! $list[0], $list[1], $list[2] ....


    Ausgabe sieht am Ende folgendermaßen aus:


    http://94.249.157.198/query/read.php


    EIne Liste mit IP's die man nun via Cronjob filtern könnte um so seine eigene Serverliste nach Land etc. zu erstellen.


    Das überlasse ich aber euch :thumbup:


    P.S das lässt sich auch auf die "Hosted" Liste erweitern ... http://server.sa-mp.com/0.3.0/hosted
    RC 0.3b http://server.sa-mp.com/0.3.1/ servers sowie http://server.sa-mp.com/0.3.1/hosted

  • Ich bin seit 3 Wochen an so etwas ähnlichen dran ;)