How To NOT Be a "noob" With Modding and Troubleshooting (good advice for advanced users too)
Preface: I am going to demonstrate some simple procedures, and also give you a view into the way my mind thinks, whenever I encounter a problem. There is NO problem that has ever got the better of me, and that should be the same for you too.
Preparation for installation of ANY game:
First, we take care of getting our PC in order. This is optional, but I create for myself an administrator account, and set it up to auto-log me in during PC bootup. No more concerns with User Account Control (UAC) interfering with any actions I take, no more having to set administrator privileges for any game or program.
Next up, I disable any service I do not want running in the background, or I set to manual if it is a service I use, but don't want to automatically start during bootup. Press the Windows+R keys to open the Run dialog, type services.msc, press enter. You will see all services, and in a column, you will see services that start automatically or manually. I concern myself only with any services that starts automatically that I don't want to. If set to manual, the service will only start when you launch a program that is dependent on said service. The idea is to free up resources. You can google safe services to disable or set to manual, and you will find plenty of links. Some services will be intuitive enough for you to know whether you want them enabled, or if we just want to set to manual.
I also disable things in the device manager as well - things I know I don't need such as the communications port, which we only need if we use or plan to connect a printer to that port. Also I disable extra sound controllers, leaving only one. For example, I disable nVidia HD audio, and leave my Realtek HD audio enabled.
Next up drivers. ALL drivers, not just your graphic card. My motherboard comes with a utility that allows me to check for any updates, I also check for sound card driver updates as well.
This next step is VERY important! You NEVER want your graphic card trying to do something that you tell your in-game settings to do, NEVER! For example, I don't want my graphic card to do anisotropic filtering if I am telling my game to do this! In most cases, if there are options where both the game and your graphic card can implement a feature, I elect to have my card do it, and disable said feature in the in-game settings. So I turn off anisotropic filtering in the in-game settings, and enable it and set to x16 in my nVidia control panel. If there are other settings that are supported by both the in-game settings and your graphic card, make sure that either option is only done by one or the other, but NOT both. To help me decide, I ALWAYS pull up the game's graphics and performance guide hosted on nVidia's site. Below is a link, so you can see what it looks like -
It tells you step-by-step, what each feature does, and when the graphic card can also support a same feature, it advices which does a better job - that is how I know which feature will be done by what. We do this to eliminate conflicts, which can/will adversely effect performance.
Now that all preliminaries are settled, I install the game.
Before I do anything, I make a folder on my desktop called "For When GTAV Updates". Then, from my game folder, I copy over the following; Update folder, gta5.exe, launcher.exe, Installers folder, installscript.vdf, and steam_api64.dll. Not everyone of these gets updated with each R* update, but at different times each of them have, and without having these, your modded game will be broken. Always at a minimum though, the Update folder and gta5.exe do get updates, sometimes the launcher.exe does too. To know for sure what got updated, open your game folder (I have a shortcut on my desktop), right-click, set "view"to "details", and then right-click and set sort by "date modified". Right-click inside the folder, and click "refresh". Now anything you see with Today's date on it is what got updated. Now you know what files/folder you need to copy and overwrite so that your game is not broken.
Something to consider, I never update my game unless there is some must-have script that is released that depends on the latest scripthookv, and that is VERY rare
. The reason being is that, if I do update scripthook, and allow for the R* update, now I have the big headache of having to put all modifications back.
This brings me to the "mods" folder. If you make direct mods to your vanilla folder/s, you will pay the price if not today, tomorrow. It WILL break your game, and require a full reinstallation. Checksums of the .rpfs have a tendency to become currupt when adding things to them, which WILL cause a CTD while the game is loading. The only way around that is to verify game cache in Steam or to verify files if using retail version.
The mods folder negates any chance of this occuring, The mods folder is what YOU create inside your game folder, where gta5.exe resides. Mods would be spelled in all lower-case. Then we make a mirror image of the game folder inside the mods folder. Specifically, it will have all x64.rpfs, the update folder, the x64 folder, and the common.rpf. Just remember, that if you allow a R* update, you will need to copy and overwrite the vanilla update folder into your mods folder. And? Now all modifications you once had stored there needs to be put back. Now you see why I don't allow R* updates? What you could do though, is go through your modded update folder and copy into another folder on your desktop all modifications you have, so that it is a simple matter of dragging and dropping these files to their appropriate directories, should you allow R* update. Just REMEMBER though, that anytime you add or modify something, to make a copy to that folder.
Make sure you have all Windows updates, and ensure you have all Microsoft C+ visual or scripts will not function.
If you have issues with scripts, remember you could have a conflict somewhere that is the cause. First open scripthookv log in your game folder. Fist thing is to ensure the version matches what the game version is - you will see this -
// GTA V SCRIPT HOOK (build Dec 15 2016, v1.0.944.2)
// (C) Alexander Blade 2015-2016
Here you can see my game version matches with the version of scripthookv that I am using. If this were not the case, then I would get a wrong version error when I launch my game.
Next you want to see that scripthookvdotnet is also loading - you'll see this -
10:44:46] INIT: Started
[10:44:46] INIT: Success, game version is VER_1_0_944_2_STEAM
[10:44:46] INIT: Registering script 'LUA.asi' (0x00007FF9072CE6A0)
[10:44:47] INIT: Registering script 'ScriptHookVDotNet.asi' (0x00007FF90AE714A0)
If it doesn't load, no script that depends on scripthookvdotnet will function. Thing to note: just beause scripthookv updates does NOT mean scripthookvdotnet also needs to. Scripthookvdotnet is only updated when the mod authors decide to implement a new feature.
Now we look at the scripthookvdotnet log. This will show which scripts are loading. Here is the tail-end of my log -
[10:46:28] [DEBUG] Instantiating script 'The_Heavy_Service_Mod.The_otherstuff' in script domain 'ScriptDomain_3F71D96C' ...
[10:46:28] [DEBUG] Started script 'The_Heavy_Service_Mod.The_otherstuff'.
[10:46:28] [DEBUG] Instantiating script 'The_Heavy_Service_Mod.The_mod' in script domain 'ScriptDomain_3F71D96C' ...
[10:46:28] [DEBUG] Started script 'The_Heavy_Service_Mod.The_mod'.
[10:46:28] [DEBUG] Instantiating script 'The_Rugz_Menu.Rugz_Menu' in script domain 'ScriptDomain_3F71D96C' ...
[10:46:28] [DEBUG] Started script 'The_Rugz_Menu.Rugz_Menu'.
[10:46:29] [ERROR] Caught fatal unhandled exception:
System.NullReferenceException: Object reference not set to an instance of an object.
at The_Heavy_Service_Mod.The_otherstuff.The_otherstuff_Tick(Object sender, EventArgs e)
at GTA.Script.raise_Tick(Object value0, EventArgs value1)
Anyone who does not have the heavy service mod, is REALLY missing out BTW. Anyhow, notice what happened? Scripthookvdotnet caught a fatal unhandled exception which would have otherwise crashed my game, had this exception been caught by windows operating system. Fortunately the exception was not so great that it prevents the functioning of the mod, LOL.
If you run into problems with any script, head immediately to the mod author's site, and review every single comment. In these comments, you will either find a direct solution, or an idea that will provide a starting point for troubleshooting. Also, if no ideas, you MUST tag the mod author with a concise description of the problem. Make sure to read everything in the mod author's description on his/her site. Did you miss something in the instructions? Finally, if all fails, remove all scripts and add one at a time, test in-game, and keep adding until you find the conflicting script that is the cause for any issue. Oh yeah, don't forget that some scripts come with configuration files where there could be a duplicate key used to support certain features. Obviously we don't want that, so make sure that no two configs share the same keys. Also, if you have weird glitches with SPA or OAI mod, make sure that only one of their configs are declaring that it will load MP maps. There are also conflicting mods what will not work when used together. Usually the mod author of such mods will declare what such mods are in their description/readmes.