翔鹰帝国网|帝国时代论坛|帝国时代系列|神话时代
 找回密码
 注册翔鹰会员(昵称)
搜索
查看: 1824|回复: 3

[MOD修改] [教程整合] 字符串表mod/文本mod :多语种支持的利器

[复制链接]

183

主题

9

精华

2万

积分

教皇

耕战
3325
鹰币
15206
天龙币
0
回帖
1200

翔鹰建站十周年纪念章

附庸关系3
 楼主| 发表于 2020-6-28 00:11:30 | 显示全部楼层 |阅读模式
字符串表,又称语言文件。
征服者版时该文件为“Language.dll”“Language_x1.dll”“Language_x1_p1.dll”等。
决定版时该文件为“key-value-strings-utf8.txt ”,中文简体的字符串表位于目录C:\Program Files\Steam\steamapps\common\AoE2DE\resources\zh\strings\key-value



问1:字符串表是拿来做什么的?
答:每个语种都有一个字符串表,每个字符串表里每一串数字都对应了一串字符。
如下图,官方在简体、英文、繁体等语言的字符串表里给5068这个字符串ID对应了骑士的文字。于是在游戏里调用字符串ID“5068”时,如果你是简体玩家就会显示 "骑士",英文玩家则显示“Knight”,繁体玩家则显示“騎士”。这样一来,游戏就实现了多语种支持!




问2:字符串表能在自定义作品里使用吗?
答:可以的,决定版官方给我们留了个门路!
游戏安装目录\AoE2DE\resources\en\strings\key-value 这里有一个 key-value-modded-strings-utf8.txt 文件(我们姑且叫它“modded-strings”或者“mod字符串表”),文件里面有如下提示(后面的中文的我加的):
  1. //INSTRUCTIONS:
  2. //When you create any mod by creating a directory inside Steam, certain files will automatically copy over, including this file when you run the game. If you want to replace or add anystrings, place them in this file and when the mod is enabled, these strings will also be added. The english string file is a global fallback when a string cannot be found in the desired native language file.
  3. //
  4. //If you would like to modify an existing string, copy onlythe strings you wish to modify into this file, and do not delete them from the original file.
  5. //
  6. //说明:
  7. //如果你要在Steam平台上通过新建目录创建一个mod,在启动DE游戏时,某些文件会自动复制覆盖游戏本体目录里的同名文件。如果你想替换或者新增一些字符串,可以把它们放到这个文件里,当你的mod被启用时,这里的字符串也会被添加到游戏中。如果一个字符串不在本地mod语言文件里,那么将默认使用英文字符串文件。
  8. //
  9. //如果你想修改一个已存在的字符串,只需要把你想要修改的字符串复制到这个文件里即可,不要删除原始的字符串表文件。
  10. //

  11. 29101 "英文说明:官方"
  12. 29102 "文件原地址:游戏根目录\\resources\\en\\strings\\key-value(注意,除了“\n(表示换行)”之外的单反斜杠需要转成双反斜杠,否则整个文件将无法读取)"
  13. 29103 "翻译者:newtonerdai  翔鹰帝国论坛:www.hawkaoe.net"
  14. 29104 "蜀汉"
  15. 29105 "曹魏"
  16. 29106 "东吴"
复制代码

没有这个文件的,可以在这里下载——




问3:具体该如何创建一个字符串表mod呢?
答:接着看吧↓↓↓

操作步骤:【必读】
  • C:\Users\(你的用户名)\Games\Age of Empires 2 DE\(一长串数字)\mods\local 文件夹里,新建目录:(mod名称)\resources\(语言代码)\strings\key-value。语言代码:中文简体为zh,中文繁体为tw,英文为en,更多可自行百度
  • 把上面的 key-value-modded-strings-utf8.txt 复制到上面mod目录的key-value文件夹里。
  • 在mod字符串表里正确写上你要替换或增加的那些字符串ID和内容,注意我们不需要写入游戏全部的字符串。新手常见错误请看下面的格式规范
  • 进入游戏,导入本地模组,耐心等待10s~2min的卡顿,然后启用这个字符串表模组,置于最高优先级,重启游戏进入编辑器任意场景点击测试再返回编辑器即可生效。

附:字符串表格式规范:【必读】
1、决定版必须使用UTF-8编码,否则会视为无效文件。带有BOM的UTF-8也可能导致未知的bug。
2、谨慎使用记事本编辑!为图保险,可以用NotePad++、UltraEdit等文本编辑器编辑。原因见这个帖子的2楼和8楼。

  1. 5000 缺少英文双引号用来囊括本条字符串
  2. 5000 "在字符串中间随意插入英文双引号,如:我叫"newtonerdai",这是错误的。正确写法应是"newtonerdai",用反斜杠来将后一个双引号转义为普通字符;当然你也可以直接使用中文双引号。"
  3. 5000 "在字符串中间随意插入反斜杠,如悬崖 (\)。正确写法应是“悬崖 (\\)”,用第一个反斜杠来将后一个反斜杠转义为普通字符。当然你也可以直接使用全角反斜杠\。"
  4. 5000"左边这里缺少空格"
  5. 5000 "在字符串中途→
  6. ←手动换行,这是不行的,应该用“\n”作为换行符"
  7. 5000 "测试" 现在缺少注释符号,会导致错误
  8. 5000 "悬崖 (\\) \n普通单位无法跨越的障碍物,方向是"左上"到"右下"。" //双正斜杠是注释符号,一直到本行结束。这是这堆例子中唯一正确的一行。
复制代码


附:注意事项:【必读】
  • 一个字符串表文件只能服务于一个语种,所以如果你想对所有语种的玩家生效,就得每个语种的文件夹里都放一个字符串表,(可参考\AoE2DE\resources目录)。
    假如,你只做了中文简体(zh)的mod字符串表,而繁体玩家用的是中文繁体(tw),那繁体玩家就无法看到你修改的内容了,所以你需要再在zh文件夹旁边加上一个tw的mod字符串表才行。
  • 对字符串表mod做任何修改,都要刷新一次才能生效
    修改行为有四:①导入本地/订阅字符串表模组,②调整字符串表模组优先级,③新增字符串表或修改字符串表内容,④启用/禁用模组。
    刷新方法有二:①重启游戏,②进入编辑器任意场景点击测试再返回编辑器(其实开把单人游戏再退出也行)。
  • 如果你的mod里含有.dat文件,就必须把dat部分独立出来,因为目前加载数据模组时并不能同时加载其中的文本和图标。关于这个,你可以参考我的《决定版重组资料库》,就是把dat和文本拆成2个模组发布。
  • 如果多个字符串表模组包含了同一个字符串ID,那就会取优先级最高的字符串表模组的生效
  • 一些官方未使用的字符串ID:29000~30000、31220~34000。更多空ID可以自行通过文本排序找出来。(PS:我的重组资料库使用了22550~24100,希望不要占用导致冲突哦~)
  • 如果你的中文字符串表文件里有语法错误,那它就不会被读取并生效,而会使用英文版本的字符串表。如果游戏原本的英文字符串表文件也出错,那游戏就会直接无法打开。




问4:如何调用mod字符串表里的内容呢?
答:使用字符串ID啊!
1、如果是制作数据模组(改dat):
在AGE里,给单位的语言名称ID设置字符串ID。


如果想在AGE里实时查看修改过的字符串ID对应的内容,你可以先把key-value-modded-strings-utf8.txt另存为ANSI码,然后在AGE载入文件时,给“语言文件Language_p1”指定这个ANSI码的modded-strings文件。(如下图)。若遇到其他问题,可以看 AGE 2020发布帖 的疑难解答部分。


2、如果是使用做战役/场景:
在任何“字符串表 ID”的输入栏里输入字符串ID。游戏就会调用对应的文本了。另外,[修改属性] 的 [物体名称ID] 和 [简短描述ID] 也是要输入字符串ID的。


3、如果是制作选关界面和幻灯片:
在“Text”或者“String”后面直接指定字符串ID,游戏就会调用对应的文本了。(详情请参看《JSON真经》)




问5:战役/场景作者:编辑器里可以直接修改单位名称,字符串表mod好像没啥用武之地啊?
答:非也,非也。
我至少能想到这些用处:
1、你可以让你的战役或场景支持多个语种,比如简体、繁体、英文、日文……
2、[修改物体名称] 会独立化单位,使其无法再享受科技效果。而使用字符串表mod,你可以不用独立化单位就能修改单位的名称( [修改属性]→物体名称ID)。

不过这也会带来一个比较尴尬的问题:
1、玩战役之前,需要先去编辑器测试或开一把单人游戏,mod文本才能生效(亲测Build 37906里,进入战役游戏再返回并不能刷新文本mod)
2、开了场景房间后,如果是第一次玩的人进入房间,房主得提示他去编辑器随便测试刷新一次,再回来这个房间,mod文本才能生效。(并不是如此,联机场景时的BUG详见二楼)

希望官方能重视,让字符串表mod能订阅或导入就立刻生效,且发现修改就自动刷新。

除此之外,我们也可以用AI和触发来实现对 “是否成功载入字符串表mod” 的检测:
检测字符串表mod是否成功载入:多语种支持的利器




本文是对这几个帖子知识点的总结——
创建字符串表mod的方法
关于mod中文本和图标处理心得
决定版重组资料库 - 编辑器隐藏单位全开放
非完全重组资料库的制作方法,开放隐藏单位
关于自制字符串表MOD的若干问题求助

拓展资料:
AGE 2020.3.30 汉化补丁/完整包
创建本地mod的方法 + Build37650锁默认dat后的对策
决定版精品贴大索引

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册翔鹰会员(昵称)

x
索引:
Userpatch 实用技术贴索引←点击进入
决定版精品贴大索引←点击进入

战役:
《 兔与豹》——柔弱奴隶公主  猛兽口中求生←点击进入
《敛由国的统一》←点击进入

殊途战役制作群 QQ: 616317226
翔鹰帝国Ⅱ:决定版交流群 QQ: 112822759
回复

使用道具 举报

17

主题

0

精华

2062

积分

侯爵

耕战
358
鹰币
1983
天龙币
0
回帖
160

翔鹰建站十周年纪念章

附庸关系0
发表于 2020-6-28 21:51:09 | 显示全部楼层
本帖最后由 Nero§Claudius 于 2020-8-6 22:10 编辑

""

新桶,告诉你一个遗憾的事情。房间里面接收的文件是临时文件,退出房间就没了,再进入又要重新下载一次。这样的话场景附带的文本mod是永远不会激活的。
.
也就是说,路人玩家必须去订阅这个mod,再去编辑器激活才行,但没有那么多人有这个耐心。这就是为什么我不建议场景用文本mod的原因。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册翔鹰会员(昵称)

x
联系方式:
Hexagram Discord
Hexagram官方Q群:1072093811
代表作:
Empire Canyon
回复

使用道具 举报

21

主题

3

精华

1万

积分

征服者

耕战
3476
鹰币
2266
天龙币
0
回帖
220

第十三届火箭筒杯季军

附庸关系9
发表于 2020-9-25 20:43:43 | 显示全部楼层
本帖最后由 HudsonLee 于 2020-9-25 20:46 编辑

文本mod幻灯片应用:
2007 "无法加载游戏数据。"


如果文本未加载则显示:


如果文本已经加载则显示:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册翔鹰会员(昵称)

x

评分

参与人数 1耕战 +10 鹰币 +50 收起 理由
newtonerdai + 10 + 50 分享交流

查看全部评分

![/url]
回复

使用道具 举报

4

主题

0

精华

391

积分

子爵

耕战
57
鹰币
745
天龙币
0
回帖
50

翔鹰建站十周年纪念章

附庸关系0
发表于 2021-8-19 17:58:00 | 显示全部楼层
感觉有一个很重要的一点,发现如果Strings只做中文也就是zh的话会过动画之后直接闪退,MOD内必须要给一份en的才可以正常进游戏
回复

使用道具 举报

本版积分规则

排行榜|小黑屋|翔鹰帝国

GMT+8, 2024-4-25 03:12 , Processed in 0.125212 second(s), 56 queries , File On.

Powered by Hawk Studio  QS Security Corp.® Licensed

Copyright © 2001-2023, Hawkaoe.net All Rights Reserved

快速回复 返回顶部 返回列表