随便说两句,关于call的,是给新手看的,所以说老家伙们不要挑毛病
当没有看到我的帖子就好了
call,顾名思义,是“呼叫”,他呼叫什么呢,呼叫的是物件上的函数
格式是call XX->function(arg1,arg2).....
XX是物件的“名称”,这个说法不是很准确,因为有的时候是uid,有的
时候是id,也有的时候是一些特殊的代称,甚至于有的时候就是文件名。
funcition是函数,确切的说,是物件的函数,这个不用解释了吧,对面
向对象有一定了解的都可以明白,不明白也没有办法了:(
arg1 arg2 是函数的参量
先说物件名,我们在程序当中有的时候会看到me->set("name","很不温柔");
这样的语句,这里的me是一个ob,一般会是this_object()或者
this_player(),但是在call里边的me不是的,他只是一个代称,由call
指令转化成this_player(),类似的情况还有call here->....
一般我们只针对用户call,所以一般用的都是用户的id,比如call akuma->()...
但是实际上这个是用户的uid,当你call me->set("id","bigpig")之后,
再call bigpig->....的时候,并不会因为你的"id"是bigpig,call指令
就会对你如何如何,它首先是去找线上的那个真的bigpig。。。,没有也
不会找你:)
其实还可以直接call一个文件,正确的说是文件名所反映的那个内存中
的物件,比如如果你权限够的话,可以尝试一下
call /adm/daemons/natured->create(),heihei
如前边所说,function是这个物件上的函数,函数有可能是物件本身的
也有可能是物件所继承的(inherit)的类(说类不大合适)上的。
比如set就是从inherit F_DBASE;来的。再如set_skill()是因为“我”
(用户,也就是user_ob)继承了F_SKILL(不是一次继承的,而是。。
记不清楚了 好像是charactor继承的吧)。
就通常情况而言,我们做在线管理针对用户用的也就是如下几个函数
set() query() set_temp() query_temp() set_skill() delete()
query_entire_dbase()等等
当然,有这个函数存在并不表示你就能够call成功,还要看权限
比如说如果随便一个wizardp就能够call /adm/daemons/securityd->set...
那就乱了(说到这里,应该有人在偷笑吧:))
说道arg1 arg2...其实没有什么好谈的,具体看看函数原型就好了
尊重作者 转载请注明出处52mud.com