东方故事2 mudlib及资料(国内炎黄等以ES2为底层的MUD可参考)

东方故事2官方网址:http://es2.muds.net/ , mudlib下载地址:http://es2.muds.net/download/

mudlib说明

东方故事2是中文MUD的鼻祖,也是国内所有主流MUD的底层

目录结构

以下列出的是ES2 mudlib 根目录下标准的子目录结构,以及简短的说明。

/adm 储存由系统管理者所管理的程式与资料档。
/std 储存标准物件的程式码。
/obj 储存通用物件的程式码。
/feature 储存物件特征的程式码。
/daemon 储存游戏制度精灵的程式码。
/d 储存开放区域的程式码。
/cmds 储存全域性使用者指令的程式码。
/include 储存系统表头档。
/doc 储存说明文件文字档。
/data 储存使用者帐号、物件资料。
/u 储存巫师工作目录。
/log 储存系统日志。

系统函数(Simul-Efuns)

以下列出的是ES2 mudlib 目前定义的simul-efun 及扼要的用途说明。

chinese_number 传回中文格式的数字如「一百三十六」等。
chinese_period 传回中文时间的表示法如「一小时三十六分」等。
to_chinese 传回一个英文词汇的对应中文名称。
break_chinese_string 将一个含有中文的字串依照指定长度断成数行。
currency_string 传回中文钱的表示法如「三两银子又十二文钱」等。
cat 将一个档案的内容显示给this_player()。
log_file 将一段文字写入指定的日志(log) 档。
assure_file 检查并建立一个档案路径中所有的目录。
base_name 传回物件的真正档名(去掉物件流水号)。
gender_self 传回指定性别的中文第二人称。
gender_pronoun 传回指定性别的中文第三人称。
getoid 传回物件的流水号。
file_owner 传回指定档案的拥有者(巫师) 代号。
creator_file 传回指定档案的建立者UID,用来设定物件被建立时的权限。
destruct 覆盖efun 中的destruct,作各种检查。
users 覆盖efun 中的users,作各种检查。
livings 覆盖efun 中的livings,作各种检查。
objects 覆盖efun 中的objects,作各种检查。
exec 覆盖efun 中的exec,作各种检查。
user_cwd 传回指定巫师目前的工作目录(实作错误)。
user_home 传回指定巫师的home 目录。
user_path 传回指定巫师的home 目录加上'/'。
user_data 传回指定使用者的人物存档档名。
login_data 传回指定使用者的帐号存档档名。
mail_data 传回指定使用者的邮件信箱存档档名。
resolve_path 传回展开'.' 与'..' 表示法的路径名称。
wiz_level 传回指定使用者的巫师等级。
wizhood 传回指定使用者的巫师等级名称。
wiz_level 传回指定使用者的巫师等级。
ntime 传回ISO-8601 的日期时间表示法。
snoop 覆盖efun 中的snoop,作各种检查。
message_vision 将讯息加上人称变化,显示给多个对象。
tell_object 利用message efun 提供与早期MudOS 的相容efun。
tell_room 利用message efun 提供与早期MudOS 的相容efun。
shout 利用message efun 提供与早期MudOS 的相容efun。
write 利用message efun 提供与早期MudOS 的相容efun。
say 利用message efun 提供与早期MudOS 的相容efun。

系统表头档(Include Headers)

表头档位于/include 目录下,以下列出ES2 目前使用中的表头档。

<action.h> 定义人物特征F_ACTION 所使用到的巨集符号。
<action.h> 定义人物特征F_ACTION 所使用到的巨集符号。
<ansi.h> 定义ANSI 色彩/游标控制码的巨集符号。
<armor.h> 护具类物件的标准表头档,含护具类物件的继承定义。
<attack.h> 定义人物特征F_ATTACK 中宣告的函式原型。
<attribute.h> 定义特征F_ATTRIBUTE 中宣告的函式原型与巨集符号。
<char.h> 定义人物特征F_* 巨集符号。
<combat.h> 定义人物特征F_COMBAT 所使用到的巨集符号。
<command.h> 定义指令系统所使用到的巨集符号,以及预设指令搜寻路径。
<condition.h> 定义人物特征F_CONDITION 所使用到的巨集符号。
<condition.h> 定义人物特征F_CONDITION 所使用到的巨集符号。
<config.h> 定义ES2 mudlib 系统组态,与开启/关闭某些选择性功能的符号。
<copyright.h> ES2 mudlib 著作权声明的表头档。
<daemon.h> 定义精灵物件*_D 的巨集符号。
<dbase.h> 定义特征F_DBASE 所使用的巨集符号。
<explore.h> 定义利用使用者特征F_FLAG 纪录使用者探险点数的检查点所使用的巨集符号。
<function.h> MudOS 的函式指标所使用的巨集符号(根据MudOS 定义)。
<globals.h> ES2 mudlib 的系统预设表头档。
<intermud.h> Intermud 通讯协定相关的巨集定义。
<item.h> 一般物件的标准表头档,含一般物件的继承定义。
<localtime.h> MudOS 的localtime efun 所使用的巨集符号(根据MudOS 定义)。
<login.h> 有关玩家身分验证、人物创造的组态设定。
<move.h> 定义特征F_MOVE 所宣告的函式原型。
<mudlib.h> 有关ES2 mudlib 的版本资讯等巨集定义。
<name.h> 定义特征F_NAME 所宣告的函式原型。
<obj.h> 定义通用物件的位置。
<origin.h> MudOS 的origin efun 所使用的巨集符号(根据MudOS 定义)。
<race.h> 游戏中与种族相关的巨集符号。
<room.h> 房间类物件的标准表头档,未包含继承定义。
<runtime_config.h> MudOS 的get_config efun 所使用的巨集符号(根据MudOS 定义)
<score.h> 定义人物特征F_SCORE 所宣告的函式原型。
<skill.h> 定义人物特征F_SKILL 所宣告的函式原型。
<socket_err.h> MudOS 的socket 族群efun 所使用的巨集符号(根据MudOS 定义)。
<statistic.h> 定义特征F_STATISTIC 所宣告的函式原型。
<team.h> 定义人物特征F_TEAM 所宣告的函式原型。
<type.h> MudOS 的typeof 运算传回值的巨集定义(根据MudOS 定义)。
<user.h> 定义使用者特征的F_* 符号,以及一些相关组态设定。
<weapon.h> 武器类物件的标准表头档,含武器类物件的继承定义。

物件特征(Feature Objects)

物件特征是ES2 mudlib 异于其他mudlib 的最主要特色,在ES2 mudlib 的设计哲学中,一个物件分析到最后,就是一群物件特征的聚合体。

ES2 mudlib 在物件特征的目录下,另外细分几个族群,分列如下:

具有属性 /feature/attribute.c
具有计量值 /feature/statistic.c
具有资料库 /feature/dbase.c
具有自动释放功能 /feature/clean_up.c
具有唯一性 /feature/unique.c
可以被饮用 /feature/drink.c
可以被装备 /feature/equip.c
可以被食用 /feature/food.c
可以被移动 /feature/move.c
可以被看见与指名 /feature/name.c
可以被储存 /feature/save.c
可以被研读 /feature/study.c

人物特征

能够攻击 /feature/char/attack.c
能够使用指令 /feature/char/command.c
能够计算货币 /feature/char/finance.c
能够接收讯息 /feature/char/message.c
能够学习技能 /feature/char/skill.c
能够进行持续性动作 /feature/char/action.c
能够维持战斗状态 /feature/char/combat.c
能够受辅助/不良状况效果影响 /feature/char/condition.c
能够建立师徒关系 /feature/char/master.c
能够提升等级、经验 /feature/char/score.c
能够组织队伍 /feature/char/team.c

使用者特征

能够储存alias /feature/char/alias.c
能够储存物品 /feature/char/autoload.c
能够编辑文字 /feature/char/edit.c
能够纪录事件旗标 /feature/char/flag.c
能够使用分页功能 /feature/char/more.c

护具类物件特征

盔甲类 /feature/armor/armor.c
衣物类 /feature/armor/cloth.c
鞋类 /feature/armor/feet.c
戒指类 /feature/armor/finger_eq.c
手套类 /feature/armor/hand_eq.c
头盔类 /feature/armor/head_eq.c
护腿类 /feature/armor/leg_eq.c
项链类 /feature/armor/neck_eq.c
腰带类 /feature/armor/waist_eq.c

武器类物件特征

斧类 /feature/armor/axe.c
刀类 /feature/armor/blade.c
钝器类 /feature/armor/blunt.c
匕首类 /feature/armor/dagger.c
针类 /feature/armor/needle.c
枪类 /feature/armor/pike.c
杖类 /feature/armor/staff.c
剑类 /feature/armor/sword.c
鞭类 /feature/armor/whip.c

标准物件(Standard Objects)

标准物件主要提供区域建造者物件的基础原型,区域建造者经由「继承」这些标准物件来撰写区域内的物件。ES2 mudlib 在标准物件目录下另外细分几个族群,分列如下:

留言板物件 /std/bboard.c
人物状况定义物件 /std/condition.c
技能定义物件 /std/skill.c
货币物件 /std/money.c
房间类物件 /std/room.c
钱庄 /std/room/bank.c
当铺 /std/room/hockshop.c
当铺储藏室 /std/room/hockshop_storage.c
客栈 /std/room/inn.c
旅行点 /std/room/journey.c
物品类物件 /std/item.c
可合并物品 /std/item/combined.c
容器物品 /std/item/container.c
液态物品 /std/item/liquid.c
药材 /std/item/pharmacy.c
原物料 /std/item/reagent.c
类人种族 /std/race/humanoid.c
人物类物件 /std/char.c
非玩家人物 /std/char/npc.c

另外有一类介于标准物件与通用物件之间的重要物件,因为物件权限的规划, 被安排放在标准物件的目录下,这些物件包括:

使用者帐号物件 (/std/obj/login.c)
使用者物件 (/std/obj/user.c)
尸体物件 (/std/obj/corpse.c)

精灵物件(Daemons Objects)

精灵物件是指游戏系统中一些用来提供某些功能,但是并不具备实体的抽象物件, 这些功能并不专属于某几种物件,也不依存某些物件而存在。它们的角色类似神话中掌管大自然的火之精灵、光之精灵等,因此而得名。

精灵物件主要分为两类,第一类位于/adm/daemons 目录下,为具有ROOT 权限的系统精灵;另一种位于/daemon 下,为具有MUDLIB 权限的游戏制度精灵。

目前ES2 的系统精灵包括:

指令代换精灵 /adm/daemons/aliasd.c 负责提供系统通用alias 给所有使用者。
频道精灵 /adm/daemons/channeld.c 负责提供所有通讯频道如chat、wiz、rumor 等。
人物精灵 /adm/daemons/chard.c 负责设定、检查、人物的状态,包括死亡、复活等。
中文精灵 /adm/daemons/chinesed.c 负责处理中、英文对照,以及一些与中文相关的功能。
家族精灵 /adm/daemons/cland.c 负责管理所有玩家间的持久性组织。
指令精灵 /adm/daemons/cmd_d.c 负责管理玩家指令的搜寻与执行。
战斗精灵 /adm/daemons/combatd.c 负责所有战斗的进行。
制度精灵 /adm/daemons/daemond.c 负责管理第二类制度精灵的登记、查询、呼叫。
情绪精灵 /adm/daemons/emoted.c 负责管理、执行所有的情绪指令。
装备强化精灵 /adm/daemons/enhanced.c 负责装备的随机强化。
使用者查询精灵 /adm/daemons/fingerd.c 负责处理并执行finger 指令。
连线精灵 /adm/daemons/logind.c 负责管理使用者连线登入、创造人物、断线、重新连线等。
自然现象精灵 /adm/daemons/natured.c 负责管理天气变化与游戏中的自然现象。
系统效能精灵 /adm/daemons/profiled.c 负责监控、统计系统效能。
权力精灵 /adm/daemons/securityd.c 负责管理所有物件对档案系统的读写权、以及某些efun 的使用权。
邮件精灵 /adm/daemons/smtpd.c 负责管理使用者间互相寄送邮件的功能。
身分识别精灵 /adm/daemons/userid.c 负责网路使用者身份识别。
虚拟物件精灵 /adm/daemons/virtual.c 负责管理虚拟物件的产生。

制度精灵主要随各MUD 游戏设计不同而异,目前ES2 所使用的制度精灵有以下几类:

种族精灵 位于/daemon/race 目录下
职业精灵 位于/daemon/class 目录下
技能精灵 位于/daemon/skill 目录下
状态精灵 位于/daemon/condition 目录下
留言板物件 位于/daemon/board 目录下

指令物件(Command Objects)

指令物件唯一的用途是用来提供使用者执行指令,这些物件的特色是:具有ROOT 权限,但是在执行指令时,通常会降低为和执行指令的使用者相同的权限。

目前ES2 mudlib 将指令物件依照使用权限高低分为以下几类, 权限较高的使用者可以使用权限较低者全部的指令。

大神指令 位于/cmds/adm 目录下
大巫师指令 位于/cmds/arch 目录下
巫师指令 位于/cmds/wiz 目录下
实习巫师指令 位于/cmds/app 目录下
见习巫师指令 位于/cmds/imm 目录下
玩家指令 位于/cmds/usr 目录下
一般指令 位于/cmds/std 目录下

以下是ES2 目前所有的通用指令: (不含由物件、房间、职业、种族所提供的特殊指令)

chpass 大神 设定除了大神以外,任意使用者的密码。
shutdown 大神 立即关闭游戏伺服器。
callouts 大巫师 列出所有物件待执行的callout函数。
chinese 大巫师 中文精灵的管理工具,可设定中英文对照。
cleanup 大巫师 对所有物件呼叫自动清除(clean_up)函式。
force 大巫师 强迫另一位使用者执行指定的指令。
heal 大巫师 完全恢复一位使用者的健康状态。
overview 大巫师 检视系统一些物件的统计资料。
possess 大巫师 附身在指定的NPC物件。
promote 大巫师 提升/降低指定使用者的巫师等级。
purge 大巫师 删除指定使用者的帐号
reboot 大巫师 启动系统正常的重新启动程序,开始倒数计时,并发出讯息警告所有使用者。
rehash 大巫师 更新指令搜寻快取。
reset_okip 大巫师 设定指定使用者的登入IP地址检查。
restore 大巫师 取回指定使用者的人物备份档。
resurrect 大巫师 将指定使用者从死亡状态复活。
slay 大巫师 直接杀死指定的使用者或生物。
wizlock 大巫师 设定/取消非巫师的使用者登入限制。
analyze 巫师 显示并分析指定使用者或生物的状态与能力。
call 巫师 呼叫指定物件的指定函式。
cat 巫师 列出指定档案的内容。
cost 巫师 计算执行某一指令所需要的微指令(instruction)数。
daemon 巫师 制度精灵的查询/管理工具。
exile 巫师 立即驱逐指定的玩家,并且禁止上线一段时间。
ff 巫师 查询某一函数在物件中,函数定义所在的档名。
ilist 巫师 显示指定物件的继承树。
info 巫师 显示指定物件的内部状态。
invis 巫师 开启/关闭巫师隐身状态。
localcmds 巫师 显示巫师目前由身上物件与所在房间提供的所有指令。
qload 巫师 显示系统目前的负荷。
quiet 巫师 设定/取消指定使用者在公共频道上的发言限制。
snoop 巫师 监听指定使用者所收到的讯息。
summon 巫师 立即将指定使用者移动到巫师所在的地点。
tail 巫师 显示指定档案的最后几行。
userid 巫师 用身分识别精灵查询使用者身份。
cp 实习巫师 拷贝指定的档案。
edit 实习巫师 编辑指定的档案。
home 实习巫师 立即移动到自己的工作室或巫师公会。
mkdir 实习巫师 建立一个子目录。
mv 实习巫师 移动(更名)指定的档案或子目录。
rm 实习巫师 删除指定的档案。
rmdir 实习巫师 删除指定的子目录。
cd 见习巫师 改变工作目录。
clone 见习巫师 复制指定的物件。
dest 见习巫师 摧毁指定的物件。
edemote 见习巫师 编辑情绪指令。
goto 见习巫师 立即移动到指定的房间或指定的使用者身边。
home 见习巫师 立即移动到自己的工作室或巫师公会。
items 见习巫师 显示身上或房间中物品的真实名称。
ls 见习巫师 显示工作目录或指定目录的内容。
mem 见习巫师 显示系统或指定物件所占用的记忆体量。
more 见习巫师 以分页方式显示指定档案的内容。
pwd 见习巫师 显示自己的工作目录与工作档案。
status 见习巫师 显示系统使用记忆体的统计资料。
update 见习巫师 重新载入指定的物件,或更新使用者物件。
where 见习巫师 寻找指定的物件,或列出所有使用者的位置。
which 见习巫师 显示提供某一指令的物件档名。
whoami 见习巫师 显示自己目前的权限。
abandon 玩家 放弃学习指定的技能。
alias 玩家 设定/查询指令替代功能。
backup 玩家 备份人物存档。
balance 玩家 查询银行帐户余额。
ccmd 玩家 帮派指令。
chfn 玩家 修改自己的电子邮件、签名等个人资料。
cls 玩家 清除萤幕。
describe 玩家 设定自己的人物描述。
disable 玩家 将指定的技能设定为不使用。
enable 玩家 将指定的技能设定为使用。
estimate 玩家 评估指定对手的战斗能力。
finger 玩家 查询离线使用者。
gain 玩家 查询技能进步的状况。
help 玩家 查询说明文件。
hp 玩家 显示人物生命点数。
identify 玩家 鉴定物品。
ignore 玩家 用来关闭所有来自指定使用者的tell讯息。
inventory 玩家 显示人物身上携带的物品。
keep 玩家 将指定物品作上记号,以免不小心丢掉或卖掉。
localtime 玩家 显示伺服器所在地的时间。
nick 玩家 设定自己的绰号。
okip 玩家 设定允许登入IP地址的检查。
option 玩家 设定一些关于显示讯息的开关。
order 玩家 命令自己的宠物、喽啰做某些事情。
passwd 玩家 修改自己的密码。
praise 玩家 赞扬其他的使用者。
quit 玩家 结束连线离开游戏。
save 玩家 将人物资料存档。
score 玩家 显示人物属性、经验值等资讯。
semote 玩家 显示情绪指令列表。
skills 玩家 显示人物的技能。
suicide 玩家 自杀、删除人物帐号。
time 玩家 显示游戏世界目前的时间。
to 玩家 输入含有换列字元的命令。
tune 玩家 关闭指定的频道。
undescribe 玩家 删除人物的描述。
uptime 玩家 显示伺服器执行的时间。
version 玩家 显示MUD所使用的伺服器名称与版本。
visitor 玩家 显示MUD的使用者人次统计。
who 玩家 显示所有使用者的列表。
wimpy 玩家 设定自动逃跑的参数。
wizlist 玩家 查询巫师团队的人员名册。
acquire 一般 向其他人物学习技能。
apprentice 一般 向其他人物拜师学艺。
ask 一般 向其他人物询问问题。
backstab 一般 对其他人物发动偷袭。
berserk 一般 对其他人物发动狂暴攻击。
buy 一般 向其他人物购买物品。
cast 一般 施展法术。
charge 一般 指定战斗中优先攻击目标。
close 一般 关闭门窗等。
conjure 一般 施展法术。
drink 一般 喝饮料。
drop 一般 丢弃物品。
eat 一般 吃食物。
emote 一般 作动作。
enter 一般 进入特定场所。
exert 一般 使用内功。
fight 一般 向其他人物提出比试的要求。
fill 一般 将容器注入液体。
follow 一般 设定人物自动跟随其他人物一起行动。
get 一般 从地上或其他容器中捡起物品。
give 一般 将身上的物品给予指定的人物。
go 一般 往指定的方向移动。
guard 一般 设定人物保护的对象。
halt 一般 终止战斗或正在进行的活动。
kill 一般 开始以杀死对方为目的的战斗。
lock 一般 使用钥匙将门锁上。
look 一般 检视物品或周遭的环境。
open 一般 开启门窗。
perform 一般 使用招式。
put 一般 将物品放进容器。
remove 一般 卸下装备。
reply 一般 回答来自其他玩家的tell。
say 一般 说话,让位于同一房间中的人物听到。
search 一般 在所在的环境搜寻特定的物品。
shout 一般 大吼大叫,让所有其他玩家听到。
sneak 一般 尝试以不引人注意的方式,向指定的方向移动。
steal 一般 尝试向指定的对象偷窃。
study 一般 从特定物品上学习技能。
team 一般 和其他人物组织队伍。
tell 一般 传送讯息给指定的使用者。
unlock 一般 用钥匙开门。
unwield 一般 卸下武器。
wear 一般 穿上装备。
whisper 一般 和指定对象耳语。
wield 一般 使用武器。
京ICP备13031296号-4