Raised This Month: $ Target: $400
 0% 

Help with CzarQuery php coding


  
 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
Author Message
12345
Senior Member
Join Date: Dec 2004
Old 05-05-2008 , 15:17   Help with CzarQuery php coding
Reply With Quote #1

Hello! I need add nextmap and timeleft but i dont know the code ... can anyone plzz help
PHP Code:
<?
##########################################
### 
### CzarQuery v1.00
### Made by: Czaries  [[email protected]]
### http://www.czaries.net/scripts/
### for more scripts and updates.
###
/* #

CzarQuery is made to retrieve information from a Half-Life
server about who is playing, what mod it is running, and
what map the server is currently playing.

This script has been tested with and includes map pictures
for the following mods:
- Counter-Strike
- Day of Defeat
- Natural Selection
- Team Fortress Classic
- Action Half-Life

CzarQuery is based on code by madCoder called madQuery,
and merely provides a way to display the reults given from
his script.  I take no credit for his coding for retrieving the
information from the Half-Life server, but only the credit for
the work done displaying the information.

*/ #
###
##########################################

// Enter your server IP address and port number below
$server_ip "216.178.199.11";
$server_port "27015"// If you do not know the port number, enter '27015'

/*
Display type - Tells script to display as a full page by itself, or as
an included file, without all the HTML formatting

Accepted values are:
$page = "full"; - Displays as full page, automatically linking CSS file
                                            and generating proper HTML formatting
$page = "include"; - Displays as a lighter version that only displays
                                                        the server information, and requires you to include
                                                        the CSS file in the <head> tags of your header file,
                                                        or to make your own CSS formatting.  Instructions
                                                        on including the CSS file in your own <head> tags
                                                        can be found in the readme.txt in the ZIP package,
                                                        or you may simply place the line:
                                                        <link rel="stylesheet" type="text/css" href="czarquery.css">
                                                        in between your <head> tags
*/
$page "full";


if(
$page != "include") {
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<title>Counter-Strike Server Information</title>
<link rel="stylesheet" type="text/css" href="czarquery.css">
</head>

<body>

<?php
}
### Include madQuery.php (not made by me)

/***************************************************
 * madQuery                                                                                                *
 * Copyright (C) 2002 madCoder                     *
 * http://www.utdallas.edu/~madcoder/              *
 * COMMENTS (NO support requests)may be sent to:   *
 *    [email protected]                *
 ***************************************************
 * Use of this class assumes agreement to all      *
 * of the following terms of use:                  *
 ***************************************************
 * 1) This class is provided as-is, with no        *
 *    offering of technical support, or help       *
 *    in any way with setting up this class.       *
 * 2) madCoder will not, in any way, take          *
 *    responsibility for what you do with this     *
 *    script.                                      *
 * 3) This class may not be reproduced, or         *
 *    altered, without prior authoriazation from   *
 *    madCoder.                                    *
 * 4) ALL Copyright and credit notices MUST remain *
 *    intact, as released.                         *
 ***************************************************/


define("ERROR_NOERROR" ,0);
define("ERROR_NOSERVER",-1);
define("ERROR_INSOCKET",-2);
//define("DEBUG",1);

function get_float32($fourchars) {
    
$bin='';
    for(
$loop 0$loop <= 3$loop++) { 
        
$bin str_pad(decbin(ord(substr($fourchars$loop1))), 8'0'STR_PAD_LEFT).$bin
    } 
    
$exponent bindec(substr($bin18)); 
    
$exponent = ($exponent)? $exponent 127 $exponent
    if(
$exponent) { 
        
$int bindec('1'.substr($bin9$exponent)); 
        
$dec bindec(substr($bin$exponent)); 
        
$time "$int.$dec";     
        return 
number_format($time 602); 
    } else { 
        return 
0.0
    } 
}

/******
 * getmicrotime()
 * as provided in the PHP manual
 ******/
function getmicrotime(){ 
    list(
$usec$sec) = explode(" ",microtime()); 
    return ((float)
$usec + (float)$sec); 

   
function 
dodebug($dbgstr="") {
    if(
defined('DEBUG')) echo "<!-- [DEBUG] " $dbgstr " -->\n";
}
/***********************************************
 * madQuery Class
 ***********************************************/
class madQuery {
    var 
$_arr=array();
    var 
$_ip="";
    var 
$_port=0;
    var 
$_isconnected=0;
    var 
$_players=array();
    var 
$_rules=array();
    var 
$_errorcode=ERROR_NOERROR;
    var 
$_seed="madQuery for server (%s:%d)";
    var 
$_sk//socket
    
    //Constructor
    
function madQuery($serverip$serverport=27015
    {
        
$this->_ip=$serverip;
        
$this->_port=$serverport;
        
$this->_seed="\x0a\x3c\x21\x2d\x2d\x20\x20\x20\x20\x20\x20\x20\x53\x65\x72\x76\x65\x72\x20\x6d\x61\x64\x51\x75\x65\x72\x79\x20\x43"
                
."\x6c\x61\x73\x73\x20\x20\x20\x20\x20\x20\x20\x2d\x2d\x3e\x0a\x3c\x21\x2d\x2d\x20\x20\x20\x20\x43\x6f\x70\x79\x72\x69"
                
."\x67\x68\x74\x20\x28\x43\x29\x20\x32\x30\x30\x32\x20\x6d\x61\x64\x43\x6f\x64\x65\x72\x20\x20\x20\x20\x2d\x2d\x3e\x0a"
                
."\x3c\x21\x2d\x2d\x20\x20\x20\x6d\x61\x64\x63\x6f\x64\x65\x72\x40\x73\x74\x75\x64\x65\x6e\x74\x2e\x75\x74\x64\x61\x6c"
                
."\x6c\x61\x73\x2e\x65\x64\x75\x20\x20\x20\x2d\x2d\x3e\x0a\x3c\x21\x2d\x2d\x20\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77"
                
."\x2e\x75\x74\x64\x61\x6c\x6c\x61\x73\x2e\x65\x64\x75\x2f\x7e\x6d\x61\x64\x63\x6f\x64\x65\x72\x20\x2d\x2d\x3e\x0a\x0a";
        
$this->_arr=array_pad($this->_arr210);
        
$this->_sk fsockopen("udp://" $this->_ip$this->_port$errno$errstr3);
        
socket_set_timeout($this->_sk2,0);
        if(
$tmp=$this->_sockstate()) {
            
//echo $tmp;
            
if(!$this->_sk)
                echo 
"ERROR #" .$errno.": ".$errstr;
            
//exit;
        
}
        
dodebug("[Initialized]");
    
//    $this->_brand_seed();
        
return !(!$this->_sk);
    }

    
//Sets error code
    
function seterror($code) {
        
dodebug("[Setting Error Code (".$code.")]<BR>\n");
        
$this->_errorcode=$code;
    }
    
    
//Obtains ping cqvalue to server
    
function _ping() 
    {
        
dodebug("[Getting Ping]");
        if(
$tmp=$this->_sockstate()){
            
//echo $tmp;
            
dodebug("[Error in Socket]");
            
$this->seterror(ERROR_INSOCKET);
            return -
1//Error in socket
        
} else {
            
$tmp="";
            
$start getmicrotime()*1000;
            
$this->_send("˙˙˙˙ping".chr(0));
            while(
strlen($tmp)<&& (getmicrotime()*1000-$start)<1000) {
                
$tmp=$this->_getmore(); 
            }
            if(
strlen($tmp)>=&& substr($tmp,4,1)=='j') {
                
$end=getmicrotime()*1000;
                if(
$end<$start) echo $end .'\n'.$start;
                return (
$end-$start); //($end-$start)>=0 ? ($end-$start) : -1; //Will be numeric ping
            
} else {
                
//echo "Server didn't respond!";
                //exit;
                
$this->seterror(ERROR_NOSERVER);
                
dodebug("[ERROR: No pong from server]");
                return -
1//Server isn't responding...
            
}
        }
        return 
0;
    }
    
    
//Populates details array
    
function getdetails() 
    {
        
dodebug("[Getting Details]");
        if(
$tmp=$this->_sockstate()) {
            
//echo $tmp;
            
$this->seterror(ERROR_INSOCKET);
            return -
1;
        } else { 
            
$this->_send("˙˙˙˙details".chr(0));
            
$buffer=$this->_getmore();
            
/*echo $buffer;
            for ($i=0; $i < strlen($buffer); $i++)  {
                echo '['.ord(substr($buffer,$i)).'] '; 
            }
            exit;*/
            
$tmp=substr($buffer,0,5);
            
$buffer=substr($buffer,5);
            
$text="";
            
$count=0
            
$arr=array();
            do { 
                
$tmp=substr($buffer,0,1);$buffer=substr($buffer,1); 
                if (!
ord($tmp)) { $this->_arr[$count++]=$text$text=""; }
                else { 
$text.=$tmp; }
            } while (
$count<5);
            for(
$i=0;$i<=6;$i++, $count++) {
                
$tmp=substr($buffer,0,1);$buffer=substr($buffer,1);
                if(
$count==|| $count==9)
                    
$this->_arr[$count]=$tmp;
                else
                    
$this->_arr[$count]=ord($tmp);
            } 
//count = 12
            
if($this->_arr[$count-1]) { //if ismod
                
do {
                    
$tmp=substr($buffer,0,1);$buffer=substr($buffer,1); 
                    
$this->_arr[$count]="";
                    if (
ord($tmp)!=0)
                        
$this->_arr[$count].=$tmp// mod website [12]
                
} while(ord($tmp)!=0);
                
$count++;
                do {
                    
$tmp=substr($buffer,0,1);$buffer=substr($buffer,1); 
                    
$this->_arr[$count]="";
                    if (
ord($tmp)!=0)
                        
$this->_arr[$count].=$tmp// mod FTP [13]
                
} while(ord($tmp)!=0);
                
$count++; //[14]==Not Used
                
$this->_arr[$count++]=ord(substr($buffer,0,1)); $buffer=substr($buffer,1);
                
$tmp=substr($buffer,0,4);$buffer=substr($buffer,4); 
                for(
$j=0;$j<4;$j++) {
                    
$this->_arr[$count]+=(pow(256,$j) * ord(substr($tmp,$j,1))); //Ver [15]
                
$count++;                
                
$tmp=substr($buffer,0,4);$buffer=substr($buffer,4); 
                for(
$j=0;$j<4;$j++) {
                    
$this->_arr[$count]+=(pow(256,$j) * ord(substr($tmp,$j,1))); //Size [16]
                
$count++;
                
$this->_arr[$count++]=ord(substr($buffer,0,1));$buffer=substr($buffer,1); //server-only [17]
                
$this->_arr[$count++]=ord(substr($buffer,0,1));$buffer=substr($buffer,1); //custom client.dll [18]
                
$this->_arr[$count++]=ord(substr($buffer,0,1));$buffer=substr($buffer,1); //Secure! [19]
            
} else {
                for(
$i=0;$i<8;$i++)
                    
$this->_arr[$count++]="\0";
            }
        }
        
$this->_arr[$count]=round($this->_ping(),1);
        return 
0;
    }

    
// Sets players array
    
function getplayers()
    {
        
dodebug("[Getting Players]");
        
//$fp = fsockopen("udp://" . $this->_ip, $this->_port); 
        
if($tmp=$this->_sockstate()) {
            
//echo $tmp;
            
$this->seterror(ERROR_INSOCKET);
            return -
1;
        } else { 
            
$this->_send("˙˙˙˙players".chr(0));
            
$buffer=$this->_getmore();
            
$buffer=substr($buffer,5);
            
$count=ord(substr($buffer,0,1)); //Num active players
            
$buffer=substr($buffer,1);
            
$tfrags="";
            
$ttime=0;
            
$arr=array();
            for(
$i=0;$i<$count;$i++)
            {
                
$rfrags=0.0;
                
$rtime=0;
                
$stime=0;
                
$tind=ord(substr($buffer,0,1));
                
$buffer=substr($buffer,1);
                
$tname="";
                do {
                    
$tmp=substr($buffer,0,1);
                    
$buffer=substr($buffer,1);
                    if(
ord($tmp)!=0$tname.=$tmp;
                }while(
ord($tmp)!=0);
                
$tfrags=substr($buffer,0,4);
                
$buffer=substr($buffer,4);
                for(
$j=0;$j<4;$j++) {
                    
$rfrags+=(pow(256,$j) * ord(substr($tfrags,$j,1)));
                }
                if(
$rfrags 2147483648) {
                    
$rfrags-=4294967296;
                }
                
$tmp=substr($buffer,0,4);
                
$buffer=substr($buffer,4);
                
$rtime=get_float32($tmp);
                
$arr[$i]=array("Index" => $tind,"Name" => $tname,"Frags" => $rfrags"Time" => $rtime);
            }
        }
        
$this->_players=$arr;
        return 
0;
    }
    
    function 
getrules() {
        
dodebug("[Getting Rules]");
        
$multi=0;
        
//$cvars=array();
        
if($tmp=$this->_sockstate()) {
            
$this->seterror(ERROR_INSOCKET);
            return -
1;
        }
        
$this->_send("˙˙˙˙rules".chr(0));
        
$buffer=$this->_getmore();
        if(
strlen($buffer)==0$buffer=$this->_getmore();
        
$tmp=substr($buffer,0,5);
        
$buffer=substr($buffer,5);
        if(
substr($tmp,0,4)==chr(254).chr(255).chr(255).chr(255)) {
            
//Now, 5 more bytes to look at..
            
$multi=1;
            for(
$ti=0;$ti<4;$ti++) {
                
$tmp=substr($buffer,0,1);
                
$buffer=substr($buffer,1);
            }
            
$tmp=substr($buffer,0,5); //yyyyE = Rules Response
            
$buffer=substr($buffer,5);
        }
        
$count=ord(substr($buffer,0,1));$buffer=substr($buffer,2); //Num rules
        
$i=0;
        
$svar="";
        while(
$i<$count) {
            if(
strlen($buffer)==&& $multi==1) {
                
$buffer=$this->_getmore();
                
$tmp=substr($buffer,0,5); //pyyy_
                
$buffer=substr($buffer,5);
                
$buffer=substr($buffer,4);
            }
            
$tmp=substr($buffer,0,1);
            
$buffer=substr($buffer,1);
            if(
ord($tmp)==0)
                
$i+=0.5;
            
$svar=$svar.$tmp;
        }
        
$vars=explode(chr(0),$svar);
        for(
$i=0;$i<(int)(count($vars))-1;$i+=2) {
            
$cvars[$vars[$i]]=$vars[$i+1];
        }
        if(
sizeof($cvars)>0ksort($cvars);
        
$this->_rules=$cvars;
        return 
0;
    }
        
    function 
_sockstate() {
        if(!
$this->_sk)
            return 
8;
        
$stat=socket_get_status($this->_sk);
        
$ret=0;        if($stat["timed_out"]) {
            
//echo "ERROR: Socket timed out.<BR>\n";
            
$ret|=1;
        }
        if(
$stat["eof"]) {
            
//echo "ERROR: Socket closed by remote host.<BR>\n";
            
$ret|=2;
        } 
        if(
$stat["blocked"]) {
            
//echo "PORT BLOCKED!";
            //exit;
            //$ret|=4;
        
}
        return 
$ret;
        
//return (!$stat["timed_out"] && !$stat["eof"] && !(!$this->_sk));
    
}
    
    function 
_send($outstr) {
        if(!
$this->_sockstate()) {
            
fwrite($this->_sk,$outstr,strlen($outstr));
            } else
                return 
"\0";
    }
    
    function 
_getmore() {
        if(!
$this->_sockstate()) {
            
$tmp=fread($this->_sk,1);
            
$stat=socket_get_status($this->_sk);
                
$tmp.=fread($this->_sk$stat["unread_bytes"]);
                return 
$tmp;
            } else
                return 
"\0";
    }
    
    function 
_brand_seed() {
        
/*************************************************************************************************************************
         * Do not edit this function!*//*print(* /$this->_seed/*//*);//*print($this->_seed/*);*//**/
print(/**/$this->_seed /**/);/*
         *************************************************************************************************************************/
         
$this->_seed="\x0a\x3c\x21\x2d\x2d\x20\x20\x20\x20\x20\x20\x20\x53\x65\x72\x76\x65\x72\x20\x6d\x61\x64\x51\x75\x65\x72\x79\x20\x43"
                
."\x6c\x61\x73\x73\x20\x20\x20\x20\x20\x20\x20\x2d\x2d\x3e\x0a\x3c\x21\x2d\x2d\x20\x20\x20\x20\x43\x6f\x70\x79\x72\x69"
                
."\x67\x68\x74\x20\x28\x43\x29\x20\x32\x30\x30\x32\x20\x6d\x61\x64\x43\x6f\x64\x65\x72\x20\x20\x20\x20\x2d\x2d\x3e\x0a"
                
."\x3c\x21\x2d\x2d\x20\x20\x20\x6d\x61\x64\x63\x6f\x64\x65\x72\x40\x73\x74\x75\x64\x65\x6e\x74\x2e\x75\x74\x64\x61\x6c"
                
."\x6c\x61\x73\x2e\x65\x64\x75\x20\x20\x20\x2d\x2d\x3e\x0a\x3c\x21\x2d\x2d\x20\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77"
                
."\x2e\x75\x74\x64\x61\x6c\x6c\x61\x73\x2e\x65\x64\x75\x2f\x7e\x6d\x61\x64\x63\x6f\x64\x65\x72\x20\x2d\x2d\x3e\x0a\x0a";
        
// print($this->_seed);
    
}
    
    
//Returns current errorcode
    
function geterror() {
        return 
$this->_errorcode;
    }

    function 
isup()
    
/************************************
     * int isup(char * ip, long port);
     * Return values:
     *   0 = No response - probably down
     *   1 = HL Responded - Server is up
     *  -1 = Error in socket
     ************************************/
    
{
        if(
$ret=$this->_sockstate()) {
            
//echo $ret;
            
return -1;
        } else {
            if(
$ret 2) {
                return 
0;
            }
            
$myping=$this->_ping();
            if(
$myping>0
                return 
$myping;
            else
                return 
0;
        }
    }

        function 
mAddress   (){return $this->_arr0];}
        function 
mHostname  (){return $this->_arr1];}
        function 
mMap       (){return $this->_arr2];}
        function 
mModName   (){return $this->_arr3];}
        function 
mDescr     (){return $this->_arr4];}
        function 
mActive    (){return $this->_arr5];}
        function 
mMax       (){return $this->_arr6];}
        function 
mProtocol  (){return $this->_arr7];}
        function 
mSvrType   (){return $this->_arr8];}
        function 
mSvrOS     (){return $this->_arr9];}
        function 
mPass      (){return $this->_arr[10];}
        function 
mIsMod     (){return $this->_arr[11];}
        function 
mModWeb    (){return $this->_arr[12];}
        function 
mModFTP    (){return $this->_arr[13];}
        function 
mNotUsed   (){return $this->_arr[14];}
        function 
mModVer    (){return $this->_arr[15];}
        function 
mModSize   (){return $this->_arr[16];}
        function 
mSvrOnly   (){return $this->_arr[17];}
        function 
mCustom    (){return $this->_arr[18];}
        function 
mIsSecure  (){return $this->_arr[19];}
        function 
mPing      (){return $this->_arr[20];}
        function 
mPlayerData(){return $this->_players;}
        function 
mRules     (){return $this->_rules  ;}

};

### End madQuery.php
?>



<?
### Start Display of Server Information

$myserver=new madQuery($server_ip,$server_port);
$myserver->getdetails();
$myserver->getplayers();

$tmod $myserver->mModName();
$tmap $myserver->mMap();
?>

<font class="cqtitle"><? echo $myserver->mHostname(); ?></font>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td valign="top">

<table class="cqall">
<tr>
<td valign="top">
<table class="cqsubtable">
<tr><td class="cqvalue">IP: <? echo $myserver->mAddress(); ?></td></tr>
<tr><td class="cqvalue">Game: Half-Life</td></tr>
<tr><td class="cqvalue">Mod: <? echo $myserver->mModName(); ?></td></tr>
</table>

</td></tr>
<tr><td>

<table class="cqsubtable">
<tr><td class="cqvalue">Map:<? echo $myserver->mMap(); ?></td><td class="cqvalue">Players: <? echo $myserver->mActive()." / ".$myserver->mMax(); ?></td></tr>
<tr><td colspan="2">
<? if(file_exists("mapimg/" $myserver->mModName() . "/" $myserver->mMap() . ".jpg")) { ?>
<img src="mapimg/<? echo $myserver->mModName(); ?>/<? echo $myserver->mMap(); ?>.jpg" border ="0"><br>
<? } else { ?>
<img src="mapimg/NoImage.jpg" border ="0"><br>
<? }  ?>
</td></tr>
</table>
</td></tr>
</table>

</td>
<td valign="top">
<table class="cqall">
<tr>
<td valign="top">
<table class="cqsubtable">
<tr>
<td>Name</td><td>Kills</td><td>Time</td>
</tr>
<?
$player_data 
$myserver->mPlayerData();
$trans get_html_translation_table(HTML_ENTITIES);

while (list(
$num$playerarr) = each($player_data)) {
print 
"<tr>"
while (list(
$k$v) = each($playerarr)) {
$v strtr($v$trans);
if(
$k != "Index") {
echo 
"<td class=\"cqvalue\">$v</td>"
}

print 
"</tr>\n";

?>
</tr></table>
</td></tr>
</table>

</td></tr>
<tr><td>&nbsp;</td><td align="right"><a href="http://www.czaries.net/scripts/">CzarQuery v1.00</a></td></tr>
</table>

<?
if($page != "include") {
?>
</body>
</html>
<? ?>
Attached Files
File Type: zip CzarQuery(2).zip (914.0 KB, 89 views)
12345 is offline
 



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 02:14.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode