刘半仙【仙】 发表于 2014-1-5 11:51:19

【2014福利】庆祝DT还活着!混战服福利来了!

本帖最后由 刘半仙【仙】 于 2014-1-6 19:24 编辑

          想必很多混战服,用的是Stats    月光疾风汉化处理网页排版的那个插件。--->Zhangshen
                           可能有很多服主不明白为什么TOP显示的是TOP15,那么下面我来给大家解释一下。
                插件的原理 大概就是 定义一个数组
                在数组里面装入字符,字符的内容是HTML 编码,通过MOTD显示数组中的HTML编码达到大家看到的效果。
                那么为什么是15个玩家呢?   
                因为定义数组要定义一个大小,然后showmotd显示有限制。So 如果HTML编码太过复杂化显示就会乱掉,许多
         都看不到。而且HTML编码是通过插件逐条读取逐条写的。
         

               那么我们能不能通过其他的方法突破显示呢?答案明显是有的。

               想必大家都知道MyStats   其工作原理是把玩家的各项数据记录到MySql数据库。然后利用PHP读取MySQL。
         大家在服务器看到的TOP Stats等数据 都是MOTD导向外部网页,需要一个php支持的web站点。
               那么很多服主在想,我没有MySql库,那不是坑爹的吗!
               其实大家的服务器有个CSX数据统计模块, 把大家的数据保存在一个叫做 csstats.dat 的文件里面,大家可以通过
         \addons\amxmodx\data 目录可以看到,其下面有个winCsx.exe 可以读取到数据。其实这就是一个数据库。通过读
            取其中的数据就能达到大家想要的效果。

                问题在于如何读取。wincsx.exe明显已经证明了可以读取。对于我们这些人来说,去翻阅csx模块的源代码是
            不现实的。偶然,我在网上也找到了PHP读取的方法。所以其实我上面说的全是废话。下面就教教大家如何突破。
                备注: PHP读取方法 找寻来着 网络。因为csdn 百度空间 blog等均找到过。版权被篡改过几次。我也不知道
            谁是原创。

            另开一贴: http://www.dt-club.net/forum.php?mod=viewthread&tid=67593
                     这里说得有点乱 。小白可以忽视!


下面放图:



刘半仙【仙】 发表于 2014-1-5 12:10:35

                想必大家基本都有使用 Rulzy 大哥的webmgr 。也就是网页管理后台。如果使用了,那么就相当于提供了一个php平
       台。我们只需要降php文件放在该目录下面即可!下面贴出PHP源代码使用介绍:<?php
               //服务器名字
      $Server= "服务器 ";
            //csstats.dat位置
      $DatPatd= "E:\HLDS\cstrike\addons\amxmodx\data\csstats.dat";
            //显示数量
      $Top=50;
               ?>$DatPatd 这里是大家要编辑的路径 指引向大家的 csstats.dat文件
      PS:大家最好把路径都改成全英文的。
            路径修改好以后,将php文件保存名为 TOP.php 放到大家的php 支持站点下面
      这里要求PHP站点与HLDS同属一个机器。
      使用Rulzy WebMgr的朋友放到webmgr\www\cn\ 目录下面 (相信大家都是使用CN的吧)
            
            然后利用IE检测一下 是否可用。
      在IE地址栏输入 后台管理地址大概如 :HTTP://127.0.0.1/cn/index.php
            将index.php 改成 TOP.php   看看读取是否正常。不正常根据报错解决。

      当一切进行顺利。是不是觉得上面所说很简单。其实下面更简单。

      服务器玩家想要查询到改网页 只需要 指引到该网页即可。
      那么插件代码如下:#include <amxmodx>
#include <amxmisc>
#define PLUGIN_NAME      "pHpTopSHow"
#define PLUGIN_VERSION   "1.0"
#define PLUGIN_AUTHOR      "idiot/kyo"
new const LoadUrl[] = "http://127.0.0.1:27015/cn/top.php"   // 修改为你的地址、
public plugin_init()
{
                register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR);
                register_clcmd("say /phptop", "ShowTop")
               
}

public ShowTop(id)
{
       
        show_motd(id, LoadUrl,"TOP")
        return PLUGIN_CONTINUE
}插件功能仅是使用一个MOTD静态导向网站链接
好吧,说得有点累。有点啰嗦,THat all。下楼放 压缩包文件

c12g34k56 发表于 2014-1-5 12:14:42

哎呀。我来了

刘半仙【仙】 发表于 2014-1-5 12:14:48

这楼放PHP 文件<?php

//服务器名字
$Server= "服务器 ";

//csstats.dat位置
$DatPatd= "E:\HLDS\cstrike\addons\amxmodx\data\csstats.dat";
//显示数量
$Top=50;

?>

<head>
<meta   http-equiv= "Content-Type "   content= "text/html;   charset=gb2312 ">
<link href="ms.css" rel="stylesheet" type="text/css">
<title><?echo $Server?>页实时排行</title>
<style>
body{
font-family:Arial,sans-serif;
font-size:12px;color:#FFCC99;
background-color:#000000;margin-left:8px;
margin-top:3px }
.header{background-color:#9C0000;
}
td{
font-size:14px
}
th{
font-size:14px
}
</style>
</head>
<body>
<center>
<h1 align="center" style="color:#FF0"><?echo   $Server?>实时排行</p>
<h3 align="right">TIP:键盘输入快捷键(CTRL+F)输入自己的ID就可以查到自己的排名</p>
<hr>
<table>
<tr class= trhrank>
<th align= "center">排名</th>
<th align= "center">名字</th>
<th align= "center">杀人数</th>
<th align= "center">爆头(%)</th>
<th align= "center">死</th>
<th align= "center">命中/子弹数(命中率)</th>
<th align= "center">积分</th>
</tr>
<?php
function   bin2int($bin)
{
        return   ord($bin)+ord($bin)*256;
}
$fp=fopen($DatPatd, "rb");
if(bin2int(fread($fp,2))!=11)   exit( "请安装CSStats! ");   //amxx1.0

for($i=1;$i <=$Top;$i++){
        if(!$namelen=bin2int(fread($fp,2)))   break;//WORD名字长度(包括\0)
        $bgcolor=($i%2)?"#333333":"#666666";
        $player=fread($fp,$namelen-1);
        fseek($fp,$namelen+3,SEEK_CUR);

        $a=unpack( "V*stats",fread($fp,80));   //amxx1.0

        echo    "<tr bgcolor=$bgcolor><td > $i </td><td style='word-break: break-all'> $player </td><td>".$a["stats4"]."</td><td> ";
        if($a["stats4"]==0){
                echo "0/0(0%)";
        }
        else
        {
                if($a["stats7"]==0){
                echo "0/".$a["stats4"]."(0%)";
        }
        else{
                echo $a["stats7"]."/".$a["stats4"]."(".round($a["stats7"]/$a["stats4"]*100,1)."%)";
        }
        }
        echo "</td><td>".$a["stats3"]."<td>";


        if($a["stats5"]==0){
                echo "0/0(0%)";
        }
        else
        {
                if($a["stats6"]==0){
                        echo "0/".$a["stats5"]."(0%)";
                }
                else{
                        echo $a["stats6"]."/".$a["stats5"]."(".round($a["stats6"]/$a["stats5"]*100,1)."%)";
                }
        }
        echo "</td><td>".($a["stats4"]+$a["stats7"]*2-$a["stats3"])."</td></tr>";
}
fclose($fp);
?>
</table>
<hr>
<font size=2 color=white>大爱CS&nbsp;&nbsp;</font><br>
<center>
</body>
</html>DT如此不易,俺就不弄啥 回复可见啊,购买主题什么的了! 大家多来发发帖!还是有那么一点人再玩CS的!

c12g34k56 发表于 2014-1-5 12:19:29

c12g34k56 发表于 2014-1-5 12:14 static/image/common/back.gif
哎呀。我来了

看书实在太无聊了刷了下网页有东西   忍不住进来了

⑦O逅の崋イ孑 发表于 2014-1-5 12:31:53

这么快就到6楼了:lol

蓝染_惣右介 发表于 2014-1-5 13:00:17

撸啊撸~~~~激情撸过~

99fps 发表于 2014-1-6 00:01:44

虽然看不懂,但还勉强喜欢。

hackroad 发表于 2014-1-6 16:28:37

来张图呗:D
无图无真相啊

刘半仙【仙】 发表于 2014-1-6 16:42:31

刘半仙【仙】 发表于 2014-1-5 12:14 static/image/common/back.gif
这楼放PHP 文件DT如此不易,俺就不弄啥 回复可见啊,购买主题什么的了! 大家多来发发帖!还是有那么一点人 ...

<? ?> 这是php老用法
php读取文件 是在 csdn等地方找到的 ! 没有规范写法 <?php ?>
大家谁想规范!可自行修改!
页: [1] 2
查看完整版本: 【2014福利】庆祝DT还活着!混战服福利来了!