![]() |
![]() |
#1 |
高级会员
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 注册: 08年04月11日
来自: 盘丝洞
帖子: 311
声望力: 20
声望:
50
![]() 现金:29两梁山币
资产:1245两梁山币
致谢数: 0
获感谢文章数:0
获会员感谢数:0 |
关于call指令
发信人: akuma (很不温柔 徘徊在十字街头), 信区: Mud_Builder 标 题: Re: 请问用什么命令能改西游记中人物功夫等级? 发信站: BBS 水木清华站 (Fri Sep 7 02:22:44 2001) 随便说两句,关于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...其实没有什么好谈的,具体看看函数原型就好了 |
![]() |
![]() |