在运行时加载protobuf(.data)文件。
所有模组均开源于
GitHub.
特别感谢
@chenstack对于 CSharpLoader
以下文字主要针对开发人员。
如果您是用户,您实际上不需要了解有关此模块的详细信息。
如果另一位作者说他的 mod 需要此 mod,您仅需要遵循他的安装说明。
并且知道 Ctrl+F7 是重新加载热键。
如何加载.Data文件:剧透:
展示
1.安装
CSharp加载器和这个模型。
2.使用以下方式编辑任何有效的 .data 文件
数据编辑器
将其重命名为“[TableName]_[Comment].data”的形式。
例如:
EquipAttrDesc_青田葫芦顶部改为10口.data
FUStSuitDesc_lalalalal_abcd_imgood.data
FUStBuffDesc_MyMod.数据
(“-”后面的部分可以不写,例如修改“FUStBuffDesc-Item.data”,可以命名为“FUStBuffDesc_MyName.data”)
错误示例:
ABC_青田葫芦改为最高10口.data //错误。必须以原始表名开始(EquipAttrDesc)
EquipAttrDesc_青田葫芦顶部改为10口aabc //错误。必须以.data结尾
FUStSuitDesc_lalalalal_abcd_imgood.bak.data //错误。“.bak.data”将被自动忽略。
2.5.(可选)如果将数据文件重命名为“[TableName]_[Comment].insert.data”,任何记录都将插入到第一个空行,并可能获得一个新的 ID。
3.将数据文件放在一个文件夹中。将文件夹复制到 BlackMythWukong\b1\Binaries\Win64\CSharpLoader\Mods\ProtobufLoader\[AnyFolder]。
例如:
-- b1\Binaries\Win64\CSharpLoader\Mods\ProtobufLoader
--ProtobufLoader.dll
-- 300_青田葫芦改为10口上限
-- EquipAttrDesc_青田葫芦改为最高10口.data
-- 200_锦鳞套加2条套装效果_日金乌套改为大量攻防
-- EquipAttrDesc_锦鳞套加2条效果_日金乌套改为加1800攻击2_修改属性.data
-- FUStSuitDesc_锦鳞套加2条套装效果日金乌套装改为加1800攻击1_修改套装.data
4.运行游戏。
此模块将在正确的文件夹中加载 .data 文件。
为什么你需要这个?
此模块可以逐个加载记录,而不是覆盖整个表。
如果模组制作者制作“.data”模组而不是“.pak”模组,那么它们很可能不会相互冲突。
(此 mod 不会神奇地删除所有冲突!即使您安装了此 mod,您的旧“pak”mod 仍然会像以前一样发生冲突。)
对于模组制作者,您可以修改 .data 文件并在运行时重新加载它。节省您为用户打包、调试或合并打包的时间。
注意:不是说你装了这个mod,哪个冲突的mod就突然不冲突了!!
意思是以后修改数据类的mod可以直接以data文件的形式发布并以该mod加载,就不会像以前的pak文件那样极易冲突了
还省了把data文件备份成pak的工夫
笔记:
0.重新加载并重置
按 Ctrl+F7 重新加载数据文件。
内存中的数据将会重置(自 v1.1 起)重新加载之前。
但不可克隆的数据类型将不会被重置。
此 mod 将在重新加载时修改 prorobuf 并刷新 GameDB 中的缓存。
按 Ctrl + F8 重置。
当加载数据文件时,此模块会存储修改前的值。
当重置时,此模块会将存储的记录写回。
如果另一个模块在加载和重置之间修改了该模块修改的记录,则这些更改将会丢失。
当按Ctrl+F7重新加载时,此模块将在重新加载前自动重置。
按 Ctrl+F9 进行超级重置。
从虚拟文件重新加载所有内容。
当“重置”时,本模组会尝试仅恢复已修改的数据。当“超级重置”时,本模组会丢弃所有内容,并从 .pak 文件加载(就像游戏启动时一样)。
如果没有错误或加载失败或另一个模块更改protobuf,“重置”和“超级重置”应该具有完全相同的效果。
1.加载顺序:
此 mod 加载子文件夹
词典顺序(又名字典顺序)。
例如,文件夹“100_abc”必须在“200_lalla”之前加载。
不会递归搜索文件夹。例如,“CSharpLoader/Mods/ProtobufLoader/BestSuit/MoreSuitSubDir/”下的文件将不会被加载。
强烈建议以 [Number]_[Name] 的形式命名您的文件夹,以防您需要按特定顺序加载。
对于同一文件夹中的文件:
此模型首先按字典顺序加载所有“.data”(不包括“.insert.data”或“.bak.data”)。
然后这个模块按字典顺序加载所有“.insert.data”。
2.加载规则当“.data”中的记录被加载时。
如果内存中的表中没有该项,则会将其添加到表中。
如果它已经在内存中的表中,那么旧记录将是
完全 已替换新的。
意味着您可以有多个修改同一张表的数据文件,只要它们不修改相同的记录,它们就不会发生冲突。
如果他们确实修改了同一条记录,
最后装载的获胜者。当“.insert.data”中的记录被加载时。
如果内存中的表中没有该项,则会将其添加到表中。
如果它已经在内存中的表中,则增加它的ID,直到新的ID不在表中。修改它的ID并使用新的ID将其插入到表中。
该模块将在本地化初始化后加载文件。
当此模组被CSharpLoader加载时,如果GameInstance和GSLocalization都已完成初始化,则此模组将立即加载文件。
否则,一旦 GSlocalization 初始化,此模块就会加载文件。
3.这个mod修改了什么?
一般游戏中的数据存在于:
A) .pak 中的虚拟文件。
B)GSProtobufRuntimeAPI/BG_ProtobufDataAPI 在内存中缓存。
C) GameDBRuntime/BGW_GameDB 缓存在内存中
D)内存中的其他实例
游戏开始时,游戏将A中的所有数据读取到B中,然后在C中建立部分数据的缓存。
在游戏过程中,有的实例直接从B/C读取,有的实例在初始化时在D中建立B/C的缓存,稍后再从D读取。
当您使用传统的“pak” mod时,您实际上是在覆盖 A。
当这个模组加载模组时,它
修改 B 并强制重建 C。
4.2.配置文件:ProtobufLoader/Config.json:
住口:如果为 true,则减少日志输出。默认为 false。
如果您有大量数据文件需要加载,请启用此功能以提高性能。
闭嘴:如果为 true,则进一步减少日志输出。默认为 false。
闭嘴:如果为 true,则除非遇到错误,否则不会输出任何日志。默认为 false。
启用中文控制台日志:将 CSharpLoader 控制台的代码页设置为 UTF-8正确显示中文控制台日志。默认为 True。(如果您需要控制台中显示其他字符,请关闭此功能。)
4.3.注意事项: 如果你想修改表中的几条记录。
您的数据文件应该包含
仅有的修改后的记录以避免冲突。(因为这正是使用此加载器的全部意义所在。)
(如果您需要 DataEditor 中的“删除除此以外的任何内容”按钮。
您可以等待DataEditor作者添加它。
或者使用
我的数据编辑器的分支。)
5.不支持以下表格。
剧透:
展示
UISettingControlDesc
滚动描述
活动任务描述
活动描述
战斗技能描述
FUStCollectionSpawnInfoDesc
6.注意名称相同但 ID 不同的项目。例如,
一种药物可能在项目表中可能有同名的配方项目和药物项目,但它们是不同的。
一个装备在装备表中可以有针对每个级别的多条记录。
一个气力被动效果每一级也可以有多条记录。
ETC。
7.注意初始化时仅从 desc 表中读取的数据。例如,
TransQiTianDaShengConfigDesc表用于初始化BUS_QiTianDaShengComp。
如果在开始游戏后重新加载表格,它可能不会生效,因为尚未再次调用 init 函数。
数据文件示例:
您可以在文件页面下载以下示例。
100_增加一个珍玩套装(君子牌风铎仙篆)增加火抗
200_锦鳞套加2条套装效果_日金乌套改为大量攻防
300_青田葫芦改为10口上限
400_金箍棒(大圣套)添加天龙棍效果
500_行者套改为1件即可触发
600_InsertData_插件全局设置和被动技能映射
将现有模块转换为数据文件版本的示例您可以使用
数据编辑器检查他们到底做了什么。
(请注意,一些示例修改了同一个表,它们可以同时工作。
并且每个示例数据文件仅包含必要的记录。)
手动安装:0.安装CSharp加载器(>= v0.0.8)(请注意,此 mod 的较低版本可能无法与最新的 CSharpLoader 一起使用。如果您想升级 CSharploader,建议也升级此 mod)
1.下载zip文件并解压。
2.
将 [ModName] 文件夹复制到
[游戏文件夹]\b1\Binaries\Win64\CSharpLoader\Mods\
目录结构应该是这样的:
--b1\Binaries\Win64\CSharpLoader\Mods\
-- [模组名称]
-- [模块名称].dll
通过 Vortex 安装:
支持