国内MUD二次开发基础教程
国内基本所有MUD都是以ES2为底层,MUD基本结构和语法相通,对新WIZ来说,了解任何一个MUD的二次开发,再去维护其它MUD都能比较快的上手。
要学习二次开发,需要掌握二点:LPC语法基础和ES2游戏框架结构。
LPC语法基础可以看这里:LPC 语言教程
ES2游戏框架结构可以看这里:东方故事2 mudlib 目录结构及指令说明
下面以炎黄MUD源码为例,熟悉游戏的二次开发。
教程包括以下内容:
- 炎黄MUD目录结构
炎黄MUD目录结构及文件说明
为方便不熟悉的管理员游戏开发,这里列出本游戏的目录结构及相关资料并做说明。
目录结构
| 目录 | 说明 |
|---|---|
| adm | 系统目录,包括守护进程,主控对象,模拟外部函数对象及重要唯一NPC等 |
| b | 游戏十四天书任务(help skybook)相关目录,本部分未开发完成,建议使用此LIB的开发者自己继续 |
| backup | 游戏存档备份目录 |
| bin | 游戏驱动程序目录 |
| clone | 游戏具体可复制对象文件目录,包括游戏主要共用NPC、物品和玩家连线对象 |
| cmds | 游戏玩家互交指令目录 |
| d | 游戏世界主要目录,包括世界地区、该地区特有NPC和物品等 |
| data | 存档存放目录 |
| doc | 游戏开发资料和文档 |
| dump | 存档临时恢复目录 |
| feature | 游戏特色功能模块,所有代码中继承的F_XXX即为这里的文件 |
| help | 游戏帮助文档目录 |
| include | 游戏头文件目录 |
| inherit | 游戏功能对象继承目录 |
| kungfu | 游戏门派NPC、技能及状态和特技相关目录 |
| log | 游戏日志目录 |
| shadow | telnet等特殊功能的shadow目录 |
| u | 游戏管理员工作目录 |
| www | websocket服务目录 |
守护进程
在/adm/daemons目录下存放的是游戏的守护进程,这些文件多数是自动加载并为游戏提供各种服务,如登录守护进程、战斗守护进程、任务守护进程等。
系统函数(模拟外部函数)
在/adm/single/simul_efun中是MUD提供的模拟外部函数,具体函数和功能建议查阅代码。
游戏可复制对象目录
这里存放着游戏中的各类生物、物品、任务和玩家对象,因为历史原因开发不规范,目录比较混乱。
| 目录 | 说明 |
|---|---|
| beast | 游戏毒蛇类野兽对象目录,建议改名为snake |
| board | 游戏各门派流言板对象目录 |
| book | 游戏中的各种武功秘籍 |
| cloth | 游戏中装备衣服目录 |
| fam | 师门任务奖励物品目录 |
| fish | 鱼类对象目录,钓鱼任务相关 |
| food | 食物相关对象目录 |
| game | 游戏中的五子棋、飞行棋等小游戏 |
| gift | 游戏中各种任务奖励对象 |
| herb | 游戏中各种药材,任务及制药相关材料 |
| horse | 游戏中的马匹 |
| insect | 游戏中的毒虫 |
| item | 十四天书任务相关特别物品 |
| lonely | 游戏中的独有物品,原则上不应该同时存在多件 |
| medicine | 游戏中的药品 |
| misc | 游戏中的杂项物品 |
| money | 游戏中的白银黄金等货币 |
| npc | 游戏中的共公普通NPC |
| poison | 游戏中的毒药 |
| quarry | 游戏中可打猎的各种野兽,可以做猎人相关任务 |
| quest | 自由任务功能对象 |
| questob | 游戏任务物品 |
| shop | 游戏中各城市玩家可以租用的商店 |
| special | 游戏帮派相关特殊物品 |
| tattoo | 游戏刺青相关图谱 |
| ultra | 游戏中的超级丹药 |
| user | 玩家连线和登录对象 |
| weapon | 游戏中的各种公共兵器 |
| worm | 游戏中的各种非毒虫类生物 |
游戏地域
在d目录中包括了几乎所有游戏中的地区,每个地区下面又包括这个地域的特定NPC(如:/d/city/npc)和对象(如:/d/city/obj)。这里不一一列出,请自己直接查看代码。
- 游戏主要管理指令
游戏指令在/cmds/目录下,这里包括管理员指令和玩家指令,可以在游戏中使用help查看,因为指令众多,这里只列出管理员的辅助指令,方便开发测试。
| 指令 | 说明 |
|---|---|
| board | 列出游戏中的所有留言板(可直接传送过去) |
| callouts | 列出游戏中的所有延时呼叫 |
| call | 呼叫对象中的函数 |
| cat/more | 查看文件源码 |
| cd | 切换当前工作目录 |
| child | 列出指定文件在游戏中的所有副本 |
| clone | 复制对象到环境 |
| color | 列出ANSI颜色 |
| copyskill | 复制对象的属性和技能 |
| data | 查看指定对象的存档数据 |
| dest | 从游戏中清除指定对象 |
| eval | 可以在指令中执行代码片断,方便测试 |
| ff | 查找指定对象中的函数是在哪个文件中 |
| findusr | 查找并返回指定玩家对象和连线对象 |
| find | 根据名称查找指定目录中的文件并返回列表 |
| goto | 传送指令 |
| guilei | 可以把游戏目录中的房间、NPC和物品做数据列表统计 |
| home | 回到开发者工作室 |
| ilist | 列出指定对象继承的所有对象 |
| info | 列出指定对象的相关资料 |
| ip | 查看玩家IP列表 |
| loadall/updateall | 加载游戏中的所有对象 |
| localcmds | 查看当前环境所有可用指令 |
| ls | 列出目录中文件 |
| mem | 查看游戏或指定对象内存占用 |
| nodie | 设置死亡保护(不是不会死,而是无损失) |
| overview | 列出指定主题的游戏对象和内存信息 |
| possess/fushen | 灵魂附体,占据别的生物的身体 |
| pwd | 显示当前工作目录 |
| qdef | 清理游戏中的自由任务 |
| qinfo | 列出游戏中的自由任务 |
| qload | 查看CPU占用情况 |
| rehash | 列新指令列表,如果在线新增了指令需要更新列表 |
| setsk | 设置技能等级 |
| smash | 秒杀别人 |
| status/status1 | 查看游戏系统占用信息 |
| summon | 召唤对象到当前环境 |
| telnet | 在线连接到其它游戏 |
| tongji | 统计所有在线玩家的技能数据 |
| ulist | 列出线上玩家和对象文件 |
| updatei | 编译更新文件和继承文件(不包括复制对象) |
| update | 更新文件代码 |
| variables | 查看指定对象的所有全局变量和非私有变量的值 |
| weight | 改变自身的重量 |
| where | 查找指定生物所在地 |
| which | 查找指令位置 |
| who1/who2/who3 | 查看在线玩家列表 |
| whoami | 我是谁 |
| whohave | 列出拥有指定物品的玩家 |
| whoride | 列出骑马的玩家 |
- 开发游戏场景
- 开发游戏角色(生物)
- 开发游戏物品
- 开发游戏装备
- 开发游戏技能
- 开发游戏任务