This is a RPH plugin that converts ASI mods into UASI (“Universal ASI”) mods which can be loaded with RAGE Plugin Hook in the same way ASI mods are loaded with ScriptHookV. Everything but the raw DirectX access (“Present callbacks”) has been implemented, so most ASIs should load and work properly.
To use this plugin, you must have:
.NET Framework 4.6
RAGE Plugin Hook
How does it work?
The first version was entirely coded in C++/CLI: native C++ code was used to interact with native ASI plugins, and the “CLI” (or “managed”) part of the code was used to interact with the .NET Framework and RAGE Plugin Hook. Though, this mix between managed and native code created problems and confusion: errors were hard to track down, the program was hard to maintain, and the plugin didn’t work for a lot of people.
This version was created with compatibility and user-friendliness in mind: managed code is in its own file (“AsiSupport.dll”, which is the RPH Plugin), and all unmanaged code (the bare minimum the make the plugin work) is in UnvAsiIntrf.dll (which stands for “Universal ASI Interface”). UnvAsiIntrf.dll should be supported by the end user as it is pure C++, and AsiSupport.dll should also not cause any problem if the end user has all required dependencies to use RPH.
UnvAsiIntrf.dll has been created as a generic way for ASI plugins to interact with another entity: said entity would register as an “API Handler” which has access to GTA V (in this instance, to RPH which gives it access to GTA V) and which would load UASI files (converted ASI files); then, the ASI scripts would interact with GTA V the same way the would’ve done it with ScriptHookV, except they would do via UnvAsiIntrf.dll, which itself serves as a simple bridge between UASI scripts and the API Handler.
* The versions manifest has been updated (up to version 1.0.2189.0)
* The versions manifest has been updated (up to version 1.0.2060.0)
* Thread crashes can now be notified to the player
– SHVDN support has been removed as it is obsolete. A new support might be added in the future.
* SHVDN support is now disabled by default (because of its instability)
* The versions manifest has been updated (up to version 1.0.1868.1)
* Process corrupted state exceptions (ie: AccessViolations) are now properly handled.
* The maximum number of native arguments has been increased from 25 to 32
* All argument buffers are now pre-allocated: this should improve the plugin’s overall performance
+ ScriptHookVDotNet support added
* The plugin can now optionally consider the current game version as unknown (getGameVersion() then always returns -1)
* The plugin can now optionally ignore calls to unknown natives. This could prevent some plugins from crashing. If a plugin tries to call an unknown native, 0 will be returned.
* Added the ReloadAsiConfig command
* The plugin should no longer crash if it failed to load or convert an ASI file
* The plugin now detects non ScriptHookV scripts instead of trying to convert them
* Improved performance
* The AsiSupport plugin has been rewritten in C# to remove the C++/CLI dependency
* The interop with ASI scripts is now done via UnvAsiIntrf.dll (coded in pure C++)
* AsiSupport no longer uses .rasi files: it uses .uasi (Universal ASI) files
* Converting ASI files to UASI should now be faster
* Key events are no longer being transferred to ASI plugins when the RPH console is open
* Better handling of exceptions: the plugin should no longer crash (most of the times), but instead show a user friendly error message
* Most ASI plugins can now be unloaded and reloaded without rebooting the game (sorry, ELS is not one of them)
* Some previously hardcoded values are now read in an external, easily editable file
* If a script is already loaded with SHV, the SHV script will be killed
* The dependency issue is now fixed
* The plugin should now also work on Windows 7, 8, and 8.1
* OpenIV.asi is no longer handled as it is stand-alone and will work anyway
* If the original .asi file changes, the converted .rasi file is updated
+ Initial public release
Please note I only created it to be able to use old ASI plugins created by inactive authors. If you’re a new developer wanting to create a GTA V plugin, I highly recommend you directly use RPH instead, as it will improve performance.
Thanks to MulleDK19 and LMS for RAGE Plugin Hook
Thanks to Alexander Blade for ScriptHookV
Thanks to JackD111 for OpenVHook
Thanks to alexguirre for helping me figure out stuff
The source is available on Github under the GPLv3 license.