mirror of
https://github.com/EricPlayZ/EGameTools.git
synced 2025-07-18 17:37:53 +08:00
- Added compatibility with v1.18.0 "Community QoL" update
- Fixed an issue with classes not always getting detected correctly for everyone (Debug tab; if you still run into issues, please open a bug report!)
This commit is contained in:
@ -140,6 +140,9 @@ If anyone is looking to help with development, I'm all eyes and ears! Thank you!
|
|||||||
|
|
||||||
- Fixed "Game Speed" (World) not getting applied with the mod menu opened while having another tab selected other than the World tab
|
- Fixed "Game Speed" (World) not getting applied with the mod menu opened while having another tab selected other than the World tab
|
||||||
|
|
||||||
I have some things planned for the next updates, but time will decide when I'll be able to work on the updates. I'm almost done with my exams!)" }
|
I have some things planned for the next updates, but time will decide when I'll be able to work on the updates. I'm almost done with my exams!)" },
|
||||||
|
{ "v1.2.2",
|
||||||
|
R"(- Added compatibility with v1.18.0 "Community QoL" update
|
||||||
|
- Fixed an issue with classes not always getting detected correctly for everyone (Debug tab; if you still run into issues, please open a bug report!))" }
|
||||||
};
|
};
|
||||||
}
|
}
|
@ -16,9 +16,9 @@
|
|||||||
#define VK_MWHEELUP 0x101
|
#define VK_MWHEELUP 0x101
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
constexpr const char* MOD_VERSION_STR = "v1.2.1";
|
constexpr const char* MOD_VERSION_STR = "v1.2.2";
|
||||||
constexpr DWORD MOD_VERSION = 10201;
|
constexpr DWORD MOD_VERSION = 10202;
|
||||||
constexpr DWORD GAME_VER_COMPAT = 11702;
|
constexpr DWORD GAME_VER_COMPAT = 11800;
|
||||||
|
|
||||||
struct Key {
|
struct Key {
|
||||||
constexpr Key(std::string_view name, int code, ImGuiKey imGuiCode) : name(name), code(code), imGuiCode(imGuiCode) {}
|
constexpr Key(std::string_view name, int code, ImGuiKey imGuiCode) : name(name), code(code), imGuiCode(imGuiCode) {}
|
||||||
|
@ -2,13 +2,13 @@
|
|||||||
|
|
||||||
namespace Utils {
|
namespace Utils {
|
||||||
namespace RTTI {
|
namespace RTTI {
|
||||||
static std::string bytesToIDAPattern(BYTE* bytes, size_t size) {
|
static std::string bytesToIDAPattern(BYTE* bytes, size_t size, bool allowUnkBytes = true) {
|
||||||
std::stringstream idaPattern;
|
std::stringstream idaPattern;
|
||||||
idaPattern << std::hex << std::uppercase << std::setfill('0');
|
idaPattern << std::hex << std::uppercase << std::setfill('0');
|
||||||
|
|
||||||
for (size_t i = 0; i < size; i++) {
|
for (size_t i = 0; i < size; i++) {
|
||||||
const int currentByte = bytes[i];
|
const int currentByte = bytes[i];
|
||||||
if (currentByte != 255)
|
if (currentByte != 255 || !allowUnkBytes)
|
||||||
idaPattern << std::setw(2) << currentByte;
|
idaPattern << std::setw(2) << currentByte;
|
||||||
else
|
else
|
||||||
idaPattern << "??";
|
idaPattern << "??";
|
||||||
@ -113,7 +113,7 @@ namespace Utils {
|
|||||||
// Now we need to get an xref to the object locator, as that's where the vtable is located
|
// Now we need to get an xref to the object locator, as that's where the vtable is located
|
||||||
{
|
{
|
||||||
// Convert the object locator address to an IDA pattern
|
// Convert the object locator address to an IDA pattern
|
||||||
idaPattern = bytesToIDAPattern(reinterpret_cast<BYTE*>(const_cast<DWORD64*>(&objectLocator)), 8);
|
idaPattern = bytesToIDAPattern(reinterpret_cast<BYTE*>(const_cast<DWORD64*>(&objectLocator)), 8, false);
|
||||||
|
|
||||||
const DWORD64 vtableAddr = reinterpret_cast<DWORD64>(Utils::SigScan::PatternScanner::FindPattern(reinterpret_cast<LPVOID>(rdataStart), rdataSize, { idaPattern.c_str(), Utils::SigScan::PatternType::Address })) + 0x8;
|
const DWORD64 vtableAddr = reinterpret_cast<DWORD64>(Utils::SigScan::PatternScanner::FindPattern(reinterpret_cast<LPVOID>(rdataStart), rdataSize, { idaPattern.c_str(), Utils::SigScan::PatternType::Address })) + 0x8;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user