40250 服务端名称快照
2026-09-28 从 192.168.21.203 的 player.item_proto 与 player.mob_proto 只读导出
vnum, HEX(gb2312name),按 GBK 解码为本目录的 UTF-8 TSV。导出时服务端配置为
LOCALE=newcibn、DB_NAME_COLUMN=gb2312name。客户端原型只修改 szLocaleName,
游戏属性和 VNUM 仍取自 40250 客户端原型。
| 文件 | 条数 | SHA-256 |
|---|---|---|
item_names_zh.txt |
5,743 | 5604985d7f11039f3d3e38d4e2c07995e80ca3e4f6deb01fe57cd772e9cd0f70 |
mob_names_zh.txt |
1,334 | fdbfe4b3f3367d5842c0e9bbe0b5e5ea2dbe99fb6e566ef5789f65d3794eab5c |
线上字段里的 1,608 个物品名及 346 个怪物/NPC 名不含汉字,本快照原样保留。
它们的审核译文(2026-09-28 确认)单独放在 item_names_zh_overlay.txt、
mob_names_zh_overlay.txt,界面回退键译文在 locale_game_zh_overlay.txt;
scripts/build_zh_locale.py 构建时以 overlay 覆盖快照同 VNUM / 同键的值。
中文译名以 server_extracted/40250_deploy 为优先参考;客户端技能和物品说明参考
server_extracted/client_locale/longju/locale/taiwan。与资料冲突的译名通过 overlay 修正,
线上原始快照保留不动。server_extracted/database 与部署表有少数地图名差异时采用部署表。
服务端名称若再更新,需重新只读导出并核对差异后更新本快照。
任务文本(translate.lua)
40250 的任务文本都通过 gameforge.<任务>.<键> 引用。game 启动时从 share/locale/<locale>/translate.lua 读取这些文本(questlua.cpp),
所以换文件后重启即可生效,不用重新编译 quest。
- 译文放在
quest_translate_zh.tsv,每行一条:<任务>.<键>、制表符、中文,UTF-8 编码。- 译文里的
[ENTER]是有意的换行;构建时每行按 50 列(汉字算 2 列)重新折行。 - 英文原文相同的其他键会共用同一条译文。
- 译文里的
- 还没有译文的键保留英文。
- 构建:
python3 scripts/build_zh_translate_lua.py build <输出>,输出 GBK 编码。- 构建逐行保留英文文件的结构(包括嵌套表),只替换字符串值。
- GBK 双字节字符的第二个字节可能是 0x5C(反斜杠),构建时会把它写成两个。
- 查看待译条目:
python3 scripts/build_zh_translate_lua.py todo <目录> --quests <命名空间,...>。 - 部署到 203:覆盖
/usr/metin2/server/share/locale/newcibn/translate.lua,然后重启。英文原件备份在同目录的translate.lua.en-20260930。
技能名称与说明(skilldesc.txt)
scripts/build_zh_locale.py 以 40250 的 skilldesc.txt 为底,逐行取龙驹同 VNUM 的名称、说明和条件列(2–8)
以及效果列(17/20/23)。客户端把效果列当作 _snprintf 格式串传入最小值、最大值,所以效果列只有在格式参数与英文一致时才替换。
skilldesc_zh_overlay.txt 按 VNUM\t列号\t译文 覆盖龙驹缺的或者不对的格。126–128 沿用资料里的吴/蜀/魏国方言;骑马技能说明沿用资料原文。
效果列仍需适配当前客户端格式参数,例如反射机率使用 %.1f%%。
整行覆盖(item_list.txt、itemdesc.txt)
item_list_zh_overlay.txt、itemdesc_zh_overlay.txt 每行是目标文件的一整行(UTF-8,第一列 VNUM),
build_zh_locale.py 用它替换同 VNUM 的行(ROW_FILES),其余行字节不变;VNUM 不存在就报错。
50307 保留用户确认的自定义名称“小狩猎套装礼包”及原有说明;71118 恢复为勇气披风+及对应说明。
70058 移动戒指(tools/server/ring-warp)的自定义说明保留;提取客户端资料没有该 VNUM 的说明。
图标与使用限制不属于本次翻译修改。
物品限制(item_limits_server.tsv)
服务端 item_proto.txt 里改过的物品使用限制(每行 VNUM、限制类型 0、值 0、限制类型 1、值 1;0 = 无,1 = 等级),
由 locale_proto_patch 写进客户端 item_proto,提示框显示的等级要求与服务端一致。其余字段仍逐字节校验不变。
物品说明(itemdesc_translate_zh.tsv)
40250 itemdesc.txt 的说明列(第 3 列)和摘要列(第 4 列,“Potion production”“Research”)按英文原文整句翻译,
一共 1,788 条,放在 itemdesc_translate_zh.tsv(英文、制表符、中文,UTF-8)。英文原文完全相同的物品共用同一条译文。
第 2 列物品名不改:客户端显示的名称来自 item_proto(见上文名称快照)。
- 客户端的 tooltip 走的是 40250 的西文路径(
uitooltip.SplitDescription):只在空格处断行,每行最多 35 字节, 遇到|x这种词会另起一行。构建时会把中文折成东方路径的宽度,也就是每行 26 字节(一个汉字算 2 字节),再用|连接各行。- 断行优先放在标点后面,标点不放在行首;英文单词和数字不会被拆开。
- 如果最后一行只剩一两个字,会把前面的行收窄一些重新折。
- 表里没有的格子保留英文,
zh-locale-report.json里的itemdesc.txt translation.english_rows会列出这些 VNUM。 itemdesc_zh_overlay.txt的整行覆盖在翻译之后执行,它的说明列也用同样的方式折行。
2026-10-01 资料对齐
修正 71118 的物品名和说明、16 个怪物/NPC/地图标记名及 12 个技能文本单元格。 50307 按用户要求保留自定义礼包。 UI 中为兼容当前客户端而调整的占位符、百分号及明显错字继续保留。
武器名称来源
武器译名以提取客户端 server_extracted/client_locale/longju/locale/taiwan/item_proto
的 szLocaleName 为准。该文件为 MIPX v1、记录宽度 152 字节,按类型 WEAPON(1)和
VNUM 匹配,不复制属性。它与 server_extracted/database、40250_deploy 的同 VNUM
名称存在差异;武器优先采用提取客户端原型,其他名称继续参考部署表。
本次修正 29 组武器的 +0~+9,共 290 条译名,例如武士刀→短刀、风雷剑→龙虎刀、
鬼牙剑→夺魂刀、碧玉刀→封神刀。逐条来源和修改前名称见 weapon_names_source_audit.tsv。
修改通过 item_names_zh_overlay.txt 生效,原始线上名称快照保留不动。
+6 镶嵌石配置修复(2026-10-02)
当前 203 的 28700~28713 原为 ITEM_NONE,与 server_extracted 备份不同。item_stones_server.tsv 恢复备份中的类型、佩戴位置、属性和六个 value 字段;locale_proto_patch 只允许这 14 条记录的对应字段变化,其余非名称字段继续逐字节校验。服务端同份配置在 tools/server/npc-shops/item-mall/stones.tsv,商店安装时恢复。已有背包内同编号石头也使用新配置。