作者laechan (小太保)
看板mud_sanc
标题Re: [wizs] 系统撰写概要
时间Wed Feb 4 11:36:43 2009
再来讲个简单的系统,例如说某房间,它会定期纪录线上玩家
在各区域(依目录分)的数量,将之统计起来,日後方便分析哪
些区域是较热门的点,以及其它资讯之类的..
从这里开始,restore_object/save_object 就不再是重点,因
为这个只要会用就好了,重点开始变成「你要怎麽存资料」。
一般来说可以这样子设定要存的资料..
mapping count_data=([
"/u/l/laechan/area/felid" : ({ 3, 2, 5, 4, .... }),
"/u/l/laechan/area/hole" : ({ 5, 4, 5, 7, .... }),
])
也就是说,每一段周期时间,它就去读 users(),分析每一个
environment(ppl) 的 base_name,然後 filter 出 area_path
mixed usr=users();
object ppl,env;
string files,area_path;
int s;
foreach(ppl in usr)
{
if(ppl && env=environment(ppl))
{
files=base_name(env);
s=strlen(files);
while(s-->0)
{
if(files[s..s]=="/")
area_path=files[0..s]; // 或 files[0..s-1]
然後做 mapping 资料的增减...
mixed tmps=({});
if(count_data[area_path])
{
tmps=count_data[area_path];
tmps+=({ 本数统计的数量 });
}
else
count_data[area_path]=({ 本次统计的数量 });
当然最後要做的事情就是..
save_room();
通常当累积的阵列元素越多时,就有足够的资讯可以分析,在一定
的时间范围内,某一个区域它的人数增减情况。
撰写这样的系统,基本上要注意几件事...
一、周期时间的订定。
二、在读取资料的时候如何最快速简易无负担(上面的没有做到这点)
三、如何设定储存资料的格式可以使储存量更精简
通常二跟三是冲突的,根据定律,它就存在一个所谓的「最适合写
法」,可以折衡中间的优缺。
不过实务上一般还是依实际情况来做二or三的考量,需考量最适合
写法的情况通常只有在写频繁读取 or 大型系统时。
在这情况下考量圣殿的现况,还是请各位多以二为主^^
Laechan
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.170.230.44