文字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
残留user_ob引发的BUG

发信人: shure (水儿), 信区: Mud_Builder
标 题: 取代连线中人物后,出现非生物的失效ID问题的解决
发信站: 一塌糊涂 BBS (Wed Jun 27 14:42:56 2001)


我来回答下上回ajiu问的那个怎么处理新玩家login过程中出现的bug:


就是玩家在设定完email,还没有设定性别的时候断线,然后再重新连线建立同uid的新id
的时候,登陆的时候正常,但是quit之后再login就会出现的是否取代连线人物的提示,
这时如果取代,则连线进来的id是个失效的非生物的id。


先分析一下这个问题产生的原因:看logind.c里玩家设置完email就会调用make_body(),new
一个USER_OB,然后进行user_ob和login_ob的uid和id的设置,这时内存中就有了这个
uid属性的user_ob,第二次再重新注册成功后,系统内存中就又生成了一个这个uid的
user_ob,当这个新玩家quit的时候,系统会destruct掉这个这个新玩家当前控制着的这个
user_ob,可是此时内存中还是存在一个同uid的user_ob,就是开始这个玩家注册时在填写
完mail后发生断线而残留的。所以当这个玩家再次登录时,LOGIN_D自然会调用find_body
函数检查children(user_ob),发现了这个uid的user_ob后,会出现你要取代连线中人物这
句话的提示,取代以后,玩家的控制权就转到了这个user_ob身上,可是这个user_ob是个
不健全的,也就是说,只设置到email就被中断了,没有gender、没有title、没有食物和水……
总之是个残疾的user_ob(好象一个npc,呵呵,简直比npc还不如),所以就会出现非生
物的那种尴尬状态。


解决办法一个是我原来说的,重新改写logind.c,拉近new(USER_OB)和enter_world()之间
的时间距离,要玩家根本没时间在这个关键过程里断线。或者简单的办法就是,在玩家连
线输入密码之后,检查children(USER_OB)里是否有同uid的user_ob的同时,加一条判断,
判断这个user_ob是不是正常的,(只需要用userp判断一下就可以了,看看它是不是曾经
可互动的,因为失效的user_ob都是没有经过exec()传递过可互动的属性的。)如果不正常,
马上dest了就是。


只需修改logind.c的find_body()函数如下:


object find_body(string name)
{
object ob, *body;

if( objectp(ob = find_player(name)) )
return ob;
body = children(USER_OB);
for(int i=0; i < sizeof(body); i++)
if( clonep(body[i])
&& getuid(body[i]) == name )
{
if(!userp(body[i]))
destruct(body[i]);
else return body[i];
}
return 0;
}
Odysseus 当前离线  
回复时引用此帖

发表新主题 回复

添加到书签


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

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



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


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

站长 fengyue

Content Relevant URLs by vBSEO 3.6.1