Pberndt V4

Direkt zum Inhalt springen


Quellcode HL Rcon Klasse.php

Beschreibung

Diese Klasse erlaubt es, Befehle an einen Half-Life (HL), Counter-Strike (Cs), etc. Server zu senden. So lassen sich z.B. aktuelle Statistiken über Karte (Map), Spieler, etc. ausgeben

Sourcecode

<?php

    /*
        RCON Halflife Admin Klasse

        Aktion: PHP Scripte für die armen dieser Welt
        Der Erlös geht für mein Pausenbrot drauf

        Copyright (c) 2004 by Phillip 'Firebird' Berndt
    */

   
    class hlAdmin
    {
        var $sockId;
       
        function hlAdmin($server, $port)
        {
            $this->sockId = fsockopen('udp://'.$server, $port, &$errno, &$errstr, 15);
           
            if(!$this->sockId)
                die("<br /><br />Error($errno): $errstr<br />");
        }
       
        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().'<br />
        Server Host:
'.$testServer->getString().'<br />
        Server Map:
'.$testServer->getString().'<br />
        Server Mod:
'.$testServer->getString().'<br />
        Server Description:
'.$testServer->getString().'<br />');
        $testServer->readBytes(3);
        echo('<br />
       
');
    }
    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());
?>

Download

Dateiname
HL Rcon Klasse.php
Größe
2.19kb