ilch Forum » Ilch Clan 1.1 » Allgemein » AAOTracker in Online-Box

Geschlossen
  1. #1
    User Pic
    Poldi-1 Mitglied
    Registriert seit
    21.03.2009
    Beiträge
    62
    Beitragswertungen
    0 Beitragspunkte
    Hallo

    versuche grade mit meinen rudimentären Kenntnissen den Spieler-Online-Status vom AAOTracker 1.1 in die Online-Box reinzubasteln, also dass jeder Member 2 Icons hat - je 1 für die Homepage und eins für AAO.
    Hab schon erfolgreich ein feld "trackerid" in die datenbank gebracht und man kann den inhalt auch über profil_edit ändern (hab mir tagelang das Hirn zermartert - hab halt keine Ahnung).
    Jetzt gucke ich mir das Script von der Online-Box an und komm gar nicht mehr weiter. Da müssten dann ja 2 zusätzliche Bedingungen geprüft werden: 1.Memberstatus ja/nein 2. AAOTracker online ja/nein
    So eine verschachtelte Abfrage kann ich mir beim besten Willen nicht zusammenreimen traurig
    Kann mir da jemand helfen?


    verwendete ilchClan Version: 1.1

    betroffene Homepage: externer Link
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Eigene Seite (WYSIWYG abschalten) -> iframe (bei Selfhtml nachschauen) einfügen, allerdings ist es schon recht breit, keine Ahnung, wie sich das in einem Design macht.
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    Poldi-1 Mitglied
    Registriert seit
    21.03.2009
    Beiträge
    62
    Beitragswertungen
    0 Beitragspunkte
    Ich glaub da hast Du mich irgendwie falsch verstanden Mairu.
    Die Normale Online-Box soll um folgendes erweitert werden:
    1 Icon (welches anzeigt ob man auf dem Tracker als online geführt wird) - das wars.
    Wieso dann "recht breit"?
    Mit iframe? Das bringt mir doch auch keine Abfrage ob der User a)Memberstatus hat und b)online aufm Tracker ist. Sind diese beiden Bedingungen erfüllt soll das zusätzliche Icon in der Online-Box neben dem entsprechenden Namen auftauchen.
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Ähm ich hab im falschen Thema geantwortet, sorry.

    War für www.ilch.de/forum-showposts-36451.html gedacht.

    Zu deinem Problem, so eine Änderung kann ich nicht wirklich empfehlen, weil dann bei jedem Seitenaufruf, eine Verbindung zum AAO Tracker aufgebaut wird, was früher oder später zu langsamen Seitenaufbau führen wird.

    Eine Möglichkeit wäre allerdings, einmal alle 5 Minuten oder so, denn Onlinestatus aller Member des Clans zu speichern und dann in der Onlinebox so anzeigen, dann wirds nur alle 5 Minuten mal für einen langsam.

    Zuletzt modifiziert von Mairu am 21.04.2009 - 12:23:54
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    Poldi-1 Mitglied
    Registriert seit
    21.03.2009
    Beiträge
    62
    Beitragswertungen
    0 Beitragspunkte
    Joa da hast Du wohl recht. Das stellt mich dann aber nur vor ein weiteres (für mich noch unlösbares) Problem.

    Wollte erstmal versuchen nur die Funktionen der Scripte ineinander zu kopieren um dann einfach noch das entsprechende in den $content aus der Original-Online-Box zu basteln, und selbst das hat nicht geklappt traurig
    <?php
    if (!defined('main')) {die("no direct access");}
    /*
    * Kopiert aus AAOTracker 1.1
    */
    
    $clanid  =  "8324"; 
    
    function startTag($parser, $name, $attrs) {
     global $stack;
    
     $tag=array("name"=>$name,"attrs"=>$attrs);
     array_push($stack,$tag);
    }
    
    function cdata($parser, $cdata) {
     global $stack;
    
     $stack[count($stack)-1]['cdata'] .= $cdata;
    }
    
    function endTag($parser, $name) {
     global $stack;
    
     $stack[count($stack)-2]['children'][] = $stack[count($stack)-1];
     array_pop($stack);
    }
    function aSortBySecondIndex($multiArray, $secondIndex, $dir) {
       while (list($firstIndex, ) = each($multiArray))
           $indexMap[$firstIndex] = $multiArray[$firstIndex][$secondIndex];
       if ($dir==0)
         asort($indexMap);
       else
         arsort($indexMap);
       while (list($firstIndex, ) = each($indexMap))
           if (is_numeric($firstIndex))
               $sortedArray[] = $multiArray[$firstIndex];
           else $sortedArray[$firstIndex] = $multiArray[$firstIndex];
       return $sortedArray;
    }
    
    
    $stack = array();
    $claninfo = array();
    $clanstats = array();
    $playerstats = array();
    
    $xml_parser = xml_parser_create();
    xml_set_element_handler($xml_parser, "startTag", "endTag");
    xml_set_character_data_handler($xml_parser, "cdata");
    
    $ch = curl_init();
    $timeout = 5; // set to zero for no timeout
    curl_setopt ($ch, CURLOPT_URL, 'http://aaotracker.com/livefeed/xml_clanprofile.php?clanid='.$clanid.'');
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    $xmllink = curl_exec($ch);
    curl_close($ch);
    
    $data = xml_parse($xml_parser,$xmllink);
    
     for($i = 0; $i < sizeof($stack[0][children][0][children]); $i++) {
      $valname=$stack[0][children][0][children][$i][name];
      $claninfo[$valname]=$stack[0][children][0][children][$i][cdata];
     }
     for($i = 0; $i < sizeof($stack[0][children][1][children]); $i++) {
      $valname=$stack[0][children][1][children][$i][name];
      $clanstats[$valname]=$stack[0][children][1][children][$i][cdata];
     }
    
    // Get Player Data
     
     for($i = 0; $i < sizeof($stack[0][children][2][children]); $i++) {
      for($x = 0; $x < sizeof($stack[0][children][2][children][$i][children]); $x++) {
       $valname=$stack[0][children][2][children][$i][children][$x][name];
       $value=$stack[0][children][2][children][$i][children][$x][cdata];
        if($valname=="PLAYERID") $pid=$value;
        $playerstats[$pid][$valname]=$value;}
        $playerstats[$pid][PLAYERFRAG]=@round($playerstats[$pid][PLAYERKILLS]/$playerstats[$pid][PLAYERDEATHS],2);
       }
       
     switch ($sort) {
    case 1:
      $playerstats_sorted=aSortBySecondIndex($playerstats, 'PLAYERSTATUS', $dir);
       break;
    case 2:
      $playerstats_sorted=aSortBySecondIndex($playerstats, 'PLAYERNAME', $dir);
       break;
    case 3:
      $playerstats_sorted=aSortBySecondIndex($playerstats, 'PLAYERHONOR', $dir);
       break;
    case 4:
      $playerstats_sorted=aSortBySecondIndex($playerstats, 'PLAYERSCORE', $dir);
       break;
    case 5:
      $playerstats_sorted=aSortBySecondIndex($playerstats, 'PLAYERKILLS', $dir);
       break;
    case 6:
      $playerstats_sorted=aSortBySecondIndex($playerstats, 'PLAYERDEATHS', $dir);
       break;
    case 7:
      $playerstats_sorted=aSortBySecondIndex($playerstats, 'PLAYERFRAG', $dir);
       break;
    case 8:
      $playerstats_sorted=aSortBySecondIndex($playerstats, 'PLAYERTIME', $dir);
       break;
    default:
      $playerstats_sorted=aSortBySecondIndex($playerstats, 'PLAYERHONOR', 1);
    }
    
    foreach($playerstats_sorted as $key => $value) {
     $playername=$playerstats_sorted[$key][PLAYERNAME];
     $playerhonor=$playerstats_sorted[$key][PLAYERHONOR];
     $playerurl=$playerstats_sorted[$key][PLAYERSTATSURL];
     $playerkills=$playerstats_sorted[$key][PLAYERKILLS];
     $playerdeaths=$playerstats_sorted[$key][PLAYERDEATHS];
     $playerkdr = $playerstats_sorted[$key][PLAYERFRAG];
     $playerscore=$playerstats_sorted[$key][PLAYERSCORE];
     $playerlscore=$playerstats_sorted[$key][PLAYERLEADERSCORE];
     $playergscore=$playerstats_sorted[$key][PLAYERGOALSCORE];
     $playertime=floor(($playerstats_sorted[$key][PLAYERTIME])/60/60);
    
    $status = ($playerstats_sorted[$key]['PLAYERSTATUS']=="1") ? '<img src="include/images/tracker/online.gif" alt="online" />' : '<img src="include/images/tracker/offline.gif" alt="offline" />';
    
    }
    
    /*
    * Ende Kopie
    */
    
    $dif = date('Y-m-d H:i:s', time() - 60);
    $abf = "SELECT uid FROM `prefix_online` WHERE uptime > '". $dif."'";
    $resultID = db_query($abf);
    $brk='';
    $uid = array();
    $guests = 0;
    $guestn = $lang['guests'];
    $content='';
    
    while ($row = db_fetch_object($resultID)) {
    	if ($row->uid != 0 AND $brk!=$row->uid) {
    		$name=@db_result(db_query('SELECT name FROM prefix_user WHERE id='.$row->uid),0);
    		$content.= '<tr><td><img src="include/images/icons/online.gif" border="0" alt="online"></td>';
    		$content.='<td><a href="index.php?user-details-'.$row->uid.'">'.$name.'</a></td></tr>'."\n";
    		$uid[] = $row->uid;
    	}
    	if ($row->uid == 0) { $guests++; }
    	$brk=$row->uid;
    }
    if ($guests == 1) { $guestn = $lang['guest']; }
    if (empty($content)) { $content.='<tr><td><img src="include/images/icons/offline.gif"  border="0" alt="offline"></td><td><font color="#003366">0 User </font></td></tr>'."\n"; }
    
    $content.='<tr><td colspan="2"><hr style="height: 0px; border: dashed #9AB1C8 0px; border-top-width: 1px;"></td></tr>'."\n";
    $where = (count($uid)>0) ? 'WHERE id NOT IN ('.implode(', ', $uid).')' : '';
    $abf2 = 'SELECT * FROM prefix_user '.$where.' ORDER BY llogin DESC LIMIT 0,5';
    $erg2 = db_query($abf2);
    
    while ($row2 = db_fetch_object($erg2)) {
    	$datum = date('H:i d.m.y',$row2->llogin);
    	$user = $row2->name;
    	$content.='<tr><td><img src="include/images/icons/offline.gif"  border="0" alt="offline"></td><td><a href="index.php?user-details-'.$row2->id.'" title="'.$lang['lasttimeonline'].$datum.'">'.$user.'</a></td></tr>'."\n";
    }
    if ($guests == 0) {
    	$content.= '<tr><td colspan="2"><hr style="height: 0px; border: dashed #9AB1C8 0px; border-top-width: 1px";></td></tr>'."\n".'
    		<tr><td><img src="include/images/icons/offline.gif"  border="0" alt="offline"></td><td><font size="-1" color="#003366">0 '.$lang['guests'].'</td></tr>'."\n";
    } else {
    	$content.= '<tr><td colspan="2"><hr style="height: 0px; border: dashed #9AB1C8 0px; border-top-width: 1px;"></td></tr>'."\n".'
    		<tr><td><img src="include/images/icons/online.gif" border="0" alt="online"></td><td><font size=-1>'.$guests.' '.$guestn.'</font></td></tr>'."\n";
    }
    ?>
    <table align="center" border="0" cellpadding="0" cellspacing="0" >
     <?php echo $content; ?>
    </table>

    Denn das ergibt die Fehler:
    Warning: array_push() [function.array-push]: First argument should be an array in /prmhgpnj/www.prma.eu/include/boxes/online+track.php on line 13
    
    Warning: arsort() expects parameter 1 to be array, null given in /prmhgpnj/www.prma.eu/include/boxes/online+track.php on line 34
    
    Warning: Variable passed to each() is not an array or object in /prmhgpnj/www.prma.eu/include/boxes/online+track.php on line 35
    
    Warning: Invalid argument supplied for foreach() in /prmhgpnj/www.prma.eu/include/boxes/online+track.php on line 111


    Das sind ja alles sehr dilletantische Ansätze meinerseits. Bitte helft einem armen Unwissenden!
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Mhh also wie stellst du dir das eigentlich vor, jemand der spielt wird gerade nicht auf der Seite sein, sollen in der Box alle Member ausgegeben werden, wird dann aber recht lang.

    Also hab die normale Onlinebox jetzt soweit, dass sie theoretisch den Onlinestatus angeben würde, allerdings ist das nicht so sinnvoll siehe oben, sie würde es bisher nur bei Membern anzeigen die auf der Seite online sind, und das werden wohl wenige sein zwinker

    <?php
    if (!defined('main')) {die("no direct access");}
    
    $clanid  =  8324; //Clanid Bei aaotracker
    $onlinetime = 60; //Zeit die man auf der Seite für online angezeigt wird
    $cachelifetime = 300; //Sekunden nach der der Cache vom aaotracker erneuert wird
    
    function createCache($clanid){
    	global $players;
    	$players = array();
    	
    	//XML besorgen
    //	$ch = curl_init();
    //	$timeout = 5; // set to zero for no timeout
    //	curl_setopt ($ch, CURLOPT_URL, 'http://aaotracker.com/livefeed/xml_clanprofile.php?clanid='.$clanid);
    //	curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    //	curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    //	$xml = curl_exec($ch);
    //	curl_close($ch);
    	$xml = file_get_contents('http://aaotracker.com/livefeed/xml_clanprofile.php?clanid='.$clanid);
    	
    	//Onlinestatus auslesen
    	$p = xml_parser_create();
    	xml_parse_into_struct($p, $xml, $data, $index);
    	xml_parser_free($p);
    	
    	//ggf. auch mit PLAYERID
    	foreach ($index['PLAYERNAME'] as $key => $id){
    		$players[$data[$id]['value']] = $data[$index['PLAYERSTATUS'][$key]]['value'];
    	}
    	$cache = '<?php
    $players = '.var_export($players, true).'
    ?>';
    	file_put_contents('include/caches/aaonline.php', $cache);
    }
    
    if (file_exists('include/caches/aaonline.php')) {
    	if ((time() - filemtime('include/caches/aaonline.php')) > $cachelifetime) {
    		createCache($clanid);
    	} else {
    		include 'include/caches/aaonline.php';
    	}
    } else {
    	createCache($clanid);
    }
    
    
    $dif = date('Y-m-d H:i:s', time() - $onlinetime);
    $uid = array();
    $guests = 0;
    $guestn = $lang['guests'];
    $content='';
    
    $sql = db_query("SELECT u.name, o.uid FROM prefix_online o LEFT JOIN prefix_user u ON o.uid = u.id WHERE o.uptime > '{$dif}' ORDER BY o.uptime");
    
    while ($row = db_fetch_object($sql)) {
    	if ($row->uid == 0) { $guests++; continue; }
    	if ($row->uid != 0 and !in_array($row->uid, $uid)) {
    		$content .= '<tr><td><img src="include/images/icons/online.gif" border="0" alt="online">'.($players[$row->name] == '1' ? 'spielt' : '-').'</td>';
    		$content .='<td><a href="index.php?user-details-'.$row->uid.'">'.$row->name.'</a></td></tr>'."\n";
    		$uid[] = $row->uid;
    	}
    }
    if ($guests == 1) { $guestn = $lang['guest']; }
    if (empty($content)) { $content.='<tr><td><img src="include/images/icons/offline.gif"  border="0" alt="offline"></td><td><font color="#003366">0 User </font></td></tr>'."\n"; }
    
    $content.='<tr><td colspan="2"><hr style="height: 0px; border: dashed #9AB1C8 0px; border-top-width: 1px;"></td></tr>'."\n";
    $where = (count($uid)>0) ? 'WHERE id NOT IN ('.implode(', ', $uid).')' : '';
    $abf2 = 'SELECT * FROM prefix_user '.$where.' ORDER BY llogin DESC LIMIT 0,5';
    $erg2 = db_query($abf2);
    
    while ($row2 = db_fetch_object($erg2)) {
    	$datum = date('H:i d.m.y',$row2->llogin);
    	$user = $row2->name;
    	$content.='<tr><td><img src="include/images/icons/offline.gif"  border="0" alt="offline"></td><td><a href="index.php?user-details-'.$row2->id.'" title="'.$lang['lasttimeonline'].$datum.'">'.$user.'</a></td></tr>'."\n";
    }
    if ($guests == 0) {
    	$content.= '<tr><td colspan="2"><hr style="height: 0px; border: dashed #9AB1C8 0px; border-top-width: 1px";></td></tr>'."\n".'
    	    <tr><td><img src="include/images/icons/offline.gif"  border="0" alt="offline"></td><td><font size="-1" color="#003366">0 '.$lang['guests'].'</td></tr>'."\n";
    } else {
    	$content.= '<tr><td colspan="2"><hr style="height: 0px; border: dashed #9AB1C8 0px; border-top-width: 1px;"></td></tr>'."\n".'
    	    <tr><td><img src="include/images/icons/online.gif" border="0" alt="online"></td><td><font size=-1>'.$guests.' '.$guestn.'</font></td></tr>'."\n";
    }
    ?>
    <table align="center" border="0" cellpadding="0" cellspacing="0" >
     <?php echo $content; ?>
    </table>


    Hier erstmal der Code, dafür muss man noch einen Ordner include/caches anlegen und CHMOD 777 geben.


    Zuletzt modifiziert von Mairu am 24.04.2009 - 11:27:06
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    Poldi-1 Mitglied
    Registriert seit
    21.03.2009
    Beiträge
    62
    Beitragswertungen
    0 Beitragspunkte
    ja das geht schon in die richtung, danke! Funktioniert aber nicht...
    Warning: file_get_contents() [function.file-get-contents]: URL file-access is disabled in the server configuration in /prmhgpnj/www.prma.eu/include/boxes/online+track.php on line 20
    
    Warning: file_get_contents(http://aaotracker.com/livefeed/xml_clanprofile.php?clanid=8324) [function.file-get-contents]: failed to open stream: no suitable wrapper could be found in /prmhgpnj/www.prma.eu/include/boxes/online+track.php on line 20
    
    Warning: Invalid argument supplied for foreach() in /prmhgpnj/www.prma.eu/include/boxes/online+track.php on line 28
    
    Fatal error: Call to undefined function: file_put_contents() in /prmhgpnj/www.prma.eu/include/boxes/online+track.php on line 34


    wenn jetzt zb. jemand spielt aber nicht auf der seite ist sollte das grüne tracker-icon und das rote seiten-icon neben dem namen angezeigt werden.
    ist jemand auf der seite aber spielt nicht: grünes seiten-icon und rotes tracker-icon.
    auf seite und gleichzeitig spielen: grünes tracker-icon und grünes seiten-icon nebem dem namen.

    Das kann die Liste ziemlich lang werden lassen, klar. Aber im Moment haben wir eine Liste mit allen Membern (ob on- oder offline) unter der Onlinebox und die nimmt noch mehr Platz weg lächeln





    Zuletzt modifiziert von Poldi-1 am 25.04.2009 - 14:52:37
    0 Mitglieder finden den Beitrag gut.
  8. #8
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Dein Server unterstützt kein Fernzugriff über diese Variante, hab oben mal ne Option eingefügt für curl, da müsstest du wohl true setzen, wenn das bei dir geht.
    Habs jetzt aber so gemacht, dass nur Member angezeigt werden, Links zu den Bildern für den AA Status müsstest du dann noch ändern und testen, ob es überhaupt funktioniert zunge

    <?php
    if (!defined('main')) {die("no direct access");}
    
    $clanid  =  8324; //Clanid Bei aaotracker
    $onlinetime = 60; //Zeit die man auf der Seite für online angezeigt wird
    $cachelifetime = 300; //Sekunden nach der der Cache vom aaotracker erneuert wird
    $curl = false; //Curl für "Fernzugriff" nutzen
    
    function createCache($clanid){
    	global $players;
    	$players = array();
    
    	//XML besorgen
    	if ($curl) {
    		$ch = curl_init();
    		$timeout = 5; // set to zero for no timeout
    		curl_setopt ($ch, CURLOPT_URL, 'http://aaotracker.com/livefeed/xml_clanprofile.php?clanid='.$clanid);
    		curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    		curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    		$xml = curl_exec($ch);
    		curl_close($ch);
    	} else {
    		$xml = file_get_contents('http://aaotracker.com/livefeed/xml_clanprofile.php?clanid='.$clanid);
    	}
    
    	//Onlinestatus auslesen
    	$p = xml_parser_create();
    	xml_parse_into_struct($p, $xml, $data, $index);
    	xml_parser_free($p);
    
    	//ggf. auch mit PLAYERID
    	foreach ($index['PLAYERNAME'] as $key => $id){
    		$players[$data[$id]['value']] = $data[$index['PLAYERSTATUS'][$key]]['value'];
    	}
    	$cache = '<?php
    			$players = '.var_export($players, true).'
    			?>';
    	file_put_contents('include/caches/aaonline.php', $cache);
    }
    
    if (file_exists('include/caches/aaonline.php')) {
    	if ((time() - filemtime('include/caches/aaonline.php')) > $cachelifetime) {
    		createCache($clanid);
    	} else {
    		include 'include/caches/aaonline.php';
    	}
    } else {
    	createCache($clanid);
    }
    
    
    $dif = time() - $onlinetime;
    $uid = array();
    $content = '';
    
    $sql = db_query("SELECT u.name, u.id AS uid, UNIX_TIMESTAMP(o.uptime) AS uptime, u.llogin FROM prefix_user u LEFT JOIN prefix_online o ON o.uid = u.id WHERE u.recht <= -3 ORDER BY o.uptime DESC, u.llogin DESC");
    while ($row = db_fetch_object($sql)) {
    	if ($row->uid != 0 and !in_array($row->uid, $uid)) {
    		$content .= '<tr><td>';
    		if ($row->uptime > $dif) {
    			$content .= '<img src="include/images/icons/online.gif" border="0" alt="online" title="online">';
    		} else {
    			$content .= '<img src="include/images/icons/offline.gif" border="0" alt="offline" title="zuletzt eingeloggt um '.date('d.m.Y H:i \U\h\r', $row->llogin).'">';
    		}
    		if ($players[$row->name] == '1') {
    			$content .= ' <img src="include/images/icons/online.gif" border="0" alt="AA online" title="AA online">';
    		} else {
    			$content .= ' <img src="include/images/icons/offline.gif" border="0" alt="AA offline" title="AA offline">';
    		}
    		$content .= '</td><td><a href="index.php?user-details-'.$row->uid.'">'.$row->name.'</a></td></tr>'."\n";
    		$uid[] = $row->uid;
    	}
    }
    
    ?>
    <table align="center" border="0" cellpadding="0" cellspacing="0" >
     <?php echo $content; ?>
    </table>



    Zuletzt modifiziert von Mairu am 06.05.2009 - 15:47:08
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  9. #9
    User Pic
    [bnfh]n88b Mitglied
    Registriert seit
    28.04.2009
    Beiträge
    1
    Beitragswertungen
    0 Beitragspunkte
    Hallo..


    ist es auch möglich diese box zu umzubauen das auch die user von der xml übernommen werden und nicht aus der dB?
    0 Mitglieder finden den Beitrag gut.
  10. #10
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Einfach nur die xml betrachten und dann anzeigen, ob sie spielen?

    Das wäre im Grunde viel einfacher zwinker
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  11. #11
    User Pic
    Poldi-1 Mitglied
    Registriert seit
    21.03.2009
    Beiträge
    62
    Beitragswertungen
    0 Beitragspunkte
    Sorry, war ne Weile ausser Haus...

    Habe $curl = true gesetzt aber kriege immernoch denselben Fehler wie oben... Das originale Tracker Script geht ja...

    @[bnfh]n88b Habe extra die TrackerID in die Datenbank eingepflegt weil Du ja nicht sicher sein kannst das alle Member denselben Nick auf der Homepage haben wie im Spiel und damit auch beim Tracker.


    Zuletzt modifiziert von Poldi-1 am 02.05.2009 - 13:24:01
    0 Mitglieder finden den Beitrag gut.
  12. #12
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    K.a. sollte aber gehen, ich hab ja am Code eigentlich nix geändert.
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  13. #13
    User Pic
    Poldi-1 Mitglied
    Registriert seit
    21.03.2009
    Beiträge
    62
    Beitragswertungen
    0 Beitragspunkte
    Gehts denn bei Dir mit curl?
    0 Mitglieder finden den Beitrag gut.
  14. #14
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Nein, meine Testumgebung hat kein curl, deswegen hatte ich es bei mir ja mit der anderen Variante gemacht.
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  15. #15
    User Pic
    Poldi-1 Mitglied
    Registriert seit
    21.03.2009
    Beiträge
    62
    Beitragswertungen
    0 Beitragspunkte
    Was müsste ich/mein Hoster denn umstellen damit der Direktzugriff geht?
    0 Mitglieder finden den Beitrag gut.
  16. #16
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    allow_url_fopen
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  17. #17
    User Pic
    Poldi-1 Mitglied
    Registriert seit
    21.03.2009
    Beiträge
    62
    Beitragswertungen
    0 Beitragspunkte
    Habs tatsächlich geschafft allow_url_fopen = On zu setzen, habe dann wieder das zuerst von Dir gepostete Script ohne curl benutzt und bekomme jetzt folgenden Fehler:

    Fatal error: Call to undefined function: file_put_contents() in /prmhgpnj/www.prma.eu/include/boxes/online+track.php on line 34
    0 Mitglieder finden den Beitrag gut.
  18. #18
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Ohoh, wer setzt denn hier noch PHP 4 ein zunge

    if (!function_exists('file_put_contents')) {
        function file_put_contents($filename, $data) {
            $f = @fopen($filename, 'w');
            if (!$f) {
                return false;
            } else {
                $bytes = fwrite($f, $data);
                fclose($f);
                return $bytes;
            }
        }
    }


    Das mit einfügen, dann sollte es gehen.
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  19. #19
    User Pic
    Poldi-1 Mitglied
    Registriert seit
    21.03.2009
    Beiträge
    62
    Beitragswertungen
    0 Beitragspunkte
    Schuldig... lächeln

    Funktioniert jetzt, aber noch nicht ganz so wie ich wollte... Wenn ein Member spielt aber nicht auf der Homepage ist wird er nicht in der Liste geführt.
    0 Mitglieder finden den Beitrag gut.
  20. #20
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Wirklich?
    Eigentlich sollten alle Member ja angezeigt werden, gehts denn wenn man auf der Seite online ist und im Spiel?
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  21. #21
    User Pic
    Poldi-1 Mitglied
    Registriert seit
    21.03.2009
    Beiträge
    62
    Beitragswertungen
    0 Beitragspunkte
    Jo das geht, aber wenn ich mich dann aus der homepage auslogge werde ich nur noch in der offline-liste ohne das zweite icon geführt.

    edit: Mit Icons statt Text reisst das die Formatierung total auseinander. Sieht so aus als wäre der member-name dann in der gleichen tabellenspalte wie das zusätzliche icon, und die namen der offline-member fangen dann erst eine spalte weiter rechts an. So wie ich die tabelle im code sehe sollte sie aber nicht so zerissen werden... ?
    Zeile 72/73:
            $content .= '<tr><td><img src="include/images/icons/online.gif" border="0" alt="online">'.($players[$row->name] == '1' ? '<img src="include/images/icons/trackon.gif" border="0" alt="spielt>' : '<img src="include/images/icons/trackoff.gif" border="0" alt="x>').'</td>';
            $content .='<td><a href="index.php?user-details-'.$row->uid.'">'.$row->name.'</a></td></tr>'."\n";



    In diesem Beispiel ist der als offline geführte Member "FKG2_-C" gleichzeitig am spielen mit dem angezeigten "Wizzard", aber aus der Seite ausgeloggt
    gesperrtes Bild

    edit: Kann das sein das NUR Member als spielend angezeigt werden, nicht aber höher berechtigte wie leader oder admins?
    Und kann das sein dass Member ohne Tracker-ID Eintrag in ihrem Homepageprofil auch immer als nicht spielend angezeigt werden?
    Und kann das sein das auch normale user dann immer ein offline-icon fürs spiel angezeigt bekommen?


    Zuletzt modifiziert von Poldi-1 am 06.05.2009 - 13:40:54
    0 Mitglieder finden den Beitrag gut.
  22. #22
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Erstens, ich hab nur deine Datei gehabt, und auf deiner Seite geschaut, und da anscheinend alle den gleichen Namen auf der Seite / AAoTracker (also im Spiel) verwenden, hab den für den einfach benutzt, falls du ein extra Feld für irgendwelche Ids/Namen hast, müsstest du mir das schon mitteilen.

    Von der Rechten her, sollten alle Member (also Trialmember und höher berücksichtigt werden, aber keine User).

    Und ob man online ist auf der Seite sollte eigentlich keinen Einfluss darauf haben, testen kann ich es allerdings nicht, da ich weder einen Tracker noch nen Account oder das Spiel hab.

    Hab noch ein paar kleiner Fehler beseitigt, allerdings nicht zu grobes, was die Probleme hervorgerufen haben könnte.
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  23. #23
    User Pic
    Poldi-1 Mitglied
    Registriert seit
    21.03.2009
    Beiträge
    62
    Beitragswertungen
    0 Beitragspunkte
    hab doch im ersten post dieses threads geschrieben das ich erfolgreich das prefix "trackerid" in die datenbank eingepflegt habe. Dachte Du hättest das gelesen und die ganze Zeit berücksichtigt.
    Wegen den Rechten hatte ich mich gewundert weil 2 Kollegen mit denen ich gespielt habe als online(tracker) angezeigt wurden und ich nicht. Das erklärt sich aber damit das ich auf der Seite Poldi und im Spiel Poldi.eBay! heisse. Deswegen hatte ich ja schon die trackerid eingepflegt.
    0 Mitglieder finden den Beitrag gut.
  24. #24
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    <?php
    if (!defined('main')) {die("no direct access");}
    
    $clanid  =  8324; //Clanid Bei aaotracker
    $onlinetime = 60; //Zeit die man auf der Seite für online angezeigt wird
    $cachelifetime = 300; //Sekunden nach der der Cache vom aaotracker erneuert wird
    $curl = false; //Curl für "Fernzugriff" nutzen
    
    function createCache($clanid){
    	global $players;
    	$players = array();
    
    	//XML besorgen
    	if ($curl) {
    		$ch = curl_init();
    		$timeout = 5; // set to zero for no timeout
    		curl_setopt ($ch, CURLOPT_URL, 'http://aaotracker.com/livefeed/xml_clanprofile.php?clanid='.$clanid);
    		curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    		curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    		$xml = curl_exec($ch);
    		curl_close($ch);
    	} else {
    		$xml = file_get_contents('http://aaotracker.com/livefeed/xml_clanprofile.php?clanid='.$clanid);
    	}
    
    	//Onlinestatus auslesen
    	$p = xml_parser_create();
    	xml_parse_into_struct($p, $xml, $data, $index);
    	xml_parser_free($p);
    
    	//ggf. auch mit PLAYERID
    	foreach ($index['PLAYERID'] as $key => $id){
    		$players[$data[$id]['value']] = $data[$index['PLAYERSTATUS'][$key]]['value'];
    	}
    	$cache = '<?php
    			$players = '.var_export($players, true).'
    			?>';
    	file_put_contents('include/caches/aaonline.php', $cache);
    }
    
    if (file_exists('include/caches/aaonline.php')) {
    	if ((time() - filemtime('include/caches/aaonline.php')) > $cachelifetime) {
    		createCache($clanid);
    	} else {
    		include 'include/caches/aaonline.php';
    	}
    } else {
    	createCache($clanid);
    }
    
    
    $dif = time() - $onlinetime;
    $uid = array();
    $content = '';
    
    $sql = db_query("SELECT u.name, u.trackerid, u.id AS uid, UNIX_TIMESTAMP(o.uptime) AS uptime, u.llogin FROM prefix_user u LEFT JOIN prefix_online o ON o.uid = u.id WHERE u.recht <= -3 ORDER BY o.uptime DESC, u.llogin DESC");
    while ($row = db_fetch_object($sql)) {
    	if ($row->uid != 0 and !in_array($row->uid, $uid)) {
    		$content .= '<tr><td>';
    		if ($row->uptime > $dif) {
    			$content .= '<img src="include/images/icons/online.gif" border="0" alt="online" title="online">';
    		} else {
    			$content .= '<img src="include/images/icons/offline.gif" border="0" alt="offline" title="zuletzt eingeloggt um '.date('d.m.Y H:i \U\h\r', $row->llogin).'">';
    		}
    		if ($players[$row->trackerid] == '1') {
    			$content .= ' <img src="include/images/icons/online.gif" border="0" alt="AA online" title="AA online">';
    		} else {
    			$content .= ' <img src="include/images/icons/offline.gif" border="0" alt="AA offline" title="AA offline">';
    		}
    		$content .= '</td><td><a href="index.php?user-details-'.$row->uid.'">'.$row->name.'</a></td></tr>'."\n";
    		$uid[] = $row->uid;
    	}
    }
    
    ?>
    <table align="center" border="0" cellpadding="0" cellspacing="0" >
     <?php echo $content; ?>
    </table>


    Damit mal versuchen.
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  25. #25
    User Pic
    Poldi-1 Mitglied
    Registriert seit
    21.03.2009
    Beiträge
    62
    Beitragswertungen
    0 Beitragspunkte
    Sauber! Das erkennen wer spielt läuft einwandfrei. Danke!
    Allerdings ist das jetzt nur eine Liste aller Member (auch der die sowohl auf der Seite als auch im Spiel offline sind) - die normalen Funktionen der Online-Box fehlen, also:

    wer ist grad online (egal ob auf homepage oder tracker)
    ------------------
    die letzten 5 die online waren (egal ob auf homepage oder tracker)
    ------------------
    Gäste


    Grade fiel mir auch noch auf das beim reloaden der homepage auf einmal wieder alle offline im tracker sind - nach erneutem reload sind sie wieder da. das konnte ich schon ein paar mal beobachten. liegt das an dem cache?


    Zuletzt modifiziert von Poldi-1 am 06.05.2009 - 18:36:46
    0 Mitglieder finden den Beitrag gut.
  26. #26
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Wer zuletzt im Spiel war, kann man nicht wirklich auslesen, man könnte es natürlich immer speichern, aber lohnt sich denke ich nicht.

    <?php
    if (!defined('main')) {die("no direct access");}
    
    $clanid  =  8324; //Clanid Bei aaotracker
    $onlinetime = 60; //Zeit die man auf der Seite für online angezeigt wird
    $cachelifetime = 300; //Sekunden nach der der Cache vom aaotracker erneuert wird
    $curl = false; //Curl für "Fernzugriff" nutzen
    
    function createCache($clanid){
    	global $players;
    	$players = array();
    
    	//XML besorgen
    	if ($curl) {
    		$ch = curl_init();
    		$timeout = 5; // set to zero for no timeout
    		curl_setopt ($ch, CURLOPT_URL, 'http://aaotracker.com/livefeed/xml_clanprofile.php?clanid='.$clanid);
    		curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    		curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    		$xml = curl_exec($ch);
    		curl_close($ch);
    	} else {
    		$xml = file_get_contents('http://aaotracker.com/livefeed/xml_clanprofile.php?clanid='.$clanid);
    	}
    
    	//Onlinestatus auslesen
    	$p = xml_parser_create();
    	xml_parse_into_struct($p, $xml, $data, $index);
    	xml_parser_free($p);
    
    	//ggf. auch mit PLAYERID
    	foreach ($index['PLAYERNAME'] as $key => $id){
    		$players[$data[$id]['value']] = $data[$index['PLAYERSTATUS'][$key]]['value'];
    	}
    	$cache = '<?php
    			$players = '.var_export($players, true).'
    			?>';
    	file_put_contents('include/caches/aaonline.php', $cache);
    }
    
    if (file_exists('include/caches/aaonline.php')) {
    	if ((time() - filemtime('include/caches/aaonline.php')) > $cachelifetime) {
    		createCache($clanid);
    	} else {
    		include 'include/caches/aaonline.php';
    	}
    } else {
    	createCache($clanid);
    }
    
    
    $dif = time() - $onlinetime;
    $uid = $aauid = array();
    $content = '';
    
    $sql = db_query("SELECT u.name, u.id AS uid, UNIX_TIMESTAMP(o.uptime) AS uptime, u.llogin FROM prefix_user u LEFT JOIN prefix_online o ON o.uid = u.id WHERE u.recht <= -3 ORDER BY o.uptime DESC, u.llogin DESC");
    while ($row = db_fetch_object($sql)) {
    	if ($row->uid != 0 and !in_array($row->uid, $uid)) {
    		$tmp = '<tr><td>';
    		$online = false;
    		if ($row->uptime > $dif) {
    			$tmp .= '<img src="include/images/icons/online.gif" border="0" alt="online" title="online">';
    			$online = true;
    		} else {
    			$tmp .= '<img src="include/images/icons/offline.gif" border="0" alt="offline" title="zuletzt eingeloggt um '.date('d.m.Y H:i \U\h\r', $row->llogin).'">';
    		}
    		if ($players[$row->name] == '1') {
    			$tmp .= ' <img src="include/images/icons/online.gif" border="0" alt="AA online" title="AA online">';
    			$online = true;
    		} else {
    			$tmp .= ' <img src="include/images/icons/offline.gif" border="0" alt="AA offline" title="AA offline">';
    		}
    		$tmp .= '</td><td><a href="index.php?user-details-'.$row->uid.'">'.$row->name.'</a></td></tr>'."\n";
    		$aauid[] = $row->uid;
    		if ($online) {
    			$uid[] = $row->uid;
    			$content .= $tmp;
    		}
    	}
    }
    
    //normale Onlinebox
    $dif = date('Y-m-d H:i:s', time() - $onlinetime);
    $abf = "SELECT o.uid, u.name FROM `prefix_online` o LEFT JOIN prefix_user u ON o.uid = u.id WHERE o.uptime > '". $dif."' and o.uid NOT IN (".implode(',', $uid).")";
    $resultID = db_query($abf);
    $brk='';
    $guests = 0;
    $guestn = $lang['guests'];
    
    while ($row = db_fetch_object($resultID)) {
    	if ($row->uid != 0 AND $brk!=$row->uid) {
    		$content.= '<tr><td><img src="include/images/icons/online.gif" border="0" alt="online"></td>';
    		$content.='<td><a href="index.php?user-details-'.$row->uid.'">'.$row->name.'</a></td></tr>'."\n";
    		$uid[] = $row->uid;
    	}
    	if ($row->uid == 0) { $guests++; }
    	$brk=$row->uid;
    }
    if ($guests == 1) { $guestn = $lang['guest']; }
    if (empty($content)) { $content.='<tr><td><img src="include/images/icons/offline.gif"  border="0" alt="offline"></td><td><font color="#003366">0 User </font></td></tr>'."\n"; }
    
    $content.='<tr><td colspan="2"><hr style="height: 0px; border: dashed #9AB1C8 0px; border-top-width: 1px;"></td></tr>'."\n";
    $where = (count($uid)>0) ? 'WHERE id NOT IN ('.implode(', ', $uid).')' : '';
    $abf2 = 'SELECT * FROM prefix_user '.$where.' ORDER BY llogin DESC LIMIT 0,5';
    $erg2 = db_query($abf2);
    
    while ($row2 = db_fetch_object($erg2)) {
    	$datum = date('H:i d.m.y',$row2->llogin);
    	$user = $row2->name;
    	$content.='<tr><td><img src="include/images/icons/offline.gif"  border="0" alt="offline"></td><td><a href="index.php?user-details-'.$row2->id.'" title="'.$lang['lasttimeonline'].$datum.'">'.$user.'</a></td></tr>'."\n";
    }
    if ($guests == 0) {
    	$content.= '<tr><td colspan="2"><hr style="height: 0px; border: dashed #9AB1C8 0px; border-top-width: 1px";></td></tr>'."\n".'
    		<tr><td><img src="include/images/icons/offline.gif"  border="0" alt="offline"></td><td><font size="-1" color="#003366">0 '.$lang['guests'].'</td></tr>'."\n";
    } else {
    	$content.= '<tr><td colspan="2"><hr style="height: 0px; border: dashed #9AB1C8 0px; border-top-width: 1px;"></td></tr>'."\n".'
    		<tr><td><img src="include/images/icons/online.gif" border="0" alt="online"></td><td><font size=-1>'.$guests.' '.$guestn.'</font></td></tr>'."\n";
    }
    
    ?>
    <table align="center" border="0" cellpadding="0" cellspacing="0" >
     <?php echo $content; ?>
    </table>
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  27. #27
    User Pic
    Poldi-1 Mitglied
    Registriert seit
    21.03.2009
    Beiträge
    62
    Beitragswertungen
    0 Beitragspunkte
    öhm... jetzt hast du das aber wieder mit usernamen statt trackerid gemacht...

    Ich hab mir das Hirn zermartert aber schliesslich hab ichs geschafft die richtigen Teile aus Deinem letzten Post reinzukopieren lächeln

    <?php
    if (!defined('main')) {die("no direct access");}
    
    $clanid  =  8324; //Clanid Bei aaotracker
    $onlinetime = 60; //Zeit die man auf der Seite für online angezeigt wird
    $cachelifetime = 60; //Sekunden nach der der Cache vom aaotracker erneuert wird
    $curl = false; //Curl für "Fernzugriff" nutzen 
    
    if (!function_exists('file_put_contents')) {
        function file_put_contents($filename, $data) {
            $f = @fopen($filename, 'w');
            if (!$f) {
                return false;
            } else {
                $bytes = fwrite($f, $data);
                fclose($f);
                return $bytes;
            }
        }
    }
    
    function createCache($clanid){
        global $players;
        $players = array();
    
        //XML besorgen
        if ($curl) {
            $ch = curl_init();
            $timeout = 5; // set to zero for no timeout
            curl_setopt ($ch, CURLOPT_URL, 'http://aaotracker.com/livefeed/xml_clanprofile.php?clanid='.$clanid);
            curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
            $xml = curl_exec($ch);
            curl_close($ch);
        } else {
            $xml = file_get_contents('http://aaotracker.com/livefeed/xml_clanprofile.php?clanid='.$clanid);
        } 
    
        //Onlinestatus auslesen
        $p = xml_parser_create();
        xml_parse_into_struct($p, $xml, $data, $index);
        xml_parser_free($p);
        foreach ($index['PLAYERID'] as $key => $id){
            $players[$data[$id]['value']] = $data[$index['PLAYERSTATUS'][$key]]['value'];
        }
        $cache = '<?php
                $players = '.var_export($players, true).'
                ?>';
        file_put_contents('include/caches/aaonline.php', $cache);
    }
    
    if (file_exists('include/caches/aaonline.php')) {
        if ((time() - filemtime('include/caches/aaonline.php')) > $cachelifetime) {
            createCache($clanid);
        } else {
            include 'include/caches/aaonline.php';
        }
    } else {
        createCache($clanid);
    }
    
    
    $dif = time() - $onlinetime;
    $uid = $aauid = array();
    $content = '';
    
    $sql = db_query("SELECT u.name, u.trackerid, u.id AS uid, UNIX_TIMESTAMP(o.uptime) AS uptime, u.llogin FROM prefix_user u LEFT JOIN prefix_online o ON o.uid = u.id WHERE u.recht <= -3 ORDER BY o.uptime DESC, u.llogin DESC");
    while ($row = db_fetch_object($sql)) {
        if ($row->uid != 0 and !in_array($row->uid, $uid)) {
            $tmp = '<tr><td>';
            $online = false;
            if ($row->uptime > $dif) {
                $tmp .= '<img src="include/images/icons/online.gif" border="0" alt="online" title="online">';
                $online = true;
            } else {
                $tmp .= '<img src="include/images/icons/offline.gif" border="0" alt="offline" title="zuletzt eingeloggt um '.date('d.m.Y H:i \U\h\r', $row->llogin).'">';
            }
            if ($players[$row->trackerid] == '1') {
                $tmp .= ' <a href="http://aaotracker.com/usertracker.php?userid='.$row->trackerid.'" target="_blank"><img src="include/images/icons/trackon.gif" border="0" alt="AA online" title="AA online"></a>';
                $online = true;
            } else {
                $tmp .= ' <a href="http://aaotracker.com/usertracker.php?userid='.$row->trackerid.'" target="_blank"><img src="include/images/icons/trackoff.gif" border="0" alt="AA offline" title="AA offline"></a>';
            }
            $tmp .= '</td><td><a href="index.php?user-details-'.$row->uid.'">'.$row->name.'</a></td></tr>'."\n";
            $aauid[] = $row->uid;
            if ($online) {
                $uid[] = $row->uid;
                $content .= $tmp;
            }
        }
    }
    
    //normale Onlinebox
    $dif = date('Y-m-d H:i:s', time() - $onlinetime);
    $abf = "SELECT o.uid, u.name FROM `prefix_online` o LEFT JOIN prefix_user u ON o.uid = u.id WHERE o.uptime > '". $dif."' and o.uid NOT IN (".implode(',', $uid).")";
    $resultID = db_query($abf);
    $brk='';
    $guests = 0;
    $guestn = $lang['guests'];
    
    while ($row = db_fetch_object($resultID)) {
        if ($row->uid != 0 AND $brk!=$row->uid) {
            $content.= '<tr><td><img src="include/images/icons/online.gif" border="0" alt="online"></td>';
            $content.='<td><a href="index.php?user-details-'.$row->uid.'">'.$row->name.'</a></td></tr>'."\n";
            $uid[] = $row->uid;
        }
        if ($row->uid == 0) { $guests++; }
        $brk=$row->uid;
    }
    if ($guests == 1) { $guestn = $lang['guest']; }
    if (empty($content)) { $content.='<tr><td><img src="include/images/icons/offline.gif"  border="0" alt="offline"></td><td><font color="#003366">0 User </font></td></tr>'."\n"; }
    
    $content.='<tr><td colspan="2"><hr style="height: 0px; border: dashed #9AB1C8 0px; border-top-width: 1px;"></td></tr>'."\n";
    $where = (count($uid)>0) ? 'WHERE id NOT IN ('.implode(', ', $uid).')' : '';
    $abf2 = 'SELECT * FROM prefix_user '.$where.' ORDER BY llogin DESC LIMIT 0,5';
    $erg2 = db_query($abf2);
    
    while ($row2 = db_fetch_object($erg2)) {
        $datum = date('H:i d.m.y',$row2->llogin);
        $user = $row2->name;
        $content.='<tr><td><img src="include/images/icons/offline.gif"  border="0" alt="offline"></td><td><a href="index.php?user-details-'.$row2->id.'" title="'.$lang['lasttimeonline'].$datum.'">'.$user.'</a></td></tr>'."\n";
    }
    if ($guests == 0) {
        $content.= '<tr><td colspan="2"><hr style="height: 0px; border: dashed #9AB1C8 0px; border-top-width: 1px";></td></tr>'."\n".'
            <tr><td><img src="include/images/icons/offline.gif"  border="0" alt="offline"></td><td><font size="-1" color="#003366">0 '.$lang['guests'].'</td></tr>'."\n";
    } else {
        $content.= '<tr><td colspan="2"><hr style="height: 0px; border: dashed #9AB1C8 0px; border-top-width: 1px;"></td></tr>'."\n".'
            <tr><td><img src="include/images/icons/online.gif" border="0" alt="online"></td><td><font size=-1>'.$guests.' '.$guestn.'</font></td></tr>'."\n";
    }
    
    ?>
    <table align="center" border="0" cellpadding="0" cellspacing="0" >
     <?php echo $content; ?>
    </table>


    Da die ganze Ehre ja Dir gebührt habe ich natürlich nix dagegen wenn Du das Script als Deines vertreibst. Es gibt ja noch Tracker für andere Spiele (Battlefield z.B.), vielleicht is das Script dann ja mit kleinen Änderungen an den Variablen auch für andere Clans interessant.

    Mein Installscript und die veränderte Profil_edit.php kann ich dir natürlich posten wenn du willst.


    Zuletzt modifiziert von Poldi-1 am 09.05.2009 - 16:08:29
    0 Mitglieder finden den Beitrag gut.
  28. #28
    User Pic
    Poldi-1 Mitglied
    Registriert seit
    21.03.2009
    Beiträge
    62
    Beitragswertungen
    0 Beitragspunkte
    Aber wenn ich mir den Code so angucke kommen mir noch Bedenken:

    $sql = db_query("SELECT u.name, u.trackerid, u.id AS uid, UNIX_TIMESTAMP(o.uptime) AS uptime, u.llogin FROM prefix_user u LEFT JOIN prefix_online o ON o.uid = u.id WHERE u.recht <= -3 ORDER BY o.uptime DESC, u.llogin DESC");

    Bedeutet das nicht dass NUR user mit member-status angezeigt werden? also das dann z.B. User/SuperUser gar nicht als online (auf der homepage) angezeigt werden?

    edit: Vergiss es, geht lächeln


    Zuletzt modifiziert von Poldi-1 am 09.05.2009 - 17:58:21
    0 Mitglieder finden den Beitrag gut.
  29. #29
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Achso, ja, mhh hatte ich anscheinend dann direkt im Forum gemacht, die Datei so hatte ich auch bei mir auf der Platte, aber schön, dass du es allein geschafft hast, wenn du meinen Namen gebührend erwähnst zunge kannst du es gerne zum Download stellen.
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  30. #30
    User Pic
    Poldi-1 Mitglied
    Registriert seit
    21.03.2009
    Beiträge
    62
    Beitragswertungen
    0 Beitragspunkte
    hmm aber da is immernoch das problem, das ich die seite nach erstmaligem laden noch einmal reloaden muss bevor der tracker-status wechselt.


    Zuletzt modifiziert von Poldi-1 am 10.05.2009 - 18:55:43
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu Allgemein

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten