Repository navigation
新增 cn-exclusive.mod 恢复国服独有内容;头像框全部解锁;测试兼容 2023-02 热更客户端 - #103
Merged
LunarConcerto merged 6 commits intoOct 24, 2026
Merged
Conversation
- 吹雪春节时装「爆竹天女」:config_fashion 2013014 在日服被 is_appear=0 隐藏,服务端本来就发放全部时装; 奥克兰春节时装恢复国服的 click_fs02 触摸动作与语音 - 春节风波(国服 2020 春节活动剧情,节点 50301-50307,剧情正文日服配置里已有)作为图鉴回忆章节 12010; 服务端新增 MemoryChapterModLoader 读取 Mod 的 memory-chapters.json 登记章节(illustrate.Memory 与 PlotCopy), 未登记时客户端不显示 - 10 艘舰娘共 90 篇国服独有角色剧情,客户端侧解锁(服务端不推送,避免未装 Mod 的客户端图鉴报错) - 宁海、平海中文语音:登录阶段用客户端自带的中文语音库改写库 ID、事件 ID 与 Play 动作的库 ID, 打成 AKPK 文件包写入 Mods/cn-exclusive.mod/cache 并挂载(Windows 上 AddBasePath 是空实现), 附国服字幕与誓约文本,只在语音确实生效时替换 - tools/export-cn-exclusive.py 从国服 1.5.120 与日服 1.4.0 配置生成 data.lua 与 memory-chapters.json(只含 ID 与文本) - Publisher 打包时跳过 Mods/<mod>/cache;MOD_DEVELOPMENT 第 12 章说明做法;新增 --memory-chapter-mod 测试 Claude-Session: https://claude.ai/code/session_01Un89pGsMN2GvkT9jh5Nz5i
打了日服 2023-02 最终热更(商店 104→202、道具 +211 等)的客户端上,3 个测试失败,修复后在热更前后两种客户端上都通过: - 商店目录测试不再写死 104 个商店,改为与 config_shop.db 的商店 id 逐一比对(且至少 104) - 红改造商店 1110-1112 按上游 LunarConcerto#82 的设计从 config_shop 货架取商品,测试改为按此断言,并检查商品确实在该商店货架上 - 测试统一经 TestSupport.FindClientPath() 取客户端路径(支持 BLUEOATH_CLIENT_PATH),不再各自写死 - item-names-zh.json 按热更客户端重新生成,覆盖热更新增道具 另修存档编辑页中文名:日服把不少 id 改作他用,脚本原先只要国服有同 id 就取其官方名(如島風確定箱被叫成「鳌盲盒」)。 现在只在所在表、图标、盲盒内容与名称中的数字都一致时才用国服名,例外逐条列在脚本里;其余用 zh-names-extra.json 的翻译(538→837 条)。 Claude-Session: https://claude.ai/code/session_01Un89pGsMN2GvkT9jh5Nz5i
离线服务端从不下发 playerheadframe.RefreshPlayerHeadFrame,客户端头像框页里所有头像框(包括默认头像框)都显示未拥有, 确认时只提示未拥有(290011),user.SetPlayerHeadFrame 根本不会发出。 - 启动时加载 config_player_head_frame(PlayerHeadFrameLoader,复用已有的 ConfigPlayerHeadFrame),登录同步里紧跟时装推送下发全部头像框 (TPlayerHeadFrameRet.ownedHeadFrames,逐条编码:客户端 protobuf.lua 的 packed 解码器注册有误),与时装全部解锁一致,不写存档 - user.SetPlayerHeadFrame 只保存配置里存在的头像框,其余回 Err=1,两种情况都推 user.UpdateUserInfo - 誓约头像框(2)的结婚条件由客户端页面检查,服务端不重复 - 新增单元测试与集成测试(-- --head-frame),protocol-coverage 文档同步 Claude-Session: https://claude.ai/code/session_01Un89pGsMN2GvkT9jh5Nz5i
Claude-Session: https://claude.ai/code/session_01Un89pGsMN2GvkT9jh5Nz5i
国服的春节家具套装(套装 5,家具 250041–250049)在日服客户端里模型齐全:9 件家具与日服装饰道具 36–44 是同一批模型(三个模型路径、类型、 位置都一致)。 - data.lua 插入套装行 5 与 9 行 config_interaction_item_bag(字段与日服行完全一致,show_type 0、reward 150172,名称保留国服中文); 日服缺的 *_124 图标改用每件家具已有的 picture,封面用灯笼的 picture - 新增 decorations.json,向服务端声明同样的套装与家具(指挥室装饰支持合入后生效,日志里出现 loaded 9 of 9 decorations and 1 of 1 sets) - 新开关 SETTINGS.spring_furniture;关闭(或 Mod 未加载行)时 main.lua 从装饰推送里去掉本 Mod 的 id,避免客户端遇到没有配置行的 id 报错 - 生成脚本同时产出 decorations.json 并自检;新增一致性测试(-- --cn-exclusive-mod);README 与 MOD_DEVELOPMENT 12.8 说明 Claude-Session: https://claude.ai/code/session_01Un89pGsMN2GvkT9jh5Nz5i
FrostFlops
added a commit
to FrostFlops/BlueRebirth
that referenced
this pull request
Oct 24, 2026
- PlayerAccount 末尾并列 Magazine 与 Decor 两个可空字段 - 登录同步:头像框推送之后推装饰推送 - MOD_DEVELOPMENT:装饰一节作为 11.5 放在第 12 章 cn-exclusive 之前,Mods 根目录引用改为 13.4 - CHANGELOG、protocol-coverage、测试列表两边都保留(集成测试顺序沿用上游) Claude-Session: https://claude.ai/code/session_01Un89pGsMN2GvkT9jh5Nz5i
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
问题
国服有几项日服没有的内容,而它们需要的资源其实都在日服 1.4.0 客户端里,只是被配置关掉或者没有入口:
config_fashion2013014 的is_appear = 0,换装页不显示。config_building_character_story没有列出。c_cl_ninghai_bank/c_cl_pinghai_bank(38 / 37 条),但 C# 按模型名只加载c_cl_*_jp_bank。click_fs02触摸动作与语音(动作、语音、字幕资源都在)。复现
日服客户端:吹雪换装页看不到「爆竹天女」;图鉴「回忆」里没有春节剧情;上面 10 艘舰娘在图鉴里没有角色剧情;宁海、平海只有日语语音。
根因
见上:内容都在客户端里,只是配置隐藏(
is_appear)、章节 id 被复用、角色剧情表没有收录,或者语音按_jp模型名取库。国服 1.5.120 配置里除春节风波外没有别的节日剧情(端午、七夕、中秋、国庆只有签到、礼盒与头像框)。修法
Mods/cn-exclusive.mod(客户端 Lua Mod,不带任何游戏资源)configManager.GetData/GetDataById,按expect字段核对后原地修改日服行(时装、节点名称、誓约文本等),补入新行(章节 12010、90 篇角色剧情);注入的 id 先于 SQLite 查询直接回答。SoundHelper.LoadSFX)读取客户端自带的中文语音库,改写库 ID、事件 ID 和 Play 动作里的库 ID,生成c_cl_*_jp_bank的中文版本(宿舍、情书两个共享库交换对应事件),打成 Wwise AKPK 文件包写到Mods/cn-exclusive.mod/cache/并用AkSoundEngine.LoadFilePackage挂载(Windows 上AddBasePath是空实现)。挂载后用探测库自检;只有语音确实生效的舰娘才换国服字幕与誓约文本。main.lua顶部的SETTINGS关闭;mod.json的enabled: false(启动器 Mod 页)关闭整个 Mod,客户端与服务端都跳过。MemoryChapterModLoader,读取启用的 Mod 的memory-chapters.json(规则同EquipmentModLoader:mod.json的enabled与targetClients),拒绝与客户端已有章节或关卡冲突的声明,经ChapterCopyLoader.RegisterModChapters并入(illustrate.Memory发送 (12010, 7),50301–50307 作为已通关 PlotCopy,50306 回忆战斗按 copy type 1 走)。没有声明文件时行为不变。tools/export-cn-exclusive.py:从国服 1.5.120 与日服 1.4.0 配置生成data.lua与memory-chapters.json(只含 id 与国服原文的标题、字幕、誓约文本),写出前回读校验,输出确定。Mods/<mod>/cache;.gitignore忽略它;docs/MOD_DEVELOPMENT.zh-CN.md新增第 12 章说明做法;Mods/bootstrap.lua加入口。验证方式
dotnet build .\BlueOath.Local.sln:0 警告 0 错误。dotnet run --project .\src\BlueOath.Tests\BlueOath.Tests.csproj --no-build -- --memory-chapter-mod:4 项全部通过(加载规则、幂等并入、随仓库的 Mod 数据一致、集成测试里登录推送与 50306 回忆战斗)。合入下面两项后,默认用例 79/79 全部通过(打过 2023-02 热更的客户端),--integration只剩已知基线的 5 项。xlua.dll与游戏原版字节码跑 23 个场景(补丁与 expect 跳过、注入行、与 future-chapter / custom-equipment 的钩子链、回忆章节隐藏、角色剧情合并、语音包构建与缓存、各种失败路径)。AkSoundEngine.dll离线挂载,确认c_cl_ninghai_jp_bank等从包里读取、其他库仍从磁盘读取。国服春节家具套装(b87a2de,依赖 #105)
data.lua插入套装行与 9 行config_interaction_item_bag(字段与日服行一致,名称保留国服中文);日服缺的*_124图标改用每件家具已有的 picture,封面用灯笼的 picture(略有拉伸)。decorations.json向服务端声明同样的 id,需要 指挥室装饰可用:家具套装、单件家具与海报全部持有并保存设置;新增 Mod 声明装饰 #105(指挥室装饰)的decorations.json加载器;指挥室装饰可用:家具套装、单件家具与海报全部持有并保存设置;新增 Mod 声明装饰 #105 未合入时这个文件不起作用,客户端行也不会显示。SETTINGS.spring_furniture。关闭时main.lua会从装饰推送里去掉本 Mod 的 id,避免客户端遇到没有配置行的 id 报错。-- --cn-exclusive-mod2/2;默认用例 80/80;Lua 离线测试 24/24;用 指挥室装饰可用:家具套装、单件家具与海报全部持有并保存设置;新增 Mod 声明装饰 #105 的服务端加载本 Mod 时日志显示loaded 9 of 9 decorations and 1 of 1 sets,指挥室装饰可用:家具套装、单件家具与海报全部持有并保存设置;新增 Mod 声明装饰 #105 的--decor与--decor-integration也通过。同一 PR 合入的另外两项
头像框全部解锁(e6e82fb)
playerheadframe.RefreshPlayerHeadFrame,头像框页里所有头像框(包括默认头像框)都显示未拥有,确认时只提示未拥有,user.SetPlayerHeadFrame根本不会发出。config_player_head_frame,登录同步里紧跟时装推送下发全部头像框(与时装全部解锁一致,不写存档;重复字段逐条编码,因为客户端protobuf.lua的 packed 解码器注册有误)。user.SetPlayerHeadFrame只保存配置里存在的 id,其余回Err=1,两种情况都推user.UpdateUserInfo。誓约头像框(2)的结婚条件由客户端页面检查。-- --head-frame),热更前后两种客户端都通过;所有头像框图标在两种客户端里都存在。测试兼容 2023-02 最终热更客户端;存档编辑中文名修复(3accb3d)
real shop stock×2 与item catalog Chinese names失败;另外tools/export-zh-names.py只要国服有同 id 就取其官方名,而日服把不少 id 改作他用,存档编辑页出现「島風確定箱 → 鳌盲盒」这类错名。config_shop.db的商店 id 逐一比对(且至少 104);红改造商店 1110–1112 按 红改造商店打开时的异常报错 #82 的设计从货架取商品,测试按此断言并核对商品确实在该商店货架上。TestSupport.FindClientPath()取客户端(支持BLUEOATH_CLIENT_PATH)。tools/zh-names-extra.json的翻译(538→837 条),item-names-zh.json按热更客户端重新生成(热更前的客户端是它的子集)。hero advance失败;--shop-stock、--save-editor等 13 组按主题的用例在两种客户端上都通过;改动的 167 个名称逐条复核。未包含
只在国服客户端里的资源(节日头像框、表情、杂志第 6 期、国服版 CG 等)、国服宁海/平海模型、摆件与国服独有的活动系统。这些需要国服客户端文件或额外的服务端系统,不适合放进这个仓库。
https://claude.ai/code/session_01Un89pGsMN2GvkT9jh5Nz5i