CSMod反恐精英社区|提供CSPROMOD最新版本测试服务器

 找回密码
 注册

QQ登录

只需一步,快速开始

CSP1.09|CSP1.10|综合讨论 cspromod新闻|cspromod下载。

竞技外设中心 鼠标综合中心 - 装备自曝区

服务器插件技术区 SourceMod插件模块转载。

服务器OP投诉 AMXX模块插件 - CS1.6交流 - CSGO交流

查看: 24335|回复: 61

[无源码] My Stats CS数据统计插件2010-11-04更新

  [复制链接]
Cool.Cat 发表于 2010-11-7 12:35:21 | 显示全部楼层 |阅读模式
==============================插件效果==============================
0.jpg
1.jpg
2.jpg
3.jpg
4.jpg
5.jpg
6.jpg
7.jpg
8.jpg
==============================插件功能==============================
插件包括2个文件(请务必同时使用)
MyStats(主插件)
MyStatsScore(附源码和inc文件,用来计算得分,排名与此相关)


当前的技巧得分计算公式和豆客的一样
(可以自定义,请修改插件MyStatsScore内的calc_score函数)
每杀一人 +1分
被杀一次 -0.2分
暴头一次 +1分
最先杀敌 +3分
埋包爆炸成功一次 +3分
拆包成功一次 +5分
在线时间每小时 +3.6分(每秒 0.001分)

==============================插件安装==============================
【MyStats.cfg】请放到addons/amxmodx/configs目录下
【MyStats.txt】请放到addons/amxmodx/data/lang目录下
【MyStats.amxx】请放到addons/amxmodx/plugins目录下,并在plugins.ini中加载
【MyStatsScore.amxx】请放到addons/amxmodx/plugins目录下,并在plugins.ini中加载
【MyStatsScore.sma】请放到addons/amxmodx/scripting目录下
【ms_score.inc】请放到addons/amxmodx/scripting/include目录下
【MyStats】文件夹的位置可以随意放置,推荐放到addons目录下
需要其他语言支持的朋友请自行更改MyStats.txt文件和asp文件!
ASP文件里面有个限制玩家名字显示长度的函数,请根据自己的需要进行更改

我的测试环境:
Microsoft Windows XP Professional 5.1.2600 Service Pack 3 内部版本号 2600
amxmodx 1.8.1.3746 下载地址 在metamod里加载
metamod 1.19.0.0 下载地址 在liblist.gam里加载
mysql-essential-5.1.51-win32下载地址
mysql-connector-odbc-5.1.7下载地址<---asp连接mysql数据库必须
IIS 5.1 下载地址<---使用其他web服务器软件的可以跳过

配置步骤A:
安装mysql和odbc连接器
首先安装mysql-essential-5.1.51-win32.msi
9.jpg
10.jpg
11.jpg
12.jpg
13.jpg
14.jpg
15.jpg
16.jpg
17.jpg
18.jpg
19.jpg
20.jpg
21.jpg
22.jpg
23.jpg
24.jpg
密码请根据自己喜好设置(推荐cser)
设置完后请修改MyStats.cfg里的ms_db_pass,后面也会用到

25.jpg
26.jpg
27.jpg
请手动建立数据库(4.0c以上版本可以跳过下2图步骤)
28.jpg
29.jpg
请自行安装mysql-connector-odbc-5.1.7-win32.msi
然后打开控制面板-管理工具-ODBC数据源-添加

30.jpg
31.jpg
32.jpg
配置步骤B:
以下为XP环境下web服务器的配置,达人可以跳过
如果机子里面没有自带IIS,请自行下载并安装好,安装完毕后:
打开【控制面板】-【管理工具】-【Internet 信息服务】
逐层展开到【默认网站】右键-
【新建】-【虚拟目录】-【下一步】-
【别名:MyStats】-【下一步】-
【目录:选择[MyStats]文件夹】-【下一步】-【下一步】-【完成】
如果游戏中页面打开出错,可以尝试这么设置,但不推荐
如果【MyStats】在NTFS格式的磁盘下
{
打开【文件夹选项】(随便打开一个文件夹,点工具就看到了)
切换到【查看】选项卡下,去掉【使用简单文件共享(推荐)】前面的勾,点应用,点确定
右键【MyStats】文件夹-【属性】
切换到【安全】选项卡下,查看是否有everyone用户,
没有的话
{【添加】-【高级】-【立即查找】-找到并选中左边的【everyone】-【确定】-【确定】}
把everyone的权限里面【完全控制】勾上-【应用】-【确定】
}
==============================插件配置==============================


查看MyStats.cfg文件,插件将自动加载此文件

  1. //设置是否显示提示信息
  2. ms_msg_flag "1"
  3. //设置提示信息显示时间间隔(单位:分钟)
  4. ms_msg_delay "3"
  5. //设置数据保存的最低玩家数要求,为了防止刷分
  6. ms_min_count "6"
  7. //设置数据同步队列控制参数
  8. // 每当回合结束时,
  9. // 如果当前队列内的mysql请求数(一般0)不超过ms_max_queue个,才同步数据到数据库
  10. // 设置这个参数可以有效防止服务器内的mysql请求积累过多而导致服务器爆掉的问题
  11. // PS:任何一次完整的数据同步操作(300个mysql请求左右)都可以修正服务器内的数据
  12. // 这个参数只是通过判断当前访问mysql的繁忙度来改变同步的频率
  13. ms_max_queue "100"
  14. //设置从服务器检查玩家最新排名的时间间隔,如果设置低于60.0,则会自动修改为60.0
  15. ms_check_delay "180.0"

  16. //设置升级特效(设置为需要特效的和)
  17. // 1 屏幕闪烁
  18. // 2 全身发光
  19. // 4 消息提示
  20. // 8 声音提示
  21. // 16 满生命
  22. // 32 满护甲
  23. // 64 满弹夹
  24. // 128 满弹药
  25. // 256 无敌3秒
  26. ms_levelup_flag "511"

  27. //设置连接mysql数据库的相关信息
  28. ms_db_host "127.0.0.1"
  29. ms_db_user "root"
  30. ms_db_pass "cser"
  31. ms_db_name "cstrike"
  32. //设置是否在断开状态下自动尝试连接至数据库,尝试连续3次失败后会自动取消
  33. ms_db_auto "1"

  34. //设置观察玩家时显示的HUD信息
  35. //设置是否显示信息
  36. ms_hud_s_flag "1"
  37. //设置战况信息显示类型0普通,1精简
  38. ms_hud_s_style "0"
  39. //设置是否显示装备和生命信息
  40. ms_hud_s_fight "1"
  41. //设置显示信息的颜色rgb(0~255 0~255 0~255),请务必加上引号!!!
  42. ms_hud_s_color "0 255 0"
  43. //设置显示信息的坐标x,即屏幕横向坐标(0.0~1.0),-1.0表示居中
  44. ms_hud_s_x "0.5"
  45. //设置显示信息的坐标y,即屏幕纵向坐标(0.0~1.0),-1.0表示居中
  46. ms_hud_s_y "0.5"
  47. //设置显示信息的类型0无效果,1闪烁,2打字
  48. ms_hud_s_type "0"
  49. //设置显示信息的停留时间
  50. ms_hud_s_time "6.0"
  51. //设置显示信息的频道(1~4),请不要设置成其他数值!!!
  52. ms_hud_s_channel "3"

  53. //设置玩家的HUD提示信息
  54. //设置显示信息的颜色rgb(0~255 0~255 0~255),请务必加上引号!!!
  55. ms_hud_p_color "0 255 0"
  56. //设置显示信息的坐标x,即屏幕横向坐标(0.0~1.0),-1.0表示居中
  57. ms_hud_p_x "0.0"
  58. //设置显示信息的坐标y,即屏幕纵向坐标(0.0~1.0),-1.0表示居中
  59. ms_hud_p_y "0.9"
  60. //设置显示信息的类型0无效果,1闪烁,2打字
  61. ms_hud_p_type "2"
  62. //设置显示信息的停留时间
  63. ms_hud_p_time "6.0"
  64. //设置显示信息的频道(1~4),请不要设置成其他数值!!!
  65. ms_hud_p_channel "4"

  66. //以下命令参数请不要加引号!!!

  67. //获取服务器地址(如果使用路由器的话,只能获取内网地址)
  68. //ms_get_pageip
  69. //设置页面地址参数,仅用来替换URL中@pageip文本,非必须
  70. ms_set_pageip 127.0.0.1
  71. //设置页面端口参数,仅用来替换URL中@pageport文本,非必须
  72. ms_set_pageport 80
  73. //设置排行榜页面地址,请确保可以在外网打开
  74. ms_set_topurl http://@pageip:@pageport/MyStats/top.asp
  75. //设置个人信息页面地址,请确保可以在外网打开
  76. ms_set_statsurl http://@pageip:@pageport/MyStats/stats.asp
  77. //设置主页地址,请确保可以在外网打开
  78. ms_set_indexurl http://@pageip:@pageport/MyStats/index.asp

  79. //设置排行榜每页显示的玩家数量
  80. ms_set_topnumber 15
  81. //设置服务器上的motd.txt文件,让玩家进入服务器时显示主页
  82. ms_set_linkindextomotd
  83. //在服务器上显示设置信息
  84. //ms_set_show

  85. //设置连接mysql数据库
  86. ms_set_connectdatabase
  87. //设置断开并重新连接mysql数据库
  88. //ms_set_reconnectdatabase
  89. //设置断开mysql数据库
  90. //ms_set_disconnectdatabase
复制代码

==============================插件更新==============================
4.2a:
    添加支持自动中文ID,采用老友记的fakemeta模块
    请勿和其他使用中文ID的插件混用!
    原来采用破解dll方式支持中文ID的服务器请换回原版dll文件!
    升级到此版本前必须执行以下操作(重要)!
    (命令中的cstrike请换成cfg文件中相应的ms_db_name设置)
    {
     打开MySQL Command Line Client,输入密码后执行
     use cstrike分号回车
     update client set NickNameC=NickName分号回车
     create unique index NickName on client(NickName)分号回车
     create unique index NickNameC on client(NickNameC)分号回车
    }或者清空数据库drop database cstrike分号回车(总觉得这个方式比较彻底)
    添加密码验证,如果密码错误则被服务器kick,密码设置setinfo "ms_pw" "password"
    添加玩家命令say *password 设置玩家密码,设置完后,下次登录就必须输入密码
    添加玩家命令say #中文昵称 设置玩家中文昵称,设置完后,下次登录会自动改名
    添加玩家命令say /index打开主页
    添加命令ms_set_indexurl设置主页地址
    修改命令ms_set_linktoptomotd为ms_set_linkindextomotd
    修正玩家升级后不能扔雷的错误
4.2 :
    添加玩家命令say !签名 设置玩家签名
    修改数据库client表
4.1h:
    添加玩家信息提示,默认为左下角,自定义请修改MyStats.cfg
    添加升级特效ms_levelup_flag(详情见MyStats.cfg)
    修正第一杀敌和第一阵亡数据获取的错误
    MyStats.txt里面可以设置个别信息,如果以-开头则不显示,例如
        CLIENT_LEAVE0 = -!Y[!G!LNAME!Y]!T!NAME!Y离开了服务器...
        CLIENT_LEAVE1 = -!Y[!G!LNAME!Y]!T!NAME!Y离开了服务器...
4.1g:
    添加多语言支持,可以自定义多项信息
    请将MyStats.txt放到addons/amxmodx/data/lang目录下
4.1f:
    增加玩家命令say /ms等同于say /mystats
    增加玩家命令say /hisstats查看正在观察的玩家的信息
    增加玩家命令say /hs等同于say /hisstats
    修正技巧得分的计算错误
4.1e:
    添加多个HUD控制参数(详情见MyStats.cfg)
    修改参数名称ms_hud_flag_s为ms_hud_s_flag
4.1d:
    添加多个数据库控制参数(详情见MyStats.cfg)
    添加数据同步队列控制参数ms_max_queue
    添加检查玩家排名数据的时间间隔参数ms_check_delay
    添加观察玩家时HUD信息显示的开关标记ms_hud_flag_s
    修正后台数据同步速度控制,防止数据积累过多,无法正常同步
    如果控制台出现overflow之类的错误请尝试在服务器参数文件(一般为server.cfg)中加入一行FSB_ALLOWOVERFLOW
    如果错误依然存在,请尝试关闭观察者的HUD信息(ms_hud_flag_s 0)
4.1c:
    添加观察者可以看到玩家的信息
    添加断开状态下自动尝试连接至数据库如果连续3次失败,则自动取消自动尝试连接
    修正玩家改名引起的数据不保存的错误
    修正忽略玩家名字中的"[NO-sXe-I] ",兼容sXe
4.1b:
    添加标记是否在断开状态下自动尝试连接至数据库ms_db_auto
4.1a:
    添加数据保存的最低玩家数要求ms_min_count,只有玩家数满足该要求才记录数据,防止刷分
4.1 :
    添加玩家进出服务器提示,带玩家地址显示,需模块li_geoip支持
    服务器上实时存在玩家的所有数据,每回合结束时再同步到数据库
    每次数据更新都是保存历史以来的所有数据,即使改变Score计算公式也会重新计算所有数据
    PS:
        模块li_geoip使用说明
       1加入文件
        addons/amxmodx/scripting/include  加入文件 li_geoip.inc
        addons/amxmodx/modules            加入文件 li_geoip_amxx.dll
        addons/amxmodx/data               加入文件 myip.txt,QQWry.dat(自行下载)
       2修改文件
        addons/amxmodx/configs/modules.ini加入一行li_geoip
        addons/amxmodx/data/myip.txt(内有说明)
4.0d:
    添加支持中文ID
4.0c:
    添加自动创建数据库
    添加支持CS1.5数据记录,但是由于CS1.5的motd不支持网页浏览,所以不能在游戏中浏览记录
    修正玩家ID含有单引号引起的错误
4.0 :
    只能手动创建数据库,但是可以自动创建表
    服务器上存在玩家当前回合的数据,每回合结束时更新到数据库
    数据更新是积累式的,缺点就是改变Score计算公式后以前的分数不会重新计算
    最大的缺点是服务器上不存在玩家的所有数据

免金币下载地址

游客,如果您要查看本帖隐藏内容请回复



后记:
    插件灵感:一次偶然的机会,在DT上看到有人用网页表格的形式显示amx自带的csstats.dat的数据。当时觉得很整齐很直观。有幸拿到源码后发现,插件是把一个包含HTML页面信息的字符串,通过show_motd这个函数展现给玩家的,这样就实现了相当在玩家界面上打开一个页面的效果。

    插件1.x系列:当时的名字是"网页格式统计排行插件",其实数据统计部分用的是amx自带的statsx统计插件,然后加上MS插件里的页面显示部分。为了页面能够美观些,用了一些CSS样式表。

    插件2.x系列:发现amx自带的statsx里面的数据种类不够丰富,打算自己设计数据库。当时最先想到的是使用微软Office自带的access。和csstats.dat一样,单文件保存数据,简单。然后再加上DT版主Rulzy的ADO模块,于是MS插件就有了数据统计的功能。但是有一个瓶颈,由于数据读写频繁,再加上ADO模块对数据的读写是阻塞的,于是。。。很卡。

    插件3.x系列:为了解决卡的问题,对数据的读写必须是非阻塞的。在无意间发现amx自带的sockets模块。于是就想能不能把对数据的操作交个另一个程序来搞定。后来就用Delphi写了一个小程序,通过socket和MS插件进行通信(可以支持多CS服务器使用一个数据库哦),让MS插件把对数据的记录信息通过报文发给那个小程序,由那个小程序进行数据库的写操作。由于学艺不精,写的小程序在处理socket通信时时有丢包的现象。另外还遇到一个问题,更新排名。当时是这么做的,先从数据库取出所有玩家的ID和分数,按分数排序,逐个赋值排名上去。一旦玩家数据一多,这个操作将会十分恐怖。。。测试了一下6000个玩家,要操作15秒左右。。。

    插件4.x系列:用了mysql里存储数据。选择这个的原因有两个,一是amx带有支持mysql的模块,其中支持及时操作mysql数据库,以及支持在后台操作数据库(不卡游戏);二是mysql可以十分方便地更新排名,只要一行简单的代码SET @t=0;UPDATE client SET Rank=(@t:=@t+1) ORDER BY Score DESC;这样就完成了。当前4.x系列还在不断更新中,大家要多多支持哦~
33.jpg



MyStats4[1].2.rar

774.13 KB, 下载次数: 262, 下载积分: 金钱 -2

MyStats4.2a.rar

1.09 MB, 下载次数: 262, 下载积分: 金钱 -2

MyStats4.2d.rar

1.09 MB, 下载次数: 333, 下载积分: 金钱 -2

回复

使用道具 举报

CooKy 发表于 2010-11-7 12:48:43 | 显示全部楼层
回复 支持 反对

使用道具 举报

马尔代夫 发表于 2010-11-8 00:32:16 | 显示全部楼层
不错哟。
回复 支持 反对

使用道具 举报

blue1ce 发表于 2010-11-9 16:08:22 | 显示全部楼层
占个位置 ····
回复 支持 反对

使用道具 举报

fz12 发表于 2010-11-10 02:45:24 | 显示全部楼层
来晚了一步呗人抢了
回复 支持 反对

使用道具 举报

fz12 发表于 2010-11-10 10:36:16 | 显示全部楼层
楼主为什么我的不显示,排行网页呢,请楼主帮我解决一下谢谢
回复 支持 反对

使用道具 举报

苏格兰子爵 发表于 2010-11-12 12:47:07 | 显示全部楼层
亲爱的楼主同志,小弟我下载之后不知道如何安装,貌似安装比较麻烦,想让你亲自传授安装步骤。可以Q聊吗
回复 支持 反对

使用道具 举报

x1gua 发表于 2010-11-14 21:46:35 | 显示全部楼层
正在找呢,谢谢楼主了。
回复 支持 反对

使用道具 举报

x1gua 发表于 2010-11-15 05:39:45 | 显示全部楼层
安装完毕,唯独有个地方搞不太明白, 用户设置密码以后就怎么都登陆不了了.
例如: 用户ID是ABC,密码为123456
登陆时setinfo "ms_pw" "123456" 提示密码错误.本人新手,不太会,还麻烦楼主指点一下.小白不好当啊!
回复 支持 反对

使用道具 举报

l976753980 发表于 2010-11-16 21:44:01 | 显示全部楼层
My Stats CS数据统计插件 {:csmod11:}
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Powered by Discuz!|小黑屋|网站地图|CSMod.com ( 粤ICP备11059827号 )

GMT+8, 2019-8-22 10:39 , Processed in 2.158664 second(s), 8 queries , Redis On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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