Beiträge von Longibotti

    Das doofe ist halt, dass ich den Bann des Threaderstellers erst bemerkt habe, als ich schon fertig war :D Da ich aber sowieso mit dem Preis nichts anfangen kann und mir nun einmal die Arbeit gemacht habe, veröffentliche ich das Ergebnis einfach trotzdem.


    Blogpost



    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

    Schade, kann nämlich mit Adobe Produkten absolut nichts anfangen... Werde aber wahrscheinlich trotzdem teilnehmen, einfach weil es mich interessiert, wie ich mich bei sowas schlage :) An sich eine ganz nette Aktion.


    EDIT an den über mir: Warum nicht nen Screenshot vom HTML Dokument? :D

    bit.ly und schon ist der Filter überflüssig, solange man nicht alle Links bis ins Unendliche verfolgen will. Sinnhaftigkeit und Nutzen stehen hier unter Aufwand -> bin dagegen.

    Ich verstehe nicht, wieso das bei mir nicht klappen will.


    List.php

    PHP
    <?phprequire('queryAPI.php');$ServerIP = "5.9.10.202";//ServerIP eintragen$ServerPort = "7777";//ServerPort eintragen$samp = new SampQueryAPI($ServerIP, $ServerPort);$gInfo = array();$gPlayer = 0;if($samp->isOnline() == true){    $gInfo = $samp->getInfo();    $gPlayer = count($samp->getBasicPlayers());    $Hostnamestr = $gInfo['hostname'];    $Onlinestr = 'Online';}else{    $Hostnamestr = "Unknown";    $Onlinestr = 'Offline';    $gPlayer = 0;}echo $Onlinestr;$samp->__destruct();?>



    queryAPI.php

    PHP
    <?php/** *      This API connects directly to the server, without any need for any *      middlemen connections. *      Your server must have fsockopen enabled in order to access the *      functions that have been made available from this. * *      @package sampAPI *      @version 1.2 *      @author David Weston <westie@typefish.co.uk> *      @copyright 2010; http://www.typefish.co.uk/licences/ */  class SampQueryAPI{        /**         *      @ignore         */        private $rSocket = false;        /**         *      @ignore         */        private $aServer = array();        /**         *      Creation of the server class.         *         *      @param string $sServer Server IP, or hostname.         *      @param integer $iPort Server port         */        public function __construct($sServer, $iPort = 7777)        {                /* Fill some arrays. */                $this->aServer[0] = $sServer;                $this->aServer[1] = $iPort;                /* Start the connection. */                    $this->rSocket = fsockopen('udp://'.$this->aServer[0], $this->aServer[1], $iError, $sError, 2);                if(!$this->rSocket)                {                        $this->aServer[4] = false;                        return;                }                socket_set_timeout($this->rSocket, 2);                $sPacket = 'SAMP';                $sPacket .= chr(strtok($this->aServer[0], '.'));                $sPacket .= chr(strtok('.'));                $sPacket .= chr(strtok('.'));                $sPacket .= chr(strtok('.'));                $sPacket .= chr($this->aServer[1] & 0xFF);                $sPacket .= chr($this->aServer[1] >> 8 & 0xFF);                $sPacket .= 'p4150';                fwrite($this->rSocket, $sPacket);                if(fread($this->rSocket, 10))                {                        if(fread($this->rSocket, 5) == 'p4150')                        {                                $this->aServer[4] = true;                                return;                        }                }                $this->aServer[4] = false;        }        /**         *      @ignore         */        public function __destruct()        {                @fclose($this->rSocket);        }        /**         *      Used to tell if the server is ready to accept queries.         *         *      If false is returned, then it is suggested that you remove the         *      class from active use, so that you can reload the class if needs         *      be.         *         *      @return bool true if success, false if failure.         */        public function isOnline()        {                return isset($this->aServer[4]) ? $this->aServer[4] : false;        }        /**         *      This function is used to get the server information.         *         *      <code>         *      Array         *      (         *              [password] => 0         *              [players] => 9         *              [maxplayers] => 500         *              [hostname] => Everystuff Tr3s [MAD]oshi (03a Final) [FIXED]         *              [gamemode] => Stunt/Race/DM/FR Everystuff         *              [mapname] => Everystuff         *      )         *      </code>         *         *      @return array Array of server information.         */        public function getInfo()        {                @fwrite($this->rSocket, $this->createPacket('i'));                fread($this->rSocket, 11);                $aDetails['password'] = (integer) ord(fread($this->rSocket, 1));                $aDetails['players'] = (integer) $this->toInteger(fread($this->rSocket, 2));                $aDetails['maxplayers'] = (integer) $this->toInteger(fread($this->rSocket, 2));                $iStrlen = ord(fread($this->rSocket, 4));                if(!$iStrlen) return -1;                $aDetails['hostname'] = (string) fread($this->rSocket, $iStrlen);                $iStrlen = ord(fread($this->rSocket, 4));                $aDetails['gamemode'] = (string) fread($this->rSocket, $iStrlen);                $iStrlen = ord(fread($this->rSocket, 4));                $aDetails['mapname'] = (string) fread($this->rSocket, $iStrlen);                return $aDetails;        }        /**         *      This function gets a basic list of all the players on the server.         *         *      Note as of 0.3.0, the amount of players that can be retrieved is         *      limited to 100. This means if there are more players than 100,         *      then no data will be returned, and it will be a blank array.         *         *      <code>         *      Array         *      (         *              [0] => Array         *                      (         *                              [nickname] => K1nNngO         *                              [score] => 72         *                      )         *                      *              [1] => Array         *                      (         *                              [nickname] => [kikOo]         *                              [score] => 150         *                      )         *         *              [and so on...]         *      )         *      </code>         *         *      @return array Array of player information.         */        public function getBasicPlayers()        {                @fwrite($this->rSocket, $this->createPacket('c'));                fread($this->rSocket, 11);                $iPlayerCount = ord(fread($this->rSocket, 2));                $aDetails = array();                if($iPlayerCount > 0)                {                        for($iIndex = 0; $iIndex < $iPlayerCount; ++$iIndex)                        {                                $iStrlen = ord(fread($this->rSocket, 1));                                $aDetails[] = array                                (                                        "nickname" => (string) fread($this->rSocket, $iStrlen),                                        "score" => (integer) $this->toInteger(fread($this->rSocket, 4)),                                );                        }                }                return $aDetails;        }        /**         *      This function gets a detailed list of all the players on the server.         *         *      Note as of 0.3.0, the amount of players that can be retrieved is         *      limited to 100. This means if there are more players than 100,         *      then no data will be returned, and it will be a blank array.         *         *      <code>         *      Array         *      (         *              [0] => Array         *                      (         *                              [playerid] => 0         *                              [nickname] => K1nNngO         *                              [score] => 72         *                              [ping] => 195         *                      )         *              *              [1] => Array         *                      (         *                              [playerid] => 1         *                              [nickname] => [kikOo]         *                              [score] => 150         *                              [ping] => 375         *                      )         *         *              [and so on...]         *      )         *      </code>         *         *      @return array Array of player information.         */        public function getDetailedPlayers()        {                @fwrite($this->rSocket, $this->createPacket('d'));                fread($this->rSocket, 11);                $iPlayerCount = ord(fread($this->rSocket, 2));                $aDetails = array();                for($iIndex = 0; $iIndex < $iPlayerCount; ++$iIndex)                {                        $aPlayer['playerid'] = (integer) ord(fread($this->rSocket, 1));                        $iStrlen = ord(fread($this->rSocket, 1));                        $aPlayer['nickname'] = (string) fread($this->rSocket, $iStrlen);                        $aPlayer['score'] = (integer) $this->toInteger(fread($this->rSocket, 4));                        $aPlayer['ping'] = (integer) $this->toInteger(fread($this->rSocket, 4));                        $aDetails[] = $aPlayer;                        unset($aPlayer);                }                return $aDetails;        }        /**         *      This function gets all the server rules from the server.         *         *      Rules in this context are not player rules, they are client rules,         *      like the weather of the server, time, and so on. (Custom rules,         *      when supported by a SA-MP plugin, will be included here.)         *         *      <code>         *      Array         *      (         *              [gravity] => 0.007900         *              [mapname] => Everystuff         *              [version] => 0.3a         *              [weather] => 0         *              [weburl] => samp.madoshi.net         *              [worldtime] => 12:00         *      )         *      </code>         *         *      @return array Array of server rules.         */        public function getRules()        {                @fwrite($this->rSocket, $this->createPacket('r'));                fread($this->rSocket, 11);                $iRuleCount = ord(fread($this->rSocket, 2));                $aReturn = array();                for($iIndex = 0; $iIndex < $iRuleCount; ++$iIndex)                {                        $iStrlen = ord(fread($this->rSocket, 1));                        $sRulename = (string) fread($this->rSocket, $iStrlen);                        $iStrlen = ord(fread($this->rSocket, 1));                        $aDetails[$sRulename] = (string) fread($this->rSocket, $iStrlen);                }                return $aDetails;        }        /**         *      @ignore         */        private function toInteger($sData)        {                if($sData === "")                {                        return null;                }                $iInteger = 0;                $iInteger += (ord($sData[0]));                 if(isset($sData[1]))                {                        $iInteger += (ord($sData[1]) << 8);                }                if(isset($sData[2]))                {                        $iInteger += (ord($sData[2]) << 16);                }                if(isset($sData[3]))                {                        $iInteger += (ord($sData[3]) << 24);                }                if($iInteger >= 4294967294)                {                        $iInteger -= 4294967296;                }                return $iInteger;        }        /**         *      @ignore         */        private function createPacket($sPayload)        {                $sPacket = 'SAMP';                $sPacket .= chr(strtok($this->aServer[0], '.'));                $sPacket .= chr(strtok('.'));                $sPacket .= chr(strtok('.'));                $sPacket .= chr(strtok('.'));                $sPacket .= chr($this->aServer[1] & 0xFF);                $sPacket .= chr($this->aServer[1] >> 8 & 0xFF);                $sPacket .= $sPayload;                return $sPacket;        }}

    Nein, heißt es nicht. Dein Vorschlag war, ich solle fragen ob isOnline true ergibt. isOnline ist aber nichts, und wenn ich frage ob nichts = true ist, dann erhalte ich falsch. Ergo: Es wird immer angezeigt, dass der Server offline ist

    Okay, danke dir :) Dann werde ich nochmal ein bisschen damit rumbasteln :)


    EDIT: Okay, was immer ich mache, es wird mir angezeigt, dass der Server offline ist. (Serverdaten im Code sind einfach von einem Random Server aus der Serverliste). Vielleicht hast du ja eine andere queryAPI.php Datei? @Piet_Meier Könntest du mir deine mal schicken?


    PHP
    <?phprequire('queryAPI.php');$ServerIP = "5.9.10.202";//ServerIP eintragen$ServerPort = "7777";//ServerPort eintragen$samp = new SampQueryAPI($ServerIP, $ServerPort);$gInfo = array();$gPlayer = 0;if($samp->isOnline()){    $gInfo = $samp->getInfo();    $gPlayer = count($samp->getBasicPlayers());    $Hostnamestr = $gInfo['hostname'];    $Onlinestr = 'Online';}else{    $Hostnamestr = "Unknown";    $Onlinestr = 'Offline';    $gPlayer = 0;}echo $Onlinestr;$samp->__destruct();?>

    PHP
    <?php$serverip = "5.9.10.202";//ServerIP eintragen$serverport = "7777";//ServerPort eintragenrequire "inc/SampQueryAPI.php";//Hier die Datei includen$query23 = new SampQueryAPI($serverip, $serverport);$aInformation = $query23->getInfo();if($query23->isOnline()){    echo "<b><a href='samp://".$serverip.":".$serverport."'>Der SAMP Server ist <font color='#009933'>Online</font><br /> Es sind ".$spieleron = $aInformation['players']." / ".$aInformation['maxplayers']." Spieler online</a></b>"; } else {    echo "Der SAMP Server ist <font color='#990000'>Offline </font></b>";}?>

    auch mal ein Video gemacht


    hueueuee


    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

    https://twitter.com/SochiProblems :) Ich werde mich nicht an einer Charme-Offensive von Putin beteiligen, nur weil er nicht als der böse Diktator sterben will... Als direkten Boykott würde ich das allerdings nicht bezeichnen. Die Zustände in Russland sind schlimm, daran ändert aber ein Boykott wenig. Wenn wir dort was ändern wollen, bräuchten wir einen Außenminister mit Format (alá Fischer: "Sorry, but I'm just not convinced!"). Der sollte dann aber auch mal Guantanamo ansprechen, statt in Mali, Afghanistan etc. rumzustochern.


    Jeder Coder kennt es: Stundenlang schnitzt, klebt, schneidet und malt man an seiner Webseite rum. Man fügt Bilder hinzu, gestaltet den Code klar und achtet auf Optimierung für Suchmaschinen. Dann (voller Erwartung) der erste Test im Internet Explorer: Alle Schriftarten wurden zu 'Comic Sans MS' und 'Times New Roman' verändert, da Webfonts nicht interpretiert werden können. Ausserdem wurden die schicken Icons mit 0íε ersetzt und um die Bilder in Links mal eben ein fetter Rahmen gezogen. Nachdem man alle Fehler ausgemerzt hat, blickt man dann irgendwann in seinem eigenen Code nicht mehr durch.


    Wer also keinen Bock mehr darauf hat, seine Seite für IE-User zu optimieren, der kann sie entweder so lassen oder dieses Script verwenden. Benutzer bestimmter Versionen (standardmäßig 7 und drunter) werden weggeschickt (siehe Live-Demo unten).


    Lizenz: WTFPL (Do What the Fuck You Want to Public License)
    Virenscan: VirusTotal (0/51 erkannt)
    Live-Demo: Template / Script
    Readme: Klick
    Download: Klick



    Hinweis! Ich empfehle jedem, die lästigen Anpassungen durchzuführen, damit die Benutzer barrierefrei surfen können. Doch wer entweder keinen Wert auf Cross-Browser-Testing legt, faul ist, oder einfach nicht das dazu benötigte Wissen hat, kann dieses Script gerne verwenden :P Do what the fuck you want to with it.