人物执行call_out后是否有取消打断功能
mud吧
全部回复
仅看楼主
level 8
a123005 楼主
举例为dazuo.c
message_vision("$N盘腿跌坐在地上,闭上眼睛开始调息打坐。\n",me);
me->set_temp("disable_inputs",1);
me->set_temp("block_msg/all",1);
me->set_temp("is_unconcious",1);
me->set("disable_type",HIG "<打坐中>" NOR);
me->set_temp("in_dazuo",1);
me->start_call_out( (: call_other, __FILE__, "remove_dazuo", me:),random(50 - (int) me->query_con()));
比如还未到触发remove_dazuo函数时间,这时其他char对他kill或fight的话,
remove_dazuo不应该执行了,程序是否有取消remove_dazuo功能?
2014年09月29日 02点09分 1
level 13
me->start_busy(bind((:call_other, __FILE__, "exercising" :), me),
bind((:call_other, __FILE__, "halt_exercise" :), me));
这种就可以
2014年09月29日 03点09分 3
你这不是call_other 不是call_out啊 比如dazuo时有kill 那么bind写在哪个c里呢?
2014年09月29日 03点09分
回复 a123005 :写在打坐文件, 关键是 他是给 start_busy 做的函数, 引发战斗的时候, 会打断你的busy, 就停掉了
2014年09月29日 09点09分
level 15
1,单纯对于call_out这个函数来讲,是可以取消的,也就是对应的efun:remove_call_out
2,我想你的问题应该是如何在打坐中受到攻击醒来,那么按照现在多数lib的既有定义(也就是多数lib都是类似定义的,毕竟都是同源的),采用碧落的方式是一个很巧妙的办法。利用start_busy的定义,将结束打坐定义为interrupt,那么在被攻击时,如果收到了伤害,会呼叫interrupt_me函数来中断busy,此时将执行interrupt。不过call_out的函数中要有stop_busy()。
3,其实有很多方式可以实现这个功能,例如在kill_ob中通过call_other放一个触发打坐醒来的语句之类的。。。
2014年09月29日 23点09分 4
非常感谢,就是这个意思
2014年09月30日 14点09分
1