文字MUD游戏论坛-天下泥潭群英会-水泊梁山  

返回   文字MUD游戏论坛-天下泥潭群英会-水泊梁山 > 西游之旅 > 『 巫师天下 』

『 巫师天下 』 学习如何挂MUD,如何制作MUD。讨论如何管理好一个MUD,做好一个巫师。

发表新主题 回复
 
LinkBack 主题工具 主题评分 显示模式
旧 2011-12-03   #1
高级会员
级别:6 | 在线时长:109小时 | 升级还需:31小时级别:6 | 在线时长:109小时 | 升级还需:31小时级别:6 | 在线时长:109小时 | 升级还需:31小时
 
Odysseus 的头像
 
注册: 08年04月11日
来自: 盘丝洞
帖子: 311
声望力: 20
声望: 50 Odysseus 初领妙道
现金:29两梁山币
资产:1245两梁山币
致谢数: 0
获感谢文章数:0
获会员感谢数:0
限制flood的程序

发信人: shure (韩姝儿), 信区: Mud_Builder
标 题: Re: 请大家帮我check这个限制flood的程序
发信站: 一塌糊涂站 (Wed May 23 11:16:09 2001) , 站内信件


【 在 cloner (!!!!!!!) 的大作中提到: 】
: 【 在 shure (韩姝儿) 的大作中提到: 】
: : 标 题: 请大家帮我check这个限制flood的程序
: : 发信站: 一塌糊涂站 (Tue May 22 20:47:43 2001) , 站内信件
: :
: : 写完有点头晕,单机调试通过,但还是担心有不周到的地方,尤其是没有各种ip的玩
家共
: : 同参与测试,所以。。。请大拿们帮我检查一下吧。
: :
: : // /adm/daemons/channeld.c
: :
: : void create()
: : {
: : ……
: : set_heart_beat(1);
: : }
: :
: : void heart_beat(){ sameip=([]);}
: :
: : varargs int do_channel(object me, string verb, string arg, int emote,int re
mote
: : )
: : {
: : mixed *value,*index;
: : int i,j;
: : ……
: : if(userp(me) && !wizardp(me)) {
: : me->set_temp("last_channel_msg", arg);
: : if(me->query("id") && query_ip_name(me)){
: : if(i=member_array(query_ip_name(me),keys(sameip))!=-1){
: : value= values(sameip);
: : value[i-1] += ({me->query("id")});
: value[i-1] ? 应该是i吧,member_array返回的是索引值
: 0..开始.:P
//这个我是非常奇怪的,按理说应该是value[i],但实际情况是只有v
alue[i-1]才能符合,还没有细想为什么。。
: : sameip[query_ip_name(me)]= value[i-1];
: : if (sizeof(value[i-1])>5){
: : for(j=0; j < sizeof(value[i-1]); j++ ){
: : if(!find_player(value[i-1][j])->query("seal_time"))

: : //这个写法不合适,你应该判断find_player是否成功的
: //你这里直接就调用了query()了
//呵呵,当时想过这个问题,后来觉得一个流程处理下去,肯定
比玩家quit或!living快,所以就没加,sigh,态度不严谨。
: : tell_object(find_player(value[i-1][j]),"由于短时间内收
到来
: : 自您的IP地址过多的信息\n系统将暂时关闭您的交谈频道。\n");
: : find_player(value[i-1][j])->set("seal_time", find_player(v
alue
: : [i-1][j])->query("mud_age"));
: 从节约资源的角度来说,不要总用find_player来得到object,
: 用个变量一次性固定下来。
//nod,这个的确是。不过想附带问一下,find_player3-5个id浪费
的程度是多少?
: : }
: : return 1;
: : } else {
: : value=({});
: : value += ({me->query("id")});
: : sameip[query_ip_name(me)]= value;
: : }
: : }
: : me->add_temp("channel_msg_cnt",1);
: : if (time()-me->query_temp("chat_time")<5)
: : {
: : if (me->query_temp("channel_msg_cnt")>5){
: : do_channel(this_object(), "rumor", sprintf("%s因为说话太多,
交谈
: : 频道被暂时关闭。\n", me->name(1) ));
: : me->set("seal_time",me->query("mud_age"));
: : me->delete_temp("channel_msg_cnt");
: : return 1;
: : }
: : }
: : else{
: : me->set_temp("chat_time",time());
: : me->delete_temp("channel_msg_cnt");
: : }
: : }
: : }
: :
: : 用心跳来晴空列表,呵呵,不错阿。不过不知道这个 same_ip初始化了没有。
: 否则可能出点小错误。
// 是akuma的指点,初始化了,没贴出来。
:
Odysseus 当前离线  
回复时引用此帖

发表新主题 回复

添加到书签


发帖规则
不可以发表主师
不可以回复帖子
不可以上传附件
不可以编辑自己的帖子

论坛启用 vB 代码
论坛启用 表情图标
论坛启用 [IMG] 代码
论坛禁用 HTML 代码
Trackbacks are 启用
Pingbacks are 启用
Refbacks are 启用



所有时间均为格林尼治时间 +9, 现在的时间是 17:23.


Powered by SPLS
版权所有 2001-2023 水泊梁山
皖ICP备05012024号

站长 fengyue

Content Relevant URLs by vBSEO 3.6.1