Releases: wopss/RED4ext
v1.6.0
New features
- Support for patch 1.52 hotfix 1.
Changes
- Updated fmtlib to version 8.1.1.
- Updated spdlog to version 1.10.0.
- Updated toml11 to version 3.7.1.
- Updated wil to microsoft/wil@5bb5fbd.
SHA256 Hashes of the release artifacts
- red4ext_1.6.0.zip
- F4F872C8E14B3683C144F5F1279F7A41AED4993898816F60C4B5960681A2A92F
- red4ext_1.6.0_pdbs.zip
- 692FE937E55CD69446621437FF5D1B21D6B2B716CE64791F3E06E334198EA312
v1.5.0
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
toinfo
.
SHA256 Hashes of the release artifacts
- red4ext_1.5.0.zip
- 32D6D04AAE34A48EE52A652963EBF4BFA3E4A08C1F5346B50473B7EA96560330
- red4ext_1.5.0_pdbs.zip
- 6917E6FB728F053BE1AE400E464ACBB71E45FBAA13247DA9DD29C0E9C06EF908
v1.4.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.
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
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
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
andPostLoad
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
andRemove
functions have been removed. UseAttach
andDetach
.- 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 forDllMain
. The behavior of theMain
function is the almost the same asDllMain
, except that it does extra checks to make sure that the plugin is compatible with the game. If you usedDllMain
to attach hooks before the game started, you can safely do it from theMain
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 withMain
.
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
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
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
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
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
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