aTi|Sanders
Hold your Fire, I forgot my gun!
+0|7012
i have a techie question for you chuy. Say you want to convert the data to a $var. Like say so i could do a next rank bar, or even be able to add these stats to the SQL of my current SQL for my members roster table. Could that be possible....Been banging my head around with it. I am not good at arrays.

some like
$nick
$pid
$rank
$score
$spm
$time

That way i could build a square in thier clan profile. Which would have next rank progress bar, thier rank image, and so on. I could have all member appon joining put thier PID into thier profile. This would allow me to add a PID field and grab thier stats from the feed.

sorta like

$sql = "INSERT INTO team set nick='$nick', rank='$rank', score='$score', scoreper='$spm', time='$time' WHERE pid='$pid'";

I wouldnt need link because i can use PID to link to thier stats on this site.

Any would would be thanked. And i will give you full credit on the stats area.

Sanders out!

P.S. i am not an xml and Array man, nore OOP PHP. ALSO NICE WORK ON THIS!

Last edited by aTi|Sanders (2005-10-23 14:33:59)

riptide2k
Member
+7|7010|Zurich, Switzerland
Absolute fantastic work, Jeff!

Thanx alot for the XML feed, a lot of people have dreamed about such a feature.

I just released a plugin, so people who are using the CMS website engine called "LDU", could easy integrate it on their websites.

For those who are interested:

Official website of LDU:
http://www.neocrome.net

Link to the plugin:
http://www.neocrome.net/page.php?id=1802

BTW - If you're open for suggestions: It would be outstanding, if you could integrate the online/offline thing and the information on which server the people are playing into the feed.

Last edited by riptide2k (2005-10-23 15:00:57)

chuyskywalker
Admin
+2,439|7093|"Frisco"

aTi|Sanders: Uhm -- what? If you're looking to pull down the XML and parse it into something you can use for INSERTs then try the getList() function which will return a nice array that you can foreach through and do multiple INSERTs with. Outside of that I can't really provide a whole lot of programming assistance.

riptide2k wrote:

BTW - If you're open for suggestions: It would be outstanding, if you could integrate the online/offline thing and the information on which server the people are playing into the feed.
I can't. I get that data from a specific partnership with Game-Monitor.com only for display and linking on bf2s.com. GM, however, offers an afforable package that will let you track friends across a multitude -- something like 30 online games.

The Queue -- No clue what the hell happened. Honestly. I'm just hoping that whatever influx of users just hit the site evens out soon. If not, I'll see about upping the number of queue threads I have running to deal with it.
NM156
The H4xor Mod
+161|7092|North Texas

Unleashed2k wrote:

I really liked how you did the tables, the comparing, the css. Whatever you want to share, go ahead, It would be much appreicated, and i'll link back to bf2s and your clan's site, since im using this for mine Email me the source @ unleashed2k@gmail.com
Here's a basic table template that you can use. It has all the features I added to our clan page. Source code: msc-bf2xml.zip
You can view it here: msc-bf2xml
I also included the original example.php, and readme.html from Chuy's source. I slightly modified the API, to include the XML file time/date, and next refresh time.

This code uses an array of PID's, to build separate tables, for certain groups. You don't have to use it like this, but others may benefit from this too. The PID's in the code, are from various EA leaderboard leaders. There is no SQL support, folks will have to do that themselves.

Use/do with it as you please! If it breaks shit.. it's your fault!

Last edited by NM156 (2006-02-13 12:53:54)

str33k
Member
+0|7092
Rofl thanks nm156. I see what i was ddoing wrong now that I looked at your code for the last update time.
Unleashed2k
//kk thx.
+17|7007
OMG NM156, Thankyou so much
Rakasan
Member
+7|7082|California, USA
Nice job with the graphs chuy, much more detailed than bf2trends.com.  I see there is a small arms accuracy selection, but can you add overall small arms KDR.  Even better (probably a hassle), ratios for each small arms weapon.

Last edited by Rakasan (2005-10-23 21:43:29)

riptide2k
Member
+7|7010|Zurich, Switzerland
Thanx alot NM156, for sharing your code with us!

Your code gave me some ideas to improve mine, such as the "Last update / Next update" thing. If you want to see how it looks on my site, check: http://www.tschumiweb.ch/plug.php?e=bf2s
aTi|Sanders
Hold your Fire, I forgot my gun!
+0|7012
I would like to thank Chuy for his help "I'm abit slow to learn new things". Though i got mine up with rank status and such. Its just a test version, so i havnt put everything up yet.

Here we go.
http://www.ati-gaming.com/bf2stats/index.php

I still have alot of backend work to do.....

Last edited by aTi|Sanders (2005-10-23 23:53:50)

riptide2k
Member
+7|7010|Zurich, Switzerland
Nice.. i love the "next Rank" bar.. great idea..

I hope you don't mind, if i integrate this in my plugin too?

Last edited by riptide2k (2005-10-24 03:48:53)

alav
Member
+6|7006
Good Job.
=[4th]=SlayThem
Destroy Noob Cannons
+96|7078
*love*
aTi|Sanders
Hold your Fire, I forgot my gun!
+0|7012
i'll give you the code

index.php

Code:

<html>
<head>
<style type="text/css">
body {font: 9px verdana,sans-serif; margin: 0px 0px 0px 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: center}

td {border:0px solid black ;color: #7B7D64; font: 9px verdana,sans-serif; margin: 0px 0px 0px 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;}

div {border:0px solid black;color: #7B7D64; font: 9px verdana,sans-serif; margin: 0px 0px 0px 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;}

input {background: #3F4032;border:1px solid #787961;color: #7B7D64; font: 9px verdana,sans-serif;}

textarea {background: #3F4032;border:1px solid #787961;color: #7B7D64; font: 9px verdana,sans-serif;}

select {background: #3F4032;border:0px solid #787961;color: #7B7D64; font: 9px verdana,sans-serif;}

a:link {color: #96977D; text-decoration: none}

a:visited {color: #96977D; text-decoration: none}

a:hover {color: #7B7D64; text-decoration: none}

img {border: 0px;}

.c {background: #222222; border-left: 1px solid #3F4032; border-top: 1px solid #3F4032; border-bottom: 1px solid #3F4032}

.c1 {background: #222222; border: 1px solid #3F4032;}

.c2 {background: #39382B; border-left: 1px solid #3F4032; border-bottom: 1px solid #3F4032;}

.c3 {background: #39382B; border: 1px solid #3F4032; border-top: 0px solid #3F4032;}

</style>
<meta http-equiv="Content-Type" content="text/html;">
</head>
<body bgcolor="#303227">

<br>
<table ecellspacing='0' cellpadding='2' width='490' align='center'>
<tr>
<td>
<table ecellspacing='0' cellpadding='2' width='490' align='center'>
<tr>
<td class='c' align='center'>Rank</td>
<td class='c' align='left'>Player</td>
<td class='c' align='center'>Score</td>
<td class='c' align='center'>SPM</td>
<td class='c' align='center'>Time</td>
<td class='c1' align='left'>Next Rank</td>
</tr>
<?php

require('./bf2s-mlb.php');

$mlb->debug = true;
$mlb->get('45662349,43360337,46258567');

foreach( $mlb->getList() as $stats )
{
$nick = $stats['NICK'];
$pid = $stats['PID'];
$rank = $stats['RANK'];
$score = $stats['SCORE'];
$spm = $stats['SPM'];
$time = $stats['TIME'];

$rankmax1 = "150";
$rankmax2 = "500";
$rankmax3 = "800";
$rankmax4 = "2500";
$rankmax5 = "5000";
$rankmax6 = "8000";
$rankmax7 = "20000";
$rankmax8 = "20000";
$rankmax9 = "50000";
$rankmax10 = "50000";
$rankmax11 = "250000";
$rankmax12 = "200000";
$rankmax13 = "500000";

$time = number_format($time/3600, 2);
$spm = number_format($spm, 2);

if ($rank == '0') {
$progress = Round(($score / $rankmax1) * 100, 2) . "%";
} else if ($rank == '1') {
$progress = Round(($score / $rankmax2) * 100, 2) . "%";
} else if ($rank == '2') {
$progress = Round(($score / $rankmax3) * 100, 2) . "%";
} else if ($rank == '3') {
$progress = Round(($score / $rankmax4) * 100, 2) . "%";
} else if ($rank == '4') {
$progress = Round(($score / $rankmax5) * 100, 2) . "%";
} else if ($rank == '5') {
$progress = Round(($score / $rankmax6) * 100, 2) . "%";
} else if ($rank == '6') {
$progress = Round(($score / $rankmax7) * 100, 2) . "%";
} else if ($rank == '7') {
$progress = Round(($score / $rankmax8) * 100, 2) . "%";
} else if ($rank == '8') {
$progress = Round(($score / $rankmax9) * 100, 2) . "%";
} else if ($rank == '9') {
$progress = Round(($score / $rankmax10) * 100, 2) . "%";
} else if ($rank == '10') {
$progress = Round(($score / $rankmax11) * 100, 2) . "%";
} else if ($rank == '11') {
$progress = Round(($score / $rankmax12) * 100, 2) . "%";
} else if ($rank == '12') {
$progress = Round(($score / $rankmax13)  * 100, 2) . "%";
}

Echo "<tr>
<td class='c2' width='16' align='center'><img src='images/rank_small_$rank.gif'></td>
<td class='c2' width='124' align='left'><a target='new window' href='http://www.bf2s.com/player/$pid/'>$nick</a></td>
<td class='c2' width='50' align='center'>$score</td>
<td class='c2' width='50' align='center'>$spm</td>
<td class='c2' width='50' align='center'>$time</td>
<td class='c3' width='200' align='left'><img src='images/bar.gif' width='$progress' height='10' alt='$progress - $score'></td>
</tr>";
}
?>
</table>
</td>
</tr>
<tr>
<td>
<div align="right"><?php echo "Last Update: " . $mlb->cacheage; ?><br /><?php echo "Next Update: " . $mlb->nextrefresh; ?></div>
</td>
</td>
</table>
</body>
</html>
bf2s-mlb.php

Code:

<?php

class BF2S_MLB {

    var $cachedir;
    var $has_cache;
    
    var $debug;
    
    var $myleaderboard;

    function BF2S_MLB() {
        $this->cachedir = dirname(__FILE__) . '/cache';
    }
    
    
    function log($msg, $err=false) {
        if( $this->debug == true )
            $this->mlog['t'][] = htmlspecialchars($msg);
        if($err) $this->errors .= htmlspecialchars($msg) . '<br />';
    }
    
    function printLog() {
    
        if( $this->errors )
            echo "<b>ERRORS:</b>\n $this->errors\n";
        
        if( $this->mlog ) {
            echo '<strong>Message Log</strong><ol>';
            foreach( $this->mlog as $type => $logSet ) {
                echo "<li>LOG[$type] (" .$this->timelog[$type]. "):<ol><li><pre>";
                echo implode("</pre></li><li><pre>", $logSet);
                echo '</pre></li></ol></li>';
            }
            echo '</ol>';
        }
        
    }
    
    /* 
     * 'Testing' Functions 
     */
    
    function test_cache() {
        //$this->log("test_cache()");
    
        if( isset($this->has_cache) ) 
            return $this->has_cache;
            
        if( is_writable( $this->cachedir ) && is_executable( $this->cachedir ) ) { 
            // simplest test -- can we write to the dir?
        
            $this->has_cache = true;
            
        } else {
            // could not write. See if it even exists.
            
            if( file_exists($this->cachedir) ) { 
                // the folder is there, but isn't writeable. damn, try to make it so
                
                $dir = @chmod( $this->cachedir, 0777 );
                if($dir == false) { 
                    // tried to chmod cache folder and failed.
                    $this->log("Your cache directory (<code>" . $this->cachedir . "</code>) exists, but is not world writable (777). I couldn't make it so. Please do this by hand.",1);
                    $this->has_cache = false;
                } else {
                    // yay, it was chmoded
                    $this->has_cache = true;
                }
                
            } else {
                //ack, no cache dir at all - try to make one with perms
                
                $dir = @mkdir( $this->cachedir, 0777);
                if($dir == false) { // tried to make cache folder and failed.
                    $this->log("Your cache directory (<code>" . $this->cachedir . "</code>) needs to be created and world writable (777). I couldn't make it so. Please do this by hand.",1);
                    $this->has_cache = false;
                } else {
                    // hey, we did it. Made the folder, and chmoded it
                    $this->has_cache = true;
                }
                
            } 
            
        }
        
        $this->log("Cache file testing/creation complete: $this->has_cache");
        return $this->has_cache;
    
    }
    
    
    /*
     * Caching Functions
     */

    function cache_recall($func_call, $stale_age=15) {
        $this->log("cache_recall($func_call, $stale_age)");

        if( $this->test_cache() == false ) return false;

        $filename = $this->cachedir . '/'. md5($func_call) . '.txt';

        if( !file_exists($filename) ) {
            $this->log("The cache ( $filename ) does not exist.");
            return false;
        }
//===============
$this->cacheage = date("M j, Y, g:i a", filemtime($filename));
//===============
        if ( filemtime($filename) < strtotime("$stale_age minutes ago") ) {
            $this->log("Cache file ( $filename ) is too old.");
            return false;
        }

        $cached_content = trim(file_get_contents($filename));

        if( $cached_content == '' ) {
            $this->log("Blank cache ( $filename )");
            return false;
        }
//===============
        $refresh = (time() - strtotime("$stale_age minutes ago"));
        $nextrefresh = (strtotime("$stale_age minutes ago") - time());
                $xmlrefresh = filemtime($filename) - $nextrefresh;
                $this->nextrefresh = date("M j, Y, g:i a", $xmlrefresh);
        //$this->log("Refresh every: ( ". (($refresh / 60) / 60 ) ." hours / Next Update: ".date("M j, Y, g:i a", $this->nextrefresh)." )");
        $this->log("Refresh every: ( ". (($refresh / 60) / 60 ) ." hours / Next Update: ". $this->nextrefresh . " )");
//===============
        $this->log("Data loaded from cache ( $filename )");
        return $cached_content;

    }
    
    function cache_store($func_call, $content) {
        $this->log("cache_store($func_call, content)");
    
        if( $this->test_cache() == false ) return false;
        
        $filename = $this->cachedir . '/'. md5($func_call) . '.txt';
        
        if (!$handle = fopen($filename, 'w')) {
            $this->log("Could no open file ( $filename ) for writing. Odd");
            return false;
        }
        
        if (fwrite($handle, $content) === FALSE) {
            $this->log("Write failed ( $filename ). Odd");
            return false;
        }
        
        fclose($handle);
        
        @chmod($filename, 0777);
        
        $this->log("Wrote cache file ( $filename ) ");
        return true;
    
    }
    
    function fgc($url) {
        // wrapper to replease file_get_contents()
        
        $dest = parse_url($url);
        if(!$dest['port'] && $dest['scheme'] == 'http' ) 
            $dest['port'] = 80;
        
        $fp = @fsockopen($dest['host'], $dest['port'], $errno, $errstr, 5);
        if (!$fp) {
            $this->log("FGC Error: $errstr ($errno)");
            return false;
        } else {
            stream_set_timeout($fp, 10);
            $get = $dest['path'];
            if( $dest['query'] ) 
                $get .= "?" . $dest['query'];
            
            $out  = "GET " . $get . " HTTP/1.0\r\n";
            $out .= "Host: " . $dest['host'] . "\r\n";
            $out .= "Connection: Close\r\n\r\n";
            
            $start = time();
            
            fwrite($fp, $out);
            while (!feof($fp)) {
                $res .= fgets($fp, 2048);
                if( time() - $start > 10 ) break; // too many seconds passed -- the hard way, damnit.
            }
            fclose($fp);
            
            $this->lastFullDownload = trim(str_replace("\r", '', $res));
            $res = trim(strstr($this->lastFullDownload,"\n\n"));
            
        }
        
        return $res;
    }
    
    function parseXML($xml_string, &$vals, &$index) {
        
        $p = xml_parser_create();
        xml_parser_set_option($p, XML_OPTION_SKIP_WHITE, 1);
    
        $r = xml_parse_into_struct($p, $xml_string, &$vals, &$index);
        
        if( $r == 1) {
            xml_parser_free($p);
            return true;
        } else {
            $this->log("parseXML() failed: (" . xml_error_string(xml_get_error_code($p)) .') :' . $xml_string);
            xml_parser_free($p);
            return false;
        }
        
    }
    
    function get($pids) {
        $this->log("get($pids)");
        
        if( $pids == '' ) {
            $this->log("Please pass this function a string using PID numbers separated by commas.",1);
            return false;
        }
        
        // get the xml from a CSV string of PIDs and pass the data back as a nice array
        $find = array(
                        "\t\t\t",
                        "\t\t",
                        "\t",
                        '   ',
                        '  ',
                        ' '
                    );
        
        $pids = str_replace($find, '', $pids);
        
        $pids = explode(',',$pids);
        
        if( !is_array($pids) ) {
            $this->log("I couldn't make an array out of this: \"$pids\". Please make a string using only PID numbers, separated by commas.",1);
            return false;
        }
        
        foreach( $pids as $pid ) if( !is_numeric($pid) ) $non_numeric = true;
            
        if( $non_numeric ) {
            $this->log("You may only pass PID numbers to this function.",1);
            return false;
        }            
        
        if( !function_exists('fsockopen') ) {
            $this->log("You must have the fsockopen() function enabled to use this package. Please contact your host and have them enable it.",1);
            return false;
        }
        
        if( !$this->test_cache() ) {
            $this->log("Cache testing failed. You must keep a local cache of the XML data around.",1);
            return false;
        }
        
        
        $pidstring = implode(',',$pids);
        
        if( !$xmlitems = $this->fetchXML($pidstring) ) 
            return false;
        
        list($xml, $vals, $keys) = $xmlitems;
        
        foreach( $keys['PLAYER'] as $player_id )
            $data_set[] = $vals[$player_id]['attributes'];
        
        $this->myleaderboard = $data_set;
        
        return true;
    
    }
    
    function fetchXML($pidstring) {
        
        // load from cache if it's 6 hours new
        // if not, try to pull from the server.
        // if the server chokes, try to load the cache, regardless of age.

        // at each stage check the validity of the XML (parse attempt)
        // and if it fails, move to the next step
        

        // get 6 hour cache
        if( $xml = $this->cache_recall($pidstring, 120) ) {
            $this->log("Fresh cache ( < 6 hour ) XML, validating");
            
            // validate XML
            if( $this->parseXML($xml, $vals, $keys) ) {
                $this->log("The cached XML file seems is valid");
                return array($xml, $vals, $keys); 
            } else {
                $this->log("The cached XML file is INVALID");
            }
            
        } else {
            $this->log("No cached XML file exists (or it's too old.)");
        }
        
        
        // Still here? Get a fresh copy
        if( $raw_file = $this->fgc("http://bf2s.com/xml.php?pids=" . urlencode($pidstring)) ) { 
            
            $this->log("Fresh XML, validating");
        
            $xml = trim($raw_file);
            
            // validate XML
            if( $this->parseXML($xml, $vals, $keys) ) {
                $this->log("The freshened XML file is valid");
                
                // save this new XML file
                $this->cache_store($pidstring, $xml);
                
                return array($xml, $vals, $keys); 
            } else {
                $this->log("The freshened XML file is INVALID: $xml");
            }
            
        } else {
            $this->log("Could not retrieve the freshened XML. Raw file download: $this->lastFullDownload",1);
        }
            
            
        // Can't get rid of you! Use any super old cache we might have laying around
        if( $xml = $this->cache_recall($pidstring, 999999999) ) { // <-- 31 year cache? lordy...
            $this->log("Old cache ( > 6 hour ) XML, validating");
            
            // validate XML
            if( $this->parseXML($xml, $vals, $keys) ) {
                $this->log("The super old XML file is valid");
                return array($xml, $vals, $keys); 
            } else {
                $this->log("The super old XML file is INVALID");
            }
            
        } else {
            $this->log("No super old XML file exists");
        }
        
        $this->log("Couldn't use a 6 hour cache, couldn't get a new copy, and couldn't use a cache file (regardless of age). You are S.O.L.",1);
        return false;    
            
    }
    
    function getList($by = 'score') {
        $this->log("getList($by)");
    
        if( !$this->myleaderboard ) {
            $this->log("Can't make a list till you've queried for it.",1);
            return false;
        }
        
        if( $by == '' )
            return $this->myleaderboard;
    
        $by = strtoupper($by);
        
        $temp = $this->myleaderboard;
        $temp[0] = $temp[0];
        
        foreach($temp as $res)
             $sortAux[] = $res[$by];
        
        array_multisort($sortAux, SORT_DESC, $temp);
        
        return $temp;
    
    }
    
    function showList($sortby = 'score', $format = '<tr><td><a href="{LINK}">{NICK}</a></td><td>{SCORE}</td><td>{SPM}</td><td>{TIME}</td></tr>') {
        $this->log("showList($sortby, $format )");
        
        if( !$list = $this->getList($sortby) )
            return false;
        
        foreach( $list as $player ) {
            $forecho = $format;
            foreach( array_keys($player) as $key ) {
            
                $value = $player[$key];
                
                switch ($key) {
                    case 'SPM':
                        $value = number_format($value, 2);
                        break;
                    case 'SCORE':
                        $value = number_format($value);
                        break;
                    case 'NICK':
                        $value = htmlspecialchars($value);
                        break;
                    case 'TIME':
                        $value = number_format($value/3600, 2);
                        break;
                }
                
                $forecho = str_replace('{' . $key . '}', $value, $forecho );
                
            }
            $out .= $forecho;
        }
        
        if( $format == '<tr><td><a href="{LINK}">{NICK}</a></td><td>{SCORE}</td><td>{SPM}</td><td>{TIME}</td></tr>' ) {
            // default, add the table tags to be nice.
            $out = "<table><th>Player</th><th>Score</th><th>SPM</th><th>Time</th></tr>" . $out . "</table>";
        }
        
        echo $out;
    
    }
    
}
    
$mlb = new BF2S_MLB();
    
?>
i am going to add a INSERT INTO for the SQL so i can intergrate it into my site. So my members can have stats in thier profiles. Plus i am trying to think of other ideas. I would like to note i used the next and last update from MSC script. Another note, i dont know what the next rank points is for after Lieutenant and Sargeant Major of the Marine Corps, so i put 500,000.

Last edited by aTi|Sanders (2005-10-24 05:15:57)

riptide2k
Member
+7|7010|Zurich, Switzerland
Thanx for posting the code, but i allready did it my own..

I had to make it a bit different anyway, so it fits our plugin style...
chuyskywalker
Admin
+2,439|7093|"Frisco"

Rakasan wrote:

Nice job with the graphs chuy, much more detailed than bf2trends.com.  I see there is a small arms accuracy selection, but can you add overall small arms KDR.  Even better (probably a hassle), ratios for each small arms weapon.
You already have a overall K ratio, and I specifically decided to 'limit' the number of stats I track. It's a trade off. See, I can keep several months of tracking data so you can see a very large overall trend of your play, or I can track a LOT of data for a very (like a week) limited time. I choose the long haul and I'm sticking to it.

Basically, most stats above the chart are kept, and pretty much everything below it is not.
meilon
Member
+0|7005
Hey!
Thx 4 the xml-Feed! But it would be nice, if you would put some more fields into it! Like the same visible on "My Leaderboard".
And I have to submit a minor bug: On my system the script doesn't start downloading the xml-feed because the script means, that the folder is not executable! I have deleted this from the line (line 50) and made it to

Code:

        if( is_writable( $this->cachedir ) ) {
so cya!

Over and Out
meilon
AndrewPoison
T5 gemustert
+2|7069|Germany
chmod'ed everything correctly (777) ?
Lord_Arkhan
Member
+0|7023
Can you put the "next Rank bar" and "Player-Country" in the Code? My Englich and my php is very bad.
Thank You for the Code-Pack an Thank You chuyskywalker for the XML.

This Code in my Site: http://www.bf2-nss.de/include.php?path= … ntentid=47

The Code from aTi|Sanders in my Site: http://www.bf2-nss.de/include.php?path= … ntentid=46

Thank You aTi|Sanders




NM156 wrote:

Unleashed2k wrote:

I really liked how you did the tables, the comparing, the css. Whatever you want to share, go ahead, It would be much appreicated, and i'll link back to bf2s and your clan's site, since im using this for mine Email me the source @ unleashed2k@gmail.com
Here's a basic table template that you can use. It has all the features I added to our clan page. Source code: msc-bf2xml.zip
You can view it here: msc-bf2xml
I also included the original example.php, and readme.html from Chuy's source. I slightly modified the API, to include the XML file time/date, and next refresh time.

This code uses an array of PID's, to build separate tables, for certain groups. You don't have to use it like this, but others may benefit from this too. The PID's in the code, are from various EA leaderboard leaders. There is no SQL support, folks will have to do that themselves.

Use/do with it as you please! If it breaks shit.. it's your fault!
NM156
The H4xor Mod
+161|7092|North Texas

Lord_Arkhan wrote:

Can you put the "next Rank bar" and "Player-Country" in the Code?
I'll see what I can do with the rank bar... The player's country doesn't get included in the XML feed, so I can't provide that.
Lord_Arkhan
Member
+0|7023
:-) The next Rank Bar is Ok. I put the Player-Country manuell in the Code with a DE.gif, all the Player comes from DE (Germany).

Thanks

NM156 wrote:

Lord_Arkhan wrote:

Can you put the "next Rank bar" and "Player-Country" in the Code?
I'll see what I can do with the rank bar... The player's country doesn't get included in the XML feed, so I can't provide that.
meilon
Member
+0|7005

AndrewPoison wrote:

chmod'ed everything correctly (777) ?
Yep, done that, done some chown's - nothing changed!
ElKnight
Member
+0|7013
Great Works
Great Site
Great staff

Very smart and cool upafte , Keep on it

Last edited by ElKnight (2005-10-24 17:33:39)

B.Schuss
I'm back, baby... ( sort of )
+664|7086|Cologne, Germany

thx for the cool graphs, chuy
riptide2k
Member
+7|7010|Zurich, Switzerland

chuyskywalker wrote:

riptide2k wrote:

BTW - If you're open for suggestions: It would be outstanding, if you could integrate the online/offline thing and the information on which server the people are playing into the feed.
I can't. I get that data from a specific partnership with Game-Monitor.com only for display and linking on bf2s.com. GM, however, offers an afforable package that will let you track friends across a multitude -- something like 30 online games.
Hm.. ok, now i understand why you can't integrate it in your feed atm. Is there no chance, that GM gives you the right to provide it into your XML feed?

Don't get me wrong, your XML feed is fantastic (and i hope you keep up your fantastic work, not just with the feed but with the whole BF2S.com project)! It's just that i'm missing the online status that much when looking at our brand new leaderboard..
chuyskywalker
Admin
+2,439|7093|"Frisco"

No, there isn't a change of that. I don't even need to the guy who runs the program. I can't start just giving away his data. The best I *might* be able to do is find out if they are online and pass you a link to the server they are on (eg, a link to game-monitor.com). But I'm not even sure if that would fly.

Honestly, GM.com is a really nice service, and integrating his paid service with my leaderboard API wouldn't be very hard.

Board footer

Privacy Policy - © 2024 Jeff Minard