关于evaluate和函数的疑问
mud吧
全部回复
仅看楼主
level 8
xiuliinlove 楼主
假设一个文件中有下列代码(精简之后的部分,还有其它类似代码):
void heal_kee(object ob,int i);
void heal_kee(object ob,int i)
{
ob->receive_curing("kee",i);
}
然后同一个文件中执行代码evaluate(heal_kee,me,200)之后结果是什么?
evaluate是用来展开函数运算么?
这里的evaluate(heal_kee,me,200)代码是表示把me和200参数传递到heal_kee函数进行运算么?还是和函数heal_kee根本就没有什么关联?
dtsl中我发现的最后一个大bug:疗伤类药物无效(包括药师炼制出来的补精气神的药物也无效),服用不增加数值。
涉及到的文件有fuyong.c;medicine.h;lianzhi.c等都查看了一遍修复起来很无力,现在把主要疑点放在了fuyong文件中的evaluate代码上……
2014年10月04日 10点10分 1
level 15
evaluate就是用给定的参数来执行给定的函数。
evaluate(heal_kee,me,200)就是执行heal_kee( me, 200 )
如果药物无效,你可以自己call一下试试receive_curing是否好用。有问题就改改就行了。
2014年10月05日 02点10分 2
嗯,谢谢。我也怀疑那个curing有问题,但忘了还能通过call来测试了。问下这个receive_curing是lib定义的还是mudos集成的?如果是驱动端集成我是不会弄的,如果是lib定义的我还可以找找试试……
2014年10月05日 02点10分
回复 xiuliinlove :另外,问题是被我简化的。实际情况是大概四五个文件在那里把参数传来传去,还没完全理顺呢。如果curing没问题,那就是传参有问题了。前面的疑问是evaluate的具体格式,不晓得括号里面的heal_kee是否后面要加括号,现在已经清楚了。
2014年10月05日 02点10分
level 15
是lib定义的:)一般情况下,可能会在/feature/damage.c里面。
调试的时候要多用call做测试。。。多在代码里加测试代码,比如执行到某部就tell_object一下某些参数,这样测试修改可以很快定位错误。
2014年10月05日 13点10分 3
看了N遍代码,最后还去翻了d下的room房间,找到了正式采药的地方。不幸地发现自己乌龙了,炼制药品无效是因为是任务炼制的药品……两个地方可以采药,采到的药材都可以炼药,都一个是任务药材,一个是正式药材,药材的设定有区别,就导致用任务药材炼制的无效了[黑线]……
2014年10月06日 09点10分
1