- UID
- 296861
- 阅读权限
- 255
- 注册时间
- 2017-6-12
- 最后登录
- 2021-5-28
- 在线时间
- 910 小时
- 性别
- 男
教皇
- 耕战
- 3329
- 鹰币
- 16683
- 天龙币
- 0
- 回帖
- 1200
|
字符串表,又称语言文件。
征服者版时该文件为“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字符串表”),文件里面有如下提示(后面的中文的我加的):
- //INSTRUCTIONS:
- //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.
- //
- //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.
- //
- //说明:
- //如果你要在Steam平台上通过新建目录创建一个mod,在启动DE游戏时,某些文件会自动复制覆盖游戏本体目录里的同名文件。如果你想替换或者新增一些字符串,可以把它们放到这个文件里,当你的mod被启用时,这里的字符串也会被添加到游戏中。如果一个字符串不在本地mod语言文件里,那么将默认使用英文字符串文件。
- //
- //如果你想修改一个已存在的字符串,只需要把你想要修改的字符串复制到这个文件里即可,不要删除原始的字符串表文件。
- //
- 29101 "英文说明:官方"
- 29102 "文件原地址:游戏根目录\\resources\\en\\strings\\key-value(注意,除了“\n(表示换行)”之外的单反斜杠需要转成双反斜杠,否则整个文件将无法读取)"
- 29103 "翻译者:newtonerdai 翔鹰帝国论坛:www.hawkaoe.net"
- 29104 "蜀汉"
- 29105 "曹魏"
- 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楼。
- 5000 缺少英文双引号用来囊括本条字符串
- 5000 "在字符串中间随意插入英文双引号,如:我叫"newtonerdai",这是错误的。正确写法应是"newtonerdai",用反斜杠来将后一个双引号转义为普通字符;当然你也可以直接使用中文双引号。"
- 5000 "在字符串中间随意插入反斜杠,如悬崖 (\)。正确写法应是“悬崖 (\\)”,用第一个反斜杠来将后一个反斜杠转义为普通字符。当然你也可以直接使用全角反斜杠\。"
- 5000"左边这里缺少空格"
- 5000 "在字符串中途→
- ←手动换行,这是不行的,应该用“\n”作为换行符"
- 5000 "测试" 现在缺少注释符号,会导致错误
- 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后的对策
决定版精品贴大索引
|
|