Seite 1 von 2

Kann man das neben den banner anzeigen lassen?

Verfasst: 10.08.2003 01:58
von Cuesheet
Hi zusammen,
ich habe eine Frage.
Ich spiele Dark Age of Camelot, und bei diesem spiel gibt es Chroniken im XML Format. Ich habe mir im Netz ein Skript gesucht, was diese Chroniken anzeigt.
Jetzt wollte ich nur 3 Sachen immer im Forum angezeigt haben:
Reichspunkte, Characktere, Mitglieder

Code: Alles auswählen

<?php
$__XML_bad_chars = array(chr(0x0E),chr(0x01),chr(0x0C),chr(0x07),chr(0x03),chr(0x14),chr(0x16));


class XMLdocument {

    var $XMLparser;
    var $XMLdata;
    var $XMLstack;
    var $Error;
    var $ErrorMsg;

    function tag_open($parser, $name, $attrs) {
        $x=&$this->XMLdata;
        foreach($this->XMLstack as $el) {
            if(!isset($x[$el])) {
                $x[$el]=array(array());
                $x=&$x[$el][0];
            } else {
                $x=&$x[$el][count($x[$el])-1];
            }
        }
        foreach($attrs as $k=>$v) {
            $attrs[$k]=utf8_decode($attrs[$k]);
        }
        if(!isset($x[$name])) {
            $x[$name][0]['ATTRS']=$attrs;
        } else {
            $x[$name][count($x[$name])]['ATTRS']=$attrs;
        }
        array_push($this->XMLstack,$name);
    }
    
    function tag_close($parser, $name) {
        array_pop($this->XMLstack);
    }
    
    function cdata($parser, $data) {
        $x=&$this->XMLdata;
        foreach($this->XMLstack as $el) {
            $x=&$x[$el][count($x[$el])-1];
        }
        $x['CDATA'].=utf8_decode($data);
    }

    function parseXML($filename) {
    	
    	global $__XML_bad_chars;
    	
        $this->XMLstack=array();
        $this->XMLdata=array();

        $this->XMLparser = xml_parser_create();
        xml_set_object($this->XMLparser, &$this);
        xml_set_element_handler($this->XMLparser, "tag_open", "tag_close");
        xml_set_character_data_handler($this->XMLparser, "cdata");

        if (!($fp = @fopen($filename, "r"))) {
            $this->Error=true;
            $this->ErrorMsg="could not open XML input";
            return false;
        }

        while ($data = fread($fp, 4096)) {
            if (!xml_parse($this->XMLparser, $data, feof($fp))) {
	       	    $data=str_replace($__XML_bad_chars,'',$data);
                $this->Error=true;
                $this->ErrorMsg=sprintf("XML error: %s at line %d",
                    xml_error_string(xml_get_error_code($this->XMLparser)),
                    xml_get_current_line_number($this->XMLparser));
                return false;
            }
        }
  
        xml_parser_free($this->XMLparser);
        return true;
    }
}

function __sf_cmp($a,$b) {
    global $__sf_order;
    $result=0;
    foreach($__sf_order as $field=>$order) {
        if($a[$field] > $b[$field]) {
            $result=1;
        } elseif ($a[$field] < $b[$field]) {
            $result=-1;
        }
        if($order=="DESC") $result=-$result;
        if($result!=0) break;
    }
    return $result;
}

function sort_by_field(&$a,$fields) {
    global $__sf_order;
    $__sf_order=$fields;
    usort($a,'__sf_cmp');
    
}

function realmrank($totalrp) {
    settype($totalrp,'integer');
    if($totalrp==0) return '';
    $i=floor(pow($totalrp,(1/3))/3);
    while(($i*($i+1)*(2*$i+1)*25/6)<=$totalrp) $i++;
    $rr=(floor($i/10)+1).'L'.($i%10);
    return $rr;
}

class GuildInfo extends XMLdocument{
    
    var $XMLdata;
    var $Error;
    var $ErrorMsg;
    var $sortfield;
    var $guildinfo;
        
    function GuildInfo($filename="") {
        $this->XMLdata=array();
        $this->Error=false;
        $this->ErrorMsg='';
        if($filename) {
            $this->parseXML($filename);
        }
    }
    
    function getGuildInfo() {
        $result=array();
        if(is_array($this->XMLdata['GUILD_STATUS'][0]['GUILD'][0]['ATTRS'])) {
            foreach($this->XMLdata['GUILD_STATUS'][0]['GUILD'][0]['ATTRS'] as $k=>$v) {
                $result[strtolower($k)]=$v;
            }
        }
        return $result;
    }
    
    function getCharacterList() {
        $result=array();
        
        if(is_array($this->XMLdata['GUILD_STATUS'][0]['GUILD'][0]['CHARACTER'])) {
            foreach($this->XMLdata['GUILD_STATUS'][0]['GUILD'][0]['CHARACTER'] as $char) {
                $result[]=array('name'=>$char['ATTRS']['NAME'],
                         'laston'=>$char['ATTRS']['LASTON'],
                         'race'=>$char['RACE'][0]['CDATA'],
                         'class'=>$char['CLASS'][0]['CDATA'],
                         'level'=>$char['LEVEL'][0]['CDATA'],
                         'guildrank'=>$char['GUILDRANK'][0]['CDATA'],
                         'totalrp'=>$char['TOTALRP'][0]['CDATA'],
                         'lastweekrp'=>$char['LASTWEEKRP'][0]['CDATA'],
                         'anon'=>$char['ANON'][0]['CDATA']
                         );
            }
        }
        return $result;
    }
    
    function getAllianceList() {
        $result=array();
        
        if(is_array($this->XMLdata['GUILD_STATUS'][0]['GUILD'][0]['ALLIANCELIST'][0]['ALLIANCEMEMBER'])) {
            foreach($this->XMLdata['GUILD_STATUS'][0]['GUILD'][0]['ALLIANCELIST'][0]['ALLIANCEMEMBER'] as $ally) {
                $result[]=array('name'=>$ally['ALNAME'][0]['CDATA'],
                                'guildid'=>$ally['ALGUILDID'][0]['CDATA'],
                                'totalrp'=>$ally['ALTOTALRP'][0]['CDATA']);
            }
        }
        return $result;
    }

    
    function getTopCrafterList($type) {
        $result=array();
        if(is_array($this->XMLdata['GUILD_STATUS'][0]['GUILD'][0]['TOP'])) {
            foreach($this->XMLdata['GUILD_STATUS'][0]['GUILD'][0]['TOP'] as $toplist) {
                if($toplist['ATTRS']['TYPE']==$type && is_array($toplist['TOP_CHAR'])) {
                    foreach($toplist['TOP_CHAR'] as $crafter) {
                        $result[]=array('name'=>$crafter['ATTRS']['NAME'],
                                        'point'=>$crafter['ATTRS']['POINT']);
                    }
                }
            }
        }
        return $result;
    }
}

$server='Avalon';
$guild_id=1423;

$gi=new GuildInfo(sprintf('http://www.camelot-europe.com/herald/servers/%s/guilds/%s.xml',
                          $server,$guild_id));
if($gi->Error) die($gi->ErrorMsg);

$info=$gi->getGuildInfo();

?>

Reichspunkte: <?=$info['guildrp']?> - Chars: <?=$info['activechars']?> - Mitglieder: <?=$info['activemembers']?><br>
http://cuesheet.dyndns.org/test/guildinfo.php

Wie kann ich es rechts neben dem Banner anzeigen lassen?
Ich habe schon rumprobiert, aber nie was hinbekommen.
Schonmal Danke im vorraus

Verfasst: 10.08.2003 11:12
von mondi

Code: Alles auswählen

<?php
{
include("../../test/guildinfo.php");
}
?>
probiers mal damit. Wenn ich mich nicht irre, gehört das in die overall_header.tpl

Mit dem Pfad ggf. mal rumprobieren oder absoluten Pfad nehmen.

Grüße
Mondi

Verfasst: 10.08.2003 11:19
von Cuesheet
mhh, hat sich nichts geändert

Verfasst: 10.08.2003 11:30
von Cuesheet
Also das ist für das Forum
http://forum.helsgesandte.de

ich habe die guildinfo.php nach /inlcudes kopiert
und folgendes eingefügt
<?
{
include("../../includes/guildinfo.php");
}
?>

Rein theoretisch sollte es rechts neben dem Banner sein, nur praktisch ist es nicht, wenn ich an die Stelle was reinschreibe erscheint es mittig neben dem Banner. Also die Stelle stimmt.

Verfasst: 10.08.2003 11:31
von Chaze
Schau Dir das mal an:
http://www.phpbb.de/viewtopic.php?t=21239 und ff.

Verfasst: 10.08.2003 11:40
von Cuesheet
Der eine Post auf den es Verseit existiert nicht mehr :-(
Naja aber danke, ich werde mich mal eben dran versuchen.

Verfasst: 10.08.2003 11:59
von Chaze
Ok...Ok... nächster Versuch :wink:
http://www.phpbb.de/viewtopic.php?t=27900

Verfasst: 10.08.2003 12:12
von Mister_X
sh. Chaze (wobei ich selber diesen PHP Mod noch nie ausprobiert habe) oder so hier: http://www.phpbb.de/viewtopic.php?t=9993

Verfasst: 10.08.2003 12:21
von Cuesheet
Mhh, ich bin wohl zu bresig :-(
Das Script funktioniert, aber sobald ich es einbinde funktioniert das nicht.

Verfasst: 10.08.2003 12:23
von Cuesheet
Also ich hab das so gemacht
overall_header.tpl

Code: Alles auswählen

.....
<td><a href="{U_INDEX}"><img src="images/banner.gif" border="0" alt="{L_INDEX}" title="{L_INDEX}" width="232" height="92" /></a></td>
<td>
{INFO} 
</td>
<td align="right" width="100%">{BANNER_1_IMG}</td><td><img src="templates/fisubsilver/images/spacer.gif" width="100"></td>
.....
page_header.php

Code: Alles auswählen


....

		$template->assign_vars(array('INFO' => implode("",file("http://forum.helsgesandte.de/guildinfo.php")),'BANNER_'.$banner_spot.'_IMG' => '<a href="'.append_sid('redirect.'.$phpEx.'?banner_id='.$banner['banner_id']).'" target="_blank"><img src="'.$banner['banner_name'].'" border="0" alt="'.$banner['banner_description'].'" title="'.$banner['banner_description'].'"></a>'));
....
Was ist daran falsch?


Das File liegt hier:
http://forum.helsgesandte.de/guildinfo.php