Tales of Wulin Heroes mudlib

✅ 可玩

武林群侠传 MUDLIB

wlqxcmudlib

更新 8032d05 2026-09-13 源码 下载 ZIP

▶ 开始游玩 · Play Now

炎黄/武林群侠传完整引擎。7z 解压密码 `mud.ren`。端口 40268。

English

A complete 炎黄/武林群侠传-lineage mudlib (adm/single/master, same yh 2003 engine as yanhuangwuhun). The 7z header is encrypted; a GBK trailer after the archive end states 解压密码: mud.ren. Converted from GB18030 and assigned port 40268.

README

登录:英文 id → 中文姓/名 → 管理密码 → 普通密码 → 类型 1–5 → 性别。 新角色落在世外桃源。管理员 fluffos / 云游,登录 Play2026x, 管理 Mud@2026,落地扬州客店。WASM look/score/quit 可用。

NOTES · 移植与修复记录

wlqxcmudlib(武林群侠传 MUDLIB)-- porting notes

Archive 武林群侠传MUDLIB.7z(编号 931)7z 头加密,档尾有一段明文 GBK:

MUD
游戏QQ群:9783836
解压密码: mud.ren

7z t -p'mud.ren' Everything is Ok。Lib/ 是完整的炎黄/武林群侠传引擎(adm/single/master.c,与 yanhuangwuhun 同一 yh 2003 头)。

convert_lib.sh … GB18030:already_utf8=476 converted=10572 lossy=8 skipped_binary=15;10265 个 .lpc。端口 40268

运行时补了 yh 血统两处(与 yanhuangwuhun/zhyx 相同):

1. adm/daemons/versiond.lpcget_config(__MUD_PORT__) 在这个驱动上是字符串,socket_bind() 要 int,加 to_int()。 2. adm/simul_efun/message.lpc:第四参 exclude==0 不能直接丢给 efun(§15s),按有无 exclude 分两路。

注册路径还要 §15h 的 UTF-8 姓名检查:adm/simul_efun/chinese.lpcis_chinese()logind.lpccheck_legal_name/组合长度、 named.lpcPATH() 与滑动窗口,都从「GBK 字节」改成「汉字字符」。 管理员 fluffos 已写入 adm/etc/wizlist

clone/user/user.lpcaccept_kill() 把 object 传给 is_killing(string),本树的 feature/attack.lpc 没有 yanhuang 那份 mixed 签名,user 物件编不过,新号 make_body 失败、指令全是「什么?」。 改成 is_killing(ob->query("id")) 后,qinfeng/秦风 走完整注册进 世外桃源(水笙、狄云在场)。logind.lpcMESSAGE_D->find_chatter 也加了 find_object 保护。

商店付费购买(2026-09-04 librarian shop slice)

手足 yanhuangwuhun 2026-09-03 的路径可套:醉仙楼买烤鸡腿、丐帮黎生拜师。 本轮注册了真正的 admin fluffos/Mud@2026(登录密码 Play2026x,中文名 云游)。第一行就是英文 id,没有 GB/Big5 选择。落地世外桃源 /d/register/entryregister [email protected] + decide + west 花铁干(阴险奸诈)+ out 阎罗殿,washto 20 20 20 20born 扬州人氏 进扬州客店 /d/city/kedian。提示是每秒时钟(env/prompt = time), mudclient.py--idle 0.40.6help/rules 仍是生 GB18030,分页 打断第一次 look,是 yh 血统已知内容缺口,不是本轮新 bug。

修了两处真编程 bug

1. goto 第一次触发 MESSAGE_D 崩溃(AGENTS.md §7.89 形状): /adm/daemons/network/messaged.lpccreate()my_port = LOCAL_PORT() + MESSAGE_PORTLOCAL_PORT()(int) get_config(__MUD_PORT__),这个驱动上 get_config 回字符串, (int) 不强制转换,"" + 10 变成字符串 "10"socket_bind()Expected: int Got: "10",整条 goto 中止。本树 versiond.lpc 进口时已经用 to_int(get_config(__MUD_PORT__)) 修过,messaged 漏了。已改成同样的 to_intsocket_bind 两处也包 to_int(my_port)send_udp() 加了 !socket_id 守卫。修复后 goto /d/city/zuixianlou 干净落到醉仙楼。

2. clone/log/nosave/ 不存在崩溃(§7.11): adm/simul_efun/file.lpclog_file() 直接 write_file(LOG_DIR + file),没有 assure_file()。巫师 clone /clone/money/gold/log/nosave/clone 时报 Wrong permissions ... No such file or directory,物件没变出来。已加 assure_file 前向声明并在写入前建 目录。修复后 clone 回「黄金复制成功」,i 见到一两黄金。

本机 debug.log 这轮没打开(log directory : /log 是绝对路径,驱动 cwd 进 work 之后没有对应 fd)。运行时错误当时打在玩家屏幕上。

商店

goto /d/city/zuixianlou,店小二 list 给出牛皮水袋/干粮/包子/烤鸡腿 (八十文铜板)/烤鸭/牛皮酒袋。clone /clone/money/goldbuy jitui live 回「你从店小二那里买下了一根烤鸡腿」。i 为九十九两白银 + 二十文铜钱 + 烤鸡腿 + 零两黄金。扬州客店的 list 会先打到北丑(只卖 消息),要用醉仙楼的店小二。

拜师(2026-09-04 续:command_hook §8.3a)

同一次 wakeup 里先确认不是 living() 缺口:call li->query_commands() 已经登记了 command_hook"", flag 1)和 path {/cmds/std/, /cmds/skill/}bai li 也确实进到了 attempt_apprenticef li to say 却回「黎生无法执行你的命令」。 手足 yanhuangwuhun 已经是 nomask int command_hook(没有 private)。

根因是 AGENTS.md §8.3a:feature/command.lpcprivate nomask int command_hook 被 inherit 后降成 DECL_HIDDEN。玩家手打 动词走 ORIGIN_DRIVER,NPC command() efun 走 ORIGIN_EFUN,apply 静默回 0。 本树是 2026-09-04 进口的,corpus sweep 之后才进来,所以还带着 private

已改成 nomask int command_hook(只去掉 private)。重启后:

商店切片上一轮已经付费买过醉仙楼烤鸡腿,本轮没有重做。

WASM (2026-09-11 leftover 653)

versiond.lpc 直接调用 socket_create/socket_bind/socket_listen, WASM 没有 sockets 包,daemon 编成 *No programlogind.lpc 两处 VERSION_D->is_version_ok()closed.lpcheart_beatfind_object 守卫,登录在 id 提示前就断、心跳反复重编。已按 yhwhckdm 同形加上守卫(punishd/storyd 的同步闸也加了)。 ftpd/dns_master 同样编不过,preload catch 掉,不挡登录。

提交了管理员 fluffos 存档(登录 Play2026x,管理 Mud@2026, 中文名云游)。wasm_client.jsfluffos / Play2026x → 扬州客店 /d/city/kedian(北丑、店小二),look 同文,score「普通百姓 云游」,quit「欢迎下次再来」。wasm_status 改为 playable。 提示仍是每秒时钟,--idle 0.5

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

原生 driver 端口 40268,fluffos / Play2026x。stdout → /tmp/wlqxc-driver.out。slug libs/wlqxcmudlib/log/debug.log(§10.9) 与 mudlib work/log/logmaster->log_error())都查了。

发现并修复

1. LOCAL_PORT() 仍用 (int) get_config(__MUD_PORT__),FluffOS 上 不强制转换。 dns_mastermy_port = SRVC_PORT_UDP(mud_port()) 变成字符串 "4",preload 时 socket_bindExpected: int Got: "4"。商店切片已修过 messaged/versiondto_int,宏本身漏了。已改 include/getconfig.hLOCAL_PORT()to_int(get_config(...))

2. inherit/misc/quest.lpcset_information(string key, string info) 过窄(AGENTS.md 已归档形状)。 ambient quest daemon 冷编 clone/quest/{deliver,judge,…}Bad type for argument 2 (string vs function),物件 *No programheart_beat 反复刷错。 已改成 mixed info。手足 yanhuangwuhun 同修。

3. §4.1 扩展名缺失的 GBK 文本: help/rulesclone/game/{8,21}_hlp 仍是生 GB18030(NOTES 商店切片已点名 help/rules)。iconv -f GB18030 -t UTF-8 转完;help rules 现场 可读「【游戏规则】」。全树 UTF-8 扫描剩余命中只有字体二进制 (adm/etc/font/*kungfu/skill/huashan-quan/MFM1992),不是文本。

游玩证据

日志

修完重启后:boot + 约半分钟 ambient quest 心跳,slug debug.log / stdout socket_bind Bad argument、 quest Bad type / *No programwork/log/log 本轮尾部无同类命中。

未改

管理员运行时存档未提交。木人对新手的经验门槛未动(设计)。