解释如何使用Visual Studio生成新的ModText.dll文件。告别文本显示异常问题。 简介 文本编辑是制作《不可能的生物》新模组时一个常被忽视但至关重要的环节。无论你是在游戏中添加新的基础生物、创建战役任务,还是修改用户界面,都不可避免地会接触到游戏的本地化系统,即ModText。这是一个位于游戏“locale”目录下的.dll文件,包含你的模组所需显示的所有重要信息文本。 传统上,此文件通过资源编辑工具Resource Hacker进行编辑。但遗憾的是,对于这样一个包含大量字符串的大型文件,Resource Hacker使用起来可能较为不便,而且在过去几年中,编译ModText...此软件附带的动态链接库存在缺陷,可能导致文件在不可预知的时间间隔内变得无法被《不可能的生物》读取。如果《不可能的生物》没有其他区域设置文件可作为备选,受影响的模组将完全停止工作。 实际上,这就是多年前困扰Tellurian的臭名昭著的“韩语bug”的根源。由于Tellurian拥有多种本地化语言,《不可能的生物》能够切换到下一个可用的ModText文件,而不是无法加载模组。在大多数情况下,这会是韩语本地化文件。大多数玩家的《不可能的生物》安装默认不支持韩文字符,因此所有模组特定文本都显示为问号。 截至撰写本文时,此bug仍在发生,并且已在至少三个不同的模组中被发现。 从ModText导出资源。幸运的是,有一种更好的方法来编辑游戏文本。本指南将引导模组开发者通过使用Microsoft Visual Studio从.rc资源创建全新的ModText.dll文件的过程。 所需软件: Microsoft Visual Studio Community 2022 Resource Hacker(我们仍需要它来执行简单操作) 将ModText内容导出为.RC资源: 第一步是将.dll中的所有文本字符串导出到.rc文件,该文件稍后将作为我们新.dll的基础。使用Resource Hacker打开ModText.dll,然后导航到窗口顶部的“Action”下拉菜单。选择“Save ALL Resources to an RC File...”。

我建议将此文件简单命名为“modtext.rc”,并保存到容易访问的位置。 准备你的.RC文件: 创建好文件后,在使用Visual Studio前我们需要做一些调整。用你选择的文本编辑器(我推荐Notepad++)打开新建的.rc文件。你应该会看到类似以下内容: STRINGTABLE LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US { 34000, "Albatross" 34001, "Alb" 34002, "atross" 34003, "信天翁是一种凶狠的大鸟,会咬掉你的脚趾。" } 这应该与你在Resource Hacker中看到的内容相似,也非常接近我们需要的格式。不过,还需要做一些调整。首先,我们要让它包含一些系统文件。在文件顶部添加以下内容: #include <windows.现在我们需要对字符串表的声明方式进行一个小修改。由于数量太多,无法手动逐个处理,因此我们将使用大多数文本编辑器中通过Ctrl+H访问的“查找和替换”功能。在“查找”字段中输入STRINGTABLE,在“替换”字段中输入LANGUAGE 9, SUBLANG_DEFAULT。然后点击“全部替换”。接下来,重复此过程,在“查找”字段中输入LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US,在“替换”字段中输入STRINGTABLE。再次选择“全部替换”。你的文件现在应该看起来像这样: #include <windows.h> #include <commctrl.h> #include <richedit.h> #include <winresrc.LANGUAGE 9, SUBLANG_DEFAULT STRINGTABLE { 34000, "信天翁" 34001, "信天" 34002, "翁" 34003, "信天翁是一种体型庞大且凶狠的鸟类,会咬掉你的脚趾。" } 现在我们准备创建Visual Studio项目。 配置Visual Studio项目 创建项目: 此时你需要安装Visual Studio。在安装过程中,请确保选择标题为【使用C++的桌面开发】的工作负载。 现在,启动Visual Studio并按照指南创建一个新项目。为简单起见,建议再次将项目命名为ModText。请跳过创建新.rc文件的步骤,因为我们已经准备好了。确保按照步骤5中的链接说明如何指定/NOENTRY链接器选项。这一点非常重要,如果你不这样做,你的文件将无法正常运行。 编辑文本: 现在你已经创建了项目并添加了.rc文件,让我们查看一下以确保所有内容都正常。在解决方案资源管理器中右键点击你的文件,然后点击查看代码。

当我们在文本编辑器中修改文件时,你应该会看到与之前相同的文本。从现在开始,这里就是你编辑模组文本的地方。与Resource Hacker不同,现在你还可以通过输入//并在其后添加文字来留下注释。例如,// 这是一条注释。这有助于进行标记,并且这些注释不会在游戏内显示。创建新字符串的过程也比以前更简便,而且在创建时你应该不会遇到像在Resource Hacker中可能出现的那种难以解释的错误。 为32位系统进行配置 无论如何,完成这些步骤后,在准备构建之前还有一件事需要检查。由于《不可能的生物》已有20多年的历史,我们需要确保解决方案生成的是32位(x86)的.dll文件,而非更现代的64位(x64)文件。在解决方案资源管理器(我们添加.rc文件的同一位置)中,右键单击项目并选择属性。在窗口顶部,确保平台设置为Win32。

默认情况下很可能已设置为x64,因此请确保不要跳过此步骤。现在点击配置管理器并重复此步骤,确保同时更改项目配置。

构建你的DLL文件: 至此,我们已准备好进行构建。返回你的项目,从窗口顶部的“生成”下拉菜单中选择生成解决方案。你可以通过底部的终端查看是否有任何错误,若一切正常,你将看到显示构建成功的文本。 将新DLL添加到《不可能的生物》: 要获取新构建的DLL文件,请在Windows资源管理器中导航至你的项目(Visual Studio通常将项目保存在C: users <你的用户名> source目录下),然后打开Debug文件夹。先备份旧的文本文件,再将新的modtext.dll复制到你的模组的locale文件夹中。运行游戏,若所有步骤都正确操作,你的模组应该能正常运行,不会出现任何问题。如果你想运行测试以确保其正常工作,只需在Visual Studio中编辑文本,然后重新生成解决方案,并将新文件复制到IC。每次编辑文本时都需要重复此过程,因此建议在Windows资源管理器的快速访问面板中或你的模组语言文件夹中创建一个指向调试文件夹的快捷方式。 就是这样!现在你应该拥有一个无错误的ModText.dll文件和一个更整洁的编辑环境。




换一换 

















