Ich habe ein problem mit dem Script von flori-times, es ist ein Enemy Territory Servertatus Navbox.
Habe alles hoch geladen und eine Box genohmen.
Oder liegt es am Script:
<?
######################################################################################################
######################## EnemyTerritory-Stats Navbox V. 1.0 by flori-times.de ########################
######################################################################################################
########################################### Einstellungen ############################################
$et_serv_ip = ""; // IP-Adresse des Servers
$et_serv_port = ""; // Port des Servers
$et_serv_name = ""; // Name des Servers, zur Anzeige in der Navbox
$et_serv_pass = ""; // Server-Passwort, zur Anzeige in der Navbox
$et_hlsw = "1"; // HLSW-Links an/ausschalten (1=an | 2=aus)
$et_imagedir = "images/etmap"; // Grafikverzeichnis, in dem die mappics liegen
$et_namelength = "15"; // Anzahl der Zeichen im Spielernamen (Player-Anzeige)
$et_imagewidth = "150"; // Breite der Map-Grafik, in Pixel oder Prozent
$et_maplength = "15"; // Anzahl der Zeichen im Mapnamen
######################################################################################################
################################## ab hier nichts mehr verändern!! ###################################
######################################################################################################
if(!function_exists(fragsort)){
function fragsort ($a, $b) {
if ($a['frags'] == $b['frags']) return 0;
if ($a['frags'] > $b['frags']) {
return -1;
} else {
return 1;
}
}
}
if(!is_array($et_maps)){
$et_maps = array();
$a=opendir($et_imagedir);
while ($getmap=readdir($a)) {
unset($et_mapname);
$et_mapname=explode(".",$getmap);
$et_maps[]=$et_mapname[0];
}
closedir($a);
}
if(!class_exists(EnemyTerritory)){
Class EnemyTerritory {
var $m_playerinfo =""; // Info about players
var $m_servervars =""; // Info about the server
//
// Get exact time, used for timeout counting
//
function timenow() {
return doubleval(ereg_replace('^0.([0-9]*) ([0-9]*)$','\2.\1',microtime()));
}
//
// Function to remove funny characters from playernames
//
function removefunchars($data) {
$result="";
$skipnextchar=false;
for ($i=0;$i<strlen($data);$i++) {
if (!$skipnextchar) {
$currentchar=ord(substr($data,$i,1));
if (($currentchar==27) || ($currentchar==94)) {
$skipnextchar=true;
} else {
if (($currentchar>=32) && ($currentchar<=127)) $result=$result.chr($currentchar);
if (($currentchar>=160) && ($currentchar<=255)) $result=$result.chr($currentchar-128);
}
} else {
$skipnextchar=false;
}
}
return $result;
}
//
// 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 (!$codsocket=fsockopen("udp://".$serveraddress,$portnumber,$errnr)) {
$this->errmsg="No connection";
return "";
}
socket_set_blocking($codsocket,true);
socket_set_timeout($codsocket,0,500000);
fwrite($codsocket,$command,strlen($command));
// Mark
$starttime=$this->timenow();
do {
$serverdata.=fgetc($codsocket);
$serverdatalen++;
$socketstatus=socket_get_status($codsocket);
if ($this->timenow()>($starttime+$waittime)) {
$this->errmsg="Connection timed out";
fclose($codsocket);
return "";
}
} while ($socketstatus["unread_bytes"] );
fclose($codsocket);
return $serverdata;
}
// **********************************************************************
// getServerStatus
// Read rules/setup from the gameserver into m_servervars
// Return true if successful
// **********************************************************************
function getServerStatus($serveraddress,$portnumber,$timeout) {
$cmd="xFFxFFxFFxFFgetstatusn";
$serverdata=$this->getServerData($cmd,$serveraddress,$portnumber,$timeout);
if (strlen($serverdata)>20) {
$serverdata=substr($serverdata,20);
} else {
return false;
}
$srvvars=substr($serverdata,0,strpos($serverdata,"n"))."\";
$players=substr($serverdata,strpos($serverdata,"n")+1);
// Skip the last linefeed
$players=substr($players,0,strlen($players)-1);
// Split playerinfo and fill into array
$playercount=0;
if (strlen($players)) {
$playercollection=explode("n",$players);
while (list($key,$data) = each ($playercollection)) {
eregi("^([-0-9]+) ([-0-9]+) "(.*)"",$data,$player);
$this->m_playerinfo[$key]=array("frags"=>$player[1],"ping"=>$player[2],"name"=>$this->removefunchars($player[3]));
$playercount++;
}
}
// Fake servervar containing number of current players
$this->m_servervars["sv_currentclients"]=$playercount;
if ($playercount>0) usort($this->m_playerinfo,"fragsort");
// Split servervars and fill into array
$name_tok = strtok ($srvvars,"\");
$val_tok = strtok ("\");
while (strlen($name_tok)) {
$this->m_servervars[$name_tok]=$val_tok;
$name_tok = strtok ("\");
$val_tok = strtok ("\");
}
return true;
}
}
}
$etinfo=new EnemyTerritory;
$status=$etinfo->getServerStatus($et_serv_ip,$et_serv_port,1500);
if ($status) {
//$et_serv_name = htmlentities($etinfo->m_servervars['sv_hostname']);
$et_serverip = $etinfo->m_servervars['serveraddress'];
$et_playercount = $etinfo->m_servervars['sv_currentclients'];
$et_maxplayers = $etinfo->m_servervars['sv_maxclients'];
$et_map = htmlentities($etinfo->m_servervars['mapname']);
$et_map_cut = htmlentities(cutstring($etinfo->m_servervars['mapname'],$et_maplength));
$playerjscount++;
if($et_playercount>0){
if (is_array($etinfo->m_playerinfo)) {
while (list(,$player) = each ($etinfo->m_playerinfo)) {
$playername = htmlentities($player['name']);
$playername_cut = cutstring($player['name'],$et_namelength);
$playping = "hat einen Ping von ".$player['ping'];
$row = rowcolor($row);
eval ("$et_playerlist.= "".getTemplate("navigation/etstatus/playerlist")."";");
unset($playername);
unset($playteam);
}
}
if($playerjscript!='1'){
$site_body.="
<script language="javascript" type="text/javascript">
<!--
function showtext(id) {
if(document.getElementById) document.getElementById("ve_[" + id + "]").style.display = "inline";
if(document.getElementById) document.getElementById("da_[" + id + "]").style.display = "none";
if(document.getElementById) document.getElementById("nd_[" + id + "]").style.display = "inline";
}
function hidetext(id) {
if(document.getElementById) document.getElementById("ve_[" + id + "]").style.display = "none";
if(document.getElementById) document.getElementById("da_[" + id + "]").style.display = "inline";
if(document.getElementById) document.getElementById("nd_[" + id + "]").style.display = "none";
}
-->
</script>
";
$playerjscript='1';
}
eval ("$et_players.= "".getTemplate("navigation/etstatus/players")."";");
}
if(in_array($et_map,$et_maps)){
$etimage= $et_map;}
else {
$etimage= "nopicture";}
if($et_serv_pass!=''){
eval ("$et_serverpass.= "".getTemplate("navigation/etstatus/serverpass")."";");
}
if($et_hlsw==1){
eval ("$et_mapimage.= "".getTemplate("navigation/etstatus/map_hlsw")."";");
if($et_serv_name!=''){
eval ("$et_servname.= "".getTemplate("navigation/etstatus/servername_hlsw")."";");
}
}
else{
eval ("$et_mapimage.= "".getTemplate("navigation/etstatus/map")."";");
if($et_serv_name!=''){
eval ("$et_servname.= "".getTemplate("navigation/etstatus/servername")."";");
}
}
eval ("$boxlinks[].= "".getTemplate("navigation/etstatus/status")."";");
}
else {
eval ("$boxlinks[].= "".getTemplate("navigation/etstatus/error")."";");
}
unset($et_serv_ip);
unset($et_serv_port);
unset($et_serv_name);
unset($et_serv_pass);
unset($et_hlsw);
unset($et_imagedir);
unset($et_namelength);
unset($et_imagewidth);
unset($et_maplength);
unset($etinfo);
unset($status);
unset($etimage);
unset($et_serverip);
unset($et_playercount);
unset($et_maxplayers);
unset($et_map);
unset($et_map_cut);
unset($et_playerlist);
unset($et_players);
unset($et_serverpass);
unset($et_mapimage);
unset($et_servname);
?>
Kann man es so ändern, das es auch für ilch geht?
Würde mich sehr freuen, wenn es mach bar ist.
Mfg
Thunderhawk
Edit: Ich habe das in code gepackt!
Zuletzt geändert von SLJ am 17.09.2005 - 00:52

