Skip to content

Instantly share code, notes, and snippets.

@Sainan
Last active May 27, 2023 01:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Sainan/d67b8f4e6a183f7243b8f4479b97f7ba to your computer and use it in GitHub Desktop.
Save Sainan/d67b8f4e6a183f7243b8f4479b97f7ba to your computer and use it in GitHub Desktop.

How to use mods for GTA V

RPF Tools

To explore and edit RPF files, you can use any of these:

RPF Loaders

To load unencrypted RPFs (preferably from a "mods" folder), you can use any of these:

Note that some changes will affect your asset hashes, which will require a menu to fix so that you can join Online sessions with players without these modifications.

Add-on Vehicles / Custom DLCs

Some RPF mods, specifically add-on vehicles, rely on adding a new DLC to the game. Some mod menus (Stand and 2Take1) have a "Custom DLCs" feature that only requires you to add the DLC to a "Custom DLCs" folder, which will then allow you to load the DLC without needing to restart the game. The mod menu will handle registering the DLC and loading the unencrypted RPF.

ASI Loaders

Tool Provides ScriptHookV API Startup Can Go Online
ScriptHookV Yes Always No*
Mod Menus Yes Never Yes
Ultimate ASI Loader No Always Yes
DLL Injectors No Both Yes

* If you inject Stand, it will remove this restriction. The free version is enough for this and after you're in online, can unload it again, although that could reduce your safety.

Which one should I use?

In my experience, there are two types of ASI files:

  • Don't need to be injected at startup but require the ScriptHookV API (what most people would refer to as "ASI Mods")
  • Need to be injected at startup and don't require the ScriptHookV API (RPF loaders, config modifiers, etc.)

For the first type, ScriptHookV and mod menus are perfectly viable ways to use them. Mod menus have the advantage that you can unload and reload them at any time. (Although some menus can be unstable with this. I suggest using Stand.)

For the second type, ScriptHookV's dinput8.dll, Ultimate ASI Loader, or a plain old DLL injector will do the trick. Although note that OpenIV.asi relies on how SHV's dinput8.dll loads the ASIs slightly later; you can emulate this with a delay in a DLL injector.

Note that you don't need to decide on one specific method of loading ASIs and can use different ones for different ASIs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment