# ScriptHookRDR2 V2
本项目旨在提供 Alexander Blade 版 ScriptHookRDR2 的替代方案,同时保持一致的 API 架构并新增更多功能。
Alexander Blade 版 ScriptHookRDR2 的当前版本存在一个漏洞:在包含大量物体和行人的城市中,游戏对象池会发生重置。此问题在 ScriptHookRDR2 V2 中已修复。
此外,V2 版本搭载现代化界面,支持单独管理各个 MOD,且无需重启游戏即可添加新 MOD。
若你想支持我的开发工作,欢迎成为我的赞助人(完全自愿,量力而行):
我计划分享各类关于 RAGE 引擎的 MOD 开发及研究内容。
赞助平台(Patreon)
## 安装步骤:
1. 下载 MOD 加载器和 ScriptHookRDR2 V2 文件(两个文件均需下载)。
2. 解压两个文件,将 dinput8.dll 和 ScriptHookRDR2.dll 复制到你的《荒野大镖客2》游戏目录(即 RDR2.exe 所在目录)。
3. 启动游戏即可!
## 鸣谢:
感谢 Alexander Blade 开发的基础 API。
请务必下载 2.0 版本,该版本已修复所有已知漏洞!
## 新增功能:
如需使用以下导出函数,请在你的项目中链接提供的库文件!
### 1. 原生命令:DRAW_LINE(绘制线条)
使用方法:
将以下代码添加到你的 natives.h 文件中:
void DRAW_LINE(float fromX, float fromY, float fromZ, float toX, float toY, float toZ, int r, int g, int b, int a) { invoke
### 2. 原生命令:SET_TEXT_FONT(设置文本字体)
使用方法:
将以下代码添加到你的 natives.h 文件中:
void SET_TEXT_FONT(int fontType) { invoke
### 3. 原生命令:SET_TEXT_JUSTIFICATION(设置文本对齐方式)
使用方法:
/* 0=居中, 1=左对齐, 2=右对齐 */
将以下代码添加到你的 natives.h 文件中:
void SET_TEXT_JUSTIFICATION(int justifyType) { invoke
### 4. 导出函数:getStaticPtr(获取静态指针,在反编译脚本中称为“本地变量”Locals)
将以下代码添加到你的 main.h 文件中:
DLL_IMPORT uint64_t* getStaticPtr(const char* scriptName, int staticIndex);
使用示例:
uint64_t* static = getStaticPtr(“script_name”, 12345);
LOG(*static); // 读取值
*static = 0xCOFFEEBABE; // 写入值
### 5. 导出函数:switchLabel(替换游戏文本标签,支持在输入框中显示自定义文本)
将以下代码添加到你的 main.h 文件中:
DLL_IMPORT void switchLabel(const char* oldLabel, const char* newLabel);
### 6. 导出函数:getCommandFromHash(根据哈希值获取命令指针)
将以下代码添加到你的 main.h 文件中:
DLL_IMPORT void* getCommandFromHash(uint64_t hash);
祝你使用愉快!
版本更新内容
修复了窗口调整大小时界面无法工作的问题(VULKAN 和 DX12)
修复了部分用户Vulkan和DX12无法工作的问题
修复了在Vulkan运行时窗口调整大小时按键绑定失效的问题
修复了重新加载模组时崩溃的问题
修复了重新加载存档时无限黑屏的问题
将.asi模组的最大数量限制从60扩展到400(AB版本为60)
添加了配置功能
添加了配置编辑器
添加了Lua脚本引擎
性能提升10%(与旧版本和AB版本相比平均FPS提升10%)



评论(0)