zhuangxl
发表于 2009-6-19 15:02:51
分开2台机弄 mystats.exe貌似获取不了CS服务器里面数据呢
253030111
发表于 2009-6-19 15:16:02
楼主 !刚用两天没什么的就PING高点!现在用到第6天左右了目前有3000多个玩家数据已经卡到不行了,每各一会就会卡住不动1~2秒啊,怎么办?进程的内存占用到1000多M哦!
Cr@zyTreE
发表于 2009-6-19 17:31:56
171# eason39
改成读acess数据库就可以了。
等下试下看改下能不能用。
不过楼主如果放出插件的相关部分源代码的话,或者留着接口,插件效率会更高。
sz77star
发表于 2009-6-19 21:31:02
xiang yao ! ke xi mei D bi
mwy5ym
发表于 2009-6-19 22:22:12
171# eason39
改成读acess数据库就可以了。
等下试下看改下能不能用。
不过楼主如果放出插件的相关部分源代码的话,或者留着接口,插件效率会更高。 ...
Cr@zyTreE 发表于 2009-6-19 17:31 http://www.dt-club.net/forum/images/common/back.gif
目前主要的问题在于更新得分和排名。
现在我采用的方式是,
取出(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模块里面实现就可以了)
September
发表于 2009-6-20 08:51:14
佩服啊,高手
qtcathy
发表于 2009-6-20 12:31:11
这个系统还有个缺陷 是以MD5为标识统计数据的
因每台电脑的 MD5都不一样 那么玩家 换了电脑再游戏呵呵
即使用了原来的ID 成绩都得重新开始计算了
Hebe
发表于 2009-6-20 12:41:38
期待```越来越完善```
mwy5ym
发表于 2009-6-20 18:04:49
这个系统还有个缺陷 是以MD5为标识统计数据的
因每台电脑的 MD5都不一样 那么玩家 换了电脑再游戏呵呵
即使用了原来的ID 成绩都得重新开始计算了 ...
qtcathy 发表于 2009-6-20 12:31 http://www.dt-club.net/forum/images/common/back.gif
用Md5是为了避开玩家ID中乱七八糟的字符可能会引起的错误。
Md5是根据玩家ID计算的,只要ID不变,Md5就不变。
关键问题在于185楼
lanmao
发表于 2009-6-21 04:12:58
我其实看到现在都不知道下载哪个
太多了。。 怎么下?