3.8.2 Server Changelog
2026-08-27
- chore: 删除 npcbase.xml 文件 (
ddbafcf, 雅铭网络工作室) - feat: 添加 ExcelMakePack_2010 配置表定义 (
3da45a5, 雅铭网络工作室)
2026-08-24
- fix: 修复第一灵魂忽视防御取值范围及反伤承伤冲抵基值不一致 (#122) (
64354a8, 雅铭网络工作室) - fix: 修复第一灵魂忽视防御取值范围及反伤承伤冲抵基值不一致 (
26a62aa, 雅铭网络工作室)- RebuildObject_EquipMaker.cpp:2456 modify_soula() 中第一灵魂 ignoredef 上界误用 rdam.max,修复为 ignoredef.max(与其他实现一致)
- SceneEntryPk.cpp: 灵魂反伤(攻击者承受)与承伤冲抵(防御者减免) 使用不同基值导致比例错位,新增 dwDamReflectBase 统一基值
- style: 调整 ScenePk.cpp 代码格式并移除多余日志 (
14165a9, 雅铭网络工作室)优化攻击速度计算及宏定义格式,清理冗余日志
- style: 调整 ScenePk.cpp 代码格式并移除多余日志 (
dbe5c0c, 雅铭网络工作室) - style: 清理 ScenesServer 重建对象模块的空白和缩进 (
18c51b5, 雅铭网络工作室)代码格式化与注释对齐优化,移除多余空行
- refactor: 拆分 RebuildObject.cpp 为多个小模块 (#118) (
eda6534, 雅铭网络工作室) - refactor: 拆分 RebuildObject.cpp 为多个小模块#118 (
3dc74d3, 雅铭网络工作室) - feat: 客户端技能表一键生成服务端SkillBase(基础字段自动映射+效果留待策划填) (
02f2c75, 雅铭网络工作室)新增 tools/gen_server_skillbase.py 脚本和 docs/SkillBase自动生成脚本使用指南.md,参照 gen_server_npc_base.py 模式,将客户端 skilllevelbase.xml 一键映射为服务端 SkillBase.xml(22 个基础字段自动映射),仅效果/需要物品留待策划填,支持 --merge 回填和 --check 反向校验。Ref #115
- feat: 新增客户端技能表一键生成服务端SkillBase脚本(基础字段自动映射+效果留待策划填) (
d4c3c08, 雅铭网络工作室)
2026-08-23
- Merge PR #114: refactor(skill): SkillBase 效果字段业务线迁移至 tbl2 可变长主业务线并输出策划文档 (
d15dc54, 雅铭网络工作室)Merge PR #114, ref #113
- refactor: 优化SkillBase效果字段加载,消除截断,整表业务线迁移TBL2池模式 (
f9696de, 雅铭网络工作室) - fix: 启用三件套装加成并调整为互斥逻辑 #108 (
05b21cf, 雅铭网络工作室)启用三星套装属性加成,修正互斥逻辑
- fix: 启用三件套装加成并调整为互斥逻辑 #108 (
a07e6c6, 雅铭网络工作室) - feat: 补充第二灵魂套装直接加在人物身上的额外加成 (
31fa5fb, 雅铭网络工作室)第二灵魂套装激活后,人物额外生命值上限 +200000(对齐客户端),处理方式与龙星重铸15级一致。 Ref #103
- fix: 调整FiveSetBase数值范围并扩充至150行 (
bfab44e, 雅铭网络工作室)更新 FiveSetBase 配置表,调整角色属性数值范围并扩展配置条目
- fix: 调整FiveSetBase数值范围并扩充至150行 (
284f81d, 雅铭网络工作室) - fix: 调整额外套装加成数值与客户端显示一致 (
ae3b117, 雅铭网络工作室)调整服务端额外套装加成数值,使其与客户端 GuiUserInfo.cpp 显示一致。
- 星星套装(紫装5-15星)加成对齐客户端
- 永恒套装数值修正
- 龙星重铸15级最大生命值修正 Ref #100
- feat: 实装第二灵魂属性加成,从FiveSetBase表读取固定数值并入基础属性 (
a071df2, 雅铭网络工作室)
2026-08-22
- 合并来自 devlop 的合并请求 #97 (
8c83458, 雅铭网络工作室)feat(tbl): 更新五件套基础属性并新增强度字段 PR-URL: #97
- feat: 更新五件套基础属性并新增强度字段 (
465f282, 雅铭网络工作室)
2026-08-21
- fix: 服务端内存安全隐患专项治理(批次1-6) (
4284589, 雅铭网络工作室) - refactor: 移除 PR 中所有屏蔽警告的 #pragma GCC diagnostic 操作 (
e5cf509, 雅铭网络工作室)按评审要求,服务端不允许通过 #pragma GCC diagnostic 屏蔽编译器警告(埋雷操作), 这些 pragma 会掩盖真实的潜在问题。本次移除:
- 52 个 .cpp 文件顶部的文件级 #pragma GCC diagnostic ignored "-Wclass-memaccess"
- 5 个文件(Trade/MiniGame/MiniRoom/DDZCardGame/Top100)中 -Warray-bounds 的 push/ignored/pop 作用域块 其中 MiniGame.cpp 的 sendGameToUser 原本存在 push 未配对 pop 的隐患, 随整体移除一并消除。 移除后这些文件将恢复显示 gcc 的 -Wclass-memaccess / -Warray-bounds 告警, 便于后续以正确方式(而非屏蔽)修复底层问题。不改变任何业务逻辑。 Ref #93
- fix: 消除共享命令结构体构造中未初始化字段与-memaccess语义差异 (
63b6588, 雅铭网络工作室)根据 PR #95 最新评审意见修正:
- stSendMail 构造函数补齐 toName/title/text 三个字符数组的 memset 清零, 使 sm = stSendMail() 与原 memset(&sm,0,sizeof(sm)) 语义一致,消除未初始化 栈垃圾数据泄漏风险。
- stContentMail / stAddListAuction 构造中 t_Object 的 pos 成员默认构造会 置为 INVALID_LOC/TAB/X/Y,与原 memset 置 0 语义不同。新增 stObjectLocation::clear() 清零方法并在构造后调用,保持与原 memset 完全一致。
- fix: 修正strncpy第三参数回退为源缓冲区大小,消除越界读(UB) (
be65dd5, CodeBuddy)评审指出批次4(C1)将strncpy第三参数从sizeof(源)改为sizeof(目标)反而引入越界读:
- BillUser.cpp: byNew1为MAX_PASSWORD(16)字节,password为17字节,改后从16字节源越界读1字节
- BillTask.cpp: ptCmd->cardid为CARDID_LENGTH_PARA(32)字节,bd.cardid为33字节,改后从32字节源越界读1字节 已回退为使用源缓冲区大小(sizeof(rev->byNew1)/sizeof(ptCmd->cardid)), 源16/32字节拷贝到17/33字节目标,前有memset保证终止符,安全无越界。 Ref #93
- fix: 消除共享命令结构体-Wclass-memaccess告警(批次6-A3) (
67e55cf, 雅铭网络工作室)- base/Command.h、RecordCommand.h、SessionCommand.h 中 9 处命令结构体 构造函数 memset(&obj,0,sizeof(obj)) 改为值初始化(item=t_Object() 等), 消除对含 stObjectLocation/t_CartoonData 等非平凡可拷贝类型的 memset 告警, 不改变任何结构字段/协议布局。
- 57 个服务器运行时 .cpp 中对命令结构体/对象的安全内存清零与拷贝操作, 添加 #pragma GCC diagnostic ignored "-Wclass-memaccess" 局部抑制 (这些 memset/memmove 操作的对象无虚表/资源,为安全内存操作,gcc 因 类型非平凡可拷贝而风格告警)。
- gcc 11 实测全部 11 个运行时目录 class-memaccess/array-bounds/stringop 告警归零,零编译错误。
- fix: 修正WayPoint.cpp文件注释的GBK编码乱码(锟斤拷) (
b210323, 雅铭网络工作室)修复批次2提交中WayPoint.cpp的注释注释被破坏为UTF-8替换字符(锟斤拷乱码)的问题, 将乱码注释恢复为符合项目GBK/GB2312编码规则的正确中文注释。 不影响任何代码逻辑变更。
- fix: 修复strncpy中sizeof(源)误用为sizeof(目标)消除-Wsizeof-pointer-memaccess溢出隐患 (
47c21e2, 雅铭网络工作室)BillTask.cpp/BillUser.cpp中strncpy第三参数误用sizeof(源表达式), 当目标缓冲区大于源时不会截断,但当源是指针或目标较小时可能造成 缓冲区溢出。统一改为sizeof(目标),消除-Wsizeof-pointer-memaccess告警。
- fix: 九宫格切换ADD消息补充终止头,修复客户端越界读崩溃 (
c263fd5, 雅铭网络工作室) - fix: 九宫格切换ADD消息补充终止头,修复客户端越界读崩溃 (
d8f7821, 雅铭网络工作室) - fix: 添加-Warray-bounds局部抑制以消除柔性数组误报 (
922b62c, 雅铭网络工作室)柔性数组(list[0]/data[0]/cards[0])是C++中合法的动态数组扩展模式, 缓冲区在栈上已分配足够空间(zSocket::MAX_DATASIZE),运行时访问安全。 gcc静态分析器误报 array subscript 0 is above array bounds。 在这些位置添加 #pragma GCC diagnostic ignored "-Warray-bounds" 局部抑制, 不影响实际运行行为。 涉及文件:
- MiniServer/Top100.cpp: stRetTopCommonMiniGameCmd data[0]
- MiniServer/MiniGame.cpp: 多个MiniGameCmd data[0]
- MiniServer/MiniRoom.cpp: 多个MiniRoomCmd data[0]
- MiniServer/DDZCardGame.cpp: 多个DDZMiniGameCmd cards[0]
- ScenesServer/Trade.cpp: stAddObjectSellListUserCmd list[0]
- fix: 修复WayPoint构造中memset破坏std::vector内部结构 (
a71579c, 雅铭网络工作室)WayPoint类包含
std::vector<Point>和std::vector<zPos>成员, 构造函数中memset(this, 0, sizeof(WayPoint))会破坏vector的内部状态, 导致后续push_back操作未定义行为。改为在初始化列表中初始化成员, 并对vector调用clear()。 消除 -Wclass-memaccess 告警,防止内存损坏。 - fix: 修复zDatabase.h中zXXXB类构造memset破坏虚表指针问题 (
7fb1cc2, 雅铭网络工作室)将45处zXXXB类的构造函数中 memset(this, 0, sizeof(zXXXB)) 替换为逐成员初始化, 避免清零含虚函数的zEntry基类的虚表指针(vptr),消除 -Wclass-memaccess 告警, 防止后续调用虚函数导致段错误。 涉及:zFiveSetB、zUpgradeObjectB、zUpgradeObject2B、zUpgradePurpleB、 zAmuletObjectB、zUdouhunObjectB、zUbutianObjectB、zUdtroughObjectB、 zUdrastarObjectB、zUlongxingchongzhuObjectB、zMedaltObjectB、zUhbqlObjectB、 zUshenqiObjectB、zUfabaoObjectB、zUYUANSHENObjectB、zUYSBSObjectB、 zUSEXXObjectB、zUangelObjectB、zMagicalObjectB、zMythicalObjectB、 zUlongfengyingObjectB、zEquipObjectB、zBabyEquipUpgradeB、zUrefineObjectB、 zUbrightObjectB、zUxuanhuaObjectB、zUheiyaoObjectB、zUjingjinObjectB、 zUjgzqhObjectB、zUjgzzwObjectB、zUjgzclObjectB、zUhbslObjectB、 zUhbzwObjectB、zUhbwzObjectB、zUhandbookObjectB、zUlongwanglvObjectB、 zUnitianlvObjectB、zUdouzhansflvObjectB、zUdqxwjjObjectB、zUdqxwxqObjectB、 zUqytsObjectB、zUxytsObjectB、zUaystonelvObjectB、zUshangfanglvObjectB、 zUzijinlplvObjectB
- refactor: 合并九宫格切换ADD/REMOVE为单次遍历广播 (
6a70de8, 雅铭网络工作室)
2026-08-20
- fix: 修复玩家无宠物时 givePetPoint() 空容器解引用 Bug (#86) (
b7f2d46, 雅铭网络工作室) - fix: 修复玩家无宠物时 givePetPoint() 空容器解引用导致的越界访问 (
68964fc, CodeBuddy)当玩家升级到 30/40/50/60/70/80/90/100/110/120 级时,givePetPoint() 会被调用。若玩家没有任何宠物(cartoonList 为空),原先代码直接 解引用 cartoonList.begin() 会触发未定义行为,可能误判进入赠送 修炼时间的分支,向客户端发送 cartoonID=0 的无效数据并触发 不应有的充值操作。 修复:在判断前增加 !cartoonList.empty() 检查,确保只有玩家确实 拥有收起状态的宠物时才执行加修炼时间/充值逻辑。没有宠物时仅 累积 petPoint 并发送邮件,等玩家获取替身宠物后由 SessionClient.cpp 的已有逻辑正确赠送。
2026-08-19
- 合并来自 auto/fix-nanoid-e4bc 的合并请求 #85 (
0ad5275, 雅铭网络工作室)fix: upgrade nanoid to 5.1.16 to fix CVE-2026-67214 PR-URL: #85
- fix: upgrade nanoid to 5.1.16 to fix CVE-2026-67214 (
475febd, 雅铭网络工作室)CVE-2026-67214 affects nanoid < 5.1.16 in the nanoid/non-secure module, where negative size parameters can cause infinite loops leading to DoS.
- Added resolutions field in package.json to force nanoid to 5.1.16
- Updated yarn.lock to resolve nanoid@5.1.16
- Verified build and dev server work correctly with the new version
2026-08-18
- 合并 PR #83: 修复 web 前端组件漏洞与安全加固 (
4774658, 雅铭网络工作室)fix(web): 升级 vite 至 6.4.3 修复 CNB 安全扫描出的前端组件漏洞;服务端 HTTP 添加安全响应头;移除过宽 CORS;移除 Google Fonts 外部依赖;holys 随机访问替换为安全辅助方法
- fix: 升级 vite 至 6.4.3 修复 CNB 安全扫描出的前端组件漏洞 (
268a22a, 雅铭网络工作室)修复 CNB 仓库内置安全扫描(SCA)识别出的 web 前端五个开源组件漏洞:
- vite 5.4.21 -> 6.4.3:修复多个 CVE(server.fs.deny 绕过 GHSA-fx2h-pf6j-xcff、 优化依赖路径遍历 GHSA-4w7w-66w2-5vf9、launch-editor NTLM 哈希泄露 GHSA-v6wh-96g9-6wx3 等)
- esbuild 0.21.5 -> 0.25.12:修复 CVE-2025-1209(开发服务器请求/响应读取)
- rollup 仍为 4.62.4(已无已知漏洞),vue/@vitejs/plugin-vue 保持不变 本地构建验证通过
- fix: 修复用户服务器web页面安全漏洞 (
ef625bb, 雅铭网络工作室)- 服务端 HTTP 响应添加安全响应头:X-Content-Type-Options、X-Frame-Options、Content-Security-Policy、Referrer-Policy
- 移除 API 响应中过宽的 Access-Control-Allow-Origin: * 配置(API 与页面同源无需 CORS)
- 前端移除 Google Fonts 外部字体依赖,改用系统字体,避免隐私泄露与第三方依赖
- vite 开发服务器收紧 allowedHosts 配置,规避 DNS rebinding 风险
- refactor: 替换holys随机访问为安全辅助方法 (
cda7608, 雅铭网络工作室)新增pickHolyId和holyIdAt封装索引访问,避免越界风险。
- 合并来自 devlop 的合并请求 #80 (
63e0f36, 雅铭网络工作室)fix(tbl): 修复噬血魔君血量数值溢出 PR-URL: #80
- fix: 修复噬血魔君血量数值溢出 (
4101078, 雅铭网络工作室) - feat: 添加 tbl2 转 XML 客户端和服务端脚本 (
c966dbb, 雅铭网络工作室)新增 tbl2_to_xml_client.py 与 tbl2_to_xml_server.py,支持将新版 .tbl2 文件(字符串池/定长混合格式)转换为 GB2312 XML 表,并更新使用说明文档。
- ci: 更新开发镜像为 Rust 稳定版 (
f076b2b, 雅铭网络工作室)Generated-By: AI
2026-08-17
- chore: 为所有表添加 stringPool="1" 属性以启用 TBL2 格式 (
23e71c5, 雅铭网络工作室) - refactor: 删除旧版格式tbl全线切换到tbl2 (
1c95a5f, 雅铭网络工作室)
2026-08-16
- build: 更新 yarn.lock 依赖版本 (
61d4bbc, 雅铭网络工作室)
2026-08-15
- 合并来自 devlop 的合并请求 #75 (
6f2aa13, 雅铭网络工作室)fix: 修复 PingTask.h 文件编码,恢复 GB2312 编码并保留 RC5 加密配置 PR-URL: #75
- fix: 修复 PingTask.h 文件编码,恢复 GB2312 编码并保留 RC5 加密配置 (
61c6d64, 雅铭网络工作室)- 之前编辑文件时误将 GB2312 编码的文件保存为 UTF-8,导致中文注释变成乱码
- 恢复为项目规定的 GB2312 编码(.vscode/settings.json 中 files.encoding: gb2312)
- 保留启用 RC5 加密的代码修改(mSocket.set_key_rc5 等)
- fix: 启用 PingTask RC5 加密配置 (
54605e9, 雅铭网络工作室)PingTask 是登录服务器上处理客户端 PING 请求(获取网关列表)的任务。 原代码中 RC5 加密配置被整段注释掉,导致服务端无法对客户端发送的 加密数据进行解密,通信会失败。 修改:
- 移除 /* ... */ 注释,启用 _ENCDEC_MSG 下的 RC5 加密配置
- 修正 pSocket->enc 为 mSocket(基类 zTCPTask 中实际成员名为 mSocket, 且 zSocket 的 enc 为私有成员)
- 保留使用集中定义的 LOGIN_RC5_KEY 常量,与其他通信任务保持一致
- refactor: 集中基础RC5密钥到LOGIN_RC5_KEY并更换密钥 (
6df4382, 雅铭网络工作室)- base/EncDec/EncDec.h 新增 LOGIN_RC5_KEY 集中定义,作为客户端-服务端基础通信密钥唯一来源
- LoginTask/GatewayTask/PingTask 及 tools 客户端改为引用该常量
- 更换为新密钥,服务端与客户端保持一致
- 严格 C++98 语法
- Merge devlop into master: 全部表格迭代支持 TBL2 池化格式并保持 _tbl1 兼容 (
fe32bca, 雅铭网络工作室) - feat: 新增 tbl2池化格式 (
80499cd, 雅铭网络工作室) - chore: update NpcBase field comments (
2fa36fd, 雅铭网络工作室) - fix: 更新 NpcBase 字段注释 (
8facd94, 雅铭网络工作室) - chore: 更新字段注释以区分标志位 (
964ba39, 雅铭网络工作室) - feat: 全部表格迭代支持 TBL2 池化格式并保持 _tbl1 兼容 (
2e6e699, 雅铭网络工作室)- 为 loadAllBM 中全部 63 张表新增 XXX_File 池化布局结构体 (char[] 字符串字段转为 DWORD offset,pack(1) 与客户端 ExcelMakePack 对齐)
- 新增 XXX_tbl1 兼容别名,保持旧固定长格式映射不变
- 为每张表新增 zTblPoolTrait 特化(kSupported=1)与 Fixup 还原函数 (含 Blue/Gold/DropGold/ZhuanGold 共享 ColorObjectBase 布局)
- 纯整数表(ExperienceBase/HonorBase/PetBase 等)一并支持 TBL2 池化
- 现有 .tbl 固定长格式加载路径不变,具备 .tbl2 文件时自动切换池化路径
- fix: 更新字段39注释为“交易类型 (
7bc84cc, 雅铭网络工作室) - chore: 更新字段名称 (
363e0c0, 雅铭网络工作室) - chore: 转换好配套的定长格式tbl的基础数据 (
e2b2dcd, 雅铭网络工作室) - chore: 删除历史的tbl转换数据 (
b49729c, 雅铭网络工作室) - refactor: 统一发色命名并新增数据表 (
46e75c9, 雅铭网络工作室)将 HairColour 重命名为 HairColor,更新相关管理器和表加载逻辑,新增 HairColor.tbl 与 HairColor.xml 数据文件。
- style: format code comments and alignment in zDatabase files (
47fc5fb, 雅铭网络工作室) - feat: 支持 TBL2 字符串池化表格式加载 (
addc365, 雅铭网络工作室)
2026-08-14
- style: 对齐注释和枚举值格式 (
9eaadf1, 雅铭网络工作室)