Skip to content

Releases: wopss/RED4ext

v1.6.0

05 Apr 18:05
Compare
Choose a tag to compare

New features

  • Support for patch 1.52 hotfix 1.

Changes

SHA256 Hashes of the release artifacts

  • red4ext_1.6.0.zip
    • F4F872C8E14B3683C144F5F1279F7A41AED4993898816F60C4B5960681A2A92F
  • red4ext_1.6.0_pdbs.zip
    • 692FE937E55CD69446621437FF5D1B21D6B2B716CE64791F3E06E334198EA312

v1.5.0

22 Mar 17:25
Compare
Choose a tag to compare

Note for users: It is recommended to remove config.ini file from game_root/red4ext directory after updating to this version.

New features

  • Support for patch 1.52.

Changes

  • Changed the default flush level from error to info.

SHA256 Hashes of the release artifacts

  • red4ext_1.5.0.zip
    • 32D6D04AAE34A48EE52A652963EBF4BFA3E4A08C1F5346B50473B7EA96560330
  • red4ext_1.5.0_pdbs.zip
    • 6917E6FB728F053BE1AE400E464ACBB71E45FBAA13247DA9DD29C0E9C06EF908

v1.4.0

28 Feb 14:43
Compare
Choose a tag to compare

Note for developers: This version introduced breaking API changes in RED4ext.SDK, thus all plugins that depends on RED4ext must be recompiled with the latest RED4ext.SDK version.

New features

  • Support for the patch 1.5 Hotfix 2.
  • Better detection of different game versions.

SHA256 Hashes of the release artifacts

  • red4ext_1.4.0.zip
    • 5AD69E30E8EA7328EAE50190B24C3BF340A567008E7B683129DBD208DCDBBE2A
  • red4ext_1.4.0_pdbs.zip
    • 327FBAE799C2EA469B1C3F4E96B98C1C5504F606DF3485CDE1D5A9E5CFE05FAE

v1.3.1

19 Feb 12:33
Compare
Choose a tag to compare

New features

  • Support for the new 1.5 patch (released on 19th February 2022).

SHA256 Hashes of the release artifacts

  • red4ext_1.3.1.zip
    • 9C9D890CDE0A9D0F5E6D4457AE755723E2DDC7F96DED20C42D6129C36F8D870C
  • red4ext_1.3.1_pdbs.zip
    • 263D10C4DEBC58EB0F2E73BA972424BA9B9A06E3D044DBC91071C2EFD3A256F0

v1.3.0

16 Feb 11:40
Compare
Choose a tag to compare

This release is a big rework of the RED4ext's internals, including changes to the error handling, logging, plugins and much more. Also, a complete documentation is now available at docs.red4ext.com.

Note for users: Uninstall CET compatible version (red4ext_<version>_compatible_with_cet.zip) before installing version 1.3.0.

Note for developers: This version introduced breaking API changes in RED4ext.SDK, thus all plugins that depends on RED4ext must be recompiled with the latest RED4ext.SDK version.

Breaking changes

  • RED4ext::IRED4ext has been removed. RED4ext::Sdk has been introduced as a replacement.
  • Functions such as RED4ext::IRED4ext::GetHookingInterface have been converted to variables, RED4ext::Sdk::hooking
  • The Load, Unload and PostLoad functions has been removed. Use game states to implement this behavior.
  • The plugin interface system has been removed.
  • The trampoline system has been removed.
  • Create and Remove functions have been removed. Use Attach and Detach.
  • The hooking do not have a RED4ext::IHooking::FindPattern(...) function. There is no alternative provided by the SDK.

New features

  • Added configuration file (config.ini), see the docs for more info.
  • Added support for custom game states. See the docs for more information.
  • Added a logging functionality for plugins. See the docs for more information.
  • Main(RED4ext::PluginHandle, RED4ext::EMainReason, const RED4ext::Sdk*) has been introduced as a replacement for DllMain. The behavior of the Main function is the almost the same as DllMain, except that it does extra checks to make sure that the plugin is compatible with the game. If you used DllMain to attach hooks before the game started, you can safely do it from the Main function.

Improvements

  • Improved the detection of the game. If the main game crashes before the mod is loaded, RED4ext will not be loaded in the crash reporter anymore.
  • Improved the error handling, now if something goes wrong before the logger is initialized a message box should appear describing the problem.
  • Improved the log messages, giving a clear overview in case there is a problem.
  • Improved the development console, now the error stream should be opened too.

Changes

  • Changed how RED4ext is loaded into the game process. Starting with this version the CET compatible version (red4ext_<version>_compatible_with_cet.zip) will not be uploaded anymore.
  • Increased the maximum number of log files to 5, the log file will be rotated every time the mod is initialized.
  • Set the maximum size of a log file to 10 MB, if the file is bigger the log file will be rotated.

Fixes

  • Fixed a memory leak when attaching the hooks.

Upgrade plugin to RED4ext 1.3.0

  • If you use DllMain, replace it with Main.
RED4EXT_C_EXPORT bool RED4EXT_CALL Main(RED4ext::PluginHandle aHandle, RED4ext::EMainReason aReason, const RED4ext::Sdk* aSdk)
{
    switch (aReason)
    {
    case RED4ext::EMainReason::Load:
    {
        // Same as DLL_PROCESS_ATTACH in DllMain.
        break;
    }
    case RED4ext::EMainReason::Unload:
    {
        // Same as DLL_PROCESS_DETACH in DllMain.
        break;
    }
    }

    return true;
}
  • There is no alternative for Load, Unload, Postload, you can imitate this behavior with the following code:
bool Load(RED4ext::CGameApplication* aApp)
{
    return true;
}

bool Unload(RED4ext::CGameApplication* aApp)
{
    return true;
}

RED4EXT_C_EXPORT bool RED4EXT_CALL Main(RED4ext::PluginHandle aHandle, RED4ext::EMainReason aReason, const RED4ext::Sdk* aSdk)
{
    switch (aReason)
    {
    case RED4ext::EMainReason::Load:
    {
        // Old Load / PostLoad behavior.
        RED4ext::GameState initState;
        initState.OnEnter = nullptr;
        initState.OnUpdate = nullptr;
        initState.OnExit = &Load;

        aSdk->gameStates->Add(aHandle, RED4ext::EGameStateType::Initialization, &initState);

        // Old Unload behavior.
        RED4ext::GameState shutdownState;
        shutdownState.OnEnter = nullptr;
        shutdownState.OnUpdate = &Unload;
        shutdownState.OnExit = nullptr;

        aSdk->gameStates->Add(aHandle, RED4ext::EGameStateType::Shutdown, &shutdownState);
        break;
    }
    case RED4ext::EMainReason::Unload:
    {
        break;
    }
    }

    return true;
}

SHA256 Hashes of the release artifacts

  • red4ext_1.3.0.zip
    • C1D311091D78040D9BAF2C8B68E4317E6BE508226D4DE4B8AF0BFFD72060ACA1
  • red4ext_1.3.0_pdbs.zip
    • C68A5F289DBE434765E962631DA308A53E10CB65BD692CD0A953534038CBD901

v1.2.1

15 Sep 18:26
Compare
Choose a tag to compare

Fixes

  • Fixed multiple possible exceptions when dealing with the filesystem. (Thanks Maks788 for the help)

SHA256 Hashes of the release artifacts

  • red4ext_1.2.1.zip
    • 546D2331FF1021A6D846C25E079420427933F696E05806D9D5AA2BDE76519053
  • red4ext_1.2.1_compatible_with_cet.zip
    • ED1548073E796E6C44902AFFFC609591223477B139BC6E82FDE6A9036BC3D481
  • red4ext_1.2.1_pdbs.zip
    • 9E4181BE8FBB2924E18F003EA707C5AD208189576BC2C90C7A359FE817CC5AC4

v1.2.0

15 Sep 17:05
Compare
Choose a tag to compare

Improvements

  • Use a better library to hook the game's function.

SHA256 Hashes of the release artifacts

  • red4ext_1.2.0.zip
    • E0C5634B226018DD54F3F1E69B0279DE9263741FF52C47C542C188A9D67C09E4
  • red4ext_1.2.0_compatible_with_cet.zip
    • 5BA6390B1790AFE4942389633BEAD455542F0D1073EF5CD1CBB58CD69B834D34
  • red4ext_1.2.0_pdbs.zip
    • 560D0A4DE7AEB301BDC339253D0CA0B4250ED90F4BB1BC88E678AECE043CE47C

v1.1.1

05 Sep 19:01
Compare
Choose a tag to compare

Fixes

  • Fixed thread access violations when writing to the log file.
  • Fixed a buffer overflow.

SHA256 Hashes of the release artifacts

  • red4ext_1.1.1.zip
    • B5D5D06DE90AA61AEC5BF57B3E89DCB7B7E8640767279E5797E37571A2601BCA
  • red4ext_1.1.1_compatible_with_cet.zip
    • D3E084F5F92F4FF9F68363EDF738214C0DA08C349C92AEB76A2645EAF553FFBA
  • red4ext_1.1.1_pdbs.zip
    • 0B0E96BA9A66B8376BDF38F83B0180C6FEA0B513EECD4424B2AF9CD08292A036

v1.1.0

05 Sep 10:23
Compare
Choose a tag to compare

Improvements

  • Load plugin in memory earlier and initialize them later. Using this approach one could hook a function (with a third party library) before Load function is called.

Fixes

  • Fixed a problem when hooking functions with an indirect jump instruction.
  • Fixed a problem where the loader will try to load RED4ext.dll even if it does not exist.

SHA256 Hashes of the release artifacts

  • red4ext_1.1.0.zip
    • 6DF77D22B91828026C3E5A78E200A9109D6A931AD3A0FA1DF0C41FEDD65E99FF
  • red4ext_1.1.0_compatible_with_cet.zip
    • A3A376C8D5572DD90B968B4E50CC1328B224684DBC4671D47A8A86D74A7C8EC2
  • red4ext_1.1.0_pdbs.zip
    • C69D4DE60ACF2FB5E84672E60DD2472DD77E467059C129052208DDE5580895DC

v1.0.2

20 Apr 14:19
Compare
Choose a tag to compare

Fixes

  • Fixed the bug where plugins using the latest RED4ext.SDK version would not get loaded with the following error:
    • PluginName reported unsupported API version (0)

SHA256 Hashes of the release artifacts

  • red4ext_1.0.2.zip
    • 687E9C46757F5BDDC395FB5C10722F3A5668188890754431BD64F96BE066A872
  • red4ext_1.0.2_compatible_with_cet.zip
    • B8F269AC8989CA8B848AD4A0A39026769EF96C7B52FE7BFD6D5647F76489A834
  • red4ext_1.0.2_pdbs.zip
    • CF3ED4E1CCAE8AE3B6F19BFEDE3E31B3D8DCA3E516382B9E17323A75FAA6BBF2