背景:
阅读文章

关于call指令

[日期:2007-05-11] 来源:  作者: [字体: ]

随便说两句,关于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

收藏 推荐 打印 | 录入:sbso | 阅读:
相关内容      
内容推送
52mud提供
一起回忆泥巴游戏QQ群68186072
52mud官方微信公众平台
热门评论