level 2
眉烟如黛
楼主
起因:
go.c文件里有段针对is boss属性怪的判断造成脱战不彻底,那怕你们不在一个房间,也会进入战斗
if ( !playerp(me) && objectp(follow_ob=me->query_leader()) )
{
if ( me->is_killing(follow_ob) )
me->kill_ob(follow_ob);
if ( playerp(follow_ob) &&
(me->query("is_boss") || me->query("end_boss")) )
me->fight_ob(follow_ob);
}
但是把这段代码注释掉之后,你站在房间里不动,怪撞你,他只会下达kill指令,不会出招,但是你走入他所在的房间,就没问题。
想了很久没想明白结果............
偶然,测试的时候发现,怪跟着你,他会下达2次kill你的命令,也就是出现2次 看起来想杀死你...........
处理结果:
在attack.c的varargs void remove_all_enemy(int flag)里面有这段代码
if ( (enemy[i]->query("end_boss") || enemy[i]->query("is_boss"))
&& environment()==env ) continue;
// We ask our enemy to stop fight, but not nessessary to confirm
// if the fight is succeffully stopped, bcz the fight will start
// again if our enemy keeping call COMBAT_D->fight() on us.
enemy[i]->remove_enemy(me);
enemy[i] = 0;
修改方法:
把这段代码
if ( (enemy[i]->query("end_boss") || enemy[i]->query("is_boss"))
&& environment()==env ) continue;
修改为
if ( environment()==env ) continue;
这样就好了,这样又解决了另外一个bug,如果怪跟随你进入禁止战斗的房间,以前还是会继续战斗出招的,现在就不会了。
特别感谢 吧主 isbiluo 所说的,npc下达kill指令,只是在 attack.c 调用,和 kill.c没关系,以前一直在想办法修改ho.c 和kill.c
2015年03月11日 10点03分
1
go.c文件里有段针对is boss属性怪的判断造成脱战不彻底,那怕你们不在一个房间,也会进入战斗
if ( !playerp(me) && objectp(follow_ob=me->query_leader()) )
{
if ( me->is_killing(follow_ob) )
me->kill_ob(follow_ob);
if ( playerp(follow_ob) &&
(me->query("is_boss") || me->query("end_boss")) )
me->fight_ob(follow_ob);
}
但是把这段代码注释掉之后,你站在房间里不动,怪撞你,他只会下达kill指令,不会出招,但是你走入他所在的房间,就没问题。
想了很久没想明白结果............
偶然,测试的时候发现,怪跟着你,他会下达2次kill你的命令,也就是出现2次 看起来想杀死你...........
处理结果:
在attack.c的varargs void remove_all_enemy(int flag)里面有这段代码
if ( (enemy[i]->query("end_boss") || enemy[i]->query("is_boss"))
&& environment()==env ) continue;
// We ask our enemy to stop fight, but not nessessary to confirm
// if the fight is succeffully stopped, bcz the fight will start
// again if our enemy keeping call COMBAT_D->fight() on us.
enemy[i]->remove_enemy(me);
enemy[i] = 0;
修改方法:
把这段代码
if ( (enemy[i]->query("end_boss") || enemy[i]->query("is_boss"))
&& environment()==env ) continue;
修改为
if ( environment()==env ) continue;
这样就好了,这样又解决了另外一个bug,如果怪跟随你进入禁止战斗的房间,以前还是会继续战斗出招的,现在就不会了。
特别感谢 吧主 isbiluo 所说的,npc下达kill指令,只是在 attack.c 调用,和 kill.c没关系,以前一直在想办法修改ho.c 和kill.c