Sunset Reappears: Storm Rises Again II

✅ 可玩

夕阳再现

xyzx

🔑 fluffos(密码见 README) 更新 705d81f 2026-09-04 源码 下载 ZIP

▶ 开始游玩 · Play Now

《夕阳再现》之「风云再起II」:`logind.lpc`/`master.lpc`/注册流程和 `xysylmhb`(夕阳三-炎龙美化版)/`xyzxiiylzymh`(夕阳再现II-炎龙专用美化客户端)非常相似,但这份档案的地图才是真正的"夕阳再现"血统——和 `jhfy3`(江湖风云3)、`xajh4gkb`(笑傲江湖4公开版)、`xyzxyl201412`(夕阳再现-炎龙20141231,内容最扩充的后期版本)逐字节相同,四份档案共享同一套地图(`d/city/sj.lpc` 等),各自搭配不同的安全层实现;反而是打着同样"夕阳再现"招牌的 `xysylmhb`/`xyzxiiylzymh`,地图内容其实是完全不同的"天涯"家族,这批档案里"核心系统同源、地图各自独立替换"的模式在这里再次出现,品牌名称完全不能作为地图内容血统的可靠依据。新角色不是从常见的南城客栈,而是从北疆镇起步,一旁的"白家大院"("白家"是新疆一带对地主富户的称呼)营造出边塞风情,而不是这类游戏惯常的江南武侠味道,在本收藏里是相当罕见的中亚/新疆风格开局场景。登录/注册流程和 `xysylmhb` 一样是管理密码+登陆密码双密码机制,但和 `xysylmhb` 不同的是,这份档案的标准端口完全不需要走 Tomud 客户端握手——`master.lpc` 的 `connect(port)` 只有连到专门的 TOMUD_PORT 才会设一个临时标记,`logind.lpc` 只有那个标记被设置时才会走 `2060` 版本检查,普通端口直接跳过。

English

The "Storm Rises Again II" branch of the true Sunset Reappears lineage: unlike its similarly-"Sunset Reappears"-branded siblings xysylmhb and xyzxiiylzymh (whose maps actually belong to the unrelated "Tianya" family), this archive's world data really is byte-identical to jhfy3, xajh4gkb, and xyzxyl201412 -- four snapshots of the same authored map running on different security-layer implementations. New characters start not at the genre's usual South City Inn but at Northern Frontier Town, an unusually rare Central-Asian-flavored setting for this corpus, with an adjoining Bai's Family Courtyard (named for a term for a wealthy landowner in Xinjiang) evoking a frontier backdrop rather than the standard Jiangnan wuxia one. Its login/registration flow closely mirrors xysylmhb's (the same dual admin-password/login-password scheme), but unlike xysylmhb, this build's standard port skips the old Tomud client handshake entirely -- the literal "2060" version check only fires on a separate, dedicated Tomud-only port.

README

内容亮点

本次修复的关键 bug

同样借助本次会话新写的 scripts/lib_bulk_fix.py/scripts/ scan_known_bugs.py 提前抓出来:

1. uptime() 开机保护闸门(AGENTS.md §1.3(e) 既定处理方针): 改成只对非 loopback 连线生效。 2. check_legal_name() 的标准 §8.1 i%2 奇偶校验/[i..<0] 后缀切片写法is_chinese() 本身已经是正确的逐码点写法)—— 改成逐码点的 name[i..i]。 3. master.lpcvalid_read()/valid_write() 缺少 user == this_object() 短路判断——这份档案和 xysylmhb 一 样,原本就有一段用 previous_object() 判断的局部保护逻辑,为 了和这次会话建立的标准防御一致,额外补上了明确的短路判断。

httpd.lpc/dns_master.lpc 本来就已经在 preload 里被注释掉, 休眠状态,未作处理。

SECURITY_D 正确指向真正会读取 WIZLISTsecurityd.lpcglobals.h 里另一个 securd 路径是注释掉的),没有 §7.56 的双档 案歧义问题。

管理员账号 / Admin account

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

注册流程提示(供后续测试参考)

英文 ID → y(确认创建新角色)→ 中文名字 → 管理密码 + 确认 → 登 陆密码 + 确认 → 天赋菜单(0 随机整组,y 接受)→ 电子邮件 → 性 别(m/f)→ 进入游戏。

本地运行

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

游戏端口:40180

NOTES · 移植与修复记录

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

夕阳再现 之「风云再起Ⅱ」——夕阳三-炎龙美化版(xysylmhb)家族的原始基础版本;logind.lpc/master.lpc/注册流程几乎一致,标准端口上没有 Tomud '2060' 握手闸门(master.lpc 的 connect() 里有一个单独的 TOMUD_PORT 检查会设一个临时标记,logind.lpc 只在这个标记被设置时才检查它,所以普通的、相当于 telnet 的端口完全跳过这一步)。WASM 修复靠 scripts/lib_bulk_fix.py + scripts/scan_known_bugs.py 在第一次启动测试之前就主动抓出来:(1)一个 uptime()<30 启动宽限门槛(AGENTS.md §1.3(e),和 xyxyutf8 等档案同样的模式)——已对本地回环连线放行。(2)标准的 §8.1 check_legal_name() i%2 奇偶门槛/[i..<0] 后缀切片(is_chinese() 本身已经正确)改成了逐码点的 name[i..i]。(3)master.lpc 的 valid_read()/valid_write() 缺少 'user == this_object()' 短路判断(这份档案已经有一段基于 previous_object() 的局部保护,和 xysylmhb 一样——为了一致性又额外补上了标准保护)。httpd.lpc/dns_master.lpc 本来就已经在 preload 里被注释掉(原来就是这样,休眠状态)——保持原样。管理员账号播种:fluffos (admin) 加入 adm/etc/wizlist(SECURITY_D 正确指向 securityd.lpc,真的会读取 WIZLIST;globals.h 里另一个 securd 路径是注释掉的,没有 §7.56 的歧义问题)。注册流程在一次连续的 WASM 客户端会话里完整验证过:英文 id→y(确认新角色)→中文名字→管理员密码+确认→登录密码+确认→天赋菜单(0 随机,y 接受)→电子邮件→性别(m/f)→在客店进入游戏世界,look/score 都干净。管理员权限已通过"★ 您目前权限:(admin)"确认。LPC 格式化工具对全部 14000 个档案运行(写入 13888 个,75 个转档之前就存在的未结束字符串/文本块内容错误未做格式化——是目前这一批里最杂乱的代码库——37 个未改动)。没有 :: 父类呼叫拆分命中,没有 CJK 重新加空格命中;和 xysylmhb 一样的 2 处 case 标签带尾随注释的命中(cmds/bakcmds/csc.lpc、cmds/bakcmds/meskills.lpc,都是死代码备用指令副本)经 diff 复核干净。格式化后重新验证干净,管理员权限依然是 (admin)。

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

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

针对驱动升级(quest_times/win_times %-operator 修复 + Warning/warning 大小写回退兼容)做的重测,同时也是这份档案第一次真正的 §10.7 深 度游玩测试(此前只做过 WASM 阶段的注册流程验证)。这份档案(和手 足档案 xysylmhb 一样)用双密码机制:先设"管理密码"(用于账号安 全恢复),再设"普通密码"(日常登录用,系统会拒绝和管理密码相同的 普通密码)——已确认没有 tybxjh 那种把管理密码明文写进 help 文件的 §7.84 泄漏,也没有 feature/dbase.lpc 里 tybxjh/wlhd 那种密码写保 护 bug(这份档案压根没有 dbase.lpc 里涉及密码字段的守卫逻辑)。

发现并修复的 PROGRAMMING bug

1. get_resp()/get_name()adm/daemons/logind.lpc,CRLF 行 尾档案)各有一处调试残留 printf("%O\n", ob)(AGENTS.md §7.34-class):紧跟在中文名字确认之后,把连线桩物件的原始引 用直接回显给正在注册的新玩家。已删除两处。 2. log_error()adm/obj/master.lpc,实际生效的 master file)完全没有严重度检查(AGENTS.md §7.34-class):已加上 strsrch(message, "arning:") == -1 判断。 3. log_file()adm/simul_efun/file.lpc)完全没有 assure_file() 保护(AGENTS.md §7.11-class):已加上前向声明 + assure_file(LOG_DIR + file);。 4. §8.9 食物/饮水初始化判断的对象错了adm/daemons/ logind.lpcenter_world()ob->query("age") == 14(应为 user)。已改成 user->query("age") == 14

Proactive checks(无需改动)

实测过程

管理员 fluffos(管理密码 AdminMud@2026,普通密码 Mud@2026adm/etc/wizlist 早已播种但从未真正注册过)用完整注 册流程创建(id → y → 中文名 → 确认 y → 管理密码 ×2 → 普通密码 ×2 → 天赋(0) → 接受 y → email → 性别 m),落地"北疆小镇",score 显示"【玄法天君】"头衔,食物/饮水满格,debug.log 干净,未见调试 泄漏。随后单独一步做了真实断线重连+密码验证(用普通密码 Mud@2026):成功登录,存档数据一致。驱动按精确 PID 结束;管理员 存档已提交。

§7.100 跨库扫描修复(ROOM 冗余 replace_program() 关闭包炸弹,2026-08-19)

同一形状覆盖到几乎所有房间基类(机制详见 AGENTS.md §7.100)。本库属 于该扫描已知最大规模的 10 个库之一。二进制模式脚本机械删除了 5591 处独立、未注释的 replace_program(ROOM); 整行。另外手工清理了造房工 具代码生成模板里内嵌的同一形状,本库有两份完全同形状的拷贝 (clone/misc/roommaker.lpcu/fyue/misc/roommaker.lpc,各 1 处 字符串拼接,和同一 XYZX 血统的 longyunmeng/xyzxfk 完全一样的形状)。 删除总计 5593 行,与本次扫描 FINDINGS.md 记录的 xyzx 存活命中数完全 一致。

验证:干净启动一次真实调试驱动,端口 40180 正常监听, work/log/debug.log 全程无新增内容。用已播种的 fluffos/Mud@2026 管理员账号连线(沿用上方记录确认的密码),在北疆小镇/巴依家庭院之 间往返走了十余个房间(含 NPC 互动),look/score/who 均正常,未见任 何 "cannot replace"/"cannot bind" 或崩溃迹象。测试产生的 data/{login,user}/f/fluffos.o 存档时间戳 diff 已 git checkout 撤销,不提交。驱动按精确 PID kill。

§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-09-03,第三轮)

新角度:2026-08-13 第二轮只做了注册 + 普通密码重连,没测商店和拜 师。本轮用既有 fluffos/Mud@2026(中文名「浮浮」,男性,无门 派)。这份档案没有 xyzxyl201412 那种「巫师登陆效验码」额外一步。