小莫的网盘 chevron_right / chevron_right mod chevron_right ScriptHookRDR2
face README.md

Script Hook RDR2

原地址:http://www.dev-c.com/rdr2/scripthookrdr2

游戏更新之后,需要等待Script Hook RDR2更新。

GTA系列的大佬 Alexander Blade(Script Hook V的作者) 已经制作了一个全新的Script Hook RDR2;

普通用户只需下载 Script Hook RDR2.zip 即可,SDK是给开发者用的

NativeDB

RDR2 NativeDB:https://mod.3dmgame.com/NativeDB

介绍:

Script Hook RDR2是《荒野大镖客2》的一个脚本,它允许你在游戏中使用自定义是*.ASI脚本,并且可以使用游戏中的原生功能。请注意,这并不能在线上模式使用,当你在尝试使用线上模式时,Script Hook RDR2会自动关闭,详细请查阅readme.txt文件中的相关信息

作用

主要作用是编译后的脚本插件(*.ASI)仅依赖ScriptHookRDR2.dll,因此,当游戏更新时,你必须更新Script Hook RDR2的版本(即ScriptHookRDR2.dll)

使用方法

1.将dinput8.dll & ScriptHookRDR2.dll放到游戏根目录中;

2.如果你还需要修改器的话,请将NativeTrainer.asi也放到游戏根目录中。

NativeTrainer修改器使用方法:

熟悉的操作方式:F5打开界面,小键盘2、4、6、8移动,5确定,0返回

NativeTrainer修改器汉化版:https://mod.3dmgame.com/mod/145686

线下内置修改器[RDR2 Native Trainer(RNT)] :https://pan.aoe.top/mod/RDR2NativeTrainer/

开发者 SDK

Script Hook RDR2 SDK:

主要编译是基于ScriptHookRDR2.dll,当游戏更新时,只需要更新ScriptHookRDR2.dll即可,一般情况开发文件不需要进行更新,不过不排除特殊情况。

DeBug:

  • 如果想让游戏重新加载asi脚本,但不想重启游戏,只需在游戏目录中创建一个空的“ScriptHookRDR2.dev”文件,然后在游戏中按“Ctrl+R”,听到“滴”的声音,即表示脚本卸载完成,再次按“Ctrl+R”,听到“滴滴滴”的声音,即表示脚本加载完成;

  • 若想让DeBug功能在游戏中正常工作,必须在主函数“DllMain()”中调用“scriptUnregister()”方法,具体请查阅“NativeTrainer\main.cpp”中的代码;

  • 脚本重载只适用于正常加载的.asi文件,不支持加载中途加入的.asi文件,[比如说,游戏运行时有个test.asi文件,如果先按“Ctrl+R”卸载,然后加一个“test2.asi”文件,重载的时候将无法识别新的“test2.asi”文件]

Keyboard hook:

  • 你必须使用keyboard hook 代替 GetKeyState/GetAsyncKeyState API,这样才能确保所有按键都可以正常工作;

  • 需要在主函数“DllMain()”中调用keyboardHandlerRegister() /keyboardHandlerUnregister()函数来处理按键操作的加载/卸载;

  • 具体详细可参看NativeTrainer\main.cpp中的代码示例;

实体示例:

  • 游戏当前使用的实体都储存在pools中,每种类型的实体都有一个单独的pools,使用“worldGetAllVehicles()”方法可以让您访问任何类型的实体;

  • 在访问这些实体时,请注意,不是通过脚本创建许多实体,所以脚本对实体并没有完全的控制权,如果您想防止实体被游戏删除或想删除实体,则需要将实体转换为“任务实体[SET_ENTITY_AS_MISSION_ENTITY]”来获取完全控制权,未设置为任务实体的实体随时都可能被游戏删除,因此,我们需要在脚本执行的间隔中调用一下这些实体(即WAIT (0)函数的调用)

  • 原始脚本也遵循上面的规则,如同时使用从世界访问实体“GET_PED_NEARBY_VEHICLES[获取ped周围的载具] ”和“GET_PED_NEARBY_PEDS [获取ped周围的ped] ”时,也请调用 “IS_ENTITY_A_MISSION_ENTITY [是否为任务实体] ”和“SET_ENTITY_AS_MISSION_ENTITY [设置为任务实体]

  • 可以在Pools\script.cpp中查看实体相关的代码示例;

编译:

  • 实例中的脚本需要“Visual Studio 2013”或更高的版本才能正常编译

使用条款:

  • 您只能使用此SDK编译/制作线下的脚本Mod,禁止用于线上;

  • 您在发布脚本时,请勿包含“ScriptHookRDR2.dll”文件,需要将ScriptHookRDR2.dll的下载指向 http://www.dev-c.com/rdr2/scripthookrdr2/ ,以避免玩家下载的Script Hook RDR2不是最新版本;

实例

  • 压缩包中包含 “NativeTrainer”和 Pools的源码,如需获取更多详细,请自行查看NativeTrainer\script.cpp和Pools\script.cpp