diff --git a/DL2GameOverhaulScript/EGameTools.ini b/DL2GameOverhaulScript/EGameTools.ini new file mode 100644 index 0000000..8d36d90 --- /dev/null +++ b/DL2GameOverhaulScript/EGameTools.ini @@ -0,0 +1,9 @@ +[Camera] +DisablePhotoModeLimits=1 +DisableSafezoneFOVReduction=1 +[Menu:Keybinds] +ToggleKey=VK_F5 +[Player:PlayerVariables] +LastLoadSCRFilePath=C:\Users\EricPlayZ\Desktop\player_variables.scr +LastSaveSCRPath=C:\Users\EricPlayZ\Desktop +UseBACKUPPlayerVars=0 diff --git a/DL2GameOverhaulScript/source/config/config.cpp b/DL2GameOverhaulScript/source/config/config.cpp index 4ef3b20..72c7fb8 100644 --- a/DL2GameOverhaulScript/source/config/config.cpp +++ b/DL2GameOverhaulScript/source/config/config.cpp @@ -1,4 +1,5 @@ #include +#include "..\menu\menu.h" #include "..\menu\player.h" #include "..\menu\camera.h" #include "..\utils.h" @@ -4075,26 +4076,29 @@ namespace Config { static void LoadDefaultConfig() { reader = inih::INIReader(); + reader.InsertEntry("Menu", "Transparency", 99.5f); reader.InsertEntry("Menu:Keybinds", "ToggleKey", "VK_F5"); menuToggleKey = VK_F5; - reader.InsertEntry("Player:PlayerVariables", "UseBACKUPPlayerVars", false); - + reader.InsertEntry("Player:Misc", "GodMode", false); + reader.InsertEntry("Player:PlayerVariables", "Enabled", false); const std::filesystem::path desktopPath = Utils::GetDesktopDir(); std::string desktopPathStr = desktopPath.string(); if (!desktopPath.empty() && !(std::filesystem::is_directory(desktopPath.parent_path()) && std::filesystem::is_directory(desktopPath))) desktopPathStr = {}; - reader.InsertEntry("Player:PlayerVariables", "LastSaveSCRPath", desktopPathStr); Menu::Player::saveSCRPath = desktopPathStr; - const std::string loadSCRFilePath = desktopPathStr.empty() ? "" : desktopPathStr + "\\player_variables.scr"; - reader.InsertEntry("Player:PlayerVariables", "LastLoadSCRFilePath", loadSCRFilePath); Menu::Player::loadSCRFilePath = loadSCRFilePath; - reader.InsertEntry("Camera", "DisablePhotoModeLimits", true); - reader.InsertEntry("Camera", "DisableSafezoneFOVReduction", true); + reader.InsertEntry("Camera:FreeCam", "Speed", 2.0f); + reader.InsertEntry("Camera:FreeCam", "TeleportPlayerToCamera", false); + reader.InsertEntry("Camera:ThirdPerson", "Enabled", false); + reader.InsertEntry("Camera:ThirdPerson", "DistanceBehindPlayer", 2.0f); + reader.InsertEntry("Camera:ThirdPerson", "HeightAbovePlayer", 1.35f); + reader.InsertEntry("Camera:Misc", "DisablePhotoModeLimits", true); + reader.InsertEntry("Camera:Misc", "DisableSafezoneFOVReduction", true); } static void LoadAndWriteDefaultConfig() { LoadDefaultConfig(); @@ -4116,6 +4120,9 @@ namespace Config { static void ReadConfig(const bool configUpdate = false) { try { reader = inih::INIReader(configFileName); + + Menu::transparency = reader.Get("Menu", "Transparency", 99.5f); + const std::string toggleKey = reader.Get("Menu:Keybinds", "ToggleKey"); auto it = virtualKeyCodes.find(toggleKey); if (it != virtualKeyCodes.end()) @@ -4123,6 +4130,9 @@ namespace Config { else menuToggleKey = VK_F5; + Menu::Player::godModeEnabled.value = reader.Get("Player:Misc", "GodMode", false); + Menu::Player::playerVariablesEnabled = reader.Get("Player:PlayerVariables", "Enabled", false); + const std::filesystem::path desktopPath = Utils::GetDesktopDir(); std::string desktopPathStr = desktopPath.string(); if (!desktopPath.empty() && !(std::filesystem::is_directory(desktopPath.parent_path()) && std::filesystem::is_directory(desktopPath))) @@ -4146,8 +4156,13 @@ namespace Config { if (!loadSCRFilePath.empty() && !std::filesystem::is_directory(loadSCRFilePath.parent_path())) Menu::Player::loadSCRFilePath = {}; - Menu::Camera::disablePhotoModeLimitsEnabled.value = reader.Get("Camera", "DisablePhotoModeLimits", true); - Menu::Camera::disableSafezoneFOVReductionEnabled.value = reader.Get("Camera", "DisableSafezoneFOVReduction", true); + Menu::Camera::FreeCamSpeed = reader.Get("Camera:FreeCam", "Speed", 2.0f); + Menu::Camera::teleportPlayerToCameraEnabled = reader.Get("Camera:FreeCam", "TeleportPlayerToCamera", false); + Menu::Camera::thirdPersonCameraEnabled = reader.Get("Camera:ThirdPerson", "Enabled", false); + Menu::Camera::DistanceBehindPlayer = reader.Get("Camera:ThirdPerson", "DistanceBehindPlayer", 2.0f); + Menu::Camera::HeightAbovePlayer = reader.Get("Camera:ThirdPerson", "HeightAbovePlayer", 1.35f); + Menu::Camera::disablePhotoModeLimitsEnabled.value = reader.Get("Camera:Misc", "DisablePhotoModeLimits", true); + Menu::Camera::disableSafezoneFOVReductionEnabled.value = reader.Get("Camera:Misc", "DisableSafezoneFOVReduction", true); configStatus = PrintSuccess(configUpdate ? "Successfully read updated config!" : "Successfully read config!"); } catch (const std::runtime_error& e) { @@ -4158,11 +4173,19 @@ namespace Config { } void SaveConfig() { + reader.UpdateEntry("Menu", "Transparency", Menu::transparency); + reader.UpdateEntry("Player:Misc", "GodMode", Menu::Player::godModeEnabled.value); + reader.UpdateEntry("Player:PlayerVariables", "Enabled", Menu::Player::playerVariablesEnabled); reader.UpdateEntry("Player:PlayerVariables", "LastSaveSCRPath", Menu::Player::saveSCRPath); reader.UpdateEntry("Player:PlayerVariables", "LastLoadSCRFilePath", Menu::Player::loadSCRFilePath); - reader.UpdateEntry("Camera", "DisablePhotoModeLimits", Menu::Camera::disablePhotoModeLimitsEnabled.value); - reader.UpdateEntry("Camera", "DisableSafezoneFOVReduction", Menu::Camera::disableSafezoneFOVReductionEnabled.value); + reader.UpdateEntry("Camera:FreeCam", "Speed", Menu::Camera::FreeCamSpeed); + reader.UpdateEntry("Camera:FreeCam", "TeleportPlayerToCamera", Menu::Camera::teleportPlayerToCameraEnabled); + reader.UpdateEntry("Camera:ThirdPerson", "Enabled", Menu::Camera::thirdPersonCameraEnabled); + reader.UpdateEntry("Camera:ThirdPerson", "DistanceBehindPlayer", Menu::Camera::DistanceBehindPlayer); + reader.UpdateEntry("Camera:ThirdPerson", "HeightAbovePlayer", Menu::Camera::HeightAbovePlayer); + reader.UpdateEntry("Camera:Misc", "DisablePhotoModeLimits", Menu::Camera::disablePhotoModeLimitsEnabled.value); + reader.UpdateEntry("Camera:Misc", "DisableSafezoneFOVReduction", Menu::Camera::disableSafezoneFOVReductionEnabled.value); try { inih::INIWriter writer{}; diff --git a/DL2GameOverhaulScript/source/core.cpp b/DL2GameOverhaulScript/source/core.cpp index f848ea7..0bd8ce6 100644 --- a/DL2GameOverhaulScript/source/core.cpp +++ b/DL2GameOverhaulScript/source/core.cpp @@ -135,7 +135,7 @@ namespace Core { GamePH::LoopHookCalculateFreeCamCollision(); GamePH::LoopHookLifeSetHealth(); GamePH::LoopHookTogglePhotoMode(); - //GamePH::LoopHookMoveCamera(); + GamePH::LoopHookMoveCamera(); const HANDLE proc = GetCurrentProcess(); WaitForSingleObject(proc, INFINITE); diff --git a/DL2GameOverhaulScript/source/game_classes.cpp b/DL2GameOverhaulScript/source/game_classes.cpp index d3d2555..6c665eb 100644 --- a/DL2GameOverhaulScript/source/game_classes.cpp +++ b/DL2GameOverhaulScript/source/game_classes.cpp @@ -143,11 +143,31 @@ namespace GamePH { #pragma endregion #pragma region MoveCamera - static void(*pMoveCamera)(LPVOID pCBaseCamera, DWORD* pos, float* a3, float* a4) = nullptr; - static void(*oMoveCamera)(LPVOID pCBaseCamera, DWORD* pos, float* a3, float* a4) = nullptr; - void detourMoveCamera(LPVOID pCBaseCamera, DWORD* pos, float* a3, float* a4) { - if (Menu::Camera::freeCamEnabled.value) - return; + static void(*pMoveCamera)(LPVOID pCBaseCamera, Vector3* pos, float* a3, float* a4) = nullptr; + static void(*oMoveCamera)(LPVOID pCBaseCamera, Vector3* pos, float* a3, float* a4) = nullptr; + void detourMoveCamera(LPVOID pCBaseCamera, Vector3* pos, float* a3, float* a4) { + if (Menu::Camera::thirdPersonCameraEnabled && !Menu::Camera::freeCamEnabled.value) { + GamePH::LevelDI* iLevel = GamePH::LevelDI::Get(); + if (!iLevel) { + oMoveCamera(pCBaseCamera, pos, a3, a4); + return; + } + CameraFPPDI* viewCam = static_cast(iLevel->GetViewCamera()); + if (!viewCam) { + oMoveCamera(pCBaseCamera, pos, a3, a4); + return; + } + Engine::CBulletPhysicsCharacter* playerCharacter = Engine::CBulletPhysicsCharacter::Get(); + + Vector3 forwardVec{}; + viewCam->GetForwardVector(&forwardVec); + const Vector3 normForwardVec = forwardVec.normalize(); + + Vector3 newCamPos = (!playerCharacter ? *pos : playerCharacter->playerPos) - normForwardVec * -Menu::Camera::DistanceBehindPlayer; + newCamPos.Y += Menu::Camera::HeightAbovePlayer - (!playerCharacter ? 1.0f : 0.0f); + + *pos = newCamPos; + } oMoveCamera(pCBaseCamera, pos, a3, a4); } @@ -327,7 +347,27 @@ namespace GamePH { } #pragma endregion + Vector3* (*pGetForwardVector)(LPVOID viewCam, Vector3* outForwardVec) = nullptr; + Vector3* (*pGetUpVector)(LPVOID viewCam, Vector3* outUpVec) = nullptr; #pragma region CameraFPPDI + Vector3* CameraFPPDI::GetForwardVector(Vector3* outForwardVec) { + if (!pGetForwardVector) { + pGetForwardVector = (decltype(pGetForwardVector))Offsets::Get_GetForwardVector(); + return nullptr; + } + return pGetForwardVector(this, outForwardVec); + } + Vector3* CameraFPPDI::GetUpVector(Vector3* outUpVec) { + if (!pGetUpVector) { + pGetUpVector = (decltype(pGetUpVector))Offsets::Get_GetUpVector(); + return nullptr; + } + return pGetUpVector(this, outUpVec); + } + Vector3* CameraFPPDI::GetPosition(Vector3* posIN) { + return Memory::CallVT<181, Vector3*>(this, posIN); + } + CameraFPPDI* CameraFPPDI::Get() { __try { PDWORD64 pg_CameraFPPDI = Offsets::Get_g_CameraFPPDI(); @@ -346,6 +386,20 @@ namespace GamePH { #pragma endregion #pragma region FreeCamera + Vector3* FreeCamera::GetForwardVector(Vector3* outForwardVec) { + if (!pGetForwardVector) { + pGetForwardVector = (decltype(pGetForwardVector))Offsets::Get_GetForwardVector(); + return nullptr; + } + return pGetForwardVector(this, outForwardVec); + } + Vector3* FreeCamera::GetUpVector(Vector3* outUpVec) { + if (!pGetUpVector) { + pGetUpVector = (decltype(pGetUpVector))Offsets::Get_GetUpVector(); + return nullptr; + } + return pGetUpVector(this, outUpVec); + } Vector3* FreeCamera::GetPosition(Vector3* posIN) { return Memory::CallVT<181, Vector3*>(this, posIN); } diff --git a/DL2GameOverhaulScript/source/game_classes.h b/DL2GameOverhaulScript/source/game_classes.h index ee13f0a..7343a0c 100644 --- a/DL2GameOverhaulScript/source/game_classes.h +++ b/DL2GameOverhaulScript/source/game_classes.h @@ -15,17 +15,46 @@ // Game structs struct Vector3 { - float X; - float Y; - float Z; + float X, Y, Z; - Vector3() { - X = 0.0f; - Y = 0.0f; - Z = 0.0f; + Vector3& operator+=(const Vector3& v) { + X += v.X; + Y += v.Y; + Z += v.Z; + return *this; + } + Vector3& operator-=(const Vector3& v) { + X -= v.X; + Y -= v.Y; + Z -= v.Z; + return *this; + } + Vector3 operator+(const Vector3& v) const { + return { X + v.X, Y + v.Y, Z + v.Z }; + } + Vector3 operator-(const Vector3& v) const { + return { X - v.X, Y - v.Y, Z - v.Z }; + } + Vector3 operator*(float scalar) const { + return { X * scalar, Y * scalar, Z * scalar }; + } + Vector3 operator/(float scalar) const { + return { X / scalar, Y / scalar, Z / scalar }; } - bool isDefault() { + Vector3 normalize() { + float length = std::sqrt(X * X + Y * Y + Z * Z); + return { X / length, Y / length, Z / length }; + } + Vector3 cross(const Vector3& v) const { + return { + Y * v.Z - Z * v.Y, + Z * v.X - X * v.Z, + X * v.Y - Y * v.X + }; + } + + bool isDefault() const { return X == 0.0f && Y == 0.0f && Z == 0.0f; } }; @@ -92,6 +121,14 @@ namespace GamePH { class CameraFPPDI { public: + union { + DEFINE_MEMBER_N(Engine::CBaseCamera*, pCBaseCamera, 0x38); + }; + + Vector3* GetForwardVector(Vector3* outForwardVec); + Vector3* GetUpVector(Vector3* outUpVec); + Vector3* GetPosition(Vector3* posIN); + static CameraFPPDI* Get(); }; @@ -104,6 +141,8 @@ namespace GamePH { DEFINE_MEMBER_N(float, speedMultiplier, 0x1CC); }; + Vector3* GetForwardVector(Vector3* outForwardVec); + Vector3* GetUpVector(Vector3* outUpVec); Vector3* GetPosition(Vector3* posIN); void AllowCameraMovement(int mode = 2); diff --git a/DL2GameOverhaulScript/source/menu/camera.cpp b/DL2GameOverhaulScript/source/menu/camera.cpp index eeffe5e..2c782d3 100644 --- a/DL2GameOverhaulScript/source/menu/camera.cpp +++ b/DL2GameOverhaulScript/source/menu/camera.cpp @@ -7,10 +7,15 @@ namespace Menu { namespace Camera { extern const int BaseFOV = 57; int FOV = 57; - float FreeCamSpeed = 1.0f; bool photoModeEnabled = false; SMART_BOOL freeCamEnabled{}; + float FreeCamSpeed = 2.0f; + + bool thirdPersonCameraEnabled = false; + float DistanceBehindPlayer = 2.0f; + float HeightAbovePlayer = 1.35f; + SMART_BOOL disablePhotoModeLimitsEnabled{}; bool teleportPlayerToCameraEnabled = false; @@ -61,8 +66,8 @@ namespace Menu { pFreeCam->speedMultiplier = 0.1f; } - GamePH::CameraFPPDI* pPlayerCam = GamePH::CameraFPPDI::Get(); - if (!pPlayerCam || viewCam == pPlayerCam) + GamePH::FreeCamera* pFreeCam = GamePH::FreeCamera::Get(); + if (!pFreeCam || viewCam != pFreeCam) return; pGameDI_PH->TogglePhotoMode(); @@ -141,28 +146,35 @@ namespace Menu { } void Render() { + ImGui::SeparatorText("FreeCam"); ImGui::BeginDisabled(GetCamDisabledFlag()); { ImGui::BeginDisabled(photoModeEnabled); { - ImGui::Checkbox("FreeCam", &freeCamEnabled.value); + ImGui::Checkbox("Enabled##FreeCam", &freeCamEnabled.value); ImGui::EndDisabled(); } ImGui::EndDisabled(); } - ImGui::SameLine(); - ImGui::SliderFloat("FreeCam Speed", &FreeCamSpeed, 0.0f, 100.0f); + ImGui::SliderFloat("Speed##FreeCam", &FreeCamSpeed, 0.0f, 100.0f); ImGui::BeginDisabled(GetCamDisabledFlag()); { - ImGui::BeginDisabled(freeCamEnabled.value); { - ImGui::Checkbox("Disable PhotoMode Limits", &disablePhotoModeLimitsEnabled.value); - ImGui::EndDisabled(); - } - ImGui::SameLine(); ImGui::BeginDisabled(photoModeEnabled); { ImGui::Checkbox("Teleport Player to Camera", &teleportPlayerToCameraEnabled); ImGui::EndDisabled(); } ImGui::EndDisabled(); } - + + ImGui::SeparatorText("Third Person"); + ImGui::BeginDisabled(GetCamDisabledFlag()); { + ImGui::BeginDisabled(freeCamEnabled.value); { + ImGui::Checkbox("Enabled##ThirdPerson", &thirdPersonCameraEnabled); + ImGui::EndDisabled(); + } + ImGui::SliderFloat("Distance behind player", &DistanceBehindPlayer, 1.0f, 10.0f); + ImGui::SliderFloat("Height above player", &HeightAbovePlayer, 1.0f, 3.0f); + ImGui::EndDisabled(); + } + + ImGui::SeparatorText("Misc"); Engine::CVideoSettings* pCVideoSettings = Engine::CVideoSettings::Get(); ImGui::BeginDisabled(!pCVideoSettings); { if (ImGui::SliderInt("FOV", &FOV, 20, 160) && pCVideoSettings) @@ -171,7 +183,13 @@ namespace Menu { FOV = static_cast(pCVideoSettings->ExtraFOV) + Menu::Camera::BaseFOV; ImGui::EndDisabled(); } - + ImGui::BeginDisabled(GetCamDisabledFlag()); { + ImGui::BeginDisabled(freeCamEnabled.value); { + ImGui::Checkbox("Disable PhotoMode Limits", &disablePhotoModeLimitsEnabled.value); + ImGui::EndDisabled(); + } + ImGui::EndDisabled(); + } ImGui::BeginDisabled(!GamePH::PlayerVariables::gotPlayerVars); { ImGui::Checkbox("Disable Safezone FOV Reduction", &disableSafezoneFOVReductionEnabled.value); ImGui::EndDisabled(); diff --git a/DL2GameOverhaulScript/source/menu/camera.h b/DL2GameOverhaulScript/source/menu/camera.h index 4f0717d..d86c0fd 100644 --- a/DL2GameOverhaulScript/source/menu/camera.h +++ b/DL2GameOverhaulScript/source/menu/camera.h @@ -8,6 +8,12 @@ namespace Menu { extern bool photoModeEnabled; extern SMART_BOOL freeCamEnabled; + extern float FreeCamSpeed; + + extern bool thirdPersonCameraEnabled; + extern float DistanceBehindPlayer; + extern float HeightAbovePlayer; + extern SMART_BOOL disablePhotoModeLimitsEnabled; extern bool teleportPlayerToCameraEnabled; diff --git a/DL2GameOverhaulScript/source/menu/menu.cpp b/DL2GameOverhaulScript/source/menu/menu.cpp index 27bacdb..c25ec89 100644 --- a/DL2GameOverhaulScript/source/menu/menu.cpp +++ b/DL2GameOverhaulScript/source/menu/menu.cpp @@ -9,10 +9,14 @@ namespace Menu { static const ImVec2 maxWndSize = ImVec2(900.0f, 675.0f); bool isOpen = false; + float transparency = 99.5f; void Render() { + ImGuiStyle* style = &ImGui::GetStyle(); + style->Colors[ImGuiCol_WindowBg] = ImVec4(style->Colors[ImGuiCol_WindowBg].x, style->Colors[ImGuiCol_WindowBg].y, style->Colors[ImGuiCol_WindowBg].z, static_cast(transparency) / 100.0f); + ImGui::SetNextWindowSizeConstraints(minWndSize, maxWndSize); - ImGui::Begin("EGameTools", &Menu::isOpen, windowFlags); { + ImGui::Begin("EGameTools", &Menu::isOpen, windowFlags); { if (ImGui::BeginTabBar("##MainTabBar")) { if (ImGui::BeginTabItem("Player")) { Menu::Player::Render(); @@ -28,7 +32,11 @@ namespace Menu { } ImGui::EndTabBar(); } - ImGui::End(); - } + + ImGui::Separator(); + + ImGui::SliderFloat("Menu Transparency", &transparency, 0.0f, 100.0f, "%d%%%", ImGuiSliderFlags_AlwaysClamp); + ImGui::End(); + } } } \ No newline at end of file diff --git a/DL2GameOverhaulScript/source/menu/menu.h b/DL2GameOverhaulScript/source/menu/menu.h index aa1d94d..347e35b 100644 --- a/DL2GameOverhaulScript/source/menu/menu.h +++ b/DL2GameOverhaulScript/source/menu/menu.h @@ -3,6 +3,7 @@ namespace Menu { extern bool isOpen; + extern float transparency; extern void Render(); } \ No newline at end of file diff --git a/DL2GameOverhaulScript/source/menu/player.cpp b/DL2GameOverhaulScript/source/menu/player.cpp index f8a6413..17b7a1a 100644 --- a/DL2GameOverhaulScript/source/menu/player.cpp +++ b/DL2GameOverhaulScript/source/menu/player.cpp @@ -6001,6 +6001,7 @@ namespace Menu { SMART_BOOL godModeEnabled{}; SMART_BOOL freezePlayerEnabled{}; + bool playerVariablesEnabled = false; std::string saveSCRPath{}; std::string loadSCRFilePath{}; @@ -6271,12 +6272,12 @@ namespace Menu { freezePlayerEnabled.Restore(); PlayerPositionUpdate(); - UpdatePlayerVars(); + if (playerVariablesEnabled) + UpdatePlayerVars(); } void Render() { - ImGui::Checkbox("Debug", &debugEnabled); - + ImGui::SeparatorText("Misc"); ImGui::BeginDisabled(!GamePH::PlayerHealthModule::Get() || Menu::Camera::freeCamEnabled.value); { ImGui::Checkbox("God Mode", &godModeEnabled.value); ImGui::EndDisabled(); @@ -6287,8 +6288,10 @@ namespace Menu { ImGui::EndDisabled(); } - ImGui::BeginDisabled(!GamePH::PlayerVariables::gotPlayerVars); { - if (ImGui::CollapsingHeader("Player Variables", ImGuiTreeNodeFlags_None)) { + ImGui::SeparatorText("Player Variables"); + ImGui::Checkbox("Enabled##PlayerVars", &playerVariablesEnabled); + ImGui::BeginDisabled(!playerVariablesEnabled || !GamePH::PlayerVariables::gotPlayerVars); { + if (ImGui::CollapsingHeader("Player variables list", ImGuiTreeNodeFlags_None)) { ImGui::Indent(); if (ImGui::Button("Save variables to file")) ImGuiFileDialog::Instance()->OpenDialog("ChooseSCRPath", "Choose Folder", nullptr, saveSCRPath.empty() ? "." : saveSCRPath); @@ -6297,6 +6300,7 @@ namespace Menu { ImGuiFileDialog::Instance()->OpenDialog("ChooseSCRLoadPath", "Choose File", ".scr", loadSCRFilePath.empty() ? "." : loadSCRFilePath); ImGui::Checkbox("Restore variables to saved variables", &restoreVarsToSavedVarsEnabled); + ImGui::Checkbox("Debug (show memory addresses)", &debugEnabled); if (ImGui::Button("Restore variables to default")) RestoreVariablesToDefault(); diff --git a/DL2GameOverhaulScript/source/menu/player.h b/DL2GameOverhaulScript/source/menu/player.h index 1211a18..c59698e 100644 --- a/DL2GameOverhaulScript/source/menu/player.h +++ b/DL2GameOverhaulScript/source/menu/player.h @@ -7,6 +7,7 @@ namespace Menu { extern const char playerVarsSCR[]; extern SMART_BOOL godModeEnabled; extern SMART_BOOL freezePlayerEnabled; + extern bool playerVariablesEnabled; extern std::string saveSCRPath; extern std::string loadSCRFilePath; diff --git a/DL2GameOverhaulScript/source/sigscan/offsets.h b/DL2GameOverhaulScript/source/sigscan/offsets.h index 5ae4043..704ba7f 100644 --- a/DL2GameOverhaulScript/source/sigscan/offsets.h +++ b/DL2GameOverhaulScript/source/sigscan/offsets.h @@ -17,8 +17,8 @@ static DWORD64 Get_## name () {\ struct Offsets { // ntdll.dll - AddOffset(LdrpCallInitRoutineOffset, "ntdll.dll", "[48 89 5C 24 08 44 89 44 24 18 48", PatternType::Address, PDWORD64) - AddOffset(LdrpRunInitializeRoutinesOffset, "ntdll.dll", "[48 89 4C 24 08 53 56 57 41 54 41 55 41 56 41 57 48 81 EC 90", PatternType::Address, PDWORD64) // for win7 + //AddOffset(LdrpCallInitRoutineOffset, "ntdll.dll", "[48 89 5C 24 08 44 89 44 24 18 48", PatternType::Address, PDWORD64) + //AddOffset(LdrpRunInitializeRoutinesOffset, "ntdll.dll", "[48 89 4C 24 08 53 56 57 41 54 41 55 41 56 41 57 48 81 EC 90", PatternType::Address, PDWORD64) // for win7 // Input related AddOffset(g_CInput, "engine_x64_rwdi.dll", "48 8B 0D [?? ?? ?? ?? 48 85 C9 74 0F 48 8B 01 84 D2", PatternType::RelativePointer, PDWORD64*) @@ -43,13 +43,15 @@ struct Offsets { AddOffset(ReadVideoSettingsOffset, "engine_x64_rwdi.dll", "E8 [?? ?? ?? ?? 48 8D 4C 24 ?? FF 15 ?? ?? ?? ?? 48 C7 C2 ?? ?? ?? ??", PatternType::RelativePointer, LPVOID) AddOffset(CalculateFreeCamCollisionOffset, "gamedll_ph_x64_rwdi.dll", "E8 [?? ?? ?? ?? 48 8B 06 4C 8D 4C 24 ??", PatternType::RelativePointer, LPVOID) AddOffset(GetViewCameraOffset, "engine_x64_rwdi.dll", "E8 [?? ?? ?? ?? 48 85 C0 74 28 48 8B C8", PatternType::RelativePointer, LPVOID) - AddOffset(CreatePlayerHealthModuleOffset, "gamedll_ph_x64_rwdi.dll", "[48 89 5C 24 ?? 55 56 57 41 54 41 55 41 56 41 57 48 8D 6C 24 ?? 48 81 EC ?? ?? ?? ?? 4C 8B F1 E8 ?? ?? ?? ?? 48 8D 05 ?? ?? ?? ??", PatternType::Address, LPVOID) + AddOffset(CreatePlayerHealthModuleOffset, "gamedll_ph_x64_rwdi.dll", "48 89 5C 24 ?? 55 56 57 41 54 41 55 41 56 41 57 48 8D 6C 24 ?? 48 81 EC ?? ?? ?? ?? 4C 8B F1 E8 ?? ?? ?? ?? 48 8D 05 ?? ?? ?? ??", PatternType::Address, LPVOID) AddOffset(LifeSetHealth, "gamedll_ph_x64_rwdi.dll", "E8 [?? ?? ?? ?? 49 8D 4C 24 ?? 49 03 CE", PatternType::RelativePointer, LPVOID) AddOffset(TogglePhotoMode, "gamedll_ph_x64_rwdi.dll", "48 83 EC 48 38 91 ?? ?? ?? ??", PatternType::Address, LPVOID) AddOffset(GetTimeWeatherSystemOffset, "engine_x64_rwdi.dll", "E8 [?? ?? ?? ?? 33 D2 48 8B C8 E8 ?? ?? ?? ?? 49 8D 4F 38", PatternType::RelativePointer, LPVOID) AddOffset(SetForcedWeatherOffset, "engine_x64_rwdi.dll", "89 51 68 C3 CC CC CC CC CC CC CC CC CC CC CC CC", PatternType::Address, LPVOID) AddOffset(GetCurrentWeatherOffset, "engine_x64_rwdi.dll", "48 8B 41 78 48 85 C0 75 0F", PatternType::Address, LPVOID) - AddOffset(MoveCamera, "engine_x64_rwdi.dll", "E8 [?? ?? ?? ?? 41 8D 45 D6", PatternType::Address, LPVOID) + AddOffset(MoveCamera, "engine_x64_rwdi.dll", "E8 [?? ?? ?? ?? 41 8D 45 D6", PatternType::RelativePointer, LPVOID) + AddOffset(GetForwardVector, "engine_x64_rwdi.dll", "4C 8B 41 38 41 8B 40 48", PatternType::Address, LPVOID) + AddOffset(GetUpVector, "engine_x64_rwdi.dll", "4C 8B 41 38 41 8B 40 44", PatternType::Address, LPVOID) }; #undef AddOffset