Xiao Ao Jiang Hu IV — Public Edition (Sunset Reappears)

✅ 可玩

笑傲江湖4公开版

xajh4gkb

🔑 fluffos(密码见 README) 更新 53f7647 2026-09-01 源码 下载 ZIP

▶ 开始游玩 · Play Now

游戏内品牌为"夕阳再现"之《笑傲江湖Ⅳ》,是作者阿飞在"炎龙"引擎核心基础上打造的第四代版本,其"世界之巅"跳崖场景与本项目收录的 jhfy3(江湖风云3)、xyzx(夕阳再现)逐字节相同,同属一支"夕阳再现"代码血统——需注意同样打着"夕阳再现"旗号的 xysylmhb/xyzxiiylzymh 实际上是完全不同的"天涯"家族地图,品牌名称并不代表血统。除了华山、武当、峨嵋、丐帮、少林等常见门派场景外,还有一整片同类档案里少见的海外区域——日本神户城(东门、海港、海鲜摊等场景),供玩家跨海历练;"杀手楼"是独立于正统门派体系之外的刺客势力,坐落在一座由"金刚神师"把守的豪门巨宅之中,走黑道路线。游戏支持专属客户端的自动地图与组队巡街功能,账号找回与自毁绑定在注册时单独设置、且不可更改的"身份标识"上,权限阶梯细分为 (ceo) > (boss) > (admin) 三级,档案里预置了两个 (boss) 级创始人账号。

English

Branded in-game as "Sunset Reappears: The Smiling, Proud Wanderer IV," this is the fourth-generation version author Afei built atop the "Yanlong" engine core, and a genuine member of that "Sunset Reappears" lineage — its "Peak of the World" cliff-jump scene is byte-identical to this collection's jhfy3 and xyzx (unlike another group of archives that reuse the same brand name but actually descend from the unrelated "Tianya" codebase). Beyond the familiar Huashan/Wudang/Emei/Beggars'-Sect/Shaolin sect map, it adds a whole overseas region unusual for the genre: Kobe, Japan (east gate, harbor, seafood stalls) for players to venture across the sea, plus the Killer Tower, an assassins'-guild faction that operates outside the orthodox sect system out of a lavish mansion guarded by a "Vajra Deity" enforcer. It supports a companion client with automap and street-patrol/party features, ties account recovery and self-destruction to a separate, unchangeable "identity marker" set at registration, and runs an unusually deep permission ladder — (ceo) > (boss) > (admin) — with two pre-seeded (boss)-level founder accounts.

README

内容亮点

本次处理内容

没有发现需要修复的程序 bug。唯一做的事情是在 /adm/etc/wizlist 里加入管理员账号(已有 afei/tianya 两个 (boss) 级创始人账 号;权限阶梯最高是 (ceo) > (boss) > (admin),但 (admin) 已 经足够获得 / 的完整写入权限,和本轮其他档案的惯例一致; SECURITY_D 正确指向 /adm/daemons/securitydglobals.h 里有一 条注释掉的 securd 分身档案备用行,未启用)。

注册流程比较特别:除了普通密码之外,还要单独设置一个"身份标识" (自杀、找回密码时使用,不可修改)。游戏内会夹杂一些 lbadd0/lbclear0 之类的自定义地图协议标记,这是给专属客户端用 的标记,不是错误。

深度功能测试(§10.7)修复的 bug

管理员账号 / Admin account

警告:对外公开架设前请务必修改此密码。

本地运行

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

游戏端口:40154

NOTES · 移植与修复记录

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

笑傲江湖Ⅳ(公开版),游戏内品牌「夕阳再现」,是在"炎龙"代码核心基础上的第四代分支。在 WASM 下启动并完整完成注册,没有任何编译或运行时错误——没有发现任何 LPC bug。唯一采取的行动:把 fluffos (admin) 播种进 adm/etc/wizlist(已有两个 (boss) 级创始人账号——afei/tianya;wiz_levels 顶层是 (ceo) > (boss) > (admin),但 (admin) 按 trusted_write 已经能获得完整的 '/' 写入权限,和本轮惯例一致;SECURITY_D 正确指向 /adm/daemons/securityd,globals.h 里有一条注释掉的 '// #define SECURITY_D "/adm/daemons/securd"' 诱饵提醒但未生效)。注册流程在一次连续的 WASM 客户端会话里完整验证过:英文 id→y/n 创建确认→中文名字→密码+确认→一个独立的"身份标识"(用于自杀/找回密码)+确认→天赋数值选择(0 为随机,y 接受)→电子邮件(需要 id@address 格式)→性别→带着完整角色属性表进入游戏世界,包括一串自定义地图协议标记('lbadd0'/'lbclear0' 等,无害的客户端标记,不是错误),全程没有任何意外错误。管理员权限已直接通过游戏内横幅"★ 您目前的权限:(admin)"确认。LPC 格式化工具对全部 16167 个档案运行(写入 16133 个,4 个报错,30 个未改动)。没有 :: 父类呼叫拆分命中,没有 CJK 重新加空格命中,没有 case 标签带尾随注释的候选。全部 4 个 map.lpc 档案确认内容完全相同(只是空白差异)。格式化后用同样的完整注册流程重新验证过——干净,管理员权限依然是 (admin)。

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

WASM 阶段"没有发现任何 LPC bug"的结论基本站得住(没有发现代码逻辑 bug),但深挖发现了一个会在普通游玩中反复打断玩家的资源限制配置问 题,此前从未被触发过,因为 WASM 阶段的测试范围只到"完成注册"为止, 没有继续在世界里走动。

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

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

针对升级后的驱动(quest_times/win_times %-operator 修复 + Warning/warning 大小写驱动兼容回退)做的第二轮 §10.7 重测。config.fluffos 里 round one 的 maximum evaluation cost(700000→5000000)修复仍 然在位,重测期间移动未再触发"Too long evaluation"崩溃。

发现并修复的 PROGRAMMING bug

1. log_error()adm/obj/master.lpc)完全没有严重度检查 (AGENTS.md §7.103 的又一确认实例)if (this_player(1)) efun::write("编译时段错误:" + message + "\n");——任何一次编译警 告(不只是真正的错误)都会原样丢给当前连线玩家,包括普通玩家在 正常游玩中触发的懒编译警告。修复:加上大小写不敏感的 strsrch(message, "arning:") == -1 判断,与本项目现行惯例一致。 2. log_file()adm/simul_efun/file.lpc)完全没有 assure_file() 保护(AGENTS.md §7.11-class)write_file(LOG_DIR + file, text) 前没有先建目录,而 assure_file() 恰好就定义在同一个文件里稍后 的位置。全档案所有 log_file() 调用点(feature/command.lpcfeature/condition.lpcfeature/move.lpcfeature/autoload.lpcinherit/char/npcsave.lpc、多个 d//clone/ 下的调用点等)都经 由这个 simul_efun,一次性全部修复。修复:assure_file(LOG_DIR + file); write_file(LOG_DIR + file, text);,并在文件顶部加了 void assure_file(string file); 前向声明(assure_file() 定义在 log_file() 之后,这个驱动不做前向解析)。 3. adm/daemons/logind.lpc 里两处遗留的 printf("%O\n", ob); 调 试残留(AGENTS.md §7.34 的形状):分别在"确认中文名字后进入密 码设置"的两条并行分支(手动输入名字 get_name()、接受随机名字 get_resp())里,每次注册确认名字后都会原样把 obfile_name(如 /clone/user/login#18)打印给玩家——live 实测已 确认复现(用测试号 gktestqq 注册时屏幕上出现了裸的 /clone/user/login#18)。两处均已删除该行,只保留紧邻的 ob->set("name", ...)。同目录下还有一份 logind碎梦.lpc,含相 同形状的调试残留,但确认全档案没有任何地方 inherit/call 它 ——是未接入编译树的废弃备份文件,未做改动。

§5/dbase.lpc 密码守卫检查:不适用

feature/dbase.lpcset(prop, data) 是纯粹的无守卫赋值,没有任 何 wizhood()/password 相关的特殊分支,跟 tybxjh/wlhd 那个类的 bug 形状完全不同。也没有单独的 ad_password 密码守卫代码路径。

管理员播种验证:round one 的 wizlist 条目此前没有对应存档

adm/etc/wizlistfluffos (admin) 这一条 round one 就已写入, 但 data/login/f/data/user/f/ 下都没有 fluffos.o——和本次重 测系列里其他几个 lib 遇到的情况一样,"wizlist 里看起来对"但从未真 正走过一次注册流程留下真实存档。本轮用 fluffos 这个 id 走了一次 完整注册(英文 id→y/n 创建确认→中文名"王五测"→密码 testpass123+确认→身份标识+确认→天赋 0 随机→邮箱 [email protected]id@domain 格式)→性别 m→进入游戏世界), 入世后游戏内横幅确认 ★ 您目前的权限:(admin)score 面板头衔显 示"天界总管"。强制验证步骤quit 断线后重新连接,输入 fluffos/testpass123 完成一次真正的断线重连,密码验证通过,管理 员权限保持 (admin)——不是只看世界进入和权限横幅就下结论,是真正做 了断线-密码-重连这一步。新产生的 data/login/f/fluffos.odata/user/f/fluffos.o 已提交,fluffos 现在是真正可用的种子管理 员账号。

移动/驱动兼容性检查

kediansouthupnorth 往返移动多次未触发任何"Too long evaluation"崩溃或其他异常,debug.log 全程只有一条无关紧要的编译期 Unused local variable 'time' 警告(preload 阶段产生,未连线玩家, 不受 §7.103 修复影响也无需影响)。

quest_times/win_times %-operator 修复:抽查确认在位

d/city2/npc/refereew.lpc 现有 to_int(query("win_times")) % 5, 是corpus-wide 2026-08-12 sweep(commit c571a53629f)已经打过补丁 的写法,无需额外改动。

未在本轮测试

拜师门派、商店购物、完整战斗到死亡/复活循环(round one 已用测试号 testrole/王五在北大街对郭靖打过一次完整的死亡/复活循环,本轮认为 不需要重复;本轮重点是驱动升级后的回归检查 + 正常游玩中顺手发现的 bug)。

深度功能测试(2026-08-19,round four,补测此前五项未测系统)

针对 round one/two 均标注"本次未测试"的五个系统做的专项补测:拜师门派、 商店购物、组队巡街、日本神户跨海区域、杀手楼路线。用全新测试号 rfourtest/肆轮测在真实驱动(~/src/fluffos/build-debug/src/driverbuild(ASAN/UBSAN) 目录在本机会因 evthread_use_pthreads 内的一条 非法指令直接崩溃,与本 lib 代码无关,改用 build-debug 正常启动)上 完整走完注册流程,全程通过 nc localhost 40154(而非 telnet,避免 telnet IAC 转义误报)驱动。全程 debug.log 始终为空文件,没有任何 一条编译/运行时错误——五项系统的机制本身均可正常触达和运行,没有 发现任何需要修复的 PROGRAMMING bug。

1. 拜师门派:找到新手盟教练 NPC「阿飞」(d/new/npc/xinshou-afei.lpc ,位于 fly newnorthwest),bai xinshou afei(注意:set_name 的 id 是整个 "xinshou afei" 字符串,单独 bai afei 找不到人,属于 命名习惯不是 bug)。以零级新号身份尝试,cmds/skill/apprentice.lpc 的等级门槛检查正常触发,返回"阿飞斜眼瞟了你一眼,就你这种实力还想拜 师?我不收无能之人。"——机制本身(feature/apprentice.lpcattempt_apprentice/recruit_apprentice)正常运行,用合理理由拒绝, 属于干净通过(EITHER 接受或拒绝都算通过,见任务范围说明)。顺手 观察,未改动kungfu/class/huashan/yue-buqun.lpcrecruit_apprentice() 覆写用 add("apprentice_availavble", -1)(拼写 错误,多了个 v),实际字段名是 apprentice_available——这个 typo 使得该 NPC 的"招满三个弟子就不再收徒"计数永远不会真正递减,可能是一 个真实的编程 bug(变量名打错),但没有观察到任何报错或崩溃,且是否 "应该限流收徒"本身是设计意图问题,按标准审慎存疑不动,仅记录在案。 2. 商店购物fly yz 进城后经 西大街→中央广场→东大街→杂货铺(或 d/city/zahuopu.lpc杨永福 老板,inherit F_VENDOR* 类似的自定义 do_buy/list)完成一次真实购买:list 正常列出货物表,buy budai 成功购得"麻布袋"一个,扣款/发货全部正常,无任何报错。未测试卖出(按 hell 教训,不同 NPC 是否收购属于内容设计,不在没有报错的情况下当 bug 处理)。 3. 组队巡街team found rfourteam 得到明确的拒绝提示——"鉴于组队 没任何用处,巫师关闭组队功能。"——这是巫师主动关闭的、带清晰理由的 拒绝,机制本身运行正常,不是 bug。进一步代码走查发现这与"组队巡街" 的抓奸细任务(quest/kangwo/teamjob.lpcask_jianxi():要求 2-4 人组队,随机分派到某条街道设伏拦截"日本奸细",正是"组队+巡街" 的字面对应)是一致的:该任务函数唯一被 #include 的宿主 NPC quest/hyhusong/wang.lpc(王坚,泉州守备)的整个 inquiry 映射表都 被注释掉了(连 job/fangqi 等其他条目也一并注释),也没有其他任何 活跃代码路径调用 ask_jianxi()。也就是说该任务在当前档案里完全没有 入口——但这和"组队"功能被巫师主动关闭一样,属于内容被有意停用/未完 工,没有任何报错,符合"内容缺失可能是有意为之"的判断标准,未改动。 4. 日本神户跨海区域:确认可达,且有两条独立路径:(a) fly dy 直达 /d/japan/zhongxin.lpc("这里是神户的中心");(b) 真实航海路径 d/quanzhou/haigang2.lpc("城外海港,有商船前往东瀛")enter chuan/d/feitian/dahai(有几率遭遇倭寇海盗)→ 20-50 秒后 rfeitian() 送达 /d/japan/haigang.lpc;日本境内另有 /d/gaoli/gangkou.lpc (高丽港口)到日本、日本到高丽的对向航线。本轮走了 (a) 路线并在神户 境内 市中心→east→街道(当铺/铁匠铺子)继续走了一步,房间/出口/ 描述均正常加载,无任何错误。 5. 杀手楼路线fly ssl 直达 /d/shashou/enterance.lpc("杀手楼大 门"),沿 north→north→north 连续穿过"小路"→"枫林"→"校场"(杀手楼 校场,含留言板),全程四个房间连续加载、出口正常、无任何报错。

标准清单巡检(§7.90/§7.111/§7.112/§7.113/§7.114/§7.115):全部确认在位/不适用

测试环境说明

~/src/fluffos/build (ASAN/UBSAN 编译) 在本机启动时于 evthread_use_pthreads() 内直接 Illegal instruction 崩溃(与 mudlib 代码无关的驱动/环境问题),改用 ~/src/fluffos/build-debug 正常启动, 干净监听 40154 端口,Initializations complete.。测试全程用 nc localhost 40154(tmux 会话)而非 telnet,避免 telnet IAC 转义把 中文字节误判为控制序列导致的假阳性。测试号 rfourtest/肆轮测已在 quit 时被游戏自身的"半小时内退出自动删号"机制清理,data/login/data/user/ 下未留下任何新存档,git status 确认无新增/改动文件。

AGENTS.md §7.100 修复(2026-08-19)

ROOM 基类冗余 replace_program(ROOM); 自崩溃地雷(详见 AGENTS.md §7.100):本 lib 4745 个房间文件的 create() 末尾(紧跟 inherit ROOM;)都有这一行多余调用,第一次对该房间对象绑定闭包会永久失败。 同款地雷也烤进了自带建房工具 clone/misc/roommaker.lpc 的字符串拼 接代码生成模板。

修复:脚本化删除所有房间文件里独立成行的 replace_program(ROOM);, 加上 roommaker.lpc 里手动摘除字符串拼接片段。git diff --stat: 4746 files changed, 1 insertion(+), 4747 deletions(-),与预期精确吻 合。

验证:build-debug 驱动真实冷启动,端口 40154 正常监听, debug.log 全程干净。既有管理员账号 fluffos/testpass123(本文 件上方记录)登录正常,goto 走访 14 个刚修复的房间(d/migong/ d/wizard/d/xiangyang/d/qingcheng/d/baituo/d/city/ d/zhongzhou/d/wanjiegu/d/wudang),均无 "cannot replace"/ "cannot bind" 新增日志行。走访过程中顺带遇到两个与本次修复无关的既 有问题:/d/migong/lev7/dong47 一场 NPC 战斗把测试角色打死(正常 游戏机制,非 bug);/d/wudang/bolin 的 NPC (kungfu/class/wudang/famu.lpccreate() 里呼叫 carry_object() 抛出 "*Read access denied."——均已确认与 replace_program(ROOM) 无关,不在本次修复范围内,如实记录未修。按 精确 PID 结束驱动;测试期间产生的 fluffos 存档增量(登录计数器 + 死亡状态)已 git checkout -- 还原。

§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.

§7.19 enable_player() reentrancy fix (2026-09-01)

Corpus-wide mechanical fix (AGENTS.md §7.19, Batch F of 6), byte-identical sibling of ylfyxa3's feature/command.lpc. Originally flagged as a possible false positive (pre-existing nosave int enabled = 0; flag, the shape confirmed sufficient on xiaoyuxiyou/xyxyutf8/xyxy2 in earlier batches) -- but this is NOT the safe shape: enabled = 1 is set AFTER enable_commands() returns, not before, so it does not guard the synchronous reentrant init()->setup()->enable_player() call that happens DURING enable_commands(). Confirmed the reachable chain is real: d/shushan/npc/zhangmen.lpc's init() unconditionally calls me->setup(), which unconditionally calls enable_player(). Fixed by adding a true in_enable_player_now reentrancy flag alongside the existing enabled bookkeeping variable (left untouched, disable_player() still needs it). Verified via single-file lpcc --batch PASS.