Skip to content

ScriptHookVDotNet Enhanced v1.1.0.0 [Legacy + Enhanced]

Choose a tag to compare

@Chiheb-Bacha Chiheb-Bacha released this 16 Nov 04:24
· 38 commits to main since this release

ScriptHookVDotNet Enhanced [Legacy + Enhanced]

Issues addressed in this release:

  • Although the previous version (v1.0.0.2-beta) was marked as beta, no bugs were reported since it has been released 9 weeks ago. That being said, a couple of fixes were made:
    • The pattern for enabling mp cars in sp for legacy versions prior to 46 was updated.
    • Homing missiles should now automatically redirect if their Target is changed.
    • More minor fixes ...

New features:

  • v3-API:

    • Enum DriftCarHash has been added, which contains 20 model hashes for drift cars.
    • CAIHandlingInfo, CAICurvePoint, and AIHandlingHash were added, which enable modifying the handling of vehicles for when they are driven by the AI.
    • AdvancedFlags has been added to CarHandlingData (See CarAdvancedFlags for possible values)
    • HandlingData:
      • HandlingData now has the attributes ModelFlags (See VehicleModelFlags), HandlingFlags (See VehicleHandlingFlags), and DamageFlags (See VehicleDamageFlags).
      • HandlingData now has the attributes CAIHandlingInfo and CAIHandlingHash. Possible values for CAIHandlingInfo can be obtained through the static method GetByHash in the class CAIHandlingInfo.
      • HandlingData now has the attribute SpecialFlightHandlingData, to which the attribute Flags has been added (See SpecialFlightHandlingFlags for possible values)
    • Game:
      • Game now allows to set the Language attribute. Changing to some languages might require a game restart, as the fonts used by these languages were not loaded at init. As for other (most) languages, a restart isn't required, and opening the pause menu twice (using P or Esc) refreshes the language used by game. The language you set persists across game reloads.
      • Game has a new method: SetLocalizedString, which takes a gxt2 hash corresponding to the text label you want to modify (Possible hashes can be found inside .gxt2 using Codewalker/OpenIV), and the replacement string. The passed string is either truncated or padded, in order to match the length of the original text. Use with caution, as modifying some strings, which the game might expect to be unchanged, could crash the game, so test your changes thoroughly.
      • Game has new methods: AddCustomGxtEntry, UpdateCustomGxtEntry, GetCustomGxtEntry, and RemoveCustomGxtEntry which allow you to replace a gxt2 hash with another one (or 0 if you wish to blank the text for a given gxt2 hash).
    • Vehicle:
      • IsSpecialFlightModeActivated, ActivateSpecialFlightMode, and DeactivateSpecialFlightMode allow you to use the oppressor2 flying mode with (almost) any vehicle. These might internally call Script.Wait.
      • IsDriftModeActivated, ActivateDriftMode, and DeactivateDriftMode allow you to use the drift handling of drift cars (defined in DriftCarHash) on any vehicle of type Automobile.
      • IsModelHandlingCompatibleWithVehicleModel returns whether two vehicle models have compatible handling types. It can be used to check if, for example, ActivateSpecialFlightMode can be used on a vehicle of a certain model.
      • EngineTorqueMultiplier now has a get accessor (using memory patterns).
      • PatchEngineTorqueMultiplierUpdate stops the game from updated the EngineTorqueMultiplier (The game constantly sets it to 1.0f), which allows us to set it without it being overwritten.
  • Core (Internal)

    • Hooking.cs: A Hooking class, which manages creating, enabling, disabling and removing hooks. It supports both CallHooks and MinHook Hooks, and handles clean-ups upon domain unload, by removing all hooks, and freeing memory pages allocated for CallHooks. Although a small attempt was made to expose this class through the API, so that script developers can easily leverage the power of hooking, some issues were encountered, so I decided to work on exposing it in another release. As a consequence this class is currently for internal use only, which is still very useful, as it opens alot of new possibilites for advanced features to be implemented internally and exposed to .Net scripts.
    • Improvements and additions were made to internal MemScanner and MemDataMarshall classes.
  • Compatibility with SHVDN: Every feature added to the SHVDN API (24.08.2025 - 16.11.2025) has been added to SHVDNE to ensure scripts built against SHVDN, and using the aforementioned features are compatible with SHVDNE. An exception is the additions in 124a59d, which will be added in the next release.

If you wish to try these features out, check out Advanced Trainer

More features and improvements are currently being worked on, so stay tuned.


Although this release has been thoroughly tested, I still urge you to test and report back in case of bugs, crashes, or unexpected behavior.