搜索
查看: 7616|回复: 17

[AMXX 带源码] 【2014福利】庆祝DT还活着!混战服福利来了!

[复制链接]
发表于 2014-1-5 11:51:19 | 显示全部楼层 |阅读模式 来自 河北保定
本帖最后由 刘半仙【仙】 于 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源代码使用介绍:
  1. <?php
  2.                //服务器名字
  3.         $Server= "服务器 ";
  4.               //csstats.dat位置
  5.         $DatPatd= "E:\HLDS\cstrike\addons\amxmodx\data\csstats.dat";
  6.               //显示数量
  7.         $Top=50;
  8.                ?>
复制代码
$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   看看读取是否正常。不正常根据报错解决。

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

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

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

使用道具 举报

发表于 2014-1-5 12:14:42 | 显示全部楼层 来自 天津
哎呀。我来了

点评

你真- -讨厌。我卡了一下!! 3楼我放PHP的!  发表于 2014-1-5 12:16
回复

使用道具 举报

 楼主| 发表于 2014-1-5 12:14:48 | 显示全部楼层 来自 河北保定
这楼放PHP 文件
  1. <?php

  2. //服务器名字
  3. $Server= "服务器 ";

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

  8. ?>

  9. <head>
  10. <meta   http-equiv= "Content-Type "   content= "text/html;   charset=gb2312 ">
  11. <link href="ms.css" rel="stylesheet" type="text/css">
  12. <title><?echo $Server?>页实时排行</title>
  13. <style>
  14. body{
  15. font-family:Arial,sans-serif;
  16. font-size:12px;color:#FFCC99;
  17. background-color:#000000;margin-left:8px;
  18. margin-top:3px }
  19. .header{background-color:#9C0000;
  20. }
  21. td{
  22. font-size:14px
  23. }
  24. th{
  25. font-size:14px
  26. }
  27. </style>
  28. </head>
  29. <body>
  30. <center>
  31. <h1 align="center" style="color:#FF0"><?echo   $Server?>实时排行</p>
  32. <h3 align="right">TIP:键盘输入快捷键(CTRL+F)输入自己的ID就可以查到自己的排名</p>
  33. <hr>
  34. <table>
  35. <tr class= trhrank>
  36. <th align= "center">排名</th>
  37. <th align= "center">名字</th>
  38. <th align= "center">杀人数</th>
  39. <th align= "center">爆头(%)</th>
  40. <th align= "center">死</th>
  41. <th align= "center">命中/子弹数(命中率)</th>
  42. <th align= "center">积分</th>
  43. </tr>
  44. <?php
  45. function   bin2int($bin)
  46. {
  47.         return   ord($bin)+ord($bin[1])*256;
  48. }
  49. $fp=fopen($DatPatd, "rb");
  50. if(bin2int(fread($fp,2))!=11)   exit( "请安装CSStats! ");   //amxx1.0

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

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

  57.         echo    "<tr bgcolor=$bgcolor><td > $i </td><td style='word-break: break-all'> $player </td><td>".$a["stats4"]."</td><td> ";
  58.         if($a["stats4"]==0){
  59.                 echo "0/0(0%)";
  60.         }
  61.         else
  62.         {
  63.                 if($a["stats7"]==0){
  64.                 echo "0/".$a["stats4"]."(0%)";
  65.         }
  66.         else{
  67.                 echo $a["stats7"]."/".$a["stats4"]."(".round($a["stats7"]/$a["stats4"]*100,1)."%)";
  68.         }
  69.         }
  70.         echo "</td><td>".$a["stats3"]."<td>";


  71.         if($a["stats5"]==0){
  72.                 echo "0/0(0%)";
  73.         }
  74.         else
  75.         {
  76.                 if($a["stats6"]==0){
  77.                         echo "0/".$a["stats5"]."(0%)";
  78.                 }
  79.                 else{
  80.                         echo $a["stats6"]."/".$a["stats5"]."(".round($a["stats6"]/$a["stats5"]*100,1)."%)";
  81.                 }
  82.         }
  83.         echo "</td><td>".($a["stats4"]+$a["stats7"]*2-$a["stats3"])."</td></tr>";
  84. }
  85. fclose($fp);
  86. ?>
  87. </table>
  88. <hr>
  89. <font size=2 color=white>大爱CS&nbsp;&nbsp;</font><br>
  90. <center>
  91. </body>
  92. </html>
复制代码
DT如此不易,俺就不弄啥 回复可见啊,购买主题什么的了! 大家多来发发帖!还是有那么一点人再玩CS的!

点评

我是真的用不了 显示一大堆乱码  发表于 2014-1-6 16:43
给你纠正点小错误,第16行与第35行“<?echo $Server?>” 应写为“<? php echo $Server ?>”  发表于 2014-1-6 10:17
回复

使用道具 举报

发表于 2014-1-5 12:19:29 | 显示全部楼层 来自 天津
c12g34k56 发表于 2014-1-5 12:14
哎呀。我来了

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

点评

你妹!头晕晕的!语音有点混乱!也不想放压缩包了!能看懂的怎么都懂!看不懂的,你咋说他还是不明白  发表于 2014-1-5 12:45
回复

使用道具 举报

发表于 2014-1-5 12:31:53 | 显示全部楼层 来自 陕西西安
这么快就到6楼了:lol

点评

3楼是俺的!  发表于 2014-1-5 12:57
回复

使用道具 举报

发表于 2014-1-5 13:00:17 | 显示全部楼层 来自 广东东莞
撸啊撸~~~~激情撸过~
回复

使用道具 举报

发表于 2014-1-6 00:01:44 | 显示全部楼层 来自 内蒙古
虽然看不懂,但还勉强喜欢。
回复

使用道具 举报

发表于 2014-1-6 16:28:37 | 显示全部楼层 来自 上海
来张图呗:D
无图无真相啊

点评

很懒 所以不想弄图! 测试过 可用!  发表于 2014-1-6 16:40
回复

使用道具 举报

 楼主| 发表于 2014-1-6 16:42:31 | 显示全部楼层 来自 河北保定
刘半仙【仙】 发表于 2014-1-5 12:14
这楼放PHP 文件DT如此不易,俺就不弄啥 回复可见啊,购买主题什么的了! 大家多来发发帖!还是有那么一点人 ...

<? ?> 这是php老用法  
php读取文件 是在 csdn等地方找到的 ! 没有规范写法 <?php ?>
大家谁想规范!可自行修改!
回复

使用道具 举报

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

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