原地址:http://www.dev-c.com/rdr2/scripthookrdr2
游戏更新之后,需要等待Script Hook RDR2更新。
GTA系列的大佬 Alexander Blade(Script Hook V的作者) 已经制作了一个全新的Script Hook RDR2;
普通用户只需下载 Script Hook RDR2.zip 即可,SDK是给开发者用的
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也放到游戏根目录中。
熟悉的操作方式:F5打开界面,小键盘2、4、6、8移动,5确定,0返回
NativeTrainer修改器汉化版:https://mod.3dmgame.com/mod/145686
线下内置修改器[RDR2 Native Trainer(RNT)] :https://pan.aoe.top/mod/RDR2NativeTrainer/
主要编译是基于ScriptHookRDR2.dll,当游戏更新时,只需要更新ScriptHookRDR2.dll即可,一般情况开发文件不需要进行更新,不过不排除特殊情况。
如果想让游戏重新加载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 代替 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中查看实体相关的代码示例;
您只能使用此SDK编译/制作线下的脚本Mod,禁止用于线上;
您在发布脚本时,请勿包含“ScriptHookRDR2.dll”文件,需要将ScriptHookRDR2.dll的下载指向 http://www.dev-c.com/rdr2/scripthookrdr2/ ,以避免玩家下载的Script Hook RDR2不是最新版本;