补丁

[工具插件] 上古卷轴5重制版找MOD工具–Address Library for SKSE Plugins

作者:meh321

包含头文件和数据库,可轻松实现SKSEDLL插件版本的独立性。

描述

对于普通的mod用户:从文件部分下载并安装“多合一”软件包。您可以使用modManager或手动执行。.bin文件应位于此处:

数据/SKSE/插件/

您无需阅读其余所有内容。

对于SKSEDLL插件作者:

这是一个modder资源(头文件)。您可以加载一个存储偏移量的数据库,以便您的DLL插件可以独立于版本而无需重新编译。头文件可以从文件的可选部分下载。

如何使用

最快的方法:

剧透:表演

现在您想知道那里的“123”值是多少。这是地址的ID。不同版本的数据库的地址具有相同的ID,但它可能指向不同的值。要获取特定版本的所有ID和值对的列表,请执行以下操作:

剧透:表演

而不是1、5、62、0会放入您要反转和熟悉的版本。您必须首先在/Data/SKSE/Plugins目录中具有相应的数据库文件。

调用此名称后,您应在Skyrim主目录中拥有一个名为“offsets-1.5.62.0.txt”的新文件,或输入为文件名的任何文件。它将采用以下格式:

十进制ID<tab>十六进制偏移量<newline>

例如,如果您要使版本独立于1.5.62.0中的地址142F4DEF8(玩家角色静态指针),则可以这样做:

1.在偏移文件中查找2F4DEF8。因为这是没有基数的偏移量140000000

2.确认ID为517014(十进制!)

3.如果要在运行时在DLL中使用此地址,请执行以下操作:

void*addressOf142F4DEF8=db.FindAddressById(517014);

那里有。

VersionDb结构具有以下功能:

剧透:表演

您应该了解并牢记的事项:

1.您可以在插件中包含任何(或所有)数据库文件,但可能会大大增加文件大小(大约2.5mb)。我建议仅包括最新版本(在撰写本文时为1.5.97.0),如果用户需要旧版本,则可以将其指向此处,并让他们自己下载特定版本的数据库。虽然我没有问题,但是您是否决定将所有数据库版本都包含在插件中,甚至可以将它们上传到其他站点。

2.您应该始终在启动时仅加载一次数据库,初始化/缓存所需的地址,然后将其卸载。卸载只是意味着VersionDb结构被删除或丢失(如果在堆栈上分配)。这样可以确保您在游戏运行时不会浪费不必要的内存。无需在游戏过程中保持数据库加载。

3.数据库包含函数,全局变量,RTTI,vtables以及可能引用它的任何其他内容的地址。它不包含位于函数中间或全局变量中间的地址。如果在函数中间需要一个地址,则应查找函数基地址并自己添加额外的偏移量。

4.您应始终检查结果,以确保数据库已成功加载(boolLoad返回true),并且所查询的地址实际上返回了有效结果(非NULL)。如果确实无法加载,则表示文件很可能丢失。如果查询失败,则意味着在该版本中找不到该地址。这可能意味着游戏代码已更改得足够多,以致该地址对该版本不再有效,或者数据库本身未能检测到正确的地址。如果发生上述任何一种情况,都应该使插件初始化失败,以使SKSE知道您未正确加载。或手动显示错误消息。

5.最好在发布DLL插件之前检查并确保地址在所有版本的游戏中都存在。为此,加载数据库文件的每个版本,并在每个版本中查询相同的地址ID以确保其存在:

剧透:表演

这样,您可以确保DLLmod可以在所有版本中使用,或者如果它在某些版本中不可用,则可以在mod页面上编写该文件。

6.有时您需要根据运行的游戏版本执行其他操作。您可以使用以下代码段进行操作:

剧透:表演

7.请记住:如果以调试方式编译SKSEDLL,则数据库的加载时间可能约为14秒!在释放模式下,此时间约为0.2秒。

权限

做你想做的。您可以根据需要在数据库中包含数据库文件,因此无需将其标记为依赖项。您可以将包括数据库文件在内的mod上载到其他站点。无需信用。

链接:https://pan.baidu.com/s/17jiJescXXSlYTZKIIcuQHw
提取码:xyc0

(0)

本文由 TES资源网 作者:admin 发表,转载请注明来源!

热评文章

发表评论