一般的mud都会有team组队功能。而且我查看了几个mudlib的team文件源代码发现里面一般都定义了follow_path和follow_me,但是经我测试没发现可以真正做到跟随的(我测试过的lib有大唐双龙、海洋2、泥潭2)。请问怎么才能做到跟随?
附上team文件中和跟随有关的代码:
一、大唐、海洋类:
int follow_path(string dir)
{
this_object()->remove_all_enemy();
return GO_CMD->main(this_object(), dir);
}
int follow_me(object ob, string dir)
{
//if( !living(this_object()) || ob==this_object() ) return 0;
if( ob==leader )
||(query("pursuer") && this_object()->is_killing(ob->query("id")))) {
if( random(ob->query_skill("move")) > this_object()->query_skill("move") ) {
remove_call_out("follow_path");
call_out("follow_path", 1, dir);
return 1;
}
return follow_path(dir);
}
}
我把中间的都注释掉只保留if( ob==leader ) {return follow_path(dir;)}测试也没通过……
二、泥潭、中华、炎黄类:
int follow_path(string dir)
{
reset_eval_cost();
command("go " + dir);
}
int follow_me(object ob, string dir)
{
object me;
me = this_object();
if (! living(me) || ob == me) return 0;
if (ob == leader)
{
// 跟着别人走
if (ob->query("env/no_follow") &&
me->query_dex() / 2 + random(me->query_dex()) < ob->query_dex())
{
tell_object(me, ob->name() +
"走得好快,你一疏神就跟不上了。\n");
return 0;
}
return follow_path(dir);
} else
if (in_team() && ob == oteam->leader)
// 跟着队伍的领袖行走
return follow_path(dir);
else
if (in_array() && ob == zhen->master)
return follow_path(dir);
}
好不容易把大唐的组队显示异常的bug修复了,顺便修复了大唐teamkill指令无效的问题(都是同一个数组引用的问题,卡了我四五天- -),但是这个follow试了很多次感觉难度很大……
曾经以为是行走时输入的方向简写的问题,但经测试即使输入完整的west、east之类的队员也不跟随,甚至我带着go输入go east也不行。求高手帮忙解决组队跟随问题。
team follow设计初衷是要和follow独立,但是如果同向行走解决不了,退一步能强制给队友个follow leader指令也行,我不知道代码改怎么写……
附上team文件中和跟随有关的代码:
一、大唐、海洋类:
int follow_path(string dir)
{
this_object()->remove_all_enemy();
return GO_CMD->main(this_object(), dir);
}
int follow_me(object ob, string dir)
{
//if( !living(this_object()) || ob==this_object() ) return 0;
if( ob==leader )
||(query("pursuer") && this_object()->is_killing(ob->query("id")))) {
if( random(ob->query_skill("move")) > this_object()->query_skill("move") ) {
remove_call_out("follow_path");
call_out("follow_path", 1, dir);
return 1;
}
return follow_path(dir);
}
}
我把中间的都注释掉只保留if( ob==leader ) {return follow_path(dir;)}测试也没通过……
二、泥潭、中华、炎黄类:
int follow_path(string dir)
{
reset_eval_cost();
command("go " + dir);
}
int follow_me(object ob, string dir)
{
object me;
me = this_object();
if (! living(me) || ob == me) return 0;
if (ob == leader)
{
// 跟着别人走
if (ob->query("env/no_follow") &&
me->query_dex() / 2 + random(me->query_dex()) < ob->query_dex())
{
tell_object(me, ob->name() +
"走得好快,你一疏神就跟不上了。\n");
return 0;
}
return follow_path(dir);
} else
if (in_team() && ob == oteam->leader)
// 跟着队伍的领袖行走
return follow_path(dir);
else
if (in_array() && ob == zhen->master)
return follow_path(dir);
}
好不容易把大唐的组队显示异常的bug修复了,顺便修复了大唐teamkill指令无效的问题(都是同一个数组引用的问题,卡了我四五天- -),但是这个follow试了很多次感觉难度很大……
曾经以为是行走时输入的方向简写的问题,但经测试即使输入完整的west、east之类的队员也不跟随,甚至我带着go输入go east也不行。求高手帮忙解决组队跟随问题。
team follow设计初衷是要和follow独立,但是如果同向行走解决不了,退一步能强制给队友个follow leader指令也行,我不知道代码改怎么写……