搜索
楼主: mwy5ym

[AMXX 无源码] 网页格式统计插件MyStats 3.6e Released !!!

[复制链接]
发表于 2009-6-19 15:02:51 | 显示全部楼层 来自 中国–广东–佛山–顺德区
分开2台机弄 mystats.exe貌似获取不了CS服务器里面数据呢
回复

使用道具 举报

发表于 2009-6-19 15:16:02 | 显示全部楼层 来自 中国–云南–大理白族自治州–南涧彝族自治县
楼主 !刚用两天没什么的就PING高点!现在用到第6天左右了目前有3000多个玩家数据已经卡到不行了,每各一会就会卡住不动1~2秒啊  ,怎么办?进程的内存占用到1000多M哦!
回复

使用道具 举报

发表于 2009-6-19 17:31:56 | 显示全部楼层 来自 中国–广东–深圳
171# eason39

改成读acess数据库就可以了。
等下试下看改下能不能用。
不过楼主如果放出插件的相关部分源代码的话,或者留着接口,插件效率会更高。
回复

使用道具 举报

发表于 2009-6-19 21:31:02 | 显示全部楼层 来自 中国–江苏–苏州
xiang yao ! ke xi mei D bi
回复

使用道具 举报

 楼主| 发表于 2009-6-19 22:22:12 | 显示全部楼层 来自 中国–浙江–杭州
171# eason39

改成读acess数据库就可以了。
等下试下看改下能不能用。
不过楼主如果放出插件的相关部分源代码的话,或者留着接口,插件效率会更高。 ...
Cr@zyTreE 发表于 2009-6-19 17:31


目前主要的问题在于更新得分和排名。
现在我采用的方式是,
取出(SELECT)数据库所有的数据(很夸张的做法)并计算得分(按得分排列),然后保存(UPDATE)到Client表的Score项,同时保存Rank
这么做明显会造成内存爆掉。都怪我当初数据库没学好啊~
谁能帮我解决这个问题的话,就不卡了。

表的设计如下(带下划线的为主键)
BombStats(Md5,Planting,Planted,Explode,Defusing,Defused)
其中Md5为文本,其余均为数字
Client(NickName,Password,Md5,LastIPAddress,Rank,LastRank,Score,OnlineTime,RegisterDateTime,LastOnlineDateTime)
其中
NickName,Password,Md5,LastIPAddress为文本
Rank,LastRank,Score为数字
RegisterDateTime,LastOnlineDateTime为日期/时间
RoundStats(Md5,T,CT,S,WinT,WinCT,FirstKill,FirstDeath,LastKill,LastDeath)
其中Md5为32位文本,其余均为数字
WeaponStats(Md5,WeaponID,Kill,Death,HeadShot,HeadShoted,TeamKill,Shot,Hit,Damage)
其中Md5为32位文本,其余均为数字

因为是根据得分Score计算排名的,所以要先计算得分
通过这个select查询可以查出得分
SELECT
C.Md5 AS Md5,
(Sum(WS.Kill)*1-Sum(WS.Death)*0.2+Sum(WS.HeadShot)*1+RS.FirstKill*3+BS.Explode*3+BS.Defused*5+C.OnlineTime/1000) AS Score
FROM Client AS C, WeaponStats AS WS, RoundStats AS RS, BombStats AS BS
GROUP BY C.NickName, RS.FirstKill, BS.Explode, BS.Defused, C.OnlineTime, C.Md5, WS.Md5, RS.Md5, BS.Md5
HAVING C.Md5=WS.Md5 AND C.Md5=RS.Md5 AND C.Md5=BS.Md5
ORDER BY (Sum(WS.Kill)*1-Sum(WS.Death)*0.2+Sum(WS.HeadShot)*1+RS.FirstKill*3+BS.Explode*3+BS.Defused*5+C.OnlineTime/1000) DESC;

我的需求是
因为数据量很大,所以我希望能有最快的算法可以
1.计算得分并update到Client表里的Score
2.根据得分由高到低进行排名,并update到Client表里的Rank

因为我是通过ADO模块对access文件进行操作的,
所以希望能分别用1句update语句实现(或者告诉我怎么在ADO模块里面实现就可以了)
回复

使用道具 举报

发表于 2009-6-20 08:51:14 | 显示全部楼层 来自 中国–广东–佛山
佩服啊,高手
回复

使用道具 举报

发表于 2009-6-20 12:31:11 | 显示全部楼层 来自 中国–湖北–武汉
这个系统还有个缺陷    是以MD5为标识统计数据的  

因每台电脑的 MD5都不一样   那么玩家 换了电脑再游戏呵呵   

即使用了原来的ID 成绩都得重新开始计算了
回复

使用道具 举报

发表于 2009-6-20 12:41:38 | 显示全部楼层 来自 中国–安徽–合肥
期待```越来越完善```
回复

使用道具 举报

 楼主| 发表于 2009-6-20 18:04:49 | 显示全部楼层 来自 中国–浙江–杭州
这个系统还有个缺陷    是以MD5为标识统计数据的  

因每台电脑的 MD5都不一样   那么玩家 换了电脑再游戏呵呵   

即使用了原来的ID 成绩都得重新开始计算了 ...
qtcathy 发表于 2009-6-20 12:31

用Md5是为了避开玩家ID中乱七八糟的字符可能会引起的错误。
Md5是根据玩家ID计算的,只要ID不变,Md5就不变。

关键问题在于185楼
回复

使用道具 举报

发表于 2009-6-21 04:12:58 | 显示全部楼层 来自 中国–浙江–杭州–余杭区
我其实看到现在都不知道下载哪个

太多了。。 怎么下?
回复

使用道具 举报

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

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