背景:
阅读文章

MUDOS学习笔记之add_action篇

[日期:2007-05-05] 来源:  作者: [字体: ]

结构很简单。
只不过在command_giver身上多了一个叫sentence_t的数据指针结构。
该数据结构包括:
function.s 函数string name
function.f 函数指针
next       指向下一个sentence
flag       来判断传入的参数是一个string还是一个function


ob         函数的own ob指针
verb       指令string
然后每加一个add_action,是在栈顶连上一个sent的结构,然后把
把sent结构的next指向当前栈顶,然后移动command_giver->sent
指针,让它指向sent。

这里就产生了一个BUG,由于搜索add_action的时候是从栈顶往栈底
搜索,所以后加进来的add_action实际上会被先搜索到。这里就会
产生很多BUG,比如新加一个add_action("do_sth","",1)来让do_sth()
获取所有指令的执行权。

那么我们要修改这个BUG,我建议的方法是在simulate.c中找到这两句:
p->next = command_giver->sent;
command_giver->sent = p;
改成:
if (! command_giver->sent ) {
   command_giver->sent = p;
   return;
}
bb = command_giver->sent; //bb在前面要声明一下:sentence_t *bb;
while(bb->next) bb = bb->next;
bb->next = p;
然后重新编译你的mudos即可修改掉这个BUG。


尊重作者 转载请注明出处52mud.com

收藏 推荐 打印 | 录入:sbso | 阅读:
相关内容      
本文评论   [发表评论]   全部评论 (0)
内容推送
52mud提供
一起回忆泥巴游戏QQ群68186072
52mud官方微信公众平台
热门评论