Hallo,
ich muss schon sagen,mich wundert das ganze hier schon ein bischen da versucht man der Community ein kostenloses Webinterface zur verfügung zu stellen.
Was passiert, da wird vom Admin der Thread einfach gelöscht ohne Kommentar oder irgend eine Erklährung warum.
Da schreiben ein paar Leute "Microsoft wird damit nicht einverstanden sein " dann frägt man wo das steht das man die nicht verwenden darf, dann wird der Thread halt einfach gelöscht denn das ist ja die einfachste Art eine Thema zu beenden wenn man nicht mehr weiter weis.
Aber egal alleine die Antworten ( kein persönlicher Angriff ) der einzelnen User zeigt mir, dass es nur Wichtigtuer sind die keine Ahnung haben, ich bin zwar auch kein Super Profi aber wenn ich keine Ahnung habe halt ich die Klappe.
Aber sowas hier hilft den Usern leider nicht weiter dann sollte mann lieber nichts schreiben.
FFL wrote:Gib nur schnell auf.
Ich hab mit dem Ding vor Längerem auch mal rumprobiert und es hat ohne Probleme funktioniert.
Ich habe meinen Autoführerschein auch schon vor 25 Jahren gemacht und heute kann ichs auch noch.
Das heißt aber nicht das, dass Auto noch funktioniert nach 25 Jahren.
FFL wrote:
Lies doch einfach mal den Code den du produziert hast und kuck vielleicht auch mal dahin:
Code: Select all
// Demosource is available at http://www.gameserver.dk/
Wer lesen kann... :?
Da hilft lesen nicht viel wenn man nicht darauf hinweißt, dass Valve ja den Querycode geändert hat.
Ich frage mich warum man da überhaupt ein Forum betreibt das Usern helfen soll. !!! :?:
(das soll nicht heißen, dass mann Usern fertige Scripte zur Verfügung stellt.)
Aber nun zu deinem Problem
teklab
auf
http://www.cs-expert.de zu finden
Ich habe das folgendermaßen gelöst.
Code: Select all
server1class.inc
<?php
# www.cs-expert.de
$jahr =date("Y"); // unwichtig, aber stehen lassen :P //
$datum =date("j.M.Y"); // Bitte nichts verändern //
$zeit =date("H:i:s"); // Bitte nichts verändern //
function fragsort ($a, $b) {
if ($a["frags"] == $b["frags"]) return 0;
if ($a["frags"] > $b["frags"]) {
return -1;
} else {
return 1;
}
}
Class CounterStrike {
var $m_playerinfo =""; // Info about players
var $m_servervars =""; // Info about the server current map, players etc
var $m_serverrules =""; // Serverrules
//
// Get exact time, used for timeout counting
//
function timenow() {
return doubleval(ereg_replace('^0.([0-9]*) ([0-9]*)$','\2.\1',microtime()));
}
//
// Read raw data from server
//
function getServerData($command,$serveraddress,$portnumber,$waittime) {
$serverdata ="";
$serverdatalen=0;
if ($waittime< 500) $waittime= 500;
if ($waittime>2000) $waittime=2000;
$waittime=doubleval($waittime/1000.0);
if (!$cssocket=fsockopen("udp://".$serveraddress,$portnumber,$errnr)) {
$this->errmsg="No connection";
return "";
}
socket_set_blocking($cssocket,true);
socket_set_timeout($cssocket,0,500000);
fwrite($cssocket,$command,strlen($command));
//
$starttime=$this->timenow();
do {
$serverdata.=fgetc($cssocket);
$serverdatalen++;
$socketstatus=socket_get_status($cssocket);
if ($this->timenow()>($starttime+$waittime)) {
$this->errmsg="Connection timed out";
fclose($cssocket);
return "";
}
} while ($socketstatus["unread_bytes"] );
fclose($cssocket);
return $serverdata;
}
function getnextstring(&$data) {
$temp="";
$counter=0;
while (ord($data[$counter++])!=0) $temp.=$data[$counter-1];
$data=substr($data,strlen($temp)+1);
return $temp;
}
function getnextbytevalue(&$data) {
$temp=ord($data[0]);
$data=substr($data,1);
return $temp;
}
function getnextfragvalue(&$data) {
$frags=ord($data[0])+(ord($data[1])<<8)+(ord($data[2])<<16)+(ord($data[3])<<24);
if ($frags>=4294967294) $frags-=4294967296;
$data=substr($data,4);
return $frags;
}
function getnextplaytime(&$data) {
$decnumber=ord($data[0])+(ord($data[1])<<8)+(ord($data[2])<<16)+(ord($data[3])<<24);
$binnumber=base_convert($decnumber,10,2);
while (strlen($binnumber) < 32) $binnumber="0".$binnumber;
$exp=abs(base_convert(substr($binnumber,1,8),2,10))-127;
if (substr($binnumber,0,1)=="1") $exp=0-$exp;
$man=1;$manadd=0.5;
for ($counter=9;$counter<32;$counter++) {
if (substr($binnumber,$counter,1)=="1") $man+=$manadd;
$manadd=$manadd/2;
}
$time=round(pow(2,$exp)*$man);
$playtime="";
if ($time>3600) {
$playtime=sprintf("%2dh",$time/3600);
}
$time%=3600;
$playtime=$playtime.sprintf("%2dm",$time/60);
$time%=60;
$playtime=$playtime.sprintf("%2ds",$time);
$data=substr($data,5);
return $playtime;
}
// **********************************************************************
// getServerRules
// Return true if successful
// **********************************************************************
function getServerRules($serveraddress,$portnumber,$waittime) {
#$cmd="xFFxFFxFFxFFx56";
$cmd="xFFxFFxFFxFFx56A2S_Rules";
$serverdata=$this->getServerData($cmd,$serveraddress,$portnumber,$waittime) ;
// Check length of returned data, if < 5 something went wrong
if (strlen($serverdata)<5) return false;
// Figure out how many rules there are
$rules=(ord($serverdata[5]))+(ord($serverdata[6])*256);
if ($rules!=0) {
// Strip OOB data
$serverdata=substr($serverdata,7);
for ($i=1;$i<=$rules;$i++) {
$rulename =$this->getnextstring($serverdata);
$rulevalue =$this->getnextstring($serverdata);
$this->m_serverrules[$rulename]=$rulevalue;
}
return true;
} else {
return false;
}
}
// **********************************************************************
// getServerinfo
// Return true if successful
// **********************************************************************
function getServerInfo($serveraddress,$portnumber,$waittime) {
#$cmd="xFFxFFxFFxFFx54x53x6Fx75x72x63x65x20x45x6Ex67x69x6Ex65x20x51x75x65x72x79x00";
$cmd="xFFxFFxFFxFFx54A2S_Info";
$serverdata=$this->getServerData($cmd,$serveraddress,$portnumber,$waittime) ;
// Check length of returned data, if < 5 something went wrong
if (strlen($serverdata)<5) return false;
// Strip OOB data
$serverdata=substr($serverdata,5);
$this->m_servervars["serveraddress"] =$this->getnextstring($serverdata);
$this->m_servervars["servername"] =$this->getnextstring($serverdata);
$this->m_servervars["mapname"] =$this->getnextstring($serverdata);
$this->m_servervars["game"] =$this->getnextstring($serverdata);
$this->m_servervars["gamename"] =$this->getnextstring($serverdata);
$this->m_servervars["currentplayers"] =$this->getnextbytevalue($serverdata);
$this->m_servervars["maxplayers"] =$this->getnextbytevalue($serverdata);
return true;
}
// **********************************************************************
// Get Playerinfo
// Return true if successful
// **********************************************************************
function getServerPlayers($serveraddress,$portnumber,$waittime) {
// Servercommand
#$cmd="xFFxFFxFFxFFx55";
$cmd="xFFxFFxFFxFFx55A2S_Players";
$serverdata=$this->getServerData($cmd,$serveraddress,$portnumber,$waittime);
// Check length of returned data, if < 5 something went wrong
if (strlen($serverdata)<5) return false;
// Check number of players
$players=ord($serverdata[5]);
// Strip OOB data and other stuff
$serverdata=substr($serverdata,7);
for ($i=1;$i<=$players;$i++) {
$playername =htmlspecialchars($this->getnextstring($serverdata));
$frags =$this->getnextfragvalue($serverdata);
$playtime =$this->getnextplaytime($serverdata);
$this->m_playerinfo[$i] = array("name"=>$playername,"frags"=>$frags,"time"=>$playtime);
}
// Sort players in fragorder
if ($players>1) usort($this->m_playerinfo,"fragsort");
return true;
}
}
?>
dann in der Anzeige:
Code: Select all
include("server1class.inc");
$serveradr ="$server1ip";
$serverport="$server1port";
$csinfo=new CounterStrike;
$status=$csinfo->getServerInfo($serveradr,$serverport,1000);
$mapname = $csinfo->m_servervars["mapname"];
$serveripadresse = $csinfo->m_servervars["serveraddress"];
$game = $csinfo->m_servervars["game"];
$gamename = $csinfo->m_servervars["gamename"];
$currentplayers = $csinfo->m_servervars["currentplayers"];
$maxplayers = $csinfo->m_servervars["maxplayers"];
$servername = $csinfo->m_servervars["servername"];
#-------------------------------------------------------
#Playersanzeige
$statuss=$csinfo->getServerPlayers($serveradr,$serverport,1000);
if (is_array($csinfo->m_playerinfo)) {
while (list(,$player) = each ($csinfo->m_playerinfo)) {
echo"<tr>
<td width="171" height="21" align="center"><font size="2" face="Verdana">$player[name]</font></td>
<td width="54" height="21" align="center"><font size="2" face="Verdana" color="#FF0000">$player[frags]</font></td>
<td width="72" height="21" align="center"><font size="2" face="Verdana">$player[time]</font></td>
</tr>";
}
} else {
echo"<tr>
<td colspan="3" align="center"><font size="2" face="Verdana">Keine Spieler auf dem Server</font></td>
</tr>";
}
jetzt must du nur beachten, das in der server.cfg (Cs Server) folgender befehl enthalten ist.
So sollte es nicht geklappt haben melde dich einfach nochmal !!
Twisterchen