背景:
阅读文章

增加权限等级

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

Q:怎样在MUD中加一个新的权限等级?比如(boss)

A:
  首先讲讲Es2类MudLib中所谓的权限等级的构成。
  从MudOs的层面上讲,在MudLib中的权限,体现在
  对文件的读写权限,对efun的调用权限两个方面。

  对于文件读写权限的控制,由MASTER_OB的valid_read()


  和valid_write()检查。Es2类lib中将这个检查交给了
  securityd.c中的同名函数进行,而在这个文件中,
  他定义了一套不同于euid,uid的身份制度,也就是通常
  说的巫师等级制度。

  对于efun调用权限的控制,一部分是一些特殊的efun
  比如bind,seteuid,shadow,socket等,他们在MASTER_OB
  里有自己的检查函数;另一部分是利用simul_efun和
  MASTER_OB里对override的检查来实现的。这个问题以后
  有必要再讲。

  加一个新的权限等级,就是要在Lib中加入一个有着和
  其他等级不同的权限的人群,根据上面的分析,需要
  改动的就包括上面相关的文件。

  /adm/daemons/securityd.c
  首先修改那个wiz_levels,加入你所需要的等级(boss),
  理论上,事情已经完结,如果你promote test (boss),
  以后你wizlist的时候是可以看到test的。不过这个等级
  跟一般的玩家是没有权限上的区别的。要实现区别,
  就要在上面提到的各个权限检查中加入对他的额外判断,
  在securityd.c中,就包括trusted_write,exclude_write,
  trusted_read,exclude_read等mapping的修改,加入对于
  (boss)这个等级的额外判断。同时在其他的地方,如果
  需要可以加入对他它的判断。

  /include/command.h
  加入这个等级巫师能够使用的命令,我想你看了文件就该明白
  怎么修改。

  /feature/command.c
  enable_player(),在switch里加入:
  case "(boss)":
  set_path(???);//这个 ???是你在command.h里定义的宏
  //enable_wizard; 加不加这个自己决定
  break;
 
  然后更新各个文件,看看效果如何。
  pkuxkx.net 5555里我加过一个(online)的等级。  

尊重作者 转载请注明出处52mud.com

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