找回密码
 注册
搜索
查看: 2959|回复: 1

关于chan 的修改意见

[复制链接]
门派:不明
发表于 2009-10-24 13:50:11 | 显示全部楼层 |阅读模式
bug 描述: sophia 护镖job 中使用perform chan,战斗结束后,华山job 中使用perform sanhuan,提示"你现在正在使用「缠」字诀。"

sanhuan.c 中有一段:
   if( (int)me->query_temp("tjj/chan") )
                   return notify_fail("你现在正在使用「缠」字诀。\n");
由此得出 sophia 被  me->set_temp("tjj/chan", 1) 标记。

据sophia 回忆,perform chan 已经缠中npc,不过由于chan 牵制攻击的特性,npc 在busy 过后 pfm 挂掉了护镖搭档 luobo,这时战斗结束。

据此推断 check_fight() 的执行过程中战斗结束,修改后的chan 有这么一段:

   else if(!target->is_busy() && !me->is_busy() && living(target)){
                    if (random(i))
                          checking(me, target, wep);
                else {
                            me->set_temp("tjj/chan", 1);   // 问题出在这
                        me->start_perform(1, "缠");
    战斗结束,luobo 阵亡。判断条件 (!target->is_busy() && !me->is_busy() && living(target) 为真,假设random(i) 当时为假,me->set_temp("tjj/chan", 1) 被标记,start_perform 应该在chan 开始判断战斗状态时被终止。那tjj/chan 标记将不被删除。
     若random(i)为真,将调用 checking(),pfm 命中条件若通过,仍会出现上述bug 描述的状况。

修改建议: 1) 修改 me->set_temp("tjj/chan", 1)  为delete_temp
           2) 在checking 里增加去战斗状态的判断。

[ 本帖最后由 ilovemin@ts 于 2009-10-26 09:19 编辑 ]
门派:不明
发表于 2009-10-25 19:11:13 | 显示全部楼层
看不懂
support   玩家写代码, wiz最终审核
顶一顶
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|书剑永恒MUD ( 闽ICP备14012032号|闽公网安备 35050202000162号 )

GMT+8, 2024-5-19 08:00 , Processed in 0.029098 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表