搜索
查看: 14077|回复: 19

[分享] 显示CSSTATS的TOP15的PHP程序

[复制链接]
发表于 2003-10-25 18:29:56 | 显示全部楼层 |阅读模式 来自 中国–江西–南昌
早就想了解csstats.dat的格式,可是官方网站现在还是提供0.93的源代码。没办法,我只好自己试验了一上午,终于知道csstats.dat的格式,发出来给大家共享,同时也写了一个PHP程序可以直接在网站显示CSSTATS的TOP15

//top15.php
<table border><caption>CS排行榜</caption><tr><th>排名<th>名字<th>杀人数<th>爆头(%)<th>死<th>命中/子弹数(命中率)<th>得分(爆头*2+杀人数-死)
<?function bin2int($bin)
{return ord($bin)+ord($bin[1])*256;
}
$fp=fopen("D:\\HLServer\\cstrike\\addons\\amx\\csstats.dat","rb");
if(bin2int(fread($fp,2))!=5) exit("请安装CSStats 0.97");
for($i=1;$i<=15;$i++)
{if(!$namelen=bin2int(fread($fp,2))) break;//WORD名字长度(包括\0)
$player=fread($fp,$namelen-1);
fseek($fp,$namelen+3,SEEK_CUR);
$a=unpack("V15stats",fread($fp,60));
//15个DWORD依次为1?,2Damage,3Death,4Kill,5Shots,6Hits,7Headshots,8?,9head,10chest,11stomach,12leftarm,13rightarm,14leftleg,15rightleg
echo "<tr><td>$i<td>$player<td>".$a["stats4"]."<td>".$a["stats7"]."(".round($a["stats7"]/$a["stats4"]*100,1)."%)<td>".$a["stats3"]."<td>".$a["stats6"]."/".$a["stats5"]."=".round($a["stats6"]/$a["stats5"]*100,1)."%)<td>".($a["stats4"]+$a["stats7"]*2-$a["stats3"]);
}
fclose($fp);
?></table>
发表于 2003-10-26 00:58:39 | 显示全部楼层 来自 中国–湖北–武汉
harrypotter的那个查询地址是:
http://my.ncusc.com/cs
大家可以看看。。。
回复

使用道具 举报

发表于 2003-10-26 12:40:13 | 显示全部楼层 来自 中国–山东–济南
在这里可以找到csstats.dat的格式
包括amx最新版本的Source
http://cvs.sourceforge.net/viewcvs.py/amxmod/
不过有时可能连接不上~
回复

使用道具 举报

 楼主| 发表于 2003-10-27 13:59:50 | 显示全部楼层 来自 中国–江西–南昌
哈哈!找到了源代码,一下就明朗了
void RankSystem::loadRank( const char* filename )
{
        FILE *bfp = fopen( filename , "rb" );
       
        if ( !bfp ) return;
       
        short int i = 0;
        fread(&i, 1 , sizeof(short int) , bfp);
       
        if (i == RANK_VERSION)
        {
                Stats d;
                char unique[64], name[64];
                fread(&i , 1, sizeof(short int), bfp);

                while( i )
                {
                        fread(name , i,sizeof(char) , bfp);
                        fread(&i , 1, sizeof(short int), bfp);
                        fread(unique , i,sizeof(char) , bfp);
                        fread(&d.tks, 1,sizeof(int), bfp);
                        fread(&d.damage, 1,sizeof(int), bfp);
                        fread(&d.deaths, 1,sizeof(int), bfp);
                        fread(&d.kills, 1,sizeof(int), bfp);
                        fread(&d.shots, 1,sizeof(int), bfp);
                        fread(&d.hits, 1,sizeof(int), bfp);
                        fread(&d.hs, 1,sizeof(int), bfp);
                        fread(d.bodyHits, 1,sizeof(d.bodyHits), bfp);
                        fread(&i , 1, sizeof(short int), bfp);

                        RankSystem::RankStats* a = findEntryInRank( unique , name );
                        if ( a ) a->updatePosition( &d );
                }
        }
       
        fclose(bfp);
}
回复

使用道具 举报

匿名  发表于 2003-10-27 16:38:13 来自 Invalid
nice~
发表于 2003-11-25 13:18:07 | 显示全部楼层 来自 中国–四川–成都
好顶呀
回复

使用道具 举报

发表于 2003-12-18 19:58:15 | 显示全部楼层 来自 中国–辽宁–沈阳
这里面有没有武器使用的数据?
回复

使用道具 举报

发表于 2003-12-18 20:21:22 | 显示全部楼层 来自 中国–广东–广州–天河区
谢谢大大的分享!
回复

使用道具 举报

发表于 2003-12-18 21:09:49 | 显示全部楼层 来自 中国–辽宁–沈阳
你把statme的格式也搞出来吧
回复

使用道具 举报

发表于 2003-12-20 10:35:58 | 显示全部楼层 来自 中国–福建–龙岩
我记得谁放了个statmeTOhtml的exe文件。

我看楼主也作一个吧。:)
回复

使用道具 举报

游客
回复
您需要登录后才可以回帖 登录 | 注个册吧

快速回复 返回顶部 返回列表