MUDOS学习笔记之add_action篇
2007/5/5 23:17:31

结构很简单。
只不过在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

返回列表
返回首页
©2025 MUD游戏网_文字mud 电脑版
Powered by iwms