@YotoTor You must be meaning "Can't find native 0x95812F9B26074726". LemonUI may call DRAW_SPRITE_ARX_WITH_UV, which is introduced in v1.0.1868.0, and you can't call it in any versions prior to v1.0.1868.0, so you should use v1.0.1868.0 or later versions so you won't see that error by ScriptHookV (for calling that native function in LemonUI). If you wish to use scripts that's dependent on LemonUI in older ones, consult the authors and they may propagate the issue to LemonUI's repo on GitHub if they are convinced.
Not really important for you, but I left the note like "you can find what DRAW_SPRITE_ARX_WITH_UV eventually calls with "48 8B 41 10 66 39 70 58 74 06 48 8B 78 50 EB 07" ", so those who like to reverse engineer find a way to workaround for older game versions in ScriptHookVDotNet's codebase btw.
As of v1.10. LemonUI calls DRAW_SPRITE_ARX_WITH_UV when ScaledTexture.DrawSpecific is called or that method is indirectly called by NativeGridPanel.Process when NativeGridPanel.Style is set to GridStyle.Row or GridStyle.Column. I searched the codebase, and DRAW_SPRITE_ARX_WITH_UV is the only native that isn't available in all game versions out of the natives LemonUI may calls.
For those wondering how ScriptHookV would be used for this mod, not really (the description said false info). No need to install ScriptHookV, only the ASI loader required as OpenIV.asi isn't dependent on SHV.
This mod doesn't have compatibility issues in between b2802 and b2944. You can find memory patterns used in this mod in those versions (use ILSpy or some similar tool to extract). No Rockstar Editor Restrictions is to blame in the compatibility issues.
I know they use hardcoded joaat hashes of "SP0_TOTAL_CASH", "SP1_TOTAL_CASH", "SP2_TOTAL_CASH" for money logic code in the exe, but I'm not sure how exactly they read or write an appropriate stat for money transaction.
original 1.3.0.0 version uploaded by jedijosh920 has a fundamental flaw that is not even about compatibility. When you are in the driver seat of a car and you press the interact key ("J" by default), the script will throw System.IndexOutOfRangeException if there's no pedestrean in 3-meter circle of the player. Using older ScriptHookVDotNet 2.10.10 doesn't fix the problem, of course (you just won't see the exception log, one OnKeyDown call stops at where a exception is throwed in all SHVDN versions). Instead, use Ganjitsu's fixed version which is uploaded on January 14, 2022, the problem is fixed in that version (requires 2.10.12 or later that comes with SHVDN 3.0.2 or later).
@HKH191 Since JohnFromGWN said you should use SHVDN v3 (not v2) and as the current project lead of SHVDN (crosire retired his position in May 2023), I would say you would want to have your scripts migrate to v3.
Although we keep maintaining the v2 API for compatibility reasons for now (in both game versions and existing scripts), we aren't adding features to v2 API (since v3.0.0 has been released). Maybe we may add some support for some edge cases, but no more. New warnings would annoy you starting from v3.7.0 and possibly we abandon the support for v2 API sometime… SHVDN will compile against source/uncompiled scripts against v3 API by default since v3.7.0, too (although you still have an option to specify an API version). I'm going to create a migration guide after v3.7.0 is released though.
Actually there's a way to change the fov on foot without a script if you don't need dynamic fov modification. First, export cameras.ymt at update.rpf\x64\data\metadata as a xml via CodeWalker (you can't export it with OpenIV). Second, search for "AimFov value="42"" (remove the double quotes at both ends when searching) and edit the float value above of AimFov whose hash is 0x1F1D79FF (you see like hash_1F1D79FF or the known name), which is set to 55 by default. Then import the xml into update.rpf\x64\data\metadata.
Note that camera fov values are clamped to 1.0 to 130 in the game code.
To change first person aiming fov values, change the FirstPersonScopeFov value for the weapons you want to change. I haven't figured out how to change vehicle fovs yet except camCinematicMountedCameraMetadata in cameras.ymt manages the config data...
I also researched QuicksilverLib.asi, and I found a defect. It searches for the game state variable before hooking a time scale function, but hooking always fails because it can't find the game state variable in the game version v1.0.2060.1 and newer game versions. The asi uses "83 3D ? ? ? ? 00 8A D9 74 0A", but there's a memory pattern (signature) that supports wider ranges of game versions and supports v1.0.2944.0, which is "D1 E9 F6 C1 01 75 19 8B" (and rip "(int*)([the address] + 9) + [the address] + 13"). Not sure if you can just patch the issue by simply replacing the constant values (maybe we would face the misalignment issue)...
However, please do note that script still needs update its structs that are used for memory editing to work properly. For example, the offset for ProjectileFlags of CAmmoProjectileInfo to set to 0x14C (indeed used for AMMO_BALL in the script), but actually it's at 0x168 in v1.0.2944.0. You can search for parser definitions with alexguirre's rage-parser-dumps.
https://alexguirre.github.io/rage-parser-dumps/
@YotoTor You must be meaning "Can't find native 0x95812F9B26074726". LemonUI may call DRAW_SPRITE_ARX_WITH_UV, which is introduced in v1.0.1868.0, and you can't call it in any versions prior to v1.0.1868.0, so you should use v1.0.1868.0 or later versions so you won't see that error by ScriptHookV (for calling that native function in LemonUI). If you wish to use scripts that's dependent on LemonUI in older ones, consult the authors and they may propagate the issue to LemonUI's repo on GitHub if they are convinced.
Not really important for you, but I left the note like "you can find what DRAW_SPRITE_ARX_WITH_UV eventually calls with "48 8B 41 10 66 39 70 58 74 06 48 8B 78 50 EB 07" ", so those who like to reverse engineer find a way to workaround for older game versions in ScriptHookVDotNet's codebase btw.
As of v1.10. LemonUI calls DRAW_SPRITE_ARX_WITH_UV when ScaledTexture.DrawSpecific is called or that method is indirectly called by NativeGridPanel.Process when NativeGridPanel.Style is set to GridStyle.Row or GridStyle.Column. I searched the codebase, and DRAW_SPRITE_ARX_WITH_UV is the only native that isn't available in all game versions out of the natives LemonUI may calls.
For those wondering how ScriptHookV would be used for this mod, not really (the description said false info). No need to install ScriptHookV, only the ASI loader required as OpenIV.asi isn't dependent on SHV.
This mod doesn't have compatibility issues in between b2802 and b2944. You can find memory patterns used in this mod in those versions (use ILSpy or some similar tool to extract). No Rockstar Editor Restrictions is to blame in the compatibility issues.
@dani703q Game.Player.Money works only for the 3 protagonists models, kinda by the design. https://github.com/scripthookvdotnet/scripthookvdotnet/blob/64242f7a21bdc84044ff213602801670f8ca44fa/source/scripting_v3/GTA/Player.cs#L72-L100
I know they use hardcoded joaat hashes of "SP0_TOTAL_CASH", "SP1_TOTAL_CASH", "SP2_TOTAL_CASH" for money logic code in the exe, but I'm not sure how exactly they read or write an appropriate stat for money transaction.
original 1.3.0.0 version uploaded by jedijosh920 has a fundamental flaw that is not even about compatibility. When you are in the driver seat of a car and you press the interact key ("J" by default), the script will throw System.IndexOutOfRangeException if there's no pedestrean in 3-meter circle of the player. Using older ScriptHookVDotNet 2.10.10 doesn't fix the problem, of course (you just won't see the exception log, one OnKeyDown call stops at where a exception is throwed in all SHVDN versions). Instead, use Ganjitsu's fixed version which is uploaded on January 14, 2022, the problem is fixed in that version (requires 2.10.12 or later that comes with SHVDN 3.0.2 or later).
@HKH191 Since JohnFromGWN said you should use SHVDN v3 (not v2) and as the current project lead of SHVDN (crosire retired his position in May 2023), I would say you would want to have your scripts migrate to v3.
Although we keep maintaining the v2 API for compatibility reasons for now (in both game versions and existing scripts), we aren't adding features to v2 API (since v3.0.0 has been released). Maybe we may add some support for some edge cases, but no more. New warnings would annoy you starting from v3.7.0 and possibly we abandon the support for v2 API sometime… SHVDN will compile against source/uncompiled scripts against v3 API by default since v3.7.0, too (although you still have an option to specify an API version). I'm going to create a migration guide after v3.7.0 is released though.
I searched the exe for b2944 (the version of June 2023), and this script does not seem to function because memory pattern/signatures for throttle and brake patch do not detect in b2944. https://github.com/LieutenantDan1/SmoothDrivingV/blob/d1cdb711b9890aaa8c2f59f48a83a5d2f91ca143/SmoothDrivingV/Main.cs#L71-L80
If someone wants to update this script, you may want to seek help from those who's good at reverse engineering, such as alexguirre. I'm concerned because HKH191 may try to update this script, who doesn't look like he's good at reverse engineering to me. I'm busy updating SHVDN for now btw. https://www.gta5-mods.com/tools/menyoo-map-to-object-placement-map-converter#comments_tab
Actually there's a way to change the fov on foot without a script if you don't need dynamic fov modification. First, export cameras.ymt at update.rpf\x64\data\metadata as a xml via CodeWalker (you can't export it with OpenIV). Second, search for "AimFov value="42"" (remove the double quotes at both ends when searching) and edit the float value above of AimFov whose hash is 0x1F1D79FF (you see like hash_1F1D79FF or the known name), which is set to 55 by default. Then import the xml into update.rpf\x64\data\metadata.
Note that camera fov values are clamped to 1.0 to 130 in the game code.
To change first person aiming fov values, change the FirstPersonScopeFov value for the weapons you want to change. I haven't figured out how to change vehicle fovs yet except camCinematicMountedCameraMetadata in cameras.ymt manages the config data...
I also researched QuicksilverLib.asi, and I found a defect. It searches for the game state variable before hooking a time scale function, but hooking always fails because it can't find the game state variable in the game version v1.0.2060.1 and newer game versions. The asi uses "83 3D ? ? ? ? 00 8A D9 74 0A", but there's a memory pattern (signature) that supports wider ranges of game versions and supports v1.0.2944.0, which is "D1 E9 F6 C1 01 75 19 8B" (and rip "(int*)([the address] + 9) + [the address] + 13"). Not sure if you can just patch the issue by simply replacing the constant values (maybe we would face the misalignment issue)...
The script will no longer throws exception for calling Audio.PlaySoundFromEntity starting from SHVDN v3.7.0. https://github.com/scripthookvdotnet/scripthookvdotnet/issues/1246
If you find other methods or properties throwing System.MissingMethodException in the GTA namespace (and is from a SHVDN API assembly), please report via our tracker. https://github.com/scripthookvdotnet/scripthookvdotnet/issues/new/choose
However, please do note that script still needs update its structs that are used for memory editing to work properly. For example, the offset for ProjectileFlags of CAmmoProjectileInfo to set to 0x14C (indeed used for AMMO_BALL in the script), but actually it's at 0x168 in v1.0.2944.0. You can search for parser definitions with alexguirre's rage-parser-dumps.
https://alexguirre.github.io/rage-parser-dumps/