Xiong Ba Tian Xia III (Lord of the World III)

✅ 可玩

雄霸天下III

xbtxiii

🔑 fluffos / Mud@2026 更新 02441c3 2026-09-01 源码 下载 ZIP

▶ 开始游玩 · Play Now

这是一个真正的1997-2001年代 mudlib,据其自带 readme 承认,这其实是一次刻意的拼接:地图大部分区域借自 ES2、XKX 和风云等既有档案的地盘,只有一处原创区域——一座受小说《魔法师日记》启发、意在做"中西合璧"实验却因团队失去服务器而中途搁置的迷雾岛(本项目另一档案 ldtx 虽然同样打着"雄霸天下"的招牌,但经比对只与本作有较远的 ES II 共同祖先,并非同一血统)。角色创建混合了西式 MUD 的职业体系与中文武侠包装:选定性别后要从 A-L 共12种属性类别里挑一种,再从英文拼写的 `enchanter`(魔法师)/`fighter`(武士)职业里二选一。据作者自述,战斗系统是本作最大特色:战斗在3x3/5x5/7x7的战术网格上展开,讲究站位与法术射程的距离判定,比常见的"同一房间对砍"更有战术性。死亡后的鬼魂流程写得格外完整:鬼门大道→奈何桥→酆都城门→森罗殿→地狱入口,五段场景全程由"白无常"陪同念白,最后由阎罗王亲自判定阳寿未尽,送回阳间。

English

A genuine 1997-2001-era mudlib, by its own author's admission a deliberate patchwork rather than a single lineage: the archive's own bundled readme tells players not to bother exploring most of the map because it stitches together zones borrowed from the ES2, XKX, and Fengyun codebases, plus one original area — a foggy island inspired by the novel "Wizard's Diary," begun as an East-meets-West collaboration that was abandoned when the group lost its server. (A separate, unrelated archive in this collection, ldtx, uses the same in-game "Xiongba Tianxia" brand name but was confirmed to share only a distant common ES II ancestor, not this codebase.) The author's own notes single out its combat system as the standout feature: fights play out on tactical 3x3/5x5/7x7 grids with real positioning and distance-based spell ranges, a more tactical layout than the typical single-room exchange. Character creation otherwise blends Western MUD-style classes (a choice between enchanter and fighter) with the wuxia setting, and death leads into an unusually elaborate five-stage ghost journey — Ghost Gate Road, the Naihe Bridge, the gates of Fengdu, the Hall of Sen Luo, and Hell's entrance — narrated throughout by the deity Bai Wuchang and adjudicated by King Yama himself. The original archive shipped as four split zip volumes containing twelve directory-by-directory tar.gz files rather than a flat directory tree.

README

注册流程

new 触发注册 → 英文 id(3-10 个英文字母,游客请用 Guest)→ 确认 创建(y/n)→ 中文名字(1-6 个中文字)→ 密码 → 确认密码 → 性别(m/f) → 电子邮件地址 → 人物属性类别(A-L,12 种任选一)→ 天赋确认(Y/N) → 职业选择(enchanter 魔法师 / fighter 武士,英文拼写)→ 职业确认 (y/n)→ 进入一个简短的新手教程房间,再走到真正的起始区域。

内容亮点

本次修复的关键 bug

以上均为 WASM 阶段修复。以下为 §10.7 深度功能测试(实际注册+移动+ 留言板+战斗+死亡复活全流程游玩)新发现并修复的 bug:

管理员账号 / Admin account

管理员名单存储在纯文本文件 adm/etc/wizlist 里。

警告:这是一个公开的默认密码,仅供本地/浏览器试玩。正式对外开服前
请务必修改此密码。

在线试玩

https://mudlibs.fluffos.info/xbtxiii/

本地运行

cd libs/xbtxiii
~/src/fluffos/build-debug/src/driver config.fluffos

游戏端口:40201

NOTES · 移植与修复记录

WASM 修复摘要(迁移自 meta.json 的 group_note)

按它自己的说明是真正的 1997-2001 年代 mudlib(一个"风云"衍生分支);以 4 个分卷 zip(XB.ZIP.1-4)形式提供,需要二进制拼接,内部是 12 个按目录拆分的嵌套 tar.gz,而不是扁平目录树——转档前已经拼接解压;启动干净,零修复。完整 WASM 修复:修复了 logind.lpc 的 make_body() 里 seteuid(getuid()) 把 euid 重置掉的 bug;修复了 check_legal_name() 过时的 GBK 字节长度界限;给 securityd.lpc 的 get_status() 加上了防御性保护;这份档案里完全没有 band.lpc(logind.lpc 从未引用过 BAN_D,所以没有什么可保护的)。两个依赖 socket 的精灵编译失败,各自独立破坏了游戏的不同部分:adm/daemons/network/dns_master.lpc(跨服 intermud UDP,因为开机流程间接碰到它,破坏了每一次连线的登录)和 adm/daemons/network/smtp.lpc(原始 SMTP 发信,破坏了 natured.lpc 的周期性检查)——都按 AGENTS.md §7.52 掏空成 no-op。另外发现并修复了:一个缺失的 /topten/ 目录导致 toptend.lpc 在每次进入游戏世界时存档崩溃(已 mkdir -p 补上);cmds/usr/score.lpc 对 EXPLORE_D->query_total_explore() 做除法没有保护,而这个值在任何探索数据被扫描之前合法地是 0,导致全新安装下每一次 score 指令都崩溃(已用三元运算符保护)。注册流程到进入游戏世界、look/score/quit、管理员权限识别都已干净验证。注意注册流程既包含职业选择(enchanter 魔法师/fighter 武士,英文拼写)加上对这个选择的 y/n 确认,还有一个正式起始区域之前的新手教程房间。

§7.86 跨库扫描修复(留言板 post 崩溃)

深度功能测试(§10.7,2026-08-08)

WASM 阶段和 §7.86 扫描都只做过编译检查/浅层注册测试,没有真正玩过。这次用原生驱动(build-debug/src/driver)通过 scripts/tmux_mud.sh 完整走了一遍:注册(含中文名"风灵"、密码、性别、email、A-L 属性类别、天赋确认、fighter 职业选择)→ 新手教程房间(d/start_room/start_room1~start_room6,含 southdown/southeast/southwest 三个复合方向出口——确认这些不是 typo,而是 cmds/std/go.lpc 方向表里真实存在的合法方向,和 up/down 组合出的对角方向同一套设计)→ 真正的起始区域"有一间客栈"(d/fy/fqkhotel)→ 留言板 post/look board → 友好切磋 fight → 真实战斗 kill → 死亡/复活全流程 → quit/重新登录 → 管理员 update 写权限验证。全程无 driver 崩溃,debug.log 除下面两条外无异常。此档案和本轮会话已深挖过的其它库都没有确认的同源关系(README 自称"风云"衍生分支,但 AGENTS.md §11 的血统表里没有把它归入 风云3/风云Ⅳ/风云再起Ⅱ/夕阳再现 任何一支——本次没有发现和这些分支共享的 master.lpc/securityd.lpc/logind.lpc 结构证据),因此按 AGENTS.md 已知 bug 类别清单逐项排查,而非 sibling-check。

管理员账号(fluffos/Mud@2026)本次通过正常注册流程重新走了一遍确认——adm/etc/wizlist 里已有 fluffos (admin) 一行(应为更早的 WASM 阶段留下),注册后立即显示"目前权限:(admin)",update 验证 write ACL 正常,说明 §1.5 的既有 README 记录依然准确、无需改动或标记为过期声明。

深度功能测试(2026-08-13,round two,新驱动重测)

针对驱动升级(quest_times/win_times %-operator 修复 + Warning/warning 大小写回退兼容)做的重测,覆盖此前两轮(WASM 阶段、2026-08-08 的 §10.7)之后新出现或新引入的问题。

发现并修复的 PROGRAMMING bug

1. log_file()adm/simul_efun/file.lpc)完全没有 assure_file() 保护(AGENTS.md §7.11-class)write_file(LOG_DIR + file, text) 直接写,LOG_DIR 下的子目录若不存在会未捕获抛出。已加上 assure_file(LOG_DIR + file);(含前向声明,因为 assure_file() 本身定义在同一文件后面)。

Proactive checks(无需改动)

实测过程

新角色 xbtest/中文名"风灵二",完整走了一遍注册流程(id → 确认 y → 中文名 → 密码 → 确认密码 → 性别 m → email → 属性类别 a → 接受 y → 职业 fighter → 确认 y),进入"时空通道"新手教程房间,食物/饮水槽 满格,look/score 输出正常,quit 干净退出。随后单独一步做 了真实的断线重连+密码验证:用刚设的密码 xbtest/test12345 重新 连线,成功登录,存档位置("文庙")正确持久化,score 数据一致。 全程 debug.log 只有正常的编译期 Warning/note(Unknown #pragma、 未使用局部变量等)和三处已知的 "cannot replace a program with function references, ignored"(预加载阶段的良性提示,不是崩溃,出 现在房间文件而非留言板文件上,和此前 §7.86 扫描修复的留言板 replace_program() 死形状不是同一类,未处理)。驱动按精确 PID 结 束。测试角色存档(xbtest)及聊天名字缓存增量未提交,仅提交 file.lpc 的实际修复。

§7.100 房间基类 replace_program() 扫尾修复(2026-08-19)

ROOM 宏(/std/room)在本档案 2,174 处房间文件的 create() 里 紧跟 inherit ROOM; 之后又多余调用了一次 replace_program(ROOM); ——AGENTS.md §7.100 记录的同一个休眠 bug(多余调用给对象打上永久 "pending replace"标记,对象一旦绑定任何闭包就会崩溃)。这份档案 有 3 份房间生成工具副本(obj/misc/roommaker.lpccmds/wiz/roommaker.lpcd/ny/obj/roommaker.lpc),全部同一形 状。用 fix_710_room.py 扫过 work/,删除 2,171 处标准形状;三 份工具各剩 1 处字符串拼接变体 str += "...replace_program(ROOM);...",手工改成 str += "\n\tsetup();\n}\n";。修复后 work/ 下 0 处存活残留, 162 处转档之前已注释掉的 // 行原样保留,work/data/ 下没有真 实 .lpc 源码命中。git diff --stat 显示 2171 个文件净删 2174 行,与脚本自报数字 + 3 处手工编辑吻合。

驱动干净启动(零新增编译错误、端口正常监听、debug.log 无任何 "cannot replace"/"cannot bind"行),巫师账号 fluffos/Mud@2026 登录后确认"目前权限:(admin)",look/goto 走读了 2 个曾经命中 过这个 bug 的房间(u/quicksand/saiwai2.lpcu/quicksand/sandroad.lpc)均正常,quit 走完退出流程。登录存 档的时间戳增量已用 git checkout HEAD -- 撤销,未落入提交。

§7.30 uninitialized-mapping accessor sweep (2026-08-20)

Corpus-wide mechanical sweep of the feature/skill.lpc shared-lineage bug (confirmed independently on xiakexing2017/jqxz2015/haiyang2 via round-four testing): 4 accessor(s) in this file returned a raw never-initialized mapping instance variable (defaults to int 0, not ([]), until first assigned), crashing any unguarded keys()/sizeof()/indexing caller for a fresh/untrained character. Fixed at the accessor level (mapp(x) ? x : ([])) per the documented remedy. Verified via lpcc --batch static compile check only (not a live boot) as part of a large mechanical sweep; not individually functionally re-tested live on this lib.

深度功能测试补完(2026-08-23):邮件系统 + 门派拜师

补完前两轮 NOTES.md 里一直标记"未覆盖"的两项,均确认为正常可用, 没有发现真正的程序错误。用原生驱动(build-debug/src/driver)通 过 scripts/tmux_mud.sh,管理员账号 fluffos(游戏内中文名"风 灵")实测。

邮件系统——确认存在,此前"help mail 未命中"是正常的(不是 bug)

门派拜师——完整走通一次,score 正确反映新门派

结论

两个此前"未覆盖"项均已补测,均为设计/文档缺口而非程序错误,未 做任何代码修改。测试用的是持久化的管理员账号 fluffos,其存档 (data/login/f/fluffos.odata/user/f/fluffos.o)和测试期间新 建的 data/mail/ 目录均已用 git checkout HEAD -- / rm -rf 清 理干净,不落入本轮任何提交。