image_1780096422064_ld6ixg

原文描述
在运行时加载protobuf(.data)文件。所有模组均在GitHub上开源。特别感谢@chenstack提供CSharpLoader。以下内容基本面向开发者。如果你是普通用户,你其实不需要了解该模组的相关细节。如果其他作者说明他的模组需要依赖这个模组,你只需要遵照该作者的安装指引操作即可,同时要知道Ctrl+F7是重载热键。如何加载.Data文件:剧透:显示1.安装CSharpLoader和本模组。2.使用DataEditor编辑任意有效的.data文件,将其重命名为「[表名]_[注释].data」的格式。例如:EquipAttrDesc_青田葫芦改为上限10口.data、FUStSuitDesc_lalalalal_abcd_imgood.data、FUStBuffDesc_MyMod.data(「-」后的部分不是必需的。例如,如果你修改了「FUStBuffDesc-Item.data」,可以将其命名为「FUStBuffDesc_MyName.data」)错误示例:ABC_青田葫芦改为上限10口.data //错误。必须以原始表名(EquipAttrDesc)开头EquipAttrDesc_青田葫芦改为上限10口aabc //错误。必须以.data结尾FUStSuitDesc_lalalalal_abcd_imgood.bak.data //错误。「.bak.data」会被自动忽略2.5.(可选)如果你将数据文件重命名为「[表名]_[注释].insert.data」格式,任何记录都会被插入到第一个空行,并且可能获得新ID。3.将数据文件放在一个文件夹内,把该文件夹复制到BlackMythWukongb1BinariesWin64CSharpLoaderModsProtobufLoader[任意文件夹]路径下。例如:– b1BinariesWin64CSharpLoaderModsProtobufLoader– ProtobufLoader.dll– 300_青田葫芦改为10口上限– EquipAttrDesc_青田葫芦改为上限10口.data– 200_锦鳞套加2条套装效果_日金乌套改为加大量攻防– EquipAttrDesc_锦鳞套加2条效果_日金乌套改为加1800攻击2_修改属性.data– FUStSuitDesc_锦鳞套加2条套装效果日金乌套装改为加1800攻击1_修改套装.data4.启动游戏,本模组会从正确的文件夹中加载.data文件。你为什么需要这个模组?本模组可以逐条加载记录,而非覆盖整个数据表。如果模组制作者制作的是「.data」模组而非「.pak」模组,这些模组互相不冲突的概率会非常高。(本模组不会神奇地消除所有冲突!即便你安装了本模组,你旧的「pak」模组仍会和之前一样产生冲突。)对于模组制作者,你可以修改.data文件并在运行时重载,省去打包、调试或者为用户合并pak文件的时间。注意:不是说你装了这个mod,原本冲突的mod就突然间不冲突了!!意思是以后修改数据类的mod可以直接以data文件的形式发布并以该mod加载,就不会像以前pak文件那样极易冲突了,还省了把data文件打包成pak的工夫。注意:0.重载与重置按Ctrl+F7重载数据文件。从v1.1版本开始,重载前内存中的数据会被重置。但不可克隆的数据类型不会被重置。重载时本模组既会修改protobuf,也会刷新GameDB中的缓存。按Ctrl+F8进行重置。加载数据文件时,本模组会存储修改前的数值。执行重置操作时,本模组会把存储的记录写回。如果在加载和重置的间隔里有其他模组修改了本模组调整过的记录,这些改动会丢失。按下Ctrl+F7重载时,本模组会在重载前自动执行重置操作。按Ctrl+F9执行超级重置,从虚拟文件重载所有内容。执行普通「重置」时,本模组仅尝试恢复被修改的数据。执行「超级重置」时,本模组会丢弃所有数据并从.pak文件中重新加载,和游戏启动时的加载行为一致。除非存在bug、加载失败或者有其他模组修改了protobuf,否则普通「重置」和「超级重置」的效果应该完全相同。1.加载顺序:本模组按字典序(即词典顺序)加载子文件夹。例如,文件夹「100_abc」一定会在「200_lalla」之前完成加载。不会递归搜索子文件夹。例如,位于「CSharpLoader/Mods/ProtobufLoader/BestSuit/MoreSuitSubDir/」路径下的文件不会被加载。强烈建议将你的文件夹命名为「[数字]_[名称]」的格式,方便你需要按特定顺序加载时调整优先级。对于同一文件夹内的文件:本模组会先按字典序加载所有「.data」文件(不包含「.insert.data」或「.bak.data」),之后再按字典序加载所有「.insert.data」文件。2.加载规则加载「.data」中的某条记录时,如果该记录不在内存的数据表中,就会被添加到该表中。如果该记录已经存在于内存的数据表中,旧记录会被新记录完全替换。这意味着你可以拥有多个修改同一个数据表的数据文件,只要它们不修改同一条记录,就不会产生冲突。如果它们确实修改了同一条记录,最后加载的文件的改动会生效。加载「.insert.data」中的某条记录时,如果该记录不在内存的数据表中,就会被添加到该表中。如果该记录已经存在于内存的数据表中,就会递增它的ID直到新ID不在表中,修改该记录的ID后用新ID将其插入到数据表中。本模组会在本地化初始化完成后加载文件。当CSharpLoader加载本模组时,如果GameInstance和GSLocalization都已经完成初始化,本模组会立即加载文件。否则本模组会在GSLocalization初始化完成后立刻加载文件。3.本模组修改了什么?一般来说,游戏中的数据存储在以下位置:A).pak文件内的虚拟文件B)内存中的GSProtobufRuntimeAPI/BG_ProtobufDataAPI缓存C)内存中的GameDBRuntime/BGW_GameDB缓存D)内存中的其他实例游戏启动时,游戏会从A中读取所有数据到B中,之后为部分数据在C中构建缓存。在游戏运行过程中,部分实例直接从B/C读取数据,另一部分会在初始化时把B/C的缓存构建到D中,之后从D中读取数据。当你使用传统的`pak`模组时,你实际上是覆盖了A的内容。当本模组加载模组时,它会修改B并强制重建C的缓存。4.2.配置文件:ProtobufLoader/Config.json:ShutUp:设为true时减少日志输出,默认值为false。如果你有大量数据文件需要加载,开启该选项可以提升性能。ShuutUp:设为true时进一步减少日志输出,默认值为false。ShuuutUp:设为true时,除非遇到错误,否则不会输出任何日志,默认值为false。EnableChineseConsoleLog:将CSharpLoader控制台的代码页设置为UTF-8,以正确显示中文控制台日志,默认值为true。(如果你需要在控制台中显示其他字符,可以关闭该选项。)4.3.注意事项:如果你想修改一个数据表中的多条记录,你的数据文件应该仅包含被修改的记录,以避免冲突。(因为这正是使用本加载器的核心意义所在。)(如果你需要DataEditor里有一个「删除除此以外的所有内容」的按钮,你可以等待DataEditor的作者添加该功能,或者使用我fork的DataEditor版本。)5.以下数据表不被支持。剧透:显示UISettingControlDesc、ScrollDesc、ActivityTaskDesc、ActivityDesc、CombatSkillDesc、FUStCollectionSpawnInfoDesc6.注意名称相同但ID不同的物品。例如,药品表中可能同时存在配方物品和成品药品,二者名称相同但属于不同物品。装备表中同一件装备可能有多条记录,分别对应不同等级。气力被动效果也可能有多条记录,分别对应不同等级,诸如此类。7.注意仅在初始化时从描述表读取的数据。例如,TransQiTianDaShengConfigDesc表是用来初始化BUS_QiTianDaShengComp的。如果你在游戏启动后重载这个表,改动可能不会生效,因为初始化函数不会被再次调用。数据文件示例:你可以在文件页面下载以下示例内容:100_增加一个珍玩套装(君子牌风铎仙篆)增加火抗200_锦鳞套加2条套装效果_日金乌套改为加大量攻防300_青田葫芦改为10口上限400_金箍棒(大圣套)添加天龙棍效果500_行者套改为1件即可触发600_InsertData_插入全局设置和被动技能映射将现有模组转换为数据文件版本的示例你可以使用DataEditor来查看这些模组的具体改动内容。(注意部分示例修改了同一个数据表,但它们可以同时正常工作,而且每个示例的数据文件都仅包含必要的记录。)手动安装:0.安装CSharpLoader(版本>=v0.0.8)(注意本模组的旧版本可能无法和最新版CSharpLoader兼容。如果你打算升级CSharpLoader,建议同时升级本模组。)1.下载压缩包并解压。2.将[模组名]文件夹复制到[游戏文件夹]b1BinariesWin64CSharpLoaderMods路径下。目录结构应该是这样的:– b1BinariesWin64CSharpLoaderMods– [模组名]– [模组名].dll支持通过Vortex安装。

版本更新内容

最新 1.3.2 2024-10-20 18:51
版本 1.3.2 - 修复当你拥有超大量模组时可能出现的初始化问题。 版本 1.3.1 - 延迟初始化以兼容本地化 版本 1.3 - 针对 CSharpLoader v0.0.8 更新 - 添加一项配置以在控制台中显示中文字符 版本 1.2.5 - 修复无法加载已被之前模组修改过的记录的漏洞 版本 1.2 - 修复未刷新使用 TBList 构建的缓存的漏洞 - 添加超级重置功能 版本 1.1 - 重载/重置时刷新 GameBD 中的缓存 - 重载时自动重置,也可手动重置 - 允许 .insert.data 文件插入带有动态ID的记录 - 添加详细日志配置的配置文件 - 添加一个 .insert.data 文件的示例 版本 1.0 - 首次上传 - 更新 repak 至 v1.0 以支持 Vortex
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。